diff --git a/lib/edit/offlineFeaturesManager.js b/lib/edit/offlineFeaturesManager.js index 18196cb..ffc3ad8 100644 --- a/lib/edit/offlineFeaturesManager.js +++ b/lib/edit/offlineFeaturesManager.js @@ -162,46 +162,132 @@ define([ layerEdits[ objectId ].graphic = edit.graphic; break; case editsStore.DELETE: - delete layerEdits[ objectId ]; + if(objectId < 0) + delete layerEdits[ objectId ]; + else + layerEdits[objectId].operation = editsStore.DELETE; break; } } } + console.log("optimized:",services); return services; }, - replayStoredEdits_new: function(callback) + replayStoredEdits: function(callback) { if( editsStore.hasPendingEdits() ) { + /* var onEditsComplete = layer["onEditsComplete"]; layer["onEditsComplete"] = function() { console.log("intercepting events onEditsComplete");} var onBeforeApplyEdits = layer["onBeforeApplyEdits"]; layer["onBeforeApplyEdits"] = function() { console.log("intercepting events onBeforeApplyEdits");} + */ var optimizedEdits = this.optimizeEditsQueue(); var promises = []; - optimizedEdits.forEach(function(service) + for(var service in optimizedEdits) { // send all edits to this service at once - },this); + // use esriRequest? + // OR + + // send edits using _applyEdits() for each layer + for(var layerId in optimizedEdits[service]) + { + console.log(service, layerId); + var layerUrl = service + '/' + layerId; + var layer = this._featureLayers[ layerUrl ]; + var adds = [], updates = [], deletes = []; + for(var objectId in optimizedEdits[service][layerId]) + { + var edit = optimizedEdits[service][layerId][objectId]; + switch(edit.operation) + { + case editsStore.ADD: + console.log( layer.layerId, layer.graphics.map(function(g){return g.attributes[layer.objectIdField]},this)); + for(var i=0; i