attribute edit

3763
14
Jump to solution
08-31-2015 03:08 AM
SatyanarayanaNarmala
New Contributor III

Hi all,

I am trying to implement attribute edit using attribute inspector, the service is displaying but pop up info not getting displayed.

If the problem is with the proxy setting, can anybody help with it. i am using IIS server.

here is the code

<!DOCTYPE html>

<html>

  <head>

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">

    <!--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>Editable FeatureLayer in Selection Only Mode with Attribute Inspector</title>

    <link rel="stylesheet" href="http://js.arcgis.com/3.14/dijit/themes/claro/claro.css">

    <link rel="stylesheet" href="http://js.arcgis.com/3.14/esri/css/esri.css">

    <style>

      html, body {

        height: 100%; width: 100%;

        margin: 0;

        padding: 0;

        overflow: hidden;

      }

      #mapDiv{

        margin: 0;

        padding:0;

      }

      #detailPane{

        height:20px;

        color:#570026;

        font-size:12pt;

        font-weight:600;

        overflow:hidden;

      }

      .dj_ie .infowindow .window .top .right .user .content { position: relative; }

      .dj_ie .simpleInfoWindow .content {position: relative;}

      .esriAttributeInspector {height:100px;}

      .esriAttributeInspector .atiLayerName {display:none;}

      .esriAttributeInspector .atiButton{

        margin-top:1px;

        margin-right:45px;

       }

    </style>

   

    <script src="http://js.arcgis.com/3.14/"></script>

    <script>

      var map;

      var updateFeature;

     

      require([

        "esri/map",

        "esri/layers/FeatureLayer",

        "esri/dijit/AttributeInspector",

        "esri/symbols/SimpleLineSymbol",

        "esri/symbols/SimpleFillSymbol",

        "esri/Color",

        "esri/layers/ArcGISDynamicMapServiceLayer",

        "esri/config",

        "esri/tasks/query",

        "dojo/query",

        "dojo/parser",

        "dojo/dom-construct",

        "dijit/form/Button",

        "dijit/layout/BorderContainer", "dijit/layout/ContentPane", "dojo/domReady!"

      ], function(

        Map, FeatureLayer, AttributeInspector,

        SimpleLineSymbol, SimpleFillSymbol, Color,

        ArcGISDynamicMapServiceLayer, esriConfig,

        Query,dojoQuery,

        parser, domConstruct, Button

      ) {

        parser.parse();

        // refer to "Using the Proxy Page" for more information:  https://developers.arcgis.com/javascript/jshelp/ags_proxy.html

   // esriConfig.defaults.io.proxyUrl = "/proxy/";

        map = new Map("mapDiv", {

          basemap: "streets",

          center: [78.20, 19.00],

          zoom: 11

        });

        map.on("layers-add-result", initSelectToolbar);

        var petroFieldsMSL = new ArcGISDynamicMapServiceLayer("http://gisserver.cgg.gov.in/arcgis/rest/services/IRR/srsp_canal_WRK1/MapServer");

        petroFieldsMSL.setDisableClientCaching(true);

        map.addLayer(petroFieldsMSL);

        var petroFieldsFL = new FeatureLayer("http://gisserver.cgg.gov.in/arcgis/rest/services/IRR/srsp_canal_WRK1/FeatureServer/1", {

          mode: FeatureLayer.MODE_SELECTION,

          outFields: ["objectid","code", "codename", "length", "description", "status_work", "la_status", "ip_status"]

        });

        var selectionSymbol = new SimpleFillSymbol(

            SimpleFillSymbol.STYLE_NULL,

            new SimpleLineSymbol(

                "solid",

                new Color("yellow"),

                2

            ),

            null

        );

        petroFieldsFL.setSelectionSymbol(selectionSymbol);

        petroFieldsFL.on("edits-complete", function() {

          petroFieldsMSL.refresh();

        });

        map.addLayers([petroFieldsFL]);

        function initSelectToolbar(evt) {

          var petroFieldsFL = evt.layers[1].layer;

          var selectQuery = new Query();

          map.on("click", function(evt) {

            selectQuery.geometry = evt.mapPoint;

            petroFieldsFL.selectFeatures(selectQuery, FeatureLayer.SELECTION_NEW, function(features) {

              if (features.length > 0) {

                //store the current feature

                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() {

            petroFieldsFL.clearSelection();

          });

          var layerInfos = [

            {

              'featureLayer': petroFieldsFL,

              'showAttachments': false,

              'isEditable': true,

              'fieldInfos': [

                {'fieldName': 'objectid', 'isEditable': false, 'objectid': 'objectid:'},

                {'fieldName': 'code', 'isEditable': false, 'CANAL CODE': 'Acreage:'},

                {'fieldName': 'codename', 'isEditable': false, 'label': 'CANAL NAME:'},

                {'fieldName': 'length', 'isEditable': false, 'label': 'LENGTH IN METERS:'},

                {'fieldName': 'description', 'isEditable': false, 'label': 'CANAL DESCRIPTION:'},

                {'fieldName': 'status_work', 'isEditable': true, 'tooltip': 'WORK PROGRESS', 'label': 'WORK PROGRESS STATUS:'},

                {'fieldName': 'la_status', 'isEditable': true, 'tooltip': 'LAND AQUISITION', 'label': 'LAND AQUISITION STATUS:'},

                {'fieldName': 'ip_status', 'isEditable': true, 'tooltip': 'IP CREATED', 'label': 'IP CREATED STATUS:'}

              ]

            }

          ];

          var attInspector = new AttributeInspector({

            layerInfos: layerInfos

          }, domConstruct.create("div"));

          //add a save button next to the delete button

          var saveButton = new Button({ label: "Save", "class": "saveButton"},domConstruct.create("div"));

          domConstruct.place(saveButton.domNode, attInspector.deleteBtn.domNode, "after");

          saveButton.on("click", function() {

            updateFeature.getLayer().applyEdits(null, [updateFeature], null);

          });

          attInspector.on("attribute-change", function(evt) {

            //store the updates to apply when the save button is clicked

            updateFeature.attributes[evt.fieldName] = evt.fieldValue;

          });

          attInspector.on("next", function(evt) {

            updateFeature = evt.feature;

            console.log("Next " + updateFeature.attributes.objectid);

          });

          attInspector.on("delete", function(evt) {

            evt.feature.getLayer().applyEdits(null, null, [evt.feature]);

            map.infoWindow.hide();

          });

          map.infoWindow.setContent(attInspector.domNode);

          map.infoWindow.resize(350, 240);

        }

      });

    </script>

  </head>

 

  <body class="claro">

    <div data-dojo-type="dijit/layout/BorderContainer" data-dojo-props="design:'headline', gutters:false" style="width:100%;height:100%;">

      <div id="detailPane" data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region:'top'">

        Click a field to display the attribute inspector with customized fields.

      </div>

      <div data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region:'center'" id="mapDiv"></div>

    </div>

  </body>

</html>

0 Kudos
14 Replies
bharathreddy
Occasional Contributor

Object id in that layer.Below is the code.please help

<!DOCTYPE html>

<html>

  <head>

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">

    <!--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>Editable FeatureLayer in Selection Only Mode with Attribute Inspector</title>

    <link rel="stylesheet" href="http://js.arcgis.com/3.14/dijit/themes/claro/claro.css">

    <link rel="stylesheet" href="http://js.arcgis.com/3.14/esri/css/esri.css">

    <style>

      html, body {

        height: 100%; width: 100%;

        margin: 0;

        padding: 0;

        overflow: hidden;

      }

      #mapDiv{

        margin: 0;

        padding:0;

      }

      #detailPane{

        height:20px;

        color:#570026;

        font-size:12pt;

        font-weight:600;

        overflow:hidden;

      }

      .dj_ie .infowindow .window .top .right .user .content { position: relative; }

      .dj_ie .simpleInfoWindow .content {position: relative;}

      .esriAttributeInspector {height:100px;}

      .esriAttributeInspector .atiLayerName {display:none;}

      .esriAttributeInspector .atiButton{

        margin-top:1px;

        margin-right:45px;

       }

    </style>

 

    <script src="http://js.arcgis.com/3.14/"></script>

    <script>

        var map;

        var updateFeature;

        require([

        "esri/map",

        "esri/layers/FeatureLayer",

        "esri/dijit/AttributeInspector",

        "esri/symbols/SimpleLineSymbol",

        "esri/symbols/SimpleFillSymbol",

        "esri/Color",

        "esri/layers/ArcGISDynamicMapServiceLayer",

        "esri/config",

        "esri/tasks/query",

        "dojo/query",

        "dojo/parser",

        "dojo/dom-construct",

        "dijit/form/Button",

        "esri/graphic",

        "esri/geometry/Circle",

        "dijit/layout/BorderContainer", "dijit/layout/ContentPane", "dojo/domReady!"

      ], function (

        Map, FeatureLayer, AttributeInspector,

        SimpleLineSymbol, SimpleFillSymbol, Color,

        ArcGISDynamicMapServiceLayer, esriConfig,

        Query, dojoQuery,

        parser, domConstruct, Button, Graphic, Circle

      ) {

          parser.parse();

          // refer to "Using the Proxy Page" for more information:  https://developers.arcgis.com/javascript/jshelp/ags_proxy.html

          // esriConfig.defaults.io.proxyUrl = "/proxy/";

          map = new Map("mapDiv", {

//              basemap: "streets",

//              center: [78.20, 19.00],

//              zoom: 11

          });

          map.on("layers-add-result", initSelectToolbar);

          var petroFieldsMSL = new ArcGISDynamicMapServiceLayer("http://localhost:6080/arcgis/rest/services/editing/MapServer");

          petroFieldsMSL.setDisableClientCaching(true);

          map.addLayer(petroFieldsMSL);

          var petroFieldsFL = new FeatureLayer("http://localhost:6080/arcgis/rest/services/editing/FeatureServer/1", {

              mode: FeatureLayer.MODE_SELECTION,

              outFields: ["CJ_FDR_ID", "CJ_DONE_BY", "CJ_CIR_CODE", "CJ_UID", "CJ_CIR_CODE", "CJ_TOWN_ID", "CJ_LINE_CODE", "CJ_PUID"]

          });

          var selectionSymbol = new SimpleFillSymbol(

            SimpleFillSymbol.STYLE_NULL,

            new SimpleLineSymbol(

                "solid",

                new Color("yellow"),

                2

            ),

            null

        );

          petroFieldsFL.setSelectionSymbol(selectionSymbol);

          var circleSymb = new SimpleFillSymbol(

          SimpleFillSymbol.STYLE_NULL,

          new SimpleLineSymbol(

            SimpleLineSymbol.STYLE_SHORTDASHDOTDOT,

            new Color([105, 105, 105]),

            2

          ), new Color([255, 255, 0, 0.25])

        );

          var circle;

          petroFieldsFL.on("edits-complete", function () {

              petroFieldsMSL.refresh();

          });

          map.addLayers([petroFieldsFL]);

          function initSelectToolbar(evt) {

              //var petroFieldsFL = evt.layers[1].layer;

              var selectQuery = new Query();

              map.on("click", function (evt) {

                  circle = new Circle({

                      center: evt.mapPoint,

                      geodesic: true,

                      radius: 0.2,

                      radiusUnit: "esriMiles"

                  });

                  map.graphics.clear();

                  map.infoWindow.hide();

                  var graphic = new Graphic(circle, circleSymb);

                  map.graphics.add(graphic);

                  selectQuery.geometry = circle.getExtent(); ;

                  //selectQuery.geometry = evt.mapPoint;

                  petroFieldsFL.selectFeatures(selectQuery, FeatureLayer.SELECTION_NEW, function (features) {

                      if (features.length > 0) {

                          //store the current feature

                          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 () {

                  petroFieldsFL.clearSelection();

              });

              var layerInfos = [

            {

                'featureLayer': petroFieldsFL,

                'showAttachments': false,

                'isEditable': true,

                'fieldInfos': [

                { 'fieldName': 'CJ_FDR_ID', 'isEditable': false },

                { 'fieldName': 'CJ_DONE_BY', 'isEditable': false },

                { 'fieldName': 'CJ_CIR_CODE', 'isEditable': false },

                { 'fieldName': 'CJ_UID', 'isEditable': false },

                { 'fieldName': 'CJ_CIR_CODE', 'isEditable': false },

                { 'fieldName': 'CJ_TOWN_ID ', 'isEditable': true },

                { 'fieldName': 'CJ_LINE_CODE', 'isEditable': true },

                { 'fieldName': 'CJ_PUID', 'isEditable': true }

              ]

            }

          ];

              var attInspector = new AttributeInspector({

                  layerInfos: layerInfos

              }, domConstruct.create("div"));

              //add a save button next to the delete button

              var saveButton = new Button({ label: "Save", "class": "saveButton" }, domConstruct.create("div"));

              domConstruct.place(saveButton.domNode, attInspector.deleteBtn.domNode, "after");

              saveButton.on("click", function () {

                  updateFeature.getLayer().applyEdits(null, [updateFeature], null);

              });

              attInspector.on("attribute-change", function (evt) {

                  //store the updates to apply when the save button is clicked

                  updateFeature.attributes[evt.fieldName] = evt.fieldValue;

              });

              attInspector.on("next", function (evt) {

                  updateFeature = evt.feature;

                  console.log("Next " + updateFeature.attributes.objectid);

              });

              attInspector.on("delete", function (evt) {

                  evt.feature.getLayer().applyEdits(null, null, [evt.feature]);

                  map.infoWindow.hide();

              });

              map.infoWindow.setContent(attInspector.domNode);

              map.infoWindow.resize(350, 240);

          }

      });

    </script>

  </head>

  <body class="claro">

    <div data-dojo-type="dijit/layout/BorderContainer" data-dojo-props="design:'headline', gutters:false" style="width:100%;height:100%;">

      <div id="detailPane" data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region:'top'">

        Click a field to display the attribute inspector with customized fields.

      </div>

      <div data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region:'center'" id="mapDiv"></div>

    </div>

  </body>

</html>

0 Kudos
HerdisGudbrandsdottir
New Contributor III

Hi, I would like to see the fields in your featurelayer, so go to this address in your browser:

http://localhost:6080/arcgis/rest/services/editing/FeatureServer/1?f=json

And copy/paste the json in here.

0 Kudos
bharathreddy
Occasional Contributor

Goodaftn,

I couldnt open above url but I can show the fields.Below are the fields

HasZ: false

HasM: false

Has Attachments: false

HTML Popup Type: esriServerHTMLPopupTypeAsHTMLText

Type ID Field:

Fields:

  • OBJECTID ( type: esriFieldTypeOID , alias: OBJECTID , editable: false , nullable: false )
  • CJ_ACODE ( type: esriFieldTypeString , alias: CJ_ACODE , editable: true , nullable: true , length: 20 )
  • CJ_EXT_CODE ( type: esriFieldTypeString , alias: EXTISTING JOINT CODE , editable: true , nullable: true , length: 50 )
  • CJ_CLASSIFICATION ( type: esriFieldTypeString , alias: CLASSIFICATION , editable: true , nullable: true , length: 20 , Coded Values: [Straight: Straight] , [D/T: D/T] )
  • CJ_FDR_NAME ( type: esriFieldTypeString , alias: FEEDER NAME , editable: true , nullable: true , length: 20 )
  • CJ_GUARANTEE ( type: esriFieldTypeDate , alias: GUARANTEE PERIOD , editable: true , nullable: true , length: 36 )
  • CJ_DEPTH ( type: esriFieldTypeString , alias: DEPTH OF CABLE JOINT , editable: true , nullable: true , length: 30 )
  • CJ_VOLT_KV ( type: esriFieldTypeDouble , alias: VOLTAGE IN KV , editable: true , nullable: true , Coded Values: [400: 400] , [230: 230] , [110: 110] , ...6 more... )
  • CJ_SS_ID ( type: esriFieldTypeString , alias: SS CODE , editable: true , nullable: true , length: 30 )
  • CJ_SDIV_NAME ( type: esriFieldTypeString , alias: CJ_SDIV_NAME , editable: true , nullable: true , length: 30 )
  • CJ_MAKE ( type: esriFieldTypeString , alias: MAKE , editable: true , nullable: true , length: 20 , Coded Values: [Raychem: Raychem] , [Vachem: Vachem] , [Hari: Hari] , ...7 more... )
  • CJ_TYPE ( type: esriFieldTypeString , alias: TYPE , editable: true , nullable: true , length: 20 , Coded Values: [Tapex: Tapex] , [HS: HS] , [M Seal: M Seal] , ...4 more... )
  • CJ_FROM_LINE_ID ( type: esriFieldTypeString , alias: FROM LINE CODE , editable: true , nullable: true , length: 30 )
  • CJ_DT_ID ( type: esriFieldTypeString , alias: DT INTERNAL ID , editable: true , nullable: true , length: 30 )
  • CJ_STATUS ( type: esriFieldTypeString , alias: STATUS , editable: true , nullable: true , length: 20 , Coded Values: [In Service: In Service] , [Out of Service: Out of Service] )
  • ENABLED ( type: esriFieldTypeSmallInteger , alias: Enabled , editable: true , nullable: true , Coded Values: [0: False] , [1: True] )
  • CJ_FM_FDR_ID ( type: esriFieldTypeString , alias: CJ_FM_FDR_ID , editable: true , nullable: true , length: 50 )
  • CJ_FM_FDR_ID2 ( type: esriFieldTypeString , alias: CJ_FM_FDR_ID2 , editable: true , nullable: true , length: 50 )
  • CJ_FM_FDR_INFO ( type: esriFieldTypeInteger , alias: CJ_FM_FDR_INFO , editable: true , nullable: true )
  • CJ_FM_ET_WEIGHT ( type: esriFieldTypeInteger , alias: CJ_FM_ET_WEIGHT , editable: true , nullable: true )
  • CJ_DONE_ON ( type: esriFieldTypeString , alias: JOINT DONE ON , editable: true , nullable: true , length: 30 )
  • CJ_SS_SEC_NAME ( type: esriFieldTypeString , alias: CJ_SS_SEC_NAME , editable: true , nullable: true , length: 30 )
  • CJ_PUID ( type: esriFieldTypeString , alias: CJ_PUID , editable: true , nullable: true , length: 30 )
  • CJ_VIRTUAL_REAL ( type: esriFieldTypeString , alias: VIRTUAL/REAL , editable: true , nullable: true , length: 10 , Coded Values: [Real: Real] , [Virtual: Virtual] )
  • CJ_TO_LINE_ID ( type: esriFieldTypeString , alias: TO LINE CODE , editable: true , nullable: true , length: 30 )
  • CJ_LINE_CODE ( type: esriFieldTypeString , alias: CJ_LINE_CODE , editable: true , nullable: true , length: 30 )
  • CJ_TOWN_ID ( type: esriFieldTypeString , alias: TOWN CODE , editable: true , nullable: true , length: 3 )
  • CJ_ORG_ID ( type: esriFieldTypeString , alias: CJ_ORG_ID , editable: true , nullable: true , length: 20 )
  • CJ_UID ( type: esriFieldTypeString , alias: CJ_UID , editable: true , nullable: true , length: 30 )
  • CJ_ID ( type: esriFieldTypeString , alias: INTERNAL ID , editable: true , nullable: true , length: 30 )
  • CJ_REMARKS ( type: esriFieldTypeString , alias: REMARKS , editable: true , nullable: true , length: 255 )
  • CJ_FM_OP_VOLTAGE ( type: esriFieldTypeInteger , alias: CJ_FM_OP_VOLTAGE , editable: true , nullable: true )
  • CJ_FM_PHASE_DESG ( type: esriFieldTypeInteger , alias: CJ_FM_PHASE_DESG , editable: true , nullable: true )
  • CJ_FM_PARENT_SRC_ID ( type: esriFieldTypeDouble , alias: CJ_FM_PARENT_SRC_ID , editable: true , nullable: true )
  • CJ_REGION_ID ( type: esriFieldTypeString , alias: REGION_ID , editable: true , nullable: true , length: 30 )
  • CJ_CIR_CODE ( type: esriFieldTypeString , alias: CJ_CIR_CODE , editable: true , nullable: true , length: 10 )
  • CJ_SS_SEC_ID ( type: esriFieldTypeInteger , alias: SS SECTION ID , editable: true , nullable: true )
  • CJ_CATEGORY ( type: esriFieldTypeString , alias: CJ_CATEGORY , editable: true , nullable: true , length: 30 )
  • CJ_AIN ( type: esriFieldTypeString , alias: CJ_AIN , editable: true , nullable: true , length: 30 )
  • CJ_DONE_BY ( type: esriFieldTypeString , alias: CJ_DONE_BY , editable: true , nullable: true , length: 30 )
  • CJ_CIRCUIT_NO ( type: esriFieldTypeInteger , alias: CJ_CIRCUIT_NO , editable: true , nullable: true )
  • CJ_FDR_ID ( type: esriFieldTypeString , alias: FEEDER CODE , editable: true , nullable: true , length: 30 )
  • CJ_DISTANCE_M ( type: esriFieldTypeString , alias: CJ_DISTANCE_M , editable: true , nullable: true , length: 1073741822 )
0 Kudos
HerdisGudbrandsdottir
New Contributor III

One thing I can say is that fields are case-sensitive, so try replacing 'objectid' with 'OBJECTID' in your code, or even better use petroFieldsFL.objectIdField to reference the field. E.g.: updateFeature.attributes[petroFieldsFL.objectIdField]

But it will not do the trick, since it is only called directly in your code in a console.log statement.

A test: Do you get an error if you specify OBJECTID as outfield?

FeatureLayer("http://localhost:6080/arcgis/rest/services/editing/FeatureServer/1", {

              mode: FeatureLayer.MODE_SELECTION,

outFields: ["OBJECTID","CJ_FDR_ID", "CJ_DONE_BY", "CJ_CIR_CODE", "CJ_UID", "CJ_CIR_CODE", "CJ_TOWN_ID", "CJ_LINE_CODE", "CJ_PUID"]

0 Kudos
bharathreddy
Occasional Contributor

GoodMorning,

THank u very much herids

0 Kudos