Untitled diff
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
});
});