651 lines
22 KiB
TypeScript
651 lines
22 KiB
TypeScript
import {Component, Input, Output, EventEmitter} from '@angular/core';
|
|
import { ActivatedRoute } from '@angular/router';
|
|
import {SearchCrossrefService} from '../claim-utils/service/searchCrossref.service';
|
|
import {SearchOrcidService} from '../claim-utils/service/searchOrcid.service';
|
|
import {SearchPublicationsService} from '../../services/searchPublications.service';
|
|
import { SearchDataciteService } from '../claim-utils/service/searchDatacite.service';
|
|
import {SearchDatasetsService} from '../../services/searchDatasets.service';
|
|
import {SearchSoftwareService} from '../../services/searchSoftware.service';
|
|
|
|
import { ErrorCodes} from '../../utils/properties/errorCodes';
|
|
import {ClaimResult} from '../claim-utils/claimEntities.class';
|
|
import{DOI} from '../../utils/string-utils.class';
|
|
import{EnvProperties} from '../../utils/properties/env-properties';
|
|
|
|
declare var UIkit:any;
|
|
|
|
@Component({
|
|
selector: 'claim-result-search-form',
|
|
templateUrl: 'claimResultSearchForm.component.html',
|
|
|
|
})
|
|
export class ClaimResultSearchFormComponent {
|
|
constructor (private _searchDataciteService: SearchDataciteService, private _searchDatasetsService:SearchDatasetsService, private _searchSoftwareService:SearchSoftwareService,
|
|
private _searchCrossrefService: SearchCrossrefService,private _searchOrcidService: SearchOrcidService, private _searchPublicationsService: SearchPublicationsService,
|
|
private route: ActivatedRoute) {
|
|
var myDate = new Date();
|
|
this.todayDate = myDate.getFullYear()+ "-" +(myDate.getMonth() + 1) + "-" + myDate.getDate() ;
|
|
this.nextDate = (myDate.getFullYear()+100)+ "-" +(myDate.getMonth() + 1) + "-" + myDate.getDate() ;
|
|
|
|
}
|
|
ngOnInit() {
|
|
console.log("Init of ClaimResultSearchFormComponent");
|
|
console.log(this.properties);
|
|
if(this.keyword !=null && this.keyword.length > 0){
|
|
this.search(false);
|
|
}
|
|
}
|
|
|
|
|
|
page : number = 1;
|
|
size:number = 5;
|
|
navigateTo: string = "Search";
|
|
source: string = "datacite";
|
|
type : string = "dataset";
|
|
showSearchResults:boolean=false;
|
|
// searchType ="publication";
|
|
@Input() public select:boolean = true ;
|
|
@Input() public keyword:string = '';
|
|
@Input() public selectedResults:ClaimResult[];
|
|
@Input() public properties:EnvProperties;
|
|
|
|
// @Output() datasetsChange = new EventEmitter();
|
|
// @Output() publicationsChange = new EventEmitter();
|
|
|
|
// @Output() resultsChange = new EventEmitter();
|
|
|
|
public errorCodes:ErrorCodes = new ErrorCodes();
|
|
|
|
dataciteResults=[];
|
|
dataciteResultsNum:number = null;
|
|
// dataciteResultsNum : Observable<number> = null;
|
|
dataciteStatus = this.errorCodes.NONE;
|
|
datacitePage : number = 1;
|
|
|
|
openaireData=[];
|
|
openaireDataNum:number = 0 ;
|
|
openaireDataStatus = this.errorCodes.NONE;
|
|
openaireDataPage : number = 1;
|
|
openaireSoftware=[];
|
|
openaireSoftwareNum:number = 0 ;
|
|
openaireSoftwareStatus = this.errorCodes.NONE;
|
|
openaireSoftwarePage : number = 1;
|
|
|
|
public warningMessage = "";
|
|
public infoMessage = "";
|
|
|
|
public todayDate = '';
|
|
public nextDate = '';
|
|
public DOIs:string[] = [];
|
|
sub: any;
|
|
public searchSource:string = "openaire"
|
|
public activeTab:string = "openairePub"
|
|
|
|
|
|
crossrefResults=[];
|
|
crossrefResultsNum : number = null;
|
|
crossrefPage : number = 1;
|
|
crossrefStatus:number = this.errorCodes.NONE;
|
|
|
|
openairePubs = [];
|
|
openairePubsNum: number ;
|
|
openairePubsPage : number = 1;
|
|
openairePubsStatus:number = this.errorCodes.NONE;
|
|
|
|
orcidResults: string[];
|
|
orcidResultsNum: number ;
|
|
totalPages: number;
|
|
orcidResultsToShow: string[];
|
|
orcidPage : number = 1;
|
|
orcidStatus:number = this.errorCodes.NONE;
|
|
authorId: string;
|
|
selectAuthorId: string = "0";
|
|
authorGivenName: string;
|
|
authorFamilyName: string;
|
|
|
|
authorIds: string[];
|
|
authorGivenNames: string[];
|
|
authorFamilyNames: string[];
|
|
|
|
authorsNum : number ;
|
|
|
|
reloadOpenaire:boolean = true;
|
|
reloadCrossref:boolean = false;
|
|
reloadDatacite:boolean = false;
|
|
reloadOrcid:boolean = false;
|
|
|
|
|
|
|
|
|
|
search(sourceChanged){
|
|
this.warningMessage = "";
|
|
this.infoMessage = "";
|
|
if(!sourceChanged){
|
|
this.DOIs = DOI.getDOIsFromString(this.keyword);
|
|
this.reloadOpenaire = true;
|
|
this.reloadCrossref = true;
|
|
this.reloadDatacite = true;
|
|
this.reloadOrcid = true;
|
|
}
|
|
if((this.searchSource == "all" || this.searchSource == "openaire") && this.reloadOpenaire){
|
|
this.searchOpenairePubs(this.keyword, this.size, 1);
|
|
this.searchOpenaireData(this.keyword,this.size,1);
|
|
this.searchOpenaireSoftware(this.keyword,this.size,1);
|
|
this.reloadOpenaire = false;
|
|
}
|
|
if((this.searchSource == "all" || this.searchSource == "crossref")&&this.reloadCrossref){
|
|
this.getCrossrefResults(this.keyword, this.size,1);
|
|
this.reloadCrossref = false;
|
|
}
|
|
if((this.searchSource == "all" || this.searchSource == "datacite")&& this.reloadDatacite){
|
|
this.searchDatacite(this.keyword,this.size,1);
|
|
this.reloadDatacite = false;
|
|
}
|
|
if((this.searchSource == "all" || this.searchSource == "orcid")&& this.reloadOrcid){
|
|
this.searchOrcid(this.keyword);
|
|
this.reloadOrcid = false;
|
|
}
|
|
this.showSearchResults = true;
|
|
|
|
}
|
|
|
|
private getCrossrefResults (term: string, size : number, page : number) {
|
|
this.crossrefStatus = this.errorCodes.LOADING;
|
|
if( this.DOIs.length > 0 ){
|
|
this._searchCrossrefService.searchCrossrefByDOIs(this.DOIs, this.properties.searchCrossrefAPIURL).subscribe(
|
|
data => {
|
|
if(data != null) {
|
|
this.crossrefResults = data.items;
|
|
this.crossrefPage=page;
|
|
this.crossrefResultsNum = data['total-results'];
|
|
if(data.items == 0){
|
|
this._searchCrossrefService.searchCrossrefResults(term, size, page, this.properties.searchCrossrefAPIURL).subscribe(
|
|
data => {
|
|
if(data != null) {
|
|
this.crossrefResults = data.items;
|
|
this.crossrefPage=page;
|
|
this.crossrefResultsNum = data['total-results'];
|
|
this.crossrefStatus = this.errorCodes.DONE;
|
|
|
|
}else{
|
|
this.crossrefStatus = this.errorCodes.ERROR;
|
|
}
|
|
},
|
|
err =>{
|
|
console.log(err.status);
|
|
this.crossrefStatus = this.errorCodes.ERROR;
|
|
}
|
|
|
|
);
|
|
}else{
|
|
this.crossrefStatus = this.errorCodes.DONE;
|
|
}
|
|
}
|
|
},
|
|
err => {
|
|
//console.log(err);
|
|
this._searchCrossrefService.searchCrossrefResults(term, size, page, this.properties.searchCrossrefAPIURL).subscribe(
|
|
data => {
|
|
this.crossrefResults = data.items;
|
|
this.crossrefPage=page;
|
|
this.crossrefResultsNum = data['total-results'];
|
|
this.crossrefStatus = this.errorCodes.DONE;
|
|
|
|
},
|
|
err => {
|
|
console.log(err.status);
|
|
this.crossrefStatus = this.errorCodes.ERROR;
|
|
}
|
|
|
|
);
|
|
}
|
|
);
|
|
|
|
}else{
|
|
|
|
|
|
this._searchCrossrefService.searchCrossrefResults(term, size, page, this.properties.searchCrossrefAPIURL).subscribe(
|
|
data => {
|
|
if(data != null) {
|
|
this.crossrefResults = data.items;
|
|
this.crossrefPage=page;
|
|
this.crossrefResultsNum = data['total-results'];
|
|
this.crossrefStatus = this.errorCodes.DONE;
|
|
|
|
}else{
|
|
this.crossrefStatus = this.errorCodes.ERROR;
|
|
}
|
|
|
|
},
|
|
err => {
|
|
console.log(err.status);
|
|
this.crossrefStatus = this.errorCodes.ERROR;
|
|
}
|
|
);
|
|
}
|
|
}
|
|
private searchOpenairePubs(term: string, size : number, page : number) {
|
|
|
|
if(this.DOIs.length > 0 ){
|
|
this.openairePubsStatus = this.errorCodes.LOADING;
|
|
this._searchPublicationsService.searchPublicationsByDois(this.DOIs, null, page, size, [], this.properties).subscribe(
|
|
data => {
|
|
if(data != null) {
|
|
this.openairePubsPage=page;
|
|
this.openairePubsNum = data[0];
|
|
this.openairePubs = data[1];
|
|
this.openairePubsStatus = this.errorCodes.DONE;
|
|
if(this.openairePubsNum == 0){
|
|
this.openairePubsStatus = this.errorCodes.NONE;
|
|
}
|
|
}else {
|
|
this.openairePubsStatus = this.errorCodes.ERROR;
|
|
}
|
|
},
|
|
err => {
|
|
this.openairePubsStatus = this.errorCodes.ERROR;
|
|
console.log(err.status);
|
|
}
|
|
);
|
|
}else{
|
|
this.openairePubsStatus = this.errorCodes.LOADING;
|
|
this._searchPublicationsService.searchPublications('q='+term, null, page, size, [], this.properties).subscribe(
|
|
data => {
|
|
if(data != null) {
|
|
this.openairePubsPage=page;
|
|
this.openairePubsNum = data[0];
|
|
this.openairePubs = data[1];
|
|
this.openairePubsStatus = this.errorCodes.DONE;
|
|
if(this.openairePubsNum == 0){
|
|
this.openairePubsStatus = this.errorCodes.NONE;
|
|
}
|
|
}else {
|
|
this.openairePubsStatus = this.errorCodes.ERROR;
|
|
}
|
|
},
|
|
err => {
|
|
this.openairePubsStatus = this.errorCodes.ERROR;
|
|
console.log(err.status);
|
|
}
|
|
);
|
|
}
|
|
}
|
|
|
|
private searchOrcid (term: string) {
|
|
if(this.DOIs.length > 0){
|
|
this.orcidStatus = this.errorCodes.NONE;
|
|
return;
|
|
}
|
|
this.orcidStatus = this.errorCodes.LOADING;
|
|
this.authorIds = new Array<string>();
|
|
this.authorGivenNames = new Array<string>();
|
|
this.authorFamilyNames = new Array<string>();
|
|
|
|
this.getOrcidAuthor(term);
|
|
|
|
console.info('searchOrcid in searchOrcid file');
|
|
}
|
|
|
|
private readData(data: any) {
|
|
this.authorIds.push(data[2].path);
|
|
|
|
if(data[0] != null) {
|
|
this.authorGivenNames.push(data[0].value);
|
|
} else {
|
|
this.authorGivenNames.push("");
|
|
}
|
|
if(data[1] != null) {
|
|
this.authorFamilyNames.push(data[1].value);
|
|
} else {
|
|
this.authorFamilyNames.push("");
|
|
}
|
|
}
|
|
|
|
private getOrcidAuthor (term: string) {
|
|
this.orcidResultsNum = null;
|
|
|
|
//passing structures in order to fill them in service
|
|
this._searchOrcidService.searchOrcidAuthor(term, this.authorIds,
|
|
this.authorGivenNames, this.authorFamilyNames, this.properties).subscribe(
|
|
data => {
|
|
if(data != null && data == true) {
|
|
this.getOrcidResultsByIndex(0);
|
|
}
|
|
|
|
this.orcidStatus = this.errorCodes.NONE;
|
|
|
|
},
|
|
err => this.errorHandler(err, term)
|
|
|
|
);
|
|
}
|
|
|
|
private errorHandler(err: any, term: string) {
|
|
if(err.status == 404){
|
|
this.getOrcidAuthors(term);
|
|
} else {
|
|
this.orcidStatus = this.errorCodes.ERROR;
|
|
console.log(err.status);
|
|
|
|
}
|
|
}
|
|
|
|
private getOrcidAuthors (term: string) {
|
|
this.orcidResultsNum = null;
|
|
this.selectAuthorId = "0";
|
|
this.orcidStatus = this.errorCodes.LOADING;
|
|
//passing structures in order to fill them in service
|
|
this._searchOrcidService.searchOrcidAuthors(term, this.authorIds,
|
|
this.authorGivenNames, this.authorFamilyNames, this.properties).subscribe(
|
|
data => {
|
|
if(data != null && data == true) {
|
|
this.getOrcidResultsByIndex(0);
|
|
}else{
|
|
this.orcidStatus = this.errorCodes.ERROR;
|
|
}
|
|
|
|
},
|
|
err => {
|
|
this.orcidStatus = this.errorCodes.ERROR;
|
|
console.log(err.status);
|
|
}
|
|
);
|
|
}
|
|
|
|
|
|
private getOrcidResultsByIndex (index:number) {
|
|
if(this.authorIds.length > index) {
|
|
this.orcidStatus = this.errorCodes.LOADING;
|
|
let id = this.authorIds[index];
|
|
this.authorGivenName = this.authorGivenNames[index];
|
|
this.authorFamilyName = this.authorFamilyNames[index];
|
|
this.getOrcidResultsById(id);
|
|
}
|
|
}
|
|
private getOrcidResultsById (id:string) {
|
|
if(id=="0"){
|
|
return;
|
|
}
|
|
var index = this.authorIds.indexOf(id);
|
|
this.authorGivenName = this.authorGivenNames[index];
|
|
this.authorFamilyName = this.authorFamilyNames[index];
|
|
this.authorId = id;
|
|
console.info("getOrcidResultsById: "+id);
|
|
this.orcidStatus = this.errorCodes.LOADING;
|
|
this._searchOrcidService.searchOrcidPublications(id, this.properties).subscribe(
|
|
data => {
|
|
if(data != null) {
|
|
this.orcidResults=data['orcid-work'];
|
|
this.orcidResultsNum = data['orcid-work'].length;
|
|
this.orcidPage = 1;
|
|
if((this.orcidResultsNum % this.size) == 0){
|
|
this.totalPages=parseInt(''+(this.orcidResultsNum/this.size));
|
|
} else{
|
|
this.totalPages=parseInt(''+(this.orcidResultsNum/this.size+1));
|
|
}
|
|
|
|
this.orcidResultsToShow = this.orcidResults.slice(0,10);
|
|
|
|
this.orcidStatus = this.errorCodes.DONE;
|
|
if(this.orcidResultsNum == 0){
|
|
this.orcidStatus = this.errorCodes.NONE;
|
|
}
|
|
} else {
|
|
this.orcidResultsNum = 0;
|
|
this.totalPages=0;
|
|
this.orcidStatus = this.errorCodes.NONE;
|
|
}
|
|
|
|
},
|
|
err => {
|
|
console.log(err.status);
|
|
this.orcidStatus = this.errorCodes.ERROR;
|
|
}
|
|
);
|
|
|
|
|
|
}
|
|
|
|
/*
|
|
Is it USED???
|
|
private remove(item){
|
|
this.warningMessage = "";
|
|
this.infoMessage = "";
|
|
var index:number =this.selectedResults.indexOf(item);
|
|
item.selected=false;
|
|
if (index > -1) {
|
|
this.selectedResults.splice(index, 1);
|
|
// this.publicationsChange.emit({
|
|
// value: this.selectedResults
|
|
// });
|
|
}
|
|
|
|
}*/
|
|
private crossrefPageChange($event) {
|
|
this.crossrefPage=$event.value;
|
|
this.crossrefResults=[];
|
|
console.log("Crossref chaenged "+this.crossrefPage);
|
|
this.getCrossrefResults(this.keyword,this.size,this.crossrefPage);
|
|
}
|
|
private orcidPageChange($event) {
|
|
this.orcidPage=$event.value;
|
|
this.orcidResultsToShow=[];
|
|
this.orcidResultsToShow = this.orcidResults.slice(($event.value-1)*this.size, $event.value*this.size);
|
|
}
|
|
private openairePubsPageChange($event) {
|
|
this.openairePubsPage=$event.value;
|
|
this.searchOpenairePubs(this.keyword,this.size,this.openairePubsPage);
|
|
}
|
|
datacitePageChange($event) {
|
|
this.datacitePage=$event.value;
|
|
this.dataciteResults=[];
|
|
this.searchDatacite(this.keyword,10,this.datacitePage);
|
|
this.warningMessage = "";
|
|
this.infoMessage = "";
|
|
|
|
}
|
|
openaireDataPageChange($event) {
|
|
this.openaireDataPage=$event.value;
|
|
this.openaireData=[];
|
|
this.searchOpenaireData(this.keyword,10,this.openaireDataPage);
|
|
this.warningMessage = "";
|
|
this.infoMessage = "";
|
|
|
|
}
|
|
openaireSoftwarePageChange($event) {
|
|
this.openaireSoftwarePage=$event.value;
|
|
this.openaireSoftware=[];
|
|
this.searchOpenaireSoftware(this.keyword,10,this.openaireSoftwarePage);
|
|
this.warningMessage = "";
|
|
this.infoMessage = "";
|
|
|
|
}
|
|
|
|
private isSelected(id:string){
|
|
|
|
var found:boolean = false;
|
|
this.warningMessage = "";
|
|
for (var _i = 0; _i < this.selectedResults.length; _i++) {
|
|
let item = this.selectedResults[_i];
|
|
if(item.id == id){
|
|
found=true;
|
|
this.warningMessage = "Publication already in selected list";
|
|
}
|
|
}
|
|
return found;
|
|
|
|
|
|
}
|
|
// isSelected(id:string){
|
|
//
|
|
// var found:boolean = false;
|
|
// this.warningMessage = "";
|
|
// for (var _i = 0; _i < this.selectedResults.length; _i++) {
|
|
// let item = this.selectedResults[_i];
|
|
// if(item.id == id){
|
|
// found=true;
|
|
// break;
|
|
// }
|
|
// }
|
|
// return found;
|
|
// }
|
|
private searchDatacite (term: string, size : number, page : number) {
|
|
this.getDataciteResults(term,size,page);
|
|
this.warningMessage = "";
|
|
this.infoMessage = "";
|
|
|
|
}
|
|
private searchOpenaireData (term: string, size : number, page : number) {
|
|
if(this.DOIs.length > 0 ){
|
|
this.openaireDataStatus = this.errorCodes.LOADING;
|
|
this._searchDatasetsService.searchDatasetsByDois(this.DOIs, null, page, size, [], this.properties).subscribe(
|
|
data => {
|
|
if(data != null) {
|
|
this.openaireDataPage=page;
|
|
this.openaireDataNum = data[0];
|
|
this.openaireData = data[1];
|
|
this.openaireDataStatus = this.errorCodes.DONE;
|
|
if(this.openaireDataNum == 0){
|
|
this.openaireDataStatus = this.errorCodes.NONE;
|
|
}
|
|
}
|
|
},
|
|
err => {
|
|
this.openaireDataStatus = this.errorCodes.ERROR;
|
|
console.log(err.status);
|
|
}
|
|
);
|
|
}else{
|
|
this._searchDatasetsService.searchDatasets('q='+term+'', null, page, size, [], this.properties).subscribe(
|
|
data => {
|
|
if(data != null) {
|
|
this.openaireDataPage=page;
|
|
this.openaireDataNum = data[0];
|
|
this.openaireData = data[1];
|
|
this.openaireDataStatus = this.errorCodes.DONE;
|
|
if(this.openaireDataNum == 0){
|
|
this.openaireDataStatus = this.errorCodes.NONE;
|
|
}
|
|
}
|
|
},
|
|
err => {
|
|
this.openaireDataStatus = this.errorCodes.ERROR;
|
|
console.log(err.status);
|
|
}
|
|
);
|
|
}
|
|
this.warningMessage = "";
|
|
this.infoMessage = "";
|
|
|
|
}
|
|
private searchOpenaireSoftware (term: string, size : number, page : number) {
|
|
if(this.DOIs.length > 0 ){
|
|
this.openaireSoftwareStatus = this.errorCodes.LOADING;
|
|
this._searchSoftwareService.searchSoftwareByDois(this.DOIs, null, page, size, [], this.properties).subscribe(
|
|
data => {
|
|
if(data != null) {
|
|
this.openaireSoftwarePage=page;
|
|
this.openaireSoftwareNum = data[0];
|
|
this.openaireSoftware = data[1];
|
|
this.openaireSoftwareStatus = this.errorCodes.DONE;
|
|
if(this.openaireSoftwareNum == 0){
|
|
this.openaireSoftwareStatus = this.errorCodes.NONE;
|
|
}
|
|
}
|
|
},
|
|
err => {
|
|
this.openaireSoftwareStatus = this.errorCodes.ERROR;
|
|
console.log(err.status);
|
|
}
|
|
);
|
|
}else{
|
|
this._searchSoftwareService.searchSoftware('q='+term+'', null, page, size, [], this.properties).subscribe(
|
|
data => {
|
|
if(data != null) {
|
|
this.openaireSoftwarePage=page;
|
|
this.openaireSoftwareNum = data[0];
|
|
this.openaireSoftware = data[1];
|
|
this.openaireSoftwareStatus = this.errorCodes.DONE;
|
|
if(this.openaireSoftwareNum == 0){
|
|
this.openaireSoftwareStatus = this.errorCodes.NONE;
|
|
}
|
|
}
|
|
},
|
|
err => {
|
|
this.openaireSoftwareStatus = this.errorCodes.ERROR;
|
|
console.log(err.status);
|
|
}
|
|
);
|
|
}
|
|
this.warningMessage = "";
|
|
this.infoMessage = "";
|
|
|
|
}
|
|
private getDataciteResults (term: string, size : number, page : number) {
|
|
console.log("getDataciteResults + "+this.properties.searchDataciteAPIURL)
|
|
this._searchDataciteService.searchDataciteResults(term, size, page, this.properties).subscribe(
|
|
data => {
|
|
this.dataciteResults = data.data;
|
|
this.datacitePage=page;
|
|
this.dataciteResultsNum = data.meta.total;
|
|
this.dataciteStatus = this.errorCodes.DONE;
|
|
|
|
|
|
},
|
|
err => {
|
|
this.dataciteStatus = this.errorCodes.ERROR;
|
|
console.log(err);
|
|
}
|
|
|
|
);
|
|
}
|
|
|
|
add(item, itemId,itemSource,itemType, itemUrl, itemTitle, date, accessmode){
|
|
|
|
console.log(' adding ' + itemType + " From " + itemSource+" "+ itemTitle);
|
|
var result: ClaimResult = ClaimResult.generateResult(item, itemId,itemSource,itemType, itemUrl, itemTitle, date, accessmode);
|
|
|
|
|
|
if (itemSource == 'orcid'){
|
|
if(result.authors.length ==0 ){
|
|
result.authors.push(this.authorGivenName + ', '+ this.authorFamilyName);
|
|
}
|
|
}
|
|
var found:boolean = this.isSelected( result.id);
|
|
|
|
this.warningMessage = "";
|
|
if (!found) {
|
|
this.selectedResults.push(result);
|
|
|
|
UIkit.notification({
|
|
message : 'A new research result is selected.',
|
|
status : 'primary',
|
|
timeout : 1000,
|
|
pos : 'top-center'
|
|
});
|
|
|
|
|
|
}else{
|
|
this.warningMessage = "Research Data already in selected list";
|
|
UIkit.notification({
|
|
message : 'The research result is already on your list.',
|
|
status : 'warning',
|
|
timeout : 1000,
|
|
pos : 'top-center'
|
|
});
|
|
}
|
|
|
|
}
|
|
|
|
public searchSourceChanged(source){
|
|
this.searchSource = source;
|
|
this.activeTab = (source == "openaire" || source == "all")?"openairePub":source;
|
|
if(this.keyword && this.keyword.length > 0){
|
|
this.search(true);
|
|
}
|
|
}
|
|
public clickTab(tab){
|
|
this.activeTab = tab;
|
|
}
|
|
}
|