complete download html button

This commit is contained in:
Reorx 2023-02-05 16:11:35 +08:00
parent d936e09eb2
commit af4c6a6348
2 changed files with 33 additions and 10 deletions

View File

@ -10,6 +10,7 @@ import { saveCVJSON } from '../lib/store';
import {
createElement,
downloadContent,
downloadIframeHTML,
propertiesToObject,
traverseDownObject,
} from '../lib/utils';
@ -193,24 +194,36 @@ $inputUploadData.on('change', () => {
reader.readAsText(files[0])
})
$btnDownloadJSON.on('click', () => {
function downloadCV(contentType) {
const data = editor.getValue()
let name = data.meta.name
const meta = data.meta || (data.meta = {})
let name = meta.name
if (!name) {
name = prompt(`Please enter a name for your CV's data`)
}
if (!name) {
name = 'jsoncv'
}
if (!name) return
// update data
data.meta.name = name
data.meta.lastModified = dayjs().format('YYYY-MM-DDTHH:mm:ssZ[Z]')
meta.name = name
meta.lastModified = dayjs().format('YYYY-MM-DDTHH:mm:ssZ[Z]')
// download
if (contentType === 'json') {
let filename = `${name}.json`
downloadContent(filename, JSON.stringify(data, null, 2))
} else if (contentType === 'html') {
let filename = `${name}.html`
downloadIframeHTML(filename, $outputHTML.get(0))
}
// update editor value
editor.getEditor('root.meta').setValue(data.meta)
editor.getEditor('root.meta').setValue(meta)
}
$btnDownloadJSON.on('click', () => {
downloadCV('json')
})
$btnDownloadHTML.on('click', () => {
downloadCV('html')
})

View File

@ -61,3 +61,13 @@ export function downloadContent(filename, text) {
document.body.removeChild(element);
}
export function downloadIframeHTML(filename, iframe) {
const blob = new Blob([iframe.contentDocument.documentElement.outerHTML], { type: 'text/html' });
const a = document.createElement('a');
a.href = URL.createObjectURL(blob);
a.download = filename;
a.style.display = 'none';
a.click();
document.body.removeChild(a)
}