summaryrefslogtreecommitdiff
path: root/www/js/calendar.js
diff options
context:
space:
mode:
Diffstat (limited to 'www/js/calendar.js')
-rw-r--r--www/js/calendar.js86
1 files changed, 86 insertions, 0 deletions
diff --git a/www/js/calendar.js b/www/js/calendar.js
new file mode 100644
index 0000000..8bdf033
--- /dev/null
+++ b/www/js/calendar.js
@@ -0,0 +1,86 @@
+/*
+ * 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';
+
+function getLastMonday() {
+ var d = new Date();
+ d.setHours(0, 0, 0, 0);
+ var dow = d.getDay()
+ if(dow == 0) {
+ return new Date(d - (6*24*3600000));
+ } else {
+ return new Date(d - ((dow-1)*24*3600000));
+ }
+}
+
+function addDeltaDays(d, days) {
+ return new Date(d.valueOf() + (days*24*3600000))
+}
+
+function addWeekClass(row, week) {
+ switch(week) {
+ case 1:
+ row.addClass('label-info');
+ break;
+ case 2:
+ row.addClass('label-warning');
+ break;
+ case 3:
+ row.addClass('label-success');
+ break;
+ case 4:
+ row.addClass('label-danger');
+ break;
+ default:
+ row.addClass('label-default');
+ }
+}
+
+function calendar_redraw() {
+ var cal = $('#calendar');
+ cal.find("tr:gt(0)").remove();
+
+ var date = getLastMonday();
+ date = addDeltaDays(date, -28);
+ for(var w = 0; w < 42; w++) {
+ var week = get_rd_week(date.valueOf());
+ var row = $('<tr>');
+ addWeekClass(row, week);
+
+ row.append($('<td>').addClass('week').text(week));
+ row.append($('<td>').addClass('month').text(monthname_short[date.getMonth()]));
+ for(var d = 0; d < 7; d++) {
+ var col = $('<td>').text(date.getDate());
+ row.append(col);
+ if(d < 6) {
+ date = addDeltaDays(date, 1);
+ }
+ }
+ row.append($('<td>').addClass('month').text(monthname_short[date.getMonth()]));
+ date = addDeltaDays(date, 1);
+ $('#calendar').append(row);
+ }
+}
+
+function calendar_init() {
+ calendar_redraw()
+}