visibillity rule changes

This commit is contained in:
Diamantis Tziotzios 2019-01-29 09:47:50 +02:00
parent 245f533a98
commit b460d35f7e
11 changed files with 35 additions and 61 deletions

View File

@ -68,11 +68,7 @@
<mat-step class="step-container">
<ng-template matStepLabel>{{'DATASET-WIZARD.THIRD-STEP.TITLE' | translate}}</ng-template>
<div *ngIf="this.isActiveStep(2)" class="row">
<<<<<<< HEAD
<app-dataset-description-form class="col-12" *ngIf="formGroup && datasetWizardModel && datasetWizardModel.datasetProfileDefinition" [form]="this.formGroup.get('datasetProfileDefinition')" [visibilityRules]="datasetWizardModel.datasetProfileDefinition.rules"></app-dataset-description-form>
=======
<app-dataset-description-form class="col-12" *ngIf="formGroup && datasetWizardModel && datasetWizardModel.datasetProfileDefinition" [form]="this.formGroup.get('datasetProfileDefinition')" [dataModel]="datasetWizardModel.datasetProfileDefinition" [datasetProfileId]="formGroup.get('profile').value"></app-dataset-description-form>
>>>>>>> df51afe83344e5ee398f54d9a0a0b48f41588e16
<app-dataset-description-form class="col-12" *ngIf="formGroup && datasetWizardModel && datasetWizardModel.datasetProfileDefinition" [form]="this.formGroup.get('datasetProfileDefinition')" [visibilityRules]="datasetWizardModel.datasetProfileDefinition.rules" [datasetProfileId]="formGroup.get('profile').value"></app-dataset-description-form>
<div class="col-12 description-action-row">
<div class="row">
<div class="col-auto"><button matStepperPrevious mat-raised-button color="primary">{{'DATASET-WIZARD.ACTIONS.BACK' | translate}}</button></div>

View File

@ -11,11 +11,7 @@
<h6 *ngIf="form.get('extendedDescription').value" class="col-12">
<i>{{form.get('extendedDescription').value}}</i>
</h6>
<<<<<<< HEAD
<app-form-field class="col-12" [form]="form.get('fields')['controls'][0]"></app-form-field>
=======
<app-form-field class="col-12" [field]="compositeField.fields[0]" [datasetProfileId]="datasetProfileId"></app-form-field>
>>>>>>> df51afe83344e5ee398f54d9a0a0b48f41588e16
<app-form-field class="col-12" [form]="form.get('fields')['controls'][0]" [datasetProfileId]="datasetProfileId"></app-form-field>
</div>
</div>
<div *ngIf="form.get('fields').length > 1" class="col-12">
@ -35,17 +31,10 @@
</div>
<div class="row">
<<<<<<< HEAD
<app-form-field [form]="fieldFormGroup" class="col-12"></app-form-field>
<app-form-field [form]="fieldFormGroup" class="col-12" [datasetProfileId]="datasetProfileId"></app-form-field>
<div *ngIf="fieldFormGroup" class="col-12">
<div *ngFor="let multipleField of fieldFormGroup.get('multiplicityItems')['controls']; let j = index" class="row">
<app-form-field class="col-12" [form]="multipleField"></app-form-field>
=======
<app-form-field [field]="field" class="col-12" [datasetProfileId]="datasetProfileId"></app-form-field>
<div *ngIf="field" class="col-12">
<div *ngFor="let multipleField of field.multiplicityItems; let j = index; trackBy: trackByFn" class="row">
<app-form-field class="col-12" [field]="multipleField" [datasetProfileId]="datasetProfileId"></app-form-field>
>>>>>>> df51afe83344e5ee398f54d9a0a0b48f41588e16
<app-form-field class="col-12" [form]="multipleField" [datasetProfileId]="datasetProfileId"></app-form-field>
</div>
</div>
</div>

View File

