@fluid-topics/ft-search-result-context 1.1.27 → 1.1.29
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/utils.d.ts +1 -8
- package/build/utils.js +5 -24
- package/package.json +4 -4
- package/build/ClusteringHelper.d.ts +0 -18
- package/build/ClusteringHelper.js +0 -41
package/build/utils.d.ts
CHANGED
|
@@ -1,11 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export interface FlatMetadata {
|
|
3
|
-
key: string;
|
|
4
|
-
value: string;
|
|
5
|
-
displayValue: string;
|
|
6
|
-
}
|
|
7
|
-
export declare function flattenMetadata(metadata: FtMetadata): FlatMetadata;
|
|
8
|
-
export declare function extractResultMetadata(result: FtSearchResultClusterEntry): FlatMetadata[];
|
|
1
|
+
import { FtSearchResultClusterEntry } from "@fluid-topics/public-api";
|
|
9
2
|
export declare function getResultUrl(result: FtSearchResultClusterEntry): string;
|
|
10
3
|
export declare class SearchResultClickEvent extends CustomEvent<{
|
|
11
4
|
result: FtSearchResultClusterEntry;
|
package/build/utils.js
CHANGED
|
@@ -1,29 +1,10 @@
|
|
|
1
1
|
import { FtSearchResultType } from "@fluid-topics/public-api";
|
|
2
|
-
export function flattenMetadata(metadata) {
|
|
3
|
-
if (metadata.hierarchicalValues) {
|
|
4
|
-
const values = [];
|
|
5
|
-
const displayValues = [];
|
|
6
|
-
metadata.hierarchicalValues.forEach(tree => {
|
|
7
|
-
values.push(tree.join(" / "));
|
|
8
|
-
if (tree.length > 2) {
|
|
9
|
-
displayValues.push(`... / ${tree[tree.length - 1]}`);
|
|
10
|
-
}
|
|
11
|
-
else {
|
|
12
|
-
displayValues.push(tree.join(" / "));
|
|
13
|
-
}
|
|
14
|
-
});
|
|
15
|
-
return { key: metadata.key, value: values.join(", "), displayValue: displayValues.join(", ") };
|
|
16
|
-
}
|
|
17
|
-
else {
|
|
18
|
-
const value = metadata.values.join(", ");
|
|
19
|
-
return { key: metadata.key, value: value, displayValue: value };
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
export function extractResultMetadata(result) {
|
|
23
|
-
var _a, _b;
|
|
24
|
-
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 => flattenMetadata(m));
|
|
25
|
-
}
|
|
26
2
|
export function getResultUrl(result) {
|
|
3
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
4
|
+
let openMode = (_d = (_b = (_a = result.map) === null || _a === void 0 ? void 0 : _a.openMode) !== null && _b !== void 0 ? _b : (_c = result.topic) === null || _c === void 0 ? void 0 : _c.openMode) !== null && _d !== void 0 ? _d : (_e = result.document) === null || _e === void 0 ? void 0 : _e.openMode;
|
|
5
|
+
if (openMode === "EXTERNAL") {
|
|
6
|
+
return (_j = (_g = (_f = result.map) === null || _f === void 0 ? void 0 : _f.originUrl) !== null && _g !== void 0 ? _g : (_h = result.topic) === null || _h === void 0 ? void 0 : _h.originUrl) !== null && _j !== void 0 ? _j : (_k = result.document) === null || _k === void 0 ? void 0 : _k.originUrl;
|
|
7
|
+
}
|
|
27
8
|
switch (result.type) {
|
|
28
9
|
case FtSearchResultType.MAP:
|
|
29
10
|
return result.map.readerUrl;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fluid-topics/ft-search-result-context",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.29",
|
|
4
4
|
"description": "Search result context for integrated search component",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"Lit"
|
|
@@ -19,11 +19,11 @@
|
|
|
19
19
|
"url": "ssh://git@scm.mrs.antidot.net:2222/fluidtopics/ft-web-components.git"
|
|
20
20
|
},
|
|
21
21
|
"dependencies": {
|
|
22
|
-
"@fluid-topics/ft-wc-utils": "1.1.
|
|
22
|
+
"@fluid-topics/ft-wc-utils": "1.1.29",
|
|
23
23
|
"lit": "3.1.0"
|
|
24
24
|
},
|
|
25
25
|
"devDependencies": {
|
|
26
|
-
"@fluid-topics/public-api": "1.0.
|
|
26
|
+
"@fluid-topics/public-api": "1.0.57"
|
|
27
27
|
},
|
|
28
|
-
"gitHead": "
|
|
28
|
+
"gitHead": "0d8f67879e2608a03b96d18ba7b3ad25e065178b"
|
|
29
29
|
}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { FtMetadataDescriptor, FtSearchResultCluster, FtSearchResultClusterEntry } from "@fluid-topics/public-api";
|
|
2
|
-
import { FlatMetadata } from "./utils";
|
|
3
|
-
export interface ClusterItem {
|
|
4
|
-
metadata: FlatMetadata;
|
|
5
|
-
result: FtSearchResultClusterEntry;
|
|
6
|
-
}
|
|
7
|
-
export declare class ClusteringHelper {
|
|
8
|
-
private cluster;
|
|
9
|
-
private selectedResult;
|
|
10
|
-
private clusteringMetadata;
|
|
11
|
-
private metadataDescriptors;
|
|
12
|
-
constructor(cluster: FtSearchResultCluster, selectedResult: FtSearchResultClusterEntry, clusteringMetadata: Set<string>, metadataDescriptors: Array<FtMetadataDescriptor>);
|
|
13
|
-
computeClustersItemsForMetadata(key: string, locale: string): ClusterItem[];
|
|
14
|
-
private compareMetadata;
|
|
15
|
-
private findMatchingResult;
|
|
16
|
-
private findResultMatchingMetadata;
|
|
17
|
-
private resultMatchesMetadata;
|
|
18
|
-
}
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import { extractResultMetadata } from "./utils";
|
|
2
|
-
export class ClusteringHelper {
|
|
3
|
-
constructor(cluster, selectedResult, clusteringMetadata, metadataDescriptors) {
|
|
4
|
-
this.cluster = cluster;
|
|
5
|
-
this.selectedResult = selectedResult;
|
|
6
|
-
this.clusteringMetadata = clusteringMetadata;
|
|
7
|
-
this.metadataDescriptors = metadataDescriptors;
|
|
8
|
-
}
|
|
9
|
-
computeClustersItemsForMetadata(key, locale) {
|
|
10
|
-
var _a;
|
|
11
|
-
const metadataValues = (_a = this.cluster) === null || _a === void 0 ? void 0 : _a.entries.flatMap(result => extractResultMetadata(result).filter(m => m.key === key)).filter((flatMeta, index, array) => array.findIndex(i => i.value === flatMeta.value) === index); // for unicity
|
|
12
|
-
return metadataValues.map(flatMeta => ({
|
|
13
|
-
result: this.findMatchingResult(key, flatMeta.value),
|
|
14
|
-
metadata: flatMeta
|
|
15
|
-
})).sort((a, b) => this.compareMetadata(a.metadata.value, b.metadata.value, key, locale));
|
|
16
|
-
}
|
|
17
|
-
compareMetadata(a, b, key, locale) {
|
|
18
|
-
let descriptor = this.metadataDescriptors.find((descriptor) => key == descriptor.key);
|
|
19
|
-
let sortRule = (descriptor === null || descriptor === void 0 ? void 0 : descriptor.sortRule) || "NONE";
|
|
20
|
-
let reverseOrder = (descriptor === null || descriptor === void 0 ? void 0 : descriptor.reverseSort) || false;
|
|
21
|
-
if (sortRule == "ALPHABET" || sortRule == "VERSION") {
|
|
22
|
-
let result = a.localeCompare(b, locale, { numeric: true });
|
|
23
|
-
return reverseOrder ? result * -1 : result;
|
|
24
|
-
}
|
|
25
|
-
return 0;
|
|
26
|
-
}
|
|
27
|
-
findMatchingResult(key, value) {
|
|
28
|
-
var _a, _b;
|
|
29
|
-
let currentResultMetadata = extractResultMetadata(this.selectedResult)
|
|
30
|
-
.filter(m => this.clusteringMetadata.has(m.key));
|
|
31
|
-
let newExpectedMetadata = [...currentResultMetadata.filter(m => m.key !== key), { key, value, displayValue: value }];
|
|
32
|
-
return (_b = (_a = this.findResultMatchingMetadata(newExpectedMetadata)) !== null && _a !== void 0 ? _a : this.findResultMatchingMetadata([{ key, value, displayValue: value }])) !== null && _b !== void 0 ? _b : this.cluster.entries[0];
|
|
33
|
-
}
|
|
34
|
-
findResultMatchingMetadata(metadata) {
|
|
35
|
-
return this.cluster.entries.find(entry => this.resultMatchesMetadata(entry, metadata));
|
|
36
|
-
}
|
|
37
|
-
resultMatchesMetadata(result, expectedMetadata) {
|
|
38
|
-
let resultMetadata = extractResultMetadata(result);
|
|
39
|
-
return expectedMetadata.every(em => resultMetadata.some(rm => rm.key == em.key && rm.value == em.value));
|
|
40
|
-
}
|
|
41
|
-
}
|