From c2d48399e6d0c2116246d8fe70210387eff421d3 Mon Sep 17 00:00:00 2001 From: hisham waleed karam Date: Wed, 2 Jan 2019 14:13:49 +0200 Subject: [PATCH 01/10] fix getWfsRequestUrl --- src/common/addlayers/ServerService.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/common/addlayers/ServerService.js b/src/common/addlayers/ServerService.js index c8f7437b..8881e9c5 100644 --- a/src/common/addlayers/ServerService.js +++ b/src/common/addlayers/ServerService.js @@ -232,11 +232,13 @@ var SERVER_SERVICE_USE_PROXY = true; url = goog.isDefAndNotNull(server) ? service_.getMostSpecificUrl(server) : url; var currentDomain = locationService_.host(); if (goog.isDefAndNotNull(url)) { - if (url.indexOf(currentDomain) >= 0 && url.indexOf('geoserver') > 0) { + if (url.indexOf(currentDomain) >= 0 && url.indexOf('geoserver/') > 0) { return '/geoserver/wfs'; } else if (url.indexOf(currentDomain) > -1) { wfsurl = location.protocol + '//' + location.host + '/wfsproxy/'; return wfsurl; + } else if (url.indexOf('/ows') > -1) { + return url.replace('ows', 'wfs'); } } wfsurl = url + '/wfs/WfsDispatcher'; From 5e183c6049f69c0045887c8b0badce0e21774f4f Mon Sep 17 00:00:00 2001 From: hisham waleed karam Date: Wed, 2 Jan 2019 14:18:59 +0200 Subject: [PATCH 02/10] fix wfs query typename --- src/common/tableview/TableViewService.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/common/tableview/TableViewService.js b/src/common/tableview/TableViewService.js index df76c994..fb2019f8 100644 --- a/src/common/tableview/TableViewService.js +++ b/src/common/tableview/TableViewService.js @@ -275,7 +275,7 @@ } var typeName = metadata.name; - if (!typeName.startsWith(metadata.workspace + ':')) { + if (typeName.indexOf(':') === -1) { typeName = metadata.workspace + ':' + metadata.name; } From 3c90b7e40948642dabf3f59c37d0dfb4f7908a96 Mon Sep 17 00:00:00 2001 From: hisham waleed karam Date: Wed, 2 Jan 2019 15:32:58 +0200 Subject: [PATCH 03/10] fix legend panel --- src/common/legend/LegendDirective.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/common/legend/LegendDirective.js b/src/common/legend/LegendDirective.js index 8b21cc87..60ddff81 100644 --- a/src/common/legend/LegendDirective.js +++ b/src/common/legend/LegendDirective.js @@ -135,7 +135,7 @@ uri.setParameterValue(key, params[key]); } // kick back the URL as a formatted string. - return uri.toString(); + return uri.toString().replace('ows', 'wms'); }; scope.$on('layer-added', function() { From 3edcb03a6d706c9766623c884f045bf65986056b Mon Sep 17 00:00:00 2001 From: hisham waleed karam Date: Wed, 2 Jan 2019 15:34:54 +0200 Subject: [PATCH 04/10] fix wps payload --- src/common/map/MapService.js | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/common/map/MapService.js b/src/common/map/MapService.js index 0e6bce41..e9e2f394 100644 --- a/src/common/map/MapService.js +++ b/src/common/map/MapService.js @@ -345,7 +345,6 @@ var pan = ol.animation.pan({source: map.getView().getCenter()}); map.beforeRender(pan, zoom); } - view.fit(extent, map.getSize()); }; @@ -423,7 +422,13 @@ if (service_.layerIsEditable(layer)) { var layerTypeName = layer.get('metadata').name; var url = layer.get('metadata').url + '/wps?version=' + settings.WPSVersion; - + var workspace = layer.get('metadata').workspace; + if (layerTypeName.indexOf(':') > -1) { + var typeNameArr = layerTypeName.split(':'); + if (typeNameArr.length > 0) { + workspace = typeNameArr[0]; + } + } var wpsPostData = '' + '' + '' + '' + + 'xmlns:' + workspace + '="' + layer.get('metadata').workspaceURL + '">' + '' + '' + '' + @@ -1439,7 +1444,9 @@ projection: configService_.configuration.map.projection, maxZoom: 17 }; - + // var mapCenter = ol.proj.transform(configService_.configuration.map.center, params.projection, 'EPSG:4326'); + console.log('>>>>>', configService_.configuration); + // console.log(mapCenter); var default_view = { center: configService_.configuration.map.center, zoom: configService_.configuration.map.zoom From 7fb43b6f3d4cdde6dce9282183530881f701c692 Mon Sep 17 00:00:00 2001 From: hisham waleed karam Date: Sat, 12 Jan 2019 13:53:47 +0200 Subject: [PATCH 05/10] fix getServerByName --- src/common/addlayers/ServerService.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/common/addlayers/ServerService.js b/src/common/addlayers/ServerService.js index 8881e9c5..b8e6b29f 100644 --- a/src/common/addlayers/ServerService.js +++ b/src/common/addlayers/ServerService.js @@ -176,8 +176,9 @@ var SERVER_SERVICE_USE_PROXY = true; }); } for (var index = 0; index < servers.length; index += 1) { - if (servers[index].name.toLocaleLowerCase() === name.toLowerCase()) { - server = servers[index]; + var currentServer = servers[index]; + if (typeof currentServer.name !== 'undefined' && currentServer.name.toLocaleLowerCase() === name.toLowerCase()) { + server = currentServer; break; } } From fdf0dc5d0bc1d24fcc854f9803f8a39d0ca0dec4 Mon Sep 17 00:00:00 2001 From: hisham waleed karam Date: Sat, 12 Jan 2019 13:59:14 +0200 Subject: [PATCH 06/10] fix construction of the map --- src/common/map/MapService.js | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/src/common/map/MapService.js b/src/common/map/MapService.js index e9e2f394..2e3bfee0 100644 --- a/src/common/map/MapService.js +++ b/src/common/map/MapService.js @@ -1442,7 +1442,10 @@ this.getMapViewParams = function() { var params = { projection: configService_.configuration.map.projection, - maxZoom: 17 + maxZoom: 17, + zoom: configService_.configuration.map.zoom, + maxResolution: configService_.configuration.map.maxResolution, + extent: configService_.configuration.map.maxExtent }; // var mapCenter = ol.proj.transform(configService_.configuration.map.center, params.projection, 'EPSG:4326'); console.log('>>>>>', configService_.configuration); @@ -1456,14 +1459,14 @@ // unless the map already has one defined. var hash_view = getHashView(getRealWindow().location.hash, default_view); goog.object.extend(params, hash_view); - - if (configService_.configuration.map.projection === 'EPSG:4326') { - params['extent'] = [-180.0000, -90.0000, 180.0000, 90.0000]; - params['minZoom'] = 3; - } else { - params['extent'] = [-20026376.39, -20048966.10, 20026376.39, 20048966.10]; - params['maxResolution'] = 40075016.68557849 / 2048; - } + //NOTE: I don't why we add the following params as hard coded values + // if (configService_.configuration.map.projection === 'EPSG:4326') { + // params['extent'] = [-180.0000, -90.0000, 180.0000, 90.0000]; + // params['minZoom'] = 3; + // } else { + // params['extent'] = [-20026376.39, -20048966.10, 20026376.39, 20048966.10]; + // params['maxResolution'] = 40075016.68557849 / 2048; + // } return params; }; From 3c8c6e61bc98119979a5ac21506d60e358a9702d Mon Sep 17 00:00:00 2001 From: hisham waleed karam Date: Sat, 12 Jan 2019 14:00:19 +0200 Subject: [PATCH 07/10] fix zoomToLayerFeatures --- src/common/map/MapService.js | 71 +++++++++++++++++++++++++++--------- 1 file changed, 53 insertions(+), 18 deletions(-) diff --git a/src/common/map/MapService.js b/src/common/map/MapService.js index 2e3bfee0..c68306ed 100644 --- a/src/common/map/MapService.js +++ b/src/common/map/MapService.js @@ -410,19 +410,42 @@ } return deferredResponse.promise; }; - + this.getLayerExtentFromConfig = function(layer) { + var layerMetadata = layer.get('metadata'); + var targetExtent = null; + if (typeof layerMetadata.bbox !== 'undefined' && layerMetadata.bbox) { + try { + targetExtent = layerMetadata.bbox.extent; + var mapProjection = service_.map.getView().getProjection(); + var layerProjection = ol.proj.get(layerMetadata.bbox.crs); + if (layerProjection !== mapProjection) { + var transform = ol.proj.getTransformFromProjections(layerProjection, mapProjection); + targetExtent = ol.extent.applyTransform(targetExtent, transform); + } + } catch (err) { + console.error(err); + console.warn('Cannot layer projection info in metadata fallback to wps'); + } + } + return targetExtent; + }; this.zoomToLayerFeatures = function(layer) { var deferredResponse = q_.defer(); - if (!goog.isDefAndNotNull(layer)) { deferredResponse.resolve(); return deferredResponse.promise; } - + var layerMetadata = layer.get('metadata'); + var configExtent = service_.getLayerExtentFromConfig(layer); + if (configExtent) { + service_.zoomToExtent(configExtent); + deferredResponse.resolve(); + return deferredResponse.promise; + } if (service_.layerIsEditable(layer)) { - var layerTypeName = layer.get('metadata').name; - var url = layer.get('metadata').url + '/wps?version=' + settings.WPSVersion; - var workspace = layer.get('metadata').workspace; + var layerTypeName = layerMetadata.name; + var url = layerMetadata.url + '/wps?version=' + settings.WPSVersion; + var workspace = layerMetadata.workspace; if (layerTypeName.indexOf(':') > -1) { var typeNameArr = layerTypeName.split(':'); if (typeNameArr.length > 0) { @@ -447,7 +470,7 @@ '' + '' + '' + + 'xmlns:' + workspace + '="' + layerMetadata.workspaceURL + '">' + '' + '' + '' + @@ -476,10 +499,22 @@ JSON.parse(lower[1], 10), JSON.parse(upper[0], 10), JSON.parse(upper[1], 10)]; - var transform = ol.proj.getTransformFromProjections(ol.proj.get(layer.get('metadata').projection), - ol.proj.get(service_.map.getView().getProjection())); - var extent900913 = ol.extent.applyTransform(bounds, transform); - service_.zoomToExtent(extent900913, null, null, 0.1); + var targetExtent = bounds; + var layerProjectionCode = layerMetadata.projection; + if (layerMetadata.config && layerMetadata.config.crs) { + var configCRS = layerMetadata.config.crs; + if (configCRS.type === 'name') { + layerProjectionCode = configCRS.properties; + } + // TODO: handle config CRS type + } + var mapProjection = service_.map.getView().getProjection(); + var mapProjectionCode = mapProjection.getCode(); + if (layerProjectionCode !== mapProjectionCode) { + var transform = ol.proj.getTransformFromProjections(ol.proj.get(layerProjectionCode), ol.proj.get(mapProjectionCode)); + targetExtent = ol.extent.applyTransform(targetExtent, transform); + } + service_.zoomToExtent(targetExtent, null, null, 0.1); deferredResponse.resolve(); }).error(function(data, status, headers, config) { service_.zoomToLayerExtent(layer); @@ -514,13 +549,13 @@ newExtent[2] -= xDelta; newExtent[3] -= yDelta; } - - // Create transform and project to current map - var transform = ol.proj.getTransformFromProjections(ol.proj.get(layer_crs), - service_.map.getView().getProjection()); - - newExtent = ol.extent.applyTransform(newExtent, transform); - + var mapProjection = service_.map.getView().getProjection(); + var mapProjectionCode = mapProjection.getCode(); + if (layer_crs !== mapProjectionCode) { + // Create transform and project to current map + var transform = ol.proj.getTransformFromProjections(ol.proj.get(layer_crs), service_.map.getView().getProjection()); + newExtent = ol.extent.applyTransform(newExtent, transform); + } return newExtent; }; From b6abe45365ee5a699981c9bfa69b8a7e9da180ba Mon Sep 17 00:00:00 2001 From: hisham waleed karam Date: Sat, 12 Jan 2019 14:39:19 +0200 Subject: [PATCH 08/10] add geoserver oauth access token to config service --- src/common/addlayers/ServerService.js | 1 + src/common/configuration/ConfigService.js | 2 ++ src/index.html | 5 +++++ 3 files changed, 8 insertions(+) diff --git a/src/common/addlayers/ServerService.js b/src/common/addlayers/ServerService.js index b8e6b29f..47dbf97c 100644 --- a/src/common/addlayers/ServerService.js +++ b/src/common/addlayers/ServerService.js @@ -427,6 +427,7 @@ var SERVER_SERVICE_USE_PROXY = true; } } else { server.username = configService_.username; + server.accessToken = configService_.accessToken; server.isLocal = true; if (server.isVirtualService === true) { diff --git a/src/common/configuration/ConfigService.js b/src/common/configuration/ConfigService.js index 70ab0be6..201e50d6 100644 --- a/src/common/configuration/ConfigService.js +++ b/src/common/configuration/ConfigService.js @@ -116,6 +116,7 @@ fileserviceUrlTemplate: '/api/fileservice/view/{}', fileserviceUploadUrl: '/api/fileservice/', registryEnabled: true, + accessToken: null, searchEnabled: true, nominatimSearchEnabled: false, geoquerySearchEnabled: false, @@ -145,6 +146,7 @@ this.user_profile_name = this.configuration.userprofilename; this.user_profile_email = this.configuration.userprofileemail; this.user_name = this.configuration.username; + this.accessToken = this.configuration.accessToken; this.proxy = this.configuration.proxy; this.csrfToken = $cookies.csrftoken; diff --git a/src/index.html b/src/index.html index cb46d844..76c1d7db 100644 --- a/src/index.html +++ b/src/index.html @@ -90,6 +90,11 @@ config = { authStatus: {% if user.is_authenticated %} 200{% else %} 401{% endif %}, username: {% if user.is_authenticated %} "{{ user.username }}" {% else %} undefined {% endif %}, + {% if 'access_token' in request.session %} + accessToken : "{{request.session.access_token}}", + {% else %} + accessToken : null, + {% endif %} currentLanguage: "{{language|default:'en'}}", userprofilename: {% if user.is_authenticated %} "{{ user.get_full_name }}" {% else %} undefined {% endif %}, userprofileemail: {% if user.is_authenticated %} "{{ user.email }}" {% else %} undefined {% endif %}, From bedb0fcdcf5ae76af71d41a47dfb9d91ff562871 Mon Sep 17 00:00:00 2001 From: hisham waleed karam Date: Thu, 24 Jan 2019 15:47:07 +0200 Subject: [PATCH 09/10] fix PROXY_URL handling --- src/index.html | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/index.html b/src/index.html index 76c1d7db..8066eb47 100644 --- a/src/index.html +++ b/src/index.html @@ -86,7 +86,12 @@ var getBaseMapProxy = function(){ return "{{ PROXY_BASEMAP }}".toLowerCase() === "true"; }; - + {% if PROXY_URL %} + var proxyURL = "{{ PROXY_URL }}"; + {% else %} + var proxyURL = ''; + {% endif %} + config = { authStatus: {% if user.is_authenticated %} 200{% else %} 401{% endif %}, username: {% if user.is_authenticated %} "{{ user.username }}" {% else %} undefined {% endif %}, @@ -98,7 +103,7 @@ currentLanguage: "{{language|default:'en'}}", userprofilename: {% if user.is_authenticated %} "{{ user.get_full_name }}" {% else %} undefined {% endif %}, userprofileemail: {% if user.is_authenticated %} "{{ user.email }}" {% else %} undefined {% endif %}, - proxy: "{{ PROXY_URL }}" !== '' ? "{{ PROXY_URL }}" : "/proxy/?url=", + proxy: proxyURL !== '' ? proxyURL : "/proxy/?url=", searchUrl: getSearchUrl(), printService: trimUrl("{{GEOSERVER_BASE_URL}}pdf")+'/', /* The URL to a REST map configuration service. This service From c2a30c9ee216fadc3ef38503c41967b84ca0739f Mon Sep 17 00:00:00 2001 From: hisham waleed karam Date: Wed, 6 Feb 2019 18:17:27 +0200 Subject: [PATCH 10/10] [TEMP] disable datetime picker --- src/common/tableview/partial/tableview.tpl.html | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/common/tableview/partial/tableview.tpl.html b/src/common/tableview/partial/tableview.tpl.html index 72ee6139..ae191e57 100644 --- a/src/common/tableview/partial/tableview.tpl.html +++ b/src/common/tableview/partial/tableview.tpl.html @@ -61,7 +61,7 @@ e-style="width:160px">{{row.feature.properties[attr.name]}} {{row.feature.properties[attr.name]}} -
+ + {{row.feature.properties[attr.name]}} + {{row.feature.properties[attr.name]}} + {{row.feature.properties[attr.name]}}