Merge remote-tracking branch 'switz/chat' into develop

Conflicts:
	src/app/helpers.coffee
This commit is contained in:
Tyler Renelle
2013-05-05 23:17:17 +01:00
7 changed files with 55 additions and 28 deletions
+2 -1
View File
@@ -27,7 +27,8 @@
"resolve": "~0.2.3",
"browserify": "1.17.3",
"expect.js": "~0.2.0",
"derby-i18n": "0.0.1"
"derby-i18n": "0.0.1",
"relative-date": "~1.1.1"
},
"private": true,
"subdomain": "habitrpg",
+8 -7
View File
@@ -1,13 +1,8 @@
moment = require 'moment'
_ = require 'underscore'
relative = require 'relative-date'
algos = require './algos'
uuid = ->
"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace /[xy]/g, (c) ->
r = Math.random() * 16 | 0
v = (if c is "x" then r else (r & 0x3 | 0x8))
v.toString 16
# Absolute diff between two dates
daysBetween = (yesterday, now, dayStart) ->
#sanity-check reset-time (is it 24h time?)
@@ -168,4 +163,10 @@ viewHelpers = (view) ->
return false unless messages?.length > 0
messages && messages[0].id != lastMessageSeen
module.exports = { viewHelpers, removeWhitespace, randomVal, daysBetween, dayMapping, username, uuid }
view.fn 'indexOf', (str1, str2) ->
return false unless str1 && str2
str1.indexOf(str2) != -1
view.fn 'relativeDate', relative
module.exports = { viewHelpers, removeWhitespace, randomVal, daysBetween, dayMapping, username }
+14
View File
@@ -76,6 +76,16 @@ module.exports.app = (appExports, model, app) ->
browser = require './browser'
helpers = require './helpers'
_currentTime = model.at '_currentTime'
_currentTime.setNull +new Date()
# Every 60 seconds, reset the current time so that the chat
# can update relative times
setInterval ->
_currentTime.set +new Date()
, 60000
user = model.at('_user')
model.on 'set', '_user.party.invitation', (after, before) ->
@@ -187,6 +197,10 @@ module.exports.app = (appExports, model, app) ->
model.setNull '_tavern.chat', {messages:[]} #we can remove this later, first time run only
sendChat('_tavern.chat.messages', '_tavernMessage')
appExports.partyMessageKeyup = (e, el, next) ->
return next() unless e.keyCode is 13
appExports.partySendChat()
appExports.tavernMessageKeyup = (e, el, next) ->
return next() unless e.keyCode is 13
appExports.tavernSendChat()
+1 -1
View File
@@ -22,4 +22,4 @@ module.exports.allowCrossDomain = (req, res, next) ->
if req.method is 'OPTIONS'
res.send(200);
else
next()
next()
+19 -9
View File
@@ -1,20 +1,30 @@
.full-width
width: 100%
width 100%
.border-right
border-right: 1px solid #ddd
border-right 1px solid #ddd
.game-tabs a
cursor:pointer
cursor pointer
.tab-notification
color: #fff;
background-color: #51a351
color #fff
background-color #51a351
.tavern-pane
position:relative
height:300px
position relative
height 300px
.tavern-chat, .party-chat
li
height 60px
line-height 60px
border-bottom 1px solid #ddd
&.highlight
background #EEE
#market-tab
position: relative
height: 500px
position relative
height 500px
+1 -1
View File
@@ -91,7 +91,7 @@
</form>
<ul class='unstyled tavern-chat'>
{#each _tavern.chat.messages as :message}
<li><app:party:chat-message message={{:message}} /></li>
<app:party:chat-message message={{:message}} />
{/}
</ul>
</div>
+10 -9
View File
@@ -22,12 +22,12 @@
<div class="span6">
<h3>Chat</h3>
<form x-bind='submit:partySendChat'>
<textarea>{_chatMessage}</textarea><br/>
<textarea x-bind='keyup:partyMessageKeyup'>{_chatMessage}</textarea><br/>
<input class=btn type=submit value=Submit />
</form>
<ul class='unstyled'>
<ul class='party-chat unstyled'>
{#each _party.chat as :message}
<li><app:party:chat-message message={{:message}} /></li>
<app:party:chat-message message={{:message}} />
{/}
</ul>
</div>
@@ -58,9 +58,10 @@
<chat-message:>
<hr/>
<span
class="label {{#if @message.npc}}label-success{{else if @message.contributor}}label-inverse{{else if equal(@message.uuid,_user.id)}}label-info{{/}} chat-message"
rel='tooltip' title="{{@message.contributor}}{{@message.npc}}">
{{@message.user}}</span> {{@message.text}} - <span class='muted'>{{friendlyTimestamp(@message.timestamp)}}
</span>
<li class="{{#if indexOf(:message.text, _user.profile.name)}}highlight{{/if}}">
<span
class="label {{#if @message.npc}}label-success{{else if @message.contributor}}label-inverse{{else if equal(@message.uuid,_user.id)}}label-info{{/}} chat-message"
rel='tooltip' title="{{@message.contributor}}{{@message.npc}}">
{{@message.user}}</span> {{@message.text}} - <span class='muted time'>{relativeDate(@message.timestamp, _currentTime)}
</span>
</li>