import layoutManager from 'layoutManager'; import loading from 'loading'; import libraryBrowser from 'libraryBrowser'; import cardBuilder from 'cardBuilder'; import lazyLoader from 'lazyLoader'; import appHost from 'apphost'; import globalize from 'globalize'; import appRouter from 'appRouter'; import dom from 'dom'; import 'emby-button'; /* eslint-disable indent */ export default function (view, params, tabContent) { function getPageData() { const key = getSavedQueryKey(); let pageData = data[key]; if (!pageData) { pageData = data[key] = { query: { SortBy: 'SortName', SortOrder: 'Ascending', IncludeItemTypes: 'Series', Recursive: true, EnableTotalRecordCount: false }, view: 'Poster' }; pageData.query.ParentId = params.topParentId; libraryBrowser.loadSavedQueryValues(key, pageData.query); } return pageData; } function getQuery() { return getPageData().query; } function getSavedQueryKey() { return libraryBrowser.getSavedQueryKey('seriesgenres'); } function getPromise() { loading.show(); const query = getQuery(); return ApiClient.getGenres(ApiClient.getCurrentUserId(), query); } function enableScrollX() { return !layoutManager.desktop; } function getThumbShape() { return enableScrollX() ? 'overflowBackdrop' : 'backdrop'; } function getPortraitShape() { return enableScrollX() ? 'overflowPortrait' : 'portrait'; } function fillItemsContainer(entry) { const elem = entry.target; const id = elem.getAttribute('data-id'); const viewStyle = self.getCurrentViewStyle(); let limit = 'Thumb' == viewStyle || 'ThumbCard' == viewStyle ? 5 : 9; if (enableScrollX()) { limit = 10; } const enableImageTypes = 'Thumb' == viewStyle || 'ThumbCard' == viewStyle ? 'Primary,Backdrop,Thumb' : 'Primary'; const query = { SortBy: 'SortName', SortOrder: 'Ascending', IncludeItemTypes: 'Series', Recursive: true, Fields: 'PrimaryImageAspectRatio,MediaSourceCount,BasicSyncInfo', ImageTypeLimit: 1, EnableImageTypes: enableImageTypes, Limit: limit, GenreIds: id, EnableTotalRecordCount: false, ParentId: params.topParentId }; ApiClient.getItems(ApiClient.getCurrentUserId(), query).then(function (result) { if (viewStyle == 'Thumb') { cardBuilder.buildCards(result.Items, { itemsContainer: elem, shape: getThumbShape(), preferThumb: true, showTitle: true, scalable: true, centerText: true, overlayMoreButton: true, allowBottomPadding: false }); } else if (viewStyle == 'ThumbCard') { cardBuilder.buildCards(result.Items, { itemsContainer: elem, shape: getThumbShape(), preferThumb: true, showTitle: true, scalable: true, centerText: false, cardLayout: true, showYear: true }); } else if (viewStyle == 'PosterCard') { cardBuilder.buildCards(result.Items, { itemsContainer: elem, shape: getPortraitShape(), showTitle: true, scalable: true, centerText: false, cardLayout: true, showYear: true }); } else if (viewStyle == 'Poster') { cardBuilder.buildCards(result.Items, { itemsContainer: elem, shape: getPortraitShape(), scalable: true, showTitle: true, centerText: true, showYear: true, overlayMoreButton: true, allowBottomPadding: false }); } if (result.Items.length >= query.Limit) { tabContent.querySelector('.btnMoreFromGenre' + id + ' .material-icons').classList.remove('hide'); } }); } function reloadItems(context, promise) { const query = getQuery(); promise.then(function (result) { const elem = context.querySelector('#items'); let html = ''; const items = result.Items; for (const item of items) { html += '
' + globalize.translate('MessageNoGenresAvailable') + '
'; html += '