dataset profile editor fix delete section in section

dataset profile fix validation for save
This commit is contained in:
Diamantis Tziotzios 2019-01-28 14:18:48 +02:00
parent 8c5c57375a
commit 7a60c3a435
13 changed files with 22 additions and 17 deletions

View File

@ -74,8 +74,8 @@ public class DatasetProfileController extends BaseController {
@RequestMapping(method = RequestMethod.POST, value = {"/search/autocomplete"}, consumes = "application/json", produces = "application/json") @RequestMapping(method = RequestMethod.POST, value = {"/search/autocomplete"}, consumes = "application/json", produces = "application/json")
public ResponseEntity<Object> getDataForAutocomplete(@RequestBody RequestItem<AutoCompleteLookupItem> lookupItem) throws XPathExpressionException { public ResponseEntity<Object> getDataForAutocomplete(@RequestBody RequestItem<AutoCompleteLookupItem> lookupItem) throws XPathExpressionException {
eu.eudat.data.entities.Dataset dataset = this.getApiContext().getOperationsContext().getDatabaseRepository().getDatasetDao().find(UUID.fromString(lookupItem.getCriteria().getProfileID())); eu.eudat.data.entities.DatasetProfile datasetProfile = this.getApiContext().getOperationsContext().getDatabaseRepository().getDatasetProfileDao().find(UUID.fromString(lookupItem.getCriteria().getProfileID()));
eu.eudat.models.data.entities.xmlmodels.datasetprofiledefinition.Field modelfield = DatasetProfileManager.queryForField(dataset.getProfile().getDefinition(), lookupItem.getCriteria().getFieldID()); eu.eudat.models.data.entities.xmlmodels.datasetprofiledefinition.Field modelfield = DatasetProfileManager.queryForField(datasetProfile.getDefinition(), lookupItem.getCriteria().getFieldID());
AutoCompleteData data = (AutoCompleteData) modelfield.getData(); AutoCompleteData data = (AutoCompleteData) modelfield.getData();
List<Tuple<String, String>> items = DatasetProfileManager.getAutocomplete(data, lookupItem.getCriteria().getLike()); List<Tuple<String, String>> items = DatasetProfileManager.getAutocomplete(data, lookupItem.getCriteria().getLike());
return ResponseEntity.status(HttpStatus.OK).body(items); return ResponseEntity.status(HttpStatus.OK).body(items);

View File

@ -31,7 +31,8 @@ public class Field implements ViewStyleDefinition<eu.eudat.models.data.entities.
case 1: case 1:
return REQUIRED; return REQUIRED;
default: default:
throw new RuntimeException("Unsupported Project Status"); return NONE;
} }
} }

View File

