view client/src/components/importoverview/LogDetail.vue @ 2917:edc2633c3cc6

client: importsoverview: cleaned up html, removed unnecessary component
author Markus Kottlaender <markus@intevation.de>
date Wed, 03 Apr 2019 15:37:54 +0200
parents 399b03e59411
children 6c5364ff0abb
line wrap: on
line source

<template>
  <div>
    <div
      class="d-flex fex-row"
      style="padding-left: 3px;"
      v-if="hasAdditionalInfo || isStretch || isSoundingResult"
    >
      <div v-if="hasAdditionalInfo">
        <UISpinnerButton
          @click="toggleAdditionalInfo"
          :state="entry.id === showAdditional"
          :icons="['angle-right', 'angle-down']"
          class="text-info d-inline-block"
        />
        <span class="text-info"><translate>Additional Info</translate></span>
        <span class="text-info" v-if="isAGM && details.summary">
          ({{ details.summary.length }})
        </span>
        <span
          v-if="isBottleneck && details.summary && details.summary.bottlenecks"
          class="text-info text-left"
        >
          ({{ details.summary.bottlenecks.length }})
        </span>
        <span class="text-left" v-if="isFairwayDimension">
          {{ details.summary["source-organization"] }}
          (LOS: {{ details.summary.los }})
        </span>
      </div>
      <StretchDetail
        v-if="isStretch && isPending"
        :entry="entry"
      ></StretchDetail>
      <SoundingResultDetail
        :entry="entry"
        v-if="isSoundingResult && isPending"
      ></SoundingResultDetail>
    </div>
    <div
      v-if="entry.id === showAdditional && isPending"
      class="ml-2 d-flex flex-row"
    >
      <FairwayDimensionDetail :entry="entry" v-if="isFairwayDimension" />
      <ApprovedGaugeMeasurementDetail :entry="entry" v-if="isAGM" />
      <BottleneckDetail :entry="entry" v-if="isBottleneck" />
    </div>
    <div class="d-flex fex-row" style="padding-left: 3px;">
      <UISpinnerButton
        @click="toggleAdditionalLogging"
        :state="entry.id === showLogs"
        :icons="['angle-right', 'angle-down']"
        classes="text-info"
      />
      <span class="text-info"><translate>Logs</translate></span>
    </div>
    <AdditionalLog
      v-if="entry.id === showLogs"
      class="d-flex flex-row"
    ></AdditionalLog>
  </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";

export default {
  components: {
    SoundingResultDetail: () => import("./SoundingResultDetail.vue"),
    StretchDetail: () => import("./StretchDetails.vue"),
    FairwayDimensionDetail: () => import("./FairwayDimensionDetail.vue"),
    ApprovedGaugeMeasurementDetail: () =>
      import("./ApprovedGaugeMeasurementDetail.vue"),
    BottleneckDetail: () => import("./BottleneckDetail.vue"),
    AdditionalLog: () => import("./AdditionalLog.vue")
  },
  props: ["entry"],
  computed: {
    ...mapState("imports", ["showAdditional", "showLogs", "details"]),
    kind() {
      return this.entry.kind.toUpperCase();
    },
    isPending() {
      return this.entry.state == "pending";
    },
    hasAdditionalInfo() {
      return this.isPending && (this.isAGM || this.isBottleneck);
    },
    isFairwayDimension() {
      return this.kind === "FD";
    },
    isAGM() {
      return this.kind === "AGM";
    },
    isBottleneck() {
      return this.kind === "BN" || this.kind === "UBN";
    },
    isStretch() {
      return this.kind === "ST";
    },
    isSoundingResult() {
      return this.kind === "SR";
    }
  },
  methods: {
    toggleAdditionalInfo() {
      if (this.entry.id === this.showAdditional) {
        this.$store.commit("imports/hideAdditionalInfo");
      } else {
        this.$store.commit("imports/showAdditionalInfoFor", this.entry.id);
      }
    },
    toggleAdditionalLogging() {
      if (this.entry.id === this.showLogs) {
        this.$store.commit("imports/hideAdditionalLogs");
      } else {
        this.$store.commit("imports/showAdditionalLogsFor", this.entry.id);
      }
    }
  },
  mounted() {
    if (this.entry.state === "pending") {
      this.$store.commit("imports/showAdditionalInfoFor", this.entry.id);
    }
    this.$store.commit("imports/showAdditionalLogsFor", this.entry.id);
  }
};
</script>