From a9ad02b3ff96f020fe7a90e2fc7b1aef15726a63 Mon Sep 17 00:00:00 2001 From: Matěj Cepl Date: Mon, 20 Apr 2015 18:38:01 +0200 Subject: Switch to Babel and pure ES6. --- zalmy.es | 87 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 zalmy.es (limited to 'zalmy.es') diff --git a/zalmy.es b/zalmy.es new file mode 100644 index 0000000..aa433c1 --- /dev/null +++ b/zalmy.es @@ -0,0 +1,87 @@ +import {ActivePage} from "activePage"; + +export class Psalm extends ActivePage +{ + constructor() + { + super('zalmy'); + } + + // cur_psalm 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_psalm() { + console.log('this.cur_section = ' + this.cur_section); + // If this.cur_section has not been initialized yet, do it + if (!this.cur_section) { + var storedStr = localStorage.getItem("curPsalm"); + console.log('storedStr = ' + storedStr); + var stored = JSON.parse(storedStr); + console.log('stored = ' + stored); + if ((stored == null) || (stored < 1) || (stored > 150)) { + this.cur_section = 1; + localStorage.setItem("curPsalm", JSON.stringify(this.cur_section)); + } + else { + this.cur_section = stored; + } + } + + return this.cur_section; + } + + set cur_psalm(value) { + if (value < 1) { + this.cur_section = 150; + } + else if (value > 150) { + this.cur_section = 1; + } + else { + this.cur_section = value; + } + localStorage.setItem("curPsalm", JSON.stringify(this.cur_section)); + + // set the parameter directly to avoid call to getter. + this.display(); + } + + // Methods + + /** + * Display the current Psalm + * + * @param number Number of the psalm to be displayed (optional) + * + * Displays the particular Psalm + */ + display() { + // first scroll then switch to avoid blinking of the page + window.scroll(0, 0); + + var visibleElems = document.getElementsByClassName("visible"); + Array.prototype.forEach.call(visibleElems, function(e) { + e.classList.remove("visible"); + }); + console.log("cur_psalm = " + this.cur_psalm); + + let psalm_id = `Ps.${this.cur_psalm}`; + console.log(`psalm_id = ${psalm_id}`); + document.getElementById(psalm_id).parentElement. + classList.add('visible'); + } + + // We have to override activePage’s next() and prev() methods to call + // this.cur_psalm setter whcih does actual refresh of the page. + next() { + console.log("Next!"); + this.cur_psalm += 1; + } + + prev() { + console.log("Previous!"); + this.cur_psalm -= 1; + } + +} + +var thisPsalm = new Psalm(); -- cgit