diff --git a/packages/nc-gui-v2/components/template/Editor.vue b/packages/nc-gui-v2/components/template/Editor.vue index 512a094783..df58f5c27c 100644 --- a/packages/nc-gui-v2/components/template/Editor.vue +++ b/packages/nc-gui-v2/components/template/Editor.vue @@ -128,9 +128,16 @@ const isValid = computed(() => { return true }) +const prevEditableTn = ref([]) + onMounted(() => { parseAndLoadTemplate() + // used to record the previous EditableTn values + // for checking the table duplication in current import + // and updating the key in importData + prevEditableTn.value = data.tables.map((t) => t.ref_table_name) + nextTick(() => { inputRefs.value[0]?.focus() }) @@ -508,6 +515,22 @@ onMounted(() => { mapDefaultColumns() } }) + +function handleEditableTnChange(idx: number) { + const oldValue = prevEditableTn.value[idx] + const newValue = data.tables[idx].ref_table_name + if (data.tables.filter((t) => t.ref_table_name === newValue).length > 1) { + message.warn('Duplicate Table Name') + data.tables[idx].ref_table_name = oldValue + } else { + prevEditableTn.value[idx] = newValue + if (oldValue !== newValue) { + // update the key name of importData + delete Object.assign(importData, { [newValue]: importData[oldValue] })[oldValue] + } + } + setEditableTn(idx, false) +}