diff --git a/packages/nc-gui-v2/components/dashboard/settings/Misc.vue b/packages/nc-gui-v2/components/dashboard/settings/Misc.vue new file mode 100644 index 0000000000..8908ee9ccc --- /dev/null +++ b/packages/nc-gui-v2/components/dashboard/settings/Misc.vue @@ -0,0 +1,13 @@ + + + diff --git a/packages/nc-gui-v2/components/dashboard/settings/Modal.vue b/packages/nc-gui-v2/components/dashboard/settings/Modal.vue index b4a5fbbcff..e280c7c8cb 100644 --- a/packages/nc-gui-v2/components/dashboard/settings/Modal.vue +++ b/packages/nc-gui-v2/components/dashboard/settings/Modal.vue @@ -5,6 +5,7 @@ import AuditTab from './AuditTab.vue' import AppStore from './AppStore.vue' import Metadata from './Metadata.vue' import UIAcl from './UIAcl.vue' +import Misc from './Misc.vue' import ApiTokenManagement from '~/components/tabs/auth/ApiTokenManagement.vue' import UserManagement from '~/components/tabs/auth/UserManagement.vue' import StoreFrontOutline from '~icons/mdi/storefront-outline' @@ -86,6 +87,10 @@ const tabsInfo: TabGroup = { title: 'UI Access Control', body: UIAcl, }, + misc: { + title: 'Misc', + body: Misc, + }, }, }, audit: { diff --git a/packages/nc-gui-v2/components/dashboard/settings/UIAcl.vue b/packages/nc-gui-v2/components/dashboard/settings/UIAcl.vue index 4aaaf11afe..56d438baad 100644 --- a/packages/nc-gui-v2/components/dashboard/settings/UIAcl.vue +++ b/packages/nc-gui-v2/components/dashboard/settings/UIAcl.vue @@ -7,6 +7,8 @@ const { $api, $e } = useNuxtApp() const { project } = useProject() +const { includeM2M } = useGlobal() + const roles = $ref(['editor', 'commenter', 'viewer']) let isLoading = $ref(false) @@ -28,9 +30,9 @@ async function loadTableList() { if (!project.value?.id) return isLoading = true - // TODO includeM2M + tables = await $api.project.modelVisibilityList(project.value?.id, { - includeM2M: false, + includeM2M: includeM2M.value, }) } catch (e) { console.error(e) diff --git a/packages/nc-gui-v2/composables/useGlobal/state.ts b/packages/nc-gui-v2/composables/useGlobal/state.ts index c61b3829cf..3ef7430700 100644 --- a/packages/nc-gui-v2/composables/useGlobal/state.ts +++ b/packages/nc-gui-v2/composables/useGlobal/state.ts @@ -58,6 +58,7 @@ export function useGlobalState(storageKey = 'nocodb-gui-v2'): State { }, filterAutoSave: true, previewAs: null, + includeM2M: false, } /** saves a reactive state, any change to these values will write/delete to localStorage */ diff --git a/packages/nc-gui-v2/composables/useGlobal/types.ts b/packages/nc-gui-v2/composables/useGlobal/types.ts index 0e57222752..d9fc67463d 100644 --- a/packages/nc-gui-v2/composables/useGlobal/types.ts +++ b/packages/nc-gui-v2/composables/useGlobal/types.ts @@ -35,6 +35,7 @@ export interface StoredState { feedbackForm: FeedbackForm filterAutoSave: boolean previewAs: string | null + includeM2M: boolean } export type State = ToRefs> & { diff --git a/packages/nc-gui-v2/composables/useProject.ts b/packages/nc-gui-v2/composables/useProject.ts index f11e5a1124..b32ddf329d 100644 --- a/packages/nc-gui-v2/composables/useProject.ts +++ b/packages/nc-gui-v2/composables/useProject.ts @@ -12,6 +12,7 @@ export function useProject(projectId?: MaybeRef) { const project = useState('project') const tables = useState('tables', () => [] as TableType[]) const route = useRoute() + const { includeM2M } = useGlobal() // todo: refactor path param name and variable name const projectType = $computed(() => route.params.projectType as string) @@ -27,7 +28,9 @@ export function useProject(projectId?: MaybeRef) { async function loadTables() { if (project.value.id) { - const tablesResponse = await $api.dbTable.list(project.value.id) + const tablesResponse = await $api.dbTable.list(project.value.id, { + includeM2M: includeM2M.value, + }) if (tablesResponse.list) tables.value = tablesResponse.list } }