From 6255b20476b2409308cedc95c508e1bc5192024d Mon Sep 17 00:00:00 2001 From: Moein Moradi Date: Mon, 1 Sep 2025 16:55:20 +0330 Subject: [PATCH] feat: add wbs tree --- resources/js/main.js | 21 ++- .../js/navigation/horizontal/dashboard.js | 57 +++---- resources/js/navigation/vertical/dashboard.js | 4 + resources/js/pages/dashboards/crm.vue | 1 - resources/js/pages/dashboards/wbs.vue | 147 ++++++++++++++++++ typed-router.d.ts | 1 + 6 files changed, 196 insertions(+), 35 deletions(-) create mode 100644 resources/js/pages/dashboards/wbs.vue diff --git a/resources/js/main.js b/resources/js/main.js index 0f4d0fb..c10510f 100644 --- a/resources/js/main.js +++ b/resources/js/main.js @@ -3,20 +3,25 @@ import App from "@/App.vue"; import { registerPlugins } from "@core/utils/plugins"; import "gridstack/dist/gridstack.min.css"; -// AG Grid styles import "ag-grid-community/styles/ag-grid.css"; import "ag-grid-community/styles/ag-theme-alpine.css"; -import '@styles/ag-grid-overrides.scss' +import "@styles/ag-grid-overrides.scss"; -// Styles import "@core-scss/template/index.scss"; import "@styles/styles.scss"; -// Create vue app +import Highcharts from "highcharts"; +import HighchartsVue from "highcharts-vue"; +import * as Sankey from "highcharts/modules/sankey"; +import * as Organization from "highcharts/modules/organization"; +import * as Accessibility from "highcharts/modules/accessibility"; + +const plug = m => (typeof m === "function" ? m : m && typeof m.default === "function" ? m.default : null); +plug(Sankey)?.(Highcharts); +plug(Organization)?.(Highcharts); +plug(Accessibility)?.(Highcharts); + const app = createApp(App); - -// Register plugins registerPlugins(app); - -// Mount vue app +app.use(HighchartsVue); app.mount("#app"); diff --git a/resources/js/navigation/horizontal/dashboard.js b/resources/js/navigation/horizontal/dashboard.js index fc4d91f..a24f0ad 100644 --- a/resources/js/navigation/horizontal/dashboard.js +++ b/resources/js/navigation/horizontal/dashboard.js @@ -1,43 +1,48 @@ export default [ { - title: 'Dashboards', - icon: { icon: 'tabler-smart-home' }, + title: "Dashboards", + icon: { icon: "tabler-smart-home" }, children: [ { - title: 'Analytics', - to: 'dashboards-analytics', - icon: { icon: 'tabler-chart-pie-2' }, + title: "Analytics", + to: "dashboards-analytics", + icon: { icon: "tabler-chart-pie-2" }, }, { - title: 'CRM', - to: 'dashboards-crm', - icon: { icon: 'tabler-cube' }, + title: "CRM", + to: "dashboards-crm", + icon: { icon: "tabler-cube" }, }, { - title: 'Ecommerce', - to: 'dashboards-ecommerce', - icon: { icon: 'tabler-shopping-cart' }, + title: "Ecommerce", + to: "dashboards-ecommerce", + icon: { icon: "tabler-shopping-cart" }, }, { - title: 'Academy', - to: 'dashboards-academy', - icon: { icon: 'tabler-book' }, + title: "Academy", + to: "dashboards-academy", + icon: { icon: "tabler-book" }, }, { - title: 'Logistics', - to: 'dashboards-logistics', - icon: { icon: 'tabler-truck' }, + title: "Logistics", + to: "dashboards-logistics", + icon: { icon: "tabler-truck" }, + }, + { + title: "Demo", + to: "dashboards-demo", + icon: { icon: "tabler-truck" }, + }, + { + title: "Gantt", + to: "dashboards-gantt", + icon: { icon: "tabler-truck" }, }, { - title: 'Demo', - to: 'dashboards-demo', - icon: { icon: 'tabler-truck' }, - }, - { - title: 'Gantt', - to: 'dashboards-gantt', - icon: { icon: 'tabler-truck' }, + title: "WBS", + to: "dashboards-wbs", + icon: { icon: "tabler-truck" }, }, ], }, -] +]; diff --git a/resources/js/navigation/vertical/dashboard.js b/resources/js/navigation/vertical/dashboard.js index 08d2c93..a890f10 100644 --- a/resources/js/navigation/vertical/dashboard.js +++ b/resources/js/navigation/vertical/dashboard.js @@ -19,6 +19,10 @@ export default [ title: "Gantt", to: "dashboards-gantt", }, + { + title: "WBS", + to: "dashboards-wbs", + }, { title: "Academy", to: "dashboards-academy", diff --git a/resources/js/pages/dashboards/crm.vue b/resources/js/pages/dashboards/crm.vue index 21220ef..b8d4d2e 100644 --- a/resources/js/pages/dashboards/crm.vue +++ b/resources/js/pages/dashboards/crm.vue @@ -13,7 +13,6 @@ import ProjectActivityBarChart from "@/components/ProjectActivityBarChart.vue"; import AnalysisCard from "@/components/AnalysisCard.vue"; import CostOverview from "@/components/CostOverview.vue"; import GeneratedLeadsCard from "@/views/dashboards/ecommerce/EcommerceGeneratedLeads.vue"; -import GanttChart from "./gantt.vue"; import EcommerceCongratulationsJohn from '@/views/dashboards/ecommerce/EcommerceCongratulationsJohn.vue' import EcommerceEarningReports from '@/views/dashboards/ecommerce/EcommerceEarningReports.vue' diff --git a/resources/js/pages/dashboards/wbs.vue b/resources/js/pages/dashboards/wbs.vue new file mode 100644 index 0000000..ab1422d --- /dev/null +++ b/resources/js/pages/dashboards/wbs.vue @@ -0,0 +1,147 @@ + + + + + \ No newline at end of file diff --git a/typed-router.d.ts b/typed-router.d.ts index 719fcd9..d3d631f 100644 --- a/typed-router.d.ts +++ b/typed-router.d.ts @@ -81,6 +81,7 @@ declare module 'vue-router/auto-routes' { 'dashboards-demo': RouteRecordInfo<'dashboards-demo', '/dashboards/demo', Record, Record>, 'dashboards-ecommerce': RouteRecordInfo<'dashboards-ecommerce', '/dashboards/ecommerce', Record, Record>, 'dashboards-gantt': RouteRecordInfo<'dashboards-gantt', '/dashboards/gantt', Record, Record>, + 'dashboards-wbs': RouteRecordInfo<'dashboards-wbs', '/dashboards/wbs', Record, Record>, 'extensions-swiper': RouteRecordInfo<'extensions-swiper', '/extensions/swiper', Record, Record>, 'extensions-tour': RouteRecordInfo<'extensions-tour', '/extensions/tour', Record, Record>, 'forgot-password': RouteRecordInfo<'forgot-password', '/forgot-password', Record, Record>,