@fluid-topics/ft-wc-utils
Advanced tools
Comparing version 1.1.39 to 1.1.40
@@ -21,5 +21,4 @@ import { FtMetadata, FtMetadataDescriptor, FtSearchResultClusterEntry } from "@fluid-topics/public-api"; | ||
private compareMetadata; | ||
private findMatchingResult; | ||
private findResultMatchingMetadata; | ||
private resultMatchesMetadata; | ||
private findBestResultForMetadataValue; | ||
private countMatchingMetadata; | ||
} |
@@ -33,8 +33,10 @@ export class ClusteringHelper { | ||
computeClustersItemsForMetadata(key, locale) { | ||
const metadataValues = this.allResults | ||
let currentResultMetadataTargeted = ClusteringHelper.extractResultMetadata(this.selectedResult).find(m => m.key === key); | ||
const otherValues = this.allResults | ||
.flatMap(result => ClusteringHelper.extractResultMetadata(result).filter(m => m.key === key)) | ||
.filter(m => !(m.key === (currentResultMetadataTargeted === null || currentResultMetadataTargeted === void 0 ? void 0 : currentResultMetadataTargeted.key) && m.value === (currentResultMetadataTargeted === null || currentResultMetadataTargeted === void 0 ? void 0 : currentResultMetadataTargeted.value))) | ||
.filter((flatMeta, index, array) => array.findIndex(i => i.value === flatMeta.value) === index); // for unicity | ||
return metadataValues.map(flatMeta => ({ | ||
result: this.findMatchingResult(key, flatMeta.value), | ||
metadata: flatMeta | ||
return otherValues.map(meta => ({ | ||
result: this.findBestResultForMetadataValue(key, meta.value), | ||
metadata: meta | ||
})).sort((a, b) => this.compareMetadata(a.metadata.value, b.metadata.value, key, locale)); | ||
@@ -52,16 +54,26 @@ } | ||
} | ||
findMatchingResult(key, value) { | ||
var _a, _b; | ||
findBestResultForMetadataValue(key, value) { | ||
const resultsMatchingRequiredValue = this.allResults | ||
.filter(result => ClusteringHelper.extractResultMetadata(result).find(em => em.key === key && em.value === value)); | ||
let currentResultMetadata = ClusteringHelper.extractResultMetadata(this.selectedResult) | ||
.filter(m => this.clusteringMetadata.has(m.key)); | ||
let newExpectedMetadata = [...currentResultMetadata.filter(m => m.key !== key), { key, value, displayValue: value }]; | ||
return (_b = (_a = this.findResultMatchingMetadata(newExpectedMetadata)) !== null && _a !== void 0 ? _a : this.findResultMatchingMetadata([{ key, value, displayValue: value }])) !== null && _b !== void 0 ? _b : this.allResults[0]; | ||
let wishedMetadata = [...currentResultMetadata.filter(m => m.key !== key)]; | ||
let bestResultForMetadataValue = resultsMatchingRequiredValue[0]; | ||
let bestResultScore = this.countMatchingMetadata(resultsMatchingRequiredValue[0], wishedMetadata); | ||
for (let i = 1; i < resultsMatchingRequiredValue.length; i++) { | ||
let currentNumberMetadataMatching = this.countMatchingMetadata(resultsMatchingRequiredValue[i], wishedMetadata); | ||
if (currentNumberMetadataMatching > bestResultScore) { | ||
bestResultScore = currentNumberMetadataMatching; | ||
bestResultForMetadataValue = resultsMatchingRequiredValue[i]; | ||
if (currentNumberMetadataMatching > wishedMetadata.length) { | ||
return bestResultForMetadataValue; | ||
} | ||
} | ||
} | ||
return bestResultForMetadataValue; | ||
} | ||
findResultMatchingMetadata(metadata) { | ||
return this.allResults.find(entry => this.resultMatchesMetadata(entry, metadata)); | ||
countMatchingMetadata(result, expectedMetadata) { | ||
return ClusteringHelper.extractResultMetadata(result) | ||
.filter(m => expectedMetadata.some(em => em.key === m.key && em.value === m.value)).length; | ||
} | ||
resultMatchesMetadata(result, expectedMetadata) { | ||
let resultMetadata = ClusteringHelper.extractResultMetadata(result); | ||
return expectedMetadata.every(em => resultMetadata.some(rm => rm.key == em.key && rm.value == em.value)); | ||
} | ||
} |
{ | ||
"name": "@fluid-topics/ft-wc-utils", | ||
"version": "1.1.39", | ||
"version": "1.1.40", | ||
"description": "Internal web components tools", | ||
@@ -26,3 +26,3 @@ "author": "Fluid Topics <devtopics@antidot.net>", | ||
}, | ||
"gitHead": "a9b7f979a6e94b58571a61de90a4b2655800690d" | ||
"gitHead": "ef5d1fb82ff388535e7a81aa3e8ffdb53c7591b4" | ||
} |
Sorry, the diff of this file is too big to display
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
279787
2542