mirror of
https://github.com/reality/dbot.git
synced 2024-11-24 04:49:25 +01:00
Merge branch 'master' of github.com:reality/depressionbot
This commit is contained in:
commit
023c689f65
@ -11,8 +11,8 @@ var api = function(dbot) {
|
|||||||
if(!_.has(this.profiles, server)){
|
if(!_.has(this.profiles, server)){
|
||||||
this.profiles[server] = {};
|
this.profiles[server] = {};
|
||||||
}
|
}
|
||||||
this.profiles[server][primary] = {};
|
this.profiles[server][primary.toLowerCase()] = {};
|
||||||
_.defaults(this.profiles[server][primary], this.config.schema);
|
_.defaults(this.profiles[server][primary.toLowerCase()], this.config.schema);
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -5,7 +5,8 @@ var commands = function(dbot){
|
|||||||
|
|
||||||
"~getprop": function(event){
|
"~getprop": function(event){
|
||||||
if(event.params[1]){
|
if(event.params[1]){
|
||||||
var res = dbot.db.profiles[event.server][event.user.toLowerCase()].profile[event.params[1]];
|
var primary = dbot.api.users.resolveUser(event.server, event.user);
|
||||||
|
var res = dbot.db.profiles[event.server][primary.toLowerCase()].profile[event.params[1]];
|
||||||
if(res){
|
if(res){
|
||||||
event.reply(res);
|
event.reply(res);
|
||||||
}
|
}
|
||||||
@ -18,13 +19,32 @@ var commands = function(dbot){
|
|||||||
"~setprop": function(event){
|
"~setprop": function(event){
|
||||||
if(event.input[1] && event.input[2]){
|
if(event.input[1] && event.input[2]){
|
||||||
if(_.has(this.config.schema.profile, event.input[1])){
|
if(_.has(this.config.schema.profile, event.input[1])){
|
||||||
dbot.db.profiles[event.server][event.user.toLowerCase()].profile[event.input[1]] = event.input[2];
|
var primary = dbot.api.users.resolveUser(event.server, event.user);
|
||||||
|
dbot.db.profiles[event.server][primary.toLowerCase()].profile[event.input[1]] = event.input[2];
|
||||||
event.reply("Property set, maybe?");
|
event.reply("Property set, maybe?");
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
event.reply("Invalid property. Go home.");
|
event.reply("Invalid property. Go home.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
"~profile": function(event){
|
||||||
|
if(event.params[1]){
|
||||||
|
var primary = dbot.api.users.resolveUser(event.server, event.params[1]);
|
||||||
|
if(_.has(dbot.db.profiles[event.server], primary.toLowerCase())){
|
||||||
|
event.reply("http://"+dbot.config.web.webHost+":"+dbot.config.web.webPort+"/profile/"+event.server+"/"+primary.toLowerCase());
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
event.reply("No profile found for "+event.params[1]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
event.message = '~profile ' + event.user;
|
||||||
|
event.action = 'PRIVMSG';
|
||||||
|
event.params = event.message.split(' ');
|
||||||
|
dbot.instance.emit(event);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
commands['~setprop'].regex = [/~setprop ([^ ]+) (.+)/, 3];
|
commands['~setprop'].regex = [/~setprop ([^ ]+) (.+)/, 3];
|
||||||
|
@ -17,5 +17,5 @@
|
|||||||
"timezone": null
|
"timezone": null
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"dependencies": [ "quotes", "command" ]
|
"dependencies": [ "quotes", "users", "command" ]
|
||||||
}
|
}
|
||||||
|
@ -33,6 +33,10 @@ var profile = function(dbot) {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
dbot.save();
|
dbot.save();
|
||||||
|
|
||||||
|
// Add API Hooks
|
||||||
|
dbot.api.command.addHook('~setaliasparent', this.api.renameProfile);
|
||||||
|
dbot.api.command.addHook('~mergeusers', this.api.mergeProfile);
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -28,11 +28,17 @@ var pages = function(dbot) {
|
|||||||
|
|
||||||
var chanData = dbot.api.stats.getChanStats(connection, channel, ["freq"]);
|
var chanData = dbot.api.stats.getChanStats(connection, channel, ["freq"]);
|
||||||
var chanFreq = [];
|
var chanFreq = [];
|
||||||
for(var i=0; i <= 6; i++){
|
|
||||||
for(var j=0; j <= 23; j++){
|
if(chanData){
|
||||||
chanFreq.push(chanData.fields.freq.raw[i][j]);
|
for(var i=0; i <= 6; i++){
|
||||||
|
for(var j=0; j <= 23; j++){
|
||||||
|
chanFreq.push(chanData.fields.freq.raw[i][j]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else{
|
||||||
|
for (var i = 0; i < 168; i++) chanFreq[i] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
var userData = { "active": [], "inactive": [], "offline": []};
|
var userData = { "active": [], "inactive": [], "offline": []};
|
||||||
var reply = dbot.api.stats.getChanUsersStats(connection, channel, [
|
var reply = dbot.api.stats.getChanUsersStats(connection, channel, [
|
||||||
|
@ -71,27 +71,28 @@ block content
|
|||||||
th Verbosity
|
th Verbosity
|
||||||
th Mentions
|
th Mentions
|
||||||
tbody
|
tbody
|
||||||
for chan, key in stats
|
if stats
|
||||||
if stats.hasOwnProperty(key)
|
for chan, key in stats
|
||||||
tr
|
if stats.hasOwnProperty(key)
|
||||||
td
|
tr
|
||||||
a(href='/users/'+connection+'/'+encodeURIComponent(key))
|
td
|
||||||
#{key}
|
a(href='/users/'+connection+'/'+encodeURIComponent(key))
|
||||||
span
|
#{key}
|
||||||
if chan.online
|
span
|
||||||
if chan.active.active
|
if chan.online
|
||||||
span.label.label-success.tip(data-original-title="#{chan.active.ago}", data-placement="right") Active
|
if chan.active.active
|
||||||
else
|
span.label.label-success.tip(data-original-title="#{chan.active.ago}", data-placement="right") Active
|
||||||
span.label.label-important.tip(data-original-title="#{chan.active.ago}", data-placement="right") Inactive
|
else
|
||||||
else
|
span.label.label-important.tip(data-original-title="#{chan.active.ago}", data-placement="right") Inactive
|
||||||
span.label.tip(data-original-title="#{chan.active.ago}", data-placement="right") Offline
|
else
|
||||||
td
|
span.label.tip(data-original-title="#{chan.active.ago}", data-placement="right") Offline
|
||||||
#{chan.fields.lines.data}
|
td
|
||||||
td
|
#{chan.fields.lines.data}
|
||||||
#{chan.fields.words.data}
|
td
|
||||||
td
|
#{chan.fields.words.data}
|
||||||
#{chan.fields.lincent.data}
|
td
|
||||||
td
|
#{chan.fields.lincent.data}
|
||||||
#{chan.fields.wpl.data}
|
td
|
||||||
td
|
#{chan.fields.wpl.data}
|
||||||
#{chan.fields.in_mentions.data}
|
td
|
||||||
|
#{chan.fields.in_mentions.data}
|
||||||
|
@ -9,10 +9,16 @@ block content
|
|||||||
.chart rect:hover {
|
.chart rect:hover {
|
||||||
fill: #000;
|
fill: #000;
|
||||||
}
|
}
|
||||||
|
.yTicks {
|
||||||
|
stroke: #aaa;
|
||||||
|
stroke-width: 0.5;
|
||||||
|
}
|
||||||
|
|
||||||
script
|
script
|
||||||
$(document).ready(function(){
|
$(document).ready(function(){
|
||||||
// d3.js Graph
|
// d3.js Graph
|
||||||
|
var xlab = 30;
|
||||||
|
var chartw = 940;
|
||||||
var w = 5.595;
|
var w = 5.595;
|
||||||
var h = 120;
|
var h = 120;
|
||||||
|
|
||||||
@ -21,13 +27,22 @@ block content
|
|||||||
.range([0,w]);
|
.range([0,w]);
|
||||||
|
|
||||||
var y = d3.scale.linear()
|
var y = d3.scale.linear()
|
||||||
.domain([0,100])
|
.domain([0,d3.max([#{chanFreq}])])
|
||||||
.rangeRound([0,h]);
|
.rangeRound([0,h]);
|
||||||
|
|
||||||
var chart = d3.select($("#chanFreqChart")[0]).append("svg")
|
var chart = d3.select($("#chanFreqChart")[0]).append("svg")
|
||||||
.attr("class", "chart")
|
.attr("class", "chart")
|
||||||
.attr("width", w * #{chanFreqLen} - 1)
|
.attr("width", w * #{chanFreqLen} - 1)
|
||||||
.attr("height", h);
|
.attr("height", h + xlab);
|
||||||
|
|
||||||
|
chart.selectAll(".yTicks")
|
||||||
|
.data(y.ticks(5).slice(1,5))
|
||||||
|
.enter().append("svg:line")
|
||||||
|
.attr("class", "yTicks")
|
||||||
|
.attr("y1", function(d) { return -1 * y(d) + h; })
|
||||||
|
.attr("x1", 0)
|
||||||
|
.attr("y2", function(d) { return -1 * y(d) + h; })
|
||||||
|
.attr("x2", w * #{chanFreqLen})
|
||||||
|
|
||||||
chart.selectAll("rect")
|
chart.selectAll("rect")
|
||||||
.data([#{chanFreq}])
|
.data([#{chanFreq}])
|
||||||
@ -36,7 +51,18 @@ block content
|
|||||||
.attr("y", function(d) { return h - y(d) - .5; })
|
.attr("y", function(d) { return h - y(d) - .5; })
|
||||||
.attr("width", w)
|
.attr("width", w)
|
||||||
.attr("height", function(d) { return y(d); })
|
.attr("height", function(d) { return y(d); })
|
||||||
.attr("title", function(d){ return y(d); });
|
.attr("title", function(d){ return d; });
|
||||||
|
|
||||||
|
chart.selectAll(".rule")
|
||||||
|
.data(y.ticks(5).slice(1,5))
|
||||||
|
.enter().append("text")
|
||||||
|
.attr("class", "rule")
|
||||||
|
.attr("y", function(d) { return -1 * y(d) + h; })
|
||||||
|
.attr("x", (chartw / 2)+(w/2))
|
||||||
|
.attr("text-anchor", "middle")
|
||||||
|
.attr("font-size", 10)
|
||||||
|
.attr("dy", 3)
|
||||||
|
.text(String);
|
||||||
|
|
||||||
chart.append("line")
|
chart.append("line")
|
||||||
.attr("x1", 0)
|
.attr("x1", 0)
|
||||||
@ -45,6 +71,26 @@ block content
|
|||||||
.attr("y2", h - .5)
|
.attr("y2", h - .5)
|
||||||
.style("stroke", "#000");
|
.style("stroke", "#000");
|
||||||
|
|
||||||
|
chart.selectAll("text.times")
|
||||||
|
.data(["0", "6", "12", "18","0", "6", "12", "18","0", "6", "12", "18","0", "6", "12", "18" ,"0", "6", "12", "18" ,"0", "6", "12", "18" ,"0", "6", "12", "18"])
|
||||||
|
.enter().append("text")
|
||||||
|
.attr("x", function(d, i){ return ((i * w * 6)+(w/2)); })
|
||||||
|
.attr("y", h + 10)
|
||||||
|
.attr("text-anchor", "middle")
|
||||||
|
.attr('class', 'name')
|
||||||
|
.attr("font-size", 10)
|
||||||
|
.text(String);
|
||||||
|
|
||||||
|
chart.selectAll("text.days")
|
||||||
|
.data(["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"])
|
||||||
|
.enter().append("text")
|
||||||
|
.attr("x", function(d, i){ return ((i+0.5) * w * 24); })
|
||||||
|
.attr("y", h + 25)
|
||||||
|
.attr("text-anchor", "middle")
|
||||||
|
.attr('class', 'name')
|
||||||
|
.attr("font-size", 12)
|
||||||
|
.text(String);
|
||||||
|
|
||||||
|
|
||||||
// Allowing forcing of string stats data to sort as numeric
|
// Allowing forcing of string stats data to sort as numeric
|
||||||
jQuery.extend( jQuery.fn.dataTableExt.oSort, {
|
jQuery.extend( jQuery.fn.dataTableExt.oSort, {
|
||||||
|
Loading…
Reference in New Issue
Block a user