From ac721dc18e5bf997afc016a486fa4788f094b148 Mon Sep 17 00:00:00 2001 From: Jacek Kowalski <Jacek@jacekk.info> Date: Thu, 08 Dec 2016 22:47:26 +0000 Subject: [PATCH] Add request in progress indicator --- index.js | 41 ++++++++++++++++++++++++++++++++++------- 1 files changed, 34 insertions(+), 7 deletions(-) diff --git a/index.js b/index.js index 2e4dc3e..e522ba4 100644 --- a/index.js +++ b/index.js @@ -30,6 +30,8 @@ var alert_text = document.getElementById('alert-text'); var alert_close = document.getElementById('alert-close'); +var progress = document.getElementById('progress'); + var parseStatusBoarding = '>>>'; function parseStatus(status) { switch(status.status) { @@ -101,7 +103,6 @@ } function fail(message, more) { - if(refresh_timer) clearInterval(refresh_timer); if(times_timer) clearTimeout(times_timer); setText(alert_text, message); @@ -124,6 +125,18 @@ } } +function fail_hide() { + alert.style.display = 'none'; +} + +function loading_start() { + progress.style.display = 'block'; +} + +function loading_end() { + progress.style.display = 'none'; +} + function loadTimes(stopId = null, clearRoute = false) { if(!stopId) stopId = stop_id; if(!stopId) return; @@ -133,6 +146,7 @@ refresh_button.removeAttribute('disabled'); + loading_start(); times_xhr = $.get( ttss_base + '/passageInfo/stopPassages/stop' + '?stop=' + encodeURIComponent(stopId) @@ -170,13 +184,19 @@ addCellWithText(tr, data.actual[i].patternText); addCellWithText(tr, data.actual[i].direction); var status = parseStatus(data.actual[i]); - addCellWithText(tr, status); + var status_cell = addCellWithText(tr, status); var delay = parseDelay(data.actual[i]); - addCellWithText(tr, delay); + var delay_cell = addCellWithText(tr, delay); - if(status == parseStatusBoarding) tr.className = 'success'; - else if(parseInt(delay) > 9) tr.className = 'danger'; - else if(parseInt(delay) > 3) tr.className = 'warning'; + if(status == parseStatusBoarding) { + tr.className = 'success'; + status_cell.className = 'status-boarding'; + } else if(parseInt(delay) > 9) { + tr.className = 'danger'; + delay_cell.className = 'status-delayed'; + } else if(parseInt(delay) > 3) { + tr.className = 'warning'; + } times_table.appendChild(tr); } @@ -226,9 +246,10 @@ } startTimer(new Date()); + fail_hide(); times_timer = setTimeout(function(){ loadTimes(); }, ttss_refresh); - }).fail(fail_ajax); + }).fail(fail_ajax).always(loading_end); } function declinate(num, singular, plural) { @@ -308,6 +329,7 @@ e.preventDefault(); if(!stop_name_autocomplete.value) return; stop_id = stop_name_autocomplete.value; + window.location.hash = '#!' + stop_id; loadTimes(stop_id, true); }); @@ -318,6 +340,11 @@ alert_close.addEventListener('click', function(e) { alert.style.display = 'none'; }); + + if(window.location.hash.match(/^#![0-9]+$/)) { + stop_id = parseInt(window.location.hash.slice(2)); + loadTimes(stop_id); + } } init(); -- Gitblit v1.9.1