Mercurial > gemma
view client/src/components/Userdetail.vue @ 376:e42f42eb9353
refactor: Userdetails refactored to card model
Primitive user editing etd.
author | Thomas Junk <thomas.junk@intevation.de> |
---|---|
date | Fri, 10 Aug 2018 13:15:32 +0200 |
parents | 112527683ee9 |
children | 0a9aaf21f69f |
line wrap: on
line source
<template> <div class="userdetails card shadow" style="width: 35rem;"> <div class="card" style="width: 35rem;"> <div class="card-header text-white bg-info mb-3"> {{ currentUser.user }} </div> <div class="card-body"> <form @submit.prevent="save"> <div class="form-group"> <label for="country">Country</label> <select v-model="currentUser.country"> <option disabled value="">Please select one</option> <option>AT</option> <option>RO</option> <option>BG</option> </select> </div> <div class="form-group"> <label for="email">Email address</label> <input type="email" class="form-control" id="email" aria-describedby="emailHelp" v-model="currentUser.email"> </div> <div class="form-group"> <label for="role">Role</label> <select v-model="currentUser.role"> <option disabled value="">Please select one</option> <option value="sys_admin">Sysadmin</option> <option value="waterway_admin">Waterway Admin</option> <option value="waterway_user">Waterway User</option> </select> </div> <button type="submit" class="btn btn-primary">Submit</button> </form> </div> </div> </div> </template> <style lang="scss"> @import "../assets/application.scss"; .userdetails { margin-top: 20px; width: 50vw; } .shadow { box-shadow: $basic-shadow-light !important; } </style> <script> import app from "../main"; export default { name: "userdetail", data() { return { currentUser: {}, path: null }; }, watch: { user() { this.currentUser = { ...this.user }; this.path = this.user.name; } }, computed: { user() { return this.$store.getters["usermanagement/currentUser"]; } }, methods: { save() { this.$store .dispatch("usermanagement/saveCurrentUser", { path: this.user.user, user: this.currentUser }) .then(() => { this.$store.commit("usermanagement/clearCurrentUser"); this.$store.dispatch("usermanagement/loadUsers").catch(error => { const { status, data } = error.response; app.$toast.error({ title: "Backend Error", message: `${status}: ${data}` }); }); }) .catch(error => { const { status, data } = error.response; app.$toast.error({ title: "Error while saving user", message: `${status}: ${data}` }); }); } } }; </script>