freifunkmanager/public/app/nodes/nodesSort.js

112 lines
2.3 KiB
JavaScript
Raw Normal View History

2016-07-06 22:52:31 +02:00
'use strict';
angular.module('ffhb')
.controller('NodesSortCtrl',function(NgTableParams,$scope,store){
2016-07-13 20:47:26 +02:00
$scope.sum = {
all: 0,
online: 0,
client24: 0,
client5: 0
};
2016-07-06 22:52:31 +02:00
$scope.tableParams = new NgTableParams({
2016-07-12 18:29:02 +02:00
sorting: { 'nodeinfo.hostname': 'asc' },
2016-07-06 22:52:31 +02:00
total: 0,
2016-07-12 18:29:02 +02:00
count: 100
2016-07-06 22:52:31 +02:00
}, {
2016-07-13 11:43:27 +02:00
dataset: [{
lastseen: new Date(),
firstseen: new Date(),
nodeid: 'loading',
nodeinfo: {
hostname: 'loading',
owner: {
contact: 'loading'
},
wireless: {
channel24: 0,
channel5: 0,
txpower24: 0,
txpower5: 0
}
},
statistics: {
clients: {
wifi24: 0,
wifi5: 0
}
}
},
{
lastseen: new Date(),
firstseen: new Date(),
nodeid: 'loading',
nodeinfo: {
hostname: 'loading',
owner: {
contact: 'loading'
},
wireless: {
channel24: 0,
channel5: 0,
txpower24: 0,
txpower5: 0
}
},
statistics: {
clients: {
wifi24: 0,
wifi5: 0
}
}
}]
2016-07-06 22:52:31 +02:00
});
2016-07-09 10:15:03 +02:00
var originalData = {};
2016-07-12 08:44:38 +02:00
function find(nodeid){
var node = originalData.filter(function(row){
return row.nodeid === nodeid;
2016-07-09 10:15:03 +02:00
});
2016-07-12 08:44:38 +02:00
return node[0];
2016-07-09 10:15:03 +02:00
}
$scope.cancel = function(row, rowForm) {
2016-07-12 08:44:38 +02:00
console.log('cancel',row);
2016-07-09 10:15:03 +02:00
row.isEditing = false;
2016-07-12 08:44:38 +02:00
rowForm.$setPristine();
angular.copy(find(row.nodeid),row);
2016-07-09 10:15:03 +02:00
};
$scope.save = function(row, rowForm) {
2016-07-12 08:44:38 +02:00
console.log('save',row);
2016-07-09 10:15:03 +02:00
row.isEditing = false;
2016-07-12 08:44:38 +02:00
rowForm.$setPristine();
angular.copy(row,find(row.nodeid));
2016-07-09 10:15:03 +02:00
store.saveNode(row.nodeid);
};
2016-07-06 22:52:31 +02:00
function render(prom){
prom.then(function(data){
2016-07-13 20:47:26 +02:00
$scope.sum = {
all: data.nodesCount,
online: 0,
client24: 0,
client5: 0
};
2016-07-12 08:44:38 +02:00
originalData = Object.keys(data.merged).map(function(nodeid){
2016-07-13 20:47:26 +02:00
var merg = data.merged[nodeid];
merg.nodeid = nodeid;
if(merg.flags.online){
$scope.sum.online++;
}
if(merg.statistics !== undefined && merg.statistics.clients !== undefined){
$scope.sum.client24 += merg.statistics.clients.wifi24;
$scope.sum.client5 += merg.statistics.clients.wifi5;
}
return merg;
2016-07-06 22:52:31 +02:00
});
2016-07-12 08:44:38 +02:00
$scope.tableParams.settings({dataset: angular.copy(originalData),total: data.nodesCount});
2016-07-06 22:52:31 +02:00
});
}
render(store.getData);
$scope.$on('store', function(ev, prom) {
render(prom);
});
});