Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
… into fix/elastic#1962

Conflicts:
	src/kibana/components/vislib/visualizations/column_chart.js
  • Loading branch information
stormpython committed Jan 16, 2015
2 parents 057c378 + 39b41fa commit 278e509
Show file tree
Hide file tree
Showing 17 changed files with 155 additions and 52 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
<tbody>
<tr ng-repeat="row in rows track by $index">
<td><span ng-bind-html="row.spacer"></span>{{row.field}}</td>
<td>{{row.bucket}}</td>
<td class="row-bucket">{{row.bucket}}</td>
<td>{{row.metric}}</td>
</tr>
</tbody>
Expand Down
2 changes: 1 addition & 1 deletion src/kibana/components/agg_response/tabify/tabify.js
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ define(function (require) {
return;

case 'buckets':
write.cell('', function () {
write.cell(agg, '', function () {
passEmptyBuckets(write, bucket, key);
});
}
Expand Down
10 changes: 8 additions & 2 deletions src/kibana/components/agg_types/buckets/terms.js
Original file line number Diff line number Diff line change
Expand Up @@ -33,12 +33,18 @@ define(function (require) {
{
name: 'exclude',
type: 'regex',
advanced: true
advanced: true,
disabled: function (aggConfig) {
return aggConfig.params.field.type !== 'string';
}
},
{
name: 'include',
type: 'regex',
advanced: true
advanced: true,
disabled: function (aggConfig) {
return aggConfig.params.field.type !== 'string';
}
},
{
name: 'size',
Expand Down
2 changes: 1 addition & 1 deletion src/kibana/components/agg_types/controls/order_agg.html
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<div ng-controller="agg.type.params.byName.orderAgg.controller">
<div ng-controller="aggParam.controller">
<div class="form-group">
<label>Order By</label>
<select
Expand Down
46 changes: 24 additions & 22 deletions src/kibana/components/agg_types/controls/regular_expression.html
Original file line number Diff line number Diff line change
@@ -1,25 +1,27 @@
<div class="form-group regex">
<label>{{ aggParam.name | label }} Pattern</label>
<input
type="text"
class="form-control"
ng-model="agg.params[aggParam.name].pattern"
>
</div>
<div class="form-group regex">
<div class="flags">
<label>
{{ aggParam.name | label }} Pattern Flags
<small>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html#field_detail"
target="_blank">reference</a>)</small>
</label>
<ui-select
multiple
ng-model="agg.params[aggParam.name].flags">
<ui-select-match>{{ $item }}</ui-select-match>
<ui-select-choices repeat="label in aggParam.flags">
{{ label }}
<div ng-if="!aggParam.disabled(agg)">
<div class="form-group regex">
<label>{{ aggParam.name | label }} Pattern</label>
<input
type="text"
class="form-control"
ng-model="agg.params[aggParam.name].pattern"
>
</div>
<div class="form-group regex">
<div class="flags">
<label>
{{ aggParam.name | label }} Pattern Flags
<small>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html#field_detail"
target="_blank">reference</a>)</small>
</label>
<ui-select
multiple
ng-model="agg.params[aggParam.name].flags">
<ui-select-match>{{ $item }}</ui-select-match>
<ui-select-choices repeat="label in aggParam.flags">
{{ label }}
</ui-select-choices>
</ui-select>
</ui-select>
</div>
</div>
</div>
14 changes: 12 additions & 2 deletions src/kibana/components/agg_types/param_types/regex.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,15 @@ define(function (require) {

RegexAggParam.prototype.editor = editorHtml;

/**
* Disabled state of the agg param
*
* @return {bool}
*/
RegexAggParam.prototype.disabled = function (aggConfig) {
return false;
};

/**
* Write the aggregation parameter.
*
Expand All @@ -38,9 +47,10 @@ define(function (require) {
*/
RegexAggParam.prototype.write = function (aggConfig, output) {
var param = aggConfig.params[this.name];
var paramType = aggConfig.type.params.byName[this.name];

// clear aggParam if pattern is not set
if (!param || !param.pattern || !param.pattern.length) {
// clear aggParam if pattern is not set or is disabled
if (!param || !param.pattern || !param.pattern.length || paramType.disabled(aggConfig)) {
return;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,18 +16,35 @@ define(function (require) {
}

var objKeys = getUniqKeys(obj);
var interval = _.deepGet(obj, 'ordered.interval');

return _.chain(objKeys)
return _(objKeys)
.pairs()
.sortBy(function (d) {
if (d[1].isDate || d[1].isOrdered) {
return +d[0];
}
return d[1].index;
})
.map(function (d) {
return d[1].isNumber ? +d[0] : d[0];
.map(function (d, i, list) {
if (!d[1].isNumber) return d[0];

var val = +d[0];
if (interval == null) return val;

var gapEdge = parseFloat(_.deepGet(list, [i + 1, 0]));
if (isNaN(gapEdge)) return val;

var next = val;
var vals = [];
while (next < gapEdge) {
vals.push(next);
next += interval;
}

return vals;
})
.flatten(true)
.value();
};
};
Expand Down
2 changes: 1 addition & 1 deletion src/kibana/components/vislib/lib/handler/handler_types.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ define(function (require) {
*/
return {
histogram: Private(require('components/vislib/lib/handler/types/column')),
line: Private(require('components/vislib/lib/handler/types/column')),
line: Private(require('components/vislib/lib/handler/types/line')),
pie: Private(require('components/vislib/lib/handler/types/pie')),
area: Private(require('components/vislib/lib/handler/types/column')),
tile_map: Private(require('components/vislib/lib/handler/types/tile_map'))
Expand Down
39 changes: 39 additions & 0 deletions src/kibana/components/vislib/lib/handler/types/line.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
define(function (require) {
return function ColumnHandler(d3, Private) {
var Handler = Private(require('components/vislib/lib/handler/handler'));
var Data = Private(require('components/vislib/lib/data'));
var Legend = Private(require('components/vislib/lib/legend'));
var XAxis = Private(require('components/vislib/lib/x_axis'));
var YAxis = Private(require('components/vislib/lib/y_axis'));
var AxisTitle = Private(require('components/vislib/lib/axis_title'));
var ChartTitle = Private(require('components/vislib/lib/chart_title'));

/*
* Handler for Column Chart, Line Chart, and other charts using x and y axes.
* Otherwise known as the default Handler type.
*/

return function (vis) {
var data = new Data(vis.data, vis._attr);

return new Handler(vis, {
data: data,
legend: new Legend(vis, vis.el, data.labels, data.color, vis._attr),
axisTitle: new AxisTitle(vis.el, data.get('xAxisLabel'), data.get('yAxisLabel')),
chartTitle: new ChartTitle(vis.el),
xAxis: new XAxis({
el : vis.el,
xValues : data.xValues(),
ordered : data.get('ordered'),
xAxisFormatter: data.get('xAxisFormatter'),
_attr : vis._attr
}),
yAxis: new YAxis({
el : vis.el,
yMax : data.getYMaxValue(),
_attr: vis._attr
})
});
};
};
});
4 changes: 4 additions & 0 deletions src/kibana/components/vislib/styles/_tooltip.less
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,10 @@
table {
td,th {
padding: 2px 4px;

&.row-bucket {
word-break: break-all;
}
}

// if there is a header, give it a border that matches
Expand Down
2 changes: 1 addition & 1 deletion src/kibana/components/vislib/vis.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ define(function (require) {
this.el = $el.get ? $el.get(0) : $el;
this.ChartClass = chartTypes[config.type];
this._attr = _.defaults(config || {}, {
defaultYMin: false
defaultYMin: true
});
this.eventTypes = {
enabled: []
Expand Down
7 changes: 7 additions & 0 deletions src/kibana/components/vislib/visualizations/column_chart.js
Original file line number Diff line number Diff line change
Expand Up @@ -137,6 +137,7 @@ define(function (require) {
var xScale = this.handler.xAxis.xScale;
var yScale = this.handler.yAxis.yScale;
var height = yScale.range()[0];
var yMin = this.handler.yAxis.yScale.domain()[0];
var self = this;

// update
Expand Down Expand Up @@ -168,6 +169,12 @@ define(function (require) {
return Math.abs(yScale(d.y0 + d.y) - yScale(d.y0));
}

// for split bars or for one series,
// last series will have d.y0 = 0
//
if (d.y0 === 0) {
return yScale(yMin) - yScale(d.y);
}
return yScale(d.y0) - yScale(d.y0 + d.y);
});

Expand Down
31 changes: 18 additions & 13 deletions src/kibana/plugins/visualize/editor/agg_param.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,21 +12,26 @@ define(function (require) {
template: function ($el) {
return $el.html();
},
link: function ($scope, $el, attr) {
$scope.aggParam = $parse(attr.aggParam)($scope);
$scope.config = config;
$scope.optionEnabled = function (option) {
if (option && _.isFunction(option.enabled)) {
return option.enabled($scope.agg);
}
link: {
pre: function ($scope, $el, attr) {
$scope.$bind('aggParam', attr.aggParam);
},
post: function ($scope, $el, attr) {
$scope.config = config;

$scope.optionEnabled = function (option) {
if (option && _.isFunction(option.enabled)) {
return option.enabled($scope.agg);
}

return true;
};
return true;
};

// set default value on field agg params
if ($scope.aggParam instanceof FieldAggParam) {
if (!$scope.agg.params[$scope.aggParam.name]) {
$scope.agg.params[$scope.aggParam.name] = $scope.indexedFields[0];
// set default value on field agg params
if ($scope.aggParam instanceof FieldAggParam) {
if (!$scope.agg.params[$scope.aggParam.name]) {
$scope.agg.params[$scope.aggParam.name] = $scope.indexedFields[0];
}
}
}
}
Expand Down
6 changes: 4 additions & 2 deletions src/kibana/plugins/visualize/editor/agg_params.js
Original file line number Diff line number Diff line change
Expand Up @@ -112,8 +112,10 @@ define(function (require) {
return;
}

var attrs = {};
attrs['agg-param'] = 'agg.type.params[' + idx + ']';
var attrs = {
'agg-param': 'agg.type.params[' + idx + ']'
};

if (param.advanced) {
attrs['ng-show'] = 'advancedToggled';
}
Expand Down
1 change: 0 additions & 1 deletion src/kibana/utils/add_word_breaks.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ define(function () {

switch (chr) {
case ' ':
case '&':
case ';':
case ':':
case ',':
Expand Down
14 changes: 13 additions & 1 deletion test/unit/specs/components/agg_types/param_types/_regex.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,16 @@ define(function (require) {

var BaseAggParam;
var RegexAggParam;
var Vis;
var indexPattern;

beforeEach(module('kibana'));
// fetch out deps
beforeEach(inject(function (Private) {
BaseAggParam = Private(require('components/agg_types/param_types/base'));
RegexAggParam = Private(require('components/agg_types/param_types/regex'));
Vis = Private(require('components/vis/vis'));
indexPattern = Private(require('fixtures/stubbed_logstash_index_pattern'));
}));

describe('constructor', function () {
Expand All @@ -26,11 +30,19 @@ define(function (require) {

describe('write results', function () {
var aggParam;
var aggConfig = { params: {} };
var aggConfig;
var output = { params: {} };
var paramName = 'exclude';

beforeEach(function () {
var vis = new Vis(indexPattern, {
type: 'pie',
aggs: [
{ type: 'terms', schema: 'split', params: { field: 'extension' }},
]
});
aggConfig = vis.aggs[0];

aggParam = new RegexAggParam({
name: paramName,
type: 'regex'
Expand Down
2 changes: 1 addition & 1 deletion test/unit/specs/utils/add_word_breaks.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ define(function (require) {
['aaaaaaaaaaaaaaaaaaaa', 'aaaaaaaaaaa<wbr>aaaaaaaaa'],
['aaaa aaaaaaaaaaaaaaa', 'aaaa aaaaaaaaaaa<wbr>aaaa'],
['aaaa;aaaaaaaaaaaaaaa', 'aaaa;aaaaaaaaaaa<wbr>aaaa'],
['aaaa&aaaaaaaaaaaaaaa', 'aaaa&aaaaaaaaaaa<wbr>aaaa'],
['aaaa&aaaaaaaaaaaaaaa', 'aaaa&aaaaaa<wbr>aaaaaaaaa'],
['aaaa:aaaaaaaaaaaaaaa', 'aaaa:aaaaaaaaaaa<wbr>aaaa'],
['aaaa,aaaaaaaaaaaaaaa', 'aaaa,aaaaaaaaaaa<wbr>aaaa'],
['aaaa aaaa', 'aaaa aaaa'],
Expand Down

0 comments on commit 278e509

Please sign in to comment.