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