/* exported guiList */ /* global domlib,store,router */ var guiList = {}; (function(){ var view = guiList; var container, el; var tbody; var sortReverse = false; var sortIndex; var hostnameFilter, nodeidFilter; function sort(a,b){ function sortNumber(a,b){ return a - b; } if(sortIndex === undefined) return a.node_id.localeCompare(b.node_id); switch (sortIndex.innerHTML) { case "Lastseen": return a.lastseen - b.lastseen; case "CurPower": return a._wireless.txpower24 - b._wireless.txpower24; case "Power": return a.wireless.txpower24 - b.wireless.txpower24; case "CurChannel": return a._wireless.channel24 - b._wireless.channel24; case "Channel": return a.wireless.channel24 - b.wireless.channel24; case "Clients": return a.statistics.clients.wifi24 - b.statistics.clients.wifi24; case "ChanUtil": var aMax = a.statistics.wireless.map(function(d){ return d.ChanUtil; }).sort(sortNumber); var bMax = b.statistics.wireless.map(function(d){ return d.ChanUtil; }).sort(sortNumber); if(!sortReverse){ aMax = aMax.reverse(); bMax = bMax.reverse(); } return bMax[0] - aMax[0]; case "Hostname": return a.hostname.localeCompare(b.hostname); default: return a.node_id.localeCompare(b.node_id); } } function renderRow(node){ var tr = document.createElement('tr'); var startdate = new Date(); startdate.setMinutes(startdate.getMinutes() - 1); if(new Date(node.lastseen) < startdate) tr.classList.add('offline'); domlib.newAt(tr,'td').innerHTML = moment(node.lastseen).fromNow(true); domlib.newAt(tr,'td').innerHTML = node.node_id; domlib.newAt(tr,'td').innerHTML = node.hostname; var freq = domlib.newAt(tr,'td'); domlib.newAt(freq,'span').innerHTML = '2.4 Ghz'; domlib.newAt(freq,'span').innerHTML = '5 Ghz'; var curchannel = domlib.newAt(tr,'td'); domlib.newAt(curchannel,'span').innerHTML = node._wireless.channel24||'-'; domlib.newAt(curchannel,'span').innerHTML = node._wireless.channel5||'-'; var channel = domlib.newAt(tr,'td'); domlib.newAt(channel,'span').innerHTML = node.wireless.channel24||'-'; domlib.newAt(channel,'span').innerHTML = node.wireless.channel5||'-'; var curpower = domlib.newAt(tr,'td'); domlib.newAt(curpower,'span').innerHTML = node._wireless.txpower24||'-'; domlib.newAt(curpower,'span').innerHTML = node._wireless.txpower5||'-'; var power = domlib.newAt(tr,'td'); domlib.newAt(power,'span').innerHTML = node.wireless.txpower24||'-'; domlib.newAt(power,'span').innerHTML = node.wireless.txpower5||'-'; var client = domlib.newAt(tr,'td'); domlib.newAt(client,'span').innerHTML = node.statistics.clients.wifi24; domlib.newAt(client,'span').innerHTML = node.statistics.clients.wifi5; var chanUtil = domlib.newAt(tr,'td'); var chanUtil24 = node.statistics.wireless.filter(function(d){ return d.frequency < 5000; })[0] || {}; var chanUtil5 = node.statistics.wireless.filter(function(d){ return d.frequency > 5000; })[0] || {}; domlib.newAt(chanUtil,'span').innerHTML = chanUtil24.ChanUtil||'-'; domlib.newAt(chanUtil,'span').innerHTML = chanUtil5.ChanUtil||'-'; var option = domlib.newAt(tr,'td'); var edit = domlib.newAt(option,'div'); edit.classList.add('btn'); edit.innerHTML = 'Edit'; edit.addEventListener('click',function(){ router.navigate(router.generate('node', { nodeID: node.node_id })); }); return tr; } function update(){ domlib.removeChildren(tbody); var nodes = store.getNodes(); if(hostnameFilter && hostnameFilter.value != "") nodes = nodes.filter(function(d){ return d.hostname.toLowerCase().indexOf(hostnameFilter.value) > -1; }); if(nodeidFilter && nodeidFilter.value != "") nodes = nodes.filter(function(d){ return d.node_id.indexOf(nodeidFilter.value) > -1; }); nodes = nodes.sort(sort); if(sortReverse) nodes = nodes.reverse(); for(var i=0; i