Moves domain object observe logic to the condition set telemetry provider

This commit is contained in:
Joshi 2020-03-12 13:29:50 -07:00
parent 625b39d722
commit 649575fd2d
3 changed files with 35 additions and 47 deletions

View File

@ -45,38 +45,12 @@ export default class ConditionManager extends EventEmitter {
}
}
// observeForChanges(conditionSetDomainObject) {
// this.stopObservingForChanges = this.openmct.objects.observe(conditionSetDomainObject, 'configuration.conditionCollection', this.handleConditionCollectionUpdated.bind(this));
// }
//
// handleConditionCollectionUpdated(newConditionCollection) {
// // let oldConditionIds = this.conditionSetDomainObject.configuration.conditionCollection.map((conditionConfiguration) => {
// // return conditionConfiguration.id;
// // });
// // let newConditionIds = newConditionCollection.map((conditionConfiguration) => {
// // return conditionConfiguration.id;
// // });
//
// this.conditionSetDomainObject.configuration.conditionCollection = newConditionCollection;
//
// // //check for removed conditions
// // oldConditionIds.forEach((id, index) => {
// // if (newConditionIds.indexOf(id) < 0) {
// // this.removeCondition(id);
// // }
// // });
//
// // const conditionSetDOConditionCollection = this.conditionSetDomainObject.configuration.conditionCollection;
// //should not need to check for removed conditions since this happens from the ConditionManager itself
//
// for (let i = 0; i < newConditionCollection.length; i++) {
// const conditionConfiguration = newConditionCollection[i];
// const found = this.findConditionById(conditionConfiguration.id);
// if (!found) {
// this.initCondition(conditionConfiguration, i);
// }
// }
// }
//this should not happen very frequently
update(newConditionCollection) {
this.destroy();
this.conditionSetDomainObject.configuration.conditionCollection = newConditionCollection;
this.initialize();
}
updateCondition(conditionConfiguration, index) {
let condition = this.conditionClassCollection[index];
@ -240,9 +214,6 @@ export default class ConditionManager extends EventEmitter {
}
destroy() {
if (typeof this.stopObservingForChanges === 'function') {
this.stopObservingForChanges();
}
this.conditionClassCollection.forEach((condition) => {
condition.off('conditionResultUpdated', this.handleConditionResult);
condition.destroy();

View File

@ -1,3 +1,25 @@
/*****************************************************************************
* Open MCT, Copyright (c) 2014-2020, United States Government
* as represented by the Administrator of the National Aeronautics and Space
* Administration. All rights reserved.
*
* Open MCT is licensed under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0.
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*
* Open MCT includes source code licensed under additional open source
* licenses. See the Open Source Licenses file (LICENSES.md) included with
* this source code distribution or the Licensing information page available
* at runtime from the About dialog for additional information.
*****************************************************************************/
import ConditionManager from './ConditionManager'
export default class ConditionSetTelemetryProvider {
@ -21,9 +43,16 @@ export default class ConditionSetTelemetryProvider {
let conditionManager = new ConditionManager(domainObject, this.openmct);
conditionManager.on('conditionSetResultUpdated', callback);
let stopObservingForChanges = this.openmct.objects.observe(domainObject, 'configuration.conditionCollection', (newConditionCollection) => {
conditionManager.update(newConditionCollection);
});
return function unsubscribe() {
conditionManager.off('conditionSetResultUpdated');
conditionManager.destroy();
if (stopObservingForChanges) {
stopObservingForChanges();
}
}
}
}

View File

@ -58,27 +58,15 @@ export default {
},
mounted() {
this.conditionSetIdentifier = this.openmct.objects.makeKeyString(this.domainObject.identifier);
this.observeForChanges();
this.provideTelemetry();
},
beforeDestroy() {
if (this.stopProvidingTelemetry) {
this.stopProvidingTelemetry();
}
if (this.stopObservingForChanges) {
this.stopObservingForChanges();
}
},
methods: {
observeForChanges() {
this.stopObservingForChanges = this.openmct.objects.observe(this.domainObject, '*', (newDomainObject) => {
//Since the domain object changes in conditionCollection.vue we need to resubscribe when that happens
this.domainObject = newDomainObject;
this.provideTelemetry();
});
},
updateCurrentOutput(currentConditionResult) {
console.log(currentConditionResult);
this.currentConditionOutput = currentConditionResult.output;
},
provideTelemetry() {