mounted

in www/board/agenda/views/layout/main.js.rb [105:192]


  def mounted()
    
    Main.navigate = self.navigate
    Main.refresh  = self.refresh
    Main.view  = $refs.view
    Main.item = Agenda

    
    
    if not history.state or not history.state.query
      path = @@page.path

      if path == 'bootstrap.html'
        path = document.location.href
        base = document.getElementsByTagName('base')[0].href
        if path.start_with? base
          path = path.slice(base.length)
        elsif path.end_with? '/latest/'
          Main.latest = true
          path = '.'
        end
      end

      history.replaceState({path: path}, nil, path)
    end

    
    window.addEventListener :popstate do |event|
      if event.state and defined? event.state.path
        Main.scrollTo = event.state.scrollY || 0
        self.route(event.state.path, event.state.query)
      end
    end

    
    Keyboard.initEventHandlers()
    Touch.initEventHandlers()

    
    
    def window.onresize()
      main = document.querySelector('main')
      return unless main

      footer = document.querySelector('footer')
      header = document.querySelector('header')
      if
        window.innerHeight <= 400 and
        document.body.scrollHeight > window.innerHeight
      then
        footer.style.position = 'relative' if footer
        header.style.position = 'relative' if header
        main.style.marginTop = 0
        main.style.marginBottom = 0
      else
        footer.style.position = 'fixed' if footer
        header.style.position = 'fixed' if header
        main.style.marginTop =
          "#{document.querySelector('header.navbar').clientHeight}px"
        main.style.marginBottom =
          "#{document.querySelector('footer.navbar').clientHeight}px"
      end

      if Main.scrollTo == 0 or Main.scrollTo
        if Main.scrollTo == -1
          jQuery('html, body').
            animate({scrollTop: document.documentElement.scrollHeight}, :fast)
        else
          window.scrollTo(0, Main.scrollTo)
          Main.scrollTo = nil
        end
      end
    end

    
    Main.scrollTo = 0
    window.onresize()

    
    Agenda.fetch(@@page.etag, @@page.digest)

    
    PageCache.register() if PageCache.enabled

    
    Events.monitor()
  end