diff --git a/assets/scripts/app/models/job.coffee b/assets/scripts/app/models/job.coffee index 5b588772..fc7df98a 100644 --- a/assets/scripts/app/models/job.coffee +++ b/assets/scripts/app/models/job.coffee @@ -104,8 +104,7 @@ require 'travis/model' @Travis.Job.reopenClass queued: (queue) -> - @find() - Ember.FilteredRecordArray.create( + filtered = Ember.FilteredRecordArray.create( modelClass: Travis.Job filterFunction: (job) -> queued = ['created', 'queued'].indexOf(job.get('state')) != -1 @@ -115,13 +114,24 @@ require 'travis/model' filterProperties: ['state', 'queue'] ) + @fetch(state: 'started').then (array) -> + filtered.updateFilter() + filtered.set('isLoaded', true) + + filtered + running: -> - @find(state: 'started') - Ember.FilteredRecordArray.create( + filtered = Ember.FilteredRecordArray.create( modelClass: Travis.Job filterFunction: (job) -> job.get('state') == 'started' filterProperties: ['state'] ) + @fetch(state: 'started').then (array) -> + filtered.updateFilter() + filtered.set('isLoaded', true) + + filtered + diff --git a/assets/scripts/vendor/ember-model.js b/assets/scripts/vendor/ember-model.js index 4bc88305..8a67eefc 100644 --- a/assets/scripts/vendor/ember-model.js +++ b/assets/scripts/vendor/ember-model.js @@ -186,6 +186,8 @@ Ember.FilteredRecordArray = Ember.RecordArray.extend({ get(this, 'modelClass').forEachCachedRecord(function(record) { if (self.filterFunction(record)) { results.push(record); + } else { + results.removeObject(record); } }); this.set('content', Ember.A(results)); @@ -193,8 +195,12 @@ Ember.FilteredRecordArray = Ember.RecordArray.extend({ updateFilterForRecord: function(record) { var results = get(this, 'content'); - if (this.filterFunction(record) && !results.contains(record)) { - results.pushObject(record); + if (this.filterFunction(record)) { + if(!results.contains(record)) { + results.pushObject(record); + } + } else { + results.removeObject(record); } },