From cd0880caf290957137618239de1c7312d17f2e8b Mon Sep 17 00:00:00 2001
From: Hermann <blumh@ethz.ch>
Date: Tue, 12 Feb 2019 22:43:24 +0100
Subject: [PATCH] working changes for updated ui-components in user edit

---
 package.json          |  4 ++--
 src/users/editUser.js | 54 +++----------------------------------------
 src/views/editView.js | 12 ++++++----
 3 files changed, 12 insertions(+), 58 deletions(-)

diff --git a/package.json b/package.json
index 5b93f92..9c24085 100644
--- a/package.json
+++ b/package.json
@@ -18,14 +18,14 @@
     "@material/drawer": "^0.30.0",
     "@material/select": "^0.35.1",
     "ajv": "^5.5.0",
-    "amiv-web-ui-components": "git+https://git@gitlab.ethz.ch/amiv/web-ui-components.git#b1fb1eba5b149a7f083c70b949437a067fee8e5d",
+    "amiv-web-ui-components": "git+https://git@gitlab.ethz.ch/amiv/web-ui-components.git#441f87aa23892fd6e92d878aa9f7725cf9e385ea",
     "axios": "^0.17.1",
     "client-oauth2": "^4.2.0",
     "mithril": "^1.1.6",
     "mithril-infinite": "^1.2.4",
     "polythene-core-css": "^1.2.0",
     "polythene-css": "^1.2.0",
-    "polythene-mithril": "^1.2.0",
+    "polythene-mithril": "^1.5.2",
     "querystring": "^0.2.0"
   },
   "devDependencies": {
diff --git a/src/users/editUser.js b/src/users/editUser.js
index 48f1cc4..4b7dbf0 100644
--- a/src/users/editUser.js
+++ b/src/users/editUser.js
@@ -5,19 +5,6 @@ import { apiUrl } from 'networkConfig';
 import EditView from '../views/editView';
 
 export default class UserEdit extends EditView {
-  constructor(vnode) {
-    super(vnode);
-    this.pw = new Form();
-  }
-
-  oninit() {
-    // load schema
-    m.request(`${apiUrl}/docs/api-docs`).then((schema) => {
-      this.pw.setSchema(JSON.parse(JSON.stringify(schema.definitions.User)));
-      this.form.setSchema(schema.definitions.User);
-    }).catch((error) => { console.log(error); });
-  }
-
   beforeSubmit() {
     if ('rfid' in this.form.data && !this.form.data.rfid) delete this.form.data.rfid;
     this.submit();
@@ -25,51 +12,16 @@ export default class UserEdit extends EditView {
 
   view() {
     const style = 'display: inline-block; vertical-align: top; padding-right: 80px';
+    if (!this.form.schema) return '';
     return this.layout([
-      ...this.form.renderPage({
-        lastname: { type: 'text', label: 'Last Name' },
-        firstname: { type: 'text', label: 'First Name' },
-        email: { type: 'text', label: 'Email' },
-        nethz: { type: 'text', label: 'NETHZ' },
-      }),
+      ...this.form.renderSchema(['lastname', 'firstname', 'email', 'nethz']),
       m(TextInput, this.form.bind({
         type: 'password',
         name: 'password',
         label: 'New password',
         floatingLabel: true,
       })),
-      ...this.form.renderPage({
-        rfid: { type: 'text', label: 'RFID Code' },
-      }),
-      m(
-        'div', { style },
-        m(RadioGroup, {
-          name: 'Membership',
-          default: this.form.data.membership,
-          values: [
-            {
-              value: 'none',
-              label: 'No Member',
-            },
-            {
-              value: 'regular',
-              label: 'Regular AMIV Member',
-            },
-            {
-              value: 'extraordinary',
-              label: 'Extraordinary Member',
-            },
-            {
-              value: 'honorary',
-              label: 'Honorary Member',
-            },
-          ],
-          onchange: (value) => {
-            this.form.data.membership = value;
-            this.form.validate();
-          },
-        }),
-      ),
+      ...this.form.renderSchema(['rfid', 'membership']),
       m(
         'div', { style },
         m(RadioGroup, {
diff --git a/src/views/editView.js b/src/views/editView.js
index c0f6c0c..dee034d 100644
--- a/src/views/editView.js
+++ b/src/views/editView.js
@@ -35,7 +35,7 @@ export default class EditView extends ItemView {
     // the form is valid in case that the item controller is in edit mode
     const validInitially = this.controller.modus === 'edit';
     // start a form to collect the submit data
-    this.form = new Form({}, validInitially, Object.assign({}, this.controller.data));
+    this.form = new Form({}, validInitially, 0, Object.assign({}, this.controller.data));
   }
 
   oninit() {
@@ -102,10 +102,12 @@ export default class EditView extends ItemView {
           events: { onclick: () => { this.beforeSubmit(); } },
         }),
       ]),
-      wrapInContainer && m('div.maincontainer', {
-        style: { height: 'calc(100vh - 130px)', 'overflow-y': 'scroll', padding: '10px' },
-      }, children),
-      !wrapInContainer && children,
+      ...!this.form.schema ? [''] : [
+        wrapInContainer && m('div.maincontainer', {
+          style: { height: 'calc(100vh - 130px)', 'overflow-y': 'scroll', padding: '10px' },
+        }, children),
+        !wrapInContainer && children,
+      ],
     ]);
   }
 }
-- 
GitLab