Mercurial > gemma
view client/src/components/layers/Layers.vue @ 3214:861329d535b2
statistics: guarg for los
author | Thomas Junk <thomas.junk@intevation.de> |
---|---|
date | Thu, 09 May 2019 11:03:21 +0200 |
parents | c122a064fd5e |
children | 80037790032d |
line wrap: on
line source
<template> <div :class="[ 'box ui-element rounded bg-white text-nowrap', { expanded: showLayers } ]" > <div class="position-relative" style="width: 18rem; min-height: 350px;"> <UIBoxHeader icon="layer-group" :title="label" :closeCallback="close" :actions="[ { callback: refreshLayers, icon: sourcesLoading ? 'spinner' : 'sync' } ]" /> <div class="small" v-if="openLayersMaps.length"> <Layerselect layerId="OPENSTREETMAP" /> <Layerselect layerId="INLANDECDIS" /> <Layerselect layerId="WATERWAYAREA" /> <Layerselect layerId="STRETCHES" /> <Layerselect layerId="FAIRWAYDIMENSIONSLOS3" /> <Layerselect layerId="FAIRWAYDIMENSIONSLOS2" /> <Layerselect layerId="FAIRWAYDIMENSIONSLOS1" /> <Layerselect layerId="WATERWAYAXIS" /> <Layerselect layerId="WATERWAYPROFILES" /> <Layerselect layerId="BOTTLENECKS" /> <Layerselect layerId="BOTTLENECKISOLINE" /> <Layerselect layerId="DIFFERENCES" /> <Layerselect layerId="BOTTLENECKSTATUS" /> <Layerselect layerId="DISTANCEMARKS" /> <Layerselect layerId="DISTANCEMARKSAXIS" /> <Layerselect layerId="GAUGES" /> </div> <UISpinnerOverlay v-else style="top: 34px;" /> </div> </div> </template> <script> /* This is Free Software under GNU Affero General Public License v >= 3.0 * without warranty, see README.md and license for details. * * SPDX-License-Identifier: AGPL-3.0-or-later * License-Filename: LICENSES/AGPL-3.0.txt * * Copyright (C) 2018 by via donau * – Österreichische Wasserstraßen-Gesellschaft mbH * Software engineering by Intevation GmbH * * Author(s): * Thomas Junk <thomas.junk@intevation.de> * Markus Kottländer <markus.kottlaender@intevation.de> */ import { mapState } from "vuex"; import { Vector as VectorLayer } from "ol/layer"; export default { components: { Layerselect: () => import("./Layerselect") }, computed: { ...mapState("application", ["showLayers"]), ...mapState("map", ["openLayersMaps"]), label() { return this.$gettext("Layers"); }, sourcesLoading() { let counter = 0; this.openLayersMaps.forEach(map => { let layers = map.getLayers().getArray(); for (let i = 0; i < layers.length; i++) { if (layers[i].getSource().loading) counter++; } }); return counter; } }, methods: { close() { this.$store.commit("application/showLayers", false); }, refreshLayers() { this.openLayersMaps.forEach(map => { let layers = map.getLayers().getArray(); for (let i = 0; i < layers.length; i++) { let layer = layers[i]; if ( layer instanceof VectorLayer && layer.get("source").loader_.name != "VOID" ) { layer.getSource().clear(true); layer.getSource().refresh({ force: true }); } } }); } } }; </script>