FilterWidget: extended the functionality of the default_filter flag

If only the "app" and "dataset_name" parameters are given, at the first loading of the FilterWidget:
1. Try to load the custom filter (person_id = logged user person_id) with the given "app" and "dataset_name" that is set as default filter (default_filter = true)
2. Try to load the global filter (person_id = null) with the given "app" and "dataset_name" that is set as default filter (default_filter = true)
3. Do not load anything to avoid to retrive too many data from DB
This commit is contained in:
Paolo
2018-05-24 12:37:50 +02:00
parent 45677d0ec4
commit 15e350ea3a
4 changed files with 186 additions and 143 deletions
+49 -37
View File
@@ -39,11 +39,11 @@ class Filters extends VileSci_Controller
$session = $this->_readSession($this->_getFilterUniqueId());
$json->selectedFields = $session['selectedFields'];
$json->columnsAliases = $session['columnsAliases'];
$json->additionalColumns = $session['additionalColumns'];
$json->checkboxes = $session['checkboxes'];
$json->dataset = $session['dataset'];
$json->selectedFields = $this->_getFromSession('selectedFields');
$json->columnsAliases = $this->_getFromSession('columnsAliases');
$json->additionalColumns = $this->_getFromSession('additionalColumns');
$json->checkboxes = $this->_getFromSession('checkboxes');
$json->dataset = $this->_getFromSession('dataset');
$this->output->set_content_type('application/json')->set_output(json_encode($json));
}
@@ -57,11 +57,11 @@ class Filters extends VileSci_Controller
$session = $this->_readSession($this->_getFilterUniqueId());
$json->allSelectedFields = $session['allSelectedFields'];
$json->allColumnsAliases = $session['allColumnsAliases'];
$json->allSelectedFields = $this->_getFromSession('allSelectedFields');
$json->allColumnsAliases = $this->_getFromSession('allColumnsAliases');
$json->selectedFields = $session['selectedFields'];
$json->columnsAliases = $session['columnsAliases'];
$json->selectedFields = $this->_getFromSession('selectedFields');
$json->columnsAliases = $this->_getFromSession('columnsAliases');
$this->output->set_content_type('application/json')->set_output(json_encode($json));
}
@@ -79,11 +79,11 @@ class Filters extends VileSci_Controller
$session = $this->_readSession($filterUniqueId);
$allSelectedFields = $session['allSelectedFields'];
$allColumnsAliases = $session['allColumnsAliases'];
$allSelectedFields = $this->_getFromSession('allSelectedFields');
$allColumnsAliases = $this->_getFromSession('allColumnsAliases');
$json->selectedFields = $session['selectedFields'];
$json->columnsAliases = $session['columnsAliases'];
$json->selectedFields = $this->_getFromSession('selectedFields');
$json->columnsAliases = $this->_getFromSession('columnsAliases');
if (isset($selectedFieldsLst) && is_array($selectedFieldsLst))
{
@@ -121,10 +121,10 @@ class Filters extends VileSci_Controller
$session = $this->_readSession($this->_getFilterUniqueId());
$json->allSelectedFields = $session['allSelectedFields'];
$json->allColumnsAliases = $session['allColumnsAliases'];
$json->allSelectedFields = $this->_getFromSession('allSelectedFields');
$json->allColumnsAliases = $this->_getFromSession('allColumnsAliases');
$json->selectedFilters = $session['selectedFilters'];
$json->selectedFilters = $this->_getFromSession('selectedFilters');
$json->selectedFiltersAliases = array();
$json->selectedFiltersMetaData = array();
@@ -132,10 +132,10 @@ class Filters extends VileSci_Controller
$json->selectedFiltersActiveFiltersOperation = array();
$json->selectedFiltersActiveFiltersOption = array();
$metaData = $session['metaData'];
$activeFilters = $session['activeFilters'];
$activeFiltersOperation = $session['activeFiltersOperation'];
$activeFiltersOption = $session['activeFiltersOption'];
$metaData = $this->_getFromSession('metaData');
$activeFilters = $this->_getFromSession('activeFilters');
$activeFiltersOperation = $this->_getFromSession('activeFiltersOperation');
$activeFiltersOption = $this->_getFromSession('activeFiltersOption');
for ($i = 0; $i < count($json->selectedFilters); $i++)
{
@@ -302,11 +302,11 @@ class Filters extends VileSci_Controller
$session = $this->_readSession($filterUniqueId);
$allSelectedFields = $session['allSelectedFields'];
$allColumnsAliases = $session['allColumnsAliases'];
$allSelectedFields = $this->_getFromSession('allSelectedFields');
$allColumnsAliases = $this->_getFromSession('allColumnsAliases');
$selectedFields = $session['selectedFields'];
$columnsAliases = $session['columnsAliases'];
$selectedFields = $this->_getFromSession('selectedFields');
$columnsAliases = $this->_getFromSession('columnsAliases');
if (($pos = array_search($fieldName, $selectedFields)) !== false)
{
@@ -341,10 +341,10 @@ class Filters extends VileSci_Controller
$session = $this->_readSession($filterUniqueId);
$selectedFilters = $session['selectedFilters'];
$selectedFiltersActiveFilters = $session['activeFilters'];
$selectedFiltersActiveFiltersOperation = $session['activeFiltersOperation'];
$selectedFiltersActiveFiltersOption = $session['activeFiltersOption'];
$selectedFilters = $this->_getFromSession('selectedFilters');
$selectedFiltersActiveFilters = $this->_getFromSession('activeFilters');
$selectedFiltersActiveFiltersOperation = $this->_getFromSession('activeFiltersOperation');
$selectedFiltersActiveFiltersOption = $this->_getFromSession('activeFiltersOption');
if (($pos = array_search($fieldName, $selectedFilters)) !== false)
{
@@ -379,11 +379,11 @@ class Filters extends VileSci_Controller
$session = $this->_readSession($filterUniqueId);
$allSelectedFields = $session['allSelectedFields'];
$allColumnsAliases = $session['allColumnsAliases'];
$allSelectedFields = $this->_getFromSession('allSelectedFields');
$allColumnsAliases = $this->_getFromSession('allColumnsAliases');
$selectedFields = $session['selectedFields'];
$columnsAliases = $session['columnsAliases'];
$selectedFields = $this->_getFromSession('selectedFields');
$columnsAliases = $this->_getFromSession('columnsAliases');
if (($pos = array_search($fieldName, $allSelectedFields)) !== false
&& array_search($fieldName, $selectedFields) === false)
@@ -419,10 +419,10 @@ class Filters extends VileSci_Controller
$session = $this->_readSession($filterUniqueId);
$selectedFilters = $session['selectedFilters'];
$selectedFiltersActiveFilters = $session['activeFilters'];
$selectedFiltersActiveFiltersOperation = $session['activeFiltersOperation'];
$selectedFiltersActiveFiltersOption = $session['activeFiltersOption'];
$selectedFilters = $this->_getFromSession('selectedFilters');
$selectedFiltersActiveFilters = $this->_getFromSession('activeFilters');
$selectedFiltersActiveFiltersOperation = $this->_getFromSession('activeFiltersOperation');
$selectedFiltersActiveFiltersOption = $this->_getFromSession('activeFiltersOption');
if (!in_array($fieldName, $selectedFilters))
{
@@ -487,7 +487,7 @@ class Filters extends VileSci_Controller
$session = $this->_readSession($this->_getFilterUniqueId());
$dataset = $session['dataset'];
$dataset = $this->_getFromSession('dataset');
if (is_array($dataset))
{
@@ -540,4 +540,16 @@ class Filters extends VileSci_Controller
return $_getFilterUniqueId;
}
/**
*
*/
private function _getFromSession($el)
{
$_getFromSession = null;
if (isset($_SESSION[$el])) return $_SESSION[$el];
return $_getFromSession;
}
}
@@ -44,7 +44,6 @@ class Filters_model extends DB_Model
$filterParametersArray = array(
'app' => $app,
'dataset_name' => $dataset_name,
'default_filter' => false,
'array_length(description, 1) >' => 0,
'uid' => $uid
);
+89 -66
View File
@@ -131,7 +131,7 @@ class FilterWidget extends Widget
}
//
if ($filterSessionArray[self::FILTER_ID] != $this->filterId)
if ($this->filterId <= 0 || $filterSessionArray[self::FILTER_ID] != $this->filterId)
{
//
$this->_loadFilter();
@@ -143,75 +143,79 @@ class FilterWidget extends Widget
//
$this->FiltersModel->resetQuery();
//
$this->dataset = @$this->FiltersModel->execReadOnlyQuery($this->_generateQuery());
//
$this->listFields = $this->FiltersModel->getExecutedQueryListFields();
//
$selectedFields = array();
$filterSessionArray = $this->_readSession();
if (isset($filterSessionArray[self::SELECTED_FIELDS]))
$query = $this->_generateQuery();
if ($query != null)
{
$selectedFields = $filterSessionArray[self::SELECTED_FIELDS];
}
//
$this->dataset = @$this->FiltersModel->execReadOnlyQuery($query);
//
if (count($selectedFields) == 0)
{
$filterSessionArray[self::SELECTED_FIELDS] = $this->listFields;
}
//
$this->listFields = $this->FiltersModel->getExecutedQueryListFields();
//
if ($this->columnsAliases != null && count($this->listFields) != count($this->columnsAliases))
{
show_error('Parameter columnsAliases does not have a number of items equal to those returned by the query');
}
$filterSessionArray[self::COLUMNS_ALIASES] = $this->_getColumnAliasesFromPost();
$filterSessionArray[self::CHECKBOXES] = $this->checkboxes;
if ($this->app != null)
{
$filterSessionArray[self::APP_PARAMETER] = $this->app;
}
if ($this->datasetName != null)
{
$filterSessionArray[self::DATASET_NAME_PARAMETER] = $this->datasetName;
}
$filterSessionArray[self::ALL_SELECTED_FIELDS] = $this->listFields;
$filterSessionArray[self::ALL_COLUMNS_ALIASES] = $this->columnsAliases;
/* ------------------------------------------------------------ */
$tmpDataset = null;
if (hasData($this->dataset))
{
$tmpDataset = array();
for ($resultsCounter = 0; $resultsCounter < count($this->dataset->retval); $resultsCounter++)
//
$selectedFields = array();
$filterSessionArray = $this->_readSession();
if (isset($filterSessionArray[self::SELECTED_FIELDS]))
{
$result = $this->dataset->retval[$resultsCounter];
$class = $this->_markRow($result);
$formattedResult = $this->_formatRaw($result);
$formattedResult->FILTER_CLASS_MARK_ROW = $class;
$tmpDataset[] = $formattedResult;
$selectedFields = $filterSessionArray[self::SELECTED_FIELDS];
}
//
if (count($selectedFields) == 0)
{
$filterSessionArray[self::SELECTED_FIELDS] = $this->listFields;
}
//
if ($this->columnsAliases != null && count($this->listFields) != count($this->columnsAliases))
{
show_error('Parameter columnsAliases does not have a number of items equal to those returned by the query');
}
$filterSessionArray[self::COLUMNS_ALIASES] = $this->_getColumnAliasesFromPost();
$filterSessionArray[self::CHECKBOXES] = $this->checkboxes;
if ($this->app != null)
{
$filterSessionArray[self::APP_PARAMETER] = $this->app;
}
if ($this->datasetName != null)
{
$filterSessionArray[self::DATASET_NAME_PARAMETER] = $this->datasetName;
}
$filterSessionArray[self::ALL_SELECTED_FIELDS] = $this->listFields;
$filterSessionArray[self::ALL_COLUMNS_ALIASES] = $this->columnsAliases;
/* ------------------------------------------------------------ */
$tmpDataset = null;
if (hasData($this->dataset))
{
$tmpDataset = array();
for ($resultsCounter = 0; $resultsCounter < count($this->dataset->retval); $resultsCounter++)
{
$result = $this->dataset->retval[$resultsCounter];
$class = $this->_markRow($result);
$formattedResult = $this->_formatRaw($result);
$formattedResult->FILTER_CLASS_MARK_ROW = $class;
$tmpDataset[] = $formattedResult;
}
}
$filterSessionArray[self::DATASET_PARAMETER] = $tmpDataset;
/* ------------------------------------------------------------ */
//
$this->metaData = $this->FiltersModel->getExecutedQueryMetaData();
$filterSessionArray[self::METADATA_PARAMETER] = $this->metaData;
}
$filterSessionArray[self::DATASET_PARAMETER] = $tmpDataset;
/* ------------------------------------------------------------ */
//
$this->metaData = $this->FiltersModel->getExecutedQueryMetaData();
$filterSessionArray[self::METADATA_PARAMETER] = $this->metaData;
$this->_writeSession($filterSessionArray);
//
@@ -631,12 +635,13 @@ class FilterWidget extends Widget
$whereParameters = null;
if ($this->filterId == null)
if ($this->filterId <= 0)
{
// Try to load the custom filter (person_id = logged user person_id) with the given "app" and "dataset_name"
// that is set as default filter (default_filter = true)
$whereParameters = array(
'app' => $this->app,
'dataset_name' => $this->datasetName,
'filter_kurzbz' => $this->filterKurzbz,
'uid' => getAuthUID(),
'default_filter' => true
);
@@ -660,6 +665,24 @@ class FilterWidget extends Widget
$jsonEncodedFilter = json_decode($filter->retval[0]->filter);
}
}
else // Try to load the global filter (person_id = null) with the given "app" and "dataset_name" that is set as
// default filter (default_filter = true)
{
$whereParameters = array(
'app' => $this->app,
'dataset_name' => $this->datasetName,
'default_filter' => true
);
$filter = $this->FiltersModel->loadWhere($whereParameters);
if (hasData($filter))
{
if (isset($filter->retval[0]->filter) && trim($filter->retval[0]->filter) != '')
{
$jsonEncodedFilter = json_decode($filter->retval[0]->filter);
}
}
}
if ($jsonEncodedFilter != null)
{
@@ -1053,7 +1076,7 @@ class FilterWidget extends Widget
*/
private function _generateQuery()
{
$query = $this->query;
$query = null;//$this->query;
$activeFilters = array();
$activeFiltersOperation = array();
+48 -39
View File
@@ -81,20 +81,23 @@ var FHC_FilterWidget = {
var strDropDown = '<option value="">Select a field to add...</option>';
$("#addField").append(strDropDown);
for (var i = 0; i < data.allSelectedFields.length; i++)
if (data.allSelectedFields != null)
{
var fieldName = data.allSelectedFields[i];
var fieldToDisplay = data.allSelectedFields[i];
if (data.selectedFields.indexOf(fieldName) < 0)
for (var i = 0; i < data.allSelectedFields.length; i++)
{
if (data.allColumnsAliases != null && $.isArray(data.allColumnsAliases))
{
fieldToDisplay = data.allColumnsAliases[i];
}
var fieldName = data.allSelectedFields[i];
var fieldToDisplay = data.allSelectedFields[i];
strDropDown = '<option value="' + fieldName + '">' + fieldToDisplay + '</option>';
$("#addField").append(strDropDown);
if (data.selectedFields.indexOf(fieldName) < 0)
{
if (data.allColumnsAliases != null && $.isArray(data.allColumnsAliases))
{
fieldToDisplay = data.allColumnsAliases[i];
}
strDropDown = '<option value="' + fieldName + '">' + fieldToDisplay + '</option>';
$("#addField").append(strDropDown);
}
}
}
}
@@ -126,44 +129,50 @@ var FHC_FilterWidget = {
var strDropDown = '<option value="">Select a filter to add...</option>';
$("#addFilter").append(strDropDown);
for (var i = 0; i < data.selectedFilters.length; i++)
if (data.selectedFilters != null)
{
var selectedFilters = '<div>';
for (var i = 0; i < data.selectedFilters.length; i++)
{
var selectedFilters = '<div>';
selectedFilters += '<span class="filter-options-span">';
selectedFilters += data.selectedFiltersAliases[i];
selectedFilters += '</span>';
selectedFilters += '<span class="filter-options-span">';
selectedFilters += data.selectedFiltersAliases[i];
selectedFilters += '</span>';
selectedFilters += FHC_FilterWidget._getSelectedFilterFields(
data.selectedFiltersMetaData[i],
data.selectedFiltersActiveFilters[i],
data.selectedFiltersActiveFiltersOperation[i],
data.selectedFiltersActiveFiltersOption[i]
);
selectedFilters += FHC_FilterWidget._getSelectedFilterFields(
data.selectedFiltersMetaData[i],
data.selectedFiltersActiveFilters[i],
data.selectedFiltersActiveFiltersOperation[i],
data.selectedFiltersActiveFiltersOption[i]
);
selectedFilters += '<span>';
selectedFilters += '<input type="button" value="X" class="remove-selected-filter btn btn-default" filterToRemove="' + data.selectedFilters[i] + '">';
selectedFilters += '</span>';
selectedFilters += '<span>';
selectedFilters += '<input type="button" value="X" class="remove-selected-filter btn btn-default" filterToRemove="' + data.selectedFilters[i] + '">';
selectedFilters += '</span>';
selectedFilters += '</div>';
selectedFilters += '</div>';
$("#selectedFilters").append(selectedFilters);
$("#selectedFilters").append(selectedFilters);
}
}
for (var i = 0; i < data.allSelectedFields.length; i++)
if (data.allSelectedFields != null)
{
var fieldName = data.allSelectedFields[i];
var fieldToDisplay = data.allSelectedFields[i];
if (data.selectedFilters.indexOf(fieldName) < 0)
for (var i = 0; i < data.allSelectedFields.length; i++)
{
if (data.allColumnsAliases != null && $.isArray(data.allColumnsAliases))
{
fieldToDisplay = data.allColumnsAliases[i];
}
var fieldName = data.allSelectedFields[i];
var fieldToDisplay = data.allSelectedFields[i];
strDropDown = '<option value="' + fieldName + '">' + fieldToDisplay + '</option>';
$("#addFilter").append(strDropDown);
if (data.selectedFilters.indexOf(fieldName) < 0)
{
if (data.allColumnsAliases != null && $.isArray(data.allColumnsAliases))
{
fieldToDisplay = data.allColumnsAliases[i];
}
strDropDown = '<option value="' + fieldName + '">' + fieldToDisplay + '</option>';
$("#addFilter").append(strDropDown);
}
}
}
}
@@ -279,7 +288,7 @@ var FHC_FilterWidget = {
}
else
{
console.log("No fields to display!!!");
// console.log("No fields to display!!!");
}
}
else