In my application I can click on a point or add a point to a sign or support layer, but my support layer does not appear to apply the edits and my sign layer does not appear to apply edits or add graphics. I also have this project on github at: csergent45/streetSigns · GitHub and the file that I am working on is in app/main.js Any ideas on this Tom Wayson ? I see the edits in the console.log, but they don't apply right after that.
Here is my code for both layers:
// temporarily show alert when starting edits // and then start listening for a map click var startCaptureRequest = function (severity) { var listener; // NOTE: once user has clicked "x" to dismiss // this alert, it will no longer show up domStyle.set(app.startEditAlert, "display", ""); setTimeout(function () { domStyle.set(app.startEditAlert, "display", "none"); }, 3000); // save map point in app global and listener = app.map.on("click", function (e) { listener.remove(); // save map point in app global and // show form to collect incident report app.currentGeometry = e.mapPoint; /* Show signs form */ if (severity === "0") { document.getElementById("signForm").reset(); app.attributesSignModal.modal("show"); /* Enter your domain item and then the element to populate */ populateSelect("BACKING", "backing","sign"); populateSelect("VISIBILITY", "visibility","sign"); populateSelect("CONDITION_", "condition","sign"); populateSelect("COLOR1", "color1","sign"); populateSelect("DELINEATOR", "delineator","sign"); populateSelect("ILLUM", "illum","sign"); populateSelect("ATTACHTYPE", "attachType","sign"); populateSelect("ATTACHLOC", "attachLoc","sign"); populateSelect("SITEOBS", "siteObs","sign"); populateSelect("SIGNSHAPE", "signShape","sign"); populateSelect("COLOR2", "color2","sign"); populateSelect("MUTCD", "mutcd","sign"); /* Show supports form */ } else if (severity === "1") { document.getElementById("supportForm").reset(); app.attributesModal.modal("show"); /* Enter your domain item and then the element to populate */ populateSelect("TYPE", "type","support"); populateSelect("SIZE_", "size","support"); populateSelect("MATERIAL", "material","support"); populateSelect("BASE", "base","support"); populateSelect("RATING", "rating","support"); } }); }; var stopCaptureRequest = function () { app.currentGeometry = null; }; // get attributes from form and submit var submitSupports = function () { alert(domClass.contains("attributesModal", "in")); var attributes = { // TODO: not sure if this is needed //requestreceived: null }; var currentDate = new Date(); // current date is defined but never used. var graphic; graphic = new Graphic(app.currentGeometry); query("#attributesModal input, #attributesModal select, #attributesModal textarea").forEach(function (formInput) { attributes[formInput.name] = formInput.value; }); // Form Validation - ensures that the values for the database are here if left blank if ((attributes.supportId === undefined) || (attributes.supportId === "")) { attributes.supportId = null; } if ((attributes.dateInv === undefined) || (attributes.dateInv === "")) { attributes.dateInv = null; } if ((attributes.addrCode === undefined) || (attributes.addrCode === "")) { attributes.addrCode = null; } graphic.setAttributes(attributes); stopCaptureRequest(); //console.log(attributes); app.supportLayer.applyEdits([graphic], null, null).then(function (response) { console.log(response); }); }; // get sign attributes from form and submit var submitSigns = function () { alert(domClass.contains("attributesSignModal", "in")); var attributes = { // TODO: not sure if this is needed //requestreceived: null }; var currentDate = new Date(); // current date is defined but never used. var graphic; graphic = new Graphic(app.currentGeometry); query("#attributesSignModal input, #attributesSignModal select, #attributesSignModal textarea").forEach(function(formInput) { attributes[formInput.name] = formInput.value; }); // Form validation - ensures that the values for the data are here if left blank if ((attributes.installed === undefined)|| (attributes.installed === "")) { attributes.installed = null; } if ((attributes.signId === undefined) || (attributes.signId === "")) { attributes.signId = null; } if ((attributes.supportId === undefined) || (attributes.supportId === "")) { attributes.supportId = null; } graphic.setAttributes(attributes); stopCaptureRequest(); //console.log(attributes); app.signLayer.applyEdits([graphic], null, null).then(function (response) { console.log(response); }); };
Solved! Go to Solution.
Try calling refresh() on the layers at the same lines where you call the console.log() statements above.
I once had this issue because I had a definition query on the layer I was editing, so although the edits were added they were not drawn in the map...thought it worth mentioning.
Try calling refresh() on the layers at the same lines where you call the console.log() statements above.
When I tagged you, I had an incident with support and originally was having a difficult time with it. They have told me since, that my code is refreshing the page on submit; not sure why. If I have a solution I will post it later. I just don't know what might cause a page to refresh without that code in JavaScript.
I realized one other thing, in the function:
I had to modify some code for the order of my data being entered but that worked. Thanks!