diff options
Diffstat (limited to 'www/js')
-rw-r--r-- | www/js/utils.js | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/www/js/utils.js b/www/js/utils.js new file mode 100644 index 0000000..1c5727a --- /dev/null +++ b/www/js/utils.js @@ -0,0 +1,78 @@ +/* + * 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'; + +Number.prototype.pad = function(size) { + var s = String(this); + while (s.length < (size || 2)) {s = "0" + s;} + return s; +} + +var weekday = new Array(7); +weekday[0] = 'Sonntag'; +weekday[1] = 'Montag'; +weekday[2] = 'Dienstag'; +weekday[3] = 'Mittwoch'; +weekday[4] = 'Donnerstag'; +weekday[5] = 'Freitag'; +weekday[6] = 'Samstag'; + +var weekday_short = new Array('So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'); + +function format_datetime(d) { + if(Object.prototype.toString.call(d) !== '[object Date]') { + return '-'; + } + if (d.toString() === 'Invalid Date') { + return '-'; + } + var datetimestr = weekday_short[d.getDay()]; + datetimestr += ' ' + Number(d.getDate()).pad(2); + datetimestr += '.' + Number(d.getMonth() + 1).pad(2); + datetimestr += '.' + d.getFullYear(); + datetimestr += ' ' + Number(d.getHours()).pad(2); + datetimestr += ':' + Number(d.getMinutes()).pad(2); + datetimestr += ':' + Number(d.getSeconds()).pad(2); + return datetimestr; +} + +function get_rd_week(msEpoch) { + // + // This computes the current Rivendell Week based on the number + // of weeks since epoch. + // + // Explanation: + // epoch was at 01.01.1970 which was a Thursday. + // Monday in that week is (s-from-epoch + 3*24*60*60) seconds ago. + // This needs to be adjusted by the timezone offset for Europe/Vienna + // which is of course not constant (damn you daylight savings time) + // Divide this by (7*24*60*60) and you get the number of + // weeks since the Monday in the week of epoch adjusted for timezone offsets. + // This week had week number 3 so add an offset of 2 and + // get the modulo of 4. This rounded down gives you the current week + // with 0 meaning Week 1. So add 1 to that number and you will get + // the current RD week. + // + var sEpoch = msEpoch / 1000 ; + var week = Math.floor((((sEpoch + 259200)/604800) + 2) % 4) + 1; + return week; +} |