Anton Shestakov <av6@dwimlabs.net>, Mon, 30 May 2016 16:02:00 +0800
index: default message type is 'normal'
coffee/messages.coffee
Permissions: -rw-r--r--
class Tram.Message extends Backbone.Model @on 'add change:stamp', -> @set('d/mstamp', moment(@get('stamp'))) class Tram.Messages extends Backbone.Collection splitThreshold: 30 * 60 * 1000 model.get('stamp').valueOf() @_splitOrFold(prev, model) @_splitOrFold(model, next) _splitOrFold: (m1, m2) -> Math.abs(m1.get('stamp').valueOf() - m2.get('stamp').valueOf()) > @splitThreshold m1.get('from') is m2.get('from') and Math.abs(m1.get('stamp').valueOf() - m2.get('stamp').valueOf()) < @foldThreshold class Tram.MessageView extends Backbone.View templateEl: $($('#message-template').html()) @setElement(@templateEl.clone()) @$avatarColumn = @$('.avatar-column') @listenTo(@model, 'change:contact', @updateContact) if not @model.previous('contact')? and @model.get('contact')? av = new Tram.AvatarView(model: contact) @$avatarColumn.prepend(av.render().el) @model.get('contact')?.get('d/handle') or @model.get('from') @rivet = rivets.bind(@el, model: @model, view: this) contact = @model.get('contact') av = new Tram.AvatarView(model: contact) @$avatarColumn.prepend(av.render().el) class Tram.LogApp extends Backbone.View templateEl: $($('#chat-template').html()) @setElement(@templateEl.clone()) @rivet = rivets.bind(@el, model: @model, view: @) @listenTo(@collection, 'add', @onAdd) onAdd: (model, collection) -> mi = collection.indexOf(model) view = new Tram.MessageView(model: model) @$log.children().eq(mi - 1).after(el) @$log.scrollTop() + @$log.height() == @$log.get(0).scrollHeight @$log.scrollTop(@$log.get(0).scrollHeight)