Filtering for nodes
This commit is contained in:
parent
954b7a3920
commit
122eadc0de
5 changed files with 69 additions and 10 deletions
server
|
@ -100,16 +100,21 @@ angular.module('ffffng').factory('NodeResource', function (
|
|||
return Resources.error(res, err);
|
||||
}
|
||||
|
||||
// TODO: Filter
|
||||
|
||||
return NodeService.getAllNodes(function (err, nodes, total) {
|
||||
return NodeService.getAllNodes(function (err, nodes) {
|
||||
if (err) {
|
||||
return Resources.error(res, err);
|
||||
}
|
||||
|
||||
var sortedNodes = Resources.sort(
|
||||
var filteredNodes = Resources.filter(
|
||||
nodes,
|
||||
['token', 'mac', 'hostname', 'key', 'coords', 'monitoringState'],
|
||||
['hostname', 'nickname', 'email', 'token', 'mac', 'key'],
|
||||
restParams
|
||||
);
|
||||
var total = filteredNodes.length;
|
||||
|
||||
var sortedNodes = Resources.sort(
|
||||
filteredNodes,
|
||||
['hostname', 'nickname', 'email', 'token', 'mac', 'key', 'coords', 'monitoringState'],
|
||||
restParams
|
||||
);
|
||||
var pageNodes = Resources.getPageEntities(sortedNodes, restParams);
|
||||
|
|
|
@ -372,7 +372,6 @@ angular.module('ffffng')
|
|||
|
||||
getAllNodes: function (callback) {
|
||||
var files = findNodeFiles({});
|
||||
var total = files.length;
|
||||
|
||||
async.mapLimit(
|
||||
files,
|
||||
|
@ -384,7 +383,7 @@ angular.module('ffffng')
|
|||
return callback({data: 'Internal error.', type: ErrorTypes.internalError});
|
||||
}
|
||||
|
||||
return callback(null, nodes, total);
|
||||
return callback(null, nodes);
|
||||
}
|
||||
);
|
||||
},
|
||||
|
|
|
@ -36,8 +36,33 @@ angular.module('ffffng').factory('Resources', function (_, Constraints, Validato
|
|||
callback(null, restParams);
|
||||
},
|
||||
|
||||
filter: function (entities, allowedFilterFields, restParams) {
|
||||
var query = restParams.q;
|
||||
if (!query) {
|
||||
return entities;
|
||||
}
|
||||
|
||||
query = _.toLower(query.trim());
|
||||
|
||||
return _.filter(entities, function (entity) {
|
||||
return _.some(allowedFilterFields, function (field) {
|
||||
var value = entity[field];
|
||||
if (!_.isString(value) || _.isEmpty(value)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
value = _.toLower(value);
|
||||
if (field === 'mac') {
|
||||
return _.includes(value.replace(/:/g, ''), query.replace(/:/g, ''));
|
||||
}
|
||||
|
||||
return _.includes(value, query);
|
||||
})
|
||||
});
|
||||
},
|
||||
|
||||
sort: function (entities, allowedSortFields, restParams) {
|
||||
var sortField = _.indexOf(allowedSortFields, restParams._sortField) >= 0 ? restParams._sortField : undefined;
|
||||
var sortField = _.includes(allowedSortFields, restParams._sortField) ? restParams._sortField : undefined;
|
||||
if (!sortField) {
|
||||
return entities;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue