Comparing sensitive data, confidential files or internal emails?

Most legal and privacy policies prohibit uploading sensitive data online. Diffchecker Desktop ensures your confidential information never leaves your computer. Work offline and compare documents securely.

Untitled diff

Created Diff never expires
15 removals
238 lines
15 additions
238 lines
'use strict';
'use strict';


// Declare app level module which depends on views, and components
// Declare app level module which depends on views, and components
var app = angular.module('poolui', [
var app = angular.module('poolui', [
'pool.globals',
'pool.globals',
'ngRoute',
'ngRoute',
'ngMaterial',
'ngMaterial',
'md.data.table',
'md.data.table',
'angularMoment',
'angularMoment',
'ngStorage',
'ngStorage',
'ngAudio',
'ngAudio',
'utils.strings',
'utils.strings',
'utils.services',
'utils.services',
'utils.xhr',
'utils.xhr',
'n3-line-chart',
'n3-line-chart',
'angular-page-visibility'
'angular-page-visibility'
]).config(['$locationProvider', '$routeProvider', '$mdThemingProvider', function($locationProvider, $routeProvider, $mdThemingProvider) {
]).config(['$locationProvider', '$routeProvider', '$mdThemingProvider', function($locationProvider, $routeProvider, $mdThemingProvider) {
$locationProvider.hashPrefix('')
$locationProvider.hashPrefix('')
;
;
$mdThemingProvider.theme('default')
$mdThemingProvider.theme('default')
.primaryPalette('grey')
.primaryPalette('grey')
.accentPalette('light-blue');
.accentPalette('light-blue');


$routeProvider
$routeProvider
.when('/home', {
.when('/home', {
templateUrl: 'user/home/home.html',
templateUrl: 'user/home/home.html',
controller: 'HomeCtrl',
controller: 'HomeCtrl',
activetab: 'home'
activetab: 'home'
})
})
.when('/dashboard', {
.when('/dashboard', {
templateUrl: 'user/dashboard/dashboard.html',
templateUrl: 'user/dashboard/dashboard.html',
controller: 'DashboardCtrl',
controller: 'DashboardCtrl',
activetab: 'dashboard'
activetab: 'dashboard'
})
})
.when('/blocks', {
.when('/blocks', {
templateUrl: 'user/blocks/blocks.html',
templateUrl: 'user/blocks/blocks.html',
controller: 'BlocksCtrl',
controller: 'BlocksCtrl',
activetab: 'blocks'
activetab: 'blocks'
})
})
.when('/payments', {
.when('/payments', {
templateUrl: 'user/payments/payments.html',
templateUrl: 'user/payments/payments.html',
controller: 'PaymentsCtrl',
controller: 'PaymentsCtrl',
activetab: 'payments'
activetab: 'payments'
})
})
.when('/network', {
.when('/network', {
templateUrl: 'user/network/network.html',
templateUrl: 'user/network/network.html',
controller: 'NetworkCtrl',
controller: 'NetworkCtrl',
activetab: 'network'
activetab: 'network'
})
})
.when('/ports', {
.when('/ports', {
templateUrl: 'user/ports/ports.html',
templateUrl: 'user/ports/ports.html',
controller: 'PortsCtrl',
controller: 'PortsCtrl',
activetab: 'ports'
activetab: 'ports'
})
})
.when('/help/chat', {
.when('/help/chat', {
templateUrl: 'user/help/chat.html',
templateUrl: 'user/help/chat.html',
controller: 'ChatCtrl',
controller: 'ChatCtrl',
activetab: 'support'
activetab: 'support'
})
})
.when('/help/getting_started', {
.when('/help/getting_started', {
templateUrl: 'user/help/getting_started.html',
templateUrl: 'user/help/getting_started.html',
controller: 'GettingStartedCtrl',
controller: 'GettingStartedCtrl',
activetab: 'help'
activetab: 'help'
})
})
.when('/help/faq', {
.when('/help/faq', {
templateUrl: 'user/help/faq.html',
templateUrl: 'user/help/faq.html',
controller: 'FAQCtrl',
controller: 'FAQCtrl',
activetab: 'help'
activetab: 'help'
})
})
.when('/help/config_generator', {
.when('/help/config_generator', {
templateUrl: 'user/help/config_generator.html',
templateUrl: 'user/help/config_generator.html',
controller: 'ConfigGeneratorCtrl',
controller: 'ConfigGeneratorCtrl',
activetab: 'help'
activetab: 'help'
});
});


$routeProvider.otherwise({redirectTo: '/home'});
$routeProvider.otherwise({redirectTo: '/home'});


}]);
}]);


