diff --git a/app/adapters/_baseAdapter.js b/app/adapters/_baseAdapter.js index a78d44b5f4ce3bad1e86a0d98e39dbf2e0a24745..e9850c6f0b688b71aa5ad7cb4db00bda324947a7 100644 --- a/app/adapters/_baseAdapter.js +++ b/app/adapters/_baseAdapter.js @@ -1,7 +1,8 @@ import Ember from 'ember'; import RESTAdapter from 'ember-data/adapters/rest'; +import FixtureAdapter from 'ember-data-fixture-adapter'; -export default RESTAdapter.extend({ +export default FixtureAdapter.extend({ host: 'http://localhost:8080', // TODO: replace with live url namespace: 'v1', session: Ember.inject.service() diff --git a/app/app.js b/app/app.js index 831ad6106dd44d9b0c1314be3c0c11bb0085b56d..78395642373a95242e61982fd099c7eaa35e2169 100644 --- a/app/app.js +++ b/app/app.js @@ -7,6 +7,11 @@ let App; Ember.MODEL_FACTORY_INJECTIONS = true; + +avoidEnumerableNativeExtensions(Array.prototype); +avoidEnumerableNativeExtensions(Function.prototype); +avoidEnumerableNativeExtensions(String.prototype); + App = Ember.Application.extend({ modulePrefix: config.modulePrefix, podModulePrefix: config.podModulePrefix, @@ -16,3 +21,16 @@ App = Ember.Application.extend({ loadInitializers(App, config.modulePrefix); export default App; + +// ember (via ember-runtime) sets native prototype enhancements like .property/.observer, but as enumerable +// we need to fix enumerability since it breaks cose-bilkent and sometimes cytoscape +function avoidEnumerableNativeExtensions(proto) { + Object.keys(proto) // already gets all enumerables, no need to filter + .map(key => { + return { key, descriptor: Object.getOwnPropertyDescriptor(proto, key) }; + }) + .forEach(obj => { + obj.descriptor.enumerable = false; + Object.defineProperty(proto, obj.key, obj.descriptor); + }); +} \ No newline at end of file diff --git a/app/components/architecture-viewer.js b/app/components/architecture-viewer.js index 6a50ce45e13997ce33499bb996949c22afb1f08a..61e9d6cdb172b1a720bd97bd77e3e45f158f6af6 100644 --- a/app/components/architecture-viewer.js +++ b/app/components/architecture-viewer.js @@ -4,12 +4,16 @@ import Themes from './architecture-visualisation-cytoscape/themes'; export default Ember.Component.extend({ graph: null, entityDetails: null, - layoutAlgorithm: 'cose', + layoutAlgorithm: 'cose-bilkent', theme: Themes[Object.keys(Themes)[0]], // first theme themes: Object.keys(Themes), layoutAlgorithms: [ + 'cose-bilkent', 'cose', +<<<<<<< HEAD // 'cose-bilkent', // broken - see https://github.com/cytoscape/cytoscape.js-cose-bilkent/issues/18 +======= +>>>>>>> da62a369c3eb11a12b3b712bdb1628f3f87bf94a 'cola', 'grid', 'concentric', diff --git a/app/components/architecture-visualisation-cytoscape/component.js b/app/components/architecture-visualisation-cytoscape/component.js index f07e1506fb173002d294fa1388aee455bcfff283..e72a6b97ec5e755d99bb75d28550d2c5f01cbcba 100644 --- a/app/components/architecture-visualisation-cytoscape/component.js +++ b/app/components/architecture-visualisation-cytoscape/component.js @@ -41,6 +41,7 @@ export default Ember.Component.extend({ // padding: 6, // ungrabifyWhileSimulating: true, // infinite: false + // TODO: avoidOverlap: true has shaky behavior (enabled by default). Find workaround } }); diff --git a/app/components/architecture-visualisation-cytoscape/style.js b/app/components/architecture-visualisation-cytoscape/style.js index 5f674cc2ced7be3e730f6819d3c53d4882bd9e27..47e32a84c984aa6cbfa16a21db70a9821ebea4c7 100644 --- a/app/components/architecture-visualisation-cytoscape/style.js +++ b/app/components/architecture-visualisation-cytoscape/style.js @@ -9,7 +9,7 @@ export default function(theme){ * { - font-size: 10pt; + font-size: 15px; } node { /* all nodes */ @@ -64,11 +64,20 @@ $node > node { /* compounds. "Nodes" in meta model. $ selects the parent node th color: ${theme.arrowColor}; line-color: ${theme.arrowColor}; target-arrow-color: ${theme.arrowColor}; +<<<<<<< HEAD text-background-color: ${theme.arrowLineColor}; text-outline-color:${theme.arrowLineColor}; text-background-opacity: 1; text-background-shape: roundrectangle; +======= + /*text-background-color: ${theme.arrowLineColor}; + text-background-opacity: 1;*/ + /*text-background-shape: roundrectangle;*/ + text-outline-color: ${theme.arrowColor}; + text-outline-width: 1px; +>>>>>>> da62a369c3eb11a12b3b712bdb1628f3f87bf94a font-size: 12pt; + width: data(workload); } [type="nodeGroup"] { @@ -86,6 +95,7 @@ edge { color: ${theme.arrowLabelColor}; font-weight: bold; target-arrow-shape: triangle-backcurve; +<<<<<<< HEAD curve-style: bezier;/* supports arrow heads*/ edge-distances: node-position; z-index: 0; @@ -93,6 +103,9 @@ edge { width: data(workload); +======= + curve-style: bezier; /* supports arrows */ +>>>>>>> da62a369c3eb11a12b3b712bdb1628f3f87bf94a } :selected { diff --git a/app/models/communication.js b/app/models/communication.js index 7be2d6cda64671dda9eb14f478a13146913de0ca..eba5c338de071703561a4967b40b90b6652e2584 100644 --- a/app/models/communication.js +++ b/app/models/communication.js @@ -1,9 +1,82 @@ import BaseEntity from './baseentity'; import attr from 'ember-data/attr'; -export default BaseEntity.extend({ +const Model = BaseEntity.extend({ technology: attr('string'), sourceId: attr('string'), targetId: attr('string'), workload: attr('number') }); + +Model.reopenClass({ + FIXTURES: [ + { + "type":"communication", + "id":"test-system123-communication-1", + "changelogSequence":0, + "lastUpdate":"2016-06-20T12:46:29.818+02:00", + "revisionNumber":0, + "systemId":"system123", + "sourceId":"test-system123-service-1", + "targetId":"test-system123-service-2", + "technology":"REST" + }, + { + "type":"communication", + "id":"test-system123-communication-2", + "changelogSequence":0, + "lastUpdate":"2016-06-20T12:46:29.818+02:00", + "revisionNumber":0, + "systemId":"system123", + "sourceId":"test-system123-service-2", + "targetId":"test-system123-service-3", + "technology":"TCP/IP" + }, + { + "type":"communication", + "id":"test-system123-communication-3", + "changelogSequence":0, + "lastUpdate":"2016-06-20T12:46:29.818+02:00", + "revisionNumber":0, + "systemId":"system123", + "sourceId":"test-system123-service-3", + "targetId":"test-system123-service-4", + "technology":"TCP/IP" + }, + { + "type":"communication", + "id":"test-system123-communication-4", + "changelogSequence":0, + "lastUpdate":"2016-06-20T12:46:29.818+02:00", + "revisionNumber":0, + "systemId":"system123", + "sourceId":"test-system123-service-3", + "targetId":"test-system123-service-5", + "technology":"TCP/IP" + }, + { + "type":"communication", + "id":"test-system123-communication-5", + "changelogSequence":0, + "lastUpdate":"2016-06-20T12:46:29.818+02:00", + "revisionNumber":0, + "systemId":"system123", + "sourceId":"test-system123-service-4", + "targetId":"test-system123-service-5", + "technology":"TCP/IP" + }, + { + "type":"communication", + "id":"test-system123-communication-6", + "changelogSequence":0, + "lastUpdate":"2016-06-20T12:46:29.818+02:00", + "revisionNumber":0, + "systemId":"system123", + "sourceId":"test-system123-service-5", + "targetId":"test-system123-service-6", + "technology":"TCP/IP" + } + ] +}); + +export default Model; diff --git a/app/models/communicationinstance.js b/app/models/communicationinstance.js index df39e8e6ddbaab5fe85a03567fdbe2cbf6e55523..bbda2584c6f14b77bc42a22c5eb1dfe6bbf6a0fd 100644 --- a/app/models/communicationinstance.js +++ b/app/models/communicationinstance.js @@ -1,9 +1,88 @@ import BaseEntity from './baseentity'; import attr from 'ember-data/attr'; -export default BaseEntity.extend({ +const Model = BaseEntity.extend({ sourceId: attr('string'), targetId: attr('string'), communicationId: attr('string'), workload: attr('number') }); + +Model.reopenClass({ + FIXTURES: [ + { + "type": "communicationInstance", + "id": "test-system123-communicationInstance-1", + "changelogSequence": 0, + "lastUpdate": "2016-06-22T16:49:49.146+02:00", + "revisionNumber": 0, + "systemId": "system123", + "communicationId": "test-system123-communication-1", + "sourceId": "test-system123-serviceInstance-1", + "targetId": "test-system123-serviceInstance-2", + "workload": 10 + }, + { + "type": "communicationInstance", + "id": "test-system123-communicationInstance-2", + "changelogSequence": 0, + "lastUpdate": "2016-06-22T16:49:49.146+02:00", + "revisionNumber": 0, + "systemId": "system123", + "communicationId": "test-system123-communication-2", + "sourceId": "test-system123-serviceInstance-2", + "targetId": "test-system123-serviceInstance-3", + "workload": 20 + }, + { + "type": "communicationInstance", + "id": "test-system123-communicationInstance-3", + "changelogSequence": 0, + "lastUpdate": "2016-06-22T16:49:49.146+02:00", + "revisionNumber": 0, + "systemId": "system123", + "communicationId": "test-system123-communication-3", + "sourceId": "test-system123-serviceInstance-3", + "targetId": "test-system123-serviceInstance-4", + "workload": 10 + }, + { + "type": "communicationInstance", + "id": "test-system123-communicationInstance-4", + "changelogSequence": 0, + "lastUpdate": "2016-06-22T16:49:49.146+02:00", + "revisionNumber": 0, + "systemId": "system123", + "communicationId": "test-system123-communication-4", + "sourceId": "test-system123-serviceInstance-3", + "targetId": "test-system123-serviceInstance-5", + "workload": 15 + }, + { + "type": "communicationInstance", + "id": "test-system123-communicationInstance-5", + "changelogSequence": 0, + "lastUpdate": "2016-06-22T16:49:49.146+02:00", + "revisionNumber": 0, + "systemId": "system123", + "communicationId": "test-system123-communication-5", + "sourceId": "test-system123-serviceInstance-4", + "targetId": "test-system123-serviceInstance-5", + "workload": 10 + }, + { + "type": "communicationInstance", + "id": "test-system123-communicationInstance-6", + "changelogSequence": 0, + "lastUpdate": "2016-06-22T16:49:49.146+02:00", + "revisionNumber": 0, + "systemId": "system123", + "communicationId": "test-system123-communication-6", + "sourceId": "test-system123-serviceInstance-5", + "targetId": "test-system123-serviceInstance-6", + "workload": 15 + } + ] +}); + +export default Model; diff --git a/app/models/node.js b/app/models/node.js index 8d50dbc3708129a8e04fb500085a67a2f96bd0f4..337d4a2f816b3349bc02b080334748d2a8d87ede 100644 --- a/app/models/node.js +++ b/app/models/node.js @@ -1,9 +1,63 @@ import BaseEntity from './baseentity'; import attr from 'ember-data/attr'; -export default BaseEntity.extend({ +const Model = BaseEntity.extend({ name: attr('string'), ip: attr('string'), hostname: attr('string'), nodeGroupId: attr('string') }); + +Model.reopenClass({ + FIXTURES: [{ + "type":"node", + "id":"test-system123-node-2", + "changelogSequence":0, + "lastUpdate":"2016-06-20T12:46:29.818+02:00", + "revisionNumber":0, + "systemId":"system123", + "hostname":"host2", + "ip":"10.0.0.2", + "name":"Logicnode", + "nodeGroupId":"test-system123-nodeGroup-1" + }, + { + "type":"node", + "id":"test-system123-node-3", + "changelogSequence":0, + "lastUpdate":"2016-06-20T12:46:29.818+02:00", + "revisionNumber":0, + "systemId":"system123", + "hostname":"host3", + "ip":"10.0.0.2", + "name":"Adapter", + "nodeGroupId":"test-system123-nodeGroup-1" + }, + { + "type":"node", + "id":"test-system123-node-4", + "changelogSequence":0, + "lastUpdate":"2016-06-20T12:46:29.818+02:00", + "revisionNumber":0, + "systemId":"system123", + "hostname":"host4", + "ip":"10.0.0.2", + "name":"Database", + "nodeGroupId":"test-system123-nodeGroup-1" + }, + { + "type":"node", + "id":"test-system123-node-1", + "changelogSequence":0, + "lastUpdate":"2016-06-20T12:46:29.818+02:00", + "revisionNumber":0, + "systemId":"system123", + "hostname":"test hostname", + "ip":"10.0.0.1", + "name":"WebNode", + "nodeGroupId":"test-system123-nodeGroup-1" + }] + +}) + +export default Model; \ No newline at end of file diff --git a/app/models/nodegroup.js b/app/models/nodegroup.js index eb8d434155be05df8481dd8eb96ca39b6837f480..ba95ae8103cb52741fdedb5f96ad96dcbe74ec56 100644 --- a/app/models/nodegroup.js +++ b/app/models/nodegroup.js @@ -1,7 +1,22 @@ import BaseEntity from './baseentity'; import attr from 'ember-data/attr'; -export default BaseEntity.extend({ +const Model = BaseEntity.extend({ name: attr('string') +}); +Model.reopenClass({ + FIXTURES: [ + { + "type":"nodeGroup", + "id":"test-system123-nodeGroup-1", + "changelogSequence":0, + "lastUpdate":"2016-06-20T12:46:29.818+02:00", + "revisionNumber":0, + "systemId":"system123", + "name":"CoCoME" + } + ] }); + +export default Model; \ No newline at end of file diff --git a/app/models/service.js b/app/models/service.js index 572f4e32a4d6340550852944de33e2c7ddb82b05..a6a12320ae76e5b5130423ba80bdad0964cc863e 100644 --- a/app/models/service.js +++ b/app/models/service.js @@ -1,7 +1,62 @@ import BaseEntity from './baseentity'; import attr from 'ember-data/attr'; -export default BaseEntity.extend({ +const Model = BaseEntity.extend({ name: attr('string'), description: attr('string') }); + +Model.reopenClass({ + FIXTURES: [ + { + "type":"service", + "id":"test-system123-service-1", + "changelogSequence":0, + "lastUpdate":"2016-06-20T12:46:29.818+02:00", + "revisionNumber":0, + "systemId":"system123" + }, + { + "type":"service", + "id":"test-system123-service-2", + "changelogSequence":0, + "lastUpdate":"2016-06-20T12:46:29.818+02:00", + "revisionNumber":0, + "systemId":"system123" + }, + { + "type":"service", + "id":"test-system123-service-3", + "changelogSequence":0, + "lastUpdate":"2016-06-20T12:46:29.818+02:00", + "revisionNumber":0, + "systemId":"system123" + }, + { + "type":"service", + "id":"test-system123-service-4", + "changelogSequence":0, + "lastUpdate":"2016-06-20T12:46:29.818+02:00", + "revisionNumber":0, + "systemId":"system123" + }, + { + "type":"service", + "id":"test-system123-service-5", + "changelogSequence":0, + "lastUpdate":"2016-06-20T12:46:29.818+02:00", + "revisionNumber":0, + "systemId":"system123" + }, + { + "type":"service", + "id":"test-system123-service-6", + "changelogSequence":0, + "lastUpdate":"2016-06-20T12:46:29.818+02:00", + "revisionNumber":0, + "systemId":"system123" + } + ] +}); + +export default Model; \ No newline at end of file diff --git a/app/models/serviceinstance.js b/app/models/serviceinstance.js index ca04171c010117a091d256af786b839dd0fcb1b1..60c4e7051760531e8e1cbbd1eba28c7cb9b315f4 100644 --- a/app/models/serviceinstance.js +++ b/app/models/serviceinstance.js @@ -1,8 +1,81 @@ import BaseEntity from './baseentity'; import attr from 'ember-data/attr'; -export default BaseEntity.extend({ +const Model = BaseEntity.extend({ name: attr('string'), nodeId: attr('string'), serviceId: attr('string') }); + +Model.reopenClass({ + FIXTURES: [ + { + "type":"serviceInstance", + "id":"test-system123-serviceInstance-4", + "changelogSequence":0, + "lastUpdate":"2016-06-20T12:46:29.818+02:00", + "revisionNumber":0, + "systemId":"system123", + "name":"Inventory", + "nodeId":"test-system123-node-2", + "serviceId":"test-system123-service-4" + }, + { + "type":"serviceInstance", + "id":"test-system123-serviceInstance-5", + "changelogSequence":0, + "lastUpdate":"2016-06-20T12:46:29.818+02:00", + "revisionNumber":0, + "systemId":"system123", + "name":"Data", + "nodeId":"test-system123-node-3", + "serviceId":"test-system123-service-5" + }, + { + "type":"serviceInstance", + "id":"test-system123-serviceInstance-6", + "changelogSequence":0, + "lastUpdate":"2016-06-20T12:46:29.818+02:00", + "revisionNumber":0, + "systemId":"system123", + "name":"PostgreSQL", + "nodeId":"test-system123-node-4", + "serviceId":"test-system123-service-6" + }, + { + "type":"serviceInstance", + "id":"test-system123-serviceInstance-1", + "changelogSequence":0, + "lastUpdate":"2016-06-20T12:46:29.818+02:00", + "revisionNumber":0, + "systemId":"system123", + "name":"FrontEnd", + "nodeId":"test-system123-node-1", + "serviceId":"test-system123-service-1" + }, + { + "type":"serviceInstance", + "id":"test-system123-serviceInstance-2", + "changelogSequence":0, + "lastUpdate":"2016-06-20T12:46:29.818+02:00", + "revisionNumber":0, + "systemId":"system123", + "name":"WebService", + "nodeId":"test-system123-node-2", + "serviceId":"test-system123-service-2" + }, + { + "type":"serviceInstance", + "id":"test-system123-serviceInstance-3", + "changelogSequence":0, + "lastUpdate":"2016-06-20T12:46:29.818+02:00", + "revisionNumber":0, + "systemId":"system123", + "name":"CashDesk", + "nodeId":"test-system123-node-2", + "serviceId":"test-system123-service-3" + } + ] +}); + +export default Model; \ No newline at end of file diff --git a/app/models/system.js b/app/models/system.js index fc060574809a5265660f51e7923cce9781db94dd..037318cd56e3ad7c567603a96cbe0df0d2e4075a 100644 --- a/app/models/system.js +++ b/app/models/system.js @@ -1,6 +1,16 @@ import BaseEntity from './baseentity'; import attr from 'ember-data/attr'; -export default BaseEntity.extend({ +const Model = BaseEntity.extend({ name: attr('string') }); + +Model.reopenClass({ + FIXTURES: [{ + "type": "system", + "id": "system123", + "name": "Test System" + }] +}); + +export default Model; \ No newline at end of file diff --git a/app/router.js b/app/router.js index 211b13269183bfe32395e7eb19fb39a9c252544a..2d1a97b70a2616ce758c964e88dfadbfcfd725a3 100644 --- a/app/router.js +++ b/app/router.js @@ -7,7 +7,7 @@ const Router = Ember.Router.extend({ Router.map(function() { this.route('home', {path: '/'}); - this.route('architectures', function() { + this.route('deployments', function() { this.route('single', {path: '/:systemId'}, function() { this.route('details', {path: '/:entityType/:entityId'}); // use model properties for automatic matching }); diff --git a/app/routes/architectures/index.js b/app/routes/deployments/index.js similarity index 100% rename from app/routes/architectures/index.js rename to app/routes/deployments/index.js diff --git a/app/routes/architectures/single.js b/app/routes/deployments/single.js similarity index 95% rename from app/routes/architectures/single.js rename to app/routes/deployments/single.js index b89ac00578ac47d9a8940b3b3d6c1a86a555f63e..cd7c872bbad8fe0eba11682aa195cbb6df411a3b 100644 --- a/app/routes/architectures/single.js +++ b/app/routes/deployments/single.js @@ -38,7 +38,7 @@ export default Ember.Route.extend({ /* I would love to not generate the url first, but there seem to be unknown (to me) assumptions about * passing object parameters to transitionTo which break with the current path variables. */ - const url = this.router.generate('architectures.single.details', { + const url = this.router.generate('deployments.single.details', { systemId: this.get('session.systemId'), entityType, entityId diff --git a/app/routes/architectures/single/details.js b/app/routes/deployments/single/details.js similarity index 100% rename from app/routes/architectures/single/details.js rename to app/routes/deployments/single/details.js diff --git a/app/templates/application.hbs b/app/templates/application.hbs index b8ae549014bb1f1b3f35c8a9bb230056a16adcdb..f0b84fbf38f2dc399eca7c6133272691614fd529 100644 --- a/app/templates/application.hbs +++ b/app/templates/application.hbs @@ -16,8 +16,8 @@ {{#link-to 'home' tagName='li'}} {{#link-to 'home'}}Startseite{{/link-to}} {{/link-to}} - {{#link-to 'architectures' tagName='li'}} - {{#link-to 'architectures'}}Architekturen{{/link-to}} + {{#link-to 'deployments' tagName='li'}} + {{#link-to 'deployments'}}Deployments{{/link-to}} {{/link-to}} </ul> </div><!--/.nav-collapse --> diff --git a/app/templates/architectures/index.hbs b/app/templates/architectures/index.hbs deleted file mode 100644 index dbc342d382fc0bdcc3178c5fdd00f21864086cd5..0000000000000000000000000000000000000000 --- a/app/templates/architectures/index.hbs +++ /dev/null @@ -1,9 +0,0 @@ -{{model.length}} - -<ul> -{{#each model as |system| }} - <li>{{#link-to 'architectures.single' system.id}}{{system.name}}{{/link-to}}</li> -{{/each}} -</ul> - -{{outlet}} \ No newline at end of file diff --git a/app/templates/architectures.hbs b/app/templates/deployments.hbs similarity index 100% rename from app/templates/architectures.hbs rename to app/templates/deployments.hbs diff --git a/app/templates/deployments/index.hbs b/app/templates/deployments/index.hbs new file mode 100644 index 0000000000000000000000000000000000000000..9cfa810146a0c5648d34fbc866e2fefd590b8e20 --- /dev/null +++ b/app/templates/deployments/index.hbs @@ -0,0 +1,9 @@ +{{model.length}} + +<ul> +{{#each model as |system| }} + <li>{{#link-to 'deployments.single' system.id}}{{system.name}}{{/link-to}}</li> +{{/each}} +</ul> + +{{outlet}} \ No newline at end of file diff --git a/app/templates/architectures/single.hbs b/app/templates/deployments/single.hbs similarity index 100% rename from app/templates/architectures/single.hbs rename to app/templates/deployments/single.hbs diff --git a/app/templates/architectures/single/details.hbs b/app/templates/deployments/single/details.hbs similarity index 100% rename from app/templates/architectures/single/details.hbs rename to app/templates/deployments/single/details.hbs diff --git a/config/environment.js b/config/environment.js index 688e1c0c7eedbe17ff7b2681f0e6bdd58f33fc13..c40c6dd03390384110f166bc2e389cc96d4906eb 100644 --- a/config/environment.js +++ b/config/environment.js @@ -11,6 +11,7 @@ module.exports = function(environment) { // Here you can enable experimental features on an ember canary build // e.g. 'with-controller': true } + //EXTEND_PROTOTYPES: true // (true is default) See avoidEnumerableNativeExtensions in app.js }, APP: { @@ -19,6 +20,7 @@ module.exports = function(environment) { } }; + if (environment === 'development') { // ENV.APP.LOG_RESOLVER = true; // ENV.APP.LOG_ACTIVE_GENERATION = true; @@ -44,4 +46,4 @@ module.exports = function(environment) { } return ENV; -}; +}; \ No newline at end of file diff --git a/ember-cli-build.js b/ember-cli-build.js index 93dde05c72852aa7d807f4bc65113fed359072b7..832458dcf0194ea74763a6a7a393fa8ede75d81b 100644 --- a/ember-cli-build.js +++ b/ember-cli-build.js @@ -4,7 +4,10 @@ var EmberApp = require('ember-cli/lib/broccoli/ember-app'); module.exports = function(defaults) { var app = new EmberApp(defaults, { - // Add options here + // cose-bilkent breaks upon minification, see https://github.com/cytoscape/cytoscape.js-cose-bilkent/issues/4 + minifyJS: { + enabled: false + }, 'ember-cli-bootstrap-sassy': { 'js': [] } diff --git a/package.json b/package.json index 9ee82e6cf77dc6b73517314ec6933ab1e46d093e..14e3fa5464904c407696cc93b7354e9ad337dfb8 100644 --- a/package.json +++ b/package.json @@ -38,6 +38,7 @@ "ember-cli-uglify": "^1.2.0", "ember-cli-yuidoc": "0.8.3", "ember-data": "^2.4.0", + "ember-data-fixture-adapter": "1.13.0", "ember-data-url-templates": "0.1.1", "ember-debug-logger": "0.2.0", "ember-disable-proxy-controllers": "^1.0.1",