[Explore|Trunk]
New Search: search all: add back entites selection advanced search: css changes for date field change result date query to " within " use new URL parameters - keep order git-svn-id: https://svn.driver.research-infrastructures.eu/driver/dnet40/modules/uoa-services-library/trunk/ng-openaire-library/src/app@58173 d315682c-612b-4755-9ff5-7f18f6832af3
This commit is contained in:
parent
2694761594
commit
803826efd3
|
@ -19,7 +19,7 @@
|
||||||
[simpleView]="true" [formPlaceholderText]="formPlaceholderText"
|
[simpleView]="true" [formPlaceholderText]="formPlaceholderText"
|
||||||
|
|
||||||
[selectedFields]="selectedFields"
|
[selectedFields]="selectedFields"
|
||||||
[fieldIdsMap]="fieldIdsMap" [fieldIds]="fieldIds"
|
[fieldIdsMap]="fieldIdsMap" [fieldIds]="fieldIds" [entitiesSelection]="true"
|
||||||
>
|
>
|
||||||
</advanced-search-form>
|
</advanced-search-form>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -32,7 +32,7 @@
|
||||||
<option *ngFor="let id of fieldIds" [value]="id">{{fieldIdsMap[id].name}} </option>
|
<option *ngFor="let id of fieldIds" [value]="id">{{fieldIdsMap[id].name}} </option>
|
||||||
</select></td>
|
</select></td>
|
||||||
<td *ngIf="selectedField.type == 'keyword'">
|
<td *ngIf="selectedField.type == 'keyword'">
|
||||||
<div class="uk-inline">
|
<div class="uk-inline uk-width-expand">
|
||||||
<a *ngIf="selectedField.value.length > 0" class="uk-form-icon uk-form-icon-flip"
|
<a *ngIf="selectedField.value.length > 0" class="uk-form-icon uk-form-icon-flip"
|
||||||
(click)="selectedField.value = ''"
|
(click)="selectedField.value = ''"
|
||||||
uk-icon="icon: close"></a>
|
uk-icon="icon: close"></a>
|
||||||
|
@ -86,10 +86,10 @@
|
||||||
</span>
|
</span>
|
||||||
</td>
|
</td>
|
||||||
<td style="min-width: 75px;"><select *ngIf="i+1 <selectedFields.length"
|
<td style="min-width: 75px;"><select *ngIf="i+1 <selectedFields.length"
|
||||||
[(ngModel)]="selectedField.operatorId"
|
[(ngModel)]="selectedFields[i+1].operatorId"
|
||||||
name="selectOp_{{i}}">
|
name="selectOp_{{i}}">
|
||||||
<option *ngFor="let op of operators" (change)="fieldOperatorChanged(i, op.id, op.id)"
|
<option *ngFor="let op of operators" (change)="fieldOperatorChanged(i+1, op.id, op.id)"
|
||||||
(click)="fieldOperatorChanged(i, op.id, op.id)" [value]="op.id">{{op.id}}</option>
|
(click)="fieldOperatorChanged(i+1, op.id, op.id)" [value]="op.id">{{op.id}}</option>
|
||||||
</select>
|
</select>
|
||||||
<div *ngIf="i == selectedFields.length-1 " class=" uk-text-right" style="margin-top: 55px;">
|
<div *ngIf="i == selectedFields.length-1 " class=" uk-text-right" style="margin-top: 55px;">
|
||||||
<span class="uk-text-muted uk-text-uppercase uk-margin-small-right " > Add rule</span>
|
<span class="uk-text-muted uk-text-uppercase uk-margin-small-right " > Add rule</span>
|
||||||
|
|
|
@ -18,28 +18,28 @@ import {MatDatepickerInputEvent} from "@angular/material";
|
||||||
<div *ngIf="dateValue && dateValue.type=='range' ">
|
<div *ngIf="dateValue && dateValue.type=='range' ">
|
||||||
<table class=" uk-table uk-table-responsive" >
|
<table class=" uk-table uk-table-responsive" >
|
||||||
<tr>
|
<tr>
|
||||||
<td class="uk-padding-remove-top">
|
<td class="uk-padding-remove">
|
||||||
<select name="{{'select_date_type'+filterId}}" [(ngModel)]=dateValue.type >
|
<select name="{{'select_date_type'+filterId}}" [(ngModel)]=dateValue.type >
|
||||||
<option *ngFor="let type of dateValue.types let i = index" [value]="type" (click)="typeChanged(type)">{{dateValue.typesTitle[i]}}</option>
|
<option *ngFor="let type of dateValue.types let i = index" [value]="type" (click)="typeChanged(type)">{{dateValue.typesTitle[i]}}</option>
|
||||||
</select>
|
</select>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<!-- <td>-->
|
||||||
From
|
<!-- From-->
|
||||||
</td>
|
<!-- </td>-->
|
||||||
<td class="uk-padding-remove-top" style="width: 112px;">
|
<td class="uk-padding-remove-vertical" style="width: 112px;">
|
||||||
<mat-form-field style="max-width: 112px;">
|
<mat-form-field style="max-width: 120px;">
|
||||||
<input matInput [matDatepicker]="pickerFrom" placeholder="Choose a date"
|
<input matInput [matDatepicker]="pickerFrom" placeholder="Choose from date"
|
||||||
[formControl]="fromDate" (click)="pickerFrom.open()" (dateChange)="fromDateChanged($event)">
|
[formControl]="fromDate" (click)="pickerFrom.open()" (dateChange)="fromDateChanged($event)">
|
||||||
<mat-datepicker-toggle matSuffix [for]="pickerFrom"></mat-datepicker-toggle>
|
<mat-datepicker-toggle matSuffix [for]="pickerFrom"></mat-datepicker-toggle>
|
||||||
<mat-datepicker #pickerFrom></mat-datepicker>
|
<mat-datepicker #pickerFrom></mat-datepicker>
|
||||||
</mat-form-field>
|
</mat-form-field>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<!-- <td>-->
|
||||||
To
|
<!-- To -->
|
||||||
</td>
|
<!-- </td>-->
|
||||||
<td class="uk-padding-remove-top" style="width: 112px;">
|
<td class="uk-padding-remove" style="width: 112px;">
|
||||||
<mat-form-field style="max-width: 112px;">
|
<mat-form-field style="max-width: 120px;">
|
||||||
<input matInput [matDatepicker]="pickerTo" placeholder="Choose a date"
|
<input matInput [matDatepicker]="pickerTo" placeholder="Choose to date"
|
||||||
[formControl]="toDate" (click)="pickerTo.open()" (dateChange)="toDateChanged($event)">
|
[formControl]="toDate" (click)="pickerTo.open()" (dateChange)="toDateChanged($event)">
|
||||||
<mat-datepicker-toggle matSuffix [for]="pickerTo"></mat-datepicker-toggle>
|
<mat-datepicker-toggle matSuffix [for]="pickerTo"></mat-datepicker-toggle>
|
||||||
<mat-datepicker #pickerTo></mat-datepicker>
|
<mat-datepicker #pickerTo></mat-datepicker>
|
||||||
|
|
|
@ -25,7 +25,6 @@ import {Router} from "@angular/router";
|
||||||
<span *ngIf="currentEntity=='organization'">Organizations</span>
|
<span *ngIf="currentEntity=='organization'">Organizations</span>
|
||||||
</button>-->
|
</button>-->
|
||||||
<!---->
|
<!---->
|
||||||
|
|
||||||
<span class="entitiesSelection portal-box uk-text-small " style="" >
|
<span class="entitiesSelection portal-box uk-text-small " style="" >
|
||||||
<mat-select *ngIf="show && selectedEntity" [(value)]="selectedEntity"
|
<mat-select *ngIf="show && selectedEntity" [(value)]="selectedEntity"
|
||||||
(valueChange)="entityChanged()" [disableOptionCentering]="true" panelClass="entitiesSelectionPanel">
|
(valueChange)="entityChanged()" [disableOptionCentering]="true" panelClass="entitiesSelectionPanel">
|
||||||
|
|
|
@ -528,14 +528,60 @@ export class NewSearchPageComponent {
|
||||||
* Build advanced search Filters based on the URL parameters
|
* Build advanced search Filters based on the URL parameters
|
||||||
* @param params
|
* @param params
|
||||||
*/
|
*/
|
||||||
createAdvancedSearchSelectedFiltersFromURLParameters(params) {
|
createAdvancedSearchSelectedFiltersFromNewURLParameters(params) {
|
||||||
for (var i = 0; i < this.fieldIds.length; i++) {
|
for (let i = 0; i < Object.keys(params).length; i++) {
|
||||||
|
if(params["f"+i] && params["fv"+i] ) {
|
||||||
|
let fieldId = params["f" + i].split(",")[0];
|
||||||
|
let operator = (params["f" + i].split(",").length >1 )?params["f" + i].split(",")[1]:"and";
|
||||||
|
let fieldparam = (this.fieldIdsMap[fieldId]) ? this.fieldIdsMap[fieldId].param : "";
|
||||||
|
|
||||||
|
if (!this.fieldIdsMap[fieldId]) {
|
||||||
|
console.error("Field: " + fieldId + " not found in fieldIds map");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
let value: string = StringUtils.URIDecode(params["fv"+i]);
|
||||||
|
if (this.fieldIdsMap[fieldId].type == "date") {
|
||||||
|
let validDates: boolean = true;
|
||||||
|
let dateField: AdvancedField = new AdvancedField(fieldId, fieldparam, this.fieldIdsMap[fieldId].name, this.fieldIdsMap[fieldId].type, value, operator);
|
||||||
|
if (value.indexOf("range") != -1) {
|
||||||
|
dateField.dateValue.type = "range";
|
||||||
|
if (value.length < 26) {
|
||||||
|
validDates = false;
|
||||||
|
} else {
|
||||||
|
if (!Dates.isValidDate(value.substring(5, 15)) || !Dates.isValidDate(value.substring(16, 26))) {
|
||||||
|
validDates = false;
|
||||||
|
} else {
|
||||||
|
dateField.dateValue.from = Dates.getDateFromString(value.substring(5, 15));
|
||||||
|
dateField.dateValue.to = Dates.getDateFromString(value.substring(16, 26));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// "rangeYYYY-MM-DD:YYYY-MM-DD"
|
||||||
|
} else {
|
||||||
|
dateField.dateValue.setDatesByType(value);
|
||||||
|
}
|
||||||
|
if (validDates) {
|
||||||
|
this.selectedFields.push(dateField);
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
this.selectedFields.push(new AdvancedField(fieldId, fieldparam, this.fieldIdsMap[fieldId].name, this.fieldIdsMap[fieldId].type,value, operator));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Build advanced search Filters based on the URL parameters
|
||||||
|
* @param params
|
||||||
|
*/
|
||||||
|
createAdvancedSearchSelectedFiltersFromURLParameters(params) {
|
||||||
|
this.createAdvancedSearchSelectedFiltersFromNewURLParameters(params);
|
||||||
|
for (var i = 0; i < this.fieldIds.length; i++) {
|
||||||
var fieldId = this.fieldIds[i];
|
var fieldId = this.fieldIds[i];
|
||||||
var fieldparam = (this.fieldIdsMap[fieldId]) ? this.fieldIdsMap[fieldId].param : "";
|
var fieldparam = (this.fieldIdsMap[fieldId]) ? this.fieldIdsMap[fieldId].param : "";
|
||||||
if (!this.fieldIdsMap[fieldId]) {
|
if (!this.fieldIdsMap[fieldId]) {
|
||||||
|
|
||||||
console.error("Field: " + fieldId + " not found in fieldIds map");
|
console.error("Field: " + fieldId + " not found in fieldIds map");
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
var operatorId = this.getOperatorParameter(fieldparam);
|
var operatorId = this.getOperatorParameter(fieldparam);
|
||||||
|
@ -569,7 +615,7 @@ export class NewSearchPageComponent {
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
this.selectedFields.push(new AdvancedField(fieldId, fieldparam, this.fieldIdsMap[fieldId].name, this.fieldIdsMap[fieldId].type, StringUtils.unquote(values[j]), operators[j]));
|
this.selectedFields.push(new AdvancedField(fieldId, fieldparam, this.fieldIdsMap[fieldId].name, this.fieldIdsMap[fieldId].type, values[j], operators[j]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -600,6 +646,7 @@ export class NewSearchPageComponent {
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (this.selectedFields[i].id == "q") {
|
if (this.selectedFields[i].id == "q") {
|
||||||
|
console.log(this.selectedFields[i].value)
|
||||||
var op = "";
|
var op = "";
|
||||||
var doisParams = "";
|
var doisParams = "";
|
||||||
if ((this.entityType == 'publication' || this.entityType == 'dataset' || this.entityType == 'software' || this.entityType == 'other' || this.entityType == "result")) {
|
if ((this.entityType == 'publication' || this.entityType == 'dataset' || this.entityType == 'software' || this.entityType == 'other' || this.entityType == "result")) {
|
||||||
|
@ -636,8 +683,8 @@ export class NewSearchPageComponent {
|
||||||
if (this.customFilter) {
|
if (this.customFilter) {
|
||||||
params += (countParams == 0 ? "" : " and ") + this.customFilter.queryFieldName + " exact " + StringUtils.quote((this.customFilter.valueId));
|
params += (countParams == 0 ? "" : " and ") + this.customFilter.queryFieldName + " exact " + StringUtils.quote((this.customFilter.valueId));
|
||||||
}
|
}
|
||||||
// console.log("ParameterS:")
|
console.log("ParameterS:")
|
||||||
// console.log(params)
|
console.log(params)
|
||||||
return params;
|
return params;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -911,33 +958,22 @@ export class NewSearchPageComponent {
|
||||||
buildPageURLParameters(filters:Filter[], rangeFilters: RangeFilter[], includePage: boolean) {
|
buildPageURLParameters(filters:Filter[], rangeFilters: RangeFilter[], includePage: boolean) {
|
||||||
this.parameterNames.splice(0, this.parameterNames.length);
|
this.parameterNames.splice(0, this.parameterNames.length);
|
||||||
this.parameterValues.splice(0, this.parameterValues.length);
|
this.parameterValues.splice(0, this.parameterValues.length);
|
||||||
var fields: { [key: string]: { values: string[], operators: string[] } } = {};
|
|
||||||
for (var i = 0; i < this.selectedFields.length; i++) {
|
for (var i = 0; i < this.selectedFields.length; i++) {
|
||||||
if (this.fieldIdsMap[this.selectedFields[i].id] != undefined && (this.selectedFields[i].value.length > 0 || this.selectedFields[i].type == "date")) {
|
//default operator is and
|
||||||
if (!fields[this.selectedFields[i].id]) {
|
this.parameterNames.push("f"+i);
|
||||||
fields[this.selectedFields[i].id] = {values: [], operators: []};
|
this.parameterValues.push(this.selectedFields[i].id + (this.selectedFields[i].operatorId!='and'?(","+this.selectedFields[i].operatorId):''));
|
||||||
fields[this.selectedFields[i].id].values = [];
|
this.parameterNames.push("fv"+i);
|
||||||
fields[this.selectedFields[i].id].operators = [];
|
if (this.selectedFields[i].type == "date") {
|
||||||
}
|
|
||||||
if (this.selectedFields[i].type == "date") {
|
|
||||||
if (this.selectedFields[i].dateValue.type == "range") {
|
|
||||||
fields[this.selectedFields[i].id].values.push(StringUtils.quote(StringUtils.URIEncode("range" + Dates.getDateToString(this.selectedFields[i].dateValue.from) + ":" + Dates.getDateToString(this.selectedFields[i].dateValue.to))));
|
|
||||||
} else {
|
|
||||||
fields[this.selectedFields[i].id].values.push(StringUtils.quote(StringUtils.URIEncode(this.selectedFields[i].dateValue.type)));
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
fields[this.selectedFields[i].id].values.push(StringUtils.quote(StringUtils.URIEncode(this.selectedFields[i].value)));
|
|
||||||
}
|
|
||||||
fields[this.selectedFields[i].id].operators.push(this.selectedFields[i].operatorId);
|
|
||||||
|
|
||||||
}
|
if (this.selectedFields[i].dateValue.type == "range") {
|
||||||
}
|
this.parameterValues.push(StringUtils.URIEncode("range" + Dates.getDateToString(this.selectedFields[i].dateValue.from) + ":" + Dates.getDateToString(this.selectedFields[i].dateValue.to)));
|
||||||
for (var i = 0; i < this.fieldIds.length; i++) {
|
} else {
|
||||||
if (fields[this.fieldIds[i]]) {
|
this.parameterValues.push(StringUtils.URIEncode(this.selectedFields[i].dateValue.type));
|
||||||
this.parameterNames.push(this.fieldIdsMap[this.fieldIds[i]].param);
|
}
|
||||||
this.parameterValues.push(fields[this.fieldIds[i]].values.join());
|
|
||||||
this.parameterNames.push(this.fieldIdsMap[this.fieldIds[i]].operator);
|
} else {
|
||||||
this.parameterValues.push(fields[this.fieldIds[i]].operators.join());
|
console.log(this.selectedFields[i].value +" " + StringUtils.URIEncode(this.selectedFields[i].value))
|
||||||
|
this.parameterValues.push(StringUtils.URIEncode(this.selectedFields[i].value));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (includePage && this.searchUtils.page != 1) {
|
if (includePage && this.searchUtils.page != 1) {
|
||||||
|
|
|
@ -18,9 +18,9 @@ import {ConfigurationService} from "../../utils/configuration/configuration.serv
|
||||||
<span class="uk-text-muted">Include: </span>
|
<span class="uk-text-muted">Include: </span>
|
||||||
<span>
|
<span>
|
||||||
<span *ngIf="showPublications" class="uk-margin-small-left"> <input type="checkbox" id="publ" name="Publications" formControlName="publication" (change)="changed()"> Publications </span>
|
<span *ngIf="showPublications" class="uk-margin-small-left"> <input type="checkbox" id="publ" name="Publications" formControlName="publication" (change)="changed()"> Publications </span>
|
||||||
<span *ngIf="showDatasets" class="uk-margin-small-left"> <input type="checkbox" formControlName="dataset" (change)="changed()"> Research Data </span>
|
<span *ngIf="showDatasets" class="uk-margin-small-left"> <input type="checkbox" formControlName="dataset" (change)="changed()"> Research data </span>
|
||||||
<span *ngIf="showSoftware" class="uk-margin-small-left"> <input type="checkbox" formControlName="software" (change)="changed()"> Software </span>
|
<span *ngIf="showSoftware" class="uk-margin-small-left"> <input type="checkbox" formControlName="software" (change)="changed()"> Software </span>
|
||||||
<span *ngIf="showOrp" class="uk-margin-small-left"> <input type="checkbox" formControlName="other" (change)="changed()"> Other Research outcomes </span>
|
<span *ngIf="showOrp" class="uk-margin-small-left"> <input type="checkbox" formControlName="other" (change)="changed()"> Other research outcomes </span>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
|
|
@ -77,6 +77,8 @@ export class RefineFieldResultsService {
|
||||||
suffix="datasources/";
|
suffix="datasources/";
|
||||||
}else if(entityType == "person"){
|
}else if(entityType == "person"){
|
||||||
suffix="people/";
|
suffix="people/";
|
||||||
|
}else if(entityType == "result"){
|
||||||
|
suffix="publications/";
|
||||||
}
|
}
|
||||||
return suffix;
|
return suffix;
|
||||||
}
|
}
|
||||||
|
|
|
@ -390,7 +390,7 @@ export class SearchResearchResultsService {
|
||||||
if(doisParams.length > 0){
|
if(doisParams.length > 0){
|
||||||
url += "&"+doisParams;
|
url += "&"+doisParams;
|
||||||
}else{
|
}else{
|
||||||
url += "&q=" + StringUtils.URIEncode(params);
|
url += "&query=" + StringUtils.URIEncode(params);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -259,7 +259,7 @@ export class EntitiesAutocompleteComponent {
|
||||||
this.showInput = true;
|
this.showInput = true;
|
||||||
if(this.selectedValue && this.selectedValue.length > 0 ){
|
if(this.selectedValue && this.selectedValue.length > 0 ){
|
||||||
|
|
||||||
|
console.log(this.selectedValue+" "+this.entityType )
|
||||||
this.sub = this._search.fetchByType(this.selectedValue,this.entityType, this.properties).subscribe(
|
this.sub = this._search.fetchByType(this.selectedValue,this.entityType, this.properties).subscribe(
|
||||||
data => {
|
data => {
|
||||||
this.selected.push( data[0]);
|
this.selected.push( data[0]);
|
||||||
|
|
|
@ -40,7 +40,7 @@ export class SearchFields {
|
||||||
["relfundinglevel1_id"]:{name:"Funding Substream level 1", type:"refine", param:"funderlv1", operator: "fn1", equalityOperator: " exact ", filterType: "checkbox"},
|
["relfundinglevel1_id"]:{name:"Funding Substream level 1", type:"refine", param:"funderlv1", operator: "fn1", equalityOperator: " exact ", filterType: "checkbox"},
|
||||||
["relfundinglevel2_id"]:{name:"Funding Substream level 2", type:"refine", param:"funderlv2", operator: "fn0", equalityOperator: " exact ", filterType: "checkbox"},
|
["relfundinglevel2_id"]:{name:"Funding Substream level 2", type:"refine", param:"funderlv2", operator: "fn0", equalityOperator: " exact ", filterType: "checkbox"},
|
||||||
["resultacceptanceyear"]:{name:"Publication Date", type:"keyword", param:"year", operator: "ya", equalityOperator: " = ", filterType: null},
|
["resultacceptanceyear"]:{name:"Publication Date", type:"keyword", param:"year", operator: "ya", equalityOperator: " = ", filterType: null},
|
||||||
["resultdateofacceptance"]:{name:"Publication Date", type:"date", param:"date", operator: "dt", equalityOperator: " exact ", filterType: null},
|
["resultdateofacceptance"]:{name:"Publication Date", type:"date", param:"date", operator: "dt", equalityOperator: " within ", filterType: null},
|
||||||
["resultacceptanceyear-range-resultacceptanceyear"]:{name:"Year range", type:"keyword", param:"year", operator: "ya", equalityOperator: " within ", filterType: "range"},
|
["resultacceptanceyear-range-resultacceptanceyear"]:{name:"Year range", type:"keyword", param:"year", operator: "ya", equalityOperator: " within ", filterType: "range"},
|
||||||
["resultbestaccessright"]:{name:"Access Mode", type:"vocabulary", param:"access", operator: "ac", equalityOperator: " exact ", filterType: "radio"},
|
["resultbestaccessright"]:{name:"Access Mode", type:"vocabulary", param:"access", operator: "ac", equalityOperator: " exact ", filterType: "radio"},
|
||||||
["collectedfrom"]:{name:"Collected From", type:"refine", param:"datasource", operator: "cl", equalityOperator: " exact ", filterType: "checkbox"},
|
["collectedfrom"]:{name:"Collected From", type:"refine", param:"datasource", operator: "cl", equalityOperator: " exact ", filterType: "checkbox"},
|
||||||
|
|
Loading…
Reference in New Issue