Select to view content in your preferred language

Attribute Table no longer working since update

145
1
Jump to solution
3 weeks ago
Labels (1)
ericsamson_tract
New Contributor III

Hey all,

 

Wondering if anyone else has been experiencing this. Both in my custom WAB applications and ones made from ArcGIS Online, attribute tables are not loading and I am met with a loading screen:

ericsamson_tract_0-1720037534689.png

 

The error that gets sent to the console says:

TypeError: Cannot read properties of undefined (reading 'replace')
at Object.<anonymous> (LayerInfoForDefaultService.js?wab_dv=2.30:426:48)
at init.js:65:207
at r (init.js:110:277)
at q (init.js:110:203)
at a.resolve (init.js:112:280)
at Object.setResponse (RequestBuffer.js?wab_dv=2.30:120:24)
at Object.<anonymous> (LayerInfoForMapService.js?wab_dv=2.30:705:34)
at init.js:65:207
at Object.traversal (LayerInfo.js?wab_dv=2.30:156:10)
at Object.traversal (LayerInfo.js?wab_dv=2.30:161:30) "TypeError: Cannot read properties of undefined (reading 'replace')\n at Object.<anonymous> (https://tract-lt14:3344/webappbuilder/apps/2/jimu.js/LayerInfos/LayerInfoForDefaultService.js?wab_dv=2.30:426:48)\n at https://js.arcgis.com/3.46/init.js:65:207\n at r (https://js.arcgis.com/3.46/init.js:110:277)\n at q (https://js.arcgis.com/3.46/init.js:110:203)\n at a.resolve (https://js.arcgis.com/3.46/init.js:112:280)\n at Object.setResponse (https://tract-lt14:3344/webappbuilder/apps/2/jimu.js/LayerInfos/RequestBuffer.js?wab_dv=2.30:120:24)\n at Object.<anonymous> (https://tract-lt14:3344/webappbuilder/apps/2/jimu.js/LayerInfos/LayerInfoForMapService.js?wab_dv=2.30:705:34)\n at https://js.arcgis.com/3.46/init.js:65:207\n at Object.traversal (https://tract-lt14:3344/webappbuilder/apps/2/jimu.js/LayerInfos/LayerInfo.js?wab_dv=2.30:156:10)\n at Object.traversal (https://tract-lt14:3344/webappbuilder/apps/2/jimu.js/LayerInfos/LayerInfo.js?wab_dv=2.30:161:30)\n ----------------------------------------\n rejected at c (https://js.arcgis.com/3.46/init.js:111:174)\n at r (https://js.arcgis.com/3.46/init.js:110:436)\n at q (https://js.arcgis.com/3.46/init.js:110:203)\n at a.resolve (https://js.arcgis.com/3.46/init.js:112:280)\n at Object.setResponse (https://tract-lt14:3344/webappbuilder/apps/2/jimu.js/LayerInfos/RequestBuffer.js?wab_dv=2.30:120:24)\n at Object.<anonymous> (https://tract-lt14:3344/webappbuilder/apps/2/jimu.js/LayerInfos/LayerInfoForMapService.js?wab_dv=2.30:705:34)\n at https://js.arcgis.com/3.46/init.js:65:207\n at Object.traversal (https://tract-lt14:3344/webappbuilder/apps/2/jimu.js/LayerInfos/LayerInfo.js?wab_dv=2.30:156:10)\n at Object.traversal (https://tract-lt14:3344/webappbuilder/apps/2/jimu.js/LayerInfos/LayerInfo.js?wab_dv=2.30:161:30)\n at Object.<anonymous> (https://tract-lt14:3344/webappbuilder/apps/2/jimu.js/LayerInfos/LayerInfoForMapService.js?wab_dv=2.30:694:16)\n ----------------------------------------\nError\n at then.e.then (https://js.arcgis.com/3.46/init.js:113:97)\n at Object.getLayerType (https://tract-lt14:3344/webappbuilder/apps/2/jimu.js/LayerInfos/LayerInfoForDefaultService.js?wab_dv=2.30:424:38)\n at Object.getSupportTableInfo (https://tract-lt14:3344/webappbuilder/apps/2/jimu.js/LayerInfos/LayerInfoForDefaultService.js?wab_dv=2.30:453:12)\n at https://tract-lt14:3344/webappbuilder/apps/2/widgets/AttributeTable/utils.js?wab_dv=2.30:365:29\n at Object.forEach (https://js.arcgis.com/3.46/init.js:73:69)\n at Object.<anonymous> (https://tract-lt14:3344/webappbuilder/apps/2/widgets/AttributeTable/utils.js?wab_dv=2.30:364:13)\n at https://js.arcgis.com/3.46/init.js:65:207\n at r (https://js.arcgis.com/3.46/init.js:110:277)\n at then.e.then (https://js.arcgis.com/3.46/init.js:113:152)\n at exports.readConfigLayerInfosFromMap (https://tract-lt14:3344/webappbuilder/apps/2/widgets/AttributeTable/utils.js?wab_dv=2.30:362:6)"
1 Solution

