Mercurial > gemma
view client/src/components/layers/Layerselect.vue @ 2862:d37c87f8d79d
Merged
author | Sascha Wilde <wilde@intevation.de> |
---|---|
date | Thu, 28 Mar 2019 18:27:12 +0100 |
parents | a7e31594959d |
children | c1f2b9148cc8 |
line wrap: on
line source
<template> <div> <div class="form-check d-flex flex-row flex-start selection"> <input class="form-check-input" @change="visibilityToggled" :id="layername" type="checkbox" :checked="isVisible" /> <LegendElement :layername="layername" :layerindex="layerindex" ></LegendElement> <label class="pointer layername form-check-label" @click="visibilityToggled" >{{ layername }}</label > </div> <div v-if="isVisible && isBottleneckIsolineLayer"> <img class="rounded my-1 d-block" :src="isolinesLegendImgDataURL" /> </div> </div> </template> <style lang="scss" scoped> .selection { text-align: left; } .layername { margin-left: $small-offset; } </style> <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, 2019 by via donau * – Österreichische Wasserstraßen-Gesellschaft mbH * Software engineering by Intevation GmbH * * Author(s): * * Thomas Junk <thomas.junk@intevation.de> * * Bernhard Reiter <bernhard.reiter@intevation.de> */ import { HTTP } from "@/lib/http"; import { mapState } from "vuex"; import { LAYERS } from "@/store/map.js"; export default { props: ["layername", "layerindex", "isVisible"], name: "layerselect", components: { LegendElement: () => import("./LegendElement.vue") }, computed: { ...mapState("map", ["isolinesLegendImgDataURL"]), isBottleneckIsolineLayer() { return this.layername == LAYERS.BOTTLENECKISOLINE; } }, methods: { visibilityToggled() { this.$emit("visibilityToggled", this.layername); } }, created() { // fetch legend image for bottleneck isolines // directly read it as dataURL so it is reusable later if (this.isBottleneckIsolineLayer) { const src = "/internal/wms?REQUEST=GetLegendGraphic&VERSION=1.0.0&FORMAT=image/png&WIDTH=20&HEIGHT=20&LAYER=sounding_results_contour_lines_geoserver&legend_options=columns:4;fontAntiAliasing:true"; HTTP.get(src, { headers: { Accept: "image/png", "X-Gemma-Auth": localStorage.getItem("token") }, responseType: "blob" }).then(response => { var that = this; const reader = new FileReader(); reader.onload = function() { that.$store.commit("map/isolinesLegendImgDataURL", this.result); }; reader.readAsDataURL(response.data); }); } } }; </script>