diff --git a/mapclient/controllers/api.py b/mapclient/controllers/api.py index f23b8f4..028f065 100644 --- a/mapclient/controllers/api.py +++ b/mapclient/controllers/api.py @@ -23,6 +23,7 @@ import uuid import string import time +import urllib2 from mapclient.lib.ogr2ogr import main as ogr_export from publicamundi.data.api import * @@ -569,6 +570,80 @@ def wps(self): 'details': (ex.message if config['dataapi.error.details'] else ''), 'token': None }, None) + + + def describe_layergroups(self): + """ Provides a json representation of GeoServer's Layer Group's structure + """ + layer_groups_structure = {'layergroups':{}} + + try: + layer_groups = self._get_layergroups() + except RuntimeError as ex: + return json.dumps(layer_groups_structure) + + for layer_group in layer_groups: + layer_groups_structure['layergroups'][layer_group] = [] + + try: + members = self._get_layergroup_members(layer_group.split(':')[1]) + except RuntimeError as ex: + members = [] + + for member in members: + layer_groups_structure['layergroups'][layer_group].append(member) + + return json.dumps(layer_groups_structure) + + + def _get_layergroups(self): + workspace = config['mapclient.geoserver.workspace'] + path = 'workspaces/' + workspace + '/layergroups.json' + + result = json.loads(self._make_geoserver_rest_request(path)) + layer_groups = [] + if result['layerGroups'] and result['layerGroups']['layerGroup']: + layer_groups = [workspace + ':' + x['name'] for x in result['layerGroups']['layerGroup']] + + return layer_groups + + + + def _get_layergroup_members(self, layergroup): + + workspace = config['mapclient.geoserver.workspace'] + path = 'workspaces/' + workspace + '/layergroups/' + layergroup + '.json' + + result = json.loads(self._make_geoserver_rest_request(path)) + members = [workspace + ':' + x['name'] for x in result['layerGroup']['publishables']['published']] + + return members + + + def _make_geoserver_rest_request(self, path, data=None): + url = config['mapclient.geoserver.api_url'] + 'rest/' + path + username = config['mapclient.geoserver.username'] + password = config['mapclient.geoserver.password'] + + request = urllib2.Request(url = url) + + #TODO Check POST case + if data: + request.add_data(data.encode('utf-8')) + + request.add_header('Authorization', + 'Basic ' + ((username + ':' + password).encode('base64').rstrip())) + try: + response = urllib2.urlopen(request) + except urllib2.HTTPError as ex: + try: + detail = ex.read() + except: + detail = 'n/a' + raise RuntimeError('GeoServer REST Request \'%s\' failed with ' + 'exception: \'%s\'. Details: %s' % (path, ex, detail)) + return response.read() + def _parse_query(self): if request.environ["REQUEST_METHOD"] == 'POST': diff --git a/mapclient/public/content/css/app/default.css b/mapclient/public/content/css/app/default.css index f44a51a..ebe2cb8 100644 --- a/mapclient/public/content/css/app/default.css +++ b/mapclient/public/content/css/app/default.css @@ -443,6 +443,10 @@ ul { border-bottom: solid 1px #E7E7E7; } +.layer-group { + cursor: pointer; +} + .inactive { cursor: not-allowed; } @@ -860,6 +864,14 @@ div.legend-container { width: 24px; } +div.layergroup-legend-container > table { + width: 100%; +} + +div.layergroup-legend-container td { + padding: 2px 5px 2px 5px; +} + img.legend { height: 24px; width: 24px; diff --git a/mapclient/public/content/images/app/legend.png b/mapclient/public/content/images/app/legend.png new file mode 100644 index 0000000..785bf87 Binary files /dev/null and b/mapclient/public/content/images/app/legend.png differ diff --git a/mapclient/public/content/js/app/ckan.min.js b/mapclient/public/content/js/app/ckan.min.js index f5fded7..087c629 100644 --- a/mapclient/public/content/js/app/ckan.min.js +++ b/mapclient/public/content/js/app/ckan.min.js @@ -1,4 +1,4 @@ -/* PublicaMundi Map Client version 1.0.0 2015-11-29 */ +/* PublicaMundi Map Client version 1.0.0 2016-02-18 */ define(["jquery","URIjs/URI","shared"],function(a,b,c){"use strict";c.define("Maps.CKAN"),c.Maps.CKAN.Metadata=c.Class(c.Maps.Observable,{initialize:function(a){this.values.path=null,this.values.endpoint=null,"function"==typeof c.Maps.Observable.prototype.initialize&&c.Maps.Observable.prototype.initialize.apply(this,arguments),this.values.catalog={groups:[],organizations:[],packages:[],nodes:[]},this.values.search={packages:[]},this.values.xhr=null},isPreloadingEnabled:function(){return this.values.metadata&&(this.values.metadata.path||this.values.metadata.database)?!0:!1},preload:function(){if(this.isPreloadingEnabled()){var c,d=this;return this.values.metadata.database?(c=new b,"/"===d.values.path?c.segment(["metadata","load"]):c.segment([d.values.path,"metadata","load"])):(c=new b(this.values.metadata.path),this.values.metadata.version&&c.addQuery({v:this.values.metadata.version})),new Promise(function(b,e){a.ajax({url:c.toString().replace(/\/\//g,"/").replace(/:\//g,"://"),context:d}).done(function(a){var c;for(d.values.catalog.nodes=a.nodes||[],d.values.catalog.organizations=a.organizations,d.values.catalog.groups=a.groups,d.values.catalog.packages=a.packages,c=0;c0)return b.isEmpty=!1,b.isEmpty;if(0===b.children.length)return b.isEmpty=!0,b.isEmpty;b.isEmpty=!0;for(var c=0;c-1)return!1}if(d.children.length>0)for(var g=0;g-1)return!1;return!0},loadPackages:function(){this.values.catalog.packages=[];var c=this,d=new b(this.values.endpoint);return d.segment(["api","3","action","current_package_list_with_resources"]),this.values.xhr&&4!==this.values.xhr.readyState&&(this.values.xhr.abort(),this.values.xhr=null),new Promise(function(b,e){c.values.xhr=a.ajax({url:d.toString(),context:c}).done(function(a){c.values.xhr=null;var d,e,f,g,h,i;if(a.success&&a.result){var j=a.result;for(e=0;e0&&c.values.catalog.packages.push(d)}}b(c.values.catalog.packages)}).fail(function(a,b,c){console.log("Failed to load packages from CKAN catalog : "+d.toString()),e(c)})})},getPackages:function(){return this.values.catalog.packages},search:function(c,d){this.values.search.packages=[];var e=this,f=new b(this.values.endpoint);f.segment(["api","3","action","package_search"]);var g={};return c&&(g.q=c),d&&(g.extras={ext_bbox:d.join(",")}),this.values.xhr&&4!==this.values.xhr.readyState&&(this.values.xhr.abort(),this.values.xhr=null),new Promise(function(b,h){e.values.xhr=a.ajax({url:f.toString(),context:this,type:"POST",contentType:"application/json; charset=utf-8",dataType:"json",data:JSON.stringify(g)}).done(function(a){e.values.xhr=null;var f,g,h,i,j;if(a.success&&a.result){var k=a.result.results;for(g=0;g0&&e.values.search.packages.push(f)}}b({text:c,packages:e.values.search.packages})}).fail(function(a,b,c){console.log("Failed to search CKAN catalog : "+f.toString()),h(c)})})},getFilteredPackages:function(){return this.values.search.packages},getIndexOfOrganization:function(a){for(var b=0,c=this.values.catalog.organizations.length;c>b;b++)if(this.values.catalog.organizations[b].id===a)return b;return-1},getIndexOfGroup:function(a){for(var b=0,c=this.values.catalog.groups.length;c>b;b++)if(this.values.catalog.groups[b].id===a)return b;return-1},getIndexOfPackage:function(a){for(var b=0,c=this.values.catalog.packages.length;c>b;b++)if(this.values.catalog.packages[b].id===a)return b;return-1},loadOrganizationById:function(c){var d=this,e=new b(this.values.endpoint);return e.segment(["api","3","action","organization_show"]),e.addQuery({id:c,include_datasets:!0}),new Promise(function(b,f){var g=d.getIndexOfOrganization(c);return g>=0&&d.values.catalog.organizations[g].loaded===!0?void b(d.values.catalog.organizations[g]):void a.ajax({url:e.toString(),dataType:"jsonp",context:d}).done(function(a){var c,e=null;if(a.success&&a.result){e={id:a.result.id,name:a.result.name,caption:{el:a.result.display_name,en:a.result.display_name},title:{el:a.result.title,en:a.result.title},description:{el:a.result.description,en:a.result.description},image:a.result.image_display_url,loaded:!0};var f,g,h,i,j,k=a.result.packages;for(g=0;g0&&(c=d.getIndexOfPackage(f.id),0>c&&d.values.catalog.packages.push(f))}c=d.getIndexOfOrganization(e.id),0>c?d.values.catalog.organizations.push(e):d.values.catalog.organizations[c].loaded=!0}b(e)}).fail(function(a,b,c){console.log("Failed to load CKAN organization : "+e.toString()),f(c)})})},getOrganizationById:function(a){for(var b=0;b=0&&d.values.catalog.groups[g].loaded===!0?void b(d.values.catalog.groups[g]):void a.ajax({url:e.toString(),dataType:"jsonp",context:d}).done(function(a){var c,e=null;if(a.success&&a.result){e={id:a.result.id,name:a.result.name,caption:{el:a.result.display_name,en:a.result.display_name},title:{el:a.result.title,en:a.result.title},description:{el:a.result.description,en:a.result.description},image:a.result.image_display_url,loaded:!0};var f,g,h,i,j,k=a.result.packages;for(g=0;g0&&(c=d.getIndexOfPackage(f.id),0>c&&d.values.catalog.packages.push(f))}c=d.getIndexOfGroup(e.id),0>c?d.values.catalog.groups.push(e):d.values.catalog.groups[c].loaded=!0}b(e)}).fail(function(a,b,c){console.log("Failed to load CKAN organization : "+e.toString()),f(c)})})},getGroupById:function(a){for(var b=0;b=0?void b(d.values.catalog.packages[g]):void a.ajax({url:e.toString(),dataType:"jsonp",context:d}).done(function(a){var c,e=null;if(a.success&&a.result){e={id:a.result.id,name:a.result.name,title:a.result.title,notes:a.result.notes,organization:a.result.organization.id,groups:[],resources:[],spatial:a.result.spatial};for(var f=0;f0&&d.values.catalog.packages.push(e)}b(e)}).fail(function(a,b,c){console.log("Failed to load CKAN package : "+e.toString()),f(c)})})},getPackageById:function(a){var b;if(this.values.catalog.packages)for(b=0;b'); + content.push(''); + + for (var i = 0; i < args.legend.length; i++){ + if (i % 2 === 0){ + content.push(''); + } + content.push(''); + content.push(''); + if (i % 2 === 1){ + content.push(''); + } + else if(i === args.legend.length -1){ + content.push(''); + } + } + + content.push('
'); + content.push(''); + content.push(''); + content.push(args.legend[i].title); + content.push('
'); + content.push(''); + + members.components.layerGroupLegendDialog.setContent(content.join('')); + members.components.layerGroupLegendDialog.show(); + } + }; var layerAdded = function(args) { if(args.sender != members.components.layerTreeGroup) { @@ -1088,6 +1143,8 @@ members.components.layerTreeSearch.on('layer:removed', layerRemoved); members.components.layerTreeSearch.on('catalog:info-loading', resetCatalogObjectInfo); members.components.layerTreeSearch.on('catalog:info-loaded', showCatalogObjectInfo); + + members.components.layerSelection.on('layer-group:legend-loaded', showLayerGroupLegend); // Interaction events members.components.layerTreeSearch.on('bbox:draw', function(args) { diff --git a/mapclient/public/content/js/app/client.min.js b/mapclient/public/content/js/app/client.min.js index 0db456c..636d65f 100644 --- a/mapclient/public/content/js/app/client.min.js +++ b/mapclient/public/content/js/app/client.min.js @@ -1,4 +1,4 @@ -/* PublicaMundi Map Client version 1.0.0 2015-11-29 */ +/* PublicaMundi Map Client version 1.0.0 2016-02-18 */ -define(["module","jquery","ol","URIjs/URI","data_api","shared"],function(a,b,c,d,e,f){"use strict";var g={ui:{section:"group"},config:a.config(),ckan:null,resources:null,map:{config:null,control:null,google:null},interactions:{},tools:{},actions:{},preview:null,locale:null};g.config.path=g.config.path||"/",e.Data.configure({debug:g.config.debug,endpoint:g.config.path});var h=function(){g.config.geolocation=!0,g.config.map.minZoom=g.config.map.minZoom||7,g.config.map.maxZoom=g.config.map.maxZoom||19;var a=d.parse(window.location.href).query;if(a){var b=d.parseQuery(a);b.config&&(g.map.config=b.config),b.bbox?g.config.map.bbox=b.bbox.split(",").map(Number):g.config.map.bbox=null,b.center&&(g.config.map.center=b.center.split(",").map(Number)),b.zoom&&(g.config.map.zoom=b.zoom),"off"===b.geolocation&&(g.config.geolocation=!1),b.locale&&(g.locale=b.locale),!b.config&&b["package"]&&b.resource&&(g.preview={"package":b["package"],resource:b.resource})}},i=function(){return g.config.servers.osm.length>0?new c.layer.Tile({extent:[2137334.22323,4117771.96011,3332905.55435,5150499.54408],source:new c.source.XYZ({attributions:[c.source.OSM.ATTRIBUTION],urls:g.config.servers.osm}),opacity:b("#base-layer-opacity").val()/100}):g.config.servers.mapproxy.length>0?new c.layer.Tile({extent:[2137334.22323,4117771.96011,3332905.55435,5150499.54408],source:new c.source.TileWMS({attributions:[c.source.OSM.ATTRIBUTION],url:g.config.servers.mapproxy,params:{SERVICE:"WMS",VERSION:"1.1.1",LAYERS:g.config.layers.osm}}),opacity:b("#base-layer-opacity").val()/100}):new c.layer.Tile({extent:[2137334.22323,4117771.96011,3332905.55435,5150499.54408],source:new c.source.OSM({attributions:[c.source.OSM.ATTRIBUTION]}),opacity:b("#base-layer-opacity").val()/100})},j=function(){var a,b;if(g.config.servers.tilecache.length>0){var e=new c.tilegrid.TileGrid({origin:[1948226,4024868],extent:[1948226,4024868,4008846,5208724],tileSize:512,resolutions:[156543.0339,78271.51695,39135.758475,19567.8792375,9783.93961875,4891.969809375,2445.9849046875,1222.99245234375,611.496226171875,305.7481130859375,152.87405654296876,76.43702827148438,38.21851413574219,19.109257067871095,9.554628533935547,4.777314266967774,2.388657133483887,1.1943285667419434,.5971642833709717,.29858214168548586,.14929107084274293,.07464553542137146,.03732276771068573,.018661383855342866]});return a=new c.source.TileWMS({urls:g.config.servers.tilecache,params:{VERSION:"1.1.0",LAYERS:g.config.layers.ktimatologio,TRANSPARENT:!0},projection:"EPSG:900913",attributions:[new c.Attribution({html:''})],tileGrid:e}),b=a.tileUrlFunction,a.tileUrlFunction=function(a,c,e){var f=b(a,c,e),g=d.parse(f)||{},h=g.query?d.parseQuery(g.query):{};h.SRS="EPSG:900913";var i=d.build({protocol:g.protocol?g.protocol:"http",hostname:g.hostname,port:"80"===g.port?"":g.port,path:g.path,query:d.buildQuery(h)});return i},new c.layer.Tile({extent:[2137334.22323,4117771.96011,3332905.55435,5150499.54408],source:a})}if(g.config.servers.mapproxy.length>0)return new c.layer.Tile({extent:[2137334.22323,4117771.96011,3332905.55435,5150499.54408],source:new c.source.TileWMS({projection:"EPSG:900913",attributions:[new c.Attribution({html:''})],url:g.config.servers.mapproxy,params:{SERVICE:"WMS",VERSION:"1.1.0",LAYERS:"ktimatologio"}})});var h={SERVICE:"WMS",VERSION:"1.1.0",LAYERS:"KTBASEMAP"};return a=new c.source.TileWMS({url:"http://gis.ktimanet.gr/wms/wmsopen/wmsserver.aspx",params:h,projection:"EPSG:900913",attributions:[new c.Attribution({html:''})]}),b=a.tileUrlFunction,a.tileUrlFunction=function(a,c,e){var f=b(a,c,e),g=d.parse(f)||{},h=g.query?d.parseQuery(g.query):{};h.SRS="EPSG:900913";var i=d.build({protocol:g.protocol?g.protocol:"http",hostname:g.hostname,port:"80"===g.port?"":g.port,path:g.path,query:d.buildQuery(h)});return i},new c.layer.Tile({extent:[2137334.22323,4117771.96011,3332905.55435,5150499.54408],source:a})},k=function(){var a=function(a,c,d,e,f){var h=document.createElement("canvas"),i=h.getContext("2d"),j=e[0],k=e[1];h.setAttribute("width",j),h.setAttribute("height",k);var l=g.map.control,m=l.getView().calculateExtent(l.getSize()),n=l.getPixelFromCoordinate([m[0],m[3]]),o=l.getPixelFromCoordinate([a[0],a[3]]),p=[n[0]-o[0],n[1]-o[1]],q=b("#grid-tiles")[0],r=i.createPattern(q,"repeat");i.rect(o[0],o[1],j-o[0],k-o[1]),i.fillStyle=r,i.fill();var s=[2137334.22323,4117771.96011,3332905.55435,5150499.54408],t=l.getPixelFromCoordinate([s[0],s[3]]),u=l.getPixelFromCoordinate([s[2],s[1]]);return i.clearRect((t[0]+p[0])*d,(t[1]+p[1])*d,(u[0]-t[0])*d,(u[1]-t[1])*d),h};return new c.layer.Image({source:new c.source.ImageCanvas({canvasFunction:a,projection:"EPSG:3857"})})},l=function(){var a=g.map.control.getView(),b=c.proj.transform(a.getCenter(),"EPSG:3857","EPSG:4326");g.map.google.setCenter(new google.maps.LatLng(b[1],b[0]))},m=function(){var a=g.map.control.getView();g.map.google.setZoom(a.getZoom())},n=function(a){g.map.google||(g.map.google=new google.maps.Map(document.getElementById("gmap"),{mapTypeId:google.maps.MapTypeId.SATELLITE,disableDefaultUI:!0,keyboardShortcuts:!1,draggable:!1,disableDoubleClickZoom:!0,scrollwheel:!1,streetViewControl:!1}));var c=g.map.control.getView();c.on("change:center",l),c.on("change:resolution",m);var d=b("#"+g.config.map.target);d.remove(),c.setCenter(c.getCenter()),c.setZoom(c.getZoom()),g.map.google.controls[google.maps.ControlPosition.TOP_LEFT].push(d[0]),b("#"+g.config.google.target).show(),b(".ol-attribution").addClass("ol-attribution-google"),p(!0)},o=function(){var a=b("#"+g.config.map.target);b("#"+g.config.google.target).hide(),g.map.google.controls[google.maps.ControlPosition.TOP_LEFT].pop(),b("#"+g.config.google.target).parent().append(a);var c=g.map.control.getView();c.un("change:center",l),c.un("change:resolution",m),b(".ol-attribution").removeClass("ol-attribution-google"),p(!1)},p=function(a){var b=0,d=g.map.control.getInteractions();d.forEach(function(e){e instanceof c.interaction.DragPan&&(a?d.setAt(b,new c.interaction.DragPan({kinetic:new c.Kinetic(-1,10,200)})):d.setAt(b,new c.interaction.DragPan({kinetic:new c.Kinetic(-.005,.05,100)}))),b++},this)},q=function(a,b){var d=null,e=null;switch(e=g.map.control.get("base_layer_properties"),g.map.control.set("base_layer_properties",{type:a,set:b,exists:"google"!=a}),a){case"bing":g.config.bing.key&&(d=new c.layer.Tile({extent:[2137334.22323,4117771.96011,3332905.55435,5150499.54408],source:new c.source.BingMaps({key:g.config.bing.key,imagerySet:b})}));break;case"stamen":d=new c.layer.Tile({extent:[2137334.22323,4117771.96011,3332905.55435,5150499.54408],source:new c.source.Stamen({layer:b})});break;case"mapquest":d=new c.layer.Tile({extent:[2137334.22323,4117771.96011,3332905.55435,5150499.54408],source:new c.source.MapQuest({layer:b})});break;case"ktimatologio":d=j();break;case"google":n(b);break;default:console.log("Base layer of type "+a+" is not supported.")}return e&&"google"==e.type&&o(),d},r=function(){var a=g.config.map.minZoom,b=g.config.map.maxZoom,c=g.config.map.zoom||g.config.map.minZoom;return(a>c||c>b)&&(c=a),c},s=function(){var a=new c.View({projection:f.Maps.CRS.Mercator,center:g.config.map.center||[0,0],zoom:r(),minZoom:g.config.map.minZoom,maxZoom:g.config.map.maxZoom,extent:[-20037508.3392,-20048966.1,20037508.3392,20048966.1]}),d=c.interaction.defaults();d.removeAt(d.getLength()-1),g.interactions.zoom=new c.interaction.DragZoom({condition:c.events.condition.shiftKeyOnly,style:new c.style.Style({fill:new c.style.Fill({color:[255,255,255,.4]}),stroke:new c.style.Stroke({color:"#3399CC",width:2})})}),d.push(g.interactions.zoom);var e=[];e.push(new c.control.Zoom({zoomInTipLabel:"",zoomOutTipLabel:""})),e.push(new c.control.ZoomSlider),e.push(new c.control.Attribution({tipLabel:"",collapsible:!1})),g.map.control=new c.Map({target:g.config.map.target,view:a,controls:e,interactions:d,ol3Logo:!1});var h,j=b("#base_layer option:selected");if(h=q(b(j).data("type"),b(j).data("set")),g.map.control.addLayer(h),h=i(),g.map.control.addLayer(h),h=k(),g.map.control.getLayers().insertAt(0,h),g.config.map.bbox){var l=g.map.control.getSize();a.fitExtent(g.config.map.bbox,l)}!g.map.config&&!g.preview&&navigator.geolocation&&g.config.geolocation&&navigator.geolocation.getCurrentPosition(function(b){var d=c.proj.transform([b.coords.longitude,b.coords.latitude],f.Maps.CRS.WGS84,f.Maps.CRS.Mercator);a.setCenter(d),a.setZoom(10)});var m=new c.control.MousePosition({coordinateFormat:function(a){return c.coordinate.format(a,"{x} , {y}",4)},projection:b("#pos_epsg option:selected").val(),className:"mouse-pos-text",target:b(".mouse-pos")[0]});g.map.control.addControl(m);var n=new c.control.ScaleLine({target:document.getElementById("scale-line")});g.map.control.addControl(n),b("#pos_epsg").selectpicker().change(function(){var a=c.proj.get(b("#pos_epsg option:selected").val());m.setProjection(a),g.actions.position.setProjection(a),b('[data-id="pos_epsg"]').blur()})},t=function(){b(".dialog-container").height(b(window).height()-50).width(b(window).width()-20);var a=b(window).width(),c=b(window).height(),d=b(".header").outerHeight(!0),e=b("#layer-tree-header").outerHeight(!0)+b("#layer-selection-header").outerHeight(!0),f=b("#layer-selection").outerHeight(!0),h=b(".footer").outerHeight(!0)+60;b("#layer-tree-group-result-container").height(c-e-f-h-b("#tree-filter").outerHeight(!0)),b("#layer-tree-organization-result-container").height(c-e-f-h-b("#tree-filter").outerHeight(!0)),b("#layer-tree-search-result").height(c-e-f-h-105),b("#layer-tree-search-result-container").height(c-e-f-h-105),b("#map").offset({top:d,left:0}).height(c-h+10),b(".resource-data-search").width(a-930+(b("#base-layer-label").is(":visible")?0:310)),b("#panel-left-splitter").is(":visible")&&b("#panel-left-splitter").css("left",b("#panel-left").width()),g.map.control.setSize([b("#map").width(),b("#map").height()])},u=function(a){if(b(".panel-left").hasClass("panel-left-hidden"))switch(a){case"group":b(".panel-left-label").css({bottom:f.i18n.getResource("index.topics.position")[1],right:f.i18n.getResource("index.topics.position")[0]}),b(".panel-left-label-image").attr("src","content/images/app/topics.svg"),b(".panel-left-label-text").html(f.i18n.getResource("index.topics")).css("padding","4px 0 0 7px");break;case"organization":b(".panel-left-label").css({bottom:f.i18n.getResource("index.organizations.position")[1],right:f.i18n.getResource("index.organizations.position")[0]}),b(".panel-left-label-image").attr("src","content/images/app/organization.svg"),b(".panel-left-label-text").html(f.i18n.getResource("index.organizations")).css("padding","4px 0 0 7px");break;case"search":b(".panel-left-label").css({bottom:f.i18n.getResource("index.search.position")[1],right:f.i18n.getResource("index.search.position")[0]}),b(".panel-left-label-image").attr("src","content/images/app/search.svg"),b(".panel-left-label-text").html(f.i18n.getResource("index.search")).css("padding","0px 0 0 7px")}},v=function(){g.ckan=new f.Maps.CKAN.Metadata({path:g.config.path,endpoint:g.config.ckan.endpoint,metadata:{database:g.config.ckan.metadata.database,path:g.config.ckan.metadata.path,version:g.config.ckan.metadata.version}}),g.resources=new f.Maps.ResourceManager({path:g.config.path,proxy:f.getProxyUrl(g.config.proxy),extent:g.config.map.extent,maxLayerCount:5}),g.components={},g.components.textSearch=new f.Maps.TextSearch({element:"location-search",map:g.map.control,endpoint:g.config.path,resources:g.resources}),g.components.layerTreeGroup=new f.Maps.LayerTree({element:"layer-tree-group",map:g.map.control,ckan:g.ckan,resources:g.resources,mode:f.Maps.LayerTreeViewMode.ByGroup,visible:!0}),g.components.layerTreeOrganization=new f.Maps.LayerTree({element:"layer-tree-organization",map:g.map.control,ckan:g.ckan,resources:g.resources,mode:f.Maps.LayerTreeViewMode.ByOrganization,visible:!1}),g.components.layerTreeSearch=new f.Maps.LayerTree({element:"layer-tree-search",map:g.map.control,ckan:g.ckan,resources:g.resources,mode:f.Maps.LayerTreeViewMode.ByFilter,visible:!1}),g.components.layerSelection=new f.Maps.LayerSelection({element:"layer-selection",map:g.map.control,ckan:g.ckan,resources:g.resources}),g.components.catalogInfoDialog=new f.Maps.Dialog({title:"",element:"dialog-1",visible:!1,width:400,height:200,buttons:{close:{text:"button.close",style:"primary"}}}),g.components.catalogInfoDialog.on("dialog:action",function(a){switch(a.action){case"close":this.hide()}}),g.components.tableBrowserDialog=new f.Maps.DialogTableBrowser({title:"Table Data",element:"dialog-2",visible:!1,width:800,height:400,buttons:{close:{text:"button.close",style:"primary"}}}),g.components.tableBrowserDialog.on("dialog:action",function(a){switch(a.action){case"close":this.hide()}}),g.actions.restoreZoomLevel=new f.Maps.Action({element:"restore-zoom",name:"restore-zoom",image:"content/images/app/restore-zoom-w.svg",title:"index.resotre-zoom",visible:!0}),g.actions.restoreZoomLevel.on("action:execute",function(a){g.map.control.getView().setZoom(r())}),g.config.feedback&&b(".feedback-label").click(function(){window.open(g.config.feedback[f.i18n.getLocale()])}),g.actions["export"]=new f.Maps.Action({element:"action-export",name:"export",image:"content/images/app/download-w.svg",title:"action.export.title",visible:!1}),g.actions["import"]=new f.Maps.ImportWmsTool({element:"action-wms",name:"wms",image:"content/images/app/add-layer-w.svg",title:"action.import-wms.title",map:g.map.control,resources:g.resources}),g.actions["import"].on("layer:added",function(a){g.resources.createLayer(g.map.control,a.metadata,a.id)&&g.components.layerSelection.add(a.id,a.metadata)}),g.actions.upload=new f.Maps.UploadFileTool({element:"action-upload",name:"upload",image:"content/images/app/upload-w.svg",title:"action.upload-resource.title",map:g.map.control,resources:g.resources,endpoint:g.config.path}),g.actions.link=new f.Maps.PermalinkTool({element:"action-link",name:"link",image:"content/images/app/permalink-w.svg",title:"action.create-link.title",map:g.map.control,resources:g.resources,ckan:g.ckan,endpoint:g.config.path,mode:f.Maps.PermalinkTool.Mode.Link}),g.actions.embed=new f.Maps.PermalinkTool({element:"action-embed",name:"embed",image:"content/images/app/embed-map-w.svg",title:"action.create-link-embed.title",map:g.map.control,resources:g.resources,ckan:g.ckan,endpoint:g.config.path,mode:f.Maps.PermalinkTool.Mode.Embed}),g.actions.parse=new f.Maps.CoordinateParser({element:"action-parse",name:"parse",image:"content/images/app/coordinates-w.svg",title:"action.parse-coordinates.title",map:g.map.control,resources:g.resources}),g.actions.upload.on("resource:loaded",function(a){g.resources.getResourceMetadata(a.format.toUpperCase(),{url:a.url,text:a.text,filename:a.name,title:a.title,projection:a.projection}).then(function(b){g.resources.createLayer(g.map.control,b,a.id,a.title)&&g.components.layerSelection.add(a.id,b)})}),g.actions.position=new f.Maps.PositionTool({element:"action-position",name:"position",image:"content/images/app/map-location-w.svg",title:"action.set-position.title",map:g.map.control,projection:c.proj.get(b("#pos_epsg option:selected").val())}),g.actions.clear=new f.Maps.Action({element:"action-clear",name:"clear",image:"content/images/app/clear-w.svg",title:"action.clear.title",visible:!0,enabled:!0,"class":"btn-danger"}),g.actions.clear.on("action:execute",function(a){var b;for(b in g.tools)g.tools[b].clear();for(b in g.actions)g.actions[b].clear();for(b in g.components)g.components[b].clear()}),g.tools.length=new f.Maps.MeasureTool({element:"tool-length",name:"length",images:{enabled:"content/images/app/distance-w.svg",disabled:"content/images/app/distance.svg"},title:"tool.length.title",map:g.map.control,type:f.Maps.MeasureToolType.Length}),g.tools.area=new f.Maps.MeasureTool({element:"tool-area",name:"area",images:{enabled:"content/images/app/area-w.svg",disabled:"content/images/app/area.svg"},title:"tool.area.title",map:g.map.control,type:f.Maps.MeasureToolType.Area}),g.tools["export"]=new f.Maps.ExportTool({element:"tool-export",name:"export",images:{enabled:"content/images/app/draw-polygon-w.svg",disabled:"content/images/app/draw-polygon.svg"},title:"tool.export.title",map:g.map.control,resources:g.resources,action:g.actions["export"],disabledFormats:g.config["export"].disabledFormats,endpoint:g.config.path}),g.tools.select=new f.Maps.SelectTool({name:"select",active:!0,map:g.map.control,resources:g.resources}),g.tools.select.setActive(!0);var a=function(a){b(".tools-container").height("auto");var c=a.name;if(a.active){a.sender.hasActions()?b("#tool-actions-header").show():b("#tool-actions-header").hide(),c=a.sender.getName();for(var d in g.tools)c!=g.tools[d].getName()&&g.tools[d].setActive(!1)}else b("#tool-actions-header").hide(),g.tools.select.setActive(!0);t()};g.tools.length.on("tool:toggle",a),g.tools.area.on("tool:toggle",a),g.tools["export"].on("tool:toggle",a),g.resources.on("layer:created",function(a){g.components.layerSelection.add(a.id);var b=a.id.split("_"),c=b[0];g.components.layerTreeGroup.expand(c),g.components.layerTreeOrganization.expand(c)}),b("body").on("click",".panel-left-hidden",function(a){b(".panel-left-handler").trigger("click")}),b(".panel-left-handler").click(function(a){a.preventDefault(),a.stopPropagation(),b(".panel-left").hasClass("panel-left-hidden")?(b(".panel-left-label").hide(),b(".panel-left").removeClass("panel-left-hidden"),b(".panel-left-handler").removeClass("panel-left-handler-toggle"),b(".panel-left").find(".panel-content").removeClass("panel-content-hidden"),b(".panel-left-splitter").show(),b(".panel-left").width(b(".panel-left-splitter").position().left)):(b(".panel-left-splitter").hide(),b(".panel-left-label").show(),b(".panel-left").addClass("panel-left-hidden"),b(".panel-left-handler").addClass("panel-left-handler-toggle"),b(".panel-left").find(".panel-content").addClass("panel-content-hidden"),b(".panel-left").width(30),u(g.ui.section))}),b(".tools-container").draggable({handle:".tools-header",containment:"parent"}),b(".tools-header-handler").click(function(){b(".tools-container-placholder").fadeIn(400),b(".tools-container").effect("transfer",{to:b(".tools-container-placholder")},400,function(){b(".tools-container").fadeOut(200)})}),b(".tools-container-placholder").click(function(){b(".tools-container").fadeIn(400),b(".tools-container-placholder").effect("transfer",{to:b(".tools-container")},400,function(){b(".tools-container-placholder").fadeOut(200)})}),b("#organization, #group, #search").click(function(){if(!b(this).data("selected")){var a=b(this).attr("id");b(this).data("selected",!0).removeClass("active").addClass("inactive"),b("#"+g.ui.section).data("selected",!1).removeClass("inactive").addClass("active"),b("#"+g.ui.section+"-label").addClass("section-label-hidden"),b("#"+a+"-label").removeClass("section-label-hidden"),g.ui.section=a,"organization"===a?(b("#tree-filter").show(),g.components.layerTreeGroup.hide(),g.components.layerTreeSearch.hide(),g.components.layerTreeOrganization.show()):"group"===a&&(b("#tree-filter").show(),g.components.layerTreeOrganization.hide(),g.components.layerTreeSearch.hide(),g.components.layerTreeGroup.show()),"search"===a&&(b("#tree-filter").hide(),g.components.layerTreeGroup.hide(),g.components.layerTreeOrganization.hide(),g.components.layerTreeSearch.show()),t()}});var d=function(a){a.sender!=g.components.layerTreeGroup&&g.components.layerTreeGroup.remove(a.id,!1),a.sender!=g.components.layerTreeOrganization&&g.components.layerTreeOrganization.remove(a.id,!1),a.sender!=g.components.layerTreeSearch&&g.components.layerTreeSearch.remove(a.id,!1),g.components.layerSelection.remove(a.id),t()},e=function(a){a.data&&(g.components.catalogInfoDialog.setTitle(a.data.title[f.i18n.getLocale()]),g.components.catalogInfoDialog.setContent(a.data.description[f.i18n.getLocale()]),g.components.catalogInfoDialog.show())},h=function(a){a.title&&(g.components.catalogInfoDialog.setTitle(a.title[f.i18n.getLocale()]),g.components.catalogInfoDialog.setContent('
'),g.components.catalogInfoDialog.show())},i=function(a){a.sender!=g.components.layerTreeGroup&&g.components.layerTreeGroup.add(a.id,!1),a.sender!=g.components.layerTreeOrganization&&g.components.layerTreeOrganization.add(a.id,!1),a.sender!=g.components.layerTreeSearch&&g.components.layerTreeSearch.add(a.id,!1)};g.components.layerTreeGroup.on("layer:added",i),g.components.layerTreeGroup.on("layer:removed",d),g.components.layerTreeGroup.on("catalog:info-loading",h),g.components.layerTreeGroup.on("catalog:info-loaded",e),g.components.layerTreeOrganization.on("layer:added",i),g.components.layerTreeOrganization.on("layer:removed",d),g.components.layerTreeOrganization.on("catalog:info-loading",h),g.components.layerTreeOrganization.on("catalog:info-loaded",e),g.components.layerTreeSearch.on("layer:added",i),g.components.layerTreeSearch.on("layer:removed",d),g.components.layerTreeSearch.on("catalog:info-loading",h),g.components.layerTreeSearch.on("catalog:info-loaded",e),g.components.layerTreeSearch.on("bbox:draw",function(a){A(),C()}),g.components.layerTreeSearch.on("bbox:apply",function(a){C("zoom"),B("select")}),g.components.layerTreeSearch.on("bbox:cancel",function(a){C("zoom"),B("select")});var j=function(a){t()},k=function(a){g.components.layerTreeGroup.remove(a.id),g.components.layerTreeOrganization.remove(a.id),g.components.layerTreeSearch.remove(a.id),t()};g.components.layerSelection.on("layer:added",j),g.components.layerSelection.on("layer:removed",k),b("#locale_selection").val(f.i18n.getLocale()),b("#locale_selection").selectpicker().change(function(){f.i18n.setLocale(b("#locale_selection option:selected").val()),b('[data-id="locale_selection"]').blur();var a=b("#tree-filter-text").val();g.components.layerTreeGroup.setFilter(a),g.components.layerTreeOrganization.setFilter(a),b(".selectpicker, .img-text").tooltip(),b(".selectpicker").tooltip("disable")}),b("#tree-filter-text").keyup(function(){var a=b(this).val();g.components.layerTreeGroup.setFilter(a),g.components.layerTreeOrganization.setFilter(a)}),b("#tree-filter-remove").click(function(){b("#tree-filter-text").val(""),g.components.layerTreeGroup.setFilter(null),g.components.layerTreeOrganization.setFilter(null),b(this).blur()}),b("#panel-left-splitter").draggable({axis:"x",opacity:.5,handle:".panel-left-splitter-handler",start:function(a,c){b(this).addClass("panel-left-splitter-dragging")},stop:function(a,c){b("#panel-left").width(c.position.left),b(this).removeClass("panel-left-splitter-dragging")},drag:function(a,b){b.position.left=Math.max(280,b.position.left),b.position.left=Math.min(550,b.position.left)}}),b(".panel-left-splitter-handler").dblclick(function(a){}),b(".selectpicker, .img-text").tooltip(),b(".selectpicker").tooltip("disable"),b(window).resize(t)},w=function(){},x=function(){z()},y=function(a,c,d){d=0===d?d:d||100;var e=g.map.control.get("base_layer_properties"),f=e.exists?g.map.control.getLayers().item(1):null,h=g.map.control.getLayers().item(e.exists?2:1);h.setOpacity(d/100);var i=q(a,c);i&&g.map.control.getLayers().insertAt(e.exists?2:1,i),f&&setTimeout(function(){g.map.control.getLayers().remove(f)},500),b("#base-layer-opacity").val(d),b("#base_layer").val(a+"-"+c).selectpicker("refresh"),b(".selectpicker").tooltip().tooltip("disable")},z=function(){b("#base_layer").selectpicker().change(function(a){var c=b("#base_layer option:selected"),d=b("#base-layer-opacity").val();y(b(c).data("type"),b(c).data("set"),d),b('[data-id="base_layer"]').blur()}),b("#base-layer-opacity").change(function(){var a=g.map.control.get("base_layer_properties");g.map.control.getLayers().item(a.exists?2:1).setOpacity(b(this).val()/100)})},A=function(){for(var a in g.tools)g.tools[a]&&g.tools[a].setEnabled(!1)},B=function(a){for(var b in g.tools)g.tools[b]&&g.tools[b].setEnabled(!0);a&&g.tools.hasOwnProperty(a)&&g.tools[a].setActive(!0)},C=function(a){for(var b in g.interactions)g.interactions[b].setActive(!1);a&&D(a)},D=function(a){a&&g.interactions.hasOwnProperty(a)&&g.interactions[a].setActive(!0)},E=function(){return new Promise(function(a,c){var e=new d;"/"===g.config.path?e.segment(["config","load",g.map.config]):e.segment([g.config.path,"config","load",g.map.config]),b.ajax({url:e.toString().replace(/\/\//g,"/").replace(/:\//g,"://"),context:this,dataType:"json"}).done(function(b){if(b.success){var c=b.config;y(c.base.type,c.base.set,c.base.opacity);var d=0,e=function(){if(d0?new c.layer.Tile({extent:[2137334.22323,4117771.96011,3332905.55435,5150499.54408],source:new c.source.XYZ({attributions:[c.source.OSM.ATTRIBUTION],urls:g.config.servers.osm}),opacity:b("#base-layer-opacity").val()/100}):g.config.servers.mapproxy.length>0?new c.layer.Tile({extent:[2137334.22323,4117771.96011,3332905.55435,5150499.54408],source:new c.source.TileWMS({attributions:[c.source.OSM.ATTRIBUTION],url:g.config.servers.mapproxy,params:{SERVICE:"WMS",VERSION:"1.1.1",LAYERS:g.config.layers.osm}}),opacity:b("#base-layer-opacity").val()/100}):new c.layer.Tile({extent:[2137334.22323,4117771.96011,3332905.55435,5150499.54408],source:new c.source.OSM({attributions:[c.source.OSM.ATTRIBUTION]}),opacity:b("#base-layer-opacity").val()/100})},j=function(){var a,b;if(g.config.servers.tilecache.length>0){var e=new c.tilegrid.TileGrid({origin:[1948226,4024868],extent:[1948226,4024868,4008846,5208724],tileSize:512,resolutions:[156543.0339,78271.51695,39135.758475,19567.8792375,9783.93961875,4891.969809375,2445.9849046875,1222.99245234375,611.496226171875,305.7481130859375,152.87405654296876,76.43702827148438,38.21851413574219,19.109257067871095,9.554628533935547,4.777314266967774,2.388657133483887,1.1943285667419434,.5971642833709717,.29858214168548586,.14929107084274293,.07464553542137146,.03732276771068573,.018661383855342866]});return a=new c.source.TileWMS({urls:g.config.servers.tilecache,params:{VERSION:"1.1.0",LAYERS:g.config.layers.ktimatologio,TRANSPARENT:!0},projection:"EPSG:900913",attributions:[new c.Attribution({html:''})],tileGrid:e}),b=a.tileUrlFunction,a.tileUrlFunction=function(a,c,e){var f=b(a,c,e),g=d.parse(f)||{},h=g.query?d.parseQuery(g.query):{};h.SRS="EPSG:900913";var i=d.build({protocol:g.protocol?g.protocol:"http",hostname:g.hostname,port:"80"===g.port?"":g.port,path:g.path,query:d.buildQuery(h)});return i},new c.layer.Tile({extent:[2137334.22323,4117771.96011,3332905.55435,5150499.54408],source:a})}if(g.config.servers.mapproxy.length>0)return new c.layer.Tile({extent:[2137334.22323,4117771.96011,3332905.55435,5150499.54408],source:new c.source.TileWMS({projection:"EPSG:900913",attributions:[new c.Attribution({html:''})],url:g.config.servers.mapproxy,params:{SERVICE:"WMS",VERSION:"1.1.0",LAYERS:"ktimatologio"}})});var h={SERVICE:"WMS",VERSION:"1.1.0",LAYERS:"KTBASEMAP"};return a=new c.source.TileWMS({url:"http://gis.ktimanet.gr/wms/wmsopen/wmsserver.aspx",params:h,projection:"EPSG:900913",attributions:[new c.Attribution({html:''})]}),b=a.tileUrlFunction,a.tileUrlFunction=function(a,c,e){var f=b(a,c,e),g=d.parse(f)||{},h=g.query?d.parseQuery(g.query):{};h.SRS="EPSG:900913";var i=d.build({protocol:g.protocol?g.protocol:"http",hostname:g.hostname,port:"80"===g.port?"":g.port,path:g.path,query:d.buildQuery(h)});return i},new c.layer.Tile({extent:[2137334.22323,4117771.96011,3332905.55435,5150499.54408],source:a})},k=function(){var a=function(a,c,d,e,f){var h=document.createElement("canvas"),i=h.getContext("2d"),j=e[0],k=e[1];h.setAttribute("width",j),h.setAttribute("height",k);var l=g.map.control,m=l.getView().calculateExtent(l.getSize()),n=l.getPixelFromCoordinate([m[0],m[3]]),o=l.getPixelFromCoordinate([a[0],a[3]]),p=[n[0]-o[0],n[1]-o[1]],q=b("#grid-tiles")[0],r=i.createPattern(q,"repeat");i.rect(o[0],o[1],j-o[0],k-o[1]),i.fillStyle=r,i.fill();var s=[2137334.22323,4117771.96011,3332905.55435,5150499.54408],t=l.getPixelFromCoordinate([s[0],s[3]]),u=l.getPixelFromCoordinate([s[2],s[1]]);return i.clearRect((t[0]+p[0])*d,(t[1]+p[1])*d,(u[0]-t[0])*d,(u[1]-t[1])*d),h};return new c.layer.Image({source:new c.source.ImageCanvas({canvasFunction:a,projection:"EPSG:3857"})})},l=function(){var a=g.map.control.getView(),b=c.proj.transform(a.getCenter(),"EPSG:3857","EPSG:4326");g.map.google.setCenter(new google.maps.LatLng(b[1],b[0]))},m=function(){var a=g.map.control.getView();g.map.google.setZoom(a.getZoom())},n=function(a){g.map.google||(g.map.google=new google.maps.Map(document.getElementById("gmap"),{mapTypeId:google.maps.MapTypeId.SATELLITE,disableDefaultUI:!0,keyboardShortcuts:!1,draggable:!1,disableDoubleClickZoom:!0,scrollwheel:!1,streetViewControl:!1}));var c=g.map.control.getView();c.on("change:center",l),c.on("change:resolution",m);var d=b("#"+g.config.map.target);d.remove(),c.setCenter(c.getCenter()),c.setZoom(c.getZoom()),g.map.google.controls[google.maps.ControlPosition.TOP_LEFT].push(d[0]),b("#"+g.config.google.target).show(),b(".ol-attribution").addClass("ol-attribution-google"),p(!0)},o=function(){var a=b("#"+g.config.map.target);b("#"+g.config.google.target).hide(),g.map.google.controls[google.maps.ControlPosition.TOP_LEFT].pop(),b("#"+g.config.google.target).parent().append(a);var c=g.map.control.getView();c.un("change:center",l),c.un("change:resolution",m),b(".ol-attribution").removeClass("ol-attribution-google"),p(!1)},p=function(a){var b=0,d=g.map.control.getInteractions();d.forEach(function(e){e instanceof c.interaction.DragPan&&(a?d.setAt(b,new c.interaction.DragPan({kinetic:new c.Kinetic(-1,10,200)})):d.setAt(b,new c.interaction.DragPan({kinetic:new c.Kinetic(-.005,.05,100)}))),b++},this)},q=function(a,b){var d=null,e=null;switch(e=g.map.control.get("base_layer_properties"),g.map.control.set("base_layer_properties",{type:a,set:b,exists:"google"!=a}),a){case"bing":g.config.bing.key&&(d=new c.layer.Tile({extent:[2137334.22323,4117771.96011,3332905.55435,5150499.54408],source:new c.source.BingMaps({key:g.config.bing.key,imagerySet:b})}));break;case"stamen":d=new c.layer.Tile({extent:[2137334.22323,4117771.96011,3332905.55435,5150499.54408],source:new c.source.Stamen({layer:b})});break;case"mapquest":d=new c.layer.Tile({extent:[2137334.22323,4117771.96011,3332905.55435,5150499.54408],source:new c.source.MapQuest({layer:b})});break;case"ktimatologio":d=j();break;case"google":n(b);break;default:console.log("Base layer of type "+a+" is not supported.")}return e&&"google"==e.type&&o(),d},r=function(){var a=g.config.map.minZoom,b=g.config.map.maxZoom,c=g.config.map.zoom||g.config.map.minZoom;return(a>c||c>b)&&(c=a),c},s=function(){var a=new c.View({projection:f.Maps.CRS.Mercator,center:g.config.map.center||[0,0],zoom:r(),minZoom:g.config.map.minZoom,maxZoom:g.config.map.maxZoom,extent:[-20037508.3392,-20048966.1,20037508.3392,20048966.1]}),d=c.interaction.defaults();d.removeAt(d.getLength()-1),g.interactions.zoom=new c.interaction.DragZoom({condition:c.events.condition.shiftKeyOnly,style:new c.style.Style({fill:new c.style.Fill({color:[255,255,255,.4]}),stroke:new c.style.Stroke({color:"#3399CC",width:2})})}),d.push(g.interactions.zoom);var e=[];e.push(new c.control.Zoom({zoomInTipLabel:"",zoomOutTipLabel:""})),e.push(new c.control.ZoomSlider),e.push(new c.control.Attribution({tipLabel:"",collapsible:!1})),g.map.control=new c.Map({target:g.config.map.target,view:a,controls:e,interactions:d,ol3Logo:!1});var h,j=b("#base_layer option:selected");if(h=q(b(j).data("type"),b(j).data("set")),g.map.control.addLayer(h),h=i(),g.map.control.addLayer(h),h=k(),g.map.control.getLayers().insertAt(0,h),g.config.map.bbox){var l=g.map.control.getSize();a.fitExtent(g.config.map.bbox,l)}!g.map.config&&!g.preview&&navigator.geolocation&&g.config.geolocation&&navigator.geolocation.getCurrentPosition(function(b){var d=c.proj.transform([b.coords.longitude,b.coords.latitude],f.Maps.CRS.WGS84,f.Maps.CRS.Mercator);a.setCenter(d),a.setZoom(10)});var m=new c.control.MousePosition({coordinateFormat:function(a){return c.coordinate.format(a,"{x} , {y}",4)},projection:b("#pos_epsg option:selected").val(),className:"mouse-pos-text",target:b(".mouse-pos")[0]});g.map.control.addControl(m);var n=new c.control.ScaleLine({target:document.getElementById("scale-line")});g.map.control.addControl(n),b("#pos_epsg").selectpicker().change(function(){var a=c.proj.get(b("#pos_epsg option:selected").val());m.setProjection(a),g.actions.position.setProjection(a),b('[data-id="pos_epsg"]').blur()})},t=function(){b(".dialog-container").height(b(window).height()-50).width(b(window).width()-20);var a=b(window).width(),c=b(window).height(),d=b(".header").outerHeight(!0),e=b("#layer-tree-header").outerHeight(!0)+b("#layer-selection-header").outerHeight(!0),f=b("#layer-selection").outerHeight(!0),h=b(".footer").outerHeight(!0)+60;b("#layer-tree-group-result-container").height(c-e-f-h-b("#tree-filter").outerHeight(!0)),b("#layer-tree-organization-result-container").height(c-e-f-h-b("#tree-filter").outerHeight(!0)),b("#layer-tree-search-result").height(c-e-f-h-105),b("#layer-tree-search-result-container").height(c-e-f-h-105),b("#map").offset({top:d,left:0}).height(c-h+10),b(".resource-data-search").width(a-930+(b("#base-layer-label").is(":visible")?0:310)),b("#panel-left-splitter").is(":visible")&&b("#panel-left-splitter").css("left",b("#panel-left").width()),g.map.control.setSize([b("#map").width(),b("#map").height()])},u=function(a){if(b(".panel-left").hasClass("panel-left-hidden"))switch(a){case"group":b(".panel-left-label").css({bottom:f.i18n.getResource("index.topics.position")[1],right:f.i18n.getResource("index.topics.position")[0]}),b(".panel-left-label-image").attr("src","content/images/app/topics.svg"),b(".panel-left-label-text").html(f.i18n.getResource("index.topics")).css("padding","4px 0 0 7px");break;case"organization":b(".panel-left-label").css({bottom:f.i18n.getResource("index.organizations.position")[1],right:f.i18n.getResource("index.organizations.position")[0]}),b(".panel-left-label-image").attr("src","content/images/app/organization.svg"),b(".panel-left-label-text").html(f.i18n.getResource("index.organizations")).css("padding","4px 0 0 7px");break;case"search":b(".panel-left-label").css({bottom:f.i18n.getResource("index.search.position")[1],right:f.i18n.getResource("index.search.position")[0]}),b(".panel-left-label-image").attr("src","content/images/app/search.svg"),b(".panel-left-label-text").html(f.i18n.getResource("index.search")).css("padding","0px 0 0 7px")}},v=function(){g.ckan=new f.Maps.CKAN.Metadata({path:g.config.path,endpoint:g.config.ckan.endpoint,metadata:{database:g.config.ckan.metadata.database,path:g.config.ckan.metadata.path,version:g.config.ckan.metadata.version}}),g.resources=new f.Maps.ResourceManager({path:g.config.path,proxy:f.getProxyUrl(g.config.proxy),extent:g.config.map.extent,maxLayerCount:5}),g.components={},g.components.textSearch=new f.Maps.TextSearch({element:"location-search",map:g.map.control,endpoint:g.config.path,resources:g.resources}),g.components.layerTreeGroup=new f.Maps.LayerTree({element:"layer-tree-group",map:g.map.control,ckan:g.ckan,resources:g.resources,mode:f.Maps.LayerTreeViewMode.ByGroup,visible:!0}),g.components.layerTreeOrganization=new f.Maps.LayerTree({element:"layer-tree-organization",map:g.map.control,ckan:g.ckan,resources:g.resources,mode:f.Maps.LayerTreeViewMode.ByOrganization,visible:!1}),g.components.layerTreeSearch=new f.Maps.LayerTree({element:"layer-tree-search",map:g.map.control,ckan:g.ckan,resources:g.resources,mode:f.Maps.LayerTreeViewMode.ByFilter,visible:!1}),g.components.layerSelection=new f.Maps.LayerSelection({element:"layer-selection",map:g.map.control,ckan:g.ckan,resources:g.resources}),g.components.catalogInfoDialog=new f.Maps.Dialog({title:"",element:"dialog-1",visible:!1,width:400,height:200,buttons:{close:{text:"button.close",style:"primary"}}}),g.components.catalogInfoDialog.on("dialog:action",function(a){switch(a.action){case"close":this.hide()}}),g.components.tableBrowserDialog=new f.Maps.DialogTableBrowser({title:"Table Data",element:"dialog-2",visible:!1,width:800,height:400,buttons:{close:{text:"button.close",style:"primary"}}}),g.components.tableBrowserDialog.on("dialog:action",function(a){switch(a.action){case"close":this.hide()}}),g.components.layerGroupLegendDialog=new f.Maps.Dialog({title:"",element:"dialog-3",visible:!1,width:400,height:400,buttons:{close:{text:"button.close",style:"primary"}}}),g.components.layerGroupLegendDialog.on("dialog:action",function(a){switch(a.action){case"close":this.hide()}}),g.actions.restoreZoomLevel=new f.Maps.Action({element:"restore-zoom",name:"restore-zoom",image:"content/images/app/restore-zoom-w.svg",title:"index.resotre-zoom",visible:!0}),g.actions.restoreZoomLevel.on("action:execute",function(a){g.map.control.getView().setZoom(r())}),g.config.feedback&&b(".feedback-label").click(function(){window.open(g.config.feedback[f.i18n.getLocale()])}),g.actions["export"]=new f.Maps.Action({element:"action-export",name:"export",image:"content/images/app/download-w.svg",title:"action.export.title",visible:!1}),g.actions["import"]=new f.Maps.ImportWmsTool({element:"action-wms",name:"wms",image:"content/images/app/add-layer-w.svg",title:"action.import-wms.title",map:g.map.control,resources:g.resources}),g.actions["import"].on("layer:added",function(a){g.resources.createLayer(g.map.control,a.metadata,a.id)&&g.components.layerSelection.add(a.id,a.metadata)}),g.actions.upload=new f.Maps.UploadFileTool({element:"action-upload",name:"upload",image:"content/images/app/upload-w.svg",title:"action.upload-resource.title",map:g.map.control,resources:g.resources,endpoint:g.config.path}),g.actions.link=new f.Maps.PermalinkTool({element:"action-link",name:"link",image:"content/images/app/permalink-w.svg",title:"action.create-link.title",map:g.map.control,resources:g.resources,ckan:g.ckan,endpoint:g.config.path,mode:f.Maps.PermalinkTool.Mode.Link}),g.actions.embed=new f.Maps.PermalinkTool({element:"action-embed",name:"embed",image:"content/images/app/embed-map-w.svg",title:"action.create-link-embed.title",map:g.map.control,resources:g.resources,ckan:g.ckan,endpoint:g.config.path,mode:f.Maps.PermalinkTool.Mode.Embed}),g.actions.parse=new f.Maps.CoordinateParser({element:"action-parse",name:"parse",image:"content/images/app/coordinates-w.svg",title:"action.parse-coordinates.title",map:g.map.control,resources:g.resources}),g.actions.upload.on("resource:loaded",function(a){g.resources.getResourceMetadata(a.format.toUpperCase(),{url:a.url,text:a.text,filename:a.name,title:a.title,projection:a.projection}).then(function(b){g.resources.createLayer(g.map.control,b,a.id,a.title)&&g.components.layerSelection.add(a.id,b)})}),g.actions.position=new f.Maps.PositionTool({element:"action-position",name:"position",image:"content/images/app/map-location-w.svg",title:"action.set-position.title",map:g.map.control,projection:c.proj.get(b("#pos_epsg option:selected").val())}),g.actions.clear=new f.Maps.Action({element:"action-clear",name:"clear",image:"content/images/app/clear-w.svg",title:"action.clear.title",visible:!0,enabled:!0,"class":"btn-danger"}),g.actions.clear.on("action:execute",function(a){var b;for(b in g.tools)g.tools[b].clear();for(b in g.actions)g.actions[b].clear();for(b in g.components)g.components[b].clear()}),g.tools.length=new f.Maps.MeasureTool({element:"tool-length",name:"length",images:{enabled:"content/images/app/distance-w.svg",disabled:"content/images/app/distance.svg"},title:"tool.length.title",map:g.map.control,type:f.Maps.MeasureToolType.Length}),g.tools.area=new f.Maps.MeasureTool({element:"tool-area",name:"area",images:{enabled:"content/images/app/area-w.svg",disabled:"content/images/app/area.svg"},title:"tool.area.title",map:g.map.control,type:f.Maps.MeasureToolType.Area}),g.tools["export"]=new f.Maps.ExportTool({element:"tool-export",name:"export",images:{enabled:"content/images/app/draw-polygon-w.svg",disabled:"content/images/app/draw-polygon.svg"},title:"tool.export.title",map:g.map.control,resources:g.resources,action:g.actions["export"],disabledFormats:g.config["export"].disabledFormats,endpoint:g.config.path}),g.tools.select=new f.Maps.SelectTool({name:"select",active:!0,map:g.map.control,resources:g.resources}),g.tools.select.setActive(!0);var a=function(a){b(".tools-container").height("auto");var c=a.name;if(a.active){a.sender.hasActions()?b("#tool-actions-header").show():b("#tool-actions-header").hide(),c=a.sender.getName();for(var d in g.tools)c!=g.tools[d].getName()&&g.tools[d].setActive(!1)}else b("#tool-actions-header").hide(),g.tools.select.setActive(!0);t()};g.tools.length.on("tool:toggle",a),g.tools.area.on("tool:toggle",a),g.tools["export"].on("tool:toggle",a),g.resources.on("layer:created",function(a){g.components.layerSelection.add(a.id);var b=a.id.split("_"),c=b[0];g.components.layerTreeGroup.expand(c),g.components.layerTreeOrganization.expand(c)}),b("body").on("click",".panel-left-hidden",function(a){b(".panel-left-handler").trigger("click")}),b(".panel-left-handler").click(function(a){a.preventDefault(),a.stopPropagation(),b(".panel-left").hasClass("panel-left-hidden")?(b(".panel-left-label").hide(),b(".panel-left").removeClass("panel-left-hidden"),b(".panel-left-handler").removeClass("panel-left-handler-toggle"),b(".panel-left").find(".panel-content").removeClass("panel-content-hidden"),b(".panel-left-splitter").show(),b(".panel-left").width(b(".panel-left-splitter").position().left)):(b(".panel-left-splitter").hide(),b(".panel-left-label").show(),b(".panel-left").addClass("panel-left-hidden"),b(".panel-left-handler").addClass("panel-left-handler-toggle"),b(".panel-left").find(".panel-content").addClass("panel-content-hidden"),b(".panel-left").width(30),u(g.ui.section))}),b(".tools-container").draggable({handle:".tools-header",containment:"parent"}),b(".tools-header-handler").click(function(){b(".tools-container-placholder").fadeIn(400),b(".tools-container").effect("transfer",{to:b(".tools-container-placholder")},400,function(){b(".tools-container").fadeOut(200)})}),b(".tools-container-placholder").click(function(){b(".tools-container").fadeIn(400),b(".tools-container-placholder").effect("transfer",{to:b(".tools-container")},400,function(){b(".tools-container-placholder").fadeOut(200)})}),b("#organization, #group, #search").click(function(){if(!b(this).data("selected")){var a=b(this).attr("id");b(this).data("selected",!0).removeClass("active").addClass("inactive"),b("#"+g.ui.section).data("selected",!1).removeClass("inactive").addClass("active"),b("#"+g.ui.section+"-label").addClass("section-label-hidden"),b("#"+a+"-label").removeClass("section-label-hidden"),g.ui.section=a,"organization"===a?(b("#tree-filter").show(),g.components.layerTreeGroup.hide(),g.components.layerTreeSearch.hide(),g.components.layerTreeOrganization.show()):"group"===a&&(b("#tree-filter").show(),g.components.layerTreeOrganization.hide(),g.components.layerTreeSearch.hide(),g.components.layerTreeGroup.show()),"search"===a&&(b("#tree-filter").hide(),g.components.layerTreeGroup.hide(),g.components.layerTreeOrganization.hide(),g.components.layerTreeSearch.show()),t()}});var d=function(a){a.sender!=g.components.layerTreeGroup&&g.components.layerTreeGroup.remove(a.id,!1),a.sender!=g.components.layerTreeOrganization&&g.components.layerTreeOrganization.remove(a.id,!1),a.sender!=g.components.layerTreeSearch&&g.components.layerTreeSearch.remove(a.id,!1),g.components.layerSelection.remove(a.id),t()},e=function(a){a.data&&(g.components.catalogInfoDialog.setTitle(a.data.title[f.i18n.getLocale()]),g.components.catalogInfoDialog.setContent(a.data.description[f.i18n.getLocale()]),g.components.catalogInfoDialog.show())},h=function(a){a.title&&(g.components.catalogInfoDialog.setTitle(a.title[f.i18n.getLocale()]),g.components.catalogInfoDialog.setContent('
'),g.components.catalogInfoDialog.show())},i=function(a){if(a.title){g.components.layerGroupLegendDialog.setTitle(f.i18n.getResource("index.layer-group.legend.title")+" "+a.title);var b=[];b.push('
'),b.push("");for(var c=0;c"),b.push(""),b.push(""),c%2===1?b.push(""):c===a.legend.length-1&&b.push("");b.push("
"),b.push(""),b.push(""),b.push(a.legend[c].title),b.push("
"),b.push("
"),g.components.layerGroupLegendDialog.setContent(b.join("")),g.components.layerGroupLegendDialog.show()}},j=function(a){a.sender!=g.components.layerTreeGroup&&g.components.layerTreeGroup.add(a.id,!1),a.sender!=g.components.layerTreeOrganization&&g.components.layerTreeOrganization.add(a.id,!1),a.sender!=g.components.layerTreeSearch&&g.components.layerTreeSearch.add(a.id,!1)};g.components.layerTreeGroup.on("layer:added",j),g.components.layerTreeGroup.on("layer:removed",d),g.components.layerTreeGroup.on("catalog:info-loading",h),g.components.layerTreeGroup.on("catalog:info-loaded",e),g.components.layerTreeOrganization.on("layer:added",j),g.components.layerTreeOrganization.on("layer:removed",d),g.components.layerTreeOrganization.on("catalog:info-loading",h),g.components.layerTreeOrganization.on("catalog:info-loaded",e),g.components.layerTreeSearch.on("layer:added",j),g.components.layerTreeSearch.on("layer:removed",d),g.components.layerTreeSearch.on("catalog:info-loading",h),g.components.layerTreeSearch.on("catalog:info-loaded",e),g.components.layerSelection.on("layer-group:legend-loaded",i),g.components.layerTreeSearch.on("bbox:draw",function(a){A(),C()}),g.components.layerTreeSearch.on("bbox:apply",function(a){C("zoom"),B("select")}),g.components.layerTreeSearch.on("bbox:cancel",function(a){C("zoom"),B("select")});var k=function(a){t()},l=function(a){g.components.layerTreeGroup.remove(a.id),g.components.layerTreeOrganization.remove(a.id),g.components.layerTreeSearch.remove(a.id),t()};g.components.layerSelection.on("layer:added",k),g.components.layerSelection.on("layer:removed",l),b("#locale_selection").val(f.i18n.getLocale()),b("#locale_selection").selectpicker().change(function(){f.i18n.setLocale(b("#locale_selection option:selected").val()),b('[data-id="locale_selection"]').blur();var a=b("#tree-filter-text").val();g.components.layerTreeGroup.setFilter(a),g.components.layerTreeOrganization.setFilter(a),b(".selectpicker, .img-text").tooltip(),b(".selectpicker").tooltip("disable")}),b("#tree-filter-text").keyup(function(){var a=b(this).val();g.components.layerTreeGroup.setFilter(a),g.components.layerTreeOrganization.setFilter(a)}),b("#tree-filter-remove").click(function(){b("#tree-filter-text").val(""),g.components.layerTreeGroup.setFilter(null),g.components.layerTreeOrganization.setFilter(null),b(this).blur()}),b("#panel-left-splitter").draggable({axis:"x",opacity:.5,handle:".panel-left-splitter-handler",start:function(a,c){b(this).addClass("panel-left-splitter-dragging")},stop:function(a,c){b("#panel-left").width(c.position.left),b(this).removeClass("panel-left-splitter-dragging")},drag:function(a,b){b.position.left=Math.max(280,b.position.left),b.position.left=Math.min(550,b.position.left)}}),b(".panel-left-splitter-handler").dblclick(function(a){}),b(".selectpicker, .img-text").tooltip(),b(".selectpicker").tooltip("disable"),b(window).resize(t)},w=function(){},x=function(){z()},y=function(a,c,d){d=0===d?d:d||100;var e=g.map.control.get("base_layer_properties"),f=e.exists?g.map.control.getLayers().item(1):null,h=g.map.control.getLayers().item(e.exists?2:1);h.setOpacity(d/100);var i=q(a,c);i&&g.map.control.getLayers().insertAt(e.exists?2:1,i),f&&setTimeout(function(){g.map.control.getLayers().remove(f)},500),b("#base-layer-opacity").val(d),b("#base_layer").val(a+"-"+c).selectpicker("refresh"),b(".selectpicker").tooltip().tooltip("disable")},z=function(){b("#base_layer").selectpicker().change(function(a){var c=b("#base_layer option:selected"),d=b("#base-layer-opacity").val();y(b(c).data("type"),b(c).data("set"),d),b('[data-id="base_layer"]').blur()}),b("#base-layer-opacity").change(function(){var a=g.map.control.get("base_layer_properties");g.map.control.getLayers().item(a.exists?2:1).setOpacity(b(this).val()/100)})},A=function(){for(var a in g.tools)g.tools[a]&&g.tools[a].setEnabled(!1)},B=function(a){for(var b in g.tools)g.tools[b]&&g.tools[b].setEnabled(!0);a&&g.tools.hasOwnProperty(a)&&g.tools[a].setActive(!0)},C=function(a){for(var b in g.interactions)g.interactions[b].setActive(!1);a&&D(a)},D=function(a){a&&g.interactions.hasOwnProperty(a)&&g.interactions[a].setActive(!0)},E=function(){return new Promise(function(a,c){var e=new d;"/"===g.config.path?e.segment(["config","load",g.map.config]):e.segment([g.config.path,"config","load",g.map.config]),b.ajax({url:e.toString().replace(/\/\//g,"/").replace(/:\//g,"://"),context:this,dataType:"json"}).done(function(b){if(b.success){var c=b.config;y(c.base.type,c.base.set,c.base.opacity);var d=0,e=function(){if(d'); - content.push('
'); + if(layerGroupLegend){ + content.push('
'); + } else{ + content.push('
'); + } + if(legend) { content.push(' '); } else { @@ -1508,7 +1513,12 @@ define(['module', 'jquery', 'ol', 'URIjs/URI', 'data_api', 'shared'], function ( content.push('
'); - $('#' + this.values.element).prepend(content.join('')); + var elem = $.parseHTML(content.join('')); + $(elem).data({ + title: title.text, + legend: layerGroupLegend, + }); + $('#' + this.values.element).prepend(elem); $('#' + safeId + '-legend-img').load(function() { var nWidth = $(this).prop('naturalWidth'); @@ -1569,6 +1579,7 @@ define(['module', 'jquery', 'ol', 'URIjs/URI', 'data_api', 'shared'], function ( this.event('layer:down'); this.event('layer:opacity:changed'); + this.event('layer-group:legend-loaded'); this.values.updateActions = function() { var elements = $('#' + self.values.element).find('.selected-layer'); @@ -1627,6 +1638,17 @@ define(['module', 'jquery', 'ol', 'URIjs/URI', 'data_api', 'shared'], function ( }); + $('#' + this.values.element).on('click.' + this.values.element, '.layer-group', function(){ + console.log($(this).parent().data()); + self.trigger('layer-group:legend-loaded', + { + title: $(this).parent().data().title, + legend: $(this).parent().data().legend, + } + ); + + }); + $('#' + this.values.element).on('change.' + this.values.element, '[type="range"]', function() { var id = $(this).closest('.selected-layer').data('id'); @@ -1685,17 +1707,17 @@ define(['module', 'jquery', 'ol', 'URIjs/URI', 'data_api', 'shared'], function ( this.values.resources.setCatalogResourceMetadataOptions(resource); this.values.resources.getResourceMetadata(resource.metadata.type, resource.metadata.parameters).then(function(metadata) { - var title, legend; - + var title, legend, layerGroupLegend; for(var i=0; id[a][b]?1:0}:function(b,c){return b[a]c[a]?1:0}};f.Maps.Component=f.Class(f.Maps.Observable,{initialize:function(a){this.values.element=null,this.values.visible=!0,"function"==typeof f.Maps.Observable.prototype.initialize&&f.Maps.Observable.prototype.initialize.apply(this,arguments),this.event("render"),this.event("hide"),this.event("show"),this.values.visible?this.show():this.hide()},render:function(){this.trigger("render")},refresh:function(){this.render()},show:function(){b("#"+this.values.element).show(),this.trigger("show")},hide:function(){b("#"+this.values.element).hide(),this.trigger("hide")},localizeUI:function(a){},clear:function(){}}),f.Maps.LayerTreeViewMode={ByGroup:1,ByOrganization:2,ByFilter:3},f.Maps.LayerTree=f.Class(f.Maps.Component,{initialize:function(a){var d=this;f.extend(this.values,{map:null,ckan:null,resources:null,mode:f.Maps.LayerTreeViewMode.ByGroup}),"function"==typeof f.Maps.Component.prototype.initialize&&f.Maps.Component.prototype.initialize.apply(this,arguments);var e=this.values.ckan.isPreloadingEnabled();this.values.contentElement=this.values.element+"-result",this.values.filter={term:null},this.values.bbox={overlay:null,interaction:null,feature:null},this.values.mode===f.Maps.LayerTreeViewMode.ByFilter&&(this.values.bbox.overlay=new c.FeatureOverlay({style:[new c.style.Style({fill:new c.style.Fill({color:[255,255,255,.4]}),stroke:new c.style.Stroke({color:"#27AE60",width:2})})]}),this.values.bbox.overlay.setMap(this.values.map),this.values.bbox.interaction=new c.interaction.DragBox({style:new c.style.Style({fill:new c.style.Fill({color:[255,255,255,.4]}),stroke:new c.style.Stroke({color:"#27AE60",width:2})})}),this.values.bbox.interaction.on("boxstart",function(a){d.values.bbox.overlay.getFeatures().clear()}),this.values.bbox.interaction.on("boxend",function(a){var b=d.values.bbox.interaction.getGeometry(),e=new c.Feature({name:d.values.element+"-bbox",geometry:b});d.values.bbox.overlay.getFeatures().clear(),d.values.bbox.overlay.addFeature(e)}),this.values.map.addInteraction(this.values.bbox.interaction),this.values.bbox.interaction.setActive(!1)),this.event("layer:added"),this.event("layer:removed"),this.event("bbox:draw"),this.event("bbox:remove"),this.event("bbox:apply"),this.event("bbox:cancel"),this.event("catalog:search"),this.event("catalog:info-loading"),this.event("catalog:info-loaded"),this.values.rootTreeNode={id:null,children:[]},this.values.getTreeNodeById=function(a,b){if(!a&&0!==a)return null;b=b||d.values.rootTreeNode;for(var c=null,e=0;e'):e.push('
  • '),e.push('
    '),c.isLeaf?e.push('
    '):e.push('
    '),c.hasInformation&&e.push('
    '),c.i18n?e.push('
    '+c.caption+"
    "):e.push('
    '+c.caption+"
    "),e.push("
  • ");var f=b(e.join(""));return f.data(d),a.children.push({id:c.id,element:f,children:[],caption:c.caption}),f},this.values.renderTreeNodeElements=function(a){var c,d,e,h,i,j=this.values.getTreeNodeById(a)||this.values.rootTreeNode,k=j.element||b("#"+this.values.contentElement),l=this.values.ckan.getNodeById(a);if(l){var m=b('');b(k).append(m),k=m}else b(k).html("");var n=this.values.ckan.getNodeChidlren(a);for(n.sort(g("index")),c=0;c0){var o=[];for(c=0;c
    "),b("#"+this.values.element).prepend(h.join("")),b("#"+i+"-legend-img").load(function(){var a=b(this).prop("naturalWidth"),d=b(this).width(),f=b(this).prop("naturalHeight"),g=b(this).height(),h=b(this).parent().height();(a>d||f>g||f>h)&&(b(this).css("cursor","pointer"),b(this).on("click",function(a){b("#"+e.values.element+"-dialog-legend-img").attr("src",b(this).attr("src")),e.values.dialog.setTitle(c),e.values.dialog.show()}))}),b(".selected-layer-opacity-label").tooltip(),this.values.updateActions(),this.trigger("layer:added",{id:a})}},i=function(a,b){return a.metadata.extras.layer?{i18n:"node.resource."+a.id,text:a.name}:{i18n:"",text:b}};f.Maps.LayerSelection=f.Class(f.Maps.Component,{initialize:function(a){var c=this;f.extend(this.values,{map:null,ckan:null,resources:null}),"function"==typeof f.Maps.Component.prototype.initialize&&f.Maps.Component.prototype.initialize.apply(this,arguments),this.event("layer:added"),this.event("layer:removed"),this.event("layer:up"),this.event("layer:down"),this.event("layer:opacity:changed"),this.values.updateActions=function(){var a=b("#"+c.values.element).find(".selected-layer"),d=a.size();a.each(function(a,c){0===a?(b(c).find('[data-action="up"]').addClass("action-disabled"),1==d?b(c).find('[data-action="down"]').addClass("action-disabled"):b(c).find('[data-action="down"]').removeClass("action-disabled")):a==d-1?(1==d?b(c).find('[data-action="up"]').addClass("action-disabled"):b(c).find('[data-action="up"]').removeClass("action-disabled"),b(c).find('[data-action="down"]').addClass("action-disabled")):(b(c).find('[data-action="up"]').removeClass("action-disabled"),b(c).find('[data-action="down"]').removeClass("action-disabled"))})},b("#"+this.values.element).on("click."+this.values.element,".action",function(){ -var a=b(this).closest(".selected-layer"),d=a.data("id"),e=b(this).data("action");switch(e){case"remove":c.remove(d);break;case"up":c.values.resources.moveLayerUp(c.values.map,d)&&(a.prevAll().first().insertAfter(a),c.values.updateActions(),c.trigger("layer:up"));break;case"down":c.values.resources.moveLayerDown(c.values.map,d)&&(a.nextAll().first().insertBefore(a),c.values.updateActions(),c.trigger("layer:down"))}}),b("#"+this.values.element).on("change."+this.values.element,'[type="range"]',function(){var a=b(this).closest(".selected-layer").data("id");c.values.resources.setLayerOpacity(a,b(this).val()),c.trigger("layer:opacity:changed",{id:a,opacity:b(this).val()})}),this.values.dialog=new f.Maps.Dialog({title:"",element:this.values.element+"-dialog-legend",visible:!1,width:430,height:400,autofit:!0,buttons:{close:{text:"button.close",style:"primary"}},renderContent:function(){var a=[];return a.push('
    '),a.push(''),a.push("
    "),a}}),this.values.dialog.on("dialog:action",function(a){switch(a.action){case"close":this.hide()}})},render:function(){b("#"+this.values.element).html("")},add:function(a,b){if(this.values.resources.getLayerCount()>this.values.resources.getMaxLayerCount())return!1;var c,d=this,e=a.split("_"),f=e.splice(1).join("_");if(c=this.values.ckan.getResourceById(e[0]))return this.values.resources.setCatalogResourceMetadataOptions(c),this.values.resources.getResourceMetadata(c.metadata.type,c.metadata.parameters).then(function(b){for(var e,g,j=0;jg;g++)if(b.layers[g].key==f)return h.call(d,a,{i18n:"",text:b.layers[g].title},b.layers[g].legend),!0;return!1},remove:function(a){b("#"+this.values.element).find('[data-id="'+a+'"]').remove(),this.values.updateActions(),this.values.resources.getLayerById(a)&&this.trigger("layer:removed",{id:a})}}),f.Maps.Tool=f.Class(f.Maps.Component,{initialize:function(a){f.extend(this.values,{name:null,active:!1,enabled:!0,images:{enabled:"",diabled:""},title:null}),"function"==typeof f.Maps.Component.prototype.initialize&&f.Maps.Component.prototype.initialize.apply(this,arguments),this.values.actions=[],this.event("tool:toggle"),this.render()},getName:function(){return this.values.name},getActive:function(){return this.values.active&&this.values.enabled},hasActions:function(){return this.values.actions.length>0},setActive:function(a){var c;if(this.values.active=a&&this.values.enabled,this.values.element)if(this.values.active)for(b("#"+this.values.element).find("a").addClass("tool-toggle-selected").removeClass("btn-default").addClass("btn-primary").find("img").attr("src",this.values.images.enabled),c=0;c'),c.push(''),c.push(""),b("#"+this.values.element).html(c.join("")),b("#"+this.values.element).find("a").tooltip(),b("#"+this.values.element).find("a").click(function(){a.setActive(!a.values.active),a.trigger("tool:toggle",{sender:a,active:a.getActive()})}),this.values.visible||b("#"+this.values.element).hide()}}}),f.Maps.MeasureToolType={Length:1,Area:2},f.Maps.MeasureTool=f.Class(f.Maps.Tool,{initialize:function(a){var b=this;this.values.map=null,this.values.overlay=null,this.values.interaction=null,this.values.type=f.Maps.MeasureToolType.Length,"function"==typeof f.Maps.Tool.prototype.initialize&&f.Maps.Tool.prototype.initialize.apply(this,arguments),this.values.feature=null,this.event("measure:end");var d=function(){var a,d,e;if(!b.values.feature)return null;var g=new c.Sphere(6378137),h=b.values.feature.getGeometry().clone().transform("EPSG:3857","EPSG:4326");if(b.values.type===f.Maps.MeasureToolType.Length){e=h.getCoordinates(),a=0;for(var i=0,j=e.length-1;j>i;++i){var k=e[i],l=e[i+1];a+=g.haversineDistance(k,l)}return a=Math.round(100*a)/100,d=a>100?Math.round(a/1e3*100)/100+" km":Math.round(100*a)/100+" m"}e=h.getLinearRing(0).getCoordinates();var m=Math.abs(g.geodesicArea(e));return d=m>1e6?Math.round(m/1e6*1e3)/1e3+" km2":Math.round(100*m)/100+" m2"};this.values.reset=function(){b.values.overlay.getFeatures().clear(),b.values.tooltipElement&&b.values.tooltipElement.parentNode&&b.values.tooltipElement.parentNode.removeChild(b.values.tooltipElement),b.values.tooltip&&b.values.map.removeOverlay(b.values.tooltip)},this.values.handler=function(a){if(!a.dragging){var c=a.coordinate;if(b.values.feature){var e=b.values.feature.getGeometry(),g=d(e);c=b.values.type===f.Maps.MeasureToolType.Area?e.getInteriorPoint().getCoordinates():e.getLastCoordinate(),b.values.tooltipElement.innerHTML=g,b.values.tooltip.setPosition(c)}}},this.values.overlay=new c.FeatureOverlay({style:[new c.style.Style({fill:new c.style.Fill({color:[255,255,255,.4]}),stroke:new c.style.Stroke({color:"#7f8c8d",width:2})})]}),this.values.overlay.setMap(this.values.map);var e=this.values.type===f.Maps.MeasureToolType.Length?"LineString":"Polygon";this.values.interaction=new c.interaction.Draw({features:this.values.overlay.getFeatures(),type:e,style:[new c.style.Style({fill:new c.style.Fill({color:[255,255,255,.4]}),stroke:new c.style.Stroke({color:"#7f8c8d",lineDash:[10,10],width:2})}),new c.style.Style({image:new c.style.Circle({radius:6,fill:new c.style.Fill({color:[255,255,255,.4]}),stroke:new c.style.Stroke({color:"#7f8c8d",width:2})}),zIndex:1/0})]}),this.values.interaction.on("change:active",function(a){this.getActive()?b.values.overlay.setMap(b.values.map):b.values.overlay.setMap(null)}),this.values.interaction.on("drawstart",function(a){b.clear(),b.values.feature=a.feature}),this.values.interaction.on("drawend",function(a){a.feature?b.values.feature=a.feature:b.values.feature=null,b.values.tooltipElement.className="mt-tooltip mt-tooltip-static",b.values.feature=null,b.values.tooltipElement=null,b.trigger("measure:end",{feature:a.feature})}),this.values.map.addInteraction(this.values.interaction),this.values.interaction.setActive(!1),this.render()},setActive:function(a){f.Maps.Tool.prototype.setActive.apply(this,[a]),this.values.active?this.values.interaction&&(this.values.interaction.setActive(!0),this.values.map.on("pointermove",this.values.handler)):this.values.interaction&&(this.values.interaction.setActive(!1),this.values.map.un("pointermove",this.values.handler),this.values.reset())},getType:function(){return this.values.type},getFeature:function(){return this.values.feature},getMeasurement:function(){return this.values.measurement},createTooltip:function(){this.values.reset(),this.values.tooltipElement=document.createElement("div"),this.values.tooltipElement.className="mt-tooltip mt-tooltip-measure",this.values.tooltip=new c.Overlay({element:this.values.tooltipElement,offset:[0,-15],positioning:"bottom-center"}),this.values.map.addOverlay(this.values.tooltip)},clear:function(){this.createTooltip(),this.values.overlay.getFeatures().clear()}});var j=function(a){this.values.action.isBusy()||(b("#"+this.values.element+"-error").html(""),this.values.dialog.show(),this.values.dialog.moveToCenter())},k=function(a){var d,e,g=this;if(this.values.action.isBusy())return void this.values.dialog.hide();var h=this.getFeature();if(h){var i=new c.format.GeoJSON,j=JSON.parse(i.writeGeometry(h.getGeometry())),k=this.values.resources.getSelectedLayers(),m=this.values.resources.getQueryableResources(),n=[];for(d=0;d'+f.i18n.getResource("action.export.no-resource-selected")+"
    ");else{this.values.dialog.hide(),this.values.action.suspendUI();var o=this.values.query;o.reset().crs(b("#"+this.values.element+"-crs").val()).format(b("#"+this.values.element+"-format").val());var p=[];for(d=0;d