From 279a357f0eebe250bdbc8e4aefd96a9de475b652 Mon Sep 17 00:00:00 2001 From: Mario Colque Date: Thu, 9 Jan 2014 18:36:20 -0300 Subject: [PATCH] Added pagination by date to blocklist page --- app/controllers/blocks.js | 44 ++++++++++++++++++++++++--------- public/js/controllers/blocks.js | 7 +++--- public/views/blocks/list.html | 11 ++++++++- 3 files changed, 47 insertions(+), 15 deletions(-) diff --git a/app/controllers/blocks.js b/app/controllers/blocks.js index 53759402..5dfa632f 100644 --- a/app/controllers/blocks.js +++ b/app/controllers/blocks.js @@ -48,28 +48,50 @@ exports.last_blocks = function(req, res) { * List of blocks by date */ exports.list = function(req, res) { - var findParam = {}; + //helper to convert timestamps to yyyy-mm-dd format + var formatTimestamp = function (date) { + var yyyy = date.getUTCFullYear().toString(); + var mm = (date.getUTCMonth() + 1).toString(); // getMonth() is zero-based + var dd = date.getUTCDate().toString(); + return yyyy + '-' + (mm[1] ? mm : '0' + mm[0]) + '-' + (dd[1] ? dd : '0' + dd[0]); //padding + }; + + var dateStr; if (req.query.blockDate) { - var gte = Math.round((new Date(req.query.blockDate)).getTime() / 1000); - var lte = gte + 86400; - - findParam = { time: { - '$gte': gte, - '$lte': lte - }}; + dateStr = req.query.blockDate; + } else { + dateStr = formatTimestamp(new Date()); } + var gte = Math.round((new Date(dateStr)).getTime() / 1000); + + //pagination + var lte = gte + 86400; + var prev = formatTimestamp(new Date((gte - 86400) * 1000)); + var next = formatTimestamp(new Date(lte * 1000)); + Block - .find(findParam) - .limit(5) + .find({ + time: { + '$gte': gte, + '$lte': lte + } + }) .exec(function(err, blocks) { if (err) { res.render('error', { status: 500 }); } else { - res.jsonp(blocks); + res.jsonp({ + blocks: blocks, + pagination: { + next: next, + prev: prev, + current: dateStr + } + }); } }); }; diff --git a/public/js/controllers/blocks.js b/public/js/controllers/blocks.js index 002aea0e..7bb5c80b 100644 --- a/public/js/controllers/blocks.js +++ b/public/js/controllers/blocks.js @@ -4,10 +4,11 @@ angular.module('mystery.blocks').controller('BlocksController', ['$scope', '$rou $scope.global = Global; $scope.list = function() { - Blocks.query({ + Blocks.get({ blockDate: $routeParams.blockDate - }, function(blocks) { - $scope.blocks = blocks; + }, function(res) { + $scope.blocks = res.blocks; + $scope.pagination = res.pagination; }); }; diff --git a/public/views/blocks/list.html b/public/views/blocks/list.html index 656793fe..042810ef 100644 --- a/public/views/blocks/list.html +++ b/public/views/blocks/list.html @@ -1,6 +1,15 @@