diff options
Diffstat (limited to 'public/static/js/collapse.js')
-rw-r--r-- | public/static/js/collapse.js | 77 |
1 files changed, 51 insertions, 26 deletions
diff --git a/public/static/js/collapse.js b/public/static/js/collapse.js index 9fa2e89..0d4652b 100644 --- a/public/static/js/collapse.js +++ b/public/static/js/collapse.js @@ -4,6 +4,7 @@ function reload_app() { // Until then, we guard it by only reloading whin moreinfo is not expanded. if ($('.expanded-moreinfo').length == 0) { $.get(window.location.href, {ajax: 1}, function(data) { + // TODO check expanded-moreinfo again here (until the issue itself has been resolved) $('div.app > ul').html(data); dbf_reg_handlers(); setTimeout(reload_app, 60000); @@ -15,17 +16,13 @@ function reload_app() { } } -function dbf_reg_handlers() { - $('div.app > ul > li').click(function() { - const trainElem = $(this); - const routeprev = trainElem.data('routeprev').split('|'); - const routenext = trainElem.data('routenext').split('|'); - const moreinfo = trainElem.data('moreinfo').split('|'); - const this_href = window.location.href; - const station = $('div.app').data('station'); - history.pushState({'page':'traindetail','train':trainElem.data('no')}, 'test', '/z/' + trainElem.data('train') + '/' + station); - $('.moreinfo').each(function() { - var infoElem = $(this); +function dbf_show_moreinfo(trainElem, keep_old) { + const routeprev = trainElem.data('routeprev').split('|'); + const routenext = trainElem.data('routenext').split('|'); + const moreinfo = trainElem.data('moreinfo').split('|'); + $('.moreinfo').each(function() { + const infoElem = $(this); + if (!keep_old) { $('.moreinfo .train-line').removeClass('bahn sbahn fern ext').addClass(trainElem.data('linetype')); $('.moreinfo .train-line').text(trainElem.data('line')); $('.moreinfo .train-no').text(trainElem.data('no')); @@ -76,14 +73,23 @@ function dbf_reg_handlers() { } } $('.moreinfo .mfooter').append('Fahrtverlauf: <ul class="mroute">' + routebuf + '</ul>'); - $.get(this_href, {train: trainElem.data('train'), ajax: 1}, function(data) { - $('.moreinfo').html(data); - }).fail(function() { - $('.moreinfo .mfooter').append('Der Zug ist abgefahren (Zug nicht gefunden)'); - }); - infoElem.removeClass('collapsed-moreinfo'); - infoElem.addClass('expanded-moreinfo'); + } + $.get(window.location.href, {train: trainElem.data('train'), ajax: 1}, function(data) { + $('.moreinfo').html(data); + }).fail(function() { + $('.moreinfo .mfooter').append('Der Zug ist abgefahren (Zug nicht gefunden)'); }); + infoElem.removeClass('collapsed-moreinfo'); + infoElem.addClass('expanded-moreinfo'); + }); +} + +function dbf_reg_handlers() { + $('div.app > ul > li').click(function() { + const trainElem = $(this); + const station = $('div.app').data('station'); + history.pushState({'page':'traindetail','station':station,'train':trainElem.data('no')}, 'test', '/z/' + trainElem.data('train') + '/' + station); + dbf_show_moreinfo(trainElem, false); }); } @@ -128,14 +134,33 @@ $(function() { history.replaceState({'page':'station'}, document.title, ''); } window.onpopstate = function(event) { - if ((event.state != null) && (event.state['page'] == 'station')) { - $('.moreinfo').each(function() { - $(this).removeClass('expanded-moreinfo'); - $(this).addClass('collapsed-moreinfo'); - }); - if (!$('div.app > ul').length) { - $('div.app').append('<ul></ul>'); - reload_app(); + if (event.state != null) { + if ((event.state['page'] == 'station')) { + $('.moreinfo').each(function() { + $(this).removeClass('expanded-moreinfo'); + $(this).addClass('collapsed-moreinfo'); + }); + if (!$('div.app > ul').length) { + $('div.app').append('<ul></ul>'); + reload_app(); + } + } else if ((event.state['page'] == 'traindetail')) { + var success = false; + $('div.app > ul > li').each(function() { + const trainElem = $(this); + if (trainElem.data('no') == event.state['train']) { + dbf_show_moreinfo(trainElem, true); + success = true; + return; + } + }); + if (!success) { + $('.moreinfo').each(function() { + $(this).removeClass('collapsed-moreinfo'); + $(this).addClass('expanded-moreinfo'); + }); + $('.moreinfo .mfooter').append('Der Zug ist abgefahren (Zug nicht gefunden)'); + } } } else { console.log("unhandled popstate! " + document.location); |