view client/src/components/importconfiguration/types/ApprovedGaugeMeasurement.vue @ 2978:d6dd158b8071 unified_import

unified_import: reorganizing files
author Thomas Junk <thomas.junk@intevation.de>
date Tue, 09 Apr 2019 13:42:44 +0200
parents client/src/components/importconfiguration/ImportApprovedGaugeMeasurement.vue@2a29bf8776d0
children 1b8bb4f89227
line wrap: on
line source

<template>
  <div>
    <div class="d-flex flex-column text-left w-25">
      <label class="text-nowrap" for="originator">
        <small class="text-muted"
          >{{ $options.ORIGINATOR }} / {{ $options.FROM }}</small
        >
      </label>
      <input
        type="text"
        v-model="originator"
        class="form-control"
        id="originator"
      />
      <span class="text-left text-danger">
        <small v-if="!originator">
          <translate>Please enter an originator</translate>
        </small>
      </span>
    </div>
    <div class="mt-4 flex-column w-100">
      <div class="custom-file">
        <input
          accept=".csv"
          type="file"
          @change="fileSelected"
          class="custom-file-input"
          id="uploadFile"
        />
        <label class="pointer custom-file-label" for="uploadFile">
          {{ uploadLabel }}
        </label>
      </div>
    </div>
    <div class="d-flex flex-row-reverse w-100 mt-3">
      <button :key="1" @click="back()" class="btn btn-warning">
        Back
      </button>
      <button
        :key="2"
        type="submit"
        @click="submit"
        class="shadow-sm btn btn-info submit-button  mr-3"
      >
        <translate>Submit</translate>
      </button>
    </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 { HTTP } from "@/lib/http";
import { displayError, displayInfo } from "@/lib/errors.js";
import app from "@/main";

export default {
  name: "importapprovedgaugemeasurements",
  data() {
    return {
      disableUploadButton: false,
      uploadLabel: this.$gettext("choose file to upload"),
      uploadFile: null,
      originator: "viadonau"
    };
  },
  computed: {
    importGaugmeasurmentLabel() {
      return this.$gettext("Import approved gaugemeasurements");
    }
  },
  methods: {
    back() {
      this.uploadLabel = this.$gettext("choose file to upload");
      this.uploadFile = null;
      this.originator = "viadonau";
      this.$store.commit("importschedule/setListMode");
    },
    fileSelected(e) {
      const files = e.target.files || e.dataTransfer.files;
      if (!files) return;
      this.uploadLabel = files[0].name;
      this.uploadFile = files[0];
    },
    submit() {
      if (!this.originator || !this.uploadFile) return;
      let formData = new FormData();
      formData.append("agm", this.uploadFile);
      formData.append("originator", this.originator);
      HTTP.post("/imports/agm", formData, {
        headers: {
          "X-Gemma-Auth": localStorage.getItem("token"),
          "Content-Type": "multipart/form-data"
        }
      })
        .then(() => {
          displayInfo({
            title: this.$gettext("Import"),
            message: this.$gettext(
              "Starting import of Approved Gauge Measurements"
            )
          });
          this.back();
        })
        .catch(error => {
          const { status, data } = error.response;
          displayError({
            title: this.$gettext("Backend Error"),
            message: `${status}: ${data.message || data}`
          });
        });
    }
  },
  ORIGINATOR: app.$gettext("originator"),
  FROM: app.$gettext("from")
};
</script>

<style lang="scss" scoped></style>