diff --git a/src/plugins/condition/ConditionManager.js b/src/plugins/condition/ConditionManager.js
index dc51d1194e..5acb67d1df 100644
--- a/src/plugins/condition/ConditionManager.js
+++ b/src/plugins/condition/ConditionManager.js
@@ -37,11 +37,13 @@ export default class ConditionManager extends EventEmitter {
this.compositionLoad = this.composition.load();
this.subscriptions = {};
this.telemetryObjects = {};
+ this.testData = {conditionTestData: [], applied: false};
this.initialize();
this.stopObservingForChanges = this.openmct.objects.observe(this.conditionSetDomainObject, '*', (newDomainObject) => {
this.conditionSetDomainObject = newDomainObject;
});
+
}
subscribeToTelemetry(endpoint) {
@@ -265,14 +267,31 @@ export default class ConditionManager extends EventEmitter {
this.emit(`broadcastTelemetry`, Object.assign({}, this.createNormalizedDatum(datum, id), {id: id}));
}
+ getTestData(metadatum) {
+ let data = undefined;
+ if (this.testData.applied) {
+ const found = this.testData.conditionTestInputs.find((testInput) => (testInput.metadata === metadatum.source));
+ if (found) {
+ data = found.value;
+ }
+ }
+ return data;
+ }
+
createNormalizedDatum(telemetryDatum, id) {
return Object.values(this.telemetryObjects[id].telemetryMetaData).reduce((normalizedDatum, metadatum) => {
+ const testValue = this.getTestData(metadatum);
const formatter = this.openmct.telemetry.getValueFormatter(metadatum);
- normalizedDatum[metadatum.key] = formatter.parse(telemetryDatum[metadatum.source]);
+ normalizedDatum[metadatum.key] = testValue !== undefined ? formatter.parse(testValue) : formatter.parse(telemetryDatum[metadatum.source]);
return normalizedDatum;
}, {});
}
+ updateTestData(testData) {
+ this.testData = testData;
+ this.openmct.objects.mutate(this.conditionSetDomainObject, 'configuration.conditionTestData', this.testData.conditionTestInputs);
+ }
+
persistConditions() {
this.openmct.objects.mutate(this.conditionSetDomainObject, 'configuration.conditionCollection', this.conditionSetDomainObject.configuration.conditionCollection);
}
diff --git a/src/plugins/condition/components/ConditionCollection.vue b/src/plugins/condition/components/ConditionCollection.vue
index 9b2ae28eb0..5db1e702cb 100644
--- a/src/plugins/condition/components/ConditionCollection.vue
+++ b/src/plugins/condition/components/ConditionCollection.vue
@@ -90,7 +90,17 @@ export default {
Condition
},
props: {
- isEditing: Boolean
+ isEditing: Boolean,
+ testData: {
+ type: Object,
+ required: true,
+ default: () => {
+ return {
+ applied: false,
+ conditionTestInputs: []
+ }
+ }
+ }
},
data() {
return {
@@ -103,6 +113,14 @@ export default {
isDragging: false
};
},
+ watch: {
+ testData: {
+ handler() {
+ this.updateTestData();
+ },
+ deep: true
+ }
+ },
destroyed() {
this.composition.off('add', this.addTelemetryObject);
this.composition.off('remove', this.removeTelemetryObject);
@@ -181,6 +199,7 @@ export default {
},
addTelemetryObject(domainObject) {
this.telemetryObjs.push(domainObject);
+ this.$emit('telemetryUpdated', this.telemetryObjs);
},
removeTelemetryObject(identifier) {
let index = _.findIndex(this.telemetryObjs, (obj) => {
@@ -206,6 +225,9 @@ export default {
},
cloneCondition(data) {
this.conditionManager.cloneCondition(data.condition, data.index);
+ },
+ updateTestData() {
+ this.conditionManager.updateTestData(this.testData);
}
}
}
diff --git a/src/plugins/condition/components/ConditionSet.vue b/src/plugins/condition/components/ConditionSet.vue
index 7cc20f18da..d955ad2679 100644
--- a/src/plugins/condition/components/ConditionSet.vue
+++ b/src/plugins/condition/components/ConditionSet.vue
@@ -33,10 +33,16 @@
No output selected
-