Add ChunkBuffer to log

This commit is contained in:
Piotr Sarnacki 2013-03-13 00:13:51 +01:00
parent ab97ca0e78
commit 2eab278736
3 changed files with 18 additions and 12 deletions

View File

@ -1,4 +1,5 @@
require 'travis/model' require 'travis/model'
require 'travis/chunk_buffer'
@Travis.Log = Em.Object.extend @Travis.Log = Em.Object.extend
version: 0 # used to refresh log on requeue version: 0 # used to refresh log on requeue
@ -6,9 +7,13 @@ require 'travis/model'
length: 0 length: 0
init: -> init: ->
@set('parts', Ember.ArrayProxy.create(content: [])) @setParts()
@fetch() @fetch()
setParts: ->
#@set 'parts', Ember.ArrayProxy.create(content: [])
@set 'parts', Travis.ChunkBuffer.create(content: [])
fetch: -> fetch: ->
console.log 'log model: fetching log' if Log.DEBUG console.log 'log model: fetching log' if Log.DEBUG
handlers = handlers =
@ -17,7 +22,7 @@ require 'travis/model'
Travis.Log.Request.create(id: id, handlers: handlers).run() if id = @get('job.id') Travis.Log.Request.create(id: id, handlers: handlers).run() if id = @get('job.id')
clear: -> clear: ->
@set('parts', Ember.ArrayProxy.create(content: [])) @setParts()
@incrementProperty('version') @incrementProperty('version')
append: (part) -> append: (part) ->
@ -31,7 +36,7 @@ require 'travis/model'
loadText: (text) -> loadText: (text) ->
console.log 'log model: load text' if Log.DEBUG console.log 'log model: load text' if Log.DEBUG
number = -1 number = -1
@append(number: 0, content: text) @append(number: 1, content: text)
@set('isLoaded', true) @set('isLoaded', true)
Travis.Log.Request = Em.Object.extend Travis.Log.Request = Em.Object.extend

View File

@ -34,15 +34,19 @@ Travis.UnorderedLogEngineMixin = Ember.Mixin.create
@scroll.set(number) if !@get('isDestroyed') && number = @get('controller.lineNumber') @scroll.set(number) if !@get('isDestroyed') && number = @get('controller.lineNumber')
).observes('controller.lineNumber') ).observes('controller.lineNumber')
limited: (->
@limit && @limit.limited
).property()
Travis.OrderedLogEngineMixin = Ember.Mixin.create Travis.OrderedLogEngineMixin = Ember.Mixin.create
setupEngine: -> setupEngine: ->
@set('logManager', Travis.OrderedLog.create(target: this)) @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, @get('log.parts').addArrayObserver this,
didChange: 'partsDidChange' didChange: 'partsDidChange'
willChange: 'partsWillChange' willChange: 'noop'
destroyEngine: (view) -> destroyEngine: (view) ->
@get('logManager').destroy() @get('logManager').destroy()
@ -51,7 +55,7 @@ Travis.OrderedLogEngineMixin = Ember.Mixin.create
willChange: 'noop' willChange: 'noop'
partsDidChange: (parts, index, removedCount, addedCount) -> 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 @get('logManager').append addedParts
lineNumberDidChange: (-> lineNumberDidChange: (->
@ -189,9 +193,6 @@ Travis.reopen
@rerender() if @get('inDOM') @rerender() if @get('inDOM')
).observes('log') ).observes('log')
#limited: (->
# @limit && @limit.limited
#).property()
plainTextLogUrl: (-> plainTextLogUrl: (->
Travis.Urls.plainTextLog(id) if id = @get('log.job.id') Travis.Urls.plainTextLog(id) if id = @get('log.job.id')

View File

@ -32,18 +32,18 @@ Travis.ChunkBuffer = Em.ArrayProxy.extend
@get('content').replace(idx, amt, objects) @get('content').replace(idx, amt, objects)
queue: (-> queue: (->
Em.ArrayProxy.create(Em.SortableMixin, Em.ArrayProxy.extend(Em.SortableMixin, {
content: [] content: []
sortProperties: ['number'] sortProperties: ['number']
sortAscending: true sortAscending: true
) }).create()
).property() ).property()
contentArrayDidChange: (array, index, removedCount, addedCount) -> contentArrayDidChange: (array, index, removedCount, addedCount) ->
@_super.apply this, arguments @_super.apply this, arguments
if addedCount if addedCount
queue = @get('queue.content') queue = @get('queue')
addedObjects = array.slice(index, index + addedCount) addedObjects = array.slice(index, index + addedCount)
console.log 'Added log parts with numbers:', addedObjects.map( (element) -> get(element, 'number') )+'', 'current', @get('next') console.log 'Added log parts with numbers:', addedObjects.map( (element) -> get(element, 'number') )+'', 'current', @get('next')
queue.pushObjects addedObjects queue.pushObjects addedObjects