1
0
mirror of https://github.com/Foltik/Shimapan synced 2024-12-03 10:59:13 -05:00
shimapan/app/public/panel/controllers/DashCtrl.js

40 lines
1.4 KiB
JavaScript

const angular = require('angular');
angular.module('DashCtrl', ['chart.js', 'StatSvc']).controller('DashController', ['$scope', 'StatService', async ($scope, StatService) => {
const toHumanReadable = bytes => {
const units = ['B', 'KiB', 'MiB', 'GiB', 'TiB'];
let index = 0;
for(; bytes >= 1024 && index < units.length - 1; index++)
bytes /= 1024;
return bytes.toFixed(3) + ' ' + units[index];
};
const getWeekUploadStats = async () => {
const stats = await StatService.getUploadsWeek();
console.log(stats);
$scope.statWeekUploads = stats.length;
$scope.statWeekUploadSize = toHumanReadable(stats.reduce((acc, stat) => acc + stat.size, 0));
};
const getWeekViewStats = async () => {
const stats = await StatService.getViewsWeek();
$scope.statWeekViews = stats.length;
};
const getAllUploadStats = async () => {
const stats = await StatService.getUploads();
console.log(stats);
$scope.statTotalUploads = stats.length;
$scope.statTotalUploadSize = toHumanReadable(stats.reduce((acc, stat) => acc + stat.size, 0));
};
const getAllViewStats = async () => {
const stats = await StatService.getViews();
$scope.statTotalViews = stats.length;
};
await Promise.all([getWeekUploadStats(), getWeekViewStats(), getAllUploadStats(), getAllViewStats()]);
$scope.$apply();
}]);