Files
meanTorrent/modules/data-logs/client/controllers/data-logs.client.controller.js
2018-06-05 16:11:34 +08:00

220 lines
7.0 KiB
JavaScript

(function () {
'use strict';
angular
.module('dataLogs')
.controller('DataCenterController', DataCenterController);
DataCenterController.$inject = ['$scope', '$state', '$translate', '$timeout', 'Authentication', '$window', 'MeanTorrentConfig', 'NotifycationService',
'UserDaysLogsService', 'UserMonthsLogsService', '$rootScope', 'moment', 'DebugConsoleService', '$filter'];
function DataCenterController($scope, $state, $translate, $timeout, Authentication, $window, MeanTorrentConfig, NotifycationService,
UserDaysLogsService, UserMonthsLogsService, $rootScope, moment, mtDebug, $filter) {
var vm = this;
vm.user = Authentication.user;
vm.itemsPerPageConfig = MeanTorrentConfig.meanTorrentConfig.itemsPerPage;
vm.announceConfig = MeanTorrentConfig.meanTorrentConfig.announce;
vm.scoreConfig = MeanTorrentConfig.meanTorrentConfig.score;
/**
* $scope.$on('chart-create')
*/
$scope.$on('chart-create', function (evt, chart) {
chart.generateLegend();
});
/**
* getUserDaysLogs
*/
vm.getUserDaysLogs = function () {
UserDaysLogsService.query({
userId: vm.user._id
}, function (items) {
vm.userDaysLogsData = getUserDaysLogsData(items);
mtDebug.info(vm.userDaysLogsData);
}, function (res) {
NotifycationService.showErrorNotify(res.data.message, 'DATA_CENTER.GET_USER_LOGS_ERROR');
});
};
/**
* getUserDaysLogsData
* @param items
* @returns {{labels: Array, series: {score: Array, uploaded: Array, downloaded: Array}, data: {score: Array, uploaded: Array, downloaded: Array}}}
*/
function getUserDaysLogsData(items) {
var logsData = {
labels: [],
series: {
score: [],
uploaded: [],
downloaded: []
},
data: {
score: [[]],
uploaded: [[]],
downloaded: [[]]
},
colors: {
score: ['rgb(255,102,0)']
},
options: {
legendCallback: function (chart) {
angular.forEach(chart.legend.legendItems, function (l) {
switch (l.text) {
case $translate.instant('DATA_CENTER.SERIES_UPLOADED'):
case $translate.instant('DATA_CENTER.SERIES_DOWNLOADED'):
l.text += $translate.instant('DATA_CENTER.LEGEND_UNIT');
}
});
},
legend: {
display: true,
},
tooltips: {
intersect: false
}
}
};
//labels
for (var i = vm.announceConfig.userDaysLogDays - 1; i >= 0; i--) {
logsData.labels.push(moment().subtract(i, 'days').format('YYYY-MM-DD'));
}
//series
logsData.series.score.push($translate.instant('DATA_CENTER.SERIES_SCORE'));
logsData.series.uploaded.push($translate.instant('DATA_CENTER.SERIES_UPLOADED'));
logsData.series.downloaded.push($translate.instant('DATA_CENTER.SERIES_DOWNLOADED'));
//data
angular.forEach(logsData.labels, function (lab) {
var labItems = $filter('where')(items, {ymd: lab});
var labScore = labItems.length > 0 ? labItems.map(function (x) {
return x.score;
}).reduce(function (a, b) {
return a + b;
}) : 0;
logsData.data.score[0].push(labScore);
var labUploaded = labItems.length > 0 ? labItems.map(function (x) {
return x.uploaded;
}).reduce(function (a, b) {
return a + b;
}) : 0;
logsData.data.uploaded[0].push(Math.round(labUploaded / (1024 * 1024 * 1024) * 100) / 100);
var labDownloaded = labItems.length > 0 ? labItems.map(function (x) {
return x.downloaded;
}).reduce(function (a, b) {
return a + b;
}) : 0;
logsData.data.downloaded[0].push(Math.round(labDownloaded / (1024 * 1024 * 1024) * 100) / 100);
});
return logsData;
}
/**
* getUserMonthsLogs
*/
vm.getUserMonthsLogs = function () {
UserMonthsLogsService.query({
userId: vm.user._id
}, function (items) {
vm.userMonthsLogsData = getUserMonthsLogsData(items);
mtDebug.info(vm.userMonthsLogsData);
}, function (res) {
NotifycationService.showErrorNotify(res.data.message, 'DATA_CENTER.GET_USER_LOGS_ERROR');
});
};
/**
* getUserMonthsLogsData
* @param items
* @returns {{labels: Array, series: {score: Array, uploaded: Array, downloaded: Array}, data: {score: Array, uploaded: Array, downloaded: Array}}}
*/
function getUserMonthsLogsData(items) {
var logsData = {
labels: [],
series: {
score: [],
uploaded: [],
downloaded: []
},
data: {
score: [[]],
uploaded: [[]],
downloaded: [[]]
},
colors: {
score: ['rgb(255,102,0)']
},
options: {
legendCallback: function (chart) {
angular.forEach(chart.legend.legendItems, function (l) {
switch (l.text) {
case $translate.instant('DATA_CENTER.SERIES_UPLOADED'):
case $translate.instant('DATA_CENTER.SERIES_DOWNLOADED'):
l.text += $translate.instant('DATA_CENTER.LEGEND_UNIT');
}
});
},
legend: {
display: true,
},
tooltips: {
intersect: false
}
}
};
//labels
for (var i = vm.announceConfig.userMonthsLogMonths - 1; i >= 0; i--) {
logsData.labels.push(moment().subtract(i, 'months').format('YYYY-MM'));
}
//series
logsData.series.score.push($translate.instant('DATA_CENTER.SERIES_SCORE'));
logsData.series.uploaded.push($translate.instant('DATA_CENTER.SERIES_UPLOADED'));
logsData.series.downloaded.push($translate.instant('DATA_CENTER.SERIES_DOWNLOADED'));
//data
angular.forEach(logsData.labels, function (lab) {
var labItems = $filter('where')(items, {ym: lab});
var labScore = labItems.length > 0 ? labItems.map(function (x) {
return x.score;
}).reduce(function (a, b) {
return a + b;
}) : 0;
logsData.data.score[0].push(labScore);
var labUploaded = labItems.length > 0 ? labItems.map(function (x) {
return x.uploaded;
}).reduce(function (a, b) {
return a + b;
}) : 0;
logsData.data.uploaded[0].push(Math.round(labUploaded / (1024 * 1024 * 1024) * 100) / 100);
var labDownloaded = labItems.length > 0 ? labItems.map(function (x) {
return x.downloaded;
}).reduce(function (a, b) {
return a + b;
}) : 0;
logsData.data.downloaded[0].push(Math.round(labDownloaded / (1024 * 1024 * 1024) * 100) / 100);
});
return logsData;
}
/**
* getUserScoreHistory
*/
vm.getUserScoreHistory = function () {
};
}
}());