Merge pull request #173 from cubedro/develop
Added sorting and pinned nodes local storage fixes #162 and #159
This commit is contained in:
commit
95fd23c210
@ -13,6 +13,7 @@ var vendor = [
|
|||||||
'dist/js/lib/jquery-1.11.3.min.js',
|
'dist/js/lib/jquery-1.11.3.min.js',
|
||||||
'dist/js/lib/bootstrap.min.js',
|
'dist/js/lib/bootstrap.min.js',
|
||||||
'dist/js/lib/angular.min.js',
|
'dist/js/lib/angular.min.js',
|
||||||
|
'dist/js/lib/ngStorage.min.js',
|
||||||
'dist/js/lib/lodash.min.js',
|
'dist/js/lib/lodash.min.js',
|
||||||
'dist/js/lib/d3.min.js',
|
'dist/js/lib/d3.min.js',
|
||||||
'dist/js/lib/d3.tip.min.js',
|
'dist/js/lib/d3.tip.min.js',
|
||||||
|
2
dist/index.html
vendored
2
dist/index.html
vendored
File diff suppressed because one or more lines are too long
1
dist/js/lib/ngStorage.min.js
vendored
Normal file
1
dist/js/lib/ngStorage.min.js
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
/*! ngstorage 0.3.4 | Copyright (c) 2015 Gias Kay Lee | MIT License */!function(a,b){"use strict";return"function"==typeof define&&define.amd?void define("ngStorage",["angular"],function(a){return b(a)}):b(a)}("undefined"==typeof angular?null:angular,function(a){"use strict";function b(b){return["$rootScope","$window","$log","$timeout",function(c,d,e,f){function g(a){var b=d[a];if(b&&"localStorage"===a){var c="__"+Math.round(1e7*Math.random());try{localStorage.setItem(c,c),localStorage.removeItem(c)}catch(e){b=!1}}return b}var h,i,j=g(b)||(e.warn("This browser does not support Web Storage!"),{setItem:function(){},getItem:function(){}}),k={$default:function(b){for(var c in b)a.isDefined(k[c])||(k[c]=b[c]);return k},$reset:function(a){for(var b in k)"$"===b[0]||delete k[b];return k.$default(a)}};try{j=d[b],j.length}catch(l){e.warn("This browser does not support Web Storage!"),j={}}for(var m,n=0,o=j.length;o>n;n++)(m=j.key(n))&&"ngStorage-"===m.slice(0,10)&&(k[m.slice(10)]=a.fromJson(j.getItem(m)));return h=a.copy(k),c.$watch(function(){var b;i||(i=f(function(){if(i=null,!a.equals(k,h)){b=a.copy(h),a.forEach(k,function(c,d){a.isDefined(c)&&"$"!==d[0]&&j.setItem("ngStorage-"+d,a.toJson(c)),delete b[d]});for(var c in b)j.removeItem("ngStorage-"+c);h=a.copy(k)}},100,!1))}),"localStorage"===b&&d.addEventListener&&d.addEventListener("storage",function(b){"ngStorage-"===b.key.slice(0,10)&&(b.newValue?k[b.key.slice(10)]=a.fromJson(b.newValue):delete k[b.key.slice(10)],h=a.copy(k),c.$apply())}),k}]}a.module("ngStorage",[]).factory("$localStorage",b("localStorage")).factory("$sessionStorage",b("sessionStorage"))});
|
3
dist/js/netstats.min.js
vendored
3
dist/js/netstats.min.js
vendored
File diff suppressed because one or more lines are too long
2
dist/js/netstats.min.js.map
vendored
2
dist/js/netstats.min.js.map
vendored
File diff suppressed because one or more lines are too long
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
/* Init Angular App */
|
/* Init Angular App */
|
||||||
|
|
||||||
var netStatsApp = angular.module('netStatsApp', ['netStatsApp.filters', 'netStatsApp.directives']);
|
var netStatsApp = angular.module('netStatsApp', ['netStatsApp.filters', 'netStatsApp.directives', 'ngStorage']);
|
||||||
|
|
||||||
|
|
||||||
/* Services */
|
/* Services */
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
|
|
||||||
/* Controllers */
|
/* Controllers */
|
||||||
|
|
||||||
netStatsApp.controller('StatsCtrl', function($scope, $filter, socket, _, toastr) {
|
netStatsApp.controller('StatsCtrl', function($scope, $filter, $localStorage, socket, _, toastr) {
|
||||||
|
|
||||||
var MAX_BINS = 40;
|
var MAX_BINS = 40;
|
||||||
|
|
||||||
@ -37,8 +37,9 @@ netStatsApp.controller('StatsCtrl', function($scope, $filter, socket, _, toastr)
|
|||||||
|
|
||||||
$scope.currentApiVersion = "0.0.12";
|
$scope.currentApiVersion = "0.0.12";
|
||||||
|
|
||||||
$scope.predicate = ['-pinned', '-stats.active', '-stats.block.number', 'stats.block.propagation'];
|
$scope.predicate = $localStorage.predicate || ['-pinned', '-stats.active', '-stats.block.number', 'stats.block.propagation'];
|
||||||
$scope.reverse = false;
|
$scope.reverse = $localStorage.reverse || false;
|
||||||
|
$scope.pinned = $localStorage.pinned || [];
|
||||||
|
|
||||||
$scope.prefixPredicate = ['-pinned', '-stats.active'];
|
$scope.prefixPredicate = ['-pinned', '-stats.active'];
|
||||||
$scope.originalPredicate = ['-stats.block.number', 'stats.block.propagation'];
|
$scope.originalPredicate = ['-stats.block.number', 'stats.block.propagation'];
|
||||||
@ -63,6 +64,30 @@ netStatsApp.controller('StatsCtrl', function($scope, $filter, socket, _, toastr)
|
|||||||
|
|
||||||
$scope.predicate = _.union($scope.prefixPredicate, predicate);
|
$scope.predicate = _.union($scope.prefixPredicate, predicate);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$localStorage.predicate = $scope.predicate;
|
||||||
|
$localStorage.reverse = $scope.reverse;
|
||||||
|
}
|
||||||
|
|
||||||
|
$scope.pinNode = function(id)
|
||||||
|
{
|
||||||
|
index = findIndex({id: id});
|
||||||
|
|
||||||
|
if( !_.isUndefined($scope.nodes[index]) )
|
||||||
|
{
|
||||||
|
$scope.nodes[index].pinned = !$scope.nodes[index].pinned;
|
||||||
|
|
||||||
|
if($scope.nodes[index].pinned)
|
||||||
|
{
|
||||||
|
$scope.pinned.push(id);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$scope.pinned.splice($scope.pinned.indexOf(id), 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$localStorage.pinned = $scope.pinned;
|
||||||
}
|
}
|
||||||
|
|
||||||
var timeout = setInterval(function ()
|
var timeout = setInterval(function ()
|
||||||
@ -132,7 +157,7 @@ netStatsApp.controller('StatsCtrl', function($scope, $filter, socket, _, toastr)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Init or recover pin
|
// Init or recover pin
|
||||||
$scope.nodes[index].pinned = _.result(_.find(oldNodes, 'id', node.id), 'pinned', false);
|
$scope.nodes[index].pinned = ($scope.pinned.indexOf(node.id) >= 0 ? true : false);
|
||||||
});
|
});
|
||||||
|
|
||||||
if($scope.nodes.length > 0)
|
if($scope.nodes.length > 0)
|
||||||
|
1
src/js/lib/ngStorage.min.js
vendored
Normal file
1
src/js/lib/ngStorage.min.js
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
/*! ngstorage 0.3.4 | Copyright (c) 2015 Gias Kay Lee | MIT License */!function(a,b){"use strict";return"function"==typeof define&&define.amd?void define("ngStorage",["angular"],function(a){return b(a)}):b(a)}("undefined"==typeof angular?null:angular,function(a){"use strict";function b(b){return["$rootScope","$window","$log","$timeout",function(c,d,e,f){function g(a){var b=d[a];if(b&&"localStorage"===a){var c="__"+Math.round(1e7*Math.random());try{localStorage.setItem(c,c),localStorage.removeItem(c)}catch(e){b=!1}}return b}var h,i,j=g(b)||(e.warn("This browser does not support Web Storage!"),{setItem:function(){},getItem:function(){}}),k={$default:function(b){for(var c in b)a.isDefined(k[c])||(k[c]=b[c]);return k},$reset:function(a){for(var b in k)"$"===b[0]||delete k[b];return k.$default(a)}};try{j=d[b],j.length}catch(l){e.warn("This browser does not support Web Storage!"),j={}}for(var m,n=0,o=j.length;o>n;n++)(m=j.key(n))&&"ngStorage-"===m.slice(0,10)&&(k[m.slice(10)]=a.fromJson(j.getItem(m)));return h=a.copy(k),c.$watch(function(){var b;i||(i=f(function(){if(i=null,!a.equals(k,h)){b=a.copy(h),a.forEach(k,function(c,d){a.isDefined(c)&&"$"!==d[0]&&j.setItem("ngStorage-"+d,a.toJson(c)),delete b[d]});for(var c in b)j.removeItem("ngStorage-"+c);h=a.copy(k)}},100,!1))}),"localStorage"===b&&d.addEventListener&&d.addEventListener("storage",function(b){"ngStorage-"===b.key.slice(0,10)&&(b.newValue?k[b.key.slice(10)]=a.fromJson(b.newValue):delete k[b.key.slice(10)],h=a.copy(k),c.$apply())}),k}]}a.module("ngStorage",[]).factory("$localStorage",b("localStorage")).factory("$sessionStorage",b("sessionStorage"))});
|
@ -186,7 +186,7 @@ block content
|
|||||||
tbody(ng-cloak)
|
tbody(ng-cloak)
|
||||||
tr(ng-repeat='node in nodes | orderBy:predicate track by node.id', class="{{ node.stats | mainClass : bestBlock }}")
|
tr(ng-repeat='node in nodes | orderBy:predicate track by node.id', class="{{ node.stats | mainClass : bestBlock }}")
|
||||||
td.td-nodecheck
|
td.td-nodecheck
|
||||||
i(ng-click="node.pinned = !node.pinned", class="{{ node.pinned | nodePinClass }}", data-toggle="tooltip", data-placement="right", data-original-title="Click to {{ node.pinned ? 'un' : '' }}pin")
|
i(ng-click="pinNode(node.id)", class="{{ node.pinned | nodePinClass }}", data-toggle="tooltip", data-placement="right", data-original-title="Click to {{ node.pinned ? 'un' : '' }}pin")
|
||||||
td.nodeInfo(rel="{{node.id}}")
|
td.nodeInfo(rel="{{node.id}}")
|
||||||
span.small(data-toggle="tooltip", data-placement="top", data-html="true", data-original-title="{{node | geoTooltip}}") {{node.info.name}}
|
span.small(data-toggle="tooltip", data-placement="top", data-html="true", data-original-title="{{node | geoTooltip}}") {{node.info.name}}
|
||||||
span.small ({{node.info.ip}})
|
span.small ({{node.info.ip}})
|
||||||
|
Loading…
Reference in New Issue
Block a user