From 14a8e2f001ec052db0f91563c23dd356edce5333 Mon Sep 17 00:00:00 2001 From: Harald Bamberger Date: Wed, 18 Mar 2026 15:48:57 +0100 Subject: [PATCH] Funktionen fett schreiben, die schon presets hinterlegt haben, demo aus views und Controller namen entfernen, preview hinzufuegen --- .../frontend/v1/dashboard/DashboardAdmin.php | 59 ++++++++++++++++--- .../{DashboardDemo.php => DashboardAdmin.php} | 19 +++--- ...ard_demo_admin.php => dashboard_admin.php} | 4 ++ ...shboard_demo.php => dashboard_preview.php} | 11 +++- .../api/factory/dashboard/dashboardAdmin.js | 5 +- public/js/apps/Dashboard/Preview.js | 17 ++++++ .../js/components/Dashboard/Admin/Presets.js | 31 ++++++---- 7 files changed, 114 insertions(+), 32 deletions(-) rename application/controllers/dashboard/{DashboardDemo.php => DashboardAdmin.php} (70%) rename application/views/dashboard/{dashboard_demo_admin.php => dashboard_admin.php} (90%) rename application/views/dashboard/{dashboard_demo.php => dashboard_preview.php} (67%) create mode 100644 public/js/apps/Dashboard/Preview.js diff --git a/application/controllers/api/frontend/v1/dashboard/DashboardAdmin.php b/application/controllers/api/frontend/v1/dashboard/DashboardAdmin.php index 42a95c034..eb9d02776 100644 --- a/application/controllers/api/frontend/v1/dashboard/DashboardAdmin.php +++ b/application/controllers/api/frontend/v1/dashboard/DashboardAdmin.php @@ -205,18 +205,63 @@ class DashboardAdmin extends FHCAPI_Controller //Presets public function funktionen() { - $this->FunktionModel->addSelect('funktion_kurzbz, beschreibung'); - $this->FunktionModel->addOrder('beschreibung', 'ASC'); - $result = $this->FunktionModel->loadWhere(array('aktiv' => true)); + $dashboard_kurzbz = $this->input->get('db'); + if(!$dashboard_kurzbz) + { + $this->terminateWithError('missing query parameter db'); + } + $sql = <<db->escape($dashboard_kurzbz)} + ), + general as ( + select + 'general' as funktion_kurzbz, + 'Allgemein' as beschreibung + ) + + ( + select + f.funktion_kurzbz, + f.beschreibung, + count(p.preset_id) as has_preset + from + general f + left join + dashboard_presets p on p.funktion_kurzbz is null + group by + f.funktion_kurzbz, f.beschreibung + ) + union ALL + ( + select + f.funktion_kurzbz, + f.beschreibung, + count(p.preset_id) as has_preset + from + public.tbl_funktion f + left join + dashboard_presets p on p.funktion_kurzbz = f.funktion_kurzbz + group by + f.funktion_kurzbz, f.beschreibung + order by + f.beschreibung asc + ) +EOSQL; + $result = $this->FunktionModel->execReadOnlyQuery($sql); if (isError($result)) $this->terminateWithError($result, self::ERROR_TYPE_GENERAL); $funktionen = getData($result) ?: []; - array_unshift($funktionen, (object) array( - 'funktion_kurzbz' => 'general', - 'beschreibung' => 'Allgemein' - )); $this->terminateWithSuccess($funktionen); } diff --git a/application/controllers/dashboard/DashboardDemo.php b/application/controllers/dashboard/DashboardAdmin.php similarity index 70% rename from application/controllers/dashboard/DashboardDemo.php rename to application/controllers/dashboard/DashboardAdmin.php index 35d530384..b799d9ae9 100644 --- a/application/controllers/dashboard/DashboardDemo.php +++ b/application/controllers/dashboard/DashboardAdmin.php @@ -4,7 +4,7 @@ if (! defined('BASEPATH')) exit('No direct script access allowed'); /** */ -class DashboardDemo extends Auth_Controller +class DashboardAdmin extends Auth_Controller { private $_uid; // uid of the logged user @@ -16,8 +16,8 @@ class DashboardDemo extends Auth_Controller // Set required permissions parent::__construct( array( - 'index' => 'dashboard/benutzer:r', - 'admin' => 'dashboard/admin:rw' + 'index' => 'dashboard/admin:rw', + 'preview' => 'dashboard/admin:r', ) ); @@ -33,15 +33,14 @@ class DashboardDemo extends Auth_Controller // Public methods public function index() { - $this->load->view('dashboard/dashboard_demo.php', []); + $this->load->view('dashboard/dashboard_admin.php', []); } - // ----------------------------------------------------------------------------------------------------------------- - // Public methods - public function admin() - { - $this->load->view('dashboard/dashboard_demo_admin.php', []); - } + public function preview() + { + $dashboard_kurzbz = $this->input->get('db') ?? 'CIS'; + $this->load->view('dashboard/dashboard_preview.php', ['dashboard_kurzbz' => $dashboard_kurzbz]); + } // ----------------------------------------------------------------------------------------------------------------- // Private methods diff --git a/application/views/dashboard/dashboard_demo_admin.php b/application/views/dashboard/dashboard_admin.php similarity index 90% rename from application/views/dashboard/dashboard_demo_admin.php rename to application/views/dashboard/dashboard_admin.php index b57a2bfa0..e10fc30c2 100644 --- a/application/views/dashboard/dashboard_demo_admin.php +++ b/application/views/dashboard/dashboard_admin.php @@ -9,6 +9,10 @@ $this->load->view( 'restclient' => true, 'vue3' => true, 'primevue3' => true, + 'vuedatepicker11' => true, + 'customJSs' => [ + 'vendor/moment/luxonjs/luxon.min.js' + ], 'customJSModules' => ['public/js/apps/Dashboard/Admin.js'], 'customCSSs' => [ 'public/css/components/dashboard.css', diff --git a/application/views/dashboard/dashboard_demo.php b/application/views/dashboard/dashboard_preview.php similarity index 67% rename from application/views/dashboard/dashboard_demo.php rename to application/views/dashboard/dashboard_preview.php index 8efc230b7..f8c37c0c8 100644 --- a/application/views/dashboard/dashboard_demo.php +++ b/application/views/dashboard/dashboard_preview.php @@ -8,7 +8,12 @@ $this->load->view( 'axios027' => true, 'restclient' => true, 'vue3' => true, - 'customJSModules' => ['public/js/apps/Dashboard.js'], + 'vuedatepicker11' => true, + 'primevue3' => true, + 'customJSs' => [ + 'vendor/moment/luxonjs/luxon.min.js' + ], + 'customJSModules' => ['public/js/apps/Dashboard/Preview.js'], 'customCSSs' => [ 'public/css/components/dashboard.css' ], @@ -23,9 +28,9 @@ $this->load->view(
-

