Merge branch 'master' of git@gitlab.eudat.eu:dmp/OpenAIRE-EUDAT-DMP-service-pilot.git

This commit is contained in:
Nikolaos Laskaris 2017-10-27 20:07:56 +03:00
commit d6da77b75a
8 changed files with 242 additions and 38 deletions

View File

@ -6,6 +6,10 @@ import { Project } from '../entities/model/project';
import { Dataset } from '../entities/model/dataset'; import { Dataset } from '../entities/model/dataset';
import { Dmp } from '../entities/model/dmp'; import { Dmp } from '../entities/model/dmp';
import { DataTable, DataTableTranslations, DataTableResource } from 'angular-4-data-table-bootstrap-4'; import { DataTable, DataTableTranslations, DataTableResource } from 'angular-4-data-table-bootstrap-4';
import { DropdownField } from '../../app/form/fields/dropdown/field-dropdown';
import { Param } from '../entities/model/param';
declare var $ :any;
@Component({ @Component({
selector: 'datasets-table', selector: 'datasets-table',
@ -31,10 +35,13 @@ export class DatasetsComponent implements OnInit{
returnUrl: string; returnUrl: string;
@Input() datasets: Dataset[]; @Input() datasets: Dataset[];
@Input() datasetProfileDropDown: DropdownField;
datasetResource :DataTableResource<Dataset>; datasetResource :DataTableResource<Dataset>;
@Input() datasetCount = 0; @Input() datasetCount = 0;
@Input() dmpIdforDatasets: string;
dataset:any;
@ViewChild(DataTable) projectsTable; //@ViewChild(DataTable) projectsTable;
dataSetValue:boolean dataSetValue:boolean
@Input() @Input()
@ -54,13 +61,26 @@ export class DatasetsComponent implements OnInit{
private route: ActivatedRoute, private route: ActivatedRoute,
private router: Router, private router: Router,
private ngZone: NgZone){ private ngZone: NgZone){
this.dataset = {
id:null,
label:'',
reference:'',
uri:'',
properties:'',
profile:{"id": ''},
dmp:{"id": ''}
}
this.datasetProfileDropDown = new DropdownField();
this.datasetProfileDropDown.options = [];
} }
ngOnInit() { ngOnInit() {debugger;
//this.projects = this.serverService.getDummyProjects(); //this.projects = this.serverService.getDummyProjects();
this.datasets = []; this.datasets = [];
this.serverService.getAllDataSet().subscribe( console.log(this.dmpIdforDatasets);
this.serverService.getDatasetForDmp({"id":this.dmpIdforDatasets}).subscribe(
response => { response => {
console.log("response"); console.log("response");
@ -78,11 +98,26 @@ export class DatasetsComponent implements OnInit{
}); });
} }
); );
this.serverService.getAllDatsetsProfile().subscribe(
response => {
console.log("response");
console.log(response);
//let params = new Param();
response.forEach((datasetprofile) => {
let params = new Param();
params.key = datasetprofile.id;
params.value = datasetprofile.label;
this.datasetProfileDropDown.options.push(params);
});
}
)
} }
reloadDatasets(params) { reloadDatasets(params) {
this.datasetResource = new DataTableResource(this.datasets); this.datasetResource = new DataTableResource(this.datasets);
this.datasetResource.query(params).then(projects => this.datasets = projects); this.datasetResource.query(params).then(datasets => this.datasets = datasets);
} }
afterLoad(){ afterLoad(){
@ -94,6 +129,37 @@ rowClick(rowEvent){
this.ngZone.run(() => this.router.navigateByUrl('dynamic-form', rowEvent.row.item.id)); this.ngZone.run(() => this.router.navigateByUrl('dynamic-form', rowEvent.row.item.id));
} }
SaveNewDataset(){debugger;
this.dataset.dmp={"id": this.dmpIdforDatasets}
this.dataset.profile = {"id": this.dataset.profile}
this.serverService.createDatasetForDmp(this.dataset).subscribe(
response=>{
console.log(response);
}
)
$("#newDatasetModal").modal("hide");
this.serverService.getDatasetForDmp({"id":this.dmpIdforDatasets}).subscribe(
response => {
console.log("response");
console.log(response);
this.datasets = [];
response.forEach(resp => {
let dt = new Dataset();
dt.id = resp.id;
dt.name = resp.label;
dt.uriDataset = resp.uri;
this.datasets.push(dt);
var params = {limit:8,offset:0, sortAsc:false}
this.afterLoad();
this.datasetResource.query(params).then(datasets => this.datasets = datasets);
});
}
);
}
// special params: // special params:
translations = <DataTableTranslations>{ translations = <DataTableTranslations>{
indexColumn: 'Index column', indexColumn: 'Index column',
@ -103,6 +169,26 @@ rowClick(rowEvent){
paginationRange: 'Result range' paginationRange: 'Result range'
}; };
getDatasetForDmpMethod(dmpid){
this.serverService.getDatasetForDmp({"id":dmpid}).subscribe(
response => {
console.log("response");
console.log(response);
this.datasets = [];
response.forEach(resp => {
let dt = new Dataset();
dt.id = resp.id;
dt.name = resp.label;
dt.uriDataset = resp.uri;
this.datasets.push(dt);
var params = {limit:8,offset:0, sortAsc:false}
this.afterLoad();
this.datasetResource.query(params).then(datasets => this.datasets = datasets);
});
}
);
}
} }

View File

@ -15,10 +15,65 @@
</data-table-column> --> </data-table-column> -->
</data-table> </data-table>
<div style="margin-top: 10px"> <div style="margin-top: 10px">
<button type="button" class="btn btn-info">New Dataset</button> <button type="button" class="btn btn-info" data-toggle="modal" data-target="#newDatasetModal">New Dataset</button>
<!-- <b>Selected:</b> <!-- <b>Selected:</b>
<span *ngIf="projectsTable.selectedRow == null"><i>No item selected</i></span> <span *ngIf="projectsTable.selectedRow == null"><i>No item selected</i></span>
<span [textContent]="projectsTable.selectedRow && projectsTable.selectedRow.item.name"></span> --> <span [textContent]="projectsTable.selectedRow && projectsTable.selectedRow.item.name"></span> -->
</div> </div>
</div> </div>
<div class="modal fade" id="newDatasetModal" tabindex="-1" role="dialog" aria-labelledby="newDatasetModalLabel" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">Create New DMP</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<form #newProjectForm="ngForm" (ngSubmit)="SaveNewDmp()">
<div class="form-group">
<label for="recipient-name" class="col-form-label">Dataset Profile:</label>
<select class="form-control" [id]="datasetProfileDropDownKey" [(ngModel)]="dataset.profile" [name]="datasetProfileDropDown" #datasetfield>
<option *ngFor="let opt of datasetProfileDropDown.options" [value]="opt.key">{{opt.value}}</option>
</select>
</div>
<div class="form-group">
<label for="label-name" class="form-control-label">Label:</label>
<input type="text" class="form-control" id="label-name" [(ngModel)]= "dataset.label" name = "label">
</div>
<!-- <div class="form-group">
<label for="abbreviation-text" class="form-control-label">Abbreviation:</label>
<input class="form-control" id="abbreviation-text" [(ngModel)]= "dataset.abbreviation" name = "abbreviation">
</div> -->
<div class="form-group">
<label for="reference-text" class="form-control-label">Reference:</label>
<input class="form-control" id="reference-text" [(ngModel)]= "dataset.reference" name = "reference">
</div>
<div class="form-group">
<label for="uri-text" class="form-control-label">Uri:</label>
<input class="form-control" id="uri-text" [(ngModel)]= "dataset.uri" name = "uri">
</div>
<!-- <div class="form-group">
<label for="start-date" class="form-control-label">Start Date:</label>
<input class="form-control" id="startDate-date" [(ngModel)]= "dataset.startDate" name = "startDate">
</div>
<div class="form-group">
<label for="end-date" class="form-control-label">End Date:</label>
<input class="form-control" id="endDate-date" [(ngModel)]= "dataset.endDate" name = "endDate">
</div> -->
<div class="form-group">
<label for="code-name" class="form-control-label">Code:</label>
<input type="text" class="form-control" id="code-name" disabled>
</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)="SaveNewDataset();">Save Dmp</button>
</div>
</div>
</div>
</div>

