// STATUS BAR /////////////////////////////////////// // gives user feedback about pending operations. Draws current status // to website. Updates info in layer chooser. window.renderUpdateStatusTimer_ = undefined; window.renderUpdateStatus = function() { var progress = 1; // portal/limk level display var zoom = map.getZoom(); zoom = getDataZoomForMapZoom(zoom); var tileParams = getMapZoomTileParameters(zoom); var t = ''; if (tileParams.hasPortals) { // zoom level includes portals (and also all links/fields) if(!window.isSmartphone()) // space is valuable t += 'portals: '; if(tileParams.level === 0) t += 'all'; else t += 'L'+tileParams.level+(tileParams.level<8?'+':'') + ''; } else { if(!window.isSmartphone()) // space is valuable t += 'links: '; if (tileParams.minLinkLength > 0) t += '>'+(tileParams.minLinkLength>1000?tileParams.minLinkLength/1000+'km':tileParams.minLinkLength+'m')+''; else t += 'all links'; } t +=''; // map status display t += ' map: '; if (window.mapDataRequest) { var status = window.mapDataRequest.getStatus(); // status.short - short description of status // status.long - longer description, for tooltip (optional) // status.progress - fractional progress (from 0 to 1; -1 for indeterminate) of current state (optional) if (status.long) t += ''+status.short+''; else t += ''+status.short+''; if (status.progress !== undefined) { if(status.progress !== -1) t += ' '+Math.floor(status.progress*100)+'%'; progress = status.progress; } } else { // no mapDataRequest object - no status known t += '...unknown...'; } t += ''; //request status if (window.activeRequests.length > 0) t += ' ' + window.activeRequests.length + ' requests'; if (window.failedRequestCount > 0) t += ' ' + window.failedRequestCount + ' failed' //it's possible that updating the status bar excessively causes some performance issues. so rather than doing it //immediately, delay it to the next javascript event loop, cancelling any pending update // will also cause any browser-related rendering to occur first, before the status actually updates if (window.renderUpdateStatusTimer_) clearTimeout(window.renderUpdateStatusTimer_); window.renderUpdateStatusTimer_ = setTimeout ( function() { window.renderUpdateStatusTimer_ = undefined; $('#innerstatus').html(t); //$('#updatestatus').click(function() { startRefreshTimeout(10); }); //. '; if(progress == 1 && window.activeRequests.length > 0) { // we don't know the exact progress, but we have requests (e.g. chat) running, so show it as indeterminate. progress = -1; } if (typeof android !== 'undefined' && android && android.setProgress) android.setProgress(progress); }, 0); }