From 5e8c9b173ff2ed13e0a0e85ad0877be8231d06ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Martin?= Date: Fri, 12 Jun 2026 16:31:16 +0200 Subject: [PATCH 01/10] refacto: use zone in template instead of ctler --- lizmap/modules/admin/controllers/qgis_projects.classic.php | 6 ------ lizmap/modules/admin/templates/project_list.tpl | 2 +- 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/lizmap/modules/admin/controllers/qgis_projects.classic.php b/lizmap/modules/admin/controllers/qgis_projects.classic.php index 06eba75b61..600be3ec5e 100644 --- a/lizmap/modules/admin/controllers/qgis_projects.classic.php +++ b/lizmap/modules/admin/controllers/qgis_projects.classic.php @@ -28,15 +28,9 @@ public function index() $rep = $this->getResponse('html'); $rep->title = 'Admin - Lizmap projects'; - // Get the project list from the zone - $projectList = jZone::get('project_list', array('repository' => '')); // Set the HTML content $tpl = new jTpl(); - $assign = array( - 'projectList' => $projectList, - ); - $tpl->assign($assign); $rep->body->assign('MAIN', $tpl->fetch('project_list')); $rep->body->assign('selectedMenuItem', 'lizmap_project_list'); diff --git a/lizmap/modules/admin/templates/project_list.tpl b/lizmap/modules/admin/templates/project_list.tpl index 09858ee751..a8f15da267 100644 --- a/lizmap/modules/admin/templates/project_list.tpl +++ b/lizmap/modules/admin/templates/project_list.tpl @@ -4,7 +4,7 @@
- {$projectList} + {zone 'admin~project_list', ["repository" => '']}
From 16987f5be25b89498a1f74ef04b3875a25070099 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Martin?= Date: Fri, 12 Jun 2026 17:29:43 +0200 Subject: [PATCH 02/10] feat: getRepositoryList as Objet argument --- lizmap/modules/lizmap/classes/lizmap.class.php | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/lizmap/modules/lizmap/classes/lizmap.class.php b/lizmap/modules/lizmap/classes/lizmap.class.php index 4b4140012f..e5cb170c60 100644 --- a/lizmap/modules/lizmap/classes/lizmap.class.php +++ b/lizmap/modules/lizmap/classes/lizmap.class.php @@ -132,9 +132,9 @@ public static function getTheme() /** * Get a list of repository names. * - * @return string[] List of repositories names + * @return Repository[]|string[] List of repositories names */ - public static function getRepositoryList() + public static function getRepositoryList(bool $asObject = false) { // read the lizmap configuration file $readConfigPath = parse_ini_file(jApp::varPath().self::$lizmapConfig, true); @@ -145,6 +145,9 @@ public static function getRepositoryList() } } self::$repositories = $repositoryList; + if ($asObject) { + return array_map(function ($name) {return lizmap::getRepository($name); }, self::$repositories); + } return self::$repositories; } From d130c81c333bea75b608b04e6bb3c5fe65ef2751 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Martin?= Date: Fri, 12 Jun 2026 17:38:33 +0200 Subject: [PATCH 03/10] feat: filter projects by repo --- .../admin/controllers/qgis_projects.classic.php | 8 ++++++++ lizmap/modules/admin/templates/project_list.tpl | 5 +++-- .../admin/templates/project_list_zone.tpl | 16 +++++++++++++++- lizmap/modules/admin/zones/project_list.zone.php | 1 + lizmap/www/assets/js/qgis-projects-list.js | 8 ++++++++ 5 files changed, 35 insertions(+), 3 deletions(-) create mode 100644 lizmap/www/assets/js/qgis-projects-list.js diff --git a/lizmap/modules/admin/controllers/qgis_projects.classic.php b/lizmap/modules/admin/controllers/qgis_projects.classic.php index 600be3ec5e..2f2b57c746 100644 --- a/lizmap/modules/admin/controllers/qgis_projects.classic.php +++ b/lizmap/modules/admin/controllers/qgis_projects.classic.php @@ -31,6 +31,14 @@ public function index() // Set the HTML content $tpl = new jTpl(); + $repoName = $this->param('repository'); + // bad repo name, set to null + if (is_null(lizmap::getRepository($repoName ?? ''))) { + $repoName = null; + } + $tpl->assign('repository', $repoName); + $tpl->assign('repositoriesList', lizmap::getRepositoryList(true)); + $tpl->assign('baseurl', jUrl::get('qgis_projects:index')); $rep->body->assign('MAIN', $tpl->fetch('project_list')); $rep->body->assign('selectedMenuItem', 'lizmap_project_list'); diff --git a/lizmap/modules/admin/templates/project_list.tpl b/lizmap/modules/admin/templates/project_list.tpl index a8f15da267..455586ecbf 100644 --- a/lizmap/modules/admin/templates/project_list.tpl +++ b/lizmap/modules/admin/templates/project_list.tpl @@ -1,10 +1,11 @@ {ifacl2 'lizmap.admin.project.list.view'} +{meta_html js $j_basepath.'assets/js/qgis-projects-list.js'}

{@admin.menu.lizmap.project.list.label@}

-
+
- {zone 'admin~project_list', ["repository" => '']} + {zone 'admin~project_list', ["repository" => $repository, 'repositoriesList' => $repositoriesList]}
diff --git a/lizmap/modules/admin/templates/project_list_zone.tpl b/lizmap/modules/admin/templates/project_list_zone.tpl index 8f4e9a52e8..953254d98e 100644 --- a/lizmap/modules/admin/templates/project_list_zone.tpl +++ b/lizmap/modules/admin/templates/project_list_zone.tpl @@ -21,10 +21,24 @@ - +{assign $colspanFromFilter = 9} +{if $hasInspectionData} + {assign $colspanFromFilter = 16} +{/if} + + + + + diff --git a/lizmap/modules/admin/zones/project_list.zone.php b/lizmap/modules/admin/zones/project_list.zone.php index 7a5006109d..ded7850dda 100644 --- a/lizmap/modules/admin/zones/project_list.zone.php +++ b/lizmap/modules/admin/zones/project_list.zone.php @@ -157,6 +157,7 @@ protected function _prepareTpl() $this->_tpl->assign('lizmapVersion', $lizmapInfo->version); $this->_tpl->assign('oldQgisVersionDiff', $oldQgisVersionDelta); $this->_tpl->assign('lizmapDesktopRecommended', $lizmapDesktopRecommended); + $this->_tpl->assign('repository', $repository); // Add the application base path to let the template load the CSS and JS assets $basePath = jApp::urlBasePath(); $this->_tpl->assign('basePath', $basePath); diff --git a/lizmap/www/assets/js/qgis-projects-list.js b/lizmap/www/assets/js/qgis-projects-list.js new file mode 100644 index 0000000000..c3225c823c --- /dev/null +++ b/lizmap/www/assets/js/qgis-projects-list.js @@ -0,0 +1,8 @@ + +document.addEventListener('DOMContentLoaded', () => { + document.getElementById('repository-selector').addEventListener('change', function () { + const baseUrl = document.getElementById('lizmap_project_list_container').dataset.baseUrl; + const repositoryFilter = this.value; + window.location = repositoryFilter ? baseUrl + '?repository=' + repositoryFilter : baseUrl; + }); +}); From 9d0ff67f0ad8560444e29346aed10223ac3dd274 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Martin?= Date: Fri, 12 Jun 2026 17:39:34 +0200 Subject: [PATCH 04/10] feat: localized page title --- lizmap/modules/admin/controllers/qgis_projects.classic.php | 3 +-- lizmap/modules/admin/locales/en_US/admin.UTF-8.properties | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/lizmap/modules/admin/controllers/qgis_projects.classic.php b/lizmap/modules/admin/controllers/qgis_projects.classic.php index 2f2b57c746..ecab34d20d 100644 --- a/lizmap/modules/admin/controllers/qgis_projects.classic.php +++ b/lizmap/modules/admin/controllers/qgis_projects.classic.php @@ -26,8 +26,7 @@ public function index() { /** @var jResponseHtml */ $rep = $this->getResponse('html'); - $rep->title = 'Admin - Lizmap projects'; - + $rep->title = jLocale::get('admin~admin.project.page.title'); // Set the HTML content $tpl = new jTpl(); diff --git a/lizmap/modules/admin/locales/en_US/admin.UTF-8.properties b/lizmap/modules/admin/locales/en_US/admin.UTF-8.properties index 8226ec076a..a1f604f76c 100644 --- a/lizmap/modules/admin/locales/en_US/admin.UTF-8.properties +++ b/lizmap/modules/admin/locales/en_US/admin.UTF-8.properties @@ -440,7 +440,7 @@ project.list.column.show.line.hidden.columns=Show/Hide the hidden columns project.modal.title=Table legend project.modal.button.close=Close project.list.no.hidden.column.content=No extra content for this project in the following hidden table columns - +project.page.title=QGIS Projects landingPageContent.authed=Content for authenticated users landingPageContent.unauthed=Content for unauthenticated users From bef61682c040d709783bbc70cba800ded864937f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Martin?= Date: Thu, 2 Jul 2026 12:12:59 +0200 Subject: [PATCH 05/10] feat: VersionTools strVersionToMajMinInt --- lizmap/modules/lizmap/lib/App/VersionTools.php | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/lizmap/modules/lizmap/lib/App/VersionTools.php b/lizmap/modules/lizmap/lib/App/VersionTools.php index 85e56e7df2..aa85db66a0 100644 --- a/lizmap/modules/lizmap/lib/App/VersionTools.php +++ b/lizmap/modules/lizmap/lib/App/VersionTools.php @@ -76,6 +76,21 @@ public static function intVersionToSortableString(string $intVersion): string return $majorVersion.'.'.$minorVersion.'.'.$patchVersion; } + /** + * Transform a version string to an int version keeping only major and minor, + * ie "3.40.15" into 340, 3.5.6 to 305. + * + * @param string $version The version, for instance "3.40.15" + * + * @return int The major and minor version as int + */ + public static function strVersionToMajMinInt(string $version): int + { + $explode = explode('.', $version); + + return intval($explode[0].str_pad($explode[1], 2, '0', STR_PAD_LEFT)); + } + /** * Transform a QGIS version with its name to a sortable int version. * From dc9e67342dd4e35b824e52c3fa90118887757988 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Martin?= Date: Thu, 2 Jul 2026 12:21:09 +0200 Subject: [PATCH 06/10] test versionTools::strVersionToMajMinInt --- tests/units/classes/App/VersionToolsTest.php | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/tests/units/classes/App/VersionToolsTest.php b/tests/units/classes/App/VersionToolsTest.php index 6ade4056de..424e29d0a1 100644 --- a/tests/units/classes/App/VersionToolsTest.php +++ b/tests/units/classes/App/VersionToolsTest.php @@ -25,6 +25,24 @@ public function testQgisMajMinHumanVersion(): void $this->assertEquals('1.40', VersionTools::qgisMajMinHumanVersion('1040')); // Fixme when QGIS 10 is released :) } + public static function strVersionToMajMinIntProvider() { + return [ + '3.40.15' => ['3.40.15', 340], + '3.34.10' => ['3.34.10', 334], + '4.0.0' => ['4.0.0', 400], + '10.4.2' => ['10.4.2', 1004], + ]; + } + + /** + * @dataProvider strVersionToMajMinIntProvider + */ + #[DataProvider('strVersionToMajMinIntProvider')] + public function teststrVersionToMajMinInt(string $version, int $expected): void + { + $this->assertEquals($expected, VersionTools::strVersionToMajMinInt($version)); + } + public function testQgisVersionWithNameToInt(): void { $this->assertEquals(33410, VersionTools::qgisVersionWithNameToInt('3.34.10-Bratislava')); From 2a8295fc4e7a74a317629f6b2bde53fee5d41f3b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Martin?= Date: Thu, 2 Jul 2026 14:42:47 +0200 Subject: [PATCH 07/10] fix use VersionTools for version conv, use js for human readable --- lizmap/modules/admin/zones/project_list.zone.php | 16 ++++------------ lizmap/www/assets/js/admin/activate_datatable.js | 10 ++++++---- 2 files changed, 10 insertions(+), 16 deletions(-) diff --git a/lizmap/modules/admin/zones/project_list.zone.php b/lizmap/modules/admin/zones/project_list.zone.php index ded7850dda..881fc0b627 100644 --- a/lizmap/modules/admin/zones/project_list.zone.php +++ b/lizmap/modules/admin/zones/project_list.zone.php @@ -120,11 +120,8 @@ protected function _prepareTpl() // QGIS server $qgisServerVersion = $data['qgis_server_info']['metadata']['version']; $serverVersions['qgis_server_version'] = $qgisServerVersion; - $explode = explode('.', $qgisServerVersion); - // Keep only major and minor version - // Like 3.40 - // Fixme, to move in VersionTools - $qgisServerVersionInt = intval($explode[0].str_pad($explode[1], 2, '0', STR_PAD_LEFT)); + // Keep only major and minor version as int like 3.40.13 => 340 + $qgisServerVersionInt = VersionTools::strVersionToMajMinInt($qgisServerVersion); $serverVersions['qgis_server_version_int'] = $qgisServerVersionInt; $serverVersions['qgis_server_version_human_readable'] = VersionTools::qgisMajMinHumanVersion($qgisServerVersionInt); $serverVersions['qgis_server_version_old'] = VersionTools::qgisMajMinHumanVersion($qgisServerVersionInt - $oldQgisVersionDelta - 2); @@ -210,13 +207,8 @@ private function getProjectListItem($inspectionDirectoryPath, $projectMetadata) // Get QGIS project version $qgisVersionInt = $projectMetadata->getQgisProjectVersion(); - // Create a human readable version, but suitable for string ordering - // Ex: 3.06.02 instead of 3.6.2 - // Fixme, to move in VersionTools - $qgisVersion = substr($qgisVersionInt, 0, 1); - $qgisVersion .= '.'.ltrim(substr($qgisVersionInt, 1, 2), ''); - $qgisVersion .= '.'.ltrim(substr($qgisVersionInt, 3, 2), ''); - $projectItem['qgis_version'] = $qgisVersion; + // Create a human readable version, but suitable for string ordering (by js) + $projectItem['qgis_version'] = VersionTools::intVersionToSortableString($qgisVersionInt); // Integer version: keep only major and minor versions. Ex: 322 for 3.22.04 $projectItem['qgis_version_int'] = (int) substr($qgisVersionInt, 0, 3); diff --git a/lizmap/www/assets/js/admin/activate_datatable.js b/lizmap/www/assets/js/admin/activate_datatable.js index 02042fd4c5..5f4a8fc0dd 100644 --- a/lizmap/www/assets/js/admin/activate_datatable.js +++ b/lizmap/www/assets/js/admin/activate_datatable.js @@ -4,19 +4,21 @@ $(document).ready(function () { // Activate datatable for the project list table if ($('table.lizmap_project_list').length) { let has_inspection_data = false; + let columnDeltaForVersion = 0; if ($('table.lizmap_project_list').hasClass('has_inspection_data')) { has_inspection_data = true; + columnDeltaForVersion = 4; } // Configure the rendering of some columns var columnDefs = [ - // Change lizmap plugin version display + // Change lizmap plugin/QGIS version display, sortable value to human readable { - "targets": 5, + "targets": [4+columnDeltaForVersion,5+columnDeltaForVersion], "render": function (data, type, row, meta) { if (type == 'display') { - // 03.09.00 => 3.9 - return data.substr(0, 5).replace(/\.0/g, '.').replace(/^0/, ''); + // 03.09.00 => 3.9 (remove useless .00), 03.05.11 => 3.5.11 + return data.replace(/\.0/g, '.').replace(/^0/, '').replace(/\.0$/, ''); } return data; } From 868c2289c0666a14bb8ff8e2f7384323c0c5d5b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Martin?= Date: Mon, 6 Jul 2026 15:06:32 +0200 Subject: [PATCH 08/10] test: e2e test for repository filter --- .../playwright/admin-qgis-projects.spec.js | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/tests/end2end/playwright/admin-qgis-projects.spec.js b/tests/end2end/playwright/admin-qgis-projects.spec.js index 012a64fbb2..381128108b 100644 --- a/tests/end2end/playwright/admin-qgis-projects.spec.js +++ b/tests/end2end/playwright/admin-qgis-projects.spec.js @@ -26,4 +26,20 @@ test.describe('QGIS Projects page', () => { await expect(dndFormRow.locator(title)).toContainText('dnd_form'); await expect(dndFormRow.locator(title)).not.toContainText('🔒'); }); + + test('Filter by repository', async ({ page }) => { + const adminPage = new AdminPage(page); + await adminPage.open(); + await adminPage.openPage('QGIS projects'); + const projects = adminPage.page.locator('#lizmap_project_list'); + const allProjectCount = await projects.locator('table tbody tr').count(); + expect(allProjectCount).toBeGreaterThan(1); + // select bad respository (0 projects) + await page.locator('#repository-selector').selectOption('badrepository'); + await page.waitForURL(/repository=badrepository/); + // datatable show 1 line with class dataTables_empty + expect(projects.locator('table tbody tr')).toHaveCount(1) + expect(projects.locator('table tbody tr td')).toHaveClass('dataTables_empty'); + + }); }); From 5d82d779b7f422bef51078e4915bbb2460cda8a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Martin?= Date: Fri, 10 Jul 2026 16:24:31 +0200 Subject: [PATCH 09/10] test: add repository with inspection file --- .gitignore | 2 + tests/docker-conf/phpfpm/lizmapConfig.ini.php | 7 + .../mock_inspection/.base_layers.qgs.json | 17 + .../mock_inspection/.base_layers.qgs.log | 1 + .../mock_inspection/base_layers.qgs | 1693 +++++++++++++++++ .../mock_inspection/base_layers.qgs.cfg | 233 +++ 6 files changed, 1953 insertions(+) create mode 100644 tests/qgis-projects/mock_inspection/.base_layers.qgs.json create mode 100644 tests/qgis-projects/mock_inspection/.base_layers.qgs.log create mode 100644 tests/qgis-projects/mock_inspection/base_layers.qgs create mode 100644 tests/qgis-projects/mock_inspection/base_layers.qgs.cfg diff --git a/.gitignore b/.gitignore index 619108cac3..4c38c62eb2 100644 --- a/.gitignore +++ b/.gitignore @@ -102,6 +102,8 @@ tests/units/composer.lock tests/units/.phpunit.result.cache tests/qgis-projects/* !tests/qgis-projects/tests +!tests/qgis-projects/mock_inspection/ +!tests/qgis-projects/mock_inspection/*.log !tests/qgis-projects/webdav tests/qgis-projects/webdav/test/* !tests/qgis-projects/webdav/test/logo.png diff --git a/tests/docker-conf/phpfpm/lizmapConfig.ini.php b/tests/docker-conf/phpfpm/lizmapConfig.ini.php index 3826490ea7..3c4d6b1c3e 100644 --- a/tests/docker-conf/phpfpm/lizmapConfig.ini.php +++ b/tests/docker-conf/phpfpm/lizmapConfig.ini.php @@ -74,3 +74,10 @@ label="Repository with bad path" path="/srv/lzm/tests/qgis-projects/bad/" allowUserDefinedThemes=0 + +[repository:mockinspection] +label="Mock inspection" +path="/srv/lzm/tests/qgis-projects/mock_inspection/" +allowUserDefinedThemes=0 +accessControlAllowOrigin= +iframeEmbedAllowOrigin= diff --git a/tests/qgis-projects/mock_inspection/.base_layers.qgs.json b/tests/qgis-projects/mock_inspection/.base_layers.qgs.json new file mode 100644 index 0000000000..71fde8dafb --- /dev/null +++ b/tests/qgis-projects/mock_inspection/.base_layers.qgs.json @@ -0,0 +1,17 @@ +{ + "inspection_timestamp": 1783687903, + "has_inspection_data": true, + "loading_infos": { + "loading_time_ms": 552, + "memory_footprint": 5550 + }, + "bad_layers_count": 3, + "layers": [ + { + "valid": false, + "source" : "source", + "name" : "name" + } + ], + "qgis_log": "Lorem ipsm" +} diff --git a/tests/qgis-projects/mock_inspection/.base_layers.qgs.log b/tests/qgis-projects/mock_inspection/.base_layers.qgs.log new file mode 100644 index 0000000000..18447e10bc --- /dev/null +++ b/tests/qgis-projects/mock_inspection/.base_layers.qgs.log @@ -0,0 +1 @@ +Mock QGIS Log content diff --git a/tests/qgis-projects/mock_inspection/base_layers.qgs b/tests/qgis-projects/mock_inspection/base_layers.qgs new file mode 100644 index 0000000000..77b78d2fb6 --- /dev/null +++ b/tests/qgis-projects/mock_inspection/base_layers.qgs @@ -0,0 +1,1693 @@ + + + + + + + + + PROJCRS["WGS 84 / Pseudo-Mercator",BASEGEOGCRS["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)"],ELLIPSOID["WGS 84",6378137,298.257223563,LENGTHUNIT["metre",1]],ENSEMBLEACCURACY[2.0]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],ID["EPSG",4326]],CONVERSION["Popular Visualisation Pseudo-Mercator",METHOD["Popular Visualisation Pseudo Mercator",ID["EPSG",1024]],PARAMETER["Latitude of natural origin",0,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8801]],PARAMETER["Longitude of natural origin",0,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8802]],PARAMETER["False easting",0,LENGTHUNIT["metre",1],ID["EPSG",8806]],PARAMETER["False northing",0,LENGTHUNIT["metre",1],ID["EPSG",8807]]],CS[Cartesian,2],AXIS["easting (X)",east,ORDER[1],LENGTHUNIT["metre",1]],AXIS["northing (Y)",north,ORDER[2],LENGTHUNIT["metre",1]],USAGE[SCOPE["Web mapping and visualisation."],AREA["World between 85.06°S and 85.06°N."],BBOX[-85.06,-180,85.06,180]],ID["EPSG",3857]] + +proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defs + 3857 + 3857 + EPSG:3857 + WGS 84 / Pseudo-Mercator + merc + EPSG:7030 + false + + + + + + + 0 + 0 + + + + + false + + + + + + + + + + + + + + + + + + + + + + + + + quartiers_c253f702_37b3_42f8_8e81_8458a742ec97 + quartiers_07141d42_3703_4726_9ff0_6afeb14b6bde + OpenStreetMap_4a62d11f_ed1c_4e98_9b26_ae458d85198b + + + + + + + + + + + + Annotations_23a1f26c_1934_499d_96e5_57b4a0f9a7b8 + + + + + Annotations + + + + + 0 + 0 + + + + + false + + + + + + + + + + + + + + + + + + 0 + 0 + + + + + false + + + + + + + 1 + 1 + 1 + 0 + + + + 1 + 0 + + + + + + -20037508.34278924390673637 + -20037508.34278924763202667 + 20037508.34278924390673637 + 20037508.34278924763202667 + + + -180 + -85.05112877980660357 + 179.99999999999997158 + 85.05112877980660357 + + OpenStreetMap_4a62d11f_ed1c_4e98_9b26_ae458d85198b + crs=EPSG:3857&format&type=xyz&url=https://tile.openstreetmap.org/%7Bz%7D/%7Bx%7D/%7By%7D.png&zmax=19&zmin=0 + osm-mapnik + + + + © Contributeurs OpenStreetMap + osm-mapnik + + + PROJCRS["WGS 84 / Pseudo-Mercator",BASEGEOGCRS["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)"],ELLIPSOID["WGS 84",6378137,298.257223563,LENGTHUNIT["metre",1]],ENSEMBLEACCURACY[2.0]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],ID["EPSG",4326]],CONVERSION["Popular Visualisation Pseudo-Mercator",METHOD["Popular Visualisation Pseudo Mercator",ID["EPSG",1024]],PARAMETER["Latitude of natural origin",0,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8801]],PARAMETER["Longitude of natural origin",0,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8802]],PARAMETER["False easting",0,LENGTHUNIT["metre",1],ID["EPSG",8806]],PARAMETER["False northing",0,LENGTHUNIT["metre",1],ID["EPSG",8807]]],CS[Cartesian,2],AXIS["easting (X)",east,ORDER[1],LENGTHUNIT["metre",1]],AXIS["northing (Y)",north,ORDER[2],LENGTHUNIT["metre",1]],USAGE[SCOPE["Web mapping and visualisation."],AREA["World between 85.06°S and 85.06°N."],BBOX[-85.06,-180,85.06,180]],ID["EPSG",3857]] + +proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defs + 3857 + 3857 + EPSG:3857 + WGS 84 / Pseudo-Mercator + merc + EPSG:7030 + false + + + + Tuiles OpenStreetMap + + + dataset + Tuiles OpenStreetMap + OpenStreetMap est construit par une communauté de cartographes qui contribuent et maintiennent des données concernant les routes, chemins, cafés, gares ferroviaires, et bien plus, dans le monde entier. + + + + + + Fond de carte et données d’OpenStreetMap et de la Fondation OpenStreetMap (CC-BY-SA). © les contributeurs de https://www.openstreetmap.org. + Open Data Commons Open Database License (ODbL) + Creative Commons Attribution-ShareAlike (CC-BY-SA) + + + + PROJCRS["WGS 84 / Pseudo-Mercator",BASEGEOGCRS["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)"],ELLIPSOID["WGS 84",6378137,298.257223563,LENGTHUNIT["metre",1]],ENSEMBLEACCURACY[2.0]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],ID["EPSG",4326]],CONVERSION["Popular Visualisation Pseudo-Mercator",METHOD["Popular Visualisation Pseudo Mercator",ID["EPSG",1024]],PARAMETER["Latitude of natural origin",0,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8801]],PARAMETER["Longitude of natural origin",0,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8802]],PARAMETER["False easting",0,LENGTHUNIT["metre",1],ID["EPSG",8806]],PARAMETER["False northing",0,LENGTHUNIT["metre",1],ID["EPSG",8807]]],CS[Cartesian,2],AXIS["easting (X)",east,ORDER[1],LENGTHUNIT["metre",1]],AXIS["northing (Y)",north,ORDER[2],LENGTHUNIT["metre",1]],USAGE[SCOPE["Web mapping and visualisation."],AREA["World between 85.06°S and 85.06°N."],BBOX[-85.06,-180,85.06,180]],ID["EPSG",3857]] + +proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defs + 3857 + 3857 + EPSG:3857 + WGS 84 / Pseudo-Mercator + merc + EPSG:7030 + false + + + + + + + wms + + + + + + + + + 1 + 1 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + None + WholeRaster + Estimated + 0.02 + 0.98 + 2 + + + + + + resamplingFilter + + 0 + + + + 3.80707036695971279 + 43.56670409545019851 + 3.94133068060567293 + 43.65337122449288643 + + + 3.80707036695971279 + 43.56670409545019851 + 3.94133068060567293 + 43.65337122449288643 + + quartiers_07141d42_3703_4726_9ff0_6afeb14b6bde + service='lizmapdb' key='quartier' estimatedmetadata=true srid=4326 type=MultiPolygon checkPrimaryKeyUnicity='1' table="tests_projects"."quartiers" (geom) + quartiers_baselayer + + + + quartiers_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)"],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 + + <abstract/> + <contact> + <name/> + <organization/> + <position/> + <voice/> + <fax/> + <email/> + <role/> + </contact> + <links/> + <dates/> + <fees/> + <encoding/> + <crs> + <spatialrefsys nativeFormat="Wkt"> + <wkt>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)"],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]]</wkt> + <proj4>+proj=longlat +datum=WGS84 +no_defs</proj4> + <srsid>3452</srsid> + <srid>4326</srid> + <authid>EPSG:4326</authid> + <description>WGS 84</description> + <projectionacronym>longlat</projectionacronym> + <ellipsoidacronym>EPSG:7030</ellipsoidacronym> + <geographicflag>true</geographicflag> + </spatialrefsys> + </crs> + <extent> + <spatial minx="0" maxz="0" miny="0" minz="0" maxy="0" crs="EPSG:4326" maxx="0" dimensions="2"/> + <temporal> + <period> + <start/> + <end/> + </period> + </temporal> + </extent> + </resourceMetadata> + <provider encoding="">postgres</provider> + <vectorjoins/> + <layerDependencies/> + <dataDependencies/> + <expressionfields/> + <map-layer-style-manager current="default"> + <map-layer-style name="default"/> + </map-layer-style-manager> + <auxiliaryLayer/> + <metadataUrls/> + <flags> + <Identifiable>1</Identifiable> + <Removable>1</Removable> + <Searchable>1</Searchable> + <Private>0</Private> + </flags> + <temporal enabled="0" mode="0" endExpression="" durationUnit="min" startField="" limitMode="0" accumulate="0" startExpression="" durationField="" endField="" fixedDuration="0"> + <fixedRange> + <start/> + <end/> + </fixedRange> + </temporal> + <elevation zscale="1" showMarkerSymbolInSurfacePlots="0" clamping="Terrain" symbology="Line" extrusion="0" zoffset="0" binding="Centroid" respectLayerSymbol="1" type="IndividualFeatures" extrusionEnabled="0"> + <data-defined-properties> + <Option type="Map"> + <Option name="name" value="" type="QString"/> + <Option name="properties"/> + <Option name="type" value="collection" type="QString"/> + </Option> + </data-defined-properties> + <profileLineSymbol> + <symbol is_animated="0" frame_rate="10" name="" force_rhr="0" clip_to_extent="1" alpha="1" type="line"> + <data_defined_properties> + <Option type="Map"> + <Option name="name" value="" type="QString"/> + <Option name="properties"/> + <Option name="type" value="collection" type="QString"/> + </Option> + </data_defined_properties> + <layer pass="0" enabled="1" locked="0" id="{d471b309-ebc6-403d-af20-8cfe3f2be09a}" class="SimpleLine"> + <Option type="Map"> + <Option name="align_dash_pattern" value="0" type="QString"/> + <Option name="capstyle" value="square" type="QString"/> + <Option name="customdash" value="5;2" type="QString"/> + <Option name="customdash_map_unit_scale" value="3x:0,0,0,0,0,0" type="QString"/> + <Option name="customdash_unit" value="MM" type="QString"/> + <Option name="dash_pattern_offset" value="0" type="QString"/> + <Option name="dash_pattern_offset_map_unit_scale" value="3x:0,0,0,0,0,0" type="QString"/> + <Option name="dash_pattern_offset_unit" value="MM" type="QString"/> + <Option name="draw_inside_polygon" value="0" type="QString"/> + <Option name="joinstyle" value="bevel" type="QString"/> + <Option name="line_color" value="229,182,54,255" type="QString"/> + <Option name="line_style" value="solid" type="QString"/> + <Option name="line_width" value="0.6" type="QString"/> + <Option name="line_width_unit" value="MM" type="QString"/> + <Option name="offset" value="0" type="QString"/> + <Option name="offset_map_unit_scale" value="3x:0,0,0,0,0,0" type="QString"/> + <Option name="offset_unit" value="MM" type="QString"/> + <Option name="ring_filter" value="0" type="QString"/> + <Option name="trim_distance_end" value="0" type="QString"/> + <Option name="trim_distance_end_map_unit_scale" value="3x:0,0,0,0,0,0" type="QString"/> + <Option name="trim_distance_end_unit" value="MM" type="QString"/> + <Option name="trim_distance_start" value="0" type="QString"/> + <Option name="trim_distance_start_map_unit_scale" value="3x:0,0,0,0,0,0" type="QString"/> + <Option name="trim_distance_start_unit" value="MM" type="QString"/> + <Option name="tweak_dash_pattern_on_corners" value="0" type="QString"/> + <Option name="use_custom_dash" value="0" type="QString"/> + <Option name="width_map_unit_scale" value="3x:0,0,0,0,0,0" type="QString"/> + </Option> + <data_defined_properties> + <Option type="Map"> + <Option name="name" value="" type="QString"/> + <Option name="properties"/> + <Option name="type" value="collection" type="QString"/> + </Option> + </data_defined_properties> + </layer> + </symbol> + </profileLineSymbol> + <profileFillSymbol> + <symbol is_animated="0" frame_rate="10" name="" force_rhr="0" clip_to_extent="1" alpha="1" type="fill"> + <data_defined_properties> + <Option type="Map"> + <Option name="name" value="" type="QString"/> + <Option name="properties"/> + <Option name="type" value="collection" type="QString"/> + </Option> + </data_defined_properties> + <layer pass="0" enabled="1" locked="0" id="{630a2aa1-084c-48a4-9f32-c797391aa8d3}" class="SimpleFill"> + <Option type="Map"> + <Option name="border_width_map_unit_scale" value="3x:0,0,0,0,0,0" type="QString"/> + <Option name="color" value="229,182,54,255" type="QString"/> + <Option name="joinstyle" value="bevel" type="QString"/> + <Option name="offset" value="0,0" type="QString"/> + <Option name="offset_map_unit_scale" value="3x:0,0,0,0,0,0" type="QString"/> + <Option name="offset_unit" value="MM" type="QString"/> + <Option name="outline_color" value="164,130,39,255" type="QString"/> + <Option name="outline_style" value="solid" type="QString"/> + <Option name="outline_width" value="0.2" type="QString"/> + <Option name="outline_width_unit" value="MM" type="QString"/> + <Option name="style" value="solid" type="QString"/> + </Option> + <data_defined_properties> + <Option type="Map"> + <Option name="name" value="" type="QString"/> + <Option name="properties"/> + <Option name="type" value="collection" type="QString"/> + </Option> + </data_defined_properties> + </layer> + </symbol> + </profileFillSymbol> + <profileMarkerSymbol> + <symbol is_animated="0" frame_rate="10" name="" force_rhr="0" clip_to_extent="1" alpha="1" type="marker"> + <data_defined_properties> + <Option type="Map"> + <Option name="name" value="" type="QString"/> + <Option name="properties"/> + <Option name="type" value="collection" type="QString"/> + </Option> + </data_defined_properties> + <layer pass="0" enabled="1" locked="0" id="{640621be-4637-4144-b710-57dff79157e1}" class="SimpleMarker"> + <Option type="Map"> + <Option name="angle" value="0" type="QString"/> + <Option name="cap_style" value="square" type="QString"/> + <Option name="color" value="229,182,54,255" type="QString"/> + <Option name="horizontal_anchor_point" value="1" type="QString"/> + <Option name="joinstyle" value="bevel" type="QString"/> + <Option name="name" value="diamond" type="QString"/> + <Option name="offset" value="0,0" type="QString"/> + <Option name="offset_map_unit_scale" value="3x:0,0,0,0,0,0" type="QString"/> + <Option name="offset_unit" value="MM" type="QString"/> + <Option name="outline_color" value="164,130,39,255" type="QString"/> + <Option name="outline_style" value="solid" type="QString"/> + <Option name="outline_width" value="0.2" type="QString"/> + <Option name="outline_width_map_unit_scale" value="3x:0,0,0,0,0,0" type="QString"/> + <Option name="outline_width_unit" value="MM" type="QString"/> + <Option name="scale_method" value="diameter" type="QString"/> + <Option name="size" value="3" type="QString"/> + <Option name="size_map_unit_scale" value="3x:0,0,0,0,0,0" type="QString"/> + <Option name="size_unit" value="MM" type="QString"/> + <Option name="vertical_anchor_point" value="1" type="QString"/> + </Option> + <data_defined_properties> + <Option type="Map"> + <Option name="name" value="" type="QString"/> + <Option name="properties"/> + <Option name="type" value="collection" type="QString"/> + </Option> + </data_defined_properties> + </layer> + </symbol> + </profileMarkerSymbol> + </elevation> + <renderer-v2 enableorderby="0" forceraster="0" symbollevels="0" referencescale="-1" type="singleSymbol"> + <symbols> + <symbol is_animated="0" frame_rate="10" name="0" force_rhr="0" clip_to_extent="1" alpha="1" type="fill"> + <data_defined_properties> + <Option type="Map"> + <Option name="name" value="" type="QString"/> + <Option name="properties"/> + <Option name="type" value="collection" type="QString"/> + </Option> + </data_defined_properties> + <layer pass="0" enabled="1" locked="0" id="{262a4817-60ac-4aa2-afa6-421b4b3a5ef8}" class="SimpleFill"> + <Option type="Map"> + <Option name="border_width_map_unit_scale" value="3x:0,0,0,0,0,0" type="QString"/> + <Option name="color" value="141,90,153,255" type="QString"/> + <Option name="joinstyle" value="bevel" type="QString"/> + <Option name="offset" value="0,0" type="QString"/> + <Option name="offset_map_unit_scale" value="3x:0,0,0,0,0,0" type="QString"/> + <Option name="offset_unit" value="MM" type="QString"/> + <Option name="outline_color" value="35,35,35,255" type="QString"/> + <Option name="outline_style" value="solid" type="QString"/> + <Option name="outline_width" value="0.26" type="QString"/> + <Option name="outline_width_unit" value="MM" type="QString"/> + <Option name="style" value="solid" type="QString"/> + </Option> + <data_defined_properties> + <Option type="Map"> + <Option name="name" value="" type="QString"/> + <Option name="properties"/> + <Option name="type" value="collection" type="QString"/> + </Option> + </data_defined_properties> + </layer> + </symbol> + </symbols> + <rotation/> + <sizescale/> + </renderer-v2> + <selection mode="Default"> + <selectionColor invalid="1"/> + </selection> + <labeling type="simple"> + <settings calloutType="simple"> + <text-style allowHtml="0" fontSizeUnit="Point" useSubstitutions="0" fontUnderline="0" legendString="Aa" fontKerning="1" fontSize="20" multilineHeightUnit="Percentage" fontItalic="0" namedStyle="Regular" fontStrikeout="0" fontWordSpacing="0" capitalization="0" textOrientation="horizontal" fontFamily="Liberation Sans" fontSizeMapUnitScale="3x:0,0,0,0,0,0" isExpression="1" previewBkgrdColor="255,255,255,255" forcedBold="0" fontLetterSpacing="0" forcedItalic="0" blendMode="0" fontWeight="50" fieldName="'baselayer'" textColor="50,50,50,255" multilineHeight="1" textOpacity="1"> + <families/> + <text-buffer bufferSizeMapUnitScale="3x:0,0,0,0,0,0" bufferSizeUnits="MM" bufferSize="1" bufferOpacity="1" bufferBlendMode="0" bufferNoFill="1" bufferColor="250,250,250,255" bufferDraw="0" bufferJoinStyle="128"/> + <text-mask maskEnabled="0" maskJoinStyle="128" maskSizeMapUnitScale="3x:0,0,0,0,0,0" maskSize="1.5" maskType="0" maskedSymbolLayers="" maskSize2="1.5" maskSizeUnits="MM" maskOpacity="1"/> + <background shapeOffsetMapUnitScale="3x:0,0,0,0,0,0" shapeFillColor="255,255,255,255" shapeRadiiUnit="Point" shapeOpacity="1" shapeOffsetUnit="Point" shapeRotation="0" shapeSizeY="0" shapeRotationType="0" shapeDraw="0" shapeBorderColor="128,128,128,255" shapeOffsetX="0" shapeType="0" shapeOffsetY="0" shapeBorderWidthUnit="Point" shapeJoinStyle="64" shapeBlendMode="0" shapeBorderWidthMapUnitScale="3x:0,0,0,0,0,0" shapeSizeMapUnitScale="3x:0,0,0,0,0,0" shapeRadiiY="0" shapeRadiiMapUnitScale="3x:0,0,0,0,0,0" shapeRadiiX="0" shapeSizeUnit="Point" shapeBorderWidth="0" shapeSizeType="0" shapeSizeX="0" shapeSVGFile=""> + <symbol is_animated="0" frame_rate="10" name="markerSymbol" force_rhr="0" clip_to_extent="1" alpha="1" type="marker"> + <data_defined_properties> + <Option type="Map"> + <Option name="name" value="" type="QString"/> + <Option name="properties"/> + <Option name="type" value="collection" type="QString"/> + </Option> + </data_defined_properties> + <layer pass="0" enabled="1" locked="0" id="" class="SimpleMarker"> + <Option type="Map"> + <Option name="angle" value="0" type="QString"/> + <Option name="cap_style" value="square" type="QString"/> + <Option name="color" value="232,113,141,255" type="QString"/> + <Option name="horizontal_anchor_point" value="1" type="QString"/> + <Option name="joinstyle" value="bevel" type="QString"/> + <Option name="name" value="circle" type="QString"/> + <Option name="offset" value="0,0" type="QString"/> + <Option name="offset_map_unit_scale" value="3x:0,0,0,0,0,0" type="QString"/> + <Option name="offset_unit" value="MM" type="QString"/> + <Option name="outline_color" value="35,35,35,255" type="QString"/> + <Option name="outline_style" value="solid" type="QString"/> + <Option name="outline_width" value="0" type="QString"/> + <Option name="outline_width_map_unit_scale" value="3x:0,0,0,0,0,0" type="QString"/> + <Option name="outline_width_unit" value="MM" type="QString"/> + <Option name="scale_method" value="diameter" type="QString"/> + <Option name="size" value="2" type="QString"/> + <Option name="size_map_unit_scale" value="3x:0,0,0,0,0,0" type="QString"/> + <Option name="size_unit" value="MM" type="QString"/> + <Option name="vertical_anchor_point" value="1" type="QString"/> + </Option> + <data_defined_properties> + <Option type="Map"> + <Option name="name" value="" type="QString"/> + <Option name="properties"/> + <Option name="type" value="collection" type="QString"/> + </Option> + </data_defined_properties> + </layer> + </symbol> + <symbol is_animated="0" frame_rate="10" name="fillSymbol" force_rhr="0" clip_to_extent="1" alpha="1" type="fill"> + <data_defined_properties> + <Option type="Map"> + <Option name="name" value="" type="QString"/> + <Option name="properties"/> + <Option name="type" value="collection" type="QString"/> + </Option> + </data_defined_properties> + <layer pass="0" enabled="1" locked="0" id="" class="SimpleFill"> + <Option type="Map"> + <Option name="border_width_map_unit_scale" value="3x:0,0,0,0,0,0" type="QString"/> + <Option name="color" value="255,255,255,255" type="QString"/> + <Option name="joinstyle" value="bevel" type="QString"/> + <Option name="offset" value="0,0" type="QString"/> + <Option name="offset_map_unit_scale" value="3x:0,0,0,0,0,0" type="QString"/> + <Option name="offset_unit" value="MM" type="QString"/> + <Option name="outline_color" value="128,128,128,255" type="QString"/> + <Option name="outline_style" value="no" type="QString"/> + <Option name="outline_width" value="0" type="QString"/> + <Option name="outline_width_unit" value="Point" type="QString"/> + <Option name="style" value="solid" type="QString"/> + </Option> + <data_defined_properties> + <Option type="Map"> + <Option name="name" value="" type="QString"/> + <Option name="properties"/> + <Option name="type" value="collection" type="QString"/> + </Option> + </data_defined_properties> + </layer> + </symbol> + </background> + <shadow shadowRadiusAlphaOnly="0" shadowBlendMode="6" shadowOffsetGlobal="1" shadowScale="100" shadowOpacity="0.69999999999999996" shadowDraw="0" shadowOffsetAngle="135" shadowOffsetMapUnitScale="3x:0,0,0,0,0,0" shadowRadiusUnit="MM" shadowUnder="0" shadowColor="0,0,0,255" shadowOffsetUnit="MM" shadowRadius="1.5" shadowRadiusMapUnitScale="3x:0,0,0,0,0,0" shadowOffsetDist="1"/> + <dd_properties> + <Option type="Map"> + <Option name="name" value="" type="QString"/> + <Option name="properties"/> + <Option name="type" value="collection" type="QString"/> + </Option> + </dd_properties> + <substitutions/> + </text-style> + <text-format wrapChar="" rightDirectionSymbol=">" multilineAlign="3" useMaxLineLengthForAutoWrap="1" autoWrapLength="0" plussign="0" placeDirectionSymbol="0" reverseDirectionSymbol="0" leftDirectionSymbol="<" addDirectionSymbol="0" decimals="3" formatNumbers="0"/> + <placement predefinedPositionOrder="TR,TL,BR,BL,R,L,TSR,BSR" lineAnchorClipping="0" maxCurvedCharAngleOut="-25" distMapUnitScale="3x:0,0,0,0,0,0" layerType="PolygonGeometry" offsetUnits="MM" offsetType="0" preserveRotation="1" dist="0" geometryGeneratorEnabled="0" yOffset="0" rotationAngle="0" placement="0" lineAnchorType="0" overrunDistanceMapUnitScale="3x:0,0,0,0,0,0" placementFlags="10" overrunDistanceUnit="MM" repeatDistance="0" fitInPolygonOnly="0" maxCurvedCharAngleIn="25" distUnits="MM" allowDegraded="0" labelOffsetMapUnitScale="3x:0,0,0,0,0,0" lineAnchorTextPoint="CenterOfText" centroidInside="0" rotationUnit="AngleDegrees" centroidWhole="0" priority="5" quadOffset="4" geometryGenerator="" overlapHandling="PreventOverlap" geometryGeneratorType="PointGeometry" overrunDistance="0" xOffset="0" polygonPlacementFlags="2" repeatDistanceMapUnitScale="3x:0,0,0,0,0,0" repeatDistanceUnits="MM" lineAnchorPercent="0.5"/> + <rendering obstacleFactor="1" unplacedVisibility="0" fontLimitPixelSize="0" drawLabels="1" fontMaxPixelSize="10000" mergeLines="0" limitNumLabels="0" obstacleType="1" labelPerPart="0" obstacle="1" minFeatureSize="0" scaleMin="0" maxNumLabels="2000" upsidedownLabels="0" fontMinPixelSize="3" zIndex="0" scaleVisibility="0" scaleMax="0"/> + <dd_properties> + <Option type="Map"> + <Option name="name" value="" type="QString"/> + <Option name="properties"/> + <Option name="type" value="collection" type="QString"/> + </Option> + </dd_properties> + <callout type="simple"> + <Option type="Map"> + <Option name="anchorPoint" value="pole_of_inaccessibility" type="QString"/> + <Option name="blendMode" value="0" type="int"/> + <Option name="ddProperties" type="Map"> + <Option name="name" value="" type="QString"/> + <Option name="properties"/> + <Option name="type" value="collection" type="QString"/> + </Option> + <Option name="drawToAllParts" value="false" type="bool"/> + <Option name="enabled" value="0" type="QString"/> + <Option name="labelAnchorPoint" value="point_on_exterior" type="QString"/> + <Option name="lineSymbol" value="<symbol is_animated="0" frame_rate="10" type="line" alpha="1" force_rhr="0" name="symbol" clip_to_extent="1"><data_defined_properties><Option type="Map"><Option type="QString" name="name" value=""/><Option name="properties"/><Option type="QString" name="type" value="collection"/></Option></data_defined_properties><layer class="SimpleLine" enabled="1" id="{b4beaa89-3226-4134-83e1-23391e87d92e}" locked="0" pass="0"><Option type="Map"><Option type="QString" name="align_dash_pattern" value="0"/><Option type="QString" name="capstyle" value="square"/><Option type="QString" name="customdash" value="5;2"/><Option type="QString" name="customdash_map_unit_scale" value="3x:0,0,0,0,0,0"/><Option type="QString" name="customdash_unit" value="MM"/><Option type="QString" name="dash_pattern_offset" value="0"/><Option type="QString" name="dash_pattern_offset_map_unit_scale" value="3x:0,0,0,0,0,0"/><Option type="QString" name="dash_pattern_offset_unit" value="MM"/><Option type="QString" name="draw_inside_polygon" value="0"/><Option type="QString" name="joinstyle" value="bevel"/><Option type="QString" name="line_color" value="60,60,60,255"/><Option type="QString" name="line_style" value="solid"/><Option type="QString" name="line_width" value="0.3"/><Option type="QString" name="line_width_unit" value="MM"/><Option type="QString" name="offset" value="0"/><Option type="QString" name="offset_map_unit_scale" value="3x:0,0,0,0,0,0"/><Option type="QString" name="offset_unit" value="MM"/><Option type="QString" name="ring_filter" value="0"/><Option type="QString" name="trim_distance_end" value="0"/><Option type="QString" name="trim_distance_end_map_unit_scale" value="3x:0,0,0,0,0,0"/><Option type="QString" name="trim_distance_end_unit" value="MM"/><Option type="QString" name="trim_distance_start" value="0"/><Option type="QString" name="trim_distance_start_map_unit_scale" value="3x:0,0,0,0,0,0"/><Option type="QString" name="trim_distance_start_unit" value="MM"/><Option type="QString" name="tweak_dash_pattern_on_corners" value="0"/><Option type="QString" name="use_custom_dash" value="0"/><Option type="QString" name="width_map_unit_scale" value="3x:0,0,0,0,0,0"/></Option><data_defined_properties><Option type="Map"><Option type="QString" name="name" value=""/><Option name="properties"/><Option type="QString" name="type" value="collection"/></Option></data_defined_properties></layer></symbol>" type="QString"/> + <Option name="minLength" value="0" type="double"/> + <Option name="minLengthMapUnitScale" value="3x:0,0,0,0,0,0" type="QString"/> + <Option name="minLengthUnit" value="MM" type="QString"/> + <Option name="offsetFromAnchor" value="0" type="double"/> + <Option name="offsetFromAnchorMapUnitScale" value="3x:0,0,0,0,0,0" type="QString"/> + <Option name="offsetFromAnchorUnit" value="MM" type="QString"/> + <Option name="offsetFromLabel" value="0" type="double"/> + <Option name="offsetFromLabelMapUnitScale" value="3x:0,0,0,0,0,0" type="QString"/> + <Option name="offsetFromLabelUnit" value="MM" type="QString"/> + </Option> + </callout> + </settings> + </labeling> + <customproperties> + <Option type="Map"> + <Option name="embeddedWidgets/count" value="0" type="int"/> + <Option name="variableNames" type="invalid"/> + <Option name="variableValues" type="invalid"/> + </Option> + </customproperties> + <blendMode>0</blendMode> + <featureBlendMode>0</featureBlendMode> + <layerOpacity>1</layerOpacity> + <SingleCategoryDiagramRenderer attributeLegend="1" diagramType="Histogram"> + <DiagramCategory width="15" spacing="5" showAxis="1" penAlpha="255" backgroundAlpha="255" enabled="0" penWidth="0" rotationOffset="270" minimumSize="0" lineSizeType="MM" spacingUnitScale="3x:0,0,0,0,0,0" spacingUnit="MM" barWidth="5" backgroundColor="#ffffff" scaleDependency="Area" direction="0" sizeType="MM" diagramOrientation="Up" sizeScale="3x:0,0,0,0,0,0" height="15" maxScaleDenominator="1e+08" lineSizeScale="3x:0,0,0,0,0,0" minScaleDenominator="0" scaleBasedVisibility="0" penColor="#000000" opacity="1" labelPlacementMethod="XHeight"> + <fontProperties underline="0" italic="0" description="Ubuntu,11,-1,5,50,0,0,0,0,0" strikethrough="0" bold="0" style=""/> + <attribute label="" field="" color="#000000" colorOpacity="1"/> + <axisSymbol> + <symbol is_animated="0" frame_rate="10" name="" force_rhr="0" clip_to_extent="1" alpha="1" type="line"> + <data_defined_properties> + <Option type="Map"> + <Option name="name" value="" type="QString"/> + <Option name="properties"/> + <Option name="type" value="collection" type="QString"/> + </Option> + </data_defined_properties> + <layer pass="0" enabled="1" locked="0" id="{a0474286-d24a-4164-a4cb-1683ae123554}" class="SimpleLine"> + <Option type="Map"> + <Option name="align_dash_pattern" value="0" type="QString"/> + <Option name="capstyle" value="square" type="QString"/> + <Option name="customdash" value="5;2" type="QString"/> + <Option name="customdash_map_unit_scale" value="3x:0,0,0,0,0,0" type="QString"/> + <Option name="customdash_unit" value="MM" type="QString"/> + <Option name="dash_pattern_offset" value="0" type="QString"/> + <Option name="dash_pattern_offset_map_unit_scale" value="3x:0,0,0,0,0,0" type="QString"/> + <Option name="dash_pattern_offset_unit" value="MM" type="QString"/> + <Option name="draw_inside_polygon" value="0" type="QString"/> + <Option name="joinstyle" value="bevel" type="QString"/> + <Option name="line_color" value="35,35,35,255" type="QString"/> + <Option name="line_style" value="solid" type="QString"/> + <Option name="line_width" value="0.26" type="QString"/> + <Option name="line_width_unit" value="MM" type="QString"/> + <Option name="offset" value="0" type="QString"/> + <Option name="offset_map_unit_scale" value="3x:0,0,0,0,0,0" type="QString"/> + <Option name="offset_unit" value="MM" type="QString"/> + <Option name="ring_filter" value="0" type="QString"/> + <Option name="trim_distance_end" value="0" type="QString"/> + <Option name="trim_distance_end_map_unit_scale" value="3x:0,0,0,0,0,0" type="QString"/> + <Option name="trim_distance_end_unit" value="MM" type="QString"/> + <Option name="trim_distance_start" value="0" type="QString"/> + <Option name="trim_distance_start_map_unit_scale" value="3x:0,0,0,0,0,0" type="QString"/> + <Option name="trim_distance_start_unit" value="MM" type="QString"/> + <Option name="tweak_dash_pattern_on_corners" value="0" type="QString"/> + <Option name="use_custom_dash" value="0" type="QString"/> + <Option name="width_map_unit_scale" value="3x:0,0,0,0,0,0" type="QString"/> + </Option> + <data_defined_properties> + <Option type="Map"> + <Option name="name" value="" type="QString"/> + <Option name="properties"/> + <Option name="type" value="collection" type="QString"/> + </Option> + </data_defined_properties> + </layer> + </symbol> + </axisSymbol> + </DiagramCategory> + </SingleCategoryDiagramRenderer> + <DiagramLayerSettings obstacle="0" zIndex="0" priority="0" linePlacementFlags="18" dist="0" placement="1" showAll="1"> + <properties> + <Option type="Map"> + <Option name="name" value="" type="QString"/> + <Option name="properties"/> + <Option name="type" value="collection" type="QString"/> + </Option> + </properties> + </DiagramLayerSettings> + <geometryOptions geometryPrecision="0" removeDuplicateNodes="0"> + <activeChecks/> + <checkConfiguration type="Map"> + <Option name="QgsGeometryGapCheck" type="Map"> + <Option name="allowedGapsBuffer" value="0" type="double"/> + <Option name="allowedGapsEnabled" value="false" type="bool"/> + <Option name="allowedGapsLayer" value="" type="QString"/> + </Option> + </checkConfiguration> + </geometryOptions> + <legend type="default-vector" showLabelLegend="0"/> + <referencedLayers/> + <fieldConfiguration> + <field configurationFlags="NoFlag" name="quartier"> + <editWidget type="Range"> + <config> + <Option/> + </config> + </editWidget> + </field> + <field configurationFlags="NoFlag" name="quartmno"> + <editWidget type="TextEdit"> + <config> + <Option/> + </config> + </editWidget> + </field> + <field configurationFlags="NoFlag" name="libquart"> + <editWidget type="TextEdit"> + <config> + <Option/> + </config> + </editWidget> + </field> + <field configurationFlags="NoFlag" name="photo"> + <editWidget type="TextEdit"> + <config> + <Option/> + </config> + </editWidget> + </field> + <field configurationFlags="NoFlag" name="url"> + <editWidget type="TextEdit"> + <config> + <Option/> + </config> + </editWidget> + </field> + </fieldConfiguration> + <aliases> + <alias name="" field="quartier" index="0"/> + <alias name="" field="quartmno" index="1"/> + <alias name="" field="libquart" index="2"/> + <alias name="" field="photo" index="3"/> + <alias name="" field="url" index="4"/> + </aliases> + <splitPolicies> + <policy field="quartier" policy="Duplicate"/> + <policy field="quartmno" policy="Duplicate"/> + <policy field="libquart" policy="Duplicate"/> + <policy field="photo" policy="Duplicate"/> + <policy field="url" policy="Duplicate"/> + </splitPolicies> + <defaults> + <default expression="" field="quartier" applyOnUpdate="0"/> + <default expression="" field="quartmno" applyOnUpdate="0"/> + <default expression="" field="libquart" applyOnUpdate="0"/> + <default expression="" field="photo" applyOnUpdate="0"/> + <default expression="" field="url" applyOnUpdate="0"/> + </defaults> + <constraints> + <constraint unique_strength="1" constraints="3" field="quartier" exp_strength="0" notnull_strength="1"/> + <constraint unique_strength="0" constraints="0" field="quartmno" exp_strength="0" notnull_strength="0"/> + <constraint unique_strength="0" constraints="0" field="libquart" exp_strength="0" notnull_strength="0"/> + <constraint unique_strength="0" constraints="0" field="photo" exp_strength="0" notnull_strength="0"/> + <constraint unique_strength="0" constraints="0" field="url" exp_strength="0" notnull_strength="0"/> + </constraints> + <constraintExpressions> + <constraint desc="" exp="" field="quartier"/> + <constraint desc="" exp="" field="quartmno"/> + <constraint desc="" exp="" field="libquart"/> + <constraint desc="" exp="" field="photo"/> + <constraint desc="" exp="" field="url"/> + </constraintExpressions> + <expressionfields/> + <attributeactions> + <defaultAction value="{00000000-0000-0000-0000-000000000000}" key="Canvas"/> + </attributeactions> + <attributetableconfig sortOrder="0" actionWidgetStyle="dropDown" sortExpression=""> + <columns> + <column name="quartier" width="-1" hidden="0" type="field"/> + <column name="quartmno" width="-1" hidden="0" type="field"/> + <column name="libquart" width="-1" hidden="0" type="field"/> + <column name="photo" width="-1" hidden="0" type="field"/> + <column name="url" width="-1" hidden="0" type="field"/> + <column width="-1" hidden="1" type="actions"/> + </columns> + </attributetableconfig> + <conditionalstyles> + <rowstyles/> + <fieldstyles/> + </conditionalstyles> + <storedexpressions/> + <editform tolerant="1"/> + <editforminit/> + <editforminitcodesource>0</editforminitcodesource> + <editforminitfilepath/> + <editforminitcode><![CDATA[# -*- coding: utf-8 -*- +""" +QGIS forms can have a Python function that is called when the form is +opened. + +Use this function to add extra logic to your forms. + +Enter the name of the function in the "Python Init function" +field. +An example follows: +""" +from qgis.PyQt.QtWidgets import QWidget + +def my_form_open(dialog, layer, feature): + geom = feature.geometry() + control = dialog.findChild(QWidget, "MyLineEdit") +]]></editforminitcode> + <featformsuppress>0</featformsuppress> + <editorlayout>generatedlayout</editorlayout> + <editable> + <field name="libquart" editable="1"/> + <field name="photo" editable="1"/> + <field name="quartier" editable="1"/> + <field name="quartmno" editable="1"/> + <field name="url" editable="1"/> + </editable> + <labelOnTop> + <field name="libquart" labelOnTop="0"/> + <field name="photo" labelOnTop="0"/> + <field name="quartier" labelOnTop="0"/> + <field name="quartmno" labelOnTop="0"/> + <field name="url" labelOnTop="0"/> + </labelOnTop> + <reuseLastValue> + <field name="libquart" reuseLastValue="0"/> + <field name="photo" reuseLastValue="0"/> + <field name="quartier" reuseLastValue="0"/> + <field name="quartmno" reuseLastValue="0"/> + <field name="url" reuseLastValue="0"/> + </reuseLastValue> + <dataDefinedFieldProperties/> + <widgets/> + <previewExpression>"quartmno"</previewExpression> + <mapTip enabled="1"/> + </maplayer> + <maplayer simplifyAlgorithm="0" simplifyMaxScale="1" autoRefreshTime="0" type="vector" symbologyReferenceScale="-1" maxScale="0" labelsEnabled="0" autoRefreshMode="Disabled" legendPlaceholderImage="" minScale="100000000" refreshOnNotifyMessage="" simplifyDrawingTol="1" wkbType="MultiPolygon" hasScaleBasedVisibilityFlag="0" geometry="Polygon" simplifyLocal="0" styleCategories="AllStyleCategories" refreshOnNotifyEnabled="0" simplifyDrawingHints="1" readOnly="0"> + <extent> + <xmin>3.80707036695971279</xmin> + <ymin>43.56670409545019851</ymin> + <xmax>3.94133068060567293</xmax> + <ymax>43.65337122449288643</ymax> + </extent> + <wgs84extent> + <xmin>3.80707036695971279</xmin> + <ymin>43.56670409545019851</ymin> + <xmax>3.94133068060567293</xmax> + <ymax>43.65337122449288643</ymax> + </wgs84extent> + <id>quartiers_c253f702_37b3_42f8_8e81_8458a742ec97</id> + <datasource>service='lizmapdb' key='quartier' estimatedmetadata=true srid=4326 type=MultiPolygon checkPrimaryKeyUnicity='1' table="tests_projects"."quartiers" (geom)</datasource> + <shortname>quartiers</shortname> + <keywordList> + <value/> + </keywordList> + <layername>quartiers</layername> + <srs> + <spatialrefsys nativeFormat="Wkt"> + <wkt>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)"],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]]</wkt> + <proj4>+proj=longlat +datum=WGS84 +no_defs</proj4> + <srsid>3452</srsid> + <srid>4326</srid> + <authid>EPSG:4326</authid> + <description>WGS 84</description> + <projectionacronym>longlat</projectionacronym> + <ellipsoidacronym>EPSG:7030</ellipsoidacronym> + <geographicflag>true</geographicflag> + </spatialrefsys> + </srs> + <resourceMetadata> + <identifier/> + <parentidentifier/> + <language/> + <type>dataset</type> + <title/> + <abstract/> + <links/> + <dates/> + <fees/> + <encoding/> + <crs> + <spatialrefsys nativeFormat="Wkt"> + <wkt>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)"],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]]</wkt> + <proj4>+proj=longlat +datum=WGS84 +no_defs</proj4> + <srsid>3452</srsid> + <srid>4326</srid> + <authid>EPSG:4326</authid> + <description>WGS 84</description> + <projectionacronym>longlat</projectionacronym> + <ellipsoidacronym>EPSG:7030</ellipsoidacronym> + <geographicflag>true</geographicflag> + </spatialrefsys> + </crs> + <extent/> + </resourceMetadata> + <provider encoding="">postgres</provider> + <vectorjoins/> + <layerDependencies/> + <dataDependencies/> + <expressionfields/> + <map-layer-style-manager current="default"> + <map-layer-style name="default"/> + </map-layer-style-manager> + <auxiliaryLayer/> + <metadataUrls/> + <flags> + <Identifiable>1</Identifiable> + <Removable>1</Removable> + <Searchable>1</Searchable> + <Private>0</Private> + </flags> + <temporal enabled="0" mode="0" endExpression="" durationUnit="min" startField="" limitMode="0" accumulate="0" startExpression="" durationField="" endField="" fixedDuration="0"> + <fixedRange> + <start/> + <end/> + </fixedRange> + </temporal> + <elevation zscale="1" showMarkerSymbolInSurfacePlots="0" clamping="Terrain" symbology="Line" extrusion="0" zoffset="0" binding="Centroid" respectLayerSymbol="1" type="IndividualFeatures" extrusionEnabled="0"> + <data-defined-properties> + <Option type="Map"> + <Option name="name" value="" type="QString"/> + <Option name="properties"/> + <Option name="type" value="collection" type="QString"/> + </Option> + </data-defined-properties> + <profileLineSymbol> + <symbol is_animated="0" frame_rate="10" name="" force_rhr="0" clip_to_extent="1" alpha="1" type="line"> + <data_defined_properties> + <Option type="Map"> + <Option name="name" value="" type="QString"/> + <Option name="properties"/> + <Option name="type" value="collection" type="QString"/> + </Option> + </data_defined_properties> + <layer pass="0" enabled="1" locked="0" id="{e1ed7053-8d02-4625-b41e-6c4052b99f4d}" class="SimpleLine"> + <Option type="Map"> + <Option name="align_dash_pattern" value="0" type="QString"/> + <Option name="capstyle" value="square" type="QString"/> + <Option name="customdash" value="5;2" type="QString"/> + <Option name="customdash_map_unit_scale" value="3x:0,0,0,0,0,0" type="QString"/> + <Option name="customdash_unit" value="MM" type="QString"/> + <Option name="dash_pattern_offset" value="0" type="QString"/> + <Option name="dash_pattern_offset_map_unit_scale" value="3x:0,0,0,0,0,0" type="QString"/> + <Option name="dash_pattern_offset_unit" value="MM" type="QString"/> + <Option name="draw_inside_polygon" value="0" type="QString"/> + <Option name="joinstyle" value="bevel" type="QString"/> + <Option name="line_color" value="196,60,57,255" type="QString"/> + <Option name="line_style" value="solid" type="QString"/> + <Option name="line_width" value="0.6" type="QString"/> + <Option name="line_width_unit" value="MM" type="QString"/> + <Option name="offset" value="0" type="QString"/> + <Option name="offset_map_unit_scale" value="3x:0,0,0,0,0,0" type="QString"/> + <Option name="offset_unit" value="MM" type="QString"/> + <Option name="ring_filter" value="0" type="QString"/> + <Option name="trim_distance_end" value="0" type="QString"/> + <Option name="trim_distance_end_map_unit_scale" value="3x:0,0,0,0,0,0" type="QString"/> + <Option name="trim_distance_end_unit" value="MM" type="QString"/> + <Option name="trim_distance_start" value="0" type="QString"/> + <Option name="trim_distance_start_map_unit_scale" value="3x:0,0,0,0,0,0" type="QString"/> + <Option name="trim_distance_start_unit" value="MM" type="QString"/> + <Option name="tweak_dash_pattern_on_corners" value="0" type="QString"/> + <Option name="use_custom_dash" value="0" type="QString"/> + <Option name="width_map_unit_scale" value="3x:0,0,0,0,0,0" type="QString"/> + </Option> + <data_defined_properties> + <Option type="Map"> + <Option name="name" value="" type="QString"/> + <Option name="properties"/> + <Option name="type" value="collection" type="QString"/> + </Option> + </data_defined_properties> + </layer> + </symbol> + </profileLineSymbol> + <profileFillSymbol> + <symbol is_animated="0" frame_rate="10" name="" force_rhr="0" clip_to_extent="1" alpha="1" type="fill"> + <data_defined_properties> + <Option type="Map"> + <Option name="name" value="" type="QString"/> + <Option name="properties"/> + <Option name="type" value="collection" type="QString"/> + </Option> + </data_defined_properties> + <layer pass="0" enabled="1" locked="0" id="{2c70838e-80be-4794-b06f-f678af7232ce}" class="SimpleFill"> + <Option type="Map"> + <Option name="border_width_map_unit_scale" value="3x:0,0,0,0,0,0" type="QString"/> + <Option name="color" value="196,60,57,255" type="QString"/> + <Option name="joinstyle" value="bevel" type="QString"/> + <Option name="offset" value="0,0" type="QString"/> + <Option name="offset_map_unit_scale" value="3x:0,0,0,0,0,0" type="QString"/> + <Option name="offset_unit" value="MM" type="QString"/> + <Option name="outline_color" value="140,43,41,255" type="QString"/> + <Option name="outline_style" value="solid" type="QString"/> + <Option name="outline_width" value="0.2" type="QString"/> + <Option name="outline_width_unit" value="MM" type="QString"/> + <Option name="style" value="solid" type="QString"/> + </Option> + <data_defined_properties> + <Option type="Map"> + <Option name="name" value="" type="QString"/> + <Option name="properties"/> + <Option name="type" value="collection" type="QString"/> + </Option> + </data_defined_properties> + </layer> + </symbol> + </profileFillSymbol> + <profileMarkerSymbol> + <symbol is_animated="0" frame_rate="10" name="" force_rhr="0" clip_to_extent="1" alpha="1" type="marker"> + <data_defined_properties> + <Option type="Map"> + <Option name="name" value="" type="QString"/> + <Option name="properties"/> + <Option name="type" value="collection" type="QString"/> + </Option> + </data_defined_properties> + <layer pass="0" enabled="1" locked="0" id="{a3564aa7-dbbd-4bef-ad89-96e126d1f350}" class="SimpleMarker"> + <Option type="Map"> + <Option name="angle" value="0" type="QString"/> + <Option name="cap_style" value="square" type="QString"/> + <Option name="color" value="196,60,57,255" type="QString"/> + <Option name="horizontal_anchor_point" value="1" type="QString"/> + <Option name="joinstyle" value="bevel" type="QString"/> + <Option name="name" value="diamond" type="QString"/> + <Option name="offset" value="0,0" type="QString"/> + <Option name="offset_map_unit_scale" value="3x:0,0,0,0,0,0" type="QString"/> + <Option name="offset_unit" value="MM" type="QString"/> + <Option name="outline_color" value="140,43,41,255" type="QString"/> + <Option name="outline_style" value="solid" type="QString"/> + <Option name="outline_width" value="0.2" type="QString"/> + <Option name="outline_width_map_unit_scale" value="3x:0,0,0,0,0,0" type="QString"/> + <Option name="outline_width_unit" value="MM" type="QString"/> + <Option name="scale_method" value="diameter" type="QString"/> + <Option name="size" value="3" type="QString"/> + <Option name="size_map_unit_scale" value="3x:0,0,0,0,0,0" type="QString"/> + <Option name="size_unit" value="MM" type="QString"/> + <Option name="vertical_anchor_point" value="1" type="QString"/> + </Option> + <data_defined_properties> + <Option type="Map"> + <Option name="name" value="" type="QString"/> + <Option name="properties"/> + <Option name="type" value="collection" type="QString"/> + </Option> + </data_defined_properties> + </layer> + </symbol> + </profileMarkerSymbol> + </elevation> + <renderer-v2 enableorderby="0" forceraster="0" symbollevels="0" referencescale="-1" type="singleSymbol"> + <symbols> + <symbol is_animated="0" frame_rate="10" name="0" force_rhr="0" clip_to_extent="1" alpha="1" type="fill"> + <data_defined_properties> + <Option type="Map"> + <Option name="name" value="" type="QString"/> + <Option name="properties"/> + <Option name="type" value="collection" type="QString"/> + </Option> + </data_defined_properties> + <layer pass="0" enabled="1" locked="0" id="{96f5f6b3-5836-4806-b1dd-dcf7a231a4a7}" class="SimpleFill"> + <Option type="Map"> + <Option name="border_width_map_unit_scale" value="3x:0,0,0,0,0,0" type="QString"/> + <Option name="color" value="196,60,57,255" type="QString"/> + <Option name="joinstyle" value="bevel" type="QString"/> + <Option name="offset" value="0,0" type="QString"/> + <Option name="offset_map_unit_scale" value="3x:0,0,0,0,0,0" type="QString"/> + <Option name="offset_unit" value="MM" type="QString"/> + <Option name="outline_color" value="35,35,35,255" type="QString"/> + <Option name="outline_style" value="solid" type="QString"/> + <Option name="outline_width" value="0.26" type="QString"/> + <Option name="outline_width_unit" value="MM" type="QString"/> + <Option name="style" value="solid" type="QString"/> + </Option> + <data_defined_properties> + <Option type="Map"> + <Option name="name" value="" type="QString"/> + <Option name="properties"/> + <Option name="type" value="collection" type="QString"/> + </Option> + </data_defined_properties> + </layer> + </symbol> + </symbols> + <rotation/> + <sizescale/> + </renderer-v2> + <selection mode="Default"> + <selectionColor invalid="1"/> + </selection> + <customproperties> + <Option/> + </customproperties> + <blendMode>0</blendMode> + <featureBlendMode>0</featureBlendMode> + <layerOpacity>1</layerOpacity> + <geometryOptions geometryPrecision="0" removeDuplicateNodes="0"> + <activeChecks type="StringList"> + <Option value="" type="QString"/> + </activeChecks> + <checkConfiguration/> + </geometryOptions> + <legend type="default-vector" showLabelLegend="0"/> + <referencedLayers/> + <fieldConfiguration> + <field configurationFlags="NoFlag" name="quartier"> + <editWidget type=""> + <config> + <Option/> + </config> + </editWidget> + </field> + <field configurationFlags="NoFlag" name="quartmno"> + <editWidget type=""> + <config> + <Option/> + </config> + </editWidget> + </field> + <field configurationFlags="NoFlag" name="libquart"> + <editWidget type=""> + <config> + <Option/> + </config> + </editWidget> + </field> + <field configurationFlags="NoFlag" name="photo"> + <editWidget type=""> + <config> + <Option/> + </config> + </editWidget> + </field> + <field configurationFlags="NoFlag" name="url"> + <editWidget type=""> + <config> + <Option/> + </config> + </editWidget> + </field> + </fieldConfiguration> + <aliases> + <alias name="" field="quartier" index="0"/> + <alias name="" field="quartmno" index="1"/> + <alias name="" field="libquart" index="2"/> + <alias name="" field="photo" index="3"/> + <alias name="" field="url" index="4"/> + </aliases> + <splitPolicies> + <policy field="quartier" policy="Duplicate"/> + <policy field="quartmno" policy="Duplicate"/> + <policy field="libquart" policy="Duplicate"/> + <policy field="photo" policy="Duplicate"/> + <policy field="url" policy="Duplicate"/> + </splitPolicies> + <defaults> + <default expression="" field="quartier" applyOnUpdate="0"/> + <default expression="" field="quartmno" applyOnUpdate="0"/> + <default expression="" field="libquart" applyOnUpdate="0"/> + <default expression="" field="photo" applyOnUpdate="0"/> + <default expression="" field="url" applyOnUpdate="0"/> + </defaults> + <constraints> + <constraint unique_strength="1" constraints="3" field="quartier" exp_strength="0" notnull_strength="1"/> + <constraint unique_strength="0" constraints="0" field="quartmno" exp_strength="0" notnull_strength="0"/> + <constraint unique_strength="0" constraints="0" field="libquart" exp_strength="0" notnull_strength="0"/> + <constraint unique_strength="0" constraints="0" field="photo" exp_strength="0" notnull_strength="0"/> + <constraint unique_strength="0" constraints="0" field="url" exp_strength="0" notnull_strength="0"/> + </constraints> + <constraintExpressions> + <constraint desc="" exp="" field="quartier"/> + <constraint desc="" exp="" field="quartmno"/> + <constraint desc="" exp="" field="libquart"/> + <constraint desc="" exp="" field="photo"/> + <constraint desc="" exp="" field="url"/> + </constraintExpressions> + <expressionfields/> + <attributeactions> + <defaultAction value="{00000000-0000-0000-0000-000000000000}" key="Canvas"/> + </attributeactions> + <attributetableconfig sortOrder="0" actionWidgetStyle="dropDown" sortExpression=""> + <columns/> + </attributetableconfig> + <conditionalstyles> + <rowstyles/> + <fieldstyles/> + </conditionalstyles> + <storedexpressions/> + <editform tolerant="1"/> + <editforminit/> + <editforminitcodesource>0</editforminitcodesource> + <editforminitfilepath/> + <editforminitcode><![CDATA[]]></editforminitcode> + <featformsuppress>0</featformsuppress> + <editorlayout>generatedlayout</editorlayout> + <editable/> + <labelOnTop/> + <reuseLastValue/> + <dataDefinedFieldProperties/> + <widgets/> + <previewExpression/> + <mapTip enabled="1"/> + </maplayer> + </projectlayers> + <layerorder> + <layer id="quartiers_c253f702_37b3_42f8_8e81_8458a742ec97"/> + <layer id="quartiers_07141d42_3703_4726_9ff0_6afeb14b6bde"/> + <layer id="OpenStreetMap_4a62d11f_ed1c_4e98_9b26_ae458d85198b"/> + </layerorder> + <labelEngineSettings/> + <properties> + <DefaultStyles/> + <Digitizing> + <AvoidIntersectionsMode type="int">0</AvoidIntersectionsMode> + </Digitizing> + <Gui> + <CanvasColorBluePart type="int">255</CanvasColorBluePart> + <CanvasColorGreenPart type="int">255</CanvasColorGreenPart> + <CanvasColorRedPart type="int">255</CanvasColorRedPart> + <SelectionColorAlphaPart type="int">255</SelectionColorAlphaPart> + <SelectionColorBluePart type="int">0</SelectionColorBluePart> + <SelectionColorGreenPart type="int">255</SelectionColorGreenPart> + <SelectionColorRedPart type="int">255</SelectionColorRedPart> + </Gui> + <Legend> + <filterByMap type="bool">false</filterByMap> + </Legend> + <Macros> + <pythonCode type="QString"></pythonCode> + </Macros> + <Measure> + <Ellipsoid type="QString">WGS84</Ellipsoid> + </Measure> + <Measurement> + <AreaUnits type="QString">m2</AreaUnits> + <DistanceUnits type="QString">meters</DistanceUnits> + </Measurement> + <PAL> + <CandidatesLinePerCM type="double">5</CandidatesLinePerCM> + <CandidatesPolygonPerCM type="double">2.5</CandidatesPolygonPerCM> + <DrawLabelMetrics type="bool">false</DrawLabelMetrics> + <DrawRectOnly type="bool">false</DrawRectOnly> + <DrawUnplaced type="bool">false</DrawUnplaced> + <PlacementEngineVersion type="int">1</PlacementEngineVersion> + <SearchMethod type="int">0</SearchMethod> + <ShowingAllLabels type="bool">false</ShowingAllLabels> + <ShowingCandidates type="bool">false</ShowingCandidates> + <ShowingPartialsLabels type="bool">true</ShowingPartialsLabels> + <TextFormat type="int">0</TextFormat> + <UnplacedColor type="QString">255,0,0,255,rgb:1,0,0,1</UnplacedColor> + </PAL> + <Paths> + <Absolute type="bool">false</Absolute> + </Paths> + <PositionPrecision> + <Automatic type="bool">true</Automatic> + <DecimalPlaces type="int">2</DecimalPlaces> + <DegreeFormat type="QString">MU</DegreeFormat> + </PositionPrecision> + <SpatialRefSys> + <ProjectionsEnabled type="int">1</ProjectionsEnabled> + </SpatialRefSys> + <Variables> + <variableNames type="QStringList"> + <value>lizmap_repository</value> + <value>lizmap_user</value> + <value>lizmap_user_groups</value> + </variableNames> + <variableValues type="QStringList"> + <value>testsrepository</value> + <value></value> + <value></value> + </variableValues> + </Variables> + <WCSLayers type="QStringList"/> + <WCSUrl type="QString"></WCSUrl> + <WFSLayers type="QStringList"/> + <WFSTLayers> + <Delete type="QStringList"/> + <Insert type="QStringList"/> + <Update type="QStringList"/> + </WFSTLayers> + <WFSUrl type="QString"></WFSUrl> + <WMSAccessConstraints type="QString">None</WMSAccessConstraints> + <WMSAddWktGeometry type="bool">false</WMSAddWktGeometry> + <WMSContactMail type="QString"></WMSContactMail> + <WMSContactOrganization type="QString"></WMSContactOrganization> + <WMSContactPerson type="QString"></WMSContactPerson> + <WMSContactPhone type="QString"></WMSContactPhone> + <WMSContactPosition type="QString"></WMSContactPosition> + <WMSCrsList type="QStringList"> + <value>EPSG:3857</value> + </WMSCrsList> + <WMSDefaultMapUnitsPerMm type="double">1</WMSDefaultMapUnitsPerMm> + <WMSExtent type="QStringList"> + <value>423427.48992039589211345</value> + <value>5396856.63471086136996746</value> + <value>439120.56915665057022125</value> + <value>5413731.37831568531692028</value> + </WMSExtent> + <WMSFees type="QString">conditions unknown</WMSFees> + <WMSImageQuality type="int">90</WMSImageQuality> + <WMSKeywordList type="QStringList"> + <value></value> + </WMSKeywordList> + <WMSMaxAtlasFeatures type="int">1</WMSMaxAtlasFeatures> + <WMSOnlineResource type="QString"></WMSOnlineResource> + <WMSPrecision type="QString">8</WMSPrecision> + <WMSRootName type="QString">base_layers</WMSRootName> + <WMSSegmentizeFeatureInfoGeometry type="bool">false</WMSSegmentizeFeatureInfoGeometry> + <WMSServiceAbstract type="QString"></WMSServiceAbstract> + <WMSServiceCapabilities type="bool">true</WMSServiceCapabilities> + <WMSServiceTitle type="QString">base_layers</WMSServiceTitle> + <WMSTileBuffer type="int">0</WMSTileBuffer> + <WMSUrl type="QString"></WMSUrl> + <WMSUseLayerIDs type="bool">false</WMSUseLayerIDs> + <WMTSGrids> + <CRS type="QStringList"/> + <Config type="QStringList"/> + </WMTSGrids> + <WMTSJpegLayers> + <Group type="QStringList"/> + <Layer type="QStringList"/> + <Project type="bool">false</Project> + </WMTSJpegLayers> + <WMTSLayers> + <Group type="QStringList"/> + <Layer type="QStringList"/> + <Project type="bool">false</Project> + </WMTSLayers> + <WMTSMinScale type="int">5000</WMTSMinScale> + <WMTSPngLayers> + <Group type="QStringList"/> + <Layer type="QStringList"/> + <Project type="bool">false</Project> + </WMTSPngLayers> + <WMTSUrl type="QString"></WMTSUrl> + </properties> + <dataDefinedServerProperties> + <Option type="Map"> + <Option name="name" value="" type="QString"/> + <Option name="properties"/> + <Option name="type" value="collection" type="QString"/> + </Option> + </dataDefinedServerProperties> + <visibility-presets/> + <transformContext/> + <projectMetadata> + <identifier></identifier> + <parentidentifier></parentidentifier> + <language></language> + <type></type> + <title> + + + + + + + + + + + + + + + Ubuntu + 2021-12-03T11:41:42 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + PROJCRS["WGS 84 / Pseudo-Mercator",BASEGEOGCRS["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)"],ELLIPSOID["WGS 84",6378137,298.257223563,LENGTHUNIT["metre",1]],ENSEMBLEACCURACY[2.0]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],ID["EPSG",4326]],CONVERSION["Popular Visualisation Pseudo-Mercator",METHOD["Popular Visualisation Pseudo Mercator",ID["EPSG",1024]],PARAMETER["Latitude of natural origin",0,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8801]],PARAMETER["Longitude of natural origin",0,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8802]],PARAMETER["False easting",0,LENGTHUNIT["metre",1],ID["EPSG",8806]],PARAMETER["False northing",0,LENGTHUNIT["metre",1],ID["EPSG",8807]]],CS[Cartesian,2],AXIS["easting (X)",east,ORDER[1],LENGTHUNIT["metre",1]],AXIS["northing (Y)",north,ORDER[2],LENGTHUNIT["metre",1]],USAGE[SCOPE["Web mapping and visualisation."],AREA["World between 85.06°S and 85.06°N."],BBOX[-85.06,-180,85.06,180]],ID["EPSG",3857]] + +proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defs + 3857 + 3857 + EPSG:3857 + WGS 84 / Pseudo-Mercator + merc + EPSG:7030 + false + + + + + + + + + + + + + + + + + + + + + + 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)"],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/mock_inspection/base_layers.qgs.cfg b/tests/qgis-projects/mock_inspection/base_layers.qgs.cfg new file mode 100644 index 0000000000..cd4915f165 --- /dev/null +++ b/tests/qgis-projects/mock_inspection/base_layers.qgs.cfg @@ -0,0 +1,233 @@ +{ + "metadata": { + "qgis_desktop_version": 33415, + "lizmap_plugin_version_str": "4.4.9", + "lizmap_plugin_version": 40409, + "lizmap_web_client_target_version": 30900, + "lizmap_web_client_target_status": "Stable", + "instance_target_url": "http://localhost:8130/", + "instance_target_repository": "testsrepository" + }, + "warnings": {}, + "debug": { + "total_time": 0.34700000000000003 + }, + "options": { + "projection": { + "proj4": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defs", + "ref": "EPSG:3857" + }, + "bbox": [ + "423427.48992039589211345", + "5396856.63471086136996746", + "439120.56915665057022125", + "5413731.37831568531692028" + ], + "mapScales": [ + 100, + 500000 + ], + "minScale": 100, + "maxScale": 500000, + "use_native_zoom_levels": true, + "hide_numeric_scale_value": false, + "initialExtent": [ + 423427.4899, + 5396856.6347, + 439120.5692, + 5413731.3783 + ], + "osmMapnik": "True", + "openTopoMap": "True", + "bingKey": "AgBOKzHM1S17uF6szXY93vepXIx2Cl91mkrlP-yrsngz1jdREjrtucUduz56hDNT", + "bingStreets": "True", + "bingSatellite": "True", + "bingHybrid": "True", + "ignKey": "xncfzodr1xmo4ou5cf89qlyz", + "ignStreets": "True", + "ignSatellite": "True", + "ignTerrain": "True", + "ignCadastral": "True", + "popupLocation": "dock", + "pointTolerance": 25, + "lineTolerance": 10, + "polygonTolerance": 5, + "automatic_permalink": false, + "tmTimeFrameSize": 10, + "tmTimeFrameType": "seconds", + "tmAnimationFrameLength": 1000, + "emptyBaselayer": "True", + "startupBaselayer": "osm-mapnik", + "datavizLocation": "dock", + "theme": "light", + "fixed_scale_overview_map": true, + "dataviz_drag_drop": [] + }, + "layers": { + "quartiers": { + "id": "quartiers_c253f702_37b3_42f8_8e81_8458a742ec97", + "name": "quartiers", + "type": "layer", + "geometryType": "polygon", + "extent": [ + 3.807070366959713, + 43.5667040954502, + 3.941330680605673, + 43.653371224492886 + ], + "crs": "EPSG:4326", + "title": "quartiers", + "abstract": "", + "link": "", + "minScale": 1, + "maxScale": 1000000000000, + "toggled": "False", + "popup": "False", + "popupSource": "auto", + "popupTemplate": "", + "popupMaxFeatures": 10, + "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; mode=8bit", + "cached": "False", + "clientCacheExpiration": 300 + }, + "quartiers_baselayer": { + "id": "quartiers_07141d42_3703_4726_9ff0_6afeb14b6bde", + "name": "quartiers_baselayer", + "type": "layer", + "geometryType": "polygon", + "extent": [ + 3.807070366959713, + 43.5667040954502, + 3.941330680605673, + 43.653371224492886 + ], + "crs": "EPSG:4326", + "title": "quartiers_baselayer", + "abstract": "", + "link": "", + "minScale": 1, + "maxScale": 1000000000000, + "toggled": "False", + "popup": "False", + "popupSource": "auto", + "popupTemplate": "", + "popupMaxFeatures": 10, + "popupDisplayChildren": "False", + "popup_allow_download": true, + "legend_image_option": "hide_at_startup", + "groupAsLayer": "False", + "baseLayer": "True", + "displayInLegend": "True", + "group_visibility": [], + "singleTile": "True", + "imageFormat": "image/png", + "cached": "False", + "clientCacheExpiration": 300 + }, + "hidden": { + "id": "hidden", + "name": "hidden", + "type": "group", + "title": "hidden", + "abstract": "", + "link": "", + "minScale": 1, + "maxScale": 1000000000000, + "toggled": "True", + "popup": "False", + "popupSource": "auto", + "popupTemplate": "", + "popupMaxFeatures": 10, + "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 + }, + "osm-mapnik": { + "id": "OpenStreetMap_4a62d11f_ed1c_4e98_9b26_ae458d85198b", + "name": "osm-mapnik", + "type": "layer", + "extent": [ + -20037508.342789244, + -20037508.342789248, + 20037508.342789244, + 20037508.342789248 + ], + "crs": "EPSG:3857", + "title": "osm-mapnik", + "abstract": "", + "link": "", + "minScale": 1, + "maxScale": 1000000000000, + "toggled": "False", + "popup": "False", + "popupSource": "auto", + "popupTemplate": "", + "popupMaxFeatures": 10, + "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": {}, + "tooltipLayers": {}, + "editionLayers": {}, + "layouts": { + "config": { + "default_popup_print": false + }, + "list": [ + { + "layout": "simple", + "enabled": true, + "formats_available": [ + "pdf" + ], + "default_format": "pdf", + "dpi_available": [ + "100" + ], + "default_dpi": "100" + } + ] + }, + "loginFilteredLayers": {}, + "timemanagerLayers": {}, + "datavizLayers": {}, + "filter_by_polygon": { + "config": { + "polygon_layer_id": "quartiers_c253f702_37b3_42f8_8e81_8458a742ec97", + "group_field": "", + "filter_by_user": false + }, + "layers": [] + }, + "formFilterLayers": {} +} From 822595cfd583d911557b343d99b05046f402cdd6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Martin?= Date: Fri, 10 Jul 2026 16:26:23 +0200 Subject: [PATCH 10/10] test end2end for inscpetion file --- .../playwright/admin-qgis-projects.spec.js | 16 ++++++++++++++++ tests/end2end/playwright/requests-api.spec.js | 2 +- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/tests/end2end/playwright/admin-qgis-projects.spec.js b/tests/end2end/playwright/admin-qgis-projects.spec.js index 381128108b..4a8feecef8 100644 --- a/tests/end2end/playwright/admin-qgis-projects.spec.js +++ b/tests/end2end/playwright/admin-qgis-projects.spec.js @@ -42,4 +42,20 @@ test.describe('QGIS Projects page', () => { expect(projects.locator('table tbody tr td')).toHaveClass('dataTables_empty'); }); + + test('Check project with inspection', async ({ page }) => { + const adminPage = new AdminPage(page); + await adminPage.open(); + await adminPage.openPage('QGIS projects'); + const projects = adminPage.page.locator('#lizmap_project_list'); + const columnLocator = 'table tbody tr:first-child td'; + const projectAdminColCount = 11; + const inspectionDelta = 7; + expect(await projects.locator(columnLocator).count()).toBe(projectAdminColCount+inspectionDelta); + // select testsrepository (no inpection) + await page.locator('#repository-selector').selectOption('testsrepository'); + await page.waitForURL(/repository=testsrepository/); + expect(await projects.locator(columnLocator).count()).toBe(projectAdminColCount); + + }); }); diff --git a/tests/end2end/playwright/requests-api.spec.js b/tests/end2end/playwright/requests-api.spec.js index 6006aadfbc..7fb9b33df8 100644 --- a/tests/end2end/playwright/requests-api.spec.js +++ b/tests/end2end/playwright/requests-api.spec.js @@ -41,7 +41,7 @@ test.describe('Connected from context, as an admin', const json = await checkJson(response); // Check number of repositories - expect(json).toHaveLength(5); + expect(json).toHaveLength(6); // Check first repository has expected expect(json[0].key).toBeDefined();
+
{@admin.project.list.column.repository.label@}