diff --git a/src/js/src/bookmark/app.html b/src/js/src/bookmark/app.html index 2b6de96..dd5409c 100644 --- a/src/js/src/bookmark/app.html +++ b/src/js/src/bookmark/app.html @@ -32,11 +32,11 @@

diff --git a/src/js/src/bookmark/main.js b/src/js/src/bookmark/main.js index 099e205..777df6c 100644 --- a/src/js/src/bookmark/main.js +++ b/src/js/src/bookmark/main.js @@ -24,19 +24,19 @@ })(); - const handle = buttonHandlers.call({}); + const handle = buttonHandlers({}); function Control(elemental) { - if(elemental instanceof Element) { - this.element = elemental; + if (elemental instanceof Element) { + this.element = elemental; } else { this.element = document.querySelector(elemental); } } Control.prototype = { set onClick(handler) { - if(Array.isArray(handler)) { - for(const listener of handler ) { + if (Array.isArray(handler)) { + for (const listener of handler) { this.element.addEventListener("click", listener); } } else { @@ -64,26 +64,39 @@ const fileChooser = new Control("#openReal"); fileChooser.onChange = handle.openReal; + const saveSvgLink = new Control("#saveSvgLink"); + saveSvgLink.onClick = (event) => { + event.preventDefault(); + alert("クリックは無効です"); + }; + + const saveCsvLink = new Control("#saveCsvLink"); + saveCsvLink.onClick = (event) => { + event.preventDefault(); + alert("クリックは無効です"); + }; + + const bars = document.querySelectorAll("div.top-bar,div.bottom-bar"); bars.forEach((elem) => { const bar = new Control(elem); bar.onClick = toggle; }); - function buttonHandlers() { + function buttonHandlers(result) { const nameOf = { csv: "favorite.csv", svg: "result.svg" } - this.appendCard = handleAppendCardButton; - this.deleteCard = handleDeleteCardButton; - this.export = handleExportButton; - this.open = handleOpenButton; - this.generate = handleGenerateButton; - this.loadCSV = handleLoadCsvButton; - this.save = handleSaveButton; - this.openReal = handleOpenReal; - return this; + result.appendCard = handleAppendCardButton; + result.deleteCard = handleDeleteCardButton; + result.export = handleExportButton; + result.open = handleOpenButton; + result.generate = handleGenerateButton; + result.loadCSV = handleLoadCsvButton; + result.save = handleSaveButton; + result.openReal = handleOpenReal; + return result; function handleGenerateButton(event) { if (event.target.id != "generate") { @@ -98,14 +111,18 @@ const parser = new DOMParser(); const doc = parser.parseFromString(xml, "application/xml"); - const svgAttr = doc.documentElement.attributes; - for(const attr of svgAttr) { + const svgAttr = doc.documentElement.attributes; + for (const attr of svgAttr) { canvas.setAttribute(attr.name, attr.value); } canvas.setAttribute("overflow", "scroll") canvas.innerHTML = doc.documentElement.innerHTML + const serializer = new XMLSerializer(); + const serializedSvg = serializer.serializeToString(doc); + + setDownloadLink(document.querySelector("#saveSvgLink"), serializedSvg, "image/svg+xml;charset=utf-8", nameOf.svg); }).catch(err => { console.log(err) }); @@ -210,11 +227,19 @@ const addedCard = bigbrother.nextElementSibling; - new nodeValues().write(addedCard, node) + new nodeValues().write(addedCard, node); + setSaveCsvLink(); } function deleteCard(card) { card.parentNode.removeChild(card); + setSaveCsvLink(); + } + + function setSaveCsvLink() { + const csv = card2csv(); + const saveCsvLink = document.querySelector("#saveCsvLink"); + setDownloadLink(saveCsvLink, csv, "text/csv;charset=UTF-8", "favorite.csv"); } function csv2card(csv) { @@ -405,17 +430,22 @@ return dataUri; } - function download(text, mimeType, name,) { - const save = document.querySelector("#savelink"); + function setDownloadLink(anchor, text, mimeType, name) { + const link = anchor; const dataUri = text2DataUriScheme(text, mimeType); - save.setAttribute("href", dataUri); - save.setAttribute("download", name); - setTimeout(() => { - save.click(); - save.setAttribute("href", ""); - save.setAttribute("download", ""); - }, 50); + link.setAttribute("href", dataUri); + link.setAttribute("download", name); + } + + function download(text, mimeType, name,) { + + const save = document.querySelector("#savelink"); + setDownloadLink(save, text, mimeType, name); + + save.click(); + save.setAttribute("href", ""); + save.setAttribute("download", ""); } } })()