301 lines
9.9 KiB
TypeScript
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);
|
|
}
|
|
});
|
|
}
|
|
|
|
}
|
|
}
|