(function() { const checkboxes = document.querySelectorAll('input[type="checkbox"]'); const button = document.querySelector('#export'); const selectedTracks = []; checkboxes.forEach((box) => { const meta = [ box.getAttribute('data-file'), box.getAttribute('data-spotify') ]; function clickBox() { if (box.checked) { selectedTracks.push(meta); } else { const i = selectedTracks.indexOf(meta); if (i > -1) { selectedTracks.splice(i, 1); } } } box.addEventListener('change', ($ev) => clickBox()); box.parentElement.parentElement.addEventListener('click', () => box.click()); clickBox(); }); button.addEventListener('click', ($ev) => { $ev.preventDefault(); var dataStr = "data:text/json;charset=utf-8," + encodeURIComponent(JSON.stringify(selectedTracks)); var downloadAnchorNode = document.createElement('a'); downloadAnchorNode.setAttribute("href", dataStr); downloadAnchorNode.setAttribute("download", "track-selection.json"); document.body.appendChild(downloadAnchorNode); downloadAnchorNode.click(); downloadAnchorNode.remove(); }); })();