mirror of
https://github.com/nasa/openmct.git
synced 2025-02-24 18:50:47 +00:00
Updates conditionManager.js to emit the output of the winning condition instead of the identifier of that condition
This commit is contained in:
parent
6ab84c0bc3
commit
5814d2a35e
@ -34,6 +34,7 @@ export default class ConditionManager extends EventEmitter {
|
||||
}
|
||||
|
||||
initialize() {
|
||||
this.conditionResults = {};
|
||||
this.openmct.objects.get(this.domainObject.identifier).then((obj) => {
|
||||
this.observeForChanges(obj);
|
||||
this.conditionCollection = [];
|
||||
@ -67,10 +68,7 @@ export default class ConditionManager extends EventEmitter {
|
||||
//check for removed conditions
|
||||
oldConditionIdentifiers.forEach((identifier, index) => {
|
||||
if (newConditionIdentifiers.indexOf(identifier) < 0) {
|
||||
let condition = this.conditionCollection[index];
|
||||
if (condition) {
|
||||
this.removeCondition(condition);
|
||||
}
|
||||
this.removeCondition(identifier);
|
||||
}
|
||||
});
|
||||
|
||||
@ -157,19 +155,38 @@ export default class ConditionManager extends EventEmitter {
|
||||
this.persist();
|
||||
}
|
||||
|
||||
removeCondition(condition, index) {
|
||||
if (index !== undefined && index > -1) {
|
||||
condition = this.conditionCollection[index];
|
||||
}
|
||||
if (condition) {
|
||||
removeCondition(identifier) {
|
||||
let found = this.findConditionById(identifier);
|
||||
if (found) {
|
||||
let index = found.index;
|
||||
let condition = this.conditionCollection[index];
|
||||
let conditionIdAsString = this.openmct.objects.makeKeyString(condition.identifier);
|
||||
condition.destroyCriteria();
|
||||
condition.off('conditionResultUpdated', this.handleConditionResult.bind(this));
|
||||
this.conditionCollection.splice(index, 1);
|
||||
this.domainObject.configuration.conditionCollection.splice(index, 1);
|
||||
if (this.conditionResults[conditionIdAsString] !== undefined) {
|
||||
delete this.conditionResults[conditionIdAsString];
|
||||
}
|
||||
this.persist();
|
||||
}
|
||||
}
|
||||
|
||||
findConditionById(identifier) {
|
||||
let found;
|
||||
for (let i=0, ii=this.conditionCollection.length; i < ii; i++) {
|
||||
if (this.conditionCollection[i].id === this.openmct.objects.makeKeyString(identifier)) {
|
||||
found = {
|
||||
item: this.conditionCollection[i],
|
||||
index: i
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return found;
|
||||
}
|
||||
|
||||
//this.$set(this.conditionCollection, reorderEvent.newIndex, oldConditions[reorderEvent.oldIndex]);
|
||||
reorderConditions(reorderPlan) {
|
||||
let oldConditions = Array.from(this.domainObject.configuration.conditionCollection);
|
||||
@ -185,10 +202,29 @@ export default class ConditionManager extends EventEmitter {
|
||||
}
|
||||
|
||||
handleConditionResult(args) {
|
||||
this.emit('conditionResultUpdated', {
|
||||
id: args.id,
|
||||
result: args.data.result
|
||||
})
|
||||
let idAsString = this.openmct.objects.makeKeyString(args.id);
|
||||
let found = this.findConditionById(idAsString);
|
||||
let conditionCollection = this.domainObject.configuration.conditionCollection;
|
||||
let currentConditionIdentifier = conditionCollection[conditionCollection.length-1];
|
||||
if (found) {
|
||||
this.conditionResults[idAsString] = args.data.result;
|
||||
|
||||
for (let i = 0, ii = conditionCollection.length - 1; i < ii; i++) {
|
||||
let conditionIdAsString = this.openmct.objects.makeKeyString(conditionCollection[i]);
|
||||
if (this.conditionResults[conditionIdAsString]) {
|
||||
//first condition to be true wins
|
||||
currentConditionIdentifier = conditionCollection[i];
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
this.openmct.objects.get(currentConditionIdentifier).then((obj) => {
|
||||
this.emit('conditionSetResultUpdated', {
|
||||
id: this.domainObject.identifier,
|
||||
output: obj.configuration.output
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
persist() {
|
||||
|
@ -67,7 +67,6 @@
|
||||
:condition-index="index"
|
||||
:telemetry="telemetryObjs"
|
||||
:is-editing="isEditing"
|
||||
@updateCurrentCondition="updateCurrentCondition"
|
||||
@removeCondition="removeCondition"
|
||||
@cloneCondition="cloneCondition"
|
||||
@setMoveIndex="setMoveIndex"
|
||||
@ -110,7 +109,7 @@ export default {
|
||||
this.composition.off('add', this.addTelemetryObject);
|
||||
this.composition.off('remove', this.removeTelemetryObject);
|
||||
if(this.conditionManager) {
|
||||
this.conditionManager.off('conditionResultUpdated', this.handleConditionResult);
|
||||
this.conditionManager.off('conditionSetResultUpdated', this.handleOutputUpdated);
|
||||
}
|
||||
if (typeof this.stopObservingForChanges === 'function') {
|
||||
this.stopObservingForChanges();
|
||||
@ -123,7 +122,7 @@ export default {
|
||||
this.composition.load();
|
||||
this.conditionCollection = this.domainObject.configuration.conditionCollection;
|
||||
this.conditionManager = new ConditionManager(this.domainObject, this.openmct);
|
||||
this.conditionManager.on('conditionResultUpdated', this.handleConditionResult.bind(this));
|
||||
this.conditionManager.on('conditionSetResultUpdated', this.handleOutputUpdated.bind(this));
|
||||
this.observeForChanges();
|
||||
},
|
||||
methods: {
|
||||
@ -178,22 +177,8 @@ export default {
|
||||
dragLeave(e) {
|
||||
e.target.classList.remove("dragging");
|
||||
},
|
||||
handleConditionResult(args) {
|
||||
let idAsString = this.openmct.objects.makeKeyString(args.id);
|
||||
this.conditionResults[idAsString] = args.result;
|
||||
this.updateCurrentConditionId();
|
||||
},
|
||||
updateCurrentConditionId() {
|
||||
let currentConditionIdentifier = this.conditionCollection[this.conditionCollection.length-1];
|
||||
for (let i = 0; i < this.conditionCollection.length - 1; i++) {
|
||||
let conditionIdAsString = this.openmct.objects.makeKeyString(this.conditionCollection[i]);
|
||||
if (this.conditionResults[conditionIdAsString]) {
|
||||
//first condition to be true wins
|
||||
currentConditionIdentifier = this.conditionCollection[i];
|
||||
break;
|
||||
}
|
||||
}
|
||||
this.$emit('currentConditionUpdated', currentConditionIdentifier);
|
||||
handleOutputUpdated(args) {
|
||||
this.$emit('currentConditionSetOutputUpdated', args);
|
||||
},
|
||||
addTelemetryObject(domainObject) {
|
||||
this.telemetryObjs.push(domainObject);
|
||||
|
@ -23,10 +23,10 @@
|
||||
<template>
|
||||
<div class="c-cs-edit w-condition-set">
|
||||
<div class="c-sw-edit__ui holder">
|
||||
<CurrentOutput :condition="currentCondition" />
|
||||
<CurrentOutput :output="currentConditionOutput" />
|
||||
<TestData :is-editing="isEditing" />
|
||||
<ConditionCollection :is-editing="isEditing"
|
||||
@currentConditionUpdated="updateCurrentCondition"
|
||||
@currentConditionSetOutputUpdated="updateCurrentOutput"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
@ -49,24 +49,17 @@ export default {
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
currentCondition: this.currentCondition
|
||||
currentConditionOutput: ''
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
let conditionCollection = this.domainObject.configuration.conditionCollection;
|
||||
this.currentConditionIdentifier = conditionCollection.length ? this.updateCurrentCondition(conditionCollection[0]) : null;
|
||||
this.conditionSetIdentifier = this.openmct.objects.makeKeyString(this.domainObject.identifier);
|
||||
},
|
||||
methods: {
|
||||
setCurrentCondition() {
|
||||
if (this.currentConditionIdentifier) {
|
||||
this.openmct.objects.get(this.currentConditionIdentifier).then((obj) => {
|
||||
this.currentCondition = obj;
|
||||
});
|
||||
updateCurrentOutput(currentConditionResult) {
|
||||
if (this.openmct.objects.makeKeyString(currentConditionResult.id) === this.conditionSetIdentifier) {
|
||||
this.currentConditionOutput = currentConditionResult.output;
|
||||
}
|
||||
},
|
||||
updateCurrentCondition(conditionIdentifier) {
|
||||
this.currentConditionIdentifier = conditionIdentifier;
|
||||
this.setCurrentCondition();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
@ -22,7 +22,7 @@
|
||||
|
||||
<template>
|
||||
<section id="current-output">
|
||||
<div v-if="condition"
|
||||
<div v-if="output"
|
||||
class="c-cs__ui__header"
|
||||
>
|
||||
<span class="c-cs__ui__header-label">Current Output</span>
|
||||
@ -32,11 +32,11 @@
|
||||
@click="expanded = !expanded"
|
||||
></span>
|
||||
</div>
|
||||
<div v-if="expanded && condition"
|
||||
<div v-if="expanded && output"
|
||||
class="c-cs__ui_content"
|
||||
>
|
||||
<div>
|
||||
<span class="current-output">{{ condition.configuration.output }}</span>
|
||||
<span class="current-output">{{ output }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
@ -47,9 +47,9 @@ export default {
|
||||
inject: ['openmct', 'domainObject'],
|
||||
props: {
|
||||
isEditing: Boolean,
|
||||
condition: {
|
||||
output: {
|
||||
default: () => {return null;},
|
||||
type: Object
|
||||
type: String
|
||||
}
|
||||
},
|
||||
data() {
|
||||
|
Loading…
x
Reference in New Issue
Block a user