From 2eab27873668da1383271b40f4315d2a7826f0cd Mon Sep 17 00:00:00 2001 From: Piotr Sarnacki Date: Wed, 13 Mar 2013 00:13:51 +0100 Subject: [PATCH] Add ChunkBuffer to log --- assets/scripts/app/models/log.coffee | 11 ++++++++--- assets/scripts/app/views/log.coffee | 13 +++++++------ assets/scripts/lib/travis/chunk_buffer.coffee | 6 +++--- 3 files changed, 18 insertions(+), 12 deletions(-) diff --git a/assets/scripts/app/models/log.coffee b/assets/scripts/app/models/log.coffee index 83e459e8..de96b6f6 100644 --- a/assets/scripts/app/models/log.coffee +++ b/assets/scripts/app/models/log.coffee @@ -1,4 +1,5 @@ require 'travis/model' +require 'travis/chunk_buffer' @Travis.Log = Em.Object.extend version: 0 # used to refresh log on requeue @@ -6,9 +7,13 @@ require 'travis/model' length: 0 init: -> - @set('parts', Ember.ArrayProxy.create(content: [])) + @setParts() @fetch() + setParts: -> + #@set 'parts', Ember.ArrayProxy.create(content: []) + @set 'parts', Travis.ChunkBuffer.create(content: []) + fetch: -> console.log 'log model: fetching log' if Log.DEBUG handlers = @@ -17,7 +22,7 @@ require 'travis/model' Travis.Log.Request.create(id: id, handlers: handlers).run() if id = @get('job.id') clear: -> - @set('parts', Ember.ArrayProxy.create(content: [])) + @setParts() @incrementProperty('version') append: (part) -> @@ -31,7 +36,7 @@ require 'travis/model' loadText: (text) -> console.log 'log model: load text' if Log.DEBUG number = -1 - @append(number: 0, content: text) + @append(number: 1, content: text) @set('isLoaded', true) Travis.Log.Request = Em.Object.extend diff --git a/assets/scripts/app/views/log.coffee b/assets/scripts/app/views/log.coffee index a96bc012..a88d60c8 100644 --- a/assets/scripts/app/views/log.coffee +++ b/assets/scripts/app/views/log.coffee @@ -34,15 +34,19 @@ Travis.UnorderedLogEngineMixin = Ember.Mixin.create @scroll.set(number) if !@get('isDestroyed') && number = @get('controller.lineNumber') ).observes('controller.lineNumber') + limited: (-> + @limit && @limit.limited + ).property() + Travis.OrderedLogEngineMixin = Ember.Mixin.create setupEngine: -> @set('logManager', Travis.OrderedLog.create(target: this)) - @get('logManager').append @get('log.parts').map( (part) -> Ember.get(part, 'content') ) + @get('logManager').append @get('log.parts') @get('log.parts').addArrayObserver this, didChange: 'partsDidChange' - willChange: 'partsWillChange' + willChange: 'noop' destroyEngine: (view) -> @get('logManager').destroy() @@ -51,7 +55,7 @@ Travis.OrderedLogEngineMixin = Ember.Mixin.create willChange: 'noop' partsDidChange: (parts, index, removedCount, addedCount) -> - addedParts = parts.slice(index, index + addedCount).map( (part) -> Ember.get(part, 'content') ) + addedParts = parts.slice(index, index + addedCount) @get('logManager').append addedParts lineNumberDidChange: (-> @@ -189,9 +193,6 @@ Travis.reopen @rerender() if @get('inDOM') ).observes('log') - #limited: (-> - # @limit && @limit.limited - #).property() plainTextLogUrl: (-> Travis.Urls.plainTextLog(id) if id = @get('log.job.id') diff --git a/assets/scripts/lib/travis/chunk_buffer.coffee b/assets/scripts/lib/travis/chunk_buffer.coffee index b5cdf326..f2e6d8fc 100644 --- a/assets/scripts/lib/travis/chunk_buffer.coffee +++ b/assets/scripts/lib/travis/chunk_buffer.coffee @@ -32,18 +32,18 @@ Travis.ChunkBuffer = Em.ArrayProxy.extend @get('content').replace(idx, amt, objects) queue: (-> - Em.ArrayProxy.create(Em.SortableMixin, + Em.ArrayProxy.extend(Em.SortableMixin, { content: [] sortProperties: ['number'] sortAscending: true - ) + }).create() ).property() contentArrayDidChange: (array, index, removedCount, addedCount) -> @_super.apply this, arguments if addedCount - queue = @get('queue.content') + queue = @get('queue') addedObjects = array.slice(index, index + addedCount) console.log 'Added log parts with numbers:', addedObjects.map( (element) -> get(element, 'number') )+'', 'current', @get('next') queue.pushObjects addedObjects