dojo.data.ItemFileWriteStore.revert
dojo.require("dojo.data.ItemFileWriteStore");
defined in dojo/data/ItemFileWriteStore.js
See dojo.data.api.Write.revert()
Usage
function () (view source)
this._assert(!this._saveInProgress); var identity; for(identity in this._pending._newItems){ var newItem = this._pending._newItems[identity]; newItem[this._storeRefPropName] = null; // null out the new item, but don't change the array index so // so we can keep using _arrayOfAllItems.length. this._arrayOfAllItems[newItem[this._itemNumPropName]] = null; if(newItem[this._rootItemPropName]){ this._removeArrayElement(this._arrayOfTopLevelItems, newItem); } if(this._itemsByIdentity){ delete this._itemsByIdentity[identity]; } } for(identity in this._pending._modifiedItems){ // find the original item and the modified item that replaced it var originalItem = this._pending._modifiedItems[identity]; var modifiedItem = null; if(this._itemsByIdentity){ modifiedItem = this._itemsByIdentity[identity]; }else{ modifiedItem = this._arrayOfAllItems[identity]; } // make the original item into a full-fledged item again originalItem[this._storeRefPropName] = this; modifiedItem[this._storeRefPropName] = null; // replace the modified item with the original one var arrayIndex = modifiedItem[this._itemNumPropName]; this._arrayOfAllItems[arrayIndex] = originalItem; if(modifiedItem[this._rootItemPropName]){ var i; for (i = 0; i < this._arrayOfTopLevelItems.length; i++) { var possibleMatch = this._arrayOfTopLevelItems[i]; if (this.getIdentity(possibleMatch) == identity){ this._arrayOfTopLevelItems[i] = originalItem; break; } } } if(this._itemsByIdentity){ this._itemsByIdentity[identity] = originalItem; } } var deletedItem; for(identity in this._pending._deletedItems){ deletedItem = this._pending._deletedItems[identity]; deletedItem[this._storeRefPropName] = this; var index = deletedItem[this._itemNumPropName]; //Restore the reverse refererence map, if any. if(deletedItem["backup_" + this._reverseRefMap]){ deletedItem[this._reverseRefMap] = deletedItem["backup_" + this._reverseRefMap]; delete deletedItem["backup_" + this._reverseRefMap]; } this._arrayOfAllItems[index] = deletedItem; if (this._itemsByIdentity) { this._itemsByIdentity[identity] = deletedItem; } if(deletedItem[this._rootItemPropName]){ this._arrayOfTopLevelItems.push(deletedItem); } } //We have to pass through it again and restore the reference maps after all the //undeletes have occurred. for(identity in this._pending._deletedItems){ deletedItem = this._pending._deletedItems[identity]; if(deletedItem["backupRefs_" + this._reverseRefMap]){ dojo.forEach(deletedItem["backupRefs_" + this._reverseRefMap], function(reference){ var refItem; if(this._itemsByIdentity){ refItem = this._itemsByIdentity[reference.id]; }else{ refItem = this._arrayOfAllItems[reference.id]; } this._addReferenceToMap(refItem, deletedItem, reference.attr); }, this); delete deletedItem["backupRefs_" + this._reverseRefMap]; } } this._pending = { _newItems:{}, _modifiedItems:{}, _deletedItems:{} }; return true; // boolean