]> git.ipfire.org Git - thirdparty/bacula.git/commitdiff
baculum: Loading pages optimization
authorMarcin Haba <marcin.haba@bacula.pl>
Fri, 29 Oct 2021 05:28:11 +0000 (07:28 +0200)
committerEric Bollengier <eric@baculasystems.com>
Thu, 24 Mar 2022 08:03:26 +0000 (09:03 +0100)
gui/baculum/protected/Web/Class/BaculumWebPage.php
gui/baculum/protected/Web/Layouts/Main.php
gui/baculum/protected/Web/Pages/Monitor.php
gui/baculum/protected/Web/Pages/SelectAPIHost.php

index 2e6a4c459fdb1dc4216ed696c847ee7496a3d299..a0f3bf459d2fffb365ef056c05e2ffda9cf585b5 100644 (file)
@@ -64,7 +64,9 @@ class BaculumWebPage extends BaculumPage {
                if (!$this->IsPostBack && !$this->IsCallBack) {
                        $this->postInitActions();
                        $this->getModule('api')->initSessionCache(true);
-                       $this->setSessionUserVars();
+                       if (!key_exists('user_vars', $_SESSION) || $_SESSION['user_vars'] === false) {
+                               $this->setSessionUserVars();
+                       }
                }
        }
 
@@ -97,7 +99,6 @@ class BaculumWebPage extends BaculumPage {
 
                // Set config main component names
                $config = $this->getModule('api')->get(array('config'), null, false);
-               $_SESSION['dir'] = $_SESSION['sd'] = $_SESSION['fd'] = $_SESSION['bcons'] = '';
                if ($config->error === 0) {
                        for ($i = 0; $i < count($config->output); $i++) {
                                $component = (array)$config->output[$i];
@@ -106,6 +107,12 @@ class BaculumWebPage extends BaculumPage {
                                }
                        }
                }
+               $_SESSION['user_vars'] = true;
+       }
+
+       public function resetSessionUserVars() {
+               $_SESSION['user_vars'] = false;
+               $_SESSION['director'] = $_SESSION['dir'] = $_SESSION['sd'] = $_SESSION['fd'] = $_SESSION['bcons'] = '';
        }
 
        /**
index 5e0e254cbe17419b12c7e99a04a8112c51d8913b..15fd1d7336c024634b3deebd5ad34a9d10f1974d 100644 (file)
@@ -58,6 +58,7 @@ class Main extends TTemplateControl {
                $api_host = $this->UserAPIHosts->SelectedValue;
                if (!empty($api_host)) {
                        $this->User->setDefaultAPIHost($api_host);
+                       $this->getPage()->resetSessionUserVars();
                        $this->getResponse()->reload();
                }
        }
index cb59083170cea813aa5c15fe8ea2723b91bd2446..c2e52dfb90296ce9cf2227b63894a5f252554b31 100644 (file)
@@ -61,7 +61,7 @@ class Monitor extends BaculumPage {
 
                $error = null;
                $params = $this->Request->contains('params') ? $this->Request['params'] : [];
-               if (is_array($params) && key_exists('jobs', $params)) {
+               if (key_exists('jobs', $params)) {
                        $job_params = ['jobs'];
                        $job_query = [];
                        if (is_array($params['jobs'])) {
@@ -89,14 +89,6 @@ class Monitor extends BaculumPage {
                                $error = $result;
                        }
                }
-               if (!$error) {
-                       $result = $this->getModule('api')->get(['jobs', '?jobstatus=CR']);
-                       if ($result->error === 0) {
-                               $monitor_data['running_jobs'] = $result->output;
-                       } else {
-                               $error = $result;
-                       }
-               }
                if (!$error && key_exists('clients', $params)) {
                        $result = $this->getModule('api')->get(['clients']);
                        if ($result->error === 0) {
@@ -144,15 +136,24 @@ class Monitor extends BaculumPage {
                        }
                }
 
-               $running_job_states = $this->Application->getModule('misc')->getRunningJobStates();
-
                if (key_exists('jobs', $params)) {
+                       $running_job_states = $this->Application->getModule('misc')->getRunningJobStates();
                        for ($i = 0; $i < count($monitor_data['jobs']); $i++) {
-                               if (!in_array($monitor_data['jobs'][$i]->jobstatus, $running_job_states)) {
+                               if (in_array($monitor_data['jobs'][$i]->jobstatus, $running_job_states)) {
+                                       $monitor_data['running_jobs'][] = $monitor_data['jobs'][$i];
+                               } else {
                                        $monitor_data['terminated_jobs'][] = $monitor_data['jobs'][$i];
                                }
                        }
+               } elseif (!$error) {
+                       $result = $this->getModule('api')->get(['jobs', '?jobstatus=CR']);
+                       if ($result->error === 0) {
+                               $monitor_data['running_jobs'] = $result->output;
+                       } else {
+                               $error = $result;
+                       }
                }
+
                if (is_object($error)) {
                        $monitor_data['error'] = $error;
                }
index adb67a0bfdade3187ba07b8b3f362cc04de91157..e1fbeff303f7396069065fdaf2adffafc5b7ae60 100644 (file)
@@ -46,6 +46,7 @@ class SelectAPIHost extends BaculumWebPage {
                $api_host = $this->UserAPIHosts->SelectedValue;
                if (!empty($api_host)) {
                        $this->User->setDefaultAPIHost($api_host);
+                       $this->getPage()->resetSessionUserVars();
                        $this->goToDefaultPage();
                }
        }