Add URL Validator type in validators. Free Text can have URL validator.

This commit is contained in:
Konstantinos Triantafyllou 2022-02-08 14:31:36 +02:00
parent 80e5e12f29
commit 26e10b1299
16 changed files with 171 additions and 75 deletions

View File

@ -13,7 +13,7 @@ import java.util.stream.Collectors;
public class Field implements ViewStyleDefinition<eu.eudat.models.data.entities.xmlmodels.datasetprofiledefinition.Field>, Comparable { public class Field implements ViewStyleDefinition<eu.eudat.models.data.entities.xmlmodels.datasetprofiledefinition.Field>, Comparable {
public enum ValidationType { public enum ValidationType {
NONE((short) 0), REQUIRED((short) 1); NONE((short) 0), REQUIRED((short) 1), URL((short) 2);
private short value; private short value;
private ValidationType(short value) { private ValidationType(short value) {
@ -30,6 +30,8 @@ public class Field implements ViewStyleDefinition<eu.eudat.models.data.entities.
return NONE; return NONE;
case 1: case 1:
return REQUIRED; return REQUIRED;
case 2:
return URL;
default: default:
return NONE; return NONE;

View File

@ -1,4 +1,18 @@
import {ValidatorFn, Validators} from "@angular/forms";
export enum ValidationType { export enum ValidationType {
None = 0, None = 0,
Required = 1 Required = 1,
URL = 2
}
export class ValidatorURL {
public static regex = 'https?:\/\/(?:www\.|(?!www))[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\.[^\s]{2,}|www\.' +
'[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\.[^\s]{2,}|https?:\/\/(?:www\.|(?!www))[a-zA-Z0-9]+\.[^\s]{2,}|www\.' +
'[a-zA-Z0-9]+\.[^\s]{2,}';
public static get validator(): ValidatorFn {
return Validators.pattern(ValidatorURL.regex);
}
} }

View File

@ -21,4 +21,5 @@ export interface Field {
data: any; data: any;
validations: Array<ValidationType>; validations: Array<ValidationType>;
validationRequired; validationRequired;
} validationURL;
}

View File

@ -5,11 +5,16 @@
<ng-content></ng-content> <ng-content></ng-content>
<div class="col-auto"> <div class="col-auto">
<ul class="list-unstyled list-inline d-flex align-items-center"> <ul class="list-unstyled list-inline d-flex align-items-center">
<li class="list-inline-item" > <li class="list-inline-item">
<mat-slide-toggle class="field-toggler" [checked]="isRequired" (change)="toggleRequired($event)" labelPosition="before" [matTooltip]="'DATASET-PROFILE-EDITOR.ACTIONS.FIELD.MAKE-IT-REQUIRED' | translate" [disabled]="!viewType"> <mat-slide-toggle class="field-toggler" [checked]="isRequired" (change)="toggleRequired($event)" labelPosition="before" [matTooltip]="'DATASET-PROFILE-EDITOR.ACTIONS.FIELD.MAKE-IT-REQUIRED' | translate" [disabled]="!viewType">
{{'GENERAL.VALIDATION.REQUIRED' | translate}} {{'GENERAL.VALIDATION.REQUIRED' | translate}}
</mat-slide-toggle> </mat-slide-toggle>
</li> </li>
<li *ngIf="viewType === viewTypeEnum.FreeText" class="list-inline-item">
<mat-slide-toggle class="field-toggler" [checked]="isURL" (change)="toggleURL($event)" labelPosition="before" [matTooltip]="'DATASET-PROFILE-EDITOR.ACTIONS.FIELD.MAKE-IT-REQUIRED' | translate" [disabled]="!viewType">
{{'GENERAL.VALIDATION.URL.LABEL' | translate}}
</mat-slide-toggle>
</li>
<!-- <li class="list-inline-item" *ngIf="!viewOnly && viewType && canApplyVisibility"> <!-- <li class="list-inline-item" *ngIf="!viewOnly && viewType && canApplyVisibility">
<mat-icon style="cursor: pointer;" (click)="addNewRule()" [matTooltip]="'DATASET-PROFILE-EDITOR.ACTIONS.FIELD.ADD-VISIBILITY-RULE' | translate">visibility</mat-icon> <mat-icon style="cursor: pointer;" (click)="addNewRule()" [matTooltip]="'DATASET-PROFILE-EDITOR.ACTIONS.FIELD.ADD-VISIBILITY-RULE' | translate">visibility</mat-icon>
</li> --> </li> -->

View File

@ -1,22 +1,43 @@
 import {Component, EventEmitter, Input, OnInit, Output} from '@angular/core';
import { Component, EventEmitter, Input, OnInit, Output} from '@angular/core';
import {FormArray, FormControl, FormGroup, FormGroupDirective, NgForm,} from '@angular/forms'; import {FormArray, FormControl, FormGroup, FormGroupDirective, NgForm,} from '@angular/forms';
import { DatasetProfileFieldViewStyle } from '@app/core/common/enum/dataset-profile-field-view-style'; import {DatasetProfileFieldViewStyle} from '@app/core/common/enum/dataset-profile-field-view-style';
import { ValidationType } from '@app/core/common/enum/validation-type'; import {ValidationType} from '@app/core/common/enum/validation-type';
import { DatasetProfileService } from '@app/core/services/dataset-profile/dataset-profile.service'; import {DatasetProfileService} from '@app/core/services/dataset-profile/dataset-profile.service';
import { EnumUtils } from '@app/core/services/utilities/enum-utils.service'; import {EnumUtils} from '@app/core/services/utilities/enum-utils.service';
import { RuleEditorModel } from '@app/ui/admin/dataset-profile/admin/rule-editor-model'; import {RuleEditorModel} from '@app/ui/admin/dataset-profile/admin/rule-editor-model';
import { BaseComponent } from '@common/base/base.component'; import {BaseComponent} from '@common/base/base.component';
import { Subscription } from 'rxjs'; import {Subscription} from 'rxjs';
import { ViewStyleType } from './view-style-enum'; import {ViewStyleType} from './view-style-enum';
import { DatasetProfileComboBoxType } from '@app/core/common/enum/dataset-profile-combo-box-type'; import {DatasetProfileComboBoxType} from '@app/core/common/enum/dataset-profile-combo-box-type';
import { ErrorStateMatcher } from '@angular/material/core'; import {ErrorStateMatcher} from '@angular/material/core';
import { MatDialog } from '@angular/material/dialog'; import {MatDialog} from '@angular/material/dialog';
import { MatSlideToggleChange } from '@angular/material/slide-toggle'; import {MatSlideToggleChange} from '@angular/material/slide-toggle';
import { Field } from '@app/core/model/admin/dataset-profile/dataset-profile'; import {Field} from '@app/core/model/admin/dataset-profile/dataset-profile';
import { DatasetProfileInternalDmpEntitiesType } from '@app/core/common/enum/dataset-profile-internal-dmp-entities-type'; import {DatasetProfileInternalDmpEntitiesType} from '@app/core/common/enum/dataset-profile-internal-dmp-entities-type';
import { FieldEditorModel } from '../../../admin/field-editor-model'; import {FieldEditorModel} from '../../../admin/field-editor-model';
import { AutoCompleteFieldData, BooleanDecisionFieldData, CheckBoxFieldData, CurrencyFieldData, DataRepositoriesFieldData, DatasetIdentifierFieldData, DatePickerFieldData, DmpsAutoCompleteFieldData, ExternalDatasetsFieldData, FieldDataOption, FreeTextFieldData, OrganizationsFieldData, RadioBoxFieldData, RegistriesFieldData, ResearchersAutoCompleteFieldData, ServicesFieldData, TagsFieldData, TextAreaFieldData, RichTextAreaFieldData, ValidationFieldData, WordListFieldData } from '@app/core/model/dataset-profile-definition/field-data/field-data'; import {
AutoCompleteFieldData,
BooleanDecisionFieldData,
CheckBoxFieldData,
CurrencyFieldData,
DataRepositoriesFieldData,
DatasetIdentifierFieldData,
DatePickerFieldData,
DmpsAutoCompleteFieldData,
ExternalDatasetsFieldData,
FieldDataOption,
FreeTextFieldData,
OrganizationsFieldData,
RadioBoxFieldData,
RegistriesFieldData,
ResearchersAutoCompleteFieldData,
RichTextAreaFieldData,
ServicesFieldData,
TagsFieldData,
TextAreaFieldData,
ValidationFieldData,
WordListFieldData
} from '@app/core/model/dataset-profile-definition/field-data/field-data';
@Component({ @Component({
selector: 'app-dataset-profile-editor-field-component', selector: 'app-dataset-profile-editor-field-component',
@ -147,7 +168,9 @@ export class DatasetProfileEditorFieldComponent extends BaseComponent implements
this.viewType = this.viewTypeEnum.Validation; this.viewType = this.viewTypeEnum.Validation;
break; break;
} }
if(this.viewType !== this.viewTypeEnum.FreeText) {
this.setValidator(ValidationType.URL, false);
}
} }
// this.showPreview = true; // this.showPreview = true;
@ -793,20 +816,24 @@ export class DatasetProfileEditorFieldComponent extends BaseComponent implements
toggleRequired(event:MatSlideToggleChange){ toggleRequired(event:MatSlideToggleChange){
this.setValidator(ValidationType.Required, event.checked);
}
toggleURL(event:MatSlideToggleChange){
this.setValidator(ValidationType.URL, event.checked);
}
private setValidator(validationType: ValidationType, add: boolean) {
let validationsControl = this.form.get('validations') as FormControl; let validationsControl = this.form.get('validations') as FormControl;
let validations: Array<ValidationType> = validationsControl.value; let validations: Array<ValidationType> = validationsControl.value;
if(event.checked){ if(add){
if(!validations.includes(ValidationType.Required)){//IS ALREADY REQUIRED if(!validations.includes(validationType)){
// validationsControl.setValue(validations.filter(validator=> validator != ValidationType.Required)); validations.push(validationType);
// validationsControl.updateValueAndValidity();
validations.push(ValidationType.Required);
// validationsControl.setValue(validations);
validationsControl.updateValueAndValidity(); validationsControl.updateValueAndValidity();
} }
}else{ } else{
validationsControl.setValue(validations.filter(validator=> validator != ValidationType.Required)); validationsControl.setValue(validations.filter(validator=> validator != validationType));
validationsControl.updateValueAndValidity(); validationsControl.updateValueAndValidity();
} }
this.form.markAsDirty();//deactivate guard this.form.markAsDirty();//deactivate guard
@ -818,6 +845,12 @@ export class DatasetProfileEditorFieldComponent extends BaseComponent implements
return validations.includes(ValidationType.Required); return validations.includes(ValidationType.Required);
} }
get isURL(){
let validationsControl = this.form.get('validations') as FormControl;
let validations: Array<ValidationType> = validationsControl.value;
return validations.includes(ValidationType.URL);
}
onDelete(){ onDelete(){
this.delete.emit(); this.delete.emit();

View File

@ -11,7 +11,8 @@
</h5> </h5>
<mat-form-field *ngSwitchCase="datasetProfileFieldViewStyleEnum.FreeText" class="col-12"> <mat-form-field *ngSwitchCase="datasetProfileFieldViewStyleEnum.FreeText" class="col-12">
<input matInput [formControl]="form.get('value')" placeholder="{{(form.get('data').value.label) + (form.get('validationRequired').value? ' *': '')}}" [required]="form.get('validationRequired').value"> <input matInput [formControl]="form.get('value')" placeholder="{{(form.get('data').value.label) + (form.get('validationRequired').value? ' *': '')}}" [required]="form.get('validationRequired').value">
<mat-error *ngIf="form.get('value')['errors'] && form.get('value')['errors']['required']">{{'GENERAL.VALIDATION.REQUIRED' | translate}}</mat-error> <mat-error *ngIf="form.get('value').hasError('required')">{{'GENERAL.VALIDATION.REQUIRED' | translate}}</mat-error>
<mat-error *ngIf="form.get('value').hasError('pattern')">{{'GENERAL.VALIDATION.URL.MESSAGE' | translate}}</mat-error>
</mat-form-field> </mat-form-field>
<div *ngSwitchCase="datasetProfileFieldViewStyleEnum.ComboBox" class="col-12"> <div *ngSwitchCase="datasetProfileFieldViewStyleEnum.ComboBox" class="col-12">
@ -105,7 +106,7 @@
<button mat-icon-button type="button" *ngIf="!form.get('value').disabled && form.get('value').value" matSuffix aria-label="Clear" (click)="this.form.patchValue({'value': ''})"> <button mat-icon-button type="button" *ngIf="!form.get('value').disabled && form.get('value').value" matSuffix aria-label="Clear" (click)="this.form.patchValue({'value': ''})">
<mat-icon>close</mat-icon> <mat-icon>close</mat-icon>
</button> </button>
<mat-error *ngIf="form.get('value')['errors'] && form.get('value')['errors']['required']">{{'GENERAL.VALIDATION.REQUIRED' | translate}}</mat-error> <mat-error *ngIf="form.get('value')['errors'] && form.get('value').hasError('required')">{{'GENERAL.VALIDATION.REQUIRED' | translate}}</mat-error>
</mat-form-field> </mat-form-field>
<ng-container *ngSwitchCase="datasetProfileFieldViewStyleEnum.RichTextArea"> <ng-container *ngSwitchCase="datasetProfileFieldViewStyleEnum.RichTextArea">
<rich-text-editor-component class="col-12" <rich-text-editor-component class="col-12"
@ -115,8 +116,8 @@
[wrapperClasses]="'full-width editor ' + [wrapperClasses]="'full-width editor ' +
((form.get('validationRequired').value) ? 'required' : '')"> ((form.get('validationRequired').value) ? 'required' : '')">
</rich-text-editor-component> </rich-text-editor-component>
<div [class]="(form.get('value')['errors'] && form.get('value')['errors']['required']) ? 'visible' : 'invisible'" class="mat-form-field form-field-subscript-wrapper"> <div [class]="(form.get('value')['errors'] && form.get('value').hasError('required')) ? 'visible' : 'invisible'" class="mat-form-field form-field-subscript-wrapper">
<mat-error *ngIf="form.get('value')['errors'] && form.get('value')['errors']['required']">{{'GENERAL.VALIDATION.REQUIRED' | translate}}</mat-error> <mat-error *ngIf="form.get('value')['errors'] && form.get('value').hasError('required')">{{'GENERAL.VALIDATION.REQUIRED' | translate}}</mat-error>
</div> </div>
</ng-container> </ng-container>

View File

@ -91,10 +91,8 @@ export class FormProgressIndicationComponent extends BaseComponent implements On
} }
private checkIfIsRequired(formControl: FormGroup): boolean { private checkIfIsRequired(formControl: FormGroup): boolean {
if (formControl.get('validationRequired') && formControl.get('validationRequired').value) { return !!(formControl.get('validationRequired') && formControl.get('validationRequired').value);
return true;
}
return false;
} }
private checkFormsIfIsFieldsAndVisible(formControl: FormGroup): boolean { private checkFormsIfIsFieldsAndVisible(formControl: FormGroup): boolean {

View File

@ -1,18 +1,18 @@
import { FormBuilder, FormControl, FormGroup, Validators } from "@angular/forms"; import {FormBuilder, FormControl, FormGroup, ValidatorFn, Validators} from "@angular/forms";
import { Guid } from '@common/types/guid'; import {Guid} from '@common/types/guid';
import { ValidationType } from "../../../core/common/enum/validation-type"; import {ValidationType, ValidatorURL} from "../../../core/common/enum/validation-type";
import { BaseFormModel } from "../../../core/model/base-form-model"; import {BaseFormModel} from "../../../core/model/base-form-model";
import { CompositeField } from "../../../core/model/dataset-profile-definition/composite-field"; import {CompositeField} from "../../../core/model/dataset-profile-definition/composite-field";
import { DatasetProfileDefinitionModel } from "../../../core/model/dataset-profile-definition/dataset-profile-definition"; import {DatasetProfileDefinitionModel} from "../../../core/model/dataset-profile-definition/dataset-profile-definition";
import { DefaultValue } from "../../../core/model/dataset-profile-definition/default-value"; import {DefaultValue} from "../../../core/model/dataset-profile-definition/default-value";
import { Field } from "../../../core/model/dataset-profile-definition/field"; import {Field} from "../../../core/model/dataset-profile-definition/field";
import { Multiplicity } from "../../../core/model/dataset-profile-definition/multiplicity"; import {Multiplicity} from "../../../core/model/dataset-profile-definition/multiplicity";
import { Page } from "../../../core/model/dataset-profile-definition/page"; import {Page} from "../../../core/model/dataset-profile-definition/page";
import { Rule } from "../../../core/model/dataset-profile-definition/rule"; import {Rule} from "../../../core/model/dataset-profile-definition/rule";
import { Section } from "../../../core/model/dataset-profile-definition/section"; import {Section} from "../../../core/model/dataset-profile-definition/section";
import { ViewStyle } from "../../../core/model/dataset-profile-definition/view-style"; import {ViewStyle} from "../../../core/model/dataset-profile-definition/view-style";
import { BackendErrorValidator } from '@common/forms/validation/custom-validator'; import {BackendErrorValidator} from '@common/forms/validation/custom-validator';
import { ValidationErrorModel } from '@common/forms/validation/error-model/validation-error-model'; import {ValidationErrorModel} from '@common/forms/validation/error-model/validation-error-model';
export class DatasetDescriptionFormEditorModel extends BaseFormModel { export class DatasetDescriptionFormEditorModel extends BaseFormModel {
@ -229,6 +229,7 @@ export class DatasetDescriptionFieldEditorModel extends BaseFormModel {
public data: any; public data: any;
public validations: Array<ValidationType>; public validations: Array<ValidationType>;
public validationRequired = false; public validationRequired = false;
public validationURL = false;
fromModel(item: Field): DatasetDescriptionFieldEditorModel { fromModel(item: Field): DatasetDescriptionFieldEditorModel {
this.id = item.id; this.id = item.id;
@ -253,16 +254,27 @@ export class DatasetDescriptionFieldEditorModel extends BaseFormModel {
buildForm(): FormGroup { buildForm(): FormGroup {
if (this.validations) { if (this.validations) {
this.validations.forEach(validation => { this.validations.forEach(validation => {
if (validation === ValidationType.Required) { this.validationRequired = true; } if (validation === ValidationType.Required) {
this.validationRequired = true;
} else if(validation === ValidationType.URL) {
this.validationURL = true;
}
}); });
} }
let validators: any[] = [];
if(this.validationRequired) {
validators.push(Validators.required)
}
if(this.validationURL) {
validators.push(ValidatorURL.validator);
}
const formGroup = this.formBuilder.group({ const formGroup = this.formBuilder.group({
value: [this.value, this.validationRequired === true ? Validators.required : null], value: [this.value, validators],
id: [{ value: this.id, disabled: false }], id: [{ value: this.id, disabled: false }],
viewStyle: [{ value: this.viewStyle, disabled: true }], viewStyle: [{ value: this.viewStyle, disabled: true }],
data: [{ value: this.data, disabled: true }], data: [{ value: this.data, disabled: true }],
validationRequired: [{ value: this.validationRequired, disabled: true }], validationRequired: [{ value: this.validationRequired, disabled: true }],
validationURL: [{ value: this.validationURL, disabled: true }],
description: [{ value: this.description, disabled: true }], description: [{ value: this.description, disabled: true }],
extendedDescription: [{ value: this.extendedDescription, disabled: true }], extendedDescription: [{ value: this.extendedDescription, disabled: true }],
additionalInformation: [{ value: this.additionalInformation, disabled: true }], additionalInformation: [{ value: this.additionalInformation, disabled: true }],

View File

@ -3,7 +3,11 @@
"VALIDATION": { "VALIDATION": {
"REQUIRED": "Pflichtfeld", "REQUIRED": "Pflichtfeld",
"GRANT-START-AFTER-END": "Anfangsdatum der Förderung kann nicht nach dem Laufzeitende liegen", "GRANT-START-AFTER-END": "Anfangsdatum der Förderung kann nicht nach dem Laufzeitende liegen",
"PATTERN-_": "Schriftzeichen \"_\" ist nicht erlaubt" "PATTERN-_": "Schriftzeichen \"_\" ist nicht erlaubt",
"URL": {
"LABEL": "URL",
"MESSAGE": "Please provide a valid URL"
}
}, },
"DELETE-CONFIRMATION": { "DELETE-CONFIRMATION": {
"TITLE": "Warnung", "TITLE": "Warnung",
@ -721,7 +725,7 @@
"DATASET-NOT-FOUND": "Datensatzbeschreibung ist nicht vorhanden", "DATASET-NOT-FOUND": "Datensatzbeschreibung ist nicht vorhanden",
"DATASET-NOT-ALLOWED": "Sie haben keinen Zugriff auf diese Datensatzbeschreibung", "DATASET-NOT-ALLOWED": "Sie haben keinen Zugriff auf diese Datensatzbeschreibung",
"SUCCESS-UPDATE-DATASET-PROFILE": "Vorlage der Datensatzbeschreibung erfolgreich aktualisiert", "SUCCESS-UPDATE-DATASET-PROFILE": "Vorlage der Datensatzbeschreibung erfolgreich aktualisiert",
"MISSING-FIELDS": "There are some required fields left unfilled. Please check the form and make sure that all required fields are filled. (Missing fields are marked in red color)" "MISSING-FIELDS": "There are some required fields left unfilled. Please check the DMP and make sure that all required questions are answered and URLs are provided with valid input. (Missing fields are marked in red color)"
}, },
"UPLOAD": { "UPLOAD": {
"UPLOAD-XML": "Importieren", "UPLOAD-XML": "Importieren",

View File

@ -3,7 +3,11 @@
"VALIDATION": { "VALIDATION": {
"REQUIRED": "Required", "REQUIRED": "Required",
"GRANT-START-AFTER-END": "Grant start date cannot be after the end date", "GRANT-START-AFTER-END": "Grant start date cannot be after the end date",
"PATTERN-_": "Character \"_\" is not allowed" "PATTERN-_": "Character \"_\" is not allowed",
"URL": {
"LABEL": "URL",
"MESSAGE": "Please provide a valid URL"
}
}, },
"DELETE-CONFIRMATION": { "DELETE-CONFIRMATION": {
"TITLE": "Warning", "TITLE": "Warning",
@ -721,7 +725,7 @@
"DATASET-NOT-FOUND": "Dataset does not exist", "DATASET-NOT-FOUND": "Dataset does not exist",
"DATASET-NOT-ALLOWED": "You have no access to this Dataset", "DATASET-NOT-ALLOWED": "You have no access to this Dataset",
"SUCCESS-UPDATE-DATASET-PROFILE": "Dataset Template updated successfully", "SUCCESS-UPDATE-DATASET-PROFILE": "Dataset Template updated successfully",
"MISSING-FIELDS": "There are some required fields left unfilled. Please check the form and make sure that all required fields are filled. (Missing fields are marked in red color)" "MISSING-FIELDS": "There are some required fields left unfilled. Please check the DMP and make sure that all required questions are answered and URLs are provided with valid input. (Missing fields are marked in red color)"
}, },
"UPLOAD": { "UPLOAD": {
"UPLOAD-XML": "Import", "UPLOAD-XML": "Import",

View File

@ -3,7 +3,11 @@
"VALIDATION": { "VALIDATION": {
"REQUIRED": "Obligatorio", "REQUIRED": "Obligatorio",
"GRANT-START-AFTER-END": "La fecha de incio de la subvención no puede ser posterior a la fecha de fin", "GRANT-START-AFTER-END": "La fecha de incio de la subvención no puede ser posterior a la fecha de fin",
"PATTERN-_": "Carácter \"_\" no permitido" "PATTERN-_": "Carácter \"_\" no permitido",
"URL": {
"LABEL": "URL",
"MESSAGE": "Please provide a valid URL"
}
}, },
"DELETE-CONFIRMATION": { "DELETE-CONFIRMATION": {
"TITLE": "Aviso", "TITLE": "Aviso",
@ -721,8 +725,7 @@
"DATASET-NOT-FOUND": "No existe la descripción del dataset", "DATASET-NOT-FOUND": "No existe la descripción del dataset",
"DATASET-NOT-ALLOWED": "No tiene acceso a la descricipción de este dataset", "DATASET-NOT-ALLOWED": "No tiene acceso a la descricipción de este dataset",
"SUCCESS-UPDATE-DATASET-PROFILE": "Plantilla de descripción del dataset actualizada correctamente", "SUCCESS-UPDATE-DATASET-PROFILE": "Plantilla de descripción del dataset actualizada correctamente",
"MISSING-FIELDS": "Hay campos requeridos sin rellenar. Por favor, compruebe el formulario y rellene los campos obligatorios (Los campos sin rellenar se marcan en color rojo)" "MISSING-FIELDS": "There are some required fields left unfilled. Please check the DMP and make sure that all required questions are answered and URLs are provided with valid input. (Missing fields are marked in red color)" },
},
"UPLOAD": { "UPLOAD": {
"UPLOAD-XML": "Importar", "UPLOAD-XML": "Importar",
"UPLOAD-XML-FILE-TITLE": "Importar la plantilla de descripción del dataset", "UPLOAD-XML-FILE-TITLE": "Importar la plantilla de descripción del dataset",

View File

@ -3,7 +3,11 @@
"VALIDATION": { "VALIDATION": {
"REQUIRED": "Προαπαιτούμενο", "REQUIRED": "Προαπαιτούμενο",
"GRANT-START-AFTER-END": "Η ημερομηνία έναρξης της επιχορήγησης δεν μπορεί να είναι μεταγενέστερη της ημερομηνίας λήξης", "GRANT-START-AFTER-END": "Η ημερομηνία έναρξης της επιχορήγησης δεν μπορεί να είναι μεταγενέστερη της ημερομηνίας λήξης",
"PATTERN-_": "Ο χαρακτήρας \"_\" δεν υποστηρίζεται" "PATTERN-_": "Ο χαρακτήρας \"_\" δεν υποστηρίζεται",
"URL": {
"LABEL": "URL",
"MESSAGE": "Παρακαλώ εισάγεται ένα έγκυρο URL"
}
}, },
"DELETE-CONFIRMATION": { "DELETE-CONFIRMATION": {
"TITLE": "Προσοχή", "TITLE": "Προσοχή",
@ -721,7 +725,7 @@
"DATASET-NOT-FOUND": "Η Περιγραφή Συνόλου Δεδομένων δεν υπάρχει", "DATASET-NOT-FOUND": "Η Περιγραφή Συνόλου Δεδομένων δεν υπάρχει",
"DATASET-NOT-ALLOWED": "Δεν έχετε πρόσβαση σε αυτή την Περιγραφή Συνόλου Δεδομένων", "DATASET-NOT-ALLOWED": "Δεν έχετε πρόσβαση σε αυτή την Περιγραφή Συνόλου Δεδομένων",
"SUCCESS-UPDATE-DATASET-PROFILE": "Επιτυχία ενημέρωσης της Περιγραφής Συνόλου Δεδομένων", "SUCCESS-UPDATE-DATASET-PROFILE": "Επιτυχία ενημέρωσης της Περιγραφής Συνόλου Δεδομένων",
"MISSING-FIELDS": "Υπάρχουν ορισμένα υποχρεωτικά πεδία που δεν έχουν συμπληρωθεί. Ελέγξτε τη φόρμα και βεβαιωθείτε ότι έχουν συμπληρωθεί όλα τα απαιτούμενα πεδία. (Τα πεδία που λείπουν επισημαίνονται με κόκκινο χρώμα)" "MISSING-FIELDS": "Υπάρχουν ορισμένα υποχρεωτικά πεδία που δεν έχουν συμπληρωθεί. Ελέγξτε το DMP και βεβαιωθείτε ότι έχουν συμπληρωθεί όλα τα απαιτούμενα πεδία και τα URL είναι έγκυρα. (Τα πεδία που λείπουν επισημαίνονται με κόκκινο χρώμα)"
}, },
"UPLOAD": { "UPLOAD": {
"UPLOAD-XML": "Εισαγωγή", "UPLOAD-XML": "Εισαγωγή",

View File

@ -3,7 +3,11 @@
"VALIDATION": { "VALIDATION": {
"REQUIRED": "Obrigatório", "REQUIRED": "Obrigatório",
"GRANT-START-AFTER-END": "A data de início do financiamento não pode ser posterior à data de término", "GRANT-START-AFTER-END": "A data de início do financiamento não pode ser posterior à data de término",
"PATTERN-_": "O caracter \"_\" não é permitido" "PATTERN-_": "O caracter \"_\" não é permitido",
"URL": {
"LABEL": "URL",
"MESSAGE": "Please provide a valid URL"
}
}, },
"DELETE-CONFIRMATION": { "DELETE-CONFIRMATION": {
"TITLE": "Atenção", "TITLE": "Atenção",
@ -721,8 +725,7 @@
"DATASET-NOT-FOUND": "O Dataset não existe", "DATASET-NOT-FOUND": "O Dataset não existe",
"DATASET-NOT-ALLOWED": "Não tem acesso a este Dataset", "DATASET-NOT-ALLOWED": "Não tem acesso a este Dataset",
"SUCCESS-UPDATE-DATASET-PROFILE": "O Dataset foi atualizado com sucesso", "SUCCESS-UPDATE-DATASET-PROFILE": "O Dataset foi atualizado com sucesso",
"MISSING-FIELDS": "Alguns campos obrigatórios não foram preenchidos. Por favor, verifique o formulário e certifique-se de que todos os campos obrigatórios foram preenchidos. (Os campos ausentes são marcados em vermelho)" "MISSING-FIELDS": "There are some required fields left unfilled. Please check the DMP and make sure that all required questions are answered and URLs are provided with valid input. (Missing fields are marked in red color)" },
},
"UPLOAD": { "UPLOAD": {
"UPLOAD-XML": "Importar", "UPLOAD-XML": "Importar",
"UPLOAD-XML-FILE-TITLE": "Importar o Dataset", "UPLOAD-XML-FILE-TITLE": "Importar o Dataset",

View File

@ -3,7 +3,11 @@
"VALIDATION": { "VALIDATION": {
"REQUIRED": "Povinné", "REQUIRED": "Povinné",
"GRANT-START-AFTER-END": "Dátum začatia poskytovania grantu nesmie byť po dátume ukončenia", "GRANT-START-AFTER-END": "Dátum začatia poskytovania grantu nesmie byť po dátume ukončenia",
"PATTERN-_": "Znak \"_\" nie je povolený" "PATTERN-_": "Znak \"_\" nie je povolený",
"URL": {
"LABEL": "URL",
"MESSAGE": "Please provide a valid URL"
}
}, },
"DELETE-CONFIRMATION": { "DELETE-CONFIRMATION": {
"TITLE": "Upozornenie", "TITLE": "Upozornenie",
@ -721,7 +725,7 @@
"DATASET-NOT-FOUND": "Súbor dát neexistuje", "DATASET-NOT-FOUND": "Súbor dát neexistuje",
"DATASET-NOT-ALLOWED": "K tomuto súboru dát nemáte prístup", "DATASET-NOT-ALLOWED": "K tomuto súboru dát nemáte prístup",
"SUCCESS-UPDATE-DATASET-PROFILE": "Šablóna súboru dát bola úspešne aktualizovaná", "SUCCESS-UPDATE-DATASET-PROFILE": "Šablóna súboru dát bola úspešne aktualizovaná",
"MISSING-FIELDS": "There are some required fields left unfilled. Please check the form and make sure that all required fields are filled. (Missing fields are marked in red color)" "MISSING-FIELDS": "There are some required fields left unfilled. Please check the DMP and make sure that all required questions are answered and URLs are provided with valid input. (Missing fields are marked in red color.)"
}, },
"UPLOAD": { "UPLOAD": {
"UPLOAD-XML": "Importovať", "UPLOAD-XML": "Importovať",

View File

@ -3,7 +3,11 @@
"VALIDATION": { "VALIDATION": {
"REQUIRED": "Obavezno", "REQUIRED": "Obavezno",
"GRANT-START-AFTER-END": "Datum početka ne može biti kasniji od datuma završetka granta.", "GRANT-START-AFTER-END": "Datum početka ne može biti kasniji od datuma završetka granta.",
"PATTERN-_": "Karakter \"_\" nije dozvoljen" "PATTERN-_": "Karakter \"_\" nije dozvoljen",
"URL": {
"LABEL": "URL",
"MESSAGE": "Please provide a valid URL"
}
}, },
"DELETE-CONFIRMATION": { "DELETE-CONFIRMATION": {
"TITLE": "Oprez", "TITLE": "Oprez",
@ -721,7 +725,7 @@
"DATASET-NOT-FOUND": "Skup podataka ne postoji", "DATASET-NOT-FOUND": "Skup podataka ne postoji",
"DATASET-NOT-ALLOWED": "Nemate pristup ovom skupu podataka", "DATASET-NOT-ALLOWED": "Nemate pristup ovom skupu podataka",
"SUCCESS-UPDATE-DATASET-PROFILE": "Obrazac skupa podataka je ažuriran uspešno", "SUCCESS-UPDATE-DATASET-PROFILE": "Obrazac skupa podataka je ažuriran uspešno",
"MISSING-FIELDS": "There are some required fields left unfilled. Please check the form and make sure that all required fields are filled. (Missing fields are marked in red color)" "MISSING-FIELDS": "There are some required fields left unfilled. Please check the DMP and make sure that all required questions are answered and URLs are provided with valid input. (Missing fields are marked in red color.)"
}, },
"UPLOAD": { "UPLOAD": {
"UPLOAD-XML": "Uvezite", "UPLOAD-XML": "Uvezite",

View File

@ -3,7 +3,11 @@
"VALIDATION": { "VALIDATION": {
"REQUIRED": "Gerekli", "REQUIRED": "Gerekli",
"GRANT-START-AFTER-END": "Hibe başlangıç tarihi bitiş tarihinden sonra olamaz", "GRANT-START-AFTER-END": "Hibe başlangıç tarihi bitiş tarihinden sonra olamaz",
"PATTERN-_": "\"_\" Karakterine izin verilmiyor" "PATTERN-_": "\"_\" Karakterine izin verilmiyor",
"URL": {
"LABEL": "URL",
"MESSAGE": "Please provide a valid URL"
}
}, },
"DELETE-CONFIRMATION": { "DELETE-CONFIRMATION": {
"TITLE": "Uyarı", "TITLE": "Uyarı",
@ -721,7 +725,7 @@
"DATASET-NOT-FOUND": "Veri Seti mevcut değildir", "DATASET-NOT-FOUND": "Veri Seti mevcut değildir",
"DATASET-NOT-ALLOWED": "Bu Veri Setine erişiminiz yok", "DATASET-NOT-ALLOWED": "Bu Veri Setine erişiminiz yok",
"SUCCESS-UPDATE-DATASET-PROFILE": "Veri Seti Tanımı başarılı olarak güncellendi", "SUCCESS-UPDATE-DATASET-PROFILE": "Veri Seti Tanımı başarılı olarak güncellendi",
"MISSING-FIELDS": "There are some required fields left unfilled. Please check the form and make sure that all required fields are filled. (Missing fields are marked in red color)" "MISSING-FIELDS": "There are some required fields left unfilled. Please check the DMP and make sure that all required questions are answered and URLs are provided with valid input. (Missing fields are marked in red color.)"
}, },
"UPLOAD": { "UPLOAD": {
"UPLOAD-XML": "İçeri Aktar", "UPLOAD-XML": "İçeri Aktar",