diff --git a/packages/nc-gui/components/dashboard/TreeView.vue b/packages/nc-gui/components/dashboard/TreeView.vue index 8a4f6a4523..cfad2943f3 100644 --- a/packages/nc-gui/components/dashboard/TreeView.vue +++ b/packages/nc-gui/components/dashboard/TreeView.vue @@ -30,7 +30,7 @@ const { addTab } = useTabs() const { $api, $e } = useNuxtApp() -const { tables, loadTables, isSharedBase } = useProject() +const { bases, tables, loadTables, isSharedBase } = useProject() const { activeTab } = useTabs() @@ -198,7 +198,8 @@ function openAirtableImportDialog() { } } -function openTableCreateDialog() { +function openTableCreateDialog(baseId?: string) { + if (!baseId) return $e('c:table:create:navdraw') const isOpen = ref(true) @@ -206,6 +207,7 @@ function openTableCreateDialog() { const { close } = useDialog(resolveComponent('DlgTableCreate'), { 'modelValue': isOpen, 'onUpdate:modelValue': closeDialog, + 'baseId': baseId, }) function closeDialog() { @@ -282,7 +284,7 @@ useEventListener(document, 'keydown', async (e: KeyboardEvent) => {
@@ -353,72 +355,242 @@ useEventListener(document, 'keydown', async (e: KeyboardEvent) => {
-
- - - -
-
-
- -
- {{ table.title }} +
+
+
+ + +
+
+
+ +
+ {{ table.title }} +
+ + + + + + +
+
+
+
+ + + +
+ + + {{ + $t('tooltip.addTable') + }} + + + + + +
- - - - - - -
- + + + + +
+ +
+ +
@@ -576,4 +748,12 @@ useEventListener(document, 'keydown', async (e: KeyboardEvent) => { :deep(.ant-dropdown-menu-title-content) { @apply !p-0; } + +:deep(.ant-collapse-content-box) { + @apply !p-0; +} + +:deep(.ant-collapse-header) { + @apply !border-0 !border-y-1; +} diff --git a/packages/nc-gui/components/dashboard/settings/DataSources.vue b/packages/nc-gui/components/dashboard/settings/DataSources.vue new file mode 100644 index 0000000000..8f4d227157 --- /dev/null +++ b/packages/nc-gui/components/dashboard/settings/DataSources.vue @@ -0,0 +1,101 @@ + + + diff --git a/packages/nc-gui/components/dashboard/settings/Modal.vue b/packages/nc-gui/components/dashboard/settings/Modal.vue index db7a2bd156..c0c9f0310c 100644 --- a/packages/nc-gui/components/dashboard/settings/Modal.vue +++ b/packages/nc-gui/components/dashboard/settings/Modal.vue @@ -1,5 +1,6 @@ + + + + diff --git a/packages/nc-gui/components/dlg/TableCreate.vue b/packages/nc-gui/components/dlg/TableCreate.vue index e950102b36..96cb6cec16 100644 --- a/packages/nc-gui/components/dlg/TableCreate.vue +++ b/packages/nc-gui/components/dlg/TableCreate.vue @@ -4,6 +4,7 @@ import { TabType } from '~/lib' const props = defineProps<{ modelValue: boolean + baseId: string }>() const emit = defineEmits(['update:modelValue']) @@ -28,7 +29,7 @@ const { table, createTable, generateUniqueTitle, tables, project } = useTable(as }) dialogShow.value = false -}) +}, props.baseId) const useForm = Form.useForm @@ -51,11 +52,11 @@ const validators = computed(() => { validator: (rule: any, value: any) => { return new Promise((resolve, reject) => { let tableNameLengthLimit = 255 - if (isMysql) { + if (isMysql(props.baseId)) { tableNameLengthLimit = 64 - } else if (isPg) { + } else if (isPg(props.baseId)) { tableNameLengthLimit = 63 - } else if (isMssql) { + } else if (isMssql(props.baseId)) { tableNameLengthLimit = 128 } const projectPrefix = project?.value?.prefix || '' diff --git a/packages/nc-gui/components/template/Editor.vue b/packages/nc-gui/components/template/Editor.vue index 2f99813c49..24fb40b834 100644 --- a/packages/nc-gui/components/template/Editor.vue +++ b/packages/nc-gui/components/template/Editor.vue @@ -66,7 +66,7 @@ const { addTab } = useTabs() const { sqlUis, project, loadTables } = useProject() -const sqlUi = ref(meta.value?.base_id ? sqlUis.value[meta.value?.base_id] : sqlUis.value[0]) +const sqlUi = ref(meta.value?.base_id ? sqlUis.value[meta.value?.base_id] : Object.values(sqlUis.value)[0]) const hasSelectColumn = ref([]) diff --git a/packages/nc-gui/composables/useColumnCreateStore.ts b/packages/nc-gui/composables/useColumnCreateStore.ts index a8d8d0c68a..d31ac88e16 100644 --- a/packages/nc-gui/composables/useColumnCreateStore.ts +++ b/packages/nc-gui/composables/useColumnCreateStore.ts @@ -36,7 +36,7 @@ const [useProvideColumnCreateStore, useColumnCreateStore] = createInjectionState const { $e } = useNuxtApp() - const sqlUi = ref(meta.value?.base_id ? sqlUis.value[meta.value?.base_id] : sqlUis.value[0]) + const sqlUi = ref(meta.value?.base_id ? sqlUis.value[meta.value?.base_id] : Object.values(sqlUis.value)[0]) const isEdit = computed(() => !!column?.value?.id) diff --git a/packages/nc-gui/composables/useSmartsheetStore.ts b/packages/nc-gui/composables/useSmartsheetStore.ts index 934924154d..a0982e4b66 100644 --- a/packages/nc-gui/composables/useSmartsheetStore.ts +++ b/packages/nc-gui/composables/useSmartsheetStore.ts @@ -15,7 +15,7 @@ const [useProvideSmartsheetStore, useSmartsheetStore] = useInjectionState( const { $api } = useNuxtApp() const { sqlUis } = useProject() - const sqlUi = ref(meta.value?.base_id ? sqlUis.value[meta.value?.base_id] : sqlUis.value[0]) + const sqlUi = ref(meta.value?.base_id ? sqlUis.value[meta.value?.base_id] : Object.values(sqlUis.value)[0]) const cellRefs = ref([]) diff --git a/packages/nc-gui/composables/useTable.ts b/packages/nc-gui/composables/useTable.ts index b95a3c880b..3de4ddde10 100644 --- a/packages/nc-gui/composables/useTable.ts +++ b/packages/nc-gui/composables/useTable.ts @@ -16,7 +16,7 @@ import { } from '#imports' import { TabType } from '~/lib' -export function useTable(onTableCreate?: (tableMeta: TableType) => void) { +export function useTable(onTableCreate?: (tableMeta: TableType) => void, baseId?: string) { const table = reactive<{ title: string; table_name: string; columns: string[] }>({ title: '', table_name: '', @@ -34,7 +34,7 @@ export function useTable(onTableCreate?: (tableMeta: TableType) => void) { const { closeTab } = useTabs() const { sqlUis, project, tables } = useProject() - const sqlUi = ref(sqlUis.value[0]) + const sqlUi = computed(() => (baseId && sqlUis.value[baseId] ? sqlUis.value[baseId] : Object.values(sqlUis.value)[0])) const createTable = async () => { if (!sqlUi?.value) return @@ -49,7 +49,7 @@ export function useTable(onTableCreate?: (tableMeta: TableType) => void) { }) try { - const tableMeta = await $api.dbTable.create(project?.value?.id as string, { + const tableMeta = await $api.base.tableCreate(project?.value?.id as string, baseId as string, { ...table, columns, })