35 lines
1.2 KiB
JavaScript
35 lines
1.2 KiB
JavaScript
|
(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();
|
||
|
});
|
||
|
})();
|