function AutoRefreshModule(layers) { // Properties var layers = layers; var refreshSettings = JSON.parse('{"refreshGroups":[{"layerList":[99,111],"refreshTimeSeconds":10},{"layerList":[32,47,64,78,101,109,110,112,116,117],"refreshTimeSeconds":50},{"layerList":[41,42,169],"refreshTimeSeconds":120}]}'); // Public methods this.bootModule = bootModule; var self = this; // -- IMPLEMENTATION -- /////////////////// function bootModule() { for (var i = 0; i < refreshSettings.refreshGroups.length; i++) { bootIntervals(refreshSettings.refreshGroups[i].layerList, refreshSettings.refreshGroups[i].refreshTimeSeconds); } } function bootIntervals(layerList, refreshTime) { window.setInterval(function () { for (var i = 0; i < layers.length; i++) { var layer = layers[i]; if (layerList.indexOf(layer.id) > -1 && layer.is_loaded) { layer.service.hide(); layer.service.show(); } } }, refreshTime * 1000); } } // Self invokable boot function (function(){ var autoRefreshIntervalCounter = 0; // boot timer waits for layers to be available to inject changes into the interface // timer will kill itself if no layers are available after 5 seconds var autoRefreshInterval = setInterval(function() { if(document.readyState === 'complete') { if (main !== undefined && main.layers !== undefined && main.layers.list !== undefined) { clearInterval(autoRefreshInterval); main.autoRefreshModule = new AutoRefreshModule(main.layers.list); main.autoRefreshModule.bootModule(); return; } } else { autoRefreshIntervalCounter++; } if (autoRefreshIntervalCounter == 50) { clearInterval(autoRefreshInterval); } }, 100); })();