diff --git a/packages/ember-data/lib/system/record_arrays/many_array_states.js b/packages/ember-data/lib/system/record_arrays/many_array_states.js deleted file mode 100755 index 5c4ef4f50a3..00000000000 --- a/packages/ember-data/lib/system/record_arrays/many_array_states.js +++ /dev/null @@ -1,140 +0,0 @@ -var get = Ember.get, set = Ember.set, guidFor = Ember.guidFor; - -var Set = function() { - this.hash = {}; - this.list = []; -}; - -Set.prototype = { - add: function(item) { - var hash = this.hash, - guid = guidFor(item); - - if (hash.hasOwnProperty(guid)) { return; } - - hash[guid] = true; - this.list.push(item); - }, - - remove: function(item) { - var hash = this.hash, - guid = guidFor(item); - - if (!hash.hasOwnProperty(guid)) { return; } - - delete hash[guid]; - var list = this.list, - index = Ember.EnumerableUtils.indexOf(this, item); - - list.splice(index, 1); - }, - - isEmpty: function() { - return this.list.length === 0; - } -}; - -var LoadedState = Ember.State.extend({ - recordWasAdded: function(manager, record) { - var dirty = manager.dirty, observer; - dirty.add(record); - - observer = function() { - if (!get(record, 'isDirty')) { - record.removeObserver('isDirty', observer); - manager.send('childWasSaved', record); - } - }; - - record.addObserver('isDirty', observer); - }, - - recordWasRemoved: function(manager, record) { - var dirty = manager.dirty, observer; - dirty.add(record); - - observer = function() { - record.removeObserver('isDirty', observer); - if (!get(record, 'isDirty')) { manager.send('childWasSaved', record); } - }; - - record.addObserver('isDirty', observer); - } -}); - -var states = { - loading: Ember.State.create({ - isLoaded: false, - isDirty: false, - - loadedRecords: function(manager, count) { - manager.decrement(count); - }, - - becameLoaded: function(manager) { - manager.transitionTo('clean'); - } - }), - - clean: LoadedState.createWithMixins({ - isLoaded: true, - isDirty: false, - - recordWasAdded: function(manager, record) { - this._super(manager, record); - manager.goToState('dirty'); - }, - - update: function(manager, clientIds) { - var manyArray = manager.manyArray; - set(manyArray, 'content', clientIds); - } - }), - - dirty: LoadedState.createWithMixins({ - isLoaded: true, - isDirty: true, - - childWasSaved: function(manager, child) { - var dirty = manager.dirty; - dirty.remove(child); - - if (dirty.isEmpty()) { manager.send('arrayBecameSaved'); } - }, - - arrayBecameSaved: function(manager) { - manager.goToState('clean'); - } - }) -}; - -DS.ManyArrayStateManager = Ember.StateManager.extend({ - manyArray: null, - initialState: 'loading', - states: states, - - /** - This number is used to keep track of the number of outstanding - records that must be loaded before the array is considered - loaded. As results stream in, this number is decremented until - it becomes zero, at which case the `isLoaded` flag will be set - to true - */ - counter: 0, - - init: function() { - this._super(); - this.dirty = new Set(); - this.counter = get(this, 'manyArray.length'); - }, - - decrement: function(count) { - var counter = this.counter = this.counter - count; - - Ember.assert("Somehow the ManyArray loaded counter went below 0. This is probably an ember-data bug. Please report it at https://github.com/emberjs/data/issues", counter >= 0); - - if (counter === 0) { - this.send('becameLoaded'); - } - } -});