diff --git a/app/adapters/application.js b/app/adapters/application.js new file mode 100644 index 0000000..98e3b38 --- /dev/null +++ b/app/adapters/application.js @@ -0,0 +1,37 @@ +import DS from 'ember-data'; + +export default DS.RESTAdapter.extend({ + host: 'http://46.101.131.212:80', + namespace: 'ngsi10', + headers: { + Accept: 'application/json' + }, + + findAll: function(store, type, sinceToken) { + var requestBody = { + entities: [ + { + type: 'ElectricalGridMonitoring', + isPattern: true, + id: 'S?_ElectricalGrid' + } + ] + }; + + return this.ajax(this.host + '/' + this.namespace + '/queryContext', 'POST', { data: requestBody }); + }, + + findRecord: function(store, type, id, snapshot) { + var requestBody = { + entities: [ + { + type: 'ElectricalGridMonitoring', + isPattern: false, + id: id + } + ] + }; + + return this.ajax(this.host + '/' + this.namespace + '/queryContext', 'POST', { data: requestBody }); + }, +}); diff --git a/app/components/entities-table.js b/app/components/entities-table.js new file mode 100644 index 0000000..b47b62e --- /dev/null +++ b/app/components/entities-table.js @@ -0,0 +1,6 @@ +import Ember from 'ember'; + +export default Ember.Component.extend({ + tagName: 'table', + classNames: ['properties-table'] +}); diff --git a/app/mirage/factories/property.js b/app/mirage/factories/property.js index 56d85e7..8ab983f 100644 --- a/app/mirage/factories/property.js +++ b/app/mirage/factories/property.js @@ -3,5 +3,5 @@ import Mirage, {faker} from 'ember-cli-mirage' export default Mirage.Factory.extend({ name(i) { return `Property ${i}`; }, value: faker.list.random(1.23, 2.34, 3.45, 4.56), - unit: faker.list.random('A', 'kV', 'MW') + type: faker.list.random('A', 'kV', 'MW') }); diff --git a/app/models/entity.js b/app/models/entity.js new file mode 100644 index 0000000..29b0c4a --- /dev/null +++ b/app/models/entity.js @@ -0,0 +1,6 @@ +import DS from 'ember-data'; + +export default DS.Model.extend({ + type: DS.attr('string'), + properties: DS.attr() +}); diff --git a/app/models/property.js b/app/models/property.js deleted file mode 100644 index 0f672b9..0000000 --- a/app/models/property.js +++ /dev/null @@ -1,7 +0,0 @@ -import DS from 'ember-data'; - -export default DS.Model.extend({ - name: DS.attr('string'), - value: DS.attr('number'), - unit: DS.attr('string') -}); diff --git a/app/router.js b/app/router.js index b43c911..d4875f9 100644 --- a/app/router.js +++ b/app/router.js @@ -6,7 +6,9 @@ var Router = Ember.Router.extend({ }); Router.map(function() { - this.route('lab-mashup', { path: '/' }, function() {}); + this.route('lab-mashup', { path: '/' }, function() { + this.route('entity', { path: '/:entity_id' }); + }); }); export default Router; diff --git a/app/routes/lab-mashup.js b/app/routes/lab-mashup.js index a7bf346..26d9f31 100644 --- a/app/routes/lab-mashup.js +++ b/app/routes/lab-mashup.js @@ -1,8 +1,4 @@ import Ember from 'ember'; export default Ember.Route.extend({ - model() { - return this.store.findAll('property'); - } }); - diff --git a/app/routes/lab-mashup/entity.js b/app/routes/lab-mashup/entity.js new file mode 100644 index 0000000..5ac36df --- /dev/null +++ b/app/routes/lab-mashup/entity.js @@ -0,0 +1,7 @@ +import Ember from 'ember'; + +export default Ember.Route.extend({ + model(params) { + return this.store.findRecord('entity', params.entity_id); + } +}); diff --git a/app/routes/lab-mashup/index.js b/app/routes/lab-mashup/index.js new file mode 100644 index 0000000..3ac0567 --- /dev/null +++ b/app/routes/lab-mashup/index.js @@ -0,0 +1,7 @@ +import Ember from 'ember'; + +export default Ember.Route.extend({ + model() { + return this.store.findAll('entity'); + } +}); diff --git a/app/serializers/application.js b/app/serializers/application.js new file mode 100644 index 0000000..074d7ac --- /dev/null +++ b/app/serializers/application.js @@ -0,0 +1,78 @@ +import DS from 'ember-data'; + +export default DS.RESTSerializer.extend({ + normalizeFindAllResponse: function(store, primaryModelClass, payload, id, requestType) { + var json = { data: [] }; + + // check if payload has context responses + if (payload.contextResponses) { + payload.contextResponses.forEach(function(item) { + // check if item has context element + if (item.contextElement) { + // create new entity object + var entity = { + type: 'entity', + id: item.contextElement.id, + attributes: { + type: item.contextElement.type, + properties: [] + } + } + + item.contextElement.attributes.forEach(function(attribute) { + var property = { + name: attribute.name, + value: attribute.value, + type: attribute.type + } + + entity.attributes.properties.push(property); + }); + + // add entity to data + json.data.push(entity); + } + }); + } + + console.log(json); + + return json; + }, + + normalizeFindRecordResponse: function(store, primaryModelClass, payload, id, requestType) { + var json = { data: {} }; + + // check if payload has context responses + if (payload.contextResponses) { + payload.contextResponses.forEach(function(item) { + // check if item has context element + if (item.contextElement) { + // create new entity object + json.data = { + type: 'entity', + id: item.contextElement.id, + attributes: { + type: item.contextElement.type, + properties: [] + } + } + + item.contextElement.attributes.forEach(function(attribute) { + var property = { + name: attribute.name, + value: attribute.value, + type: attribute.type + } + + json.data.attributes.properties.push(property); + }); + } + }); + } + + console.log(json); + + return json; + } +}); diff --git a/app/templates/components/entities-table.hbs b/app/templates/components/entities-table.hbs new file mode 100644 index 0000000..a1981b0 --- /dev/null +++ b/app/templates/components/entities-table.hbs @@ -0,0 +1,10 @@ + + ID + Type + +{{#each entities as |entity|}} + + {{#link-to 'lab-mashup.entity' entity}}{{entity.id}}{{/link-to}} + {{entity.type}} + +{{/each}} diff --git a/app/templates/components/properties-table.hbs b/app/templates/components/properties-table.hbs index 4e843c4..e39df49 100644 --- a/app/templates/components/properties-table.hbs +++ b/app/templates/components/properties-table.hbs @@ -5,6 +5,6 @@ {{#each properties as |property|}} {{property.name}} - {{property.value}} {{property.unit}} + {{property.value}} {{property.type}} {{/each}} diff --git a/app/templates/lab-mashup.hbs b/app/templates/lab-mashup.hbs index d955b10..405f0a0 100644 --- a/app/templates/lab-mashup.hbs +++ b/app/templates/lab-mashup.hbs @@ -1,3 +1,3 @@
- {{properties-table properties=model}} + {{outlet}}
diff --git a/app/templates/lab-mashup/entity.hbs b/app/templates/lab-mashup/entity.hbs new file mode 100644 index 0000000..9a1e8be --- /dev/null +++ b/app/templates/lab-mashup/entity.hbs @@ -0,0 +1,5 @@ +

+ +{{properties-table}} + +{{#link-to 'lab-mashup'}}Entities{{/link-to}} diff --git a/app/templates/lab-mashup/index.hbs b/app/templates/lab-mashup/index.hbs new file mode 100644 index 0000000..8c43439 --- /dev/null +++ b/app/templates/lab-mashup/index.hbs @@ -0,0 +1 @@ +{{entities-table entities=model}} diff --git a/app/transforms/property.js b/app/transforms/property.js new file mode 100644 index 0000000..2acb7a3 --- /dev/null +++ b/app/transforms/property.js @@ -0,0 +1,12 @@ +import Ember from 'ember'; +import DS from 'ember-data'; + +export default DS.Transform.extend({ + deserialize: function(value) { + return Ember.create({ name: value[0], value: value[1], type: value[2]}); + }, + + serialize: function(value) { + return [value.get('name'), value.get('value'), value.get('type')]; + } +}); diff --git a/config/environment.js b/config/environment.js index b29684b..3fac5b7 100644 --- a/config/environment.js +++ b/config/environment.js @@ -16,6 +16,16 @@ module.exports = function(environment) { APP: { // Here you can pass flags/options to your application instance // when it is created + }, + + contentSecurityPolicy: { + 'default-src': "'none'", + 'script-src': "'self'", + 'font-src': "'self'", + 'connect-src': "'self' localhost:8080 46.101.131.212:1026 46.101.131.212:80", + 'img-src': "'self'", + 'style-src': "'self'", + 'media-src': "'self'" } }; @@ -25,6 +35,10 @@ module.exports = function(environment) { // ENV.APP.LOG_TRANSITIONS = true; // ENV.APP.LOG_TRANSITIONS_INTERNAL = true; // ENV.APP.LOG_VIEW_LOOKUPS = true; + + ENV['ember-cli-mirage'] = { + enabled: false + } } if (environment === 'test') { diff --git a/package.json b/package.json index 1c65920..57170cf 100644 --- a/package.json +++ b/package.json @@ -37,6 +37,12 @@ "ember-data": "1.13.8", "ember-disable-proxy-controllers": "^1.0.0", "ember-export-application-global": "^1.0.3", - "mirage": "0.0.5" + "glob": "^4.5.3", + "http-proxy": "^1.11.2", + "mirage": "0.0.5", + "morgan": "^1.6.1" + }, + "dependencies": { + "ember-cli-cors": "0.0.1" } }