diff options
Diffstat (limited to 'www/js/todo.js')
-rw-r--r-- | www/js/todo.js | 209 |
1 files changed, 0 insertions, 209 deletions
diff --git a/www/js/todo.js b/www/js/todo.js deleted file mode 100644 index f576d91..0000000 --- a/www/js/todo.js +++ /dev/null @@ -1,209 +0,0 @@ -/* - * rhrdweb - * - * Copyright (C) 2016 Christian Pointner <equinox@helsinki.at> - * - * This file is part of rhrdweb. - * - * rhrdweb is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * any later version. - * - * rhrdweb is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with rhrdweb. If not, see <http://www.gnu.org/licenses/>. - */ - -'use strict'; - -var rh = rh || {}; - - - -/***************** models *****************/ - -var shows = null; - -rh.ShowList = function(d) { - this.$this = $(this); - this.shows = []; - if(!is_valid_date(d)) { - this.current = new Date(); - } else { - this.current = d; - } - this.current_week = get_rd_week(this.current.valueOf()); - this.request_sent = false; -}; - -rh.ShowList.prototype.fetch = function() { - var self = this; - this.current_week = get_rd_week(this.current.valueOf()); - - this.request_sent = true; - self.$this.trigger('pre-update'); - $.getJSON( "/rh-bin/schedules.json?DAYS=1&START=" + format_date_iso(this.current), function(data) { - if(data.status == "OK") { - history.replaceState(null, null, '/todo/' + format_date_iso(self.current)); - self.last_succeeded = self.current; - self.shows = []; - $(data.shows).each(function(index, showdata) { - var show = new rh.Show(showdata); - self.shows.push(show); - }); - self.$this.trigger('update'); - } - }).fail(function() { - if(is_valid_date(self.last_succeeded)) { - self.current = self.last_succeeded; - self.current_week = get_rd_week(self.current.valueOf()); - self.$this.trigger('update'); - } - }).always(function() { - self.request_sent = false; - }); -}; - -rh.ShowList.prototype.prev = function() { - if(!this.request_sent) { - this.current = new Date(this.current.valueOf() - 24*3600*1000); - this.fetch(); - } -}; - -rh.ShowList.prototype.next = function() { - if(!this.request_sent) { - this.current = new Date(this.current.valueOf() + 24*3600*1000); - this.fetch(); - } -}; - -rh.Show = function(show) { - this.id = show.id; - this.title = show.title; - this.start = new Date(show.start); - this.len = show.len; -}; - - - -/***************** views *****************/ - -var showListView = null; - -rh.ShowListView = function(model) { - this.model = model; - - this.showViews = []; - - var self = this; - $(this.model).on('pre-update', function() { - self.render_hdr(); - self.render_loading(); - }); - $(this.model).on('update', function() { - self.render_hdr(); - self.render_list(); - }); - this.model.fetch(); -}; - -rh.ShowListView.prototype.render_hdr = function() { - var hdr = $('#header'); - $('span.date', hdr).text(format_date(this.model.current)); - var weekspan = $('span.week', hdr).removeClass().addClass('week').addClass('label'); - switch(this.model.current_week) { - case 1: - weekspan.addClass('label-info').text('Woche 1'); - break; - case 2: - weekspan.addClass('label-warning').text('Woche 2'); - break; - case 3: - weekspan.addClass('label-success').text('Woche 3'); - break; - case 4: - weekspan.addClass('label-danger').text('Woche 4'); - break; - default: - weekspan.addClass('label-default').text('Fehler'); - } -}; - -rh.ShowListView.prototype.render_list = function() { - $('#loading').hide(); - var list = $('#shows'); - $('div.show', list).remove(); - this.showViews = []; - - for (var i = 0; i < this.model.shows.length; i++) { - var showView = new rh.ShowView(this.model.shows[i], this); - this.showViews.push(showView); - showView.render(); - list.append(showView.$el); - } - list.show(); -}; - -rh.ShowListView.prototype.render_loading = function() { - $('#shows').hide(); - $('#loading').show(); -}; - - -rh.ShowView = function(model, listView) { - this.model = model; - this.listView = listView; - - this.$el = $('<div>'); -}; - -rh.ShowView.prototype.render = function() { - var start = $('<span>').addClass('show-start').text(format_time(this.model.start)); - var lenstr = "-"; - if(this.model.len > 0) { - lenstr = format_durationms(this.model.len); - } - var len = $('<span>').addClass('show-len').text("(" + lenstr + ")"); - - var showlink = $('<a>').attr('href', "https://import.helsinki.at/shows/" + this.model.id) - .attr('target', "import").text(this.model.title); - var title = $('<span>').addClass('show-title').append(showlink); - - this.$el.empty().addClass('show').append(start).append(title).append(len); -} - - - -/***************** controller *****************/ - -function todo_init() { - var url = parseLocationHref(); - var d = new Date(); - if(url.path.length > 1) { - var tmp = new Date(url.path[1]); - if(is_valid_date(tmp)) { - d = tmp; - } - } - history.pushState(null, null, '/todo/' + format_date_iso(d)); - - shows = new rh.ShowList(d); - showListView = new rh.ShowListView(shows); - - $('#btn-earlier').click(todo_prev); - $('#btn-later').click(todo_next); -} - -function todo_prev() { - shows.prev(); -} - -function todo_next() { - shows.next(); -} |