List gather joins

This commit is contained in:
Chris Blanchard 2015-07-24 16:01:56 +01:00
parent 703944a709
commit 1645c296e5
5 changed files with 120 additions and 21 deletions

View file

@ -5,6 +5,7 @@
*
* Server API
* gather:refresh - Refreshes active gather
* gather:notification - Creates a notification
*
* Client API
* gather:join - Assigns user to gather
@ -13,23 +14,38 @@
*/
var Gather = require("./gather");
var latestGather = new Gather();
var gather = new Gather();
module.exports = function (namespace) {
var refreshGather = function () {
namespace.emit("gather:refresh", {
gather: gather
gather: gather.toJson()
});
};
namespace.on("connection", function (socket) {
socket.on("gather:join", function (data) {
if (gather.can("addGatherer")) {
gather.addGatherer(socket._user);
refreshGather();
}
});
socket.on("gather:leave", function (data) {
if (gather.can("removeGatherer")) {
gather.removeGatherer(socket._user);
refreshGather();
}
});
socket.on("disconnect", function () {
});
socket.on("gather:vote", function (data) {
});
refreshGather();
});
};

View file

@ -136,9 +136,8 @@ Gather.prototype.marines = function () {
Gather.prototype.toJson = function () {
return {
lobby: this.lobby(),
marines: this.marines(),
aliens: this.aliens()
gatherers: this.gatherers,
state: this.current
}
};

View file

@ -67,6 +67,12 @@ var UserLine = React.createClass({
});
var UserMenu = React.createClass({
getDefaultProps: function () {
return {
count: 0,
users: []
};
},
componentDidMount: function () {
socket.on('userCount', this.updateUsers);
},
@ -93,6 +99,11 @@ var UserMenu = React.createClass({
});
var Chatroom = React.createClass({
getDefaultProps: function () {
return {
history: []
};
},
componentDidMount: function () {
var self = this;
var TIMER_INTERVAL = 60000; // Every minute
@ -129,7 +140,6 @@ var Chatroom = React.createClass({
},
scrollToBottom: function () {
var node = React.findDOMNode(this.refs.messageContainer);
console.log(node)
node.scrollTop = node.scrollHeight;
},
render: function () {
@ -234,16 +244,40 @@ var MessageBar = React.createClass({
});
var Gather = React.createClass({
getDefaultProps: function () {
return {
gather: {
gatherers: []
}
}
},
componentDidMount: function () {
var self = this;
socket.on("gather:refresh", function (data) {
self.setProps({
gather: data.gather
});
});
},
joinGather: function (e) {
e.preventDefault();
alert("Joined gather!");
socket.emit("gather:join", {});
},
render: function () {
var gatherers = this.props.gather.gatherers.map(function (gatherer) {
console.log(gatherer)
return (<Gatherer gatherer={gatherer} />);
})
return (
<div className="panel panel-default">
<div className="panel-heading">
Current Gather
</div>
<table className="table">
<tbody>
{gatherers}
</tbody>
</table>
<div className="panel-body">
</div>
<div className="panel-footer">
@ -257,6 +291,14 @@ var Gather = React.createClass({
}
});
var Gatherer = React.createClass({
render: function () {
return (
<tr><td>{this.props.gatherer.user.username}</td></tr>
);
}
});
var socket;
function initialiseComponents () {
@ -272,9 +314,9 @@ function initialiseComponents () {
console.log("Disconnected")
});
React.render(<UserMenu count={0} users={[]} />, document.getElementById('side-menu'));
React.render(<Chatroom history={[]}/>, document.getElementById('chatroom'));
React.render(<Gather history={[]}/>, document.getElementById('gathers'));
React.render(<UserMenu />, document.getElementById('side-menu'));
React.render(<Chatroom />, document.getElementById('chatroom'));
React.render(<Gather />, document.getElementById('gathers'));
};
initialiseComponents();

View file

@ -14,10 +14,10 @@
this.time_zone = user['time_zone'];
this.avatar = client.baseUrl + user['avatar'];
this.admin = user['admin'];
this.steam = {
url: user['steam']['url'],
nickname: user['steam']['nickname']
};
// this.steam = {
// url: user['steam']['url'],
// nickname: user['steam']['nickname']
// };
}
module.exports = User;

File diff suppressed because one or more lines are too long