From f6ff171c90431e18482f535ee00ab39f68e27958 Mon Sep 17 00:00:00 2001 From: eduardohumberto Date: Fri, 4 May 2018 22:56:38 -0300 Subject: [PATCH] clear errors on item edition page --- .../components/edition/item-edition-form.vue | 182 +++++++++--------- src/js/event-bus-web-components.js | 17 +- 2 files changed, 101 insertions(+), 98 deletions(-) diff --git a/src/admin/components/edition/item-edition-form.vue b/src/admin/components/edition/item-edition-form.vue index 8615ce6ae..ae8c03490 100644 --- a/src/admin/components/edition/item-edition-form.vue +++ b/src/admin/components/edition/item-edition-form.vue @@ -1,22 +1,22 @@ @@ -295,7 +295,7 @@ export default { collectionId: Number, isLoading: false, fieldCollapses: [], - collapseAll: false, + collapseAll: false, form: { collectionId: Number, status: '', @@ -304,7 +304,7 @@ export default { }, thumbnail: {}, // Can be obtained from api later - statusOptions: [{ + statusOptions: [{ value: 'publish', label: this.$i18n.get('publish') }, { @@ -350,9 +350,9 @@ export default { this.isLoading = true; let data = {item_id: this.itemId, status: this.form.status}; - - this.updateItem(data).then(updatedItem => { - + + this.updateItem(data).then(updatedItem => { + this.item = updatedItem; // Fill this.form data with current data. @@ -365,10 +365,10 @@ export default { this.$router.push(this.$routerHelper.getItemPath(this.form.collectionId, this.itemId)); }) .catch((errors) => { - for (let error of errors.errors) { - for (let field of Object.keys(error)){ + for (let error of errors.errors) { + for (let field of Object.keys(error)){ eventBus.errors.push({ field_id: field, errors: error[field]}); - } + } } this.formErrorMessage = errors.error_message; @@ -380,7 +380,7 @@ export default { this.isLoading = true; // Creates draft Item - let data = {collection_id: this.form.collectionId, status: 'auto-draft'}; + let data = {collection_id: this.form.collectionId, status: 'auto-draft'}; this.sendItem(data).then(res => { this.itemId = res.id; @@ -395,11 +395,11 @@ export default { this.form.document_type = this.item.document_type; this.loadMetadata(); - + }) .catch(error => this.$console.error(error)); }, - loadMetadata() { + loadMetadata() { // Obtains Item Field this.fetchFields(this.itemId).then((fields) => { this.isLoading = false; @@ -407,13 +407,13 @@ export default { this.fieldCollapses.push(false); } }); - }, + }, setFileDocument(event) { this.fileMediaFrame.openFrame(event); }, setTextDocument() { this.isTextModalActive = true; - }, + }, confirmTextWriting() { this.isTextModalActive = false; this.form.document_type = 'text'; @@ -451,7 +451,7 @@ export default { }) .catch((error) => { this.$console.error(error); - }); + }); }, initializeMediaFrames() { @@ -472,7 +472,7 @@ export default { let oldThumbnail = this.item.thumbnail; if (item.document_type == 'attachment' && oldThumbnail != item.thumbnail ) this.item.thumbnail = item.thumbnail; - + }) .catch(error => this.$console.error(error)); } @@ -515,7 +515,7 @@ export default { for (let i = 0; i < this.fieldCollapses.length; i++) this.fieldCollapses[i] = this.collapseAll; - + } }, computed: { @@ -529,6 +529,8 @@ export default { created(){ // Obtains collection ID this.cleanFields(); + eventBus.clearAllErrors(); + this.formErrorMessage = ''; this.collectionId = this.$route.params.collectionId; this.form.collectionId = this.collectionId; @@ -545,7 +547,7 @@ export default { this.fetchItem(this.itemId).then(res => { this.item = res; - + // Fill this.form data with current data. this.form.status = this.item.status; this.form.document = this.item.document; @@ -561,8 +563,8 @@ export default { // Fetch current existing attachments this.fetchAttachments(this.itemId); } - - + + } } @@ -570,8 +572,8 @@ export default { - - diff --git a/src/js/event-bus-web-components.js b/src/js/event-bus-web-components.js index 44d5741d0..965562de6 100644 --- a/src/js/event-bus-web-components.js +++ b/src/js/event-bus-web-components.js @@ -23,13 +23,13 @@ export const eventBus = new Vue({ const components = this.getAllComponents(); for (let eventElement of components){ eventElement.addEventListener('input', (event) => { - + if (event.detail && event.detail[0] ){ - this.updateValue({ - item_id: $(eventElement).attr("item_id"), - field_id: $(eventElement).attr("field_id"), + this.updateValue({ + item_id: $(eventElement).attr("item_id"), + field_id: $(eventElement).attr("field_id"), values: event.detail - }) + }) } }); } @@ -39,7 +39,7 @@ export const eventBus = new Vue({ let values = ( Array.isArray( data.values[0] ) ) ? data.values[0] : data.values ; const promisse = this.$store.dispatch('item/updateMetadata', { item_id: data.item_id, field_id: data.field_id, values: values }); - + promisse.then( () => { let index = this.errors.findIndex( errorItem => errorItem.field_id == data.field_id ); if ( index >= 0){ @@ -66,6 +66,9 @@ export const eventBus = new Vue({ let error = this.errors.find( errorItem => errorItem.field_id == field_id ); return ( error ) ? error.errors : false }, + clearAllErrors(){ + this.errors = []; + }, setValues(){ const field = this.$store.getters['item/getMetadata']; if( field ){ @@ -107,4 +110,4 @@ export const eventBus = new Vue({ } } -}); \ No newline at end of file +});