changeset 375:112527683ee9

Backed out changeset 2c58906649be
author Thomas Junk <thomas.junk@intevation.de>
date Fri, 10 Aug 2018 11:21:58 +0200
parents 650f0dca5608
children e42f42eb9353
files client/package.json client/src/assets/application.scss client/src/components/Sidebar.vue client/src/components/Userdetail.vue client/src/main.js client/src/views/Users.vue client/yarn.lock
diffstat 7 files changed, 77 insertions(+), 116 deletions(-) [+]
line wrap: on
line diff
--- a/client/package.json	Fri Aug 10 11:21:34 2018 +0200
+++ b/client/package.json	Fri Aug 10 11:21:58 2018 +0200
@@ -16,10 +16,8 @@
     "bootstrap": "^4.1.1",
     "cxlt-vue2-toastr": "^1.1.0",
     "font-awesome": "^4.7.0",
-    "jquery": "^3.3.1",
     "locale2": "^2.2.0",
     "ol": "^5.0.0",
-    "popper.js": "^1.14.4",
     "vue": "^2.5.16",
     "vue-router": "^3.0.1",
     "vuex": "^3.0.1"
--- a/client/src/assets/application.scss	Fri Aug 10 11:21:34 2018 +0200
+++ b/client/src/assets/application.scss	Fri Aug 10 11:21:58 2018 +0200
@@ -6,9 +6,7 @@
 $iconwidth: 20px;
 $basic-shadow: 1px 3px 8px 2px rgba(220, 220, 220, 0.75);
 $basic-shadow-light: 1px 1px 12px 1px rgba(235, 235, 235, 0.75);
