@fluid-topics/ft-search-context 1.3.5 → 1.3.7

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.
@@ -1,7 +1,7 @@
1
1
  import { FtSearchPageState } from "./model";
2
2
  import { FtReduxStore, ReduxWatcher } from "@fluid-topics/ft-wc-utils";
3
3
  import { FtSearchPageStateReducers } from "./redux";
4
- import { FtAnalyticsEventDocument, FtSearchResultCluster, FtSearchResultClusterEntry } from "@fluid-topics/public-api";
4
+ import { FtAnalyticsEventDocument, FtMap, FtSearchResultCluster, FtSearchResultClusterEntry } from "@fluid-topics/public-api";
5
5
  import { FtAnalyticsEventsService } from "@fluid-topics/ft-app-context";
6
6
  export declare class FtAnalyticsSearchEventManager {
7
7
  readonly store: FtReduxStore<FtSearchPageState, FtSearchPageStateReducers>;
@@ -19,6 +19,9 @@ export declare class FtAnalyticsSearchEventManager {
19
19
  setAppName(appName: string): void;
20
20
  setAppVersion(appVersion: string): void;
21
21
  setDocumentSearch(document: FtAnalyticsEventDocument): void;
22
+ setDocumentSearchFromMap(map: FtMap): void;
23
+ initAppInfo(): void;
24
+ private convertToAnalyticsMap;
22
25
  private canSendEvent;
23
26
  private sendEvent;
24
27
  private sendKhubSearchEvent;
@@ -38,6 +38,34 @@ export class FtAnalyticsSearchEventManager {
38
38
  setDocumentSearch(document) {
39
39
  this.document = document;
40
40
  }
41
+ setDocumentSearchFromMap(map) {
42
+ this.setDocumentSearch(this.convertToAnalyticsMap(map));
43
+ }
44
+ initAppInfo() {
45
+ const { apiIntegrationIdentifier, apiIntegrationAppVersion } = ftAppInfoStore.getState();
46
+ this.setAppName(apiIntegrationIdentifier !== null && apiIntegrationIdentifier !== void 0 ? apiIntegrationIdentifier : "unknown");
47
+ this.setAppVersion(apiIntegrationAppVersion !== null && apiIntegrationAppVersion !== void 0 ? apiIntegrationAppVersion : "unknown");
48
+ }
49
+ convertToAnalyticsMap(map) {
50
+ let documentType;
51
+ switch (map.editorialType) {
52
+ case "BOOK":
53
+ documentType = "STRUCTURED_DOCUMENT";
54
+ break;
55
+ case "SHARED_BOOK":
56
+ documentType = "SHARED_PERSONAL_BOOK";
57
+ break;
58
+ case "ARTICLE":
59
+ documentType = "RESOURCE";
60
+ break;
61
+ }
62
+ return {
63
+ id: map.id,
64
+ title: map.title,
65
+ type: documentType,
66
+ metadata: map.metadata,
67
+ };
68
+ }
41
69
  canSendEvent() {
42
70
  if (this.appName == undefined || this.appVersion == undefined) {
43
71
  console.debug("ft-search-context.eventManager is not initialized. No events will be sent!");
@@ -54,36 +82,42 @@ export class FtAnalyticsSearchEventManager {
54
82
  name: FtAnalyticsEventName.KHUB__SEARCH,
55
83
  searchResponse: {
56
84
  autocorrect: this.store.getState().spellcheck != undefined,
57
- nbResults: results.length
85
+ nbResults: results.length,
58
86
  },
59
87
  searchQuery: {
60
88
  terms: request.query,
61
89
  searchType: request.virtualField,
62
90
  lastUpdate: getAnalyticsLastUpdate(request.metadataFilters),
63
- facets: request.metadataFilters.map(facet => convertMetadataFilterToAnalyticsFacet(facet))
64
- }
91
+ facets: request.metadataFilters.map(facet => convertMetadataFilterToAnalyticsFacet(facet)),
92
+ },
65
93
  };
66
94
  this.eventsService.sendKhubSearchEvent(event);
67
95
  }
68
96
  sendDocumentSearchEvent(request, results) {
69
- const event = {
70
- offline: false,
71
- appVersion: this.appVersion,
72
- appName: this.appName,
73
- name: FtAnalyticsEventName.DOCUMENT__SEARCH,
74
- searchResponse: {
75
- autocorrect: this.store.getState().spellcheck != undefined,
76
- nbResults: results.length
77
- },
78
- searchQuery: {
79
- terms: request.query,
80
- searchType: request.virtualField,
81
- lastUpdate: getAnalyticsLastUpdate(request.metadataFilters),
82
- facets: request.metadataFilters.map(facet => convertMetadataFilterToAnalyticsFacet(facet))
83
- },
84
- document: this.document
85
- };
86
- this.eventsService.sendDocumentSearchEvent(event);
97
+ const isRequestForThisDocument = request.metadataFilters.find((f) => {
98
+ var _a;
99
+ return f.key === "ft:publicationId" && ((_a = f.valueFilter) === null || _a === void 0 ? void 0 : _a.values[0]) === this.document.id;
100
+ }) !== undefined;
101
+ if (isRequestForThisDocument) {
102
+ const event = {
103
+ offline: false,
104
+ appVersion: this.appVersion,
105
+ appName: this.appName,
106
+ name: FtAnalyticsEventName.DOCUMENT__SEARCH,
107
+ searchResponse: {
108
+ autocorrect: this.store.getState().spellcheck != undefined,
109
+ nbResults: results.length,
110
+ },
111
+ searchQuery: {
112
+ terms: request.query,
113
+ searchType: request.virtualField,
114
+ lastUpdate: getAnalyticsLastUpdate(request.metadataFilters),
115
+ facets: request.metadataFilters.map(facet => convertMetadataFilterToAnalyticsFacet(facet)),
116
+ },
117
+ document: this.document,
118
+ };
119
+ this.eventsService.sendDocumentSearchEvent(event);
120
+ }
87
121
  }
88
122
  sendResultClickedEvent(result, rank) {
89
123
  if (!this.canSendEvent()) {
@@ -94,7 +128,7 @@ export class FtAnalyticsSearchEventManager {
94
128
  if (result.type == FtSearchResultType.TOPIC) {
95
129
  topic = {
96
130
  tocId: result.topic.tocId,
97
- title: result.topic.title
131
+ title: result.topic.title,
98
132
  };
99
133
  }
100
134
  const event = {
@@ -106,15 +140,15 @@ export class FtAnalyticsSearchEventManager {
106
140
  terms: request.query,
107
141
  searchType: request.virtualField,
108
142
  lastUpdate: getAnalyticsLastUpdate(request.metadataFilters),
109
- facets: request.metadataFilters.map(facet => convertMetadataFilterToAnalyticsFacet(facet))
143
+ facets: request.metadataFilters.map(facet => convertMetadataFilterToAnalyticsFacet(facet)),
110
144
  },
111
145
  searchResult: {
112
146
  rank: rank,
113
147
  type: result.type,
114
148
  document: this.convertDocument(result),
115
- topic: topic
149
+ topic: topic,
116
150
  },
117
- externalLink: this.convertExternalLink(result)
151
+ externalLink: this.convertExternalLink(result),
118
152
  };
119
153
  this.eventsService.sendSearchPageSelectEvent(event);
120
154
  }
@@ -127,7 +161,7 @@ export class FtAnalyticsSearchEventManager {
127
161
  if (result.type == FtSearchResultType.TOPIC) {
128
162
  topic = {
129
163
  tocId: result.topic.tocId,
130
- title: result.topic.title
164
+ title: result.topic.title,
131
165
  };
132
166
  }
133
167
  const event = {
@@ -139,15 +173,15 @@ export class FtAnalyticsSearchEventManager {
139
173
  terms: request.query,
140
174
  searchType: request.virtualField,
141
175
  lastUpdate: getAnalyticsLastUpdate(request.metadataFilters),
142
- facets: request.metadataFilters.map(facet => convertMetadataFilterToAnalyticsFacet(facet))
176
+ facets: request.metadataFilters.map(facet => convertMetadataFilterToAnalyticsFacet(facet)),
143
177
  },
144
178
  searchResult: {
145
179
  rank: rank,
146
180
  type: result.type,
147
181
  document: this.convertDocument(result),
148
- topic: topic
182
+ topic: topic,
149
183
  },
150
- externalLink: this.convertExternalLink(result)
184
+ externalLink: this.convertExternalLink(result),
151
185
  };
152
186
  this.eventsService.sendSearchResultOpenContextMenuEvent(event);
153
187
  }
@@ -158,14 +192,14 @@ export class FtAnalyticsSearchEventManager {
158
192
  id: result.map.mapId,
159
193
  title: result.map.title,
160
194
  type: FtAnalyticsPublicationType.STRUCTURED_DOCUMENT,
161
- metadata: result.map.metadata
195
+ metadata: result.map.metadata,
162
196
  };
163
197
  case FtSearchResultType.TOPIC:
164
198
  return {
165
199
  id: result.topic.mapId,
166
200
  title: result.topic.mapTitle,
167
201
  type: FtAnalyticsPublicationType.STRUCTURED_DOCUMENT,
168
- metadata: result.topic.metadata
202
+ metadata: result.topic.metadata,
169
203
  };
170
204
  case FtSearchResultType.DOCUMENT:
171
205
  return {
@@ -173,7 +207,7 @@ export class FtAnalyticsSearchEventManager {
173
207
  title: result.document.title,
174
208
  type: FtAnalyticsPublicationType.UNSTRUCTURED_DOCUMENT,
175
209
  metadata: result.document.metadata,
176
- mimeType: result.document.mimeType
210
+ mimeType: result.document.mimeType,
177
211
  };
178
212
  default:
179
213
  throw new TypeError("Unknown type " + result.type);
@@ -6,6 +6,4 @@ export declare class FtSearchService extends FtServiceWithCache {
6
6
  launchSuggest(request: FtSuggestRequest): Promise<FtSuggestResults>;
7
7
  getAvailableSearchLocales(): Promise<FtSearchLocales>;
8
8
  private sortFilters;
9
- private sortObjectFields;
10
- hash(object: any): string;
11
9
  }
@@ -2,13 +2,6 @@ import { FtServiceWithCache } from "@fluid-topics/ft-app-context";
2
2
  export class FtSearchService extends FtServiceWithCache {
3
3
  constructor(overrideApi) {
4
4
  super(true, overrideApi);
5
- this.sortObjectFields = (_, value) => {
6
- if (typeof value !== "object" || value == null || Array.isArray(value)) {
7
- return value;
8
- }
9
- return Object.fromEntries(Object.entries(value)
10
- .sort(([ka], [kb]) => ka.localeCompare(kb)));
11
- };
12
5
  }
13
6
  async launchSearch(request) {
14
7
  const sortedRequest = {
@@ -39,8 +32,4 @@ export class FtSearchService extends FtServiceWithCache {
39
32
  })
40
33
  .sort((a, b) => a.key.localeCompare(b.key));
41
34
  }
42
- hash(object) {
43
- return String(Array.from(JSON.stringify(object, this.sortObjectFields))
44
- .reduce((hash, char) => 0 | (31 * hash + char.charCodeAt(0)), 0));
45
- }
46
35
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fluid-topics/ft-search-context",
3
- "version": "1.3.5",
3
+ "version": "1.3.7",
4
4
  "description": "Context block for integrated search components",
5
5
  "keywords": [
6
6
  "Lit"
@@ -19,12 +19,12 @@
19
19
  "url": "ssh://git@scm.mrs.antidot.net:2222/fluidtopics/ft-web-components.git"
20
20
  },
21
21
  "dependencies": {
22
- "@fluid-topics/ft-app-context": "1.3.5",
23
- "@fluid-topics/ft-wc-utils": "1.3.5",
22
+ "@fluid-topics/ft-app-context": "1.3.7",
23
+ "@fluid-topics/ft-wc-utils": "1.3.7",
24
24
  "lit": "3.1.0"
25
25
  },
26
26
  "devDependencies": {
27
27
  "@fluid-topics/public-api": "1.0.99"
28
28
  },
29
- "gitHead": "87377b99617257593de238b08c41d2638617f501"
29
+ "gitHead": "83a6f0c292e6669cc067b7aa40fea8a4a0a61b7f"
30
30
  }