3
0
mirror of https://github.com/reality/dbot.git synced 2024-12-05 02:19:26 +01:00
dbot/modules/users/pages.js

103 lines
4.1 KiB
JavaScript
Raw Normal View History

2013-01-07 13:27:24 +01:00
var pages = function(dbot) {
var _ = require('underscore')._;
2013-01-09 06:53:45 +01:00
var connections = dbot.instance.connections;
2013-01-07 13:27:24 +01:00
return {
'/users': function(req, res) {
2013-01-07 13:27:24 +01:00
var connections = Object.keys(dbot.instance.connections);
res.render('connections', { 'name': dbot.config.name, 'connections': connections });
},
'/channels/:connection': function(req, res) {
var connection = req.params.connection;
if(dbot.instance.connections.hasOwnProperty(connection)) {
var channels = Object.keys(dbot.instance.connections[connection].channels);
res.render('channels', { 'name': dbot.config.name, 'connection': connection, 'channels': channels});
} else {
res.render_core('error', { 'name': dbot.config.name, 'message': 'No such connection.' });
}
},
'/users/:connection/:channel': function(req, res) {
var connection = req.params.connection;
var channel = _.unescape(req.params.channel);
2013-01-07 13:27:24 +01:00
var connections = dbot.instance.connections;
if(connections.hasOwnProperty(connection) &&
connections[connection].channels.hasOwnProperty(channel)) {
2013-01-28 00:37:35 +01:00
//TODO(samstudio8): Stats API Functionality
var chanData = dbot.api.stats.getChanStats(connection, channel, ["week"]);
var chanFreq = [];
2013-01-28 00:37:35 +01:00
var chanFreqLabel = [];
2013-01-26 19:11:28 +01:00
if(chanData){
2013-01-28 00:37:35 +01:00
var cur_ptr;
2013-01-26 19:11:28 +01:00
for(var i=0; i <= 6; i++){
2013-01-28 00:37:35 +01:00
cur_ptr = ((i+1)+chanData.fields.week.raw.ptr) % 7;
2013-01-26 19:11:28 +01:00
for(var j=0; j <= 23; j++){
2013-01-28 00:37:35 +01:00
chanFreq.push(chanData.fields.week.raw[cur_ptr][j]);
2013-01-26 19:11:28 +01:00
}
2013-01-28 00:37:35 +01:00
chanFreqLabel.push("'"+chanData.fields.week.raw[cur_ptr].name+"'");
}
}
2013-01-26 19:11:28 +01:00
else{
for (var i = 0; i < 168; i++) chanFreq[i] = 0;
2013-01-28 00:37:35 +01:00
chanFreqLabel = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"];
2013-01-26 19:11:28 +01:00
}
var userData = { "active": [], "inactive": [], "offline": []};
var reply = dbot.api.stats.getChanUsersStats(connection, channel, [
"lines", "words", "lincent", "wpl", "in_mentions"
]);
_.each(reply.users, function(user, userName){
if(userName != dbot.config.name){
if(user.online){
if(user.active){
userData.active.push(user);
}
else{
userData.inactive.push(user);
}
}
else{
userData.offline.push(user);
}
}
});
var userSort = function(a, b){
2013-01-11 23:39:32 +01:00
var x = a.display.toLowerCase();
var y = b.display.toLowerCase();
if(x > y) return 1;
if(x < y) return -1;
return 0;
}
userData.active.sort(userSort);
userData.inactive.sort(userSort);
userData.offline.sort(userSort);
2013-01-15 21:44:15 +01:00
var userDataSorted = (userData.active.concat(userData.inactive)).concat(userData.offline);
res.render('users', {
'name': dbot.config.name,
'connection': connection,
'channel': channel,
'userStats': userDataSorted,
'chanFreq': chanFreq,
2013-01-28 00:37:35 +01:00
'chanFreqLen': chanFreq.length,
"locals": {
'chanFreqLabel': chanFreqLabel,
}});
2013-01-07 13:27:24 +01:00
} else {
res.render_core('error', { 'name': dbot.config.name, 'message': 'No such connection or channel.' });
}
},
};
};
exports.fetch = function(dbot) {
2013-01-07 13:27:24 +01:00
return pages(dbot);
};