argos/dmp-frontend/src/app/utilities/visibility-rules/models/VisibilityRulesContext.ts

33 lines
1.1 KiB
TypeScript
Raw Normal View History

2018-05-28 11:50:42 +02:00
import { VisibilityRuleSource } from './VisibilityRuleSource';
import { VisibilityRule } from './VisibilityRule';
import { Rule } from '../../../models/Rule';
export class VisibilityRulesContext {
public rules: Array<VisibilityRule> = new Array();
public getRulesFromKey(id: string): VisibilityRule {
2018-10-05 17:00:54 +02:00
for (let i = 0; i < this.rules.length; i++) {
if (id === this.rules[i].targetControlId) { return this.rules[i]; }
}
return null;
2018-05-28 11:50:42 +02:00
}
public buildVisibilityRuleContext(items: Array<Rule>) {
2018-10-05 17:00:54 +02:00
items.forEach(item => {
this.addToVisibilityRulesContext(item);
});
2018-05-28 11:50:42 +02:00
}
private addToVisibilityRulesContext(item: Rule): void {
2018-10-05 17:00:54 +02:00
for (let i = 0; i < this.rules.length; i++) {
if (this.rules[i].targetControlId === item.targetField) {
this.rules[i].sourceVisibilityRules.push({ sourceControlId: item.sourceField, sourceControlValue: item.requiredValue });
return;
}
}
const newVisibilityRuleArray = [({ sourceControlId: item.sourceField, sourceControlValue: item.requiredValue })];
this.rules.push({ targetControlId: item.targetField, sourceVisibilityRules: newVisibilityRuleArray });
return;
2018-05-28 11:50:42 +02:00
}
}