mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-07-20 00:12:15 +00:00
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:
@@ -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
|
||||
);
|
||||
|
||||
@@ -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
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user