2019-01-18 18:03:45 +01:00
|
|
|
|
import { FormGroup } from '@angular/forms';
|
|
|
|
|
import { Visibility } from '../../../../core/model/admin/dataset-profile/dataset-profile';
|
|
|
|
|
import { BaseFormModel } from '../../../../core/model/base-form-model';
|
|
|
|
|
import { RuleEditorModel } from './rule-editor-model';
|
|
|
|
|
|
|
|
|
|
export class VisibilityEditorModel extends BaseFormModel {
|
|
|
|
|
|
|
|
|
|
public rules: Array<RuleEditorModel> = new Array<RuleEditorModel>();
|
|
|
|
|
public style: string;
|
|
|
|
|
|
|
|
|
|
fromModel(item: Visibility): VisibilityEditorModel {
|
|
|
|
|
if (item.rules) { this.rules = item.rules.map(x => new RuleEditorModel().fromModel(x)); }
|
|
|
|
|
this.style = item.style;
|
|
|
|
|
|
|
|
|
|
return this;
|
|
|
|
|
}
|
|
|
|
|
|
2019-04-16 12:49:09 +02:00
|
|
|
|
buildForm(disabled: boolean = false, skipDisable: Array<String> = []): FormGroup {
|
2019-01-18 18:03:45 +01:00
|
|
|
|
const formGroup = this.formBuilder.group({
|
2019-04-16 12:49:09 +02:00
|
|
|
|
style: [{ value: this.style, disabled: (disabled && !skipDisable.includes('VisibilityEditorModel.style')) }]
|
2019-01-18 18:03:45 +01:00
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
const rulesFormArray = new Array<FormGroup>();
|
|
|
|
|
if (this.rules) {
|
|
|
|
|
this.rules.forEach(rule => {
|
2019-04-16 12:49:09 +02:00
|
|
|
|
const form: FormGroup = rule.buildForm(disabled, skipDisable);
|
2019-01-18 18:03:45 +01:00
|
|
|
|
rulesFormArray.push(form);
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
formGroup.addControl('rules', this.formBuilder.array(rulesFormArray));
|
|
|
|
|
|
|
|
|
|
return formGroup;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|