autocomplete component for searching organizations| use it in advnced search of dataproviders and projects
git-svn-id: https://svn.driver.research-infrastructures.eu/driver/dnet40/modules/uoa-services-portal/trunk@44759 d315682c-612b-4755-9ff5-7f18f6832af3
This commit is contained in:
parent
7ac9b343fc
commit
b7a2efed9b
|
@ -157,7 +157,7 @@ export class SearchPageComponent {
|
||||||
|
|
||||||
}
|
}
|
||||||
var keyword = params['keyword'];
|
var keyword = params['keyword'];
|
||||||
var doiQuery =(keyword.length > 0 && keyword.split(" ").length ==1 )?'or ((pidclassid exact doi) and (pid exact "'+ keyword+'"))':"";
|
var doiQuery =(keyword && keyword.length > 0 && keyword.split(" ").length ==1 )?'or ((pidclassid exact doi) and (pid exact "'+ keyword+'"))':"";
|
||||||
var keywordQuery =(doiQuery.length > 0 )? "((" + this.quote(keyword) + ")" + doiQuery + ")":this.quote(keyword);
|
var keywordQuery =(doiQuery.length > 0 )? "((" + this.quote(keyword) + ")" + doiQuery + ")":this.quote(keyword);
|
||||||
// parameters += (keyword && keyword.length > 0?' and '+(this.type == 'publication' ||this.type == 'dataset' ?keywordQuery:keyword)+' ':'');
|
// parameters += (keyword && keyword.length > 0?' and '+(this.type == 'publication' ||this.type == 'dataset' ?keywordQuery:keyword)+' ':'');
|
||||||
// allFqs += ;
|
// allFqs += ;
|
||||||
|
|
|
@ -22,7 +22,7 @@ export class ISVocabulariesService {
|
||||||
return this.getDatasetTypesJsonFile();
|
return this.getDatasetTypesJsonFile();
|
||||||
}else if( field == "access" && (entity == "publication" || entity == "dataset")){
|
}else if( field == "access" && (entity == "publication" || entity == "dataset")){
|
||||||
return this.getAccessModeJsonFile();
|
return this.getAccessModeJsonFile();
|
||||||
} else if( field == "type" && (entity == "dataprovider")){
|
} else if( (field == "datasourcetype") && (entity == "dataprovider")){
|
||||||
return this.getDataProviderTypesJsonFile();
|
return this.getDataProviderTypesJsonFile();
|
||||||
} else if( field == "compatibility" && (entity == "dataprovider")){
|
} else if( field == "compatibility" && (entity == "dataprovider")){
|
||||||
return this.getDataProviderCompatibilityJsonFile();
|
return this.getDataProviderCompatibilityJsonFile();
|
||||||
|
|
|
@ -69,7 +69,7 @@ private fetch (link,id,oafEntityType,type){
|
||||||
let url = link+"/"+id;
|
let url = link+"/"+id;
|
||||||
return this.http.get(url)
|
return this.http.get(url)
|
||||||
.map(request => <any> request.json())
|
.map(request => <any> request.json())
|
||||||
.do(res => console.info(res))
|
// .do(res => console.info(res))
|
||||||
.map(request => <any> this.parse(request,oafEntityType,type));
|
.map(request => <any> this.parse(request,oafEntityType,type));
|
||||||
|
|
||||||
|
|
||||||
|
@ -111,6 +111,12 @@ private fetch (link,id,oafEntityType,type){
|
||||||
} else {
|
} else {
|
||||||
value.label = resData["fullname"];
|
value.label = resData["fullname"];
|
||||||
}
|
}
|
||||||
|
}else if(resData["legalname"]){
|
||||||
|
if(Array.isArray(resData["legalname"])) {
|
||||||
|
value.label = resData["legalname"][0];
|
||||||
|
} else {
|
||||||
|
value.label = resData["legalname"];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
value.id = length > 1 ? data[i]['result']['header']['dri:objIdentifier'] : data['result']['header']['dri:objIdentifier'];
|
value.id = length > 1 ? data[i]['result']['header']['dri:objIdentifier'] : data['result']['header']['dri:objIdentifier'];
|
||||||
if(type=="project"){
|
if(type=="project"){
|
||||||
|
|
|
@ -22,9 +22,10 @@ import {EntitiesSearchService} from '../services/entitySearch.service';
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<input *ngIf = "showInput" type="text" class="auto-complete-input validate filter-input input-sm form-control " [placeholder]=placeHolderMessage [(ngModel)]=keyword (keyup)=search() >
|
<input *ngIf = "showInput" type="text" class="auto-complete-input validate filter-input input-sm form-control " [placeholder]=placeHolderMessage [(ngModel)]=keyword (keyup)=search() >
|
||||||
<div *ngIf = "keyword != null && keyword.length > 0 " class="suggestions" >
|
<div *ngIf = "keyword != null && keyword.length > 0 " class="suggestions" >
|
||||||
|
<div *ngIf="showLoading" class="alert alert-info row-fluid " role="alert"><span class="glyphicon glyphicon-repeat" aria-hidden="true"></span></div>
|
||||||
<ul class="list-group" >
|
<ul class="list-group" >
|
||||||
<li class="list-group-item" >
|
<li *ngIf = "filtered.length > 0 " class="list-group-item" >
|
||||||
Select:
|
Select:
|
||||||
</li>
|
</li>
|
||||||
<li class="list-group-item" *ngFor=" let item of filtered | async">
|
<li class="list-group-item" *ngFor=" let item of filtered | async">
|
||||||
|
@ -62,7 +63,7 @@ export class EntitiesAutocompleteComponent {
|
||||||
private showInput = true;
|
private showInput = true;
|
||||||
private sub;
|
private sub;
|
||||||
private done = false;
|
private done = false;
|
||||||
|
private showLoading:boolean = false;
|
||||||
private searchTermStream = new Subject<string>();
|
private searchTermStream = new Subject<string>();
|
||||||
filtered: Observable<{}> ;
|
filtered: Observable<{}> ;
|
||||||
|
|
||||||
|
@ -78,13 +79,16 @@ export class EntitiesAutocompleteComponent {
|
||||||
if(this.entityType == "project" && this.funderId && this.funderId.length > 0){
|
if(this.entityType == "project" && this.funderId && this.funderId.length > 0){
|
||||||
this.filtered = this.searchTermStream
|
this.filtered = this.searchTermStream
|
||||||
.debounceTime(300).distinctUntilChanged()
|
.debounceTime(300).distinctUntilChanged()
|
||||||
.switchMap((term: string) => this._search.searchProjectsByFunder(term, this.funderId));
|
.switchMap((term: string) => this._search.searchProjectsByFunder(term, this.funderId));
|
||||||
}else{
|
}else{
|
||||||
|
|
||||||
this.filtered = this.searchTermStream
|
this.filtered = this.searchTermStream
|
||||||
.debounceTime(300).distinctUntilChanged()
|
.debounceTime(300).distinctUntilChanged()
|
||||||
.switchMap((term: string) =>
|
.switchMap((term: string) => {
|
||||||
this._search.searchByType(term, this.entityType));
|
var results = this._search.searchByType(term, this.entityType);
|
||||||
|
this.showLoading = false;
|
||||||
|
return results;
|
||||||
|
});
|
||||||
this.getSelectedNameFromGivenId();
|
this.getSelectedNameFromGivenId();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -111,7 +115,7 @@ export class EntitiesAutocompleteComponent {
|
||||||
this.tries = 0;
|
this.tries = 0;
|
||||||
this.warningMessage = "";
|
this.warningMessage = "";
|
||||||
this.searchTermStream.next(this.keyword);
|
this.searchTermStream.next(this.keyword);
|
||||||
|
this.showLoading = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -36,10 +36,10 @@ export class SearchFields {
|
||||||
|
|
||||||
public PROJECT_INDEX:string[] = ["funderid","fundinglevel0_id","fundinglevel1_id","fundinglevel2_id","projectstartyear","projectendyear","projectecsc39"];
|
public PROJECT_INDEX:string[] = ["funderid","fundinglevel0_id","fundinglevel1_id","fundinglevel2_id","projectstartyear","projectendyear","projectecsc39"];
|
||||||
public ADVANCED_PROJECTS_PARAM:string[] = ["q", "acronym","title","keywords", "funder", "funderlv0",
|
public ADVANCED_PROJECTS_PARAM:string[] = ["q", "acronym","title","keywords", "funder", "funderlv0",
|
||||||
"funderlv1","funderlv2","startyear","endyear","sc39","code"];
|
"funderlv1","funderlv2","startyear","endyear","sc39","code","organization"];
|
||||||
public PROJECT_INDEX_PARAM_MAP:{ [key:string]:string } = {
|
public PROJECT_INDEX_PARAM_MAP:{ [key:string]:string } = {
|
||||||
[ "funderid"]:"funder", ["fundinglevel0_id"]:"funderlv0",["fundinglevel1_id"]:"funderlv1",["fundinglevel2_id"]:"funderlv2",
|
[ "funderid"]:"funder", ["fundinglevel0_id"]:"funderlv0",["fundinglevel1_id"]:"funderlv1",["fundinglevel2_id"]:"funderlv2",
|
||||||
["projectstartyear"]:"startyear",["projectendyear"]:"endyear",["projectecsc39"]:"sc39"};
|
["projectstartyear"]:"startyear",["projectendyear"]:"endyear",["projectecsc39"]:"sc39",["relorganizationid"]:"organization"};
|
||||||
|
|
||||||
public PROJECT_FIELDS_MAP: { [key:string]:{ name:string, operator:string, type:string, indexField:string, equalityOperator:string }} ={
|
public PROJECT_FIELDS_MAP: { [key:string]:{ name:string, operator:string, type:string, indexField:string, equalityOperator:string }} ={
|
||||||
["q"]:{name:"All fields",operator:"op", type:"keyword", indexField:null, equalityOperator: "="},
|
["q"]:{name:"All fields",operator:"op", type:"keyword", indexField:null, equalityOperator: "="},
|
||||||
|
@ -53,17 +53,19 @@ export class SearchFields {
|
||||||
["startyear"]:{name:"Start Year",operator:"sa", type:"keyword", indexField:"projectstartyear", equalityOperator: " exact "},
|
["startyear"]:{name:"Start Year",operator:"sa", type:"keyword", indexField:"projectstartyear", equalityOperator: " exact "},
|
||||||
["endyear"]: {name:"End Year",operator:"ed", type:"keyword", indexField:"projectendyear", equalityOperator: " exact "},
|
["endyear"]: {name:"End Year",operator:"ed", type:"keyword", indexField:"projectendyear", equalityOperator: " exact "},
|
||||||
["sc39"]: {name:"Special Clause 39",operator:"sc", type:"boolean", indexField:"projectecsc39", equalityOperator: " exact "},
|
["sc39"]: {name:"Special Clause 39",operator:"sc", type:"boolean", indexField:"projectecsc39", equalityOperator: " exact "},
|
||||||
["code"]: {name:"Project Code",operator:"cd", type:"keyword", indexField:"projectcode", equalityOperator: " exact "}
|
["code"]: {name:"Project Code",operator:"cd", type:"keyword", indexField:"projectcode", equalityOperator: " exact "},
|
||||||
|
["organization"]: {name:"Organization",operator:"og", type:"entity", indexField:"relorganizationid", equalityOperator: " exact "}
|
||||||
|
|
||||||
};
|
};
|
||||||
//DATAPROVIDERS
|
//DATAPROVIDERS
|
||||||
|
|
||||||
public DATAPROVIDER_INDEX:string[] = ["datasourcetypeuiid", "datasourceodlanguages", "datasourceodcontenttypes",
|
public DATAPROVIDER_INDEX:string[] = ["datasourcetypeuiid", "datasourceodlanguages", "datasourceodcontenttypes",
|
||||||
"datasourcecompatibilityid"];;
|
"datasourcecompatibilityid"];;
|
||||||
public ADVANCED_DATAPROVIDER_PARAM:string[] = ["q", "officialname",
|
public ADVANCED_DATAPROVIDER_PARAM:string[] = ["q", "officialname",
|
||||||
"engname","subjects", "type","lang","contenttype", "compatibility"];
|
"engname","subjects", "datasourcetype","lang","contenttype", "compatibility","organization"];
|
||||||
public DATAPROVIDER_INDEX_PARAM_MAP:{ [key:string]:string } = {
|
public DATAPROVIDER_INDEX_PARAM_MAP:{ [key:string]:string } = {
|
||||||
[ "datasourcetypeuiid"]:"type", [ "datasourcetypeid"]:"datasourcetype", ["datasourceodlanguages"]:"lang",["datasourceodcontenttypes"]:"contenttype",
|
[ "datasourcetypeuiid"]:"type", [ "datasourcetypeid"]:"datasourcetype", ["datasourceodlanguages"]:"lang",["datasourceodcontenttypes"]:"contenttype",
|
||||||
["datasourcecompatibilityid"]:"compatibility"};
|
["datasourcecompatibilityid"]:"compatibility",["relorganizationid"]:"organization"};
|
||||||
|
|
||||||
public DATAPROVIDER_FIELDS_MAP: { [key:string]:{ name:string, operator:string, type:string, indexField:string, equalityOperator:string }} ={
|
public DATAPROVIDER_FIELDS_MAP: { [key:string]:{ name:string, operator:string, type:string, indexField:string, equalityOperator:string }} ={
|
||||||
["q"]:{name:"All fields",operator:"op", type:"keyword", indexField:null, equalityOperator:"="},
|
["q"]:{name:"All fields",operator:"op", type:"keyword", indexField:null, equalityOperator:"="},
|
||||||
|
@ -75,6 +77,7 @@ export class SearchFields {
|
||||||
["lang"]:{name:"Language",operator:"ln", type:"vocabulary", indexField:"datasourceodlanguages", equalityOperator: " exact "},
|
["lang"]:{name:"Language",operator:"ln", type:"vocabulary", indexField:"datasourceodlanguages", equalityOperator: " exact "},
|
||||||
["contenttype"]:{name:"Content Type",operator:"cn", type:"refine", indexField:"datasourceodcontenttypes", equalityOperator: " exact "},
|
["contenttype"]:{name:"Content Type",operator:"cn", type:"refine", indexField:"datasourceodcontenttypes", equalityOperator: " exact "},
|
||||||
["compatibility"]:{name:"Compatibility Level",operator:"cm", type:"vocabulary", indexField:"datasourcecompatibilityid", equalityOperator: " exact "},
|
["compatibility"]:{name:"Compatibility Level",operator:"cm", type:"vocabulary", indexField:"datasourcecompatibilityid", equalityOperator: " exact "},
|
||||||
|
["organization"]: {name:"Organization",operator:"og", type:"entity", indexField:"relorganizationid", equalityOperator: " exact "}
|
||||||
|
|
||||||
};
|
};
|
||||||
public COMPATIBLE_DATAPROVIDER_FIELDS:string[] = ["type","compatibility"];
|
public COMPATIBLE_DATAPROVIDER_FIELDS:string[] = ["type","compatibility"];
|
||||||
|
|
Loading…
Reference in New Issue