Merge pull request #173 from cubedro/develop

Added sorting and pinned nodes local storage fixes #162 and #159
This commit is contained in:
Marian OANCΞA 2015-06-02 07:08:05 +03:00
commit 95fd23c210
9 changed files with 38 additions and 9 deletions

View File

@ -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

File diff suppressed because one or more lines are too long

1
dist/js/lib/ngStorage.min.js vendored Normal file
View 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"))});

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -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 */

View File

@ -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
View 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"))});

View File

@ -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}})