Skip to content

Commit

Permalink
some stuff
Browse files Browse the repository at this point in the history
  • Loading branch information
LeoMcA committed Mar 1, 2012
1 parent 0529283 commit bfa2498
Show file tree
Hide file tree
Showing 6 changed files with 174 additions and 57 deletions.
4 changes: 3 additions & 1 deletion app.js
Expand Up @@ -44,7 +44,9 @@ io.sockets.on("connection", function(socket){
client.sendNames(data);
}
if(data.type == "nick"){
client.setNick(data);
client.setNick(data, function(nick){
socket.emit("ircNick", nick);
});
}
}

Expand Down
35 changes: 24 additions & 11 deletions lib/irc.js
Expand Up @@ -47,8 +47,11 @@ irc.prototype.sendNames = function(data){
}
}

irc.prototype.setNick = function(data){
if(this.client.nick == data.oldnick) this.client.nick = data.newnick;
irc.prototype.setNick = function(data, callback){
if(this.client.nick == data.oldnick) {
this.client.nick = data.newnick;
callback(data.newnick);
}
}

irc.prototype.on = function(callback){
Expand Down Expand Up @@ -94,7 +97,7 @@ irc.prototype.on = function(callback){
"date": date,
"chan": channel,
"nick": nick,
"topic": topic
"topic": topic,
});
});
this.client.addListener("join", function(channel, nick) {
Expand All @@ -113,7 +116,7 @@ irc.prototype.on = function(callback){
"date": date,
"chan": channel,
"nick": nick,
"reason": reason
"reason": reason,
});
});
this.client.addListener("quit", function(nick, reason, channels) {
Expand All @@ -123,7 +126,7 @@ irc.prototype.on = function(callback){
"date": date,
"chans": channels,
"nick": nick,
"reason": reason
"reason": reason,
});
});
this.client.addListener("kick", function(channel, nick, by, reason) {
Expand All @@ -139,22 +142,26 @@ irc.prototype.on = function(callback){
});
this.client.addListener("message", function(nick, to, text) {
var date = new Date();
if(text.search(this.nick) > -1) var ping = true;
else var ping = false;
if(to.search(/^[#\&]/) > -1){
if(text.search(/^\x01ACTION/) > -1){
callback({
"type": "action",
"date": date,
"chan": to,
"nick": nick,
"action": text.replace("\x01ACTION ", "").replace("\x01", "")
"action": text.replace("\x01ACTION ", "").replace("\x01", ""),
"ping": ping
});
} else {
callback({
"type": "msg",
"date": date,
"chan": to,
"nick": nick,
"msg": text
"msg": text,
"ping": ping
});
}
} else {
Expand All @@ -166,15 +173,17 @@ irc.prototype.on = function(callback){
"date": date,
"pm": pm,
"nick": nick,
"action": text.replace("\x01ACTION ", "").replace("\x01", "")
"action": text.replace("\x01ACTION ", "").replace("\x01", ""),
"ping": ping
});
} else {
callback({
"type": "pm",
"date": date,
"pm": pm,
"nick": nick,
"msg": text
"msg": text,
"ping": ping
});
}
}
Expand All @@ -186,7 +195,7 @@ irc.prototype.on = function(callback){
"date": date,
"nick": nick,
"to": to,
"notice": text
"notice": text,
});
});
this.client.addListener("nick", function(oldnick, newnick, channels) {
Expand All @@ -205,7 +214,8 @@ irc.prototype.on = function(callback){
"type": "invite",
"date": date,
"chan": channel,
"from": from
"from": from,
"ping": true
});
});
this.client.addListener("whois", function(info) {
Expand Down Expand Up @@ -290,6 +300,9 @@ irc.prototype.send = function(data, quitCallback){
else this.client.send("MODE", split[1], split[2], split[3]);
} else if(data.input.search(/^\/nick/i) > -1){
this.client.send("NICK", split[1]);
} else if(data.input.search(/^\/msg/i) > -1){
this.client.emit("message", this.client.nick, split[1], split2);
this.client.say(split[1], split2);
} else {
this.client.emit("message", this.client.nick, data.activeChan, data.input);
this.client.say(data.activeChan, data.input);
Expand Down
1 change: 1 addition & 0 deletions public/javascripts/bootstrap-modified.js
Expand Up @@ -1397,6 +1397,7 @@
.removeClass('active')
.find('> .dropdown-menu > .active')
.removeClass('active')
.removeClass('ping')

element.addClass('active')

Expand Down
13 changes: 9 additions & 4 deletions public/javascripts/display.js
@@ -1,10 +1,15 @@
correctDisplay = function(){
var sidebarHeight = $("body").height() - 66;
$(".buffer-list").css("height", $("body").height()+"px");
$(".buffer-list").css("height", $("body").height()-20+"px");
$(".user-list").css("height", sidebarHeight+"px");
$(".buffer-list ul li").each(function(index){
$(".buffer").eq(index).css("height", sidebarHeight - $(".topic").eq(index).outerHeight(true));
$(".buffer").eq(index).prop("scrollTop", $(".buffer").eq(index).prop("scrollHeight") - $('.buffer').eq(index).height() + 8);
$(".buffer").css("height", sidebarHeight+"px");
$(".buffer-list ul li a").each(function(){
if($(this).text().search(/^#/) > -1){
var id = $(this).text().replace(/^#/, "#chan_");
} else {
var id = $(this).text().replace(/^/, "#pm_");
}
$(id+" .buffer").prop("scrollTop", $(id+" .buffer").prop("scrollHeight") - $(id+" .buffer").height() + 8);
});
}

Expand Down
129 changes: 88 additions & 41 deletions public/javascripts/script.js
@@ -1,60 +1,100 @@
var socket = io.connect("http://localhost:3000/");

var createMessageDOM = function (nickname, message, date) {
var createMessageDOM = function (nickname, message, date, ping, buffer) {
var time = $("<td></td>").append("<time></time>").text(date.toLocaleTimeString());
var nick = $("<td></td>").text(nickname);
var msg = $("<td></td>").text(message);
var tr = $("<tr></tr>");

if(ping){
tr.addClass("ping");
pingActions(buffer);
}

return $("<tr></tr>").append(time).append(nick).append(msg);
return tr.addClass("msg").append(time).append(nick).append(msg);
};

var createEventDOM = function (event, interaction, date) {
var createActionDOM = function (nickname, message, date, ping, buffer) {
var time = $("<td></td>").append("<time></time>").text(date.toLocaleTimeString());
var star = $("<td></td>").text("*");
var action = $("<td></td>").text(nickname+" "+message);
var tr = $("<tr></tr>");

if(ping){
tr.addClass("ping");
pingActions(buffer);
}

return tr.addClass("action").append(time).append(star).append(action);
};

var createEventDOM = function (event, interaction, date, ping) {
var time = $("<td></td>").append("<time></time>").text(date.toLocaleTimeString());
var type = $("<td></td>");
var msg = $("<td></td>").text(interaction);
var tr = $("<tr></tr>");

if(event == "join"){
tr.addClass("label-success");
tr.addClass("join");
type.text("→");
} else if(event == "part" || event == "quit" || event == "kick"){
tr.addClass("label-important");
tr.addClass("leave");
type.text("←");
} else {
tr.addClass("label-info");
type.text("―");
}
return tr.addClass("label").append(time).append(type).append(msg);
return tr.addClass("event").append(time).append(type).append(msg);
};

var createBuffer = function(id, name){
$(".tab-content").append("<div class='tab-pane' id='"+id+"'>"+
"<div class='row-fluid'>"+
"<div class='span10'>"+
"<div class='alert alert-info topic'>"+
if(name.search(/^#/) > -1){
$(".tab-content").append("<div class='tab-pane' id='"+id+"'>"+
"<div class='row-fluid'>"+
"<div class='span10'>"+
"<div class='buffer'>"+
"<div class='alert alert-info topic'>"+
"</div>"+
"<table>"+
"<tbody>"+
"</tbody>"+
"</table>"+
"</div>"+
"</div>"+
"<div class='buffer'>"+
"<table>"+
"<tbody>"+
"</tbody>"+
"</table>"+
"<div class='span2 user-list'>"+
"<ul class='nav nav-list'>"+
"</ul>"+
"</div>"+
"</div>"+
"<div class='span2 user-list'>"+
"<ul class='nav nav-list'>"+
"</ul>"+
"<div class='row-fluid'>"+
"<div class='span12 input'>"+
"<form class='form-horizontal'>"+
"<input type='text' data-provide='typeahead'>"+
"</form>"+
"</div>"+
"</div>"+
"</div>");
} else {
$(".tab-content").append("<div class='tab-pane' id='"+id+"'>"+
"<div class='row-fluid'>"+
"<div class='span12'>"+
"<div class='buffer'>"+
"<table>"+
"<tbody>"+
"</tbody>"+
"</table>"+
"</div>"+
"</div>"+
"</div>"+
"</div>"+
"<div class='row-fluid'>"+
"<div class='span12 input'>"+
"<form class='form-horizontal'>"+
"<input type='text' data-provide='typeahead'>"+
"</form>"+
"</div>"+
"</div>"+
"</div>");
"<div class='row-fluid'>"+
"<div class='span12 input'>"+
"<form class='form-horizontal'>"+
"<input type='text' data-provide='typeahead'>"+
"</form>"+
"</div>"+
"</div>"+
"</div>");
}
$(".buffer-list ul").append("<li><a href='#"+id+"' data-toggle='tab'>"+name+"</a></li>");
correctDisplay();
$(".input form").each(function(index){
if(!$(this).hasClass("falsed")){
$(this).addClass("falsed");
Expand All @@ -74,6 +114,14 @@ var createBuffer = function(id, name){
});
}

var pingActions = function(pingBuff) {
$(".buffer-list ul li a").each(function(){
if($(this).text() == pingBuff) {
$(this).addClass("ping");
}
});
}

$(document).ready(function() {

socket.on("connection", function(data){
Expand Down Expand Up @@ -107,11 +155,11 @@ $(document).ready(function() {
createBuffer("server", "Server");
$("#server").addClass("active");
}
$(buffer).append(createMessageDOM("server", data.notice, data.date));
$(buffer).append(createMessageDOM("server", data.notice, data.date, data.ping));
} else if(data.type == "quit"){
$.each(data.chans, function(index, chan){
chan = chan.replace("#", "");
$("#chan_"+chan+" tbody").append(createEventDOM("quit", data.nick + " quit irc (" + data.reason + ")", data.date));
$("#chan_"+chan+" tbody").append(createEventDOM("quit", data.nick + " quit irc (" + data.reason + ")", data.date, data.ping));
});
} else if(data.type == "nick"){
$.each(data.chans, function(index, chan){
Expand All @@ -120,34 +168,33 @@ $(document).ready(function() {
});
} else if(data.type == "pm" || data.type == "pm-action"){
var buffer = "#pm_"+data.pm+" tbody";
if($(buffer).length === 0){
if($(buffer).length == 0){
createBuffer("pm_"+data.pm, data.pm);
}
if(data.type == "pm"){
$(buffer).append(createMessageDOM(data.nick, data.msg, data.date));
$(buffer).append(createMessageDOM(data.nick, data.msg, data.date, data.ping, data.pm));
} else if(data.type == "pm-action"){
$(buffer).append(createMessageDOM(data.nick, data.action, data.date));
$(buffer).append(createActionDOM(data.nick, data.action, data.date, data.ping, data.pm));
}
} else {
data.chanNoHash = data.chan.replace("#", "");
var buffer = "#chan_"+data.chanNoHash+" tbody";
if($(buffer).length === 0){
if($(buffer).length == 0){
createBuffer("chan_"+data.chanNoHash, data.chan);
}
if(data.type == "msg"){
$(buffer).append(createMessageDOM(data.nick, data.msg, data.date));
$(buffer).append(createMessageDOM(data.nick, data.msg, data.date, data.ping, data.chan));
} else if(data.type == "action"){
$(buffer).append(createMessageDOM(data.nick, data.action, data.date));
$(buffer).append(createActionDOM(data.nick, data.action, data.date, data.ping, data.chan));
} else if(data.type == "join"){
$(buffer).append(createEventDOM("join", data.nick+" joined "+data.chan, data.date));
} else if(data.type == "part"){
$(buffer).append(createEventDOM("part", data.nick+" left "+data.chan+" ("+data.reason+")", data.date));
$(buffer).append(createEventDOM("part", data.nick+" left "+data.chan+" ("+data.reason+")", data.date, data.ping));
} else if(data.type == "kick"){
$(buffer).append(createEventDOM("kick", data.nick+" was kicked from "+data.chan+" by "+data.by+" ("+data.reason+")", data.date));
$(buffer).append(createEventDOM("kick", data.nick+" was kicked from "+data.chan+" by "+data.by+" ("+data.reason+")", data.date, data.ping));
} else if(data.type == "topic"){
$("#chan_"+data.chanNoHash+" .topic").text(data.topic);
correctDisplay();
$(buffer).append(createEventDOM("topic", data.nick+" changed the topic to \""+data.topic+"\"", data.date));
$(buffer).append(createEventDOM("topic", data.nick+" changed the topic to \""+data.topic+"\"", data.date, data.ping));
} else if(data.type == "names"){
$("#chan_"+data.chanNoHash+" .user-list ul").empty();
if(data.nicks.ops.length > 0){
Expand Down

0 comments on commit bfa2498

Please sign in to comment.