Merge remote-tracking branch 'origin/Development' into Development

This commit is contained in:
George Kalampokis 2021-06-22 18:30:08 +03:00
commit 25286603c8
28 changed files with 651 additions and 142 deletions

View File

@ -9,6 +9,7 @@ import { DmpProfileExternalAutocompleteFieldEditorComponent } from './editor/ext
import { DialodConfirmationUploadDmpProfiles } from './listing/criteria/dialog-confirmation-upload-profile/dialog-confirmation-upload-profiles.component';
import { DmpProfileCriteriaComponent } from './listing/criteria/dmp-profile-criteria.component';
import { DmpProfileListingComponent } from './listing/dmp-profile-listing.component';
import { NgxDropzoneModule } from "ngx-dropzone";
@NgModule({
imports: [
@ -16,7 +17,8 @@ import { DmpProfileListingComponent } from './listing/dmp-profile-listing.compon
CommonFormsModule,
UrlListingModule,
ConfirmationDialogModule,
DmpProfileRoutingModule
DmpProfileRoutingModule,
NgxDropzoneModule
],
declarations: [
DmpProfileEditorComponent,

View File

@ -1,9 +1,28 @@
<div class="main-content">
<div class="container-fluid dmp-profile-editor">
<div class="row align-items-center mb-4" *ngIf="formGroup">
<div class="col-auto">
<h3 *ngIf="isNew">{{'DMP-PROFILE-EDITOR.TITLE.NEW' | translate}}</h3>
<h3 *ngIf="!isNew">{{formGroup.get('label').value}}</h3>
</div>
<div class="col"></div>
<div class="col-auto" *ngIf="!isNew">
<button mat-button class="action-btn" type="button" (click)="delete()">
<mat-icon>delete</mat-icon>
{{'DMP-PROFILE-EDITOR.ACTIONS.DELETE' | translate}}
</button>
</div>
<div class="col-auto" *ngIf="formGroup.get('status').value==1">
<button mat-button class="finalize-btn" (click)="downloadXML()"
type="button">{{'DMP-PROFILE-EDITOR.ACTIONS.DOWNLOAD-XML' | translate }}</button>
</div>
<div *ngIf="formGroup.get('status').value!=1" class="col-auto">
<button mat-button class="finalize-btn" (click)="finalize()"
[disabled]="!formGroup.valid" type="button">{{'DMP-PROFILE-EDITOR.ACTIONS.FINALIZE' | translate }}</button>
</div>
</div>
<form *ngIf="formGroup" (ngSubmit)="formSubmit()" [formGroup]="formGroup">
<h3 *ngIf="isNew">{{'DMP-PROFILE-EDITOR.TITLE.NEW' | translate}}</h3>
<h3 *ngIf="!isNew">{{formGroup.get('label').value}}</h3>
<mat-card>
<mat-card style="padding: 2em;">
<!-- <mat-card-header>
<mat-card-title *ngIf="isNew">
<h4>{{'DMP-PROFILE-EDITOR.TITLE.NEW' | translate}}</h4>
@ -13,8 +32,8 @@
</mat-card-title>
</mat-card-header> -->
<mat-card-content>
<div class="row pl-5">
<mat-form-field class="col-10">
<div class="row" style="gap:1em">
<mat-form-field class="col-lg-6" appearance="legacy">
<input matInput placeholder="{{'DMP-PROFILE-EDITOR.FIELDS.LABEL' | translate}}" type="text" name="label" formControlName="label"
required>
<mat-error *ngIf="formGroup.get('label').hasError('backendError')">
@ -101,12 +120,12 @@
</div>
</div>
</div>
<div class="row mt-4 pl-5 pr-4">
<div class="row mt-4">
<div class="col-auto">
<button mat-raised-button color="primary" (click)="cancel()" type="button">{{'DMP-PROFILE-EDITOR.ACTIONS.CANCEL' | translate}}</button>
<button mat-button class="action-btn" (click)="cancel()" type="button">{{'DMP-PROFILE-EDITOR.ACTIONS.CANCEL' | translate}}</button>
</div>
<div class="col"></div>
<div class="col-auto" *ngIf="!isNew">
<!-- <div class="col-auto" *ngIf="!isNew">
<button mat-raised-button color="primary" type="button" (click)="delete()">{{'DMP-PROFILE-EDITOR.ACTIONS.DELETE' | translate}}</button>
</div>
<button mat-raised-button *ngIf="formGroup.get('status').value!=1" class="col-auto" color="primary" (click)="finalize()"
@ -117,6 +136,12 @@
<button mat-raised-button color="primary" type="submit" [disabled]="!formGroup.valid">
{{'DMP-PROFILE-EDITOR.ACTIONS.SAVE' | translate}}
</button>
</div> -->
<div class="col-auto" *ngIf="!viewOnly">
<button mat-button class="action-btn" type="submit" [disabled]="!formGroup.valid">
{{'DMP-PROFILE-EDITOR.ACTIONS.SAVE' | translate}}
</button>
</div>
</div>
</mat-card-content>

View File

@ -1,5 +1,7 @@
.dmp-profile-editor {
margin-top: 1.3rem;
margin-left: 1em;
margin-right: 3em;
.centered-row-item {
align-items: center;
@ -25,3 +27,37 @@
::ng-deep .mat-checkbox-disabled.mat-checkbox-checked .mat-checkbox-background, .mat-checkbox-disabled.mat-checkbox-indeterminate .mat-checkbox-background {
background-color: #b0b0b0;
}
.finalize-btn {
border-radius: 30px;
border: 1px solid #129D99;
background: transparent;
padding-left: 2em;
padding-right: 2em;
box-shadow: 0px 3px 6px #1E202029;
color: #129D99;
&:disabled{
background-color: #CBCBCB;
color: #FFF;
border: 0px;
}
}
.action-btn {
border-radius: 30px;
background-color: #f7dd72;
border: 1px solid transparent;
padding-left: 2em;
padding-right: 2em;
box-shadow: 0px 3px 6px #1E202029;
transition-property: background-color, color;
transition-duration: 200ms;
transition-delay: 50ms;
transition-timing-function: ease-in-out;
&:disabled{
background-color: #CBCBCB;
color: #FFF;
border: 0px;
}
}

View File

@ -23,6 +23,8 @@ import { map, takeUntil } from 'rxjs/operators';
import { ConfigurationService } from '@app/core/services/configuration/configuration.service';
import { HttpClient } from '@angular/common/http';
import { MatomoService } from '@app/core/services/matomo/matomo-service';
import { MatDialog } from '@angular/material';
import { ConfirmationDialogComponent } from '@common/modules/confirmation-dialog/confirmation-dialog.component';
@Component({
@ -50,7 +52,8 @@ export class DmpProfileEditorComponent extends BaseComponent implements AfterVie
private formService: FormService,
private configurationService: ConfigurationService,
private httpClient: HttpClient,
private matomoService: MatomoService
private matomoService: MatomoService,
private dialog: MatDialog
) {
super();
this.host = configurationService.server;
@ -177,13 +180,27 @@ export class DmpProfileEditorComponent extends BaseComponent implements AfterVie
}
delete() {
this.formGroup.get('status').setValue(DmpProfileStatus.Deleted);
this.dmpProfileService.createDmp(this.formGroup.value)
.pipe(takeUntil(this._destroyed))
.subscribe(
complete => this.onCallbackSuccess(),
error => this.onCallbackError(error)
);
this.dialog.open(ConfirmationDialogComponent,{data:{
isDeleteConfirmation: true,
confirmButton: this.language.instant('DMP-PROFILE-EDITOR.CONFIRM-DELETE-DIALOG.CONFIRM-BUTTON'),
cancelButton: this.language.instant("DMP-PROFILE-EDITOR.CONFIRM-DELETE-DIALOG.CANCEL-BUTTON"),
message: this.language.instant("DMP-PROFILE-EDITOR.CONFIRM-DELETE-DIALOG.MESSAGE")
}})
.afterClosed()
.subscribe(
confirmed =>{
if(confirmed){
this.formGroup.get('status').setValue(DmpProfileStatus.Deleted);
this.dmpProfileService.createDmp(this.formGroup.value)
.pipe(takeUntil(this._destroyed))
.subscribe(
complete => this.onCallbackSuccess(),
error => this.onCallbackError(error)
);
}
}
)
}
finalize() {

View File

@ -4,10 +4,26 @@
<h4>{{ data.message }}</h4>
</div>
<div class="col-auto ml-auto">
<input class="hidden" type="file" #imgFileInput (change)="selectXML($event)" accept="text/xml" />
<button class="col-auto attach-file" (click)="imgFileInput.click()" type="button">
<mat-icon color="{{btnColore}}">attach_file</mat-icon>
<mat-icon class="close-btn" (click)="cancel()">close</mat-icon>
</div>
</div>
<div class="row">
<div class="col-12">
<ngx-dropzone class="drop-file" (change)="selectXML($event)" [accept]="'text/xml'" [multiple]="false">
<ngx-dropzone-preview class="file-preview" [removable]="true" *ngIf="hasProfile()" (removed)="onRemove()">
<ngx-dropzone-label class="file-label">{{ selectedFileName }}</ngx-dropzone-label>
</ngx-dropzone-preview>
</ngx-dropzone>
</div>
</div>
<div class="row">
<div class="col-12 d-flex justify-content-center attach-btn">
<button mat-button type="button" class="col-auto attach-file" (click)="imgFileInput.click()">
<mat-icon class="mr-2">input</mat-icon>
<span *ngIf="!hasProfile()">{{'GENERAL.START-NEW-DMP-DIALOG.UPLOAD-FILE' | translate}}</span>
<span *ngIf="hasProfile()">{{'GENERAL.START-NEW-DMP-DIALOG.REPLACE-FILE' | translate}}</span>
</button>
<input class="hidden" type="file" #imgFileInput (change)="selectXML($event)" accept="text/xml" />
</div>
</div>
<div class="row">
@ -15,11 +31,11 @@
<input matInput placeholder="{{'DMP-PROFILE-LISTING.UPLOAD.UPLOAD-XML-NAME'| translate}}" name="datasetProfileName" [(ngModel)]="data.name">
</mat-form-field>
<div class="col-auto">
<button mat-raised-button type="button" (click)="cancel()">{{ data.cancelButton }}</button>
<button mat-button type="button" class="cancel-btn" (click)="cancel()">{{ data.cancelButton }}</button>
</div>
<div class="col"></div>
<div class="col-auto">
<button mat-raised-button color="primary" type="button" (click)="confirm()" [disabled]="!hasProfile()">{{ data.confirmButton }}</button>
<button mat-button color="primary" class="next-btn" type="button" (click)="confirm()" [disabled]="!hasProfile()">{{ data.confirmButton }}</button>
</div>
</div>
</div>

View File

@ -1,3 +1,102 @@
.hidden {
display: none;
}
.cancel-btn {
background: #ffffff 0% 0% no-repeat padding-box;
border: 1px solid #b5b5b5;
border-radius: 30px;
width: 101px;
height: 43px;
color: #212121;
font-weight: 500;
}
.next-btn {
background: #ffffff 0% 0% no-repeat padding-box;
border: 1px solid #129d99;
border-radius: 30px;
opacity: 1;
width: 101px;
height: 43px;
color: #129d99;
font-weight: 500;
}
.next-btn[disabled] {
width: 100px;
height: 43px;
background: #ffffff 0% 0% no-repeat padding-box;
border: 1px solid #b5b5b5;
border-radius: 30px;
opacity: 1;
}
.next-btn:not([disabled]):hover {
background-color: #129d99;
color: #ffffff;
}
//ngx dropzone
.drop-file {
background-color: #fafafa;
border: 1px dashed #d1d1d1;
border-radius: 4px;
max-width: 480px;
height: 98px;
margin-top: 0.5rem;
}
.file-preview {
height: auto !important;
width: auto !important;
max-width: 500px !important;
min-height: 1rem !important;
background-color: #e0e0e0 !important;
background-image: none !important;
color: rgba(0, 0, 0, 0.87) !important;
font-weight: 500 !important;
border-radius: 24px !important;
line-height: 1.25 !important;
}
.file-label {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
font-size: 14px !important;
}
::ng-deep ngx-dropzone-remove-badge {
opacity: 1 !important;
margin-left: .5rem !important;
position: initial !important;
}
//attach file
.attach-btn {
top: -20px;
}
.attach-file {
width: 156px;
height: 44px;
color: #ffffff;
background: #129d99 0% 0% no-repeat padding-box;
box-shadow: 0px 3px 6px #1e202029;
border-radius: 30px;
}
.attach-file:hover {
background-color: #ffffff;
border: 1px solid #129d99;
color: #129d99;
}
.close-btn:hover{
cursor: pointer;
}

View File

@ -10,9 +10,9 @@ import { Inject, Component } from '@angular/core';
export class DialodConfirmationUploadDmpProfiles {
sizeError = false;
btnColore:String="primary";
selectFile =false;
maxFileSize: number = 1048576;
selectedFileName: string;
constructor(
public dialogRef: MatDialogRef<DialodConfirmationUploadDmpProfiles>,
@ -21,16 +21,20 @@ export class DialodConfirmationUploadDmpProfiles {
selectXML(event) {
const file: FileList = event.target.files;
let file: FileList = null;
if(event.target && event.target.files){
file = event.target.files;
}else if(event.addedFiles && event.addedFiles.length){
file = event.addedFiles;
}
if(!file) return;//no select closed with cancel . no file selected
const size: number = file[0].size; // Get file size.
this.sizeError = size > this.maxFileSize; // Checks if file size is valid.
const formdata: FormData = new FormData();
if (!this.sizeError) {
this.data.file = file;
this.selectFile=true;
this.btnColore="primary";
}else{
this.btnColore="warn";
this.selectedFileName = file[0].name;
}
this.data.name = file[0].name;
}
@ -49,5 +53,10 @@ export class DialodConfirmationUploadDmpProfiles {
hasProfile():boolean{
return (this.selectFile && !this.sizeError);
}
//remove selected file
onRemove(){
this.data.name="";
this.selectFile = false;
this.selectedFileName = "";
}
}

View File

@ -1,18 +1,11 @@
<div class="dmp-criteria">
<mat-card class="mat-card">
<div class="row">
<mat-form-field class="col-md-6">
<input matInput placeholder=" {{'CRITERIA.DMP.LIKE'| translate}}" name="grantCriteriaLike"
[(ngModel)]="criteria.like" (ngModelChange)="controlModified()">
</mat-form-field>
<div class="col"></div>
<div class="row justify-content-end">
<div class="col-auto">
<!-- imgFileInput.click() && -->
<button mat-raised-button class="col-auto" color="primary" (click)="openDialog()"
type="button">{{ 'DMP-PROFILE-LISTING.UPLOAD.UPLOAD-XML' | translate }}</button>
<mat-form-field class="search-form-field">
<input matInput placeholder=" {{'CRITERIA.DMP.LIKE'| translate}}" name="grantCriteriaLike"
[(ngModel)]="criteria.like" (ngModelChange)="controlModified()">
<mat-icon matPrefix>search</mat-icon>
</mat-form-field>
</div>
</div>
</mat-card>
</div>

View File

@ -0,0 +1,13 @@
:host ::ng-deep .search-form-field .mat-form-field-wrapper {
background-color: white !important;
padding-bottom: 0 !important;
}
:host ::ng-deep .mat-form-field-appearance-outline .mat-form-field-infix {
padding: 0.3rem 0rem 0.6rem 0rem !important;
}
.dmp-criteria{
margin-top: 3em;
margin-bottom: 0em;
}

View File

@ -53,24 +53,24 @@ export class DmpProfileCriteriaComponent extends BaseCriteriaComponent implement
}
openDialog(): void {
const dialogRef = this.dialog.open(DialodConfirmationUploadDmpProfiles, {
restoreFocus: false,
data: {
message: this.language.instant('DMP-PROFILE-LISTING.UPLOAD.UPLOAD-XML-FILE-TITLE'),
confirmButton: this.language.instant('DMP-PROFILE-LISTING.UPLOAD.UPLOAD-XML'),
cancelButton: this.language.instant('DMP-PROFILE-LISTING.UPLOAD.UPLOAD-XML-FILE-CANCEL'),
name: '',
file: FileList,
sucsess: false
}
});
dialogRef.afterClosed().pipe(takeUntil(this._destroyed)).subscribe(data => {
if (data && data.sucsess && data.name != null && data.file != null) {
this.dmpProfileService.uploadFile(data.file, data.name)
.pipe(takeUntil(this._destroyed))
.subscribe();
}
});
}
// openDialog(): void {
// const dialogRef = this.dialog.open(DialodConfirmationUploadDmpProfiles, {
// restoreFocus: false,
// data: {
// message: this.language.instant('DMP-PROFILE-LISTING.UPLOAD.UPLOAD-XML-FILE-TITLE'),
// confirmButton: this.language.instant('DMP-PROFILE-LISTING.UPLOAD.UPLOAD-XML'),
// cancelButton: this.language.instant('DMP-PROFILE-LISTING.UPLOAD.UPLOAD-XML-FILE-CANCEL'),
// name: '',
// file: FileList,
// sucsess: false
// }
// });
// dialogRef.afterClosed().pipe(takeUntil(this._destroyed)).subscribe(data => {
// if (data && data.sucsess && data.name != null && data.file != null) {
// this.dmpProfileService.uploadFile(data.file, data.name)
// .pipe(takeUntil(this._destroyed))
// .subscribe();
// }
// });
// }
}

View File

@ -1,9 +1,26 @@
<div class="main-content">
<div class="container-fluid dmp-profile-listing">
<h3>{{titlePrefix}} {{'DMP-PROFILE-LISTING.TITLE' | translate}}</h3>
<div class="row align-items-center">
<div class="col-auto">
<h3>{{titlePrefix}} {{'DMP-PROFILE-LISTING.TITLE' | translate}}</h3>
</div>
<div class="col"></div>
<div class="col-auto">
<button mat-raised-button class="import-btn" (click)="openDialog()">
<span class="button-text">
{{'DMP-PROFILE-LISTING.UPLOAD.UPLOAD-XML' | translate}}
</span>
</button>
<button mat-raised-button class="create-btn ml-md-3" [routerLink]="['/dmp-profiles/new'] ">
<span class="button-text">
{{'DMP-PROFILE-LISTING.CREATE-DMP-TEMPLATE' | translate}}
</span>
</button>
</div>
</div>
<app-dmp-profile-criteria-component></app-dmp-profile-criteria-component>
<mat-card class="row mat-card">
<div class="mat-elevation-z6">
<mat-table [dataSource]="dataSource" matSort (matSortChange)="refresh()">
<!-- Column Definition: Name -->
@ -17,7 +34,11 @@
<ng-container cdkColumnDef="status">
<mat-header-cell *matHeaderCellDef mat-sort-header="status">
{{'DMP-PROFILE-LISTING.COLUMNS.STATUS' | translate}}</mat-header-cell>
<mat-cell *matCellDef="let row">{{row.status}}</mat-cell>
<mat-cell *matCellDef="let row">
<div [ngClass]="['status-chip', getStatusClass(row.status)]">
{{parseStatus(row.status) | translate}}
</div>
</mat-cell>
</ng-container>
<!-- Column Definition: Created -->
@ -36,12 +57,6 @@
</mat-table>
<mat-paginator #paginator [length]="dataSource?.totalCount" [pageSizeOptions]="[10, 25, 100]">
</mat-paginator>
</mat-card>
<div class="row justify-content-end pr-2">
<button mat-fab class="mat-fab-bottom-right" color="primary" [routerLink]="['/dmp-profiles/new'] ">
<mat-icon class="mat-24">add</mat-icon>
</button>
</div>
</div>
</div>

View File

@ -1,65 +1,77 @@
.mat-table {
margin: 24px;
margin-top: 47px;
border-radius: 4px;
}
.dmp-profile-listing {
margin-top: 1.3rem;
margin-left: 1rem;
margin-right: 2rem;
.mat-header-row{
background: #f3f5f8;
}
.mat-card {
margin: 16px 0;
padding: 0px;
}
.mat-row {
cursor: pointer;
min-height: 4.5em;
}
.mat-card {
margin: 1em 0;
}
mat-row:hover {
background-color: lightgray;
background-color: #eef5f6;
}
mat-row:nth-child(odd) {
background-color: #0c748914;
// background-color: #eef0fb;
}
.mat-fab-bottom-right {
// top: auto !important;
// right: 20px !important;
// bottom: 10px !important;
// left: auto !important;
// position: fixed !important;
float: right;
z-index: 5;
}
}
// PAGINATOR
:host ::ng-deep .mat-paginator-container {
flex-direction: row-reverse !important;
justify-content: space-between !important;
background-color: #f6f6f6;
height: 30px;
min-height: 30px !important;
align-items: center;
}
.create-btn {
border-radius: 30px;
background-color: #f7dd72;
padding-left: 2em;
padding-right: 2em;
// color: #000;
.button-text{
display: inline-block;
}
}
:host ::ng-deep .mat-paginator-page-size {
height: 43px;
.import-btn {
background: #ffffff 0% 0% no-repeat padding-box;
border-radius: 30px;
// color: #129d99;
// border: 1px solid #129d99;
padding-left: 2em;
padding-right: 2em;
color: #000;
border: 1px solid #000;
}
:host ::ng-deep .mat-paginator-range-label {
margin: 15px 32px 0 24px !important;
.status-chip{
border-radius: 20px;
padding-left: 1em;
padding-right: 1em;
padding-top: 0.2em;
font-size: .8em;
}
:host ::ng-deep .mat-paginator-range-actions {
width: 55% !important;
min-height: 43px !important;
justify-content: space-between;
.status-chip-finalized{
color: #568b5a;
background: #9dd1a1 0% 0% no-repeat padding-box;
}
:host ::ng-deep .mat-paginator-navigation-previous {
margin-left: auto !important;
}
:host ::ng-deep .mat-icon-button {
height: 30px !important;
font-size: 12px !important;
}
.status-chip-draft{
color: #00c4ff;
background: #d3f5ff 0% 0% no-repeat padding-box;
}

View File

@ -2,6 +2,7 @@
import { DataSource } from '@angular/cdk/table';
import { HttpClient } from '@angular/common/http';
import { Component, OnInit, ViewChild } from '@angular/core';
import { MatDialog } from '@angular/material';
import { MatPaginator, PageEvent } from '@angular/material/paginator';
import { MatSnackBar } from '@angular/material/snack-bar';
import { MatSort } from '@angular/material/sort';
@ -11,12 +12,15 @@ import { DmpProfileListing } from '@app/core/model/dmp-profile/dmp-profile-listi
import { DmpProfileCriteria } from '@app/core/query/dmp/dmp-profile-criteria';
import { DmpProfileService } from '@app/core/services/dmp/dmp-profile.service';
import { MatomoService } from '@app/core/services/matomo/matomo-service';
import { UiNotificationService } from '@app/core/services/notification/ui-notification-service';
import { DmpProfileCriteriaComponent } from '@app/ui/admin/dmp-profile/listing/criteria/dmp-profile-criteria.component';
import { BreadcrumbItem } from '@app/ui/misc/breadcrumb/definition/breadcrumb-item';
import { BaseComponent } from '@common/base/base.component';
import { SnackBarNotificationLevel } from '@common/modules/notification/ui-notification-service';
import { TranslateService } from '@ngx-translate/core';
import { merge as observableMerge, Observable, of as observableOf } from 'rxjs';
import { map, startWith, switchMap, takeUntil } from 'rxjs/operators';
import { DialodConfirmationUploadDmpProfiles } from './criteria/dialog-confirmation-upload-profile/dialog-confirmation-upload-profiles.component';
@Component({
@ -38,8 +42,8 @@ export class DmpProfileListingComponent extends BaseComponent implements OnInit
breadCrumbs: Observable<BreadcrumbItem[]>;
statuses = [
{ value: '0', viewValue: 'Active' },
{ value: '1', viewValue: 'Inactive' }
{ value: '0', viewValue: 'DMP-PROFILE-LISTING.STATUS.DRAFT' },// active
{ value: '1', viewValue: 'DMP-PROFILE-LISTING.STATUS.FINALIZED' }// inactive
];
constructor(
@ -49,7 +53,9 @@ export class DmpProfileListingComponent extends BaseComponent implements OnInit
public route: ActivatedRoute,
public dmpProfileService: DmpProfileService,
private httpClient: HttpClient,
private matomoService: MatomoService
private matomoService: MatomoService,
private dialog: MatDialog,
private uiNotificationService: UiNotificationService,
) {
super();
}
@ -88,6 +94,52 @@ export class DmpProfileListingComponent extends BaseComponent implements OnInit
// debugger;
// this.datasetService.makeDatasetPublic(id).pipe(takeUntil(this._destroyed)).subscribe();
// }
parseStatus(value: number): string{
const stringVal = value.toString()
try{
return this.statuses.find(status => status.value === stringVal).viewValue;
}catch{
return stringVal;
}
}
openDialog(): void {
const dialogRef = this.dialog.open(DialodConfirmationUploadDmpProfiles, {
restoreFocus: false,
data: {
message: this.languageService.instant('DMP-PROFILE-LISTING.UPLOAD.UPLOAD-XML-FILE-TITLE'),
confirmButton: this.languageService.instant('DMP-PROFILE-LISTING.UPLOAD.UPLOAD-XML'),
cancelButton: this.languageService.instant('DMP-PROFILE-LISTING.UPLOAD.UPLOAD-XML-FILE-CANCEL'),
name: '',
file: FileList,
sucsess: false
}
});
dialogRef.afterClosed().pipe(takeUntil(this._destroyed)).subscribe(data => {
if (data && data.sucsess && data.name != null && data.file != null) {
this.dmpProfileService.uploadFile(data.file, data.name)
.pipe(takeUntil(this._destroyed))
.subscribe(_=>{
this.uiNotificationService.snackBarNotification(this.languageService.instant('DMP-PROFILE-LISTING.MESSAGES.TEMPLATE-UPLOAD-SUCCESS'), SnackBarNotificationLevel.Success);
this.refresh();
},
error=>{
this.uiNotificationService.snackBarNotification(error.message, SnackBarNotificationLevel.Error);
});
}
});
}
getStatusClass(status: number):string{
if(status === 1){//finalized
return 'status-chip-finalized'
}
if(status === 0){
return 'status-chip-draft';
}
return '';
}
}
export class DatasetDataSource extends DataSource<DmpProfileListing> {

View File

@ -26,16 +26,16 @@
</div>
</div>
</div>
<div class="row" *ngIf="!viewOnly">
<div class="col-auto d-flex align-items-center p-0">
<div class="row">
<div class="col-auto d-flex align-items-center p-0" *ngIf="!viewOnly">
<button *ngIf="isDirty()" type="button" mat-raised-button class="dataset-discard-btn" (click)="discardChanges()">
{{'DMP-EDITOR.ACTIONS.DISCARD' | translate}}
</button>
</div>
<div class="col-auto d-flex align-items-center">
<button *ngIf="!lockStatus" mat-raised-button class="dataset-save-btn mr-2" (click)="save()" type="button">{{ 'DATASET-WIZARD.ACTIONS.SAVE' | translate }}</button>
<button *ngIf="!lockStatus" mat-raised-button class="dataset-save-btn mr-2" (click)="save(saveAnd.close)" type="button">{{ 'DATASET-WIZARD.ACTIONS.SAVE-AND-CLOSE' | translate }}</button>
<button *ngIf="!lockStatus" mat-raised-button class="dataset-save-btn mr-2" (click)="save(saveAnd.addNew)">{{ 'DATASET-WIZARD.ACTIONS.SAVE-AND-ADD' | translate }}</button>
<button *ngIf="!lockStatus && !viewOnly" mat-raised-button class="dataset-save-btn mr-2" (click)="save()" type="button">{{ 'DATASET-WIZARD.ACTIONS.SAVE' | translate }}</button>
<button *ngIf="!lockStatus && !viewOnly" mat-raised-button class="dataset-save-btn mr-2" (click)="save(saveAnd.close)" type="button">{{ 'DATASET-WIZARD.ACTIONS.SAVE-AND-CLOSE' | translate }}</button>
<button *ngIf="!lockStatus && !viewOnly" mat-raised-button class="dataset-save-btn mr-2" (click)="save(saveAnd.addNew)">{{ 'DATASET-WIZARD.ACTIONS.SAVE-AND-ADD' | translate }}</button>
<button *ngIf="lockStatus" mat-raised-button disabled class="dataset-save-btn cursor-default" type="button">{{ 'DMP-OVERVIEW.LOCKED' | translate}}</button>
<!-- <button *ngIf="!lockStatus" mat-raised-button class="dataset-save-btn mr-2" (click)="touchForm()" type="button">{{ 'DATASET-WIZARD.ACTIONS.VALIDATE' | translate }}</button> -->
</div>

View File

@ -31,7 +31,7 @@ import { ValidationErrorModel } from '@common/forms/validation/error-model/valid
import { ConfirmationDialogComponent } from '@common/modules/confirmation-dialog/confirmation-dialog.component';
import { TranslateService } from '@ngx-translate/core';
import * as FileSaver from 'file-saver';
import { Observable, of as observableOf, interval, Subscription } from 'rxjs';
import { Observable, of as observableOf, interval} from 'rxjs';
import { catchError, debounceTime, map, takeUntil } from 'rxjs/operators';
import { LockService } from '@app/core/services/lock/lock.service';
import { Location } from '@angular/common';
@ -39,14 +39,13 @@ import { LockModel } from '@app/core/model/lock/lock.model';
import { Guid } from '@common/types/guid';
import { isNullOrUndefined } from 'util';
import { AuthService } from '@app/core/services/auth/auth.service';
import { environment } from 'environments/environment';
import { ConfigurationService } from '@app/core/services/configuration/configuration.service';
import { SaveType } from '@app/core/common/enum/save-type';
import { DatasetWizardModel } from '@app/core/model/dataset/dataset-wizard';
import { MatomoService } from '@app/core/services/matomo/matomo-service';
import { HttpClient } from '@angular/common/http';
import { ToCEntry, ToCEntryType } from '@app/ui/misc/dataset-description-form/dataset-description.component';
import { VisibilityRulesService } from '@app/ui/misc/dataset-description-form/visibility-rules/visibility-rules.service';
import { PopupNotificationDialogComponent } from '@app/library/notification/popup/popup-notification.component';
@Component({
selector: 'app-dataset-wizard-component',
@ -193,6 +192,13 @@ export class DatasetWizardComponent extends BaseComponent implements OnInit, IBr
// if (this.viewOnly) { this.formGroup.disable(); } // For future use, to make Dataset edit like DMP.
this.loadDatasetProfiles();
this.registerFormListeners();
if(lockStatus){
this.dialog.open(PopupNotificationDialogComponent,{data:{
title:this.language.instant('DATASET-WIZARD.LOCKED.TITLE'),
message:this.language.instant('DATASET-WIZARD.LOCKED.MESSAGE')
}, maxWidth:'30em'});
}
// this.availableProfiles = this.datasetWizardModel.dmp.profiles;
})
},

View File

@ -33,6 +33,7 @@ import { DmpStatus } from '@app/core/common/enum/dmp-status';
import { DmpOverviewModel } from '@app/core/model/dmp/dmp-overview';
import { MatomoService } from '@app/core/services/matomo/matomo-service';
import { HttpClient } from '@angular/common/http';
import { PopupNotificationDialogComponent } from '@app/library/notification/popup/popup-notification.component';
@Component({
@ -139,7 +140,15 @@ export class DatasetOverviewComponent extends BaseComponent implements OnInit {
checkLockStatus(id: string) {
this.lockService.checkLockStatus(id).pipe(takeUntil(this._destroyed))
.subscribe(lockStatus => this.lockStatus = lockStatus);
.subscribe(lockStatus => {
this.lockStatus = lockStatus
if(lockStatus){
this.dialog.open(PopupNotificationDialogComponent,{data:{
title:this.language.instant('DATASET-OVERVIEW.LOCKED.TITLE'),
message:this.language.instant('DATASET-OVERVIEW.LOCKED.MESSAGE')
}, maxWidth:'30em'});
}
});
}
onFetchingDeletedCallbackError(redirectRoot: string) {

View File

@ -1,11 +1,11 @@
import { Component, OnInit, SimpleChanges } from '@angular/core';
import { FormGroup, AbstractControl, FormControl, FormArray, FormBuilder } from '@angular/forms';
import { Component, OnInit} from '@angular/core';
import { FormGroup, AbstractControl, FormControl, FormArray} from '@angular/forms';
import { MatDialog } from '@angular/material/dialog';
import { ActivatedRoute, Params, Router } from '@angular/router';
import { DmpStatus } from '@app/core/common/enum/dmp-status';
import { DataTableRequest } from '@app/core/model/data-table/data-table-request';
import { DmpProfileDefinition, DmpProfile } from '@app/core/model/dmp-profile/dmp-profile';
import { DmpProfileDefinition } from '@app/core/model/dmp-profile/dmp-profile';
import { DmpProfileListing } from '@app/core/model/dmp-profile/dmp-profile-listing';
import { DmpModel } from '@app/core/model/dmp/dmp';
import { UserModel } from '@app/core/model/user/user';
@ -33,7 +33,7 @@ import { ValidationErrorModel } from '@common/forms/validation/error-model/valid
import { TranslateService } from '@ngx-translate/core';
import * as FileSaver from 'file-saver';
import { Observable, of as observableOf, interval } from 'rxjs';
import { catchError, delay, map, takeUntil } from 'rxjs/operators';
import { map, takeUntil } from 'rxjs/operators';
import { Principal } from "@app/core/model/auth/principal";
import { Role } from "@app/core/common/enum/role";
import { LockService } from '@app/core/services/lock/lock.service';
@ -42,13 +42,7 @@ import { Guid } from '@common/types/guid';
import { ConfigurationService } from '@app/core/services/configuration/configuration.service';
import { ExtraPropertiesFormModel } from './general-tab/extra-properties-form.model';
import { DatasetWizardEditorModel } from '@app/ui/dataset/dataset-wizard/dataset-wizard-editor.model';
import { SingleAutoCompleteConfiguration } from '@app/library/auto-complete/single/single-auto-complete-configuration';
import { DmpListingModel } from '@app/core/model/dmp/dmp-listing';
import { DmpCriteria } from '@app/core/query/dmp/dmp-criteria';
import { DatasetDescriptionFormEditorModel } from '@app/ui/misc/dataset-description-form/dataset-description-form.model';
import { DatasetWizardService } from '@app/core/services/dataset-wizard/dataset-wizard.service';
import { CloneDialogComponent } from '../clone/clone-dialog/clone-dialog.component';
import { DatasetWizardModel } from '@app/core/model/dataset/dataset-wizard';
import { DatasetService } from '@app/core/services/dataset/dataset.service';
import { DmpToDatasetDialogComponent } from '../dmp-to-dataset/dmp-to-dataset-dialog.component';
import { GrantEditorModel } from '@app/ui/grant/editor/grant-editor.model';
@ -117,7 +111,6 @@ export class DmpEditorComponent extends BaseComponent implements OnInit, IBreadC
private formService: FormService,
private lockService: LockService,
private configurationService: ConfigurationService,
private httpClient: HttpClient,
private matomoService: MatomoService
) {
super();

View File

@ -103,7 +103,7 @@
<span class="material-icons">horizontal_rule</span>
</div>
</div>
<div class="row mt-2 add-dataset-txt">
<div class="row mt-2 add-dataset-txt" *ngIf="!lockStatus">
<a class="add-dataset-btn" *ngIf="isDraftDmp(dmp)" [routerLink]="['/datasets/new/' + dmp.id]" target="_blank">
<mat-icon>add</mat-icon>
{{'DMP-LISTING.ACTIONS.ADD-DATASET-SHORT' | translate}}

View File

@ -1,5 +1,5 @@
import { Component, OnInit, Input, ViewChild, ElementRef } from '@angular/core';
import { Component, OnInit, ViewChild, ElementRef } from '@angular/core';
import { MatDialog } from '@angular/material/dialog';
import { ActivatedRoute, Params, Router } from '@angular/router';
import { DatasetStatus } from '@app/core/common/enum/dataset-status';
@ -22,19 +22,13 @@ import { Observable, of as observableOf, interval } from 'rxjs';
import { takeUntil, map } from 'rxjs/operators';
import { Role } from "@app/core/common/enum/role";
import { DmpInvitationDialogComponent } from '../invitation/dmp-invitation-dialog.component';
import { MultipleChoiceDialogModule } from '@common/modules/multiple-choice-dialog/multiple-choice-dialog.module';
import { MultipleChoiceDialogComponent } from '@common/modules/multiple-choice-dialog/multiple-choice-dialog.component';
import { ConfigurationService } from '@app/core/services/configuration/configuration.service';
import { Oauth2DialogComponent } from '@app/ui/misc/oauth2-dialog/oauth2-dialog.component';
import { Oauth2DialogService } from '@app/ui/misc/oauth2-dialog/service/oauth2-dialog.service';
import { isNullOrUndefined } from 'util';
import { UserService } from '@app/core/services/user/user.service';
import { Location } from '@angular/common';
import { FormGroup, FormArray, FormControl } from '@angular/forms';
import { LockService } from '@app/core/services/lock/lock.service';
import { ReturnStatement, ConditionalExpr } from '@angular/compiler';
import { LockModel } from '@app/core/model/lock/lock.model';
import { Guid } from '@common/types/guid';
import { VersionListingModel } from '@app/core/model/version/version-listing.model';
import { CloneDialogComponent } from '../clone/clone-dialog/clone-dialog.component';
import { DmpModel } from '@app/core/model/dmp/dmp';
@ -43,11 +37,10 @@ import { FunderFormModel } from '../editor/grant-tab/funder-form-model';
import { ProjectFormModel } from '../editor/grant-tab/project-form-model';
import { GrantTabModel } from '../editor/grant-tab/grant-tab-model';
import { ExtraPropertiesFormModel } from '../editor/general-tab/extra-properties-form.model';
import { DatasetWizardEditorModel } from '@app/ui/dataset/dataset-wizard/dataset-wizard-editor.model';
import { StartNewDatasetDialogComponent } from '../start-new-dataset-dialogue/start-new-dataset-dialog.component';
import { StartNewDmpDialogComponent } from '../start-new-dmp-dialogue/start-new-dmp-dialog.component';
import { HttpClient } from '@angular/common/http';
import { MatomoService } from '@app/core/services/matomo/matomo-service';
import { PopupNotificationDialogComponent } from '@app/library/notification/popup/popup-notification.component';
@Component({
selector: 'app-dmp-overview',
@ -781,7 +774,15 @@ export class DmpOverviewComponent extends BaseComponent implements OnInit {
checkLockStatus(id: string) {
this.lockService.checkLockStatus(id).pipe(takeUntil(this._destroyed))
.subscribe(lockStatus => this.lockStatus = lockStatus);
.subscribe(lockStatus => {
this.lockStatus = lockStatus
if(lockStatus){
this.dialog.open(PopupNotificationDialogComponent,{data:{
title:this.language.instant('DMP-OVERVIEW.LOCKED-DIALOG.TITLE'),
message:this.language.instant('DMP-OVERVIEW.LOCKED-DIALOG.MESSAGE')
}, maxWidth:'30em'});
}
});
}
getUserFromDMP(): any {

View File

@ -139,3 +139,14 @@ $mat-card-header-size: 40px !default;
.new-dmp-dialog {
padding: 0em .5em 0em 0em;
}
::ng-deep .mat-option-text {
text-overflow: unset !important;
white-space: normal;
line-height: 1.2em;
}
::ng-deep .mat-option {
padding-top: 1em !important;
padding-bottom: 1em !important;
height: auto !important;
}

View File

@ -718,6 +718,10 @@
"CANCEL": "Abbrechen",
"NEXT": "Next",
"ERROR-MESSAGE": "Diese Vorlage der Datensatzbeschreibung ist nicht enthalten"
},
"LOCKED":{
"TITLE":"Dataset is locked",
"MESSAGE": "Somebody else is modifying the dataset at this moment. You may view the dataset but you cannot make any changes. If you would like to modify it please come back later."
}
},
"DMP-OVERVIEW": {
@ -744,6 +748,10 @@
"MULTIPLE-DIALOG": {
"ZENODO-LOGIN": "Login with Zenodo",
"USE-DEFAULT": "Use Default Token"
},
"LOCKED-DIALOG":{
"TITLE": "DMP is locked",
"MESSAGE":"Somebody else is modifying the DMP at this moment. If you would like to modify or view it, please come back later."
}
},
"DATASET-OVERVIEW": {
@ -751,6 +759,10 @@
"ERROR": {
"DELETED-DATASET": "The requested dataset is deleted",
"FORBIDEN-DATASET": "You are not allowed to access this dataset"
},
"LOCKED":{
"TITLE": "Dataset is locked",
"MESSAGE": "Somebody else is modifying the dataset at this moment. If you would like to modify or view it, please come back later."
}
},
"DATASET-LISTING": {
@ -896,6 +908,11 @@
"DELETE": "Löschen",
"FINALIZE": "Finalize",
"DOWNLOAD-XML": "Download XML"
},
"CONFIRM-DELETE-DIALOG":{
"MESSAGE": "Would you like to delete this DMP template?",
"CONFIRM-BUTTON": "Yes, delete",
"CANCEL-BUTTON": "No"
}
},
"GRANT-EDITOR": {
@ -1060,6 +1077,7 @@
},
"DMP-PROFILE-LISTING": {
"TITLE": "DMP Vorlagen",
"CREATE-DMP-TEMPLATE": "Create DMP Template",
"COLUMNS": {
"NAME": "Name",
"STATUS": "Status",
@ -1073,6 +1091,13 @@
"UPLOAD-XML-NAME": "Name der DMP Vorlage",
"UPLOAD-XML-IMPORT": "Datei",
"UPLOAD-XML-FILE-CANCEL": "Abbrechen"
},
"STATUS":{
"DRAFT": "Draft",
"FINALIZED": "Finalized"
},
"MESSAGES":{
"TEMPLATE-UPLOAD-SUCCESS":"Template successfully uploaded"
}
},
"DYNAMIC-FORM": {

View File

@ -718,6 +718,10 @@
"CANCEL": "Cancel",
"NEXT": "Next",
"ERROR-MESSAGE": "Does not contain this Dataset Template"
},
"LOCKED":{
"TITLE":"Dataset is locked",
"MESSAGE": "Somebody else is modifying the dataset at this moment. You may view the dataset but you cannot make any changes. If you would like to modify it please come back later."
}
},
"DMP-OVERVIEW": {
@ -744,6 +748,10 @@
"MULTIPLE-DIALOG": {
"ZENODO-LOGIN": "Login with Zenodo",
"USE-DEFAULT": "Use Default Token"
},
"LOCKED-DIALOG":{
"TITLE": "DMP is locked",
"MESSAGE":"Somebody else is modifying the DMP at this moment. If you would like to modify or view it, please come back later."
}
},
"DATASET-OVERVIEW": {
@ -751,6 +759,10 @@
"ERROR": {
"DELETED-DATASET": "The requested dataset is deleted",
"FORBIDEN-DATASET": "You are not allowed to access this dataset"
},
"LOCKED":{
"TITLE": "Dataset is locked",
"MESSAGE": "Somebody else is modifying the dataset at this moment. If you would like to modify or view it, please come back later."
}
},
"DATASET-LISTING": {
@ -896,6 +908,11 @@
"DELETE": "Delete",
"FINALIZE": "Finalize",
"DOWNLOAD-XML": "Download XML"
},
"CONFIRM-DELETE-DIALOG":{
"MESSAGE": "Would you like to delete this DMP template?",
"CONFIRM-BUTTON": "Yes, delete",
"CANCEL-BUTTON": "No"
}
},
"GRANT-EDITOR": {
@ -1060,6 +1077,7 @@
},
"DMP-PROFILE-LISTING": {
"TITLE": "DMP Templates",
"CREATE-DMP-TEMPLATE": "Create DMP Template",
"COLUMNS": {
"NAME": "Name",
"STATUS": "Status",
@ -1073,6 +1091,13 @@
"UPLOAD-XML-NAME": "Name Of DMP Template",
"UPLOAD-XML-IMPORT": "File",
"UPLOAD-XML-FILE-CANCEL": "Cancel"
},
"STATUS":{
"DRAFT": "Draft",
"FINALIZED": "Finalized"
},
"MESSAGES":{
"TEMPLATE-UPLOAD-SUCCESS":"Template successfully uploaded"
}
},
"DYNAMIC-FORM": {

View File

@ -718,6 +718,10 @@
"CANCEL": "Cancelar",
"NEXT": "Next",
"ERROR-MESSAGE": "No contiene esta plantilla de descripción del dataset"
},
"LOCKED":{
"TITLE":"Dataset is locked",
"MESSAGE": "Somebody else is modifying the dataset at this moment. You may view the dataset but you cannot make any changes. If you would like to modify it please come back later."
}
},
"DMP-OVERVIEW": {
@ -744,6 +748,10 @@
"MULTIPLE-DIALOG": {
"ZENODO-LOGIN": "Identificarse con Zenodo",
"USE-DEFAULT": "Usar el token por defecto"
},
"LOCKED-DIALOG":{
"TITLE": "DMP is locked",
"MESSAGE":"Somebody else is modifying the DMP at this moment. If you would like to modify or view it, please come back later."
}
},
"DATASET-OVERVIEW": {
@ -751,6 +759,10 @@
"ERROR": {
"DELETED-DATASET": "El dataset pedido ha sido eliminado",
"FORBIDEN-DATASET": "No tiene permisos para acceder a este Dataset"
},
"LOCKED":{
"TITLE": "Dataset is locked",
"MESSAGE": "Somebody else is modifying the dataset at this moment. If you would like to modify or view it, please come back later."
}
},
"DATASET-LISTING": {
@ -896,6 +908,11 @@
"DELETE": "Borrar",
"FINALIZE": "Finalizar",
"DOWNLOAD-XML": "Descargar XML"
},
"CONFIRM-DELETE-DIALOG":{
"MESSAGE": "Would you like to delete this DMP template?",
"CONFIRM-BUTTON": "Yes, delete",
"CANCEL-BUTTON": "No"
}
},
"GRANT-EDITOR": {
@ -1060,6 +1077,7 @@
},
"DMP-PROFILE-LISTING": {
"TITLE": "Plantilla del PGD",
"CREATE-DMP-TEMPLATE": "Create DMP Template",
"COLUMNS": {
"NAME": "Nombre",
"STATUS": "Estado",
@ -1073,6 +1091,13 @@
"UPLOAD-XML-NAME": "Nombre de la Plantilla del PGD",
"UPLOAD-XML-IMPORT": "Fichero",
"UPLOAD-XML-FILE-CANCEL": "Cancelar"
},
"STATUS":{
"DRAFT": "Draft",
"FINALIZED": "Finalized"
},
"MESSAGES":{
"TEMPLATE-UPLOAD-SUCCESS":"Template successfully uploaded"
}
},
"DYNAMIC-FORM": {

View File

@ -718,6 +718,10 @@
"CANCEL": "Ακύρωση",
"NEXT": "Επόμενο",
"ERROR-MESSAGE": "Αυτο το Template Περιγραφής Συνόλου Δεδομένων δεν περιέχεται"
},
"LOCKED":{
"TITLE":"Dataset is locked",
"MESSAGE": "Somebody else is modifying the dataset at this moment. You may view the dataset but you cannot make any changes. If you would like to modify it please come back later."
}
},
"DMP-OVERVIEW": {
@ -744,6 +748,10 @@
"MULTIPLE-DIALOG": {
"ZENODO-LOGIN": "Σύνδεση με Zenodo",
"USE-DEFAULT": "Χρήση Προκαθορισμένου Token"
},
"LOCKED-DIALOG":{
"TITLE": "DMP is locked",
"MESSAGE":"Somebody else is modifying the DMP at this moment. If you would like to modify or view it, please come back later."
}
},
"DATASET-OVERVIEW": {
@ -751,6 +759,10 @@
"ERROR": {
"DELETED-DATASET": "H επιλεγμένη Περιγραφή Δεδομένων θα διαγραφεί",
"FORBIDEN-DATASET": "Δεν επιτρέπεται η πρόσβαση σε αυτή την Περιγραφή Δεδομένων"
},
"LOCKED":{
"TITLE": "Dataset is locked",
"MESSAGE": "Somebody else is modifying the dataset at this moment. If you would like to modify or view it, please come back later."
}
},
"DATASET-LISTING": {
@ -896,6 +908,11 @@
"DELETE": "Διαγραφή",
"FINALIZE": "Οριστικοποίηση",
"DOWNLOAD-XML": "Ληψη XML"
},
"CONFIRM-DELETE-DIALOG":{
"MESSAGE": "Would you like to delete this DMP template?",
"CONFIRM-BUTTON": "Yes, delete",
"CANCEL-BUTTON": "No"
}
},
"GRANT-EDITOR": {
@ -1060,6 +1077,7 @@
},
"DMP-PROFILE-LISTING": {
"TITLE": "Templates Σχεδίων Διαχείρισης Δεδομένων",
"CREATE-DMP-TEMPLATE": "Create DMP Template",
"COLUMNS": {
"NAME": "Τίτλος",
"STATUS": "Κατάσταση",
@ -1073,6 +1091,13 @@
"UPLOAD-XML-NAME": "Τίτλος Template Σχεδίου Διαχείρισης Δεδομένων",
"UPLOAD-XML-IMPORT": "Αρχείο",
"UPLOAD-XML-FILE-CANCEL": "Ακύρωση"
},
"STATUS":{
"DRAFT": "Draft",
"FINALIZED": "Finalized"
},
"MESSAGES":{
"TEMPLATE-UPLOAD-SUCCESS":"Template successfully uploaded"
}
},
"DYNAMIC-FORM": {

View File

@ -718,6 +718,10 @@
"CANCEL": "Cancelar",
"NEXT": "Seguinte",
"ERROR-MESSAGE": "Não contém este Modelo de Dados"
},
"LOCKED":{
"TITLE":"Dataset is locked",
"MESSAGE": "Somebody else is modifying the dataset at this moment. You may view the dataset but you cannot make any changes. If you would like to modify it please come back later."
}
},
"DMP-OVERVIEW": {
@ -744,6 +748,10 @@
"MULTIPLE-DIALOG": {
"ZENODO-LOGIN": "Entre com o Zenodo",
"USE-DEFAULT": "Use o Token"
},
"LOCKED-DIALOG":{
"TITLE": "DMP is locked",
"MESSAGE":"Somebody else is modifying the DMP at this moment. If you would like to modify or view it, please come back later."
}
},
"DATASET-OVERVIEW": {
@ -751,6 +759,10 @@
"ERROR": {
"DELETED-DATASET": "O Dataset requerido foi eliminado",
"FORBIDEN-DATASET": "Não está autorizado o acesso a este Dataset"
},
"LOCKED":{
"TITLE": "Dataset is locked",
"MESSAGE": "Somebody else is modifying the dataset at this moment. If you would like to modify or view it, please come back later."
}
},
"DATASET-LISTING": {
@ -896,6 +908,11 @@
"DELETE": "Eliminar",
"FINALIZE": "Concluir",
"DOWNLOAD-XML": "Exportar para XML"
},
"CONFIRM-DELETE-DIALOG":{
"MESSAGE": "Would you like to delete this DMP template?",
"CONFIRM-BUTTON": "Yes, delete",
"CANCEL-BUTTON": "No"
}
},
"GRANT-EDITOR": {
@ -1060,6 +1077,7 @@
},
"DMP-PROFILE-LISTING": {
"TITLE": "PGDs",
"CREATE-DMP-TEMPLATE": "Create DMP Template",
"COLUMNS": {
"NAME": "Nome",
"STATUS": "Estado",
@ -1073,6 +1091,13 @@
"UPLOAD-XML-NAME": "Nome do PGD",
"UPLOAD-XML-IMPORT": "Ficheiro",
"UPLOAD-XML-FILE-CANCEL": "Cancelar"
},
"STATUS":{
"DRAFT": "Draft",
"FINALIZED": "Finalized"
},
"MESSAGES":{
"TEMPLATE-UPLOAD-SUCCESS":"Template successfully uploaded"
}
},
"DYNAMIC-FORM": {

View File

@ -718,6 +718,10 @@
"CANCEL": "Zrušiť",
"NEXT": "Ďalej",
"ERROR-MESSAGE": "Neobsahuje túto šablónu súboru dát"
},
"LOCKED":{
"TITLE":"Dataset is locked",
"MESSAGE": "Somebody else is modifying the dataset at this moment. You may view the dataset but you cannot make any changes. If you would like to modify it please come back later."
}
},
"DMP-OVERVIEW": {
@ -744,6 +748,10 @@
"MULTIPLE-DIALOG": {
"ZENODO-LOGIN": "Prihlásiť sa do Zenodo",
"USE-DEFAULT": "Použite predvolený token"
},
"LOCKED-DIALOG":{
"TITLE": "DMP is locked",
"MESSAGE":"Somebody else is modifying the DMP at this moment. If you would like to modify or view it, please come back later."
}
},
"DATASET-OVERVIEW": {
@ -751,6 +759,10 @@
"ERROR": {
"DELETED-DATASET": "Požadovaný DMP je vymazaný",
"FORBIDEN-DATASET": "K tomuto DMP nemáte povolený prístup"
},
"LOCKED":{
"TITLE": "Dataset is locked",
"MESSAGE": "Somebody else is modifying the dataset at this moment. If you would like to modify or view it, please come back later."
}
},
"DATASET-LISTING": {
@ -896,6 +908,11 @@
"DELETE": "Vymazať",
"FINALIZE": "Dokončiť",
"DOWNLOAD-XML": "Stiahnuť XML"
},
"CONFIRM-DELETE-DIALOG":{
"MESSAGE": "Would you like to delete this DMP template?",
"CONFIRM-BUTTON": "Yes, delete",
"CANCEL-BUTTON": "No"
}
},
"GRANT-EDITOR": {
@ -1060,6 +1077,7 @@
},
"DMP-PROFILE-LISTING": {
"TITLE": "Šablóny DMP",
"CREATE-DMP-TEMPLATE": "Create DMP Template",
"COLUMNS": {
"NAME": "Názov",
"STATUS": "Stav",
@ -1073,6 +1091,13 @@
"UPLOAD-XML-NAME": "Názov šablóny DMP",
"UPLOAD-XML-IMPORT": "Súbor",
"UPLOAD-XML-FILE-CANCEL": "Zrušiť"
},
"STATUS":{
"DRAFT": "Draft",
"FINALIZED": "Finalized"
},
"MESSAGES":{
"TEMPLATE-UPLOAD-SUCCESS":"Template successfully uploaded"
}
},
"DYNAMIC-FORM": {

View File

@ -718,6 +718,10 @@
"CANCEL": "Otkažite",
"NEXT": "Sledeće",
"ERROR-MESSAGE": "Ne sadrži obrazac za podatke"
},
"LOCKED":{
"TITLE":"Dataset is locked",
"MESSAGE": "Somebody else is modifying the dataset at this moment. You may view the dataset but you cannot make any changes. If you would like to modify it please come back later."
}
},
"DMP-OVERVIEW": {
@ -744,6 +748,10 @@
"MULTIPLE-DIALOG": {
"ZENODO-LOGIN": "Prijavite se pomoću Zenodo naloga",
"USE-DEFAULT": "Koristite podrazumevani znak"
},
"LOCKED-DIALOG":{
"TITLE": "DMP is locked",
"MESSAGE":"Somebody else is modifying the DMP at this moment. If you would like to modify or view it, please come back later."
}
},
"DATASET-OVERVIEW": {
@ -751,6 +759,10 @@
"ERROR": {
"DELETED-DATASET": "Traženi skup podataka je obrisan",
"FORBIDEN-DATASET": "Nije Vam dozvoljeno da pristupite ovom skupu podataka"
},
"LOCKED":{
"TITLE": "Dataset is locked",
"MESSAGE": "Somebody else is modifying the dataset at this moment. If you would like to modify or view it, please come back later."
}
},
"DATASET-LISTING": {
@ -896,6 +908,11 @@
"DELETE": "Obrišite",
"FINALIZE": "Dovršite",
"DOWNLOAD-XML": "Preuzmite XML"
},
"CONFIRM-DELETE-DIALOG":{
"MESSAGE": "Would you like to delete this DMP template?",
"CONFIRM-BUTTON": "Yes, delete",
"CANCEL-BUTTON": "No"
}
},
"GRANT-EDITOR": {
@ -1060,6 +1077,7 @@
},
"DMP-PROFILE-LISTING": {
"TITLE": "Obrasci za Planove",
"CREATE-DMP-TEMPLATE": "Create DMP Template",
"COLUMNS": {
"NAME": "Ime",
"STATUS": "Status",
@ -1073,6 +1091,13 @@
"UPLOAD-XML-NAME": "Ime obrasca za Plan",
"UPLOAD-XML-IMPORT": "Datoteka",
"UPLOAD-XML-FILE-CANCEL": "Otkažite"
},
"STATUS":{
"DRAFT": "Draft",
"FINALIZED": "Finalized"
},
"MESSAGES":{
"TEMPLATE-UPLOAD-SUCCESS":"Template successfully uploaded"
}
},
"DYNAMIC-FORM": {

View File

@ -718,6 +718,10 @@
"CANCEL": "İptal",
"NEXT": "İleri",
"ERROR-MESSAGE": "Bu Veri Seti Şablonunu İçermiyor"
},
"LOCKED":{
"TITLE":"Dataset is locked",
"MESSAGE": "Somebody else is modifying the dataset at this moment. You may view the dataset but you cannot make any changes. If you would like to modify it please come back later."
}
},
"DMP-OVERVIEW": {
@ -744,6 +748,10 @@
"MULTIPLE-DIALOG": {
"ZENODO-LOGIN": "Zenodo ile oturum aç",
"USE-DEFAULT": "Mevcut Jetonu Kullan"
},
"LOCKED-DIALOG":{
"TITLE": "DMP is locked",
"MESSAGE":"Somebody else is modifying the DMP at this moment. If you would like to modify or view it, please come back later."
}
},
"DATASET-OVERVIEW": {
@ -751,6 +759,10 @@
"ERROR": {
"DELETED-DATASET": "Seçili Veri Seti silindi",
"FORBIDEN-DATASET": "Bu veri setine erişim izniniz yok"
},
"LOCKED":{
"TITLE": "Dataset is locked",
"MESSAGE": "Somebody else is modifying the dataset at this moment. If you would like to modify or view it, please come back later."
}
},
"DATASET-LISTING": {
@ -896,6 +908,11 @@
"DELETE": "Sil",
"FINALIZE": "Tamamla",
"DOWNLOAD-XML": "XML İndir"
},
"CONFIRM-DELETE-DIALOG":{
"MESSAGE": "Would you like to delete this DMP template?",
"CONFIRM-BUTTON": "Yes, delete",
"CANCEL-BUTTON": "No"
}
},
"GRANT-EDITOR": {
@ -1060,6 +1077,7 @@
},
"DMP-PROFILE-LISTING": {
"TITLE": "VYP Şablonları",
"CREATE-DMP-TEMPLATE": "Create DMP Template",
"COLUMNS": {
"NAME": "İsim",
"STATUS": "Durum",
@ -1073,6 +1091,13 @@
"UPLOAD-XML-NAME": "VYP Şablonu İsmi",
"UPLOAD-XML-IMPORT": "Dosya",
"UPLOAD-XML-FILE-CANCEL": "İptal"
},
"STATUS":{
"DRAFT": "Draft",
"FINALIZED": "Finalized"
},
"MESSAGES":{
"TEMPLATE-UPLOAD-SUCCESS":"Template successfully uploaded"
}
},
"DYNAMIC-FORM": {