mirror of
https://github.com/sstent/node.git
synced 2026-03-15 01:15:45 +00:00
updated app
This commit is contained in:
99
node_modules/derby-examples/chat/lib/chat/index.js
generated
vendored
Normal file
99
node_modules/derby-examples/chat/lib/chat/index.js
generated
vendored
Normal file
@@ -0,0 +1,99 @@
|
||||
// Generated by CoffeeScript 1.3.1
|
||||
var NUM_USER_IMAGES, get, getRoom, ready, view, _ref;
|
||||
|
||||
_ref = require('derby').createApp(module), get = _ref.get, view = _ref.view, ready = _ref.ready;
|
||||
|
||||
NUM_USER_IMAGES = 10;
|
||||
|
||||
get('/:room?', function(page, model, _arg) {
|
||||
var room, userId, _room;
|
||||
room = _arg.room;
|
||||
if (!(room && /^[-\w ]+$/.test(room))) {
|
||||
return page.redirect('/lobby');
|
||||
}
|
||||
_room = room.toLowerCase().replace(/[_ ]/g, '-');
|
||||
if (_room !== room) {
|
||||
return page.redirect("/" + _room);
|
||||
}
|
||||
if (userId = model.get('_session.userId')) {
|
||||
return getRoom(page, model, room, userId);
|
||||
}
|
||||
return model.async.incr('configs.1.nextUserId', function(err, userId) {
|
||||
model.set('_session.userId', userId);
|
||||
model.set("users." + userId, {
|
||||
name: 'User ' + userId,
|
||||
picClass: 'pic' + (userId % NUM_USER_IMAGES)
|
||||
});
|
||||
return getRoom(page, model, room, userId);
|
||||
});
|
||||
});
|
||||
|
||||
getRoom = function(page, model, roomName, userId) {
|
||||
return model.subscribe("rooms." + roomName, 'users', function(err, room, users) {
|
||||
model.ref('_room', room);
|
||||
model.setNull('_room.messages', []);
|
||||
model.set('_newComment', '');
|
||||
model.ref('_user', "users." + userId);
|
||||
model.fn('_numMessages', '_room.messages', function(messages) {
|
||||
return messages.length;
|
||||
});
|
||||
return page.render();
|
||||
});
|
||||
};
|
||||
|
||||
ready(function(model) {
|
||||
var atBottom, displayTime, i, message, messageList, messages, months, _i, _len, _ref1;
|
||||
months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
|
||||
displayTime = function(time) {
|
||||
var hours, minutes, period;
|
||||
time = new Date(time);
|
||||
hours = time.getHours();
|
||||
period = hours < 12 ? ' am, ' : ' pm, ';
|
||||
hours = (hours % 12) || 12;
|
||||
minutes = time.getMinutes();
|
||||
if (minutes < 10) {
|
||||
minutes = '0' + minutes;
|
||||
}
|
||||
return hours + ':' + minutes + period + months[time.getMonth()] + ' ' + time.getDate() + ', ' + time.getFullYear();
|
||||
};
|
||||
_ref1 = model.get('_room.messages');
|
||||
for (i = _i = 0, _len = _ref1.length; _i < _len; i = ++_i) {
|
||||
message = _ref1[i];
|
||||
model.set("_room.messages." + i + "._displayTime", displayTime(message.time));
|
||||
}
|
||||
model.set('_showReconnect', true);
|
||||
exports.connect = function() {
|
||||
model.set('_showReconnect', false);
|
||||
setTimeout((function() {
|
||||
return model.set('_showReconnect', true);
|
||||
}), 1000);
|
||||
return model.socket.socket.connect();
|
||||
};
|
||||
exports.reload = function() {
|
||||
return window.location.reload();
|
||||
};
|
||||
messages = document.getElementById('messages');
|
||||
messageList = document.getElementById('messageList');
|
||||
atBottom = true;
|
||||
model.on('pre:push', '_room.messages', function() {
|
||||
var bottom, containerHeight, scrollBottom;
|
||||
bottom = messageList.offsetHeight;
|
||||
containerHeight = messages.offsetHeight;
|
||||
scrollBottom = messages.scrollTop + containerHeight;
|
||||
return atBottom = bottom < containerHeight || scrollBottom === bottom;
|
||||
});
|
||||
model.on('push', '_room.messages', function(message, len, isLocal) {
|
||||
if (isLocal || atBottom) {
|
||||
messages.scrollTop = messageList.offsetHeight;
|
||||
}
|
||||
return model.set("_room.messages." + (len - 1) + "._displayTime", displayTime(message.time));
|
||||
});
|
||||
return exports.postMessage = function() {
|
||||
model.push('_room.messages', {
|
||||
userId: model.get('_session.userId'),
|
||||
comment: model.get('_newComment'),
|
||||
time: +(new Date)
|
||||
});
|
||||
return model.set('_newComment', '');
|
||||
};
|
||||
});
|
||||
16
node_modules/derby-examples/chat/lib/chat/inline.js
generated
vendored
Normal file
16
node_modules/derby-examples/chat/lib/chat/inline.js
generated
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
// Generated by CoffeeScript 1.3.1
|
||||
var commentInput, messageList, messages;
|
||||
|
||||
messages = document.getElementById('messages');
|
||||
|
||||
messageList = document.getElementById('messageList');
|
||||
|
||||
commentInput = document.getElementById('commentInput');
|
||||
|
||||
(window.onresize = function() {
|
||||
return messages.scrollTop = messageList.offsetHeight;
|
||||
})();
|
||||
|
||||
if (!('autofocus' in commentInput)) {
|
||||
commentInput.focus();
|
||||
}
|
||||
52
node_modules/derby-examples/chat/lib/server/index.js
generated
vendored
Normal file
52
node_modules/derby-examples/chat/lib/server/index.js
generated
vendored
Normal file
@@ -0,0 +1,52 @@
|
||||
// Generated by CoffeeScript 1.3.1
|
||||
var MongoStore, ONE_YEAR, chat, derby, express, expressApp, gzippo, http, path, publicPath, root, server, serverError;
|
||||
|
||||
http = require('http');
|
||||
|
||||
path = require('path');
|
||||
|
||||
express = require('express');
|
||||
|
||||
gzippo = require('gzippo');
|
||||
|
||||
MongoStore = require('connect-mongo')(express);
|
||||
|
||||
derby = require('derby');
|
||||
|
||||
chat = require('../chat');
|
||||
|
||||
serverError = require('./serverError');
|
||||
|
||||
ONE_YEAR = 1000 * 60 * 60 * 24 * 365;
|
||||
|
||||
root = path.dirname(path.dirname(__dirname));
|
||||
|
||||
publicPath = path.join(root, 'public');
|
||||
|
||||
(expressApp = express()).use(express.favicon()).use(gzippo.staticGzip(publicPath, {
|
||||
maxAge: ONE_YEAR
|
||||
})).use(express.compress()).use(express.cookieParser('secret_sauce')).use(express.session({
|
||||
cookie: {
|
||||
maxAge: ONE_YEAR
|
||||
},
|
||||
store: new MongoStore({
|
||||
db: 'derby-chat',
|
||||
collection: 'express-sessions'
|
||||
})
|
||||
})).use(chat.session()).use(chat.router()).use(expressApp.router).use(serverError(root));
|
||||
|
||||
module.exports = server = http.createServer(expressApp);
|
||||
|
||||
expressApp.all('*', function(req) {
|
||||
throw "404: " + req.url;
|
||||
});
|
||||
|
||||
derby.use(require('racer-db-mongo'));
|
||||
|
||||
chat.createStore({
|
||||
listen: server,
|
||||
db: {
|
||||
type: 'Mongo',
|
||||
uri: 'mongodb://localhost/derby-chat'
|
||||
}
|
||||
});
|
||||
27
node_modules/derby-examples/chat/lib/server/serverError.js
generated
vendored
Normal file
27
node_modules/derby-examples/chat/lib/server/serverError.js
generated
vendored
Normal file
@@ -0,0 +1,27 @@
|
||||
// Generated by CoffeeScript 1.3.1
|
||||
var derby, isProduction;
|
||||
|
||||
derby = require('derby');
|
||||
|
||||
isProduction = derby.util.isProduction;
|
||||
|
||||
module.exports = function(root) {
|
||||
var staticPages;
|
||||
staticPages = derby.createStatic(root);
|
||||
return function(err, req, res, next) {
|
||||
var message, status;
|
||||
if (err == null) {
|
||||
return next();
|
||||
}
|
||||
console.log(err.stack ? err.stack : err);
|
||||
message = err.message || err.toString();
|
||||
status = parseInt(message);
|
||||
if (status === 404) {
|
||||
return staticPages.render('404', res, {
|
||||
url: req.url
|
||||
}, 404);
|
||||
} else {
|
||||
return res.send((400 <= status && status < 600) ? status : 500);
|
||||
}
|
||||
};
|
||||
};
|
||||
Reference in New Issue
Block a user