From: Marcin Haba Date: Fri, 29 Oct 2021 05:28:11 +0000 (+0200) Subject: baculum: Loading pages optimization X-Git-Tag: Release-11.3.2~154 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=faafb9a3fe4df98b4c4c5746a4ae70799ee16ebb;p=thirdparty%2Fbacula.git baculum: Loading pages optimization --- diff --git a/gui/baculum/protected/Web/Class/BaculumWebPage.php b/gui/baculum/protected/Web/Class/BaculumWebPage.php index 2e6a4c459..a0f3bf459 100644 --- a/gui/baculum/protected/Web/Class/BaculumWebPage.php +++ b/gui/baculum/protected/Web/Class/BaculumWebPage.php @@ -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'] = ''; } /** diff --git a/gui/baculum/protected/Web/Layouts/Main.php b/gui/baculum/protected/Web/Layouts/Main.php index 5e0e254cb..15fd1d733 100644 --- a/gui/baculum/protected/Web/Layouts/Main.php +++ b/gui/baculum/protected/Web/Layouts/Main.php @@ -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(); } } diff --git a/gui/baculum/protected/Web/Pages/Monitor.php b/gui/baculum/protected/Web/Pages/Monitor.php index cb5908317..c2e52dfb9 100644 --- a/gui/baculum/protected/Web/Pages/Monitor.php +++ b/gui/baculum/protected/Web/Pages/Monitor.php @@ -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; } diff --git a/gui/baculum/protected/Web/Pages/SelectAPIHost.php b/gui/baculum/protected/Web/Pages/SelectAPIHost.php index adb67a0bf..e1fbeff30 100644 --- a/gui/baculum/protected/Web/Pages/SelectAPIHost.php +++ b/gui/baculum/protected/Web/Pages/SelectAPIHost.php @@ -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(); } }