@internetarchive/collection-browser 3.3.3 → 3.3.4-alpha-webdev7761.0
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/collection-browser.d.ts +10 -2
- package/dist/src/collection-browser.js +112 -10
- package/dist/src/collection-browser.js.map +1 -1
- package/dist/src/collection-facets/facet-row.js +141 -140
- package/dist/src/collection-facets/facet-row.js.map +1 -1
- package/dist/src/collection-facets/models.js.map +1 -1
- package/dist/src/collection-facets.js +12 -0
- package/dist/src/collection-facets.js.map +1 -1
- package/dist/src/data-source/collection-browser-data-source-interface.d.ts +10 -1
- package/dist/src/data-source/collection-browser-data-source-interface.js.map +1 -1
- package/dist/src/data-source/collection-browser-data-source.d.ts +19 -1
- package/dist/src/data-source/collection-browser-data-source.js +36 -18
- package/dist/src/data-source/collection-browser-data-source.js.map +1 -1
- package/dist/src/data-source/collection-browser-query-state.d.ts +1 -2
- package/dist/src/data-source/collection-browser-query-state.js.map +1 -1
- package/dist/src/data-source/models.d.ts +11 -0
- package/dist/src/data-source/models.js.map +1 -1
- package/dist/src/manage/manage-bar.js +77 -77
- package/dist/src/manage/manage-bar.js.map +1 -1
- package/dist/src/models.d.ts +2 -6
- package/dist/src/models.js +8 -12
- package/dist/src/models.js.map +1 -1
- package/dist/src/restoration-state-handler.d.ts +1 -2
- package/dist/src/restoration-state-handler.js +3 -9
- package/dist/src/restoration-state-handler.js.map +1 -1
- package/dist/src/tiles/grid/search-tile.js +42 -42
- package/dist/src/tiles/grid/search-tile.js.map +1 -1
- package/dist/src/tiles/grid/styles/tile-grid-shared-styles.js +119 -119
- package/dist/src/tiles/grid/styles/tile-grid-shared-styles.js.map +1 -1
- package/dist/test/collection-browser.test.js +19 -9
- package/dist/test/collection-browser.test.js.map +1 -1
- package/dist/test/collection-facets/facet-row.test.js +23 -23
- package/dist/test/collection-facets/facet-row.test.js.map +1 -1
- package/dist/test/collection-facets.test.js +20 -20
- package/dist/test/collection-facets.test.js.map +1 -1
- package/dist/test/restoration-state-handler.test.js +5 -37
- package/dist/test/restoration-state-handler.test.js.map +1 -1
- package/package.json +1 -1
- package/src/collection-browser.ts +132 -7
- package/src/collection-facets/facet-row.ts +299 -296
- package/src/collection-facets/models.ts +10 -10
- package/src/collection-facets.ts +11 -0
- package/src/data-source/collection-browser-data-source-interface.ts +345 -333
- package/src/data-source/collection-browser-data-source.ts +59 -19
- package/src/data-source/collection-browser-query-state.ts +1 -7
- package/src/data-source/models.ts +13 -0
- package/src/manage/manage-bar.ts +247 -247
- package/src/models.ts +866 -870
- package/src/restoration-state-handler.ts +542 -544
- package/src/tiles/grid/search-tile.ts +90 -90
- package/src/tiles/grid/styles/tile-grid-shared-styles.ts +130 -130
- package/test/collection-browser.test.ts +21 -11
- package/test/collection-facets/facet-row.test.ts +375 -375
- package/test/collection-facets.test.ts +928 -928
- package/test/restoration-state-handler.test.ts +480 -510
|
@@ -7,7 +7,7 @@ import '@internetarchive/infinite-scroller';
|
|
|
7
7
|
import type { ModalManagerInterface } from '@internetarchive/modal-manager';
|
|
8
8
|
import type { FeatureFeedbackServiceInterface } from '@internetarchive/feature-feedback';
|
|
9
9
|
import type { RecaptchaManagerInterface } from '@internetarchive/recaptcha-manager';
|
|
10
|
-
import { SelectedFacets, SortField, CollectionBrowserContext, TileModel, CollectionDisplayMode, FacetEventDetails, FacetLoadStrategy
|
|
10
|
+
import { SelectedFacets, SortField, CollectionBrowserContext, TileModel, CollectionDisplayMode, FacetEventDetails, FacetLoadStrategy } from './models';
|
|
11
11
|
import { RestorationStateHandlerInterface } from './restoration-state-handler';
|
|
12
12
|
import type { CollectionBrowserQueryState, CollectionBrowserSearchInterface } from './data-source/collection-browser-query-state';
|
|
13
13
|
import type { CollectionBrowserDataSourceInterface } from './data-source/collection-browser-data-source-interface';
|
|
@@ -59,7 +59,6 @@ export declare class CollectionBrowser extends LitElement implements InfiniteScr
|
|
|
59
59
|
selectedSort: SortField;
|
|
60
60
|
selectedTitleFilter: string | null;
|
|
61
61
|
selectedCreatorFilter: string | null;
|
|
62
|
-
tvClipFilter: TvClipFilterType;
|
|
63
62
|
sortDirection: SortDirection | null;
|
|
64
63
|
defaultSortField: Exclude<SortField, SortField.default>;
|
|
65
64
|
defaultSortDirection: SortDirection | null;
|
|
@@ -460,6 +459,15 @@ export declare class CollectionBrowser extends LitElement implements InfiniteScr
|
|
|
460
459
|
* including the collapsible container (with header) and the facets themselves.
|
|
461
460
|
*/
|
|
462
461
|
private get mobileFacetsTemplate();
|
|
462
|
+
private selectedTVNetwork?;
|
|
463
|
+
private selectedTVShow?;
|
|
464
|
+
private tvNetworksDropdown?;
|
|
465
|
+
private tvShowsDropdown?;
|
|
466
|
+
private networksDropdownClicked;
|
|
467
|
+
private showsDropdownClicked;
|
|
468
|
+
private networksDropdownChanged;
|
|
469
|
+
private showsDropdownChanged;
|
|
470
|
+
private get tvDropdownFiltersTemplate();
|
|
463
471
|
/**
|
|
464
472
|
* The template for the facets component alone, without any surrounding wrappers.
|
|
465
473
|
*/
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { __decorate } from "tslib";
|
|
2
2
|
import { html, css, LitElement, nothing, } from 'lit';
|
|
3
3
|
import { customElement, property, query, state } from 'lit/decorators.js';
|
|
4
|
+
import { map } from 'lit/directives/map.js';
|
|
4
5
|
import { classMap } from 'lit/directives/class-map.js';
|
|
5
6
|
import { msg } from '@lit/localize';
|
|
6
7
|
import { SearchType, } from '@internetarchive/search-service';
|
|
@@ -22,6 +23,7 @@ import './manage/manage-bar';
|
|
|
22
23
|
import './collection-facets';
|
|
23
24
|
import './circular-activity-indicator';
|
|
24
25
|
import './collection-facets/smart-facets/smart-facet-bar';
|
|
26
|
+
import { mergeSelectedFacets, updateSelectedFacetBucket, } from './utils/facet-utils';
|
|
25
27
|
let CollectionBrowser = class CollectionBrowser extends LitElement {
|
|
26
28
|
constructor() {
|
|
27
29
|
super();
|
|
@@ -33,7 +35,6 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
|
|
|
33
35
|
this.selectedSort = SortField.default;
|
|
34
36
|
this.selectedTitleFilter = null;
|
|
35
37
|
this.selectedCreatorFilter = null;
|
|
36
|
-
this.tvClipFilter = 'all';
|
|
37
38
|
this.sortDirection = null;
|
|
38
39
|
this.defaultSortField = SortField.relevance;
|
|
39
40
|
this.defaultSortDirection = null;
|
|
@@ -183,6 +184,8 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
|
|
|
183
184
|
*/
|
|
184
185
|
this.dataSourceInstallInProgress = false;
|
|
185
186
|
this.placeholderCellTemplate = html `<collection-browser-loading-tile></collection-browser-loading-tile>`;
|
|
187
|
+
this.selectedTVNetwork = undefined;
|
|
188
|
+
this.selectedTVShow = undefined;
|
|
186
189
|
/**
|
|
187
190
|
* Updates the height of the left column according to its position on the page.
|
|
188
191
|
* Arrow function ensures proper `this` binding.
|
|
@@ -969,6 +972,89 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
|
|
|
969
972
|
</details>
|
|
970
973
|
`;
|
|
971
974
|
}
|
|
975
|
+
async networksDropdownClicked() {
|
|
976
|
+
var _a, _b;
|
|
977
|
+
(_a = this.tvNetworksDropdown) === null || _a === void 0 ? void 0 : _a.classList.add('loading');
|
|
978
|
+
await this.dataSource.populateTVChannelMaps();
|
|
979
|
+
(_b = this.tvNetworksDropdown) === null || _b === void 0 ? void 0 : _b.classList.remove('loading');
|
|
980
|
+
}
|
|
981
|
+
async showsDropdownClicked() {
|
|
982
|
+
var _a, _b;
|
|
983
|
+
(_a = this.tvShowsDropdown) === null || _a === void 0 ? void 0 : _a.classList.add('loading');
|
|
984
|
+
await this.dataSource.populateTVChannelMaps();
|
|
985
|
+
(_b = this.tvShowsDropdown) === null || _b === void 0 ? void 0 : _b.classList.remove('loading');
|
|
986
|
+
}
|
|
987
|
+
async networksDropdownChanged() {
|
|
988
|
+
var _a;
|
|
989
|
+
if (((_a = this.tvNetworksDropdown) === null || _a === void 0 ? void 0 : _a.selectedIndex) === 0) {
|
|
990
|
+
this.selectedTVNetwork = undefined;
|
|
991
|
+
return;
|
|
992
|
+
}
|
|
993
|
+
this.selectedTVNetwork = this.tvNetworksDropdown.selectedOptions[0].value;
|
|
994
|
+
let newNetworkFacets = getDefaultSelectedFacets();
|
|
995
|
+
for (const [channel, network,] of this.dataSource.tvChannelMaps.channelToNetwork.entries()) {
|
|
996
|
+
if (network === this.selectedTVNetwork) {
|
|
997
|
+
newNetworkFacets = updateSelectedFacetBucket(newNetworkFacets, 'creator', {
|
|
998
|
+
key: channel.toLowerCase(),
|
|
999
|
+
count: 0,
|
|
1000
|
+
state: 'selected',
|
|
1001
|
+
});
|
|
1002
|
+
}
|
|
1003
|
+
}
|
|
1004
|
+
log(newNetworkFacets);
|
|
1005
|
+
this.selectedFacets = mergeSelectedFacets(this.selectedFacets, newNetworkFacets);
|
|
1006
|
+
log(this.selectedFacets);
|
|
1007
|
+
}
|
|
1008
|
+
async showsDropdownChanged() {
|
|
1009
|
+
var _a;
|
|
1010
|
+
if (((_a = this.tvShowsDropdown) === null || _a === void 0 ? void 0 : _a.selectedIndex) === 0) {
|
|
1011
|
+
this.selectedTVShow = undefined;
|
|
1012
|
+
return;
|
|
1013
|
+
}
|
|
1014
|
+
this.selectedTVShow = this.tvShowsDropdown.selectedOptions[0].value;
|
|
1015
|
+
this.selectedFacets = updateSelectedFacetBucket(this.selectedFacets, 'program', {
|
|
1016
|
+
key: this.selectedTVShow,
|
|
1017
|
+
count: 0,
|
|
1018
|
+
state: 'selected',
|
|
1019
|
+
});
|
|
1020
|
+
}
|
|
1021
|
+
get tvDropdownFiltersTemplate() {
|
|
1022
|
+
if (this.searchType !== SearchType.TV)
|
|
1023
|
+
return nothing;
|
|
1024
|
+
log('start filters template preprocess', Date.now());
|
|
1025
|
+
const { channelToNetwork, programToChannels } = this.dataSource.tvChannelMaps;
|
|
1026
|
+
const networks = channelToNetwork
|
|
1027
|
+
? [...new Set(channelToNetwork.values())]
|
|
1028
|
+
: [];
|
|
1029
|
+
let showEntries = programToChannels ? [...programToChannels.entries()] : [];
|
|
1030
|
+
if (channelToNetwork && this.selectedTVNetwork) {
|
|
1031
|
+
showEntries = showEntries.filter(([, channels]) => Object.keys(channels).some(c => channelToNetwork.get(c) === this.selectedTVNetwork));
|
|
1032
|
+
}
|
|
1033
|
+
const shows = showEntries.map(([show]) => show);
|
|
1034
|
+
log('end filters template preprocess', Date.now());
|
|
1035
|
+
return html `
|
|
1036
|
+
<div id="tv-filters" slot="facets-top">
|
|
1037
|
+
<select
|
|
1038
|
+
id="tv-networks"
|
|
1039
|
+
class="tv-filter-dropdown"
|
|
1040
|
+
@click=${this.networksDropdownClicked}
|
|
1041
|
+
@change=${this.networksDropdownChanged}
|
|
1042
|
+
>
|
|
1043
|
+
<option selected value="">${msg('Filter by Network')}</option>
|
|
1044
|
+
${map(networks, n => html `<option>${n}</option>`)}
|
|
1045
|
+
</select>
|
|
1046
|
+
<select
|
|
1047
|
+
id="tv-shows"
|
|
1048
|
+
class="tv-filter-dropdown"
|
|
1049
|
+
@click=${this.showsDropdownClicked}
|
|
1050
|
+
@change=${this.showsDropdownChanged}
|
|
1051
|
+
>
|
|
1052
|
+
<option selected value="">${msg('Filter by Show')}</option>
|
|
1053
|
+
${map(shows, s => html `<option>${s}</option>`)}
|
|
1054
|
+
</select>
|
|
1055
|
+
</div>
|
|
1056
|
+
`;
|
|
1057
|
+
}
|
|
972
1058
|
/**
|
|
973
1059
|
* The template for the facets component alone, without any surrounding wrappers.
|
|
974
1060
|
*/
|
|
@@ -1026,6 +1112,7 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
|
|
|
1026
1112
|
@facetsChanged=${this.facetsChanged}
|
|
1027
1113
|
@histogramDateRangeUpdated=${this.histogramDateRangeUpdated}
|
|
1028
1114
|
>
|
|
1115
|
+
${this.tvDropdownFiltersTemplate}
|
|
1029
1116
|
</collection-facets>
|
|
1030
1117
|
`;
|
|
1031
1118
|
// If we are using one of the opt-in facet load strategies, we may need to wrap the
|
|
@@ -1141,7 +1228,7 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
|
|
|
1141
1228
|
* represent, such as the search query, sort option, and any filters applied.
|
|
1142
1229
|
*/
|
|
1143
1230
|
async installDataSourceAndQueryState(dataSource, queryState) {
|
|
1144
|
-
var _a, _b
|
|
1231
|
+
var _a, _b;
|
|
1145
1232
|
log('Installing data source & query state in CB:', dataSource, queryState);
|
|
1146
1233
|
if (this.dataSource)
|
|
1147
1234
|
this.removeController(this.dataSource);
|
|
@@ -1159,7 +1246,6 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
|
|
|
1159
1246
|
this.sortDirection = queryState.sortDirection;
|
|
1160
1247
|
this.selectedTitleFilter = queryState.selectedTitleFilter;
|
|
1161
1248
|
this.selectedCreatorFilter = queryState.selectedCreatorFilter;
|
|
1162
|
-
this.tvClipFilter = (_c = queryState.tvClipFilter) !== null && _c !== void 0 ? _c : 'all';
|
|
1163
1249
|
this.pagesToRender = this.initialPageNumber;
|
|
1164
1250
|
// We set this flag during the update to prevent the URL state persistence
|
|
1165
1251
|
// from creating an unwanted extra history entry.
|
|
@@ -1488,7 +1574,6 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
|
|
|
1488
1574
|
sortDirection: this.sortDirection,
|
|
1489
1575
|
selectedTitleFilter: this.selectedTitleFilter,
|
|
1490
1576
|
selectedCreatorFilter: this.selectedCreatorFilter,
|
|
1491
|
-
tvClipFilter: this.tvClipFilter,
|
|
1492
1577
|
},
|
|
1493
1578
|
}));
|
|
1494
1579
|
}
|
|
@@ -1606,7 +1691,7 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
|
|
|
1606
1691
|
this.restoreState();
|
|
1607
1692
|
}
|
|
1608
1693
|
restoreState() {
|
|
1609
|
-
var _a, _b, _c, _d, _e
|
|
1694
|
+
var _a, _b, _c, _d, _e;
|
|
1610
1695
|
const restorationState = this.restorationStateHandler.getRestorationState();
|
|
1611
1696
|
this.displayMode = restorationState.displayMode;
|
|
1612
1697
|
if (!this.suppressURLSinParam && restorationState.searchType != null)
|
|
@@ -1621,7 +1706,6 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
|
|
|
1621
1706
|
this.currentPage = (_e = restorationState.currentPage) !== null && _e !== void 0 ? _e : 1;
|
|
1622
1707
|
this.minSelectedDate = restorationState.minSelectedDate;
|
|
1623
1708
|
this.maxSelectedDate = restorationState.maxSelectedDate;
|
|
1624
|
-
this.tvClipFilter = (_f = restorationState.tvClipFilter) !== null && _f !== void 0 ? _f : 'all';
|
|
1625
1709
|
if (this.currentPage > 1) {
|
|
1626
1710
|
this.goToPage(this.currentPage);
|
|
1627
1711
|
}
|
|
@@ -1642,7 +1726,6 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
|
|
|
1642
1726
|
maxSelectedDate: this.maxSelectedDate,
|
|
1643
1727
|
selectedTitleFilter: (_c = this.selectedTitleFilter) !== null && _c !== void 0 ? _c : undefined,
|
|
1644
1728
|
selectedCreatorFilter: (_d = this.selectedCreatorFilter) !== null && _d !== void 0 ? _d : undefined,
|
|
1645
|
-
tvClipFilter: this.tvClipFilter,
|
|
1646
1729
|
};
|
|
1647
1730
|
const persistOptions = {
|
|
1648
1731
|
forceReplace: this.dataSourceInstallInProgress,
|
|
@@ -2184,6 +2267,16 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
|
|
|
2184
2267
|
line-height: 1.3rem;
|
|
2185
2268
|
}
|
|
2186
2269
|
|
|
2270
|
+
#tv-filters {
|
|
2271
|
+
margin-bottom: 15px;
|
|
2272
|
+
}
|
|
2273
|
+
|
|
2274
|
+
.tv-filter-dropdown {
|
|
2275
|
+
width: 100%;
|
|
2276
|
+
padding: 3px;
|
|
2277
|
+
margin-bottom: 5px;
|
|
2278
|
+
}
|
|
2279
|
+
|
|
2187
2280
|
#facets-container {
|
|
2188
2281
|
position: relative;
|
|
2189
2282
|
max-height: 0;
|
|
@@ -2389,9 +2482,6 @@ __decorate([
|
|
|
2389
2482
|
__decorate([
|
|
2390
2483
|
property({ type: String })
|
|
2391
2484
|
], CollectionBrowser.prototype, "selectedCreatorFilter", void 0);
|
|
2392
|
-
__decorate([
|
|
2393
|
-
property({ type: String })
|
|
2394
|
-
], CollectionBrowser.prototype, "tvClipFilter", void 0);
|
|
2395
2485
|
__decorate([
|
|
2396
2486
|
property({ type: String })
|
|
2397
2487
|
], CollectionBrowser.prototype, "sortDirection", void 0);
|
|
@@ -2560,6 +2650,18 @@ __decorate([
|
|
|
2560
2650
|
__decorate([
|
|
2561
2651
|
query('infinite-scroller')
|
|
2562
2652
|
], CollectionBrowser.prototype, "infiniteScroller", void 0);
|
|
2653
|
+
__decorate([
|
|
2654
|
+
state()
|
|
2655
|
+
], CollectionBrowser.prototype, "selectedTVNetwork", void 0);
|
|
2656
|
+
__decorate([
|
|
2657
|
+
state()
|
|
2658
|
+
], CollectionBrowser.prototype, "selectedTVShow", void 0);
|
|
2659
|
+
__decorate([
|
|
2660
|
+
query('#tv-networks')
|
|
2661
|
+
], CollectionBrowser.prototype, "tvNetworksDropdown", void 0);
|
|
2662
|
+
__decorate([
|
|
2663
|
+
query('#tv-shows')
|
|
2664
|
+
], CollectionBrowser.prototype, "tvShowsDropdown", void 0);
|
|
2563
2665
|
CollectionBrowser = __decorate([
|
|
2564
2666
|
customElement('collection-browser')
|
|
2565
2667
|
], CollectionBrowser);
|