diff --git a/public/js/components/filter/Filter.js b/public/js/components/filter/Filter.js
index 911c7a9ae..a2102e48d 100644
--- a/public/js/components/filter/Filter.js
+++ b/public/js/components/filter/Filter.js
@@ -19,480 +19,480 @@ import {CoreFilterAPIs} from './API.js';
import {CoreRESTClient} from '../../RESTClient.js';
import {CoreFetchCmpt} from '../../components/Fetch.js';
- /**
- *
- */
+/**
+ *
+ */
export const CoreFilterCmpt = {
- emits: ['nwNewEntry','selectRecord'],
+ emits: ['nwNewEntry', 'selectRecord'],
components: {
- CoreFetchCmpt
+ CoreFetchCmpt
},
props: {
- filterType: {
- type: String,
- required: true
- }
+ filterType: {
+ type: String,
+ required: true
+ }
},
data() {
- return {
- // FilterCmpt properties
- fields: null,
- fieldsToDisplay: null,
- dataset: null,
- selectedFields: null,
- notSelectedFields: null,
- filterFields: null,
- notFilterFields: null,
-
- // FetchCmpt binded properties
- fetchCmptRefresh: false,
- fetchCmptApiFunction: null,
- fetchCmptApiFunctionParams: null,
- fetchCmptDataFetched: null
- };
+ return {
+ // FilterCmpt properties
+ fields: null,
+ fieldsToDisplay: null,
+ dataset: null,
+ selectedFields: null,
+ notSelectedFields: null,
+ filterFields: null,
+ notFilterFields: null,
+
+ // FetchCmpt binded properties
+ fetchCmptRefresh: false,
+ fetchCmptApiFunction: null,
+ fetchCmptApiFunctionParams: null,
+ fetchCmptDataFetched: null
+ };
},
created() {
- this.getFilter(); // get the filter data
+ this.getFilter(); // get the filter data
},
updated() {
- let filterCmptTablesorter = $("#filterTableDataset");
-
- // Checks if the table contains data records
- if (filterCmptTablesorter.find("tbody:empty").length == 0
- && filterCmptTablesorter.find("tr:empty").length == 0)
- {
- filterCmptTablesorter.tablesorter({
- dateFormat: "ddmmyyyy",
- widgets: ["zebra", "filter"],
- widgetOptions: {
- filter_saveFilters : true
- }
- });
-
- $.tablesorter.updateAll(filterCmptTablesorter[0].config, true, null);
- }
+ let filterCmptTablesorter = $("#filterTableDataset");
+
+ // Checks if the table contains data records
+ if (filterCmptTablesorter.find("tbody:empty").length == 0
+ && filterCmptTablesorter.find("tr:empty").length == 0)
+ {
+ filterCmptTablesorter.tablesorter({
+ dateFormat: "ddmmyyyy",
+ widgets: ["zebra", "filter"],
+ widgetOptions: {
+ filter_saveFilters : true
+ }
+ });
+
+ $.tablesorter.updateAll(filterCmptTablesorter[0].config, true, null);
+ }
},
methods: {
- selectRecord(r) {
- this.$emit(
- 'selectRecord',
- r
- );
- },
- /**
- *
- */
- getFilter: function() {
- //
- this.startFetchCmpt(CoreFilterAPIs.getFilter, null, this.render);
- },
- /**
- *
- */
- render: function(response) {
-
- if (CoreRESTClient.hasData(response))
- {
- let data = CoreRESTClient.getData(response);
- this.dataset = data.dataset;
- this.fields = data.fields;
- this.selectedFields = data.selectedFields;
- this.notSelectedFields = this.fields.filter(x => this.selectedFields.indexOf(x) === -1);
-
- this.filterFields = [];
- let tmpFilterFields = [];
- for (let i = 0; i < data.datasetMetadata.length; i++)
- {
- for (let j = 0; j < data.filters.length; j++)
- {
- if (data.datasetMetadata[i].name == data.filters[j].name)
- {
- let filter = data.filters[j];
- filter.type = data.datasetMetadata[i].type;
-
- this.filterFields.push(filter);
- tmpFilterFields.push(filter.name);
- break;
- }
- }
- }
-
- this.notFilterFields = this.fields.filter(x => tmpFilterFields.indexOf(x) === -1);
- this.setFieldsToDisplay(data);
- this.setSideMenu(data);
- }
- else
- {
- console.error(CoreRESTClient.getError(response));
- }
- },
- /**
- *
- */
- setFieldsToDisplay: function(data) {
-
- let arrayFieldsToDisplay = [];
+ selectRecord(r) {
+ this.$emit(
+ 'selectRecord',
+ r
+ );
+ },
+ /**
+ *
+ */
+ getFilter: function() {
+ //
+ this.startFetchCmpt(CoreFilterAPIs.getFilter, null, this.render);
+ },
+ /**
+ *
+ */
+ render: function(response) {
+
+ if (CoreRESTClient.hasData(response))
+ {
+ let data = CoreRESTClient.getData(response);
+ this.dataset = data.dataset;
+ this.fields = data.fields;
+ this.selectedFields = data.selectedFields;
+ this.notSelectedFields = this.fields.filter(x => this.selectedFields.indexOf(x) === -1);
+
+ this.filterFields = [];
+ let tmpFilterFields = [];
+ for (let i = 0; i< data.datasetMetadata.length; i++)
+ {
+ for (let j = 0; j< data.filters.length; j++)
+ {
+ if (data.datasetMetadata[i].name == data.filters[j].name)
+ {
+ let filter = data.filters[j];
+ filter.type = data.datasetMetadata[i].type;
+
+ this.filterFields.push(filter);
+ tmpFilterFields.push(filter.name);
+ break;
+ }
+ }
+ }
+
+ this.notFilterFields = this.fields.filter(x => tmpFilterFields.indexOf(x) === -1);
+ this.setFieldsToDisplay(data);
+ this.setSideMenu(data);
+ }
+ else
+ {
+ console.error(CoreRESTClient.getError(response));
+ }
+ },
+ /**
+ *
+ */
+ setFieldsToDisplay: function(data) {
+
+ let arrayFieldsToDisplay = [];
+
+ if (data.hasOwnProperty("selectedFields") && $.isArray(data.selectedFields))
+ {
+ if (data.hasOwnProperty("columnsAliases") && $.isArray(data.columnsAliases))
+ {
+ for (let sfc = 0; sfc< data.selectedFields.length; sfc++)
+ {
+ for (let fc = 0; fc< data.fields.length; fc++)
+ {
+ if (data.selectedFields[sfc] == data.fields[fc])
+ {
+ arrayFieldsToDisplay[sfc] = data.columnsAliases[fc];
+ }
+ }
+ }
+ }
+ else
+ {
+ arrayFieldsToDisplay = data.selectedFields;
+ }
+ }
- if (data.hasOwnProperty("selectedFields") && $.isArray(data.selectedFields))
- {
- if (data.hasOwnProperty("columnsAliases") && $.isArray(data.columnsAliases))
- {
- for (let sfc = 0; sfc < data.selectedFields.length; sfc++)
- {
- for (let fc = 0; fc < data.fields.length; fc++)
- {
- if (data.selectedFields[sfc] == data.fields[fc])
- {
- arrayFieldsToDisplay[sfc] = data.columnsAliases[fc];
- }
- }
- }
- }
- else
- {
- arrayFieldsToDisplay = data.selectedFields;
- }
- }
-
- this.fieldsToDisplay = arrayFieldsToDisplay;
- },
- /**
- *
- */
- setSideMenu: function(data) {
- // Set the menu
- let filters = data.sideMenu.filters;
- let personalFilters = data.sideMenu.personalFilters;
- let filtersArray = [];
-
- for (let filtersCount = 0; filtersCount < filters.length; filtersCount++)
- {
- let link = filters[filtersCount].link;
-
- if (link == null) link = '#';
-
- filtersArray[filtersArray.length] = {
- link: link + filters[filtersCount].filterId,
- description: filters[filtersCount].desc,
- sort: filtersCount,
- onClickCall: this.handlerGetFilterById
- };
- }
-
- this.$emit(
- 'nwNewEntry',
- [{
- link: "#",
- description: "Filters",
- icon: "filter",
- children: filtersArray
- }]
- );
- },
- /**
- * Used to start/refresh the FetchCmpt
- */
- startFetchCmpt: function(apiFunction, apiFunctionParameters, dataFetchedCallback) {
- // Assign the function api of the FetchCmpt binded property
- this.fetchCmptApiFunction = apiFunction;
-
- // In case a null value is provided set the parameters as an empty object
- if (apiFunctionParameters == null) apiFunctionParameters = {};
-
- // Always needed parameters
- apiFunctionParameters.filterUniqueId = FHC_JS_DATA_STORAGE_OBJECT.called_path + "/" + FHC_JS_DATA_STORAGE_OBJECT.called_method;
- apiFunctionParameters.filterType = this.filterType;
-
- // Assign parameters to the FetchCmpt binded properties
- this.fetchCmptApiFunctionParams = apiFunctionParameters;
- // Assign data fetch callback to the FetchCmpt binded properties
- this.fetchCmptDataFetched = dataFetchedCallback;
- // Set the FetchCmpt binded property refresh to have the component to refresh
- // NOTE: this should be the last one to be called because it triggers the FetchCmpt to start to refresh
- this.fetchCmptRefresh === true ? this.fetchCmptRefresh = false : this.fetchCmptRefresh = true;
- },
-
- // ------------------------------------------------------------------------------------------------------------------
- // Event handlers
-
- /**
- *
- */
- handlerSaveCustomFilter: function(event) {
- //
- this.startFetchCmpt(
- CoreFilterAPIs.saveCustomFilter,
- {
- customFilterName: document.getElementById('customFilterName').value
- },
- this.getFilter
- );
- },
- /**
- *
- */
- handlerApplyFilterFields: function(event) {
- let filterFields = [];
- let filterFieldDivs = document.getElementById('filterFields').getElementsByTagName('div');
-
- for (let i = 0; i < filterFieldDivs.length; i++)
- {
- let filterField = {};
-
- for (let j = 0; j < filterFieldDivs[i].children.length; j++)
- {
- if (filterFieldDivs[i].children[j].name != null)
- {
- // Name
- if (filterFieldDivs[i].children[j].name == 'fieldName')
- {
- filterField.name = filterFieldDivs[i].children[j].value;
- }
- // Operation
- if (filterFieldDivs[i].children[j].name == 'operation')
- {
- filterField.operation = filterFieldDivs[i].children[j].value;
- }
- // Condition
- if (filterFieldDivs[i].children[j].name == 'condition')
- {
- filterField.condition = filterFieldDivs[i].children[j].value;
- }
- // Option
- if (filterFieldDivs[i].children[j].name == 'option')
- {
- filterField.option = filterFieldDivs[i].children[j].value;
- }
- }
- }
-
- filterFields.push(filterField);
- }
-
- //
- this.startFetchCmpt(
- CoreFilterAPIs.applyFilterFields,
- {
- filterFields: filterFields
- },
- this.getFilter
- );
- },
- /**
- *
- */
- handlerAddFilterField: function(event) {
- //
- this.startFetchCmpt(
- CoreFilterAPIs.addFilterField,
- {
- filterField: event.currentTarget.value
- },
- this.getFilter
- );
- },
- /**
- *
- */
- handlerAddSelectedField: function(event) {
- //
- this.startFetchCmpt(
- CoreFilterAPIs.addSelectedField,
- {
- selectedField: event.currentTarget.value
- },
- this.getFilter
- );
- },
- /**
- *
- */
- handlerRemoveSelectedField: function(event) {
- //
- this.startFetchCmpt(
- CoreFilterAPIs.removeSelectedField,
- {
- selectedField: event.currentTarget.getAttribute('field-to-remove')
- },
- this.getFilter
- );
- },
- /**
- *
- */
- handlerRemoveFilterField: function(event) {
- //
- this.startFetchCmpt(
- CoreFilterAPIs.removeFilterField,
- {
- selectedField: event.currentTarget.getAttribute('field-to-remove')
- },
- this.getFilter
- );
- },
- /**
- *
- */
- handlerGetFilterById: function(event) {
- //
- this.startFetchCmpt(
- CoreFilterAPIs.getFilterById,
- {
- filterId: event.currentTarget.getAttribute("href").substring(1)
- },
- this.render
- );
- }
+ this.fieldsToDisplay = arrayFieldsToDisplay;
+ },
+ /**
+ *
+ */
+ setSideMenu: function(data) {
+ // Set the menu
+ let filters = data.sideMenu.filters;
+ let personalFilters = data.sideMenu.personalFilters;
+ let filtersArray = [];
+
+ for (let filtersCount = 0; filtersCount< filters.length; filtersCount++)
+ {
+ let link = filters[filtersCount].link;
+
+ if (link == null) link = '#';
+
+ filtersArray[filtersArray.length] = {
+ link: link + filters[filtersCount].filterId,
+ description: filters[filtersCount].desc,
+ sort: filtersCount,
+ onClickCall: this.handlerGetFilterById
+ };
+ }
+
+ this.$emit(
+ 'nwNewEntry',
+ [{
+ link: "#",
+ description: "Filters",
+ icon: "filter",
+ children: filtersArray
+ }]
+ );
+ },
+ /**
+ * Used to start/refresh the FetchCmpt
+ */
+ startFetchCmpt: function(apiFunction, apiFunctionParameters, dataFetchedCallback) {
+ // Assign the function api of the FetchCmpt binded property
+ this.fetchCmptApiFunction = apiFunction;
+
+ // In case a null value is provided set the parameters as an empty object
+ if (apiFunctionParameters == null) apiFunctionParameters = {};
+
+ // Always needed parameters
+ apiFunctionParameters.filterUniqueId = FHC_JS_DATA_STORAGE_OBJECT.called_path + "/" + FHC_JS_DATA_STORAGE_OBJECT.called_method;
+ apiFunctionParameters.filterType = this.filterType;
+
+ // Assign parameters to the FetchCmpt binded properties
+ this.fetchCmptApiFunctionParams = apiFunctionParameters;
+ // Assign data fetch callback to the FetchCmpt binded properties
+ this.fetchCmptDataFetched = dataFetchedCallback;
+ // Set the FetchCmpt binded property refresh to have the component to refresh
+ // NOTE: this should be the last one to be called because it triggers the FetchCmpt to start to refresh
+ this.fetchCmptRefresh === true ? this.fetchCmptRefresh = false : this.fetchCmptRefresh = true;
+ },
+
+ // ------------------------------------------------------------------------------------------------------------------
+ // Event handlers
+
+ /**
+ *
+ */
+ handlerSaveCustomFilter: function(event) {
+ //
+ this.startFetchCmpt(
+ CoreFilterAPIs.saveCustomFilter,
+ {
+ customFilterName: document.getElementById('customFilterName').value
+ },
+ this.getFilter
+ );
+ },
+ /**
+ *
+ */
+ handlerApplyFilterFields: function(event) {
+ let filterFields = [];
+ let filterFieldDivs = document.getElementById('filterFields').getElementsByTagName('div');
+
+ for (let i = 0; i< filterFieldDivs.length; i++)
+ {
+ let filterField = {};
+
+ for (let j = 0; j< filterFieldDivs[i].children.length; j++)
+ {
+ if (filterFieldDivs[i].children[j].name != null)
+ {
+ // Name
+ if (filterFieldDivs[i].children[j].name == 'fieldName')
+ {
+ filterField.name = filterFieldDivs[i].children[j].value;
+ }
+ // Operation
+ if (filterFieldDivs[i].children[j].name == 'operation')
+ {
+ filterField.operation = filterFieldDivs[i].children[j].value;
+ }
+ // Condition
+ if (filterFieldDivs[i].children[j].name == 'condition')
+ {
+ filterField.condition = filterFieldDivs[i].children[j].value;
+ }
+ // Option
+ if (filterFieldDivs[i].children[j].name == 'option')
+ {
+ filterField.option = filterFieldDivs[i].children[j].value;
+ }
+ }
+ }
+
+ filterFields.push(filterField);
+ }
+
+ //
+ this.startFetchCmpt(
+ CoreFilterAPIs.applyFilterFields,
+ {
+ filterFields: filterFields
+ },
+ this.getFilter
+ );
+ },
+ /**
+ *
+ */
+ handlerAddFilterField: function(event) {
+ //
+ this.startFetchCmpt(
+ CoreFilterAPIs.addFilterField,
+ {
+ filterField: event.currentTarget.value
+ },
+ this.getFilter
+ );
+ },
+ /**
+ *
+ */
+ handlerAddSelectedField: function(event) {
+ //
+ this.startFetchCmpt(
+ CoreFilterAPIs.addSelectedField,
+ {
+ selectedField: event.currentTarget.value
+ },
+ this.getFilter
+ );
+ },
+ /**
+ *
+ */
+ handlerRemoveSelectedField: function(event) {
+ //
+ this.startFetchCmpt(
+ CoreFilterAPIs.removeSelectedField,
+ {
+ selectedField: event.currentTarget.getAttribute('field-to-remove')
+ },
+ this.getFilter
+ );
+ },
+ /**
+ *
+ */
+ handlerRemoveFilterField: function(event) {
+ //
+ this.startFetchCmpt(
+ CoreFilterAPIs.removeFilterField,
+ {
+ selectedField: event.currentTarget.getAttribute('field-to-remove')
+ },
+ this.getFilter
+ );
+ },
+ /**
+ *
+ */
+ handlerGetFilterById: function(event) {
+ //
+ this.startFetchCmpt(
+ CoreFilterAPIs.getFilterById,
+ {
+ filterId: event.currentTarget.getAttribute("href").substring(1)
+ },
+ this.render
+ );
+ }
},
template: `
-
-
-
+
+
+
-
-
-
-
-
-
-
-
- {{ fieldToDisplay }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- | {{ fieldToDisplay }} |
-
-
-
-
-
-
-
-
- | {{ value }} |
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+ {{ fieldToDisplay}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ | {{ fieldToDisplay}} |
+
+
+
+
+
+
+
+
+ | {{ value}} |
+
+
+
+
+
+
`
};