269 lines
14 KiB
HTML
269 lines
14 KiB
HTML
<table class="table table-striped customTable" [mfData]="tableData | dmpTableFilter : filterQuery | dmpVersionFilter : versionFilter |dmpstatusFilter: statusFilter"
|
|
#mf="mfDataTable" [mfRowsOnPage]="rowsOnPage" [(mfSortBy)]="sortBy" [(mfSortOrder)]="sortOrder">
|
|
<thead>
|
|
<tr class="rowFilter">
|
|
<th colspan="1">
|
|
<input class="form-control" [(ngModel)]="filterQuery" placeholder='Search in Labels' />
|
|
</th>
|
|
<th colspan="1">
|
|
<button class="btn btn-default " (click)="getDmps('false')">
|
|
<span class="glyphicon glyphicon-refresh"></span>
|
|
</button>
|
|
</th>
|
|
|
|
<th class="rowFilterTopBorder" colspan="3">
|
|
<button type="button" class="btn btn-info btnMoreFilters" data-toggle="collapse" data-target="#demo" (click)="clickFilters($event.target)">More filters</button>
|
|
<div id="demo" class="collapse">
|
|
<input style="margin-top: 5px;" class="form-control" type="number" [(ngModel)]="versionFilter" placeholder='Version' />
|
|
<select style="margin-top: 5px;" class="form-control" [id]="statusid" [(ngModel)]="statusFilter" [name]="statusDropDown"
|
|
#datasetfield>
|
|
<option *ngFor="let opt of statusDropDown.options" [value]="opt.key">{{opt.value}}</option>
|
|
</select>
|
|
</div>
|
|
</th>
|
|
|
|
<!--
|
|
<th style="display: table-row;" class="container rowFilterTopBorder" colspan="3">
|
|
<button style="display: table-cell;" type="button" class="btn btn-info btnMoreFilters" data-toggle="collapse" data-target="#more-filters" (click)="clickFilters($event.target)">More filters</button>
|
|
<div style="display: table-cell;" id="more-filters" class="collapse width">
|
|
<div style="display: table-row;">
|
|
<input style="display: table-cell; width:45%; margin-top: 5px;" class="form-control contentwrapper" type="number" [(ngModel)]="versionFilter" placeholder='Version' />
|
|
<select style="display: table-cell; width:45%; margin-top: 5px;" class="form-control contentwrapper" [id]="statusid" [(ngModel)]="statusFilter" [name]="statusDropDown" #datasetfield>
|
|
<option *ngFor="let opt of statusDropDown.options" [value]="opt.key">{{opt.value}}</option>
|
|
</select>
|
|
</div>
|
|
</div>
|
|
</th>
|
|
-->
|
|
|
|
</tr>
|
|
|
|
<tr>
|
|
<th [ngClass]="{true:'visible', false:'invisible'}[showIDs]">
|
|
<mfDefaultSorter by="id">ID</mfDefaultSorter>
|
|
</th>
|
|
<th>
|
|
<mfDefaultSorter by="label">Label</mfDefaultSorter>
|
|
</th>
|
|
<th>
|
|
<mfDefaultSorter by="version">Version</mfDefaultSorter>
|
|
</th>
|
|
<th>
|
|
<mfDefaultSorter by="previous">Previous</mfDefaultSorter>
|
|
</th>
|
|
<th>
|
|
<mfDefaultSorter by="project">Project</mfDefaultSorter>
|
|
</th>
|
|
<th>
|
|
<mfDefaultSorter by="description">Description</mfDefaultSorter>
|
|
</th>
|
|
<th>
|
|
<mfDefaultSorter by="created">Created at</mfDefaultSorter>
|
|
</th>
|
|
<th>
|
|
<mfDefaultSorter by="status">Status</mfDefaultSorter>
|
|
</th>
|
|
<th>
|
|
Actions
|
|
</th>
|
|
<th>
|
|
|
|
</th>
|
|
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr class="grayout-empty-table" *ngIf="!mf.data[0]">
|
|
<td colspan="5">No elements</td>
|
|
</tr>
|
|
|
|
<tr *ngFor="let dmp of mf.data" class="hover">
|
|
<td [ngClass]="{true:'visible', false:'invisible'}[showIDs]">{{dmp?.id}}</td>
|
|
<!-- data-toggle="modal" data-target="#dmp-deatils-fullscreen" -->
|
|
<td>{{(dmp?.label?.length > 40) ? (dmp?.label | slice:0:40)+'...':(dmp?.label) }}
|
|
<span class="url-like" (click)="viewDetailedDMP(dmp)">(info)</span>
|
|
</td>
|
|
<td style="width:20px;">{{dmp?.version}}</td>
|
|
<td style="width:300px;">{{(dmp?.previous?.label?.length > 40) ? (dmp?.previous?.label | slice:0:40)+'...':(dmp?.previous?.label) }}</td>
|
|
<td>{{(dmp?.project?.label?.length > 40) ? (dmp?.project?.label | slice:0:40)+'...':(dmp?.project?.label) }}
|
|
<span class="url-like" (click)="viewDetailedProject(dmp)">(info)</span>
|
|
</td>
|
|
<td>{{(dmp?.description?.length > 40) ? (dmp?.description | slice:0:40)+'...':(dmp?.description) }}</td>
|
|
<td>{{dmp?.created | date:'yyyy-MM-dd HH:mm:ss Z'}}</td>
|
|
<td>{{dmp?.status | statusToString }}</td>
|
|
<td>
|
|
<a class="editGridColumn cursor-link" (click)="editDmp(dmp)">
|
|
<!--btn btn-primary btn-rounded css for button style -->
|
|
<i class="fa fa-pencil fa-fw" data-toggle="tooltip" title="Edit" id="editDMP"></i>
|
|
</a>
|
|
<a class="editGridColumn cursor-link" (click)="cloneDmp(dmp)">
|
|
<i class="fa fa-clone fa-fw" data-toggle="tooltip" title="Clone" id="changeVersionDMP"></i>
|
|
</a>
|
|
<a class="editGridColumn cursor-link" (click)="markDMPForDelete(dmp)">
|
|
<i class="fa fa-eraser fa-fw" data-toggle="modal" data-target="#delete-dmp-confirm" title="Delete"></i>
|
|
</a>
|
|
</td>
|
|
<td style="max-width:100px;">
|
|
<button type="button" class="btn btn-default table-button" (click)="showDatasetsOfDmp(dmp)">
|
|
<i class="fa fa-folder-o" aria-hidden="true"></i> Datasets</button>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
<tfoot>
|
|
<tr>
|
|
<td colspan="1">
|
|
<button type="button" class="btn btn-info btncustom" (click)="newDmpForm(item)">Create New</button>
|
|
</td>
|
|
<td colspan="8">
|
|
<mfBootstrapPaginator [rowsOnPageSet]="[5,10,20]"></mfBootstrapPaginator>
|
|
</td>
|
|
</tr>
|
|
</tfoot>
|
|
</table>
|
|
<!-- </div> -->
|
|
|
|
<!--Modal for new and edit DMP-->
|
|
<div class="modal fade" id="newDmpModal" tabindex="-1" role="dialog" aria-labelledby="newDmpModalLabel" aria-hidden="true">
|
|
<div class="modal-dialog" role="document">
|
|
<div class="modal-content">
|
|
<div class="modal-header centered-text">
|
|
<h4 class="modal-title" id="modalLabel">
|
|
<b>{{ dmp?.id ? "Edit Data Management Plan" : "New Data Management Plan" }}</b>
|
|
</h4>
|
|
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
|
<span aria-hidden="true">×</span>
|
|
</button>
|
|
</div>
|
|
<div class="modal-body">
|
|
<form #dmpForm="ngForm" (ngSubmit)="SaveNewDmp()">
|
|
<div class="form-group">
|
|
<div class="form-group">
|
|
<label for="label-name" class="form-control-label">Label:</label>
|
|
<input type="text" class="form-control" id="label-name" [ngModel]="dmp?.label" (ngModelChange)="dmp.label=$event" name="label"
|
|
required>
|
|
</div>
|
|
<label for="recipient-name" class="col-form-label">Project:</label>
|
|
<select class="form-control" id="projectsDropDownKey" [ngModel]="dmp?.project" (ngModelChange)="dmp.project=$event" name="projectsDropDown"
|
|
required>
|
|
<option *ngFor="let opt of projectsDropDown.options" [value]="opt.key">{{opt.value}}</option>
|
|
</select>
|
|
</div>
|
|
<div class="form-group">
|
|
<label for="status-name" class="col-form-label">Status:</label>
|
|
<select class="form-control" id="statusid" [ngModel]="dmp?.status" (ngModelChange)="dmp.status=$event" name="statusDropDown"
|
|
(change)="SelectDMPStatus(dmp, $event, oldValue);">
|
|
<option *ngFor="let opt of statusDropDown.options" [value]="opt.key">{{opt.value}}</option>
|
|
</select>
|
|
</div>
|
|
<div class="form-group">
|
|
<label for="label-name" class="form-control-label">Previous:</label>
|
|
<input type="text" class="form-control" id="label-previous" [ngModel]="dmp?.previous" (ngModelChange)="dmp.previous=$event"
|
|
name="previous" disabled>
|
|
</div>
|
|
<div class="form-group">
|
|
<label for="abbreviation-text" class="form-control-label">Version:</label>
|
|
<input class="form-control" id="abbreviation-text" [ngModel]="dmp?.version" (ngModelChange)="dmp.version=$event" name="version"
|
|
disabled>
|
|
</div>
|
|
<div class="form-group">
|
|
<label for="abbreviation-text" class="form-control-label">Description:</label>
|
|
<textarea rows="3" class="form-control" id="abbreviation-text" [ngModel]="dmp?.description" (ngModelChange)="dmp.description=$event"
|
|
name="description"></textarea>
|
|
</div>
|
|
<div class="form-group">
|
|
<label for="organizations-dropdown" class="form-control-label">Organizations:</label>
|
|
<p-autoComplete id="organizations-dropdown" [(ngModel)]="dmp.organizations" [suggestions]="filteredOrganizations" (completeMethod)="searchOrganizations($event)"
|
|
[minLength]="1" name="organizations" [multiple]="true" emptyMessage="No results found!" field="name">
|
|
</p-autoComplete>
|
|
</div>
|
|
<div class="form-group">
|
|
<label for="researchers-dropdown" class="form-control-label">Researchers:</label>
|
|
<p-autoComplete id="researchers-dropdown" [(ngModel)]="dmp.researchers" [suggestions]="filteredResearchers" (completeMethod)="searchResearchers($event)"
|
|
[minLength]="1" name="researchers" [multiple]="true" emptyMessage="No results found!" field="name">
|
|
</p-autoComplete>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
<div class="modal-footer">
|
|
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
|
|
<button type="submit" class="btn btn-primary" (click)="SaveDmp();">Save Dmp</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<!--Modal for changing version-->
|
|
<div class="modal fade" id="newVersionDmpModal" tabindex="-1" role="dialog" aria-labelledby="newVersionDmpModalLabel" aria-hidden="true">
|
|
<div class="modal-dialog" role="document">
|
|
<div class="modal-content">
|
|
<div class="modal-header">
|
|
<h4 class="modal-title" id="modalLabel">
|
|
<b>Clone Data Management Plan</b>
|
|
</h4>
|
|
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
|
<span aria-hidden="true">×</span>
|
|
</button>
|
|
</div>
|
|
<div class="modal-body">
|
|
<form #dmpForm="ngForm" (ngSubmit)="SaveNewDmp()">
|
|
<div class="form-group">
|
|
<label for="label-name" class="form-control-label">Label:</label>
|
|
<input type="text" class="form-control" id="label-name" [ngModel]="dmp?.label" (ngModelChange)="dmp.label=$event" name="label">
|
|
</div>
|
|
<div class="form-group" hidden>
|
|
<label for="recipient-name" class="col-form-label">Project:</label>
|
|
<select class="form-control" [id]="projectsDropDownKey" [ngModel]="dmp?.project" (ngModelChange)="dmp.project=$event" [name]="projectsDropDown"
|
|
#datasetfield>
|
|
<option *ngFor="let opt of projectsDropDown.options" [value]="opt.key">{{opt.value}}</option>
|
|
</select>
|
|
</div>
|
|
|
|
|
|
<div class="form-group" hidden>
|
|
<label for="label-name" class="form-control-label">Previous:</label>
|
|
<input type="text" class="form-control" id="label-previous" [ngModel]="dmp?.previous" (ngModelChange)="dmp.previous=$event"
|
|
name="previous">
|
|
</div>
|
|
<div class="form-group" hidden>
|
|
<label for="abbreviation-text" class="form-control-label">Version:</label>
|
|
<input class="form-control" id="abbreviation-text" [ngModel]="dmp?.version" (ngModelChange)="dmp.version=$event" name="version">
|
|
</div>
|
|
</form>
|
|
</div>
|
|
<div class="modal-footer">
|
|
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
|
|
<button type="submit" class="btn btn-primary" [disabled]="!dmpForm.form.valid" (click)="cloneDMP(dmp);">Save Dmp</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="modal" tabindex="-1" id="messageForChangingStatus" role="dialog">
|
|
<div class="modal-dialog" role="document">
|
|
<div class="modal-content">
|
|
<div class="modal-header">
|
|
<h5 class="modal-title">Change Staus</h5>
|
|
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
|
<span aria-hidden="true">×</span>
|
|
</button>
|
|
</div>
|
|
<div class="modal-body">
|
|
<p>The submitted status is available only when all the DMP's datasets are "Submitted" or "Cancel"</p>
|
|
</div>
|
|
<div class="modal-footer">
|
|
<button type="button" class="btn btn-secondary" data-dismiss="modal">OK</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
<router-outlet></router-outlet>
|
|
|
|
|
|
|
|
<!-- Confirmation module- do not delete -->
|
|
<confirmation [confirmationID]="'delete-dmp-confirm'" [confirmationTitle]="'Caution'" [confirmationDescr]="'This action will delete this DMP. Are you sure ? This is not revertable !'"
|
|
(responseSender)="deleteDMP($event)"></confirmation> |