diff --git a/packages/nc-gui/components/dlg/ViewCreate.vue b/packages/nc-gui/components/dlg/ViewCreate.vue index 9b22e0173f..0faaf29d65 100644 --- a/packages/nc-gui/components/dlg/ViewCreate.vue +++ b/packages/nc-gui/components/dlg/ViewCreate.vue @@ -13,7 +13,7 @@ interface Props { groupingFieldColumnId?: string geoDataFieldColumnId?: string tableId: string - calendarRange: Array<{ + calendarRange?: Array<{ fk_from_column_id: string fk_to_column_id: string | null // for ee only }> @@ -36,7 +36,7 @@ interface Form { // for calendar view only calendar_range: Array<{ fk_from_column_id: string - fk_to_column_id: string | undefined // for ee only + fk_to_column_id: string | null // for ee only }> } diff --git a/packages/nc-gui/components/erd/View.vue b/packages/nc-gui/components/erd/View.vue index dedd081500..3af929cde1 100644 --- a/packages/nc-gui/components/erd/View.vue +++ b/packages/nc-gui/components/erd/View.vue @@ -45,14 +45,26 @@ const config = reactive({ isFullScreen: false, }) -const loadMetaOfTablesNotInMetas = async (localTables: TableType[]) => { - await Promise.all( - localTables - .filter((table) => !metas.value[table.id!]) - .map(async (table) => { +const fetchMissingTableMetas = async (localTables: TableType[]) => { + const chunkSize = 5 + + // Function to process a chunk of tables + const processChunk = async (chunk: TableType[]) => { + await Promise.all( + chunk.map(async (table) => { await getMeta(table.id!) }), - ) + ) + } + + // filter out tables that are already loaded and are not from the same source + const filteredTables = localTables.filter((t) => !metas.value[t.id!] && t.source_id === props.sourceId) + + // Split the tables into chunks and process each chunk sequentially to avoid hitting throttling limits + for (let i = 0; i < filteredTables.length; i += chunkSize) { + const chunk = filteredTables.slice(i, i + chunkSize) + await processChunk(chunk) + } } const populateTables = async () => { @@ -73,7 +85,7 @@ const populateTables = async () => { localTables = baseTables.value } - await loadMetaOfTablesNotInMetas(localTables) + await fetchMissingTableMetas(localTables) tables.value = localTables .filter( diff --git a/packages/nc-gui/components/nc/Checkbox.vue b/packages/nc-gui/components/nc/Checkbox.vue index f3c650da85..865437e457 100644 --- a/packages/nc-gui/components/nc/Checkbox.vue +++ b/packages/nc-gui/components/nc/Checkbox.vue @@ -1,6 +1,6 @@ diff --git a/packages/nc-gui/components/shared-view/AskPassword.vue b/packages/nc-gui/components/shared-view/AskPassword.vue index dd5efc9a9d..1cce0c76a1 100644 --- a/packages/nc-gui/components/shared-view/AskPassword.vue +++ b/packages/nc-gui/components/shared-view/AskPassword.vue @@ -44,13 +44,6 @@ const focus: VNodeRef = (el: typeof InputPassword) => { return el && el?.focus?.() } -watch( - () => formState.value.password, - () => { - passwordError.value = null - }, -) - const bgImageName = computed(() => { switch (props.viewType) { case ViewTypes.GRID: @@ -97,6 +90,7 @@ const bgImageName = computed(() => { class="!rounded-lg !text-small" hide-details :placeholder="$t('msg.enterPassword')" + @input="passwordError = null" />
{{ passwordError }}
diff --git a/packages/nc-gui/components/smartsheet/Form.vue b/packages/nc-gui/components/smartsheet/Form.vue index 4a634dc796..16c00d6191 100644 --- a/packages/nc-gui/components/smartsheet/Form.vue +++ b/packages/nc-gui/components/smartsheet/Form.vue @@ -969,7 +969,7 @@ useEventListener( :bordered="false" :data-testid="NcForm.heading" :data-title="NcForm.heading" - @update:value="updateView" + @input="updateView" @focus="activeRow = NcForm.heading" @blur="activeRow = ''" /> @@ -1280,7 +1280,7 @@ useEventListener( :placeholder="$t('msg.info.formInput')" @focus="onFocusActiveFieldLabel" @keydown.enter.prevent - @update:value="updateFieldTitle" + @input="updateFieldTitle($event.target.value)" @change="updateColMeta(activeField)" /> diff --git a/packages/nc-gui/components/smartsheet/Kanban.vue b/packages/nc-gui/components/smartsheet/Kanban.vue index 5f888edebb..ec8d80adea 100644 --- a/packages/nc-gui/components/smartsheet/Kanban.vue +++ b/packages/nc-gui/components/smartsheet/Kanban.vue @@ -113,7 +113,6 @@ const kanbanContainerRef = ref() const selectedStackTitle = ref('') reloadViewDataHook?.on(async () => { - console.log('load') await loadKanbanMeta() await loadKanbanData() }) diff --git a/packages/nc-gui/components/smartsheet/column/AttachmentOptions.vue b/packages/nc-gui/components/smartsheet/column/AttachmentOptions.vue index ac631a85be..be8a20d35f 100644 --- a/packages/nc-gui/components/smartsheet/column/AttachmentOptions.vue +++ b/packages/nc-gui/components/smartsheet/column/AttachmentOptions.vue @@ -33,7 +33,7 @@ vModel.value.meta = { // allow all mime types by default supportedAttachmentMimeTypes: ['*'], }), - ...vModel.value.meta, + ...(vModel.value.meta || {}), } const expandedKeys = ref<(string | number)[]>([]) diff --git a/packages/nc-gui/components/smartsheet/column/BarcodeOptions.vue b/packages/nc-gui/components/smartsheet/column/BarcodeOptions.vue index e1085cffaa..14bff16e65 100644 --- a/packages/nc-gui/components/smartsheet/column/BarcodeOptions.vue +++ b/packages/nc-gui/components/smartsheet/column/BarcodeOptions.vue @@ -1,5 +1,5 @@ diff --git a/packages/nc-gui/components/smartsheet/column/DateTimeOptions.vue b/packages/nc-gui/components/smartsheet/column/DateTimeOptions.vue index 8ecb98be33..81c4e69ae9 100644 --- a/packages/nc-gui/components/smartsheet/column/DateTimeOptions.vue +++ b/packages/nc-gui/components/smartsheet/column/DateTimeOptions.vue @@ -1,5 +1,5 @@ diff --git a/packages/nc-gui/components/smartsheet/column/DecimalOptions.vue b/packages/nc-gui/components/smartsheet/column/DecimalOptions.vue index 11adec8061..42ac23ffd2 100644 --- a/packages/nc-gui/components/smartsheet/column/DecimalOptions.vue +++ b/packages/nc-gui/components/smartsheet/column/DecimalOptions.vue @@ -1,4 +1,6 @@ diff --git a/packages/nc-gui/components/smartsheet/column/EditOrAdd.vue b/packages/nc-gui/components/smartsheet/column/EditOrAdd.vue index 303020633d..8d9893beb2 100644 --- a/packages/nc-gui/components/smartsheet/column/EditOrAdd.vue +++ b/packages/nc-gui/components/smartsheet/column/EditOrAdd.vue @@ -115,12 +115,13 @@ const showDeprecated = ref(false) const isSystemField = (t: { name: UITypes }) => [UITypes.CreatedBy, UITypes.CreatedTime, UITypes.LastModifiedBy, UITypes.LastModifiedTime].includes(t.name) -const uiFilters = (t: { name: UITypes; virtual?: number }) => { +const uiFilters = (t: { name: UITypes; virtual?: number; deprecated?: boolean }) => { const systemFiledNotEdited = !isSystemField(t) || formState.value.uidt === t.name || !isEdit.value const geoDataToggle = geoDataToggleCondition(t) && (!isEdit.value || !t.virtual || t.name === formState.value.uidt) const specificDBType = t.name === UITypes.SpecificDBType && isXcdbBase(meta.value?.source_id) + const showDeprecatedField = !t.deprecated || showDeprecated.value - return systemFiledNotEdited && geoDataToggle && !specificDBType + return systemFiledNotEdited && geoDataToggle && !specificDBType && showDeprecatedField } const uiTypesOptions = computed(() => { @@ -329,7 +330,6 @@ const filterOption = (input: string, option: { value: UITypes }) => { 'w-[384px]': !props.embedMode, 'min-w-500px': formState.uidt === UITypes.LinkToAnotherRecord || formState.uidt === UITypes.Links, '!w-116 overflow-visible': formState.uidt === UITypes.Formula && !props.embedMode, - '!w-[500px]': formState.uidt === UITypes.Attachment && !props.embedMode && !appInfo.ee, '!w-[600px]': formState.uidt === UITypes.LinkToAnotherRecord || formState.uidt === UITypes.Links, 'shadow-lg border-1 border-gray-200 shadow-gray-300 rounded-xl p-5': !embedMode, }" diff --git a/packages/nc-gui/components/smartsheet/column/LinkOptions.vue b/packages/nc-gui/components/smartsheet/column/LinkOptions.vue index 3c4fd075c0..69109f7e4c 100644 --- a/packages/nc-gui/components/smartsheet/column/LinkOptions.vue +++ b/packages/nc-gui/components/smartsheet/column/LinkOptions.vue @@ -44,7 +44,7 @@ setAdditionalValidations({ vModel.value.meta = { singular: '', plural: '', - ...vModel.value.meta, + ...(vModel.value.meta || {}), } diff --git a/packages/nc-gui/components/smartsheet/column/NumberOptions.vue b/packages/nc-gui/components/smartsheet/column/NumberOptions.vue index e43bb4efcd..2732180a26 100644 --- a/packages/nc-gui/components/smartsheet/column/NumberOptions.vue +++ b/packages/nc-gui/components/smartsheet/column/NumberOptions.vue @@ -1,4 +1,6 @@ diff --git a/packages/nc-gui/components/smartsheet/column/PercentOptions.vue b/packages/nc-gui/components/smartsheet/column/PercentOptions.vue index 26c43fd463..7e3592dbe8 100644 --- a/packages/nc-gui/components/smartsheet/column/PercentOptions.vue +++ b/packages/nc-gui/components/smartsheet/column/PercentOptions.vue @@ -1,4 +1,6 @@ diff --git a/packages/nc-gui/components/smartsheet/column/RatingOptions.vue b/packages/nc-gui/components/smartsheet/column/RatingOptions.vue index 596d282016..892517542f 100644 --- a/packages/nc-gui/components/smartsheet/column/RatingOptions.vue +++ b/packages/nc-gui/components/smartsheet/column/RatingOptions.vue @@ -1,4 +1,6 @@ diff --git a/packages/nc-gui/components/smartsheet/column/UserOptions.vue b/packages/nc-gui/components/smartsheet/column/UserOptions.vue index 4235bb120e..f8135393d7 100644 --- a/packages/nc-gui/components/smartsheet/column/UserOptions.vue +++ b/packages/nc-gui/components/smartsheet/column/UserOptions.vue @@ -1,4 +1,6 @@