Skip to content
This repository has been archived by the owner on Jul 17, 2024. It is now read-only.

Make layers config URL template configurable #261

Merged
merged 2 commits into from
Aug 17, 2013
Merged
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
63 changes: 37 additions & 26 deletions src/components/map/MapService.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,11 @@
goog.provide('ga_map_service');

goog.require('ga_translation');
goog.require('ga_urlutils_service');

var module = angular.module('ga_map_service', [
'ga_translation'
'ga_translation',
'ga_urlutils_service'
]);

module.provider('gaTileGrid', function() {
Expand Down Expand Up @@ -34,18 +36,16 @@

module.provider('gaLayers', function() {

this.$get = ['$q', '$http', '$translate', '$rootScope', 'gaTileGrid',
function($q, $http, $translate, $rootScope, gaTileGrid) {
this.$get = ['$q', '$http', '$translate', '$rootScope', 'gaUrlUtils',
'gaTileGrid',
function($q, $http, $translate, $rootScope, gaUrlUtils, gaTileGrid) {

var wmtsGetTileUrl = 'http://wmts.geo.admin.ch/1.0.0/{Layer}/default/' +
// not configurable at the moment, but could be, in the same way
// as layersConfigUrlTemplate
var wmtsGetTileUrlTemplate =
'http://wmts.geo.admin.ch/1.0.0/{Layer}/default/' +
'{Time}/21781/{TileMatrix}/{TileRow}/{TileCol}.{Format}';

var getTopicUrl = function(topicId, lang) {
return 'http://mf-chsdi30t.bgdi.admin.ch/rest/services/' +
topicId + '/MapServer/layersconfig?lang=' +
lang + '&callback=JSON_CALLBACK';
};

var attributions = {};
var getAttribution = function(text) {
var key = text;
Expand All @@ -58,24 +58,38 @@
}
};

var getMetaDataUrl = function(topicId, lang, layerId) {
return 'http://mf-chsdi30t.bgdi.admin.ch/rest/services/' +
topicId + '/MapServer/' +
layerId + '/getlegend?lang=' +
lang + '&callback=JSON_CALLBACK';
};

var Layers = function() {
var Layers = function(layersConfigUrlTemplate, legendUrlTemplate) {
var currentTopicId;
var layers;

var getWmtsGetTileUrl = function(layer, format) {
return wmtsGetTileUrlTemplate
.replace('{Layer}', layer)
.replace('{Format}', format);
};

var getLayersConfigUrl = function(topic, lang) {
var url = layersConfigUrlTemplate
.replace('{Topic}', topic)
.replace('{Lang}', lang);
return gaUrlUtils.append(url, 'callback=JSON_CALLBACK');
};

var getMetaDataUrl = function(topic, layer, lang) {
var url = legendUrlTemplate
.replace('{Topic}', topic)
.replace('{Layer}', layer)
.replace('{Lang}', lang);
return gaUrlUtils.append(url, 'callback=JSON_CALLBACK');
};

/**
* Load layers for a given topic and language. Return a promise.
*/
var loadForTopic = this.loadForTopic = function(topicId, lang) {
currentTopicId = topicId;

var url = getTopicUrl(topicId, lang);
var url = getLayersConfigUrl(topicId, lang);

var promise = $http.jsonp(url).then(function(response) {
layers = response.data.layers;
Expand All @@ -96,9 +110,6 @@
var olLayer = layer.olLayer;
if (!angular.isDefined(olLayer)) {
if (layer.type == 'wmts') {
var wmtsUrl = wmtsGetTileUrl.replace('{Layer}', id).
replace('{Format}', layer.format);

olLayer = new ol.layer.TileLayer({
id: id,
source: new ol.source.WMTS({
Expand All @@ -111,7 +122,7 @@
projection: 'EPSG:21781',
requestEncoding: 'REST',
tileGrid: gaTileGrid.get(layer.resolutions),
url: wmtsUrl
url: getWmtsGetTileUrl(id, layer.format)
})
});
layer.olLayer = olLayer;
Expand Down Expand Up @@ -152,14 +163,14 @@
* Get Metadata of given layer id
* Uses current topic and language
* Returns a promise. Use accordingly
*/
*/
this.getMetaDataOfLayer = function(id) {
var url = getMetaDataUrl(currentTopicId, $translate.uses(), id);
var url = getMetaDataUrl(currentTopicId, id, $translate.uses());
return $http.jsonp(url);
};
};

return new Layers();
return new Layers(this.layersConfigUrlTemplate, this.legendUrlTemplate);
}];

});
Expand Down
9 changes: 9 additions & 0 deletions src/index.mako.html
Original file line number Diff line number Diff line change
Expand Up @@ -373,6 +373,15 @@ <h4 class="modal-title" translate>error</h4>
module.constant('gaGlobalOptions',
{serviceUrl : '${service_url}',
baseUrlPath: '${base_url_path}'});

module.config(['gaLayersProvider', function(gaLayersProvider) {
gaLayersProvider.layersConfigUrlTemplate =
'${service_url}/rest/services/{Topic}/MapServer/layersconfig' +
'?lang={Lang}';
gaLayersProvider.legendUrlTemplate =
'${service_url}/rest/services/{Topic}/MapServer/{Layer}/getlegend' +
'?lang={Lang}';
}]);
})();
</script>

Expand Down
5 changes: 5 additions & 0 deletions test/specs/Loader.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,9 @@ beforeEach(function() {
$translateProvider.translations('en', {});
$translateProvider.useLoader(undefined);
});

module(function(gaLayersProvider) {
gaLayersProvider.layersConfigUrlTemplate =
'http://example.com/{Topic}?lang={Lang}';
});
});
3 changes: 1 addition & 2 deletions test/specs/map/MapService.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,7 @@ describe('ga_map_service', function() {

var layers, $httpBackend;

var expectedUrl = 'http://mf-chsdi30t.bgdi.admin.ch/' +
'rest/services/sometopic/MapServer/layersconfig?' +
var expectedUrl = 'http://example.com/sometopic?' +
'lang=somelang&callback=JSON_CALLBACK';

beforeEach(function() {
Expand Down