const angular = require('angular'); angular.module('DashCtrl', ['chart.js', 'StatSvc']).controller('DashController', ['$scope', 'StatService', async ($scope, StatService) => { const colorScheme = ['#2a9fd6']; // Calculate and format descending dates back one week to use for x-axis labels const currentDate = new Date(); const oneDay = 1000 * 60 * 60 * 24; let labels = Array.from({length: 7}, (date, i) => (new Date(currentDate - oneDay * (6 - i))).toISOString().substr(5, 5)); 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]; }; // Get stats for the week $scope.statWeekUploads = 0; $scope.statWeekUploadSize = 0; $scope.statWeekViews = 0; const weekStats = await StatService.getWeek(); console.log(weekStats); $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)]; $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; $scope.uploadSeries = ['Uploads']; //$scope.uploadData = [[5, 11, 4, 3, 7, 9, 21]]; $scope.uploadOptions = { title: { display: true, text: 'Historical Uploads' }, }; $scope.viewColors = colorScheme; $scope.viewLabels = labels; $scope.viewSeries = ['Views']; //$scope.viewData = [[5, 11, 4, 3, 7, 9, 21]]; $scope.viewOptions = { title: { display: true, text: 'Historical Views' } }; }]);