Just a feature request to have the attribute tables auto-refresh when their associated tables are set to a refresh interval.
A specific use case is a police/fire vehicle and call tracker where new calls and vehicles are updated on the map via a refresh interval on their layer. Currently, only the map updates, not the associated attribute table.
If you go into the \widgets\AttributeTable\Widget.js file and add
setInterval(lang.hitch(this, this.onRefreshButton),3000); // setInterval(expression,milliseconds);
I added it right after the refresh button is called around line 1492, but I am sure it could be called other places as well. It would look something like this.
this.refreshButton = new Button({ label: this.nls.refresh, showLabel: true, iconClass: "esriAttributeTableRefreshImage", onClick: lang.hitch(this, this.onRefreshButton) }); setInterval(lang.hitch(this, this.onRefreshButton),3000); // setInterval(expression,milliseconds); toolbar.addChild(this.refreshButton);
This calls the refresh of the attribute table every 3 seconds. I did notice that if the attribute table has lots of features or tables to load it takes a little longer. Also this will continue to refresh the attribute table even when it is closed.
This would be great to have in the AGOL version too.
With a little more work I am sure you could add it as a button to toggle the refresh option.
-Stan
Also if you did not want to see the little image flashing every time it reloads the just add this in the onRefreshButton function
this.showRefreshing(false);
like this around line 1555
onRefreshButton: function() { if (this.layersIndex > -1) { if (this.grids[this.layersIndex]) { this.grids[this.layersIndex].clearSelection(); } if (this.graphicsLayers[this.layersIndex]) { this.graphicsLayers[this.layersIndex].clear(); } this.setSelectedNumber(); if (this.config.layerInfos[this.layersIndex]) { this.config.layerInfos[this.layersIndex].loaded = false; this.startQuery(this.layersIndex, this.config.layerInfos[this.layersIndex].extent); } } this.showRefreshing(false); //added this },
-Stan