offline-editor-js/lib/edit/restartOfflineFeaturesManager.js

70 lines
2.7 KiB
JavaScript

/**
* Helper library for handling features during browser restarts or reloads.
*/
define(["esri/graphic"], function(Graphic) {
"use strict";
return {
/**
* Converts an array of graphics/features into JSON
* @param features
* @param updateEndEvent
* @param callback
*/
convertGraphicLayerToJSON: function(features,updateEndEvent,callback){
var layerDefinition = {};
layerDefinition.objectIdFieldName = updateEndEvent.target.objectIdField;
layerDefinition.globalIdFieldName = updateEndEvent.target.globalIdField;
layerDefinition.geometryType = updateEndEvent.target.geometryType;
layerDefinition.spatialReference = updateEndEvent.target.spatialReference;
layerDefinition.fields = updateEndEvent.target.fields;
var length = features.length;
var jsonArray = [];
for(var i=0; i < length; i++){
var jsonGraphic = features[i].toJson();
jsonArray.push(jsonGraphic);
if(i == (length - 1)) {
var featureJSON = JSON.stringify(jsonArray);
var layerDefJSON = JSON.stringify(layerDefinition);
callback(featureJSON,layerDefJSON);
break;
}
}
},
getFeatureDefinition: function(/* Object */ featureLayer,/* Array */ featuresArr,/* String */ geometryType,callback){
if(featureLayer == null){
alert("No features available available locally.")
}
else{
var featureDefinition = {
"layerDefinition":featureLayer,
"featureSet":{
"features": featuresArr,
"geometryType": geometryType
}
}
// var newFeatureLayer = new FeatureLayer(featureDefinition,{
// mode: FeatureLayer.MODE_SNAPSHOT,
// outFields: ["OBJECTID","BSID","ROUTES","STOPNAME"]
// });
//
// // Set the graphics to red boxes to make it easy to click on them
// // on a mobile device.
// newFeatureLayer.setRenderer(new SimpleRenderer(defaultSymbol));
//
//// var mapListen = map.on("update-end",function(evt){
//// console.log("Feature has been added back to the map while offline.")
//// mapListen.remove();
//// })
//// map.addLayer(busStopsFeatureLayer);
callback(featureDefinition);
}
}
}
})