explore-services/src/app/claims/claims.component.ts

301 lines
9.9 KiB
TypeScript

import {Component} from '@angular/core';
import {JSONP_PROVIDERS} from '@angular/http';
import {Observable} from 'rxjs/Observable';
import { RouteParams, RouteConfig, ROUTER_DIRECTIVES, Router } from '@angular/router-deprecated';
import {ClaimsService} from '../services/claims.service';
import {Claim} from '../entities/claim';
import {ClaimTextFilterPipe} from '../pipes/claimTextFilter.pipe';
import {ClaimTypeFilterPipe} from '../pipes/claimTypeFilter.pipe';
import {PagingFormatter} from '../common/pagingFormatter.component';
import {ClaimEntityFormatter} from '../common/claimEntityFormatter.component';
@Component({
selector: 'claims',
directives: [...ROUTER_DIRECTIVES, PagingFormatter, ClaimEntityFormatter],
templateUrl: 'src/app/claims/claims.component.html',
providers:[ ClaimsService, JSONP_PROVIDERS],
pipes: [ClaimTextFilterPipe, ClaimTypeFilterPipe]
})
export class ClaimsComponent {
constructor (private _claimService: ClaimsService, private _routeParams: RouteParams, private _router:Router) {}
ngOnInit() {
let page = +this._routeParams.get('page');
let size = +this._routeParams.get('size');
this.keyword = (this._routeParams.get('keyword')?this._routeParams.get('keyword'):"");
this.inputkeyword = this.keyword;
this.page = ( page <= 0 ) ? 1 : page;
this.size = ( size <= 0 ) ? 10 : size;
this.fetchBy = this._routeParams.get('fetchBy');
this.fetchBy = (this.types.indexOf(this.fetchBy) != -1)? this.fetchBy:'All';
this.fetchId = this._routeParams.get('fetchId');
console.info("Fetch by:"+this.fetchBy+"Fetch id:"+this.fetchId);
this.fetchId=this.fetchId?this.fetchId:'';
this.params= { page: this.page, size: this.size,fetchBy: this.fetchBy, fetchId:this.fetchId };
this.entityTypes = (this._routeParams.get('types')?this._routeParams.get('types'):'');
this.setTypes(); // check the appropriate checkboxes
this.setSortby(this._routeParams.get('sort'));
this.getClaims();
}
page : number;
size:number;
keyword:string; // the keyword string to give to the request as parameter
inputkeyword:string; // the string written in the input field (keyword=inputkeyword when its length is bigger than 3 and the user stops typing)
lengths = [10,20,30,50];
types = ["All","Project","Context","Result","User"];
fetchBy:string;
fetchId:string;
navigateTo: string = "Claims";
resultsNum: number ;
claims: string[];
//checkboxes:
publicationCB = false;
datasetCB = false;
contextCB = false;
projectCB = false;
entityTypes : string ='' ;
descending = true;
sortby = "date";
selected=[];
selectAllClaims:boolean = false;
//params for pagingFormatter to use when navigate to page
params;
getClaims () {
this.selectAllClaims = false;
if(this.fetchBy =="Project" ){
this._claimService.getClaimsByProject(this.size,this.page,this.fetchId,this.keyword,this.sortby,this.descending, this.entityTypes).subscribe(
data => {
this.claims = data.data;
this.resultsNum= data.total;
},
err => console.error(err)
);
}else if(this.fetchBy =="User"){
console.info("Fetch by:"+this.fetchBy+"Fetch id:"+this.fetchId);
this._claimService.getClaimsByUser(this.size,this.page,this.fetchId,this.keyword,this.sortby,this.descending, this.entityTypes).subscribe(
data => {
this.claims = data.data;
this.resultsNum= data.total;
},
err => console.error(err)
);
}else if(this.fetchBy =="Result"){
this._claimService.getClaimsByResult(this.size,this.page,this.fetchId,this.keyword,this.sortby,this.descending, this.entityTypes).subscribe(
data => {
this.claims = data.data;
this.resultsNum= data.total;
},
err => console.error(err)
);
}else if(this.fetchBy =="Context"){
this._claimService.getClaimsBycontext(this.size,this.page,this.fetchId,this.keyword,this.sortby,this.descending, this.entityTypes).subscribe(
data => {
this.claims = data.data;
this.resultsNum= null;
this.resultsNum= data.total;//data.length; //TODO get the total results num
},
err => console.error(err)
);
}else{
this._claimService.getClaims(this.size,this.page,this.keyword,this.sortby,this.descending, this.entityTypes).subscribe(
data => {
this.claims = data.data;
this.resultsNum = null;
this.resultsNum= data.total;//data.length; //TODO get the total results num
},
err => console.error(err)
);
}
}
goToClaim(claimId: number){
this._router.navigate( ['Claim', { id: claimId}] );
}
goTo(){
this.page = 1;
// console.info("In goto - params( page:"+params.page+", size: "+params.size+", fetchId:"+params.fetchId);
this._router.navigate( [this.navigateTo,this.getParameters()] );
}
getParameters(){
let params={ page: this.page, size: this.size, types: this.entityTypes, fetchBy: this.fetchBy, fetchId:this.fetchId, keyword : this.keyword, sort: this.getSortby() };
return params;
}
changeLength(){
this.goTo();
}
clearFilters(){
this.keyword = '';
this.inputkeyword = '';
this.publicationCB = false;
this.projectCB = false;
this.datasetCB = false;
this.contextCB = false;
this.entityTypes = '';
this.goTo();
}
changeOrderby(sortby:string){
if(sortby==this.sortby){
this.descending = !this.descending;
}else{
this.sortby = sortby;
this.descending = false;
}
this.goTo();
}
setSortby(sortby:string){
if(!sortby|| sortby == "datedesc"){
this.descending = true;
this.sortby = "date";
}else if(sortby == "dateasc"){
this.descending = false;
this.sortby = "date";
}else if(sortby == "userasc"){
this.descending = false;
this.sortby = "user";
}else if(sortby == "userdesc"){
this.descending = true;
this.sortby = "user";
}if(sortby =="sourceasc"){
this.descending = false;
this.sortby = "source";
}else if(sortby == "sourcedesc"){
this.descending = true;
this.sortby = "source";
}else if(sortby == "targetasc"){
this.descending = false;
this.sortby = "target";
}else if(sortby == "targetdesc"){
this.descending = true;
this.sortby = "target";
}
}
getSortby():string{
if(this.descending){
return this.sortby+"desc";
}else{
return this.sortby+"asc";
}
}
changeType(){
console.debug("ChangingType: "+this.entityTypes+" types"+this.publicationCB+ this.datasetCB + this.contextCB + this.projectCB);
if(this.publicationCB == true && this.datasetCB == true && this.contextCB == true && this.projectCB == true ){
this.entityTypes="";
}else{
this.entityTypes = "";
if(this.publicationCB == true){
this.entityTypes = "publication";
}
if(this.datasetCB == true){
this.entityTypes += (this.entityTypes.length > 0?",":"")+"dataset";
}
if(this.contextCB == true){
this.entityTypes += (this.entityTypes.length > 0?",":"")+"context";
}
if(this.projectCB == true){
this.entityTypes += (this.entityTypes.length > 0?",":"")+"project";
}
}
console.debug("Type changed: "+this.entityTypes+" "+this.publicationCB+ this.datasetCB + this.contextCB + this.projectCB);
this.goTo();
}
setTypes(){
if(this.entityTypes.length > 0){
if(this.entityTypes.indexOf("publication")!=-1){
this.publicationCB = true;
}
if(this.entityTypes.indexOf("dataset")!=-1){
this.datasetCB = true;
}
if(this.entityTypes.indexOf("project")!=-1){
this.projectCB = true;
}
if(this.entityTypes.indexOf("context")!=-1){
this.contextCB = true;
}
}
if(this.publicationCB && this.datasetCB && this.contextCB && this.projectCB){
this.entityTypes='';
}else{
if(this.publicationCB){
this.entityTypes = "publication";
}
if(this.datasetCB){
this.entityTypes = (this.entityTypes.length > 0?",":"")+"dataset";
}
if(this.contextCB){
this.entityTypes = (this.entityTypes.length > 0?",":"")+"context";
}
if(this.projectCB){
this.entityTypes = (this.entityTypes.length > 0?",":"")+"project";
}
}
}
changekeyword(){
if(this.inputkeyword.length >= 3 || this.inputkeyword.length == 0 ){
this.keyword = this.inputkeyword;
this.page = 1;
this.goTo();
}
}
select(item:any,event){
var value = event.currentTarget.checked;
console.debug("value:"+value);
if(value){
this.selectAllClaims = false;
this.selected.push(item);
console.debug("select one more! with id:"+item.id);
}else{
var index:number =this.selected.indexOf(item);
console.info("Try to remove item from :"+this.selected.indexOf(item));
if (index > -1) {
this.selected.splice(index, 1);
}
console.info("Item removed "+this.selected.indexOf(item));
}
}
selectAll(){
this.selectAllClaims = true;
}
deselectAll(){
this.selectAllClaims = false;
}
delete(){
for (var i = 0; i < this.selected.length; i++){
var id =this.selected[i].id;
var selected =this.selected[i].id;
console.warn("Deleting claim with id:"+id);
// this._claimService.deleteClaimById(id);
this._claimService.deleteClaimById(id,selected).subscribe(
res => {
console.info('Delete response'+res.code );
console.warn("Deleted claim with id:"+ id);
var index:number =this.claims.indexOf(selected);
console.info('Index'+index );
this.selected.splice(i, 1);
if (index > -1) {
this.claims.splice(index, 1);
}
});
}
}
}