@ -24,7 +24,7 @@ export class FieldEditorModel extends BaseFormModel {
public ordinal: number; public ordinal: number;
public visible: VisibilityEditorModel = new VisibilityEditorModel(); public visible: VisibilityEditorModel = new VisibilityEditorModel();
public data: FieldDataEditorModel<any>; public data: FieldDataEditorModel<any>;
public validations: ValidationType[]; public validations: ValidationType[] = [];
fromModel(item: Field): FieldEditorModel { fromModel(item: Field): FieldEditorModel {
this.id = item.id; this.id = item.id;

View File

@ -43,7 +43,7 @@
<mat-expansion-panel-header> <mat-expansion-panel-header>
<div class="row"> <div class="row">
<span class="col">{{i + 1}}. {{form.get('sections').get(''+i).get('title').value}}</span> <span class="col">{{i + 1}}. {{form.get('sections').get(''+i).get('title').value}}</span>
<button mat-icon-button type="button" class="col-auto" (click)="deleteFieldSet(i);"> <button mat-icon-button type="button" class="col-auto" (click)="DeleteSectionInSection(i);">
<mat-icon>delete</mat-icon> <mat-icon>delete</mat-icon>
</button> </button>
</div> </div>

View File

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

View File

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

View File

@ -11,6 +11,7 @@ import { VisibilityRulesService } from '../../visibility-rules/visibility-rules.
export class FormCompositeFieldComponent implements OnInit { export class FormCompositeFieldComponent implements OnInit {
@Input() compositeField: DatasetDescriptionCompositeFieldEditorModel; @Input() compositeField: DatasetDescriptionCompositeFieldEditorModel;
@Input() datasetProfileId: String;
form: FormGroup; form: FormGroup;
trackByFn = (index, item) => item ? item['id'] : null; trackByFn = (index, item) => item ? item['id'] : null;

View File

@ -19,6 +19,7 @@ import { VisibilityRulesService } from '../../visibility-rules/visibility-rules.
}) })
export class FormFieldComponent extends BaseComponent implements OnInit { export class FormFieldComponent extends BaseComponent implements OnInit {
@Input() field: Field; @Input() field: Field;
@Input() datasetProfileId: String;
form: FormGroup; form: FormGroup;
change: Subscription; change: Subscription;
@ -59,8 +60,7 @@ export class FormFieldComponent extends BaseComponent implements OnInit {
const autocompleteRequestItem: RequestItem<DatasetExternalAutocompleteCriteria> = new RequestItem(); const autocompleteRequestItem: RequestItem<DatasetExternalAutocompleteCriteria> = new RequestItem();
autocompleteRequestItem.criteria = new DatasetExternalAutocompleteCriteria(); autocompleteRequestItem.criteria = new DatasetExternalAutocompleteCriteria();
autocompleteRequestItem.criteria.fieldID = this.field.id; autocompleteRequestItem.criteria.fieldID = this.field.id;
//TODO: why do we need dataset id? autocompleteRequestItem.criteria.profileID = this.datasetProfileId;
//autocompleteRequestItem.criteria.profileID = this.datasetId;
return this.datasetExternalAutocompleteService.queryAutocomplete(autocompleteRequestItem); return this.datasetExternalAutocompleteService.queryAutocomplete(autocompleteRequestItem);
} }

View File

@ -18,10 +18,11 @@
Add one more fieldset + Add one more fieldset +
</button> </button>
</div> </div>
<app-form-composite-field class="col-12" [compositeField]="compositeField"></app-form-composite-field> <app-form-composite-field class="col-12" [compositeField]="compositeField" [datasetProfileId]="datasetProfileId"></app-form-composite-field>
<div *ngIf="compositeField" class="col-12"> <div *ngIf="compositeField" class="col-12">
<div class="row"> <div class="row">
<app-form-composite-field class="col-12" *ngFor="let multipleCompositeField of compositeField.multiplicityItems; let j = index; trackBy: trackByFn" [compositeField]="multipleCompositeField"></app-form-composite-field> <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)"> <mat-form-field *ngIf="compositeField.hasCommentField" class="col-12" [formGroup]="form.get('compositeFields').get(''+i)">
<input matInput formControlName="commentFieldValue" placeholder="comment"> <input matInput formControlName="commentFieldValue" placeholder="comment">
</mat-form-field> </mat-form-field>
@ -35,7 +36,7 @@
</div> </div>
<div *ngIf="section?.sections" class="col-12"> <div *ngIf="section?.sections" class="col-12">
<div *ngFor="let itemsection of section.sections; let j = index;" class="row"> <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"></app-form-section> <app-form-section class="col-12" [section]="itemsection" [path]="path+'.'+(j+1)" [pathName]="pathName+'.sections.'+j" [datasetProfileId]="datasetProfileId"></app-form-section>
</div> </div>
</div> </div>
</mat-expansion-panel> </mat-expansion-panel>

View File

@ -12,6 +12,7 @@ import { VisibilityRulesService } from '../../visibility-rules/visibility-rules.
}) })
export class FormSectionComponent implements OnInit, AfterViewInit { export class FormSectionComponent implements OnInit, AfterViewInit {
@Input() datasetProfileId: String;
@Input() section: DatasetDescriptionSectionEditorModel; @Input() section: DatasetDescriptionSectionEditorModel;
form: FormGroup; form: FormGroup;
@Input() pathName: string; @Input() pathName: string;

View File

@ -9,7 +9,7 @@
<mat-step [stepControl]="section"> <mat-step [stepControl]="section">
<ng-template matStepLabel>{{page.title}}</ng-template> <ng-template matStepLabel>{{page.title}}</ng-template>
<div *ngIf="stepper.selectedIndex == z" class="row"> <div *ngIf="stepper.selectedIndex == z" class="row">
<app-form-section class="col-12" [section]="section" [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>
</div> </div>
</mat-step> </mat-step>
</div> </div>

View File

@ -32,6 +32,7 @@ export class DatasetDescriptionFormComponent extends BaseComponent implements On
@Input() dataModel: DatasetProfileDefinitionModel; @Input() dataModel: DatasetProfileDefinitionModel;
@Input() path: string; @Input() path: string;
@Input() form: FormGroup; @Input() form: FormGroup;
@Input() datasetProfileId: String;
id: string; id: string;
trackByFn = (index, item) => item ? item['id'] : null; trackByFn = (index, item) => item ? item['id'] : null;
pageTrackByFn = (index, item) => item['id']; pageTrackByFn = (index, item) => item['id'];

View File

@ -52,7 +52,7 @@ export class VisibilityRulesService {
public updateValueAndVisibility(id: string) { public updateValueAndVisibility(id: string) {
const visibilityRules = this.visibilityRuleContext.rules.filter(item => item.sourceVisibilityRules.filter(source => source.sourceControlId === id).length > 0); const visibilityRules = this.visibilityRuleContext.rules.filter(item => item.sourceVisibilityRules.filter(source => source.sourceControlId === id).length > 0);
visibilityRules.forEach(item => this.evaluateVisibility(item)); //visibilityRules.forEach(item => this.evaluateVisibility(item));
} }
private evaluateVisibility(visibilityRule: VisibilityRule) { private evaluateVisibility(visibilityRule: VisibilityRule) {