View File

@ -1,4 +1,4 @@
import { Component, OnInit, Input, Output, EventEmitter, ViewChild } from '@angular/core'; import { Component, OnInit, Input, Output, EventEmitter, ViewChild } from '@angular/core';
import {GoogleSignInSuccess} from 'angular-google-signin'; import {GoogleSignInSuccess} from 'angular-google-signin';
import { Router, ActivatedRoute } from '@angular/router'; import { Router, ActivatedRoute } from '@angular/router';
import { ServerService } from '../../app/services/server.service'; import { ServerService } from '../../app/services/server.service';
@ -12,6 +12,9 @@ import { ModalComponent } from '../modal/modal.component';
import { HttpErrorResponse } from '@angular/common/http'; import { HttpErrorResponse } from '@angular/common/http';
import { FormGroup, FormControl } from '@angular/forms'; //na dw an xreiazontai import { FormGroup, FormControl } from '@angular/forms'; //na dw an xreiazontai
import { NgForm } from '@angular/forms'; import { NgForm } from '@angular/forms';
import { DatasetsComponent } from '../datasets/dataset.component';
declare var $ :any;
@Component({ @Component({
selector: 'dmps', selector: 'dmps',
@ -23,13 +26,16 @@ export class DmpComponent implements OnInit{
@Input() dmps: Dmp[]; @Input() dmps: Dmp[];
dmp:any; dmp:any;
dmpResource :DataTableResource<Dmp>; dmpResource :DataTableResource<Dmp>;
dmpIdforDatasets: string;
@Input() dmpCount = 0; @Input() dmpCount = 0;
@Input() projectsDropDown:DropdownField; @Input() projectsDropDown:DropdownField;
//@Input() dataSetVisibe:boolean; @Input() dataSetVisibe:boolean;
@Input() projects: Project[]; @Input() projects: Project[];
@ViewChild(DataTable) dmpsTable; @ViewChild(DataTable) dmpsTable;
@ViewChild(DataTable) datasetsTable; @ViewChild(DataTable) datasetsTable;
@ViewChild(DatasetsComponent) datasetsComponent:DatasetsComponent;
@ViewChild('isignOutBtn') isignOutBtn; @ViewChild('isignOutBtn') isignOutBtn;
constructor( constructor(
@ -39,6 +45,7 @@ export class DmpComponent implements OnInit{
this.projectsDropDown = new DropdownField(); this.projectsDropDown = new DropdownField();
this.projectsDropDown.options = []; this.projectsDropDown.options = [];
this.projects = []; this.projects = [];
this.dataSetVisibe = false;
this.dmp = { this.dmp = {
label: '', label: '',
abbreviation:'', abbreviation:'',
@ -56,14 +63,15 @@ export class DmpComponent implements OnInit{
this.dmps = []; this.dmps = [];
this.serverService.getDmpOfUser().subscribe( this.serverService.getDmpOfUser().subscribe(
response => { response => {
console.log(response);
response.forEach(resp => { response.forEach(resp => {
let pr = new Dmp(); let dmp = new Dmp();
pr.id = resp.id; dmp.id = resp.id;
pr.id = resp.label; dmp.label = resp.label;
pr.name = resp.abbreviation; dmp.version = resp.version;
pr.dataset = resp.definition; dmp.dataset = resp.dataset;
this.dmps.push(pr); dmp.projectLabel = resp.project.label;
this.dmps.push(dmp);
var params = {limit:8,offset:0, sortAsc:false} var params = {limit:8,offset:0, sortAsc:false}
this.afterLoad(); this.afterLoad();
this.dmpResource.query(params).then(dmps => this.dmps = dmps); this.dmpResource.query(params).then(dmps => this.dmps = dmps);
@ -111,14 +119,14 @@ afterLoad(){
this.dmpResource.count().then(count => this.dmpCount = count); this.dmpResource.count().then(count => this.dmpCount = count);
} }
myFunction() { filterGrid() {
var input, filter, table, tr, td, i; var input, filter, table, tr, td, i;
input = document.getElementById("myInput"); input = document.getElementById("myInput");
filter = input.value.toUpperCase(); filter = input.value.toUpperCase();
table = document.getElementById("projects-grid"); table = document.getElementById("dmps-grid");
tr = table.getElementsByTagName("tr"); tr = table.getElementsByTagName("tr");
for (i = 0; i < tr.length; i++) { for (i = 0; i < tr.length; i++) {
td = tr[i].getElementsByTagName("td")[3]; td = tr[i].getElementsByTagName("td")[4];
if (td) { if (td) {
if (td.innerText.toUpperCase().indexOf(filter) > -1) { if (td.innerText.toUpperCase().indexOf(filter) > -1) {
tr[i].style.display = ""; tr[i].style.display = "";
@ -142,8 +150,27 @@ SaveNewDmp(){
response =>{ response =>{
console.log("response"); console.log("response");
console.log(response); console.log(response);
this.dmps = [];
this.serverService.getDmpOfUser().subscribe(
response => {
response.forEach(resp => {
let dmp = new Dmp();
dmp.id = resp.id;
dmp.label = resp.label;
dmp.version = resp.version;
dmp.dataset = resp.dataset;
dmp.projectLabel = resp.project.label;
this.dmps.push(dmp);
var params = {limit:8,offset:0, sortAsc:false}
this.afterLoad();
this.dmpResource.query(params).then(dmps => this.dmps = dmps);
}
);
});
} }
); );
$("#newDmpModal").modal("hide");
} }
// special params: // special params:
@ -159,5 +186,22 @@ signOut() {
    this.serverService.logOut();     this.serverService.logOut();
} }
selectDmp(rowEvent){debugger;
this.dmpIdforDatasets = rowEvent.row.item.id;
if(this.dataSetVisibe == false)
this.dataSetVisibe = true;
else
this.datasetsComponent.getDatasetForDmpMethod(rowEvent.row.item.id);
}
editRow(item){debugger;
this.dmp.label = item.label;
this.dmp.abbreviation = item.abbreviation;
this.dmp.uri = item.uri;
this.dmp.id = item.id;
this.dmp.project = item.project;
$("#newDmpModal").modal("show");
}
} }

View File

@ -3,14 +3,16 @@
<div style="margin: auto; max-width: 1000px; margin-top:50px"> <div style="margin: auto; max-width: 1000px; margin-top:50px">
<div> <div>
<span>Filter: </span> <span>Filter: </span>
<input type="text" id="myInput" (keyup)="myFunction()" placeholder="Search for labels.." title="Type in a name"> <input type="text" id="myInput" (keyup)="filterGrid()" placeholder="Search for projects.." title="Type in a name">
</div> </div>
<data-table id="dmps-grid" headerTitle="My Dmps" [items]="dmps" [itemCount]="dmpCount" (reload)="reloadDmps($event)" <data-table id="dmps-grid" headerTitle="My Dmps" [items]="dmps" [itemCount]="dmpCount" (reload)="reloadDmps($event)"
[limit]="8" [sortBy]="'rating'" [sortAsc]="false" [selectColumn]="true" [multiSelect]="false" [substituteRows]="false" [limit]="8" [sortBy]="'rating'" [sortAsc]="false" [selectColumn]="true" [multiSelect]="false" [substituteRows]="false"
[expandableRows]="true" [translations]="translations" [indexColumnHeader]="'#'" [selectOnRowClick]="true"> [translations]="translations" [indexColumnHeader]="'#'" [selectOnRowClick]="true" (rowClick)="selectDmp($event)">
<data-table-column [property]="'label'" [header]="'Label'" [sortable]="true"> <data-table-column [property]="'label'" [header]="'Label'" [sortable]="true">
</data-table-column> </data-table-column>
<data-table-column [property]="'projectLabel'" [header]="'project'" [sortable]="true">
</data-table-column>
<data-table-column [property]="'abbreviation'" [header]="'Abbreviation'" [sortable]="true"> <data-table-column [property]="'abbreviation'" [header]="'Abbreviation'" [sortable]="true">
</data-table-column> </data-table-column>
<data-table-column [property]="'startDate'" [header]="'Start Date'" [sortable]="true"> <data-table-column [property]="'startDate'" [header]="'Start Date'" [sortable]="true">
@ -42,7 +44,7 @@
<!-- <span *ngIf="dmpsTable.selectedRow == null"><i>No item selected</i></span> <!-- <span *ngIf="dmpsTable.selectedRow == null"><i>No item selected</i></span>
<span [textContent]="dmpsTable.selectedRow && dmpsTable.selectedRow.item.name"></span> --> <span [textContent]="dmpsTable.selectedRow && dmpsTable.selectedRow.item.name"></span> -->
</div> </div>
<button type="button" class="btn btn-info" data-toggle="modal" data-target="#exampleModal">New Dmp</button> <button type="button" class="btn btn-info" data-toggle="modal" data-target="#newDmpModal">New Dmp</button>
<!-- <select class="form-control" [id]="datasetDropDownKey" [(ngModel)]="datasetDropDownKey"> <!-- <select class="form-control" [id]="datasetDropDownKey" [(ngModel)]="datasetDropDownKey">
<option *ngFor="let opt of datasetDropDown.options" [value]="opt.key">{{opt.value}}</option> <option *ngFor="let opt of datasetDropDown.options" [value]="opt.key">{{opt.value}}</option>
@ -51,7 +53,7 @@
</div> </div>
<div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true"> <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-dialog" role="document">
<div class="modal-content"> <div class="modal-content">
<div class="modal-header"> <div class="modal-header">
@ -110,7 +112,7 @@
<!-- <modal *ngIf="item && show" [(show)]="show" [item]="item" [(dataSetVisibe)]="dataSetVisibe"></modal> --> <!-- <modal *ngIf="item && show" [(show)]="show" [item]="item" [(dataSetVisibe)]="dataSetVisibe"></modal> -->
<!--DATASET TABLE--> <!--DATASET TABLE-->
<!--<datasets-table *ngIf="dataSetVisibe" [(dataSetVisibe)]="dataSetVisibe"></datasets-table> *ngIf="dataSetVisibe == true"--> <datasets-table *ngIf="dataSetVisibe" [dmpIdforDatasets]= "dmpIdforDatasets" [(dataSetVisibe)]="dataSetVisibe"></datasets-table>
<a href="#" (click)="signOut();" #isignOutBtn >Sign out</a> <a href="#" (click)="signOut();" #isignOutBtn >Sign out</a>
<router-outlet></router-outlet> <router-outlet></router-outlet>

View File

@ -3,5 +3,11 @@ import { Injectable } from '@angular/core';
export class Dmp { export class Dmp {
id:string; id:string;
dataset: string; dataset: string;
name: string; label: string;
organisations:string;
previous:string;
profile:string;
profileData:string;
projectLabel:string;
version: number;
} }

View File

@ -15,17 +15,17 @@ export class RestBase {
this.xml2jsonOBJ = new X2JS(); this.xml2jsonOBJ = new X2JS();
} }
/*
protocol: string = "http"; protocol: string = "http";
hostname: string ="dl010.madgik.di.uoa.gr" ;//"localhost";//"dl010.madgik.di.uoa.gr";// hostname: string ="dl010.madgik.di.uoa.gr" ;//"localhost";//"dl010.madgik.di.uoa.gr";//
port: number = 8080;//8080;// port: number = 8080;//8080;//
webappname: string = "dmp-backend";//"dmp-backend-new";// webappname: string = "dmp-backend";//"dmp-backend-new";//
*/
protocol: string = "http";
/* protocol: string = "http";
hostname: string = "dionysus.di.uoa.gr" ; hostname: string = "dionysus.di.uoa.gr" ;
port: number = 7070; port: number = 7070;
webappname: string = "dmp-backend"; webappname: string = "dmp-backend";*/
proxyPath : string = this.protocol+"://"+this.hostname+":"+this.port+"/"+this.webappname+"/proxy/"; proxyPath : string = this.protocol+"://"+this.hostname+":"+this.port+"/"+this.webappname+"/proxy/";

View File

@ -106,10 +106,21 @@ export class ServerService {
public createDmpForCurrentUser(data:any){ public createDmpForCurrentUser(data:any){
debugger; return this.restBase.post("dmp/createofuser", data);
return this.restBase.post("dmp/createofuser", data);
} }
public getDatasetForDmp(data:any){
return this.restBase.post("/dmp/getdatasets", data);
}
public createDatasetForDmp(data:any){
return this.restBase.post("dataset/create", data);
}
public getAllDatsetsProfile(){
return this.restBase.get("datasetprofile/getAll");
}
logOut() { logOut() {

View File

@ -4,12 +4,12 @@ import { Component } from '@angular/core';
selector: 'my-app', selector: 'my-app',
template: ` template: `
<ul class="nav nav-tabs"> <ul class="nav nav-tabs">
<li class="nav-item">
<a class="nav-link" routerLink="dmps" routerLinkActive="active">My Dmps</a>
</li>
<li class="nav-item"> <li class="nav-item">
<a class="nav-link active" routerLink="projects" routerLinkActive="active">Projects</a> <a class="nav-link active" routerLink="projects" routerLinkActive="active">Projects</a>
</li> </li>
<li class="nav-item">
<a class="nav-link" routerLink="dmps" routerLinkActive="active">My Dmps</a>
</li>
</ul> </ul>
<router-outlet></router-outlet> <router-outlet></router-outlet>