lots of cleanup, moved pagination to requirejs module

This commit is contained in:
Baris Soner Usakli
2014-01-24 22:26:11 -05:00
parent aa73a10fc4
commit ef6fd35e85
8 changed files with 222 additions and 93 deletions

View File

@@ -52,7 +52,8 @@ var db = require('./database.js'),
}
function getTopicIds(next) {
Categories.getTopicIds(category_id, 0, 19, next);
var topicsPerPage = meta.config.topicsPerPage || 20;
Categories.getTopicIds(category_id, 0, topicsPerPage - 1, next);
}
function getActiveUsers(next) {
@@ -65,10 +66,15 @@ var db = require('./database.js'),
});
}
async.parallel([getTopicIds, getActiveUsers, getSidebars], function(err, results) {
function getPages(next) {
Categories.getPages(category_id, next);
}
async.parallel([getTopicIds, getActiveUsers, getSidebars, getPages], function(err, results) {
var tids = results[0],
active_users = results[1],
sidebars = results[2];
sidebars = results[2],
pages = results[3];
var category = {
'category_name': categoryData.name,
@@ -82,6 +88,8 @@ var db = require('./database.js'),
'category_id': category_id,
'active_users': [],
'topics': [],
'pages': pages,
'pageCount': pages.length,
'disableSocialButtons': meta.config.disableSocialButtons !== undefined ? parseInt(meta.config.disableSocialButtons, 10) !== 0 : false,
'sidebars': sidebars
};
@@ -137,6 +145,31 @@ var db = require('./database.js'),
db.getSortedSetRevRange('categories:' + cid + ':tid', start, stop, callback);
};
Categories.getPages = function(cid, callback) {
Categories.getPageCount(cid, function(err, pageCount) {
if(err) {
return callback(err);
}
var pages = [];
for(var i=1; i<=pageCount; ++i) {
pages.push({pageNumber: i});
}
callback(null, pages);
});
};
Categories.getPageCount = function(cid, callback) {
db.sortedSetCard('categories:' + cid + ':tid', function(err, topicCount) {
if(err) {
return callback(err);
}
var topicsPerPage = parseInt(meta.config.topicsPerPage, 10);
topicsPerPage = topicsPerPage ? topicsPerPage : 20;
callback(null, Math.ceil(parseInt(topicCount, 10) / topicsPerPage));
});
};
Categories.getAllCategories = function(current_user, callback) {
db.getListRange('categories:cid', 0, -1, function(err, cids) {

View File

@@ -200,7 +200,7 @@ var path = require('path'),
return next(err);
}
// Add privilege data to template data
data.currentPage = 1;
data.privileges = privileges;
if (data && parseInt(data.disabled, 10) === 0) {

View File

@@ -1,4 +1,5 @@
var categories = require('../categories'),
meta = require('./../meta'),
SocketCategories = {};
@@ -15,8 +16,10 @@ SocketCategories.loadMore = function(socket, data, callback) {
return callback(new Error('invalid data'));
}
var topicsPerPage = parseInt(meta.config.topicsPerPage, 10) || 20;
var start = data.after,
end = start + 9;
end = start + topicsPerPage - 1;
categories.getCategoryTopics(data.cid, start, end, socket.uid, function(err, topics) {
callback(err, {
@@ -25,4 +28,24 @@ SocketCategories.loadMore = function(socket, data, callback) {
});
};
SocketCategories.loadPage = function(socket, data, callback) {
if(!data) {
return callback(new Error('invalid data'));
}
var topicsPerPage = parseInt(meta.config.topicsPerPage, 10) || 20;
var start = (data.page - 1) * topicsPerPage,
end = start + topicsPerPage - 1;
console.log('start to end' ,start, end);
categories.getCategoryTopics(data.cid, start, end, socket.uid, function(err, topics) {
console.log('getting topics', topics.length);
callback(err, {
topics: topics
});
});
}
module.exports = SocketCategories;

View File

@@ -392,6 +392,19 @@ var async = require('async'),
});
}
Topics.getPages = function(tid, callback) {
Topics.getPageCount(tid, function(err, pageCount) {
if(err) {
return callback(err);
}
var pages = [];
for(var i=1; i<=pageCount; ++i) {
pages.push({pageNumber: i});
}
callback(null, pages);
});
}
Topics.getPageCount = function(tid, callback) {
db.sortedSetCard('tid:' + tid + ':posts', function(err, postCount) {
if(err) {
@@ -782,16 +795,7 @@ var async = require('async'),
}
function getPages(next) {
Topics.getPageCount(tid, function(err, pageCount) {
if(err) {
return next(err);
}
var pages = [];
for(var i=1; i<=pageCount; ++i) {
pages.push({pageNumber: i});
}
next(null, pages);
});
Topics.getPages(tid, next);
}
async.parallel([getTopicData, getTopicPosts, getPrivileges, getCategoryData, getPages], function(err, results) {