Giovanni,
Here is my code changes to get you back to where you were (i.e. changes not actually getting applied to FeatureServer service). I am not sure why the FeatureLayer.applyEdits is failing.
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="viewport" content="initial-scale=1, maximum-scale=1,user-scalable=no">
<title>Unique Value Renderer</title>
<link rel="stylesheet" href="https://js.arcgis.com/3.23/esri/css/esri.css">
<link rel="stylesheet" href="https://js.arcgis.com/3.23/dijit/themes/claro/claro.css">
<style>
html,
body,
#mapDiv {
height: 100%;
margin: 0;
padding: 0;
}
.templatePicker {
border: none;
}
.dj_ie .infowindow .window .top .right .user .content {
position: relative;
}
.dj_ie .simpleInfoWindow .content {
position: relative;
}
.esriAttributeInspector .atiLayerName {
display: none;
}
</style>
<script src="https://js.arcgis.com/3.23/"></script>
<script>
var map, updateFeature, uNames, unique;
require([
"esri/map", "esri/layers/FeatureLayer", "esri/dijit/AttributeInspector",
"esri/symbols/SimpleLineSymbol", "esri/symbols/SimpleFillSymbol",
"esri/renderers/UniqueValueRenderer", "esri/Color", "esri/config",
"esri/tasks/query", "dojo/_base/array", "dijit/registry", "dojo/query",
"dojo/store/Memory", "dojo/dom-construct", "dijit/form/Button",
"dojo/domReady!"
], function(
Map, FeatureLayer, AttributeInspector,
SimpleLineSymbol, SimpleFillSymbol,
UniqueValueRenderer, Color, esriConfig,
Query, array, registry, dojoQuery,
Memory, domConstruct, Button
) {
esriConfig.defaults.io.proxyUrl = "/proxy/";
map = new Map("mapDiv", {
basemap: "topo",
center: [-84.20, 33.78],
zoom: 11
});
var defaultSymbol = new SimpleFillSymbol().setStyle(SimpleFillSymbol.STYLE_NULL);
defaultSymbol.outline.setStyle(SimpleLineSymbol.STYLE_NULL);
var renderer = new UniqueValueRenderer(defaultSymbol, "ES_Name");
renderer.addValue("North", new SimpleFillSymbol().setColor(new Color([255, 0, 0, 0.5])));
renderer.addValue("South", new SimpleFillSymbol().setColor(new Color([0, 255, 0, 0.5])));
renderer.addValue("East", new SimpleFillSymbol().setColor(new Color([0, 0, 255, 0.5])));
renderer.addValue("West", new SimpleFillSymbol().setColor(new Color([255, 0, 255, 0.5])));
renderer.addValue("NWest", new SimpleFillSymbol().setColor(new Color([255, 255, 0, 0.5])));
renderer.addValue("SEast", new SimpleFillSymbol().setColor(new Color([0, 255, 255, 0.5])));
renderer.addValue("NEast", new SimpleFillSymbol().setColor(new Color([255, 255, 0, 0.5])));
renderer.addValue("SWest", new SimpleFillSymbol().setColor(new Color([0, 0, 0, 0.5])));
var blocks = new FeatureLayer("http://gis.dekalb.k12.ga.us/arcgis_webadapter/rest/services/Redistricting/ES_Areas_Redist_Test/Featu...", {
mode: FeatureLayer.MODE_SNAPSHOT,
outFields: ["*"]
});
var selectionSymbol = new SimpleFillSymbol().setColor(new Color([0,255,0,0.5]));
blocks.setSelectionSymbol(selectionSymbol);
blocks.setRenderer(renderer);
map.addLayers([blocks]);
map.on("layers-add-result", initSelectToolbar);
map.infoWindow.on('show', function(evt) {
setTimeout(function() {
var node = dojoQuery('.atiField', evt.domNode);
if (!node) {
return;
}
var selectWid = registry.getEnclosingWidget(node[1]);
var oNames = [];
array.map(uNames, function(fName){
oNames.push({id: fName, name: fName});
});
var data = {
label: 'name',
items: oNames
};
var store = new Memory({
data: data
});
selectWid.setAttribute("store", store);
}, 800);
});
function initSelectToolbar(evt) {
var blocks = evt.layers[0].layer;
var selectQuery = new Query();
map.on("click", function(evt) {
map.infoWindow.hide();
selectQuery.outFields = ["*"];
selectQuery.geometry = evt.mapPoint;
selectQuery.returnGeometry = true;
blocks.selectFeatures(selectQuery, FeatureLayer.SELECTION_NEW, function(features) {
uNames = [];
if (features.length > 0) {
var attrQuery = new Query();
attrQuery.geometry = features[0].geometry;
attrQuery.outFields = ["ES_Name"];
attrQuery.returnGeometry = false;
attrQuery.spatialRelationship = Query.SPATIAL_REL_TOUCHES;
blocks.queryFeatures(attrQuery, function(fset) {
array.map(fset.features, function(feat) {
var fname = feat.attributes.ES_Name;
if(uNames.indexOf(fname) === -1){
uNames.push(fname);
}
});
});
updateFeature = features[0];
map.infoWindow.setTitle(features[0].getLayer().name);
map.infoWindow.show(evt.screenPoint, map.getInfoWindowAnchor(evt.screenPoint));
} else {
map.infoWindow.hide();
}
});
});
map.infoWindow.on("hide", function() {
blocks.clearSelection();
});
var layerInfos = [{
'featureLayer': blocks,
'showAttachments': false,
'isEditable': true,
'fieldInfos': [{
'fieldName': 'ES_Name',
'isEditable': false,
'label': 'Current School:'
},
{
'fieldName': 'ES_Name',
'isEditable': true,
'label': 'Proposed School:'
}
]
}];
var attInspector = new AttributeInspector({
layerInfos: layerInfos
}, domConstruct.create("div"));
var saveButton = new Button({
label: "Apply",
"class": "saveButton"
}, domConstruct.create("div"));
domConstruct.place(saveButton.domNode, attInspector.deleteBtn.domNode, "after");
saveButton.on("click", function() {
updateFeature.getLayer().applyEdits(null, [updateFeature], null, function(result){
console.log(result);
map.infoWindow.hide();
}, function(error){
console.log(error);
});
});
attInspector.on("attribute-change", function(evt) {
updateFeature.attributes[evt.fieldName] = evt.fieldValue;
});
map.infoWindow.setContent(attInspector.domNode);
map.infoWindow.resize(350, 240);
}
});
</script>
</head>
<body class="claro">
<div id="mapDiv"></div>
</body>
</html>