From 9dc90ebdbf5fb78b272b4d530e92f601e36493b8 Mon Sep 17 00:00:00 2001 From: Mathis Neumann <mathis@simpletechs.net> Date: Sun, 10 Jul 2016 01:02:09 +0200 Subject: [PATCH] also render changes via UPDATE operations --- app/controllers/deployments/single.js | 5 +++-- app/services/changelog-parser.js | 4 +++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/app/controllers/deployments/single.js b/app/controllers/deployments/single.js index d03195c..7ebb0b8 100644 --- a/app/controllers/deployments/single.js +++ b/app/controllers/deployments/single.js @@ -14,8 +14,9 @@ export default Ember.Controller.extend({ init() { this.debug('initializing controller'); }, - // gets automatically updated when any of the instances changes (updated from changelog stream) - graphModel: Ember.computed(`model.instances.{${observables.join(',')}}.[]`, function() { + // gets automatically updated when any of the instances changes, changes are notified via a pseudo property 'updated' + // using @each will also listen if the array itself changes. Can be quite expensive. + graphModel: Ember.computed(`model.instances.{${observables.join(',')}}.@each._updated`, function() { const systemId = this.get('model.systemId'); const instances = this.get('model.instances'); /* diff --git a/app/services/changelog-parser.js b/app/services/changelog-parser.js index f6eb159..ca36fb9 100644 --- a/app/services/changelog-parser.js +++ b/app/services/changelog-parser.js @@ -1,5 +1,6 @@ import Ember from 'ember'; +// TODO: update cytoscape instead of complete rerender export default Ember.Service.extend({ store: Ember.inject.service(), parse(changelogs) { @@ -21,7 +22,7 @@ export default Ember.Service.extend({ const normalized = store.normalize(data.type, data); // using application serializer store.push(normalized); }, - UPDATE(changelog) { // FIXME: does not update view! + UPDATE(changelog) { const data = changelog.data; const oldRecord = this.get('store').peekRecord(data.type, data.id); this.debug('oldRecord', oldRecord); @@ -29,6 +30,7 @@ export default Ember.Service.extend({ throw new Error(`old record for update operation not found! Id: ${data.id}`); } oldRecord.setProperties(data); + oldRecord.notifyPropertyChange('_updated'); // notify about pseudo property, can be listened on (see deployments/single controller) }, DELETE(changelog) { const data = changelog.data; -- GitLab