Skip to content

Commit

Permalink
#1877 Show integer and flow custom fields in aggregation field list
Browse files Browse the repository at this point in the history
  • Loading branch information
nadouani committed Mar 26, 2021
1 parent 66cbe14 commit bedb405
Show file tree
Hide file tree
Showing 5 changed files with 54 additions and 56 deletions.
64 changes: 32 additions & 32 deletions frontend/app/scripts/services/api/DashboardSrv.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
(function() {
(function () {
'use strict';
angular.module('theHiveServices').service('DashboardSrv', function(QueryBuilderSrv, localStorageService, $q, AuthenticationSrv, $http) {
angular.module('theHiveServices').service('DashboardSrv', function (QueryBuilderSrv, localStorageService, $q, AuthenticationSrv, $http) {
var baseUrl = './api/dashboard';
var self = this;

Expand Down Expand Up @@ -141,43 +141,43 @@
}
];

this.skipFields = function(fields, types) {
return _.filter(fields, function(item) {
this.skipFields = function (fields, types) {
return _.filter(fields, function (item) {
return types.indexOf(item.type) === -1;
});
};

this.pickFields = function(fields, types) {
return _.filter(fields, function(item) {
this.pickFields = function (fields, types) {
return _.filter(fields, function (item) {
return types.indexOf(item.type) !== -1;
});
};

this.fieldsForAggregation = function(fields, agg) {
if(agg === 'count') {
this.fieldsForAggregation = function (fields, agg) {
if (agg === 'count') {
return [];
} else if(agg === 'sum' || agg === 'avg') {
return self.pickFields(fields, ['number']);
} else if (agg === 'sum' || agg === 'avg') {
return self.pickFields(fields, ['number', 'integer', 'float']);
} else {
return fields;
}
};

this.renderers = {
severity: function() {}
severity: function () { }
};

this.create = function(dashboard) {
this.create = function (dashboard) {
return $http.post(baseUrl, dashboard);
};

this.update = function(id, dashboard) {
this.update = function (id, dashboard) {
var db = _.pick(dashboard, 'id', 'title', 'description', 'status', 'definition');

return $http.patch(baseUrl + '/' + id, db);
};

this.list = function() {
this.list = function () {
return $http.post(baseUrl + '/_search', {
range: 'all',
sort: ['-status', '-updatedAt', '-createdAt'],
Expand All @@ -194,28 +194,28 @@
});
};

this.get = function(id) {
this.get = function (id) {
return $http.get(baseUrl + '/' + id);
};

this.remove = function(id) {
this.remove = function (id) {
return $http.delete(baseUrl + '/' + id);
};

this._objectifyBy = function(collection, field) {
this._objectifyBy = function (collection, field) {
var obj = {};

_.each(collection, function(item) {
_.each(collection, function (item) {
obj[item[field]] = item;
});

return obj;
};

this.getMetadata = function(version) {
this.getMetadata = function (version) {
var defer = $q.defer();

if(!version) {
if (!version) {
version = 'v0';
}

Expand All @@ -224,13 +224,13 @@
} else {
$http
.get('./api/' + version + '/describe/_all')
.then(function(response) {
.then(function (response) {
var data = response.data;
var metadata = {
entities: _.keys(data).sort()
};

_.each(metadata.entities, function(entity) {
_.each(metadata.entities, function (entity) {
metadata[entity] = _.omit(data[entity], 'attributes');
metadata[entity].attributes = self._objectifyBy(data[entity].attributes, 'name');
metadata[entity].attributeKeys = _.keys(metadata[entity].attributes).sort();
Expand All @@ -240,15 +240,15 @@

defer.resolve(metadata);
})
.catch(function(err) {
.catch(function (err) {
defer.reject(err);
});
}

return defer.promise;
};

this.hasMinimalConfiguration = function(component) {
this.hasMinimalConfiguration = function (component) {
switch (component.type) {
case 'multiline':
case 'text':
Expand All @@ -258,22 +258,22 @@
}
};

this.buildFiltersQuery = function(fields, filters) {
this.buildFiltersQuery = function (fields, filters) {
return QueryBuilderSrv.buildFiltersQuery(fields, filters);
};

this.buildChartQuery = function(filter, query) {
var criteria = _.filter(_.without([filter, query], null, undefined, '', '*'), function(c){return !_.isEmpty(c);});
this.buildChartQuery = function (filter, query) {
var criteria = _.filter(_.without([filter, query], null, undefined, '', '*'), function (c) { return !_.isEmpty(c); });

if(criteria.length === 0) {
if (criteria.length === 0) {
return {};
} else {
return criteria.length === 1 ? criteria[0] : { _and: criteria };
}
};

this.buildPeriodQuery = function(period, field, start, end) {
if(!period && !start && !end) {
this.buildPeriodQuery = function (period, field, start, end) {
if (!period && !start && !end) {
return null;
}

Expand All @@ -287,7 +287,7 @@
from = moment(today).subtract(30, 'days');
} else if (period === 'last3Months') {
from = moment(today).subtract(3, 'months');
} else if(period === 'custom') {
} else if (period === 'custom') {
from = start && start !== null ? moment(start).valueOf() : null;
to = end && end !== null ? moment(end).hours(23).minutes(59).seconds(59).milliseconds(999).valueOf() : null;

Expand All @@ -311,7 +311,7 @@
};
};

this.exportDashboard = function(dashboard) {
this.exportDashboard = function (dashboard) {
var fileName = dashboard.title.replace(/\s/gi, '_') + '.json';
var content = _.omit(dashboard,
'_type',
Expand Down
7 changes: 3 additions & 4 deletions frontend/app/views/directives/dashboard/counter/series.html
Original file line number Diff line number Diff line change
Expand Up @@ -11,15 +11,14 @@
</button>
</span>
<select class="form-control" ng-model="serie.agg"
ng-options="item.label as item.id for (key, item) in aggregations"
ng-change="setSerieAgg(serie)">
ng-options="item.label as item.id for (key, item) in aggregations" ng-change="setSerieAgg(serie)">
<option value="" disabled selected></option>
</select>
</div>
<div class="form-group">
<select class="form-control" ng-model="serie.field" ng-disabled="serie.agg === 'count'"
ng-options="item.name as item.name for (key, item) in fieldsForAggregation(metadata[component.options.entity].attributes, serie.agg)">
<option value="" disabled selected>-- Select field --</option>
ng-options="item.name as item.name for (key, item) in fieldsForAggregation(metadata[component.options.entity].attributes, serie.agg) | orderBy:'name'">
<option value="" disabled selected>-- Select field --</option>
</select>
</div>
<div class="form-group">
Expand Down
16 changes: 8 additions & 8 deletions frontend/app/views/directives/dashboard/line/series.html
Original file line number Diff line number Diff line change
Expand Up @@ -10,20 +10,18 @@
</button>
</span>
<select class="form-control" ng-model="serie.agg"
ng-options="item.label as item.id for (key, item) in aggregations"
ng-change="setSerieAgg(serie)">
ng-options="item.label as item.id for (key, item) in aggregations" ng-change="setSerieAgg(serie)">
<option value="" disabled selected></option>
</select>
</div>
<div class="form-group">
<select class="form-control" ng-model="serie.field" ng-disabled="serie.agg === 'count'"
ng-options="item.name as item.name for (key, item) in fieldsForAggregation(metadata[component.options.entity].attributes, serie.agg)">
<option value="" disabled selected>-- Select field --</option>
ng-options="item.name as item.name for (key, item) in fieldsForAggregation(metadata[component.options.entity].attributes, serie.agg) | orderBy:'name'">
<option value="" disabled selected>-- Select field --</option>
</select>
</div>
<div class="form-group">
<select class="form-control" ng-model="serie.type"
ng-options="item for item in serieTypes"></select>
<select class="form-control" ng-model="serie.type" ng-options="item for item in serieTypes"></select>
</div>

<div class="form-group">
Expand All @@ -32,8 +30,10 @@
<div class="input-group">
<input type="text" class="form-control" ng-model="serie.color" placeholder="Color" size="8">
<span class="input-group-btn">
<button colorpicker colorpicker-close-on-select class="btn btn-default" ng-model="serie.color" type="button">
<i class="fa fa-stop" style="color: {{serie.color}};" ng-class="{'fa-stop': serie.color, 'fa-ellipsis-h': !serie.color}"></i>
<button colorpicker colorpicker-close-on-select class="btn btn-default" ng-model="serie.color"
type="button">
<i class="fa fa-stop" style="color: {{serie.color}};"
ng-class="{'fa-stop': serie.color, 'fa-ellipsis-h': !serie.color}"></i>
</button>
</span>
</div>
Expand Down
16 changes: 8 additions & 8 deletions frontend/app/views/directives/dashboard/multiline/series.html
Original file line number Diff line number Diff line change
Expand Up @@ -23,20 +23,18 @@

<div class="form-group">
<select class="form-control" ng-model="serie.agg"
ng-options="item.label as item.id for (key, item) in aggregations"
ng-change="setSerieAgg(serie)">
ng-options="item.label as item.id for (key, item) in aggregations" ng-change="setSerieAgg(serie)">
<option value="" disabled selected></option>
</select>
</div>
<div class="form-group">
<select class="form-control" ng-model="serie.field" ng-disabled="serie.agg === 'count'"
ng-options="item.name as item.name for (key, item) in fieldsForAggregation(metadata[serie.entity].attributes, serie.agg)">
<option value="" disabled selected>-- Select field --</option>
ng-options="item.name as item.name for (key, item) in fieldsForAggregation(metadata[serie.entity].attributes, serie.agg) | orderBy:'name'">
<option value="" disabled selected>-- Select field --</option>
</select>
</div>
<div class="form-group">
<select class="form-control" ng-model="serie.type"
ng-options="item for item in serieTypes"></select>
<select class="form-control" ng-model="serie.type" ng-options="item for item in serieTypes"></select>
</div>

<div class="form-group">
Expand All @@ -45,8 +43,10 @@
<div class="input-group">
<input type="text" class="form-control" ng-model="serie.color" placeholder="Color" size="8">
<span class="input-group-btn">
<button colorpicker colorpicker-close-on-select class="btn btn-default" ng-model="serie.color" type="button">
<i class="fa fa-stop" style="color: {{serie.color}};" ng-class="{'fa-stop': serie.color, 'fa-ellipsis-h': !serie.color}"></i>
<button colorpicker colorpicker-close-on-select class="btn btn-default" ng-model="serie.color"
type="button">
<i class="fa fa-stop" style="color: {{serie.color}};"
ng-class="{'fa-stop': serie.color, 'fa-ellipsis-h': !serie.color}"></i>
</button>
</span>
</div>
Expand Down
7 changes: 3 additions & 4 deletions frontend/app/views/directives/dashboard/text/series.html
Original file line number Diff line number Diff line change
Expand Up @@ -16,15 +16,14 @@
</div>
<div class="form-group">
<select class="form-control" ng-model="serie.agg"
ng-options="item.label as item.id for (key, item) in aggregations"
ng-change="setSerieAgg(serie)">
ng-options="item.label as item.id for (key, item) in aggregations" ng-change="setSerieAgg(serie)">
<option value="" disabled selected></option>
</select>
</div>
<div class="form-group">
<select class="form-control" ng-model="serie.field" ng-disabled="serie.agg === 'count'"
ng-options="item.name as item.name for (key, item) in fieldsForAggregation(metadata[serie.entity].attributes, serie.agg)">
<option value="" disabled selected>-- Select field --</option>
ng-options="item.name as item.name for (key, item) in fieldsForAggregation(metadata[serie.entity].attributes, serie.agg) | orderBy:'name'">
<option value="" disabled selected>-- Select field --</option>
</select>
</div>
<div class="form-group">
Expand Down

0 comments on commit bedb405

Please sign in to comment.