summaryrefslogtreecommitdiff
path: root/www
diff options
context:
space:
mode:
Diffstat (limited to 'www')
-rw-r--r--www/js/utils.js26
1 files changed, 24 insertions, 2 deletions
diff --git a/www/js/utils.js b/www/js/utils.js
index b8bbd76..eec81b0 100644
--- a/www/js/utils.js
+++ b/www/js/utils.js
@@ -74,10 +74,32 @@ function msToTimeString(time) {
return h + ':' + m.pad(2) + ':' + s.pad(2) + '.' + hs;
}
+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;
+}
+
function Clock(draw_callback) {
this.draw_callback = draw_callback;
- this.last_message = { t1: 0, t2: 0, t3: 0, t4: 0, tz_offset: 3600, week: 3 };
+ this.last_message = { t1: 0, t2: 0, t3: 0, t4: 0, tz_offset: 3600 };
this.clock_offset = 0;
this.clock_rtt = 0;
@@ -92,7 +114,7 @@ function Clock(draw_callback) {
time_str += (rdtime.getUTCMinutes() > 9 ? ':' : ':0') + rdtime.getUTCMinutes();
time_str += (rdtime.getUTCSeconds() > 9 ? ':' : ':0') + rdtime.getUTCSeconds();
- this.draw_callback(date_str, time_str, this.last_message.week);
+ this.draw_callback(date_str, time_str, get_rd_week(rdtime_ms));
}
this.ntp_update = function(event) {