summaryrefslogblamecommitdiffstats
path: root/zalmy.es
blob: b5834d84a93730dc0e74798eb0ab4ed2048ce3fa (plain) (tree)
1
2
3
4
5
6
7
8
9
                                      
 
                                     


               
                   

   

                                                                                        
                   
                                                          
                                                              
                            

                                                       
                                                               

                                                                           
       
            
                                  


       
                            

   
                        
                    
                             
     
                           
                           
     
          
                               
     
                                                                       
 
                                                          
                   




            
                              
    
                                                                 
    
                                  
     
             
                    
 


                                                    
                               

                        
   



                                                                         



                        


                        

 
                            
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");
      var stored = JSON.parse(storedStr);
      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() {
    super.display();

    let psalm_id = `Ps.${this.cur_psalm}`;
    console.log(`psalm_id = ${psalm_id}`);
    document.getElementById(psalm_id).parentElement.
      classList.add('visible');

    window.scroll(0, 0);
  }

  // We have to override activePage’s next() and prev() methods to call
  // this.cur_psalm setter whcih does actual refresh of the page.
  next() {
    this.cur_psalm += 1;
  }

  prev() {
    this.cur_psalm -= 1;
  }

}

var thisPsalm = new Psalm();