From 78f037909aa5d99f50cb8ece6dbdc12971f6716a Mon Sep 17 00:00:00 2001 From: Vincent Fiduccia Date: Fri, 28 Aug 2015 12:09:20 -0700 Subject: [PATCH] Show errors better for certificates --- app/mixins/new-or-edit.js | 53 ++-------------------- app/services/growl.js | 68 +--------------------------- app/utils/errors.js | 94 +++++++++++++++++++++++++++++++++++++++ package.json | 2 +- 4 files changed, 101 insertions(+), 116 deletions(-) create mode 100644 app/utils/errors.js diff --git a/app/mixins/new-or-edit.js b/app/mixins/new-or-edit.js index c60bbf048..b6179ffed 100644 --- a/app/mixins/new-or-edit.js +++ b/app/mixins/new-or-edit.js @@ -1,6 +1,6 @@ import Ember from 'ember'; -import ApiError from 'ember-api-store/models/error'; import Resource from 'ember-api-store/models/resource'; +import Errors from 'ui/utils/errors'; export default Ember.Mixin.create({ originalModel: null, @@ -31,26 +31,10 @@ export default Ember.Mixin.create({ actions: { error: function(err) { - if ( err instanceof ApiError ) + if (err) { - if ( err.get('status') === 422 ) - { - this.send('apiValidationError',err); - } - else - { - var str = err.get('message'); - if ( err.get('detail') ) - { - str += ' (' + err.get('detail') + ')'; - } - - this.set('errors', [str]); - } - } - else if (err) - { - this.set('errors', [err]); + var body = Errors.stringify(err); + this.set('errors', [body]); } else { @@ -58,35 +42,6 @@ export default Ember.Mixin.create({ } }, - apiValidationError: function(err) { - var str = 'Validation failed in API:'; - var something = false; - if ( err.get('fieldName') ) - { - str += ' ' + err.get('fieldName'); - something = true; - } - - if ( err.get('detail') ) - { - str += ' (' + err.get('detail') + ')'; - something = true; - } - - if ( !something ) - { - str += ' (' + err.get('code') + ')'; - } - - switch ( err.get('code') ) - { - case 'NotUnique': - str += ' is not unique'; break; - } - - this.set('errors', [str]); - }, - save: function() { var self = this; diff --git a/app/services/growl.js b/app/services/growl.js index 80881db0a..3be835413 100644 --- a/app/services/growl.js +++ b/app/services/growl.js @@ -1,5 +1,5 @@ import Ember from 'ember'; -import ApiError from 'ember-api-store/models/error'; +import Errors from 'ui/utils/errors'; export default Ember.Service.extend({ init: function() { @@ -39,71 +39,7 @@ export default Ember.Service.extend({ }, fromError: function(title, err) { - // @TODO centralize all this with other places that do error handling... - var body; - if ( typeof err === 'string' ) - { - body = err; - } - else if ( err instanceof ApiError ) - { - if ( err.get('status') === 422 ) - { - body = 'Validation failed:'; - var something = false; - if ( err.get('fieldName') ) - { - body += ' ' + err.get('fieldName'); - something = true; - } - - if ( err.get('detail') ) - { - body += ' (' + err.get('detail') + ')'; - something = true; - } - - if ( !something ) - { - body += ' (' + err.get('code') + ')'; - } - - switch ( err.get('code') ) - { - case 'NotUnique': - body += ' is not unique'; break; - } - } - else - { - body =err.get('message'); - if ( err.get('detail') ) - { - body += ' (' + err.get('detail') + ')'; - } - } - } - else if ( typeof err === 'object' ) - { - if ( err.message ) - { - body = err.message; - if ( err.detail ) - { - body += ' (' + err.detail + ')'; - } - } - else if ( err.detail ) - { - body = err.detail; - } - } - else - { - // Good luck... - body = err; - } - + var body = Errors.stringify(err); this.error(title,body); }, }); diff --git a/app/utils/errors.js b/app/utils/errors.js new file mode 100644 index 000000000..1d18f7778 --- /dev/null +++ b/app/utils/errors.js @@ -0,0 +1,94 @@ +import ApiError from 'ember-api-store/models/error'; + +export default { + stringify(err) { + var str; + if ( typeof err === 'string' ) + { + str = err; + } + else if ( err instanceof ApiError ) + { + if ( err.get('status') === 422 ) + { + str = 'Validation failed in API:'; + var something = false; + if ( err.get('fieldName') ) + { + str += ' ' + err.get('fieldName'); + something = true; + } + + if ( err.get('detail') ) + { + str += ' (' + err.get('detail') + ')'; + something = true; + } + + if ( !something ) + { + if ( err.get('message') ) + { + str += ' ' + err.get('message'); + something = true; + } + } + + if ( !something ) + { + str += ' (' + err.get('code') + ')'; + } + + switch ( err.get('code') ) + { + case 'NotUnique': + str += ' is not unique'; break; + } + } + else + { + str = err.get('message'); + if ( err.get('detail') ) + { + if ( str ) + { + str += ' (' + err.get('detail') + ')'; + } + else + { + str = err.get('detail'); + } + } + } + } + else if ( typeof err === 'object' ) + { + if ( err.message ) + { + str = err.message; + if ( err.detail ) + { + if ( str ) + { + str += ' (' + err.detail + ')'; + } + else + { + str = err.detail; + } + } + } + else if ( err.detail ) + { + str = err.detail; + } + } + else + { + // Good luck... + str = err; + } + + return str; + }, +}; diff --git a/package.json b/package.json index a4bd19b1e..fd995ce0b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ui", - "version": "0.44.0", + "version": "0.45.0", "private": true, "directories": { "doc": "doc",