From 633050847db8c03619ced3793988f6c7839c18f1 Mon Sep 17 00:00:00 2001
From: Hermann <blumh@student.ethz.ch>
Date: Fri, 18 May 2018 18:49:43 +0200
Subject: [PATCH] validate creation forms at beginning to show required fields

---
 src/views/editView.js | 47 ++++++++++++++++++++++++-------------------
 1 file changed, 26 insertions(+), 21 deletions(-)

diff --git a/src/views/editView.js b/src/views/editView.js
index c310a37..9c05ed2 100644
--- a/src/views/editView.js
+++ b/src/views/editView.js
@@ -62,6 +62,7 @@ export default class EditView extends ItemView {
       });
       // delete objectSchema.properties['_id'];
       console.log(this.ajv.addSchema(objectSchema, 'schema'));
+      this.validate();
     }).catch((error) => { console.log(error); });
   }
 
@@ -78,27 +79,7 @@ export default class EditView extends ItemView {
 
         console.log(this.data);
 
-        // validate against schema
-        const validate = this.ajv.getSchema('schema');
-        // sometimes the schema loading does not work or is not finished
-        // before the first edit, this is to prevent crashes
-        if (validate) {
-          this.valid = validate(this.data);
-
-          console.log(validate.errors);
-          if (this.valid) {
-            Object.keys(this.errors).forEach((field) => {
-              this.errors[field] = [];
-            });
-          } else {
-            // get errors for respective fields
-            Object.keys(this.errors).forEach((field) => {
-              const errors = validate.errors.filter(error =>
-                `.${field}` === error.dataPath);
-              this.errors[field] = errors.map(error => error.message);
-            });
-          }
-        }
+        this.validate();
       },
       getErrors: () => this.errors[attrs.name],
       value: this.data[attrs.name],
@@ -109,6 +90,30 @@ export default class EditView extends ItemView {
     return boundFormelement;
   }
 
+  validate() {
+    // validate against schema
+    const validate = this.ajv.getSchema('schema');
+    // sometimes the schema loading does not work or is not finished
+    // before the first edit, this is to prevent crashes
+    if (validate) {
+      this.valid = validate(this.data);
+      console.log(validate.errors);
+      if (this.valid) {
+        Object.keys(this.errors).forEach((field) => {
+          this.errors[field] = [];
+        });
+      } else {
+        // get errors for respective fields
+        Object.keys(this.errors).forEach((field) => {
+          const errors = validate.errors.filter(error =>
+            `.${field}` === error.dataPath);
+          this.errors[field] = errors.map(error => error.message);
+        });
+      }
+    }
+    m.redraw();
+  }
+
   renderPage(page) {
     return Object.keys(page).map((key) => {
       const field = page[key];
-- 
GitLab