mirror of
				https://github.com/zadam/trilium.git
				synced 2025-10-31 10:26:08 +01:00 
			
		
		
		
	client: Reduce code duplication
This commit is contained in:
		| @@ -508,6 +508,26 @@ function createImageSrcUrl(note) { | |||||||
|     return `api/images/${note.noteId}/${encodeURIComponent(note.title)}?timestamp=${Date.now()}`; |     return `api/images/${note.noteId}/${encodeURIComponent(note.title)}?timestamp=${Date.now()}`; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * Given a string representation of an SVG, triggers a download of the file on the client device. | ||||||
|  |  *  | ||||||
|  |  * @param {string} nameWithoutExtension the name of the file. The .svg suffix is automatically added to it. | ||||||
|  |  * @param {string} svgContent the content of the SVG file download. | ||||||
|  |  */ | ||||||
|  | function downloadSvg(nameWithoutExtension, svgContent) { | ||||||
|  |     const filename = `${nameWithoutExtension}.svg`; | ||||||
|  |     const element = document.createElement('a'); | ||||||
|  |     element.setAttribute('href', `data:image/svg+xml;charset=utf-8,${encodeURIComponent(svgContent)}`); | ||||||
|  |     element.setAttribute('download', filename); | ||||||
|  |  | ||||||
|  |     element.style.display = 'none'; | ||||||
|  |     document.body.appendChild(element); | ||||||
|  |  | ||||||
|  |     element.click(); | ||||||
|  |  | ||||||
|  |     document.body.removeChild(element); | ||||||
|  | } | ||||||
|  |  | ||||||
| export default { | export default { | ||||||
|     reloadFrontendApp, |     reloadFrontendApp, | ||||||
|     parseDate, |     parseDate, | ||||||
| @@ -547,5 +567,6 @@ export default { | |||||||
|     escapeRegExp, |     escapeRegExp, | ||||||
|     areObjectsEqual, |     areObjectsEqual, | ||||||
|     copyHtmlToClipboard, |     copyHtmlToClipboard, | ||||||
|     createImageSrcUrl |     createImageSrcUrl, | ||||||
|  |     downloadSvg | ||||||
| }; | }; | ||||||
|   | |||||||
| @@ -1,6 +1,7 @@ | |||||||
| import libraryLoader from "../services/library_loader.js"; | import libraryLoader from "../services/library_loader.js"; | ||||||
| import NoteContextAwareWidget from "./note_context_aware_widget.js"; | import NoteContextAwareWidget from "./note_context_aware_widget.js"; | ||||||
| import server from "../services/server.js"; | import server from "../services/server.js"; | ||||||
|  | import utils from "../services/utils.js"; | ||||||
|  |  | ||||||
| const TPL = `<div class="mermaid-widget"> | const TPL = `<div class="mermaid-widget"> | ||||||
|     <style> |     <style> | ||||||
| @@ -138,19 +139,6 @@ export default class MermaidWidget extends NoteContextAwareWidget { | |||||||
|         } |         } | ||||||
|  |  | ||||||
|         const svg = await this.renderSvg(); |         const svg = await this.renderSvg(); | ||||||
|         this.download(`${this.note.title}.svg`, svg); |         utils.downloadSvg(this.note.title, svg); | ||||||
|     } |  | ||||||
|  |  | ||||||
|     download(filename, text) { |  | ||||||
|         const element = document.createElement('a'); |  | ||||||
|         element.setAttribute('href', `data:image/svg+xml;charset=utf-8,${encodeURIComponent(text)}`); |  | ||||||
|         element.setAttribute('download', filename); |  | ||||||
|  |  | ||||||
|         element.style.display = 'none'; |  | ||||||
|         document.body.appendChild(element); |  | ||||||
|  |  | ||||||
|         element.click(); |  | ||||||
|  |  | ||||||
|         document.body.removeChild(element); |  | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -1,5 +1,6 @@ | |||||||
| import libraryLoader from "../../services/library_loader.js"; | import libraryLoader from "../../services/library_loader.js"; | ||||||
| import TypeWidget from "./type_widget.js"; | import TypeWidget from "./type_widget.js"; | ||||||
|  | import utils from "../../services/utils.js"; | ||||||
|  |  | ||||||
| const TPL = ` | const TPL = ` | ||||||
| <div class="note-detail-mind-map note-detail-printable"> | <div class="note-detail-mind-map note-detail-printable"> | ||||||
| @@ -114,20 +115,7 @@ export default class MindMapWidget extends TypeWidget { | |||||||
|         } |         } | ||||||
|  |  | ||||||
|         const svg = await this.renderSvg(); |         const svg = await this.renderSvg(); | ||||||
|         this.download(`${this.note.title}.svg`, svg); |         utils.downloadSvg(this.note.title, svg); | ||||||
|     } |  | ||||||
|  |  | ||||||
|     download(filename, text) { |  | ||||||
|         const element = document.createElement('a'); |  | ||||||
|         element.setAttribute('href', `data:image/svg+xml;charset=utf-8,${encodeURIComponent(text)}`); |  | ||||||
|         element.setAttribute('download', filename); |  | ||||||
|  |  | ||||||
|         element.style.display = 'none'; |  | ||||||
|         document.body.appendChild(element); |  | ||||||
|  |  | ||||||
|         element.click(); |  | ||||||
|  |  | ||||||
|         document.body.removeChild(element); |  | ||||||
|     } |     } | ||||||
|  |  | ||||||
| } | } | ||||||
		Reference in New Issue
	
	Block a user