2019-03-15 14:53:48 +00:00
|
|
|
// interaction
|
|
|
|
|
|
|
|
const primaryNav = document.querySelector('nav')
|
|
|
|
const menuItem = document.querySelector('#menuItem')
|
2019-03-16 16:16:24 +00:00
|
|
|
const content = document.querySelectorAll('.content')
|
2019-03-15 14:53:48 +00:00
|
|
|
|
|
|
|
// TODO: (create voice class per button)
|
2019-03-16 16:16:24 +00:00
|
|
|
let menuVoices = []
|
|
|
|
|
|
|
|
const subMenu = (activePage) => {
|
|
|
|
let menu = document.querySelector(`\#${activePage} \.subMenu`)
|
|
|
|
if (menu) {
|
|
|
|
return menu
|
|
|
|
} else {
|
|
|
|
return null
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
const showContent = (section) => {
|
|
|
|
for (let sect of content) {
|
|
|
|
if (c.dataset.link == sect.id) {
|
|
|
|
sect.className = 'content visible'
|
|
|
|
} else if (!c.dataset.link) {
|
|
|
|
sect.className = 'content'
|
|
|
|
} else {
|
|
|
|
sect.className = 'content'
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2019-03-15 14:53:48 +00:00
|
|
|
|
|
|
|
for (let c of primaryNav.children) {
|
|
|
|
// TODO: (create voice class per button)
|
2019-03-16 16:16:24 +00:00
|
|
|
menuVoices[c.dataset.link] = new Synth(audioEngine)
|
|
|
|
menuVoices[c.dataset.link].gain.connect(masterGain)
|
2019-03-15 14:53:48 +00:00
|
|
|
|
|
|
|
c.addEventListener('click', () => {
|
2019-03-16 16:16:24 +00:00
|
|
|
menuVoices[c.dataset.link].mod()
|
|
|
|
|
|
|
|
for (let _c of primaryNav.children) {
|
|
|
|
if (c === _c && c.dataset.link != '~') {
|
|
|
|
c.className = 'active'
|
|
|
|
|
|
|
|
if (subMenu(c.dataset.link)) {
|
|
|
|
for (let s of subMenu(c.dataset.link).children) {
|
|
|
|
s.addEventListener('click', () => {
|
|
|
|
console.log(`clicked : ${s.dataset.link}`)
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
_c.className = ''
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
for (let sect of content) {
|
|
|
|
if (c.dataset.link == sect.id) {
|
|
|
|
sect.className = 'content visible'
|
|
|
|
} else if (!c.dataset.link) {
|
|
|
|
sect.className = 'content'
|
|
|
|
} else {
|
|
|
|
sect.className = 'content'
|
|
|
|
}
|
|
|
|
}
|
2019-03-15 14:53:48 +00:00
|
|
|
})
|
|
|
|
|
|
|
|
c.addEventListener('mouseenter', () => {
|
|
|
|
menuItem.innerHTML = c.dataset.link
|
|
|
|
menuItem.className = 'active'
|
2019-03-16 16:16:24 +00:00
|
|
|
menuVoices[c.dataset.link].noteOn()
|
2019-03-15 14:53:48 +00:00
|
|
|
})
|
|
|
|
|
|
|
|
c.addEventListener('mouseout', () => {
|
|
|
|
menuItem.className = 'inactive'
|
2019-03-16 16:16:24 +00:00
|
|
|
menuVoices[c.dataset.link].noteOff()
|
2019-03-15 14:53:48 +00:00
|
|
|
})
|
|
|
|
|
|
|
|
menuItem.addEventListener('transitionend', () => {
|
|
|
|
if (menuItem.className == 'inactive') {
|
|
|
|
menuItem.innerHTML = ''
|
|
|
|
}
|
|
|
|
})
|
|
|
|
}
|