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

View File

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

View File

@ -1,5 +1,7 @@
.dmp-profile-editor { .dmp-profile-editor {
margin-top: 1.3rem; margin-top: 1.3rem;
margin-left: 1em;
margin-right: 3em;
.centered-row-item { .centered-row-item {
align-items: center; 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 { ::ng-deep .mat-checkbox-disabled.mat-checkbox-checked .mat-checkbox-background, .mat-checkbox-disabled.mat-checkbox-indeterminate .mat-checkbox-background {
background-color: #b0b0b0; 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 { ConfigurationService } from '@app/core/services/configuration/configuration.service';
import { HttpClient } from '@angular/common/http'; import { HttpClient } from '@angular/common/http';
import { MatomoService } from '@app/core/services/matomo/matomo-service'; 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({ @Component({
@ -50,7 +52,8 @@ export class DmpProfileEditorComponent extends BaseComponent implements AfterVie
private formService: FormService, private formService: FormService,
private configurationService: ConfigurationService, private configurationService: ConfigurationService,
private httpClient: HttpClient, private httpClient: HttpClient,
private matomoService: MatomoService private matomoService: MatomoService,
private dialog: MatDialog
) { ) {
super(); super();
this.host = configurationService.server; this.host = configurationService.server;
@ -177,13 +180,27 @@ export class DmpProfileEditorComponent extends BaseComponent implements AfterVie
} }
delete() { delete() {
this.formGroup.get('status').setValue(DmpProfileStatus.Deleted); this.dialog.open(ConfirmationDialogComponent,{data:{
this.dmpProfileService.createDmp(this.formGroup.value) isDeleteConfirmation: true,
.pipe(takeUntil(this._destroyed)) confirmButton: this.language.instant('DMP-PROFILE-EDITOR.CONFIRM-DELETE-DIALOG.CONFIRM-BUTTON'),
.subscribe( cancelButton: this.language.instant("DMP-PROFILE-EDITOR.CONFIRM-DELETE-DIALOG.CANCEL-BUTTON"),
complete => this.onCallbackSuccess(), message: this.language.instant("DMP-PROFILE-EDITOR.CONFIRM-DELETE-DIALOG.MESSAGE")
error => this.onCallbackError(error) }})
); .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() { finalize() {

View File

@ -4,10 +4,26 @@
<h4>{{ data.message }}</h4> <h4>{{ data.message }}</h4>
</div> </div>
<div class="col-auto ml-auto"> <div class="col-auto ml-auto">
<input class="hidden" type="file" #imgFileInput (change)="selectXML($event)" accept="text/xml" /> <mat-icon class="close-btn" (click)="cancel()">close</mat-icon>
<button class="col-auto attach-file" (click)="imgFileInput.click()" type="button"> </div>
<mat-icon color="{{btnColore}}">attach_file</mat-icon> </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> </button>
<input class="hidden" type="file" #imgFileInput (change)="selectXML($event)" accept="text/xml" />
</div> </div>
</div> </div>
<div class="row"> <div class="row">
@ -15,11 +31,11 @@
<input matInput placeholder="{{'DMP-PROFILE-LISTING.UPLOAD.UPLOAD-XML-NAME'| translate}}" name="datasetProfileName" [(ngModel)]="data.name"> <input matInput placeholder="{{'DMP-PROFILE-LISTING.UPLOAD.UPLOAD-XML-NAME'| translate}}" name="datasetProfileName" [(ngModel)]="data.name">
</mat-form-field> </mat-form-field>
<div class="col-auto"> <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>
<div class="col"></div> <div class="col"></div>
<div class="col-auto"> <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> </div>
</div> </div>

View File

@ -1,3 +1,102 @@
.hidden { .hidden {
display: none; 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 { export class DialodConfirmationUploadDmpProfiles {
sizeError = false; sizeError = false;
btnColore:String="primary";
selectFile =false; selectFile =false;
maxFileSize: number = 1048576; maxFileSize: number = 1048576;
selectedFileName: string;
constructor( constructor(
public dialogRef: MatDialogRef<DialodConfirmationUploadDmpProfiles>, public dialogRef: MatDialogRef<DialodConfirmationUploadDmpProfiles>,
@ -21,16 +21,20 @@ export class DialodConfirmationUploadDmpProfiles {
selectXML(event) { 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. const size: number = file[0].size; // Get file size.
this.sizeError = size > this.maxFileSize; // Checks if file size is valid. this.sizeError = size > this.maxFileSize; // Checks if file size is valid.
const formdata: FormData = new FormData(); const formdata: FormData = new FormData();
if (!this.sizeError) { if (!this.sizeError) {
this.data.file = file; this.data.file = file;
this.selectFile=true; this.selectFile=true;
this.btnColore="primary"; this.selectedFileName = file[0].name;
}else{
this.btnColore="warn";
} }
this.data.name = file[0].name; this.data.name = file[0].name;
} }
@ -49,5 +53,10 @@ export class DialodConfirmationUploadDmpProfiles {
hasProfile():boolean{ hasProfile():boolean{
return (this.selectFile && !this.sizeError); 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"> <div class="dmp-criteria">
<mat-card class="mat-card"> <div class="row justify-content-end">
<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="col-auto"> <div class="col-auto">
<!-- imgFileInput.click() && --> <mat-form-field class="search-form-field">
<button mat-raised-button class="col-auto" color="primary" (click)="openDialog()" <input matInput placeholder=" {{'CRITERIA.DMP.LIKE'| translate}}" name="grantCriteriaLike"
type="button">{{ 'DMP-PROFILE-LISTING.UPLOAD.UPLOAD-XML' | translate }}</button> [(ngModel)]="criteria.like" (ngModelChange)="controlModified()">
<mat-icon matPrefix>search</mat-icon>
</mat-form-field>
</div> </div>
</div> </div>
</mat-card>
</div> </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 { // openDialog(): void {
const dialogRef = this.dialog.open(DialodConfirmationUploadDmpProfiles, { // const dialogRef = this.dialog.open(DialodConfirmationUploadDmpProfiles, {
restoreFocus: false, // restoreFocus: false,
data: { // data: {
message: this.language.instant('DMP-PROFILE-LISTING.UPLOAD.UPLOAD-XML-FILE-TITLE'), // message: this.language.instant('DMP-PROFILE-LISTING.UPLOAD.UPLOAD-XML-FILE-TITLE'),
confirmButton: this.language.instant('DMP-PROFILE-LISTING.UPLOAD.UPLOAD-XML'), // confirmButton: this.language.instant('DMP-PROFILE-LISTING.UPLOAD.UPLOAD-XML'),
cancelButton: this.language.instant('DMP-PROFILE-LISTING.UPLOAD.UPLOAD-XML-FILE-CANCEL'), // cancelButton: this.language.instant('DMP-PROFILE-LISTING.UPLOAD.UPLOAD-XML-FILE-CANCEL'),
name: '', // name: '',
file: FileList, // file: FileList,
sucsess: false // sucsess: false
} // }
}); // });
dialogRef.afterClosed().pipe(takeUntil(this._destroyed)).subscribe(data => { // dialogRef.afterClosed().pipe(takeUntil(this._destroyed)).subscribe(data => {
if (data && data.sucsess && data.name != null && data.file != null) { // if (data && data.sucsess && data.name != null && data.file != null) {
this.dmpProfileService.uploadFile(data.file, data.name) // this.dmpProfileService.uploadFile(data.file, data.name)
.pipe(takeUntil(this._destroyed)) // .pipe(takeUntil(this._destroyed))
.subscribe(); // .subscribe();
} // }
}); // });
} // }
} }

View File

@ -1,9 +1,26 @@
<div class="main-content"> <div class="main-content">
<div class="container-fluid dmp-profile-listing"> <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> <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()"> <mat-table [dataSource]="dataSource" matSort (matSortChange)="refresh()">
<!-- Column Definition: Name --> <!-- Column Definition: Name -->
@ -17,7 +34,11 @@
<ng-container cdkColumnDef="status"> <ng-container cdkColumnDef="status">
<mat-header-cell *matHeaderCellDef mat-sort-header="status"> <mat-header-cell *matHeaderCellDef mat-sort-header="status">
{{'DMP-PROFILE-LISTING.COLUMNS.STATUS' | translate}}</mat-header-cell> {{'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> </ng-container>
<!-- Column Definition: Created --> <!-- Column Definition: Created -->
@ -36,12 +57,6 @@
</mat-table> </mat-table>
<mat-paginator #paginator [length]="dataSource?.totalCount" [pageSizeOptions]="[10, 25, 100]"> <mat-paginator #paginator [length]="dataSource?.totalCount" [pageSizeOptions]="[10, 25, 100]">
</mat-paginator> </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> </div>
</div> </div>

View File

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

View File

@ -2,6 +2,7 @@
import { DataSource } from '@angular/cdk/table'; import { DataSource } from '@angular/cdk/table';
import { HttpClient } from '@angular/common/http'; import { HttpClient } from '@angular/common/http';
import { Component, OnInit, ViewChild } from '@angular/core'; import { Component, OnInit, ViewChild } from '@angular/core';
import { MatDialog } from '@angular/material';
import { MatPaginator, PageEvent } from '@angular/material/paginator'; import { MatPaginator, PageEvent } from '@angular/material/paginator';
import { MatSnackBar } from '@angular/material/snack-bar'; import { MatSnackBar } from '@angular/material/snack-bar';
import { MatSort } from '@angular/material/sort'; 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 { DmpProfileCriteria } from '@app/core/query/dmp/dmp-profile-criteria';
import { DmpProfileService } from '@app/core/services/dmp/dmp-profile.service'; import { DmpProfileService } from '@app/core/services/dmp/dmp-profile.service';
import { MatomoService } from '@app/core/services/matomo/matomo-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 { DmpProfileCriteriaComponent } from '@app/ui/admin/dmp-profile/listing/criteria/dmp-profile-criteria.component';
import { BreadcrumbItem } from '@app/ui/misc/breadcrumb/definition/breadcrumb-item'; import { BreadcrumbItem } from '@app/ui/misc/breadcrumb/definition/breadcrumb-item';
import { BaseComponent } from '@common/base/base.component'; import { BaseComponent } from '@common/base/base.component';
import { SnackBarNotificationLevel } from '@common/modules/notification/ui-notification-service';
import { TranslateService } from '@ngx-translate/core'; import { TranslateService } from '@ngx-translate/core';
import { merge as observableMerge, Observable, of as observableOf } from 'rxjs'; import { merge as observableMerge, Observable, of as observableOf } from 'rxjs';
import { map, startWith, switchMap, takeUntil } from 'rxjs/operators'; import { map, startWith, switchMap, takeUntil } from 'rxjs/operators';
import { DialodConfirmationUploadDmpProfiles } from './criteria/dialog-confirmation-upload-profile/dialog-confirmation-upload-profiles.component';
@Component({ @Component({
@ -38,8 +42,8 @@ export class DmpProfileListingComponent extends BaseComponent implements OnInit
breadCrumbs: Observable<BreadcrumbItem[]>; breadCrumbs: Observable<BreadcrumbItem[]>;
statuses = [ statuses = [
{ value: '0', viewValue: 'Active' }, { value: '0', viewValue: 'DMP-PROFILE-LISTING.STATUS.DRAFT' },// active
{ value: '1', viewValue: 'Inactive' } { value: '1', viewValue: 'DMP-PROFILE-LISTING.STATUS.FINALIZED' }// inactive
]; ];
constructor( constructor(
@ -49,7 +53,9 @@ export class DmpProfileListingComponent extends BaseComponent implements OnInit
public route: ActivatedRoute, public route: ActivatedRoute,
public dmpProfileService: DmpProfileService, public dmpProfileService: DmpProfileService,
private httpClient: HttpClient, private httpClient: HttpClient,
private matomoService: MatomoService private matomoService: MatomoService,
private dialog: MatDialog,
private uiNotificationService: UiNotificationService,
) { ) {
super(); super();
} }
@ -88,6 +94,52 @@ export class DmpProfileListingComponent extends BaseComponent implements OnInit
// debugger; // debugger;
// this.datasetService.makeDatasetPublic(id).pipe(takeUntil(this._destroyed)).subscribe(); // 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> { export class DatasetDataSource extends DataSource<DmpProfileListing> {

View File

@ -26,16 +26,16 @@
</div> </div>
</div> </div>
</div> </div>
<div class="row" *ngIf="!viewOnly"> <div class="row">
<div class="col-auto d-flex align-items-center p-0"> <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()"> <button *ngIf="isDirty()" type="button" mat-raised-button class="dataset-discard-btn" (click)="discardChanges()">
{{'DMP-EDITOR.ACTIONS.DISCARD' | translate}} {{'DMP-EDITOR.ACTIONS.DISCARD' | translate}}
</button> </button>
</div> </div>
<div class="col-auto d-flex align-items-center"> <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 && !viewOnly" 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 && !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" 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(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 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> --> <!-- <button *ngIf="!lockStatus" mat-raised-button class="dataset-save-btn mr-2" (click)="touchForm()" type="button">{{ 'DATASET-WIZARD.ACTIONS.VALIDATE' | translate }}</button> -->
</div> </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 { ConfirmationDialogComponent } from '@common/modules/confirmation-dialog/confirmation-dialog.component';
import { TranslateService } from '@ngx-translate/core'; import { TranslateService } from '@ngx-translate/core';
import * as FileSaver from 'file-saver'; 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 { catchError, debounceTime, map, takeUntil } from 'rxjs/operators';
import { LockService } from '@app/core/services/lock/lock.service'; import { LockService } from '@app/core/services/lock/lock.service';
import { Location } from '@angular/common'; 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 { Guid } from '@common/types/guid';
import { isNullOrUndefined } from 'util'; import { isNullOrUndefined } from 'util';
import { AuthService } from '@app/core/services/auth/auth.service'; import { AuthService } from '@app/core/services/auth/auth.service';
import { environment } from 'environments/environment';
import { ConfigurationService } from '@app/core/services/configuration/configuration.service'; import { ConfigurationService } from '@app/core/services/configuration/configuration.service';
import { SaveType } from '@app/core/common/enum/save-type'; import { SaveType } from '@app/core/common/enum/save-type';
import { DatasetWizardModel } from '@app/core/model/dataset/dataset-wizard'; import { DatasetWizardModel } from '@app/core/model/dataset/dataset-wizard';
import { MatomoService } from '@app/core/services/matomo/matomo-service'; import { MatomoService } from '@app/core/services/matomo/matomo-service';
import { HttpClient } from '@angular/common/http'; 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 { VisibilityRulesService } from '@app/ui/misc/dataset-description-form/visibility-rules/visibility-rules.service';
import { PopupNotificationDialogComponent } from '@app/library/notification/popup/popup-notification.component';
@Component({ @Component({
selector: 'app-dataset-wizard-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. // if (this.viewOnly) { this.formGroup.disable(); } // For future use, to make Dataset edit like DMP.
this.loadDatasetProfiles(); this.loadDatasetProfiles();
this.registerFormListeners(); 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; // 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 { DmpOverviewModel } from '@app/core/model/dmp/dmp-overview';
import { MatomoService } from '@app/core/services/matomo/matomo-service'; import { MatomoService } from '@app/core/services/matomo/matomo-service';
import { HttpClient } from '@angular/common/http'; import { HttpClient } from '@angular/common/http';
import { PopupNotificationDialogComponent } from '@app/library/notification/popup/popup-notification.component';
@Component({ @Component({
@ -139,7 +140,15 @@ export class DatasetOverviewComponent extends BaseComponent implements OnInit {
checkLockStatus(id: string) { checkLockStatus(id: string) {
this.lockService.checkLockStatus(id).pipe(takeUntil(this._destroyed)) 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) { onFetchingDeletedCallbackError(redirectRoot: string) {

View File

@ -1,11 +1,11 @@
import { Component, OnInit, SimpleChanges } from '@angular/core'; import { Component, OnInit} from '@angular/core';
import { FormGroup, AbstractControl, FormControl, FormArray, FormBuilder } from '@angular/forms'; import { FormGroup, AbstractControl, FormControl, FormArray} from '@angular/forms';
import { MatDialog } from '@angular/material/dialog'; import { MatDialog } from '@angular/material/dialog';
import { ActivatedRoute, Params, Router } from '@angular/router'; import { ActivatedRoute, Params, Router } from '@angular/router';
import { DmpStatus } from '@app/core/common/enum/dmp-status'; import { DmpStatus } from '@app/core/common/enum/dmp-status';
import { DataTableRequest } from '@app/core/model/data-table/data-table-request'; 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 { DmpProfileListing } from '@app/core/model/dmp-profile/dmp-profile-listing';
import { DmpModel } from '@app/core/model/dmp/dmp'; import { DmpModel } from '@app/core/model/dmp/dmp';
import { UserModel } from '@app/core/model/user/user'; 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 { TranslateService } from '@ngx-translate/core';
import * as FileSaver from 'file-saver'; import * as FileSaver from 'file-saver';
import { Observable, of as observableOf, interval } from 'rxjs'; 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 { Principal } from "@app/core/model/auth/principal";
import { Role } from "@app/core/common/enum/role"; import { Role } from "@app/core/common/enum/role";
import { LockService } from '@app/core/services/lock/lock.service'; 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 { ConfigurationService } from '@app/core/services/configuration/configuration.service';
import { ExtraPropertiesFormModel } from './general-tab/extra-properties-form.model'; import { ExtraPropertiesFormModel } from './general-tab/extra-properties-form.model';
import { DatasetWizardEditorModel } from '@app/ui/dataset/dataset-wizard/dataset-wizard-editor.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 { 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 { DatasetService } from '@app/core/services/dataset/dataset.service';
import { DmpToDatasetDialogComponent } from '../dmp-to-dataset/dmp-to-dataset-dialog.component'; import { DmpToDatasetDialogComponent } from '../dmp-to-dataset/dmp-to-dataset-dialog.component';
import { GrantEditorModel } from '@app/ui/grant/editor/grant-editor.model'; 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 formService: FormService,
private lockService: LockService, private lockService: LockService,
private configurationService: ConfigurationService, private configurationService: ConfigurationService,
private httpClient: HttpClient,
private matomoService: MatomoService private matomoService: MatomoService
) { ) {
super(); super();

View File

@ -103,7 +103,7 @@
<span class="material-icons">horizontal_rule</span> <span class="material-icons">horizontal_rule</span>
</div> </div>
</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"> <a class="add-dataset-btn" *ngIf="isDraftDmp(dmp)" [routerLink]="['/datasets/new/' + dmp.id]" target="_blank">
<mat-icon>add</mat-icon> <mat-icon>add</mat-icon>
{{'DMP-LISTING.ACTIONS.ADD-DATASET-SHORT' | translate}} {{'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 { MatDialog } from '@angular/material/dialog';
import { ActivatedRoute, Params, Router } from '@angular/router'; import { ActivatedRoute, Params, Router } from '@angular/router';
import { DatasetStatus } from '@app/core/common/enum/dataset-status'; 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 { takeUntil, map } from 'rxjs/operators';
import { Role } from "@app/core/common/enum/role"; import { Role } from "@app/core/common/enum/role";
import { DmpInvitationDialogComponent } from '../invitation/dmp-invitation-dialog.component'; 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 { MultipleChoiceDialogComponent } from '@common/modules/multiple-choice-dialog/multiple-choice-dialog.component';
import { ConfigurationService } from '@app/core/services/configuration/configuration.service'; 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 { 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 { UserService } from '@app/core/services/user/user.service';
import { Location } from '@angular/common'; import { Location } from '@angular/common';
import { FormGroup, FormArray, FormControl } from '@angular/forms'; import { FormGroup, FormArray, FormControl } from '@angular/forms';
import { LockService } from '@app/core/services/lock/lock.service'; 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 { VersionListingModel } from '@app/core/model/version/version-listing.model';
import { CloneDialogComponent } from '../clone/clone-dialog/clone-dialog.component'; import { CloneDialogComponent } from '../clone/clone-dialog/clone-dialog.component';
import { DmpModel } from '@app/core/model/dmp/dmp'; 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 { ProjectFormModel } from '../editor/grant-tab/project-form-model';
import { GrantTabModel } from '../editor/grant-tab/grant-tab-model'; import { GrantTabModel } from '../editor/grant-tab/grant-tab-model';
import { ExtraPropertiesFormModel } from '../editor/general-tab/extra-properties-form.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 { StartNewDmpDialogComponent } from '../start-new-dmp-dialogue/start-new-dmp-dialog.component';
import { HttpClient } from '@angular/common/http'; import { HttpClient } from '@angular/common/http';
import { MatomoService } from '@app/core/services/matomo/matomo-service'; import { MatomoService } from '@app/core/services/matomo/matomo-service';
import { PopupNotificationDialogComponent } from '@app/library/notification/popup/popup-notification.component';
@Component({ @Component({
selector: 'app-dmp-overview', selector: 'app-dmp-overview',
@ -781,7 +774,15 @@ export class DmpOverviewComponent extends BaseComponent implements OnInit {
checkLockStatus(id: string) { checkLockStatus(id: string) {
this.lockService.checkLockStatus(id).pipe(takeUntil(this._destroyed)) 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 { getUserFromDMP(): any {

View File

@ -139,3 +139,14 @@ $mat-card-header-size: 40px !default;
.new-dmp-dialog { .new-dmp-dialog {
padding: 0em .5em 0em 0em; 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", "CANCEL": "Abbrechen",
"NEXT": "Next", "NEXT": "Next",
"ERROR-MESSAGE": "Diese Vorlage der Datensatzbeschreibung ist nicht enthalten" "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": { "DMP-OVERVIEW": {
@ -744,6 +748,10 @@
"MULTIPLE-DIALOG": { "MULTIPLE-DIALOG": {
"ZENODO-LOGIN": "Login with Zenodo", "ZENODO-LOGIN": "Login with Zenodo",
"USE-DEFAULT": "Use Default Token" "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": { "DATASET-OVERVIEW": {
@ -751,6 +759,10 @@
"ERROR": { "ERROR": {
"DELETED-DATASET": "The requested dataset is deleted", "DELETED-DATASET": "The requested dataset is deleted",
"FORBIDEN-DATASET": "You are not allowed to access this dataset" "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": { "DATASET-LISTING": {
@ -896,6 +908,11 @@
"DELETE": "Löschen", "DELETE": "Löschen",
"FINALIZE": "Finalize", "FINALIZE": "Finalize",
"DOWNLOAD-XML": "Download XML" "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": { "GRANT-EDITOR": {
@ -1060,6 +1077,7 @@
}, },
"DMP-PROFILE-LISTING": { "DMP-PROFILE-LISTING": {
"TITLE": "DMP Vorlagen", "TITLE": "DMP Vorlagen",
"CREATE-DMP-TEMPLATE": "Create DMP Template",
"COLUMNS": { "COLUMNS": {
"NAME": "Name", "NAME": "Name",
"STATUS": "Status", "STATUS": "Status",
@ -1073,6 +1091,13 @@
"UPLOAD-XML-NAME": "Name der DMP Vorlage", "UPLOAD-XML-NAME": "Name der DMP Vorlage",
"UPLOAD-XML-IMPORT": "Datei", "UPLOAD-XML-IMPORT": "Datei",
"UPLOAD-XML-FILE-CANCEL": "Abbrechen" "UPLOAD-XML-FILE-CANCEL": "Abbrechen"
},
"STATUS":{
"DRAFT": "Draft",
"FINALIZED": "Finalized"
},
"MESSAGES":{
"TEMPLATE-UPLOAD-SUCCESS":"Template successfully uploaded"
} }
}, },
"DYNAMIC-FORM": { "DYNAMIC-FORM": {

View File

@ -718,6 +718,10 @@
"CANCEL": "Cancel", "CANCEL": "Cancel",
"NEXT": "Next", "NEXT": "Next",
"ERROR-MESSAGE": "Does not contain this Dataset Template" "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": { "DMP-OVERVIEW": {
@ -744,6 +748,10 @@
"MULTIPLE-DIALOG": { "MULTIPLE-DIALOG": {
"ZENODO-LOGIN": "Login with Zenodo", "ZENODO-LOGIN": "Login with Zenodo",
"USE-DEFAULT": "Use Default Token" "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": { "DATASET-OVERVIEW": {
@ -751,6 +759,10 @@
"ERROR": { "ERROR": {
"DELETED-DATASET": "The requested dataset is deleted", "DELETED-DATASET": "The requested dataset is deleted",
"FORBIDEN-DATASET": "You are not allowed to access this dataset" "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": { "DATASET-LISTING": {
@ -896,6 +908,11 @@
"DELETE": "Delete", "DELETE": "Delete",
"FINALIZE": "Finalize", "FINALIZE": "Finalize",
"DOWNLOAD-XML": "Download XML" "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": { "GRANT-EDITOR": {
@ -1060,6 +1077,7 @@
}, },
"DMP-PROFILE-LISTING": { "DMP-PROFILE-LISTING": {
"TITLE": "DMP Templates", "TITLE": "DMP Templates",
"CREATE-DMP-TEMPLATE": "Create DMP Template",
"COLUMNS": { "COLUMNS": {
"NAME": "Name", "NAME": "Name",
"STATUS": "Status", "STATUS": "Status",
@ -1073,6 +1091,13 @@
"UPLOAD-XML-NAME": "Name Of DMP Template", "UPLOAD-XML-NAME": "Name Of DMP Template",
"UPLOAD-XML-IMPORT": "File", "UPLOAD-XML-IMPORT": "File",
"UPLOAD-XML-FILE-CANCEL": "Cancel" "UPLOAD-XML-FILE-CANCEL": "Cancel"
},
"STATUS":{
"DRAFT": "Draft",
"FINALIZED": "Finalized"
},
"MESSAGES":{
"TEMPLATE-UPLOAD-SUCCESS":"Template successfully uploaded"
} }
}, },
"DYNAMIC-FORM": { "DYNAMIC-FORM": {

View File

@ -718,6 +718,10 @@
"CANCEL": "Cancelar", "CANCEL": "Cancelar",
"NEXT": "Next", "NEXT": "Next",
"ERROR-MESSAGE": "No contiene esta plantilla de descripción del dataset" "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": { "DMP-OVERVIEW": {
@ -744,6 +748,10 @@
"MULTIPLE-DIALOG": { "MULTIPLE-DIALOG": {
"ZENODO-LOGIN": "Identificarse con Zenodo", "ZENODO-LOGIN": "Identificarse con Zenodo",
"USE-DEFAULT": "Usar el token por defecto" "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": { "DATASET-OVERVIEW": {
@ -751,6 +759,10 @@
"ERROR": { "ERROR": {
"DELETED-DATASET": "El dataset pedido ha sido eliminado", "DELETED-DATASET": "El dataset pedido ha sido eliminado",
"FORBIDEN-DATASET": "No tiene permisos para acceder a este Dataset" "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": { "DATASET-LISTING": {
@ -896,6 +908,11 @@
"DELETE": "Borrar", "DELETE": "Borrar",
"FINALIZE": "Finalizar", "FINALIZE": "Finalizar",
"DOWNLOAD-XML": "Descargar XML" "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": { "GRANT-EDITOR": {
@ -1060,6 +1077,7 @@
}, },
"DMP-PROFILE-LISTING": { "DMP-PROFILE-LISTING": {
"TITLE": "Plantilla del PGD", "TITLE": "Plantilla del PGD",
"CREATE-DMP-TEMPLATE": "Create DMP Template",
"COLUMNS": { "COLUMNS": {
"NAME": "Nombre", "NAME": "Nombre",
"STATUS": "Estado", "STATUS": "Estado",
@ -1073,6 +1091,13 @@
"UPLOAD-XML-NAME": "Nombre de la Plantilla del PGD", "UPLOAD-XML-NAME": "Nombre de la Plantilla del PGD",
"UPLOAD-XML-IMPORT": "Fichero", "UPLOAD-XML-IMPORT": "Fichero",
"UPLOAD-XML-FILE-CANCEL": "Cancelar" "UPLOAD-XML-FILE-CANCEL": "Cancelar"
},
"STATUS":{
"DRAFT": "Draft",
"FINALIZED": "Finalized"
},
"MESSAGES":{
"TEMPLATE-UPLOAD-SUCCESS":"Template successfully uploaded"
} }
}, },
"DYNAMIC-FORM": { "DYNAMIC-FORM": {

View File

@ -718,6 +718,10 @@
"CANCEL": "Ακύρωση", "CANCEL": "Ακύρωση",
"NEXT": "Επόμενο", "NEXT": "Επόμενο",
"ERROR-MESSAGE": "Αυτο το Template Περιγραφής Συνόλου Δεδομένων δεν περιέχεται" "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": { "DMP-OVERVIEW": {
@ -744,6 +748,10 @@
"MULTIPLE-DIALOG": { "MULTIPLE-DIALOG": {
"ZENODO-LOGIN": "Σύνδεση με Zenodo", "ZENODO-LOGIN": "Σύνδεση με Zenodo",
"USE-DEFAULT": "Χρήση Προκαθορισμένου Token" "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": { "DATASET-OVERVIEW": {
@ -751,6 +759,10 @@
"ERROR": { "ERROR": {
"DELETED-DATASET": "H επιλεγμένη Περιγραφή Δεδομένων θα διαγραφεί", "DELETED-DATASET": "H επιλεγμένη Περιγραφή Δεδομένων θα διαγραφεί",
"FORBIDEN-DATASET": "Δεν επιτρέπεται η πρόσβαση σε αυτή την Περιγραφή Δεδομένων" "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": { "DATASET-LISTING": {
@ -896,6 +908,11 @@
"DELETE": "Διαγραφή", "DELETE": "Διαγραφή",
"FINALIZE": "Οριστικοποίηση", "FINALIZE": "Οριστικοποίηση",
"DOWNLOAD-XML": "Ληψη XML" "DOWNLOAD-XML": "Ληψη XML"
},
"CONFIRM-DELETE-DIALOG":{
"MESSAGE": "Would you like to delete this DMP template?",
"CONFIRM-BUTTON": "Yes, delete",
"CANCEL-BUTTON": "No"
} }
}, },
"GRANT-EDITOR": { "GRANT-EDITOR": {
@ -1060,6 +1077,7 @@
}, },
"DMP-PROFILE-LISTING": { "DMP-PROFILE-LISTING": {
"TITLE": "Templates Σχεδίων Διαχείρισης Δεδομένων", "TITLE": "Templates Σχεδίων Διαχείρισης Δεδομένων",
"CREATE-DMP-TEMPLATE": "Create DMP Template",
"COLUMNS": { "COLUMNS": {
"NAME": "Τίτλος", "NAME": "Τίτλος",
"STATUS": "Κατάσταση", "STATUS": "Κατάσταση",
@ -1073,6 +1091,13 @@
"UPLOAD-XML-NAME": "Τίτλος Template Σχεδίου Διαχείρισης Δεδομένων", "UPLOAD-XML-NAME": "Τίτλος Template Σχεδίου Διαχείρισης Δεδομένων",
"UPLOAD-XML-IMPORT": "Αρχείο", "UPLOAD-XML-IMPORT": "Αρχείο",
"UPLOAD-XML-FILE-CANCEL": "Ακύρωση" "UPLOAD-XML-FILE-CANCEL": "Ακύρωση"
},
"STATUS":{
"DRAFT": "Draft",
"FINALIZED": "Finalized"
},
"MESSAGES":{
"TEMPLATE-UPLOAD-SUCCESS":"Template successfully uploaded"
} }
}, },
"DYNAMIC-FORM": { "DYNAMIC-FORM": {

View File

@ -718,6 +718,10 @@
"CANCEL": "Cancelar", "CANCEL": "Cancelar",
"NEXT": "Seguinte", "NEXT": "Seguinte",
"ERROR-MESSAGE": "Não contém este Modelo de Dados" "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": { "DMP-OVERVIEW": {
@ -744,6 +748,10 @@
"MULTIPLE-DIALOG": { "MULTIPLE-DIALOG": {
"ZENODO-LOGIN": "Entre com o Zenodo", "ZENODO-LOGIN": "Entre com o Zenodo",
"USE-DEFAULT": "Use o Token" "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": { "DATASET-OVERVIEW": {
@ -751,6 +759,10 @@
"ERROR": { "ERROR": {
"DELETED-DATASET": "O Dataset requerido foi eliminado", "DELETED-DATASET": "O Dataset requerido foi eliminado",
"FORBIDEN-DATASET": "Não está autorizado o acesso a este Dataset" "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": { "DATASET-LISTING": {
@ -896,6 +908,11 @@
"DELETE": "Eliminar", "DELETE": "Eliminar",
"FINALIZE": "Concluir", "FINALIZE": "Concluir",
"DOWNLOAD-XML": "Exportar para XML" "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": { "GRANT-EDITOR": {
@ -1060,6 +1077,7 @@
}, },
"DMP-PROFILE-LISTING": { "DMP-PROFILE-LISTING": {
"TITLE": "PGDs", "TITLE": "PGDs",
"CREATE-DMP-TEMPLATE": "Create DMP Template",
"COLUMNS": { "COLUMNS": {
"NAME": "Nome", "NAME": "Nome",
"STATUS": "Estado", "STATUS": "Estado",
@ -1073,6 +1091,13 @@
"UPLOAD-XML-NAME": "Nome do PGD", "UPLOAD-XML-NAME": "Nome do PGD",
"UPLOAD-XML-IMPORT": "Ficheiro", "UPLOAD-XML-IMPORT": "Ficheiro",
"UPLOAD-XML-FILE-CANCEL": "Cancelar" "UPLOAD-XML-FILE-CANCEL": "Cancelar"
},
"STATUS":{
"DRAFT": "Draft",
"FINALIZED": "Finalized"
},
"MESSAGES":{
"TEMPLATE-UPLOAD-SUCCESS":"Template successfully uploaded"
} }
}, },
"DYNAMIC-FORM": { "DYNAMIC-FORM": {

View File

@ -718,6 +718,10 @@
"CANCEL": "Zrušiť", "CANCEL": "Zrušiť",
"NEXT": "Ďalej", "NEXT": "Ďalej",
"ERROR-MESSAGE": "Neobsahuje túto šablónu súboru dát" "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": { "DMP-OVERVIEW": {
@ -744,6 +748,10 @@
"MULTIPLE-DIALOG": { "MULTIPLE-DIALOG": {
"ZENODO-LOGIN": "Prihlásiť sa do Zenodo", "ZENODO-LOGIN": "Prihlásiť sa do Zenodo",
"USE-DEFAULT": "Použite predvolený token" "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": { "DATASET-OVERVIEW": {
@ -751,6 +759,10 @@
"ERROR": { "ERROR": {
"DELETED-DATASET": "Požadovaný DMP je vymazaný", "DELETED-DATASET": "Požadovaný DMP je vymazaný",
"FORBIDEN-DATASET": "K tomuto DMP nemáte povolený prístup" "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": { "DATASET-LISTING": {
@ -896,6 +908,11 @@
"DELETE": "Vymazať", "DELETE": "Vymazať",
"FINALIZE": "Dokončiť", "FINALIZE": "Dokončiť",
"DOWNLOAD-XML": "Stiahnuť XML" "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": { "GRANT-EDITOR": {
@ -1060,6 +1077,7 @@
}, },
"DMP-PROFILE-LISTING": { "DMP-PROFILE-LISTING": {
"TITLE": "Šablóny DMP", "TITLE": "Šablóny DMP",
"CREATE-DMP-TEMPLATE": "Create DMP Template",
"COLUMNS": { "COLUMNS": {
"NAME": "Názov", "NAME": "Názov",
"STATUS": "Stav", "STATUS": "Stav",
@ -1073,6 +1091,13 @@
"UPLOAD-XML-NAME": "Názov šablóny DMP", "UPLOAD-XML-NAME": "Názov šablóny DMP",
"UPLOAD-XML-IMPORT": "Súbor", "UPLOAD-XML-IMPORT": "Súbor",
"UPLOAD-XML-FILE-CANCEL": "Zrušiť" "UPLOAD-XML-FILE-CANCEL": "Zrušiť"
},
"STATUS":{
"DRAFT": "Draft",
"FINALIZED": "Finalized"
},
"MESSAGES":{
"TEMPLATE-UPLOAD-SUCCESS":"Template successfully uploaded"
} }
}, },
"DYNAMIC-FORM": { "DYNAMIC-FORM": {

View File

@ -718,6 +718,10 @@
"CANCEL": "Otkažite", "CANCEL": "Otkažite",
"NEXT": "Sledeće", "NEXT": "Sledeće",
"ERROR-MESSAGE": "Ne sadrži obrazac za podatke" "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": { "DMP-OVERVIEW": {
@ -744,6 +748,10 @@
"MULTIPLE-DIALOG": { "MULTIPLE-DIALOG": {
"ZENODO-LOGIN": "Prijavite se pomoću Zenodo naloga", "ZENODO-LOGIN": "Prijavite se pomoću Zenodo naloga",
"USE-DEFAULT": "Koristite podrazumevani znak" "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": { "DATASET-OVERVIEW": {
@ -751,6 +759,10 @@
"ERROR": { "ERROR": {
"DELETED-DATASET": "Traženi skup podataka je obrisan", "DELETED-DATASET": "Traženi skup podataka je obrisan",
"FORBIDEN-DATASET": "Nije Vam dozvoljeno da pristupite ovom skupu podataka" "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": { "DATASET-LISTING": {
@ -896,6 +908,11 @@
"DELETE": "Obrišite", "DELETE": "Obrišite",
"FINALIZE": "Dovršite", "FINALIZE": "Dovršite",
"DOWNLOAD-XML": "Preuzmite XML" "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": { "GRANT-EDITOR": {
@ -1060,6 +1077,7 @@
}, },
"DMP-PROFILE-LISTING": { "DMP-PROFILE-LISTING": {
"TITLE": "Obrasci za Planove", "TITLE": "Obrasci za Planove",
"CREATE-DMP-TEMPLATE": "Create DMP Template",
"COLUMNS": { "COLUMNS": {
"NAME": "Ime", "NAME": "Ime",
"STATUS": "Status", "STATUS": "Status",
@ -1073,6 +1091,13 @@
"UPLOAD-XML-NAME": "Ime obrasca za Plan", "UPLOAD-XML-NAME": "Ime obrasca za Plan",
"UPLOAD-XML-IMPORT": "Datoteka", "UPLOAD-XML-IMPORT": "Datoteka",
"UPLOAD-XML-FILE-CANCEL": "Otkažite" "UPLOAD-XML-FILE-CANCEL": "Otkažite"
},
"STATUS":{
"DRAFT": "Draft",
"FINALIZED": "Finalized"
},
"MESSAGES":{
"TEMPLATE-UPLOAD-SUCCESS":"Template successfully uploaded"
} }
}, },
"DYNAMIC-FORM": { "DYNAMIC-FORM": {

View File

@ -718,6 +718,10 @@
"CANCEL": "İptal", "CANCEL": "İptal",
"NEXT": "İleri", "NEXT": "İleri",
"ERROR-MESSAGE": "Bu Veri Seti Şablonunu İçermiyor" "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": { "DMP-OVERVIEW": {
@ -744,6 +748,10 @@
"MULTIPLE-DIALOG": { "MULTIPLE-DIALOG": {
"ZENODO-LOGIN": "Zenodo ile oturum aç", "ZENODO-LOGIN": "Zenodo ile oturum aç",
"USE-DEFAULT": "Mevcut Jetonu Kullan" "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": { "DATASET-OVERVIEW": {
@ -751,6 +759,10 @@
"ERROR": { "ERROR": {
"DELETED-DATASET": "Seçili Veri Seti silindi", "DELETED-DATASET": "Seçili Veri Seti silindi",
"FORBIDEN-DATASET": "Bu veri setine erişim izniniz yok" "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": { "DATASET-LISTING": {
@ -896,6 +908,11 @@
"DELETE": "Sil", "DELETE": "Sil",
"FINALIZE": "Tamamla", "FINALIZE": "Tamamla",
"DOWNLOAD-XML": "XML İndir" "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": { "GRANT-EDITOR": {
@ -1060,6 +1077,7 @@
}, },
"DMP-PROFILE-LISTING": { "DMP-PROFILE-LISTING": {
"TITLE": "VYP Şablonları", "TITLE": "VYP Şablonları",
"CREATE-DMP-TEMPLATE": "Create DMP Template",
"COLUMNS": { "COLUMNS": {
"NAME": "İsim", "NAME": "İsim",
"STATUS": "Durum", "STATUS": "Durum",
@ -1073,6 +1091,13 @@
"UPLOAD-XML-NAME": "VYP Şablonu İsmi", "UPLOAD-XML-NAME": "VYP Şablonu İsmi",
"UPLOAD-XML-IMPORT": "Dosya", "UPLOAD-XML-IMPORT": "Dosya",
"UPLOAD-XML-FILE-CANCEL": "İptal" "UPLOAD-XML-FILE-CANCEL": "İptal"
},
"STATUS":{
"DRAFT": "Draft",
"FINALIZED": "Finalized"
},
"MESSAGES":{
"TEMPLATE-UPLOAD-SUCCESS":"Template successfully uploaded"
} }
}, },
"DYNAMIC-FORM": { "DYNAMIC-FORM": {