diff options
-rw-r--r-- | www/js/nextshows.js | 17 | ||||
-rw-r--r-- | www/js/utils.js | 49 |
2 files changed, 63 insertions, 3 deletions
diff --git a/www/js/nextshows.js b/www/js/nextshows.js index 6d85f55..f0f732b 100644 --- a/www/js/nextshows.js +++ b/www/js/nextshows.js @@ -69,9 +69,9 @@ rh.Show = function(show) { var showListView = null; -rh.ShowListView = function(model, len) { +rh.ShowListView = function(model, maxlen) { this.model = model; - this.len = len; + this.maxlen = maxlen; this.showViews = []; @@ -97,6 +97,9 @@ rh.ShowListView.prototype.render = function() { this.showViews.push(showView); showView.render(); list.append(showView.$el); + if(this.showViews.length >= this.maxlen) { + break; + } } }; @@ -128,8 +131,16 @@ rh.ShowView.prototype.render = function() { /***************** controller *****************/ function nextshows_init() { + var url = parseLocationHref(); + var maxlen = 5; + if(url.path.length > 1) { + var tmp = parseInt(url.path[1], 10); + if(!isNaN(tmp) && tmp > 0) { + maxlen = tmp; + } + } shows = new rh.ShowList(); - showListView = new rh.ShowListView(shows, 10); + showListView = new rh.ShowListView(shows, maxlen); setInterval("shows.fetch()", 5000); clock.addCallback(function() { diff --git a/www/js/utils.js b/www/js/utils.js index 86c369b..c09628c 100644 --- a/www/js/utils.js +++ b/www/js/utils.js @@ -118,3 +118,52 @@ function get_rd_week(msEpoch) { var week = Math.floor((((sEpoch + 259200)/604800) + 2) % 4) + 1; return week; } + +function parseLocationHref() { + var matches = window.location.href.match(/(https?):\/\/(.*)/); + if(matches === null) { + return null; + } + + var uri = {}; + uri.scheme = matches[1]; + uri.servername = ''; + uri.path = []; + uri.query = []; + uri.fragment = ''; + + if(matches[2].indexOf('/') < 0) { + uri.servername = parts[2]; + return uri; + } + + var parts = matches[2].split('/'); + uri.servername = parts[0]; + uri.path = parts.slice(1); + + var tmp = uri.path[uri.path.length-1]; + if(tmp.length > 0) { + var qidx = tmp.indexOf('?'); + var fidx = tmp.indexOf('#'); + + var query = ''; + if(qidx >= 0 && fidx >= 0) { + uri.path[uri.path.length-1] = tmp.substring(0, qidx); + if(qidx < fidx) { + query = tmp.substring(qidx+1, fidx); + } + uri.fragment = tmp.substring(fidx+1); + } else if (qidx >= 0 && fidx < 0) { + uri.path[uri.path.length-1] = tmp.substring(0, qidx); + query = tmp.substring(qidx+1); + } else if (qidx < 0 && fidx >= 0) { + uri.path[uri.path.length-1] = tmp.substring(0, fidx); + uri.fragment = tmp.substring(fidx+1); + } + if(query.length > 0) { + uri.query = query.split('&'); + } + } + + return uri +} |