feat(trances): system trances log pagination

This commit is contained in:
OldHawk
2017-07-20 10:22:49 +08:00
parent dd34e37544
commit 68f80f225d
5 changed files with 84 additions and 43 deletions

View File

@@ -189,7 +189,8 @@ module.exports = {
replies_per_page: 10,
topics_search_per_page: 10,
torrents_per_page: 15,
torrents_comments_per_page: 10
torrents_comments_per_page: 10,
traces_per_page: 30
},
resourcesTags: {
movie: {

View File

@@ -30,7 +30,6 @@
*/
vm.figureOutItemsToDisplay = function (callback) {
vm.doSearch(vm.currentPage, function (items) {
console.log(items);
vm.filterLength = items.total;
vm.pagedItems = items.rows;
@@ -67,8 +66,6 @@
limit: vm.itemsPerPage
});
console.log(fs);
fs.$search(function (res) {
vm.isLoading = false;
callback(res);
@@ -101,7 +98,7 @@
angular.forEach(keysA, function (k) {
regex = new RegExp(k, 'ig');
t = t.replace(regex, function (match) {
return '<span class="keys">' + match + '</span>'
return '<span class="keys">' + match + '</span>';
});
});

View File

@@ -11,6 +11,7 @@
function TracesController($scope, $state, $translate, $timeout, Authentication, $filter, NotifycationService, $stateParams, MessagesService,
MeanTorrentConfig, ModalConfirmService, marked, $rootScope, TracesService) {
var vm = this;
vm.itemsPerPageConfig = MeanTorrentConfig.meanTorrentConfig.itemsPerPage;
/**
* If user is not signed in then redirect back home
@@ -19,44 +20,55 @@
$state.go('authentication.signin');
}
/**
* getTraces
*/
vm.getTraces = function () {
TracesService.query(function (data) {
vm.traces = data;
vm.buildPager();
});
};
/**
* buildPager
* pagination init
*/
vm.buildPager = function () {
vm.pagedItems = [];
vm.itemsPerPage = 10;
vm.itemsPerPage = vm.itemsPerPageConfig.traces_per_page;
vm.currentPage = 1;
vm.figureOutItemsToDisplay();
};
/**
* figureOutItemsToDisplay
* @param callback
*/
vm.figureOutItemsToDisplay = function () {
vm.filteredItems = $filter('filter')(vm.traces, {
$: vm.search
vm.figureOutItemsToDisplay = function (callback) {
vm.getTraces(vm.currentPage, function (items) {
vm.filterLength = items.total;
vm.pagedItems = items.rows;
if (callback) callback();
});
vm.filterLength = vm.filteredItems.length;
var begin = ((vm.currentPage - 1) * vm.itemsPerPage);
var end = begin + vm.itemsPerPage;
vm.pagedItems = vm.filteredItems.slice(begin, end);
};
/**
* pageChanged
*/
vm.pageChanged = function () {
vm.figureOutItemsToDisplay();
var element = angular.element('#top_of_traces_list');
vm.figureOutItemsToDisplay(function () {
$timeout(function () {
$('html,body').animate({scrollTop: element[0].offsetTop + 15}, 200);
}, 10);
});
};
/**
* getTraces
* @param p
* @param callback
*/
vm.getTraces = function (p, callback) {
TracesService.get({
skip: (p - 1) * vm.itemsPerPage,
limit: vm.itemsPerPage
}, function (data) {
callback(data);
});
};
}
}());

View File

@@ -1,4 +1,4 @@
<section class="container" ng-controller="TracesController as vm" ng-init="vm.getTraces();">
<section class="container" ng-controller="TracesController as vm" ng-init="vm.buildPager();">
<div class="row margin-top-20">
<div class="col-sm-12 traces-list">
@@ -12,7 +12,7 @@
</div>
</div>
<div class="pagination-div-top">
<div class="pagination-div-top" id="top_of_traces_list">
<div class="row">
<div class="col-sm-12 col-md-7">
<ul uib-pagination boundary-links="true" max-size="8" items-per-page="vm.itemsPerPage" total-items="vm.filterLength"

View File

@@ -17,26 +17,57 @@ var path = require('path'),
* @param res
*/
exports.list = function (req, res) {
Trace.find({})
.sort('-createdat')
.populate('user', 'username displayName')
.populate({
path: 'content.user',
select: 'username displayName',
model: 'User'
})
.populate({
path: 'content.forum',
model: 'Forum'
})
.exec(function (err, traces) {
var skip = 0;
var limit = 0;
if (req.query.skip !== undefined) {
skip = parseInt(req.query.skip, 10);
}
if (req.query.limit !== undefined) {
limit = parseInt(req.query.limit, 10);
}
var countQuery = function (callback) {
Trace.count({}, function (err, count) {
if (err) {
return res.status(422).send({
message: errorHandler.getErrorMessage(err)
});
callback(err, null);
} else {
callback(null, count);
}
res.json(traces);
});
};
var findQuery = function (callback) {
Trace.find({})
.sort('-createdat')
.populate('user', 'username displayName')
.populate({
path: 'content.user',
select: 'username displayName',
model: 'User'
})
.populate({
path: 'content.forum',
model: 'Forum'
})
.skip(skip)
.limit(limit)
.exec(function (err, traces) {
if (err) {
callback(err, null);
} else {
callback(null, traces);
}
});
};
async.parallel([countQuery, findQuery], function (err, results) {
if (err) {
return res.status(422).send(err);
} else {
res.json({rows: results[1], total: results[0]});
}
});
};
/**