From abcdd37e9020ae39419bc35dacb5faed2a502118 Mon Sep 17 00:00:00 2001 From: Paolo Date: Fri, 8 Jun 2018 18:28:40 +0200 Subject: [PATCH] - Now the FilterWidget always store the required permissions into the session to let the Filters controller to provide data even if the dataset is empty - Now the _renderDropDown method of the FilterWidget.js checks the parameter to avoid errors --- application/widgets/FilterWidget.php | 7 ++-- public/js/FilterWidget.js | 50 +++++++++++++++------------- 2 files changed, 29 insertions(+), 28 deletions(-) diff --git a/application/widgets/FilterWidget.php b/application/widgets/FilterWidget.php index 2d00a9bf4..e57799840 100644 --- a/application/widgets/FilterWidget.php +++ b/application/widgets/FilterWidget.php @@ -263,6 +263,9 @@ class FilterWidget extends Widget // Read the all session for this filter widget $session = $this->filterslib->getSession(); + // To be always stored in the session, otherwise is not possible to load data from Filters controller + $this->filterslib->setElementSession(FiltersLib::REQUIRED_PERMISSIONS_PARAMETER, $this->_requiredPermissions); + // If session is NOT empty -> a filter was already loaded if ($session != null) { @@ -339,14 +342,10 @@ class FilterWidget extends Widget // Stores an array that contains all the data useful for $this->filterslib->setSession( array( - FiltersLib::REQUIRED_PERMISSIONS_PARAMETER => $this->_requiredPermissions, // required permissions - FiltersLib::FILTER_ID => $this->_filterId, // the current filter id FiltersLib::APP_PARAMETER => $this->_app, // the current app parameter FiltersLib::DATASET_NAME_PARAMETER => $this->_datasetName, // the carrent dataset name - FiltersLib::SESSION_FILTER_NAME => $filterName, // the current filter name - FiltersLib::SESSION_FIELDS => $this->FiltersModel->getExecutedQueryListFields(), // all the fields of the dataset FiltersLib::SESSION_SELECTED_FIELDS => $this->_getColumnsNames($parsedFilterJson->columns), // all the selected fields FiltersLib::SESSION_COLUMNS_ALIASES => $this->_columnsAliases, // all the fields aliases diff --git a/public/js/FilterWidget.js b/public/js/FilterWidget.js index 17136d3e0..fb4ad0452 100644 --- a/public/js/FilterWidget.js +++ b/public/js/FilterWidget.js @@ -160,6 +160,8 @@ var FHC_FilterWidget = { */ _renderFilterWidget: function(data) { + console.log(data); + FHC_FilterWidget._initSessionStorage(); // initialize the session storage FHC_FilterWidget._turnOffEvents(); // turns all the events off FHC_FilterWidget._resetGUI(); // Reset the entire GUI @@ -545,10 +547,7 @@ var FHC_FilterWidget = { */ _renderDropDownFields: function(data) { - if (data.hasOwnProperty("fields") && $.isArray(data.fields)) - { - FHC_FilterWidget._renderDropDown(data, data.selectedFields, 'addField'); - } + FHC_FilterWidget._renderDropDown(data, data.selectedFields, 'addField'); }, /** @@ -557,34 +556,37 @@ var FHC_FilterWidget = { */ _renderDropDown: function(data, elements, ddElementId) { - for (var i = 0; i < data.fields.length; i++) + if (data.hasOwnProperty("fields") && $.isArray(data.fields)) { - var toBeDisplayed = true; - - for (var j = 0; j < elements.length; j++) + for (var i = 0; i < data.fields.length; i++) { - var elementName = elements[j].hasOwnProperty("name") ? elements[j].name : elements[j]; + var toBeDisplayed = true; - if (data.fields[i] == elementName) + for (var j = 0; j < elements.length; j++) { - toBeDisplayed = false; - break; - } - } + var elementName = elements[j].hasOwnProperty("name") ? elements[j].name : elements[j]; - if (toBeDisplayed == true) - { - var fieldName = data.fields[i]; - var fieldToDisplay = data.fields[i]; - - if (data.hasOwnProperty("columnsAliases") && $.isArray(data.columnsAliases)) - { - fieldToDisplay = data.columnsAliases[i]; + if (data.fields[i] == elementName) + { + toBeDisplayed = false; + break; + } } - if ($("#" + ddElementId).length) // checks if the element exists + if (toBeDisplayed == true) { - $("#" + ddElementId).append(""); + var fieldName = data.fields[i]; + var fieldToDisplay = data.fields[i]; + + if (data.hasOwnProperty("columnsAliases") && $.isArray(data.columnsAliases)) + { + fieldToDisplay = data.columnsAliases[i]; + } + + if ($("#" + ddElementId).length) // checks if the element exists + { + $("#" + ddElementId).append(""); + } } } }