@internetarchive/collection-browser 0.2.18 → 0.2.20-alpha.1
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/dist/src/app-root.d.ts +6 -0
- package/dist/src/app-root.js +94 -1
- package/dist/src/app-root.js.map +1 -1
- package/dist/src/collection-browser.d.ts +14 -1
- package/dist/src/collection-browser.js +133 -20
- package/dist/src/collection-browser.js.map +1 -1
- package/dist/src/collection-facets.d.ts +2 -0
- package/dist/src/collection-facets.js +9 -0
- package/dist/src/collection-facets.js.map +1 -1
- package/dist/src/models.d.ts +2 -0
- package/dist/src/models.js +8 -0
- package/dist/src/models.js.map +1 -1
- package/dist/src/tiles/grid/item-tile.d.ts +5 -2
- package/dist/src/tiles/grid/item-tile.js +28 -2
- package/dist/src/tiles/grid/item-tile.js.map +1 -1
- package/dist/src/tiles/image-block.js +1 -1
- package/dist/src/tiles/image-block.js.map +1 -1
- package/dist/src/tiles/list/tile-list.d.ts +2 -0
- package/dist/src/tiles/list/tile-list.js +14 -1
- package/dist/src/tiles/list/tile-list.js.map +1 -1
- package/dist/src/tiles/text-snippet-block.d.ts +29 -0
- package/dist/src/tiles/text-snippet-block.js +128 -0
- package/dist/src/tiles/text-snippet-block.js.map +1 -0
- package/dist/src/tiles/tile-dispatcher.js +1 -0
- package/dist/src/tiles/tile-dispatcher.js.map +1 -1
- package/dist/src/utils/analytics-events.d.ts +18 -0
- package/dist/src/utils/analytics-events.js +21 -0
- package/dist/src/utils/analytics-events.js.map +1 -0
- package/dist/test/collection-browser.test.js +91 -5
- package/dist/test/collection-browser.test.js.map +1 -1
- package/dist/test/mocks/mock-analytics-handler.d.ts +10 -0
- package/dist/test/mocks/mock-analytics-handler.js +16 -0
- package/dist/test/mocks/mock-analytics-handler.js.map +1 -0
- package/dist/test/mocks/mock-search-responses.d.ts +2 -1
- package/dist/test/mocks/mock-search-responses.js +27 -1
- package/dist/test/mocks/mock-search-responses.js.map +1 -1
- package/dist/test/mocks/mock-search-service.js +6 -2
- package/dist/test/mocks/mock-search-service.js.map +1 -1
- package/dist/test/text-snippet-block.test.d.ts +1 -0
- package/dist/test/text-snippet-block.test.js +52 -0
- package/dist/test/text-snippet-block.test.js.map +1 -0
- package/dist/test/tiles/grid/item-tile.test.js +15 -0
- package/dist/test/tiles/grid/item-tile.test.js.map +1 -1
- package/dist/test/tiles/list/tile-list.test.d.ts +1 -0
- package/dist/test/tiles/list/tile-list.test.js +42 -0
- package/dist/test/tiles/list/tile-list.test.js.map +1 -0
- package/package.json +4 -3
- package/src/app-root.ts +103 -2
- package/src/collection-browser.ts +153 -17
- package/src/collection-facets.ts +13 -1
- package/src/models.ts +10 -0
- package/src/tiles/grid/item-tile.ts +35 -2
- package/src/tiles/image-block.ts +1 -1
- package/src/tiles/list/tile-list.ts +14 -1
- package/src/tiles/text-snippet-block.ts +130 -0
- package/src/tiles/tile-dispatcher.ts +4 -0
- package/src/utils/analytics-events.ts +19 -0
- package/test/collection-browser.test.ts +131 -4
- package/test/mocks/mock-analytics-handler.ts +30 -0
- package/test/mocks/mock-search-responses.ts +34 -1
- package/test/mocks/mock-search-service.ts +10 -2
- package/test/text-snippet-block.test.ts +69 -0
- package/test/tiles/grid/item-tile.test.ts +19 -0
- package/test/tiles/list/tile-list.test.ts +51 -0
package/dist/src/app-root.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { AnalyticsEvent } from '@internetarchive/analytics-manager';
|
|
1
2
|
import { LitElement, PropertyValues } from 'lit';
|
|
2
3
|
import '../src/collection-browser';
|
|
3
4
|
export declare class AppRoot extends LitElement {
|
|
@@ -12,9 +13,13 @@ export declare class AppRoot extends LitElement {
|
|
|
12
13
|
private rowGap;
|
|
13
14
|
private colGap;
|
|
14
15
|
private loggedIn;
|
|
16
|
+
latestAction?: AnalyticsEvent;
|
|
15
17
|
private baseQueryField;
|
|
16
18
|
private pageNumberInput;
|
|
17
19
|
private collectionBrowser;
|
|
20
|
+
private analyticsManager;
|
|
21
|
+
private analyticsHandler;
|
|
22
|
+
private sendAnalytics;
|
|
18
23
|
private searchPressed;
|
|
19
24
|
private changePagePressed;
|
|
20
25
|
protected updated(changed: PropertyValues): void;
|
|
@@ -23,6 +28,7 @@ export declare class AppRoot extends LitElement {
|
|
|
23
28
|
private baseQueryChanged;
|
|
24
29
|
private loginChanged;
|
|
25
30
|
private outlineChanged;
|
|
31
|
+
private snippetsChanged;
|
|
26
32
|
private rowGapChanged;
|
|
27
33
|
private colGapChanged;
|
|
28
34
|
private widthChanged;
|
package/dist/src/app-root.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { __decorate } from "tslib";
|
|
2
|
+
import { AnalyticsManager, } from '@internetarchive/analytics-manager';
|
|
2
3
|
import { SearchService } from '@internetarchive/search-service';
|
|
3
4
|
import { LocalCache } from '@internetarchive/local-cache';
|
|
4
5
|
import { html, css, LitElement } from 'lit';
|
|
5
|
-
import { customElement, query, state } from 'lit/decorators.js';
|
|
6
|
+
import { customElement, property, query, state } from 'lit/decorators.js';
|
|
6
7
|
import { SharedResizeObserver } from '@internetarchive/shared-resize-observer';
|
|
7
8
|
import { CollectionNameCache } from '@internetarchive/collection-name-cache';
|
|
8
9
|
import '../src/collection-browser';
|
|
@@ -21,6 +22,18 @@ let AppRoot = class AppRoot extends LitElement {
|
|
|
21
22
|
this.rowGap = 1.7;
|
|
22
23
|
this.colGap = 1.7;
|
|
23
24
|
this.loggedIn = false;
|
|
25
|
+
this.analyticsManager = new AnalyticsManager();
|
|
26
|
+
this.analyticsHandler = {
|
|
27
|
+
sendPing: this.sendAnalytics.bind(this),
|
|
28
|
+
sendEvent: this.sendAnalytics.bind(this),
|
|
29
|
+
sendEventNoSampling: this.sendAnalytics.bind(this),
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
sendAnalytics(ae) {
|
|
33
|
+
var _a;
|
|
34
|
+
console.log('Analytics Received ----', ae);
|
|
35
|
+
this.latestAction = ae;
|
|
36
|
+
(_a = this.analyticsManager) === null || _a === void 0 ? void 0 : _a.sendEventNoSampling(ae);
|
|
24
37
|
}
|
|
25
38
|
searchPressed(e) {
|
|
26
39
|
var _a, _b;
|
|
@@ -65,6 +78,22 @@ let AppRoot = class AppRoot extends LitElement {
|
|
|
65
78
|
<input type="submit" value="Go" />
|
|
66
79
|
</form>
|
|
67
80
|
|
|
81
|
+
<div id="last-event">
|
|
82
|
+
<button
|
|
83
|
+
@click=${() => {
|
|
84
|
+
var _a;
|
|
85
|
+
const details = (_a = this.shadowRoot) === null || _a === void 0 ? void 0 : _a.getElementById('latest-event-details');
|
|
86
|
+
details === null || details === void 0 ? void 0 : details.classList.toggle('hidden');
|
|
87
|
+
}}
|
|
88
|
+
>
|
|
89
|
+
Last Event Captured
|
|
90
|
+
</button>
|
|
91
|
+
<pre id="latest-event-details">
|
|
92
|
+
${JSON.stringify(this.latestAction, null, 2)}
|
|
93
|
+
</pre
|
|
94
|
+
>
|
|
95
|
+
</div>
|
|
96
|
+
|
|
68
97
|
<div id="cell-controls">
|
|
69
98
|
<div id="cell-size-control">
|
|
70
99
|
<div>
|
|
@@ -109,6 +138,14 @@ let AppRoot = class AppRoot extends LitElement {
|
|
|
109
138
|
@click=${this.loginChanged}
|
|
110
139
|
/>
|
|
111
140
|
</div>
|
|
141
|
+
<div>
|
|
142
|
+
<label for="show-dummy-snippets">Show dummy snippets:</label>
|
|
143
|
+
<input
|
|
144
|
+
type="checkbox"
|
|
145
|
+
id="show-dummy-snippets"
|
|
146
|
+
@click=${this.snippetsChanged}
|
|
147
|
+
/>
|
|
148
|
+
</div>
|
|
112
149
|
</div>
|
|
113
150
|
<div id="cell-gap-control">
|
|
114
151
|
<div>
|
|
@@ -150,6 +187,7 @@ let AppRoot = class AppRoot extends LitElement {
|
|
|
150
187
|
.collectionNameCache=${this.collectionNameCache}
|
|
151
188
|
.showHistogramDatePicker=${true}
|
|
152
189
|
.loggedIn=${this.loggedIn}
|
|
190
|
+
.analyticsHandler=${this.analyticsHandler}
|
|
153
191
|
@visiblePageChanged=${this.visiblePageChanged}
|
|
154
192
|
@baseQueryChanged=${this.baseQueryChanged}
|
|
155
193
|
>
|
|
@@ -178,6 +216,48 @@ let AppRoot = class AppRoot extends LitElement {
|
|
|
178
216
|
this.collectionBrowser.style.removeProperty('--infiniteScrollerCellOutline');
|
|
179
217
|
}
|
|
180
218
|
}
|
|
219
|
+
async snippetsChanged(e) {
|
|
220
|
+
const target = e.target;
|
|
221
|
+
if (target.checked) {
|
|
222
|
+
// Decorate the default search service with a wrapper that adds
|
|
223
|
+
// dummy snippets to any successful searches
|
|
224
|
+
this.searchService = {
|
|
225
|
+
...SearchService.default,
|
|
226
|
+
async search(params) {
|
|
227
|
+
var _a;
|
|
228
|
+
const result = await SearchService.default.search(params);
|
|
229
|
+
(_a = result.success) === null || _a === void 0 ? void 0 : _a.response.docs.forEach(doc => {
|
|
230
|
+
const metadata = doc.rawMetadata;
|
|
231
|
+
if (metadata) {
|
|
232
|
+
metadata.snippets = [
|
|
233
|
+
'this is a text {{{snippet}}} block with potentially',
|
|
234
|
+
'multiple {{{snippets}}} and such',
|
|
235
|
+
'but the {{{snippet}}} block may be quite long perhaps',
|
|
236
|
+
'depending on how many {{{snippet}}} matches there are',
|
|
237
|
+
'there may be multiple lines of {{{snippets}}} to show',
|
|
238
|
+
'but each {{{snippet}}} should be relatively short',
|
|
239
|
+
'and {{{snippets}}} are each a {{{snippet}}} of text',
|
|
240
|
+
'but every {{{snippet}}} might have multiple matches',
|
|
241
|
+
'the {{{snippets}}} should be separated and surrounded by ellipses',
|
|
242
|
+
];
|
|
243
|
+
}
|
|
244
|
+
});
|
|
245
|
+
return result;
|
|
246
|
+
},
|
|
247
|
+
};
|
|
248
|
+
}
|
|
249
|
+
else {
|
|
250
|
+
// Restore the default seach service
|
|
251
|
+
this.searchService = SearchService.default;
|
|
252
|
+
}
|
|
253
|
+
// Re-perform the current search to show/hide the snippets immediately
|
|
254
|
+
const oldQuery = this.searchQuery;
|
|
255
|
+
this.searchQuery = ''; // Should just reset to the placeholder
|
|
256
|
+
await this.updateComplete;
|
|
257
|
+
// For unclear reasons, Safari refuses to re-apply the old query until the next tick, hence:
|
|
258
|
+
await new Promise(res => setTimeout(res, 0));
|
|
259
|
+
this.searchQuery = oldQuery; // Re-apply the original query
|
|
260
|
+
}
|
|
181
261
|
rowGapChanged(e) {
|
|
182
262
|
const input = e.target;
|
|
183
263
|
this.rowGap = parseFloat(input.value);
|
|
@@ -247,6 +327,16 @@ AppRoot.styles = css `
|
|
|
247
327
|
#cell-gap-control {
|
|
248
328
|
margin-left: 1rem;
|
|
249
329
|
}
|
|
330
|
+
|
|
331
|
+
#last-event {
|
|
332
|
+
background-color: aliceblue;
|
|
333
|
+
padding: 5px;
|
|
334
|
+
margin: 5px auto;
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
.hidden {
|
|
338
|
+
display: none;
|
|
339
|
+
}
|
|
250
340
|
`;
|
|
251
341
|
__decorate([
|
|
252
342
|
state()
|
|
@@ -269,6 +359,9 @@ __decorate([
|
|
|
269
359
|
__decorate([
|
|
270
360
|
state()
|
|
271
361
|
], AppRoot.prototype, "loggedIn", void 0);
|
|
362
|
+
__decorate([
|
|
363
|
+
property({ type: Object, reflect: false })
|
|
364
|
+
], AppRoot.prototype, "latestAction", void 0);
|
|
272
365
|
__decorate([
|
|
273
366
|
query('#base-query-field')
|
|
274
367
|
], AppRoot.prototype, "baseQueryField", void 0);
|
package/dist/src/app-root.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-root.js","sourceRoot":"","sources":["../../src/app-root.ts"],"names":[],"mappings":"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","sourcesContent":["import { SearchService } from '@internetarchive/search-service';\nimport { LocalCache } from '@internetarchive/local-cache';\nimport { html, css, LitElement, PropertyValues } from 'lit';\nimport { customElement, query, state } from 'lit/decorators.js';\nimport { SharedResizeObserver } from '@internetarchive/shared-resize-observer';\nimport { CollectionNameCache } from '@internetarchive/collection-name-cache';\nimport type { CollectionBrowser } from '../src/collection-browser';\nimport '../src/collection-browser';\n\n@customElement('app-root')\nexport class AppRoot extends LitElement {\n private searchService = SearchService.default;\n\n private resizeObserver = new SharedResizeObserver();\n\n private localCache = new LocalCache();\n\n private collectionNameCache = new CollectionNameCache({\n searchService: this.searchService,\n localCache: this.localCache,\n });\n\n @state() private currentPage?: number;\n\n @state() private searchQuery?: string;\n\n @state() private cellWidth: number = 18;\n\n @state() private cellHeight: number = 29;\n\n @state() private rowGap: number = 1.7;\n\n @state() private colGap: number = 1.7;\n\n @state() private loggedIn: boolean = false;\n\n @query('#base-query-field') private baseQueryField!: HTMLInputElement;\n\n @query('#page-number-input') private pageNumberInput!: HTMLInputElement;\n\n @query('collection-browser') private collectionBrowser!: CollectionBrowser;\n\n private searchPressed(e: Event) {\n e.preventDefault();\n this.searchQuery = this.baseQueryField.value;\n if ((this.currentPage ?? 1) > 1) {\n this.collectionBrowser.goToPage(this.currentPage ?? 1);\n }\n }\n\n private changePagePressed(e: Event) {\n e.preventDefault();\n this.currentPage = this.pageNumberInput.valueAsNumber;\n this.collectionBrowser.goToPage(this.currentPage);\n }\n\n protected updated(changed: PropertyValues): void {\n if (changed.has('currentPage') && this.currentPage) {\n this.pageNumberInput.value = this.currentPage.toString();\n }\n\n if (changed.has('searchQuery')) {\n this.queryUpdated();\n }\n }\n\n private queryUpdated() {\n this.collectionBrowser.baseQuery = this.searchQuery;\n }\n\n render() {\n return html`\n <div id=\"dev-tools\">\n <form @submit=${this.searchPressed}>\n Query:\n <input\n type=\"text\"\n id=\"base-query-field\"\n .value=${this.searchQuery ?? ''}\n />\n <input type=\"submit\" value=\"Search\" />\n </form>\n\n <form @submit=${this.changePagePressed}>\n Page: <input type=\"number\" value=\"1\" id=\"page-number-input\" />\n <input type=\"submit\" value=\"Go\" />\n </form>\n\n <div id=\"cell-controls\">\n <div id=\"cell-size-control\">\n <div>\n <label for=\"cell-width-slider\">Minimum cell width:</label>\n <input\n type=\"range\"\n min=\"10\"\n max=\"100\"\n value=\"18\"\n step=\"0.1\"\n id=\"cell-width-slider\"\n @input=${this.widthChanged}\n />\n <span>${this.cellWidth}rem</span>\n </div>\n <div>\n <label for=\"cell-height-slider\">Cell height:</label>\n <input\n type=\"range\"\n min=\"10\"\n max=\"100\"\n value=\"29\"\n step=\"0.1\"\n id=\"cell-height-slider\"\n @input=${this.heightChanged}\n />\n <span>${this.cellHeight}rem</span>\n </div>\n <div>\n <label for=\"show-outline-check\">Show outlines:</label>\n <input\n type=\"checkbox\"\n id=\"show-outline-check\"\n @click=${this.outlineChanged}\n />\n </div>\n <div>\n <label for=\"simulate-login\">Simulate Login:</label>\n <input\n type=\"checkbox\"\n id=\"simulate-login\"\n @click=${this.loginChanged}\n />\n </div>\n </div>\n <div id=\"cell-gap-control\">\n <div>\n <label for=\"cell-row-gap-slider\">Row gap:</label>\n <input\n type=\"range\"\n min=\"0\"\n max=\"5\"\n value=\"1.7\"\n step=\"0.1\"\n id=\"cell-row-gap-slider\"\n @input=${this.rowGapChanged}\n />\n <span>${this.rowGap}rem</span>\n </div>\n <div>\n <label for=\"cell-col-gap-slider\">Col gap:</label>\n <input\n type=\"range\"\n min=\"0\"\n max=\"5\"\n value=\"1.7\"\n step=\"0.1\"\n id=\"cell-col-gap-slider\"\n @input=${this.colGapChanged}\n />\n <span>${this.colGap}rem</span>\n </div>\n </div>\n </div>\n </div>\n\n <div id=\"collection-browser-container\">\n <collection-browser\n .baseNavigationUrl=${'https://archive.org'}\n .baseImageUrl=${'https://archive.org'}\n .searchService=${this.searchService}\n .resizeObserver=${this.resizeObserver}\n .collectionNameCache=${this.collectionNameCache}\n .showHistogramDatePicker=${true}\n .loggedIn=${this.loggedIn}\n @visiblePageChanged=${this.visiblePageChanged}\n @baseQueryChanged=${this.baseQueryChanged}\n >\n </collection-browser>\n </div>\n `;\n }\n\n private baseQueryChanged(e: CustomEvent<{ baseQuery?: string }>) {\n this.searchQuery = e.detail.baseQuery;\n }\n\n private loginChanged(e: Event) {\n const target = e.target as HTMLInputElement;\n if (target.checked) {\n this.loggedIn = true;\n } else {\n this.loggedIn = false;\n }\n }\n\n private outlineChanged(e: Event) {\n const target = e.target as HTMLInputElement;\n if (target.checked) {\n this.collectionBrowser.style.setProperty(\n '--infiniteScrollerCellOutline',\n '1px solid #33D1FF'\n );\n } else {\n this.collectionBrowser.style.removeProperty(\n '--infiniteScrollerCellOutline'\n );\n }\n }\n\n private rowGapChanged(e: Event) {\n const input = e.target as HTMLInputElement;\n this.rowGap = parseFloat(input.value);\n this.collectionBrowser.style.setProperty(\n '--collectionBrowserRowGap',\n `${input.value}rem`\n );\n }\n\n private colGapChanged(e: Event) {\n const input = e.target as HTMLInputElement;\n this.colGap = parseFloat(input.value);\n this.collectionBrowser.style.setProperty(\n '--collectionBrowserColGap',\n `${input.value}rem`\n );\n }\n\n private widthChanged(e: Event) {\n const input = e.target as HTMLInputElement;\n this.cellWidth = parseFloat(input.value);\n this.collectionBrowser.style.setProperty(\n '--collectionBrowserCellMinWidth',\n `${input.value}rem`\n );\n }\n\n private heightChanged(e: Event) {\n const input = e.target as HTMLInputElement;\n this.cellHeight = parseFloat(input.value);\n this.collectionBrowser.style.setProperty(\n '--collectionBrowserCellMinHeight',\n `${input.value}rem`\n );\n this.collectionBrowser.style.setProperty(\n '--collectionBrowserCellMaxHeight',\n `${input.value}rem`\n );\n }\n\n private visiblePageChanged(e: CustomEvent<{ pageNumber: number }>) {\n const { pageNumber } = e.detail;\n if (pageNumber === this.currentPage) return;\n this.currentPage = pageNumber;\n }\n\n static styles = css`\n :host {\n display: block;\n }\n\n input,\n button {\n font-size: 1.6rem;\n }\n\n collection-browser {\n margin-top: 30rem;\n }\n\n #base-query-field {\n width: 300px;\n }\n\n #dev-tools {\n position: fixed;\n top: 0;\n left: 0;\n z-index: 10;\n -webkit-backdrop-filter: blur(10px);\n backdrop-filter: blur(10px);\n padding: 0.5rem 1rem;\n border: 1px solid black;\n }\n\n #cell-controls {\n display: flex;\n }\n\n #cell-controls label {\n display: inline-block;\n width: 10rem;\n }\n\n #cell-gap-control {\n margin-left: 1rem;\n }\n `;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"app-root.js","sourceRoot":"","sources":["../../src/app-root.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n AnalyticsEvent,\n AnalyticsManager,\n} from '@internetarchive/analytics-manager';\nimport { SearchService } from '@internetarchive/search-service';\nimport { LocalCache } from '@internetarchive/local-cache';\nimport { html, css, LitElement, PropertyValues } from 'lit';\nimport { customElement, property, query, state } from 'lit/decorators.js';\nimport { SharedResizeObserver } from '@internetarchive/shared-resize-observer';\nimport { CollectionNameCache } from '@internetarchive/collection-name-cache';\n\nimport type { AnalyticsManagerInterface } from '@internetarchive/analytics-manager';\nimport type { CollectionBrowser } from '../src/collection-browser';\n\nimport '../src/collection-browser';\n\n@customElement('app-root')\nexport class AppRoot extends LitElement {\n private searchService = SearchService.default;\n\n private resizeObserver = new SharedResizeObserver();\n\n private localCache = new LocalCache();\n\n private collectionNameCache = new CollectionNameCache({\n searchService: this.searchService,\n localCache: this.localCache,\n });\n\n @state() private currentPage?: number;\n\n @state() private searchQuery?: string;\n\n @state() private cellWidth: number = 18;\n\n @state() private cellHeight: number = 29;\n\n @state() private rowGap: number = 1.7;\n\n @state() private colGap: number = 1.7;\n\n @state() private loggedIn: boolean = false;\n\n @property({ type: Object, reflect: false }) latestAction?: AnalyticsEvent;\n\n @query('#base-query-field') private baseQueryField!: HTMLInputElement;\n\n @query('#page-number-input') private pageNumberInput!: HTMLInputElement;\n\n @query('collection-browser') private collectionBrowser!: CollectionBrowser;\n\n private analyticsManager = new AnalyticsManager();\n\n private analyticsHandler: AnalyticsManagerInterface = {\n sendPing: this.sendAnalytics.bind(this),\n sendEvent: this.sendAnalytics.bind(this),\n sendEventNoSampling: this.sendAnalytics.bind(this),\n };\n\n private sendAnalytics(ae: AnalyticsEvent) {\n console.log('Analytics Received ----', ae);\n this.latestAction = ae;\n this.analyticsManager?.sendEventNoSampling(ae);\n }\n\n private searchPressed(e: Event) {\n e.preventDefault();\n this.searchQuery = this.baseQueryField.value;\n if ((this.currentPage ?? 1) > 1) {\n this.collectionBrowser.goToPage(this.currentPage ?? 1);\n }\n }\n\n private changePagePressed(e: Event) {\n e.preventDefault();\n this.currentPage = this.pageNumberInput.valueAsNumber;\n this.collectionBrowser.goToPage(this.currentPage);\n }\n\n protected override updated(changed: PropertyValues): void {\n if (changed.has('currentPage') && this.currentPage) {\n this.pageNumberInput.value = this.currentPage.toString();\n }\n\n if (changed.has('searchQuery')) {\n this.queryUpdated();\n }\n }\n\n private queryUpdated() {\n this.collectionBrowser.baseQuery = this.searchQuery;\n }\n\n render() {\n return html`\n <div id=\"dev-tools\">\n <form @submit=${this.searchPressed}>\n Query:\n <input\n type=\"text\"\n id=\"base-query-field\"\n .value=${this.searchQuery ?? ''}\n />\n <input type=\"submit\" value=\"Search\" />\n </form>\n\n <form @submit=${this.changePagePressed}>\n Page: <input type=\"number\" value=\"1\" id=\"page-number-input\" />\n <input type=\"submit\" value=\"Go\" />\n </form>\n\n <div id=\"last-event\">\n <button\n @click=${() => {\n const details = this.shadowRoot?.getElementById(\n 'latest-event-details'\n );\n details?.classList.toggle('hidden');\n }}\n >\n Last Event Captured\n </button>\n <pre id=\"latest-event-details\">\n ${JSON.stringify(this.latestAction, null, 2)}\n </pre\n >\n </div>\n\n <div id=\"cell-controls\">\n <div id=\"cell-size-control\">\n <div>\n <label for=\"cell-width-slider\">Minimum cell width:</label>\n <input\n type=\"range\"\n min=\"10\"\n max=\"100\"\n value=\"18\"\n step=\"0.1\"\n id=\"cell-width-slider\"\n @input=${this.widthChanged}\n />\n <span>${this.cellWidth}rem</span>\n </div>\n <div>\n <label for=\"cell-height-slider\">Cell height:</label>\n <input\n type=\"range\"\n min=\"10\"\n max=\"100\"\n value=\"29\"\n step=\"0.1\"\n id=\"cell-height-slider\"\n @input=${this.heightChanged}\n />\n <span>${this.cellHeight}rem</span>\n </div>\n <div>\n <label for=\"show-outline-check\">Show outlines:</label>\n <input\n type=\"checkbox\"\n id=\"show-outline-check\"\n @click=${this.outlineChanged}\n />\n </div>\n <div>\n <label for=\"simulate-login\">Simulate Login:</label>\n <input\n type=\"checkbox\"\n id=\"simulate-login\"\n @click=${this.loginChanged}\n />\n </div>\n <div>\n <label for=\"show-dummy-snippets\">Show dummy snippets:</label>\n <input\n type=\"checkbox\"\n id=\"show-dummy-snippets\"\n @click=${this.snippetsChanged}\n />\n </div>\n </div>\n <div id=\"cell-gap-control\">\n <div>\n <label for=\"cell-row-gap-slider\">Row gap:</label>\n <input\n type=\"range\"\n min=\"0\"\n max=\"5\"\n value=\"1.7\"\n step=\"0.1\"\n id=\"cell-row-gap-slider\"\n @input=${this.rowGapChanged}\n />\n <span>${this.rowGap}rem</span>\n </div>\n <div>\n <label for=\"cell-col-gap-slider\">Col gap:</label>\n <input\n type=\"range\"\n min=\"0\"\n max=\"5\"\n value=\"1.7\"\n step=\"0.1\"\n id=\"cell-col-gap-slider\"\n @input=${this.colGapChanged}\n />\n <span>${this.colGap}rem</span>\n </div>\n </div>\n </div>\n </div>\n\n <div id=\"collection-browser-container\">\n <collection-browser\n .baseNavigationUrl=${'https://archive.org'}\n .baseImageUrl=${'https://archive.org'}\n .searchService=${this.searchService}\n .resizeObserver=${this.resizeObserver}\n .collectionNameCache=${this.collectionNameCache}\n .showHistogramDatePicker=${true}\n .loggedIn=${this.loggedIn}\n .analyticsHandler=${this.analyticsHandler}\n @visiblePageChanged=${this.visiblePageChanged}\n @baseQueryChanged=${this.baseQueryChanged}\n >\n </collection-browser>\n </div>\n `;\n }\n\n private baseQueryChanged(e: CustomEvent<{ baseQuery?: string }>) {\n this.searchQuery = e.detail.baseQuery;\n }\n\n private loginChanged(e: Event) {\n const target = e.target as HTMLInputElement;\n if (target.checked) {\n this.loggedIn = true;\n } else {\n this.loggedIn = false;\n }\n }\n\n private outlineChanged(e: Event) {\n const target = e.target as HTMLInputElement;\n if (target.checked) {\n this.collectionBrowser.style.setProperty(\n '--infiniteScrollerCellOutline',\n '1px solid #33D1FF'\n );\n } else {\n this.collectionBrowser.style.removeProperty(\n '--infiniteScrollerCellOutline'\n );\n }\n }\n\n private async snippetsChanged(e: Event) {\n const target = e.target as HTMLInputElement;\n if (target.checked) {\n // Decorate the default search service with a wrapper that adds\n // dummy snippets to any successful searches\n this.searchService = {\n ...SearchService.default,\n async search(params) {\n const result = await SearchService.default.search(params);\n result.success?.response.docs.forEach(doc => {\n const metadata = doc.rawMetadata;\n if (metadata) {\n metadata.snippets = [\n 'this is a text {{{snippet}}} block with potentially',\n 'multiple {{{snippets}}} and such',\n 'but the {{{snippet}}} block may be quite long perhaps',\n 'depending on how many {{{snippet}}} matches there are',\n 'there may be multiple lines of {{{snippets}}} to show',\n 'but each {{{snippet}}} should be relatively short',\n 'and {{{snippets}}} are each a {{{snippet}}} of text',\n 'but every {{{snippet}}} might have multiple matches',\n 'the {{{snippets}}} should be separated and surrounded by ellipses',\n ];\n }\n });\n return result;\n },\n };\n } else {\n // Restore the default seach service\n this.searchService = SearchService.default;\n }\n\n // Re-perform the current search to show/hide the snippets immediately\n const oldQuery = this.searchQuery;\n this.searchQuery = ''; // Should just reset to the placeholder\n await this.updateComplete;\n // For unclear reasons, Safari refuses to re-apply the old query until the next tick, hence:\n await new Promise(res => setTimeout(res, 0));\n this.searchQuery = oldQuery; // Re-apply the original query\n }\n\n private rowGapChanged(e: Event) {\n const input = e.target as HTMLInputElement;\n this.rowGap = parseFloat(input.value);\n this.collectionBrowser.style.setProperty(\n '--collectionBrowserRowGap',\n `${input.value}rem`\n );\n }\n\n private colGapChanged(e: Event) {\n const input = e.target as HTMLInputElement;\n this.colGap = parseFloat(input.value);\n this.collectionBrowser.style.setProperty(\n '--collectionBrowserColGap',\n `${input.value}rem`\n );\n }\n\n private widthChanged(e: Event) {\n const input = e.target as HTMLInputElement;\n this.cellWidth = parseFloat(input.value);\n this.collectionBrowser.style.setProperty(\n '--collectionBrowserCellMinWidth',\n `${input.value}rem`\n );\n }\n\n private heightChanged(e: Event) {\n const input = e.target as HTMLInputElement;\n this.cellHeight = parseFloat(input.value);\n this.collectionBrowser.style.setProperty(\n '--collectionBrowserCellMinHeight',\n `${input.value}rem`\n );\n this.collectionBrowser.style.setProperty(\n '--collectionBrowserCellMaxHeight',\n `${input.value}rem`\n );\n }\n\n private visiblePageChanged(e: CustomEvent<{ pageNumber: number }>) {\n const { pageNumber } = e.detail;\n if (pageNumber === this.currentPage) return;\n this.currentPage = pageNumber;\n }\n\n static styles = css`\n :host {\n display: block;\n }\n\n input,\n button {\n font-size: 1.6rem;\n }\n\n collection-browser {\n margin-top: 30rem;\n }\n\n #base-query-field {\n width: 300px;\n }\n\n #dev-tools {\n position: fixed;\n top: 0;\n left: 0;\n z-index: 10;\n -webkit-backdrop-filter: blur(10px);\n backdrop-filter: blur(10px);\n padding: 0.5rem 1rem;\n border: 1px solid black;\n }\n\n #cell-controls {\n display: flex;\n }\n\n #cell-controls label {\n display: inline-block;\n width: 10rem;\n }\n\n #cell-gap-control {\n margin-left: 1rem;\n }\n\n #last-event {\n background-color: aliceblue;\n padding: 5px;\n margin: 5px auto;\n }\n\n .hidden {\n display: none;\n }\n `;\n}\n"]}
|
|
@@ -10,7 +10,7 @@ import './sort-filter-bar/sort-filter-bar';
|
|
|
10
10
|
import './collection-facets';
|
|
11
11
|
import './circular-activity-indicator';
|
|
12
12
|
import './sort-filter-bar/sort-filter-bar';
|
|
13
|
-
import { SelectedFacets, SortField, CollectionBrowserContext, CollectionDisplayMode } from './models';
|
|
13
|
+
import { SelectedFacets, SortField, CollectionBrowserContext, TileModel, CollectionDisplayMode, FacetOption } from './models';
|
|
14
14
|
import { RestorationStateHandlerInterface } from './restoration-state-handler';
|
|
15
15
|
import './empty-placeholder';
|
|
16
16
|
export declare class CollectionBrowser extends LitElement implements InfiniteScrollerCellProviderInterface, SharedResizeObserverResizeHandlerInterface {
|
|
@@ -65,6 +65,7 @@ export declare class CollectionBrowser extends LitElement implements InfiniteScr
|
|
|
65
65
|
private placeholderType;
|
|
66
66
|
private contentContainer;
|
|
67
67
|
private languageCodeHandler;
|
|
68
|
+
private analyticsHandler?;
|
|
68
69
|
/**
|
|
69
70
|
* When we're animated scrolling to the page, we don't want to fetch
|
|
70
71
|
* all of the pages as it scrolls so this lets us know if we're scrolling
|
|
@@ -107,9 +108,18 @@ export declare class CollectionBrowser extends LitElement implements InfiniteScr
|
|
|
107
108
|
private get infiniteScrollerTemplate();
|
|
108
109
|
private get sortFilterBarTemplate();
|
|
109
110
|
private userChangedSort;
|
|
111
|
+
private sendSortByAnaltyics;
|
|
110
112
|
private selectedSortChanged;
|
|
111
113
|
private displayModeChanged;
|
|
114
|
+
/** Send Analytics when sorting by title's first letter
|
|
115
|
+
* labels: 'start-<ToLetter>' | 'clear-<FromLetter>' | '<FromLetter>-<ToLetter>'
|
|
116
|
+
* */
|
|
117
|
+
private sendFilterByTitleAnalytics;
|
|
112
118
|
private selectedTitleLetterChanged;
|
|
119
|
+
/** Send Analytics when filtering by creator's first letter
|
|
120
|
+
* labels: 'start-<ToLetter>' | 'clear-<FromLetter>' | '<FromLetter>-<ToLetter>'
|
|
121
|
+
* */
|
|
122
|
+
private sendFilterByCreatorAnalytics;
|
|
113
123
|
private selectedCreatorLetterChanged;
|
|
114
124
|
private titleLetterSelected;
|
|
115
125
|
private creatorLetterSelected;
|
|
@@ -154,6 +164,7 @@ export declare class CollectionBrowser extends LitElement implements InfiniteScr
|
|
|
154
164
|
*/
|
|
155
165
|
private get facetQuery();
|
|
156
166
|
facetsChanged(e: CustomEvent<SelectedFacets>): void;
|
|
167
|
+
facetClickHandler(name: FacetOption, facetSelected: boolean, negative: boolean): void;
|
|
157
168
|
private fetchFacets;
|
|
158
169
|
/**
|
|
159
170
|
* If we haven't changed the query, we don't need to fetch the full year histogram
|
|
@@ -204,6 +215,8 @@ export declare class CollectionBrowser extends LitElement implements InfiniteScr
|
|
|
204
215
|
*/
|
|
205
216
|
private updateDataSource;
|
|
206
217
|
private etreeTitle;
|
|
218
|
+
/** callback when a result is selected */
|
|
219
|
+
resultSelected(event: CustomEvent<TileModel>): void;
|
|
207
220
|
cellForIndex(index: number): TemplateResult | undefined;
|
|
208
221
|
/**
|
|
209
222
|
* When the user scrolls near to the bottom of the page, fetch the next page
|
|
@@ -15,6 +15,7 @@ import { RestorationStateHandler, } from './restoration-state-handler';
|
|
|
15
15
|
import chevronIcon from './assets/img/icons/chevron';
|
|
16
16
|
import { LanguageCodeHandler } from './language-code-handler/language-code-handler';
|
|
17
17
|
import './empty-placeholder';
|
|
18
|
+
import { analyticsActions, analyticsCategories, } from './utils/analytics-events';
|
|
18
19
|
let CollectionBrowser = class CollectionBrowser extends LitElement {
|
|
19
20
|
constructor() {
|
|
20
21
|
super(...arguments);
|
|
@@ -181,7 +182,9 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
|
|
|
181
182
|
? this.totalResults.toLocaleString()
|
|
182
183
|
: '-'}
|
|
183
184
|
</span>
|
|
184
|
-
<span id="big-results-label">
|
|
185
|
+
<span id="big-results-label">
|
|
186
|
+
${this.totalResults === 1 ? 'Result' : 'Results'}
|
|
187
|
+
</span>
|
|
185
188
|
</div>
|
|
186
189
|
</div>
|
|
187
190
|
<div
|
|
@@ -212,18 +215,21 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
|
|
|
212
215
|
></infinite-scroller>`;
|
|
213
216
|
}
|
|
214
217
|
get sortFilterBarTemplate() {
|
|
215
|
-
return html
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
218
|
+
return html `
|
|
219
|
+
<sort-filter-bar
|
|
220
|
+
.selectedSort=${this.selectedSort}
|
|
221
|
+
.sortDirection=${this.sortDirection}
|
|
222
|
+
.displayMode=${this.displayMode}
|
|
223
|
+
.selectedTitleFilter=${this.selectedTitleFilter}
|
|
224
|
+
.selectedCreatorFilter=${this.selectedCreatorFilter}
|
|
225
|
+
.resizeObserver=${this.resizeObserver}
|
|
226
|
+
@sortChanged=${this.userChangedSort}
|
|
227
|
+
@displayModeChanged=${this.displayModeChanged}
|
|
228
|
+
@titleLetterChanged=${this.titleLetterSelected}
|
|
229
|
+
@creatorLetterChanged=${this.creatorLetterSelected}
|
|
230
|
+
>
|
|
231
|
+
</sort-filter-bar>
|
|
232
|
+
`;
|
|
227
233
|
}
|
|
228
234
|
userChangedSort(e) {
|
|
229
235
|
var _a;
|
|
@@ -235,6 +241,15 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
|
|
|
235
241
|
}
|
|
236
242
|
this.currentPage = 1;
|
|
237
243
|
}
|
|
244
|
+
sendSortByAnaltyics(prevSortDirection) {
|
|
245
|
+
var _a;
|
|
246
|
+
const directionCleared = prevSortDirection && !this.sortDirection;
|
|
247
|
+
(_a = this.analyticsHandler) === null || _a === void 0 ? void 0 : _a.sendEventNoSampling({
|
|
248
|
+
category: analyticsCategories.default,
|
|
249
|
+
action: analyticsActions.sortBy,
|
|
250
|
+
label: `${this.selectedSort}${this.sortDirection || directionCleared ? `-${this.sortDirection}` : ''}`,
|
|
251
|
+
});
|
|
252
|
+
}
|
|
238
253
|
selectedSortChanged() {
|
|
239
254
|
if (this.selectedSort === 'relevance' || this.sortDirection === null) {
|
|
240
255
|
this.sortParam = null;
|
|
@@ -246,13 +261,55 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
|
|
|
246
261
|
this.sortParam = { field: sortField, direction: this.sortDirection };
|
|
247
262
|
}
|
|
248
263
|
displayModeChanged(e) {
|
|
264
|
+
var _a;
|
|
249
265
|
this.displayMode = e.detail.displayMode;
|
|
266
|
+
if (this.displayMode) {
|
|
267
|
+
(_a = this.analyticsHandler) === null || _a === void 0 ? void 0 : _a.sendEventNoSampling({
|
|
268
|
+
category: analyticsCategories.default,
|
|
269
|
+
action: analyticsActions.displayMode,
|
|
270
|
+
label: this.displayMode,
|
|
271
|
+
});
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
/** Send Analytics when sorting by title's first letter
|
|
275
|
+
* labels: 'start-<ToLetter>' | 'clear-<FromLetter>' | '<FromLetter>-<ToLetter>'
|
|
276
|
+
* */
|
|
277
|
+
sendFilterByTitleAnalytics(prevSelectedLetter) {
|
|
278
|
+
var _a;
|
|
279
|
+
if (!prevSelectedLetter && !this.selectedTitleFilter) {
|
|
280
|
+
return;
|
|
281
|
+
}
|
|
282
|
+
const cleared = prevSelectedLetter && this.selectedTitleFilter === null;
|
|
283
|
+
(_a = this.analyticsHandler) === null || _a === void 0 ? void 0 : _a.sendEventNoSampling({
|
|
284
|
+
category: analyticsCategories.default,
|
|
285
|
+
action: analyticsActions.filterByTitle,
|
|
286
|
+
label: cleared
|
|
287
|
+
? `clear-${prevSelectedLetter}`
|
|
288
|
+
: `${prevSelectedLetter || 'start'}-${this.selectedTitleFilter}`,
|
|
289
|
+
});
|
|
250
290
|
}
|
|
251
291
|
selectedTitleLetterChanged() {
|
|
252
292
|
this.titleQuery = this.selectedTitleFilter
|
|
253
293
|
? `firstTitle:${this.selectedTitleFilter}`
|
|
254
294
|
: undefined;
|
|
255
295
|
}
|
|
296
|
+
/** Send Analytics when filtering by creator's first letter
|
|
297
|
+
* labels: 'start-<ToLetter>' | 'clear-<FromLetter>' | '<FromLetter>-<ToLetter>'
|
|
298
|
+
* */
|
|
299
|
+
sendFilterByCreatorAnalytics(prevSelectedLetter) {
|
|
300
|
+
var _a;
|
|
301
|
+
if (!prevSelectedLetter && !this.selectedCreatorFilter) {
|
|
302
|
+
return;
|
|
303
|
+
}
|
|
304
|
+
const cleared = prevSelectedLetter && this.selectedCreatorFilter === null;
|
|
305
|
+
(_a = this.analyticsHandler) === null || _a === void 0 ? void 0 : _a.sendEventNoSampling({
|
|
306
|
+
category: analyticsCategories.default,
|
|
307
|
+
action: analyticsActions.filterByCreator,
|
|
308
|
+
label: cleared
|
|
309
|
+
? `clear-${prevSelectedLetter}`
|
|
310
|
+
: `${prevSelectedLetter || 'start'}-${this.selectedCreatorFilter}`,
|
|
311
|
+
});
|
|
312
|
+
}
|
|
256
313
|
selectedCreatorLetterChanged() {
|
|
257
314
|
this.creatorQuery = this.selectedCreatorFilter
|
|
258
315
|
? `firstCreator:${this.selectedCreatorFilter}`
|
|
@@ -307,7 +364,10 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
|
|
|
307
364
|
?collapsableFacets=${this.mobileView}
|
|
308
365
|
?facetsLoading=${this.facetDataLoading}
|
|
309
366
|
?fullYearAggregationLoading=${this.fullYearAggregationLoading}
|
|
310
|
-
|
|
367
|
+
.onFacetClick=${this.facetClickHandler}
|
|
368
|
+
.analyticsHandler=${this.analyticsHandler}
|
|
369
|
+
>
|
|
370
|
+
</collection-facets>
|
|
311
371
|
`;
|
|
312
372
|
}
|
|
313
373
|
get loadingTemplate() {
|
|
@@ -347,8 +407,16 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
|
|
|
347
407
|
`;
|
|
348
408
|
}
|
|
349
409
|
histogramDateRangeUpdated(e) {
|
|
410
|
+
var _a;
|
|
350
411
|
const { minDate, maxDate } = e.detail;
|
|
351
412
|
this.dateRangeQueryClause = `year:[${minDate} TO ${maxDate}]`;
|
|
413
|
+
if (this.dateRangeQueryClause) {
|
|
414
|
+
(_a = this.analyticsHandler) === null || _a === void 0 ? void 0 : _a.sendEventNoSampling({
|
|
415
|
+
category: analyticsCategories.default,
|
|
416
|
+
action: analyticsActions.histogramChanged,
|
|
417
|
+
label: this.dateRangeQueryClause,
|
|
418
|
+
});
|
|
419
|
+
}
|
|
352
420
|
}
|
|
353
421
|
firstUpdated() {
|
|
354
422
|
this.setupStateRestorationObserver();
|
|
@@ -378,12 +446,16 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
|
|
|
378
446
|
this.handleQueryChange();
|
|
379
447
|
}
|
|
380
448
|
if (changed.has('selectedSort') || changed.has('sortDirection')) {
|
|
449
|
+
const prevSortDirection = changed.get('sortDirection');
|
|
450
|
+
this.sendSortByAnaltyics(prevSortDirection);
|
|
381
451
|
this.selectedSortChanged();
|
|
382
452
|
}
|
|
383
453
|
if (changed.has('selectedTitleFilter')) {
|
|
454
|
+
this.sendFilterByTitleAnalytics(changed.get('selectedTitleFilter'));
|
|
384
455
|
this.selectedTitleLetterChanged();
|
|
385
456
|
}
|
|
386
457
|
if (changed.has('selectedCreatorFilter')) {
|
|
458
|
+
this.sendFilterByCreatorAnalytics(changed.get('selectedCreatorFilter'));
|
|
387
459
|
this.selectedCreatorLetterChanged();
|
|
388
460
|
}
|
|
389
461
|
if (changed.has('pagesToRender')) {
|
|
@@ -574,6 +646,7 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
|
|
|
574
646
|
if (!this.selectedFacets)
|
|
575
647
|
return undefined;
|
|
576
648
|
const facetQuery = [];
|
|
649
|
+
// console.log('selectedFacets: ', this.selectedFacets);
|
|
577
650
|
for (const [facetName, facetValues] of Object.entries(this.selectedFacets)) {
|
|
578
651
|
const facetEntries = Object.entries(facetValues);
|
|
579
652
|
// eslint-disable-next-line no-continue
|
|
@@ -600,6 +673,27 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
|
|
|
600
673
|
facetsChanged(e) {
|
|
601
674
|
this.selectedFacets = e.detail;
|
|
602
675
|
}
|
|
676
|
+
facetClickHandler(name, facetSelected, negative) {
|
|
677
|
+
var _a, _b;
|
|
678
|
+
if (negative) {
|
|
679
|
+
(_a = this.analyticsHandler) === null || _a === void 0 ? void 0 : _a.sendEventNoSampling({
|
|
680
|
+
category: analyticsCategories.default,
|
|
681
|
+
action: facetSelected
|
|
682
|
+
? analyticsActions.facetNegativeSelected
|
|
683
|
+
: analyticsActions.facetNegativeDeselected,
|
|
684
|
+
label: name,
|
|
685
|
+
});
|
|
686
|
+
}
|
|
687
|
+
else {
|
|
688
|
+
(_b = this.analyticsHandler) === null || _b === void 0 ? void 0 : _b.sendEventNoSampling({
|
|
689
|
+
category: analyticsCategories.default,
|
|
690
|
+
action: facetSelected
|
|
691
|
+
? analyticsActions.facetSelected
|
|
692
|
+
: analyticsActions.facetDeselected,
|
|
693
|
+
label: name,
|
|
694
|
+
});
|
|
695
|
+
}
|
|
696
|
+
}
|
|
603
697
|
async fetchFacets() {
|
|
604
698
|
var _a, _b;
|
|
605
699
|
if (!this.fullQuery)
|
|
@@ -834,7 +928,7 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
|
|
|
834
928
|
const datasource = { ...this.dataSource };
|
|
835
929
|
const tiles = [];
|
|
836
930
|
docs === null || docs === void 0 ? void 0 : docs.forEach(doc => {
|
|
837
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7;
|
|
931
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9;
|
|
838
932
|
if (!doc.identifier)
|
|
839
933
|
return;
|
|
840
934
|
let loginRequired = false;
|
|
@@ -871,11 +965,12 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
|
|
|
871
965
|
issue: (_u = doc.issue) === null || _u === void 0 ? void 0 : _u.value,
|
|
872
966
|
itemCount: (_w = (_v = doc.item_count) === null || _v === void 0 ? void 0 : _v.value) !== null && _w !== void 0 ? _w : 0,
|
|
873
967
|
mediatype: (_y = (_x = doc.mediatype) === null || _x === void 0 ? void 0 : _x.value) !== null && _y !== void 0 ? _y : 'data',
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
968
|
+
snippets: (_0 = (_z = doc.snippets) === null || _z === void 0 ? void 0 : _z.values) !== null && _0 !== void 0 ? _0 : [],
|
|
969
|
+
source: (_1 = doc.source) === null || _1 === void 0 ? void 0 : _1.value,
|
|
970
|
+
subjects: (_3 = (_2 = doc.subject) === null || _2 === void 0 ? void 0 : _2.values) !== null && _3 !== void 0 ? _3 : [],
|
|
971
|
+
title: this.etreeTitle((_4 = doc.title) === null || _4 === void 0 ? void 0 : _4.value, (_5 = doc.mediatype) === null || _5 === void 0 ? void 0 : _5.value, (_6 = doc.collection) === null || _6 === void 0 ? void 0 : _6.values),
|
|
972
|
+
volume: (_7 = doc.volume) === null || _7 === void 0 ? void 0 : _7.value,
|
|
973
|
+
viewCount: (_9 = (_8 = doc.downloads) === null || _8 === void 0 ? void 0 : _8.value) !== null && _9 !== void 0 ? _9 : 0,
|
|
879
974
|
loginRequired,
|
|
880
975
|
contentWarning,
|
|
881
976
|
});
|
|
@@ -905,6 +1000,20 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
|
|
|
905
1000
|
}
|
|
906
1001
|
return title !== null && title !== void 0 ? title : '';
|
|
907
1002
|
}
|
|
1003
|
+
/** callback when a result is selected */
|
|
1004
|
+
resultSelected(event) {
|
|
1005
|
+
var _a, _b;
|
|
1006
|
+
(_a = this.analyticsHandler) === null || _a === void 0 ? void 0 : _a.sendEventNoSampling({
|
|
1007
|
+
category: analyticsCategories.default,
|
|
1008
|
+
action: analyticsActions.resultSelected,
|
|
1009
|
+
label: event.detail.mediatype === 'collection' ? 'collection' : 'item',
|
|
1010
|
+
});
|
|
1011
|
+
(_b = this.analyticsHandler) === null || _b === void 0 ? void 0 : _b.sendEventNoSampling({
|
|
1012
|
+
category: analyticsCategories.default,
|
|
1013
|
+
action: analyticsActions.resultSelected,
|
|
1014
|
+
label: `page-${this.currentPage}`,
|
|
1015
|
+
});
|
|
1016
|
+
}
|
|
908
1017
|
cellForIndex(index) {
|
|
909
1018
|
const model = this.tileModelAtCellIndex(index);
|
|
910
1019
|
if (!model)
|
|
@@ -920,6 +1029,7 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
|
|
|
920
1029
|
.sortParam=${this.sortParam}
|
|
921
1030
|
.mobileBreakpoint=${this.mobileBreakpoint}
|
|
922
1031
|
.loggedIn=${this.loggedIn}
|
|
1032
|
+
@resultSelected=${(e) => this.resultSelected(e)}
|
|
923
1033
|
>
|
|
924
1034
|
</tile-dispatcher>
|
|
925
1035
|
`;
|
|
@@ -1250,6 +1360,9 @@ __decorate([
|
|
|
1250
1360
|
__decorate([
|
|
1251
1361
|
query('#content-container')
|
|
1252
1362
|
], CollectionBrowser.prototype, "contentContainer", void 0);
|
|
1363
|
+
__decorate([
|
|
1364
|
+
property({ type: Object, attribute: false })
|
|
1365
|
+
], CollectionBrowser.prototype, "analyticsHandler", void 0);
|
|
1253
1366
|
__decorate([
|
|
1254
1367
|
query('infinite-scroller')
|
|
1255
1368
|
], CollectionBrowser.prototype, "infiniteScroller", void 0);
|