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 enum ValidationType {
NONE((short) 0), REQUIRED((short) 1);
NONE((short) 0), REQUIRED((short) 1), URL((short) 2);
private short value;
private ValidationType(short value) {
@ -30,6 +30,8 @@ public class Field implements ViewStyleDefinition<eu.eudat.models.data.entities.
return NONE;
case 1:
return REQUIRED;
case 2:
return URL;
default:
return NONE;

View File

@ -1,4 +1,18 @@
import {ValidatorFn, Validators} from "@angular/forms";
export enum ValidationType {
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;
validations: Array<ValidationType>;
validationRequired;
}
validationURL;
}

View File

@ -5,11 +5,16 @@
<ng-content></ng-content>
<div class="col-auto">
<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">
{{'GENERAL.VALIDATION.REQUIRED' | translate}}
</mat-slide-toggle>
</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">
<mat-icon style="cursor: pointer;" (click)="addNewRule()" [matTooltip]="'DATASET-PROFILE-EDITOR.ACTIONS.FIELD.ADD-VISIBILITY-RULE' | translate">visibility</mat-icon>
</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 { DatasetProfileFieldViewStyle } from '@app/core/common/enum/dataset-profile-field-view-style';
import { ValidationType } from '@app/core/common/enum/validation-type';
import { DatasetProfileService } from '@app/core/services/dataset-profile/dataset-profile.service';
import { EnumUtils } from '@app/core/services/utilities/enum-utils.service';
import { RuleEditorModel } from '@app/ui/admin/dataset-profile/admin/rule-editor-model';
import { BaseComponent } from '@common/base/base.component';
import { Subscription } from 'rxjs';
import { ViewStyleType } from './view-style-enum';
import { DatasetProfileComboBoxType } from '@app/core/common/enum/dataset-profile-combo-box-type';
import { ErrorStateMatcher } from '@angular/material/core';
import { MatDialog } from '@angular/material/dialog';
import { MatSlideToggleChange } from '@angular/material/slide-toggle';
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 { 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 {DatasetProfileFieldViewStyle} from '@app/core/common/enum/dataset-profile-field-view-style';
import {ValidationType} from '@app/core/common/enum/validation-type';
import {DatasetProfileService} from '@app/core/services/dataset-profile/dataset-profile.service';
import {EnumUtils} from '@app/core/services/utilities/enum-utils.service';
import {RuleEditorModel} from '@app/ui/admin/dataset-profile/admin/rule-editor-model';
import {BaseComponent} from '@common/base/base.component';
import {Subscription} from 'rxjs';
import {ViewStyleType} from './view-style-enum';
import {DatasetProfileComboBoxType} from '@app/core/common/enum/dataset-profile-combo-box-type';
import {ErrorStateMatcher} from '@angular/material/core';
import {MatDialog} from '@angular/material/dialog';
import {MatSlideToggleChange} from '@angular/material/slide-toggle';
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 {FieldEditorModel} from '../../../admin/field-editor-model';
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({
selector: 'app-dataset-profile-editor-field-component',
@ -147,7 +168,9 @@ export class DatasetProfileEditorFieldComponent extends BaseComponent implements
this.viewType = this.viewTypeEnum.Validation;
break;
}
if(this.viewType !== this.viewTypeEnum.FreeText) {
this.setValidator(ValidationType.URL, false);
}
}
// this.showPreview = true;
@ -793,20 +816,24 @@ export class DatasetProfileEditorFieldComponent extends BaseComponent implements
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 validations: Array<ValidationType> = validationsControl.value;
if(event.checked){
if(!validations.includes(ValidationType.Required)){//IS ALREADY REQUIRED
// validationsControl.setValue(validations.filter(validator=> validator != ValidationType.Required));
// validationsControl.updateValueAndValidity();
validations.push(ValidationType.Required);
// validationsControl.setValue(validations);
if(add){
if(!validations.includes(validationType)){
validations.push(validationType);
validationsControl.updateValueAndValidity();
}
}else{
validationsControl.setValue(validations.filter(validator=> validator != ValidationType.Required));
} else{
validationsControl.setValue(validations.filter(validator=> validator != validationType));
validationsControl.updateValueAndValidity();
}
this.form.markAsDirty();//deactivate guard
@ -818,6 +845,12 @@ export class DatasetProfileEditorFieldComponent extends BaseComponent implements
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(){
this.delete.emit();

View File

@ -11,7 +11,8 @@
</h5>
<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">
<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>
<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': ''})">
<mat-icon>close</mat-icon>
</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>
<ng-container *ngSwitchCase="datasetProfileFieldViewStyleEnum.RichTextArea">
<rich-text-editor-component class="col-12"
@ -115,8 +116,8 @@
[wrapperClasses]="'full-width editor ' +
((form.get('validationRequired').value) ? 'required' : '')">
</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">
<mat-error *ngIf="form.get('value')['errors'] && form.get('value')['errors']['required']">{{'GENERAL.VALIDATION.REQUIRED' | translate}}</mat-error>
<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').hasError('required')">{{'GENERAL.VALIDATION.REQUIRED' | translate}}</mat-error>
</div>
</ng-container>

View File

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

View File

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

View File

@ -3,7 +3,11 @@
"VALIDATION": {
"REQUIRED": "Pflichtfeld",
"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": {
"TITLE": "Warnung",
@ -721,7 +725,7 @@
"DATASET-NOT-FOUND": "Datensatzbeschreibung ist nicht vorhanden",
"DATASET-NOT-ALLOWED": "Sie haben keinen Zugriff auf diese Datensatzbeschreibung",
"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-XML": "Importieren",

View File

@ -3,7 +3,11 @@
"VALIDATION": {
"REQUIRED": "Required",
"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": {
"TITLE": "Warning",
@ -721,7 +725,7 @@
"DATASET-NOT-FOUND": "Dataset does not exist",
"DATASET-NOT-ALLOWED": "You have no access to this Dataset",
"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-XML": "Import",

View File

@ -3,7 +3,11 @@
"VALIDATION": {
"REQUIRED": "Obligatorio",
"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": {
"TITLE": "Aviso",
@ -721,8 +725,7 @@
"DATASET-NOT-FOUND": "No existe la descripción del 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",
"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-XML": "Importar",
"UPLOAD-XML-FILE-TITLE": "Importar la plantilla de descripción del dataset",

View File

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

View File

@ -3,7 +3,11 @@
"VALIDATION": {
"REQUIRED": "Obrigatório",
"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": {
"TITLE": "Atenção",
@ -721,8 +725,7 @@
"DATASET-NOT-FOUND": "O Dataset não existe",
"DATASET-NOT-ALLOWED": "Não tem acesso a este Dataset",
"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-XML": "Importar",
"UPLOAD-XML-FILE-TITLE": "Importar o Dataset",

View File

@ -3,7 +3,11 @@
"VALIDATION": {
"REQUIRED": "Povinné",
"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": {
"TITLE": "Upozornenie",
@ -721,7 +725,7 @@
"DATASET-NOT-FOUND": "Súbor dát neexistuje",
"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á",
"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-XML": "Importovať",

View File

@ -3,7 +3,11 @@
"VALIDATION": {
"REQUIRED": "Obavezno",
"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": {
"TITLE": "Oprez",
@ -721,7 +725,7 @@
"DATASET-NOT-FOUND": "Skup podataka ne postoji",
"DATASET-NOT-ALLOWED": "Nemate pristup ovom skupu podataka",
"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-XML": "Uvezite",

View File

@ -3,7 +3,11 @@
"VALIDATION": {
"REQUIRED": "Gerekli",
"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": {
"TITLE": "Uyarı",
@ -721,7 +725,7 @@
"DATASET-NOT-FOUND": "Veri Seti mevcut değildir",
"DATASET-NOT-ALLOWED": "Bu Veri Setine erişiminiz yok",
"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-XML": "İçeri Aktar",