view client/src/components/layers/Layerselect.vue @ 1558:0ded4c56978e

refac: component filestructure. remove admin/map hierarchy
author Thomas Junk <thomas.junk@intevation.de>
date Wed, 12 Dec 2018 09:22:20 +0100
parents client/src/components/map/layers/Layerselect.vue@9b81ac91a43e
children f2d24dceecc7
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="layername form-check-label" @click="visibilityToggled">{{
        layername
      }}</label>
    </div>
    <div v-if="isVisible && layername == 'Bottleneck isolines'">
      <img class="rounded my-1 d-block" :src="isolinesLegendImgUrl" />
    </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 by via donau
 *   – Österreichische Wasserstraßen-Gesellschaft mbH
 * Software engineering by Intevation GmbH
 *
 * Author(s):
 * Thomas Junk <thomas.junk@intevation.de>
 */
import { HTTP } from "../../lib/http";
import LegendElement from "./LegendElement.vue";
export default {
  props: ["layername", "layerindex", "isVisible"],
  name: "layerselect",
  data() {
    return {
      isolinesLegendImgUrl: ""
    };
  },
  components: {
    LegendElement
  },
  methods: {
    visibilityToggled() {
      this.$emit("visibilityToggled", this.layerindex);
    }
  },
  created() {
    // fetch legend image for bottleneck isolines
    // TODO: move to store
    if (this.layername == "Bottleneck isolines") {
      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 urlCreator = window.URL || window.webkitURL;
        this.isolinesLegendImgUrl = urlCreator.createObjectURL(response.data);
      });
    }
  }
};
</script>