argos/dmp-frontend/src/app/visibility-rules/visibility-rules.service.ts

35 lines
1.4 KiB
TypeScript

import { VisibilityRule } from './models/VisibilityRule';
import { VisibilityRulesContext } from './models/VisibilityRulesContext';
import { FormGroup } from '@angular/forms';
import { Injectable } from '@angular/core';
import { Rule } from '../models/Rule'
@Injectable()
export class VisibilityRulesService {
public formGroup: FormGroup;
public visibilityRuleContext: VisibilityRulesContext;
public isElementVisible(pathKey: string,id:string) {
let visibilityRule = this.visibilityRuleContext.getRulesFromKey(id);
if(!visibilityRule) return true;
return this.checkElementVisibility(visibilityRule);
}
public checkElementVisibility(visibilityRule: VisibilityRule): boolean {
let sourceVisibilityRules = visibilityRule.sourceVisibilityRules;
for (let i = 0; i < sourceVisibilityRules.length; i++) {
let sourceVisibilityRule = sourceVisibilityRules[i];
if (sourceVisibilityRule.sourceControlValue != this.formGroup.get(this.getParentPath(sourceVisibilityRule.sourceControlId)).value) return false;
}
return true;
}
public buildVisibilityRules(item: Array<Rule>) {
this.visibilityRuleContext = new VisibilityRulesContext();
this.visibilityRuleContext.buildVisibilityRuleContext(item);
}
private getParentPath(parentId:string):string{
return '';
}
}