view client/src/components/layers/Layerselect.vue @ 2343:33d2ef9f9e5d

client: use the name constants for Layer names
author Fadi Abbud <fadi.abbud@intevation.de>
date Wed, 20 Feb 2019 10:00:01 +0100
parents a08e0f532304
children a7e31594959d
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.layerindex);
    }
  },
  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>