From 211f4765d9167e6423695d90578dba96efb44c0f Mon Sep 17 00:00:00 2001 From: Pierre-Etienne Lord Date: Thu, 7 Oct 2021 16:44:17 -0400 Subject: [PATCH 1/3] feat(sharemap): keep the layer wms version on share map --- src/app/pages/portal/portal.component.ts | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/src/app/pages/portal/portal.component.ts b/src/app/pages/portal/portal.component.ts index f64ae5003..0212326f0 100644 --- a/src/app/pages/portal/portal.component.ts +++ b/src/app/pages/portal/portal.component.ts @@ -1057,6 +1057,15 @@ export class PortalComponent implements OnInit, OnDestroy { this.readLayersQueryParamsByType(params, 'tilearcgisrest'); this.readVectorQueryParams(params); } + + getQueryParam( name, url ) { + if (!url) url = location.href; + name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]"); + var regexS = "[\\?&]"+name+"=([^&#]*)"; + var regex = new RegExp( regexS ); + var results = regex.exec( url ); + return results == null ? null : results[1]; +} private readLayersQueryParamsByType(params: Params, type) { let nameParamLayersKey; @@ -1100,7 +1109,16 @@ export class PortalComponent implements OnInit, OnDestroy { const urls = params[urlsKey].split(','); let cnt = 0; - urls.forEach((url) => { + urls.forEach((urlSrc) => { + let url = urlSrc; + const version = + this.getQueryParam('VERSION', url) || + this.getQueryParam('version', url) || + undefined; + if (version) { + url = url.replace('VERSION=' + version, '').replace('version=' + version, ''); + } + const currentLayersByService = this.extractLayersByService( layersByService[cnt] ); @@ -1118,6 +1136,7 @@ export class PortalComponent implements OnInit, OnDestroy { url, layerFromUrl[0], type, + version, visibility, layerFromUrl[1] ? parseInt(layerFromUrl[1], 10) : undefined ); @@ -1178,6 +1197,7 @@ export class PortalComponent implements OnInit, OnDestroy { url: string, name: string, type: 'wms' | 'wmts' | 'arcgisrest'| 'imagearcgisrest' | 'tilearcgisrest', + version: string = undefined, visibility: boolean = true, zIndex: number ) { @@ -1199,7 +1219,7 @@ export class PortalComponent implements OnInit, OnDestroy { layer: name }; if (type === 'wms') { - sourceOptions = { params: {LAYERS: name}} as any; + sourceOptions = { params: {LAYERS: name, VERSION: version}} as any; } sourceOptions = ObjectUtils.removeUndefined(Object.assign({}, sourceOptions, commonSourceOptions)); From f034fc3962e37cbf6250fde1e74cd6f3a0e3dc90 Mon Sep 17 00:00:00 2001 From: Pierre-Etienne Lord Date: Tue, 12 Oct 2021 10:41:29 -0400 Subject: [PATCH 2/3] lint --- src/app/pages/portal/portal.component.ts | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/app/pages/portal/portal.component.ts b/src/app/pages/portal/portal.component.ts index a4d940a72..e0cd54d21 100644 --- a/src/app/pages/portal/portal.component.ts +++ b/src/app/pages/portal/portal.component.ts @@ -1114,15 +1114,15 @@ export class PortalComponent implements OnInit, OnDestroy { this.readLayersQueryParamsByType(params, 'tilearcgisrest'); this.readVectorQueryParams(params); } - - getQueryParam( name, url ) { - if (!url) url = location.href; - name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]"); - var regexS = "[\\?&]"+name+"=([^&#]*)"; - var regex = new RegExp( regexS ); - var results = regex.exec( url ); + + getQueryParam(name, url) { + if (!url) { url = location.href; } + name = name.replace(/[\[]/, '\\\[').replace(/[\]]/, '\\\]'); + const regexS = '[\\?&]' + name + '=([^&#]*)'; + const regex = new RegExp(regexS); + const results = regex.exec(url); return results == null ? null : results[1]; -} + } private readLayersQueryParamsByType(params: Params, type) { let nameParamLayersKey; @@ -1168,7 +1168,7 @@ export class PortalComponent implements OnInit, OnDestroy { let cnt = 0; urls.forEach((urlSrc) => { let url = urlSrc; - const version = + const version = this.getQueryParam('VERSION', url) || this.getQueryParam('version', url) || undefined; @@ -1254,7 +1254,7 @@ export class PortalComponent implements OnInit, OnDestroy { url: string, name: string, type: 'wms' | 'wmts' | 'arcgisrest'| 'imagearcgisrest' | 'tilearcgisrest', - version: string = undefined, + version: string, visibility: boolean = true, zIndex: number ) { From e4a94c621cda9f9a4cf22a683334c4e4d8874a70 Mon Sep 17 00:00:00 2001 From: Pierre-Etienne Lord Date: Tue, 12 Oct 2021 11:02:21 -0400 Subject: [PATCH 3/3] refactor(portal): getQueryParam rewrite for codeql alert fix --- src/app/pages/portal/portal.component.ts | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/app/pages/portal/portal.component.ts b/src/app/pages/portal/portal.component.ts index e0cd54d21..6735d38fd 100644 --- a/src/app/pages/portal/portal.component.ts +++ b/src/app/pages/portal/portal.component.ts @@ -86,7 +86,7 @@ import { mapSlideX, mapSlideY } from './portal.animation'; -import { HttpClient } from '@angular/common/http'; +import { HttpClient, HttpParams } from '@angular/common/http'; import { WelcomeWindowComponent } from './welcome-window/welcome-window.component'; import { WelcomeWindowService } from './welcome-window/welcome-window.service'; @@ -1116,12 +1116,12 @@ export class PortalComponent implements OnInit, OnDestroy { } getQueryParam(name, url) { - if (!url) { url = location.href; } - name = name.replace(/[\[]/, '\\\[').replace(/[\]]/, '\\\]'); - const regexS = '[\\?&]' + name + '=([^&#]*)'; - const regex = new RegExp(regexS); - const results = regex.exec(url); - return results == null ? null : results[1]; + let paramValue; + if (url.includes('?')) { + const httpParams = new HttpParams({ fromString: url.split('?')[1] }); + paramValue = httpParams.get(name); + } + return paramValue; } private readLayersQueryParamsByType(params: Params, type) {