Browse Source

feat: undo/redo table rename

Signed-off-by: mertmit <mertmit99@gmail.com>
pull/5332/head
mertmit 2 years ago
parent
commit
c01269cd4b
  1. 29
      packages/nc-gui/components/dlg/TableRename.vue

29
packages/nc-gui/components/dlg/TableRename.vue

@ -14,6 +14,7 @@ import {
useNuxtApp, useNuxtApp,
useProject, useProject,
useTabs, useTabs,
useUndoRedo,
useVModel, useVModel,
validateTableName, validateTableName,
watchEffect, watchEffect,
@ -43,6 +44,8 @@ const projectStore = useProject()
const { loadTables, isMysql, isMssql, isPg } = projectStore const { loadTables, isMysql, isMssql, isPg } = projectStore
const { tables, project } = storeToRefs(projectStore) const { tables, project } = storeToRefs(projectStore)
const { addUndo } = useUndoRedo()
const inputEl = $ref<ComponentPublicInstance>() const inputEl = $ref<ComponentPublicInstance>()
let loading = $ref(false) let loading = $ref(false)
@ -113,7 +116,7 @@ watchEffect(
{ flush: 'post' }, { flush: 'post' },
) )
const renameTable = async () => { const renameTable = async (undo = false) => {
if (!tableMeta) return if (!tableMeta) return
loading = true loading = true
@ -126,6 +129,26 @@ const renameTable = async () => {
dialogShow.value = false dialogShow.value = false
if (!undo) {
addUndo({
redo: {
fn: (t: string) => {
formState.title = t
renameTable(true)
},
args: [formState.title],
},
undo: {
fn: (t: string) => {
formState.title = t
renameTable(true)
},
args: [tableMeta.title],
},
scope: tableMeta.project_id,
})
}
await loadTables() await loadTables()
// update metas // update metas
@ -161,7 +184,7 @@ const renameTable = async () => {
<template #footer> <template #footer>
<a-button key="back" @click="dialogShow = false">{{ $t('general.cancel') }}</a-button> <a-button key="back" @click="dialogShow = false">{{ $t('general.cancel') }}</a-button>
<a-button key="submit" type="primary" :loading="loading" @click="renameTable">{{ $t('general.submit') }}</a-button> <a-button key="submit" type="primary" :loading="loading" @click="renameTable()">{{ $t('general.submit') }}</a-button>
</template> </template>
<div class="pl-10 pr-10 pt-5"> <div class="pl-10 pr-10 pt-5">
@ -175,7 +198,7 @@ const renameTable = async () => {
v-model:value="formState.title" v-model:value="formState.title"
hide-details hide-details
:placeholder="$t('msg.info.enterTableName')" :placeholder="$t('msg.info.enterTableName')"
@keydown.enter="renameTable" @keydown.enter="renameTable()"
/> />
</a-form-item> </a-form-item>
</a-form> </a-form>

Loading…
Cancel
Save