begin implementing party chat. still need notifications

This commit is contained in:
Tyler Renelle
2013-05-02 19:26:25 +01:00
parent 470cad9df3
commit f8e592d68f
3 changed files with 66 additions and 34 deletions
+3 -1
View File
@@ -24,7 +24,7 @@ removeWhitespace = (str) ->
return '' unless str
str.replace /\s/g, ''
username = (auth, override) ->
username = module.exports.username = (auth, override) ->
#some people define custom profile name in Avatar -> Profile
return override if override?
@@ -156,4 +156,6 @@ viewHelpers = (view) ->
view.fn 'count', (arr) -> arr?.length or 0
view.fn 'friendlyTimestamp', (timestamp) -> moment(timestamp).format('MM/DD h:mm:ss a')
module.exports = { viewHelpers, removeWhitespace, randomVal, daysBetween, dayMapping, username }
+14 -1
View File
@@ -72,6 +72,7 @@ module.exports.partySubscribe = partySubscribe = (page, model, params, next, cb)
module.exports.app = (appExports, model) ->
character = require './character'
browser = require './browser'
helpers = require './helpers'
user = model.at('_user')
@@ -151,4 +152,16 @@ module.exports.app = (appExports, model) ->
# selfQ = model.query('users').withId model.get('_userId') #or model.session.userId # see http://goo.gl/TPYIt
# selfQ.subscribe (err, u) ->
# model.ref '_user', u
# browser.resetDom model
# browser.resetDom model
appExports.partySendChat = ->
chat = model.at '_party.chat'
chat.unshift
text: model.get('_chatMessage')
user: helpers.username(model.get('_user.auth'), model.get('_user.profile.name'))
timestamp: +new Date
# keep a max messages cap
chat.remove 200
model.set '_chatMessage', ''
+49 -32
View File
@@ -1,41 +1,58 @@
<party:>
{#if _user.party.current}
<h2>{{_party.name}}</h2>
<table class="table table-striped">
{{#each _partyMembers as :member}}
<tr><td>{{username(:member.auth, :member.profile.name)}}</td><td>({{:member.id}})</td></tr>
{{/}}
</table>
<form class=form-inline x-bind="submit: partyInvite">
{#if _partyError}
<div class='alert alert-danger'>{_partyError}</div>
{/}
<div class='control-group'>
<input type="text" class="input-medium" placeholder="User Id" value="{_newPartyMember}">
<input type="submit" class="btn" value="Invite" />
<div class='row-fluid'>
<div class="span6 border-right">
<h3>{{_party.name}}</h3>
<table class="table table-striped">
{{#each _partyMembers as :member}}
<tr><td>{{username(:member.auth, :member.profile.name)}}</td><td>({{:member.id}})</td></tr>
{{/}}
</table>
<form class=form-inline x-bind="submit: partyInvite">
{#if _partyError}
<div class='alert alert-danger'>{_partyError}</div>
{/}
<div class='control-group'>
<input type="text" class="input-medium" placeholder="User Id" value="{_newPartyMember}">
<input type="submit" class="btn" value="Invite" />
</div>
</form>
<a class='btn btn-danger' x-bind="click: partyLeave">Leave</a>
</div>
<div class="span6">
<h3>Chat</h3>
<form x-bind='submit:partySendChat'>
<textarea>{_chatMessage}</textarea><br/>
<input class=btn type=submit value=Submit />
</form>
<ul class='unstyled'>
{#each _party.chat as :message}
<hr/>
<li><span class='badge'>{:message.user}</span> {:message.text} - <span class='muted'>{friendlyTimestamp(:message.timestamp)}</span></li>
{/}
</ul>
</div>
</div>
</form>
<a class='btn btn-danger' x-bind="click: partyLeave">Leave</a>
{else if _user.party.invitation}
<!-- TODO show by whom -->
<h2>You're Invited To {_party.name}</h2>
<a class='btn btn-success' x-bind="click: partyAccept">Accept</a>
<a class='btn btn-danger' x-bind="click: partyReject">Reject</a>
<!-- TODO show by whom -->
<h2>You're Invited To {_party.name}</h2>
<a class='btn btn-success' x-bind="click: partyAccept">Accept</a>
<a class='btn btn-danger' x-bind="click: partyReject">Reject</a>
{else}
<h2>Create A Party</h2>
<!-- Not in a party , no invites - create a new one -->
<p>You are not in a party. You can either create one and invite friends, or if you want to join an existing party, have them enter:</p>
<pre class=prettyprint>{_user.id}</pre>
<form class=form-inline x-bind="submit: partyCreate">
{#if _partyError}
<div class='alert alert-danger'>{_partyError}</div>
{/}
<div class=control-group>
<input type="text" class="input-medium" placeholder="Party Name" value="{_newParty}" />
<input type="submit" class="btn" value="Create" />
</div>
</form>
<h2>Create A Party</h2>
<!-- Not in a party , no invites - create a new one -->
<p>You are not in a party. You can either create one and invite friends, or if you want to join an existing party, have them enter:</p>
<pre class=prettyprint>{_user.id}</pre>
<form class=form-inline x-bind="submit: partyCreate">
{#if _partyError}
<div class='alert alert-danger'>{_partyError}</div>
{/}
<div class=control-group>
<input type="text" class="input-medium" placeholder="Party Name" value="{_newParty}" />
<input type="submit" class="btn" value="Create" />
</div>
</form>
{/}