Dashboard

+

Dashboard

- +
diff --git a/public/js/api/factory/dashboard/dashboardAdmin.js b/public/js/api/factory/dashboard/dashboardAdmin.js index a672460e4..4733d0461 100644 --- a/public/js/api/factory/dashboard/dashboardAdmin.js +++ b/public/js/api/factory/dashboard/dashboardAdmin.js @@ -55,10 +55,11 @@ export default { params }; }, - loadFunktionen(){ + loadFunktionen(dashboard_kurzbz){ return { method: 'get', - url: 'api/frontend/v1/dashboard/DashboardAdmin/funktionen' + url: 'api/frontend/v1/dashboard/DashboardAdmin/funktionen?db=' + + encodeURIComponent(dashboard_kurzbz) }; }, addWidgetsToPreset(params){ diff --git a/public/js/apps/Dashboard/Preview.js b/public/js/apps/Dashboard/Preview.js new file mode 100644 index 000000000..a270c3028 --- /dev/null +++ b/public/js/apps/Dashboard/Preview.js @@ -0,0 +1,17 @@ +import {CoreNavigationCmpt} from '../../components/navigation/Navigation.js'; +import CoreDashboard from '../../components/Dashboard/Dashboard.js'; +import PluginsPhrasen from '../../plugins/Phrasen.js'; + +const app = Vue.createApp({ + name: 'DashboardPreviewApp', + data: () => ({ + appSideMenuEntries: {} + }), + components: { + CoreNavigationCmpt, + CoreDashboard + } +}); +app.use(PluginsPhrasen); +app.directive('tooltip', primevue.tooltip); +app.mount('#main'); \ No newline at end of file diff --git a/public/js/components/Dashboard/Admin/Presets.js b/public/js/components/Dashboard/Admin/Presets.js index a63c28680..518e9d20f 100644 --- a/public/js/components/Dashboard/Admin/Presets.js +++ b/public/js/components/Dashboard/Admin/Presets.js @@ -53,6 +53,11 @@ export default { section.widgets.push(widget); } }); + this.funktionen.forEach(funktion => { + if(funktion.funktion_kurzbz === section_name && funktion.has_preset < 1) { + funktion.has_preset = 1; + } + }); }) .catch(this.$fhcAlert.handleSystemError); }) @@ -151,30 +156,36 @@ export default { }) .catch(this.$fhcAlert.handleSystemError); + }, + loadFunktionen() { + this.$api + .call(ApiDashboardAdmin.loadFunktionen(this.dashboard)) + .then(result => { + this.funktionen = result.data; + }) + .catch(this.$fhcAlert.handleSystemError); } }, created() { - this.$api - .call(ApiDashboardAdmin.loadFunktionen()) - .then(result => { - //console.log(result); - result.data.forEach(funktion => { - this.funktionen[funktion.funktion_kurzbz] = funktion.beschreibung; - }); - }) - .catch(this.$fhcAlert.handleSystemError); + this.loadFunktionen(); }, watch: { dashboard() { // TODO(chris): this should be done without a watcher this.loadSections({target:this.$refs.funktionenList}); + this.loadFunktionen(); } }, template: `