Mercurial > gemma
view client/src/components/ImportApprovedGaugeMeasurement.vue @ 2277:5f3110aa1ad1
made configuration page accessible for waterway admins
User roles define what the configuration page shows.
author | Markus Kottlaender <markus@intevation.de> |
---|---|
date | Fri, 15 Feb 2019 10:57:50 +0100 |
parents | 33af355047e1 |
children | ff1e4f1b54c6 |
line wrap: on
line source
<template> <div class="d-flex flex-row"> <Spacer></Spacer> <div class="card sysconfig mt-3 shadow-xs w-100 h-100 mr-3"> <h6 class="mb-0 py-2 px-3 border-bottom d-flex text-info align-items-center" > <font-awesome-icon icon="upload" class="mr-2"></font-awesome-icon> <translate class="headline" >Import approved gaugemeasurements</translate > </h6> <div class="card-body stretches-card"> <div class="w-95 ml-auto mr-auto mt-4 mb-4"> <div class="d-flex flex-row input-group mb-4"> <div class="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> <div class="buttons text-right"> <button :disabled="disableUploadButton" @click="submit" class="btn btn-info mt-4" type="button" > <font-awesome-icon class="fa-fw mr-2" fixed-width icon="play" ></font-awesome-icon> <translate>Trigger import</translate> </button> </div> </div> </div> </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"; export default { name: "importapprovedgaugemeasurements", data() { return { disableUploadButton: false, uploadLabel: this.$gettext("choose file to upload"), uploadFile: null }; }, methods: { 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.uploadFile) return; let formData = new FormData(); formData.append("agm", this.uploadFile); 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.initialState(); }) .catch(error => { const { status, data } = error.response; displayError({ title: this.$gettext("Backend Error"), message: `${status}: ${data.message || data}` }); }); } }, components: { Spacer: () => import("./Spacer") } }; </script> <style lang="scss" scoped></style>