import { Component, OnInit, Input, ViewChild, NgZone, Output, EventEmitter } from '@angular/core'; import { GoogleSignInSuccess } from 'angular-google-signin'; 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'; import { Dmp } from '../entities/model/dmp'; import {DataTable} from 'angular2-datatable'; import { DropdownField } from '../../app/form/fields/dropdown/field-dropdown'; import { Param } from '../entities/model/param'; import { StatusToString } from '../pipes/various/status-to-string'; declare var $: any; @Component({ selector: 'datasets-table', templateUrl: 'dataset.html', styleUrls: ['./dataset.component.css'], providers: [ServerService] }) 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; public sortBy = "label"; public sortOrder = "asc"; //visibility rules for containers tableVisible: boolean = true; editorVisible: boolean = false; // for tableIds showIDs : boolean = false; // END ALTERNATIVE returnUrl: string; @Input() datasets: Dataset[]; @Input() datasetProfileDropDown: DropdownField; @Input() datasetCount = 0; @Input() dmpIdforDatasets: string; @Input() dmpLabelforDatasets: string; @Input() statusDropDown: DropdownField; dataset: any; saveAndDescribe:boolean; dataSetValue: boolean @Input() get dataSetVisibe() { return this.dataSetValue; } @Output() public dataSetValueChange = new EventEmitter(); set dataSetVisibe(value: any) { this.dataSetValue = value this.dataSetValueChange.emit(this.dataSetValue) } constructor( private serverService: ServerService, private route: ActivatedRoute, private router: Router, private ngZone: NgZone) { this.dataset = this.createEmptyDataset(); this.datasetProfileDropDown = new DropdownField(); this.datasetProfileDropDown.options = []; this.saveAndDescribe = false; this.statusDropDown = new DropdownField(); this.statusDropDown.options= [{key:'', value:null},{key:'0', value:"Active"},{key:'1', value:"Inactive"}] } ngOnInit() { //this.projects = this.serverService.getDummyProjects(); this.datasets = []; console.log(this.dmpIdforDatasets); this.serverService.getDatasetForDmp({ "id": this.dmpIdforDatasets }).subscribe( response => { this.tableData = response; } ); 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); }); } ) } createEmptyDataset(){ return { id: null, label: '', reference: '', uri: '', properties: '', profile: { "id": '' }, dmp: { "id": '' } } } SaveDataset(){ 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 => { console.log(response); this.getDatasets(); if (this.saveAndDescribe == true) this.describeDataset(response); } ) $("#newDatasetModal").modal("hide"); } else{ this.dataset.dmp = { "id": this.dmpIdforDatasets } this.dataset.profile = { "id": this.dataset.profile } this.serverService.updateDatsetsProfile(this.dataset).subscribe( response => { console.log(response); this.getDatasets(); if (this.saveAndDescribe == true) this.describeDataset(response); } ) $("#newDatasetModal").modal("hide"); } } getDatasets(){ this.serverService.getDatasetForDmp({ "id": this.dmpIdforDatasets }).subscribe( response => { this.tableData = response; } ); } getDatasetForDmpMethod(dmpid) { this.serverService.getDatasetForDmp({ "id": dmpid }).subscribe( response => { this.tableData = response; } ); } editRow(item, event) { if (event.toElement.id == "editDataset"){ this.dataset = item; this.dataset.label = item.label; this.dataset.uri = item.uri; //this.dataset.dmp = item.dmp; this.dataset.profile = item.profile==null ? null : item.profile.id; this.dataset.id = item.id; $("#newDatasetModal").modal("show"); } else if(event.toElement.id == "describeDataset"){ this.describeDataset(item); } } newDataset() { this.dataset = this.createEmptyDataset(); this.dataset.dmp =this.dmpLabelforDatasets; this.dataset.status = 0; $("#newDatasetModal").modal("show"); } SaveDescribeDataset(){ this.saveAndDescribe = true; this.SaveDataset(); } describeDataset(item) { this.ngZone.run(() => this.router.navigate(['dynamic-form', {id: item.profile.id, datasetId:item.id}])); } deleteRow(dataset, $event){ this.serverService.deleteDataset(dataset).subscribe( response => { console.log("Deleted Successfully the dataset") }, err => { console.log("Could not delete the dataset") } ); this.getDatasets(); } }