From 6a765fad50244c725855e8a54ee6f1595113a90c Mon Sep 17 00:00:00 2001 From: acognet Date: Fri, 10 Sep 2021 11:02:04 +0200 Subject: [PATCH] =?UTF-8?q?N=C2=B03685=20-=20Performance=20checks=20on=20t?= =?UTF-8?q?he=20front=20end=20-=20Avoid=20reload?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- application/menunode.class.inc.php | 2 +- js/search/search_form_handler.js | 21 +++---- pages/UI.php | 3 +- .../search/searchform.class.inc.php | 62 ++++++++++++------- .../components/datatable/layout.ready.js.twig | 8 +-- 5 files changed, 55 insertions(+), 41 deletions(-) diff --git a/application/menunode.class.inc.php b/application/menunode.class.inc.php index a6cbd8f9b..74b114324 100644 --- a/application/menunode.class.inc.php +++ b/application/menunode.class.inc.php @@ -1126,7 +1126,7 @@ class OQLMenuNode extends MenuNode $oSearch = DBObjectSearch::FromOQL($sOql); if ($bSearchPane) { - $aParams = array_merge(['open' => $bSearchOpen, 'table_id' => $sUsageId, 'submit_on_load' => true], $aExtraParams); + $aParams = array_merge(['open' => $bSearchOpen, 'table_id' => $sUsageId, 'submit_on_load' => false], $aExtraParams); $oBlock = new DisplayBlock($oSearch, 'search', false /* Asynchronous */, $aParams); $oBlock->Display($oPage, 0); } diff --git a/js/search/search_form_handler.js b/js/search/search_form_handler.js index b908e1c52..4e2fb0c37 100644 --- a/js/search/search_form_handler.js +++ b/js/search/search_form_handler.js @@ -17,8 +17,8 @@ $(function() /* Submit the search form automatically on criteria change */ 'auto_submit': true, /* Submit the search form when the page is first loaded */ - 'submit_on_load': false, - 'show_obsolete_data' : true, + 'submit_on_load': true, + 'show_obsolete_data': true, 'search': { 'base_oql': '', 'class_name': null, @@ -109,10 +109,10 @@ $(function() }; //init others widgets : - this.element.search_form_handler_history({'itop_root_class':me.options.search.class_name}); + this.element.search_form_handler_history({'itop_root_class': me.options.search.class_name}); - // Prepare DOM elements + // Prepare DOM elements this._prepareFormArea(); this._prepareCriterionArea(); this._prepareResultsArea(); @@ -122,16 +122,15 @@ $(function() // Binding events (eg. from search_form_criteria widgets) this._bindEvents(); - //memorize the initial state so on first criteria close, we do not trigger a refresh if nothing has changed - this._updateSearch(); + //memorize the initial state so on first criteria close, we do not trigger a refresh if nothing has changed + this._updateSearch(); this.oPreviousAjaxParams = JSON.stringify({ - 'base_oql': this.options.search.base_oql, - 'criterion': this.options.search.criterion, - }); + 'base_oql': this.options.search.base_oql, + 'criterion': this.options.search.criterion, + }); // If auto submit is enabled, also submit on first display - if(this.options.auto_submit === true || this.options.submit_on_load === true) - { + if (this.options.auto_submit === true && this.options.submit_on_load === true) { this._submit(); } diff --git a/pages/UI.php b/pages/UI.php index a4160cb97..63786b776 100644 --- a/pages/UI.php +++ b/pages/UI.php @@ -176,7 +176,8 @@ function DisplaySearchSet($oP, $oFilter, $bSearchForm = true, $sBaseClass = '', $sTableId = 'result_1'; } $aExtraParams['table_id'] = $sTableId; - $oUIBlockForm = $oBlockForm->GetDisplay($oP, 'search_1',$aExtraParams); + $aExtraParams['submit_on_load'] = false; + $oUIBlockForm = $oBlockForm->GetDisplay($oP, 'search_1', $aExtraParams); //add result block $oUIBlock = $oBlock->GetDisplay($oP, $sTableId); $oUIBlock->AddCSSClasses(['display_block', 'sf_results_area']); diff --git a/sources/application/search/searchform.class.inc.php b/sources/application/search/searchform.class.inc.php index 158578afa..d1ba2344c 100644 --- a/sources/application/search/searchform.class.inc.php +++ b/sources/application/search/searchform.class.inc.php @@ -200,8 +200,7 @@ class SearchForm } $bUseApplicationContext = true; - if (isset($aExtraParams['selection_mode']) && ($aExtraParams['selection_mode'])) - { + if (isset($aExtraParams['selection_mode']) && ($aExtraParams['selection_mode'])) { // Don't use application context for selections $bUseApplicationContext = false; } @@ -211,34 +210,49 @@ class SearchForm $aCriterion = $this->GetCriterion($oSearch, $aFields, $aArgs, $bIsRemovable, $bUseApplicationContext); $aClasses = $oSearch->GetSelectedClasses(); $sClassAlias = ''; - foreach($aClasses as $sAlias => $sClass) - { + foreach ($aClasses as $sAlias => $sClass) { $sClassAlias = $sAlias; } $oBaseSearch = $oSearch->DeepClone(); - if ($oSearch instanceof DBObjectSearch) - { + if ($oSearch instanceof DBObjectSearch) { $oBaseSearch->ResetCondition(); } $sBaseOQL = str_replace(' WHERE 1', '', $oBaseSearch->ToOQL()); - if (!isset($aExtraParams['table_inner_id'])) - { + if (!isset($aExtraParams['table_inner_id'])) { $aListParams['table_inner_id'] = "table_inner_id_{$sSearchFormId}"; } - $bSubmitOnLoad = (isset($aExtraParams['submit_on_load'])) ? $aExtraParams['submit_on_load'] : false; + $bSubmitOnLoad = (isset($aExtraParams['submit_on_load'])) ? $aExtraParams['submit_on_load'] : true; $sDebug = utils::ReadParam('debug', 'false', false, 'parameter'); - if ($sDebug == 'true') - { + if ($sDebug == 'true') { $aListParams['debug'] = 'true'; } - $aDaysMin = array(Dict::S('DayOfWeek-Sunday-Min'), Dict::S('DayOfWeek-Monday-Min'), Dict::S('DayOfWeek-Tuesday-Min'), Dict::S('DayOfWeek-Wednesday-Min'), - Dict::S('DayOfWeek-Thursday-Min'), Dict::S('DayOfWeek-Friday-Min'), Dict::S('DayOfWeek-Saturday-Min')); - $aMonthsShort = array(Dict::S('Month-01-Short'), Dict::S('Month-02-Short'), Dict::S('Month-03-Short'), Dict::S('Month-04-Short'), Dict::S('Month-05-Short'), Dict::S('Month-06-Short'), - Dict::S('Month-07-Short'), Dict::S('Month-08-Short'), Dict::S('Month-09-Short'), Dict::S('Month-10-Short'), Dict::S('Month-11-Short'), Dict::S('Month-12-Short')); + $aDaysMin = array( + Dict::S('DayOfWeek-Sunday-Min'), + Dict::S('DayOfWeek-Monday-Min'), + Dict::S('DayOfWeek-Tuesday-Min'), + Dict::S('DayOfWeek-Wednesday-Min'), + Dict::S('DayOfWeek-Thursday-Min'), + Dict::S('DayOfWeek-Friday-Min'), + Dict::S('DayOfWeek-Saturday-Min'), + ); + $aMonthsShort = array( + Dict::S('Month-01-Short'), + Dict::S('Month-02-Short'), + Dict::S('Month-03-Short'), + Dict::S('Month-04-Short'), + Dict::S('Month-05-Short'), + Dict::S('Month-06-Short'), + Dict::S('Month-07-Short'), + Dict::S('Month-08-Short'), + Dict::S('Month-09-Short'), + Dict::S('Month-10-Short'), + Dict::S('Month-11-Short'), + Dict::S('Month-12-Short'), + ); $sDateTimeFormat = \AttributeDateTime::GetFormat()->ToDatePicker(); $iDateTimeSeparatorPos = strpos($sDateTimeFormat, ' '); @@ -246,16 +260,16 @@ class SearchForm $sTimeFormat = substr($sDateTimeFormat, $iDateTimeSeparatorPos + 1); $aSearchParams = array( - 'criterion_outer_selector' => "#fs_{$sSearchFormId}_criterion_outer", + 'criterion_outer_selector' => "#fs_{$sSearchFormId}_criterion_outer", 'result_list_outer_selector' => "#{$aExtraParams['result_list_outer_selector']}", - 'data_config_list_selector' => "#{$aExtraParams['result_list_outer_selector']}", - 'endpoint' => utils::GetAbsoluteUrlAppRoot().'pages/ajax.searchform.php?'.$sContext, - 'init_opened' => $bOpen, - 'submit_on_load' => $bSubmitOnLoad, - 'auto_submit' => $bAutoSubmit, - 'list_params' => $aListParams, - 'show_obsolete_data' => $bShowObsoleteData, - 'search' => array( + 'data_config_list_selector' => "#{$aExtraParams['result_list_outer_selector']}", + 'endpoint' => utils::GetAbsoluteUrlAppRoot().'pages/ajax.searchform.php?'.$sContext, + 'init_opened' => $bOpen, + 'submit_on_load' => $bSubmitOnLoad, + 'auto_submit' => $bAutoSubmit, + 'list_params' => $aListParams, + 'show_obsolete_data' => $bShowObsoleteData, + 'search' => array( 'has_hidden_criteria' => (array_key_exists('hidden_criteria', $aListParams) && !empty($aListParams['hidden_criteria'])), 'fields' => $aFields, 'criterion' => $aCriterion, diff --git a/templates/base/components/datatable/layout.ready.js.twig b/templates/base/components/datatable/layout.ready.js.twig index 2db027192..7e11a9c60 100644 --- a/templates/base/components/datatable/layout.ready.js.twig +++ b/templates/base/components/datatable/layout.ready.js.twig @@ -167,7 +167,7 @@ var oTable{{ sListIDForVarSuffix }} = $('#{{ oUIBlock.GetId() }}').DataTable({ method: "post", pages: 1 }, // number of pages to cache - {{ oUIBlock.GetJsonData() |raw }} + {{ oUIBlock.GetJsonInitDisplayData() |raw }} ), createdRow: function (row, data, dataIndex) { if (data['@class'] !== undefined) @@ -300,9 +300,9 @@ var oTable{{ sListIDForVarSuffix }} = $('#{{ oUIBlock.GetId() }}').DataTable({ {% endif %} {% if oUIBlock.GetDisabledSelect() is not empty %} - {% for key in oUIBlock.GetDisabledSelect() %} - $('.selectList{{ oUIBlock.GetId() }}[value={{ key }}]').prop("disabled","disabled"); - {% endfor %} + {% for key in oUIBlock.GetDisabledSelect() %} + $('.selectList{{ oUIBlock.GetId() }}[value={{ key }}]').prop("disabled", "disabled"); + {% endfor %} {% endif %} {% endif %} }