app.controller('AppCtrl', function($scope, $rootScope, $location, $route, $routeParams, $anchorScroll, $window, $interval, $mdDialog, dataService, timerService, addressService, $mdSidenav, $mdMedia, $localStorage, ngAudio, GLOBALS){
app.controller('AppCtrl', function($scope, $rootScope, $location, $route, $routeParams, $anchorScroll, $window, $interval, $mdDialog, dataService, timerService, addressService, $mdSidenav, $mdMedia, $localStorage, ngAudio, GLOBALS){
$scope.GLOBALS = GLOBALS;
$scope.GLOBALS = GLOBALS;
var appCache = window.applicationCache;
// var appCache = window.applicationCache;
$scope.$storage = $localStorage;
$scope.$storage = $localStorage;


$scope.poolList = ["pplns", "pps", "solo"];
$scope.poolList = ["pplns", "pps", "solo"];
$scope.poolStats = {}; // All Pool stats
$scope.poolStats = {}; // All Pool stats
$scope.poolHashrateChart = {}; // hashrate history
$scope.poolHashrateChart = {}; // hashrate history
$scope.poolMinersChart = {}; // miners history
$scope.poolMinersChart = {}; // miners history
$scope.addrStats = {}; // All tracked addresses
$scope.addrStats = {}; // All tracked addresses
$scope.lastBlock = {};
$scope.lastBlock = {};
// for miner tracking
// for miner tracking
$scope.yourTotalHashRate = 0;
$scope.yourTotalHashRate = 0;


// Hashrate Alarm
// Hashrate Alarm
$scope.globalSiren = false;
$scope.globalSiren = false;
$scope.sirenAudio = ngAudio.load("assets/ding.wav");
$scope.sirenAudio = ngAudio.load("assets/ding.wav");
// Update global hashrate and set off alarm if any of the tracked addresses fall below the threshold
// Update global hashrate and set off alarm if any of the tracked addresses fall below the threshold
var updateHashRate = function (addrStats){
var updateHashRate = function (addrStats){
var totalHashRate = 0;
var totalHashRate = 0;
var siren = false;
var siren = false;
_.each(addrStats, function(addr,index) {
_.each(addrStats, function(addr,index) {
totalHashRate += addr.hash;
totalHashRate += addr.hash;
if (addr.alarm && addr.hash < addr.alarmLimit) {
if (addr.alarm && addr.hash < addr.alarmLimit) {
siren=true;
siren=true;
}
}
});
});


$scope.globalSiren=siren;
$scope.globalSiren=siren;
$scope.yourTotalHashRate = totalHashRate;
$scope.yourTotalHashRate = totalHashRate;
}
}


var playSiren = function (){
var playSiren = function (){
($scope.globalSiren) ? $scope.sirenAudio.play() : $scope.sirenAudio.stop();
($scope.globalSiren) ? $scope.sirenAudio.play() : $scope.sirenAudio.stop();
}
}


// ------- UI HELPERS
// ------- UI HELPERS


$scope.menuOpen = $mdMedia('gt-md');
$scope.menuOpen = $mdMedia('gt-md');
$scope.$watch(function() { return $mdMedia('gt-md'); }, function(big) {
$scope.$watch(function() { return $mdMedia('gt-md'); }, function(big) {
$scope.menuOpen = $mdMedia('gt-md');
$scope.menuOpen = $mdMedia('gt-md');
});
});


$scope.toggleSidenav = function (){
$scope.toggleSidenav = function (){
if (!$mdMedia('gt-md')) {
if (!$mdMedia('gt-md')) {
$mdSidenav('left').toggle();
$mdSidenav('left').toggle();
} else {
} else {
// toggle boolean
// toggle boolean
$scope.menuOpen = !$scope.menuOpen;
$scope.menuOpen = !$scope.menuOpen;
}
}
}
}


// ------- Miner Login and auth
// ------- Miner Login and auth
$scope.minerLogin = function (ev) {
$scope.minerLogin = function (ev) {
$mdDialog.show({
$mdDialog.show({
controller: "LoginCtrl",
controller: "LoginCtrl",
templateUrl: 'user/home/login.html',
templateUrl: 'user/home/login.html',
parent: angular.element(document.body),
parent: angular.element(document.body),
targetEvent: ev,
targetEvent: ev,
clickOutsideToClose:true,
clickOutsideToClose:true,
fullscreen: !$scope.menuOpen // Only for -xs, -sm breakpoints.
fullscreen: !$scope.menuOpen // Only for -xs, -sm breakpoints.
})
})
.then(function(answer) {
.then(function(answer) {
// success callback
// success callback
}, function(error) {
}, function(error) {
// error callback
// error callback
});
});
}
}


$scope.minerConsole = function (ev) {
$scope.minerConsole = function (ev) {
$mdDialog.show({
$mdDialog.show({
locals: $scope.config,
locals: $scope.config,
controller: "ConsoleCtrl",
controller: "ConsoleCtrl",
templateUrl: 'user/home/console.html',
templateUrl: 'user/home/console.html',
parent: angular.element(document.body),
parent: angular.element(document.body),
targetEvent: ev,
targetEvent: ev,
clickOutsideToClose:true,
clickOutsideToClose:true,
fullscreen: !$scope.menuOpen // Only for -xs, -sm breakpoints.
fullscreen: !$scope.menuOpen // Only for -xs, -sm breakpoints.
})
})
.then(function(answer){
.then(function(answer){
if(answer=='logout'){
if(answer=='logout'){
dataService.logout();
dataService.logout();
}
}
}, function(reason){
}, function(reason){
// console.log(reason);
// console.log(reason);
});
});
}
}


$scope.isLoggedIn = function() {
$scope.isLoggedIn = function() {
return dataService.isLoggedIn();
return dataService.isLoggedIn();
}
}


// ------- App Update
// ------- App Update
var update = function() {
// var update = function() {
if (appCache.status == window.applicationCache.UPDATEREADY) {
// if (appCache.status == window.applicationCache.UPDATEREADY) {
appCache.swapCache();
// appCache.swapCache();
$window.location.reload();
// $window.location.reload();
}
// }
}
// }


appCache.addEventListener("updateready", function(event) {
// appCache.addEventListener("updateready", function(event) {
update();
// update();
}, false);
// }, false);


var updateCache = function () {
// var updateCache = function () {
appCache.update();
// appCache.update();
}
// }


// API Requests
// API Requests
var loadData = function () {
var loadData = function () {
dataService.getData("/pool/stats", function(data){
dataService.getData("/pool/stats", function(data){
$scope.poolList = data.pool_list;
$scope.poolList = data.pool_list;
$scope.poolStats.global = data.pool_statistics;
$scope.poolStats.global = data.pool_statistics;
});
});


dataService.getData("/network/stats", function(data){
dataService.getData("/network/stats", function(data){
$scope.network = data;
$scope.network = data;
});
});
}
}


var loadOnce = function () {
var loadOnce = function () {
dataService.getData("/config", function(data){
dataService.getData("/config", function(data){
$scope.config = data;
$scope.config = data;
});
});
}
}


// For FAQ
// For FAQ
$rootScope.$on('$routeChangeSuccess', function(newRoute, oldRoute) {
$rootScope.$on('$routeChangeSuccess', function(newRoute, oldRoute) {
$location.hash($routeParams.scrollTo);
$location.hash($routeParams.scrollTo);
$anchorScroll();
$anchorScroll();
});
});


// Start doing things
// Start doing things
loadOnce();
loadOnce();
loadData();
loadData();
update();
//update();
// Start the timer and register global requests
// Start the timer and register global requests
timerService.startTimer(GLOBALS.api_refresh_interval);
timerService.startTimer(GLOBALS.api_refresh_interval);
timerService.register(loadData, 'global');
timerService.register(loadData, 'global');
$interval(updateCache, GLOBALS.app_update_interval); // check for app updates every 5 mins
//$interval(updateCache, GLOBALS.app_update_interval); // check for app updates every 5 mins


// Start address tracking servuce after starting timer, only one callback supported at a time
// Start address tracking servuce after starting timer, only one callback supported at a time
addressService.start(function(addrStats) {
addressService.start(function(addrStats) {
$scope.addrStats = addrStats;
$scope.addrStats = addrStats;
updateHashRate(addrStats);
updateHashRate(addrStats);
playSiren();
playSiren();
}
}
);
);




// Sponsor
// Sponsor
$scope.sponsor_open = false
$scope.sponsor_open = false


});
});