186 lines
5.6 KiB
TypeScript
186 lines
5.6 KiB
TypeScript
import { Component, OnInit, Input, Output, EventEmitter, ViewChild } 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 { Dmp } from '../entities/model/Dmp';
|
||
import { Dataset } from '../entities/model/dataset';
|
||
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';
|
||
import { ModalComponent } from '../modal/modal.component';
|
||
import { HttpErrorResponse } from '@angular/common/http';
|
||
import { FormGroup, FormControl } from '@angular/forms'; //na dw an xreiazontai
|
||
import { NgForm } from '@angular/forms';
|
||
import { TokenService, TokenProvider } from '../services/token.service';
|
||
|
||
@Component({
|
||
selector: 'projects',
|
||
templateUrl: 'project.html',
|
||
providers: [ServerService]
|
||
})
|
||
|
||
export class ProjectsComponent implements OnInit{
|
||
returnUrl: string;
|
||
@Input() projects: Project[];
|
||
projectResource :DataTableResource<Project>;
|
||
datasetResource :DataTableResource<Dataset>;
|
||
@Input() projectCount = 0;
|
||
@Input() datasetDropDown:DropdownField;
|
||
//@Input() dataSetVisibe:boolean;
|
||
@Input() datasets: Dataset[];
|
||
project: any;
|
||
modalEditedRow: ModalComponent;
|
||
public item:any;
|
||
public show:boolean = false;
|
||
public dataSetVisibe:boolean = false;
|
||
@ViewChild(DataTable) projectsTable;
|
||
@ViewChild(DataTable) datasetsTable;
|
||
@ViewChild('isignOutBtn') isignOutBtn;
|
||
|
||
constructor(
|
||
private serverService: ServerService,
|
||
private route: ActivatedRoute,
|
||
private router: Router, private tokenService: TokenService){
|
||
this.datasetDropDown = new DropdownField();
|
||
this.datasetDropDown.options = [];
|
||
this.datasets = [];
|
||
this.project = {
|
||
label: '',
|
||
abbreviation:'',
|
||
reference:'',
|
||
uri:'',
|
||
definition:''
|
||
}
|
||
}
|
||
|
||
ngOnInit() {
|
||
|
||
gapi.load('auth2', function() {
|
||
gapi.auth2.init({});
|
||
});
|
||
//this.projects = this.serverService.getDummyProjects();
|
||
this.projects = [];
|
||
this.serverService.getProjectOfUer().subscribe( //getProjects()
|
||
response => {
|
||
|
||
|
||
response.forEach(resp => {
|
||
let pr = new Project();
|
||
pr.id = resp.id;
|
||
pr.label = resp.label;
|
||
pr.abbreviation = resp.abbreviation;
|
||
pr.definition = resp.definition;
|
||
pr.uri = resp.uri;
|
||
// pr.dmp = new Dmp();
|
||
// pr.dmp.id = resp.dmp;
|
||
// pr.dmp.id = resp.dmp != null && resp.dmp != undefined ? resp.dmp.id : null;
|
||
// pr.dataset = new Dataset();
|
||
// pr.dmp.dataset = resp.dmp !=null && resp.dmp.dataset != null ? resp.dmp.dataset.id: null;
|
||
this.projects.push(pr);
|
||
var params = {limit:8,offset:0, sortAsc:false}
|
||
this.afterLoad();
|
||
this.projectResource.query(params).then(projects => this.projects = projects);
|
||
}
|
||
);
|
||
}
|
||
// (err: HttpErrorResponse) => {
|
||
// if (err.error instanceof Error) {
|
||
// // A client-side or network error occurred. Handle it accordingly.
|
||
// console.log('An error occurred:', err.error.message);
|
||
// } else {
|
||
// // The backend returned an unsuccessful response code.
|
||
// // The response body may contain clues as to what went wrong,
|
||
// if(err.status == 401){
|
||
// this.isignOutBtn.nativeElement.click();
|
||
// }
|
||
// console.log(`Backend returned code ${err.status}, body was: ${err.error}`);
|
||
// }
|
||
// }
|
||
);
|
||
}
|
||
|
||
reloadProjects(params) {
|
||
this.projectResource = new DataTableResource(this.projects);
|
||
this.projectResource.query(params).then(projects => this.projects = projects);
|
||
}
|
||
|
||
afterLoad(){
|
||
this.projectResource = new DataTableResource(this.projects);
|
||
this.projectResource.count().then(count => this.projectCount = count);
|
||
}
|
||
|
||
getDMPs(){
|
||
this.serverService.listDmpsLabelID().subscribe(
|
||
response =>{
|
||
console.log("response");
|
||
console.log(response);
|
||
//let params = new Param();
|
||
response.forEach((dmp) => {
|
||
let params = new Param();
|
||
params.key = dmp.id;
|
||
params.value = dmp.label;
|
||
this.datasetDropDown.options.push(params);
|
||
});
|
||
|
||
}
|
||
)
|
||
}
|
||
|
||
showDatasets(){debugger; //dmpId, event
|
||
//this.dataSetVisibe = true;
|
||
|
||
}
|
||
|
||
myFunction() {
|
||
var input, filter, table, tr, td, i;
|
||
input = document.getElementById("myInput");
|
||
filter = input.value.toUpperCase();
|
||
table = document.getElementById("projects-grid");
|
||
tr = table.getElementsByTagName("tr");
|
||
for (i = 0; i < tr.length; i++) {
|
||
td = tr[i].getElementsByTagName("td")[3];
|
||
if (td) {
|
||
if (td.innerText.toUpperCase().indexOf(filter) > -1) {
|
||
tr[i].style.display = "";
|
||
} else {
|
||
tr[i].style.display = "none";
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
editRow(item){
|
||
this.show = true;
|
||
this.item = item;
|
||
}
|
||
|
||
SaveNewProject(){
|
||
console.log(this.project);
|
||
//this.http.post('http://someurl', JSON.stringify(this.project))
|
||
this.serverService.createProject(this.project)
|
||
.subscribe(
|
||
response =>{
|
||
console.log("response");
|
||
console.log(response);
|
||
}
|
||
);
|
||
}
|
||
|
||
// special params:
|
||
translations = <DataTableTranslations>{
|
||
indexColumn: 'Index column',
|
||
expandColumn: 'Expand column',
|
||
selectColumn: 'Select column',
|
||
paginationLimit: 'Max results',
|
||
paginationRange: 'Result range'
|
||
};
|
||
|
||
signOut() {
|
||
this.serverService.logOut();
|
||
}
|
||
|
||
|
||
|
||
}
|