mirror of
https://github.com/taobataoma/meanTorrent.git
synced 2026-01-13 02:42:23 +01:00
297 lines
9.5 KiB
JavaScript
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);
|
|
});
|
|
});
|
|
};
|
|
}
|
|
}());
|