diff --git a/src/plugins/condition/Condition.js b/src/plugins/condition/Condition.js index 7aca82bc16..a8d1282577 100644 --- a/src/plugins/condition/Condition.js +++ b/src/plugins/condition/Condition.js @@ -204,9 +204,8 @@ export default class ConditionClass extends EventEmitter { } requestLADConditionResult() { - const criteriaResults = this.criteria.map(criterion => - criterion.requestLAD() - ); + const criteriaResults = this.criteria + .map(criterion => criterion.requestLAD()); return Promise.all(criteriaResults) .then(results => { @@ -214,8 +213,12 @@ export default class ConditionClass extends EventEmitter { this.updateCriteriaResults(result); this.latestTimestamp = this.getLatestTimestamp(this.latestTimestamp, result) }); -console.log(Object.assign({}, this.latestTimestamp, { result: this.result })); - return Object.assign({}, this.latestTimestamp, { result: this.result }); + this.evaluate(); + + return { + id: this.id, + data: Object.assign({}, this.latestTimestamp, { result: this.result }) + } }); } diff --git a/src/plugins/condition/ConditionManager.js b/src/plugins/condition/ConditionManager.js index 7e2dff198c..127074afae 100644 --- a/src/plugins/condition/ConditionManager.js +++ b/src/plugins/condition/ConditionManager.js @@ -32,8 +32,9 @@ export default class ConditionManager extends EventEmitter { this.timeAPI = this.openmct.time; this.latestTimestamp = {}; this.instantiate = this.openmct.$injector.get('instantiate'); - this.loaded = undefined; this.conditionCollection = []; + this.composition = this.openmct.composition.get(domainObject); + this.loaded = this.composition.load(); this.initialize(); } @@ -45,7 +46,7 @@ export default class ConditionManager extends EventEmitter { this.conditionResults = {}; this.openmct.objects.get(this.domainObject.identifier) - .then((obj) => { + .then((obj) => { this.observeForChanges(obj); if (this.domainObject.configuration.conditionCollection.length) { this.domainObject.configuration.conditionCollection.forEach((conditionConfigurationId, index) => { @@ -225,7 +226,6 @@ export default class ConditionManager extends EventEmitter { break; } } - return currentConditionIdentifier; } @@ -247,7 +247,6 @@ export default class ConditionManager extends EventEmitter { this.updateConditionResults(resultObj); const currentConditionIdentifier = this.getCurrentConditionId(); - this.openmct.objects.get(currentConditionIdentifier).then((obj) => { this.emit('conditionSetResultUpdated', Object.assign( @@ -277,41 +276,36 @@ export default class ConditionManager extends EventEmitter { return Promise.resolve([]); } - const conditionResults = []; + return this.load().then(() => { + if (this.conditionCollection && this.conditionCollection.length === 1) { + return Promise([]); + } - this.domainObject.configuration.conditionCollection.forEach((conditionId, index) => { - this.openmct.objects.get(conditionId) - .then(conditionConfiguration => { - let condition = new Condition(conditionConfiguration, this.openmct); - if (index !== undefined) { - this.conditionCollection.splice(index + 1, 0, condition); - } else { - this.conditionCollection.unshift(condition); - } + let ladConditionResults = []; - conditionResults.push( - condition.requestLADConditionResult() - ); + // do not request LAD for default collection, which is always last + for (let i = 0; i < this.conditionCollection.length - 1; i++) { + ladConditionResults.push(this.conditionCollection[i].requestLADConditionResult()); + } + return Promise.all(ladConditionResults) + .then((results) => { + results.forEach(resultObj => { this.updateConditionResults(resultObj); }); + const currentConditionIdentifier = this.getCurrentConditionId(); + return this.openmct.objects.get(currentConditionIdentifier) + .then(obj => { + // uncomment to see output of lad request (before subscriptions kick in) + // console.log(obj.configuration.output); + return Object.assign( + { + output: obj.configuration.output, + id: this.domainObject.identifier, + conditionId: currentConditionIdentifier + }, + this.latestTimestamp + ); + }); }); }); - - return Promise.all(conditionResults) - .then((results) => { - results.forEach(resultObj => { this.updateConditionResults(resultObj); }); - const currentConditionIdentifier = this.getCurrentConditionId(); - - this.openmct.objects.get(currentConditionIdentifier).then((obj) => { - return Object.assign( - { - output: obj.configuration.output, - id: this.domainObject.identifier, - conditionId: currentConditionIdentifier - }, - this.latestTimestamp - ); - }); - }); - } persist() { diff --git a/src/plugins/condition/ConditionSetTelemetryProvider.js b/src/plugins/condition/ConditionSetTelemetryProvider.js index 2075660440..3dfdce77a1 100644 --- a/src/plugins/condition/ConditionSetTelemetryProvider.js +++ b/src/plugins/condition/ConditionSetTelemetryProvider.js @@ -20,16 +20,17 @@ export default class ConditionSetTelemetryProvider { request(domainObject, options) { const conditionManager = new ConditionManager(domainObject, this.openmct); - return conditionManager.requestLADConditionSetOutput(); + return conditionManager.requestLADConditionSetOutput() + .then(latestOutput => { return latestOutput ? [latestOutput] : []; }); } subscribe(domainObject, callback) { - // const conditionManager = new ConditionManager(domainObject, this.openmct); - // conditionManager.on('conditionSetResultUpdated', callback); + const conditionManager = new ConditionManager(domainObject, this.openmct); + conditionManager.on('conditionSetResultUpdated', callback); - // return function unsubscribe() { - // conditionManager.off('conditionSetResultUpdated'); - // conditionManager.destroy(); - // } + return function unsubscribe() { + conditionManager.off('conditionSetResultUpdated'); + conditionManager.destroy(); + } } } diff --git a/src/plugins/condition/components/ConditionSet.vue b/src/plugins/condition/components/ConditionSet.vue index 50e1a5bb5e..8c573c0eb7 100644 --- a/src/plugins/condition/components/ConditionSet.vue +++ b/src/plugins/condition/components/ConditionSet.vue @@ -77,7 +77,7 @@ export default { this.openmct.telemetry .request(this.domainObject) .then(output => { - this.updateCurrentOutput(output); + this.updateCurrentOutput(output[0]); }); this.stopProvidingTelemetry = this.openmct.telemetry .subscribe(this.domainObject, output => { this.updateCurrentOutput(output); }); diff --git a/src/plugins/condition/criterion/TelemetryCriterion.js b/src/plugins/condition/criterion/TelemetryCriterion.js index 567d7fcbeb..1b026fa307 100644 --- a/src/plugins/condition/criterion/TelemetryCriterion.js +++ b/src/plugins/condition/criterion/TelemetryCriterion.js @@ -66,7 +66,6 @@ export default class TelemetryCriterion extends EventEmitter { datum[timeSystem.key] = data[timeSystem.key] }); } - return datum; } @@ -129,7 +128,10 @@ export default class TelemetryCriterion extends EventEmitter { options ).then(results => { const latestDatum = results.length ? results[results.length - 1] : {}; - return this.formatData(latestDatum); + return { + id: this.id, + data: this.formatData(latestDatum) + }; }); }); }