96 lines
3.0 KiB
JavaScript
96 lines
3.0 KiB
JavaScript
'use strict';
|
|
|
|
/* global $ */
|
|
/* global angular */
|
|
|
|
angular.module('Application').controller('EmailsQueueController', ['$scope', '$location', '$translate', '$timeout', 'Client', function ($scope, $location, $translate, $timeout, Client) {
|
|
Client.onReady(function () { if (!Client.getUserInfo().isAtLeastAdmin) $location.path('/'); });
|
|
|
|
$scope.ready = false;
|
|
$scope.config = Client.getConfig();
|
|
$scope.user = Client.getUserInfo();
|
|
|
|
$scope.pageItemCount = [
|
|
{ name: $translate.instant('main.pagination.perPageSelector', { n: 20 }), value: 20 },
|
|
{ name: $translate.instant('main.pagination.perPageSelector', { n: 50 }), value: 50 },
|
|
{ name: $translate.instant('main.pagination.perPageSelector', { n: 100 }), value: 100 }
|
|
];
|
|
|
|
$scope.queue = {
|
|
busy: true,
|
|
busyRefresh: false,
|
|
items: [],
|
|
activeItem: null,
|
|
currentPage: 1,
|
|
perPage: 20,
|
|
pageItems: $scope.pageItemCount[0],
|
|
search: '',
|
|
|
|
refresh: function (showBusy, callback) {
|
|
if (showBusy) $scope.queue.busy = true;
|
|
|
|
Client.listMailQueue($scope.queue.search, $scope.queue.currentPage, $scope.queue.pageItems.value, function (error, result) {
|
|
if (showBusy) $scope.queue.busy = false;
|
|
|
|
if (error) {
|
|
console.error('Failed to fetch mail eventlogs.', error);
|
|
} else {
|
|
$scope.queue.items = result;
|
|
}
|
|
|
|
if (callback) callback();
|
|
});
|
|
},
|
|
|
|
reload: function () {
|
|
$scope.queue.busyRefresh = true;
|
|
$scope.queue.refresh(true, function () {
|
|
$scope.queue.busyRefresh = false;
|
|
});
|
|
},
|
|
|
|
resend: function (item) {
|
|
Client.resendMailQueueItem(item.file, function (error) {
|
|
if (error) return console.error('Failed to retry item.', error);
|
|
$scope.queue.refresh(false);
|
|
});
|
|
},
|
|
|
|
discard: function (item) {
|
|
Client.delMailQueueItem(item.file, function (error) {
|
|
if (error) return console.error('Failed to discard item.', error);
|
|
$scope.queue.refresh(false);
|
|
});
|
|
},
|
|
|
|
showNextPage: function () {
|
|
$scope.queue.currentPage++;
|
|
$scope.queue.refresh(true);
|
|
},
|
|
|
|
showPrevPage: function () {
|
|
if ($scope.queue.currentPage > 1) $scope.queue.currentPage--;
|
|
else $scope.queue.currentPage = 1;
|
|
$scope.queue.refresh(true);
|
|
},
|
|
|
|
showItemDetails: function (item) {
|
|
if ($scope.queue.activeItem === item) $scope.queue.activeItem = null;
|
|
else $scope.queue.activeItem = item;
|
|
},
|
|
|
|
updateFilter: function (fresh) {
|
|
if (fresh) $scope.queue.currentPage = 1;
|
|
$scope.queue.refresh(false);
|
|
}
|
|
};
|
|
|
|
Client.onReady(function () {
|
|
$scope.ready = true;
|
|
|
|
$scope.queue.refresh(true);
|
|
});
|
|
|
|
$('.modal-backdrop').remove();
|
|
}]);
|