@ -11,6 +11,7 @@ import { VisibilityRulesService } from '../../visibility-rules/visibility-rules.
export class FormCompositeFieldComponent {
// @Input() compositeField: DatasetDescriptionCompositeFieldEditorModel;
@Input() datasetProfileId: String;
@Input() form: FormGroup;
//trackByFn = (index, item) => item ? item['id'] : null;
@ -29,7 +30,7 @@ export class FormCompositeFieldComponent {
addMultipleField(fieldIndex: number) {
// const field: DatasetDescriptionFieldEditorModel = this.compositeField.fields[fieldIndex].cloneForMultiplicity(fieldIndex, '');
// this.compositeField.fields[fieldIndex].multiplicityItems.push(field);
(<FormArray>(this.form.get('fields').get('' + fieldIndex).get('multiplicityItems'))).push(field.buildForm());
// (<FormArray>(this.form.get('fields').get('' + fieldIndex).get('multiplicityItems'))).push(field.buildForm());
}
// markForConsideration() {

View File

@ -1,6 +1,6 @@
<div *ngIf="form && this.visibilityRulesService.checkElementVisibility(this.form.get('id').value)" [id]="this.form.get('id').value" [formGroup]="form" [ngSwitch]="this.form.get('viewStyle').value.renderStyle" class="dynamic-form-field row">
<!-- <h5 *ngIf="field.title">{{field.title}}</h5> -->
<h5 *ngIf="this.form.get('title').value">{{this.form.get('title').value}}</h5>
<h5 *ngIf="this.form.get('description').value" class="col-12">{{this.form.get('description').value}}</h5>
<h5 *ngIf="this.form.get('extendedDescription').value" class="col-12"><i>{{this.form.get('extendedDescription').value}}</i></h5>

View File

@ -7,7 +7,6 @@
</mat-panel-title>
<mat-panel-description>
<h3 *ngIf="form.get('description').value">{{form.get('description').value}}</h3>
<!-- <h4 *ngIf="section.extendedDescription">{{section.extendedDescription}}</h4> -->
</mat-panel-description>
</mat-expansion-panel-header>
@ -15,45 +14,30 @@
<!-- <div *ngIf="isElementVisible(compositeField)" class="row"> -->
<div class="row">
<div *ngIf="(compositeFieldFormGroup.get('multiplicity').value.max - 1) > (compositeFieldFormGroup.get('multiplicityItems').length)" class="col-12">
<!-- <button mat-button color="primary" (click)="addMultipleField(i)">
<button mat-button color="primary" (click)="addMultipleField(i)">
Add one more fieldset +
</button> -->
</button>
</div>
<<<<<<< HEAD
<app-form-composite-field class="col-12" [form]="compositeFieldFormGroup"></app-form-composite-field>
<app-form-composite-field class="col-12" [form]="compositeFieldFormGroup" [datasetProfileId]="datasetProfileId"></app-form-composite-field>
<div *ngIf="compositeField" class="col-12">
<div class="row">
<app-form-composite-field class="col-12" *ngFor="let multipleCompositeFieldFormGroup of compositeFieldFormGroup.get('multiplicityItems')['controls']; let j = index" [form]="multipleCompositeFieldFormGroup"></app-form-composite-field>
<app-form-composite-field class="col-12" *ngFor="let multipleCompositeFieldFormGroup of compositeFieldFormGroup.get('multiplicityItems')['controls']; let j = index" [form]="multipleCompositeFieldFormGroup" [datasetProfileId]="datasetProfileId"></app-form-composite-field>
<mat-form-field *ngIf="compositeFieldFormGroup.get('hasCommentField').value" class="col-12" [formGroup]="compositeFieldFormGroup">
=======
<app-form-composite-field class="col-12" [compositeField]="compositeField" [datasetProfileId]="datasetProfileId"></app-form-composite-field>
<div *ngIf="compositeField" class="col-12">
<div class="row">
<app-form-composite-field class="col-12" *ngFor="let multipleCompositeField of compositeField.multiplicityItems; let j = index; trackBy: trackByFn"
[compositeField]="multipleCompositeField" [datasetProfileId]="datasetProfileId"></app-form-composite-field>
<mat-form-field *ngIf="compositeField.hasCommentField" class="col-12" [formGroup]="form.get('compositeFields').get(''+i)">
>>>>>>> df51afe83344e5ee398f54d9a0a0b48f41588e16
<input matInput formControlName="commentFieldValue" placeholder="comment">
</mat-form-field>
<div class="col"></div>
<!-- <button class="col-auto" mat-icon-button type="button" (click)="next(compositeField)">
<button class="col-auto" mat-icon-button type="button" (click)="next(compositeField)">
<mat-icon>expand_more</mat-icon>
</button> -->
</button>
</div>
</div>
</div>
</div>
<<<<<<< HEAD
<div *ngIf="form.get('sections')" class="col-12">
<div *ngFor="let subSectionFormGroup of form.get('sections')['controls']; let j = index;" class="row">
<app-form-section class="col-12" [form]="subSectionFormGroup" [path]="path+'.'+(j+1)" [pathName]="pathName+'.sections.'+j"></app-form-section>
=======
<div *ngIf="section?.sections" class="col-12">
<div *ngFor="let itemsection of section.sections; let j = index;" class="row">
<app-form-section class="col-12" [section]="itemsection" [path]="path+'.'+(j+1)" [pathName]="pathName+'.sections.'+j" [datasetProfileId]="datasetProfileId"></app-form-section>
>>>>>>> df51afe83344e5ee398f54d9a0a0b48f41588e16
<app-form-section class="col-12" [form]="subSectionFormGroup" [path]="path+'.'+(j+1)" [pathName]="pathName+'.sections.'+j" [datasetProfileId]="datasetProfileId"></app-form-section>
</div>
</div>
</mat-expansion-panel>
</mat-accordion>
</div>
</div>

View File

@ -1,7 +1,5 @@
import { AfterViewInit, Component, Input, OnInit } from '@angular/core';
import { FormArray, FormGroup } from '@angular/forms';
import { CompositeField } from '../../../../../core/model/dataset-profile-definition/composite-field';
import { DatasetDescriptionCompositeFieldEditorModel, DatasetDescriptionSectionEditorModel } from '../../dataset-description-form.model';
import { FormGroup } from '@angular/forms';
import { FormFocusService } from '../../form-focus/form-focus.service';
import { VisibilityRulesService } from '../../visibility-rules/visibility-rules.service';
@ -10,9 +8,10 @@ import { VisibilityRulesService } from '../../visibility-rules/visibility-rules.
templateUrl: './form-section.component.html',
styleUrls: ['./form-section.component.scss']
})
export class FormSectionComponent implements OnInit, AfterViewInit {
export class FormSectionComponent implements OnInit {
// @Input() section: DatasetDescriptionSectionEditorModel;
@Input() datasetProfileId: String;
@Input() form: FormGroup;
@Input() pathName: string;
@Input() path: string;

View File

@ -9,11 +9,7 @@
<mat-step [stepControl]="sectionFormGroup">
<ng-template matStepLabel>{{pageFormGroup.get('title').value}}</ng-template>
<div *ngIf="stepper.selectedIndex == z" class="row">
<<<<<<< HEAD
<app-form-section class="col-12" [form]="sectionFormGroup" [path]="z+1" [pathName]="'pages.'+z+'.sections.'+i"></app-form-section>
=======
<app-form-section class="col-12" [section]="section" [path]="z+1" [pathName]="'pages.'+z+'.sections.'+i" [datasetProfileId]="datasetProfileId"></app-form-section>
>>>>>>> df51afe83344e5ee398f54d9a0a0b48f41588e16
<app-form-section class="col-12" [form]="sectionFormGroup" [path]="z+1" [pathName]="'pages.'+z+'.sections.'+i" [datasetProfileId]="datasetProfileId"></app-form-section>
</div>
</mat-step>
</div>

View File

@ -55,7 +55,7 @@ export class DatasetDescriptionFormComponent extends BaseComponent implements On
ngOnInit() {
this.visibilityRulesService.formGroup = this.form;
// this.visibilityRulesService.formGroup = this.form;
this.visibilityRulesService.buildVisibilityRules(this.visibilityRules);
// this.datasetProfileDefinitionModel = new DatasetDescriptionFormEditorModel().fromModel(this.dataModel);
// this.visibilityRulesService.setModel(this.datasetProfileDefinitionModel);

View File

@ -241,6 +241,7 @@ export class DatasetDescriptionFieldEditorModel extends BaseFormModel {
validationRequired: [{ value: this.validationRequired, disabled: true }],
description: [{ value: this.description, disabled: true }],
extendedDescription: [{ value: this.extendedDescription, disabled: true }],
title: [{ value: this.title, disabled: true }],
});
const multiplicityItemsFormArray = new Array<FormGroup>();

View File

@ -38,8 +38,8 @@ export class DynamicFormPendingQuestionsDisplayComponent implements OnInit {
const nestedCompositeFiels: CompositeField[] = nestedSections.flatMap(section => section.compositeFields).filter(x => x);
const compositeFieldsUnion = compositeFields.concat(nestedCompositeFiels);
//const fields: Field[] = compositeFields.flatMap(composite => composite.fields).concat(nestedCompositeFiels.flatMap(composite => composite.fields));
const fields = compositeFieldsUnion.filter(compositeField => this.visibilityRulesService.checkElementVisibility(compositeField.id))
.filter(compositeField => compositeField.fields.filter(x => x && x.validationRequired && this.visibilityRulesService.getFormGroup(x.id).value == null).length > 0);
fields.forEach(x => this.markForConsideration.markForConsideration(x));
// const fields = compositeFieldsUnion.filter(compositeField => this.visibilityRulesService.checkElementVisibility(compositeField.id))
// .filter(compositeField => compositeField.fields.filter(x => x && x.validationRequired && this.visibilityRulesService.getFormGroup(x.id).value == null).length > 0);
// fields.forEach(x => this.markForConsideration.markForConsideration(x));
}
}

View File

@ -2,6 +2,7 @@ import { ApplicationRef, Injectable, NgZone } from '@angular/core';
import { Rule } from '../../../../core/model/dataset-profile-definition/rule';
import { VisibilityRule } from './models/visibility-rule';
import { VisibilityRulesContext } from './models/visibility-rules-context';
import { isNumeric } from 'rxjs/internal/util/isNumeric';
@Injectable()
export class VisibilityRulesService {
@ -41,7 +42,7 @@ export class VisibilityRulesService {
public checkElementVisibility(id: string): boolean {
if (this.visibilityRuleContext.rules.filter(item => item.targetControlId === id).length === 0) { return true; }
return this.elementVisibilityMap.has(id) && this.elementVisibilityMap.get(id);
return this.elementVisibilityMap.has(id) ? this.elementVisibilityMap.get(id) : false;
}
public buildVisibilityRules(item: Array<Rule>) {
@ -58,7 +59,7 @@ export class VisibilityRulesService {
for (let i = 0; i < visibilityRule.sourceVisibilityRules.length; i++) {
//const pathKey = this.fieldsPathMemory[visibilityRule.sourceVisibilityRules[i].sourceControlId];
// if (this.formGroup.get(pathKey + '.value') && (this.parseValue(this.formGroup.get(pathKey + '.value').value) !== this.parseValue(visibilityRule.sourceVisibilityRules[i].sourceControlValue))) {
if (value && (this.parseValue(value) !== this.parseValue(visibilityRule.sourceVisibilityRules[i].sourceControlValue))) {
if (value != null && (this.parseValue(value) !== this.parseValue(visibilityRule.sourceVisibilityRules[i].sourceControlValue))) {
// if (this.formGroup.get(pathKey).parent.get('id')) {
// if (!this.checkElementVisibility(this.formGroup.get(pathKey).parent.get('id').value)) {
// const targetPathKey = this.fieldsPathMemory[visibilityRule.targetControlId];
@ -93,7 +94,14 @@ export class VisibilityRulesService {
parseValue(value: any) {
if (typeof value === 'string') {
if (value === 'true') { return true; } else if (value === 'false') { return false; } else { return this.translate(value); }
if (isNumeric(value)) { return value; }
else if (value === 'true') {
return true;
}
else if (value === 'false') {
return false;
}
else { return this.translate(value); }
} else { return value; }
}