#7133 Multiplicity visibility rule fix
* Inherit visibility value from clone reference
This commit is contained in:
parent
7fefdd6aad
commit
e46de79ec2
|
@ -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);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue