From ab9b9fa8c4aabbdfb6752b15910476deb0cca8a3 Mon Sep 17 00:00:00 2001 From: mertmit Date: Tue, 26 Jul 2022 20:08:18 +0300 Subject: [PATCH 1/9] feat(gui-v2): project metadata Signed-off-by: mertmit --- .../dashboard/settings/Metadata.vue | 110 ++++++++++++++++++ .../dashboard/settings/SettingsModal.vue | 3 +- 2 files changed, 112 insertions(+), 1 deletion(-) create mode 100644 packages/nc-gui-v2/components/dashboard/settings/Metadata.vue diff --git a/packages/nc-gui-v2/components/dashboard/settings/Metadata.vue b/packages/nc-gui-v2/components/dashboard/settings/Metadata.vue new file mode 100644 index 0000000000..334bec0c80 --- /dev/null +++ b/packages/nc-gui-v2/components/dashboard/settings/Metadata.vue @@ -0,0 +1,110 @@ + + + diff --git a/packages/nc-gui-v2/components/dashboard/settings/SettingsModal.vue b/packages/nc-gui-v2/components/dashboard/settings/SettingsModal.vue index ddc82ef0cc..ccb6bd4974 100644 --- a/packages/nc-gui-v2/components/dashboard/settings/SettingsModal.vue +++ b/packages/nc-gui-v2/components/dashboard/settings/SettingsModal.vue @@ -2,6 +2,7 @@ import type { FunctionalComponent, SVGAttributes } from 'vue' import AuditTab from './AuditTab.vue' import AppStore from './AppStore.vue' +import Metadata from './Metadata.vue' import StoreFrontOutline from '~icons/mdi/storefront-outline' import TeamFillIcon from '~icons/ri/team-fill' import MultipleTableIcon from '~icons/mdi/table-multiple' @@ -61,7 +62,7 @@ const tabsInfo: TabGroup = { subTabs: { metaData: { title: 'Metadata', - body: () => AuditTab, + body: () => Metadata, }, acl: { title: 'UI Access Control', From d3e11dafafc73981e58d6b91e7a264d5f22159d0 Mon Sep 17 00:00:00 2001 From: mertmit Date: Tue, 26 Jul 2022 20:08:30 +0300 Subject: [PATCH 2/9] feat(gui-v2): project UI ACL Signed-off-by: mertmit --- .../dashboard/settings/SettingsModal.vue | 3 +- .../components/dashboard/settings/UIAcl.vue | 167 ++++++++++++++++++ 2 files changed, 169 insertions(+), 1 deletion(-) create mode 100644 packages/nc-gui-v2/components/dashboard/settings/UIAcl.vue diff --git a/packages/nc-gui-v2/components/dashboard/settings/SettingsModal.vue b/packages/nc-gui-v2/components/dashboard/settings/SettingsModal.vue index ccb6bd4974..b3eb076fa7 100644 --- a/packages/nc-gui-v2/components/dashboard/settings/SettingsModal.vue +++ b/packages/nc-gui-v2/components/dashboard/settings/SettingsModal.vue @@ -3,6 +3,7 @@ import type { FunctionalComponent, SVGAttributes } from 'vue' import AuditTab from './AuditTab.vue' import AppStore from './AppStore.vue' import Metadata from './Metadata.vue' +import UIAcl from './UIAcl.vue' import StoreFrontOutline from '~icons/mdi/storefront-outline' import TeamFillIcon from '~icons/ri/team-fill' import MultipleTableIcon from '~icons/mdi/table-multiple' @@ -66,7 +67,7 @@ const tabsInfo: TabGroup = { }, acl: { title: 'UI Access Control', - body: () => AuditTab, + body: () => UIAcl, }, }, }, diff --git a/packages/nc-gui-v2/components/dashboard/settings/UIAcl.vue b/packages/nc-gui-v2/components/dashboard/settings/UIAcl.vue new file mode 100644 index 0000000000..7a2b5eeaea --- /dev/null +++ b/packages/nc-gui-v2/components/dashboard/settings/UIAcl.vue @@ -0,0 +1,167 @@ + + + From ab835aed092808526492de226d9b9dc065d24cf2 Mon Sep 17 00:00:00 2001 From: mertmit Date: Tue, 26 Jul 2022 20:43:41 +0300 Subject: [PATCH 3/9] fix(gui-v2): make UI ACL role columns same size Signed-off-by: mertmit --- packages/nc-gui-v2/components/dashboard/settings/UIAcl.vue | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/nc-gui-v2/components/dashboard/settings/UIAcl.vue b/packages/nc-gui-v2/components/dashboard/settings/UIAcl.vue index 7a2b5eeaea..b361ded48f 100644 --- a/packages/nc-gui-v2/components/dashboard/settings/UIAcl.vue +++ b/packages/nc-gui-v2/components/dashboard/settings/UIAcl.vue @@ -55,7 +55,6 @@ const columns = [ { title: tableHeaderRenderer('Table name'), name: 'table_name', - onFilter: (value: string, record: any) => record._ptn.indexOf(value) === 0, }, { title: tableHeaderRenderer('View name'), @@ -65,14 +64,17 @@ const columns = [ // { icon: MdiGridIcon, color: 'blue' }, title: tableHeaderRenderer('Editor'), name: 'editor', + width: 150, }, { title: tableHeaderRenderer('Commenter'), name: 'commenter', + width: 150, }, { title: tableHeaderRenderer('Viewer'), name: 'viewer', + width: 150, }, ] From ce93117f890ceb2348ffd7da2f8b1fe3645fbb49 Mon Sep 17 00:00:00 2001 From: mertmit Date: Tue, 26 Jul 2022 20:44:28 +0300 Subject: [PATCH 4/9] feat(gui-v2): improved UI ACL table role handling Signed-off-by: mertmit --- .../components/dashboard/settings/UIAcl.vue | 53 ++++++------------- 1 file changed, 15 insertions(+), 38 deletions(-) diff --git a/packages/nc-gui-v2/components/dashboard/settings/UIAcl.vue b/packages/nc-gui-v2/components/dashboard/settings/UIAcl.vue index b361ded48f..c50ff05a51 100644 --- a/packages/nc-gui-v2/components/dashboard/settings/UIAcl.vue +++ b/packages/nc-gui-v2/components/dashboard/settings/UIAcl.vue @@ -10,6 +10,7 @@ const { $api, $e } = useNuxtApp() const { project } = useProject() const toast = useToast() +const roles = $ref>(['editor', 'commenter', 'viewer']) let isLoading = $ref(false) let tables = $ref>([]) let searchInput = $ref('') @@ -123,44 +124,20 @@ const columns = [ {{ record.title }} -
- - - - -
-
- - - - -
-
- - - - +
+
+ + + + +
From bb2a0e395e12b8b9eb6cd484568d37b06ab9984e Mon Sep 17 00:00:00 2001 From: mertmit Date: Tue, 26 Jul 2022 21:42:03 +0300 Subject: [PATCH 5/9] fix(gui-v2): requested changes for PR Signed-off-by: mertmit --- .../dashboard/settings/Metadata.vue | 4 +- .../components/dashboard/settings/UIAcl.vue | 45 +++++++++---------- 2 files changed, 23 insertions(+), 26 deletions(-) diff --git a/packages/nc-gui-v2/components/dashboard/settings/Metadata.vue b/packages/nc-gui-v2/components/dashboard/settings/Metadata.vue index 334bec0c80..54bbb68ebb 100644 --- a/packages/nc-gui-v2/components/dashboard/settings/Metadata.vue +++ b/packages/nc-gui-v2/components/dashboard/settings/Metadata.vue @@ -10,11 +10,12 @@ const toast = useToast() let isLoading = $ref(false) let isDifferent = $ref(false) -let metadiff = $ref>([]) +let metadiff = $ref([]) async function loadMetaDiff() { try { if (!project.value?.id) return + isLoading = true isDifferent = false metadiff = await $api.project.metaDiffGet(project.value?.id) @@ -34,6 +35,7 @@ async function loadMetaDiff() { async function syncMetaDiff() { try { if (!project.value?.id || !isDifferent) return + isLoading = true await $api.project.metaDiffSync(project.value.id) toast.info(`Table metadata recreated successfully`) diff --git a/packages/nc-gui-v2/components/dashboard/settings/UIAcl.vue b/packages/nc-gui-v2/components/dashboard/settings/UIAcl.vue index c50ff05a51..19efc18801 100644 --- a/packages/nc-gui-v2/components/dashboard/settings/UIAcl.vue +++ b/packages/nc-gui-v2/components/dashboard/settings/UIAcl.vue @@ -10,14 +10,23 @@ const { $api, $e } = useNuxtApp() const { project } = useProject() const toast = useToast() -const roles = $ref>(['editor', 'commenter', 'viewer']) +const roles = $ref(['editor', 'commenter', 'viewer']) let isLoading = $ref(false) -let tables = $ref>([]) -let searchInput = $ref('') +let tables = $ref([]) +let searchInput = $ref('') + +const filteredTables = computed(() => + tables.filter( + (el) => + (typeof el?._ptn === 'string' && el._ptn.toLowerCase().includes(searchInput.toLowerCase())) || + (typeof el?.title === 'string' && el.title.toLowerCase().includes(searchInput.toLowerCase())), + ), +) async function loadTableList() { try { if (!project.value?.id) return + isLoading = true // TODO includeM2M tables = await $api.project.modelVisibilityList(project.value?.id, { @@ -33,6 +42,7 @@ async function loadTableList() { async function saveUIAcl() { try { if (!project.value?.id) return + await $api.project.modelVisibilitySet( project.value.id, tables.filter((t) => t.edited), @@ -44,6 +54,11 @@ async function saveUIAcl() { $e('a:proj-meta:ui-acl') } +const onRoleCheck = (record: any, role: string) => { + record.disabled[role] = !record.disabled[role] + record.edited = true +} + onMounted(async () => { if (tables.length === 0) { await loadTableList() @@ -102,20 +117,7 @@ const columns = [
- + From 2a564f5d49e3bb0a2231eabaec43f6ce14798a0f Mon Sep 17 00:00:00 2001 From: Raju Udava <86527202+dstala@users.noreply.github.com> Date: Wed, 27 Jul 2022 16:18:01 +0530 Subject: [PATCH 9/9] chore: menu resize Signed-off-by: Raju Udava <86527202+dstala@users.noreply.github.com> --- packages/nc-gui-v2/components/dlg/AirtableImport.vue | 2 +- packages/nc-gui-v2/components/dlg/QuickImport.vue | 2 +- packages/nc-gui-v2/components/dlg/TableCreate.vue | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/nc-gui-v2/components/dlg/AirtableImport.vue b/packages/nc-gui-v2/components/dlg/AirtableImport.vue index 972aa300bb..5686825adb 100644 --- a/packages/nc-gui-v2/components/dlg/AirtableImport.vue +++ b/packages/nc-gui-v2/components/dlg/AirtableImport.vue @@ -210,7 +210,7 @@ onBeforeUnmount(() => {