diff --git a/app/initializers/global-variables.js b/app/initializers/global-variables.js index c16d17e..4ed58e6 100644 --- a/app/initializers/global-variables.js +++ b/app/initializers/global-variables.js @@ -2,7 +2,7 @@ import Ember from 'ember'; import config from '../config/environment'; var globals = Ember.Object.extend({ - genus: config.genus, + genus: config.APP.genus, apiURL: config.apiURL, }); diff --git a/app/models/characteristic.js b/app/models/characteristic.js index ce41fc3..1303b86 100644 --- a/app/models/characteristic.js +++ b/app/models/characteristic.js @@ -3,12 +3,12 @@ import DS from 'ember-data'; export default DS.Model.extend({ characteristicName: DS.attr('string'), characteristicType: DS.attr('string'), - strains: DS.hasMany('strain', { async: true }), - measurements: DS.hasMany('measurements', { async: true }), - createdAt: DS.attr('date'), - updatedAt: DS.attr('date'), - deletedAt: DS.attr('date'), - createdBy: DS.attr('number'), - updatedBy: DS.attr('number'), - deletedBy: DS.attr('number') + strains : DS.hasMany('strain', { async: true }), + measurements : DS.hasMany('measurements', { async: true }), + createdAt : DS.attr('date'), + updatedAt : DS.attr('date'), + deletedAt : DS.attr('date'), + createdBy : DS.attr('number'), + updatedBy : DS.attr('number'), + deletedBy : DS.attr('number') }); diff --git a/app/models/measurement.js b/app/models/measurement.js index 25e3072..32ceac5 100644 --- a/app/models/measurement.js +++ b/app/models/measurement.js @@ -1,31 +1,20 @@ import DS from 'ember-data'; export default DS.Model.extend({ - strain: DS.belongsTo('strain', { async: true }), - characteristic: DS.belongsTo('characteristic', { async: true }), + strain : DS.belongsTo('strain', { async: true }), + characteristic : DS.belongsTo('characteristic', { async: true }), textMeasurementType: DS.attr('string'), - txtValue: DS.attr('string'), - numValue: DS.attr('number'), - confidenceInterval: DS.attr('number'), - unitType: DS.attr('string'), - notes: DS.attr('string'), - testMethod: DS.attr('string'), - createdAt: DS.attr('date'), - updatedAt: DS.attr('date'), - createdBy: DS.attr('number'), - updatedBy: DS.attr('number'), - // computedType: Ember.computed('textMeasurementType', 'txtValue', 'numValue', function() { - // if (this.get('textMeasurementType')) { - // return 'Fixed-text'; - // } - // if (this.get('txtValue')) { - // return 'Free-text'; - // } - // if (this.get('numValue')) { - // return 'Numerical'; - // } - // return "error"; - // }), + txtValue : DS.attr('string'), + numValue : DS.attr('number'), + confidenceInterval : DS.attr('number'), + unitType : DS.attr('string'), + notes : DS.attr('string'), + testMethod : DS.attr('string'), + createdAt : DS.attr('date'), + updatedAt : DS.attr('date'), + createdBy : DS.attr('number'), + updatedBy : DS.attr('number'), + value: function() { if (this.get('textMeasurementType')) { return this.get('textMeasurementType'); diff --git a/app/models/species.js b/app/models/species.js index 071f2ad..08da3cf 100644 --- a/app/models/species.js +++ b/app/models/species.js @@ -2,16 +2,16 @@ import DS from 'ember-data'; import config from '../config/environment'; export default DS.Model.extend({ - speciesName: DS.attr('string'), - typeSpecies: DS.attr('boolean'), - etymology: DS.attr('string'), - genusName: DS.attr('string', { defaultValue: config.genus }), - strains: DS.hasMany('strain', { async: true }), + speciesName : DS.attr('string'), + typeSpecies : DS.attr('boolean'), + etymology : DS.attr('string'), + genusName : DS.attr('string', { defaultValue: config.APP.genus }), + strains : DS.hasMany('strain', { async: true }), totalStrains: DS.attr('number'), - createdAt: DS.attr('date'), - updatedAt: DS.attr('date'), - deletedAt: DS.attr('date'), - createdBy: DS.attr('number'), - updatedBy: DS.attr('number'), - deletedBy: DS.attr('number'), + createdAt : DS.attr('date'), + updatedAt : DS.attr('date'), + deletedAt : DS.attr('date'), + createdBy : DS.attr('number'), + updatedBy : DS.attr('number'), + deletedBy : DS.attr('number'), }); diff --git a/app/models/strain.js b/app/models/strain.js index 8a46bfd..73c9d6c 100644 --- a/app/models/strain.js +++ b/app/models/strain.js @@ -1,28 +1,31 @@ import DS from 'ember-data'; export default DS.Model.extend({ - measurements: DS.hasMany('measurements', { async: true }), - species: DS.belongsTo('species', { async: true }), - strainName: DS.attr('string'), - typeStrain: DS.attr('boolean'), - accessionNumbers: DS.attr('string'), - genbank: DS.attr('string'), - isolatedFrom: DS.attr('string'), - notes: DS.attr('string'), - createdAt: DS.attr('date'), - updatedAt: DS.attr('date'), - deletedAt: DS.attr('date'), - createdBy: DS.attr('number'), - updatedBy: DS.attr('number'), - deletedBy: DS.attr('number'), + measurements : DS.hasMany('measurements', { async: true }), + species : DS.belongsTo('species', { async: true }), + strainName : DS.attr('string'), + typeStrain : DS.attr('boolean'), + accessionNumbers : DS.attr('string'), + genbank : DS.attr('string'), + isolatedFrom : DS.attr('string'), + notes : DS.attr('string'), + createdAt : DS.attr('date'), + updatedAt : DS.attr('date'), + deletedAt : DS.attr('date'), + createdBy : DS.attr('number'), + updatedBy : DS.attr('number'), + deletedBy : DS.attr('number'), totalMeasurements: DS.attr('number'), + strainNameMU: function() { let type = this.get('typeStrain') ? 'T' : ''; return `${this.get('strainName')}${type}`; }.property('strainName', 'typeStrain').readOnly(), + fullName: function() { return `${this.get('species.speciesName')} (strain ${this.get('strainName')})`; }.property('species', 'strainName').readOnly(), + fullNameMU: function() { return `${this.get('species.speciesName')} ${this.get('strainNameMU')}`; }.property('species', 'strainNameMU').readOnly(), diff --git a/app/models/user.js b/app/models/user.js index c8ec93d..67efa88 100644 --- a/app/models/user.js +++ b/app/models/user.js @@ -1,9 +1,9 @@ import DS from 'ember-data'; export default DS.Model.extend({ - email: DS.attr('string'), - name: DS.attr('string'), - role: DS.attr('string'), + email : DS.attr('string'), + name : DS.attr('string'), + role : DS.attr('string'), createdAt: DS.attr('date'), updatedAt: DS.attr('date'), deletedAt: DS.attr('date') diff --git a/app/pods/application/route.js b/app/pods/application/route.js index 016ebd4..2f1869b 100644 --- a/app/pods/application/route.js +++ b/app/pods/application/route.js @@ -6,8 +6,5 @@ export default Ember.Route.extend(ApplicationRouteMixin, { invalidateSession: function() { this.get('session').invalidate(); }, - loading: function() { - return true; - }, } }); diff --git a/app/pods/application/template.hbs b/app/pods/application/template.hbs index 486ad74..245a185 100644 --- a/app/pods/application/template.hbs +++ b/app/pods/application/template.hbs @@ -1,28 +1,28 @@
{{#link-to 'index' class='logo'}} - {{site-name}} + {{globals.genus}}.info {{/link-to}} {{#if session.isAuthenticated}}

{{session.currentUser.name}}
- Logout + Logout

{{else}}

@@ -36,7 +36,7 @@

- {{site-name}} + {{globals.genus}}.info diff --git a/app/pods/components/site-name/template.hbs b/app/pods/components/site-name/template.hbs deleted file mode 100644 index a166fb9..0000000 --- a/app/pods/components/site-name/template.hbs +++ /dev/null @@ -1 +0,0 @@ -{{globals.genus}}.info diff --git a/app/pods/measurements/template.hbs b/app/pods/measurements/template.hbs index fe3922c..6f0bf11 100644 --- a/app/pods/measurements/template.hbs +++ b/app/pods/measurements/template.hbs @@ -23,7 +23,7 @@ content=characteristics value=selectedCharacteristics optionValuePath="id" - placeholder="Choose a characteristic" + placeholder="All characteristics" }}
  • diff --git a/app/pods/species/new/route.js b/app/pods/species/new/route.js index 96b0d46..b9f79eb 100644 --- a/app/pods/species/new/route.js +++ b/app/pods/species/new/route.js @@ -1,6 +1,7 @@ import Ember from 'ember'; +import AuthenticatedRouteMixin from 'simple-auth/mixins/authenticated-route-mixin'; -export default Ember.Route.extend({ +export default Ember.Route.extend(AuthenticatedRouteMixin, { model: function() { return this.store.createRecord('species'); }, diff --git a/app/pods/species/show/route.js b/app/pods/species/show/route.js index 26d9f31..b3f843f 100644 --- a/app/pods/species/show/route.js +++ b/app/pods/species/show/route.js @@ -1,4 +1,4 @@ import Ember from 'ember'; +import AuthenticatedRouteMixin from 'simple-auth/mixins/authenticated-route-mixin'; -export default Ember.Route.extend({ -}); +export default Ember.Route.extend(AuthenticatedRouteMixin, {}); diff --git a/app/pods/strains/new/route.js b/app/pods/strains/new/route.js index 5b2778e..318dad2 100644 --- a/app/pods/strains/new/route.js +++ b/app/pods/strains/new/route.js @@ -1,6 +1,7 @@ import Ember from 'ember'; +import AuthenticatedRouteMixin from 'simple-auth/mixins/authenticated-route-mixin'; -export default Ember.Route.extend({ +export default Ember.Route.extend(AuthenticatedRouteMixin, { model: function() { return Ember.RSVP.hash({ strain: this.store.createRecord('strain'), diff --git a/app/pods/strains/show/route.js b/app/pods/strains/show/route.js index 9d6dccf..6a5555b 100644 --- a/app/pods/strains/show/route.js +++ b/app/pods/strains/show/route.js @@ -1,6 +1,7 @@ import Ember from 'ember'; +import AuthenticatedRouteMixin from 'simple-auth/mixins/authenticated-route-mixin'; -export default Ember.Route.extend({ +export default Ember.Route.extend(AuthenticatedRouteMixin, { model: function(params) { return Ember.RSVP.hash({ strain: this.store.find('strain', params.strain_id), diff --git a/config/environment.js b/config/environment.js index 3ce0d37..e71d629 100644 --- a/config/environment.js +++ b/config/environment.js @@ -8,68 +8,46 @@ module.exports = function(environment) { locationType: 'auto', EmberENV: { FEATURES: { - // Here you can enable experimental features on an ember canary build - // e.g. 'with-controller': true + // enable experimental features on an ember canary build } }, APP: { - // Here you can pass flags/options to your application instance - // when it is created + genus: 'hymenobacter', }, - genus: 'hymenobacter', podModulePrefix: 'hymenobacterdotinfo/pods', - }; - - if (environment === 'development') { - ENV['simple-auth'] = { + 'simple-auth': { session: 'session:custom', authorizer: 'simple-auth-authorizer:token', - crossOriginWhitelist: ['http://127.0.0.1:4200'] - } - ENV['simple-auth-token'] = { - serverTokenEndpoint: '/api/authenticate', + }, + 'simple-auth-token': { identificationField: 'email', passwordField: 'password', tokenPropertyName: 'token', authorizationPrefix: 'Bearer ', authorizationHeaderName: 'Authorization', - } - ENV.apiURL = 'http://127.0.0.1:4200'; - ENV.contentSecurityPolicy = { + }, + contentSecurityPolicy: { 'default-src': "'none'", 'script-src': "'self'", 'font-src': "'self'", - 'connect-src': "'self' http://127.0.0.1:4200", 'img-src': "'self'", 'style-src': "'self' 'unsafe-inline'", 'media-src': "'self'" - } + }, + }; + + if (environment === 'development') { + ENV['simple-auth']['crossOriginWhitelist'] = ['http://127.0.0.1:4200']; + ENV['simple-auth-token']['serverTokenEndpoint'] = '/api/authenticate'; + ENV.apiURL = 'http://127.0.0.1:4200'; + ENV.contentSecurityPolicy['connect-src'] = "'self' http://127.0.0.1:4200"; } if (environment === 'test') { - ENV['simple-auth'] = { - session: 'session:custom', - authorizer: 'simple-auth-authorizer:token', - crossOriginWhitelist: ['https://bactdb-test.herokuapp.com'] - } - ENV['simple-auth-token'] = { - serverTokenEndpoint: 'https://bactdb-test.herokuapp.com/api/authenticate', - identificationField: 'email', - passwordField: 'password', - tokenPropertyName: 'token', - authorizationPrefix: 'Bearer ', - authorizationHeaderName: 'Authorization', - } + ENV['simple-auth']['crossOriginWhitelist'] = ['https://bactdb-test.herokuapp.com']; + ENV['simple-auth-token']['serverTokenEndpoint'] = 'https://bactdb-test.herokuapp.com/api/authenticate'; ENV.apiURL = 'https://bactdb-test.herokuapp.com'; - ENV.contentSecurityPolicy = { - 'default-src': "'none'", - 'script-src': "'self'", - 'font-src': "'self'", - 'connect-src': "'self' https://bactdb-test.herokuapp.com", - 'img-src': "'self'", - 'style-src': "'self'", - 'media-src': "'self'" - } + ENV.contentSecurityPolicy['connect-src'] = "'self' https://bactdb-test.herokuapp.com"; // keep test console output quieter ENV.APP.LOG_ACTIVE_GENERATION = false; @@ -77,29 +55,10 @@ module.exports = function(environment) { } if (environment === 'production') { - ENV['simple-auth'] = { - session: 'session:custom', - authorizer: 'simple-auth-authorizer:token', - crossOriginWhitelist: ['https://bactdb.herokuapp.com'] - } - ENV['simple-auth-token'] = { - serverTokenEndpoint: 'https://bactdb.herokuapp.com/api/authenticate', - identificationField: 'email', - passwordField: 'password', - tokenPropertyName: 'token', - authorizationPrefix: 'Bearer ', - authorizationHeaderName: 'Authorization', - } + ENV['simple-auth']['crossOriginWhitelist'] = ['https://bactdb.herokuapp.com']; + ENV['simple-auth-token']['serverTokenEndpoint'] = 'https://bactdb.herokuapp.com/api/authenticate'; ENV.apiURL = 'https://bactdb.herokuapp.com'; - ENV.contentSecurityPolicy = { - 'default-src': "'none'", - 'script-src': "'self'", - 'font-src': "'self'", - 'connect-src': "'self' https://bactdb.herokuapp.com", - 'img-src': "'self'", - 'style-src': "'self'", - 'media-src': "'self'" - } + ENV.contentSecurityPolicy['connect-src'] = "'self' https://bactdb.herokuapp.com"; } return ENV;