From 6d04a8a6c88d309b6dd1fa1233437cd64b312acd Mon Sep 17 00:00:00 2001 From: Matthew Dillon Date: Wed, 17 Jun 2015 14:47:40 -0800 Subject: [PATCH 01/12] init clostridium --- README.md | 2 +- app/index.html | 6 +++--- app/pods/about/template.hbs | 2 +- bower.json | 2 +- config/environment.js | 6 +++--- divshot.json | 2 +- package.json | 4 ++-- server/mocks/characteristic-types.js | 2 +- server/mocks/characteristics.js | 2 +- server/mocks/measurements.js | 2 +- server/mocks/species.js | 10 +++++----- server/mocks/strains.js | 2 +- tests/index.html | 6 +++--- 13 files changed, 24 insertions(+), 24 deletions(-) diff --git a/README.md b/README.md index 16e11f0..b56745d 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# hymenobacterdotinfo +# clostridiumdotinfo Detailed information to come --- for now see the ember-cli boilerplate below. diff --git a/app/index.html b/app/index.html index f75c736..a35ee85 100644 --- a/app/index.html +++ b/app/index.html @@ -3,7 +3,7 @@ - Hymenobacterdotinfo + clostridiumdotinfo @@ -12,7 +12,7 @@ {{content-for 'head'}} - + {{content-for 'head-footer'}} @@ -20,7 +20,7 @@ {{content-for 'body'}} - + {{content-for 'body-footer'}} diff --git a/app/pods/about/template.hbs b/app/pods/about/template.hbs index 2b95e93..b583288 100644 --- a/app/pods/about/template.hbs +++ b/app/pods/about/template.hbs @@ -1,3 +1,3 @@
-

This is some information about hymenobacter.info

+

This is some information about clostridium.info

