-
{{ table.column.title }}
-
({{ relationNames[table.col.type] }} {{ table.title || table.table_name }})
+
+
+
+
{{ table.column.title }}
+
+ ({{ relationNames[table.col.type] }} {{ table.title || table.table_name }})
+
diff --git a/packages/nc-gui-v2/components/smartsheet-header/Menu.vue b/packages/nc-gui-v2/components/smartsheet-header/Menu.vue
index bc73968e60..3879cb06ab 100644
--- a/packages/nc-gui-v2/components/smartsheet-header/Menu.vue
+++ b/packages/nc-gui-v2/components/smartsheet-header/Menu.vue
@@ -1,4 +1,5 @@
-
+
-
-
-
-
- {{ $t('general.edit') }}
-
-
-
-
-
- {{ $t('general.delete') }}
-
-
+
+
+
+
+
+ {{ $t('general.delete') }}
+
+
+
+
+
diff --git a/packages/nc-gui-v2/components/smartsheet-header/VirtualCell.vue b/packages/nc-gui-v2/components/smartsheet-header/VirtualCell.vue
index 2da6fd20ce..589e9963bf 100644
--- a/packages/nc-gui-v2/components/smartsheet-header/VirtualCell.vue
+++ b/packages/nc-gui-v2/components/smartsheet-header/VirtualCell.vue
@@ -16,7 +16,7 @@ provide(ColumnInj, column)
const { metas } = useMetas()
const meta = inject(MetaInj)
-const { isLookup, isBt, isRollup, isMm, isHm, isFormula, isCount } = useVirtualCell(column)
+const { isLookup, isBt, isRollup, isMm, isHm, isFormula } = useVirtualCell(column)
const colOptions = $computed(() => column.value?.colOptions)
const tableTile = $computed(() => meta?.value?.title)
diff --git a/packages/nc-gui-v2/components/smartsheet-header/VirtualCellIcon.vue b/packages/nc-gui-v2/components/smartsheet-header/VirtualCellIcon.vue
index 99b6eb6aca..33c48863b5 100644
--- a/packages/nc-gui-v2/components/smartsheet-header/VirtualCellIcon.vue
+++ b/packages/nc-gui-v2/components/smartsheet-header/VirtualCellIcon.vue
@@ -11,6 +11,7 @@ import FormulaIcon from '~icons/mdi/math-integral'
import RollupIcon from '~icons/mdi/movie-roll'
import CountIcon from '~icons/mdi/counter'
import SpecificDBTypeIcon from '~icons/mdi/database-settings'
+import TableColumnPlusBefore from '~icons/mdi/table-column-plus-before'
const props = defineProps<{ columnMeta?: ColumnType }>()
const columnMeta = toRef(props, 'columnMeta')
@@ -34,7 +35,7 @@ const icon = computed(() => {
case UITypes.Formula:
return FormulaIcon
case UITypes.Lookup:
- return GenericIcon
+ return TableColumnPlusBefore
case UITypes.Rollup:
return RollupIcon
case UITypes.Count:
diff --git a/packages/nc-gui-v2/components/smartsheet-toolbar/ColumnFilter.vue b/packages/nc-gui-v2/components/smartsheet-toolbar/ColumnFilter.vue
index 1de9644763..49b2485012 100644
--- a/packages/nc-gui-v2/components/smartsheet-toolbar/ColumnFilter.vue
+++ b/packages/nc-gui-v2/components/smartsheet-toolbar/ColumnFilter.vue
@@ -5,7 +5,7 @@ import FieldListAutoCompleteDropdown from './FieldListAutoCompleteDropdown.vue'
import { useNuxtApp } from '#app'
import { inject, useViewFilters } from '#imports'
import { comparisonOpList } from '~/utils/filterUtils'
-import { ActiveViewInj, IsLockedInj, MetaInj, ReloadViewDataHookInj } from '~/context'
+import { ActiveViewInj, MetaInj, ReloadViewDataHookInj } from '~/context'
import MdiDeleteIcon from '~icons/mdi/close-box'
import MdiAddIcon from '~icons/mdi/plus'
@@ -16,7 +16,6 @@ const emit = defineEmits(['update:filtersLength'])
const meta = inject(MetaInj)
const activeView = inject(ActiveViewInj)
const reloadDataHook = inject(ReloadViewDataHookInj)
-const isLocked = inject(IsLockedInj)
// todo: replace with inject or get from state
const shared = ref(false)
diff --git a/packages/nc-gui-v2/components/smartsheet-toolbar/ColumnFilterMenu.vue b/packages/nc-gui-v2/components/smartsheet-toolbar/ColumnFilterMenu.vue
index 40b644614e..afa5379404 100644
--- a/packages/nc-gui-v2/components/smartsheet-toolbar/ColumnFilterMenu.vue
+++ b/packages/nc-gui-v2/components/smartsheet-toolbar/ColumnFilterMenu.vue
@@ -1,12 +1,10 @@
-
diff --git a/packages/nc-gui-v2/pages/index/user/index/index.vue b/packages/nc-gui-v2/pages/index/user/index/index.vue
index 06ed2d8c12..8835749bcd 100644
--- a/packages/nc-gui-v2/pages/index/user/index/index.vue
+++ b/packages/nc-gui-v2/pages/index/user/index/index.vue
@@ -6,7 +6,7 @@ import { reactive, ref, useApi } from '#imports'
import MaterialSymbolsWarning from '~icons/material-symbols/warning'
import MdiKeyChange from '~icons/mdi/key-change'
-const { api, isLoading } = useApi()
+const { api } = useApi()
const { t } = useI18n()
@@ -34,7 +34,7 @@ const formRules = {
{ required: true, message: t('msg.error.signUpRules.passwdRequired') },
// Passwords match
{
- validator: (_: unknown, v: string) => {
+ validator: (_: unknown, _v: string) => {
return new Promise((resolve, reject) => {
if (form.password === form.passwordRepeat) return resolve(true)
reject(new Error(t('msg.error.signUpRules.passwdMismatch')))
diff --git a/packages/nc-gui-v2/pages/nc/[projectId]/index/index.vue b/packages/nc-gui-v2/pages/nc/[projectId]/index/index.vue
index fc64b769e1..9256d50063 100644
--- a/packages/nc-gui-v2/pages/nc/[projectId]/index/index.vue
+++ b/packages/nc-gui-v2/pages/nc/[projectId]/index/index.vue
@@ -21,12 +21,6 @@ const currentMenu = ref(['addORImport'])
provide(TabMetaInj, activeTab)
-function onEdit(targetKey: number, action: string) {
- if (action !== 'add') {
- closeTab(targetKey)
- }
-}
-
function openQuickImportDialog(type: string) {
quickImportDialog.value = true
importType.value = type
diff --git a/packages/nc-gui-v2/pages/project/index/[id].vue b/packages/nc-gui-v2/pages/project/index/[id].vue
index cbf745bd24..35b04df940 100644
--- a/packages/nc-gui-v2/pages/project/index/[id].vue
+++ b/packages/nc-gui-v2/pages/project/index/[id].vue
@@ -4,13 +4,13 @@ import type { Form } from 'ant-design-vue'
import type { ProjectType } from 'nocodb-sdk'
import { ref } from 'vue'
import { useToast } from 'vue-toastification'
-import { navigateTo, useNuxtApp, useRoute } from '#app'
+import { navigateTo, useRoute } from '#app'
import { extractSdkResponseErrorMsg } from '~/utils/errorUtils'
import { projectTitleValidator } from '~/utils/validation'
import MaterialSymbolsRocketLaunchOutline from '~icons/material-symbols/rocket-launch-outline'
import { nextTick, reactive, useSidebar } from '#imports'
-const { api, isLoading } = useApi()
+const { api } = useApi()
useSidebar({ hasSidebar: false })
diff --git a/packages/nc-gui-v2/pages/project/index/create.vue b/packages/nc-gui-v2/pages/project/index/create.vue
index 9e9289aed1..b765696412 100644
--- a/packages/nc-gui-v2/pages/project/index/create.vue
+++ b/packages/nc-gui-v2/pages/project/index/create.vue
@@ -1,5 +1,5 @@
diff --git a/packages/nocodb-sdk/src/lib/Api.ts b/packages/nocodb-sdk/src/lib/Api.ts
index 909ba74e72..f3d6548d06 100644
--- a/packages/nocodb-sdk/src/lib/Api.ts
+++ b/packages/nocodb-sdk/src/lib/Api.ts
@@ -122,7 +122,7 @@ export interface TableType {
export interface ViewType {
id?: string;
- title?: string;
+ title: string;
deleted?: boolean;
order?: number;
fk_model_id?: string;
@@ -163,6 +163,7 @@ export interface TableReqType {
pinned?: boolean;
deleted?: boolean;
order?: number;
+ mm?: boolean;
columns?: ColumnType[];
}
@@ -234,6 +235,8 @@ export interface ColumnType {
deleted?: boolean;
visible?: boolean;
order?: number;
+ system?: number | boolean;
+ meta?: any;
colOptions?:
| LinkToAnotherRecordType
| FormulaType
@@ -1515,7 +1518,7 @@ export class Api<
*/
reorder: (
tableId: string,
- data: { order?: string },
+ data: { order?: number },
params: RequestParams = {}
) =>
this.request({
@@ -1629,7 +1632,7 @@ export class Api<
update: (
viewId: string,
data: {
- order?: string;
+ order?: number;
title?: string;
show_system_fields?: boolean;
lock_type?: 'collaborative' | 'locked' | 'personal';
diff --git a/packages/nocodb/src/lib/models/View.ts b/packages/nocodb/src/lib/models/View.ts
index 844bcfaf95..8941b27a14 100644
--- a/packages/nocodb/src/lib/models/View.ts
+++ b/packages/nocodb/src/lib/models/View.ts
@@ -23,7 +23,7 @@ import extractProps from '../meta/helpers/extractProps';
const { v4: uuidv4 } = require('uuid');
export default class View implements ViewType {
id?: string;
- title?: string;
+ title: string;
uuid?: string;
password?: string;
show: boolean;
diff --git a/scripts/sdk/swagger.json b/scripts/sdk/swagger.json
index 741f09f841..97f7a52a62 100644
--- a/scripts/sdk/swagger.json
+++ b/scripts/sdk/swagger.json
@@ -1334,7 +1334,7 @@
"type": "object",
"properties": {
"order": {
- "type": "string"
+ "type": "number"
}
}
}
@@ -1506,7 +1506,7 @@
"type": "object",
"properties": {
"order": {
- "type": "string"
+ "type": "number"
},
"title": {
"type": "string"
@@ -6011,7 +6011,8 @@
"type": "string"
},
"title": {
- "type": "string"
+ "type": "string",
+ "required": true
},
"deleted": {
"type": "boolean"
@@ -6233,6 +6234,9 @@
"order": {
"type": "number"
},
+ "mm": {
+ "type": "boolean"
+ },
"columns": {
"type": "array",
"items": {
@@ -6579,6 +6583,13 @@
"order": {
"type": "number"
},
+ "system": {
+ "type": [
+ "number",
+ "boolean"
+ ]
+ },
+ "meta": {},
"colOptions": {
"oneOf": [
{