From 934c9d8e0a880badcc8542a507aad90482be0ad8 Mon Sep 17 00:00:00 2001 From: CarliPinell Date: Tue, 21 Jan 2025 14:49:39 -0400 Subject: [PATCH 1/2] saving progress ready for PR --- .../Http/Controllers/TaskController.php | 4 +- .../js/tasks/components/DashboardViewer.vue | 35 +++++--- .../components/ProcessesDashboardsMenu.vue | 86 ++++++++++++------- resources/js/tasks/router.js | 4 +- resources/views/tasks/index.blade.php | 1 + 5 files changed, 88 insertions(+), 42 deletions(-) diff --git a/ProcessMaker/Http/Controllers/TaskController.php b/ProcessMaker/Http/Controllers/TaskController.php index 415bece910..6206f28fca 100755 --- a/ProcessMaker/Http/Controllers/TaskController.php +++ b/ProcessMaker/Http/Controllers/TaskController.php @@ -62,7 +62,9 @@ public function index() $userConfiguration = (new UserConfigurationController())->index()['ui_configuration'] ?? []; - return view('tasks.index', compact('title', 'userFilter', 'defaultColumns', 'taskDraftsEnabled', 'userConfiguration', 'showOldTaskScreen')); + $currentUser = Auth::user(); + + return view('tasks.index', compact('title', 'userFilter', 'defaultColumns', 'taskDraftsEnabled', 'userConfiguration', 'showOldTaskScreen', 'currentUser')); } public function edit(ProcessRequestToken $task, string $preview = '') diff --git a/resources/js/tasks/components/DashboardViewer.vue b/resources/js/tasks/components/DashboardViewer.vue index aa5fd80457..81d8859d8f 100644 --- a/resources/js/tasks/components/DashboardViewer.vue +++ b/resources/js/tasks/components/DashboardViewer.vue @@ -1,19 +1,32 @@ \ No newline at end of file + }; + diff --git a/resources/js/tasks/components/ProcessesDashboardsMenu.vue b/resources/js/tasks/components/ProcessesDashboardsMenu.vue index 6fd5dd39f7..776fba52cd 100644 --- a/resources/js/tasks/components/ProcessesDashboardsMenu.vue +++ b/resources/js/tasks/components/ProcessesDashboardsMenu.vue @@ -22,20 +22,18 @@
-
-
- -
+
+
@@ -50,15 +48,14 @@ export default { pmql: `user_id=${window.ProcessMaker.user.id}`, processesList: [], labelIcon: "Default Icon", - dashboards: [ - { id: 1, name: "Dashboard 1" }, - { id: 2, name: "Dashboard 2" }, - { id: 3, name: "Dashboard 3" }, - ], + dashboards: [], + screen: null, + formData: null, }; }, mounted() { this.loadProcesses(); + this.loadDashboards(); }, methods: { openProcessDashboard(id, type) { @@ -76,21 +73,29 @@ export default { } }); } else { - router - .push({ - name: "dashboard", - params: { dashboardId: id.toString() }, - }) - .catch((err) => { - if (err.name !== "NavigationDuplicated") { - throw err; - } - }); + this.getDashboardViewScreen(id.toString()); } this.$emit("processDashboardSelected", { id, type }); this.$emit("menuItemSelected"); }, + callDashboardViewScreen(id, screen, formData) { + const router = this.$router || this.$root.$router; + router + .push({ + name: "dashboard", + params: { + dashboardId: id.toString(), + screen: screen, + formData: formData, + }, + }) + .catch((err) => { + if (err.name !== "NavigationDuplicated") { + throw err; + } + }); + }, loadProcesses() { const url = this.buildURL(); @@ -98,6 +103,13 @@ export default { this.processesList = this.processesList.concat(response.data.data); }); }, + loadDashboards() { + const url = this.buildURLDashboards(); + + ProcessMaker.apiClient.get(url).then((response) => { + this.dashboards = this.dashboards.concat(response.data); + }); + }, /** * Build URL for Process Cards */ @@ -109,6 +121,13 @@ export default { &order_by=name&order_direction=asc &include=user,categories,category`; }, + buildURLDashboards() { + return `/dynamic-ui/custom-dashboards`; + }, + buildURLDashboardsScreen(id) { + //return `/dynamic-ui/custom-dashboards/${token}`; + return `/dynamic-ui/custom-dashboards/screen/${id}`; + }, getIconProcess(process) { let icon = "Default Icon"; const unparseProperties = process?.launchpad?.properties || null; @@ -118,6 +137,15 @@ export default { return `/img/launchpad-images/icons/${icon}.svg`; }, + getDashboardViewScreen(id) { + const url = this.buildURLDashboardsScreen(id); + + ProcessMaker.apiClient.get(url).then((response) => { + this.screen = response.data.screen; + this.formData = response.data.formData; + this.callDashboardViewScreen(id, this.screen, this.formData); + }); + }, }, }; diff --git a/resources/js/tasks/router.js b/resources/js/tasks/router.js index 375852d6d1..7740705672 100644 --- a/resources/js/tasks/router.js +++ b/resources/js/tasks/router.js @@ -24,7 +24,9 @@ const router = new VueRouter({ name: "dashboard", component: DashboardViewer, props: route => ({ - dashboardId: route.params.dashboardId || null + dashboardId: route.params.dashboardId || null, + screen: route.params.screen || null, + formData: route.params.formData || null }) } ] diff --git a/resources/views/tasks/index.blade.php b/resources/views/tasks/index.blade.php index 08b4050ead..457f96b708 100644 --- a/resources/views/tasks/index.blade.php +++ b/resources/views/tasks/index.blade.php @@ -159,6 +159,7 @@ window.ProcessMaker.userConfiguration = @json($userConfiguration ?? []); window.sessionStorage.setItem('elementDestinationURL', window.location.href); window.ProcessMaker.showOldTaskScreen = @json($showOldTaskScreen); + window.Processmaker.user = @json($currentUser);