Files
meanTorrent/modules/data-logs/client/controllers/data-logs.client.controller.js

297 lines
9.5 KiB
JavaScript

(function () {
'use strict';
angular
.module('dataLogs')
.controller('DataCenterController', DataCenterController);
DataCenterController.$inject = ['$scope', '$state', '$translate', '$timeout', 'Authentication', 'userResolve', '$window', 'MeanTorrentConfig', 'NotifycationService',
'UserDaysLogsService', 'UserMonthsLogsService', '$rootScope', 'moment', 'DebugConsoleService', '$filter', 'UserScoreLogsService', 'UserAnnounceLogsService'];
function DataCenterController($scope, $state, $translate, $timeout, Authentication, DataUser, $window, MeanTorrentConfig, NotifycationService,
UserDaysLogsService, UserMonthsLogsService, $rootScope, moment, mtDebug, $filter, UserScoreLogsService, UserAnnounceLogsService) {
$scope.$state = $state;
var vm = this;
vm.user = Authentication.user;
vm.dataUser = $scope.$parent.dataUser = DataUser;
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: $state.params.uid ? $state.params.uid : 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: $state.params.uid ? $state.params.uid : 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 () {
UserScoreLogsService.query({
userId: $state.params.uid ? $state.params.uid : vm.user._id
}, function (items) {
vm.userLogsData = items;
vm.buildPager();
}, function (res) {
NotifycationService.showErrorNotify(res.data.message, 'DATA_CENTER.GET_USER_LOGS_ERROR');
});
};
/**
* getUserAnnounceHistory
*/
vm.getUserAnnounceHistory = function (status) {
UserAnnounceLogsService.query({
userId: $state.params.uid ? $state.params.uid : vm.user._id
}, function (items) {
if (status === 'seeding') {
vm.userLogsData = items.filter(function (it) {
return it.write_uploaded > 0;
});
} else {
vm.userLogsData = items.filter(function (it) {
return it.write_downloaded > 0;
});
}
vm.buildPager();
}, function (res) {
NotifycationService.showErrorNotify(res.data.message, 'DATA_CENTER.GET_USER_LOGS_ERROR');
});
};
/**
* buildLogsPager
*/
vm.buildPager = function () {
vm.pagedItems = [];
vm.itemsPerPage = vm.itemsPerPageConfig.userDataLogsListPerPage;
vm.currentPage = 1;
vm.figureOutItemsToDisplay();
};
/**
* figureOutItemsToDisplay
*/
vm.figureOutItemsToDisplay = function (callback) {
vm.filteredItems = vm.userLogsData;
vm.filterLength = vm.filteredItems.length;
var begin = ((vm.currentPage - 1) * vm.itemsPerPage);
var end = begin + vm.itemsPerPage;
vm.pagedItems = vm.filteredItems.slice(begin, end);
mtDebug.info(vm.pagedItems);
$('.use-logs-list-ol').prop('start', begin + 1);
if (callback) callback();
};
/**
* pageChanged
*/
vm.pageChanged = function () {
var element = angular.element('#top_of_logs_list');
$('.use-logs-list').fadeTo(100, 0.01, function () {
vm.figureOutItemsToDisplay(function () {
$timeout(function () {
$('.use-logs-list').fadeTo(400, 1, function () {
//window.scrollTo(0, element[0].offsetTop - 60);
$('html,body').animate({scrollTop: element[0].offsetTop - 60}, 200);
});
}, 100);
});
});
};
}
}());