diff --git a/bower.json b/bower.json index 6aa21fe..7eac921 100644 --- a/bower.json +++ b/bower.json @@ -1,5 +1,5 @@ { - "name": "hymenobacterdotinfo", + "name": "clostridiumdotinfo", "dependencies": { "jquery": "~2.1.1", "ember": "1.12.0", diff --git a/config/environment.js b/config/environment.js index e71d629..78196ba 100644 --- a/config/environment.js +++ b/config/environment.js @@ -2,7 +2,7 @@ module.exports = function(environment) { var ENV = { - modulePrefix: 'hymenobacterdotinfo', + modulePrefix: 'clostridiumdotinfo', environment: environment, baseURL: '/', locationType: 'auto', @@ -12,9 +12,9 @@ module.exports = function(environment) { } }, APP: { - genus: 'hymenobacter', + genus: 'clostridium', }, - podModulePrefix: 'hymenobacterdotinfo/pods', + podModulePrefix: 'clostridiumdotinfo/pods', 'simple-auth': { session: 'session:custom', authorizer: 'simple-auth-authorizer:token', diff --git a/divshot.json b/divshot.json index f879f3c..97f0047 100644 --- a/divshot.json +++ b/divshot.json @@ -1,5 +1,5 @@ { - "name": "hymenobacterdotinfo", + "name": "clostridiumdotinfo", "root": "./dist", "routes": { "/tests": "tests/index.html", diff --git a/package.json b/package.json index f39391f..edb726a 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { - "name": "hymenobacterdotinfo", + "name": "clostridiumdotinfo", "version": "0.0.0", - "description": "Small description for hymenobacterdotinfo goes here", + "description": "Small description for clostridiumdotinfo goes here", "private": true, "directories": { "doc": "doc", diff --git a/server/mocks/characteristic-types.js b/server/mocks/characteristic-types.js index 906a454..15405ef 100644 --- a/server/mocks/characteristic-types.js +++ b/server/mocks/characteristic-types.js @@ -77,5 +77,5 @@ module.exports = function(app) { res.status(204).end(); }); - app.use('/api/hymenobacter/characteristicTypes', characteristicTypesRouter); + app.use('/api/clostridium/characteristicTypes', characteristicTypesRouter); }; diff --git a/server/mocks/characteristics.js b/server/mocks/characteristics.js index 3be513c..170e6b9 100644 --- a/server/mocks/characteristics.js +++ b/server/mocks/characteristics.js @@ -109,5 +109,5 @@ module.exports = function(app) { res.status(204).end(); }); - app.use('/api/hymenobacter/characteristics', characteristicsRouter); + app.use('/api/clostridium/characteristics', characteristicsRouter); }; diff --git a/server/mocks/measurements.js b/server/mocks/measurements.js index e4e7fdc..64d4428 100644 --- a/server/mocks/measurements.js +++ b/server/mocks/measurements.js @@ -205,5 +205,5 @@ module.exports = function(app) { res.status(204).end(); }); - app.use('/api/hymenobacter/measurements', measurementsRouter); + app.use('/api/clostridium/measurements', measurementsRouter); }; diff --git a/server/mocks/species.js b/server/mocks/species.js index f3b0430..59ff57b 100644 --- a/server/mocks/species.js +++ b/server/mocks/species.js @@ -5,7 +5,7 @@ module.exports = function(app) { var SPECIES = [ { id: 1, - genusName: "Hymenobacter", + genusName: "Clostridium", speciesName: "One", typeSpecies: true, etymology: "Test Etymology", @@ -20,7 +20,7 @@ module.exports = function(app) { }, { id: 2, - genusName: "Hymenobacter", + genusName: "Clostridium", speciesName: "Two", typeSpecies: true, etymology: "Test Etymology", @@ -35,7 +35,7 @@ module.exports = function(app) { }, { id: 3, - genusName: "Hymenobacter", + genusName: "Clostridium", speciesName: "Three", typeSpecies: true, etymology: "Test Etymology", @@ -50,7 +50,7 @@ module.exports = function(app) { }, { id: 4, - genusName: "Hymenobacter", + genusName: "Clostridium", speciesName: "Four", typeSpecies: true, etymology: "Test Etymology", @@ -101,5 +101,5 @@ module.exports = function(app) { res.status(204).end(); }); - app.use('/api/hymenobacter/species', speciesRouter); + app.use('/api/clostridium/species', speciesRouter); }; diff --git a/server/mocks/strains.js b/server/mocks/strains.js index d6bfccf..0349cc3 100644 --- a/server/mocks/strains.js +++ b/server/mocks/strains.js @@ -126,5 +126,5 @@ module.exports = function(app) { res.status(204).end(); }); - app.use('/api/hymenobacter/strains', strainsRouter); + app.use('/api/clostridium/strains', strainsRouter); }; diff --git a/tests/index.html b/tests/index.html index 648f884..e32fd45 100644 --- a/tests/index.html +++ b/tests/index.html @@ -3,7 +3,7 @@ - Hymenobacterdotinfo Tests + clostridiumdotinfo Tests @@ -11,7 +11,7 @@ {{content-for 'test-head'}} - + {{content-for 'head-footer'}} @@ -23,7 +23,7 @@ {{content-for 'test-body'}} - + From 622cd0faaf69098fc5448f599193865c4326975d Mon Sep 17 00:00:00 2001 From: Matthew Dillon Date: Mon, 6 Jul 2015 11:02:41 -0800 Subject: [PATCH 02/12] Species edit refactor (wip) --- app/pods/application/adapter.js | 10 ++- .../components/species-details/component.js | 20 ----- .../components/species-details/template.hbs | 89 ------------------- app/pods/species/edit/controller.js | 18 ++++ app/pods/species/edit/route.js | 14 +++ app/pods/species/edit/template.hbs | 37 ++++++++ app/pods/species/index/route.js | 5 +- app/pods/species/index/template.hbs | 9 +- app/pods/species/show/route.js | 12 ++- app/pods/species/show/template.hbs | 64 +++++++++++-- app/router.js | 1 + 11 files changed, 155 insertions(+), 124 deletions(-) delete mode 100644 app/pods/components/species-details/component.js delete mode 100644 app/pods/components/species-details/template.hbs create mode 100644 app/pods/species/edit/controller.js create mode 100644 app/pods/species/edit/route.js create mode 100644 app/pods/species/edit/template.hbs diff --git a/app/pods/application/adapter.js b/app/pods/application/adapter.js index e979dec..c4b405b 100644 --- a/app/pods/application/adapter.js +++ b/app/pods/application/adapter.js @@ -5,10 +5,13 @@ export default DS.RESTAdapter.extend({ namespace: function() { return 'api/' + this.get('globals.genus'); }.property(), + host: function() { return this.get('globals.apiURL'); }.property(), + coalesceFindRequests: true, + ajaxError: function(jqXHR) { // http://stackoverflow.com/a/24027443 var error = this._super(jqXHR); @@ -22,8 +25,13 @@ export default DS.RESTAdapter.extend({ }); } 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 { return error; } - } + }, }); diff --git a/app/pods/components/species-details/component.js b/app/pods/components/species-details/component.js deleted file mode 100644 index 6070141..0000000 --- a/app/pods/components/species-details/component.js +++ /dev/null @@ -1,20 +0,0 @@ -import Ember from 'ember'; -import userCanEdit from '../../../utils/user-can-edit'; - -export default Ember.Component.extend({ - classNames: ['grid-1'], - isEditing: false, - - canEdit: function() { - return userCanEdit(this.get('session.currentUser'), this.get('species.createdBy')); - }.property('session.currentUser', 'species.createdBy').readOnly(), - - actions: { - save: function() { - this.sendAction('save'); - }, - cancel: function() { - this.sendAction('cancel'); - }, - } -}); diff --git a/app/pods/components/species-details/template.hbs b/app/pods/components/species-details/template.hbs deleted file mode 100644 index 813ada2..0000000 --- a/app/pods/components/species-details/template.hbs +++ /dev/null @@ -1,89 +0,0 @@ -
-
- - Species - {{#if isEditing}} - {{input value=species.speciesName}} - {{else}} - {{species.speciesName}} - {{/if}} - {{display-errors a=species.errors.speciesName}} - - - {{! ROW 1 }} -
-
-
Strains
-
- {{#each species.strains as |strain index|}} - {{if index ","}} - {{#link-to 'strains.show' strain.id}} - {{{strain.strainNameMU}}} - {{/link-to}} - {{/each}} - {{#unless species.isNew}} - {{add-button label="Add Strain" link="strains.new"}} - {{/unless}} -
-
-
-
Type Species?
-
- {{#if isEditing}} - {{input type="checkbox" checked=species.typeSpecies}} - {{/if}} - {{if species.typeSpecies 'Yes' 'No'}} - {{display-errors a=species.errors.typeSpecies}} -
-
-
- - {{! ROW 2 }} -
-
-
Etymology
-
- {{#if isEditing}} - {{textarea value=species.etymology cols="70" rows="3"}} - {{else}} - {{species.etymology}} - {{/if}} - {{display-errors a=species.errors.etymology}} -
-
-
- - {{! ROW 3 }} -
-
-
Record Created
-
{{null-time species.createdAt 'LL'}}
-
-
-
Record Updated
-
{{null-time species.updatedAt 'LL'}}
-
-
-
Record Deleted
-
{{null-time species.deletedAt 'LL'}}
-
-
-
- - {{! ROW 4 }} - {{#if canEdit}} -
- -
- {{/if}} -
-
diff --git a/app/pods/species/edit/controller.js b/app/pods/species/edit/controller.js new file mode 100644 index 0000000..d0925e2 --- /dev/null +++ b/app/pods/species/edit/controller.js @@ -0,0 +1,18 @@ +import Ember from 'ember'; + +export default Ember.Controller.extend({ + actions: { + save: function() { + let species = this.get('species'); + if (species.get('isDirty')) { + species.save().then((species) => { + this.transitionToRoute('species.show', species.get('id')); + }, (err) => { + this.get('flashMessages').error(err.message); + }); + } else { + this.transitionToRoute('species.show', species.get('id')); + } + }, + } +}); diff --git a/app/pods/species/edit/route.js b/app/pods/species/edit/route.js new file mode 100644 index 0000000..b73792b --- /dev/null +++ b/app/pods/species/edit/route.js @@ -0,0 +1,14 @@ +import Ember from 'ember'; +import AuthenticatedRouteMixin from 'simple-auth/mixins/authenticated-route-mixin'; + +export default Ember.Route.extend(AuthenticatedRouteMixin, { + model: function(params) { + return Ember.RSVP.hash({ + species: this.store.find('species', params.species_id), + }); + }, + + setupController: function(controller, model) { + controller.setProperties(model); + }, +}); diff --git a/app/pods/species/edit/template.hbs b/app/pods/species/edit/template.hbs new file mode 100644 index 0000000..39d135d --- /dev/null +++ b/app/pods/species/edit/template.hbs @@ -0,0 +1,37 @@ +
+
+ {{species.speciesName}} +
+
+ + {{input value=species.speciesName}} +
+
+ + {{input type="checkbox" checked=species.typeSpecies}} {{if species.typeSpecies 'Yes' 'No'}} +
+
+
+
+ + {{#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"}} +
+
+
+
+ + {{textarea value=species.etymology cols="70" rows="5"}} +
+
+
+
+
+ + Save + diff --git a/app/pods/species/index/route.js b/app/pods/species/index/route.js index d2ab490..b0968ba 100644 --- a/app/pods/species/index/route.js +++ b/app/pods/species/index/route.js @@ -5,10 +5,11 @@ export default Ember.Route.extend(AuthenticatedRouteMixin, { model: function() { return Ember.RSVP.hash({ species: this.store.findAll('species'), + strains: this.store.findAll('strain'), }); }, - setupController: function(controller, model) { - controller.setProperties(model); + setupController: function(controller, models) { + controller.setProperties(models); }, }); diff --git a/app/pods/species/index/template.hbs b/app/pods/species/index/template.hbs index 00454fb..225fa79 100644 --- a/app/pods/species/index/template.hbs +++ b/app/pods/species/index/template.hbs @@ -11,17 +11,18 @@ - {{#each sortedSpecies as |row|}} + {{#each sortedSpecies as |species|}} - {{#link-to 'species.show' row}} - {{row.speciesName}} + {{!-- use species.id to call show model hook --}} + {{#link-to 'species.show' species.id}} + {{species.speciesName}} {{/link-to}} - {{#each row.strains as |strain index|}} + {{#each species.strains as |strain index|}} {{if index ","}} {{#link-to 'strains.show' strain.id}} {{{strain.strainNameMU}}} diff --git a/app/pods/species/show/route.js b/app/pods/species/show/route.js index b3f843f..b73792b 100644 --- a/app/pods/species/show/route.js +++ b/app/pods/species/show/route.js @@ -1,4 +1,14 @@ import Ember from 'ember'; import AuthenticatedRouteMixin from 'simple-auth/mixins/authenticated-route-mixin'; -export default Ember.Route.extend(AuthenticatedRouteMixin, {}); +export default Ember.Route.extend(AuthenticatedRouteMixin, { + model: function(params) { + return Ember.RSVP.hash({ + species: this.store.find('species', params.species_id), + }); + }, + + setupController: function(controller, model) { + controller.setProperties(model); + }, +}); diff --git a/app/pods/species/show/template.hbs b/app/pods/species/show/template.hbs index b242fc5..0d1c47a 100644 --- a/app/pods/species/show/template.hbs +++ b/app/pods/species/show/template.hbs @@ -1,7 +1,57 @@ -{{ - species-details - species=model - isEditing=isEditing - save="save" - cancel="cancel" -}} +
+
+
+ + Species {{species.speciesName}} + + + {{! ROW 1 }} +
+
+
Strains
+
+ {{#each species.strains as |strain index|}} + {{if index ","}} + {{#link-to 'strains.show' strain.id}} + {{{strain.strainNameMU}}} + {{/link-to}} + {{/each}} +
+
+
+
Type Species?
+
+ {{if species.typeSpecies 'Yes' 'No'}} +
+
+
+ + {{! ROW 2 }} +
+
+
Etymology
+
+ {{species.etymology}} +
+
+
+ + {{! ROW 3 }} +
+
+
Record Created
+
{{null-time species.createdAt 'LL'}}
+
+
+
Record Updated
+
{{null-time species.updatedAt 'LL'}}
+
+
+
Record Deleted
+
{{null-time species.deletedAt 'LL'}}
+
+
+
+
+
+
diff --git a/app/router.js b/app/router.js index 27112b6..6f43b21 100644 --- a/app/router.js +++ b/app/router.js @@ -15,6 +15,7 @@ Router.map(function() { this.route('species', function() { this.route('new'); this.route('show', { path: ':species_id' }); + this.route('edit', { path: ':species_id/edit' }); }); this.route('strains', function() { this.route('new'); From 9aed8589825f2b8f24a0a7542a16478cf9f62fce Mon Sep 17 00:00:00 2001 From: Matthew Dillon Date: Tue, 7 Jul 2015 07:30:48 -0800 Subject: [PATCH 03/12] Continuing with species refactor --- app/pods/application/adapter.js | 5 --- .../forms/species-form/component.js | 12 ++++++ .../forms/species-form/template.hbs | 42 ++++++++++++++++++ app/pods/species/edit/controller.js | 15 ++++++- app/pods/species/edit/template.hbs | 43 +++---------------- app/pods/species/new/controller.js | 23 +++++++--- app/pods/species/new/route.js | 14 +++--- app/pods/species/new/template.hbs | 5 +-- 8 files changed, 99 insertions(+), 60 deletions(-) create mode 100644 app/pods/components/forms/species-form/component.js create mode 100644 app/pods/components/forms/species-form/template.hbs diff --git a/app/pods/application/adapter.js b/app/pods/application/adapter.js index c4b405b..bb89c25 100644 --- a/app/pods/application/adapter.js +++ b/app/pods/application/adapter.js @@ -25,11 +25,6 @@ export default DS.RESTAdapter.extend({ }); } 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 { return error; } diff --git a/app/pods/components/forms/species-form/component.js b/app/pods/components/forms/species-form/component.js new file mode 100644 index 0000000..0e5912c --- /dev/null +++ b/app/pods/components/forms/species-form/component.js @@ -0,0 +1,12 @@ +import Ember from 'ember'; + +export default Ember.Component.extend({ + actions: { + save: function() { + this.sendAction('save'); + }, + cancel: function() { + this.sendAction('cancel'); + }, + } +}); diff --git a/app/pods/components/forms/species-form/template.hbs b/app/pods/components/forms/species-form/template.hbs new file mode 100644 index 0000000..fda54bc --- /dev/null +++ b/app/pods/components/forms/species-form/template.hbs @@ -0,0 +1,42 @@ +
+
+ {{species.speciesName}} +
+
+ + {{input value=species.speciesName}} +
+
+ + {{input type="checkbox" checked=species.typeSpecies}} {{if species.typeSpecies 'Yes' 'No'}} +
+
+
+
+ + {{#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"}} +
+
+
+
+ + {{textarea value=species.etymology cols="70" rows="5"}} +
+
+
+
+
+{{#if species.isDirty}} + + Save + +{{/if}} + + Cancel + diff --git a/app/pods/species/edit/controller.js b/app/pods/species/edit/controller.js index d0925e2..ca6b05f 100644 --- a/app/pods/species/edit/controller.js +++ b/app/pods/species/edit/controller.js @@ -4,15 +4,26 @@ export default Ember.Controller.extend({ actions: { save: function() { let species = this.get('species'); + if (species.get('isDirty')) { species.save().then((species) => { this.transitionToRoute('species.show', species.get('id')); }, (err) => { - this.get('flashMessages').error(err.message); + this.get('flashMessages').error(err.responseJSON.error); }); } else { 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')); + }, + + }, }); diff --git a/app/pods/species/edit/template.hbs b/app/pods/species/edit/template.hbs index 39d135d..6a8db9b 100644 --- a/app/pods/species/edit/template.hbs +++ b/app/pods/species/edit/template.hbs @@ -1,37 +1,6 @@ -
-
- {{species.speciesName}} -
-
- - {{input value=species.speciesName}} -
-
- - {{input type="checkbox" checked=species.typeSpecies}} {{if species.typeSpecies 'Yes' 'No'}} -
-
-
-
- - {{#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"}} -
-
-
-
- - {{textarea value=species.etymology cols="70" rows="5"}} -
-
-
-
-
- - Save - +{{ + forms/species-form + species=species + save="save" + cancel="cancel" +}} diff --git a/app/pods/species/new/controller.js b/app/pods/species/new/controller.js index a289976..2781a83 100644 --- a/app/pods/species/new/controller.js +++ b/app/pods/species/new/controller.js @@ -1,21 +1,30 @@ import Ember from 'ember'; export default Ember.Controller.extend({ - isEditing: true, actions: { save: function() { - var species = this.get('model'); + let species = this.get('species'); + 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() { - var species = this.get('model'); + let species = this.get('species'); + if (species.get('isNew')) { species.deleteRecord(); } + this.transitionToRoute('species.index'); - } - } + }, + + }, }); diff --git a/app/pods/species/new/route.js b/app/pods/species/new/route.js index b9f79eb..e816ab5 100644 --- a/app/pods/species/new/route.js +++ b/app/pods/species/new/route.js @@ -3,11 +3,13 @@ import AuthenticatedRouteMixin from 'simple-auth/mixins/authenticated-route-mixi export default Ember.Route.extend(AuthenticatedRouteMixin, { model: function() { - return this.store.createRecord('species'); + return Ember.RSVP.hash({ + species: this.store.createRecord('species'), + }); }, - actions: { - cancelSpecies: function() { - this.transitionTo('species.index'); - } - } + + setupController: function(controller, model) { + controller.setProperties(model); + }, + }); diff --git a/app/pods/species/new/template.hbs b/app/pods/species/new/template.hbs index f38417f..6a8db9b 100644 --- a/app/pods/species/new/template.hbs +++ b/app/pods/species/new/template.hbs @@ -1,7 +1,6 @@ {{ - species-details - species=model - isEditing=true + forms/species-form + species=species save="save" cancel="cancel" }} From 4bbf9318533cee95ac94964e4428b7945f0b8b78 Mon Sep 17 00:00:00 2001 From: Matthew Dillon Date: Tue, 7 Jul 2015 08:38:05 -0800 Subject: [PATCH 04/12] Going back to model reference --- app/pods/species/edit/controller.js | 4 ++-- app/pods/species/edit/route.js | 12 +----------- app/pods/species/edit/template.hbs | 2 +- app/pods/species/index/template.hbs | 3 +-- app/pods/species/new/controller.js | 4 ++-- app/pods/species/new/route.js | 8 +------- app/pods/species/new/template.hbs | 2 +- app/pods/species/show/controller.js | 22 ---------------------- app/pods/species/show/route.js | 12 +----------- app/pods/species/show/template.hbs | 14 +++++++------- 10 files changed, 17 insertions(+), 66 deletions(-) delete mode 100644 app/pods/species/show/controller.js diff --git a/app/pods/species/edit/controller.js b/app/pods/species/edit/controller.js index ca6b05f..463392e 100644 --- a/app/pods/species/edit/controller.js +++ b/app/pods/species/edit/controller.js @@ -3,7 +3,7 @@ import Ember from 'ember'; export default Ember.Controller.extend({ actions: { save: function() { - let species = this.get('species'); + let species = this.get('model'); if (species.get('isDirty')) { species.save().then((species) => { @@ -17,7 +17,7 @@ export default Ember.Controller.extend({ }, cancel: function() { - let species = this.get('species'); + let species = this.get('model'); species.get('errors').clear(); species.rollback(); diff --git a/app/pods/species/edit/route.js b/app/pods/species/edit/route.js index b73792b..b3f843f 100644 --- a/app/pods/species/edit/route.js +++ b/app/pods/species/edit/route.js @@ -1,14 +1,4 @@ import Ember from 'ember'; import AuthenticatedRouteMixin from 'simple-auth/mixins/authenticated-route-mixin'; -export default Ember.Route.extend(AuthenticatedRouteMixin, { - model: function(params) { - return Ember.RSVP.hash({ - species: this.store.find('species', params.species_id), - }); - }, - - setupController: function(controller, model) { - controller.setProperties(model); - }, -}); +export default Ember.Route.extend(AuthenticatedRouteMixin, {}); diff --git a/app/pods/species/edit/template.hbs b/app/pods/species/edit/template.hbs index 6a8db9b..5c6c82f 100644 --- a/app/pods/species/edit/template.hbs +++ b/app/pods/species/edit/template.hbs @@ -1,6 +1,6 @@ {{ forms/species-form - species=species + species=model save="save" cancel="cancel" }} diff --git a/app/pods/species/index/template.hbs b/app/pods/species/index/template.hbs index 225fa79..12cd6d8 100644 --- a/app/pods/species/index/template.hbs +++ b/app/pods/species/index/template.hbs @@ -15,8 +15,7 @@ - {{!-- use species.id to call show model hook --}} - {{#link-to 'species.show' species.id}} + {{#link-to 'species.show' species}} {{species.speciesName}} {{/link-to}} diff --git a/app/pods/species/new/controller.js b/app/pods/species/new/controller.js index 2781a83..568648f 100644 --- a/app/pods/species/new/controller.js +++ b/app/pods/species/new/controller.js @@ -3,7 +3,7 @@ import Ember from 'ember'; export default Ember.Controller.extend({ actions: { save: function() { - let species = this.get('species'); + let species = this.get('model'); if (species.get('isDirty')) { species.save().then((species) => { @@ -17,7 +17,7 @@ export default Ember.Controller.extend({ }, cancel: function() { - let species = this.get('species'); + let species = this.get('model'); if (species.get('isNew')) { species.deleteRecord(); diff --git a/app/pods/species/new/route.js b/app/pods/species/new/route.js index e816ab5..98741c6 100644 --- a/app/pods/species/new/route.js +++ b/app/pods/species/new/route.js @@ -3,13 +3,7 @@ import AuthenticatedRouteMixin from 'simple-auth/mixins/authenticated-route-mixi export default Ember.Route.extend(AuthenticatedRouteMixin, { model: function() { - return Ember.RSVP.hash({ - species: this.store.createRecord('species'), - }); - }, - - setupController: function(controller, model) { - controller.setProperties(model); + return this.store.createRecord('species'); }, }); diff --git a/app/pods/species/new/template.hbs b/app/pods/species/new/template.hbs index 6a8db9b..5c6c82f 100644 --- a/app/pods/species/new/template.hbs +++ b/app/pods/species/new/template.hbs @@ -1,6 +1,6 @@ {{ forms/species-form - species=species + species=model save="save" cancel="cancel" }} diff --git a/app/pods/species/show/controller.js b/app/pods/species/show/controller.js deleted file mode 100644 index 2d5a523..0000000 --- a/app/pods/species/show/controller.js +++ /dev/null @@ -1,22 +0,0 @@ -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'); - } - } -}); diff --git a/app/pods/species/show/route.js b/app/pods/species/show/route.js index b73792b..b3f843f 100644 --- a/app/pods/species/show/route.js +++ b/app/pods/species/show/route.js @@ -1,14 +1,4 @@ import Ember from 'ember'; import AuthenticatedRouteMixin from 'simple-auth/mixins/authenticated-route-mixin'; -export default Ember.Route.extend(AuthenticatedRouteMixin, { - model: function(params) { - return Ember.RSVP.hash({ - species: this.store.find('species', params.species_id), - }); - }, - - setupController: function(controller, model) { - controller.setProperties(model); - }, -}); +export default Ember.Route.extend(AuthenticatedRouteMixin, {}); diff --git a/app/pods/species/show/template.hbs b/app/pods/species/show/template.hbs index 0d1c47a..11b72ba 100644 --- a/app/pods/species/show/template.hbs +++ b/app/pods/species/show/template.hbs @@ -2,7 +2,7 @@
- Species {{species.speciesName}} + Species {{model.speciesName}} {{! ROW 1 }} @@ -10,7 +10,7 @@
Strains
- {{#each species.strains as |strain index|}} + {{#each model.strains as |strain index|}} {{if index ","}} {{#link-to 'strains.show' strain.id}} {{{strain.strainNameMU}}} @@ -21,7 +21,7 @@
Type Species?
- {{if species.typeSpecies 'Yes' 'No'}} + {{if model.typeSpecies 'Yes' 'No'}}
@@ -31,7 +31,7 @@
Etymology
- {{species.etymology}} + {{model.etymology}}
@@ -40,15 +40,15 @@
Record Created
-
{{null-time species.createdAt 'LL'}}
+
{{null-time model.createdAt 'LL'}}
Record Updated
-
{{null-time species.updatedAt 'LL'}}
+
{{null-time model.updatedAt 'LL'}}
Record Deleted
-
{{null-time species.deletedAt 'LL'}}
+
{{null-time model.deletedAt 'LL'}}
From ae7f3bdafaa01c5492ee51fc22729d397d531b67 Mon Sep 17 00:00:00 2001 From: Matthew Dillon Date: Tue, 7 Jul 2015 09:56:49 -0800 Subject: [PATCH 05/12] Test-drive metadata --- app/pods/components/add-button/component.js | 9 --------- app/pods/species/index/controller.js | 5 +++++ app/pods/species/index/template.hbs | 2 +- 3 files changed, 6 insertions(+), 10 deletions(-) delete mode 100644 app/pods/components/add-button/component.js diff --git a/app/pods/components/add-button/component.js b/app/pods/components/add-button/component.js deleted file mode 100644 index 8075297..0000000 --- a/app/pods/components/add-button/component.js +++ /dev/null @@ -1,9 +0,0 @@ -import Ember from 'ember'; -import userCanAdd from '../../../utils/user-can-add'; - -export default Ember.Component.extend({ - canAdd: function() { - let user_role = this.get('session.currentUser.role'); - return userCanAdd(user_role); - }.property('session.currentUser.role').readOnly(), -}); diff --git a/app/pods/species/index/controller.js b/app/pods/species/index/controller.js index a28a11f..82a022e 100644 --- a/app/pods/species/index/controller.js +++ b/app/pods/species/index/controller.js @@ -3,4 +3,9 @@ import Ember from 'ember'; export default Ember.Controller.extend({ sortParams: ['speciesName', 'strainCount'], sortedSpecies: Ember.computed.sort('species', 'sortParams'), + + metaData: function() { + return this.store.metadataFor('species'); + }.property('model.isLoaded').readOnly(), + }); diff --git a/app/pods/species/index/template.hbs b/app/pods/species/index/template.hbs index 12cd6d8..4f34a27 100644 --- a/app/pods/species/index/template.hbs +++ b/app/pods/species/index/template.hbs @@ -1,7 +1,7 @@

{{genus-name}} Species

Total species: {{species.length}}

-{{add-button label="Add Species" link="species.new"}} +{{add-button label="Add Species" link="species.new" canAdd=metaData.canAdd}} From 38894d94e797dadcf43f23862e7da6b2675c6cef Mon Sep 17 00:00:00 2001 From: Matthew Dillon Date: Tue, 7 Jul 2015 11:09:41 -0800 Subject: [PATCH 06/12] Sideload strains in species list --- app/models/species.js | 2 +- app/models/strain.js | 2 +- app/pods/species/index/controller.js | 2 +- app/pods/species/index/route.js | 11 ++--------- 4 files changed, 5 insertions(+), 12 deletions(-) diff --git a/app/models/species.js b/app/models/species.js index fee135a..b6d509a 100644 --- a/app/models/species.js +++ b/app/models/species.js @@ -7,7 +7,7 @@ export default DS.Model.extend({ typeSpecies : DS.attr('boolean'), etymology : DS.attr('string'), genusName : DS.attr('string', { defaultValue: config.APP.genus }), - strains : DS.hasMany('strain', { async: true }), + strains : DS.hasMany('strain', { async: false }), totalStrains: DS.attr('number'), createdAt : DS.attr('date'), updatedAt : DS.attr('date'), diff --git a/app/models/strain.js b/app/models/strain.js index 7f69f45..49344cf 100644 --- a/app/models/strain.js +++ b/app/models/strain.js @@ -3,7 +3,7 @@ import Ember from 'ember'; export default DS.Model.extend({ measurements : DS.hasMany('measurements', { async: true }), - species : DS.belongsTo('species', { async: true }), + species : DS.belongsTo('species', { async: false }), strainName : DS.attr('string'), typeStrain : DS.attr('boolean'), accessionNumbers : DS.attr('string'), diff --git a/app/pods/species/index/controller.js b/app/pods/species/index/controller.js index 82a022e..2714e73 100644 --- a/app/pods/species/index/controller.js +++ b/app/pods/species/index/controller.js @@ -2,7 +2,7 @@ import Ember from 'ember'; export default Ember.Controller.extend({ sortParams: ['speciesName', 'strainCount'], - sortedSpecies: Ember.computed.sort('species', 'sortParams'), + sortedSpecies: Ember.computed.sort('model', 'sortParams'), metaData: function() { return this.store.metadataFor('species'); diff --git a/app/pods/species/index/route.js b/app/pods/species/index/route.js index b0968ba..6b02e0e 100644 --- a/app/pods/species/index/route.js +++ b/app/pods/species/index/route.js @@ -3,13 +3,6 @@ import AuthenticatedRouteMixin from 'simple-auth/mixins/authenticated-route-mixi export default Ember.Route.extend(AuthenticatedRouteMixin, { model: function() { - return Ember.RSVP.hash({ - species: this.store.findAll('species'), - strains: this.store.findAll('strain'), - }); - }, - - setupController: function(controller, models) { - controller.setProperties(models); - }, + return this.store.findAll('species'); + } }); From 583d7ca0dbd4cd8e446d8f09fee7389b1ba2365c Mon Sep 17 00:00:00 2001 From: Matthew Dillon Date: Tue, 7 Jul 2015 14:28:06 -0800 Subject: [PATCH 07/12] SQUASH --- app/pods/species/index/template.hbs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/pods/species/index/template.hbs b/app/pods/species/index/template.hbs index 4f34a27..6fc2993 100644 --- a/app/pods/species/index/template.hbs +++ b/app/pods/species/index/template.hbs @@ -1,5 +1,5 @@

{{genus-name}} Species

-

Total species: {{species.length}}

+

Total species: {{model.length}}

{{add-button label="Add Species" link="species.new" canAdd=metaData.canAdd}} From 3436989a89e5aa76d298a4fae97c54e768f9f210 Mon Sep 17 00:00:00 2001 From: Matthew Dillon Date: Tue, 7 Jul 2015 14:28:16 -0800 Subject: [PATCH 08/12] Edit species --- app/pods/species/show/controller.js | 14 ++++++++++++++ app/pods/species/show/template.hbs | 6 ++++++ 2 files changed, 20 insertions(+) create mode 100644 app/pods/species/show/controller.js diff --git a/app/pods/species/show/controller.js b/app/pods/species/show/controller.js new file mode 100644 index 0000000..d9625f4 --- /dev/null +++ b/app/pods/species/show/controller.js @@ -0,0 +1,14 @@ +import Ember from 'ember'; + +export default Ember.Controller.extend({ + userCanEdit: function() { + let meta = this.store.metadataFor('species'); + let id = this.get('model.id'); + + if (meta.canEdit.indexOf( +id ) === -1) { + return false + } + return true; + }.property('model.isLoaded').readOnly(), + +}); diff --git a/app/pods/species/show/template.hbs b/app/pods/species/show/template.hbs index 11b72ba..e892234 100644 --- a/app/pods/species/show/template.hbs +++ b/app/pods/species/show/template.hbs @@ -55,3 +55,9 @@ +{{#if userCanEdit}} +
+ {{#link-to 'species.edit' model class="button-gray smaller"}} + Edit + {{/link-to}} +{{/if}} From 9e8b02ac90f2ab86af5e6caaba107c426b1f8d4d Mon Sep 17 00:00:00 2001 From: Matthew Dillon Date: Tue, 7 Jul 2015 14:38:36 -0800 Subject: [PATCH 09/12] Overflow table --- app/pods/compare/template.hbs | 2 +- app/styles/app.css | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/app/pods/compare/template.hbs b/app/pods/compare/template.hbs index 8724242..a4466f4 100644 --- a/app/pods/compare/template.hbs +++ b/app/pods/compare/template.hbs @@ -12,7 +12,7 @@ Please select one or more strains and one or more characteristics. {{else}} -
+
diff --git a/app/styles/app.css b/app/styles/app.css index ff245dd..2a02ea6 100644 --- a/app/styles/app.css +++ b/app/styles/app.css @@ -1,3 +1,8 @@ +.overflow-div { + white-space: nowrap; + overflow: auto; +} + .measurements-container { padding: 2em 0em 0em 0em; } From 14a678092e6974547edc8e440461699e29d071a4 Mon Sep 17 00:00:00 2001 From: Matthew Dillon Date: Tue, 14 Jul 2015 08:05:01 -0800 Subject: [PATCH 10/12] Missed in merge --- app/pods/species/edit/controller.js | 29 --------------------------- app/pods/species/edit/route.js | 4 ---- app/pods/species/edit/template.hbs | 6 ------ app/pods/species/index/controller.js | 11 ---------- app/pods/species/index/route.js | 8 -------- app/pods/species/new/controller.js | 30 ---------------------------- app/pods/species/show/controller.js | 14 ------------- 7 files changed, 102 deletions(-) delete mode 100644 app/pods/species/edit/controller.js delete mode 100644 app/pods/species/edit/route.js delete mode 100644 app/pods/species/edit/template.hbs delete mode 100644 app/pods/species/index/controller.js delete mode 100644 app/pods/species/index/route.js delete mode 100644 app/pods/species/new/controller.js delete mode 100644 app/pods/species/show/controller.js diff --git a/app/pods/species/edit/controller.js b/app/pods/species/edit/controller.js deleted file mode 100644 index 463392e..0000000 --- a/app/pods/species/edit/controller.js +++ /dev/null @@ -1,29 +0,0 @@ -import Ember from 'ember'; - -export default Ember.Controller.extend({ - actions: { - save: function() { - let species = this.get('model'); - - if (species.get('isDirty')) { - species.save().then((species) => { - this.transitionToRoute('species.show', species.get('id')); - }, (err) => { - this.get('flashMessages').error(err.responseJSON.error); - }); - } else { - this.transitionToRoute('species.show', species.get('id')); - } - }, - - cancel: function() { - let species = this.get('model'); - - species.get('errors').clear(); - species.rollback(); - - this.transitionToRoute('species.show', species.get('id')); - }, - - }, -}); diff --git a/app/pods/species/edit/route.js b/app/pods/species/edit/route.js deleted file mode 100644 index b3f843f..0000000 --- a/app/pods/species/edit/route.js +++ /dev/null @@ -1,4 +0,0 @@ -import Ember from 'ember'; -import AuthenticatedRouteMixin from 'simple-auth/mixins/authenticated-route-mixin'; - -export default Ember.Route.extend(AuthenticatedRouteMixin, {}); diff --git a/app/pods/species/edit/template.hbs b/app/pods/species/edit/template.hbs deleted file mode 100644 index 5c6c82f..0000000 --- a/app/pods/species/edit/template.hbs +++ /dev/null @@ -1,6 +0,0 @@ -{{ - forms/species-form - species=model - save="save" - cancel="cancel" -}} diff --git a/app/pods/species/index/controller.js b/app/pods/species/index/controller.js deleted file mode 100644 index 2714e73..0000000 --- a/app/pods/species/index/controller.js +++ /dev/null @@ -1,11 +0,0 @@ -import Ember from 'ember'; - -export default Ember.Controller.extend({ - sortParams: ['speciesName', 'strainCount'], - sortedSpecies: Ember.computed.sort('model', 'sortParams'), - - metaData: function() { - return this.store.metadataFor('species'); - }.property('model.isLoaded').readOnly(), - -}); diff --git a/app/pods/species/index/route.js b/app/pods/species/index/route.js deleted file mode 100644 index 6b02e0e..0000000 --- a/app/pods/species/index/route.js +++ /dev/null @@ -1,8 +0,0 @@ -import Ember from 'ember'; -import AuthenticatedRouteMixin from 'simple-auth/mixins/authenticated-route-mixin'; - -export default Ember.Route.extend(AuthenticatedRouteMixin, { - model: function() { - return this.store.findAll('species'); - } -}); diff --git a/app/pods/species/new/controller.js b/app/pods/species/new/controller.js deleted file mode 100644 index 568648f..0000000 --- a/app/pods/species/new/controller.js +++ /dev/null @@ -1,30 +0,0 @@ -import Ember from 'ember'; - -export default Ember.Controller.extend({ - actions: { - save: function() { - let species = this.get('model'); - - if (species.get('isDirty')) { - species.save().then((species) => { - this.transitionToRoute('species.show', species.get('id')); - }, (err) => { - this.get('flashMessages').error(err.responseJSON.error); - }); - } else { - this.transitionToRoute('species.index'); - } - }, - - cancel: function() { - let species = this.get('model'); - - if (species.get('isNew')) { - species.deleteRecord(); - } - - this.transitionToRoute('species.index'); - }, - - }, -}); diff --git a/app/pods/species/show/controller.js b/app/pods/species/show/controller.js deleted file mode 100644 index d9625f4..0000000 --- a/app/pods/species/show/controller.js +++ /dev/null @@ -1,14 +0,0 @@ -import Ember from 'ember'; - -export default Ember.Controller.extend({ - userCanEdit: function() { - let meta = this.store.metadataFor('species'); - let id = this.get('model.id'); - - if (meta.canEdit.indexOf( +id ) === -1) { - return false - } - return true; - }.property('model.isLoaded').readOnly(), - -}); From c17abc68294b33ffbd37e8d6baaff89ed75f7ac8 Mon Sep 17 00:00:00 2001 From: Matthew Dillon Date: Tue, 20 Oct 2015 18:16:41 -0700 Subject: [PATCH 11/12] Missing pod prefix --- config/environment.js | 1 + 1 file changed, 1 insertion(+) diff --git a/config/environment.js b/config/environment.js index a6f5a79..2a35933 100644 --- a/config/environment.js +++ b/config/environment.js @@ -14,6 +14,7 @@ module.exports = function(environment) { APP: { genus: 'clostridium', }, + podModulePrefix: 'clostridiumdotinfo/pods', flashMessageDefaults: { sticky: true, type: 'error', From 6bdbacf978c47381113c1e5b34874adca2fb43ec Mon Sep 17 00:00:00 2001 From: Matthew Dillon Date: Wed, 4 Nov 2015 20:32:22 -0700 Subject: [PATCH 12/12] Tweak mirage for clostridium --- app/mirage/config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/mirage/config.js b/app/mirage/config.js index 79cee5e..c479b89 100644 --- a/app/mirage/config.js +++ b/app/mirage/config.js @@ -7,7 +7,7 @@ export default function() { export function testConfig() { this.urlPrefix = 'https://bactdb-test.herokuapp.com'; - this.namespace = '/api/hymenobacter'; + this.namespace = '/api/clostridium'; this.timing = 0; this.get('/users/:id');