#7133 Multiplicity visibility rule fix

* Inherit visibility value from clone reference
This commit is contained in:
Kristian Ntavidi 2021-11-02 12:28:55 +02:00
parent 7fefdd6aad
commit e46de79ec2
2 changed files with 26 additions and 4 deletions

View File

@ -209,7 +209,8 @@ export class FormSectionComponent implements OnInit, OnChanges {
requiredValue: x.sourceControlValue,
type: ''
}
this.visibilityRulesService.addNewRule(visRule);
const shouldBeVisibile = this.visibilityRulesService.checkTargetVisibilityProvidedBySource(x.sourceControlId, element.id);
this.visibilityRulesService.addNewRule(visRule, shouldBeVisibile);
});
}
}

View File

@ -333,18 +333,39 @@ export class VisibilityRulesService {
}
public addNewRule(rule: Rule): void {
public addNewRule(rule: Rule, currentVisibility = this.DEFAULTVISIBILITY): void {
const targetId = rule.targetField;
const sourceId = rule.sourceField;
this.visibilityRuleContext.addToVisibilityRulesContext(rule);
const visibilityMap = this.elementComputationalMap.get(targetId) ? this.elementComputationalMap.get(targetId) : new Map<String, boolean>();
visibilityMap.set(sourceId, this.DEFAULTVISIBILITY);
let visibilityMap = this.elementComputationalMap.get(targetId);
if(!visibilityMap){
visibilityMap = new Map<String, boolean>();
this.elementComputationalMap.set(targetId, visibilityMap);
}
visibilityMap.set(sourceId, currentVisibility);
const isVisible = this._computeVisibility(targetId);
this._emitChangesIfNeeded(targetId, isVisible);
this.elementVisibilityMap.set(targetId, isVisible);
}
/**
* Check what sourceId hides or shows the target field
* return true if no rule found
*/
public checkTargetVisibilityProvidedBySource(sourceId: string, targetId: string): boolean{
const computationalMap = this.elementComputationalMap.get(targetId);
if(computationalMap){
return !!computationalMap.get(sourceId);
}
return true;
}
}