Skip to content
This repository has been archived by the owner on Jul 11, 2023. It is now read-only.

Commit

Permalink
Merge branch 'develop' into next
Browse files Browse the repository at this point in the history
  • Loading branch information
Haroenv authored May 6, 2019
2 parents ec0fa7b + 0a5f115 commit 5acc939
Show file tree
Hide file tree
Showing 5 changed files with 64 additions and 66 deletions.
4 changes: 2 additions & 2 deletions src/SearchParameters/RefinementList.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@ var isFunction = require('lodash/isFunction');
var isEmpty = require('lodash/isEmpty');
var defaults = require('lodash/defaults');

var reduce = require('lodash/reduce');
var filter = require('lodash/filter');
var omit = require('../functions/omit');

Expand Down Expand Up @@ -103,7 +102,8 @@ var lib = {
} else if (isFunction(attribute)) {
var hasChanged = false;

var newRefinementList = reduce(refinementList, function(memo, values, key) {
var newRefinementList = Object.keys(refinementList).reduce(function(memo, key) {
var values = refinementList[key];
var facetList = filter(values, function(value) {
return !attribute(value, key, refinementType);
});
Expand Down
33 changes: 19 additions & 14 deletions src/SearchParameters/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,13 @@
var keys = require('lodash/keys');
var intersection = require('lodash/intersection');
var forOwn = require('lodash/forOwn');
var forEach = require('lodash/forEach');
var filter = require('lodash/filter');
var map = require('lodash/map');
var reduce = require('lodash/reduce');
var isNaN = require('lodash/isNaN');
var isEmpty = require('lodash/isEmpty');
var isEqual = require('lodash/isEqual');
var isUndefined = require('lodash/isUndefined');
var isFunction = require('lodash/isFunction');
var find = require('lodash/find');
var trim = require('lodash/trim');

var defaults = require('lodash/defaults');
var merge = require('lodash/merge');
Expand Down Expand Up @@ -229,7 +225,7 @@ SearchParameters._parseNumbers = function(partialState) {
'minProximity'
];

forEach(numberKeys, function(k) {
numberKeys.forEach(function(k) {
var value = partialState[k];
if (typeof value === 'string') {
var parsedValue = parseFloat(value);
Expand All @@ -249,9 +245,11 @@ SearchParameters._parseNumbers = function(partialState) {

if (partialState.numericRefinements) {
var numericRefinements = {};
forEach(partialState.numericRefinements, function(operators, attribute) {
Object.keys(partialState.numericRefinements).forEach(function(attribute) {
var operators = partialState.numericRefinements[attribute] || {};
numericRefinements[attribute] = {};
forEach(operators, function(values, operator) {
Object.keys(operators).forEach(function(operator) {
var values = operators[operator];
var parsedValues = values.map(function(v) {
if (Array.isArray(v)) {
return v.map(function(vPrime) {
Expand Down Expand Up @@ -283,7 +281,8 @@ SearchParameters._parseNumbers = function(partialState) {
SearchParameters.make = function makeSearchParameters(newParameters) {
var instance = new SearchParameters(newParameters);

forEach(newParameters.hierarchicalFacets, function(facet) {
var hierarchicalFacets = newParameters.hierarchicalFacets || [];
hierarchicalFacets.forEach(function(facet) {
if (facet.rootPath) {
var currentRefinement = instance.getHierarchicalRefinement(facet.name);

Expand Down Expand Up @@ -628,12 +627,16 @@ SearchParameters.prototype = {
return omit(this.numericRefinements, attribute);
} else if (isFunction(attribute)) {
var hasChanged = false;
var newNumericRefinements = reduce(this.numericRefinements, function(memo, operators, key) {
var numericRefinements = this.numericRefinements;
var newNumericRefinements = Object.keys(numericRefinements).reduce(function(memo, key) {
var operators = numericRefinements[key];
var operatorList = {};

forEach(operators, function(values, operator) {
operators = operators || {};
Object.keys(operators).forEach(function(operator) {
var values = operators[operator] || [];
var outValues = [];
forEach(values, function(value) {
values.forEach(function(value) {
var predicateResult = attribute({val: value, op: operator}, key, 'numeric');
if (!predicateResult) outValues.push(value);
});
Expand Down Expand Up @@ -1233,7 +1236,7 @@ SearchParameters.prototype = {
return intersection(
// enforce the order between the two arrays,
// so that refinement name index === hierarchical facet index
map(this.hierarchicalFacets, 'name'),
this.hierarchicalFacets.map(function(facet) { return facet.name; }),
keys(this.hierarchicalFacetsRefinements)
);
},
Expand Down Expand Up @@ -1322,7 +1325,7 @@ SearchParameters.prototype = {
return this.mutateMe(function mergeWith(newInstance) {
var ks = keys(params);

forEach(ks, function(k) {
ks.forEach(function(k) {
newInstance[k] = parsedParams[k];
});

Expand Down Expand Up @@ -1441,7 +1444,9 @@ SearchParameters.prototype = {
this.getHierarchicalFacetByName(facetName)
);
var path = refinement.split(separator);
return map(path, trim);
return path.map(function(part) {
return part.trim();
});
},

toString: function() {
Expand Down
27 changes: 17 additions & 10 deletions src/algoliasearch.helper.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ var events = require('events');
var inherits = require('./functions/inherits');

var flatten = require('lodash/flatten');
var forEach = require('lodash/forEach');
var isEmpty = require('lodash/isEmpty');

var version = require('./version');
Expand Down Expand Up @@ -307,10 +306,15 @@ AlgoliaSearchHelper.prototype.searchForFacetValues = function(facet, query, maxF

content = Array.isArray(content) ? content[0] : content;

content.facetHits = forEach(content.facetHits, function(f) {
f.isRefined = isDisjunctive ?
state.isDisjunctiveFacetRefined(facet, f.value) :
state.isFacetRefined(facet, f.value);
content.facetHits = Array.isArray(content.facetHits)
? content.facetHits
: [];

content.facetHits = content.facetHits.map(function(f) {
f.isRefined = isDisjunctive
? state.isDisjunctiveFacetRefined(facet, f.value)
: state.isFacetRefined(facet, f.value);
return f;
});

return content;
Expand Down Expand Up @@ -1151,7 +1155,7 @@ AlgoliaSearchHelper.prototype.getRefinements = function(facetName) {
if (this.state.isConjunctiveFacet(facetName)) {
var conjRefinements = this.state.getConjunctiveRefinements(facetName);

forEach(conjRefinements, function(r) {
conjRefinements.forEach(function(r) {
refinements.push({
value: r,
type: 'conjunctive'
Expand All @@ -1160,7 +1164,7 @@ AlgoliaSearchHelper.prototype.getRefinements = function(facetName) {

var excludeRefinements = this.state.getExcludeRefinements(facetName);

forEach(excludeRefinements, function(r) {
excludeRefinements.forEach(function(r) {
refinements.push({
value: r,
type: 'exclude'
Expand All @@ -1169,7 +1173,7 @@ AlgoliaSearchHelper.prototype.getRefinements = function(facetName) {
} else if (this.state.isDisjunctiveFacet(facetName)) {
var disjRefinements = this.state.getDisjunctiveRefinements(facetName);

forEach(disjRefinements, function(r) {
disjRefinements.forEach(function(r) {
refinements.push({
value: r,
type: 'disjunctive'
Expand All @@ -1179,7 +1183,9 @@ AlgoliaSearchHelper.prototype.getRefinements = function(facetName) {

var numericRefinements = this.state.getNumericRefinements(facetName);

forEach(numericRefinements, function(value, operator) {
Object.keys(numericRefinements).forEach(function(operator) {
var value = numericRefinements[operator];

refinements.push({
value: value,
operator: operator,
Expand Down Expand Up @@ -1292,7 +1298,8 @@ AlgoliaSearchHelper.prototype._dispatchAlgoliaResponse = function(states, queryI
if (this._currentNbQueries === 0) this.emit('searchQueueEmpty');

var results = content.results.slice();
forEach(states, function(s) {

states.forEach(function(s) {
var state = s.state;
var queriesCount = s.queriesCount;
var helper = s.helper;
Expand Down
23 changes: 0 additions & 23 deletions src/functions/warnOnce.js

This file was deleted.

43 changes: 26 additions & 17 deletions src/requestBuilder.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
'use strict';

var forEach = require('lodash/forEach');
var reduce = require('lodash/reduce');
var merge = require('lodash/merge');

var requestBuilder = {
Expand All @@ -21,15 +19,15 @@ var requestBuilder = {
});

// One for each disjunctive facets
forEach(state.getRefinedDisjunctiveFacets(), function(refinedFacet) {
state.getRefinedDisjunctiveFacets().forEach(function(refinedFacet) {
queries.push({
indexName: index,
params: requestBuilder._getDisjunctiveFacetSearchParams(state, refinedFacet)
});
});

// maybe more to get the root level of hierarchical facets when activated
forEach(state.getRefinedHierarchicalFacets(), function(refinedFacet) {
state.getRefinedHierarchicalFacets().forEach(function(refinedFacet) {
var hierarchicalFacet = state.getHierarchicalFacetByName(refinedFacet);

var currentRefinement = state.getHierarchicalRefinement(refinedFacet);
Expand Down Expand Up @@ -135,10 +133,12 @@ var requestBuilder = {

var numericFilters = [];

forEach(state.numericRefinements, function(operators, attribute) {
forEach(operators, function(values, operator) {
Object.keys(state.numericRefinements).forEach(function(attribute) {
var operators = state.numericRefinements[attribute] || {};
Object.keys(operators).forEach(function(operator) {
var values = operators[operator] || [];
if (facetName !== attribute) {
forEach(values, function(value) {
values.forEach(function(value) {
if (Array.isArray(value)) {
var vs = value.map(function(v) {
return attribute + operator + v;
Expand Down Expand Up @@ -179,30 +179,40 @@ var requestBuilder = {
_getFacetFilters: function(state, facet, hierarchicalRootLevel) {
var facetFilters = [];

forEach(state.facetsRefinements, function(facetValues, facetName) {
forEach(facetValues, function(facetValue) {
var facetsRefinements = state.facetsRefinements || {};
Object.keys(facetsRefinements).forEach(function(facetName) {
var facetValues = facetsRefinements[facetName] || [];
facetValues.forEach(function(facetValue) {
facetFilters.push(facetName + ':' + facetValue);
});
});

forEach(state.facetsExcludes, function(facetValues, facetName) {
forEach(facetValues, function(facetValue) {
var facetsExcludes = state.facetsExcludes || {};
Object.keys(facetsExcludes).forEach(function(facetName) {
var facetValues = facetsExcludes[facetName] || [];
facetValues.forEach(function(facetValue) {
facetFilters.push(facetName + ':-' + facetValue);
});
});

forEach(state.disjunctiveFacetsRefinements, function(facetValues, facetName) {
if (facetName === facet || !facetValues || facetValues.length === 0) return;
var disjunctiveFacetsRefinements = state.disjunctiveFacetsRefinements || {};
Object.keys(disjunctiveFacetsRefinements).forEach(function(facetName) {
var facetValues = disjunctiveFacetsRefinements[facetName] || [];
if (facetName === facet || !facetValues || facetValues.length === 0) {
return;
}
var orFilters = [];

forEach(facetValues, function(facetValue) {
facetValues.forEach(function(facetValue) {
orFilters.push(facetName + ':' + facetValue);
});

facetFilters.push(orFilters);
});

forEach(state.hierarchicalFacetsRefinements, function(facetValues, facetName) {
var hierarchicalFacetsRefinements = state.hierarchicalFacetsRefinements || {};
Object.keys(hierarchicalFacetsRefinements).forEach(function(facetName) {
var facetValues = hierarchicalFacetsRefinements[facetName] || [];
var facetValue = facetValues[0];

if (facetValue === undefined) {
Expand Down Expand Up @@ -250,8 +260,7 @@ var requestBuilder = {
_getHitsHierarchicalFacetsAttributes: function(state) {
var out = [];

return reduce(
state.hierarchicalFacets,
return state.hierarchicalFacets.reduce(
// ask for as much levels as there's hierarchical refinements
function getHitsAttributesForHierarchicalFacet(allAttributes, hierarchicalFacet) {
var hierarchicalRefinement = state.getHierarchicalRefinement(hierarchicalFacet.name)[0];
Expand Down

0 comments on commit 5acc939

Please sign in to comment.