From f7e987fc5a9ebbdddd33ae77e6b84bfe640f6bc9 Mon Sep 17 00:00:00 2001 From: Wing-Kam Wong Date: Fri, 22 Jul 2022 21:55:16 +0800 Subject: [PATCH] wip(gui-v2): quick import - parseAndExtractData --- .../nc-gui-v2/components/dlg/FileImport.vue | 56 +++++++++++++++++-- 1 file changed, 50 insertions(+), 6 deletions(-) diff --git a/packages/nc-gui-v2/components/dlg/FileImport.vue b/packages/nc-gui-v2/components/dlg/FileImport.vue index 96a5fc359e..599d9c365c 100644 --- a/packages/nc-gui-v2/components/dlg/FileImport.vue +++ b/packages/nc-gui-v2/components/dlg/FileImport.vue @@ -8,6 +8,7 @@ import MdiFileUploadOutlineIcon from '~icons/mdi/file-upload-outline' import MdiLinkVariantIcon from '~icons/mdi/link-variant' import MdiCodeJSONIcon from '~icons/mdi/code-json' import { fieldRequiredValidator, importUrlValidator } from '~/utils/validation' +import { extractSdkResponseErrorMsg } from '~/utils/errorUtils' const { t } = useI18n() interface Props { @@ -22,17 +23,32 @@ const emit = defineEmits(['update:modelValue']) const activeKey = ref('upload') const jsonEditorRef = ref() const loading = ref(false) +const templateData = ref() +const importData = ref() +const templateEditorModal = ref(false) const useForm = Form.useForm const importState = ref({ fileList: [], - url: '', - json: {}, + url: { + value: '', + parserConfig: { + maxRowsToParse: 500, + }, + }, + json: { + value: {}, + parserConfig: { + maxRowsToParse: 500, + normalizeNested: true, + importData: true, + }, + }, }) const validators = computed(() => { return { - url: [fieldRequiredValidator, importUrlValidator], + 'url.value': [fieldRequiredValidator, importUrlValidator], } }) @@ -111,6 +127,34 @@ const handleSubmit = () => { // TODO } } + +const parseAndExtractData = async (type: string, val: string, name: string) => { + try { + let templateGenerator + templateData.value = null + importData.value = null + // switch (type) { + // case 'file': + // templateGenerator = new JSONTemplateAdapter(name, val, parserConfig) + // break + // case 'url': + // templateGenerator = new JSONUrlTemplateAdapter(val, this.$store, this.parserConfig, this.$api) + // break + // case 'string': + // templateGenerator = new JSONTemplateAdapter(name, val, this.parserConfig) + // break + // } + // await templateGenerator.init() + // templateGenerator.parse() + // templateData.value = templateGenerator.getTemplate() + // templateData.value.tables[0].table_name = this.populateUniqueTableName() + // importData.value = templateGenerator.getData() + templateEditorModal.value = true + } catch (e: any) { + console.log(e) + toast.error(await extractSdkResponseErrorMsg(e)) + } +}
- +
@@ -167,8 +211,8 @@ const handleSubmit = () => {
- - + +