-$transition: 0.5s;
-$transition-fast: 0.1s;
-$transition-slow: 2s;
+
 
 %fully-centered {
   position: absolute;
--- a/client/src/components/Sidebar.vue	Fri Aug 10 11:21:34 2018 +0200
+++ b/client/src/components/Sidebar.vue	Fri Aug 10 11:21:58 2018 +0200
@@ -92,6 +92,9 @@
 $sidebar-full-width: 210px;
 $collapser-left-offset: 170px;
 $sidebar-collapsed-width: 0px;
+$transition: 0.5s;
+$transition-fast: 0.1s;
+$transition-slow: 2s;
 
 .collapser {
   position: absolute;
--- a/client/src/components/Userdetail.vue	Fri Aug 10 11:21:34 2018 +0200
+++ b/client/src/components/Userdetail.vue	Fri Aug 10 11:21:58 2018 +0200
@@ -1,113 +1,58 @@
 <template>
-  <div class="userdetail card">
-    <div @click="showDetails" class="card-header bg-light" id="headingOne">
-      <h5 class="mb-0">
-        <div class="btn" data-toggle="collapse" data-target="#collapseOne" aria-expanded="true" aria-controls="collapseOne">
-          <div class="d-flex d-flex-row">
-            <div class="name">Name: {{this.user.user}}</div>
-            <div class="mail">Email: {{this.user.email}}</div>
-            <div class="country">Country: {{this.user.country}}</div>
-            <div class="role">Role: {{this.user.role}}</div>
-          </div>
-        </div>
-      </h5>
-    </div>
-    <div id="collapseOne" :class="collapseStyle" aria-labelledby="headingOne" data-parent="#accordion">
+  <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">
-        <div>
-          <form class="details" @submit.prevent="editUser">
-            <div class="form-group"><label for="user">User</label><input class="form-control" id="user" v-model="currentUser.user"></div>
-            <div class="form-group"><label for="email">Email</label><input class="form-control" id="email" v-model="currentUser.email"></div>
-            <div class="form-group">
-              <label for="country">Country</label>
-              <select id="country"  class="form-control" 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="role">Role</label>
-              <select id="role"  class="form-control" 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 class="btn btn-primary pull-right">Submit</button>
-          </form>
-        </div>
-      </div>
+        <form>
+          <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";
-.userdetail {
-  text-align: left !important;
+
+.userdetails {
+  margin-top: 20px;
+  width: 50vw;
 }
-.details {
-  width: 30vw;
-  height: 45vh;
-}
-.name,
-.mail,
-.country,
-.role {
-  padding-right: $large-offset;
+
+.shadow {
+  box-shadow: $basic-shadow-light !important;
 }
 </style>
 <script>
-import { HTTP } from "../lib/http";
-import app from "../main";
-import store from "../store";
-
 export default {
   name: "userdetail",
-  props: ["user"],
-  data() {
-    return {
-      currentUser: Object.assign({}, this.user),
-      show: false
-    };
-  },
-  computed: {
-    collapseStyle() {
-      return {
-        collapse: true,
-        show: this.show
-      };
-    }
-  },
-  methods: {
-    editUser() {
-      HTTP.put("/users/" + this.user.user, {
-        headers: { "X-Gemma-Auth": localStorage.getItem("token") }
-      })
-        .then(() => {
-          this.show = false;
-          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: "Backend Error",
-            message: `${status}: ${data}`
-          });
-        });
-    },
-    showDetails() {
-      this.show = !this.show;
-    }
-  }
+  props: ["currentUser"],
+  data() {},
+  computed: {},
+  methods: {}
 };
 </script>
--- a/client/src/main.js	Fri Aug 10 11:21:34 2018 +0200
+++ b/client/src/main.js	Fri Aug 10 11:21:58 2018 +0200
@@ -10,7 +10,6 @@
 import "../node_modules/font-awesome/css/font-awesome.min.css";
 import "../node_modules/ol/ol.css";
 import "../node_modules/cxlt-vue2-toastr/dist/css/cxlt-vue2-toastr.css";
-import "bootstrap";
 
 var toastrConfigs = {
   position: "bottom center",
--- a/client/src/views/Users.vue	Fri Aug 10 11:21:34 2018 +0200
+++ b/client/src/views/Users.vue	Fri Aug 10 11:21:58 2018 +0200
@@ -12,12 +12,28 @@
                 users
               </div>
               <div class="card-body">
-                <div class="accordion" v-for="user in this.users" v-bind:key="user.name">
-                  <Userdetail :user="user"></Userdetail>
-                </div>
-              </div>
+                <table class="table table-hover">
+                  <thead>
+                    <tr>
+                      <th scope="col">Username</th>
+                      <th scope="col">Country</th>
+                      <th scope="col">Email</th>
+                      <th scope="col">Role</th>
+                    </tr>
+                  </thead>
+                  <tbody>
+                  <tr v-for="user in users" :key="user.user" @click="selectUser(user.user)">
+                    <td>{{ user.user }}</td>
+                    <td>{{ user.country }}</td>
+                    <td>{{ user.email}}</td>
+                    <td>{{ user.role }}</td>
+                    </tr>
+                  </tbody>
+              </table>
+            </div>
           </div>
         </div>
+        <Userdetail v-bind:currentUser="currentUser"></Userdetail>
       </div>
     </div>
   </div>
@@ -61,6 +77,11 @@
 
 export default {
   name: "userview",
+  data() {
+    return {
+      currentUser: null
+    };
+  },
   components: {
     Sidebar,
     Userdetail
@@ -68,7 +89,12 @@
   computed: {
     ...mapGetters("usermanagement", ["users"])
   },
-  methods: {},
+  methods: {
+    selectUser(name) {
+      const user = this.$store.getters["usermanagement/getUserByName"](name);
+      this.currentUser = user;
+    }
+  },
   beforeRouteEnter(to, from, next) {
     store
       .dispatch("usermanagement/loadUsers")
--- a/client/yarn.lock	Fri Aug 10 11:21:34 2018 +0200
+++ b/client/yarn.lock	Fri Aug 10 11:21:58 2018 +0200
@@ -5195,10 +5195,6 @@
     isemail "3.x.x"
     topo "2.x.x"
 
-jquery@^3.3.1:
-  version "3.3.1"
-  resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.3.1.tgz#958ce29e81c9790f31be7792df5d4d95fc57fbca"
-
 js-base64@^2.1.8, js-base64@^2.1.9:
   version "2.4.5"
   resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.4.5.tgz#e293cd3c7c82f070d700fc7a1ca0a2e69f101f92"
@@ -6756,10 +6752,6 @@
   version "1.0.11"
   resolved "https://registry.yarnpkg.com/pofile/-/pofile-1.0.11.tgz#35aff58c17491d127a07336d5522ebc9df57c954"
 
-popper.js@^1.14.4:
-  version "1.14.4"
-  resolved "https://registry.yarnpkg.com/popper.js/-/popper.js-1.14.4.tgz#8eec1d8ff02a5a3a152dd43414a15c7b79fd69b6"
-
 portfinder@^1.0.13, portfinder@^1.0.9:
   version "1.0.13"
   resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.13.tgz#bb32ecd87c27104ae6ee44b5a3ccbf0ebb1aede9"