Merge branch 'feature-3854/Refactor_sqls_for_filterwidgets'

This commit is contained in:
Andreas Österreicher
2019-10-28 16:28:57 +01:00
5 changed files with 53 additions and 19 deletions
@@ -24,6 +24,8 @@ class InfoCenter extends Auth_Controller
const FILTER_ID = 'filter_id';
const PREV_FILTER_ID = 'prev_filter_id';
const RELOAD_DATASET = 'reloadDataset';
const KEEP_TABLESORTER_FILTER = 'keepTsFilter';
private $_uid; // contains the UID of the logged user
@@ -234,7 +236,7 @@ class InfoCenter extends Auth_Controller
$redirectLink = '/'.self::INFOCENTER_URI.'?'.self::FHC_CONTROLLER_ID.'='.$this->getControllerId();
// Force reload of Dataset after Unlock
$redirectLink .= '&reloadDataset=true';
$redirectLink .= '&'.self::RELOAD_DATASET.'=true&'.self::KEEP_TABLESORTER_FILTER.'=true';
$currentFilterId = $this->input->get(self::FILTER_ID);
if (isset($currentFilterId))
@@ -894,10 +896,16 @@ class InfoCenter extends Auth_Controller
$freigegebenLink = site_url(self::INFOCENTER_URI.'/'.self::FREIGEGEBEN_PAGE);
$reihungstestAbsolviertLink = site_url(self::INFOCENTER_URI.'/'.self::REIHUNGSTESTABSOLVIERT_PAGE);
$currentFilterId = $this->input->get(self::FILTER_ID);
$reloadDatasetParam = self::RELOAD_DATASET.'=true';
if (isset($currentFilterId))
{
$freigegebenLink .= '?'.self::PREV_FILTER_ID.'='.$currentFilterId;
$reihungstestAbsolviertLink .= '?'.self::PREV_FILTER_ID.'='.$currentFilterId;
$freigegebenLink .= '?'.self::PREV_FILTER_ID.'='.$currentFilterId.'&'.$reloadDatasetParam;
$reihungstestAbsolviertLink .= '?'.self::PREV_FILTER_ID.'='.$currentFilterId.'&'.$reloadDatasetParam;
}
else
{
$freigegebenLink .= '?'.$reloadDatasetParam;
$reihungstestAbsolviertLink .= '?'.$reloadDatasetParam;
}
$this->navigationlib->setSessionMenu(
@@ -950,7 +958,7 @@ class InfoCenter extends Auth_Controller
$origin_page = $this->input->get(self::ORIGIN_PAGE);
$link = site_url(self::INFOCENTER_URI.'/'.self::INDEX_PAGE);
$link = site_url(self::INFOCENTER_URI);
if ($origin_page == self::FREIGEGEBEN_PAGE)
{
$link = site_url(self::INFOCENTER_URI.'/'.self::FREIGEGEBEN_PAGE);
@@ -963,7 +971,7 @@ class InfoCenter extends Auth_Controller
$prevFilterId = $this->input->get(self::PREV_FILTER_ID);
if (isset($prevFilterId))
{
$link .= '?'.self::FILTER_ID.'='.$prevFilterId;
$link .= '?'.self::FILTER_ID.'='.$prevFilterId.'&'.self::RELOAD_DATASET.'=true&'.self::KEEP_TABLESORTER_FILTER.'=true';
}
$this->navigationlib->setSessionMenu(
@@ -993,13 +1001,14 @@ class InfoCenter extends Auth_Controller
$this->load->library('NavigationLib', array(self::NAVIGATION_PAGE => self::INFOCENTER_URI.'/'.$page));
// Generate the home link with the eventually loaded filter
$homeLink = site_url(self::INFOCENTER_URI.'/'.self::INDEX_PAGE);
$freigegebenLink = site_url(self::INFOCENTER_URI.'/'.self::FREIGEGEBEN_PAGE);
$absolviertLink = site_url(self::INFOCENTER_URI.'/'.self::REIHUNGSTESTABSOLVIERT_PAGE);
$reloadDatasetParam = '?'.self::RELOAD_DATASET.'=true';
$homeLink = site_url(self::INFOCENTER_URI.'/'.self::INDEX_PAGE.$reloadDatasetParam);
$freigegebenLink = site_url(self::INFOCENTER_URI.'/'.self::FREIGEGEBEN_PAGE.$reloadDatasetParam);
$absolviertLink = site_url(self::INFOCENTER_URI.'/'.self::REIHUNGSTESTABSOLVIERT_PAGE.$reloadDatasetParam);
$prevFilterId = $this->input->get(self::PREV_FILTER_ID);
if (isset($prevFilterId))
{
$homeLink .= '?'.self::FILTER_ID.'='.$prevFilterId;
$homeLink .= '&'.self::FILTER_ID.'='.$prevFilterId;
}
$this->navigationlib->setSessionElementMenu(
@@ -235,6 +235,7 @@
'filter_id' => $this->input->get('filter_id'),
'requiredPermissions' => 'infocenter',
'datasetRepresentation' => 'tablesorter',
'reloadDataset' => ($this->input->get('reloadDataset')=='true'?true:false),
'checkboxes' => 'PersonId',
'additionalColumns' => array('Details'),
'columnsAliases' => array(
@@ -204,6 +204,7 @@
'filter_id' => $this->input->get('filter_id'),
'requiredPermissions' => 'infocenter',
'datasetRepresentation' => 'tablesorter',
'reloadDataset' => ($this->input->get('reloadDataset')=='true'?true:false),
'checkboxes' => 'PersonId',
'additionalColumns' => array('Details'),
'columnsAliases' => array(
+11 -10
View File
@@ -84,7 +84,7 @@ var FHC_FilterWidget = {
// Public methods
/**
* To display the FilterWidget using the loaded data prenset in the session
* To display the FilterWidget using the loaded data present in the session
*/
display: function() {
@@ -392,7 +392,6 @@ var FHC_FilterWidget = {
},
{
successCallback: function(data, textStatus, jqXHR) {
FHC_FilterWidget._cleanTablesorterLocalStorage();
FHC_FilterWidget._failOrRefresh(data, textStatus, jqXHR);
}
}
@@ -453,7 +452,6 @@ var FHC_FilterWidget = {
},
{
successCallback: function(data, textStatus, jqXHR) {
FHC_FilterWidget._cleanTablesorterLocalStorage();
FHC_FilterWidget._failOrRefresh(data, textStatus, jqXHR);
}
}
@@ -837,6 +835,14 @@ var FHC_FilterWidget = {
*/
_renderDatasetTablesorter: function(data) {
//clear tablesorter filter storage
var keepTsFilter = FHC_AjaxClient.getUrlParameter("keepTsFilter");
if (typeof keepTsFilter === "undefined" || keepTsFilter !== "true")
{
FHC_FilterWidget._clearTablesorterLocalStorage();
}
if (data.hasOwnProperty("checkboxes") && data.checkboxes!=null && data.checkboxes.trim() != "")
{
$("#filterTableDataset > thead > tr").append("<th data-filter='false' title='Select'>Select</th>");
@@ -935,10 +941,6 @@ var FHC_FilterWidget = {
}
});
// Reset filter storage if there is a filter id in url TODO: find better solution
var filter_id = FHC_AjaxClient.getUrlParameter("filter_id");
if (typeof filter_id !== "undefined") FHC_FilterWidget._cleanTablesorterLocalStorage();
$.tablesorter.updateAll($("#filterTableDataset")[0].config, true, null);
}
},
@@ -1057,9 +1059,8 @@ var FHC_FilterWidget = {
/**
* Tablesorter filter local storage clean
*/
_cleanTablesorterLocalStorage: function() {
$("#filterTableDataset").trigger("filterResetSaved");
_clearTablesorterLocalStorage: function() {
localStorage.removeItem("tablesorter-filters");
},
/**
@@ -148,6 +148,28 @@ var InfocenterPersonDataset = {
trs.find("input[name=PersonId\\[\\]]").prop("checked", false);
}
);
//make sure tablesorter local storage for homepage url with and without "/index" shares same values
$("#filterTableDataset").bind('filterEnd', function()
{
if (FHC_JS_DATA_STORAGE_OBJECT.called_method === 'index')
{
var pathname = window.location.pathname;
var storageobj = localStorage.getItem("tablesorter-filters");
var parsed = JSON.parse(storageobj);
var regex = new RegExp(/\/index(?!\.ci\.php)/);
if (regex.test(pathname))
{
parsed[pathname.replace(regex, "")] = parsed[pathname];
}
else
{
parsed[pathname + "/index"] = parsed[pathname];
}
storageobj = JSON.stringify(parsed);
localStorage.setItem("tablesorter-filters", storageobj);
}
});
},
/**