diff --git a/searchPages/find/searchAll.component.html b/searchPages/find/searchAll.component.html index 35293df2..f602f3f7 100644 --- a/searchPages/find/searchAll.component.html +++ b/searchPages/find/searchAll.component.html @@ -19,7 +19,7 @@ [simpleView]="true" [formPlaceholderText]="formPlaceholderText" [selectedFields]="selectedFields" - [fieldIdsMap]="fieldIdsMap" [fieldIds]="fieldIds" + [fieldIdsMap]="fieldIdsMap" [fieldIds]="fieldIds" [entitiesSelection]="true" > diff --git a/searchPages/searchUtils/advancedSearchForm.component.html b/searchPages/searchUtils/advancedSearchForm.component.html index 9788091c..1c01a4e6 100644 --- a/searchPages/searchUtils/advancedSearchForm.component.html +++ b/searchPages/searchUtils/advancedSearchForm.component.html @@ -32,7 +32,7 @@ -
+
@@ -86,10 +86,10 @@
Add rule diff --git a/searchPages/searchUtils/dateFilter.component.ts b/searchPages/searchUtils/dateFilter.component.ts index 2be681db..66528d91 100644 --- a/searchPages/searchUtils/dateFilter.component.ts +++ b/searchPages/searchUtils/dateFilter.component.ts @@ -18,28 +18,28 @@ import {MatDatepickerInputEvent} from "@angular/material";
- - - - -
+ - From - - - --> + + + + + - To - - - --> + + + + + diff --git a/searchPages/searchUtils/entitiesSelection.component.ts b/searchPages/searchUtils/entitiesSelection.component.ts index 15a40c88..302a3cd2 100644 --- a/searchPages/searchUtils/entitiesSelection.component.ts +++ b/searchPages/searchUtils/entitiesSelection.component.ts @@ -25,7 +25,6 @@ import {Router} from "@angular/router"; Organizations --> - diff --git a/searchPages/searchUtils/newSearchPage.component.ts b/searchPages/searchUtils/newSearchPage.component.ts index 1a257606..e5b17b41 100644 --- a/searchPages/searchUtils/newSearchPage.component.ts +++ b/searchPages/searchUtils/newSearchPage.component.ts @@ -528,14 +528,60 @@ export class NewSearchPageComponent { * Build advanced search Filters based on the URL parameters * @param params */ - createAdvancedSearchSelectedFiltersFromURLParameters(params) { - for (var i = 0; i < this.fieldIds.length; i++) { + createAdvancedSearchSelectedFiltersFromNewURLParameters(params) { + 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 fieldparam = (this.fieldIdsMap[fieldId]) ? this.fieldIdsMap[fieldId].param : ""; if (!this.fieldIdsMap[fieldId]) { - console.error("Field: " + fieldId + " not found in fieldIds map"); + continue; } var operatorId = this.getOperatorParameter(fieldparam); @@ -569,7 +615,7 @@ export class NewSearchPageComponent { } } 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 { if (this.selectedFields[i].id == "q") { + console.log(this.selectedFields[i].value) var op = ""; var doisParams = ""; 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) { params += (countParams == 0 ? "" : " and ") + this.customFilter.queryFieldName + " exact " + StringUtils.quote((this.customFilter.valueId)); } - // console.log("ParameterS:") - // console.log(params) + console.log("ParameterS:") + console.log(params) return params; } @@ -911,33 +958,22 @@ export class NewSearchPageComponent { buildPageURLParameters(filters:Filter[], rangeFilters: RangeFilter[], includePage: boolean) { this.parameterNames.splice(0, this.parameterNames.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++) { - if (this.fieldIdsMap[this.selectedFields[i].id] != undefined && (this.selectedFields[i].value.length > 0 || this.selectedFields[i].type == "date")) { - if (!fields[this.selectedFields[i].id]) { - fields[this.selectedFields[i].id] = {values: [], operators: []}; - fields[this.selectedFields[i].id].values = []; - fields[this.selectedFields[i].id].operators = []; - } - 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); + //default operator is and + this.parameterNames.push("f"+i); + this.parameterValues.push(this.selectedFields[i].id + (this.selectedFields[i].operatorId!='and'?(","+this.selectedFields[i].operatorId):'')); + this.parameterNames.push("fv"+i); + if (this.selectedFields[i].type == "date") { - } - } - for (var i = 0; i < this.fieldIds.length; i++) { - if (fields[this.fieldIds[i]]) { - 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); - this.parameterValues.push(fields[this.fieldIds[i]].operators.join()); + 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))); + } else { + this.parameterValues.push(StringUtils.URIEncode(this.selectedFields[i].dateValue.type)); + } + + } else { + 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) { diff --git a/searchPages/searchUtils/quick-selections.component.ts b/searchPages/searchUtils/quick-selections.component.ts index 4479f3e3..e41d6914 100644 --- a/searchPages/searchUtils/quick-selections.component.ts +++ b/searchPages/searchUtils/quick-selections.component.ts @@ -18,9 +18,9 @@ import {ConfigurationService} from "../../utils/configuration/configuration.serv Include: Publications - Research Data + Research data Software - Other Research outcomes + Other research outcomes diff --git a/services/refineFieldResults.service.ts b/services/refineFieldResults.service.ts index e3450563..59fb2fa6 100644 --- a/services/refineFieldResults.service.ts +++ b/services/refineFieldResults.service.ts @@ -77,6 +77,8 @@ export class RefineFieldResultsService { suffix="datasources/"; }else if(entityType == "person"){ suffix="people/"; + }else if(entityType == "result"){ + suffix="publications/"; } return suffix; } diff --git a/services/searchResearchResults.service.ts b/services/searchResearchResults.service.ts index 52348dd3..c0555a32 100644 --- a/services/searchResearchResults.service.ts +++ b/services/searchResearchResults.service.ts @@ -390,7 +390,7 @@ export class SearchResearchResultsService { if(doisParams.length > 0){ url += "&"+doisParams; }else{ - url += "&q=" + StringUtils.URIEncode(params); + url += "&query=" + StringUtils.URIEncode(params); } } diff --git a/utils/entitiesAutoComplete/entitiesAutoComplete.component.ts b/utils/entitiesAutoComplete/entitiesAutoComplete.component.ts index a58e31c6..2457b469 100644 --- a/utils/entitiesAutoComplete/entitiesAutoComplete.component.ts +++ b/utils/entitiesAutoComplete/entitiesAutoComplete.component.ts @@ -259,7 +259,7 @@ export class EntitiesAutocompleteComponent { this.showInput = true; 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( data => { this.selected.push( data[0]); diff --git a/utils/properties/searchFields.ts b/utils/properties/searchFields.ts index 71ae04cd..477d2f11 100644 --- a/utils/properties/searchFields.ts +++ b/utils/properties/searchFields.ts @@ -40,7 +40,7 @@ export class SearchFields { ["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"}, ["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"}, ["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"},