Solved! Go to Solution.
deferred = new dojo.Deferred(); deferred.then(function(value){ console.log(value); map.addLayers([needPoints, needRoutes, needAreas]); });deferred.resolve("success"); return deferred.promise;myQuery.on('complete', initEditor);
queryTaskDocs = new esri.tasks.QueryTask("server_path");
var queryDocs = new esri.tasks.Query();
queryDocs.outFields = ["DOC_TITLE2"];
queryDocs.returnGeometry = false;
queryDocs.where = "DOC_TITLE2 <> ''"
queryTaskDocs.execute(queryDocs,function(results){
//Populate the dropdown list box with unique values from DOC_TITLE2 field
var docs;
var values = [];
var testVals={};
var features = results.features;
dojo.forEach (features, function(feature) {
docs = feature.attributes.DOC_TITLE2;
if (!testVals[docs]) {
testVals[docs] = true;
values.push({name:docs});
}
});
store1 = new dojo.store.Memory({data:values});
dijit.byId("docSelect").set("store", store1);
});
dojo.connect(queryTaskDocs, "onComplete", map.addLayers([featurePoints, featureRoutes, featureAreas]));
queryTaskDocs.execute(queryDocs,function(results){
//...
dijit.byId("docSelect").set("store", store1);
map.addLayers([featurePoints, featureRoutes, featureAreas]));
});
//no need for this anymore
//dojo.connect(queryTaskDocs, "onComplete", map.addLayers([featurePoints, featureRoutes, featureAreas]));
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=7, IE=9, IE=10">
<!--The viewport meta tag is used to improve the presentation and behavior of the samples
on iOS devices-->
<meta name="viewport" content="initial-scale=1, maximum-scale=1,user-scalable=no">
<title>Add New Needs</title>
<link rel="stylesheet" type="text/css" href="http://serverapi.arcgisonline.com/jsapi/arcgis/3.5/js/dojo/dijit/themes/claro/claro.css">
<link rel="stylesheet" type="text/css" href="http://serverapi.arcgisonline.com/jsapi/arcgis/3.5/js/esri/css/esri.css" />
<link rel="stylesheet" type="text/css" href="http://serverapi.arcgisonline.com/jsapi/arcgis/3.5/js/dojo/dojox/grid/resources/Grid.css">
<link rel="stylesheet" type="text/css" href="http://serverapi.arcgisonline.com/jsapi/arcgis/3.5/js/dojo/dojox/grid/resources/claroGrid.css">
<style>
html,body{height:100%;width:100%;margin:0;overflow:hidden;}
#map{
padding:0;
}
.dj_ie .infowindow .window .top .right .user .content { position: relative; }
.dj_ie .simpleInfoWindow .content {position: relative;}
</style>
<script>var dojoConfig = { parseOnLoad:true };</script>
<script src="http://serverapi.arcgisonline.com/jsapi/arcgis/3.5/"></script>
<script>
dojo.require("dijit.dijit"); // optimize: load dijit layer
dojo.require("dijit.layout.BorderContainer");
dojo.require("dijit.layout.ContentPane");
dojo.require("esri.dijit.Geocoder");
dojo.require("dijit.layout.StackContainer");
dojo.require("dijit.MenuBar");
dojo.require("dijit.PopupMenuBarItem");
dojo.require("dijit.DropDownMenu");
dojo.require("dijit.MenuItem");
dojo.require("esri.layers.FeatureLayer");
dojo.require("dojo.parser");
dojo.require("dijit.form.ComboBox");
dojo.require("esri.dijit.editing.Editor-all");
dojo.require("esri.SnappingManager");
dojo.require("esri.dijit.editing.AttachmentEditor");
dojo.require("dijit.form.Select");
dojo.require("dijit.form.ComboBox");
dojo.require("dojo.store.Memory");
dojo.require("dojo.Deferred");
var map;
function init() {
console.log("drop line 1");
esriConfig.defaults.io.proxyUrl = "/proxy";
//This service is for development and testing purposes only. We recommend that you create your own geometry service for use within your applications.
esri.config.defaults.geometryService = new esri.tasks.GeometryService("http://tasks.arcgisonline.com/ArcGIS/rest/services/Geometry/GeometryServer");
var customExtentAndSR = new esri.geometry.Extent({"xmin": -134.060026464775,"ymin": 32.885241223675,"xmax": -110.305411069225,"ymax": 42.2934163323251,"spatialReference": {"wkid": 4326}});
map = new esri.Map("map", {extent:customExtentAndSR, zoom: 11});
dojo.connect(map, "onLayersAddResult", initEditor);
var basemap = new esri.layers.ArcGISTiledMapServiceLayer("http://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer");
var needPoints = new esri.layers.FeatureLayer("http://sampleserver3.arcgisonline.com/ArcGIS/rest/services/SanFrancisco/311Incidents/FeatureServer/0");
map.addLayers([basemap, needPoints]);
var queryTaskDocs = new esri.tasks.QueryTask("http://sampleserver3.arcgisonline.com/ArcGIS/rest/services/SanFrancisco/311Incidents/MapServer/0");
var queryDocs = new esri.tasks.Query();
queryDocs.outFields = ["req_type"];
queryDocs.returnGeometry = false;
queryDocs.where = "req_type <> ''"
queryTaskDocs.execute(queryDocs,populateListDocs);
console.log("drop line 3");
}
function populateListDocs(results) {
console.log("drop line 4");
//Populate the dropdown list box with unique values
var type;
var values = [];
var testVals={};
var features = results.features;
dojo.forEach (features, function(feature) {
type = feature.attributes.req_type;
if (!testVals[type]) {
testVals[type] = true;
values.push({name:type});
}
});
store1 = new dojo.store.Memory({data:values});
dijit.byId("docSelect").set("store", store1);
def.resolve();
console.log("store is set");
};
function initEditor(results) {
alert("this is just here for now");
console.log("drop line 5");
var templateLayers = dojo.map(results,function(result){
return result.layer;
});
console.log("drop line 6");
var templatePicker = new esri.dijit.editing.TemplatePicker({
featureLayers: templateLayers,
grouping: false,
rows: 'auto',
columns: 3
},'templateDiv');
templatePicker.startup();
//widget used for the attribute inspector custom field
var docSelect = new dijit.form.ComboBox({
id: "docSelect",
name: "docSelect",
store: store1,
}, "docSelect");
var layers = arrayUtils.map(evt.layers, function(result) {
return { featureLayer: result.layer,
showDeleteButton:true,
fieldInfos:[
{fieldName: "req_id", visible: true, 'label':"id", 'customField': docSelect},
{fieldName: "req_type", visible: true, 'label':"req type", 'customField': docSelect}
]
};
});
var settings = {
map: map,
templatePicker: templatePicker,
layerInfos:layers,
toolbarVisible: true,
createOptions: {
polylineDrawTools:[ esri.dijit.editing.Editor.CREATE_TOOL_FREEHAND_POLYLINE],
polygonDrawTools: [ esri.dijit.editing.Editor.CREATE_TOOL_FREEHAND_POLYGON,
esri.dijit.editing.Editor.CREATE_TOOL_CIRCLE,
esri.dijit.editing.Editor.CREATE_TOOL_TRIANGLE,
esri.dijit.editing.Editor.CREATE_TOOL_RECTANGLE
]
},
toolbarOptions: {
reshapeVisible: true
}
};
console.log("drop line 8");
var params = {settings: settings};
//Create the editor widget
var myEditor = new esri.dijit.editing.Editor(params,'editorDiv');
//define snapping options
var symbol = new esri.symbol.SimpleMarkerSymbol(esri.symbol.SimpleMarkerSymbol.STYLE_CROSS, 15, new esri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_SOLID, new dojo.Color([255, 0, 0, 0.5]), 5), null);
map.enableSnapping({
snapPointSymbol:symbol,
tolerance:20,
snapKey:dojo.keys.ALT
});
myEditor.startup();
}
console.log("drop line 9");
dojo.ready(init);
</script>
</head>
<body class="claro">
<div id="main" data-dojo-type="dijit/layout/BorderContainer" data-dojo-props="design:'headline'" style="height:width:100%;height:100%;">
<div data-dojo-type="dijit/layout/ContentPane" id="header" data-dojo-props="region:'top'">
Edit Hydrography
</div>
<div data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region:'left'" style="width: 300px;overflow:hidden;">
<div id="templateDiv"></div>
<div id="editorDiv"></div>
</div>
<div data-dojo-type="dijit/layout/ContentPane" id="map" data-dojo-props="region:'center'"></div>
</div>
</body>
</html>
dojo.connect(map, "onLayersAddResult", function(results){myResults = results;});
deferred = new dojo.Deferred(); deferred.then(function(value){ console.log(value); map.addLayers([needPoints, needRoutes, needAreas]); });deferred.resolve("success"); return deferred.promise;