Merge branch 'AdminTemplateRedesign' into WizardDescriptionRefactor
This commit is contained in:
commit
41a1aeaf1f
|
@ -1,7 +1,8 @@
|
||||||
|
import { AutoCompleteSingleData } from "@app/core/model/dataset-profile-definition/field-data/field-data";
|
||||||
import { BaseCriteria } from "../base-criteria";
|
import { BaseCriteria } from "../base-criteria";
|
||||||
|
|
||||||
export class DatasetExternalAutocompleteCriteria extends BaseCriteria {
|
export class DatasetExternalAutocompleteCriteria extends BaseCriteria {
|
||||||
public profileID: String;
|
public profileID: String;
|
||||||
public fieldID: String;
|
public fieldID: String;
|
||||||
public autocompleteOptions: any;
|
public autocompleteOptions: AutoCompleteSingleData;
|
||||||
}
|
}
|
|
@ -1,11 +1,12 @@
|
||||||
import { HttpClient } from '@angular/common/http';
|
import { HttpClient } from '@angular/common/http';
|
||||||
import { Injectable } from '@angular/core';
|
import { Injectable } from '@angular/core';
|
||||||
import { Observable } from 'rxjs';
|
import { Observable, of } from 'rxjs';
|
||||||
import { environment } from '../../../../environments/environment';
|
import { environment } from '../../../../environments/environment';
|
||||||
import { DatasetExternalAutocompleteCriteria } from '../../query/dataset/daatset-external-autocomplete-criteria';
|
import { DatasetExternalAutocompleteCriteria } from '../../query/dataset/daatset-external-autocomplete-criteria';
|
||||||
import { RequestItem } from '../../query/request-item';
|
import { RequestItem } from '../../query/request-item';
|
||||||
import { DatasetProfileService } from '../dataset-profile/dataset-profile.service';
|
import { DatasetProfileService } from '../dataset-profile/dataset-profile.service';
|
||||||
import { ConfigurationService } from '../configuration/configuration.service';
|
import { ConfigurationService } from '../configuration/configuration.service';
|
||||||
|
import { map } from 'rxjs/operators';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class DatasetExternalAutocompleteService {
|
export class DatasetExternalAutocompleteService {
|
||||||
|
@ -27,4 +28,14 @@ export class DatasetExternalAutocompleteService {
|
||||||
return this.httpClient.post(this.configurationService.server + 'search/autocomplete', lookUpItem);
|
return this.httpClient.post(this.configurationService.server + 'search/autocomplete', lookUpItem);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
queryApi(requestItem: RequestItem<DatasetExternalAutocompleteCriteria>):Observable<any>{ //TODO
|
||||||
|
|
||||||
|
return of([
|
||||||
|
{
|
||||||
|
label:'Preview not supported yet',
|
||||||
|
source:''
|
||||||
|
}
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -203,9 +203,17 @@
|
||||||
</mat-radio-group>
|
</mat-radio-group>
|
||||||
</div> -->
|
</div> -->
|
||||||
<div class="col-12" *ngIf="showPreview">
|
<div class="col-12" *ngIf="showPreview">
|
||||||
<app-form-field [form]="previewForm" *ngIf="previewForm">
|
<ng-container *ngIf="viewType === viewTypeEnum.Other else regularField">
|
||||||
|
<app-form-field [form]="previewForm" *ngIf="previewForm" [autocompleteOptions]="form.get('data').get('autoCompleteSingleDataList').getRawValue()">
|
||||||
|
|
||||||
</app-form-field>
|
</app-form-field>
|
||||||
|
</ng-container>
|
||||||
|
|
||||||
|
<ng-template #regularField>
|
||||||
|
<app-form-field [form]="previewForm" *ngIf="previewForm">
|
||||||
|
|
||||||
|
</app-form-field>
|
||||||
|
</ng-template>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-12" *ngIf="!this.form.get('viewStyle').get('renderStyle').value">
|
<div class="col-12" *ngIf="!this.form.get('viewStyle').get('renderStyle').value">
|
||||||
<em>
|
<em>
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
<div class="row" [id]="idprefix+form.get('id').value">
|
<div id="topofcontainer"></div>
|
||||||
|
<div class="row" [id]="idprefix+form.get('id').value">
|
||||||
|
|
||||||
<!-- SECTION INFO -->
|
<!-- SECTION INFO -->
|
||||||
<mat-card style="margin-bottom: 2em; padding: 2em;" class="col-12" >
|
<mat-card style="margin-bottom: 2em; padding: 2em;" class="col-12" >
|
||||||
|
@ -58,7 +59,6 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<!-- COPIA -->
|
<!-- COPIA -->
|
||||||
<!-- <div class="row"> -->
|
<!-- <div class="row"> -->
|
||||||
|
|
||||||
|
|
|
@ -106,10 +106,7 @@ export class DatasetProfileEditorSectionFieldSetComponent extends BaseComponent
|
||||||
this.numbering = this.tocentry.numbering;
|
this.numbering = this.tocentry.numbering;
|
||||||
this._selectedFieldSetId = null;
|
this._selectedFieldSetId = null;
|
||||||
|
|
||||||
let el = this.myElement.nativeElement.querySelector("#"+this.idprefix+this.tocentry.id);
|
this._scrollToElement(this.tocentry.id);
|
||||||
if(el){
|
|
||||||
el.scrollIntoView({behavior: "smooth"});
|
|
||||||
}
|
|
||||||
}else if(this.tocentry.type === ToCEntryType.FieldSet){
|
}else if(this.tocentry.type === ToCEntryType.FieldSet){
|
||||||
this.form = this.tocentry.form.parent.parent;
|
this.form = this.tocentry.form.parent.parent;
|
||||||
const numberingArray = this.tocentry.numbering.split('.');
|
const numberingArray = this.tocentry.numbering.split('.');
|
||||||
|
@ -118,23 +115,39 @@ export class DatasetProfileEditorSectionFieldSetComponent extends BaseComponent
|
||||||
this.numbering = numberingArray.join('.');
|
this.numbering = numberingArray.join('.');
|
||||||
}
|
}
|
||||||
this.selectedFieldSetId = this.tocentry.id;
|
this.selectedFieldSetId = this.tocentry.id;
|
||||||
//scroll to fieldset
|
|
||||||
// setTimeout(() => {
|
|
||||||
// const element = document.getElementById(this.selectedFieldSetId);
|
|
||||||
// element.scrollTop = element.scrollHeight;
|
|
||||||
// }, 2000);
|
|
||||||
|
|
||||||
let el = this.myElement.nativeElement.querySelector("#"+this.idprefix+this.selectedFieldSetId);
|
this._scrollToElement(this.selectedFieldSetId);
|
||||||
// let el = this.myElement.nativeElement.getElementbyId (this.selectedFieldSetId);
|
|
||||||
|
|
||||||
if(el){
|
|
||||||
el.scrollIntoView({behavior: "smooth"});
|
|
||||||
}
|
|
||||||
}else{//scroll on top
|
}else{//scroll on top
|
||||||
window.scrollTo({top:0, behavior:'smooth'});
|
this._scrollOnTop();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private _scrollToElement(id: string){
|
||||||
|
let el = this.myElement.nativeElement.querySelector("#"+this.idprefix+id);
|
||||||
|
// let el = this.myElement.nativeElement.getElementbyId (this.selectedFieldSetId);
|
||||||
|
|
||||||
|
if(el){
|
||||||
|
|
||||||
|
setTimeout(() => {
|
||||||
|
const el = this.myElement.nativeElement.querySelector("#"+this.idprefix+id);
|
||||||
|
if(el){
|
||||||
|
el.scrollIntoView({behavior: "smooth"});
|
||||||
|
}
|
||||||
|
}, 300);
|
||||||
|
}else{
|
||||||
|
this._scrollOnTop();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
private _scrollOnTop(){
|
||||||
|
setTimeout(() => {
|
||||||
|
const el = this.myElement.nativeElement.querySelector('#topofcontainer');
|
||||||
|
if(el){
|
||||||
|
el.scrollIntoView({behavior:'smooth'})
|
||||||
|
}
|
||||||
|
},200);
|
||||||
|
|
||||||
|
}
|
||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
|
|
||||||
this.initialize();
|
this.initialize();
|
||||||
|
|
|
@ -192,8 +192,6 @@
|
||||||
<div class="row sticky-top" style="top : 2em;">
|
<div class="row sticky-top" style="top : 2em;">
|
||||||
<dataset-profile-table-of-contents class="toc-pane-container col"
|
<dataset-profile-table-of-contents class="toc-pane-container col"
|
||||||
[links]="toCEntries"
|
[links]="toCEntries"
|
||||||
(stepFound)="onStepFound($event)"
|
|
||||||
(currentLinks)="getLinks($event)"
|
|
||||||
(itemClick)="displayItem($event)"
|
(itemClick)="displayItem($event)"
|
||||||
(newEntry)="addNewEntry($event)"
|
(newEntry)="addNewEntry($event)"
|
||||||
(createEntry) = "addNewEntry($event)"
|
(createEntry) = "addNewEntry($event)"
|
||||||
|
@ -203,6 +201,59 @@
|
||||||
(dataNeedsRefresh)="onDataNeedsRefresh()"
|
(dataNeedsRefresh)="onDataNeedsRefresh()"
|
||||||
[colorizeInvalid]="colorizeInvalid">
|
[colorizeInvalid]="colorizeInvalid">
|
||||||
</dataset-profile-table-of-contents>
|
</dataset-profile-table-of-contents>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div class="col-12 mt-4">
|
||||||
|
<div class="row justify-content-end">
|
||||||
|
<!-- SAVE BUTTON -->
|
||||||
|
<div class="col-6 d-flex justify-content-end">
|
||||||
|
|
||||||
|
<button mat-raised-button class="col-auto mr-2" color="primary" type="button col-auto"
|
||||||
|
(click)='checkFormValidation()'
|
||||||
|
[disabled]="form.valid">{{'DATASET-PROFILE-EDITOR.ACTIONS.VALIDATE' | translate}}</button>
|
||||||
|
</div>
|
||||||
|
<!-- <div class="col-6 d-flex justify-content-end" *ngIf="!viewOnly">
|
||||||
|
<ng-container *ngIf="true">
|
||||||
|
<button mat-raised-button class="col-auto mr-2" color="primary" type="button col-auto"
|
||||||
|
(click)='checkFormValidation()'
|
||||||
|
[disabled]="form.valid">{{'DATASET-PROFILE-EDITOR.ACTIONS.VALIDATE' | translate}}</button>
|
||||||
|
</ng-container>
|
||||||
|
|
||||||
|
-->
|
||||||
|
|
||||||
|
<!-- <button mat-raised-button class="col-auto mr-2" color="primary" type="button col-auto"
|
||||||
|
(click)='onSubmit()' [disabled]="!form.valid">{{'DATASET-PROFILE-EDITOR.ACTIONS.SAVE' |
|
||||||
|
translate}}</button>
|
||||||
|
<button mat-raised-button class="col-auto" color="primary" type="button col-auto"
|
||||||
|
(click)='finalize()' [disabled]="!form.valid">{{'DATASET-PROFILE-EDITOR.ACTIONS.FINALIZE' |
|
||||||
|
translate}}</button> -->
|
||||||
|
<!-- </div> -->
|
||||||
|
<!-- SAVE BUTTON WHEN FINALIZED-->
|
||||||
|
<!-- <div class="col-6 d-flex" *ngIf="showUpdateButton()">
|
||||||
|
<div class="row mt-4">
|
||||||
|
<button mat-raised-button class="col-auto mr-2" color="primary" type="button col-auto"
|
||||||
|
(click)='checkFormValidation()'
|
||||||
|
[disabled]="form.valid">{{'DATASET-PROFILE-EDITOR.ACTIONS.VALIDATE' | translate}}</button>
|
||||||
|
<button mat-raised-button class="col-auto mr-2" color="primary" type="button col-auto"
|
||||||
|
(click)='updateFinalized()' [disabled]="!form.valid">{{'DATASET-PROFILE-EDITOR.ACTIONS.UPDATE' |
|
||||||
|
translate}}</button>
|
||||||
|
</div>
|
||||||
|
</div> -->
|
||||||
|
<!-- DELETE BUTTON -->
|
||||||
|
<!-- <div class="col-12 d-flex justify-content-end" *ngIf="!isNew">
|
||||||
|
<div class="row mt-4">
|
||||||
|
<button mat-raised-button color="primary" (click)="delete()">
|
||||||
|
<mat-icon>delete</mat-icon>{{'DATASET-PROFILE-EDITOR.ACTIONS.DELETE' | translate}}
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div> -->
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -404,7 +455,7 @@
|
||||||
<!-- SAVE BUTTON -->
|
<!-- SAVE BUTTON -->
|
||||||
<div class="col-6 d-flex" *ngIf="!viewOnly">
|
<div class="col-6 d-flex" *ngIf="!viewOnly">
|
||||||
<div class="row mt-4">
|
<div class="row mt-4">
|
||||||
<ng-container *ngIf="true">
|
<ng-container *ngIf="false">
|
||||||
<button mat-raised-button class="col-auto mr-2" color="primary" type="button col-auto"
|
<button mat-raised-button class="col-auto mr-2" color="primary" type="button col-auto"
|
||||||
(click)='checkFormValidation()'
|
(click)='checkFormValidation()'
|
||||||
[disabled]="form.valid">{{'DATASET-PROFILE-EDITOR.ACTIONS.VALIDATE' | translate}}</button>
|
[disabled]="form.valid">{{'DATASET-PROFILE-EDITOR.ACTIONS.VALIDATE' | translate}}</button>
|
||||||
|
@ -423,9 +474,11 @@
|
||||||
<!-- SAVE BUTTON WHEN FINALIZED-->
|
<!-- SAVE BUTTON WHEN FINALIZED-->
|
||||||
<div class="col-6 d-flex" *ngIf="showUpdateButton()">
|
<div class="col-6 d-flex" *ngIf="showUpdateButton()">
|
||||||
<div class="row mt-4">
|
<div class="row mt-4">
|
||||||
<button mat-raised-button class="col-auto mr-2" color="primary" type="button col-auto"
|
<ng-container *ngIf="false">
|
||||||
(click)='checkFormValidation()'
|
<button mat-raised-button class="col-auto mr-2" color="primary" type="button col-auto"
|
||||||
[disabled]="form.valid">{{'DATASET-PROFILE-EDITOR.ACTIONS.VALIDATE' | translate}}</button>
|
(click)='checkFormValidation()'
|
||||||
|
[disabled]="form.valid">{{'DATASET-PROFILE-EDITOR.ACTIONS.VALIDATE' | translate}}</button>
|
||||||
|
</ng-container>
|
||||||
<button mat-raised-button class="col-auto mr-2" color="primary" type="button col-auto"
|
<button mat-raised-button class="col-auto mr-2" color="primary" type="button col-auto"
|
||||||
(click)='updateFinalized()' [disabled]="!form.valid">{{'DATASET-PROFILE-EDITOR.ACTIONS.UPDATE' |
|
(click)='updateFinalized()' [disabled]="!form.valid">{{'DATASET-PROFILE-EDITOR.ACTIONS.UPDATE' |
|
||||||
translate}}</button>
|
translate}}</button>
|
||||||
|
|
|
@ -478,10 +478,6 @@ export class DatasetProfileEditorComponent extends BaseComponent implements OnIn
|
||||||
this.links = currentLinks;
|
this.links = currentLinks;
|
||||||
}
|
}
|
||||||
|
|
||||||
linkToScroll: LinkToScroll;
|
|
||||||
onStepFound(linkToScroll: LinkToScroll) {
|
|
||||||
this.linkToScroll = linkToScroll;
|
|
||||||
}
|
|
||||||
|
|
||||||
datasetWizardModel: DatasetWizardEditorModel;
|
datasetWizardModel: DatasetWizardEditorModel;
|
||||||
formGroup: FormGroup;
|
formGroup: FormGroup;
|
||||||
|
@ -1532,13 +1528,13 @@ export class DatasetProfileEditorComponent extends BaseComponent implements OnIn
|
||||||
|
|
||||||
switch(keyError){
|
switch(keyError){
|
||||||
case EditorCustomValidatorsEnum.atLeastOneSectionInPage:
|
case EditorCustomValidatorsEnum.atLeastOneSectionInPage:
|
||||||
errmess.push('Each section must have at least one subsection');
|
errmess.push( this.language.instant('DATASET-PROFILE-EDITOR.STEPS.FORM.FORM-VALIDATION.ERROR-MESSAGES.PAGE-MUST-HAVE-SECTION'));
|
||||||
break;
|
break;
|
||||||
case EditorCustomValidatorsEnum.emptyArray:
|
case EditorCustomValidatorsEnum.emptyArray:
|
||||||
errmess.push(numbering+" needs more information.")
|
errmess.push(numbering+this.language.instant('DATASET-PROFILE-EDITOR.STEPS.FORM.FORM-VALIDATION.ERROR-MESSAGES.NEEDS-MORE-INFORMATION'))
|
||||||
break;
|
break;
|
||||||
case EditorCustomValidatorsEnum.sectionMustHaveOneChild:
|
case EditorCustomValidatorsEnum.sectionMustHaveOneChild:
|
||||||
errmess.push(numbering+" must have either subsection or input sets.")
|
errmess.push(numbering+this.language.instant('DATASET-PROFILE-EDITOR.STEPS.FORM.FORM-VALIDATION.ERROR-MESSAGES.MUST-HAVE-SECTION-OR-FIELDSET'))
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
if (typeof errors[keyError] === 'boolean') {
|
if (typeof errors[keyError] === 'boolean') {
|
||||||
|
@ -1610,10 +1606,10 @@ export class DatasetProfileEditorComponent extends BaseComponent implements OnIn
|
||||||
result.forEach(err=>{
|
result.forEach(err=>{
|
||||||
// console.log(err);
|
// console.log(err);
|
||||||
if(err.key){
|
if(err.key){
|
||||||
errmess.push(`Missing ${err.key}` );
|
errmess.push(`${this.language.instant('DATASET-PROFILE-EDITOR.STEPS.FORM.FORM-VALIDATION.ERROR-MESSAGES.MISSING')} ${err.key}` );
|
||||||
}else{
|
}else{
|
||||||
|
|
||||||
errmess.push('Make sure you provide a section and a subsection');
|
errmess.push(this.language.instant('DATASET-PROFILE-EDITOR.STEPS.FORM.FORM-VALIDATION.ERROR-MESSAGES.PROVIDE-PAGE-AND-SECTION'));
|
||||||
}
|
}
|
||||||
// errmess.push(...this._buildErrorMessage(err.errors,"", err.key) );
|
// errmess.push(...this._buildErrorMessage(err.errors,"", err.key) );
|
||||||
|
|
||||||
|
|
|
@ -44,7 +44,7 @@
|
||||||
|
|
||||||
|
|
||||||
<span style="cursor: pointer;" (click)="deleteEntry(parentLink)"
|
<span style="cursor: pointer;" (click)="deleteEntry(parentLink)"
|
||||||
[hidden]="!(!viewOnly && (itemSelected?.id == parentLink?.id))"
|
[hidden]="!(!viewOnly && (itemSelected?.id == parentLink?.id) && (parentLink?.type != tocEntryType.FieldSet))"
|
||||||
>
|
>
|
||||||
<mat-icon style="font-size: 1.4em;">delete</mat-icon>
|
<mat-icon style="font-size: 1.4em;">delete</mat-icon>
|
||||||
</span>
|
</span>
|
||||||
|
|
|
@ -239,7 +239,7 @@ export class DatasetProfileTableOfContentsInternalSection extends BaseComponent
|
||||||
if(!this.colorizeInvalid) return false;
|
if(!this.colorizeInvalid) return false;
|
||||||
|
|
||||||
const form = this.parentLink.form;
|
const form = this.parentLink.form;
|
||||||
if(!form || form.valid || !form.touched) return false;
|
if((!form || form.valid || !form.touched) && this.parentLink.type !== this.tocEntryType.Page) return false;
|
||||||
|
|
||||||
const allFieldsAreTouched = this.allFieldsAreTouched(form);
|
const allFieldsAreTouched = this.allFieldsAreTouched(form);
|
||||||
|
|
||||||
|
@ -248,11 +248,20 @@ export class DatasetProfileTableOfContentsInternalSection extends BaseComponent
|
||||||
|
|
||||||
if(form.errors && allFieldsAreTouched) return true;
|
if(form.errors && allFieldsAreTouched) return true;
|
||||||
|
|
||||||
|
//check if page has sections
|
||||||
|
if(this.parentLink.type === this.tocEntryType.Page && allFieldsAreTouched){
|
||||||
|
const rootForm = form.root;
|
||||||
|
if(rootForm){
|
||||||
|
const sections = rootForm.get('sections') as FormArray;
|
||||||
|
if(!sections.controls.find(section=>section.get('page').value === this.parentLink.id)){
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//checking form controls if have errors
|
//checking first child form controls if have errors
|
||||||
let hasErrors = false;
|
let hasErrors = false;
|
||||||
|
|
||||||
if(allFieldsAreTouched){
|
if(allFieldsAreTouched){
|
||||||
if(form instanceof FormGroup){
|
if(form instanceof FormGroup){
|
||||||
const formGroup = form as FormGroup;
|
const formGroup = form as FormGroup;
|
||||||
|
|
|
@ -1,13 +1,8 @@
|
||||||
<div class="">
|
<div class="">
|
||||||
<!-- <div class="docs-toc-heading">Contents</div> -->
|
|
||||||
<!-- <nav> -->
|
|
||||||
<!-- <a [href]="_rootUrl + '#' + link.id" -->
|
|
||||||
|
|
||||||
<h3 id="guide-steps">{{'DMP-EDITOR.STEPPER.USER-GUIDE' | translate}}</h3>
|
<h3 id="guide-steps">{{'DMP-EDITOR.STEPPER.USER-GUIDE' | translate}}</h3>
|
||||||
<div class="scroll-container" id="style-2">
|
<div class="scroll-container" id="style-2">
|
||||||
<!-- <span *ngFor="let link of links; let i = index" (click)="toggle(link); goToStep(link)" class="docs-level-{{link.type}} docs-link mt-0" [class.docs-active]="link.active">
|
|
||||||
<span *ngIf="link.show" class="link-name"><span [class.selected]="link.selected && isActive">{{link.name}}</span></span>
|
|
||||||
</span> -->
|
|
||||||
<app-dataset-profile-table-of-contents-internal-section [links]="links" (itemClick)="itemClicked($event)"
|
<app-dataset-profile-table-of-contents-internal-section [links]="links" (itemClick)="itemClicked($event)"
|
||||||
(newEntry)="addNewEntry($event)" (removeEntry)="deleteEntry($event)"
|
(newEntry)="addNewEntry($event)" (removeEntry)="deleteEntry($event)"
|
||||||
(createFooEntry)="createNewEntry($event)"
|
(createFooEntry)="createNewEntry($event)"
|
||||||
|
@ -23,12 +18,8 @@
|
||||||
[parentRootId]="ROOT_ID"
|
[parentRootId]="ROOT_ID"
|
||||||
style="padding-right: 1em;"
|
style="padding-right: 1em;"
|
||||||
[colorizeInvalid]="colorizeInvalid"
|
[colorizeInvalid]="colorizeInvalid"
|
||||||
></app-dataset-profile-table-of-contents-internal-section>
|
>
|
||||||
|
</app-dataset-profile-table-of-contents-internal-section>
|
||||||
|
|
||||||
<!-- <span *ngFor="let link of links; let i = index" (click)="toggle(link); goToStep(link);" class="docs-link mt-0">
|
|
||||||
<span class="link-name" (click)="itemClicked(link)"><span>{{link.label}}</span></span>
|
|
||||||
<dataset-profile-table-of-contents *ngIf="link.subEntries" [links]="link.subEntries" (itemClick)="propagateClickToParent($event, link)"></dataset-profile-table-of-contents>
|
|
||||||
</span> -->
|
|
||||||
<!-- </nav> -->
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
|
@ -9,6 +9,7 @@ import { Foo, ToCEntry, ToCEntryType } from './table-of-contents-entry';
|
||||||
import { DragulaService } from 'ng2-dragula';
|
import { DragulaService } from 'ng2-dragula';
|
||||||
import { FormArray } from '@angular/forms';
|
import { FormArray } from '@angular/forms';
|
||||||
import { MatSnackBar, MatSnackBarConfig } from '@angular/material';
|
import { MatSnackBar, MatSnackBarConfig } from '@angular/material';
|
||||||
|
import { TranslateService } from '@ngx-translate/core';
|
||||||
|
|
||||||
export interface Link {
|
export interface Link {
|
||||||
/* id of the section*/
|
/* id of the section*/
|
||||||
|
@ -35,17 +36,13 @@ export interface Link {
|
||||||
export class DatasetProfileTableOfContents extends BaseComponent implements OnInit {
|
export class DatasetProfileTableOfContents extends BaseComponent implements OnInit {
|
||||||
|
|
||||||
@Input() links: ToCEntry[];
|
@Input() links: ToCEntry[];
|
||||||
container: string;
|
|
||||||
headerSelectors = '.toc-page-header, .toc-section-header, .toc-compositeField-header';
|
|
||||||
@Output() stepFound = new EventEmitter<LinkToScroll>();
|
|
||||||
@Output() currentLinks = new EventEmitter<Link[]>();
|
|
||||||
|
|
||||||
@Output() itemClick = new EventEmitter<ToCEntry>();
|
@Output() itemClick = new EventEmitter<ToCEntry>();
|
||||||
@Output() newEntry = new EventEmitter<ToCEntry>();
|
@Output() newEntry = new EventEmitter<ToCEntry>();
|
||||||
@Output() removeEntry = new EventEmitter<ToCEntry>();
|
@Output() removeEntry = new EventEmitter<ToCEntry>();
|
||||||
|
|
||||||
|
|
||||||
@Output() createEntry = new EventEmitter<Foo>();
|
@Output() createEntry = new EventEmitter<Foo>();//TODO
|
||||||
|
|
||||||
@Output() dataNeedsRefresh = new EventEmitter<void>();
|
@Output() dataNeedsRefresh = new EventEmitter<void>();
|
||||||
|
|
||||||
|
@ -64,11 +61,6 @@ export class DatasetProfileTableOfContents extends BaseComponent implements OnIn
|
||||||
|
|
||||||
|
|
||||||
@Input() viewOnly: boolean;
|
@Input() viewOnly: boolean;
|
||||||
|
|
||||||
subscription: Subscription;
|
|
||||||
linksSubject: Subject<HTMLElement[]> = new Subject<HTMLElement[]>();
|
|
||||||
|
|
||||||
@Input() isActive: boolean;
|
|
||||||
show: boolean = false;
|
show: boolean = false;
|
||||||
isDragging: boolean = false;
|
isDragging: boolean = false;
|
||||||
draggingItemId: string = null;
|
draggingItemId: string = null;
|
||||||
|
@ -77,11 +69,14 @@ export class DatasetProfileTableOfContents extends BaseComponent implements OnIn
|
||||||
|
|
||||||
DRAGULA_ITEM_ID_PREFIX="table_item_id_";
|
DRAGULA_ITEM_ID_PREFIX="table_item_id_";
|
||||||
ROOT_ID: string = "ROOT_ID";//no special meaning
|
ROOT_ID: string = "ROOT_ID";//no special meaning
|
||||||
|
private _dragStartedAt;
|
||||||
|
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
@Inject(DOCUMENT) private _document: Document,
|
@Inject(DOCUMENT) private _document: Document,
|
||||||
private dragulaService: DragulaService,
|
private dragulaService: DragulaService,
|
||||||
private snackbar: MatSnackBar
|
private snackbar: MatSnackBar,
|
||||||
|
private language: TranslateService
|
||||||
) {
|
) {
|
||||||
super();
|
super();
|
||||||
|
|
||||||
|
@ -96,6 +91,25 @@ export class DatasetProfileTableOfContents extends BaseComponent implements OnIn
|
||||||
const drake = dragula.drake;
|
const drake = dragula.drake;
|
||||||
|
|
||||||
drake.on('drop', (el, target, source,sibling)=>{
|
drake.on('drop', (el, target, source,sibling)=>{
|
||||||
|
|
||||||
|
if(this._dragStartedAt){
|
||||||
|
const timeNow = new Date().getTime();
|
||||||
|
|
||||||
|
if(timeNow - this._dragStartedAt> 600){
|
||||||
|
console.log('timenow: ', timeNow);
|
||||||
|
console.log('timestarted', this._dragStartedAt);
|
||||||
|
this._dragStartedAt = null;
|
||||||
|
|
||||||
|
}else{
|
||||||
|
this.dataNeedsRefresh.emit();// even though the data is not changed the TABLE DRAG may has changed
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
this.dataNeedsRefresh.emit();// even though the data is not changed the TABLE DRAG may has changed
|
||||||
|
return;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
const elementId = (el.id as string).replace(this.DRAGULA_ITEM_ID_PREFIX,'');
|
const elementId = (el.id as string).replace(this.DRAGULA_ITEM_ID_PREFIX,'');
|
||||||
const targetId = target.id as string;
|
const targetId = target.id as string;
|
||||||
const sourceId = source.id as string;
|
const sourceId = source.id as string;
|
||||||
|
@ -123,7 +137,8 @@ export class DatasetProfileTableOfContents extends BaseComponent implements OnIn
|
||||||
switch(element.type){
|
switch(element.type){
|
||||||
case ToCEntryType.FieldSet:
|
case ToCEntryType.FieldSet:
|
||||||
if(targetContainer.type != this.tocEntryType.Section){
|
if(targetContainer.type != this.tocEntryType.Section){
|
||||||
const message = 'Fieldset can only be child of Subsections';
|
// const message = 'Fieldset can only be child of Subsections';
|
||||||
|
const message = this.language.instant('DATASET-PROFILE-EDITOR.STEPS.FORM.TABLE-OF-CONTENTS.ERROR-MESSAGES.FIELDSET-MUST-HAVE-PARENT-SECTION');
|
||||||
console.error(message);
|
console.error(message);
|
||||||
this.notifyUser(message)
|
this.notifyUser(message)
|
||||||
this.dataNeedsRefresh.emit();
|
this.dataNeedsRefresh.emit();
|
||||||
|
@ -132,7 +147,8 @@ export class DatasetProfileTableOfContents extends BaseComponent implements OnIn
|
||||||
|
|
||||||
//check if target container has no sections
|
//check if target container has no sections
|
||||||
if((targetContainer.form.get('sections') as FormArray).length){
|
if((targetContainer.form.get('sections') as FormArray).length){
|
||||||
const message = 'Cannot have inputs and sections on the same level';
|
// const message = 'Cannot have inputs and sections on the same level';
|
||||||
|
const message = this.language.instant('DATASET-PROFILE-EDITOR.STEPS.FORM.TABLE-OF-CONTENTS.ERROR-MESSAGES.INPUT-SECTION-SAME-LEVEL');
|
||||||
this.notifyUser(message);
|
this.notifyUser(message);
|
||||||
console.error(message);
|
console.error(message);
|
||||||
this.dataNeedsRefresh.emit();
|
this.dataNeedsRefresh.emit();
|
||||||
|
@ -207,7 +223,8 @@ export class DatasetProfileTableOfContents extends BaseComponent implements OnIn
|
||||||
|
|
||||||
if(targetContainer.type == ToCEntryType.Section){
|
if(targetContainer.type == ToCEntryType.Section){
|
||||||
if((targetContainer.form.get('fieldSets')as FormArray).length){
|
if((targetContainer.form.get('fieldSets')as FormArray).length){
|
||||||
const message = 'Cannot have inputs and sections on the same level';
|
// const message = 'Cannot have inputs and sections on the same level';
|
||||||
|
const message = this.language.instant('DATASET-PROFILE-EDITOR.STEPS.FORM.TABLE-OF-CONTENTS.ERROR-MESSAGES.INPUT-SECTION-SAME-LEVEL');;
|
||||||
this.notifyUser(message);
|
this.notifyUser(message);
|
||||||
console.info(message);
|
console.info(message);
|
||||||
this.dataNeedsRefresh.emit();
|
this.dataNeedsRefresh.emit();
|
||||||
|
@ -341,7 +358,8 @@ export class DatasetProfileTableOfContents extends BaseComponent implements OnIn
|
||||||
targetSectionsArray.push(sectionForm);
|
targetSectionsArray.push(sectionForm);
|
||||||
|
|
||||||
}else{
|
}else{
|
||||||
const message = 'Drag not support to specific container';
|
// const message = 'Drag not support to specific container';
|
||||||
|
const message = this.language.instant('DATASET-PROFILE-EDITOR.STEPS.FORM.TABLE-OF-CONTENTS.ERROR-MESSAGES.DRAG-NOT-SUPPORTED');
|
||||||
this.notifyUser(message);
|
this.notifyUser(message);
|
||||||
console.info(message);
|
console.info(message);
|
||||||
this.dataNeedsRefresh.emit();
|
this.dataNeedsRefresh.emit();
|
||||||
|
@ -354,7 +372,8 @@ export class DatasetProfileTableOfContents extends BaseComponent implements OnIn
|
||||||
break;
|
break;
|
||||||
case ToCEntryType.Page:
|
case ToCEntryType.Page:
|
||||||
if(targetId != this.ROOT_ID){
|
if(targetId != this.ROOT_ID){
|
||||||
const message = 'A page element can only be at top level';
|
// const message = 'A page element can only be at top level';
|
||||||
|
const message = this.language.instant('DATASET-PROFILE-EDITOR.STEPS.FORM.TABLE-OF-CONTENTS.ERROR-MESSAGES.PAGE-ELEMENT-ONLY-TOP-LEVEL');
|
||||||
this.notifyUser(message);
|
this.notifyUser(message);
|
||||||
console.info(message);
|
console.info(message);
|
||||||
this.dataNeedsRefresh.emit();
|
this.dataNeedsRefresh.emit();
|
||||||
|
@ -432,6 +451,7 @@ export class DatasetProfileTableOfContents extends BaseComponent implements OnIn
|
||||||
|
|
||||||
|
|
||||||
drake.on('drag',(el,source)=>{
|
drake.on('drag',(el,source)=>{
|
||||||
|
this._dragStartedAt = new Date().getTime();
|
||||||
console.log('drag fired');
|
console.log('drag fired');
|
||||||
this.isDragging = true;
|
this.isDragging = true;
|
||||||
this.draggingItemId = (el.id as string).replace(this.DRAGULA_ITEM_ID_PREFIX, '');
|
this.draggingItemId = (el.id as string).replace(this.DRAGULA_ITEM_ID_PREFIX, '');
|
||||||
|
@ -490,116 +510,14 @@ export class DatasetProfileTableOfContents extends BaseComponent implements OnIn
|
||||||
}
|
}
|
||||||
|
|
||||||
ngOnInit(): void {
|
ngOnInit(): void {
|
||||||
//emit value every 500ms
|
|
||||||
// const source = interval(500);
|
|
||||||
// this.subscription = source.subscribe(val => {
|
|
||||||
// const headers = Array.from(this._document.querySelectorAll(this.headerSelectors)) as HTMLElement[];
|
|
||||||
// this.linksSubject.next(headers);
|
|
||||||
// });
|
|
||||||
|
|
||||||
// if (!this.links || this.links.length === 0) {
|
|
||||||
// this.linksSubject.asObservable()
|
|
||||||
// .pipe(distinctUntilChanged((p: HTMLElement[], q: HTMLElement[]) => JSON.stringify(p) == JSON.stringify(q)))
|
|
||||||
// .subscribe(headers => {
|
|
||||||
// const links: Array<Link> = [];
|
|
||||||
|
|
||||||
// if (headers.length) {
|
|
||||||
// let page;
|
|
||||||
// let section;
|
|
||||||
// let show
|
|
||||||
// for (const header of headers) {
|
|
||||||
// let name;
|
|
||||||
// let id;
|
|
||||||
// if (header.classList.contains('toc-page-header')) { // deprecated after removing stepper
|
|
||||||
// name = header.innerText.trim().replace(/^link/, '');
|
|
||||||
// id = header.id;
|
|
||||||
// page = header.id.split('_')[1];
|
|
||||||
// section = undefined;
|
|
||||||
// show = true;
|
|
||||||
// } else if (header.classList.contains('toc-section-header')) {
|
|
||||||
// name = header.childNodes[0].childNodes[0].childNodes[0].childNodes[0].childNodes[0].nodeValue.trim().replace(/^link/, '');
|
|
||||||
// id = header.id;
|
|
||||||
// page = header.id.split('.')[1];
|
|
||||||
// section = header.id;
|
|
||||||
// if (header.id.split('.')[4]) { show = false; }
|
|
||||||
// else { show = true; }
|
|
||||||
// } else if (header.classList.contains('toc-compositeField-header')) {
|
|
||||||
// name = (header.childNodes[0]).nodeValue.trim().replace(/^link/, '');
|
|
||||||
// id = header.id;
|
|
||||||
// // id = header.parentElement.parentElement.parentElement.id;
|
|
||||||
// show = false;
|
|
||||||
// }
|
|
||||||
// const { top } = header.getBoundingClientRect();
|
|
||||||
// links.push({
|
|
||||||
// name,
|
|
||||||
// id,
|
|
||||||
// type: header.tagName.toLowerCase(),
|
|
||||||
// top: top,
|
|
||||||
// active: false,
|
|
||||||
// page: page,
|
|
||||||
// section: section,
|
|
||||||
// show: show,
|
|
||||||
// selected: false
|
|
||||||
// });
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// this.links = links;
|
|
||||||
// // Initialize selected for button next on dataset wizard component editor
|
|
||||||
// this.links.length > 0 ? this.links[0].selected = true : null;
|
|
||||||
// })
|
|
||||||
// }
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ngOnChanges(changes: SimpleChanges) {
|
ngOnChanges(changes: SimpleChanges) {
|
||||||
// if (!this.isActive && this.links && this.links.length > 0) {
|
|
||||||
// this.links.forEach(link => {
|
|
||||||
// link.selected = false;
|
|
||||||
// })
|
|
||||||
// this.links[0].selected = true;
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
goToStep(link: Link) {
|
|
||||||
// this.stepFound.emit({
|
|
||||||
// page: link.page,
|
|
||||||
// section: link.section
|
|
||||||
// });
|
|
||||||
// this.currentLinks.emit(this.links);
|
|
||||||
|
|
||||||
// setTimeout(() => {
|
|
||||||
// const target = document.getElementById(link.id);
|
|
||||||
// target.scrollIntoView(true);
|
|
||||||
|
|
||||||
// var scrolledY = window.scrollY;
|
|
||||||
// if (scrolledY) {
|
|
||||||
// window.scroll(0, scrolledY - 70);
|
|
||||||
// }
|
|
||||||
// }, 500);
|
|
||||||
}
|
|
||||||
|
|
||||||
toggle(headerLink: Link) {
|
|
||||||
// const headerPage = +headerLink.name.split(" ", 1);
|
|
||||||
// let innerPage;
|
|
||||||
// for (const link of this.links) {
|
|
||||||
// link.selected = false;
|
|
||||||
// if (link.type === 'mat-expansion-panel') {
|
|
||||||
// innerPage = +link.name.split(".", 1)[0];
|
|
||||||
// if (isNaN(innerPage)) { innerPage = +link.name.split(" ", 1) }
|
|
||||||
// } else if (link.type === 'h5') {
|
|
||||||
// innerPage = +link.name.split(".", 1)[0];
|
|
||||||
// }
|
|
||||||
// if (headerPage === innerPage && (link.type !== 'mat-expansion-panel' || (link.type === 'mat-expansion-panel' && link.id.split(".")[4]))) {
|
|
||||||
// link.show = !link.show;
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// headerLink.selected = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// getIndex(link: Link): number {
|
|
||||||
// return +link.id.split("_", 2)[1];
|
|
||||||
// }
|
|
||||||
|
|
||||||
|
|
||||||
itemClicked(item: ToCEntry){
|
itemClicked(item: ToCEntry){
|
||||||
//leaf node
|
//leaf node
|
||||||
|
@ -639,12 +557,3 @@ export class DatasetProfileTableOfContents extends BaseComponent implements OnIn
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
export interface LinkToScroll {
|
|
||||||
page: number;
|
|
||||||
section: number;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
|
@ -34,6 +34,7 @@ import { ENTER, COMMA } from '@angular/cdk/keycodes';
|
||||||
import { DatasetIdModel } from '@app/core/model/dataset/dataset-id.model';
|
import { DatasetIdModel } from '@app/core/model/dataset/dataset-id.model';
|
||||||
import { LocalFetchModel } from '@app/core/model/local-fetch/local-fetch.model';
|
import { LocalFetchModel } from '@app/core/model/local-fetch/local-fetch.model';
|
||||||
import { CurrencyService } from '@app/core/services/currency/currency.service';
|
import { CurrencyService } from '@app/core/services/currency/currency.service';
|
||||||
|
import { AutoCompleteSingleData } from '@app/core/model/dataset-profile-definition/field-data/field-data';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-form-field',
|
selector: 'app-form-field',
|
||||||
|
@ -46,7 +47,7 @@ export class FormFieldComponent extends BaseComponent implements OnInit {
|
||||||
@Input() form: FormGroup;
|
@Input() form: FormGroup;
|
||||||
@Input() datasetProfileId: any;
|
@Input() datasetProfileId: any;
|
||||||
@Input() isChild: Boolean = false;
|
@Input() isChild: Boolean = false;
|
||||||
@Input() autocompleteOptions: any;
|
@Input() autocompleteOptions: AutoCompleteSingleData;
|
||||||
|
|
||||||
// change: Subscription;
|
// change: Subscription;
|
||||||
// trackByFn = (index, item) => item ? item['id'] : null;
|
// trackByFn = (index, item) => item ? item['id'] : null;
|
||||||
|
@ -289,6 +290,10 @@ export class FormFieldComponent extends BaseComponent implements OnInit {
|
||||||
throw "Could not load autocomplete options.";
|
throw "Could not load autocomplete options.";
|
||||||
}
|
}
|
||||||
autocompleteRequestItem.criteria.like = query;
|
autocompleteRequestItem.criteria.like = query;
|
||||||
|
|
||||||
|
if(this.autocompleteOptions){
|
||||||
|
return this.datasetExternalAutocompleteService.queryApi(autocompleteRequestItem);
|
||||||
|
}
|
||||||
return this.datasetExternalAutocompleteService.queryAutocomplete(autocompleteRequestItem);
|
return this.datasetExternalAutocompleteService.queryAutocomplete(autocompleteRequestItem);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -465,6 +465,23 @@
|
||||||
"RULE-IF": "If Value is",
|
"RULE-IF": "If Value is",
|
||||||
"RULE-THEN": "then show Field With Id"
|
"RULE-THEN": "then show Field With Id"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"FORM-VALIDATION":{
|
||||||
|
"ERROR-MESSAGES":{
|
||||||
|
"PAGE-MUST-HAVE-SECTION": "Each section must have at least one subsection.",
|
||||||
|
"NEEDS-MORE-INFORMATION": " needs more information.",
|
||||||
|
"MUST-HAVE-SECTION-OR-FIELDSET": " must have either subsection or input set.",
|
||||||
|
"MISSING":"Missing",
|
||||||
|
"PROVIDE-PAGE-AND-SECTION":"Make sure you provide a section and a subsection"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"TABLE-OF-CONTENTS":{
|
||||||
|
"ERROR-MESSAGES":{
|
||||||
|
"FIELDSET-MUST-HAVE-PARENT-SECTION":"Input set can only be child of subsection.",
|
||||||
|
"INPUT-SECTION-SAME-LEVEL": "Cannot have input set and section on the same level.",
|
||||||
|
"DRAG-NOT-SUPPORTED":"Drag n drop of subsection not supported to target container.",
|
||||||
|
"PAGE-ELEMENT-ONLY-TOP-LEVEL": "Section elements can only be at top level"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"TOOLKIT": {
|
"TOOLKIT": {
|
||||||
|
|
|
@ -465,6 +465,23 @@
|
||||||
"RULE-IF": "If Value is",
|
"RULE-IF": "If Value is",
|
||||||
"RULE-THEN": "then show Field With Id"
|
"RULE-THEN": "then show Field With Id"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"FORM-VALIDATION":{
|
||||||
|
"ERROR-MESSAGES":{
|
||||||
|
"PAGE-MUST-HAVE-SECTION": "Each section must have at least one subsection.",
|
||||||
|
"NEEDS-MORE-INFORMATION": " needs more information.",
|
||||||
|
"MUST-HAVE-SECTION-OR-FIELDSET": " must have either subsection or input set.",
|
||||||
|
"MISSING":"Missing",
|
||||||
|
"PROVIDE-PAGE-AND-SECTION":"Make sure you provide a section and a subsection"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"TABLE-OF-CONTENTS":{
|
||||||
|
"ERROR-MESSAGES":{
|
||||||
|
"FIELDSET-MUST-HAVE-PARENT-SECTION":"Input set can only be child of subsection.",
|
||||||
|
"INPUT-SECTION-SAME-LEVEL": "Cannot have input set and section on the same level.",
|
||||||
|
"DRAG-NOT-SUPPORTED":"Drag n drop of subsection not supported to target container.",
|
||||||
|
"PAGE-ELEMENT-ONLY-TOP-LEVEL": "Section elements can only be at top level"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"TOOLKIT": {
|
"TOOLKIT": {
|
||||||
|
|
|
@ -465,6 +465,23 @@
|
||||||
"RULE-IF": "Si el valor es",
|
"RULE-IF": "Si el valor es",
|
||||||
"RULE-THEN": "entonces muestra el campo con identificación"
|
"RULE-THEN": "entonces muestra el campo con identificación"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"FORM-VALIDATION":{
|
||||||
|
"ERROR-MESSAGES":{
|
||||||
|
"PAGE-MUST-HAVE-SECTION": "Each section must have at least one subsection.",
|
||||||
|
"NEEDS-MORE-INFORMATION": " needs more information.",
|
||||||
|
"MUST-HAVE-SECTION-OR-FIELDSET": " must have either subsection or input set.",
|
||||||
|
"MISSING":"Missing",
|
||||||
|
"PROVIDE-PAGE-AND-SECTION":"Make sure you provide a section and a subsection"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"TABLE-OF-CONTENTS":{
|
||||||
|
"ERROR-MESSAGES":{
|
||||||
|
"FIELDSET-MUST-HAVE-PARENT-SECTION":"Input set can only be child of subsection.",
|
||||||
|
"INPUT-SECTION-SAME-LEVEL": "Cannot have input set and section on the same level.",
|
||||||
|
"DRAG-NOT-SUPPORTED":"Drag n drop of subsection not supported to target container.",
|
||||||
|
"PAGE-ELEMENT-ONLY-TOP-LEVEL": "Section elements can only be at top level"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"TOOLKIT": {
|
"TOOLKIT": {
|
||||||
|
|
|
@ -465,6 +465,23 @@
|
||||||
"RULE-IF": "Εάν η τιμή είναι",
|
"RULE-IF": "Εάν η τιμή είναι",
|
||||||
"RULE-THEN": "τότε δείξε το Πεδίο με ταυτοποίηση"
|
"RULE-THEN": "τότε δείξε το Πεδίο με ταυτοποίηση"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"FORM-VALIDATION":{
|
||||||
|
"ERROR-MESSAGES":{
|
||||||
|
"PAGE-MUST-HAVE-SECTION": "Each section must have at least one subsection.",
|
||||||
|
"NEEDS-MORE-INFORMATION": " needs more information.",
|
||||||
|
"MUST-HAVE-SECTION-OR-FIELDSET": " must have either subsection or input set.",
|
||||||
|
"MISSING":"Missing",
|
||||||
|
"PROVIDE-PAGE-AND-SECTION":"Make sure you provide a section and a subsection"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"TABLE-OF-CONTENTS":{
|
||||||
|
"ERROR-MESSAGES":{
|
||||||
|
"FIELDSET-MUST-HAVE-PARENT-SECTION":"Input set can only be child of subsection.",
|
||||||
|
"INPUT-SECTION-SAME-LEVEL": "Cannot have input set and section on the same level.",
|
||||||
|
"DRAG-NOT-SUPPORTED":"Drag n drop of subsection not supported to target container.",
|
||||||
|
"PAGE-ELEMENT-ONLY-TOP-LEVEL": "Section elements can only be at top level"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"TOOLKIT": {
|
"TOOLKIT": {
|
||||||
|
|
|
@ -465,6 +465,23 @@
|
||||||
"RULE-IF": "Se Valor é",
|
"RULE-IF": "Se Valor é",
|
||||||
"RULE-THEN": "então mostrar Campo com o Id"
|
"RULE-THEN": "então mostrar Campo com o Id"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"FORM-VALIDATION":{
|
||||||
|
"ERROR-MESSAGES":{
|
||||||
|
"PAGE-MUST-HAVE-SECTION": "Each section must have at least one subsection.",
|
||||||
|
"NEEDS-MORE-INFORMATION": " needs more information.",
|
||||||
|
"MUST-HAVE-SECTION-OR-FIELDSET": " must have either subsection or input set.",
|
||||||
|
"MISSING":"Missing",
|
||||||
|
"PROVIDE-PAGE-AND-SECTION":"Make sure you provide a section and a subsection"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"TABLE-OF-CONTENTS":{
|
||||||
|
"ERROR-MESSAGES":{
|
||||||
|
"FIELDSET-MUST-HAVE-PARENT-SECTION":"Input set can only be child of subsection.",
|
||||||
|
"INPUT-SECTION-SAME-LEVEL": "Cannot have input set and section on the same level.",
|
||||||
|
"DRAG-NOT-SUPPORTED":"Drag n drop of subsection not supported to target container.",
|
||||||
|
"PAGE-ELEMENT-ONLY-TOP-LEVEL": "Section elements can only be at top level"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"TOOLKIT": {
|
"TOOLKIT": {
|
||||||
|
|
|
@ -465,6 +465,23 @@
|
||||||
"RULE-IF": "If Value is",
|
"RULE-IF": "If Value is",
|
||||||
"RULE-THEN": "then show Field With Id"
|
"RULE-THEN": "then show Field With Id"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"FORM-VALIDATION":{
|
||||||
|
"ERROR-MESSAGES":{
|
||||||
|
"PAGE-MUST-HAVE-SECTION": "Each section must have at least one subsection.",
|
||||||
|
"NEEDS-MORE-INFORMATION": " needs more information.",
|
||||||
|
"MUST-HAVE-SECTION-OR-FIELDSET": " must have either subsection or input set.",
|
||||||
|
"MISSING":"Missing",
|
||||||
|
"PROVIDE-PAGE-AND-SECTION":"Make sure you provide a section and a subsection"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"TABLE-OF-CONTENTS":{
|
||||||
|
"ERROR-MESSAGES":{
|
||||||
|
"FIELDSET-MUST-HAVE-PARENT-SECTION":"Input set can only be child of subsection.",
|
||||||
|
"INPUT-SECTION-SAME-LEVEL": "Cannot have input set and section on the same level.",
|
||||||
|
"DRAG-NOT-SUPPORTED":"Drag n drop of subsection not supported to target container.",
|
||||||
|
"PAGE-ELEMENT-ONLY-TOP-LEVEL": "Section elements can only be at top level"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"TOOLKIT": {
|
"TOOLKIT": {
|
||||||
|
|
|
@ -465,6 +465,23 @@
|
||||||
"RULE-IF": "Ako je vrednost",
|
"RULE-IF": "Ako je vrednost",
|
||||||
"RULE-THEN": "tada prikazati polje sa Id"
|
"RULE-THEN": "tada prikazati polje sa Id"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"FORM-VALIDATION":{
|
||||||
|
"ERROR-MESSAGES":{
|
||||||
|
"PAGE-MUST-HAVE-SECTION": "Each section must have at least one subsection.",
|
||||||
|
"NEEDS-MORE-INFORMATION": " needs more information.",
|
||||||
|
"MUST-HAVE-SECTION-OR-FIELDSET": " must have either subsection or input set.",
|
||||||
|
"MISSING":"Missing",
|
||||||
|
"PROVIDE-PAGE-AND-SECTION":"Make sure you provide a section and a subsection"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"TABLE-OF-CONTENTS":{
|
||||||
|
"ERROR-MESSAGES":{
|
||||||
|
"FIELDSET-MUST-HAVE-PARENT-SECTION":"Input set can only be child of subsection.",
|
||||||
|
"INPUT-SECTION-SAME-LEVEL": "Cannot have input set and section on the same level.",
|
||||||
|
"DRAG-NOT-SUPPORTED":"Drag n drop of subsection not supported to target container.",
|
||||||
|
"PAGE-ELEMENT-ONLY-TOP-LEVEL": "Section elements can only be at top level"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"TOOLKIT": {
|
"TOOLKIT": {
|
||||||
|
|
|
@ -465,6 +465,23 @@
|
||||||
"RULE-IF": "Eğer değer",
|
"RULE-IF": "Eğer değer",
|
||||||
"RULE-THEN": "sonra alanı kimliği ile göster"
|
"RULE-THEN": "sonra alanı kimliği ile göster"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"FORM-VALIDATION":{
|
||||||
|
"ERROR-MESSAGES":{
|
||||||
|
"PAGE-MUST-HAVE-SECTION": "Each section must have at least one subsection.",
|
||||||
|
"NEEDS-MORE-INFORMATION": " needs more information.",
|
||||||
|
"MUST-HAVE-SECTION-OR-FIELDSET": " must have either subsection or input set.",
|
||||||
|
"MISSING":"Missing",
|
||||||
|
"PROVIDE-PAGE-AND-SECTION":"Make sure you provide a section and a subsection"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"TABLE-OF-CONTENTS":{
|
||||||
|
"ERROR-MESSAGES":{
|
||||||
|
"FIELDSET-MUST-HAVE-PARENT-SECTION":"Input set can only be child of subsection.",
|
||||||
|
"INPUT-SECTION-SAME-LEVEL": "Cannot have input set and section on the same level.",
|
||||||
|
"DRAG-NOT-SUPPORTED":"Drag n drop of subsection not supported to target container.",
|
||||||
|
"PAGE-ELEMENT-ONLY-TOP-LEVEL": "Section elements can only be at top level"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"TOOLKIT": {
|
"TOOLKIT": {
|
||||||
|
|
Loading…
Reference in New Issue