Cleaning up new species a bit

This commit is contained in:
Matthew Dillon 2015-06-03 16:43:47 -08:00
parent b58e86a3fd
commit 886fda6843
9 changed files with 82 additions and 26 deletions

View file

@ -3,18 +3,12 @@ import Ember from 'ember';
export default Ember.Component.extend({
classNames: ['grid-1'],
isEditing: false,
isNew: false,
actions: {
editSpecies: function() {
this.get('species').get('errors').clear();
if (this.get('isNew')) {
this.get('species').destroyRecord().then(this.sendAction());
}
this.toggleProperty('isEditing');
this.get('species').rollback();
save: function() {
this.sendAction('save');
},
cancel: function() {
this.sendAction('cancel');
},
saveSpecies: function() {
this.get('species').save().then(this.toggleProperty('isEditing'));
}
}
});

View file

@ -0,0 +1,5 @@
import SortableController from '../sortable';
export default SortableController.extend({
sortBy: 'speciesName',
});

View file

@ -0,0 +1,21 @@
import Ember from 'ember';
export default Ember.Controller.extend({
isEditing: true,
actions: {
save: function() {
var species = this.get('model');
if (species.get('isDirty')) {
species.save();
}
this.transitionToRoute('species.index');
},
cancel: function() {
var species = this.get('model');
if (species.get('isNew')) {
species.deleteRecord();
}
this.transitionToRoute('species.index');
}
}
});

View file

@ -0,0 +1,22 @@
import Ember from 'ember';
export default Ember.Controller.extend({
isEditing: false,
actions: {
save: function() {
var species = this.get('model');
if (species.get('isDirty')) {
species.save();
}
this.toggleProperty('isEditing');
},
cancel: function() {
if (this.get('isEditing')) {
var species = this.get('model');
species.get('errors').clear();
species.rollback();
}
this.toggleProperty('isEditing');
}
}
});

View file

@ -22,11 +22,15 @@
{{/link-to}}
{{/each}}
{{#if (can "edit species" species)}}
{{#if species.isNew}}
PENDING SAVE
{{else}}
<br>
{{#link-to 'strains.new' class="button-gray smaller"}}
Add Strain
{{/link-to}}
{{/if}}
{{/if}}
</dd>
</dl>
<dl class="span-2">
@ -78,11 +82,11 @@
<div class="grid-4">
<div class="span-1">
{{! Does nothing ATM }}
<a {{bind-attr class=":smaller isEditing:button-red:button-gray"}} {{action 'editSpecies'}}>
<a {{bind-attr class=":smaller isEditing:button-red:button-gray"}} {{action 'cancel'}}>
{{#if isEditing}}Cancel{{else}}Edit{{/if}}
</a>
{{#if isEditing}}
<a class="button-green smaller" {{action 'saveSpecies'}}>
<a class="button-green smaller" {{action 'save'}}>
Save
</a>
{{/if}}

View file

@ -1 +1,7 @@
{{species/species-details species=model isEditing=true isNew=true action="cancelSpecies"}}
{{
species/species-details
species=model
isEditing=true
save="save"
cancel="cancel"
}}

View file

@ -1 +1,7 @@
{{species/species-details species=model}}
{{
species/species-details
species=model
isEditing=isEditing
save="save"
cancel="cancel"
}}

View file

@ -80,7 +80,8 @@ module.exports = function(app) {
});
speciesRouter.post('/', function(req, res) {
res.status(201).end();
req.body.species.id = Math.max.apply(Math, SPECIES.map(function(o){return o.id;})) + 1;
res.status(201).send(req.body);
});
speciesRouter.get('/:id', function(req, res) {
@ -93,11 +94,7 @@ module.exports = function(app) {
});
speciesRouter.put('/:id', function(req, res) {
res.send({
'species': {
id: req.params.id
}
});
res.send(req.body);
});
speciesRouter.delete('/:id', function(req, res) {

View file

@ -92,7 +92,8 @@ module.exports = function(app) {
});
strainsRouter.post('/', function(req, res) {
res.status(201).end();
req.body.strain.id = Math.max.apply(Math, STRAINS.map(function(o){return o.id;})) + 1;
res.status(201).send(req.body);
});
strainsRouter.get('/:id', function(req, res) {