mirror of
https://github.com/Esri/offline-editor-js.git
synced 2025-12-15 15:20:05 +00:00
it works!
This commit is contained in:
parent
8c0e8f79b2
commit
93dac25947
@ -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<layer.graphics.length; i++)
|
||||
{
|
||||
var g = layer.graphics[i];
|
||||
if( g.attributes[layer.objectIdField] == edit.graphic.attributes[layer.objectIdField] )
|
||||
{
|
||||
layer.remove(g);
|
||||
break;
|
||||
}
|
||||
};
|
||||
console.log( layer.layerId, layer.graphics.map(function(g){return g.attributes[layer.objectIdField]},this));
|
||||
// layer.remove(edit.graphic);
|
||||
delete edit.graphic.attributes[ layer.objectIdField ];
|
||||
adds.push(edit.graphic);
|
||||
break;
|
||||
case editsStore.UPDATE:
|
||||
updates.push(edit.graphic);
|
||||
break;
|
||||
case editsStore.DELETE:
|
||||
deletes.push(edit.graphic)
|
||||
break;
|
||||
}
|
||||
}
|
||||
console.log( "sending edits", layerUrl,adds,updates,deletes);
|
||||
var context = {
|
||||
layer: layer,
|
||||
adds: adds,
|
||||
}
|
||||
promises.push( layer._applyEdits(adds,updates,deletes, function(addResults,updateResults,deleteResults)
|
||||
{
|
||||
/*
|
||||
for(var i=0; i<this.adds.length; i++)
|
||||
{
|
||||
this.adds[i].attributes[ this.layer.objectIdField ] = addResults[i].objectId;
|
||||
}
|
||||
console.log("edits applied!", addResults,updateResults,deleteResults);
|
||||
*/
|
||||
console.log( this.layer.layerId, this.layer.graphics.map(function(g){return g.attributes[this.layer.objectIdField]},this));
|
||||
}.bind(context)) );
|
||||
}
|
||||
}
|
||||
|
||||
try{
|
||||
|
||||
console.log(promises);
|
||||
var allPromises = new all(promises);
|
||||
allPromises.then(
|
||||
function(responses)
|
||||
{
|
||||
/*
|
||||
layer["onEditsComplete"] = onEditsComplete;
|
||||
layer["onBeforeApplyEdits"] = onBeforeApplyEdits;
|
||||
self.emit('edits-sent');
|
||||
this.emit('all-edits-sent',{});
|
||||
*/
|
||||
console.log("OOKK!!");
|
||||
// self.emit('edits-sent');
|
||||
// this.emit('all-edits-sent',{});
|
||||
callback && callback();
|
||||
},
|
||||
function(errors)
|
||||
{
|
||||
console.log("ERROR!!");
|
||||
console.log(errors);
|
||||
callback && callback(errors);
|
||||
})
|
||||
}
|
||||
catch(err)
|
||||
{
|
||||
console.log(err);
|
||||
callback && callback(err);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
this.emit('all-edits-sent',{});
|
||||
callback && callback();
|
||||
}
|
||||
},
|
||||
|
||||
replayStoredEdits: function(callback)
|
||||
replayStoredEdits_old: function(callback)
|
||||
{
|
||||
if( editsStore.hasPendingEdits() )
|
||||
{
|
||||
|
||||
@ -417,9 +417,11 @@ describe("Offline Editing", function()
|
||||
expect(g_featureLayers[1].graphics.length).toBe(3);
|
||||
expect(g_offlineFeaturesManager.getOnlineStatus()).toBe(g_offlineFeaturesManager.OFFLINE);
|
||||
|
||||
/*
|
||||
l1.geometry.y += 300; // jabadia: change
|
||||
l2.geometry.y += 100;
|
||||
l3.geometry.y -= 200;
|
||||
*/
|
||||
var updates = [l1,l2,l3];
|
||||
g_featureLayers[1].applyEdits(null,updates,null,function(addResults,updateResults,deleteResults)
|
||||
{
|
||||
@ -619,6 +621,7 @@ describe("Offline Editing", function()
|
||||
|
||||
g_offlineFeaturesManager.goOnline(function()
|
||||
{
|
||||
console.log("went online");
|
||||
expect(g_offlineFeaturesManager.getOnlineStatus()).toBe(g_offlineFeaturesManager.ONLINE);
|
||||
expect(g_editsStore.pendingEditsCount()).toBe(0);
|
||||
// how to get the final id of g4 and g6 ?
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user