From 62854d8ff5f6713a15f6e78761c228c442bf2281 Mon Sep 17 00:00:00 2001 From: Jack Foltz Date: Mon, 31 Dec 2018 18:37:34 -0500 Subject: [PATCH] Work on stat service --- app/public/panel/controllers/DashCtrl.js | 41 +++++++++++++++++++------------- app/public/services/AuthSvc.js | 2 +- app/public/services/StatSvc.js | 24 +++++++++---------- app/routes/api/auth.js | 1 - 4 files changed, 37 insertions(+), 31 deletions(-) diff --git a/app/public/panel/controllers/DashCtrl.js b/app/public/panel/controllers/DashCtrl.js index 8656b27..5bb5434 100644 --- a/app/public/panel/controllers/DashCtrl.js +++ b/app/public/panel/controllers/DashCtrl.js @@ -1,4 +1,4 @@ -var angular = require('angular'); +const angular = require('angular'); angular.module('DashCtrl', ['chart.js', 'StatSvc']).controller('DashController', ['$scope', 'StatService', async ($scope, StatService) => { const colorScheme = ['#2a9fd6']; @@ -9,28 +9,37 @@ angular.module('DashCtrl', ['chart.js', 'StatSvc']).controller('DashController', (new Date(currentDate - oneDay * (6 - i))).toISOString().substr(5, 5)); const toHumanReadable = bytes => { - const units = ['B', 'KB', 'MB', 'GB', 'TB']; + const units = ['B', 'KiB', 'MiB', 'GiB', 'TiB']; let index = 0; - for (; bytes >= 1024 && index < units.length - 1; index++, bytes /= 1024) {} + for(; bytes >= 1024 && index < units.length - 1; index++) + bytes /= 1024; return bytes.toFixed(3) + ' ' + units[index]; }; - StatService.getWeek((err, stats) => { - $scope.uploadData = [Array.from({length: 7}, (val, i) => stats[labels[i]] && stats[labels[i]].uploads ? stats[labels[i]].uploads : 0)]; - $scope.viewData = [Array.from({length: 7}, (val, i) => stats[labels[i]] && stats[labels[i]].views ? stats[labels[i]].views : 0)]; + // Get stats for the week + $scope.statWeekUploads = 0; + $scope.statWeekUploadSize = 0; + $scope.statWeekViews = 0; - $scope.stats = stats; + const weekStats = await StatService.getWeek(); + console.log(weekStats); - $scope.statUploads = Object.keys(stats).reduce((acc, key) => acc + (stats[key].uploads ? stats[key].uploads : 0), 0); - $scope.statUploadSize = toHumanReadable(Object.keys(stats).reduce((acc, key) => acc + (stats[key].size ? stats[key].size : 0), 0)); - $scope.statViews = Object.keys(stats).reduce((acc, key) => acc + (stats[key].views ? stats[key].views : 0), 0); - }); + $scope.uploadData = [Array.from({length: 7}, (val, i) => weekStats[labels[i]] && weekStats[labels[i]].uploads ? weekStats[labels[i]].uploads : 0)]; + $scope.viewData = [Array.from({length: 7}, (val, i) => weekStats[labels[i]] && weekStats[labels[i]].views ? weekStats[labels[i]].views : 0)]; - StatService.getAll((err, stats) => { - $scope.statTotalUploads = stats.count; - $scope.statTotalUploadSize = toHumanReadable(stats.size); - $scope.statTotalViews = stats.views; - }); + $scope.statWeekUploads = Object.keys(weekStats).reduce((acc, key) => acc + (weekStats[key].uploads ? weekStats[key].uploads : 0), 0); + $scope.statWeekUploadSize = toHumanReadable(Object.keys(weekStats).reduce((acc, key) => acc + (weekStats[key].size ? weekStats[key].size : 0), 0)); + $scope.statWeekViews = Object.keys(weekStats).reduce((acc, key) => acc + (weekStats[key].views ? weekStats[key].views : 0), 0); + + // Get all-time stats + $scope.statTotalUploads = 0; + $scope.statTotalUploadSize = 0; + $scope.statTotalViews = 0; + const allStats = await StatService.getAll(); + console.log(allStats); + $scope.statTotalUploads = allStats.count; + $scope.statTotalUploadSize = toHumanReadable(allStats.size); + $scope.statTotalViews = allStats.views; $scope.uploadColors = colorScheme; $scope.uploadLabels = labels; diff --git a/app/public/services/AuthSvc.js b/app/public/services/AuthSvc.js index 1220d06..911a0a2 100644 --- a/app/public/services/AuthSvc.js +++ b/app/public/services/AuthSvc.js @@ -1,4 +1,4 @@ -var angular = require('angular'); +const angular = require('angular'); angular.module('AuthSvc', []).service('AuthService', ['$http', '$window', function($http) { this.login = async (displayname, password) => diff --git a/app/public/services/StatSvc.js b/app/public/services/StatSvc.js index b9d7e39..516c49b 100644 --- a/app/public/services/StatSvc.js +++ b/app/public/services/StatSvc.js @@ -1,23 +1,21 @@ -var angular = require('angular'); +const angular = require('angular'); angular.module('StatSvc', []).service('StatService', ['$http', function($http) { - this.getWeek = cb => - $http({ + this.getWeek = async () => { + const res = await $http({ method: 'GET', url: '/api/stats/week' - }).then(res => { - cb(null, res.data) - }).catch(err => { - cb(err); }); - this.getAll = cb => - $http({ + return res.data; + }; + + this.getAll = async () => { + const res = await $http({ method: 'GET', url: '/api/stats/all' - }).then(res => { - cb(null, res.data[0]) - }).catch(err => { - cb(err); }); + + return res.data; + } }]); diff --git a/app/routes/api/auth.js b/app/routes/api/auth.js index ca0a611..cda2be2 100644 --- a/app/routes/api/auth.js +++ b/app/routes/api/auth.js @@ -98,7 +98,6 @@ router.post('/register', res.status(200).json({'message': 'Registration successful.'}); })); -console.log(config.get('RateLimit')); const loginLimiter = config.get('RateLimit.enable') ? rateLimit({ windowMs: config.get('RateLimit.login.window') * 1000,