{"version":3,"file":"../../lizmap/www/assets/js/filter.js","mappings":"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","sources":["webpack://assets/./src/legacy/filter.js"],"sourcesContent":["/**\n * @module legacy/filter.js\n * @name Filter\n * @copyright 2023 3Liz\n * @license MPL-2.0\n */\n\nvar lizLayerFilterTool = function () {\n\n lizMap.events.on({\n 'uicreated': function () {\n\n // If filterConfig is empty, there is no filter set => hide filter tool\n if (!filterConfig || (filterConfig.constructor === Object && Object.keys(filterConfig).length === 0)) {\n $('#mapmenu li.filter.nav-dock').addClass('hide');\n return true;\n }\n\n\n // Compute the HTML container for the form\n /**\n *\n */\n function getLayerFilterDockRoot() {\n var html = '';\n\n html += '
';\n // Add combo box to select the layer\n html += '
';\n\n // Add total feature counter\n var total = 0\n html += '' + total + ' ' + lizDict['filter.label.features'] + '';\n\n // Add zoom link\n html += '
';\n\n // Add export button\n if (lizMap.getVectorLayerResultFormat().includes('ODS')) {\n html += '  ';\n }\n\n // Add unfilter link\n html += '  ';\n\n html += '
';\n\n // Add tree\n html += '
';\n\n return html;\n }\n\n /**\n *\n */\n function addLayerFilterToolInterface() {\n if (!filterConfig || (filterConfig.constructor === Object && Object.keys(filterConfig).length === 0)) {\n return false;\n }\n\n // Build interface html code\n // Add dock\n var html = getLayerFilterDockRoot();\n $('#filter-content').html(html);\n\n // Get 1st layer found as default layer\n var layerId = filterConfig[0]['layerId'];\n filterConfigData.layerId = layerId;\n\n // Activate the unfilter link\n $('#liz-filter-unfilter').click(function () {\n // Remove filter\n deactivateFilter();\n return false;\n });\n\n // Activate the zoom button\n $('#liz-filter-zoom').click(function () {\n zoomToFeatures()\n return false;\n });\n\n // Activate the export button\n if (lizMap.getVectorLayerResultFormat().includes('ODS')) {\n $('#liz-filter-export').click(function () {\n lizMap.config.layers[filterConfigData.layerName].request_params['filter'] = filterConfigData.filter;\n lizMap.exportVectorLayer(filterConfigData.layerName, 'ODS', false);\n delete lizMap.config.layers[filterConfigData.layerName].request_params['filter'];\n return false;\n });\n }\n\n // Add tooltip\n $('#filter-content [title]').tooltip();\n }\n\n // Launch the form filter feature\n /**\n *\n * @param layerId\n */\n function launchLayerFilterTool(layerId) {\n\n // Get layer name\n var getConfig = lizMap.getLayerConfigById(layerId);\n if (!getConfig)\n return false;\n var layerName = getConfig[0];\n filterConfigData.layerName = layerName;\n\n // Remove previous field inputs\n $('div.liz-filter-field-box').remove();\n\n // Get html and add it\n getLayerFilterForm();\n\n // Limit dock size\n adaptLayerFilterSize();\n\n // Get Feature count\n getFeatureCount();\n\n // Set default zoom extent setZoomExtent\n // Only if first query works\n // Which means PHP spatialite extension is activated\n if ($('#liz-filter-zoom').is(\":visible\")) {\n setZoomExtent();\n }\n }\n\n // Get the HTML form\n // By getting form element for each field\n /**\n *\n */\n function getLayerFilterForm() {\n var layerId = filterConfigData.layerId;\n\n // Sort attribute layers as given by creation order in Lizmap plugin\n var formFilterLayersSorted = [];\n for (var o in filterConfig) {\n var field_item = filterConfig[o];\n if ('title' in field_item && field_item.layerId == layerId) {\n formFilterLayersSorted.push(field_item);\n $(\"#filter div.tree\").append('
');\n }\n }\n\n // Add form fields\n for (var conf in formFilterLayersSorted) {\n\n var field_item = formFilterLayersSorted[conf];\n getFormFieldInput(field_item);\n }\n }\n\n // Get the HTML form element for a specific field\n /**\n *\n * @param field_item\n */\n function getFormFieldInput(field_item) {\n var field_config = filterConfig[field_item.order];\n\n // unique values\n if (field_config['type'] == 'uniquevalues') {\n return uniqueValuesFormInput(field_item);\n }\n\n // date\n if (field_config['type'] == 'date') {\n return dateFormInput(field_item);\n }\n\n // numeric\n if (field_config['type'] == 'numeric') {\n return numericFormInput(field_item);\n }\n\n // text\n if (field_config['type'] == 'text') {\n return textFormInput(field_item);\n }\n\n return '';\n }\n\n /**\n *\n * @param field_item\n */\n function getFormFieldHeader(field_item) {\n var html = '';\n html += '
';\n html += '';\n html += '

';\n\n return html;\n }\n\n /**\n *\n */\n function getFormFieldFooter() {\n var html = '';\n html += '

';\n html += '
';\n\n return html;\n }\n\n /**\n *\n * @param result\n */\n function checkResult(result) {\n if (!result) {\n return false;\n }\n if ('status' in result && result['status'] == 'error') {\n console.log(result.title + ': ' + result.detail);\n return false;\n }\n return true;\n }\n\n // Get the HTML form element for the date field type\n /**\n *\n * @param field_item\n */\n function dateFormInput(field_item) {\n // For LWC >=3.7, the min_date and max_date\n // are replaced by start_field & end_field\n var start_field_property = 'min_date';\n var end_field_property = 'max_date';\n let lizmap_plugin_metadata = lizMap.getLizmapDesktopPluginMetadata();\n if (lizmap_plugin_metadata.lizmap_web_client_target_version >= 30700) {\n start_field_property = 'start_field';\n end_field_property = 'end_field';\n }\n // end_field = start_field when undefined\n const end_field = (end_field_property in field_item) ? field_item[end_field_property] : field_item[start_field_property];\n\n var sdata = {\n request: 'getMinAndMaxValues',\n layerId: field_item.layerId,\n fieldname: field_item[start_field_property] + ',' + end_field,\n filter: ''\n };\n $.get(filterConfigData.url, sdata, function (result) {\n if (!checkResult(result)) {\n return false;\n }\n\n for (var a in result) {\n var feat = result[a];\n // Add minutes to time zone offset when not present (needed for Firefox).\n if (feat['min'][feat['min'].length - 3] === '+') {\n feat['min'] = feat['min'] + ':00';\n }\n if (feat['max'][feat['max'].length - 3] === '+') {\n feat['max'] = feat['max'] + ':00';\n }\n var dmin = formatDT(new Date(feat['min']), 'yy-mm-dd');\n var dmax = formatDT(new Date(feat['max']), 'yy-mm-dd');\n filterConfig[field_item.order]['min'] = dmin;\n filterConfig[field_item.order]['max'] = dmax;\n }\n\n var html = '';\n html += getFormFieldHeader(field_item);\n html += '';\n html += '';\n html += '';\n html += '';\n\n // http://jsfiddle.net/Lcrsd3jt/45/\n // pour avoir un date et time picker, see https://github.com/trentrichardson/jQuery-Timepicker-Addon\n html += '
';\n html += '
';\n html += '
';\n html += '
';\n html += '
';\n\n html += getFormFieldFooter(field_item);\n $(\"#filter-field-order\" + String(field_item.order)).append(html);\n $(\"#filter input.liz-filter-field-date\").datepicker({\n dateFormat: 'yy-mm-dd',\n changeMonth: true,\n changeYear: true,\n minDate: new Date(feat['min']),\n maxDate: new Date(feat['max'])\n });\n\n addFieldEvents(field_item);\n\n }, 'json');\n\n }\n\n // Get the HTML form element for the numeric field type\n /**\n *\n * @param field_item\n */\n function numericFormInput(field_item) {\n // Since LWC >=3.7, we can configure a field with the end value\n var fieldNames = '';\n let lizmap_plugin_metadata = lizMap.getLizmapDesktopPluginMetadata();\n if (lizmap_plugin_metadata.lizmap_web_client_target_version >= 30700) {\n fieldNames += field_item.start_field;\n if ('end_field' in field_item && field_item.end_field != '') {\n fieldNames += ',' + field_item.end_field;\n }\n } else {\n fieldNames += field_item.field;\n }\n\n var sdata = {\n request: 'getMinAndMaxValues',\n layerId: field_item.layerId,\n fieldname: fieldNames,\n filter: ''\n };\n $.get(filterConfigData.url, sdata, function (result) {\n if (!checkResult(result)) {\n return false;\n }\n\n for (var a in result) {\n var feat = result[a];\n filterConfig[field_item.order]['min'] = Number(feat['min']);\n filterConfig[field_item.order]['max'] = Number(feat['max']);\n }\n\n var html = '';\n html += getFormFieldHeader(field_item);\n html += '';\n html += '';\n html += '';\n html += '';\n\n html += '
';\n html += '
';\n html += '
';\n html += '
';\n html += '
';\n\n html += getFormFieldFooter(field_item);\n\n $(\"#filter-field-order\" + String(field_item.order)).append(html);\n\n addFieldEvents(field_item);\n\n }, 'json');\n\n }\n\n // Get the HTML form element for the text field type\n /**\n *\n * @param field_item\n */\n function textFormInput(field_item) {\n // Ajout des données d'autocompletion\n var field = field_item['field'];\n var sdata = {\n request: 'getUniqueValues',\n layerId: field_item.layerId,\n fieldname: field,\n filter: ''\n };\n $.get(filterConfigData.url, sdata, function (result) {\n if (!checkResult(result)) {\n return false;\n }\n\n var autocompleteData = [];\n for (var a in result) {\n var feat = result[a];\n if (feat['v'] === null || !feat['v'] || (typeof feat['v'] === 'string' && feat['v'].trim() === ''))\n continue;\n autocompleteData.push(feat['v']);\n }\n\n var html = '';\n html += getFormFieldHeader(field_item);\n html += '
'\n html += '';\n html += '
'\n html += getFormFieldFooter(field_item);\n\n $(\"#filter-field-order\" + String(field_item.order)).append(html);\n addFieldEvents(field_item);\n\n $(\"#liz-filter-field-text\" + lizMap.cleanName(field_item.title)).autocomplete({\n source: autocompleteData,\n autoFocus: false, // do not autofocus, because this prevents from searching with LIKE\n delay: 200,\n minLength: 2,\n select: function (event, ui) {\n $(this).val(ui.item.value);\n $(this).change();\n }\n });\n }, 'json');\n }\n\n // Get the HTML form element for the uniqueValues field type\n // possible format: checkboxes or select\n /**\n *\n * @param field_item\n */\n function uniqueValuesFormInput(field_item) {\n\n // Get data\n const fetchRequests = [];\n\n // Get unique values data (and counters)\n var sdata = {\n request: 'getUniqueValues',\n layerId: field_item.layerId,\n fieldname: field_item.field,\n filter: ''\n };\n\n fetchRequests.push(\n fetch(filterConfigData.url + '&' + new URLSearchParams(sdata)).then(response => {\n return response.json();\n })\n );\n\n // Get keys/values if defined\n let keyValues = {};\n\n const layerName = lizMap.getLayerConfigById(field_item.layerId)[0];\n const fieldConf = lizMap.keyValueConfig[layerName]?.[field_item.field];\n if (fieldConf) {\n if (fieldConf.type == 'ValueMap') {\n keyValues = fieldConf.data;\n } else {\n // Get source layer typename from it ID\n let getSourceLayer = lizMap.getLayerConfigById(fieldConf.source_layer_id);\n if( getSourceLayer && getSourceLayer.length == 2) {\n const sourceLayerConfig = getSourceLayer[1];\n const source_typename = sourceLayerConfig?.shortname || sourceLayerConfig?.typename || sourceLayerConfig?.name;\n if (source_typename != undefined) {\n fetchRequests.push(\n lizMap.mainLizmap.wfs.getFeature({\n TYPENAME: source_typename,\n PROPERTYNAME: fieldConf.code_field + ',' + fieldConf.label_field,\n // we must not use null for exp_filter but '' if no filter is active\n EXP_FILTER: fieldConf.exp_filter ? fieldConf.exp_filter : ''\n })\n );\n }\n }\n\n }\n }\n\n Promise.all(fetchRequests).then(responses => {\n const [result, rawKeyValues] = responses;\n\n if (!checkResult(result)) {\n return false;\n }\n\n if (rawKeyValues) {\n rawKeyValues.features.forEach(feature => keyValues[feature.properties[fieldConf.code_field]] = feature.properties[fieldConf.label_field]);\n }\n\n // Build UI\n var html = '';\n html += getFormFieldHeader(field_item);\n\n if (field_item.format == 'select') {\n html += '';\n }\n html += getFormFieldFooter(field_item);\n\n $(\"#filter-field-order\" + String(field_item.order)).append(html);\n\n if (!('items' in filterConfig[field_item.order])) {\n filterConfig[field_item.order]['items'] = {};\n }\n\n for (const feat of result) {\n filterConfig[field_item.order]['items'][feat['v']] = feat['c'];\n }\n\n var dhtml = '';\n var fkeys = Object.keys(\n filterConfig[field_item.order]['items']\n );\n\n // Order fkeys alphabetically (which means sort checkboxes for each field)\n fkeys.sort(function (a, b) {\n return a.localeCompare(b);\n });\n\n for (const f_val of fkeys) {\n // Replace key by value if defined\n var label = keyValues.hasOwnProperty(f_val) ? keyValues[f_val] : f_val;\n\n if (field_item.format == 'select') {\n dhtml += ``;\n } else {\n var inputId = 'liz-filter-field-' + lizMap.cleanName(field_item.title) + '-' + lizMap.cleanName(f_val);\n dhtml += ``;\n }\n }\n var id = 'liz-filter-box-' + lizMap.cleanName(field_item.title);\n if (field_item.format == 'select') {\n $('#' + id + ' select').append(dhtml);\n } else {\n $('#' + id + ' p').append(dhtml);\n }\n\n addFieldEvents(field_item);\n });\n }\n\n // Generate filter string for a field\n // Depending on the selected inputs\n /**\n *\n * @param field_item\n */\n function setFormFieldFilter(field_item) {\n if (filterConfigData.deactivated) {\n return false;\n }\n\n // Set filter depending on field type\n // Unique values\n if (field_item.type == 'uniquevalues') {\n setUniqueValuesFilter(field_item);\n }\n\n // Dates\n if (field_item.type == 'date') {\n setDateFilter(field_item);\n }\n\n // Numeric\n if (field_item.type == 'numeric') {\n setNumericFilter(field_item);\n }\n\n // Texte\n if (field_item.type == 'text') {\n setTextFilter(field_item);\n }\n\n // Update global form filter\n activateFilter();\n }\n\n // Set the filter for the uniqueValues field type\n /**\n *\n * @param field_item\n */\n function setUniqueValuesFilter(field_item) {\n var field_config = filterConfig[field_item.order]\n\n // First loop through each field value\n // And check if the item (e.g checkbox) is selected or not\n filterConfig[field_item.order]['data'] = {}\n var allchecked = true;\n var nonechecked = true;\n if (field_config.format == 'select') {\n var selectId = '#liz-filter-field-' + lizMap.cleanName(field_item.title);\n var selectVal = $(selectId).val();\n var clist = [];\n for (var f_val in filterConfig[field_item.order]['items']) {\n // Get checked status\n if (Array.isArray(selectVal)) {\n var achecked = selectVal.includes(lizMap.cleanName(f_val));\n } else {\n var achecked = (selectVal == lizMap.cleanName(f_val));\n }\n if (!achecked) {\n allchecked = false;\n } else {\n nonechecked = false;\n clist.push(f_val.replace(/'/g, \"''\"));\n }\n filterConfig[field_item.order]['data'][f_val] = achecked;\n }\n }\n if (field_config.format == 'checkboxes') {\n var clist = [];\n for (var f_val in filterConfig[field_item.order]['items']) {\n // Get checked status\n var inputId = '#liz-filter-field-' + lizMap.cleanName(field_item.title) + '-' + lizMap.cleanName(f_val);\n var achecked = $(inputId).is(':checked');\n if (!achecked) {\n allchecked = false;\n } else {\n nonechecked = false;\n clist.push(f_val.replace(/'/g, \"''\"));\n }\n filterConfig[field_item.order]['data'][f_val] = achecked;\n }\n }\n filterConfig[field_item.order]['allchecked'] = allchecked;\n filterConfig[field_item.order]['nonechecked'] = nonechecked;\n filterConfig[field_item.order]['selected'] = clist;\n var filter = null;\n var field = field_item['field'];\n if (clist.length) {\n // If there is a separator in the field values, and we need\n // to explode the values into single items, we need to use\n // LIKE statements joined with OR\n if ('splitter' in field_item && field_item['splitter'] != '') {\n\n filter = ' ( ';\n var sep = '';\n var lk = 'LIKE';\n\n // For a PostgreSQL layer, we can use ILIKE instead of LIKE\n // for WMS filtered requests to be case insensitive\n if (field_item.provider == 'postgres') {\n lk = 'ILIKE';\n }\n for (var i in clist) {\n var cval = clist[i];\n filter += sep + '\"' + field + '\"' + \" \" + lk + \" '%\" + cval + \"%' \";\n // We need to use a OR to display features with\n // 'Theatre, Culture' or 'Theatre', or 'Culture, Information'\n // When 'Theatre' and 'Culture' are checked in the list\n sep = ' OR ';\n }\n filter += ' ) ';\n } else {\n // If there is not separator in the field values, use IN to get all features\n // corresponding to one of the checked values\n filter = '\"' + field + '\"' + \" IN ( '\" + clist.join(\"' , '\") + \"' ) \";\n }\n }\n filterConfig[field_item.order]['filter'] = filter;\n\n }\n\n // Set the filter for the Date type\n /**\n *\n * @param field_item\n */\n function setDateFilter(field_item) {\n var filters = [];\n\n // get input values\n var min_id = '#liz-filter-field-min-date' + lizMap.cleanName(field_item.title);\n var max_id = '#liz-filter-field-max-date' + lizMap.cleanName(field_item.title);\n var min_val = $(min_id).val().trim();\n var max_val = $(max_id).val().trim();\n\n // Do nothing if min and max values entered equals the field min and max possible values\n if (min_val == field_item['min'] && max_val == field_item['max']) {\n filterConfig[field_item.order]['filter'] = null;\n return true;\n }\n\n // fields\n // Since LWC >=3.7, min_date & max_date\n // are replaced by start_field & end_field\n var start_field_property = 'min_date';\n var end_field_property = 'max_date';\n let lizmap_plugin_metadata = lizMap.getLizmapDesktopPluginMetadata();\n if (lizmap_plugin_metadata.lizmap_web_client_target_version >= 30700) {\n start_field_property = 'start_field';\n end_field_property = 'end_field';\n }\n const startField = field_item[start_field_property]\n const endField = (end_field_property in field_item) ? field_item[end_field_property] : field_item[start_field_property];\n\n // min date filter\n if (min_val && Date.parse(min_val)) {\n filters.push('( \"' + startField + '\"' + \" >= '\" + min_val + \"'\" + \" OR \" + ' \"' + endField + '\"' + \" >= '\" + min_val + \"' )\");\n } else {\n min_val = null;\n }\n\n // max date filter\n if (max_val && Date.parse(max_val)) {\n // Add one day to the max values as we cannot select hours\n // This allow to select features with the max value. Eg a feature with 2023-10-25 12:20:01\n // must be selected if max date is 2023-10-25 wich is indeed 2023-10-25 00:00:00\n let max_val_new = new Date(Date.parse(max_val));\n // Add a day\n max_val_new.setDate(max_val_new.getDate() + 1);\n // Truncate to keep only date & transform into string\n let max_val_new_str = formatDT(max_val_new, 'yy-mm-dd');\n // We use strict < instead of <= because we just add a day to the max value\n filters.push('( \"' + startField + '\"' + \" < '\" + max_val_new_str + \"'\" + \" OR \" + ' \"' + endField + '\"' + \" < '\" + max_val_new_str + \"' )\");\n } else {\n max_val = null;\n }\n\n var filter = null;\n if (filters.length) {\n var filter = ' ( ';\n filter += filters.join(' AND ');\n filter += ' ) ';\n }\n filterConfig[field_item.order]['data'] = {\n 'min_date': min_val,\n 'max_date': max_val\n };\n filterConfig[field_item.order]['filter'] = filter;\n\n }\n\n // Set the filter for the Numeric type\n /**\n *\n * @param field_item\n */\n function setNumericFilter(field_item) {\n var filters = [];\n\n // get input values\n var min_id = '#liz-filter-field-min-numeric' + lizMap.cleanName(field_item.title);\n var max_id = '#liz-filter-field-max-numeric' + lizMap.cleanName(field_item.title);\n var min_val = $(min_id).val().trim();\n var max_val = $(max_id).val().trim();\n\n // Do nothing if min and max values entered equals the field min and max possible values\n if (min_val == field_item['min'] && max_val == field_item['max']) {\n filterConfig[field_item.order]['filter'] = null;\n return true;\n }\n\n // fields\n var startField = '';\n var endField = null;\n\n // Since LWC >=3.7, we can configure a field with the end value\n let lizmap_plugin_metadata = lizMap.getLizmapDesktopPluginMetadata();\n if (lizmap_plugin_metadata.lizmap_web_client_target_version >= 30700) {\n startField = field_item.start_field;\n endField = ('end_field' in field_item && field_item.end_field != '') ? field_item.end_field : startField;\n } else {\n startField = field_item.field;\n }\n\n // min value filter\n if (min_val != '') {\n var min_val_filter = '( ';\n min_val_filter += '\"' + startField + '\"' + \" >= '\" + min_val + \"'\";\n if (endField) {\n min_val_filter += \" OR \" + ' \"' + endField + '\"' + \" >= '\" + min_val + \"'\";\n }\n min_val_filter += ' )';\n filters.push(min_val_filter);\n } else {\n min_val = null;\n }\n\n // max value filter\n if (max_val != '') {\n var max_val_filter = '( ';\n max_val_filter += '\"' + startField + '\"' + \" <= '\" + max_val + \"'\";\n if (endField) {\n max_val_filter += \" OR \" + ' \"' + endField + '\"' + \" <= '\" + max_val + \"'\";\n }\n max_val_filter += ' )';\n filters.push(max_val_filter);\n } else {\n max_val = null;\n }\n\n var filter = null;\n if (filters.length) {\n var filter = ' ( ';\n filter += filters.join(' AND ');\n filter += ' ) ';\n }\n filterConfig[field_item.order]['data'] = {\n 'min': min_val,\n 'max': max_val\n };\n filterConfig[field_item.order]['filter'] = filter;\n\n }\n\n // Set the filter for a text field_item\n /**\n *\n * @param field_item\n */\n function setTextFilter(field_item) {\n\n var id = '#liz-filter-field-text' + lizMap.cleanName(field_item.title);\n var val = $(id).val().trim().replace(/'/g, \"''\");\n\n filterConfig[field_item.order]['data'] = {\n 'text': val\n };\n var filter = null;\n var lk = 'LIKE';\n if (field_item.provider == 'postgres') {\n lk = 'ILIKE';\n }\n var field = field_item['field'];\n if (val) {\n filter = '\"' + field + '\"' + \" \" + lk + \" '%\" + val + \"%'\";\n }\n\n filterConfig[field_item.order]['data'] = {\n 'text': val\n };\n filterConfig[field_item.order]['filter'] = filter;\n }\n\n /**\n * Get the list of feature ids for a given filter.\n *\n * This is needed to trigger the filter with the selection tool\n * @param {string} filter - The SQL like filter\n * @param pkField\n * @param aCallBack\n */\n function getFilteredFeatureIds(filter, pkField, aCallBack) {\n filter = typeof filter !== 'undefined' ? filter : '';\n var layerId = filterConfigData.layerId;\n var field = pkField;\n var sdata = {\n request: 'getUniqueValues',\n layerId: layerId,\n fieldname: field,\n filter: filter\n };\n $.get(filterConfigData.url, sdata, function (result) {\n if (!checkResult(result)) {\n return false;\n }\n var ids = [];\n for (var a in result) {\n var feat = result[a];\n if (feat['v'] === null || !feat['v'] || (typeof feat['v'] === 'string' && feat['v'].trim() === ''))\n continue;\n ids.push(feat['v']);\n }\n if (aCallBack) {\n aCallBack(ids);\n }\n }, 'json');\n }\n\n /**\n * Get the method to use to trigger the layer filter\n *\n * 'simple' means like before 3.6: directly change layer request_params and run\n * 'full' means we first get the features ids for the filter and then trigger the\n * Lizmap filter based on the attribute table methods. This will cascade the filter\n * to child layers.\n *\n * If there an attribute table config for this layer\n * we use the filter with selection, in order\n * to trigger the filter for the children tables\n * and propagate the filter to the other tools\n * such as the dataviz, the attribute table, etc.\n *\n * You can force the method in the JS console with;\n * filterConfigData.filterMethod = 'simple'\n * @returns {string} filterMethod - The method: simple or full\n */\n function getFilterMethod() {\n\n // Default is simple\n var filterMethod = 'simple';\n\n // If the filter method is already configured, use it\n if (filterConfigData.hasOwnProperty('filterMethod')) {\n filterMethod = filterConfigData.filterMethod;\n if (filterMethod == 'simple' || filterMethod == 'full') {\n return filterMethod;\n }\n }\n\n // If the layer has attribute layer configuration, use full\n var layerName = filterConfigData.layerName;\n if ('attributeLayers' in lizMap.config && layerName in lizMap.config.attributeLayers) {\n var attributeLayerConfig = lizMap.config.attributeLayers[layerName];\n var pkField = attributeLayerConfig['primaryKey'];\n if (pkField.split(',').length == 1) {\n filterMethod = 'full';\n }\n }\n\n return filterMethod;\n }\n\n\n /**\n * Compute the global filter to pass to the layer\n * and apply it to the map and other tools\n *\n */\n function activateFilter() {\n var layerId = filterConfigData.layerId;\n var layerName = filterConfigData.layerName;\n\n var afilter = [];\n for (var o in filterConfig) {\n var field_item = filterConfig[o];\n if ('title' in field_item && field_item['filter'] && field_item.layerId == layerId) {\n afilter.push(field_item['filter']);\n }\n }\n\n // We use AND clause between fields\n var filter = afilter.join(' AND ');\n\n // Deactivate the filter if it is empty.\n // It can occur when the user unchecks the only checkbox\n // which was checked before,\n // or resetted the field input with the reset button\n // when only this field filter was active\n if (afilter.length == 0 || filter.trim() == '') {\n deactivateFilter();\n return true;\n }\n\n // Lizmap method to filter the data: simple or full\n var filterMethod = getFilterMethod();\n if (filterMethod == 'simple') {\n // Use a simple filter only for the getmap and other WMS/WFS queries\n lizMap.triggerLayerFilter(layerName, filter);\n } else {\n // Get the filtered features fids\n var pkField = lizMap.config.attributeLayers[layerName]['primaryKey'];\n getFilteredFeatureIds(filter, pkField, function (filteredIds) {\n // Pass a fake false filter if no ids are returned.\n // It means the global filter between fields returns no data\n if (filteredIds.length == 0) {\n filteredIds = [-9999999];\n }\n // Update the selectedfeatures object\n if (!lizMap.config.layers[layerName]['selectedFeatures']) {\n lizMap.config.layers[layerName]['selectedFeatures'] = [];\n }\n lizMap.config.layers[layerName]['selectedFeatures'] = filteredIds;\n\n // Trigger the filter based on these selected features\n lizMap.events.triggerEvent(\"layerfeaturefilterselected\",\n { 'featureType': layerName }\n );\n });\n }\n\n // Get the feature count and display it\n getFeatureCount(filter);\n\n if ($('#liz-filter-zoom').is(\":visible\")) {\n setZoomExtent(filter);\n }\n\n // Set the filter in the global variable\n filterConfigData.filter = filter;\n\n }\n\n // Deactivate the layer filter\n // And display all features\n /**\n *\n */\n function deactivateFilter() {\n var layerId = filterConfigData.layerId;\n\n // Deactivate all triggers to avoid unnecessary requests\n // and then empty all the input values\n filterConfigData.deactivated = true;\n for (var o in filterConfig) {\n var field_item = filterConfig[o];\n if ('title' in field_item && field_item.layerId == layerId) {\n resetFormField(field_item.order);\n }\n }\n filterConfigData.deactivated = false;\n\n // Remove filter on map layers\n var layerName = filterConfigData.layerName;\n\n // Lizmap method to filter the data: simple or full\n var filterMethod = getFilterMethod();\n if (filterMethod == 'simple') {\n // Use a simple filter only for the getmap and other WMS/WFS queries\n lizMap.deactivateMaplayerFilter(layerName);\n\n // Refresh plots\n lizMap.events.triggerEvent(\"layerFilterParamChanged\",\n {\n 'featureType': layerName,\n 'filter': null,\n 'updateDrawing': false\n }\n );\n } else {\n // Deactivate the filter\n lizMap.events.triggerEvent('layerfeatureremovefilter',\n { 'featureType': layerName }\n );\n }\n\n\n // Get feature count\n getFeatureCount();\n\n // Set zoom extent\n if ($('#liz-filter-zoom').is(\":visible\")) {\n setZoomExtent();\n }\n\n // Remove feature info geometry\n removeFeatureInfoGeometry();\n\n }\n\n /**\n *\n * @param field_item_order\n */\n function resetFormField(field_item_order) {\n\n var field_item = filterConfig[field_item_order];\n\n if (field_item.type == 'date') {\n $('#liz-filter-field-min-date' + lizMap.cleanName(field_item.title)).val(field_item['min']);\n $('#liz-filter-field-max-date' + lizMap.cleanName(field_item.title)).val(field_item['max']).change(); // .change() so that the slider is also resetted\n }\n else if (field_item['type'] == 'numeric') {\n $('#liz-filter-field-min-numeric' + lizMap.cleanName(field_item.title)).val(field_item['min']);\n $('#liz-filter-field-max-numeric' + lizMap.cleanName(field_item.title)).val(field_item['max']).change();\n }\n else if (field_item['type'] == 'uniquevalues') {\n if (field_item.format == 'checkboxes') {\n $('#liz-filter-box-' + lizMap.cleanName(field_item.title) + ' input.liz-filter-field-value').prop(\"checked\", false);\n }\n else if (field_item.format == 'select') {\n var selectField = $('#liz-filter-field-' + lizMap.cleanName(field_item.title));\n // If the select is multiple && sumoSelect has been used to transform the combobox\n if ('sumo' in selectField[0]) {\n if (selectField[0].hasAttribute('multiple')) {\n selectField[0].sumo.unSelectAll();\n } else {\n selectField[0].sumo.unSelectItem(selectField.val());\n }\n } else {\n var firstOptionValue = selectField.find('option:first').val();\n selectField.val(firstOptionValue);\n }\n }\n }\n else if (field_item['type'] == 'text') {\n $('#liz-filter-field-text' + lizMap.cleanName(field_item.title)).val('');\n }\n\n // Remove filter in stored object\n filterConfig[field_item.order]['filter'] = null;\n\n }\n\n\n // Removes the getFeatureInfo geometry\n /**\n *\n */\n function removeFeatureInfoGeometry() {\n var layer = lizMap.map.getLayersByName('locatelayer');\n if (layer.length == 1)\n layer[0].destroyFeatures();\n }\n\n // Adapt the size of the dock\n /**\n *\n */\n function adaptLayerFilterSize() {\n lizMap.events.on({\n // Adapt dock size to display metadata\n dockopened: function (e) {\n if (e.id == 'filter') {\n lizMap.updateContentSize();\n }\n },\n rightdockclosed: function () {\n },\n minidockclosed: function () {\n },\n layerfeatureremovefilter: function () {\n var layerId = filterConfigData.layerId;\n\n // We need to reset the form\n // Deactivate all triggers to avoid unnecessary requests\n filterConfigData.deactivated = true;\n for (var o in filterConfig) {\n var field_item = filterConfig[o];\n if (!('title' in field_item) || field_item.layerId !== layerId) {\n continue;\n }\n resetFormField(field_item.order);\n }\n filterConfigData.deactivated = false;\n\n // Get feature count\n getFeatureCount();\n }\n });\n\n }\n\n /**\n *\n * @param aDate\n * @param dateFormat\n */\n function formatDT(aDate, dateFormat) {\n var formatted = $.datepicker.formatDate(dateFormat, aDate);\n return formatted;\n }\n\n // Add an event on the inputs of a given field\n // For example, do something when a checkbox is clicked\n // This triggers the calculation of the filter for the field\n /**\n *\n * @param field_item\n */\n function addFieldEvents(field_item) {\n var container = 'liz-filter-box-' + lizMap.cleanName(field_item.title);\n var field_config = filterConfig[field_item.order]\n\n if (field_item.type == 'uniquevalues') {\n if (field_item.format == 'checkboxes') {\n $('#' + container + ' input.liz-filter-field-value').click(function () {\n var self = $(this);\n // Do nothing if disabled\n if (self.hasClass('disabled'))\n return false;\n\n // Filter the data\n setFormFieldFilter(field_item);\n });\n }\n if (field_item.format == 'select') {\n\n $('#liz-filter-field-' + lizMap.cleanName(field_item.title)).change(function () {\n // Filter the data\n setFormFieldFilter(field_item);\n });\n }\n }\n\n // date\n if (field_config['type'] == 'date') {\n\n var hasSlider = (true);\n if (hasSlider) {\n // Get value in seconds\n var min_val = Date.parse(field_item['min']) / 1000;\n var max_val = Date.parse(field_item['max']) / 1000;\n\n // Add a function which will use a timeout\n // to prevent too heavy load on server\n // when using setFormFieldFilter\n var timer = null;\n /**\n *\n * @param e\n * @param ui\n */\n function onDateChange(e, ui) {\n if (filterConfigData.deactivated)\n return false;\n clearTimeout(timer);\n timer = setTimeout(function () {\n var dt_cur_from = new Date(ui.values[0] * 1000); //.format(\"yyyy-mm-dd hh:ii:ss\");\n $('#liz-filter-field-min-date' + lizMap.cleanName(field_item.title)).val(\n formatDT(dt_cur_from, 'yy-mm-dd')\n )\n var dt_cur_to = new Date(ui.values[1] * 1000); //.format(\"yyyy-mm-dd hh:ii:ss\");\n $('#liz-filter-field-max-date' + lizMap.cleanName(field_item.title)).val(\n formatDT(dt_cur_to, 'yy-mm-dd')\n )\n\n setFormFieldFilter(field_item);\n }, 150);\n }\n\n $(\"#liz-filter-slider-range\" + lizMap.cleanName(field_item.title)).slider({\n range: true,\n min: min_val,\n max: max_val,\n step: 86400,\n values: [min_val, max_val],\n change: function (e, ui) {\n onDateChange(e, ui);\n },\n slide: function (e, ui) {\n var dt_cur_from = new Date(ui.values[0] * 1000); //.format(\"yyyy-mm-dd hh:ii:ss\");\n $('#liz-filter-field-min-date' + lizMap.cleanName(field_item.title)).val(\n formatDT(dt_cur_from, 'yy-mm-dd')\n )\n var dt_cur_to = new Date(ui.values[1] * 1000); //.format(\"yyyy-mm-dd hh:ii:ss\");\n $('#liz-filter-field-max-date' + lizMap.cleanName(field_item.title)).val(\n formatDT(dt_cur_to, 'yy-mm-dd')\n )\n }\n });\n }\n\n $('#liz-filter-field-min-date' + lizMap.cleanName(field_item.title) + ', #liz-filter-field-max-date' + lizMap.cleanName(field_item.title)).change(function () {\n // Filter the data. Only if the slider is not activated (if it is activated, it triggers the filter)\n if (!hasSlider) {\n setFormFieldFilter(field_item);\n } else {\n // Change values of the slider\n $(\"#liz-filter-slider-range\" + lizMap.cleanName(field_item.title)).slider(\n \"values\",\n [\n Date.parse($('#liz-filter-field-min-date' + lizMap.cleanName(field_item.title)).val()) / 1000,\n Date.parse($('#liz-filter-field-max-date' + lizMap.cleanName(field_item.title)).val()) / 1000\n ]\n );\n }\n });\n }\n\n // numeric\n if (field_config['type'] == 'numeric') {\n\n var hasSlider = (true);\n if (hasSlider) {\n var min_val = field_item['min'];\n var max_val = field_item['max'];\n\n // Add a function which will use a timeout\n // to prevent too heavy load on server\n // when using setFormFieldFilter\n var timer = null;\n /**\n *\n * @param e\n * @param ui\n */\n function onNumericChange(e, ui) {\n if (filterConfigData.deactivated)\n return false;\n clearTimeout(timer);\n timer = setTimeout(function () {\n var dt_cur_from = ui.values[0];\n $('#liz-filter-field-min-numeric' + lizMap.cleanName(field_item.title)).val(dt_cur_from);\n var dt_cur_to = ui.values[1];\n $('#liz-filter-field-max-numeric' + lizMap.cleanName(field_item.title)).val(dt_cur_to);\n\n setFormFieldFilter(field_item);\n }, 300);\n }\n\n $(\"#liz-filter-slider-range\" + lizMap.cleanName(field_item.title)).slider({\n range: true,\n min: min_val,\n max: max_val,\n step: 1,\n values: [min_val, max_val],\n change: function (e, ui) {\n onNumericChange(e, ui);\n },\n slide: function (e, ui) {\n var dt_cur_from = ui.values[0];\n $('#liz-filter-field-min-numeric' + lizMap.cleanName(field_item.title)).val(dt_cur_from);\n var dt_cur_to = ui.values[1];\n $('#liz-filter-field-max-numeric' + lizMap.cleanName(field_item.title)).val(dt_cur_to);\n }\n });\n }\n\n $('#liz-filter-field-min-numeric' + lizMap.cleanName(field_item.title) + ', #liz-filter-field-max-numeric' + lizMap.cleanName(field_item.title)).change(function () {\n // Filter the data. Only if the slider is not activated (if it is activated, it triggers the filter)\n if (!hasSlider) {\n setFormFieldFilter(field_item);\n } else {\n // Change values of the slider\n $(\"#liz-filter-slider-range\" + lizMap.cleanName(field_item.title)).slider(\n \"values\",\n [\n $('#liz-filter-field-min-numeric' + lizMap.cleanName(field_item.title)).val(),\n $('#liz-filter-field-max-numeric' + lizMap.cleanName(field_item.title)).val()\n ]\n );\n }\n });\n }\n\n\n // text\n if (field_config['type'] == 'text') {\n $('#liz-filter-field-text' + lizMap.cleanName(field_item.title)).change(function () {\n // Filter the data\n setFormFieldFilter(field_item);\n });\n }\n\n // Add event on reset buttons\n $('#liz-filter-box-' + lizMap.cleanName(field_item.title) + ' button.liz-filter-reset-field').click(function () {\n resetFormField($(this).val());\n activateFilter();\n });\n\n // Add tooltip\n $('#liz-filter-box-' + lizMap.cleanName(field_item.title) + ' [title]').tooltip();\n\n }\n\n /**\n *\n * @param filter\n */\n function getFeatureCount(filter) {\n filter = typeof filter !== 'undefined' ? filter : '';\n var layerId = filterConfigData.layerId;\n\n var sdata = {\n request: 'getFeatureCount',\n layerId: layerId,\n filter: filter\n };\n $.get(filterConfigData.url, sdata, function (result) {\n if (!result)\n return false;\n if ('status' in result && result['status'] == 'error') {\n console.log(result.title + ': ' + result.detail);\n return false;\n }\n for (var a in result) {\n var feat = result[a];\n var nb = feat['c'];\n try {\n nb = (new Intl.NumberFormat()).format(nb);\n } catch (error) {\n nb = feat['c'];\n }\n $('#liz-filter-item-layer-total-count').html(nb);\n }\n\n }, 'json');\n }\n\n /**\n *\n * @param filter\n */\n function setZoomExtent(filter) {\n filter = typeof filter !== 'undefined' ? filter : '';\n\n var layerId = filterConfigData.layerId;\n\n // Get map projection and layer extent\n var mapProjection = lizMap.map.getProjection();\n if (mapProjection == 'EPSG:900913')\n mapProjection = 'EPSG:3857';\n\n // Get layer\n var layerName = filterConfigData.layerName;\n\n if (!filter) {\n // Use layer extent\n var itemConfig = lizMap.config.layers[layerName];\n if ('bbox' in itemConfig) {\n var lex = itemConfig['bbox'][mapProjection]['bbox'];\n var extent = lex[0] + ',' + lex[1] + ',' + lex[2] + ',' + lex[3];\n $('#liz-filter-zoom').val(extent);\n }\n return false;\n }\n\n // If a filter is set, request the extent with filter\n var sdata = {\n request: 'getExtent',\n layerId: layerId,\n filter: filter,\n crs: mapProjection\n };\n $.get(filterConfigData.url, sdata, function (result) {\n if (!result)\n return false;\n if ('status' in result && result['status'] == 'error') {\n console.log(result.title + ': ' + result.detail);\n // Hide Zoom button\n $('#liz-filter-zoom').hide();\n return;\n }\n\n for (var a in result) {\n //BOX(33373 7527405.72750002,449056.961709125 7724585.66040861)\n var sourcebbox = result[a]['bbox'];\n if (!sourcebbox)\n return false;\n var sbbox = $.parseJSON(sourcebbox);\n var bbox = sbbox.bbox;\n var extent = bbox[0] + ',' + bbox[1] + ',' + bbox[2] + ',' + bbox[3];\n $('#liz-filter-zoom').val(extent);\n }\n\n }, 'json');\n }\n\n /**\n *\n */\n function zoomToFeatures() {\n var bounds = $('#liz-filter-zoom').val();\n var abounds = null;\n if (bounds) {\n abounds = bounds.split(',');\n }\n if (!bounds || abounds.length != 4) {\n return false;\n }\n var extent = new OpenLayers.Bounds(abounds[0], abounds[1], abounds[2], abounds[3]);\n lizMap.map.zoomToExtent(extent);\n return false;\n }\n\n // Launch LayerFilter feature\n addLayerFilterToolInterface();\n launchLayerFilterTool(filterConfigData.layerId);\n\n // Listen to the layer selector changes\n $('#liz-filter-layer-selector').change(function () {\n deactivateFilter();\n filterConfigData.layerId = $(this).val();\n launchLayerFilterTool($(this).val());\n });\n\n } // uicreated\n });\n\n\n}();\n"],"names":["lizMap","events","on","filterConfig","constructor","Object","keys","length","$","addClass","launchLayerFilterTool","layerId","getConfig","getLayerConfigById","layerName","filterConfigData","remove","formFilterLayersSorted","o","field_item","push","append","String","order","conf","getFormFieldInput","getLayerFilterForm","dockopened","e","id","updateContentSize","rightdockclosed","minidockclosed","layerfeatureremovefilter","deactivated","resetFormField","getFeatureCount","is","setZoomExtent","field_config","fetchRequests","sdata","request","fieldname","field","filter","fetch","url","URLSearchParams","then","response","json","keyValues","fieldConf","keyValueConfig","type","data","getSourceLayer","source_layer_id","sourceLayerConfig","source_typename","shortname","typename","name","undefined","mainLizmap","wfs","getFeature","TYPENAME","PROPERTYNAME","code_field","label_field","EXP_FILTER","exp_filter","Promise","all","responses","result","rawKeyValues","checkResult","features","forEach","feature","properties","html","getFormFieldHeader","format","cleanName","title","feat","dhtml","fkeys","sort","a","b","localeCompare","f_val","label","hasOwnProperty","addFieldEvents","uniqueValuesFormInput","start_field_property","end_field_property","getLizmapDesktopPluginMetadata","lizmap_web_client_target_version","end_field","get","dmin","formatDT","Date","dmax","datepicker","dateFormat","changeMonth","changeYear","minDate","maxDate","dateFormInput","fieldNames","start_field","Number","numericFormInput","autocompleteData","trim","lizDict","autocomplete","source","autoFocus","delay","minLength","select","event","ui","this","val","item","value","change","textFormInput","console","log","detail","setFormFieldFilter","allchecked","nonechecked","selectId","selectVal","clist","Array","isArray","achecked","includes","replace","inputId","sep","lk","i","provider","join","setUniqueValuesFilter","filters","min_id","max_id","min_val","max_val","startField","endField","parse","max_val_new","setDate","getDate","max_val_new_str","setDateFilter","min_val_filter","max_val_filter","setNumericFilter","setTextFilter","activateFilter","getFilterMethod","filterMethod","config","attributeLayers","split","afilter","deactivateFilter","triggerLayerFilter","pkField","aCallBack","ids","getFilteredFeatureIds","filteredIds","layers","triggerEvent","layer","deactivateMaplayerFilter","map","getLayersByName","destroyFeatures","field_item_order","prop","selectField","hasAttribute","sumo","unSelectAll","unSelectItem","firstOptionValue","find","aDate","formatDate","container","click","hasClass","hasSlider","timer","onDateChange","clearTimeout","setTimeout","dt_cur_from","values","dt_cur_to","slider","range","min","max","step","slide","onNumericChange","tooltip","nb","Intl","NumberFormat","error","mapProjection","getProjection","itemConfig","lex","extent","crs","hide","sourcebbox","bbox","parseJSON","flayers","lconfig_get","lname","lconf","displayName","getVectorLayerResultFormat","getLayerFilterDockRoot","bounds","abounds","OpenLayers","Bounds","zoomToExtent","zoomToFeatures","request_params","exportVectorLayer","addLayerFilterToolInterface"],"sourceRoot":""}