# HG changeset patch # User Markus Kottlaender # Date 1551440572 -3600 # Node ID e0f423606929f255d5062be687f007f0492350dc # Parent 7ca6bdb2d1749f1345113a35d7baa1acb21b06af client: import soundingdata: fix npe bug Changes from bbc31150248c led to a null pointer exception, cause the default value of bottleneck was changed from empty string to null... for reasons. However, this was the inspiration to improve the UI behavior. The 'Download meta.json' button is now disabled as long as the form is lacking the necessary data. diff -r 7ca6bdb2d174 -r e0f423606929 client/src/components/ImportSoundingresults.vue --- a/client/src/components/ImportSoundingresults.vue Fri Mar 01 12:24:37 2019 +0100 +++ b/client/src/components/ImportSoundingresults.vue Fri Mar 01 12:42:52 2019 +0100 @@ -111,7 +111,10 @@ Download Meta.json @@ -323,16 +326,18 @@ return this.$gettext("Confirm"); }, dataLink() { - return ( - "data:text/json;charset=utf-8," + - encodeURIComponent( - JSON.stringify({ - depthReference: this.depthReference, - bottleneck: this.bottleneck.properties.objnam, - date: this.importDate - }) - ) - ); + if (this.bottleneck && this.depthReference && this.import) { + return ( + "data:text/json;charset=utf-8," + + encodeURIComponent( + JSON.stringify({ + depthReference: this.depthReference, + bottleneck: this.bottleneck.properties.objnam, + date: this.importDate + }) + ) + ); + } }, depthReferenceOptions() { if ( diff -r 7ca6bdb2d174 -r e0f423606929 client/src/components/Maplayer.vue --- a/client/src/components/Maplayer.vue Fri Mar 01 12:24:37 2019 +0100 +++ b/client/src/components/Maplayer.vue Fri Mar 01 12:42:52 2019 +0100 @@ -352,6 +352,20 @@ ); layer.data.setVisible(layer.isVisible); + layer = this.getLayerByName(LAYERS.BOTTLENECKSTATUS); + layer.data.getSource().setLoader( + this.buildVectorLoader( + { + featureNS: "gemma", + featurePrefix: "gemma", + featureTypes: ["bottlenecks_geoserver"], + geometryName: "area" + }, + "/internal/wfs", + layer.data.getSource() + ) + ); + layer = this.getLayerByName(LAYERS.BOTTLENECKS); layer.data.getSource().setLoader( this.buildVectorLoader( diff -r 7ca6bdb2d174 -r e0f423606929 client/src/store/map.js --- a/client/src/store/map.js Fri Mar 01 12:24:37 2019 +0100 +++ b/client/src/store/map.js Fri Mar 01 12:42:52 2019 +0100 @@ -44,6 +44,7 @@ WATERWAYAXIS: "Waterway Axis", WATERWAYPROFILES: "Waterway Profiles", BOTTLENECKS: "Bottlenecks", + BOTTLENECKSTATUS: "Bottleneck Status", BOTTLENECKISOLINE: "Bottleneck isolines", DISTANCEMARKS: "Distance marks", DISTANCEMARKSAXIS: "Distance marks, Axis", @@ -279,15 +280,48 @@ source: new VectorSource({ strategy: bboxStrategy }), - style: new Style({ - stroke: new Stroke({ - color: "rgba(230, 230, 10, .8)", - width: 4 - }), - fill: new Fill({ - color: "rgba(230, 230, 10, .3)" - }) - }) + style: function(feature, resolution) { + if (resolution <= 50) { + return new Style({ + stroke: new Stroke({ + color: "rgba(230, 230, 10, .8)", + width: 4 + }), + fill: new Fill({ + color: "rgba(230, 230, 10, .3)" + }) + }); + } + return []; + } + }), + isVisible: true, + showInLegend: true + }, + { + name: LAYERS.BOTTLENECKSTATUS, + data: new VectorLayer({ + source: new VectorSource({ + strategy: bboxStrategy + }), + style: function(feature, resolution) { + if (resolution > 50) { + let bnCenter = getCenter(feature.getGeometry().getExtent()); + let fillColor = feature.get("fa_critical") + ? "rgba(255, 0, 0, 0.5)" + : "rgba(0, 255, 0, 0.5)"; + let strokeColor = feature.get("fa_critical") ? "red" : "green"; + return new Style({ + geometry: new Point(bnCenter), + image: new Circle({ + radius: 10, + fill: new Fill({ color: fillColor }), + stroke: new Stroke({ color: strokeColor, width: 2 }) + }) + }); + } + return []; + } }), isVisible: true, showInLegend: true