diff options
Diffstat (limited to 'www/js/musicpools.js')
-rw-r--r-- | www/js/musicpools.js | 30 |
1 files changed, 24 insertions, 6 deletions
diff --git a/www/js/musicpools.js b/www/js/musicpools.js index 400c0bd..065b4d8 100644 --- a/www/js/musicpools.js +++ b/www/js/musicpools.js @@ -26,9 +26,9 @@ var Rdxport = Rdxport || {}; var musicpoolsView = null; -function musicpools_init() { +function musicpools_init(subpage) { var musicpools = new Rdxport.GroupList(); - musicpoolsView = new Rdxport.MusicpoolsView(musicpools); + musicpoolsView = new Rdxport.MusicpoolsView(musicpools, subpage); } function musicpools_cleanup() { @@ -36,11 +36,13 @@ function musicpools_cleanup() { musicpoolsView = null; } -Rdxport.MusicpoolsView = function(model) { +Rdxport.MusicpoolsView = function(model, subpage) { this.model = model; this.musicpoolViews = []; - this.currentPoolId = sessionStorage.getItem('currentPoolId'); + this.currentPoolId = null; + + this.setCurrentPoolId(subpage); var self = this; $(this.model).on('update', function() { @@ -54,6 +56,16 @@ Rdxport.MusicpoolsView = function(model) { }; Rdxport.MusicpoolsView.prototype.setCurrentPoolId = function(currentPoolId) { + if (!currentPoolId) { + return; + } + if (this.currentPoolId !== currentPoolId) { + if (this.currentPoolId) { + history.pushState(null, null, '/musicpools/' + currentPoolId + '/'); + } else { + history.replaceState(null, null, '/musicpools/' + currentPoolId + '/'); + } + } this.currentPoolId = currentPoolId; sessionStorage.setItem('currentPoolId', this.currentPoolId); }; @@ -91,8 +103,14 @@ Rdxport.MusicpoolsView.prototype.updateSelector = function() { $musicpoolSelector.append($('<option>').attr('value', musicpool.clock).text(name)); }); - if (this.currentPoolId === null) { - this.setCurrentPoolId(this.model.groups[0].clock); + // todo: maybe integrate this into setCurrentShowId? + if (!this.currentPoolId) { + var currentPoolId = sessionStorage.getItem('currentPoolId'); + if (currentPoolId) { + this.setCurrentPoolId(currentPoolId); + } else { + this.setCurrentPoolId(this.model.groups[0].id); + } } $('option[value="' + this.currentPoolId + '"]', $musicpoolSelector).attr('selected', 'selected'); |