view client/src/components/importoverview/SoundingResultDetail.vue @ 5588:94ef43fac0eb surveysperbottleneckid

Make BN for overview distinguishable
author Thomas Junk <thomas.junk@intevation.de>
date Tue, 05 Apr 2022 10:15:37 +0200
parents 271888ef85bc
children f24c9a7b3e82
line wrap: on
line source

<template>
  <div>
    <a v-if="isSR" @click="zoomTo()" class="text-info pointer">
      {{ details.summary.bottleneck }}
    </a>
    <div class="d-flex flex-column" v-if="isDSR">
      <span>
        <translate>Bottleneck: </translate>
        {{ details.summary["bottleneck-id"] }}
      </span>
      <span>
        <translate>Survey from: </translate>
        {{ details.summary["date-info"] | surveyDate }}
      </span>
    </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>
 */
import { mapState } from "vuex";
import { HTTP } from "@/lib/http";
import { displayError } from "@/lib/errors";

export default {
  name: "soundingresultdetails",
  props: ["entry"],
  mounted() {
    this.$store.commit("imports/hideAdditionalInfo");
  },
  computed: {
    ...mapState("imports", ["showAdditional", "details"]),
    isSR() {
      return this.entry.kind.toUpperCase() === "SR";
    },
    isDSR() {
      return this.entry.kind.toUpperCase() === "DSR";
    }
  },
  methods: {
    zoomTo() {
      const { lat, lon, bottleneck, date } = this.details.summary;
      this.$store.dispatch("map/moveMap", {
        coordinates: [lat, lon],
        zoom: 17,
        preventZoomOut: true
      });
      HTTP.get(
        "/surveys?name=" +
          encodeURIComponent(bottleneck) +
          "&date=" +
          encodeURIComponent(date),
        {
          headers: {
            "X-Gemma-Auth": localStorage.getItem("token"),
            "Content-type": "text/xml; charset=UTF-8"
          }
        }
      )
        .then(response => {
          const { bottleneck_id } = response.data.surveys[0];
          this.$store
            .dispatch("bottlenecks/setSelectedBottleneck", bottleneck_id)
            .then(() => {
              this.$store.commit("bottlenecks/setSelectedSurveyByDate", date);
            });
        })
        .catch(error => {
          let message = "Backend not reachable";
          if (error.response) {
            const { status, data } = error.response;
            message = `${status}: ${data.message || data}`;
          }
          displayError({
            title: this.$gettext("Backend Error"),
            message: message
          });
        });
    }
  }
};
</script>

<style></style>