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