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.table_name }}
-
-
-
-
-
-
-
-
-
-
{{ table.title }}
+
+
+
+
+ {{ table.table_name }}
+
+
+
+
+
+
+
+
+ {{ table.title }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ base.alias || '' }}
+ ({{ base.type || '' }})
+
+
+
+
+
+
{{
+ $t('tooltip.addTable')
+ }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
+ {{ table.table_name }}
+
+
+
+
+
+
+
+
+ {{ table.title }}
+
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -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 @@
+
+
+
+
+
+
+
+
+
+ Cancel
+
+
+
+ New
+
+
+
+
+
+
+ {{ $t('general.reload') }}
+
+
+
+
+
+
+
+
+
+
+ {{ text }}
+
+
+ {{ record.is_meta ? 'BASE' : text }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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 @@
+
+
+
+
New Base
+
+
+
+
+
+
+
+
+ {{ client.text }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('activity.useConnectionUrl') }}
+
+
{{ $t('title.advancedParameters') }}
+
+
+
+
+ {{ opt }}
+
+
+
+
+
+
+
+
+ {{ $t('tooltip.clientCert') }}
+
+
+
+ {{ $t('labels.clientCert') }}
+
+
+
+
+
+
+ {{ $t('tooltip.clientKey') }}
+
+
+ {{ $t('labels.clientKey') }}
+
+
+
+
+
+
+ {{ $t('tooltip.clientCA') }}
+
+
+
+ {{ $t('labels.serverCA') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ type }}
+
+
+
+
+
+ {{ type }}
+
+
+
+
+
+
+ {{ $t('activity.editConnJson') }}
+
+
+
+
+
+
+
+
+
+ {{ $t('activity.testDbConn') }}
+
+
+
+ {{ $t('general.submit') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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,
})