From 9c54174f9da53d87f909b8e52f88191b9ed71437 Mon Sep 17 00:00:00 2001 From: Ron Date: Fri, 14 Mar 2025 02:10:03 +0200 Subject: [PATCH] feat: add more pages --- composables/usePortalTags.ts | 15 +++++ pages/dashboard.vue | 70 +++++++++++++++++----- pages/dashboard/index.vue | 10 +++- pages/dashboard/interest-analytics.vue | 31 ++++++++++ pages/dashboard/interest-berth-list.vue | 30 ++++++++++ pages/dashboard/interest-berth-status.vue | 30 ++++++++++ pages/dashboard/interest-list.vue | 30 ++++++++++ pages/dashboard/interest-status.vue | 30 ++++++++++ pages/login.vue | 2 +- public/background.jpg | Bin 208862 -> 765118 bytes 10 files changed, 229 insertions(+), 19 deletions(-) create mode 100644 composables/usePortalTags.ts create mode 100644 pages/dashboard/interest-analytics.vue create mode 100644 pages/dashboard/interest-berth-list.vue create mode 100644 pages/dashboard/interest-berth-status.vue create mode 100644 pages/dashboard/interest-list.vue create mode 100644 pages/dashboard/interest-status.vue diff --git a/composables/usePortalTags.ts b/composables/usePortalTags.ts new file mode 100644 index 0000000..d1ecea8 --- /dev/null +++ b/composables/usePortalTags.ts @@ -0,0 +1,15 @@ +export const usePortalTags = () => { + const user = useDirectusUser(); + + const tags = computed(() => (toValue(user)?.tags as Array) || []); + + const details = computed(() => { + const value = toValue(tags); + + return { + interest: value.includes("portal-interest"), + }; + }); + + return details; +}; diff --git a/pages/dashboard.vue b/pages/dashboard.vue index a73f56e..d56bbbf 100644 --- a/pages/dashboard.vue +++ b/pages/dashboard.vue @@ -5,14 +5,11 @@ - @@ -48,13 +45,9 @@ - - - Site Analytics - - - - Data Analytics + + + @@ -70,6 +63,53 @@ definePageMeta({ const { mdAndDown } = useDisplay(); const { logout } = useDirectusAuth(); +const tags = usePortalTags(); + +const interestMenu = [ + { + to: "/dashboard/interest-analytics", + icon: "mdi-view-dashboard", + title: "Analytics", + }, + { + to: "/dashboard/interest-berth-list", + icon: "mdi-table", + title: "Berth List", + }, + { + to: "/dashboard/interest-berth-status", + icon: "mdi-sail-boat", + title: "Berth Status", + }, + { + to: "/dashboard/interest-list", + icon: "mdi-view-list", + title: "Interest List", + }, + { + to: "/dashboard/interest-status", + icon: "mdi-account-check", + title: "Interest Status", + }, +]; + +const defaultMenu = [ + { + to: "/dashboard/site", + icon: "mdi-view-dashboard", + title: "Site Analytics", + }, + { + to: "/dashboard/data", + icon: "mdi-finance", + title: "Data Analytics", + }, +]; + +const menu = computed(() => + toValue(tags).interest ? interestMenu : defaultMenu +); + const logOut = async () => { await logout(); return navigateTo("/login"); diff --git a/pages/dashboard/index.vue b/pages/dashboard/index.vue index 7a97feb..0586111 100644 --- a/pages/dashboard/index.vue +++ b/pages/dashboard/index.vue @@ -1,5 +1,9 @@ diff --git a/pages/dashboard/interest-analytics.vue b/pages/dashboard/interest-analytics.vue new file mode 100644 index 0000000..4660a1b --- /dev/null +++ b/pages/dashboard/interest-analytics.vue @@ -0,0 +1,31 @@ +