Continuing with species refactor
This commit is contained in:
parent
622cd0faaf
commit
9aed858982
8 changed files with 99 additions and 60 deletions
|
@ -25,11 +25,6 @@ export default DS.RESTAdapter.extend({
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
return new DS.InvalidError(errors);
|
return new DS.InvalidError(errors);
|
||||||
} else if (jqXHR && jqXHR.status === 500) {
|
|
||||||
var response = Ember.$.parseJSON(jqXHR.responseText);
|
|
||||||
if (response.error !== undefined) {
|
|
||||||
return new DS.InvalidError(response.error);
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
|
|
12
app/pods/components/forms/species-form/component.js
Normal file
12
app/pods/components/forms/species-form/component.js
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
import Ember from 'ember';
|
||||||
|
|
||||||
|
export default Ember.Component.extend({
|
||||||
|
actions: {
|
||||||
|
save: function() {
|
||||||
|
this.sendAction('save');
|
||||||
|
},
|
||||||
|
cancel: function() {
|
||||||
|
this.sendAction('cancel');
|
||||||
|
},
|
||||||
|
}
|
||||||
|
});
|
42
app/pods/components/forms/species-form/template.hbs
Normal file
42
app/pods/components/forms/species-form/template.hbs
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
<form class="grid-form">
|
||||||
|
<fieldset>
|
||||||
|
<legend><em>{{species.speciesName}}</em></legend>
|
||||||
|
<div data-row-span="2">
|
||||||
|
<div data-field-span="1">
|
||||||
|
<label>Species Name</label>
|
||||||
|
{{input value=species.speciesName}}
|
||||||
|
</div>
|
||||||
|
<div data-field-span="1">
|
||||||
|
<label>Type Species?</label>
|
||||||
|
{{input type="checkbox" checked=species.typeSpecies}} {{if species.typeSpecies 'Yes' 'No'}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div data-row-span="2">
|
||||||
|
<div data-field-span="2">
|
||||||
|
<label>Strains</label>
|
||||||
|
{{#each species.strains as |strain index|}}
|
||||||
|
{{if index ","}}
|
||||||
|
{{#link-to 'strains.show' strain.id}}
|
||||||
|
{{{strain.strainNameMU}}}
|
||||||
|
{{/link-to}}
|
||||||
|
{{/each}}
|
||||||
|
{{add-button label="Add Strain" link="strains.new"}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div data-row-span="2">
|
||||||
|
<div data-field-span="2">
|
||||||
|
<label>Etymology</label>
|
||||||
|
{{textarea value=species.etymology cols="70" rows="5"}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</fieldset>
|
||||||
|
</form>
|
||||||
|
<br>
|
||||||
|
{{#if species.isDirty}}
|
||||||
|
<a class="button-green smaller" {{action 'save'}}>
|
||||||
|
Save
|
||||||
|
</a>
|
||||||
|
{{/if}}
|
||||||
|
<a class="button-red smaller" {{action 'cancel'}}>
|
||||||
|
Cancel
|
||||||
|
</a>
|
|
@ -4,15 +4,26 @@ export default Ember.Controller.extend({
|
||||||
actions: {
|
actions: {
|
||||||
save: function() {
|
save: function() {
|
||||||
let species = this.get('species');
|
let species = this.get('species');
|
||||||
|
|
||||||
if (species.get('isDirty')) {
|
if (species.get('isDirty')) {
|
||||||
species.save().then((species) => {
|
species.save().then((species) => {
|
||||||
this.transitionToRoute('species.show', species.get('id'));
|
this.transitionToRoute('species.show', species.get('id'));
|
||||||
}, (err) => {
|
}, (err) => {
|
||||||
this.get('flashMessages').error(err.message);
|
this.get('flashMessages').error(err.responseJSON.error);
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
this.transitionToRoute('species.show', species.get('id'));
|
this.transitionToRoute('species.show', species.get('id'));
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
}
|
|
||||||
|
cancel: function() {
|
||||||
|
let species = this.get('species');
|
||||||
|
|
||||||
|
species.get('errors').clear();
|
||||||
|
species.rollback();
|
||||||
|
|
||||||
|
this.transitionToRoute('species.show', species.get('id'));
|
||||||
|
},
|
||||||
|
|
||||||
|
},
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,37 +1,6 @@
|
||||||
<form class="grid-form">
|
{{
|
||||||
<fieldset>
|
forms/species-form
|
||||||
<legend><em>{{species.speciesName}}</em></legend>
|
species=species
|
||||||
<div data-row-span="2">
|
save="save"
|
||||||
<div data-field-span="1">
|
cancel="cancel"
|
||||||
<label>Species Name</label>
|
}}
|
||||||
{{input value=species.speciesName}}
|
|
||||||
</div>
|
|
||||||
<div data-field-span="1">
|
|
||||||
<label>Type Species?</label>
|
|
||||||
{{input type="checkbox" checked=species.typeSpecies}} {{if species.typeSpecies 'Yes' 'No'}}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div data-row-span="2">
|
|
||||||
<div data-field-span="2">
|
|
||||||
<label>Strains</label>
|
|
||||||
{{#each species.strains as |strain index|}}
|
|
||||||
{{if index ","}}
|
|
||||||
{{#link-to 'strains.show' strain.id}}
|
|
||||||
{{{strain.strainNameMU}}}
|
|
||||||
{{/link-to}}
|
|
||||||
{{/each}}
|
|
||||||
{{add-button label="Add Strain" link="strains.new"}}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div data-row-span="2">
|
|
||||||
<div data-field-span="2">
|
|
||||||
<label>Etymology</label>
|
|
||||||
{{textarea value=species.etymology cols="70" rows="5"}}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</fieldset>
|
|
||||||
</form>
|
|
||||||
<br>
|
|
||||||
<a class="button-green smaller" {{action 'save'}}>
|
|
||||||
Save
|
|
||||||
</a>
|
|
||||||
|
|
|
@ -1,21 +1,30 @@
|
||||||
import Ember from 'ember';
|
import Ember from 'ember';
|
||||||
|
|
||||||
export default Ember.Controller.extend({
|
export default Ember.Controller.extend({
|
||||||
isEditing: true,
|
|
||||||
actions: {
|
actions: {
|
||||||
save: function() {
|
save: function() {
|
||||||
var species = this.get('model');
|
let species = this.get('species');
|
||||||
|
|
||||||
if (species.get('isDirty')) {
|
if (species.get('isDirty')) {
|
||||||
species.save();
|
species.save().then((species) => {
|
||||||
|
this.transitionToRoute('species.show', species.get('id'));
|
||||||
|
}, (err) => {
|
||||||
|
this.get('flashMessages').error(err.responseJSON.error);
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
this.transitionToRoute('species.index');
|
||||||
}
|
}
|
||||||
this.transitionToRoute('species.index');
|
|
||||||
},
|
},
|
||||||
|
|
||||||
cancel: function() {
|
cancel: function() {
|
||||||
var species = this.get('model');
|
let species = this.get('species');
|
||||||
|
|
||||||
if (species.get('isNew')) {
|
if (species.get('isNew')) {
|
||||||
species.deleteRecord();
|
species.deleteRecord();
|
||||||
}
|
}
|
||||||
|
|
||||||
this.transitionToRoute('species.index');
|
this.transitionToRoute('species.index');
|
||||||
}
|
},
|
||||||
}
|
|
||||||
|
},
|
||||||
});
|
});
|
||||||
|
|
|
@ -3,11 +3,13 @@ import AuthenticatedRouteMixin from 'simple-auth/mixins/authenticated-route-mixi
|
||||||
|
|
||||||
export default Ember.Route.extend(AuthenticatedRouteMixin, {
|
export default Ember.Route.extend(AuthenticatedRouteMixin, {
|
||||||
model: function() {
|
model: function() {
|
||||||
return this.store.createRecord('species');
|
return Ember.RSVP.hash({
|
||||||
|
species: this.store.createRecord('species'),
|
||||||
|
});
|
||||||
},
|
},
|
||||||
actions: {
|
|
||||||
cancelSpecies: function() {
|
setupController: function(controller, model) {
|
||||||
this.transitionTo('species.index');
|
controller.setProperties(model);
|
||||||
}
|
},
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
{{
|
{{
|
||||||
species-details
|
forms/species-form
|
||||||
species=model
|
species=species
|
||||||
isEditing=true
|
|
||||||
save="save"
|
save="save"
|
||||||
cancel="cancel"
|
cancel="cancel"
|
||||||
}}
|
}}
|
||||||
|
|
Reference in a new issue