Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 7 additions & 3 deletions src/common/addlayers/ServerService.js
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
}
Expand Down Expand Up @@ -232,11 +233,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';
Expand Down Expand Up @@ -424,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) {
Expand Down
2 changes: 2 additions & 0 deletions src/common/configuration/ConfigService.js
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,7 @@
fileserviceUrlTemplate: '/api/fileservice/view/{}',
fileserviceUploadUrl: '/api/fileservice/',
registryEnabled: true,
accessToken: null,
searchEnabled: true,
nominatimSearchEnabled: false,
geoquerySearchEnabled: false,
Expand Down Expand Up @@ -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;

Expand Down
2 changes: 1 addition & 1 deletion src/common/legend/LegendDirective.js
Original file line number Diff line number Diff line change
Expand Up @@ -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() {
Expand Down
103 changes: 74 additions & 29 deletions src/common/map/MapService.js
Original file line number Diff line number Diff line change
Expand Up @@ -345,7 +345,6 @@
var pan = ol.animation.pan({source: map.getView().getCenter()});
map.beforeRender(pan, zoom);
}

view.fit(extent, map.getSize());
};

Expand Down Expand Up @@ -411,19 +410,48 @@
}
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 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) {
workspace = typeNameArr[0];
}
}
var wpsPostData = '' +
'<?xml version="1.0" encoding="UTF-8"?><wps:Execute version="' + settings.WPSVersion + '" service="WPS" ' +
'xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ' +
Expand All @@ -442,7 +470,7 @@
'<wps:Reference mimeType="text/xml" xlink:href="http://geoserver/wfs" method="POST">' +
'<wps:Body>' +
'<wfs:GetFeature service="WFS" version="' + settings.WFSVersion + '" outputFormat="GML2" ' +
'xmlns:' + layer.get('metadata').workspace + '="' + layer.get('metadata').workspaceURL + '">' +
'xmlns:' + workspace + '="' + layerMetadata.workspaceURL + '">' +
'<wfs:Query typeName="' + layerTypeName + '"/>' +
'</wfs:GetFeature>' +
'</wps:Body>' +
Expand Down Expand Up @@ -471,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);
Expand Down Expand Up @@ -509,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;
};

Expand Down Expand Up @@ -1437,9 +1477,14 @@
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);
// console.log(mapCenter);
var default_view = {
center: configService_.configuration.map.center,
zoom: configService_.configuration.map.zoom
Expand All @@ -1449,14 +1494,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;
};

Expand Down
2 changes: 1 addition & 1 deletion src/common/tableview/TableViewService.js
Original file line number Diff line number Diff line change
Expand Up @@ -275,7 +275,7 @@
}

var typeName = metadata.name;
if (!typeName.startsWith(metadata.workspace + ':')) {
if (typeName.indexOf(':') === -1) {
typeName = metadata.workspace + ':' + metadata.name;
}

Expand Down
10 changes: 8 additions & 2 deletions src/common/tableview/partial/tableview.tpl.html
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@
e-style="width:160px">{{row.feature.properties[attr.name]}}</span>
<span ng-switch-when="double" editable-text="row.feature.properties[attr.name]" e-form="tableviewform"
e-style="width:160px">{{row.feature.properties[attr.name]}}</span>
<div ng-switch-when="datetime">
<!-- <div ng-switch-when="datetime">
<span ng-if="!tableviewform.$visible">{{row.feature.properties[attr.name] | date:"MM/dd/yyyy @ h:mm a"}}</span>
<datetimepicker ng-if="tableviewform.$visible" id="table-datetime" date-object="row.feature.properties[attr.name]"
default-date="false" seperate-time="false"></datetimepicker>
Expand All @@ -75,7 +75,13 @@
<span ng-if="!tableviewform.$visible">{{row.feature.properties[attr.name] | date:"h:mm a"}}</span>
<datetimepicker ng-if="tableviewform.$visible" id="table-datetime" date-object="row.feature.properties[attr.name]"
default-date="false" seperate-time="false" date="false"></datetimepicker>
</div>
</div> -->
<span ng-switch-when="date" editable-text="row.feature.properties[attr.name]" e-form="tableviewform"
e-style="width:160px">{{row.feature.properties[attr.name]}}</span>
<span ng-switch-when="datetime" editable-text="row.feature.properties[attr.name]" e-form="tableviewform"
e-style="width:160px">{{row.feature.properties[attr.name]}}</span>
<span ng-switch-when="time" editable-text="row.feature.properties[attr.name]" e-form="tableviewform"
e-style="width:160px">{{row.feature.properties[attr.name]}}</span>
<div ng-switch-when="simpleType" ng-class="{'has-error': !prop.valid}">
<select ng-model="row.feature.properties[attr.name]" ng-options="enum._value as (enum._label) ? enum._label : enum._value for enum in prop.enum" class="form-control">
<option></option>
Expand Down
14 changes: 12 additions & 2 deletions src/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -86,14 +86,24 @@
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 %},
{% 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 %},
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
Expand Down