Best Way to Refresh CSV Layers???

2486
0
08-04-2014 05:06 AM
CharlesGant
New Contributor III

All,

I have been working on this for what seems like 6 months now.  I CANNOT get my CSV layers to refresh correctly.  I have built numerous functions with multiple combinations of code and the behavior is just not what I want, or does not work at all.

I have a series of functions that construct and add CSVLayers to the map.  Code is below for one.  The script runs all of them on load, then I use buttons to .show() or .hide() on command.  I need the layers to refresh themselves with new data from my web server every three minutes.  I have also tried using the refreshInterval property, without any luck.  Not only do I need the layers to refresh, I would like to have which ever layer is visible (if one of the CSV Layers is visible), remain visible.  If none are visible, then just refresh in the background. 

   var csv60min;
   var csv60mintextLayer;
   function csv60minfunc () {
   csv60min = new CSVLayer("symHydroViewer/data/60query.csv",{id:"csv60min"});
   csv60min.on("update-end", function(results){
   csv60mintextLayer = new GraphicsLayer({id:"csv60mintextLayer"});              
   arrayUtils.forEach(results.target.graphics, function(feature, index){
   var lid =  feature.attributes.lid;
   var name =  feature.attributes.name;
   var value = feature.attributes.value;
   var ffg = feature.attributes.ffg;
   var ratio = feature.attributes.ratio;
   var validtime = feature.attributes.obstime;
   var attr = {"Location ID":lid,"Location Name":name,"Obs Value":value,"FFG":ffg,"Ratio of FFG":ratio,"Obs Valid Time":validtime};                                                                         
   var geom = feature.geometry;
   var displayText = feature.attributes.value;
   var displayTextRatio = feature.attributes.ratio;
   coloralt = ratioColor(displayTextRatio);
   var font = new Font("12pt",Font.STYLE_NORMAL, Font.VARIANT_NORMAL,Font.WEIGHT_BOLD,"Helvetica");
   var textSymbol = new TextSymbol(displayText,font,new Color(coloralt));  
   csv60mintextLayer.add(new Graphic(geom, textSymbol, attr));});                  
   var infoTemplate = new InfoTemplate("Attributes", "${*}");  
   csv60mintextLayer.setInfoTemplate(infoTemplate);
   map.addLayer(csv60mintextLayer);
   csv60mintextLayer.hide();
   });                          
   var blank = new Color([0, 0, 0, 0]); // hex is #ff4500
   var marker = new SimpleMarkerSymbol("solid", 0, null, blank);
   var renderer = new SimpleRenderer(marker);
   csv60min.setRenderer(renderer);
   map.addLayer(csv60min);
   csv60min.hide();
   return [csv60min,csv60mintextLayer]
   }
0 Kudos
0 Replies