@fluid-topics/ft-wc-utils
Advanced tools
Comparing version 1.1.54 to 1.1.55
import { FtMetadata, FtMetadataDescriptor, FtSearchResultClusterEntry } from "@fluid-topics/public-api"; | ||
import { Optional } from "./generic-types"; | ||
export interface FlatMetadata { | ||
key: string; | ||
value: string; | ||
label: string; | ||
value: Optional<string>; | ||
displayValue: string; | ||
@@ -18,7 +20,9 @@ } | ||
static extractResultMetadata(result: FtSearchResultClusterEntry): FlatMetadata[]; | ||
static extractResultMetadata(result: FtSearchResultClusterEntry, key: string): Optional<FlatMetadata>; | ||
static flattenMetadata(metadata: FtMetadata): FlatMetadata; | ||
computeClustersItemsForMetadata(key: string, locale: string): ClusterItem[]; | ||
computeClustersItemsForMetadata(key: string, locale: string, undefinedDisplayValue?: string): ClusterItem[]; | ||
private compareMetadata; | ||
getMetadataDescriptor(key: string): FtMetadataDescriptor | undefined; | ||
private findBestResultForMetadataValue; | ||
private countMatchingMetadata; | ||
} |
@@ -8,5 +8,6 @@ export class ClusteringHelper { | ||
} | ||
static extractResultMetadata(result) { | ||
static extractResultMetadata(result, key) { | ||
var _a, _b; | ||
return ((_b = (_a = result === null || result === void 0 ? void 0 : result.map) !== null && _a !== void 0 ? _a : result === null || result === void 0 ? void 0 : result.document) !== null && _b !== void 0 ? _b : result === null || result === void 0 ? void 0 : result.topic).metadata.map(m => ClusteringHelper.flattenMetadata(m)); | ||
let flatMetadata = ((_b = (_a = result === null || result === void 0 ? void 0 : result.map) !== null && _a !== void 0 ? _a : result === null || result === void 0 ? void 0 : result.document) !== null && _b !== void 0 ? _b : result === null || result === void 0 ? void 0 : result.topic).metadata.map(m => ClusteringHelper.flattenMetadata(m)); | ||
return key == null ? flatMetadata : flatMetadata.find(m => m.key === key); | ||
} | ||
@@ -26,14 +27,27 @@ static flattenMetadata(metadata) { | ||
}); | ||
return { key: metadata.key, value: values.join(", "), displayValue: displayValues.join(", ") }; | ||
return { | ||
key: metadata.key, | ||
label: metadata.label, | ||
value: values.join(", "), | ||
displayValue: displayValues.join(", ") | ||
}; | ||
} | ||
else { | ||
const value = metadata.values.join(", "); | ||
return { key: metadata.key, value: value, displayValue: value }; | ||
return { | ||
key: metadata.key, | ||
label: metadata.label, | ||
value: value, | ||
displayValue: value | ||
}; | ||
} | ||
} | ||
computeClustersItemsForMetadata(key, locale) { | ||
let currentResultMetadataTargeted = ClusteringHelper.extractResultMetadata(this.selectedResult).find(m => m.key === key); | ||
computeClustersItemsForMetadata(key, locale, undefinedDisplayValue = "No value") { | ||
var _a, _b; | ||
let currentResultMetadataTargeted = ClusteringHelper.extractResultMetadata(this.selectedResult, key); | ||
let metadataLabel = (_a = currentResultMetadataTargeted === null || currentResultMetadataTargeted === void 0 ? void 0 : currentResultMetadataTargeted.label) !== null && _a !== void 0 ? _a : (_b = this.getMetadataDescriptor(key)) === null || _b === void 0 ? void 0 : _b.label; | ||
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))) | ||
.map(result => ClusteringHelper.extractResultMetadata(result, key)) | ||
.map(m => m !== null && m !== void 0 ? m : { key: key, label: metadataLabel, value: undefined, displayValue: undefinedDisplayValue }) | ||
.filter(m => 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 | ||
@@ -46,3 +60,9 @@ return otherValues.map(meta => ({ | ||
compareMetadata(a, b, key, locale) { | ||
let descriptor = this.metadataDescriptors.find((descriptor) => key == descriptor.key); | ||
if (a == null) { | ||
return -1; | ||
} | ||
if (b == null) { | ||
return 1; | ||
} | ||
let descriptor = this.getMetadataDescriptor(key); | ||
let sortRule = (descriptor === null || descriptor === void 0 ? void 0 : descriptor.sortRule) || "NONE"; | ||
@@ -56,5 +76,8 @@ let reverseOrder = (descriptor === null || descriptor === void 0 ? void 0 : descriptor.reverseSort) || false; | ||
} | ||
getMetadataDescriptor(key) { | ||
return this.metadataDescriptors.find((descriptor) => key == descriptor.key); | ||
} | ||
findBestResultForMetadataValue(key, value) { | ||
const resultsMatchingRequiredValue = this.allResults | ||
.filter(result => ClusteringHelper.extractResultMetadata(result).find(em => em.key === key && em.value === value)); | ||
.filter(result => { var _a; return ((_a = ClusteringHelper.extractResultMetadata(result, key)) === null || _a === void 0 ? void 0 : _a.value) == value; }); | ||
let currentResultMetadata = ClusteringHelper.extractResultMetadata(this.selectedResult) | ||
@@ -61,0 +84,0 @@ .filter(m => this.clusteringMetadata.has(m.key)); |
{ | ||
"name": "@fluid-topics/ft-wc-utils", | ||
"version": "1.1.54", | ||
"version": "1.1.55", | ||
"description": "Internal web components tools", | ||
@@ -27,3 +27,3 @@ "author": "Fluid Topics <devtopics@antidot.net>", | ||
}, | ||
"gitHead": "b8c7a07061df6fb5c3c03d96879eda48fb73e5c8" | ||
"gitHead": "f548a38dc05ea47ac4e94d97fe62625fc9297fcc" | ||
} |
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
86116
1746