Refactor species edit

This commit is contained in:
Matthew Ryan Dillon 2015-11-03 11:27:22 -07:00
parent d1e3d05db2
commit 4dbfb73b3c
8 changed files with 60 additions and 41 deletions

View file

@ -1,29 +1,31 @@
import Ember from 'ember';
import ajaxError from '../../../../utils/ajax-error';
export default Ember.Controller.extend({
const { Controller } = Ember;
export default Controller.extend({
actions: {
save: function() {
let species = this.get('model');
const model = this.get('model');
if (species.get('hasDirtyAttributes')) {
species.save().then((species) => {
this.transitionToRoute('protected.species.show', species);
if (model.get('hasDirtyAttributes')) {
model.save().then((model) => {
this.transitionToRoute('protected.species.show', model);
}, () => {
ajaxError(species.get('errors'), this.get('flashMessages'));
ajaxError(model.get('errors'), this.get('flashMessages'));
});
} else {
this.transitionToRoute('protected.species.show', species);
this.transitionToRoute('protected.species.show', model);
}
},
cancel: function() {
let species = this.get('model');
const model = this.get('model');
species.get('errors').clear();
species.rollbackAttributes();
model.get('errors').clear();
model.rollbackAttributes();
this.transitionToRoute('protected.species.show', species);
this.transitionToRoute('protected.species.show', model);
},
},

View file

@ -1,7 +1,9 @@
import Ember from 'ember';
export default Ember.Route.extend({
currentUser: Ember.inject.service('session-account'),
const { Route, inject: { service } } = Ember;
export default Route.extend({
currentUser: service('session-account'),
beforeModel: function(transition) {
this._super(transition);
@ -12,17 +14,10 @@ export default Ember.Route.extend({
});
},
afterModel: function(species) {
if (!species.get('canEdit')) {
this.transitionTo('species.show', species.get('id'));
afterModel: function(model) {
if (!model.get('canEdit')) {
this.transitionTo('species.show', model.get('id'));
}
},
setupController: function(controller, model) {
controller.set('model', model);
this.get('currentUser.account').then((user) => {
controller.set('metaData', user.get('metaData'));
});
},
});

View file

@ -1,7 +1,6 @@
{{
protected/species/species-form
species=model
metaData=metaData
save="save"
cancel="cancel"
on-save=(action "save")
on-cancel=(action "cancel")
}}

View file

@ -1,17 +1,27 @@
import Ember from 'ember';
const { Component } = Ember;
const { Component, inject: { service } } = Ember;
export default Component.extend({
currentUser: service('session-account'),
species: null,
"on-save": null,
"on-cancel": null,
setupMetaDataOnInit: Ember.on('init', function() {
this.get('currentUser.account').then((user) => {
this.set('metaData', user.get('metaData'));
});
}),
actions: {
save: function() {
this.sendAction('save');
return this.attrs['on-save']();
},
cancel: function() {
this.sendAction('cancel');
return this.attrs['on-cancel']();
},
}
});

View file

@ -4,7 +4,7 @@
<div data-row-span="2">
<div data-field-span="1">
<label>Species Name</label>
{{input value=species.speciesName}}
{{input value=species.speciesName class="species-name"}}
</div>
<div data-field-span="1">
<label>Type Species?</label>
@ -38,7 +38,7 @@
Cancel
</a>
{{#if species.hasDirtyAttributes}}
<button type="submit" class="button-green smaller">
<button type="submit" class="button-green smaller save-species">
Save
</button>
{{/if}}