do not mutate function args for criteria results either

This commit is contained in:
David Tsay 2020-04-07 13:22:03 -07:00
parent 713c5e9fb7
commit d188b9a056
2 changed files with 14 additions and 18 deletions

View File

@ -170,9 +170,7 @@ export default class ConditionClass extends EventEmitter {
criterion.off('criterionUpdated', (obj) => this.handleCriterionUpdated(obj));
criterion.off('criterionResultUpdated', (obj) => this.handleCriterionResult(obj));
this.criteria.splice(found.index, 1, newCriterion);
if (this.criteriaResults[criterion.id] !== undefined) {
delete this.criteriaResults[criterion.id];
}
delete this.criteriaResults[criterion.id];
}
}
@ -191,9 +189,8 @@ export default class ConditionClass extends EventEmitter {
});
criterion.destroy();
this.criteria.splice(found.index, 1);
if (this.criteriaResults[criterion.id] !== undefined) {
delete this.criteriaResults[criterion.id];
}
delete this.criteriaResults[criterion.id];
return true;
}
return false;
@ -211,17 +208,16 @@ export default class ConditionClass extends EventEmitter {
}
}
updateCriteriaResults(criteriaResults, eventData) {
updateCriteriaResults(eventData) {
const id = eventData.id;
if (this.findCriterion(id)) {
// The !! here is important to convert undefined to false otherwise the criteriaResults won't get deleted when the criteria is destroyed
criteriaResults[id] = !!eventData.data.result;
this.criteriaResults[id] = !!eventData.data.result;
}
}
handleCriterionResult(eventData) {
this.updateCriteriaResults(this.criteriaResults, eventData);
this.updateCriteriaResults(eventData);
this.handleConditionUpdated(eventData.data);
}
@ -233,11 +229,14 @@ export default class ConditionClass extends EventEmitter {
return Promise.all(criteriaRequests)
.then(results => {
results.forEach(result => {
this.updateCriteriaResults(criteriaResults, result)
results.forEach(resultObj => {
const { id, data, data: { result } } = resultObj;
if (this.findCriterion(id)) {
criteriaResults[id] = !!result;
}
latestTimestamp = getLatestTimestamp(
latestTimestamp,
result.data,
data,
this.timeSystems
);
});

View File

@ -164,9 +164,7 @@ export default class ConditionManager extends EventEmitter {
condition.off('conditionResultUpdated', this.handleConditionResult.bind(this));
this.conditionClassCollection.splice(index, 1);
this.conditionSetDomainObject.configuration.conditionCollection.splice(index, 1);
if (this.conditionResults[condition.id] !== undefined) {
delete this.conditionResults[condition.id];
}
delete this.conditionResults[condition.id];
this.persistConditions();
this.handleConditionResult();
}
@ -175,7 +173,6 @@ export default class ConditionManager extends EventEmitter {
return this.conditionClassCollection.find(conditionClass => conditionClass.id === id);
}
//this.$set(this.conditionClassCollection, reorderEvent.newIndex, oldConditions[reorderEvent.oldIndex]);
reorderConditions(reorderPlan) {
let oldConditions = Array.from(this.conditionSetDomainObject.configuration.conditionCollection);
let newCollection = [];
@ -247,7 +244,7 @@ export default class ConditionManager extends EventEmitter {
results.forEach(resultObj => {
const { id, data, data: { result } } = resultObj;
if (this.findConditionById(id)) {
conditionResults[id] = result;
conditionResults[id] = !!result;
}
latestTimestamp = getLatestTimestamp(
latestTimestamp,