diff --git a/application/controllers/widgets/Filters.php b/application/controllers/widgets/Filters.php
index 1587683d2..a4b23dc8a 100644
--- a/application/controllers/widgets/Filters.php
+++ b/application/controllers/widgets/Filters.php
@@ -12,7 +12,7 @@ if (! defined('BASEPATH')) exit('No direct script access allowed');
*/
class Filters extends FHC_Controller
{
- const FILTER_PAGE_PARAM = 'filter_page';
+ const FILTER_UNIQUE_ID = 'filterUniqueId';
/**
* Calls the parent's constructor and loads the FilterWidgetLib
@@ -231,31 +231,33 @@ class Filters extends FHC_Controller
}
/**
- * Loads the FilterWidgetLib with the FILTER_PAGE_PARAM parameter
- * If the parameter FILTER_PAGE_PARAM is not given then the execution of the controller is terminated and
+ * Loads the FilterWidgetLib with the FILTER_UNIQUE_ID parameter
+ * If the parameter FILTER_UNIQUE_ID is not given then the execution of the controller is terminated and
* an error message is printed
*/
private function _loadFilterWidgetLib()
{
- // If the parameter FILTER_PAGE_PARAM is present in the HTTP GET or POST
- if (isset($_GET[self::FILTER_PAGE_PARAM]) || isset($_POST[self::FILTER_PAGE_PARAM]))
+ // If the parameter FILTER_UNIQUE_ID is present in the HTTP GET or POST
+ if (isset($_GET[self::FILTER_UNIQUE_ID]) || isset($_POST[self::FILTER_UNIQUE_ID]))
{
// If it is present in the HTTP GET
- if (isset($_GET[self::FILTER_PAGE_PARAM]))
+ if (isset($_GET[self::FILTER_UNIQUE_ID]))
{
- $filterPage = $this->input->get(self::FILTER_PAGE_PARAM); // is retrieved from the HTTP GET
+ $filterUniqueId = $this->input->get(self::FILTER_UNIQUE_ID); // is retrieved from the HTTP GET
}
- elseif (isset($_POST[self::FILTER_PAGE_PARAM])) // Else if it is present in the HTTP POST
+ elseif (isset($_POST[self::FILTER_UNIQUE_ID])) // Else if it is present in the HTTP POST
{
- $filterPage = $this->input->post(self::FILTER_PAGE_PARAM); // is retrieved from the HTTP POST
+ $filterUniqueId = $this->input->post(self::FILTER_UNIQUE_ID); // is retrieved from the HTTP POST
}
// Loads the FilterWidgetLib that contains all the used logic
- $this->load->library('FilterWidgetLib', array(self::FILTER_PAGE_PARAM => $filterPage));
+ $this->load->library('FilterWidgetLib');
+
+ $this->filterwidgetlib->setFilterUniqueId($filterUniqueId);
}
else // Otherwise an error will be written in the output
{
- $this->terminateWithJsonError('Parameter "'.self::FILTER_PAGE_PARAM.'" not provided!');
+ $this->terminateWithJsonError('Parameter "'.self::FILTER_UNIQUE_ID.'" not provided!');
}
}
}
diff --git a/application/libraries/FilterWidgetLib.php b/application/libraries/FilterWidgetLib.php
index f60a28e23..23453a56f 100644
--- a/application/libraries/FilterWidgetLib.php
+++ b/application/libraries/FilterWidgetLib.php
@@ -90,7 +90,7 @@ class FilterWidgetLib
const FILTER_PHRASES_CATEGORY = 'FilterWidget'; // The category used to store phrases for the FilterWidget
- const FILTER_PAGE_PARAM = 'filter_page'; // Filter page parameter name
+ const FILTER_UNIQUE_ID = 'filterUniqueId'; // Filter page parameter name
const PERMISSION_FILTER_METHOD = 'FilterWidget'; // Name for fake method to be checked by the PermissionLib
const PERMISSION_TYPE = 'rw';
@@ -113,8 +113,6 @@ class FilterWidgetLib
public function __construct($params = null)
{
$this->_ci =& get_instance(); // get code igniter instance
-
- $this->_filterUniqueId = $this->_getFilterUniqueId($params); // sets the id for the related filter widget
}
//------------------------------------------------------------------------------------------------------------------
@@ -782,14 +780,14 @@ class FilterWidgetLib
* NOTE: The default value is the URI where the FilterWidget is called
* If the fhc_controller_id is present then is also used
*/
- private function _getFilterUniqueId($params)
+ public function setFilterUniqueIdByParams($params)
{
if ($params != null
&& is_array($params)
- && isset($params[self::FILTER_PAGE_PARAM])
- && !isEmptyString($params[self::FILTER_PAGE_PARAM]))
+ && isset($params[self::FILTER_UNIQUE_ID])
+ && !isEmptyString($params[self::FILTER_UNIQUE_ID]))
{
- $filterUniqueId = $params[self::FILTER_PAGE_PARAM];
+ $filterUniqueId = $params[self::FILTER_UNIQUE_ID];
}
else
{
@@ -797,6 +795,21 @@ class FilterWidgetLib
$filterUniqueId = $this->_ci->router->directory.$this->_ci->router->class.'/'.$this->_ci->router->method;
}
+ if ($params != null
+ && is_array($params)
+ && (isset($params[self::APP_PARAMETER]) || isset($params[self::DATASET_NAME_PARAMETER]) || isset($params[self::FILTER_ID])))
+ {
+ $app = '';
+ $dataset = '';
+ $filterid = '';
+
+ if (isset($params[self::APP_PARAMETER])) $app = $params[self::APP_PARAMETER];
+ if (isset($params[self::DATASET_NAME_PARAMETER])) $dataset = $params[self::DATASET_NAME_PARAMETER];
+ if (isset($params[self::FILTER_ID])) $filterid = $params[self::FILTER_ID];
+
+ $filterUniqueId .= '/'.$app.':'.$dataset.':'.$filterid;
+ }
+
// If the FHC_CONTROLLER_ID parameter is present in the HTTP GET
if (isset($_GET[self::FHC_CONTROLLER_ID]))
{
@@ -807,7 +820,25 @@ class FilterWidgetLib
$filterUniqueId .= '/'.$this->_ci->input->post(self::FHC_CONTROLLER_ID); // then use it
}
- return $filterUniqueId;
+ $this->_filterUniqueId = $filterUniqueId;
+ }
+
+ /**
+ *
+ */
+ public function setFilterUniqueId($filterUniqueId)
+ {
+ // If the FHC_CONTROLLER_ID parameter is present in the HTTP GET
+ if (isset($_GET[self::FHC_CONTROLLER_ID]))
+ {
+ $filterUniqueId .= '/'.$this->_ci->input->get(self::FHC_CONTROLLER_ID); // then use it
+ }
+ elseif (isset($_POST[self::FHC_CONTROLLER_ID])) // else if the FHC_CONTROLLER_ID parameter is present in the HTTP POST
+ {
+ $filterUniqueId .= '/'.$this->_ci->input->post(self::FHC_CONTROLLER_ID); // then use it
+ }
+
+ $this->_filterUniqueId = $filterUniqueId;
}
/**
diff --git a/application/views/widgets/filter/filter.php b/application/views/widgets/filter/filter.php
index 9c05581ff..7a6300cf6 100644
--- a/application/views/widgets/filter/filter.php
+++ b/application/views/widgets/filter/filter.php
@@ -1,4 +1,5 @@
-
+
+
@@ -12,7 +13,7 @@
-
+
diff --git a/application/widgets/FilterWidget.php b/application/widgets/FilterWidget.php
index 828cd194d..d168744c8 100644
--- a/application/widgets/FilterWidget.php
+++ b/application/widgets/FilterWidget.php
@@ -72,6 +72,8 @@ class FilterWidget extends Widget
$this->_initFilterWidget($args); // checks parameters and initialize properties
+ $this->filterwidgetlib->setFilterUniqueIdByParams($args);
+
// Let's start if it's allowed
// NOTE: If it is NOT allowed then no data are loaded
if ($this->filterwidgetlib->isAllowed($this->_requiredPermissions))
diff --git a/public/js/FilterWidget.js b/public/js/FilterWidget.js
index 747843b0d..7ff1e972a 100644
--- a/public/js/FilterWidget.js
+++ b/public/js/FilterWidget.js
@@ -13,14 +13,17 @@
* Global function used by FilterWidget JS to refresh the side menu
* NOTE: it is called from the FilterWidget JS therefore must be a global function
* It may be overwritten by a custom refreshSideMenuHook included in a javascript which will be loaded after this one
- * The given parameters, filter_page and navigation_page, are required
+ * The given parameters, filterUniqueId and navigation_page, are required
*/
-function refreshSideMenuHook()
+function refreshSideMenuHook(app, dataset, filterid)
{
FHC_NavigationWidget.refreshSideMenuHook(
'widgets/Filters/setNavigationMenu',
{
- filter_page: FHC_FilterWidget.getFilterPage(),
+ filterUniqueId: FHC_FilterWidget.getFilterUniqueIdPrefix() + "/" +
+ app + ":" +
+ dataset + ":" +
+ filterid,
navigation_page: FHC_NavigationWidget.getNavigationPage()
}
);
@@ -33,8 +36,8 @@ function refreshSideMenuHook()
*/
function sideMenuHook()
{
- // If menu is present
- if (FHC_FilterWidget._hideMenu != true)
+ // If menu is present and there is only one FilterWidget in this page
+ if (FHC_FilterWidget._hideMenu != true && FHC_FilterWidget._isMultipleFilterWidgets() != true)
{
$(".remove-custom-filter").click(function() {
@@ -43,7 +46,10 @@ function sideMenuHook()
"widgets/Filters/removeCustomFilter",
{
filter_id: $(this).attr("value"), // filter_id of the filter to be removed
- filter_page: FHC_FilterWidget.getFilterPage()
+ filterUniqueId: FHC_FilterWidget.getFilterUniqueIdPrefix() + "/" +
+ FHC_FilterWidget._filterWidgetsAttributes[0].app + ":" +
+ FHC_FilterWidget._filterWidgetsAttributes[0].dataset + ":" +
+ FHC_FilterWidget._filterWidgetsAttributes[0].filterid
},
{
successCallback: function(data, textStatus, jqXHR) {
@@ -54,10 +60,13 @@ function sideMenuHook()
}
else
{
- // If a success and refreshSideMenuHook is a valid function then call it to refresh the side menu
if (typeof refreshSideMenuHook == "function")
{
- refreshSideMenuHook();
+ refreshSideMenuHook(
+ FHC_FilterWidget._filterWidgetsAttributes[0].app,
+ FHC_FilterWidget._filterWidgetsAttributes[0].dataset,
+ FHC_FilterWidget._filterWidgetsAttributes[0].filterid
+ );
}
}
}
@@ -84,7 +93,9 @@ var FHC_FilterWidget = {
// Properties
_datasetRepresentation: null, // contains the current data representation
- _filterTabulator: null, // stores the tabulator object (if used, otherwise is null)
+ _filterWidgetsAttributes: null, //
+ _hideMenu: false, //
+ _hideOptions: false, //
//------------------------------------------------------------------------------------------------------------------
// Public methods
@@ -94,6 +105,8 @@ var FHC_FilterWidget = {
*/
display: function() {
+ FHC_FilterWidget._setFilterWidgetsAttributes();
+
FHC_FilterWidget._getFilter(FHC_FilterWidget._renderFilterWidget);
},
@@ -108,7 +121,7 @@ var FHC_FilterWidget = {
/**
* To retrive the page where the FilterWidget is used, using the FHC_JS_DATA_STORAGE_OBJECT
*/
- getFilterPage: function() {
+ getFilterUniqueIdPrefix: function() {
return FHC_JS_DATA_STORAGE_OBJECT.called_path + "/" + FHC_JS_DATA_STORAGE_OBJECT.called_method;
},
@@ -151,30 +164,30 @@ var FHC_FilterWidget = {
/**
* To reset the Filter Options GUI
*/
- _resetGUI: function() {
+ _resetGUI: function(filterWidgetDiv) {
- $("#dragAndDropFieldsArea").html("");
- $("#addField").html("");
- $("#appliedFilters").html("");
- $("#addFilter").html("");
+ filterWidgetDiv.find("#dragAndDropFieldsArea").html("");
+ filterWidgetDiv.find("#addField").html("");
+ filterWidgetDiv.find("#appliedFilters").html("");
+ filterWidgetDiv.find("#addFilter").html("");
// If the choosen dataset representation is tablesorter
if (FHC_FilterWidget._datasetRepresentation == DATASET_REP_TABLESORTER)
{
- $("#filterTableDataset > thead > tr").html("");
- $("#filterTableDataset > tbody").html("");
+ filterWidgetDiv.find("#filterTableDataset > thead > tr").html("");
+ filterWidgetDiv.find("#filterTableDataset > tbody").html("");
}
// If the choosen dataset representation is pivotUI
if (FHC_FilterWidget._datasetRepresentation == DATASET_REP_PIVOTUI)
{
- $("#filterPivotUI").html("");
+ filterWidgetDiv.find("#filterPivotUI").html("");
}
// If the choosen dataset representation is tabulator
if (FHC_FilterWidget._datasetRepresentation == DATASET_REP_TABULATOR)
{
- $("#filterTabulator").html("");
+ filterWidgetDiv.find("#filterTabulator").html("");
}
},
@@ -184,28 +197,35 @@ var FHC_FilterWidget = {
*/
_getFilter: function(renderFunction) {
- FHC_AjaxClient.ajaxCallGet(
- "widgets/Filters/getFilter",
- {
- filter_page: FHC_FilterWidget.getFilterPage()
- },
- {
- successCallback: function(data, textStatus, jqXHR) {
+ FHC_FilterWidget._filterWidgetsAttributes.forEach(function(filterWidgetsAttributes) {
- if (FHC_AjaxClient.hasData(data))
- {
- if (typeof renderFunction == "function")
+ FHC_AjaxClient.ajaxCallGet(
+ "widgets/Filters/getFilter",
+ {
+ filterUniqueId: FHC_FilterWidget.getFilterUniqueIdPrefix() + "/" +
+ filterWidgetsAttributes.app + ":" +
+ filterWidgetsAttributes.dataset + ":" +
+ filterWidgetsAttributes.filterid
+ },
+ {
+ successCallback: function(data, textStatus, jqXHR) {
+
+ if (FHC_AjaxClient.hasData(data))
{
- renderFunction(FHC_AjaxClient.getData(data));
+ if (typeof renderFunction == "function")
+ {
+ renderFunction(FHC_AjaxClient.getData(data));
+ }
+ }
+ else
+ {
+ console.log(FHC_AjaxClient.getError(data));
}
}
- else
- {
- console.log(FHC_AjaxClient.getError(data));
- }
}
- }
- );
+ );
+
+ });
},
/**
@@ -216,23 +236,35 @@ var FHC_FilterWidget = {
*/
_renderFilterWidget: function(data) {
+ var app = data.app != null ? data.app : "";
+ var dataset = data.datasetName != null ? data.datasetName : "";
+ var filterid = data.filter_id != null ? data.filter_id : "";
+
+ var filterWidgetDiv = $('div[app="' + app + '"][dataset="' + dataset + '"][filterid="' + filterid + '"]');
+
FHC_FilterWidget._initSessionStorage(); // initialize the session storage
FHC_FilterWidget._setDatasetRepresentation(data); // set what type of dataset representation was choosen
FHC_FilterWidget._setHideMenu(data); // sets the _hideMenu property
+ FHC_FilterWidget._setHideOptions(data);
- FHC_FilterWidget._turnOffEvents(); // turns all the events off
- FHC_FilterWidget._resetGUI(); // Reset the entire GUI
+ FHC_FilterWidget._turnOffEvents(filterWidgetDiv); // turns all the events off
+ FHC_FilterWidget._resetGUI(filterWidgetDiv); // Reset the entire GUI
// Render the GUI for this FilterWidget
- FHC_FilterWidget._setFilterName(data); // set the name in the GUI
- FHC_FilterWidget._renderDragAndDropFields(data); // render the fields drag and drop GUI
- FHC_FilterWidget._renderDropDownFields(data); // render the fields drop-down
- FHC_FilterWidget._renderAppliedFilters(data); // render the GUI for the applied filters
- FHC_FilterWidget._renderDropDownFilters(data); // render the filters drop-down
- FHC_FilterWidget._renderDataset(data);
+ FHC_FilterWidget._setFilterName(filterWidgetDiv, data); // set the name in the GUI
- FHC_FilterWidget._turnOnEvents(); // turns all the events off
+ if (FHC_FilterWidget._hideOptions != true)
+ {
+ FHC_FilterWidget._renderDragAndDropFields(filterWidgetDiv, data); // render the fields drag and drop GUI
+ FHC_FilterWidget._renderDropDownFields(filterWidgetDiv, data); // render the fields drop-down
+ FHC_FilterWidget._renderAppliedFilters(filterWidgetDiv, data); // render the GUI for the applied filters
+ FHC_FilterWidget._renderDropDownFilters(filterWidgetDiv, data); // render the filters drop-down
+ }
+
+ FHC_FilterWidget._renderDataset(filterWidgetDiv, data);
+
+ FHC_FilterWidget._turnOnEvents(filterWidgetDiv); // turns all the events off
},
/**
@@ -259,23 +291,23 @@ var FHC_FilterWidget = {
* Turns all the events off
* NOTE: must be aligned to _turnOnEvents
*/
- _turnOffEvents: function() {
+ _turnOffEvents: function(filterWidgetDiv) {
- $("[data-toggle='collapse']").off("click");
- $(".drag-and-drop-fields-span").off("draggable");
- $(".drag-and-drop-fields-span").off("droppable");
- $(".remove-selected-field").off("click");
- $("#addField").off("change");
- $(".applied-filter-operation").off("change");
- $(".remove-applied-filter").off("click");
- $("#addFilter").off("change");
- $("#applyFilter").off("click");
- $("#saveCustomFilterButton").off("click");
+ filterWidgetDiv.find('[data-toggle="collapse"]').off("click");
+ filterWidgetDiv.find(".drag-and-drop-fields-span").off("draggable");
+ filterWidgetDiv.find(".drag-and-drop-fields-span").off("droppable");
+ filterWidgetDiv.find(".remove-selected-field").off("click");
+ filterWidgetDiv.find("#addField").off("change");
+ filterWidgetDiv.find(".applied-filter-operation").off("change");
+ filterWidgetDiv.find(".remove-applied-filter").off("click");
+ filterWidgetDiv.find("#addFilter").off("change");
+ filterWidgetDiv.find("#applyFilter").off("click");
+ filterWidgetDiv.find("#saveCustomFilterButton").off("click");
// If the choosen dataset representation is tablesorter
if (FHC_FilterWidget._datasetRepresentation == DATASET_REP_TABLESORTER)
{
- FHC_FilterWidget._disableTablesorter(); // disable the tablesorter
+ FHC_FilterWidget._disableTablesorter(filterWidgetDiv); // disable the tablesorter
}
},
@@ -283,23 +315,23 @@ var FHC_FilterWidget = {
* Turns all the events on
* NOTE: must be aligned to _turnOffEvents
*/
- _turnOnEvents: function() {
+ _turnOnEvents: function(filterWidgetDiv) {
- $("[data-toggle='collapse']").click(FHC_FilterWidget._dataToggleCollapseEvent); // Click event to collapse or to open the filter options panel
- $(".drag-and-drop-fields-span").draggable(FHC_FilterWidget._draggableConf); // draggable event on selected fields
- $(".drag-and-drop-fields-span").droppable(FHC_FilterWidget._droppableConf); // droppable event on selected fields
- $(".remove-selected-field").click(FHC_FilterWidget._revomeSelectedFieldsEvent); // Click event on the "X" link
- $("#addField").change(FHC_FilterWidget._addFieldEvent); // Change event on the fields drop-down to add new fields
- $(".applied-filter-operation").change(FHC_FilterWidget._appliedFiltersOperationsEvent); // Change event on the operation drop-down
- $(".remove-applied-filter").click(FHC_FilterWidget._removeAppliedFiltersEvent); // Click event to the "X" button to remove an applied filter
- $("#addFilter").change(FHC_FilterWidget._addFilterEvent); // Click event on the applied filters drop-down to add a new filter to the dataset
- $("#applyFilter").click(FHC_FilterWidget._applyFilterEvent); // Click event on the applied filters drop-down to apply filters to the dataset
- $("#saveCustomFilterButton").click(FHC_FilterWidget._saveCustomFilterButtonEvent); // Click evento to for the save custom filter button
+ filterWidgetDiv.find('[data-toggle="collapse"]').click(FHC_FilterWidget._dataToggleCollapseEvent); // Click event to collapse or to open the filter options panel
+ filterWidgetDiv.find(".drag-and-drop-fields-span").draggable(FHC_FilterWidget._draggableConf); // draggable event on selected fields
+ filterWidgetDiv.find(".drag-and-drop-fields-span").droppable(FHC_FilterWidget._droppableConf); // droppable event on selected fields
+ filterWidgetDiv.find(".remove-selected-field").click(FHC_FilterWidget._revomeSelectedFieldsEvent); // Click event on the "X" link
+ filterWidgetDiv.find("#addField").change(FHC_FilterWidget._addFieldEvent); // Change event on the fields drop-down to add new fields
+ filterWidgetDiv.find(".applied-filter-operation").change(FHC_FilterWidget._appliedFiltersOperationsEvent); // Change event on the operation drop-down
+ filterWidgetDiv.find(".remove-applied-filter").click(FHC_FilterWidget._removeAppliedFiltersEvent); // Click event to the "X" button to remove an applied filter
+ filterWidgetDiv.find("#addFilter").change(FHC_FilterWidget._addFilterEvent); // Click event on the applied filters drop-down to add a new filter to the dataset
+ filterWidgetDiv.find("#applyFilter").click(FHC_FilterWidget._applyFilterEvent); // Click event on the applied filters drop-down to apply filters to the dataset
+ filterWidgetDiv.find("#saveCustomFilterButton").click(FHC_FilterWidget._saveCustomFilterButtonEvent); // Click evento to for the save custom filter button
// If the choosen dataset representation is tablesorter
if (FHC_FilterWidget._datasetRepresentation == DATASET_REP_TABLESORTER)
{
- FHC_FilterWidget._enableTableSorter(); // enable the tablesorter
+ FHC_FilterWidget._enableTableSorter(filterWidgetDiv); // enable the tablesorter
}
},
@@ -380,15 +412,20 @@ var FHC_FilterWidget = {
});
+ var divFilterWidgetDataset = $(this).parents("#divFilterWidgetDataset");
+
FHC_AjaxClient.ajaxCallPost(
"widgets/Filters/sortSelectedFields",
{
selectedFields: arrayDndId,
- filter_page: FHC_FilterWidget.getFilterPage()
+ filterUniqueId: FHC_FilterWidget.getFilterUniqueIdPrefix() + "/" +
+ divFilterWidgetDataset.attr("app") + ":" +
+ divFilterWidgetDataset.attr("dataset") + ":" +
+ divFilterWidgetDataset.attr("filterid")
},
{
successCallback: function(data, textStatus, jqXHR) {
- FHC_FilterWidget._cleanTablesorterLocalStorage();
+ FHC_FilterWidget._cleanTablesorterLocalStorage(divFilterWidgetDataset.find("#filterTableDataset"));
FHC_FilterWidget._failOrRefresh(data, textStatus, jqXHR);
}
}
@@ -401,11 +438,16 @@ var FHC_FilterWidget = {
*/
_revomeSelectedFieldsEvent: function(event) {
+ var divFilterWidgetDataset = $(this).parents("#divFilterWidgetDataset");
+
FHC_AjaxClient.ajaxCallPost(
"widgets/Filters/removeSelectedField",
{
selectedField: $(this).attr("fieldToRemove"),
- filter_page: FHC_FilterWidget.getFilterPage()
+ filterUniqueId: FHC_FilterWidget.getFilterUniqueIdPrefix() + "/" +
+ divFilterWidgetDataset.attr("app") + ":" +
+ divFilterWidgetDataset.attr("dataset") + ":" +
+ divFilterWidgetDataset.attr("filterid")
},
{
successCallback: function(data, textStatus, jqXHR) {
@@ -441,15 +483,20 @@ var FHC_FilterWidget = {
*/
_addFieldEvent: function(event) {
+ var divFilterWidgetDataset = $(this).parents("#divFilterWidgetDataset");
+
FHC_AjaxClient.ajaxCallPost(
"widgets/Filters/addSelectedField",
{
selectedField: $(this).val(),
- filter_page: FHC_FilterWidget.getFilterPage()
+ filterUniqueId: FHC_FilterWidget.getFilterUniqueIdPrefix() + "/" +
+ divFilterWidgetDataset.attr("app") + ":" +
+ divFilterWidgetDataset.attr("dataset") + ":" +
+ divFilterWidgetDataset.attr("filterid")
},
{
successCallback: function(data, textStatus, jqXHR) {
- FHC_FilterWidget._cleanTablesorterLocalStorage();
+ FHC_FilterWidget._cleanTablesorterLocalStorage(divFilterWidgetDataset.find("#filterTableDataset"));
FHC_FilterWidget._failOrRefresh(data, textStatus, jqXHR);
}
}
@@ -461,12 +508,14 @@ var FHC_FilterWidget = {
*/
_applyFilterEvent: function() {
+ var divFilterWidgetDataset = $(this).parents("#divFilterWidgetDataset");
+
var appliedFilters = [];
var appliedFiltersOperations = [];
var appliedFiltersConditions = [];
var appliedFiltersOptions = [];
- $("#appliedFilters > div").each(function(i, e) {
+ divFilterWidgetDataset.find("#appliedFilters > div").each(function(i, e) {
appliedFilters.push($(this).find(".hidden-field-name").val());
appliedFiltersOperations.push($(this).find(".applied-filter-operation").val());
appliedFiltersConditions.push($(this).find(".applied-filter-condition:enabled").val());
@@ -480,7 +529,10 @@ var FHC_FilterWidget = {
appliedFiltersOperations: appliedFiltersOperations,
appliedFiltersConditions: appliedFiltersConditions,
appliedFiltersOptions: appliedFiltersOptions,
- filter_page: FHC_FilterWidget.getFilterPage()
+ filterUniqueId: FHC_FilterWidget.getFilterUniqueIdPrefix() + "/" +
+ divFilterWidgetDataset.attr("app") + ":" +
+ divFilterWidgetDataset.attr("dataset") + ":" +
+ divFilterWidgetDataset.attr("filterid")
},
{
successCallback: function(data, textStatus, jqXHR) {
@@ -495,11 +547,16 @@ var FHC_FilterWidget = {
*/
_removeAppliedFiltersEvent: function(event) {
+ var divFilterWidgetDataset = $(this).parents("#divFilterWidgetDataset");
+
FHC_AjaxClient.ajaxCallPost(
"widgets/Filters/removeAppliedFilter",
{
appliedFilter: $(this).attr("filterToRemove"),
- filter_page: FHC_FilterWidget.getFilterPage()
+ filterUniqueId: FHC_FilterWidget.getFilterUniqueIdPrefix() + "/" +
+ divFilterWidgetDataset.attr("app") + ":" +
+ divFilterWidgetDataset.attr("dataset") + ":" +
+ divFilterWidgetDataset.attr("filterid")
},
{
successCallback: function(data, textStatus, jqXHR) {
@@ -514,11 +571,16 @@ var FHC_FilterWidget = {
*/
_addFilterEvent: function(event) {
+ var divFilterWidgetDataset = $(this).parents("#divFilterWidgetDataset");
+
FHC_AjaxClient.ajaxCallPost(
"widgets/Filters/addFilter",
{
filter: $(this).val(),
- filter_page: FHC_FilterWidget.getFilterPage()
+ filterUniqueId: FHC_FilterWidget.getFilterUniqueIdPrefix() + "/" +
+ divFilterWidgetDataset.attr("app") + ":" +
+ divFilterWidgetDataset.attr("dataset") + ":" +
+ divFilterWidgetDataset.attr("filterid")
},
{
successCallback: function(data, textStatus, jqXHR) {
@@ -556,20 +618,27 @@ var FHC_FilterWidget = {
if ($("#customFilterDescription").val() != "")
{
+ var divFilterWidgetDataset = $(this).parents("#divFilterWidgetDataset");
+
FHC_AjaxClient.ajaxCallPost(
"widgets/Filters/saveCustomFilter",
{
customFilterDescription: $("#customFilterDescription").val(),
- filter_page: FHC_FilterWidget.getFilterPage()
+ filterUniqueId: FHC_FilterWidget.getFilterUniqueIdPrefix() + "/" +
+ divFilterWidgetDataset.attr("app") + ":" +
+ divFilterWidgetDataset.attr("dataset") + ":" +
+ divFilterWidgetDataset.attr("filterid")
},
{
successCallback: function(data, textStatus, jqXHR) {
- if (FHC_FilterWidget._hideMenu != true)
+
+ // If menu is present and there is only one FilterWidget in this page
+ if (FHC_FilterWidget._hideMenu != true && FHC_FilterWidget._isMultipleFilterWidgets() != true)
{
// If a success and refreshSideMenuHook is a valid function then call it to refresh the side menu
if (typeof refreshSideMenuHook == "function")
{
- refreshSideMenuHook();
+ refreshSideMenuHook(divFilterWidgetDataset.attr("app"), divFilterWidgetDataset.attr("dataset"), divFilterWidgetDataset.attr("filterid"));
}
}
}
@@ -585,11 +654,11 @@ var FHC_FilterWidget = {
/**
* Retrive the filter name from data and display it in the GUI
*/
- _setFilterName: function(data) {
+ _setFilterName: function(filterWidgetDiv, data) {
if (data.hasOwnProperty("filterName"))
{
- $(".filter-name-title").html(data.filterName);
+ filterWidgetDiv.find(".filter-name-title").html(data.filterName);
}
},
@@ -598,7 +667,7 @@ var FHC_FilterWidget = {
* Retrieves the list of used fields, the list of all the fields and
* their possibly present aliases from the parameter data
*/
- _renderDragAndDropFields: function(data) {
+ _renderDragAndDropFields: function(filterWidgetDiv, data) {
var arrayFieldsToDisplay = FHC_FilterWidget._getFieldsToDisplay(data);
@@ -614,7 +683,7 @@ var FHC_FilterWidget = {
strHtml += " ";
strHtml += "";
- $("#dragAndDropFieldsArea").append(strHtml);
+ filterWidgetDiv.find("#dragAndDropFieldsArea").append(strHtml);
}
},
@@ -622,16 +691,16 @@ var FHC_FilterWidget = {
* Renders the drop-down element that contains all the usable fields in the FilterWidget
* The list of all usable fields and their possibly aliases are retrieved from the parameter data
*/
- _renderDropDownFields: function(data) {
+ _renderDropDownFields: function(filterWidgetDiv, data) {
- FHC_FilterWidget._renderDropDown(data, data.selectedFields, 'addField');
+ FHC_FilterWidget._renderDropDown(filterWidgetDiv, data, data.selectedFields, 'addField');
},
/**
* Renders a dropdown attached to the HTML element ddElementId, using the elements from data.fields
* and excluding the elements that are prenset in the elements parameter
*/
- _renderDropDown: function(data, elements, ddElementId) {
+ _renderDropDown: function(filterWidgetDiv, data, elements, ddElementId) {
if (data.hasOwnProperty("fields") && $.isArray(data.fields))
{
@@ -660,9 +729,9 @@ var FHC_FilterWidget = {
fieldToDisplay = data.columnsAliases[fc];
}
- if ($("#" + ddElementId).length) // checks if the element exists
+ if (filterWidgetDiv.find("#" + ddElementId).length) // checks if the element exists
{
- $("#" + ddElementId).append("");
+ filterWidgetDiv.find("#" + ddElementId).append("");
}
}
}
@@ -673,7 +742,7 @@ var FHC_FilterWidget = {
* Render the GUI to operate with the filters applied to the dataset
* The list of all applied filters is retrieved from the parameter data
*/
- _renderAppliedFilters: function(data) {
+ _renderAppliedFilters: function(filterWidgetDiv, data) {
if (data.hasOwnProperty("datasetMetadata") && $.isArray(data.datasetMetadata)
&& data.hasOwnProperty("filters") && $.isArray(data.filters))
@@ -704,7 +773,7 @@ var FHC_FilterWidget = {
appliedFilters += "
";
- $("#appliedFilters").append(appliedFilters);
+ filterWidgetDiv.find("#appliedFilters").append(appliedFilters);
}
}
}
@@ -716,9 +785,9 @@ var FHC_FilterWidget = {
* to apply a filter to the dataset
* The list of all usable fields and their possibly aliases are retrieved from the parameter data
*/
- _renderDropDownFilters: function(data) {
+ _renderDropDownFilters: function(filterWidgetDiv, data) {
- FHC_FilterWidget._renderDropDown(data, data.filters, 'addFilter');
+ FHC_FilterWidget._renderDropDown(filterWidgetDiv, data, data.filters, 'addFilter');
},
/**
@@ -815,24 +884,24 @@ var FHC_FilterWidget = {
return html;
},
- _renderDataset: function(data) {
+ _renderDataset: function(filterWidgetDiv, data) {
// If the choosen dataset representation is tablesorter then...
if (FHC_FilterWidget._datasetRepresentation == DATASET_REP_TABLESORTER)
{
- FHC_FilterWidget._renderDatasetTablesorter(data); // ...render the tablesorter GUI
+ FHC_FilterWidget._renderDatasetTablesorter(filterWidgetDiv, data); // ...render the tablesorter GUI
}
// If the choosen dataset representation is pivotUI then...
if (FHC_FilterWidget._datasetRepresentation == DATASET_REP_PIVOTUI)
{
- FHC_FilterWidget._renderDatasetPivotUI(data); // ...render the pivotUI GUI
+ FHC_FilterWidget._renderDatasetPivotUI(filterWidgetDiv, data); // ...render the pivotUI GUI
}
// If the choosen dataset representation is tabulator then...
if (FHC_FilterWidget._datasetRepresentation == DATASET_REP_TABULATOR)
{
- FHC_FilterWidget._renderDatasetTabulator(data); // ...render the tabulator GUI
+ FHC_FilterWidget._renderDatasetTabulator(filterWidgetDiv, data); // ...render the tabulator GUI
}
},
@@ -840,11 +909,11 @@ var FHC_FilterWidget = {
* Renders the tablesorter for the FilterWidget
* The data to be displayed are retrived from the parameter data
*/
- _renderDatasetTablesorter: function(data) {
+ _renderDatasetTablesorter: function(filterWidgetDiv, data) {
if (data.hasOwnProperty("checkboxes") && data.checkboxes != null && data.checkboxes.trim() != "")
{
- $("#filterTableDataset > thead > tr").append("