1
0
mirror of https://github.com/mbirth/tcl_update_db.git synced 2024-11-09 23:06:45 +00:00
tcl_update_db/assets/main.coffee

82 lines
3.3 KiB
CoffeeScript

document.addEventListener 'DOMContentLoaded', (event) ->
window.mdc.autoInit()
window.tabBar = new mdc.tabs.MDCTabBar document.querySelector '#tab-bar'
# Hide all panels but the selected one
activatePanel = (panelId) ->
allPanels = document.querySelectorAll '.panel'
for panel, i in allPanels
if panel.id is panelId
tabBar.activeTabIndex = i
panel.style.display = if panel.id is panelId then 'block' else 'none'
# React to clicking the tabs
window.tabBar.listen 'MDCTabBar:change', (t) ->
nthChildIndex = t.detail.activeTabIndex
tabId = t.srcElement.id
tab = document.querySelector "##{tabId} .mdc-tab:nth-child(#{nthChildIndex + 1})"
panelId = tab.dataset.panel
activatePanel panelId
# If specific tab/panel given in URL, e.g. #motion, switch to that
hash = location.hash
if hash.length > 1
activatePanel 'family-' + hash.substring 1
else
activatePanel 'family-keyone'
window.showTooltip = (event) ->
tt = document.querySelector('#tooltip')
tt_title = document.querySelector('#tooltip-title')
tt_text = document.querySelector('#tooltip-text')
ref = event.target.parentNode.dataset.ref
ver = event.target.innerText
tt_title.innerHTML = ver
tt_text.innerHTML = "for #{ref}"
# Show tooltip
tt.style.visibility = 'hidden'
tt.style.display = 'block'
positionTooltip event.clientX + window.scrollX, event.clientY + window.scrollY
tt.style.visibility = 'visible'
window.positionTooltip = (mouseX, mouseY) ->
tooltip = document.querySelector '#tooltip'
#pageHeight = document.documentElement.getBoundingClientRect().height
viewportBottom = document.documentElement.clientHeight + document.documentElement.scrollTop
viewportRight = document.documentElement.clientWidth + document.documentElement.scrollLeft
cursorOffset = 20
tooltipHeight = tooltip.clientHeight
tooltipWidth = tooltip.clientWidth
#console.log('Cursor: %o, Planned bottom: %o, Viewport bottom: %o', mouseY, mouseY+cursorOffset+tooltipHeight, viewportBottom)
# Check if tooltip is outside bottom of document
if mouseY + cursorOffset + tooltipHeight >= viewportBottom
# show tooltip ABOVE cursor
tooltip.style.top = (mouseY - cursorOffset - tooltipHeight) + 'px'
else
# show tooltip below cursor
tooltip.style.top = (mouseY + cursorOffset) + 'px'
if mouseX + cursorOffset + tooltipWidth >= viewportRight
# show tooltip LEFT of cursor
tooltip.style.left = (mouseX - cursorOffset - tooltipWidth) + 'px'
else
# show tooltip right of cursor
tooltip.style.left = (mouseX + cursorOffset) + 'px'
versionitems = document.querySelectorAll '.version'
for vi in versionitems
vi.addEventListener 'mousemove', (event) ->
positionTooltip event.clientX + window.scrollX, event.clientY + window.scrollY
vi.addEventListener 'mouseover', (event) ->
showTooltip event
vi.addEventListener 'mouseout', (event) ->
document.querySelector('#tooltip').style.display = 'none'