Show errors better for certificates

This commit is contained in:
Vincent Fiduccia 2015-08-28 12:09:20 -07:00
parent cc3b0dfb3c
commit 78f037909a
4 changed files with 101 additions and 116 deletions

View File

@ -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;

View File

@ -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);
},
});

94
app/utils/errors.js Normal file
View File

@ -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;
},
};

View File

@ -1,6 +1,6 @@
{
"name": "ui",
"version": "0.44.0",
"version": "0.45.0",
"private": true,
"directories": {
"doc": "doc",