diff options
Diffstat (limited to 'hesla.ts')
-rw-r--r-- | hesla.ts | 153 |
1 files changed, 153 insertions, 0 deletions
diff --git a/hesla.ts b/hesla.ts new file mode 100644 index 0000000..2051fea --- /dev/null +++ b/hesla.ts @@ -0,0 +1,153 @@ +/// <reference path='touchEvent.d.ts' /> +import ap = require("./activePage"); + +if (!Date.prototype.hasOwnProperty("toISODateString")) { + Date.prototype.toISODateString = function() { + function pad(number) { + var r = String(number); + if (r.length === 1) { + r = '0' + r; + } + return r; + } + + return this.getFullYear() + + '-' + pad(this.getMonth() + 1) + + '-' + pad(this.getDate()); + }; +} + +export class Hesla extends ap.ActivePage { + constructor() { + super(); + document.getElementById("czech_nav").addEventListener("click", + (evt: TouchEvent) => { + localStorage.setItem("language", "cs"); + this.lang_reload(); + }, false); + + document.getElementById("german_nav").addEventListener("click", + (evt: TouchEvent) => { + localStorage.setItem("language", "de"); + this.lang_reload(); + }, false); + } + + /** + * react to the discovered distance of swipe + * + * @param distX Number distance in points in direction X + * @param distY Number distance in points in direction Y + * + * There is a preference for the horizontal swipe; if that doesn't + * happen (i.e., the distance travelled horizontally is less than + * negligible), then the vertical swipe (in either direction) means + * jump to today. + */ + handle_move(distX: number, distY: number) { + var negligible = 100; + console.log('distX = ' + distX); + console.log('distY = ' + distY); + + if (distX < -negligible) { + console.log("swipe left"); + this.next(); + } + else if (distX > negligible) { + console.log("swipe right"); + this.prev(); + } + else if (Math.abs(distY) > negligible) { + console.log("jump to today!"); + this.display(); + } + } + + // cur_watchword is actually just a virtual property, which is not stored anywhere and its + // accessor methods change the value of the cur_section property instead. + get cur_watchword(): Date { + if (this.cur_section === null) { + this.cur_section = new Date(); + } + + return this.cur_section; + } + + set cur_watchword(value: Date) { + // Remove 'visible' style from the currently displayed psalm, if + // there is any + this.hide(); + + this.cur_section = value; + + // set the parameter directly to avoid call to getter. + this.display(this.cur_section); + } + + /** + * Display losungen for given day + * + * @param new_date String with ISO formatted date (optional) + * or Number with the relative distance of the day from the date + * currently displayed. + * + * Displays the Losungen for the given date (or today if not defined) + */ + display(date:any = this.cur_watchword) { + // if (this.cur_section !== null) { + // document.getElementById(this.cur_section.toISODateString()).style.display = 'none'; + // } + + console.log("cur_section = " + this.cur_section); + // document.getElementById(this.cur_section.toISODateString()).style.display = 'block'; + document.getElementById(this.cur_section.toISODateString()).classList.add("visible"); + } + + shiftDate(shift: number) { + var cur_date = this.cur_watchword; + cur_date.setDate(cur_date.getDate() + shift); + this.cur_watchword = cur_date; + } + + next() { + console.log("Next day!"); + this.shiftDate(+1); + } + + prev() { + console.log("Previous day!"); + this.shiftDate(-1); + } + + // Switch langauge + /** + * Handler for the switch language event + * + * Switches the displayed langauge page according to the state stored + * in the localStorage.langauge variable which contains ISO code for + * the chosen language ('de' and 'cs' currently). + */ + lang_reload() { + var new_basename = "index.html", new_url = window.location.href, + old_basename = window.location.pathname.split("/").slice(-1)[0]; + console.log('old_basename = ' + old_basename); + + if (localStorage.language && (localStorage.language === "de")) { + new_basename = "index_de.html"; + } + + console.log('new_basename = ' + new_basename); + if ((old_basename !== new_basename) || (window.location.pathname.length === 0)) { + new_url = window.location.href.replace(/(index[-\w]*\.html)?$/, + new_basename); + } + + if (window.location.href !== new_url) { + window.location.assign(new_url); + } + } +} + +var thisHesla = new Hesla(); +thisHesla.lang_reload(); +thisHesla.display(); |