Accepted Solutions
ericsamson_tract
New Contributor III

For developer version people, I found a solution by altering the LayerInfoForDefaultService.js file located in:

jimu.js/LayerInfos/LayerInfoForDefaultService.js

 

You have to change the following function:

 

 

getLayerType: function() {
  var def = new Deferred();
  // if this.layerInfo is groupLayerInfo
  if(this.getSubLayers().length > 0) {
    def.resolve("GroupLayer");
  } else {
    this._getServiceDefinition().then(lang.hitch(this, function(serviceDefinition) {
      if (serviceDefinition) {
        def.resolve(serviceDefinition.type.replace(/\ /g, ''));
      } else {
        def.resolve(null);
      }
    }), function() {
      def.resolve(null);
    });
  }

  return def;
},

 

 

To:

 

 

getLayerType: function() {
  var def = new Deferred();
  // if this.layerInfo is groupLayerInfo
  if(this.getSubLayers().length > 0) {
    def.resolve("GroupLayer");
  } else {
    this._getServiceDefinition().then(lang.hitch(this, function(serviceDefinition) {
      if (serviceDefinition && serviceDefinition.type) {
        def.resolve(serviceDefinition.type.replace(/\ /g, ''));
      } else {
        console.warn('Service definition or type is undefined');
        def.resolve(null);
      }
    }), function(error) {
      console.error('Error getting service definition:', error);
      def.resolve(null);
    });
  }

  return def;
},

 

The servicedefinition is undefined when the code tries to access its type property. My fix just ignores it, it is still have trouble finding the servicedefinition when the attribute table or the select widgets are opened. But this allows them to work for now.

View solution in original post

0 Kudos
1 Reply
ericsamson_tract
New Contributor III

For developer version people, I found a solution by altering the LayerInfoForDefaultService.js file located in:

jimu.js/LayerInfos/LayerInfoForDefaultService.js

 

You have to change the following function:

 

 

getLayerType: function() {
  var def = new Deferred();
  // if this.layerInfo is groupLayerInfo
  if(this.getSubLayers().length > 0) {
    def.resolve("GroupLayer");
  } else {
    this._getServiceDefinition().then(lang.hitch(this, function(serviceDefinition) {
      if (serviceDefinition) {
        def.resolve(serviceDefinition.type.replace(/\ /g, ''));
      } else {
        def.resolve(null);
      }
    }), function() {
      def.resolve(null);
    });
  }

  return def;
},

 

 

To:

 

 

getLayerType: function() {
  var def = new Deferred();
  // if this.layerInfo is groupLayerInfo
  if(this.getSubLayers().length > 0) {
    def.resolve("GroupLayer");
  } else {
    this._getServiceDefinition().then(lang.hitch(this, function(serviceDefinition) {
      if (serviceDefinition && serviceDefinition.type) {
        def.resolve(serviceDefinition.type.replace(/\ /g, ''));
      } else {
        console.warn('Service definition or type is undefined');
        def.resolve(null);
      }
    }), function(error) {
      console.error('Error getting service definition:', error);
      def.resolve(null);
    });
  }

  return def;
},

 

The servicedefinition is undefined when the code tries to access its type property. My fix just ignores it, it is still have trouble finding the servicedefinition when the attribute table or the select widgets are opened. But this allows them to work for now.

0 Kudos