argos/dmp-frontend/src/app/datasets/dataset.component.ts

266 lines
7.1 KiB
TypeScript
Raw Normal View History

2017-10-30 15:56:50 +01:00
import { Component, OnInit, Input, ViewChild, NgZone, Output, EventEmitter } from '@angular/core';
import { GoogleSignInSuccess } from 'angular-google-signin';
2017-10-18 18:30:39 +02:00
import { Router, ActivatedRoute } from '@angular/router';
import { ServerService } from '../../app/services/server.service';
import { Project } from '../entities/model/project';
import { Dataset } from '../entities/model/dataset';
2017-10-27 10:34:05 +02:00
import { Dmp } from '../entities/model/dmp';
import {DataTable} from 'angular2-datatable';
2017-10-27 16:08:10 +02:00
import { DropdownField } from '../../app/form/fields/dropdown/field-dropdown';
import { Param } from '../entities/model/param';
2017-11-03 18:57:06 +01:00
import { StatusToString } from '../pipes/various/status-to-string';
2017-11-07 14:07:25 +01:00
import { ConfirmationComponent } from '../widgets/confirmation/confirmation.component';
import { Ng4LoadingSpinnerService } from 'ng4-loading-spinner';
2017-10-18 18:30:39 +02:00
2017-10-30 15:56:50 +01:00
declare var $: any;
2017-10-27 18:38:31 +02:00
2017-11-07 13:04:58 +01:00
import '../../assets/custom.js';
declare function simple_notifier(type: string, title: string, message:string): any;
2017-10-18 18:30:39 +02:00
@Component({
selector: 'datasets-table',
2017-10-18 18:30:39 +02:00
templateUrl: 'dataset.html',
styleUrls: ['./dataset.component.css'],
2017-10-30 15:56:50 +01:00
providers: [ServerService]
2017-10-18 18:30:39 +02:00
})
2017-10-30 15:56:50 +01:00
export class DatasetsComponent implements OnInit {
// Start ALTERNATIVE
//whole dmp data model
tableData : any[] = new Array();
//organisation editor data model
editingOrganisation: any = {};
organisationEditorForm : any;
//required by the table
public filterQuery = "";
public rowsOnPage = 10;
2017-11-01 13:01:14 +01:00
public sortBy = "label";
public sortOrder = "asc";
2017-11-15 16:11:35 +01:00
dmpIdforDatasets: string;
// for tableIds
showIDs : boolean = false;
// END ALTERNATIVE
2017-10-18 18:30:39 +02:00
returnUrl: string;
@Input() datasets: Dataset[];
2017-10-27 16:08:10 +02:00
@Input() datasetProfileDropDown: DropdownField;
@Input() datasetCount = 0;
2017-11-15 16:11:35 +01:00
@Input() dmpLabelforDatasets: string;
2017-11-01 13:01:14 +01:00
@Input() statusDropDown: DropdownField;
2017-10-30 15:56:50 +01:00
dataset: any;
saveAndDescribe:boolean;
2017-11-01 13:01:14 +01:00
2017-11-15 16:11:35 +01:00
dataSetValue: boolean = true;
2017-10-30 15:56:50 +01:00
constructor(
2017-11-14 23:51:39 +01:00
2017-10-18 18:30:39 +02:00
private serverService: ServerService,
private route: ActivatedRoute,
private router: Router,
private ngZone: NgZone,
private spinnerService: Ng4LoadingSpinnerService) {
2017-11-15 16:11:35 +01:00
2017-11-07 11:13:54 +01:00
this.dataset = this.createEmptyDataset();
2017-10-30 15:56:50 +01:00
this.datasetProfileDropDown = new DropdownField();
this.datasetProfileDropDown.options = [];
this.saveAndDescribe = false;
2017-11-01 13:01:14 +01:00
this.statusDropDown = new DropdownField();
2017-11-15 16:11:35 +01:00
this.statusDropDown.options= [{key:'', value:null},{key:'0', value:"Active"},{key:'1', value:"Inactive"}]
2017-10-18 18:30:39 +02:00
}
2017-11-02 15:19:12 +01:00
ngOnInit() {
2017-11-15 16:11:35 +01:00
this.route
.queryParams
.subscribe(params => {
this.dmpIdforDatasets = params['dmpid'];
this.getDatasets();
});
2017-10-30 15:56:50 +01:00
2017-10-27 16:08:10 +02:00
this.serverService.getAllDatsetsProfile().subscribe(
response => {
response.forEach((datasetprofile) => {
let params = new Param();
params.key = datasetprofile.id;
params.value = datasetprofile.label;
this.datasetProfileDropDown.options.push(params);
2017-11-07 13:04:58 +01:00
},
error => {
simple_notifier("danger",null,"Could not load User's Dataset Profiles");
}
);
2017-10-27 16:08:10 +02:00
}
)
2017-10-18 18:30:39 +02:00
}
2017-11-07 11:13:54 +01:00
createEmptyDataset(){
return {
id: null,
label: '',
reference: '',
uri: '',
2017-11-15 18:32:34 +01:00
status: 0,
2017-11-07 11:13:54 +01:00
properties: '',
profile: { "id": '' },
dmp: { "id": '' }
}
}
2017-11-06 14:11:03 +01:00
SaveDataset(){
2017-11-01 16:07:51 +01:00
if(this.dataset.id ==null){
this.dataset.dmp = { "id": this.dmpIdforDatasets }
this.dataset.profile = { "id": this.dataset.profile }
this.serverService.createDatasetForDmp(this.dataset).subscribe(
response => {
2017-11-07 13:04:58 +01:00
simple_notifier("success",null,"Created dataset");
2017-11-01 16:07:51 +01:00
this.getDatasets();
if (this.saveAndDescribe == true)
this.describeDataset(response);
2017-11-07 13:04:58 +01:00
},
error=>{
simple_notifier("danger",null,"Could not create Dataset");
2017-11-01 16:07:51 +01:00
}
)
$("#newDatasetModal").modal("hide");
}
else{
2017-11-17 02:15:09 +01:00
this.dataset.dmp = { "id": this.dmpIdforDatasets };
this.dataset.profile = { "id": this.dataset.profile };
this.dataset.creator = {"id" : this.dataset.creator };
2017-11-01 16:07:51 +01:00
this.serverService.updateDatsetsProfile(this.dataset).subscribe(
response => {
2017-11-07 13:04:58 +01:00
simple_notifier("success",null,"Dataset edited");
2017-11-01 16:07:51 +01:00
this.getDatasets();
if (this.saveAndDescribe == true)
this.describeDataset(response);
2017-11-07 13:04:58 +01:00
},
error => {
simple_notifier("danger",null,"Could not edit dataset");
2017-11-01 16:07:51 +01:00
}
)
$("#newDatasetModal").modal("hide");
}
2017-10-30 17:37:17 +01:00
}
2017-11-07 13:04:58 +01:00
getDatasets(muted?: boolean){
2017-11-16 10:46:31 +01:00
this.spinnerService.show();
2017-10-30 17:37:17 +01:00
this.serverService.getDatasetForDmp({ "id": this.dmpIdforDatasets }).subscribe(
2017-11-07 13:04:58 +01:00
response => {
2017-11-01 16:07:51 +01:00
this.tableData = response;
2017-11-07 13:04:58 +01:00
if(muted && muted!=true)
simple_notifier("success",null,"Updated datasets table");
},
error => {
simple_notifier("danger",null,"Could not update datasets table");
2017-11-16 10:46:31 +01:00
},
() =>{
this.spinnerService.hide();
2017-10-30 15:56:50 +01:00
}
);
}
2017-10-30 17:37:17 +01:00
2017-10-18 18:30:39 +02:00
2017-10-30 15:56:50 +01:00
getDatasetForDmpMethod(dmpid) {
this.spinnerService.show();
2017-10-30 15:56:50 +01:00
this.serverService.getDatasetForDmp({ "id": dmpid }).subscribe(
response => {
2017-11-01 16:54:14 +01:00
this.tableData = response;
2017-11-07 13:04:58 +01:00
},
error => {
console.log("could not retrieve dataset for dpm: "+dmpid);
},
() =>{
this.spinnerService.hide();
2017-10-30 15:56:50 +01:00
}
);
}
2017-11-02 17:39:05 +01:00
editRow(item, event) {
2017-11-01 16:07:51 +01:00
if (event.toElement.id == "editDataset"){
2017-11-15 18:32:34 +01:00
//this.dataset = item;
2017-11-01 16:07:51 +01:00
this.dataset.label = item.label;
this.dataset.uri = item.uri;
2017-11-15 18:32:34 +01:00
this.dataset.created = item.created;
this.dataset.status = item.status;
2017-11-15 18:35:14 +01:00
this.dataset.description = item.description;
2017-11-01 16:07:51 +01:00
//this.dataset.dmp = item.dmp;
2017-11-06 14:11:03 +01:00
this.dataset.profile = item.profile==null ? null : item.profile.id;
2017-11-01 16:07:51 +01:00
this.dataset.id = item.id;
2017-11-17 02:15:09 +01:00
this.dataset.creator = item.creator;
2017-11-01 16:07:51 +01:00
$("#newDatasetModal").modal("show");
}
else if(event.toElement.id == "describeDataset"){
this.describeDataset(item);
}
2017-10-30 15:56:50 +01:00
}
newDataset() {
2017-11-07 11:13:54 +01:00
this.dataset = this.createEmptyDataset();
this.dataset.dmp =this.dmpLabelforDatasets;
2017-11-07 11:13:54 +01:00
this.dataset.status = 0;
2017-10-30 15:56:50 +01:00
$("#newDatasetModal").modal("show");
}
2017-10-18 18:30:39 +02:00
SaveDescribeDataset(){
this.saveAndDescribe = true;
this.SaveDataset();
}
2017-11-06 17:25:23 +01:00
describeDataset(item) {
2017-11-15 23:55:49 +01:00
this.router.navigate(['/dynamic-form'], { queryParams: {id: item.profile.id, datasetId:item.id, label: item.label}});
//this.ngZone.run(() => this.router.navigate(['dynamic-form', {id: item.profile.id, datasetId:item.id, label: item.label}]));
}
2017-11-07 14:07:25 +01:00
markDatasetForDelete(dataset){
this.dataset = dataset;
}
deleteDataset(confirmation){
if(confirmation==true)
this.deleteRow(this.dataset);
}
deleteRow(dataset){
2017-11-06 14:11:03 +01:00
this.serverService.deleteDataset(dataset).subscribe(
response => {
2017-11-07 13:04:58 +01:00
simple_notifier("success",null,"Deleted dataset");
this.getDatasets();
2017-11-06 14:11:03 +01:00
},
err => {
2017-11-17 02:15:09 +01:00
if(err.status>=200 && err.status<300)
simple_notifier("success",null,"Deleted dataset");
else
simple_notifier("danger",null,"Could not delete the dataset");
this.getDatasets();
2017-11-06 14:11:03 +01:00
}
);
}
2017-10-18 18:30:39 +02:00
}