diff --git a/src/components/CodeBlock.vue b/src/components/CodeBlock.vue index a34fc105..eaed2b35 100644 --- a/src/components/CodeBlock.vue +++ b/src/components/CodeBlock.vue @@ -22,6 +22,7 @@ import 'prismjs/components/prism-python' import 'prismjs/components/prism-markdown' import 'prismjs/themes/prism-tomorrow.css' import { computed, ref, toRefs } from 'vue' +import { msg } from '../store.js' export default { props: { @@ -57,6 +58,9 @@ export default { const copyCode = async () => { try { await navigator.clipboard.writeText(code.value) + msg.color = '#0000ff' + msg.showMsg = true + msg.content = 'Code has been copied to Clipboard.' } catch (e) { console.error(e) } diff --git a/src/components/Message.vue b/src/components/Message.vue new file mode 100644 index 00000000..41124902 --- /dev/null +++ b/src/components/Message.vue @@ -0,0 +1,69 @@ + + + + + diff --git a/src/components/NavBar.vue b/src/components/NavBar.vue index e1571819..22ff0996 100644 --- a/src/components/NavBar.vue +++ b/src/components/NavBar.vue @@ -63,7 +63,7 @@ >
-

🎉 Your Training Script Generated! 🎉

+

🎉 Your Training Script Has Been Generated! 🎉

Thanks for using Code-Generator! Feel free to reach out to us on import { version } from '../../package.json' -import { store } from '../store' +import { store, msg } from '../store' import { saveAs } from 'file-saver' import JSZip from 'jszip' import IconDiscord from './IconDiscord.vue' @@ -101,13 +101,21 @@ export default { const downloadProject = () => { if (store.code && Object.keys(store.code).length) { - for (const filename in store.code) { - zip.file(filename, store.code[filename]) + if (!store.config.output_dir) { + msg.showMsg = true + msg.content = `Output directory is required. Please input in Loggers tab.` + } else { + for (const filename in store.code) { + zip.file(filename, store.code[filename]) + } + zip.generateAsync({ type: 'blob' }).then((content) => { + saveAs(content, `ignite-${store.config.template}.zip`) + }) + showDownloadMsg.value = true } - zip.generateAsync({ type: 'blob' }).then((content) => { - saveAs(content, `ignite-${store.config.template}.zip`) - }) - showDownloadMsg.value = true + } else { + msg.showMsg = true + msg.content = 'Choose a template to download.' } } return { version, downloadProject, showDownloadMsg, currentCommit } diff --git a/src/components/PaneLeft.vue b/src/components/PaneLeft.vue index 652d3759..b823f934 100644 --- a/src/components/PaneLeft.vue +++ b/src/components/PaneLeft.vue @@ -15,6 +15,7 @@

+ diff --git a/src/store.js b/src/store.js index de03a2c9..a943ba3f 100644 --- a/src/store.js +++ b/src/store.js @@ -27,6 +27,13 @@ const files = {} // filename to store user input config during development export const __DEV_CONFIG_FILE__ = '__DEV_CONFIG__.json' +// to track message box +export const msg = reactive({ + showMsg: false, + content: '', + color: '#ff0000' +}) + // main reactive object // store.code - the final rendered code to be included in archive // store.config - the internal config to track user input