diff --git a/assets/src/components/GroupPopupByLayer.js b/assets/src/components/GroupPopupByLayer.js new file mode 100644 index 0000000000..620fbc0a75 --- /dev/null +++ b/assets/src/components/GroupPopupByLayer.js @@ -0,0 +1,243 @@ +/** + * @module components/GroupPopupByLayer.js + * @name GroupPopupByLayer + * @copyright 2026 3Liz + * @license MPL-2.0 + */ + +import { html, render } from 'lit-html'; +import { mainLizmap } from '../modules/Globals.js'; +import { Utils } from '../modules/Utils.js'; + +export default class GroupPopupByLayer extends HTMLElement { + constructor(){ + super(); + // add support for slot elements + this.attachShadow({ mode: "open" }); + + this._slottedElement = null; + this._currentFeature = null; + this._currentLayer = null; + this._currentPopupsElements = null; + + // injects global stylesheets + Utils.addGlobalStylesToShadowRoot(this.shadowRoot); + + this._template = () => html` + + + ` + } + + connectedCallback(){ + // clone the main state + this._currentPopupsElements = {...mainLizmap.groupPopupByLayers.currentPopupsPerLayer}; + + this._render(true); + const slot = this.shadowRoot.querySelector( 'slot' ); + if(slot.assignedElements() && slot.assignedElements().length == 1) { + this._slottedElement = slot.assignedElements()[0]; + } + + if(!this._slottedElement) throw new Error('No content to display'); + + // If there is only one feature to display among all the queried layers, + // it is simply displayed and the main component is left hidden to emulate standard behavior. + if (this.features.length == 1){ + this.features[0].style.display = 'initial'; + return; + } else { + // else show the component table element + this.shadowRoot.querySelector('.lizmap-gpl-container').style.display = 'block'; + } + } + + disconnectedCallback(){ } + + /** + * Returns the current layer state + * @type {object} + */ + get currentLayerState(){ + return this._currentPopupsElements[this._currentLayer]; + } + + /** + * Return the total number of features for the current layer + * @type {number} + */ + get totalCurrentLayerFeatures(){ + return this.currentLayerState.features.length; + } + + /** + * Returns the index of the current selected feature + * @type {number} + */ + get selectedFeatureIndex(){ + return this.currentLayerState.features.indexOf(this.currentLayerState.selectedFeature); + } + + /** + * Returns a list of all the html features popups + * @type {NodeList} + */ + get features(){ + return this._slottedElement.querySelectorAll(`:scope > .${mainLizmap.groupPopupByLayers.singleFeatureClass}`); + } + + /** + * Setting the current feature layer + * @param {string} layerId - the layer id + */ + set currentLayer(layerId){ + this._currentLayer = layerId; + } + + /** + * Setting the current feature popup + * @param {null|HTMLElement} htmlFeat - the current feature or null + */ + set currentFeature(htmlFeat){ + this._currentFeature = htmlFeat; + if(!this._currentFeature) { + this._currentLayer = null; + this._hideFeatures(); + } + this._render(); + } + + /** + * Renders the main template and performs side operations on user interface + * @param {boolean} firstRender - true if is called from the connectedCallback method + * @returns {void} + */ + _render(firstRender = false){ + render(this._template(), this.shadowRoot); + if (!firstRender) { + this._componentUI(); + this._highlightFeatures(); + } + } + + /** + * Display the current select feature popup + * @returns {void} + */ + _displayLayerFeature(){ + let featureOnDisplay = null; + this.features.forEach((f) => { + if (f.getAttribute('data-layer-id') == this._currentLayer && + f.getAttribute('data-feature-id') == this.currentLayerState.selectedFeature) { + featureOnDisplay = f; + f.style.display = 'initial'; + } else { + f.style.display ='none'; + } + }); + + this.currentFeature = featureOnDisplay; + } + + /** + * Highlights the current feature geometry on map, if any. + * If no specific feature is selected, highlights all geometries. + * @returns {void} + */ + _highlightFeatures(){ + const geometries = []; + const selector = ':scope > .lizmapPopupDiv input.lizmap-popup-layer-feature-geometry'; + let features = []; + if (this._currentFeature){ + features.push(this._currentFeature); + } else { + features = Array.from(this.features); + } + if(!features.length) return; + features.forEach((f) => { + const geomInput = f.querySelector(selector); + if (geomInput) { + geometries.push(geomInput.value) + } + }) + + if(geometries.length) { + mainLizmap.map.clearHighlightFeatures(); + lizMap.mainLizmap.map.setHighlightFeatures(`GEOMETRYCOLLECTION(${geometries.join()})`, "wkt"); + } + } + + /** + * Conditionally adjusts component elements after template rendering + * @returns {void} + */ + _componentUI(){ + if (this._currentFeature && this.totalCurrentLayerFeatures > 1) { + this.shadowRoot.querySelector('button.gpl-prev-popup').disabled = this.selectedFeatureIndex == 0; + this.shadowRoot.querySelector('button.gpl-next-popup').disabled = this.selectedFeatureIndex == this.totalCurrentLayerFeatures - 1; + } + } + + /** + * Hides all popups + * @returns {void} + */ + _hideFeatures(){ + this.features.forEach((f)=> f.style.display = 'none'); + } +} diff --git a/assets/src/index.js b/assets/src/index.js index e21814091b..365599e92f 100644 --- a/assets/src/index.js +++ b/assets/src/index.js @@ -29,6 +29,7 @@ import NavBar from './components/NavBar.js'; import Tooltip from './components/Tooltip.js'; import Message from './components/Message.js'; import TypeAHead from './components/TypeAHead.js'; +import GroupPopupByLayer from './components/GroupPopupByLayer.js'; import { mainLizmap, mainEventDispatcher } from './modules/Globals.js'; import executeJSFromServer from './modules/ExecuteJSFromServer.js'; @@ -105,23 +106,24 @@ const definedCustomElements = () => { window.customElements.define('lizmap-tooltip', Tooltip); window.customElements.define('lizmap-message', Message); window.customElements.define('lizmap-typeahead', TypeAHead); + window.customElements.define('lizmap-group-popup-layer', GroupPopupByLayer); /** - * At this point the user interface is fully loaded. - * External javascripts can subscribe to this event to perform post load - * operations or cutomizations - * - * Example in my_custom_script.js - * - * lizMap.subscribe(() => { - * // pseudo-code - * intercatWithPrintPanel(); - * interactWithSelectionPanel(); - * inteactWithLocateByLayerPanel(); - * }, - * 'lizmap.uicreated' - * ); - */ + * At this point the user interface is fully loaded. + * External javascripts can subscribe to this event to perform post load + * operations or customizations + * + * Example in my_custom_script.js + * + * lizMap.subscribe(() => { + * // pseudo-code + * intercatWithPrintPanel(); + * interactWithSelectionPanel(); + * inteactWithLocateByLayerPanel(); + * }, + * 'lizmap.uicreated' + * ); + */ lizMap.mainEventDispatcher.dispatch('lizmap.uicreated'); } diff --git a/assets/src/legacy/map.js b/assets/src/legacy/map.js index 65d7ab6b29..ee2aeb9027 100644 --- a/assets/src/legacy/map.js +++ b/assets/src/legacy/map.js @@ -854,6 +854,10 @@ window.lizMap = function() { text = text.replace( popupReg, 'table table-condensed table-striped table-bordered lizmapPopupTable'); var pcontent = '
'+text+'
'; var hasPopupContent = (!(!text || text == null || text == '')); + // wrap the popups in lizmap-group-popup-layer, if the corresponding mode is enabled + if (lizMap.mainLizmap.groupPopupByLayers.isActive) { + pcontent = `${lizMap.mainLizmap.groupPopupByLayers.groupPopups(pcontent)}` + } document.querySelector('#popupcontent div.menu-content').innerHTML = pcontent; if ( !$('#mapmenu .nav-list > li.popupcontent').is(':visible') ) $('#mapmenu .nav-list > li.popupcontent').show(); @@ -893,6 +897,11 @@ window.lizMap = function() { return false; } + // wrap the popups in lizmap-group-popup-layer, if the corresponding mode is enabled + if (lizMap.mainLizmap.groupPopupByLayers.isActive) { + text = `${lizMap.mainLizmap.groupPopupByLayers.groupPopups(text)}` + } + document.getElementById('liz_layer_popup_contentDiv').innerHTML = text; if (coordinate) { lizMap.mainLizmap.popup.mapPopup.setPosition(coordinate); diff --git a/assets/src/modules/GroupPopupByLayer.js b/assets/src/modules/GroupPopupByLayer.js new file mode 100644 index 0000000000..273a316d0b --- /dev/null +++ b/assets/src/modules/GroupPopupByLayer.js @@ -0,0 +1,94 @@ +/** + * @module modules/GroupPopupByLayer.js + * @copyright 2026 3Liz + * @license MPL-2.0 + */ +import { Config } from './Config.js'; + +export default class GroupPopupByLayer { + /** + * Create a group popup by layer instance + * @param {Config} initialConfig - The lizmap initial config instance + */ + constructor(initialConfig) { + this._initialConfig = initialConfig; + this._isActive = initialConfig.options?.group_popup_by_layer; + this._popupMapLocation = initialConfig.options?.popupLocation == 'map'; + this._singleFeatureClass = 'lizmapPopupSingleFeature'; + this._singleFeatureTitleSelector = 'lizmapPopupTitle'; + } + + /** + * group popup by layer mode activated + * @type {boolean} + */ + get isActive(){ + return this._isActive; + } + + /** + * Current module state + * @type {object} + */ + get currentPopupsPerLayer(){ + return this._currentPopupsPerLayer; + } + + /** + * Class selector for the single feature popup element + * @type {string} + */ + get singleFeatureClass(){ + return this._singleFeatureClass; + } + + /** + * Creates the current state and returns a + * modified string suitable to be injected in the lizmap-group-popup-layer HTML component + * + * @param {string} htmlPopup - the string representing the HTML popup + * @returns {string} + */ + groupPopups(htmlPopup){ + // reset state + this._currentPopupsPerLayer = {}; + + if(!this._isActive) return htmlPopup; + + // group popups + const tpl = document.createElement('template'); + + // if the popup location is on the map, wrap the html popup in a slot + if (this._popupMapLocation){ + tpl.innerHTML = `
`; + tpl.content.querySelector('div[slot="popup"]').innerHTML = htmlPopup; + } else { + // else use the provided lizmapPopupContent div as the slot + tpl.innerHTML = htmlPopup; + tpl.content.querySelector('.lizmapPopupContent').setAttribute('slot','popup'); + } + + // select all first level single feature (exclude children, if any) + const singleFeatures = tpl.content.querySelectorAll(`div[slot="popup"] > .${this._singleFeatureClass}`); + // create initial state + singleFeatures.forEach((f)=>{ + const layerId = f.getAttribute('data-layer-id'); + const featureId = f.getAttribute('data-feature-id'); + const title = f.querySelector(`.${this._singleFeatureTitleSelector}`).innerText; + if(!this._currentPopupsPerLayer.hasOwnProperty(layerId)){ + this._currentPopupsPerLayer[layerId] = { + layerId: layerId, + title: title, + features: [], + selectedFeature:featureId, + } + } + this._currentPopupsPerLayer[layerId].features.push(featureId); + + // hide single feature, its visibility will be managed by the lizmap-group-popup-layer HTML component + f.style.display = 'none'; + }) + + return tpl.innerHTML; + } +} diff --git a/assets/src/modules/Lizmap.js b/assets/src/modules/Lizmap.js index cdf3e1abbc..091b6f2cfb 100644 --- a/assets/src/modules/Lizmap.js +++ b/assets/src/modules/Lizmap.js @@ -28,6 +28,7 @@ import Permalink from './Permalink.js'; import Search from './Search.js'; import Tooltip from './Tooltip.js'; import LocateByLayer from './LocateByLayer.js'; +import GroupPopupByLayer from './GroupPopupByLayer.js'; import WMSCapabilities from 'ol/format/WMSCapabilities.js'; import WFSCapabilities from 'ol-wfs-capabilities'; @@ -188,6 +189,7 @@ export default class Lizmap { this.map, this._lizmap3 ); + this.groupPopupByLayers = new GroupPopupByLayer(this.initialConfig); /** * Modules initialized. * @event ModulesInitialized diff --git a/assets/src/modules/Utils.js b/assets/src/modules/Utils.js index a73e21c041..e117174768 100644 --- a/assets/src/modules/Utils.js +++ b/assets/src/modules/Utils.js @@ -150,7 +150,7 @@ export class FileDownloader { * @name Utils */ export class Utils { - + static globalStyleSheets = null; /** * Download a file provided as a string * @static @@ -344,4 +344,25 @@ export class Utils { } }); } + + /** + * Injects global stylesheets into the given shadowRoot instance + * @param {ShadowRoot} shadowRoot - component shadowRoot instance + * @returns {void} + */ + static addGlobalStylesToShadowRoot(shadowRoot) { + if (!Utils.globalStyleSheets) { + Utils.globalStyleSheets = Array.from(document.styleSheets) + .map(x => { + const sheet = new CSSStyleSheet(); + const css = Array.from(x.cssRules).map(rule => rule.cssText).join(' '); + sheet.replaceSync(css); + return sheet; + }); + } + + shadowRoot.adoptedStyleSheets.push( + ...Utils.globalStyleSheets + ); + } } diff --git a/assets/src/modules/config/Options.js b/assets/src/modules/config/Options.js index 921c3525c0..2a4a5b4d0a 100644 --- a/assets/src/modules/config/Options.js +++ b/assets/src/modules/config/Options.js @@ -41,6 +41,7 @@ const optionalProperties = { 'automatic_permalink': { type: 'boolean', default: false }, 'wms_single_request_for_all_layers' : { type:'boolean', default: false }, 'exclude_basemaps_from_single_wms' : { type:'boolean', default: false }, + 'group_popup_by_layer' : { type:'boolean', default: false }, }; /** @@ -80,6 +81,7 @@ export class OptionsConfig extends BaseObjectConfig { * @param {boolean} [cfg.automatic_permalink] - is automatic permalink activated ? * @param {boolean} [cfg.wms_single_request_for_all_layers] - are layers loaded as single WMS image ? * @param {boolean} [cfg.exclude_basemaps_from_single_wms] - are basemaps excluded from single WMS request ? + * @param {boolean} [cfg.group_popup_by_layer] - are popups grouped by layer ? */ constructor(cfg) { if (!cfg || typeof cfg !== "object") { @@ -325,4 +327,12 @@ export class OptionsConfig extends BaseObjectConfig { return this._exclude_basemaps_from_single_wms; } + /** + * Features popups are displayed grouped by layer name + * @type {boolean} + */ + get group_popup_by_layer() { + return this._group_popup_by_layer; + } + } diff --git a/lizmap/modules/view/locales/en_US/dictionnary.UTF-8.properties b/lizmap/modules/view/locales/en_US/dictionnary.UTF-8.properties index 545acbc367..7eacfdc4d8 100644 --- a/lizmap/modules/view/locales/en_US/dictionnary.UTF-8.properties +++ b/lizmap/modules/view/locales/en_US/dictionnary.UTF-8.properties @@ -320,6 +320,11 @@ featuresTable.item.draggable.hover=You can drag and drop the feature to move it featuresTable.item.draggable.dropped=You have successfully moved this feature featuresTable.empty.message=This table is empty. There are no items to display. +groupPopupByLayer.title=Features by layer +groupPopupByLayer.nav.prev=Go to the previous feature +groupPopupByLayer.nav.next=Go to the next feature +groupPopupByLayer.nav.back=Return to layers list + startup.features.error=Zooming to the feature given in the URL parameter is not possible: an error occurred while fetching the feature data. startup.features.empty=No features to display startup.features.loading=Loading features, please wait... diff --git a/lizmap/www/assets/css/map.css b/lizmap/www/assets/css/map.css index f3400395e1..3bf036f812 100644 --- a/lizmap/www/assets/css/map.css +++ b/lizmap/www/assets/css/map.css @@ -4069,6 +4069,76 @@ div.lizmap-features-table.popup-displayed > table.lizmap-features-table-containe z-index:5001 !important; } +/* lizmap-group-popup-layer web component */ + +.lizmap-gpl-container { + margin-bottom: 1em; + margin-top:1em; +} + +.lizmap-gpl-table { + font-size:0.9em; +} + +.lizmap-gpl-table tr:hover td{ + color: var(--color-contrasted-elements); + cursor:pointer; +} + +.lizmap-gpl-container h4 { + font-size: 1em; + color: var(--color-contrasted-elements); +} + +.lizmap-gpl-nav { + display: flex; + flex-direction: row; + align-items: center; + gap:10px; +} + +.gpl-counter { + font-size: 0.8em; + flex:0 1 30px; +} + +.gpl-back { + font-size:0.7em; + flex: 1 0 auto; +} + +.gpl-nav-buttons{ + display:flex; + gap:5px; +} + +.gpl-nav-buttons button { + background-color: var(--color-contrasted-elements-light); + color: var(--color-contrasted-elements); + width: 25px; + height: 25px; + + &:hover, &:focus, &:active { + background-position: center; + } + } + +.lizmap-gpl-container button.gpl-prev-popup { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='currentColor'%3E%3Cpath d='M10.8284 12.0007L15.7782 16.9504L14.364 18.3646L8 12.0007L14.364 5.63672L15.7782 7.05093L10.8284 12.0007Z'%3E%3C/path%3E%3C/svg%3E"); + + &.first { + display: none; + } +} + +.lizmap-gpl-container button.gpl-next-popup { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='currentColor'%3E%3Cpath d='M13.1717 12.0007L8.22192 7.05093L9.63614 5.63672L16.0001 12.0007L9.63614 18.3646L8.22192 16.9504L13.1717 12.0007Z'%3E%3C/path%3E%3C/svg%3E"); + + &.last { + display: none; + } +} + /* Deactivate the OLD bootstrap-2 modal This is needed for LWC >=3.9 and the migration to bootstrap 5 This prevent old JS scripts to make the map unusable diff --git a/tests/end2end/playwright/pages/project.js b/tests/end2end/playwright/pages/project.js index f382d598d6..01907f78c0 100644 --- a/tests/end2end/playwright/pages/project.js +++ b/tests/end2end/playwright/pages/project.js @@ -824,6 +824,67 @@ export class ProjectPage extends BasePage { await this.page.locator('#dock-close').click(); } + /** + * Checks group popup by layers component table and returns table rows + * @param {object[]} expectedResults array of expected values for each group + * @returns {Promise} + */ + async checkGroupPopupByLayersGroups(expectedResults){ + await expect(this.page.locator('lizmap-group-popup-layer')).toHaveCount(1); + let groups = this.page.locator('lizmap-group-popup-layer .lizmap-gpl-table tr'); + + await expect(groups).toHaveCount(expectedResults.length); + for (let i=0; i< expectedResults.length; i++) { + await expect(groups.nth(i).locator('td').nth(0)).toHaveText(expectedResults[i].name); + await expect(groups.nth(i).locator('td').nth(1)).toHaveText(`(${expectedResults[i].count})`); + } + + return groups; + } + + /** + * Checks the group popup by layers component single feature interface + * @param {number} backItemLength "Back to layers list" selector expected length + * @param {number} counterLength Counter selector expected length + * @param {string} counterText Counter selector expected text + * @param {number} navButtonsLength Nav buttons selector expected length + * @returns {Promise} + */ + async checkGroupPopupByLayersFeatures(backItemLength, counterLength, counterText, navButtonsLength){ + await expect(this.page.locator('lizmap-group-popup-layer .gpl-back')).toHaveCount(backItemLength); + await expect(this.page.locator('lizmap-group-popup-layer .gpl-counter')).toHaveCount(counterLength); + if(counterText) { + await expect(this.page.locator('lizmap-group-popup-layer .gpl-counter')).toHaveText(counterText); + } + await expect(this.page.locator('lizmap-group-popup-layer .gpl-nav-buttons button')).toHaveCount(navButtonsLength); + } + + /** + * Group popup by layers: navigate features list back/forth based on direction parameter + * @param {string} direction possible values are 'next' or 'prev', default 'next' + */ + async groupPopupByLayersSwitchFeature(direction = 'next'){ + await this.page.locator(`lizmap-group-popup-layer .gpl-${direction}-popup`).click(); + } + + /** + * Group popup by layers: back to layers list + * @returns {Promise} + */ + async groupPopupByLayersBackToList(){ + await this.page.locator('lizmap-group-popup-layer .gpl-back').click(); + } + + /** + * Returns first level popup single features + * @param {boolean} groupPopupByLayer + * @returns {Promise} + */ + async getPopupSingleFeatures(groupPopupByLayer = false){ + const singleFeaturesSelector = `${groupPopupByLayer ? 'lizmap-group-popup-layer div[slot="popup"]':'.lizmapPopupContent'} > .lizmapPopupSingleFeature`; + return this.page.locator(singleFeaturesSelector); + } + /** * clickOnMap function * Click on the map at the given position diff --git a/tests/end2end/playwright/popup.spec.js b/tests/end2end/playwright/popup.spec.js index 9ad5f3d009..d5742f75f7 100644 --- a/tests/end2end/playwright/popup.spec.js +++ b/tests/end2end/playwright/popup.spec.js @@ -712,3 +712,210 @@ test.describe('Drag and drop design with relations', () => { }); }); + +test.describe('Group popup by layers @readonly', () => { + + ['dock','map','minidock'].forEach((popupLocation) => { + test(`popup on ${popupLocation}`, async ({ page }) => { + if (popupLocation != 'minidock') { + await page.route('**/service/getProjectConfig*', async route => { + const response = await route.fetch(); + const json = await response.json(); + json.options['popupLocation'] = popupLocation; + await route.fulfill({ response, json }); + }); + } + + const project = new ProjectPage(page, `popup_grouped_by_layer${popupLocation == 'minidock' ? '_minidock' : ''}`); + await project.open(); + await project.closeLeftDock(); + + // Remove catching GetProjectConfig + if (popupLocation != 'minidock') { + await page.unroute('**/service/getProjectConfig*'); + } + let getFeatureInfoPromise = project.waitForGetFeatureInfoRequest(); + await project.clickOnMap(417, 289); + let getFeatureInfoRequest = await getFeatureInfoPromise; + let getFeatureInfoResponse = await getFeatureInfoRequest.response(); + responseExpect(getFeatureInfoResponse).toBeHtml(); + await page.waitForTimeout(500); + + const loc = await page.evaluate('lizMap.config.options.popupLocation'); + await expect(loc).toBe(popupLocation); + + // check grouped layers + let groups = await project.checkGroupPopupByLayersGroups([ + { + name: 'single_wms_points', + count: 4 + }, + { + name: 'single_wms_lines', + count: 1 + }, + { + name: 'single_wms_baselayer', + count: 1 + }, + ]); + + // check first layer + await groups.nth(0).click(); + await project.checkGroupPopupByLayersFeatures(1,1,'1/4',2); + let features = await project.getPopupSingleFeatures(true); + await expect(features).toHaveCount(6); + + await expect(features.nth(0)).toBeVisible(); + await expect(features.nth(0).locator('.lizmapPopupTitle')).toHaveText('single_wms_points'); + await expect(features.nth(1)).not.toBeVisible(); + await expect(features.nth(2)).not.toBeVisible(); + await expect(features.nth(3)).not.toBeVisible(); + await expect(features.nth(4)).not.toBeVisible(); + await expect(features.nth(5)).not.toBeVisible(); + + // switch feature + await project.groupPopupByLayersSwitchFeature(); + + await project.checkGroupPopupByLayersFeatures(1,1,'2/4',2); + + await expect(features.nth(0)).not.toBeVisible(); + await expect(features.nth(1)).toBeVisible(); + await expect(features.nth(2)).not.toBeVisible(); + await expect(features.nth(3)).not.toBeVisible(); + await expect(features.nth(4)).not.toBeVisible(); + await expect(features.nth(5)).not.toBeVisible(); + + await project.groupPopupByLayersSwitchFeature(); + await project.checkGroupPopupByLayersFeatures(1,1,'3/4',2); + + await expect(features.nth(0)).not.toBeVisible(); + await expect(features.nth(1)).not.toBeVisible(); + await expect(features.nth(2)).toBeVisible(); + await expect(features.nth(3)).not.toBeVisible(); + await expect(features.nth(4)).not.toBeVisible(); + await expect(features.nth(5)).not.toBeVisible(); + + await project.groupPopupByLayersSwitchFeature('prev'); + + await project.checkGroupPopupByLayersFeatures(1,1,'2/4',2); + + await expect(features.nth(0)).not.toBeVisible(); + await expect(features.nth(1)).toBeVisible(); + await expect(features.nth(2)).not.toBeVisible(); + await expect(features.nth(3)).not.toBeVisible(); + await expect(features.nth(4)).not.toBeVisible(); + await expect(features.nth(5)).not.toBeVisible(); + + await project.groupPopupByLayersSwitchFeature(); + + // back to layers list + await project.groupPopupByLayersBackToList(); + groups = await project.checkGroupPopupByLayersGroups([ + { + name: 'single_wms_points', + count: 4 + }, + { + name: 'single_wms_lines', + count: 1 + }, + { + name: 'single_wms_baselayer', + count: 1 + }, + ]); + + await groups.nth(1).click(); + await project.checkGroupPopupByLayersFeatures(1,0,'',0); + + await expect(features.nth(0)).not.toBeVisible(); + await expect(features.nth(1)).not.toBeVisible(); + await expect(features.nth(2)).not.toBeVisible(); + await expect(features.nth(3)).not.toBeVisible(); + await expect(features.nth(4)).toBeVisible(); + await expect(features.nth(4).locator('.lizmapPopupTitle')).toHaveText('single_wms_lines'); + await expect(features.nth(5)).not.toBeVisible(); + + // check wether lizmap features table component is rendered + await expect(features.nth(4).locator('lizmap-features-table')).toHaveCount(1); + + await project.groupPopupByLayersBackToList(); + groups = await project.checkGroupPopupByLayersGroups([ + { + name: 'single_wms_points', + count: 4 + }, + { + name: 'single_wms_lines', + count: 1 + }, + { + name: 'single_wms_baselayer', + count: 1 + }, + ]); + + await groups.nth(2).click(); + await project.checkGroupPopupByLayersFeatures(1,0,'',0); + await expect(page.locator('lizmap-group-popup-layer .gpl-back')).toHaveCount(1); + await expect(page.locator('lizmap-group-popup-layer .gpl-counter')).toHaveCount(0); + await expect(page.locator('lizmap-group-popup-layer .gpl-nav-buttons')).toHaveCount(0); + await expect(features.nth(0)).not.toBeVisible(); + await expect(features.nth(1)).not.toBeVisible(); + await expect(features.nth(2)).not.toBeVisible(); + await expect(features.nth(3)).not.toBeVisible(); + await expect(features.nth(4)).not.toBeVisible(); + await expect(features.nth(5)).toBeVisible(); + await expect(features.nth(5).locator('.lizmapPopupTitle')).toHaveText('single_wms_baselayer'); + + // the status is mantained + await project.groupPopupByLayersBackToList(); + groups = await project.checkGroupPopupByLayersGroups([ + { + name: 'single_wms_points', + count: 4 + }, + { + name: 'single_wms_lines', + count: 1 + }, + { + name: 'single_wms_baselayer', + count: 1 + }, + ]); + + await groups.nth(0).click(); + await project.checkGroupPopupByLayersFeatures(1,1,'3/4',2); + + await expect(features.nth(0)).not.toBeVisible(); + await expect(features.nth(1)).not.toBeVisible(); + await expect(features.nth(2)).toBeVisible(); + await expect(features.nth(3)).not.toBeVisible(); + await expect(features.nth(4)).not.toBeVisible(); + await expect(features.nth(5)).not.toBeVisible(); + + // check if relation is visible + await features.nth(2).locator('.nav-item').nth(1).click(); + expect(features.nth(2).locator('.lizmapPopupSingleFeature[data-layer-id="table_for_relationnal_value_fbba335b_1fa6_4560_9eed_7591c0aa9b74"]')).toBeVisible() + + await project.switcher.click(); + //turn off all layers except the single_wms_baselayer and then reuqest popup + await page.getByTestId('single_wms_polygons').locator('input').first().uncheck(); + await page.getByTestId('single_wms_points').locator('input').first().uncheck(); + await page.getByTestId('single_wms_lines_group').locator('input').first().uncheck(); + await page.getByTestId('single_wms_lines').locator('input').first().uncheck(); + + getFeatureInfoPromise = project.waitForGetFeatureInfoRequest(); + await project.clickOnMap(417, 289); + getFeatureInfoRequest = await getFeatureInfoPromise; + getFeatureInfoResponse = await getFeatureInfoRequest.response(); + responseExpect(getFeatureInfoResponse).toBeHtml(); + await page.waitForTimeout(500); + + await project.checkGroupPopupByLayersFeatures(0,0,'',0); + }) + }) + +}) diff --git a/tests/js-units/data/popup_grouped_by_layer-capabilities.json b/tests/js-units/data/popup_grouped_by_layer-capabilities.json new file mode 100644 index 0000000000..4b3f8281ff --- /dev/null +++ b/tests/js-units/data/popup_grouped_by_layer-capabilities.json @@ -0,0 +1,549 @@ +{ + "version": "1.3.0", + "Service": { + "Name": "WMS", + "Title": "popup_grouped_by_layer", + "KeywordList": [ + "infoMapAccessService" + ], + "OnlineResource": "http://localhost:8130/index.php/lizmap/service?repository=testsrepository&project=popup_grouped_by_layer", + "Fees": "conditions unknown", + "AccessConstraints": "None", + "MaxWidth": 3000, + "MaxHeight": 3000 + }, + "Capability": { + "Request": { + "GetCapabilities": { + "Format": [ + "text/xml" + ], + "DCPType": [ + { + "HTTP": { + "Get": { + "OnlineResource": "http://localhost:8130/index.php/lizmap/service?repository=testsrepository&project=popup_grouped_by_layer&" + } + } + } + ] + }, + "GetMap": { + "Format": [ + "image/jpeg", + "image/png", + "image/png; mode=16bit", + "image/png; mode=8bit", + "image/png; mode=1bit", + "application/dxf", + "application/pdf" + ], + "DCPType": [ + { + "HTTP": { + "Get": { + "OnlineResource": "http://localhost:8130/index.php/lizmap/service?repository=testsrepository&project=popup_grouped_by_layer&" + } + } + } + ] + }, + "GetFeatureInfo": { + "Format": [ + "text/plain", + "text/html", + "text/xml", + "application/vnd.ogc.gml", + "application/vnd.ogc.gml/3.1.1", + "application/json", + "application/geo+json" + ], + "DCPType": [ + { + "HTTP": { + "Get": { + "OnlineResource": "http://localhost:8130/index.php/lizmap/service?repository=testsrepository&project=popup_grouped_by_layer&" + } + } + } + ] + }, + "GetLegendGraphic": { + "Format": [ + "image/jpeg", + "image/png", + "application/json" + ], + "DCPType": [ + { + "HTTP": { + "Get": { + "OnlineResource": "http://localhost:8130/index.php/lizmap/service?repository=testsrepository&project=popup_grouped_by_layer&" + } + } + } + ] + }, + "DescribeLayer": { + "Format": [ + "text/xml" + ], + "DCPType": [ + { + "HTTP": { + "Get": { + "OnlineResource": "http://localhost:8130/index.php/lizmap/service?repository=testsrepository&project=popup_grouped_by_layer&" + } + } + } + ] + } + }, + "Exception": [ + "XML" + ], + "UserDefinedSymbolization": { + "SupportSLD": true, + "UserLayer": false, + "UserStyle": true, + "RemoteWFS": false, + "InlineFeatureData": false, + "RemoteWCS": false + }, + "Layer": { + "Name": "popup_grouped_by_layer", + "Title": "popup_grouped_by_layer", + "KeywordList": [ + "infoMapAccessService" + ], + "CRS": [ + "CRS:84", + "EPSG:4326", + "EPSG:3857" + ], + "EX_GeographicBoundingBox": [ + 3.532182, + 43.307761, + 4.284083, + 43.899598 + ], + "BoundingBox": [ + { + "extent": [ + 393200.796, + 5358934.272, + 476901.936, + 5449917.762 + ], + "res": [ + null, + null + ], + "crs": "EPSG:3857" + }, + { + "extent": [ + 43.307761, + 3.532182, + 43.899598, + 4.284083 + ], + "res": [ + null, + null + ], + "crs": "EPSG:4326" + } + ], + "Layer": [ + { + "Name": "single_wms_polygons", + "Title": "single_wms_polygons", + "CRS": [ + "CRS:84", + "EPSG:4326", + "EPSG:3857", + "CRS:84", + "EPSG:4326", + "EPSG:3857" + ], + "EX_GeographicBoundingBox": [ + 3.839991, + 43.573568, + 3.936443, + 43.637548 + ], + "BoundingBox": [ + { + "extent": [ + 427465.947, + 5399686.412, + 438202.806, + 5409522.095 + ], + "res": [ + null, + null + ], + "crs": "EPSG:3857" + }, + { + "extent": [ + 43.573568, + 3.839991, + 43.637548, + 3.936443 + ], + "res": [ + null, + null + ], + "crs": "EPSG:4326" + } + ], + "Style": [ + { + "Name": "default", + "Title": "default", + "LegendURL": [ + { + "Format": "image/png", + "OnlineResource": "http://localhost:8130/index.php/lizmap/service?repository=testsrepository&project=popup_grouped_by_layer&SERVICE=WMS&VERSION=1.3.0&REQUEST=GetLegendGraphic&LAYER=single_wms_polygons&FORMAT=image/png&STYLE=default&SLD_VERSION=1.1.0", + "size": [ + null, + null + ] + } + ] + } + ], + "queryable": true, + "opaque": false, + "noSubsets": false + }, + { + "Name": "table_for_relationnal_value", + "Title": "table_for_relationnal_value", + "Style": [ + { + "Name": "default", + "Title": "default", + "LegendURL": [ + { + "Format": "image/png", + "OnlineResource": "http://localhost:8130/index.php/lizmap/service?repository=testsrepository&project=popup_grouped_by_layer&SERVICE=WMS&VERSION=1.3.0&REQUEST=GetLegendGraphic&LAYER=table_for_relationnal_value&FORMAT=image/png&STYLE=default&SLD_VERSION=1.1.0", + "size": [ + null, + null + ] + } + ] + } + ], + "queryable": true, + "opaque": false, + "noSubsets": false, + "CRS": [ + "CRS:84", + "EPSG:4326", + "EPSG:3857" + ], + "BoundingBox": [ + { + "extent": [ + 393200.796, + 5358934.272, + 476901.936, + 5449917.762 + ], + "res": [ + null, + null + ], + "crs": "EPSG:3857" + }, + { + "extent": [ + 43.307761, + 3.532182, + 43.899598, + 4.284083 + ], + "res": [ + null, + null + ], + "crs": "EPSG:4326" + } + ], + "EX_GeographicBoundingBox": [ + 3.532182, + 43.307761, + 4.284083, + 43.899598 + ] + }, + { + "Name": "single_wms_points", + "Title": "single_wms_points", + "CRS": [ + "CRS:84", + "EPSG:4326", + "EPSG:3857", + "CRS:84", + "EPSG:4326", + "EPSG:3857" + ], + "EX_GeographicBoundingBox": [ + 3.856645, + 43.571055, + 3.954022, + 43.622983 + ], + "BoundingBox": [ + { + "extent": [ + 429319.793, + 5399300.194, + 440159.643, + 5407282.031 + ], + "res": [ + null, + null + ], + "crs": "EPSG:3857" + }, + { + "extent": [ + 43.571055, + 3.856645, + 43.622983, + 3.954022 + ], + "res": [ + null, + null + ], + "crs": "EPSG:4326" + } + ], + "Style": [ + { + "Name": "default", + "Title": "default", + "LegendURL": [ + { + "Format": "image/png", + "OnlineResource": "http://localhost:8130/index.php/lizmap/service?repository=testsrepository&project=popup_grouped_by_layer&SERVICE=WMS&VERSION=1.3.0&REQUEST=GetLegendGraphic&LAYER=single_wms_points&FORMAT=image/png&STYLE=default&SLD_VERSION=1.1.0", + "size": [ + null, + null + ] + } + ] + } + ], + "queryable": true, + "opaque": false, + "noSubsets": false + }, + { + "Name": "single_wms_lines_group", + "Title": "single_wms_lines_group", + "CRS": [ + "CRS:84", + "EPSG:4326", + "EPSG:3857", + "CRS:84", + "EPSG:4326", + "EPSG:3857" + ], + "EX_GeographicBoundingBox": [ + 3.881741, + 43.620052, + 3.893769, + 43.629094 + ], + "BoundingBox": [ + { + "extent": [ + 432113.436, + 5406831.442, + 433452.326, + 5408221.828 + ], + "res": [ + null, + null + ], + "crs": "EPSG:3857" + }, + { + "extent": [ + 43.620052, + 3.881741, + 43.629094, + 3.893769 + ], + "res": [ + null, + null + ], + "crs": "EPSG:4326" + } + ], + "Style": [ + { + "Name": "default", + "Title": "default", + "LegendURL": [ + { + "Format": "image/png", + "OnlineResource": "http://localhost:8130/index.php/lizmap/service?repository=testsrepository&project=popup_grouped_by_layer&SERVICE=WMS&VERSION=1.3.0&REQUEST=GetLegendGraphic&LAYER=single_wms_lines_group&FORMAT=image/png&STYLE=default&SLD_VERSION=1.1.0", + "size": [ + null, + null + ] + } + ] + } + ], + "queryable": true, + "opaque": false, + "noSubsets": false + }, + { + "Name": "single_wms_lines", + "Title": "single_wms_lines", + "CRS": [ + "CRS:84", + "EPSG:4326", + "EPSG:3857", + "CRS:84", + "EPSG:4326", + "EPSG:3857" + ], + "EX_GeographicBoundingBox": [ + 3.812698, + 43.564016, + 3.914007, + 43.627504 + ], + "BoundingBox": [ + { + "extent": [ + 424427.7, + 5398218.784, + 435705.263, + 5407977.223 + ], + "res": [ + null, + null + ], + "crs": "EPSG:3857" + }, + { + "extent": [ + 43.564016, + 3.812698, + 43.627504, + 3.914007 + ], + "res": [ + null, + null + ], + "crs": "EPSG:4326" + } + ], + "Style": [ + { + "Name": "default", + "Title": "default", + "LegendURL": [ + { + "Format": "image/png", + "OnlineResource": "http://localhost:8130/index.php/lizmap/service?repository=testsrepository&project=popup_grouped_by_layer&SERVICE=WMS&VERSION=1.3.0&REQUEST=GetLegendGraphic&LAYER=single_wms_lines&FORMAT=image/png&STYLE=default&SLD_VERSION=1.1.0", + "size": [ + null, + null + ] + } + ] + } + ], + "queryable": true, + "opaque": false, + "noSubsets": false + }, + { + "Name": "single_wms_baselayer", + "Title": "single_wms_baselayer", + "CRS": [ + "CRS:84", + "EPSG:4326", + "EPSG:3857", + "CRS:84", + "EPSG:4326", + "EPSG:3857" + ], + "EX_GeographicBoundingBox": [ + 3.802984, + 43.5641, + 3.982009, + 43.657046 + ], + "BoundingBox": [ + { + "extent": [ + 423346.29, + 5398231.658, + 443275.134, + 5412521.72 + ], + "res": [ + null, + null + ], + "crs": "EPSG:3857" + }, + { + "extent": [ + 43.5641, + 3.802984, + 43.657046, + 3.982009 + ], + "res": [ + null, + null + ], + "crs": "EPSG:4326" + } + ], + "Style": [ + { + "Name": "default", + "Title": "default", + "LegendURL": [ + { + "Format": "image/png", + "OnlineResource": "http://localhost:8130/index.php/lizmap/service?repository=testsrepository&project=popup_grouped_by_layer&SERVICE=WMS&VERSION=1.3.0&REQUEST=GetLegendGraphic&LAYER=single_wms_baselayer&FORMAT=image/png&STYLE=default&SLD_VERSION=1.1.0", + "size": [ + null, + null + ] + } + ] + } + ], + "queryable": true, + "opaque": false, + "noSubsets": false + } + ] + } + } + } diff --git a/tests/js-units/data/popup_grouped_by_layer-config.json b/tests/js-units/data/popup_grouped_by_layer-config.json new file mode 100644 index 0000000000..113cda8f28 --- /dev/null +++ b/tests/js-units/data/popup_grouped_by_layer-config.json @@ -0,0 +1,306 @@ +{ + "metadata": { + "qgis_desktop_version": 34010, + "lizmap_plugin_version_str": "4.5.9", + "lizmap_plugin_version": 40509, + "lizmap_web_client_target_version": 31100, + "lizmap_web_client_target_status": "Dev", + "instance_target_url": "http://localhost:8130/", + "instance_target_repository": "intranet" + }, + "warnings": {}, + "debug": { + "total_time": 0 + }, + "options": { + "projection": { + "proj4": "+proj=longlat +datum=WGS84 +no_defs", + "ref": "EPSG:4326" + }, + "bbox": [ + "3.53218285499999984", + "43.30776180400000186", + "4.28408297699999974", + "43.89959731999999804" + ], + "mapScales": [ + 10000, + 25000, + 50000, + 100000, + 250000, + 500000 + ], + "minScale": 1, + "maxScale": 1000000000, + "use_native_zoom_levels": false, + "hide_numeric_scale_value": false, + "initialExtent": [ + 3.532182855, + 43.307761804, + 4.284082977, + 43.89959732 + ], + "popupLocation": "dock", + "pointTolerance": 25, + "lineTolerance": 10, + "polygonTolerance": 5, + "automatic_permalink": false, + "tmTimeFrameSize": 10, + "group_popup_by_layer": true, + "tmTimeFrameType": "seconds", + "tmAnimationFrameLength": 1000, + "datavizLocation": "dock", + "theme": "dark", + "fixed_scale_overview_map": true, + "dataviz_drag_drop": [] + }, + "layers": { + "single_wms_polygons": { + "id": "single_wms_polygons_9beb2388_97f6_455f_854a_351fff0ba5cb", + "name": "single_wms_polygons", + "type": "layer", + "geometryType": "polygon", + "extent": [ + 3.839991945080798, + 43.57356896293618, + 3.936442772758097, + 43.63754756174983 + ], + "crs": "EPSG:4326", + "title": "single_wms_polygons", + "abstract": "", + "link": "", + "minScale": 1, + "maxScale": 1000000000000, + "toggled": "True", + "popup": "True", + "popupSource": "auto", + "popupTemplate": "", + "popupMaxFeatures": 10, + "children_lizmap_features_table": false, + "popupDisplayChildren": "False", + "popup_allow_download": true, + "legend_image_option": "hide_at_startup", + "groupAsLayer": "False", + "baseLayer": "False", + "displayInLegend": "True", + "group_visibility": [], + "singleTile": "True", + "imageFormat": "image/png", + "cached": "False", + "clientCacheExpiration": 300 + }, + "table_for_relationnal_value": { + "id": "table_for_relationnal_value_fbba335b_1fa6_4560_9eed_7591c0aa9b74", + "name": "table_for_relationnal_value", + "type": "layer", + "geometryType": "none", + "extent": [ + 1.7976931348623157e+308, + 1.7976931348623157e+308, + -1.7976931348623157e+308, + -1.7976931348623157e+308 + ], + "crs": "", + "title": "table_for_relationnal_value", + "abstract": "", + "link": "", + "minScale": 1, + "maxScale": 1000000000000, + "toggled": "False", + "popup": "True", + "popupSource": "auto", + "popupTemplate": "", + "popupMaxFeatures": 10, + "children_lizmap_features_table": false, + "popupDisplayChildren": "False", + "popup_allow_download": true, + "legend_image_option": "hide_at_startup", + "groupAsLayer": "False", + "baseLayer": "False", + "displayInLegend": "True", + "group_visibility": [], + "singleTile": "True", + "imageFormat": "image/png", + "cached": "False", + "clientCacheExpiration": 300 + }, + "single_wms_points": { + "id": "single_wms_points_d024c177_c07b_4f22_95eb_94c54ee87c05", + "name": "single_wms_points", + "type": "layer", + "geometryType": "point", + "extent": [ + 3.85664532539918, + 43.57105532588823, + 3.954021340871944, + 43.62298250356228 + ], + "crs": "EPSG:4326", + "title": "single_wms_points", + "abstract": "", + "link": "", + "minScale": 1, + "maxScale": 1000000000000, + "toggled": "True", + "popup": "True", + "popupSource": "form", + "popupTemplate": "", + "popupMaxFeatures": 10, + "children_lizmap_features_table": false, + "popupDisplayChildren": "True", + "popup_allow_download": true, + "legend_image_option": "hide_at_startup", + "groupAsLayer": "False", + "baseLayer": "False", + "displayInLegend": "True", + "group_visibility": [], + "singleTile": "True", + "imageFormat": "image/png", + "cached": "False", + "clientCacheExpiration": 300 + }, + "single_wms_lines_group": { + "id": "single_wms_lines_group_7e1171a1_1c40_4b82_af30_8b64d5c8f918", + "name": "single_wms_lines_group", + "type": "layer", + "geometryType": "line", + "extent": [ + 3.881741044351187, + 43.62005232408322, + 3.89376848569224, + 43.62909356120091 + ], + "crs": "EPSG:4326", + "title": "single_wms_lines_group", + "abstract": "", + "link": "", + "minScale": 1, + "maxScale": 1000000000000, + "toggled": "True", + "popup": "True", + "popupSource": "auto", + "popupTemplate": "", + "popupMaxFeatures": 10, + "children_lizmap_features_table": false, + "popupDisplayChildren": "False", + "popup_allow_download": true, + "legend_image_option": "hide_at_startup", + "groupAsLayer": "False", + "baseLayer": "False", + "displayInLegend": "True", + "group_visibility": [], + "singleTile": "True", + "imageFormat": "image/png", + "cached": "False", + "clientCacheExpiration": 300 + }, + "single_wms_lines": { + "id": "single_wms_lines_3c59223a_66b7_4f40_98fe_b7afe35b5ce5", + "name": "single_wms_lines", + "type": "layer", + "geometryType": "line", + "extent": [ + 3.81269890511456, + 43.564016584018404, + 3.914006968718052, + 43.627503071758575 + ], + "crs": "EPSG:4326", + "title": "single_wms_lines", + "abstract": "", + "link": "", + "minScale": 1, + "maxScale": 1000000000000, + "toggled": "True", + "popup": "True", + "popupSource": "auto", + "popupTemplate": "", + "popupMaxFeatures": 10, + "children_lizmap_features_table": true, + "popupDisplayChildren": "False", + "popup_allow_download": true, + "legend_image_option": "hide_at_startup", + "groupAsLayer": "False", + "baseLayer": "False", + "displayInLegend": "True", + "group_visibility": [], + "singleTile": "True", + "imageFormat": "image/png", + "cached": "False", + "clientCacheExpiration": 300 + }, + "single_wms_baselayer": { + "id": "single_wms_baselayer_00d2213e_7c10_4806_83ef_a91f58fbd937", + "name": "single_wms_baselayer", + "type": "layer", + "geometryType": "polygon", + "extent": [ + 3.802984433262168, + 43.56410038340208, + 3.982008271684779, + 43.657045818700006 + ], + "crs": "EPSG:4326", + "title": "single_wms_baselayer", + "abstract": "", + "link": "", + "minScale": 1, + "maxScale": 1000000000000, + "toggled": "True", + "popup": "True", + "popupSource": "auto", + "popupTemplate": "", + "popupMaxFeatures": 10, + "children_lizmap_features_table": false, + "popupDisplayChildren": "False", + "popup_allow_download": true, + "legend_image_option": "hide_at_startup", + "groupAsLayer": "False", + "baseLayer": "False", + "displayInLegend": "True", + "group_visibility": [], + "singleTile": "True", + "imageFormat": "image/png", + "cached": "False", + "clientCacheExpiration": 300 + } + }, + "atlas": { + "layers": [] + }, + "locateByLayer": {}, + "attributeLayers": { + "table_for_relationnal_value": { + "layerId": "table_for_relationnal_value_fbba335b_1fa6_4560_9eed_7591c0aa9b74", + "primaryKey": "gid", + "export_enabled": true, + "pivot": "False", + "hideAsChild": "False", + "hideLayer": "False", + "custom_config": "False", + "order": 0 + } + }, + "tooltipLayers": {}, + "editionLayers": {}, + "layouts": { + "config": { + "default_popup_print": false + }, + "list": [] + }, + "loginFilteredLayers": {}, + "timemanagerLayers": {}, + "datavizLayers": {}, + "filter_by_polygon": { + "config": { + "polygon_layer_id": "single_wms_baselayer_00d2213e_7c10_4806_83ef_a91f58fbd937", + "group_field": "id", + "filter_by_user": false + }, + "layers": [] + }, + "formFilterLayers": {} +} diff --git a/tests/js-units/node/config.test.js b/tests/js-units/node/config.test.js index cbe3a861ba..91aad2bdc6 100644 --- a/tests/js-units/node/config.test.js +++ b/tests/js-units/node/config.test.js @@ -169,4 +169,18 @@ describe('Config', function () { expect(initialConfig.options.exclude_basemaps_from_single_wms).to.be.eq(false) }) + it('Group Popup by Layer Config', function () { + const capabilities = JSON.parse(readFileSync('./tests/js-units/data/popup_grouped_by_layer-capabilities.json', 'utf8')); + expect(capabilities).to.not.be.undefined + expect(capabilities.Capability).to.not.be.undefined + + const config = JSON.parse(readFileSync('./tests/js-units/data/popup_grouped_by_layer-config.json', 'utf8')); + expect(config).to.not.be.undefined + + const initialConfig = new Config(config, capabilities); + + expect(initialConfig.options).to.be.instanceOf(OptionsConfig) + expect(initialConfig.options.group_popup_by_layer).to.be.eq(true) + }) + }) diff --git a/tests/qgis-projects/tests/popup_grouped_by_layer.qgs b/tests/qgis-projects/tests/popup_grouped_by_layer.qgs new file mode 100644 index 0000000000..0a01744493 --- /dev/null +++ b/tests/qgis-projects/tests/popup_grouped_by_layer.qgs @@ -0,0 +1,2799 @@ + + + + + + + + + GEOGCRS["WGS 84",ENSEMBLE["World Geodetic System 1984 ensemble",MEMBER["World Geodetic System 1984 (Transit)"],MEMBER["World Geodetic System 1984 (G730)"],MEMBER["World Geodetic System 1984 (G873)"],MEMBER["World Geodetic System 1984 (G1150)"],MEMBER["World Geodetic System 1984 (G1674)"],MEMBER["World Geodetic System 1984 (G1762)"],MEMBER["World Geodetic System 1984 (G2139)"],MEMBER["World Geodetic System 1984 (G2296)"],ELLIPSOID["WGS 84",6378137,298.257223563,LENGTHUNIT["metre",1]],ENSEMBLEACCURACY[2.0]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],CS[ellipsoidal,2],AXIS["geodetic latitude (Lat)",north,ORDER[1],ANGLEUNIT["degree",0.0174532925199433]],AXIS["geodetic longitude (Lon)",east,ORDER[2],ANGLEUNIT["degree",0.0174532925199433]],USAGE[SCOPE["Horizontal component of 3D system."],AREA["World."],BBOX[-90,-180,90,180]],ID["EPSG",4326]] + +proj=longlat +datum=WGS84 +no_defs + 3452 + 4326 + EPSG:4326 + WGS 84 + longlat + EPSG:7030 + true + + + + + + + 0 + 0 + + + + + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + single_wms_baselayer_00d2213e_7c10_4806_83ef_a91f58fbd937 + single_wms_lines_3c59223a_66b7_4f40_98fe_b7afe35b5ce5 + single_wms_lines_group_7e1171a1_1c40_4b82_af30_8b64d5c8f918 + single_wms_points_d024c177_c07b_4f22_95eb_94c54ee87c05 + single_wms_polygons_9beb2388_97f6_455f_854a_351fff0ba5cb + + + + + + + + + + + + + + + + + + + + + + degrees + + 3.73088700589161171 + 43.52275789326798616 + 4.08334018778612595 + 43.70574421901084605 + + 0 + + + GEOGCRS["WGS 84",ENSEMBLE["World Geodetic System 1984 ensemble",MEMBER["World Geodetic System 1984 (Transit)"],MEMBER["World Geodetic System 1984 (G730)"],MEMBER["World Geodetic System 1984 (G873)"],MEMBER["World Geodetic System 1984 (G1150)"],MEMBER["World Geodetic System 1984 (G1674)"],MEMBER["World Geodetic System 1984 (G1762)"],MEMBER["World Geodetic System 1984 (G2139)"],MEMBER["World Geodetic System 1984 (G2296)"],ELLIPSOID["WGS 84",6378137,298.257223563,LENGTHUNIT["metre",1]],ENSEMBLEACCURACY[2.0]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],CS[ellipsoidal,2],AXIS["geodetic latitude (Lat)",north,ORDER[1],ANGLEUNIT["degree",0.0174532925199433]],AXIS["geodetic longitude (Lon)",east,ORDER[2],ANGLEUNIT["degree",0.0174532925199433]],USAGE[SCOPE["Horizontal component of 3D system."],AREA["World."],BBOX[-90,-180,90,180]],ID["EPSG",4326]] + +proj=longlat +datum=WGS84 +no_defs + 3452 + 4326 + EPSG:4326 + WGS 84 + longlat + EPSG:7030 + true + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + Annotations_5593efa9_1bf5_405f_9bb1_cfd646d4e237 + + + + + Annotations + + + GEOGCRS["WGS 84",ENSEMBLE["World Geodetic System 1984 ensemble",MEMBER["World Geodetic System 1984 (Transit)"],MEMBER["World Geodetic System 1984 (G730)"],MEMBER["World Geodetic System 1984 (G873)"],MEMBER["World Geodetic System 1984 (G1150)"],MEMBER["World Geodetic System 1984 (G1674)"],MEMBER["World Geodetic System 1984 (G1762)"],MEMBER["World Geodetic System 1984 (G2139)"],MEMBER["World Geodetic System 1984 (G2296)"],ELLIPSOID["WGS 84",6378137,298.257223563,LENGTHUNIT["metre",1]],ENSEMBLEACCURACY[2.0]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],CS[ellipsoidal,2],AXIS["geodetic latitude (Lat)",north,ORDER[1],ANGLEUNIT["degree",0.0174532925199433]],AXIS["geodetic longitude (Lon)",east,ORDER[2],ANGLEUNIT["degree",0.0174532925199433]],USAGE[SCOPE["Horizontal component of 3D system."],AREA["World."],BBOX[-90,-180,90,180]],ID["EPSG",4326]] + +proj=longlat +datum=WGS84 +no_defs + 3452 + 4326 + EPSG:4326 + WGS 84 + longlat + EPSG:7030 + true + + + + + + + + + + + + + + + + + + 0 + 0 + + + + + false + + + + + + + 1 + 1 + 1 + 0 + + + + 1 + 0 + + + + + + 3.80298443326216784 + 43.56410038340207791 + 3.98200827168477911 + 43.65704581870000567 + + + 3.80298443326216784 + 43.56410038340207791 + 3.98200827168477911 + 43.65704581870000567 + + single_wms_baselayer_00d2213e_7c10_4806_83ef_a91f58fbd937 + service='lizmapdb' key='id' estimatedmetadata=true srid=4326 type=Polygon checkPrimaryKeyUnicity='1' table="tests_projects"."single_wms_baselayer" (geom) + single_wms_baselayer + + + + single_wms_baselayer + + + GEOGCRS["WGS 84",ENSEMBLE["World Geodetic System 1984 ensemble",MEMBER["World Geodetic System 1984 (Transit)"],MEMBER["World Geodetic System 1984 (G730)"],MEMBER["World Geodetic System 1984 (G873)"],MEMBER["World Geodetic System 1984 (G1150)"],MEMBER["World Geodetic System 1984 (G1674)"],MEMBER["World Geodetic System 1984 (G1762)"],MEMBER["World Geodetic System 1984 (G2139)"],MEMBER["World Geodetic System 1984 (G2296)"],ELLIPSOID["WGS 84",6378137,298.257223563,LENGTHUNIT["metre",1]],ENSEMBLEACCURACY[2.0]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],CS[ellipsoidal,2],AXIS["geodetic latitude (Lat)",north,ORDER[1],ANGLEUNIT["degree",0.0174532925199433]],AXIS["geodetic longitude (Lon)",east,ORDER[2],ANGLEUNIT["degree",0.0174532925199433]],USAGE[SCOPE["Horizontal component of 3D system."],AREA["World."],BBOX[-90,-180,90,180]],ID["EPSG",4326]] + +proj=longlat +datum=WGS84 +no_defs + 3452 + 4326 + EPSG:4326 + WGS 84 + longlat + EPSG:7030 + true + + + + + + + dataset + + + + + + + + + GEOGCRS["WGS 84",ENSEMBLE["World Geodetic System 1984 ensemble",MEMBER["World Geodetic System 1984 (Transit)"],MEMBER["World Geodetic System 1984 (G730)"],MEMBER["World Geodetic System 1984 (G873)"],MEMBER["World Geodetic System 1984 (G1150)"],MEMBER["World Geodetic System 1984 (G1674)"],MEMBER["World Geodetic System 1984 (G1762)"],MEMBER["World Geodetic System 1984 (G2139)"],MEMBER["World Geodetic System 1984 (G2296)"],ELLIPSOID["WGS 84",6378137,298.257223563,LENGTHUNIT["metre",1]],ENSEMBLEACCURACY[2.0]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],CS[ellipsoidal,2],AXIS["geodetic latitude (Lat)",north,ORDER[1],ANGLEUNIT["degree",0.0174532925199433]],AXIS["geodetic longitude (Lon)",east,ORDER[2],ANGLEUNIT["degree",0.0174532925199433]],USAGE[SCOPE["Horizontal component of 3D system."],AREA["World."],BBOX[-90,-180,90,180]],ID["EPSG",4326]] + +proj=longlat +datum=WGS84 +no_defs + 3452 + 4326 + EPSG:4326 + WGS 84 + longlat + EPSG:7030 + true + + + + + postgres + + + + + + + + + + + 1 + 1 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + 0 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + + + 0 + generatedlayout + + + + + + + + + + + 3.81269890511455989 + 43.56401658401840393 + 3.91400696871805209 + 43.627503071758575 + + + 3.81269890511455989 + 43.56401658401840393 + 3.91400696871805209 + 43.627503071758575 + + single_wms_lines_3c59223a_66b7_4f40_98fe_b7afe35b5ce5 + service='lizmapdb' key='id' estimatedmetadata=true srid=4326 type=LineString checkPrimaryKeyUnicity='1' table="tests_projects"."single_wms_lines" (geom) + single_wms_lines + + + + single_wms_lines + + + GEOGCRS["WGS 84",ENSEMBLE["World Geodetic System 1984 ensemble",MEMBER["World Geodetic System 1984 (Transit)"],MEMBER["World Geodetic System 1984 (G730)"],MEMBER["World Geodetic System 1984 (G873)"],MEMBER["World Geodetic System 1984 (G1150)"],MEMBER["World Geodetic System 1984 (G1674)"],MEMBER["World Geodetic System 1984 (G1762)"],MEMBER["World Geodetic System 1984 (G2139)"],MEMBER["World Geodetic System 1984 (G2296)"],ELLIPSOID["WGS 84",6378137,298.257223563,LENGTHUNIT["metre",1]],ENSEMBLEACCURACY[2.0]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],CS[ellipsoidal,2],AXIS["geodetic latitude (Lat)",north,ORDER[1],ANGLEUNIT["degree",0.0174532925199433]],AXIS["geodetic longitude (Lon)",east,ORDER[2],ANGLEUNIT["degree",0.0174532925199433]],USAGE[SCOPE["Horizontal component of 3D system."],AREA["World."],BBOX[-90,-180,90,180]],ID["EPSG",4326]] + +proj=longlat +datum=WGS84 +no_defs + 3452 + 4326 + EPSG:4326 + WGS 84 + longlat + EPSG:7030 + true + + + + + + + dataset + + + + + + + + + GEOGCRS["WGS 84",ENSEMBLE["World Geodetic System 1984 ensemble",MEMBER["World Geodetic System 1984 (Transit)"],MEMBER["World Geodetic System 1984 (G730)"],MEMBER["World Geodetic System 1984 (G873)"],MEMBER["World Geodetic System 1984 (G1150)"],MEMBER["World Geodetic System 1984 (G1674)"],MEMBER["World Geodetic System 1984 (G1762)"],MEMBER["World Geodetic System 1984 (G2139)"],MEMBER["World Geodetic System 1984 (G2296)"],ELLIPSOID["WGS 84",6378137,298.257223563,LENGTHUNIT["metre",1]],ENSEMBLEACCURACY[2.0]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],CS[ellipsoidal,2],AXIS["geodetic latitude (Lat)",north,ORDER[1],ANGLEUNIT["degree",0.0174532925199433]],AXIS["geodetic longitude (Lon)",east,ORDER[2],ANGLEUNIT["degree",0.0174532925199433]],USAGE[SCOPE["Horizontal component of 3D system."],AREA["World."],BBOX[-90,-180,90,180]],ID["EPSG",4326]] + +proj=longlat +datum=WGS84 +no_defs + 3452 + 4326 + EPSG:4326 + WGS 84 + longlat + EPSG:7030 + true + + + + + postgres + + + + + + + + + + + 1 + 1 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + 0 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + + + 0 + generatedlayout + + + + + + + + + + + 3.88174104435118705 + 43.62005232408321831 + 3.89376848569223988 + 43.62909356120091076 + + + 3.88174104435118705 + 43.62005232408321831 + 3.89376848569223988 + 43.62909356120091076 + + single_wms_lines_group_7e1171a1_1c40_4b82_af30_8b64d5c8f918 + service='lizmapdb' key='id' estimatedmetadata=true srid=4326 type=LineString checkPrimaryKeyUnicity='1' table="tests_projects"."single_wms_lines_group" (geom) + single_wms_lines_group + + + + single_wms_lines_group + + + GEOGCRS["WGS 84",ENSEMBLE["World Geodetic System 1984 ensemble",MEMBER["World Geodetic System 1984 (Transit)"],MEMBER["World Geodetic System 1984 (G730)"],MEMBER["World Geodetic System 1984 (G873)"],MEMBER["World Geodetic System 1984 (G1150)"],MEMBER["World Geodetic System 1984 (G1674)"],MEMBER["World Geodetic System 1984 (G1762)"],MEMBER["World Geodetic System 1984 (G2139)"],MEMBER["World Geodetic System 1984 (G2296)"],ELLIPSOID["WGS 84",6378137,298.257223563,LENGTHUNIT["metre",1]],ENSEMBLEACCURACY[2.0]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],CS[ellipsoidal,2],AXIS["geodetic latitude (Lat)",north,ORDER[1],ANGLEUNIT["degree",0.0174532925199433]],AXIS["geodetic longitude (Lon)",east,ORDER[2],ANGLEUNIT["degree",0.0174532925199433]],USAGE[SCOPE["Horizontal component of 3D system."],AREA["World."],BBOX[-90,-180,90,180]],ID["EPSG",4326]] + +proj=longlat +datum=WGS84 +no_defs + 3452 + 4326 + EPSG:4326 + WGS 84 + longlat + EPSG:7030 + true + + + + + + + dataset + + + + + + + + + + + + + + + + + + GEOGCRS["WGS 84",ENSEMBLE["World Geodetic System 1984 ensemble",MEMBER["World Geodetic System 1984 (Transit)"],MEMBER["World Geodetic System 1984 (G730)"],MEMBER["World Geodetic System 1984 (G873)"],MEMBER["World Geodetic System 1984 (G1150)"],MEMBER["World Geodetic System 1984 (G1674)"],MEMBER["World Geodetic System 1984 (G1762)"],MEMBER["World Geodetic System 1984 (G2139)"],MEMBER["World Geodetic System 1984 (G2296)"],ELLIPSOID["WGS 84",6378137,298.257223563,LENGTHUNIT["metre",1]],ENSEMBLEACCURACY[2.0]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],CS[ellipsoidal,2],AXIS["geodetic latitude (Lat)",north,ORDER[1],ANGLEUNIT["degree",0.0174532925199433]],AXIS["geodetic longitude (Lon)",east,ORDER[2],ANGLEUNIT["degree",0.0174532925199433]],USAGE[SCOPE["Horizontal component of 3D system."],AREA["World."],BBOX[-90,-180,90,180]],ID["EPSG",4326]] + +proj=longlat +datum=WGS84 +no_defs + 3452 + 4326 + EPSG:4326 + WGS 84 + longlat + EPSG:7030 + true + + + + + + + + + + + + + postgres + + + + + + + + + + + 1 + 1 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + 0 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + + + 0 + generatedlayout + + + + + + + + + + + + + + + "title" + + + + + 3.85664532539917992 + 43.57105532588823138 + 3.95402134087194401 + 43.62298250356227669 + + + 3.85664532539917992 + 43.57105532588823138 + 3.95402134087194401 + 43.62298250356227669 + + single_wms_points_d024c177_c07b_4f22_95eb_94c54ee87c05 + service='lizmapdb' key='id' estimatedmetadata=true srid=4326 type=Point checkPrimaryKeyUnicity='1' table="tests_projects"."single_wms_points" (geom) + single_wms_points + + + + single_wms_points + + + GEOGCRS["WGS 84",ENSEMBLE["World Geodetic System 1984 ensemble",MEMBER["World Geodetic System 1984 (Transit)"],MEMBER["World Geodetic System 1984 (G730)"],MEMBER["World Geodetic System 1984 (G873)"],MEMBER["World Geodetic System 1984 (G1150)"],MEMBER["World Geodetic System 1984 (G1674)"],MEMBER["World Geodetic System 1984 (G1762)"],MEMBER["World Geodetic System 1984 (G2139)"],MEMBER["World Geodetic System 1984 (G2296)"],ELLIPSOID["WGS 84",6378137,298.257223563,LENGTHUNIT["metre",1]],ENSEMBLEACCURACY[2.0]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],CS[ellipsoidal,2],AXIS["geodetic latitude (Lat)",north,ORDER[1],ANGLEUNIT["degree",0.0174532925199433]],AXIS["geodetic longitude (Lon)",east,ORDER[2],ANGLEUNIT["degree",0.0174532925199433]],USAGE[SCOPE["Horizontal component of 3D system."],AREA["World."],BBOX[-90,-180,90,180]],ID["EPSG",4326]] + +proj=longlat +datum=WGS84 +no_defs + 3452 + 4326 + EPSG:4326 + WGS 84 + longlat + EPSG:7030 + true + + + + + + + dataset + + + + + + + + + + + + + + + + + + GEOGCRS["WGS 84",ENSEMBLE["World Geodetic System 1984 ensemble",MEMBER["World Geodetic System 1984 (Transit)"],MEMBER["World Geodetic System 1984 (G730)"],MEMBER["World Geodetic System 1984 (G873)"],MEMBER["World Geodetic System 1984 (G1150)"],MEMBER["World Geodetic System 1984 (G1674)"],MEMBER["World Geodetic System 1984 (G1762)"],MEMBER["World Geodetic System 1984 (G2139)"],MEMBER["World Geodetic System 1984 (G2296)"],ELLIPSOID["WGS 84",6378137,298.257223563,LENGTHUNIT["metre",1]],ENSEMBLEACCURACY[2.0]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],CS[ellipsoidal,2],AXIS["geodetic latitude (Lat)",north,ORDER[1],ANGLEUNIT["degree",0.0174532925199433]],AXIS["geodetic longitude (Lon)",east,ORDER[2],ANGLEUNIT["degree",0.0174532925199433]],USAGE[SCOPE["Horizontal component of 3D system."],AREA["World."],BBOX[-90,-180,90,180]],ID["EPSG",4326]] + +proj=longlat +datum=WGS84 +no_defs + 3452 + 4326 + EPSG:4326 + WGS 84 + longlat + EPSG:7030 + true + + + + + + + + + + + + + postgres + + + + + + + + + + + 1 + 1 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + 0 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + + + 0 + tablayout + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + "title" + + + + + 3.839991945080798 + 43.57356896293617865 + 3.93644277275809706 + 43.63754756174982674 + + + 3.839991945080798 + 43.57356896293617865 + 3.93644277275809706 + 43.63754756174982674 + + single_wms_polygons_9beb2388_97f6_455f_854a_351fff0ba5cb + service='lizmapdb' key='id' estimatedmetadata=true srid=4326 type=Polygon checkPrimaryKeyUnicity='1' table="tests_projects"."single_wms_polygons" (geom) + single_wms_polygons + + + + single_wms_polygons + + + GEOGCRS["WGS 84",ENSEMBLE["World Geodetic System 1984 ensemble",MEMBER["World Geodetic System 1984 (Transit)"],MEMBER["World Geodetic System 1984 (G730)"],MEMBER["World Geodetic System 1984 (G873)"],MEMBER["World Geodetic System 1984 (G1150)"],MEMBER["World Geodetic System 1984 (G1674)"],MEMBER["World Geodetic System 1984 (G1762)"],MEMBER["World Geodetic System 1984 (G2139)"],MEMBER["World Geodetic System 1984 (G2296)"],ELLIPSOID["WGS 84",6378137,298.257223563,LENGTHUNIT["metre",1]],ENSEMBLEACCURACY[2.0]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],CS[ellipsoidal,2],AXIS["geodetic latitude (Lat)",north,ORDER[1],ANGLEUNIT["degree",0.0174532925199433]],AXIS["geodetic longitude (Lon)",east,ORDER[2],ANGLEUNIT["degree",0.0174532925199433]],USAGE[SCOPE["Horizontal component of 3D system."],AREA["World."],BBOX[-90,-180,90,180]],ID["EPSG",4326]] + +proj=longlat +datum=WGS84 +no_defs + 3452 + 4326 + EPSG:4326 + WGS 84 + longlat + EPSG:7030 + true + + + + + + + dataset + + + + + + + + + GEOGCRS["WGS 84",ENSEMBLE["World Geodetic System 1984 ensemble",MEMBER["World Geodetic System 1984 (Transit)"],MEMBER["World Geodetic System 1984 (G730)"],MEMBER["World Geodetic System 1984 (G873)"],MEMBER["World Geodetic System 1984 (G1150)"],MEMBER["World Geodetic System 1984 (G1674)"],MEMBER["World Geodetic System 1984 (G1762)"],MEMBER["World Geodetic System 1984 (G2139)"],MEMBER["World Geodetic System 1984 (G2296)"],ELLIPSOID["WGS 84",6378137,298.257223563,LENGTHUNIT["metre",1]],ENSEMBLEACCURACY[2.0]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],CS[ellipsoidal,2],AXIS["geodetic latitude (Lat)",north,ORDER[1],ANGLEUNIT["degree",0.0174532925199433]],AXIS["geodetic longitude (Lon)",east,ORDER[2],ANGLEUNIT["degree",0.0174532925199433]],USAGE[SCOPE["Horizontal component of 3D system."],AREA["World."],BBOX[-90,-180,90,180]],ID["EPSG",4326]] + +proj=longlat +datum=WGS84 +no_defs + 3452 + 4326 + EPSG:4326 + WGS 84 + longlat + EPSG:7030 + true + + + + + postgres + + + + + + + + + + + 1 + 1 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + 0 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + + + 0 + generatedlayout + + + + + + + + + + table_for_relationnal_value_fbba335b_1fa6_4560_9eed_7591c0aa9b74 + service='lizmapdb' key='gid' checkPrimaryKeyUnicity='1' table="tests_projects"."table_for_relationnal_value" + table_for_relationnal_value + + + + table_for_relationnal_value + + + + + 0 + 0 + + + + + false + + + + + + + dataset + + + + + + + + + + + + + + + + + + + + 0 + 0 + + + + + false + + + + + + + + + + + + + postgres + + + + + + + + + + + 1 + 1 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + + + 0 + generatedlayout + + + + + + + + + + + + + + + + + + "label" + + + + + + + + + + + + + + 0 + + + 255 + 255 + 255 + 255 + 0 + 255 + 255 + + + false + + + + + + EPSG:7030 + + + m2 + meters + + + 5 + 2.5 + false + false + false + 1 + 0 + false + false + true + 0 + 255,0,0,255,rgb:1,0,0,1 + + + false + + + true + 2 + + false + + 1 + + + + lizmap_repository + lizmap_user + lizmap_user_groups + + + intranet + + + + + + + + single_wms_baselayer_00d2213e_7c10_4806_83ef_a91f58fbd937 + single_wms_lines_3c59223a_66b7_4f40_98fe_b7afe35b5ce5 + single_wms_lines_group_7e1171a1_1c40_4b82_af30_8b64d5c8f918 + single_wms_points_d024c177_c07b_4f22_95eb_94c54ee87c05 + single_wms_polygons_9beb2388_97f6_455f_854a_351fff0ba5cb + table_for_relationnal_value_fbba335b_1fa6_4560_9eed_7591c0aa9b74 + + + 8 + 8 + 8 + 8 + 8 + 8 + + + + + + + + None + false + true + + + + + + 1 + + 3.53218285499999984 + 43.30776180400000186 + 4.28408297699999974 + 43.89959731999999804 + + false + conditions unknown + 90 + + + + 1 + + 8 + popup_grouped_by_layer + false + + true + popup_grouped_by_layer + false + 0 + + false + + + + + + + + false + + + + + false + + 5000 + + + + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Riccardo Beltrami + 2026-03-27T10:46:29 + + + + + + + + + + + GEOGCRS["WGS 84",ENSEMBLE["World Geodetic System 1984 ensemble",MEMBER["World Geodetic System 1984 (Transit)"],MEMBER["World Geodetic System 1984 (G730)"],MEMBER["World Geodetic System 1984 (G873)"],MEMBER["World Geodetic System 1984 (G1150)"],MEMBER["World Geodetic System 1984 (G1674)"],MEMBER["World Geodetic System 1984 (G1762)"],MEMBER["World Geodetic System 1984 (G2139)"],MEMBER["World Geodetic System 1984 (G2296)"],ELLIPSOID["WGS 84",6378137,298.257223563,LENGTHUNIT["metre",1]],ENSEMBLEACCURACY[2.0]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],CS[ellipsoidal,2],AXIS["geodetic latitude (Lat)",north,ORDER[1],ANGLEUNIT["degree",0.0174532925199433]],AXIS["geodetic longitude (Lon)",east,ORDER[2],ANGLEUNIT["degree",0.0174532925199433]],USAGE[SCOPE["Horizontal component of 3D system."],AREA["World."],BBOX[-90,-180,90,180]],ID["EPSG",4326]] + +proj=longlat +datum=WGS84 +no_defs + 3452 + 4326 + EPSG:4326 + WGS 84 + longlat + EPSG:7030 + true + + + + + + + + + + + + + + + + + + + + + + GEOGCRS["WGS 84",ENSEMBLE["World Geodetic System 1984 ensemble",MEMBER["World Geodetic System 1984 (Transit)"],MEMBER["World Geodetic System 1984 (G730)"],MEMBER["World Geodetic System 1984 (G873)"],MEMBER["World Geodetic System 1984 (G1150)"],MEMBER["World Geodetic System 1984 (G1674)"],MEMBER["World Geodetic System 1984 (G1762)"],MEMBER["World Geodetic System 1984 (G2139)"],MEMBER["World Geodetic System 1984 (G2296)"],ELLIPSOID["WGS 84",6378137,298.257223563,LENGTHUNIT["metre",1]],ENSEMBLEACCURACY[2.0]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],CS[ellipsoidal,2],AXIS["geodetic latitude (Lat)",north,ORDER[1],ANGLEUNIT["degree",0.0174532925199433]],AXIS["geodetic longitude (Lon)",east,ORDER[2],ANGLEUNIT["degree",0.0174532925199433]],USAGE[SCOPE["Horizontal component of 3D system."],AREA["World."],BBOX[-90,-180,90,180]],ID["EPSG",4326]] + +proj=longlat +datum=WGS84 +no_defs + 3452 + 4326 + EPSG:4326 + WGS 84 + longlat + EPSG:7030 + true + + + + + + + diff --git a/tests/qgis-projects/tests/popup_grouped_by_layer.qgs.cfg b/tests/qgis-projects/tests/popup_grouped_by_layer.qgs.cfg new file mode 100644 index 0000000000..9f6cfc32fc --- /dev/null +++ b/tests/qgis-projects/tests/popup_grouped_by_layer.qgs.cfg @@ -0,0 +1,307 @@ +{ + "metadata": { + "qgis_desktop_version": 34010, + "lizmap_plugin_version_str": "4.5.9", + "lizmap_plugin_version": 40509, + "lizmap_web_client_target_version": 31100, + "lizmap_web_client_target_status": "Dev", + "instance_target_url": "http://localhost:8130/", + "instance_target_repository": "intranet" + }, + "warnings": {}, + "debug": { + "total_time": 0 + }, + "options": { + "projection": { + "proj4": "+proj=longlat +datum=WGS84 +no_defs", + "ref": "EPSG:4326" + }, + "bbox": [ + "3.53218285499999984", + "43.30776180400000186", + "4.28408297699999974", + "43.89959731999999804" + ], + "mapScales": [ + 10000, + 25000, + 50000, + 100000, + 250000, + 500000 + ], + "minScale": 1, + "maxScale": 1000000000, + "use_native_zoom_levels": false, + "hide_numeric_scale_value": false, + "initialExtent": [ + 3.532182855, + 43.307761804, + 4.284082977, + 43.89959732 + ], + "popupLocation": "dock", + "pointTolerance": 25, + "lineTolerance": 10, + "polygonTolerance": 5, + "automatic_permalink": false, + "wms_single_request_for_all_layers": true, + "group_popup_by_layer": true, + "tmTimeFrameSize": 10, + "tmTimeFrameType": "seconds", + "tmAnimationFrameLength": 1000, + "datavizLocation": "dock", + "theme": "dark", + "fixed_scale_overview_map": true, + "dataviz_drag_drop": [] + }, + "layers": { + "single_wms_polygons": { + "id": "single_wms_polygons_9beb2388_97f6_455f_854a_351fff0ba5cb", + "name": "single_wms_polygons", + "type": "layer", + "geometryType": "polygon", + "extent": [ + 3.839991945080798, + 43.57356896293618, + 3.936442772758097, + 43.63754756174983 + ], + "crs": "EPSG:4326", + "title": "single_wms_polygons", + "abstract": "", + "link": "", + "minScale": 1, + "maxScale": 1000000000000, + "toggled": "True", + "popup": "True", + "popupSource": "auto", + "popupTemplate": "", + "popupMaxFeatures": 10, + "children_lizmap_features_table": false, + "popupDisplayChildren": "False", + "popup_allow_download": true, + "legend_image_option": "hide_at_startup", + "groupAsLayer": "False", + "baseLayer": "False", + "displayInLegend": "True", + "group_visibility": [], + "singleTile": "True", + "imageFormat": "image/png", + "cached": "False", + "clientCacheExpiration": 300 + }, + "table_for_relationnal_value": { + "id": "table_for_relationnal_value_fbba335b_1fa6_4560_9eed_7591c0aa9b74", + "name": "table_for_relationnal_value", + "type": "layer", + "geometryType": "none", + "extent": [ + 1.7976931348623157e+308, + 1.7976931348623157e+308, + -1.7976931348623157e+308, + -1.7976931348623157e+308 + ], + "crs": "", + "title": "table_for_relationnal_value", + "abstract": "", + "link": "", + "minScale": 1, + "maxScale": 1000000000000, + "toggled": "False", + "popup": "True", + "popupSource": "auto", + "popupTemplate": "", + "popupMaxFeatures": 10, + "children_lizmap_features_table": false, + "popupDisplayChildren": "False", + "popup_allow_download": true, + "legend_image_option": "hide_at_startup", + "groupAsLayer": "False", + "baseLayer": "False", + "displayInLegend": "True", + "group_visibility": [], + "singleTile": "True", + "imageFormat": "image/png", + "cached": "False", + "clientCacheExpiration": 300 + }, + "single_wms_points": { + "id": "single_wms_points_d024c177_c07b_4f22_95eb_94c54ee87c05", + "name": "single_wms_points", + "type": "layer", + "geometryType": "point", + "extent": [ + 3.85664532539918, + 43.57105532588823, + 3.954021340871944, + 43.62298250356228 + ], + "crs": "EPSG:4326", + "title": "single_wms_points", + "abstract": "", + "link": "", + "minScale": 1, + "maxScale": 1000000000000, + "toggled": "True", + "popup": "True", + "popupSource": "form", + "popupTemplate": "", + "popupMaxFeatures": 10, + "children_lizmap_features_table": false, + "popupDisplayChildren": "True", + "popup_allow_download": true, + "legend_image_option": "hide_at_startup", + "groupAsLayer": "False", + "baseLayer": "False", + "displayInLegend": "True", + "group_visibility": [], + "singleTile": "True", + "imageFormat": "image/png", + "cached": "False", + "clientCacheExpiration": 300 + }, + "single_wms_lines_group": { + "id": "single_wms_lines_group_7e1171a1_1c40_4b82_af30_8b64d5c8f918", + "name": "single_wms_lines_group", + "type": "layer", + "geometryType": "line", + "extent": [ + 3.881741044351187, + 43.62005232408322, + 3.89376848569224, + 43.62909356120091 + ], + "crs": "EPSG:4326", + "title": "single_wms_lines_group", + "abstract": "", + "link": "", + "minScale": 1, + "maxScale": 1000000000000, + "toggled": "True", + "popup": "True", + "popupSource": "auto", + "popupTemplate": "", + "popupMaxFeatures": 10, + "children_lizmap_features_table": false, + "popupDisplayChildren": "False", + "popup_allow_download": true, + "legend_image_option": "hide_at_startup", + "groupAsLayer": "False", + "baseLayer": "False", + "displayInLegend": "True", + "group_visibility": [], + "singleTile": "True", + "imageFormat": "image/png", + "cached": "False", + "clientCacheExpiration": 300 + }, + "single_wms_lines": { + "id": "single_wms_lines_3c59223a_66b7_4f40_98fe_b7afe35b5ce5", + "name": "single_wms_lines", + "type": "layer", + "geometryType": "line", + "extent": [ + 3.81269890511456, + 43.564016584018404, + 3.914006968718052, + 43.627503071758575 + ], + "crs": "EPSG:4326", + "title": "single_wms_lines", + "abstract": "", + "link": "", + "minScale": 1, + "maxScale": 1000000000000, + "toggled": "True", + "popup": "True", + "popupSource": "auto", + "popupTemplate": "", + "popupMaxFeatures": 10, + "children_lizmap_features_table": true, + "popupDisplayChildren": "False", + "popup_allow_download": true, + "legend_image_option": "hide_at_startup", + "groupAsLayer": "False", + "baseLayer": "False", + "displayInLegend": "True", + "group_visibility": [], + "singleTile": "True", + "imageFormat": "image/png", + "cached": "False", + "clientCacheExpiration": 300 + }, + "single_wms_baselayer": { + "id": "single_wms_baselayer_00d2213e_7c10_4806_83ef_a91f58fbd937", + "name": "single_wms_baselayer", + "type": "layer", + "geometryType": "polygon", + "extent": [ + 3.802984433262168, + 43.56410038340208, + 3.982008271684779, + 43.657045818700006 + ], + "crs": "EPSG:4326", + "title": "single_wms_baselayer", + "abstract": "", + "link": "", + "minScale": 1, + "maxScale": 1000000000000, + "toggled": "True", + "popup": "True", + "popupSource": "auto", + "popupTemplate": "", + "popupMaxFeatures": 10, + "children_lizmap_features_table": false, + "popupDisplayChildren": "False", + "popup_allow_download": true, + "legend_image_option": "hide_at_startup", + "groupAsLayer": "False", + "baseLayer": "False", + "displayInLegend": "True", + "group_visibility": [], + "singleTile": "True", + "imageFormat": "image/png", + "cached": "False", + "clientCacheExpiration": 300 + } + }, + "atlas": { + "layers": [] + }, + "locateByLayer": {}, + "attributeLayers": { + "table_for_relationnal_value": { + "layerId": "table_for_relationnal_value_fbba335b_1fa6_4560_9eed_7591c0aa9b74", + "primaryKey": "gid", + "export_enabled": true, + "pivot": "False", + "hideAsChild": "False", + "hideLayer": "False", + "custom_config": "False", + "order": 0 + } + }, + "tooltipLayers": {}, + "editionLayers": {}, + "layouts": { + "config": { + "default_popup_print": false + }, + "list": [] + }, + "loginFilteredLayers": {}, + "timemanagerLayers": {}, + "datavizLayers": {}, + "filter_by_polygon": { + "config": { + "polygon_layer_id": "single_wms_baselayer_00d2213e_7c10_4806_83ef_a91f58fbd937", + "group_field": "id", + "filter_by_user": false + }, + "layers": [] + }, + "formFilterLayers": {} +} diff --git a/tests/qgis-projects/tests/popup_grouped_by_layer_minidock.qgs b/tests/qgis-projects/tests/popup_grouped_by_layer_minidock.qgs new file mode 100644 index 0000000000..29a9efa61d --- /dev/null +++ b/tests/qgis-projects/tests/popup_grouped_by_layer_minidock.qgs @@ -0,0 +1,2799 @@ + + + + + + + + + GEOGCRS["WGS 84",ENSEMBLE["World Geodetic System 1984 ensemble",MEMBER["World Geodetic System 1984 (Transit)"],MEMBER["World Geodetic System 1984 (G730)"],MEMBER["World Geodetic System 1984 (G873)"],MEMBER["World Geodetic System 1984 (G1150)"],MEMBER["World Geodetic System 1984 (G1674)"],MEMBER["World Geodetic System 1984 (G1762)"],MEMBER["World Geodetic System 1984 (G2139)"],MEMBER["World Geodetic System 1984 (G2296)"],ELLIPSOID["WGS 84",6378137,298.257223563,LENGTHUNIT["metre",1]],ENSEMBLEACCURACY[2.0]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],CS[ellipsoidal,2],AXIS["geodetic latitude (Lat)",north,ORDER[1],ANGLEUNIT["degree",0.0174532925199433]],AXIS["geodetic longitude (Lon)",east,ORDER[2],ANGLEUNIT["degree",0.0174532925199433]],USAGE[SCOPE["Horizontal component of 3D system."],AREA["World."],BBOX[-90,-180,90,180]],ID["EPSG",4326]] + +proj=longlat +datum=WGS84 +no_defs + 3452 + 4326 + EPSG:4326 + WGS 84 + longlat + EPSG:7030 + true + + + + + + + 0 + 0 + + + + + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + single_wms_baselayer_00d2213e_7c10_4806_83ef_a91f58fbd937 + single_wms_lines_3c59223a_66b7_4f40_98fe_b7afe35b5ce5 + single_wms_lines_group_7e1171a1_1c40_4b82_af30_8b64d5c8f918 + single_wms_points_d024c177_c07b_4f22_95eb_94c54ee87c05 + single_wms_polygons_9beb2388_97f6_455f_854a_351fff0ba5cb + + + + + + + + + + + + + + + + + + + + + + degrees + + 3.73088700589161171 + 43.52275789326798616 + 4.08334018778612595 + 43.70574421901084605 + + 0 + + + GEOGCRS["WGS 84",ENSEMBLE["World Geodetic System 1984 ensemble",MEMBER["World Geodetic System 1984 (Transit)"],MEMBER["World Geodetic System 1984 (G730)"],MEMBER["World Geodetic System 1984 (G873)"],MEMBER["World Geodetic System 1984 (G1150)"],MEMBER["World Geodetic System 1984 (G1674)"],MEMBER["World Geodetic System 1984 (G1762)"],MEMBER["World Geodetic System 1984 (G2139)"],MEMBER["World Geodetic System 1984 (G2296)"],ELLIPSOID["WGS 84",6378137,298.257223563,LENGTHUNIT["metre",1]],ENSEMBLEACCURACY[2.0]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],CS[ellipsoidal,2],AXIS["geodetic latitude (Lat)",north,ORDER[1],ANGLEUNIT["degree",0.0174532925199433]],AXIS["geodetic longitude (Lon)",east,ORDER[2],ANGLEUNIT["degree",0.0174532925199433]],USAGE[SCOPE["Horizontal component of 3D system."],AREA["World."],BBOX[-90,-180,90,180]],ID["EPSG",4326]] + +proj=longlat +datum=WGS84 +no_defs + 3452 + 4326 + EPSG:4326 + WGS 84 + longlat + EPSG:7030 + true + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + Annotations_5593efa9_1bf5_405f_9bb1_cfd646d4e237 + + + + + Annotations + + + GEOGCRS["WGS 84",ENSEMBLE["World Geodetic System 1984 ensemble",MEMBER["World Geodetic System 1984 (Transit)"],MEMBER["World Geodetic System 1984 (G730)"],MEMBER["World Geodetic System 1984 (G873)"],MEMBER["World Geodetic System 1984 (G1150)"],MEMBER["World Geodetic System 1984 (G1674)"],MEMBER["World Geodetic System 1984 (G1762)"],MEMBER["World Geodetic System 1984 (G2139)"],MEMBER["World Geodetic System 1984 (G2296)"],ELLIPSOID["WGS 84",6378137,298.257223563,LENGTHUNIT["metre",1]],ENSEMBLEACCURACY[2.0]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],CS[ellipsoidal,2],AXIS["geodetic latitude (Lat)",north,ORDER[1],ANGLEUNIT["degree",0.0174532925199433]],AXIS["geodetic longitude (Lon)",east,ORDER[2],ANGLEUNIT["degree",0.0174532925199433]],USAGE[SCOPE["Horizontal component of 3D system."],AREA["World."],BBOX[-90,-180,90,180]],ID["EPSG",4326]] + +proj=longlat +datum=WGS84 +no_defs + 3452 + 4326 + EPSG:4326 + WGS 84 + longlat + EPSG:7030 + true + + + + + + + + + + + + + + + + + + 0 + 0 + + + + + false + + + + + + + 1 + 1 + 1 + 0 + + + + 1 + 0 + + + + + + 3.80298443326216784 + 43.56410038340207791 + 3.98200827168477911 + 43.65704581870000567 + + + 3.80298443326216784 + 43.56410038340207791 + 3.98200827168477911 + 43.65704581870000567 + + single_wms_baselayer_00d2213e_7c10_4806_83ef_a91f58fbd937 + service='lizmapdb' key='id' estimatedmetadata=true srid=4326 type=Polygon checkPrimaryKeyUnicity='1' table="tests_projects"."single_wms_baselayer" (geom) + single_wms_baselayer + + + + single_wms_baselayer + + + GEOGCRS["WGS 84",ENSEMBLE["World Geodetic System 1984 ensemble",MEMBER["World Geodetic System 1984 (Transit)"],MEMBER["World Geodetic System 1984 (G730)"],MEMBER["World Geodetic System 1984 (G873)"],MEMBER["World Geodetic System 1984 (G1150)"],MEMBER["World Geodetic System 1984 (G1674)"],MEMBER["World Geodetic System 1984 (G1762)"],MEMBER["World Geodetic System 1984 (G2139)"],MEMBER["World Geodetic System 1984 (G2296)"],ELLIPSOID["WGS 84",6378137,298.257223563,LENGTHUNIT["metre",1]],ENSEMBLEACCURACY[2.0]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],CS[ellipsoidal,2],AXIS["geodetic latitude (Lat)",north,ORDER[1],ANGLEUNIT["degree",0.0174532925199433]],AXIS["geodetic longitude (Lon)",east,ORDER[2],ANGLEUNIT["degree",0.0174532925199433]],USAGE[SCOPE["Horizontal component of 3D system."],AREA["World."],BBOX[-90,-180,90,180]],ID["EPSG",4326]] + +proj=longlat +datum=WGS84 +no_defs + 3452 + 4326 + EPSG:4326 + WGS 84 + longlat + EPSG:7030 + true + + + + + + + dataset + + + + + + + + + GEOGCRS["WGS 84",ENSEMBLE["World Geodetic System 1984 ensemble",MEMBER["World Geodetic System 1984 (Transit)"],MEMBER["World Geodetic System 1984 (G730)"],MEMBER["World Geodetic System 1984 (G873)"],MEMBER["World Geodetic System 1984 (G1150)"],MEMBER["World Geodetic System 1984 (G1674)"],MEMBER["World Geodetic System 1984 (G1762)"],MEMBER["World Geodetic System 1984 (G2139)"],MEMBER["World Geodetic System 1984 (G2296)"],ELLIPSOID["WGS 84",6378137,298.257223563,LENGTHUNIT["metre",1]],ENSEMBLEACCURACY[2.0]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],CS[ellipsoidal,2],AXIS["geodetic latitude (Lat)",north,ORDER[1],ANGLEUNIT["degree",0.0174532925199433]],AXIS["geodetic longitude (Lon)",east,ORDER[2],ANGLEUNIT["degree",0.0174532925199433]],USAGE[SCOPE["Horizontal component of 3D system."],AREA["World."],BBOX[-90,-180,90,180]],ID["EPSG",4326]] + +proj=longlat +datum=WGS84 +no_defs + 3452 + 4326 + EPSG:4326 + WGS 84 + longlat + EPSG:7030 + true + + + + + postgres + + + + + + + + + + + 1 + 1 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + 0 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + + + 0 + generatedlayout + + + + + + + + + + + 3.81269890511455989 + 43.56401658401840393 + 3.91400696871805209 + 43.627503071758575 + + + 3.81269890511455989 + 43.56401658401840393 + 3.91400696871805209 + 43.627503071758575 + + single_wms_lines_3c59223a_66b7_4f40_98fe_b7afe35b5ce5 + service='lizmapdb' key='id' estimatedmetadata=true srid=4326 type=LineString checkPrimaryKeyUnicity='1' table="tests_projects"."single_wms_lines" (geom) + single_wms_lines + + + + single_wms_lines + + + GEOGCRS["WGS 84",ENSEMBLE["World Geodetic System 1984 ensemble",MEMBER["World Geodetic System 1984 (Transit)"],MEMBER["World Geodetic System 1984 (G730)"],MEMBER["World Geodetic System 1984 (G873)"],MEMBER["World Geodetic System 1984 (G1150)"],MEMBER["World Geodetic System 1984 (G1674)"],MEMBER["World Geodetic System 1984 (G1762)"],MEMBER["World Geodetic System 1984 (G2139)"],MEMBER["World Geodetic System 1984 (G2296)"],ELLIPSOID["WGS 84",6378137,298.257223563,LENGTHUNIT["metre",1]],ENSEMBLEACCURACY[2.0]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],CS[ellipsoidal,2],AXIS["geodetic latitude (Lat)",north,ORDER[1],ANGLEUNIT["degree",0.0174532925199433]],AXIS["geodetic longitude (Lon)",east,ORDER[2],ANGLEUNIT["degree",0.0174532925199433]],USAGE[SCOPE["Horizontal component of 3D system."],AREA["World."],BBOX[-90,-180,90,180]],ID["EPSG",4326]] + +proj=longlat +datum=WGS84 +no_defs + 3452 + 4326 + EPSG:4326 + WGS 84 + longlat + EPSG:7030 + true + + + + + + + dataset + + + + + + + + + GEOGCRS["WGS 84",ENSEMBLE["World Geodetic System 1984 ensemble",MEMBER["World Geodetic System 1984 (Transit)"],MEMBER["World Geodetic System 1984 (G730)"],MEMBER["World Geodetic System 1984 (G873)"],MEMBER["World Geodetic System 1984 (G1150)"],MEMBER["World Geodetic System 1984 (G1674)"],MEMBER["World Geodetic System 1984 (G1762)"],MEMBER["World Geodetic System 1984 (G2139)"],MEMBER["World Geodetic System 1984 (G2296)"],ELLIPSOID["WGS 84",6378137,298.257223563,LENGTHUNIT["metre",1]],ENSEMBLEACCURACY[2.0]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],CS[ellipsoidal,2],AXIS["geodetic latitude (Lat)",north,ORDER[1],ANGLEUNIT["degree",0.0174532925199433]],AXIS["geodetic longitude (Lon)",east,ORDER[2],ANGLEUNIT["degree",0.0174532925199433]],USAGE[SCOPE["Horizontal component of 3D system."],AREA["World."],BBOX[-90,-180,90,180]],ID["EPSG",4326]] + +proj=longlat +datum=WGS84 +no_defs + 3452 + 4326 + EPSG:4326 + WGS 84 + longlat + EPSG:7030 + true + + + + + postgres + + + + + + + + + + + 1 + 1 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + 0 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + + + 0 + generatedlayout + + + + + + + + + + + 3.88174104435118705 + 43.62005232408321831 + 3.89376848569223988 + 43.62909356120091076 + + + 3.88174104435118705 + 43.62005232408321831 + 3.89376848569223988 + 43.62909356120091076 + + single_wms_lines_group_7e1171a1_1c40_4b82_af30_8b64d5c8f918 + service='lizmapdb' key='id' estimatedmetadata=true srid=4326 type=LineString checkPrimaryKeyUnicity='1' table="tests_projects"."single_wms_lines_group" (geom) + single_wms_lines_group + + + + single_wms_lines_group + + + GEOGCRS["WGS 84",ENSEMBLE["World Geodetic System 1984 ensemble",MEMBER["World Geodetic System 1984 (Transit)"],MEMBER["World Geodetic System 1984 (G730)"],MEMBER["World Geodetic System 1984 (G873)"],MEMBER["World Geodetic System 1984 (G1150)"],MEMBER["World Geodetic System 1984 (G1674)"],MEMBER["World Geodetic System 1984 (G1762)"],MEMBER["World Geodetic System 1984 (G2139)"],MEMBER["World Geodetic System 1984 (G2296)"],ELLIPSOID["WGS 84",6378137,298.257223563,LENGTHUNIT["metre",1]],ENSEMBLEACCURACY[2.0]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],CS[ellipsoidal,2],AXIS["geodetic latitude (Lat)",north,ORDER[1],ANGLEUNIT["degree",0.0174532925199433]],AXIS["geodetic longitude (Lon)",east,ORDER[2],ANGLEUNIT["degree",0.0174532925199433]],USAGE[SCOPE["Horizontal component of 3D system."],AREA["World."],BBOX[-90,-180,90,180]],ID["EPSG",4326]] + +proj=longlat +datum=WGS84 +no_defs + 3452 + 4326 + EPSG:4326 + WGS 84 + longlat + EPSG:7030 + true + + + + + + + dataset + + + + + + + + + + + + + + + + + + GEOGCRS["WGS 84",ENSEMBLE["World Geodetic System 1984 ensemble",MEMBER["World Geodetic System 1984 (Transit)"],MEMBER["World Geodetic System 1984 (G730)"],MEMBER["World Geodetic System 1984 (G873)"],MEMBER["World Geodetic System 1984 (G1150)"],MEMBER["World Geodetic System 1984 (G1674)"],MEMBER["World Geodetic System 1984 (G1762)"],MEMBER["World Geodetic System 1984 (G2139)"],MEMBER["World Geodetic System 1984 (G2296)"],ELLIPSOID["WGS 84",6378137,298.257223563,LENGTHUNIT["metre",1]],ENSEMBLEACCURACY[2.0]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],CS[ellipsoidal,2],AXIS["geodetic latitude (Lat)",north,ORDER[1],ANGLEUNIT["degree",0.0174532925199433]],AXIS["geodetic longitude (Lon)",east,ORDER[2],ANGLEUNIT["degree",0.0174532925199433]],USAGE[SCOPE["Horizontal component of 3D system."],AREA["World."],BBOX[-90,-180,90,180]],ID["EPSG",4326]] + +proj=longlat +datum=WGS84 +no_defs + 3452 + 4326 + EPSG:4326 + WGS 84 + longlat + EPSG:7030 + true + + + + + + + + + + + + + postgres + + + + + + + + + + + 1 + 1 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + 0 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + + + 0 + generatedlayout + + + + + + + + + + + + + + + "title" + + + + + 3.85664532539917992 + 43.57105532588823138 + 3.95402134087194401 + 43.62298250356227669 + + + 3.85664532539917992 + 43.57105532588823138 + 3.95402134087194401 + 43.62298250356227669 + + single_wms_points_d024c177_c07b_4f22_95eb_94c54ee87c05 + service='lizmapdb' key='id' estimatedmetadata=true srid=4326 type=Point checkPrimaryKeyUnicity='1' table="tests_projects"."single_wms_points" (geom) + single_wms_points + + + + single_wms_points + + + GEOGCRS["WGS 84",ENSEMBLE["World Geodetic System 1984 ensemble",MEMBER["World Geodetic System 1984 (Transit)"],MEMBER["World Geodetic System 1984 (G730)"],MEMBER["World Geodetic System 1984 (G873)"],MEMBER["World Geodetic System 1984 (G1150)"],MEMBER["World Geodetic System 1984 (G1674)"],MEMBER["World Geodetic System 1984 (G1762)"],MEMBER["World Geodetic System 1984 (G2139)"],MEMBER["World Geodetic System 1984 (G2296)"],ELLIPSOID["WGS 84",6378137,298.257223563,LENGTHUNIT["metre",1]],ENSEMBLEACCURACY[2.0]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],CS[ellipsoidal,2],AXIS["geodetic latitude (Lat)",north,ORDER[1],ANGLEUNIT["degree",0.0174532925199433]],AXIS["geodetic longitude (Lon)",east,ORDER[2],ANGLEUNIT["degree",0.0174532925199433]],USAGE[SCOPE["Horizontal component of 3D system."],AREA["World."],BBOX[-90,-180,90,180]],ID["EPSG",4326]] + +proj=longlat +datum=WGS84 +no_defs + 3452 + 4326 + EPSG:4326 + WGS 84 + longlat + EPSG:7030 + true + + + + + + + dataset + + + + + + + + + + + + + + + + + + GEOGCRS["WGS 84",ENSEMBLE["World Geodetic System 1984 ensemble",MEMBER["World Geodetic System 1984 (Transit)"],MEMBER["World Geodetic System 1984 (G730)"],MEMBER["World Geodetic System 1984 (G873)"],MEMBER["World Geodetic System 1984 (G1150)"],MEMBER["World Geodetic System 1984 (G1674)"],MEMBER["World Geodetic System 1984 (G1762)"],MEMBER["World Geodetic System 1984 (G2139)"],MEMBER["World Geodetic System 1984 (G2296)"],ELLIPSOID["WGS 84",6378137,298.257223563,LENGTHUNIT["metre",1]],ENSEMBLEACCURACY[2.0]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],CS[ellipsoidal,2],AXIS["geodetic latitude (Lat)",north,ORDER[1],ANGLEUNIT["degree",0.0174532925199433]],AXIS["geodetic longitude (Lon)",east,ORDER[2],ANGLEUNIT["degree",0.0174532925199433]],USAGE[SCOPE["Horizontal component of 3D system."],AREA["World."],BBOX[-90,-180,90,180]],ID["EPSG",4326]] + +proj=longlat +datum=WGS84 +no_defs + 3452 + 4326 + EPSG:4326 + WGS 84 + longlat + EPSG:7030 + true + + + + + + + + + + + + + postgres + + + + + + + + + + + 1 + 1 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + 0 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + + + 0 + tablayout + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + "title" + + + + + 3.839991945080798 + 43.57356896293617865 + 3.93644277275809706 + 43.63754756174982674 + + + 3.839991945080798 + 43.57356896293617865 + 3.93644277275809706 + 43.63754756174982674 + + single_wms_polygons_9beb2388_97f6_455f_854a_351fff0ba5cb + service='lizmapdb' key='id' estimatedmetadata=true srid=4326 type=Polygon checkPrimaryKeyUnicity='1' table="tests_projects"."single_wms_polygons" (geom) + single_wms_polygons + + + + single_wms_polygons + + + GEOGCRS["WGS 84",ENSEMBLE["World Geodetic System 1984 ensemble",MEMBER["World Geodetic System 1984 (Transit)"],MEMBER["World Geodetic System 1984 (G730)"],MEMBER["World Geodetic System 1984 (G873)"],MEMBER["World Geodetic System 1984 (G1150)"],MEMBER["World Geodetic System 1984 (G1674)"],MEMBER["World Geodetic System 1984 (G1762)"],MEMBER["World Geodetic System 1984 (G2139)"],MEMBER["World Geodetic System 1984 (G2296)"],ELLIPSOID["WGS 84",6378137,298.257223563,LENGTHUNIT["metre",1]],ENSEMBLEACCURACY[2.0]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],CS[ellipsoidal,2],AXIS["geodetic latitude (Lat)",north,ORDER[1],ANGLEUNIT["degree",0.0174532925199433]],AXIS["geodetic longitude (Lon)",east,ORDER[2],ANGLEUNIT["degree",0.0174532925199433]],USAGE[SCOPE["Horizontal component of 3D system."],AREA["World."],BBOX[-90,-180,90,180]],ID["EPSG",4326]] + +proj=longlat +datum=WGS84 +no_defs + 3452 + 4326 + EPSG:4326 + WGS 84 + longlat + EPSG:7030 + true + + + + + + + dataset + + + + + + + + + GEOGCRS["WGS 84",ENSEMBLE["World Geodetic System 1984 ensemble",MEMBER["World Geodetic System 1984 (Transit)"],MEMBER["World Geodetic System 1984 (G730)"],MEMBER["World Geodetic System 1984 (G873)"],MEMBER["World Geodetic System 1984 (G1150)"],MEMBER["World Geodetic System 1984 (G1674)"],MEMBER["World Geodetic System 1984 (G1762)"],MEMBER["World Geodetic System 1984 (G2139)"],MEMBER["World Geodetic System 1984 (G2296)"],ELLIPSOID["WGS 84",6378137,298.257223563,LENGTHUNIT["metre",1]],ENSEMBLEACCURACY[2.0]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],CS[ellipsoidal,2],AXIS["geodetic latitude (Lat)",north,ORDER[1],ANGLEUNIT["degree",0.0174532925199433]],AXIS["geodetic longitude (Lon)",east,ORDER[2],ANGLEUNIT["degree",0.0174532925199433]],USAGE[SCOPE["Horizontal component of 3D system."],AREA["World."],BBOX[-90,-180,90,180]],ID["EPSG",4326]] + +proj=longlat +datum=WGS84 +no_defs + 3452 + 4326 + EPSG:4326 + WGS 84 + longlat + EPSG:7030 + true + + + + + postgres + + + + + + + + + + + 1 + 1 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + 0 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + + + 0 + generatedlayout + + + + + + + + + + table_for_relationnal_value_fbba335b_1fa6_4560_9eed_7591c0aa9b74 + service='lizmapdb' key='gid' checkPrimaryKeyUnicity='1' table="tests_projects"."table_for_relationnal_value" + table_for_relationnal_value + + + + table_for_relationnal_value + + + + + 0 + 0 + + + + + false + + + + + + + dataset + + + + + + + + + + + + + + + + + + + + 0 + 0 + + + + + false + + + + + + + + + + + + + postgres + + + + + + + + + + + 1 + 1 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + + + 0 + generatedlayout + + + + + + + + + + + + + + + + + + "label" + + + + + + + + + + + + + + 0 + + + 255 + 255 + 255 + 255 + 0 + 255 + 255 + + + false + + + + + + EPSG:7030 + + + m2 + meters + + + 5 + 2.5 + false + false + false + 1 + 0 + false + false + true + 0 + 255,0,0,255,rgb:1,0,0,1 + + + false + + + true + 2 + + false + + 1 + + + + lizmap_repository + lizmap_user + lizmap_user_groups + + + intranet + + + + + + + + single_wms_baselayer_00d2213e_7c10_4806_83ef_a91f58fbd937 + single_wms_lines_3c59223a_66b7_4f40_98fe_b7afe35b5ce5 + single_wms_lines_group_7e1171a1_1c40_4b82_af30_8b64d5c8f918 + single_wms_points_d024c177_c07b_4f22_95eb_94c54ee87c05 + single_wms_polygons_9beb2388_97f6_455f_854a_351fff0ba5cb + table_for_relationnal_value_fbba335b_1fa6_4560_9eed_7591c0aa9b74 + + + 8 + 8 + 8 + 8 + 8 + 8 + + + + + + + + None + false + true + + + + + + 1 + + 3.53218285499999984 + 43.30776180400000186 + 4.28408297699999974 + 43.89959731999999804 + + false + conditions unknown + 90 + + + + 1 + + 8 + popup_grouped_by_layer_minidock + false + + true + popup_grouped_by_layer_minidock + false + 0 + + false + + + + + + + + false + + + + + false + + 5000 + + + + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Riccardo Beltrami + 2026-03-27T10:46:29 + + + + + + + + + + + GEOGCRS["WGS 84",ENSEMBLE["World Geodetic System 1984 ensemble",MEMBER["World Geodetic System 1984 (Transit)"],MEMBER["World Geodetic System 1984 (G730)"],MEMBER["World Geodetic System 1984 (G873)"],MEMBER["World Geodetic System 1984 (G1150)"],MEMBER["World Geodetic System 1984 (G1674)"],MEMBER["World Geodetic System 1984 (G1762)"],MEMBER["World Geodetic System 1984 (G2139)"],MEMBER["World Geodetic System 1984 (G2296)"],ELLIPSOID["WGS 84",6378137,298.257223563,LENGTHUNIT["metre",1]],ENSEMBLEACCURACY[2.0]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],CS[ellipsoidal,2],AXIS["geodetic latitude (Lat)",north,ORDER[1],ANGLEUNIT["degree",0.0174532925199433]],AXIS["geodetic longitude (Lon)",east,ORDER[2],ANGLEUNIT["degree",0.0174532925199433]],USAGE[SCOPE["Horizontal component of 3D system."],AREA["World."],BBOX[-90,-180,90,180]],ID["EPSG",4326]] + +proj=longlat +datum=WGS84 +no_defs + 3452 + 4326 + EPSG:4326 + WGS 84 + longlat + EPSG:7030 + true + + + + + + + + + + + + + + + + + + + + + + GEOGCRS["WGS 84",ENSEMBLE["World Geodetic System 1984 ensemble",MEMBER["World Geodetic System 1984 (Transit)"],MEMBER["World Geodetic System 1984 (G730)"],MEMBER["World Geodetic System 1984 (G873)"],MEMBER["World Geodetic System 1984 (G1150)"],MEMBER["World Geodetic System 1984 (G1674)"],MEMBER["World Geodetic System 1984 (G1762)"],MEMBER["World Geodetic System 1984 (G2139)"],MEMBER["World Geodetic System 1984 (G2296)"],ELLIPSOID["WGS 84",6378137,298.257223563,LENGTHUNIT["metre",1]],ENSEMBLEACCURACY[2.0]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],CS[ellipsoidal,2],AXIS["geodetic latitude (Lat)",north,ORDER[1],ANGLEUNIT["degree",0.0174532925199433]],AXIS["geodetic longitude (Lon)",east,ORDER[2],ANGLEUNIT["degree",0.0174532925199433]],USAGE[SCOPE["Horizontal component of 3D system."],AREA["World."],BBOX[-90,-180,90,180]],ID["EPSG",4326]] + +proj=longlat +datum=WGS84 +no_defs + 3452 + 4326 + EPSG:4326 + WGS 84 + longlat + EPSG:7030 + true + + + + + + + diff --git a/tests/qgis-projects/tests/popup_grouped_by_layer_minidock.qgs.cfg b/tests/qgis-projects/tests/popup_grouped_by_layer_minidock.qgs.cfg new file mode 100644 index 0000000000..75a4e8a55b --- /dev/null +++ b/tests/qgis-projects/tests/popup_grouped_by_layer_minidock.qgs.cfg @@ -0,0 +1,306 @@ +{ + "metadata": { + "qgis_desktop_version": 34010, + "lizmap_plugin_version_str": "4.5.9", + "lizmap_plugin_version": 40509, + "lizmap_web_client_target_version": 31100, + "lizmap_web_client_target_status": "Dev", + "instance_target_url": "http://localhost:8130/", + "instance_target_repository": "intranet" + }, + "warnings": {}, + "debug": { + "total_time": 0.164 + }, + "options": { + "projection": { + "proj4": "+proj=longlat +datum=WGS84 +no_defs", + "ref": "EPSG:4326" + }, + "bbox": [ + "3.53218285499999984", + "43.30776180400000186", + "4.28408297699999974", + "43.89959731999999804" + ], + "mapScales": [ + 10000, + 25000, + 50000, + 100000, + 250000, + 500000 + ], + "minScale": 1, + "maxScale": 1000000000, + "use_native_zoom_levels": false, + "hide_numeric_scale_value": false, + "initialExtent": [ + 3.532182855, + 43.307761804, + 4.284082977, + 43.89959732 + ], + "popupLocation": "minidock", + "pointTolerance": 25, + "lineTolerance": 10, + "polygonTolerance": 5, + "automatic_permalink": false, + "group_popup_by_layer": true, + "tmTimeFrameSize": 10, + "tmTimeFrameType": "seconds", + "tmAnimationFrameLength": 1000, + "datavizLocation": "dock", + "theme": "dark", + "fixed_scale_overview_map": true, + "dataviz_drag_drop": [] + }, + "layers": { + "single_wms_polygons": { + "id": "single_wms_polygons_9beb2388_97f6_455f_854a_351fff0ba5cb", + "name": "single_wms_polygons", + "type": "layer", + "geometryType": "polygon", + "extent": [ + 3.839991945080798, + 43.57356896293618, + 3.936442772758097, + 43.63754756174983 + ], + "crs": "EPSG:4326", + "title": "single_wms_polygons", + "abstract": "", + "link": "", + "minScale": 1, + "maxScale": 1000000000000, + "toggled": "True", + "popup": "True", + "popupSource": "auto", + "popupTemplate": "", + "popupMaxFeatures": 10, + "children_lizmap_features_table": false, + "popupDisplayChildren": "False", + "popup_allow_download": true, + "legend_image_option": "hide_at_startup", + "groupAsLayer": "False", + "baseLayer": "False", + "displayInLegend": "True", + "group_visibility": [], + "singleTile": "True", + "imageFormat": "image/png", + "cached": "False", + "clientCacheExpiration": 300 + }, + "table_for_relationnal_value": { + "id": "table_for_relationnal_value_fbba335b_1fa6_4560_9eed_7591c0aa9b74", + "name": "table_for_relationnal_value", + "type": "layer", + "geometryType": "none", + "extent": [ + 1.7976931348623157e+308, + 1.7976931348623157e+308, + -1.7976931348623157e+308, + -1.7976931348623157e+308 + ], + "crs": "", + "title": "table_for_relationnal_value", + "abstract": "", + "link": "", + "minScale": 1, + "maxScale": 1000000000000, + "toggled": "False", + "popup": "True", + "popupSource": "auto", + "popupTemplate": "", + "popupMaxFeatures": 10, + "children_lizmap_features_table": false, + "popupDisplayChildren": "False", + "popup_allow_download": true, + "legend_image_option": "hide_at_startup", + "groupAsLayer": "False", + "baseLayer": "False", + "displayInLegend": "True", + "group_visibility": [], + "singleTile": "True", + "imageFormat": "image/png", + "cached": "False", + "clientCacheExpiration": 300 + }, + "single_wms_points": { + "id": "single_wms_points_d024c177_c07b_4f22_95eb_94c54ee87c05", + "name": "single_wms_points", + "type": "layer", + "geometryType": "point", + "extent": [ + 3.85664532539918, + 43.57105532588823, + 3.954021340871944, + 43.62298250356228 + ], + "crs": "EPSG:4326", + "title": "single_wms_points", + "abstract": "", + "link": "", + "minScale": 1, + "maxScale": 1000000000000, + "toggled": "True", + "popup": "True", + "popupSource": "form", + "popupTemplate": "", + "popupMaxFeatures": 10, + "children_lizmap_features_table": false, + "popupDisplayChildren": "True", + "popup_allow_download": true, + "legend_image_option": "hide_at_startup", + "groupAsLayer": "False", + "baseLayer": "False", + "displayInLegend": "True", + "group_visibility": [], + "singleTile": "True", + "imageFormat": "image/png", + "cached": "False", + "clientCacheExpiration": 300 + }, + "single_wms_lines_group": { + "id": "single_wms_lines_group_7e1171a1_1c40_4b82_af30_8b64d5c8f918", + "name": "single_wms_lines_group", + "type": "layer", + "geometryType": "line", + "extent": [ + 3.881741044351187, + 43.62005232408322, + 3.89376848569224, + 43.62909356120091 + ], + "crs": "EPSG:4326", + "title": "single_wms_lines_group", + "abstract": "", + "link": "", + "minScale": 1, + "maxScale": 1000000000000, + "toggled": "True", + "popup": "True", + "popupSource": "auto", + "popupTemplate": "", + "popupMaxFeatures": 10, + "children_lizmap_features_table": false, + "popupDisplayChildren": "False", + "popup_allow_download": true, + "legend_image_option": "hide_at_startup", + "groupAsLayer": "False", + "baseLayer": "False", + "displayInLegend": "True", + "group_visibility": [], + "singleTile": "True", + "imageFormat": "image/png", + "cached": "False", + "clientCacheExpiration": 300 + }, + "single_wms_lines": { + "id": "single_wms_lines_3c59223a_66b7_4f40_98fe_b7afe35b5ce5", + "name": "single_wms_lines", + "type": "layer", + "geometryType": "line", + "extent": [ + 3.81269890511456, + 43.564016584018404, + 3.914006968718052, + 43.627503071758575 + ], + "crs": "EPSG:4326", + "title": "single_wms_lines", + "abstract": "", + "link": "", + "minScale": 1, + "maxScale": 1000000000000, + "toggled": "True", + "popup": "True", + "popupSource": "auto", + "popupTemplate": "", + "popupMaxFeatures": 10, + "children_lizmap_features_table": true, + "popupDisplayChildren": "False", + "popup_allow_download": true, + "legend_image_option": "hide_at_startup", + "groupAsLayer": "False", + "baseLayer": "False", + "displayInLegend": "True", + "group_visibility": [], + "singleTile": "True", + "imageFormat": "image/png", + "cached": "False", + "clientCacheExpiration": 300 + }, + "single_wms_baselayer": { + "id": "single_wms_baselayer_00d2213e_7c10_4806_83ef_a91f58fbd937", + "name": "single_wms_baselayer", + "type": "layer", + "geometryType": "polygon", + "extent": [ + 3.802984433262168, + 43.56410038340208, + 3.982008271684779, + 43.657045818700006 + ], + "crs": "EPSG:4326", + "title": "single_wms_baselayer", + "abstract": "", + "link": "", + "minScale": 1, + "maxScale": 1000000000000, + "toggled": "True", + "popup": "True", + "popupSource": "auto", + "popupTemplate": "", + "popupMaxFeatures": 10, + "children_lizmap_features_table": false, + "popupDisplayChildren": "False", + "popup_allow_download": true, + "legend_image_option": "hide_at_startup", + "groupAsLayer": "False", + "baseLayer": "False", + "displayInLegend": "True", + "group_visibility": [], + "singleTile": "True", + "imageFormat": "image/png", + "cached": "False", + "clientCacheExpiration": 300 + } + }, + "atlas": { + "layers": [] + }, + "locateByLayer": {}, + "attributeLayers": { + "table_for_relationnal_value": { + "layerId": "table_for_relationnal_value_fbba335b_1fa6_4560_9eed_7591c0aa9b74", + "primaryKey": "gid", + "export_enabled": true, + "pivot": "False", + "hideAsChild": "False", + "hideLayer": "False", + "custom_config": "False", + "order": 0 + } + }, + "tooltipLayers": {}, + "editionLayers": {}, + "layouts": { + "config": { + "default_popup_print": false + }, + "list": [] + }, + "loginFilteredLayers": {}, + "timemanagerLayers": {}, + "datavizLayers": {}, + "filter_by_polygon": { + "config": { + "polygon_layer_id": "single_wms_baselayer_00d2213e_7c10_4806_83ef_a91f58fbd937", + "group_field": "id", + "filter_by_user": false + }, + "layers": [] + }, + "formFilterLayers": {} +}