diff options
| author | Brian Cully <bjc@spork.org> | 2025-05-12 13:21:12 -0400 |
|---|---|---|
| committer | Brian Cully <bjc@spork.org> | 2025-05-12 13:21:12 -0400 |
| commit | d1c8f67d699fcd5e4ce262688b89503d3ddc0f88 (patch) | |
| tree | 2dbeb89dd88cfb6195ec587aa762925bc3d8fa8b /fretboard.mjs | |
| parent | 6c8074201d89a480f9b021f61cc6ff2eae7bb283 (diff) | |
| download | chords-d1c8f67d699fcd5e4ce262688b89503d3ddc0f88.tar.gz chords-d1c8f67d699fcd5e4ce262688b89503d3ddc0f88.zip | |
append history when ‘+’ button clicked
Diffstat (limited to 'fretboard.mjs')
| -rw-r--r-- | fretboard.mjs | 24 |
1 files changed, 17 insertions, 7 deletions
diff --git a/fretboard.mjs b/fretboard.mjs index d862952..ef9e0b5 100644 --- a/fretboard.mjs +++ b/fretboard.mjs @@ -103,28 +103,38 @@ export default class extends HTMLElement { // TODO: don't trawl the dom, custom element means we know // what's inside. - const form = this.querySelector('form'); - form.onchange = handleFormChanged; - form.querySelectorAll('.open').forEach(elt => { + this.form = this.querySelector('form'); + this.form.onchange = handleFormChanged; + this.form.querySelectorAll('.open').forEach(elt => { elt.onclick = openClick; }); - form.querySelectorAll('input[type="radio"]').forEach(elt => { + this.form.querySelectorAll('input[type="radio"]').forEach(elt => { elt.onmousedown = fretMousedown; elt.onclick = fretClick; }); - form.querySelectorAll('.save').forEach(elt => { + this.form.querySelectorAll('.save').forEach(elt => { elt.onclick = (e) => { console.log('Fretboard#onSave'); e.preventDefault(); const event = new CustomEvent(this.saveEvent, { bubbles: true, cancelable: true, - detail: new FormData(form) + detail: this }); this.dispatchEvent(event); }; }) - formChanged(form); + formChanged(this.form); + } + + get notes() { + console.debug('Fretboard#notes', this); + const formData = new FormData(this.form); + return Array.from(this.form.querySelectorAll('tbody .selected')).map(elt => { + const string = Array.from(elt.parentNode.classList).filter(x => x.startsWith('string'))[0]; + const val = formData.get(string); + return fretToNote(this.form, string, val); + }) } } |
