# HG changeset patch # User Markus Kottlaender # Date 1560334130 -7200 # Node ID 0e2605f6fdddb64fcd86af45fe4ac662c36d4cfd # Parent 9709081719ae9d1b77baeba179d9bb395a57783c client: configuration: look up wms capabilities and make layers configurable diff -r 9709081719ae -r 0e2605f6fddd client/src/components/systemconfiguration/MapLayers.vue --- a/client/src/components/systemconfiguration/MapLayers.vue Tue Jun 11 12:43:05 2019 +0200 +++ b/client/src/components/systemconfiguration/MapLayers.vue Wed Jun 12 12:08:50 2019 +0200 @@ -5,14 +5,47 @@
- +
+ +
+
+
+ + +
+
+
@@ -39,17 +72,69 @@ * Markus Kottländer */ import { mapState } from "vuex"; +import WMSCapabilities from "ol/format/WMSCapabilities"; +import { HTTP } from "@/lib/http"; + +const WMSCapabilitiesParser = new WMSCapabilities(); export default { + data() { + return { + selectedWMSLayers: [], + availableWMSLayers: [], + availableWMSLayersLoading: false, + lookupWMSCapabilitiesTimeout: null + }; + }, computed: { ...mapState("application", ["config"]) }, methods: { + lookupWMSCapabilities() { + if (this.lookupWMSCapabilitiesTimeout) { + clearTimeout(this.lookupWMSCapabilitiesTimeout); + } + this.lookupWMSCapabilitiesTimeout = setTimeout(() => { + let url; + try { + let urlParts = new URL(this.config.ecdis_url); + url = + urlParts.protocol + + "//" + + urlParts.host + + urlParts.pathname.trim("/") + + "/"; + } catch (e) { + url = this.config.ecdis_url; + } + this.availableWMSLayersLoading = true; + HTTP.get(url + "?request=GetCapabilities&service=WMS") + .then(response => { + let capabilities = WMSCapabilitiesParser.read(response.data); + let layers = []; + capabilities.Capability.Layer.Layer.forEach(l => + layers.push(l.Name) + ); + this.availableWMSLayers = layers; + }) + .catch(() => { + this.availableWMSLayers = []; + }) + .finally(() => (this.availableWMSLayersLoading = false)); + }, 500); + }, submit() { this.$store.dispatch("application/saveConfig", { - ecdis_url: this.config.ecdis_url + ecdis_url: this.config.ecdis_url, + ecdis_layers: this.selectedWMSLayers + .filter(l => this.availableWMSLayers.includes(l)) + .join(",") }); } + }, + mounted() { + this.selectedWMSLayers = this.config.ecdis_layers.split(","); + this.lookupWMSCapabilities(); } }; diff -r 9709081719ae -r 0e2605f6fddd schema/default_sysconfig.sql --- a/schema/default_sysconfig.sql Tue Jun 11 12:43:05 2019 +0200 +++ b/schema/default_sysconfig.sql Wed Jun 12 12:08:50 2019 +0200 @@ -27,6 +27,7 @@ -- Settings -- INSERT INTO sys_admin.system_config VALUES ('ecdis_url', 'https://service.d4d-portal.info/wms/'); +INSERT INTO sys_admin.system_config VALUES ('ecdis_layers', 'd4d'); INSERT INTO sys_admin.system_config VALUES ('bn_revtime_multiplier', 1.5); INSERT INTO sys_admin.system_config VALUES ('gm_min_values_14d', 1224); INSERT INTO sys_admin.system_config VALUES ('gm_latest_hours', 24);