2020-07-28 21:28:16 +01:00
|
|
|
import globalize from 'globalize';
|
|
|
|
import listView from 'listView';
|
|
|
|
import layoutManager from 'layoutManager';
|
|
|
|
import * as userSettings from 'userSettings';
|
|
|
|
import focusManager from 'focusManager';
|
|
|
|
import cardBuilder from 'cardBuilder';
|
|
|
|
import loading from 'loading';
|
|
|
|
import AlphaNumericShortcuts from 'alphaNumericShortcuts';
|
|
|
|
import playbackManager from 'playbackManager';
|
|
|
|
import AlphaPicker from 'alphaPicker';
|
|
|
|
import 'emby-itemscontainer';
|
|
|
|
import 'emby-scroller';
|
|
|
|
|
|
|
|
/* eslint-disable indent */
|
2018-10-23 01:05:09 +03:00
|
|
|
|
|
|
|
function getInitialLiveTvQuery(instance, params) {
|
2020-07-28 21:28:16 +01:00
|
|
|
const query = {
|
2020-08-30 06:06:47 +02:00
|
|
|
UserId: window.connectionManager.getApiClient(params.serverId).getCurrentUserId(),
|
2018-10-23 01:05:09 +03:00
|
|
|
StartIndex: 0,
|
2020-05-04 12:44:12 +02:00
|
|
|
Fields: 'ChannelInfo,PrimaryImageAspectRatio',
|
2018-10-23 01:05:09 +03:00
|
|
|
Limit: 300
|
|
|
|
};
|
2019-11-06 13:43:39 +03:00
|
|
|
|
2020-07-30 16:07:13 +02:00
|
|
|
if (params.type === 'Recordings') {
|
2019-11-06 13:43:39 +03:00
|
|
|
query.IsInProgress = false;
|
|
|
|
} else {
|
|
|
|
query.HasAired = false;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (params.genreId) {
|
|
|
|
query.GenreIds = params.genreId;
|
|
|
|
}
|
|
|
|
|
2020-07-30 16:07:13 +02:00
|
|
|
if (params.IsMovie === 'true') {
|
2019-11-06 13:43:39 +03:00
|
|
|
query.IsMovie = true;
|
2020-07-30 16:07:13 +02:00
|
|
|
} else if (params.IsMovie === 'false') {
|
2019-11-06 13:43:39 +03:00
|
|
|
query.IsMovie = false;
|
|
|
|
}
|
|
|
|
|
2020-07-30 16:07:13 +02:00
|
|
|
if (params.IsSeries === 'true') {
|
2019-11-06 13:43:39 +03:00
|
|
|
query.IsSeries = true;
|
2020-07-30 16:07:13 +02:00
|
|
|
} else if (params.IsSeries === 'false') {
|
2019-11-06 13:43:39 +03:00
|
|
|
query.IsSeries = false;
|
|
|
|
}
|
|
|
|
|
2020-07-30 16:07:13 +02:00
|
|
|
if (params.IsNews === 'true') {
|
2019-11-06 13:43:39 +03:00
|
|
|
query.IsNews = true;
|
2020-07-30 16:07:13 +02:00
|
|
|
} else if (params.IsNews === 'false') {
|
2019-11-06 13:43:39 +03:00
|
|
|
query.IsNews = false;
|
|
|
|
}
|
|
|
|
|
2020-07-30 16:07:13 +02:00
|
|
|
if (params.IsSports === 'true') {
|
2019-11-06 13:43:39 +03:00
|
|
|
query.IsSports = true;
|
2020-07-30 16:07:13 +02:00
|
|
|
} else if (params.IsSports === 'false') {
|
2019-11-06 13:43:39 +03:00
|
|
|
query.IsSports = false;
|
|
|
|
}
|
|
|
|
|
2020-07-30 16:07:13 +02:00
|
|
|
if (params.IsKids === 'true') {
|
2019-11-06 13:43:39 +03:00
|
|
|
query.IsKids = true;
|
2020-07-30 16:07:13 +02:00
|
|
|
} else if (params.IsKids === 'false') {
|
2019-11-06 13:43:39 +03:00
|
|
|
query.IsKids = false;
|
|
|
|
}
|
|
|
|
|
2020-07-30 16:07:13 +02:00
|
|
|
if (params.IsAiring === 'true') {
|
2019-11-06 13:43:39 +03:00
|
|
|
query.IsAiring = true;
|
2020-07-30 16:07:13 +02:00
|
|
|
} else if (params.IsAiring === 'false') {
|
2019-11-06 13:43:39 +03:00
|
|
|
query.IsAiring = false;
|
|
|
|
}
|
|
|
|
|
|
|
|
return modifyQueryWithFilters(instance, query);
|
2018-10-23 01:05:09 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
function modifyQueryWithFilters(instance, query) {
|
2020-07-28 21:28:16 +01:00
|
|
|
const sortValues = instance.getSortValues();
|
2019-11-06 13:43:39 +03:00
|
|
|
|
|
|
|
if (!query.SortBy) {
|
|
|
|
query.SortBy = sortValues.sortBy;
|
|
|
|
query.SortOrder = sortValues.sortOrder;
|
|
|
|
}
|
|
|
|
|
2020-05-04 12:44:12 +02:00
|
|
|
query.Fields = query.Fields ? query.Fields + ',PrimaryImageAspectRatio' : 'PrimaryImageAspectRatio';
|
2019-11-06 13:43:39 +03:00
|
|
|
query.ImageTypeLimit = 1;
|
2020-07-28 21:28:16 +01:00
|
|
|
let hasFilters;
|
|
|
|
const queryFilters = [];
|
|
|
|
const filters = instance.getFilters();
|
2019-11-06 13:43:39 +03:00
|
|
|
|
|
|
|
if (filters.IsPlayed) {
|
2020-05-04 12:44:12 +02:00
|
|
|
queryFilters.push('IsPlayed');
|
2019-11-06 13:43:39 +03:00
|
|
|
hasFilters = true;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (filters.IsUnplayed) {
|
2020-05-04 12:44:12 +02:00
|
|
|
queryFilters.push('IsUnplayed');
|
2019-11-06 13:43:39 +03:00
|
|
|
hasFilters = true;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (filters.IsFavorite) {
|
2020-05-04 12:44:12 +02:00
|
|
|
queryFilters.push('IsFavorite');
|
2019-11-06 13:43:39 +03:00
|
|
|
hasFilters = true;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (filters.IsResumable) {
|
2020-05-04 12:44:12 +02:00
|
|
|
queryFilters.push('IsResumable');
|
2019-11-06 13:43:39 +03:00
|
|
|
hasFilters = true;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (filters.VideoTypes) {
|
|
|
|
hasFilters = true;
|
|
|
|
query.VideoTypes = filters.VideoTypes;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (filters.GenreIds) {
|
|
|
|
hasFilters = true;
|
|
|
|
query.GenreIds = filters.GenreIds;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (filters.Is4K) {
|
|
|
|
query.Is4K = true;
|
|
|
|
hasFilters = true;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (filters.IsHD) {
|
|
|
|
query.IsHD = true;
|
|
|
|
hasFilters = true;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (filters.IsSD) {
|
|
|
|
query.IsHD = false;
|
|
|
|
hasFilters = true;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (filters.Is3D) {
|
|
|
|
query.Is3D = true;
|
|
|
|
hasFilters = true;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (filters.HasSubtitles) {
|
|
|
|
query.HasSubtitles = true;
|
|
|
|
hasFilters = true;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (filters.HasTrailer) {
|
|
|
|
query.HasTrailer = true;
|
|
|
|
hasFilters = true;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (filters.HasSpecialFeature) {
|
|
|
|
query.HasSpecialFeature = true;
|
|
|
|
hasFilters = true;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (filters.HasThemeSong) {
|
|
|
|
query.HasThemeSong = true;
|
|
|
|
hasFilters = true;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (filters.HasThemeVideo) {
|
|
|
|
query.HasThemeVideo = true;
|
|
|
|
hasFilters = true;
|
|
|
|
}
|
|
|
|
|
2020-05-04 12:44:12 +02:00
|
|
|
query.Filters = queryFilters.length ? queryFilters.join(',') : null;
|
2019-11-06 13:43:39 +03:00
|
|
|
instance.setFilterStatus(hasFilters);
|
|
|
|
|
|
|
|
if (instance.alphaPicker) {
|
|
|
|
query.NameStartsWithOrGreater = instance.alphaPicker.value();
|
|
|
|
}
|
|
|
|
|
|
|
|
return query;
|
2018-10-23 01:05:09 +03:00
|
|
|
}
|
|
|
|
|
2020-03-07 17:40:05 +03:00
|
|
|
function setSortButtonIcon(btnSortIcon, icon) {
|
2020-05-04 12:44:12 +02:00
|
|
|
btnSortIcon.classList.remove('arrow_downward');
|
|
|
|
btnSortIcon.classList.remove('arrow_upward');
|
2020-03-07 17:40:05 +03:00
|
|
|
btnSortIcon.classList.add(icon);
|
|
|
|
}
|
|
|
|
|
2018-10-23 01:05:09 +03:00
|
|
|
function updateSortText(instance) {
|
2020-07-28 21:28:16 +01:00
|
|
|
const btnSortText = instance.btnSortText;
|
2019-11-06 13:43:39 +03:00
|
|
|
|
2018-10-23 01:05:09 +03:00
|
|
|
if (btnSortText) {
|
2020-07-28 21:28:16 +01:00
|
|
|
const options = instance.getSortMenuOptions();
|
|
|
|
const values = instance.getSortValues();
|
|
|
|
const sortBy = values.sortBy;
|
2019-11-06 13:43:39 +03:00
|
|
|
|
2020-08-07 09:27:11 +01:00
|
|
|
for (const option of options) {
|
|
|
|
if (sortBy === option.value) {
|
|
|
|
btnSortText.innerHTML = globalize.translate('SortByValue', option.name);
|
2019-11-06 13:43:39 +03:00
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2020-07-28 21:28:16 +01:00
|
|
|
const btnSortIcon = instance.btnSortIcon;
|
2019-11-06 13:43:39 +03:00
|
|
|
|
|
|
|
if (btnSortIcon) {
|
2020-07-30 16:07:13 +02:00
|
|
|
setSortButtonIcon(btnSortIcon, values.sortOrder === 'Descending' ? 'arrow_downward' : 'arrow_upward');
|
2019-11-06 13:43:39 +03:00
|
|
|
}
|
2018-10-23 01:05:09 +03:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
function updateItemsContainerForViewType(instance) {
|
2020-07-30 16:07:13 +02:00
|
|
|
if (instance.getViewSettings().imageType === 'list') {
|
2020-05-04 12:44:12 +02:00
|
|
|
instance.itemsContainer.classList.remove('vertical-wrap');
|
|
|
|
instance.itemsContainer.classList.add('vertical-list');
|
2019-11-06 13:43:39 +03:00
|
|
|
} else {
|
2020-05-04 12:44:12 +02:00
|
|
|
instance.itemsContainer.classList.add('vertical-wrap');
|
|
|
|
instance.itemsContainer.classList.remove('vertical-list');
|
2019-11-06 13:43:39 +03:00
|
|
|
}
|
2018-10-23 01:05:09 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
function updateAlphaPickerState(instance, numItems) {
|
|
|
|
if (instance.alphaPicker) {
|
2020-07-28 21:28:16 +01:00
|
|
|
const alphaPicker = instance.alphaPickerElement;
|
2019-11-06 13:43:39 +03:00
|
|
|
|
2018-10-23 01:05:09 +03:00
|
|
|
if (alphaPicker) {
|
2020-07-28 21:28:16 +01:00
|
|
|
const values = instance.getSortValues();
|
2019-11-06 13:43:39 +03:00
|
|
|
|
2020-07-30 16:07:13 +02:00
|
|
|
if (numItems == null) {
|
2019-11-06 13:43:39 +03:00
|
|
|
numItems = 100;
|
|
|
|
}
|
|
|
|
|
2020-07-30 16:07:13 +02:00
|
|
|
if (values.sortBy === 'SortName' && values.sortOrder === 'Ascending' && numItems > 40) {
|
2020-05-04 12:44:12 +02:00
|
|
|
alphaPicker.classList.remove('hide');
|
|
|
|
instance.itemsContainer.parentNode.classList.add('padded-right-withalphapicker');
|
2019-11-06 13:43:39 +03:00
|
|
|
} else {
|
2020-05-04 12:44:12 +02:00
|
|
|
alphaPicker.classList.add('hide');
|
|
|
|
instance.itemsContainer.parentNode.classList.remove('padded-right-withalphapicker');
|
2019-11-06 13:43:39 +03:00
|
|
|
}
|
2018-10-23 01:05:09 +03:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
function getItems(instance, params, item, sortBy, startIndex, limit) {
|
2020-08-30 06:06:47 +02:00
|
|
|
const apiClient = window.connectionManager.getApiClient(params.serverId);
|
2019-11-06 13:43:39 +03:00
|
|
|
|
|
|
|
instance.queryRecursive = false;
|
2020-07-30 16:07:13 +02:00
|
|
|
if (params.type === 'Recordings') {
|
2019-11-06 13:43:39 +03:00
|
|
|
return apiClient.getLiveTvRecordings(getInitialLiveTvQuery(instance, params));
|
|
|
|
}
|
|
|
|
|
2020-07-30 16:07:13 +02:00
|
|
|
if (params.type === 'Programs') {
|
|
|
|
if (params.IsAiring === 'true') {
|
2019-11-06 13:43:39 +03:00
|
|
|
return apiClient.getLiveTvRecommendedPrograms(getInitialLiveTvQuery(instance, params));
|
|
|
|
}
|
|
|
|
|
|
|
|
return apiClient.getLiveTvPrograms(getInitialLiveTvQuery(instance, params));
|
|
|
|
}
|
|
|
|
|
2020-07-30 16:07:13 +02:00
|
|
|
if (params.type === 'nextup') {
|
2019-11-06 13:43:39 +03:00
|
|
|
return apiClient.getNextUpEpisodes(modifyQueryWithFilters(instance, {
|
|
|
|
Limit: limit,
|
2020-05-04 12:44:12 +02:00
|
|
|
Fields: 'PrimaryImageAspectRatio,SeriesInfo,DateCreated,BasicSyncInfo',
|
2019-11-06 13:43:39 +03:00
|
|
|
UserId: apiClient.getCurrentUserId(),
|
|
|
|
ImageTypeLimit: 1,
|
2020-05-04 12:44:12 +02:00
|
|
|
EnableImageTypes: 'Primary,Backdrop,Thumb',
|
2019-11-06 13:43:39 +03:00
|
|
|
EnableTotalRecordCount: false,
|
|
|
|
SortBy: sortBy
|
|
|
|
}));
|
|
|
|
}
|
|
|
|
|
2018-10-23 01:05:09 +03:00
|
|
|
if (!item) {
|
2019-11-06 13:43:39 +03:00
|
|
|
instance.queryRecursive = true;
|
2020-07-28 21:28:16 +01:00
|
|
|
let method = 'getItems';
|
2019-11-06 13:43:39 +03:00
|
|
|
|
2020-07-30 16:07:13 +02:00
|
|
|
if (params.type === 'MusicArtist') {
|
2020-05-04 12:44:12 +02:00
|
|
|
method = 'getArtists';
|
2020-07-30 16:07:13 +02:00
|
|
|
} else if (params.type === 'Person') {
|
2020-05-04 12:44:12 +02:00
|
|
|
method = 'getPeople';
|
2019-11-06 13:43:39 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
return apiClient[method](apiClient.getCurrentUserId(), modifyQueryWithFilters(instance, {
|
2018-10-23 01:05:09 +03:00
|
|
|
StartIndex: startIndex,
|
|
|
|
Limit: limit,
|
2020-05-04 12:44:12 +02:00
|
|
|
Fields: 'PrimaryImageAspectRatio,SortName',
|
2018-10-23 01:05:09 +03:00
|
|
|
ImageTypeLimit: 1,
|
2020-07-30 16:07:13 +02:00
|
|
|
IncludeItemTypes: params.type === 'MusicArtist' || params.type === 'Person' ? null : params.type,
|
2019-11-06 13:43:39 +03:00
|
|
|
Recursive: true,
|
2020-07-30 16:07:13 +02:00
|
|
|
IsFavorite: params.IsFavorite === 'true' || null,
|
2018-10-23 01:05:09 +03:00
|
|
|
ArtistIds: params.artistId || null,
|
|
|
|
SortBy: sortBy
|
2019-11-06 13:43:39 +03:00
|
|
|
}));
|
2018-10-23 01:05:09 +03:00
|
|
|
}
|
2019-11-06 13:43:39 +03:00
|
|
|
|
2020-07-30 16:07:13 +02:00
|
|
|
if (item.Type === 'Genre' || item.Type === 'MusicGenre' || item.Type === 'Studio' || item.Type === 'Person') {
|
2019-11-06 13:43:39 +03:00
|
|
|
instance.queryRecursive = true;
|
2020-07-28 21:28:16 +01:00
|
|
|
const query = {
|
2018-10-23 01:05:09 +03:00
|
|
|
StartIndex: startIndex,
|
|
|
|
Limit: limit,
|
2020-05-04 12:44:12 +02:00
|
|
|
Fields: 'PrimaryImageAspectRatio,SortName',
|
2019-11-06 13:43:39 +03:00
|
|
|
Recursive: true,
|
2018-10-23 01:05:09 +03:00
|
|
|
parentId: params.parentId,
|
|
|
|
SortBy: sortBy
|
|
|
|
};
|
2019-11-06 13:43:39 +03:00
|
|
|
|
2020-07-30 16:07:13 +02:00
|
|
|
if (item.Type === 'Studio') {
|
2019-11-06 13:43:39 +03:00
|
|
|
query.StudioIds = item.Id;
|
2020-07-30 16:07:13 +02:00
|
|
|
} else if (item.Type === 'Genre' || item.Type === 'MusicGenre') {
|
2019-11-06 13:43:39 +03:00
|
|
|
query.GenreIds = item.Id;
|
2020-07-30 16:07:13 +02:00
|
|
|
} else if (item.Type === 'Person') {
|
2019-11-06 13:43:39 +03:00
|
|
|
query.PersonIds = item.Id;
|
|
|
|
}
|
|
|
|
|
2020-07-30 16:07:13 +02:00
|
|
|
if (item.Type === 'MusicGenre') {
|
2020-05-04 12:44:12 +02:00
|
|
|
query.IncludeItemTypes = 'MusicAlbum';
|
2020-07-30 16:07:13 +02:00
|
|
|
} else if (item.Type === 'GameGenre') {
|
2020-05-04 12:44:12 +02:00
|
|
|
query.IncludeItemTypes = 'Game';
|
2020-07-30 16:07:13 +02:00
|
|
|
} else if (item.CollectionType === 'movies') {
|
2020-05-04 12:44:12 +02:00
|
|
|
query.IncludeItemTypes = 'Movie';
|
2020-07-30 16:07:13 +02:00
|
|
|
} else if (item.CollectionType === 'tvshows') {
|
2020-05-04 12:44:12 +02:00
|
|
|
query.IncludeItemTypes = 'Series';
|
2020-07-30 16:07:13 +02:00
|
|
|
} else if (item.Type === 'Genre') {
|
2020-05-04 12:44:12 +02:00
|
|
|
query.IncludeItemTypes = 'Movie,Series,Video';
|
2020-07-30 16:07:13 +02:00
|
|
|
} else if (item.Type === 'Person') {
|
2019-11-06 13:43:39 +03:00
|
|
|
query.IncludeItemTypes = params.type;
|
|
|
|
}
|
|
|
|
|
|
|
|
return apiClient.getItems(apiClient.getCurrentUserId(), modifyQueryWithFilters(instance, query));
|
2018-10-23 01:05:09 +03:00
|
|
|
}
|
2019-11-06 13:43:39 +03:00
|
|
|
|
2018-10-23 01:05:09 +03:00
|
|
|
return apiClient.getItems(apiClient.getCurrentUserId(), modifyQueryWithFilters(instance, {
|
|
|
|
StartIndex: startIndex,
|
|
|
|
Limit: limit,
|
2020-05-30 13:15:49 +02:00
|
|
|
Fields: 'PrimaryImageAspectRatio,SortName,Path',
|
2018-10-23 01:05:09 +03:00
|
|
|
ImageTypeLimit: 1,
|
|
|
|
ParentId: item.Id,
|
|
|
|
SortBy: sortBy
|
2019-11-06 13:43:39 +03:00
|
|
|
}));
|
2018-10-23 01:05:09 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
function getItem(params) {
|
2020-07-30 16:07:13 +02:00
|
|
|
if (params.type === 'Recordings' || params.type === 'Programs' || params.type === 'nextup') {
|
2019-11-06 13:43:39 +03:00
|
|
|
return Promise.resolve(null);
|
|
|
|
}
|
|
|
|
|
2020-08-30 06:06:47 +02:00
|
|
|
const apiClient = window.connectionManager.getApiClient(params.serverId);
|
2020-07-28 21:28:16 +01:00
|
|
|
const itemId = params.genreId || params.musicGenreId || params.studioId || params.personId || params.parentId;
|
2019-11-06 13:43:39 +03:00
|
|
|
|
|
|
|
if (itemId) {
|
|
|
|
return apiClient.getItem(apiClient.getCurrentUserId(), itemId);
|
|
|
|
}
|
|
|
|
|
|
|
|
return Promise.resolve(null);
|
2018-10-23 01:05:09 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
function showViewSettingsMenu() {
|
2020-07-28 21:28:16 +01:00
|
|
|
const instance = this;
|
2019-11-06 13:43:39 +03:00
|
|
|
|
2020-07-28 21:28:16 +01:00
|
|
|
import('viewSettings').then(({default: ViewSettings}) => {
|
2019-11-06 13:43:39 +03:00
|
|
|
new ViewSettings().show({
|
2018-10-23 01:05:09 +03:00
|
|
|
settingsKey: instance.getSettingsKey(),
|
|
|
|
settings: instance.getViewSettings(),
|
|
|
|
visibleSettings: instance.getVisibleViewSettings()
|
2019-11-06 13:43:39 +03:00
|
|
|
}).then(function () {
|
|
|
|
updateItemsContainerForViewType(instance);
|
|
|
|
instance.itemsContainer.refreshItems();
|
|
|
|
});
|
|
|
|
});
|
2018-10-23 01:05:09 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
function showFilterMenu() {
|
2020-07-28 21:28:16 +01:00
|
|
|
const instance = this;
|
2019-11-06 13:43:39 +03:00
|
|
|
|
2020-07-28 21:28:16 +01:00
|
|
|
import('filterMenu').then(({default: FilterMenu}) => {
|
2019-11-06 13:43:39 +03:00
|
|
|
new FilterMenu().show({
|
2018-10-23 01:05:09 +03:00
|
|
|
settingsKey: instance.getSettingsKey(),
|
|
|
|
settings: instance.getFilters(),
|
|
|
|
visibleSettings: instance.getVisibleFilters(),
|
|
|
|
onChange: instance.itemsContainer.refreshItems.bind(instance.itemsContainer),
|
|
|
|
parentId: instance.params.parentId,
|
|
|
|
itemTypes: instance.getItemTypes(),
|
|
|
|
serverId: instance.params.serverId,
|
|
|
|
filterMenuOptions: instance.getFilterMenuOptions()
|
2019-11-06 13:43:39 +03:00
|
|
|
}).then(function () {
|
|
|
|
instance.itemsContainer.refreshItems();
|
|
|
|
});
|
|
|
|
});
|
2018-10-23 01:05:09 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
function showSortMenu() {
|
2020-07-28 21:28:16 +01:00
|
|
|
const instance = this;
|
2019-11-06 13:43:39 +03:00
|
|
|
|
2020-07-28 21:28:16 +01:00
|
|
|
import('sortMenu').then(({default: SortMenu}) => {
|
2019-11-06 13:43:39 +03:00
|
|
|
new SortMenu().show({
|
2018-10-23 01:05:09 +03:00
|
|
|
settingsKey: instance.getSettingsKey(),
|
|
|
|
settings: instance.getSortValues(),
|
|
|
|
onChange: instance.itemsContainer.refreshItems.bind(instance.itemsContainer),
|
|
|
|
serverId: instance.params.serverId,
|
|
|
|
sortOptions: instance.getSortMenuOptions()
|
2019-11-06 13:43:39 +03:00
|
|
|
}).then(function () {
|
|
|
|
updateSortText(instance);
|
|
|
|
updateAlphaPickerState(instance);
|
|
|
|
instance.itemsContainer.refreshItems();
|
|
|
|
});
|
|
|
|
});
|
2018-10-23 01:05:09 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
function onNewItemClick() {
|
2020-07-28 21:28:16 +01:00
|
|
|
const instance = this;
|
2019-11-06 13:43:39 +03:00
|
|
|
|
2020-07-28 21:28:16 +01:00
|
|
|
import('playlistEditor').then(({default: playlistEditor}) => {
|
2020-08-07 23:13:54 +01:00
|
|
|
new playlistEditor({
|
2018-10-23 01:05:09 +03:00
|
|
|
items: [],
|
|
|
|
serverId: instance.params.serverId
|
2019-11-06 13:43:39 +03:00
|
|
|
});
|
|
|
|
});
|
2018-10-23 01:05:09 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
function hideOrShowAll(elems, hide) {
|
2020-08-07 09:27:11 +01:00
|
|
|
for (const elem of elems) {
|
2019-11-06 13:43:39 +03:00
|
|
|
if (hide) {
|
2020-08-07 09:27:11 +01:00
|
|
|
elem.classList.add('hide');
|
2019-11-06 13:43:39 +03:00
|
|
|
} else {
|
2020-08-07 09:27:11 +01:00
|
|
|
elem.classList.remove('hide');
|
2019-11-06 13:43:39 +03:00
|
|
|
}
|
|
|
|
}
|
2018-10-23 01:05:09 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
function bindAll(elems, eventName, fn) {
|
2020-08-07 09:27:11 +01:00
|
|
|
for (const elem of elems) {
|
|
|
|
elem.addEventListener(eventName, fn);
|
2019-11-06 13:43:39 +03:00
|
|
|
}
|
2018-10-23 01:05:09 +03:00
|
|
|
}
|
|
|
|
|
2020-07-28 21:28:16 +01:00
|
|
|
class ItemsView {
|
|
|
|
constructor(view, params) {
|
2018-10-23 01:05:09 +03:00
|
|
|
function fetchData() {
|
2019-11-06 13:43:39 +03:00
|
|
|
return getItems(self, params, self.currentItem).then(function (result) {
|
2020-07-30 16:07:13 +02:00
|
|
|
if (self.totalItemCount == null) {
|
2019-11-06 13:43:39 +03:00
|
|
|
self.totalItemCount = result.Items ? result.Items.length : result.length;
|
|
|
|
}
|
|
|
|
|
|
|
|
updateAlphaPickerState(self, self.totalItemCount);
|
|
|
|
return result;
|
|
|
|
});
|
2018-10-23 01:05:09 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
function getItemsHtml(items) {
|
2020-07-28 21:28:16 +01:00
|
|
|
const settings = self.getViewSettings();
|
2019-11-06 13:43:39 +03:00
|
|
|
|
2020-07-30 16:07:13 +02:00
|
|
|
if (settings.imageType === 'list') {
|
2019-11-06 13:43:39 +03:00
|
|
|
return listView.getListViewHtml({
|
|
|
|
items: items
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
2020-07-28 21:28:16 +01:00
|
|
|
let shape;
|
|
|
|
let preferThumb;
|
|
|
|
let preferDisc;
|
|
|
|
let preferLogo;
|
|
|
|
let defaultShape;
|
|
|
|
const item = self.currentItem;
|
|
|
|
let lines = settings.showTitle ? 2 : 0;
|
2019-11-06 13:43:39 +03:00
|
|
|
|
2020-07-30 16:07:13 +02:00
|
|
|
if (settings.imageType === 'banner') {
|
2020-05-04 12:44:12 +02:00
|
|
|
shape = 'banner';
|
2020-07-30 16:07:13 +02:00
|
|
|
} else if (settings.imageType === 'disc') {
|
2020-05-04 12:44:12 +02:00
|
|
|
shape = 'square';
|
2019-11-06 13:43:39 +03:00
|
|
|
preferDisc = true;
|
2020-07-30 16:07:13 +02:00
|
|
|
} else if (settings.imageType === 'logo') {
|
2020-05-04 12:44:12 +02:00
|
|
|
shape = 'backdrop';
|
2019-11-06 13:43:39 +03:00
|
|
|
preferLogo = true;
|
2020-07-30 16:07:13 +02:00
|
|
|
} else if (settings.imageType === 'thumb') {
|
2020-05-04 12:44:12 +02:00
|
|
|
shape = 'backdrop';
|
2019-11-06 13:43:39 +03:00
|
|
|
preferThumb = true;
|
2020-07-30 16:07:13 +02:00
|
|
|
} else if (params.type === 'nextup') {
|
2020-05-04 12:44:12 +02:00
|
|
|
shape = 'backdrop';
|
2020-07-30 16:07:13 +02:00
|
|
|
preferThumb = settings.imageType === 'thumb';
|
|
|
|
} else if (params.type === 'Programs' || params.type === 'Recordings') {
|
|
|
|
shape = params.IsMovie === 'true' ? 'portrait' : 'autoVertical';
|
|
|
|
preferThumb = params.IsMovie !== 'true' ? 'auto' : false;
|
|
|
|
defaultShape = params.IsMovie === 'true' ? 'portrait' : 'backdrop';
|
2019-11-06 13:43:39 +03:00
|
|
|
} else {
|
2020-05-04 12:44:12 +02:00
|
|
|
shape = 'autoVertical';
|
2019-11-06 13:43:39 +03:00
|
|
|
}
|
|
|
|
|
2020-07-28 21:28:16 +01:00
|
|
|
let posterOptions = {
|
2018-10-23 01:05:09 +03:00
|
|
|
shape: shape,
|
|
|
|
showTitle: settings.showTitle,
|
|
|
|
showYear: settings.showTitle,
|
2019-11-06 13:43:39 +03:00
|
|
|
centerText: true,
|
|
|
|
coverImage: true,
|
2018-10-23 01:05:09 +03:00
|
|
|
preferThumb: preferThumb,
|
|
|
|
preferDisc: preferDisc,
|
|
|
|
preferLogo: preferLogo,
|
2019-11-06 13:43:39 +03:00
|
|
|
overlayPlayButton: false,
|
|
|
|
overlayMoreButton: true,
|
2018-10-23 01:05:09 +03:00
|
|
|
overlayText: !settings.showTitle,
|
|
|
|
defaultShape: defaultShape,
|
2020-07-30 16:07:13 +02:00
|
|
|
action: params.type === 'Audio' ? 'playallfromhere' : null
|
2018-10-23 01:05:09 +03:00
|
|
|
};
|
2019-11-06 13:43:39 +03:00
|
|
|
|
2020-07-30 16:07:13 +02:00
|
|
|
if (params.type === 'nextup') {
|
2019-11-06 13:43:39 +03:00
|
|
|
posterOptions.showParentTitle = settings.showTitle;
|
2020-07-30 16:07:13 +02:00
|
|
|
} else if (params.type === 'Person') {
|
2019-11-06 13:43:39 +03:00
|
|
|
posterOptions.showYear = false;
|
|
|
|
posterOptions.showParentTitle = false;
|
|
|
|
lines = 1;
|
2020-07-30 16:07:13 +02:00
|
|
|
} else if (params.type === 'Audio') {
|
2019-11-06 13:43:39 +03:00
|
|
|
posterOptions.showParentTitle = settings.showTitle;
|
2020-07-30 16:07:13 +02:00
|
|
|
} else if (params.type === 'MusicAlbum') {
|
2019-11-06 13:43:39 +03:00
|
|
|
posterOptions.showParentTitle = settings.showTitle;
|
2020-07-30 16:07:13 +02:00
|
|
|
} else if (params.type === 'Episode') {
|
2019-11-06 13:43:39 +03:00
|
|
|
posterOptions.showParentTitle = settings.showTitle;
|
2020-07-30 16:07:13 +02:00
|
|
|
} else if (params.type === 'MusicArtist') {
|
2019-11-06 13:43:39 +03:00
|
|
|
posterOptions.showYear = false;
|
|
|
|
lines = 1;
|
2020-07-30 16:07:13 +02:00
|
|
|
} else if (params.type === 'Programs') {
|
2018-10-23 01:05:09 +03:00
|
|
|
lines = settings.showTitle ? 1 : 0;
|
2020-08-02 18:00:52 +01:00
|
|
|
const showParentTitle = settings.showTitle && params.IsMovie !== 'true';
|
2019-11-06 13:43:39 +03:00
|
|
|
|
|
|
|
if (showParentTitle) {
|
|
|
|
lines++;
|
|
|
|
}
|
|
|
|
|
2020-08-02 18:00:52 +01:00
|
|
|
const showAirTime = settings.showTitle && params.type !== 'Recordings';
|
2019-11-06 13:43:39 +03:00
|
|
|
|
|
|
|
if (showAirTime) {
|
|
|
|
lines++;
|
|
|
|
}
|
|
|
|
|
2020-08-02 18:00:52 +01:00
|
|
|
const showYear = settings.showTitle && params.IsMovie === 'true' && params.type === 'Recordings';
|
2020-08-02 18:06:40 +01:00
|
|
|
|
2019-11-06 13:43:39 +03:00
|
|
|
if (showYear) {
|
|
|
|
lines++;
|
|
|
|
}
|
|
|
|
|
|
|
|
posterOptions = Object.assign(posterOptions, {
|
2020-07-30 16:07:13 +02:00
|
|
|
inheritThumb: params.type === 'Recordings',
|
2020-05-04 12:44:12 +02:00
|
|
|
context: 'livetv',
|
2018-10-23 01:05:09 +03:00
|
|
|
showParentTitle: showParentTitle,
|
|
|
|
showAirTime: showAirTime,
|
|
|
|
showAirDateTime: showAirTime,
|
2019-11-06 13:43:39 +03:00
|
|
|
overlayPlayButton: false,
|
|
|
|
overlayMoreButton: true,
|
2018-10-23 01:05:09 +03:00
|
|
|
showYear: showYear,
|
2019-11-06 13:43:39 +03:00
|
|
|
coverImage: true
|
|
|
|
});
|
|
|
|
} else {
|
|
|
|
posterOptions.showParentTitle = settings.showTitle;
|
|
|
|
}
|
|
|
|
|
|
|
|
posterOptions.lines = lines;
|
|
|
|
posterOptions.items = items;
|
|
|
|
|
2020-07-30 16:07:13 +02:00
|
|
|
if (item && item.CollectionType === 'folders') {
|
2020-05-04 12:44:12 +02:00
|
|
|
posterOptions.context = 'folders';
|
2019-11-06 13:43:39 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
return cardBuilder.getCardsHtml(posterOptions);
|
2018-10-23 01:05:09 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
function initAlphaPicker() {
|
2020-05-04 12:44:12 +02:00
|
|
|
self.scroller = view.querySelector('.scrollFrameY');
|
2020-07-28 21:28:16 +01:00
|
|
|
const alphaPickerElement = self.alphaPickerElement;
|
2019-11-06 13:43:39 +03:00
|
|
|
|
2020-05-04 12:44:12 +02:00
|
|
|
alphaPickerElement.classList.add('alphaPicker-fixed-right');
|
|
|
|
alphaPickerElement.classList.add('focuscontainer-right');
|
|
|
|
self.itemsContainer.parentNode.classList.add('padded-right-withalphapicker');
|
2019-11-06 13:43:39 +03:00
|
|
|
|
2020-08-02 17:58:21 +01:00
|
|
|
self.alphaPicker = new AlphaPicker({
|
2018-10-23 01:05:09 +03:00
|
|
|
element: alphaPickerElement,
|
|
|
|
itemsContainer: layoutManager.tv ? self.itemsContainer : null,
|
2020-05-04 12:44:12 +02:00
|
|
|
itemClass: 'card',
|
|
|
|
valueChangeEvent: layoutManager.tv ? null : 'click'
|
2019-11-06 13:43:39 +03:00
|
|
|
});
|
2020-05-04 12:44:12 +02:00
|
|
|
self.alphaPicker.on('alphavaluechanged', onAlphaPickerValueChanged);
|
2018-10-23 01:05:09 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
function onAlphaPickerValueChanged() {
|
|
|
|
self.alphaPicker.value();
|
2019-11-06 13:43:39 +03:00
|
|
|
self.itemsContainer.refreshItems();
|
2018-10-23 01:05:09 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
function setTitle(item) {
|
2020-05-04 12:44:12 +02:00
|
|
|
Emby.Page.setTitle(getTitle(item) || '');
|
2019-11-06 13:43:39 +03:00
|
|
|
|
2020-07-30 16:07:13 +02:00
|
|
|
if (item && item.CollectionType === 'playlists') {
|
2020-05-04 12:44:12 +02:00
|
|
|
hideOrShowAll(view.querySelectorAll('.btnNewItem'), false);
|
2019-11-06 13:43:39 +03:00
|
|
|
} else {
|
2020-05-04 12:44:12 +02:00
|
|
|
hideOrShowAll(view.querySelectorAll('.btnNewItem'), true);
|
2019-11-06 13:43:39 +03:00
|
|
|
}
|
2018-10-23 01:05:09 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
function getTitle(item) {
|
2020-07-30 16:07:13 +02:00
|
|
|
if (params.type === 'Recordings') {
|
2020-05-04 12:44:12 +02:00
|
|
|
return globalize.translate('Recordings');
|
2019-11-06 13:43:39 +03:00
|
|
|
}
|
|
|
|
|
2020-07-30 16:07:13 +02:00
|
|
|
if (params.type === 'Programs') {
|
|
|
|
if (params.IsMovie === 'true') {
|
2020-05-04 12:44:12 +02:00
|
|
|
return globalize.translate('Movies');
|
2019-11-06 13:43:39 +03:00
|
|
|
}
|
|
|
|
|
2020-07-30 16:07:13 +02:00
|
|
|
if (params.IsSports === 'true') {
|
2020-05-04 12:44:12 +02:00
|
|
|
return globalize.translate('Sports');
|
2019-11-06 13:43:39 +03:00
|
|
|
}
|
|
|
|
|
2020-07-30 16:07:13 +02:00
|
|
|
if (params.IsKids === 'true') {
|
2020-05-04 12:44:12 +02:00
|
|
|
return globalize.translate('HeaderForKids');
|
2019-11-06 13:43:39 +03:00
|
|
|
}
|
|
|
|
|
2020-07-30 16:07:13 +02:00
|
|
|
if (params.IsAiring === 'true') {
|
2020-05-04 12:44:12 +02:00
|
|
|
return globalize.translate('HeaderOnNow');
|
2019-11-06 13:43:39 +03:00
|
|
|
}
|
|
|
|
|
2020-07-30 16:07:13 +02:00
|
|
|
if (params.IsSeries === 'true') {
|
2020-05-04 12:44:12 +02:00
|
|
|
return globalize.translate('Shows');
|
2019-11-06 13:43:39 +03:00
|
|
|
}
|
|
|
|
|
2020-07-30 16:07:13 +02:00
|
|
|
if (params.IsNews === 'true') {
|
2020-05-04 12:44:12 +02:00
|
|
|
return globalize.translate('News');
|
2019-11-06 13:43:39 +03:00
|
|
|
}
|
|
|
|
|
2020-05-04 12:44:12 +02:00
|
|
|
return globalize.translate('Programs');
|
2019-11-06 13:43:39 +03:00
|
|
|
}
|
|
|
|
|
2020-07-30 16:07:13 +02:00
|
|
|
if (params.type === 'nextup') {
|
2020-05-04 12:44:12 +02:00
|
|
|
return globalize.translate('NextUp');
|
2019-11-06 13:43:39 +03:00
|
|
|
}
|
|
|
|
|
2020-07-30 16:07:13 +02:00
|
|
|
if (params.type === 'favoritemovies') {
|
2020-05-04 12:44:12 +02:00
|
|
|
return globalize.translate('FavoriteMovies');
|
2019-11-06 13:43:39 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
if (item) {
|
|
|
|
return item.Name;
|
|
|
|
}
|
|
|
|
|
2020-07-30 16:07:13 +02:00
|
|
|
if (params.type === 'Movie') {
|
2020-05-04 12:44:12 +02:00
|
|
|
return globalize.translate('Movies');
|
2019-11-06 13:43:39 +03:00
|
|
|
}
|
|
|
|
|
2020-07-30 16:07:13 +02:00
|
|
|
if (params.type === 'Series') {
|
2020-05-04 12:44:12 +02:00
|
|
|
return globalize.translate('Shows');
|
2019-11-06 13:43:39 +03:00
|
|
|
}
|
|
|
|
|
2020-07-30 16:07:13 +02:00
|
|
|
if (params.type === 'Season') {
|
2020-05-04 12:44:12 +02:00
|
|
|
return globalize.translate('Seasons');
|
2019-11-06 13:43:39 +03:00
|
|
|
}
|
|
|
|
|
2020-07-30 16:07:13 +02:00
|
|
|
if (params.type === 'Episode') {
|
2020-05-04 12:44:12 +02:00
|
|
|
return globalize.translate('Episodes');
|
2019-11-06 13:43:39 +03:00
|
|
|
}
|
|
|
|
|
2020-07-30 16:07:13 +02:00
|
|
|
if (params.type === 'MusicArtist') {
|
2020-05-04 12:44:12 +02:00
|
|
|
return globalize.translate('Artists');
|
2019-11-06 13:43:39 +03:00
|
|
|
}
|
|
|
|
|
2020-07-30 16:07:13 +02:00
|
|
|
if (params.type === 'MusicAlbum') {
|
2020-05-04 12:44:12 +02:00
|
|
|
return globalize.translate('Albums');
|
2019-11-06 13:43:39 +03:00
|
|
|
}
|
|
|
|
|
2020-07-30 16:07:13 +02:00
|
|
|
if (params.type === 'Audio') {
|
2020-05-04 12:44:12 +02:00
|
|
|
return globalize.translate('Songs');
|
2019-11-06 13:43:39 +03:00
|
|
|
}
|
|
|
|
|
2020-07-30 16:07:13 +02:00
|
|
|
if (params.type === 'Video') {
|
2020-05-04 12:44:12 +02:00
|
|
|
return globalize.translate('Videos');
|
2019-11-06 13:43:39 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
return void 0;
|
2018-10-23 01:05:09 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
function play() {
|
2020-07-28 21:28:16 +01:00
|
|
|
const currentItem = self.currentItem;
|
2019-11-06 13:43:39 +03:00
|
|
|
|
|
|
|
if (currentItem && !self.hasFilters) {
|
2018-10-23 01:05:09 +03:00
|
|
|
playbackManager.play({
|
2019-11-06 13:43:39 +03:00
|
|
|
items: [currentItem]
|
|
|
|
});
|
|
|
|
} else {
|
|
|
|
getItems(self, self.params, currentItem, null, null, 300).then(function (result) {
|
|
|
|
playbackManager.play({
|
|
|
|
items: result.Items
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
2018-10-23 01:05:09 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
function queue() {
|
2020-07-28 21:28:16 +01:00
|
|
|
const currentItem = self.currentItem;
|
2019-11-06 13:43:39 +03:00
|
|
|
|
|
|
|
if (currentItem && !self.hasFilters) {
|
2018-10-23 01:05:09 +03:00
|
|
|
playbackManager.queue({
|
2019-11-06 13:43:39 +03:00
|
|
|
items: [currentItem]
|
|
|
|
});
|
|
|
|
} else {
|
|
|
|
getItems(self, self.params, currentItem, null, null, 300).then(function (result) {
|
|
|
|
playbackManager.queue({
|
|
|
|
items: result.Items
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
2018-10-23 01:05:09 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
function shuffle() {
|
2020-07-28 21:28:16 +01:00
|
|
|
const currentItem = self.currentItem;
|
2019-11-06 13:43:39 +03:00
|
|
|
|
|
|
|
if (currentItem && !self.hasFilters) {
|
|
|
|
playbackManager.shuffle(currentItem);
|
|
|
|
} else {
|
2020-05-04 12:44:12 +02:00
|
|
|
getItems(self, self.params, currentItem, 'Random', null, 300).then(function (result) {
|
2019-11-06 13:43:39 +03:00
|
|
|
playbackManager.play({
|
|
|
|
items: result.Items
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
2018-10-23 01:05:09 +03:00
|
|
|
}
|
2019-11-06 13:43:39 +03:00
|
|
|
|
2020-07-28 21:28:16 +01:00
|
|
|
const self = this;
|
2019-11-06 13:43:39 +03:00
|
|
|
self.params = params;
|
2020-05-04 12:44:12 +02:00
|
|
|
this.itemsContainer = view.querySelector('.itemsContainer');
|
2019-11-06 13:43:39 +03:00
|
|
|
|
|
|
|
if (params.parentId) {
|
2020-05-04 12:44:12 +02:00
|
|
|
this.itemsContainer.setAttribute('data-parentid', params.parentId);
|
2020-07-30 16:07:13 +02:00
|
|
|
} else if (params.type === 'nextup') {
|
2020-05-04 12:44:12 +02:00
|
|
|
this.itemsContainer.setAttribute('data-monitor', 'videoplayback');
|
2020-07-30 16:07:13 +02:00
|
|
|
} else if (params.type === 'favoritemovies') {
|
2020-05-04 12:44:12 +02:00
|
|
|
this.itemsContainer.setAttribute('data-monitor', 'markfavorite');
|
2020-07-30 16:07:13 +02:00
|
|
|
} else if (params.type === 'Programs') {
|
2020-05-04 12:44:12 +02:00
|
|
|
this.itemsContainer.setAttribute('data-refreshinterval', '300000');
|
2019-11-06 13:43:39 +03:00
|
|
|
}
|
|
|
|
|
2020-07-28 21:28:16 +01:00
|
|
|
const btnViewSettings = view.querySelectorAll('.btnViewSettings');
|
2019-11-06 13:43:39 +03:00
|
|
|
|
2020-08-07 09:27:11 +01:00
|
|
|
for (const btnViewSetting of btnViewSettings) {
|
|
|
|
btnViewSetting.addEventListener('click', showViewSettingsMenu.bind(this));
|
2019-11-06 13:43:39 +03:00
|
|
|
}
|
|
|
|
|
2020-07-28 21:28:16 +01:00
|
|
|
const filterButtons = view.querySelectorAll('.btnFilter');
|
2018-10-23 01:05:09 +03:00
|
|
|
this.filterButtons = filterButtons;
|
2020-07-28 21:28:16 +01:00
|
|
|
const hasVisibleFilters = this.getVisibleFilters().length;
|
2019-11-06 13:43:39 +03:00
|
|
|
|
2020-08-07 09:27:11 +01:00
|
|
|
for (const btnFilter of filterButtons) {
|
2020-05-04 12:44:12 +02:00
|
|
|
btnFilter.addEventListener('click', showFilterMenu.bind(this));
|
2019-11-06 13:43:39 +03:00
|
|
|
|
|
|
|
if (hasVisibleFilters) {
|
2020-05-04 12:44:12 +02:00
|
|
|
btnFilter.classList.remove('hide');
|
2019-11-06 13:43:39 +03:00
|
|
|
} else {
|
2020-05-04 12:44:12 +02:00
|
|
|
btnFilter.classList.add('hide');
|
2019-11-06 13:43:39 +03:00
|
|
|
}
|
2018-10-23 01:05:09 +03:00
|
|
|
}
|
2019-11-06 13:43:39 +03:00
|
|
|
|
2020-07-28 21:28:16 +01:00
|
|
|
const sortButtons = view.querySelectorAll('.btnSort');
|
2020-08-07 09:27:11 +01:00
|
|
|
|
|
|
|
this.sortButtons = sortButtons;
|
|
|
|
for (const sortButton of sortButtons) {
|
2020-05-04 12:44:12 +02:00
|
|
|
sortButton.addEventListener('click', showSortMenu.bind(this));
|
2019-11-06 13:43:39 +03:00
|
|
|
|
2020-07-30 16:07:13 +02:00
|
|
|
if (params.type !== 'nextup') {
|
2020-05-04 12:44:12 +02:00
|
|
|
sortButton.classList.remove('hide');
|
2019-11-06 13:43:39 +03:00
|
|
|
}
|
2018-10-23 01:05:09 +03:00
|
|
|
}
|
2019-11-06 13:43:39 +03:00
|
|
|
|
2020-05-04 12:44:12 +02:00
|
|
|
this.btnSortText = view.querySelector('.btnSortText');
|
|
|
|
this.btnSortIcon = view.querySelector('.btnSortIcon');
|
|
|
|
bindAll(view.querySelectorAll('.btnNewItem'), 'click', onNewItemClick.bind(this));
|
|
|
|
this.alphaPickerElement = view.querySelector('.alphaPicker');
|
2019-11-06 13:43:39 +03:00
|
|
|
self.itemsContainer.fetchData = fetchData;
|
|
|
|
self.itemsContainer.getItemsHtml = getItemsHtml;
|
2020-05-04 12:44:12 +02:00
|
|
|
view.addEventListener('viewshow', function (e) {
|
2020-07-28 21:28:16 +01:00
|
|
|
const isRestored = e.detail.isRestored;
|
2019-11-06 13:43:39 +03:00
|
|
|
|
|
|
|
if (!isRestored) {
|
|
|
|
loading.show();
|
|
|
|
updateSortText(self);
|
|
|
|
updateItemsContainerForViewType(self);
|
|
|
|
}
|
|
|
|
|
|
|
|
setTitle(null);
|
|
|
|
getItem(params).then(function (item) {
|
|
|
|
setTitle(item);
|
|
|
|
self.currentItem = item;
|
2020-07-28 21:28:16 +01:00
|
|
|
const refresh = !isRestored;
|
2018-10-23 01:05:09 +03:00
|
|
|
self.itemsContainer.resume({
|
|
|
|
refresh: refresh
|
2019-11-06 13:43:39 +03:00
|
|
|
}).then(function () {
|
|
|
|
loading.hide();
|
|
|
|
|
|
|
|
if (refresh) {
|
|
|
|
focusManager.autoFocus(self.itemsContainer);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
2020-07-30 16:07:13 +02:00
|
|
|
if (!isRestored && item && item.Type !== 'PhotoAlbum') {
|
2019-11-06 13:43:39 +03:00
|
|
|
initAlphaPicker();
|
|
|
|
}
|
|
|
|
|
2020-07-28 21:28:16 +01:00
|
|
|
const itemType = item ? item.Type : null;
|
2019-11-06 13:43:39 +03:00
|
|
|
|
2020-07-30 16:07:13 +02:00
|
|
|
if (itemType === 'MusicGenre' || params.type !== 'Programs' && itemType !== 'Channel') {
|
2020-05-04 12:44:12 +02:00
|
|
|
hideOrShowAll(view.querySelectorAll('.btnPlay'), false);
|
2019-11-06 13:43:39 +03:00
|
|
|
} else {
|
2020-05-04 12:44:12 +02:00
|
|
|
hideOrShowAll(view.querySelectorAll('.btnPlay'), true);
|
2019-11-06 13:43:39 +03:00
|
|
|
}
|
|
|
|
|
2020-07-30 16:07:13 +02:00
|
|
|
if (itemType === 'MusicGenre' || params.type !== 'Programs' && params.type !== 'nextup' && itemType !== 'Channel') {
|
2020-05-04 12:44:12 +02:00
|
|
|
hideOrShowAll(view.querySelectorAll('.btnShuffle'), false);
|
2019-11-06 13:43:39 +03:00
|
|
|
} else {
|
2020-05-04 12:44:12 +02:00
|
|
|
hideOrShowAll(view.querySelectorAll('.btnShuffle'), true);
|
2019-11-06 13:43:39 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
if (item && playbackManager.canQueue(item)) {
|
2020-05-04 12:44:12 +02:00
|
|
|
hideOrShowAll(view.querySelectorAll('.btnQueue'), false);
|
2019-11-06 13:43:39 +03:00
|
|
|
} else {
|
2020-05-04 12:44:12 +02:00
|
|
|
hideOrShowAll(view.querySelectorAll('.btnQueue'), true);
|
2019-11-06 13:43:39 +03:00
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
if (!isRestored) {
|
2020-05-04 12:44:12 +02:00
|
|
|
bindAll(view.querySelectorAll('.btnPlay'), 'click', play);
|
|
|
|
bindAll(view.querySelectorAll('.btnQueue'), 'click', queue);
|
|
|
|
bindAll(view.querySelectorAll('.btnShuffle'), 'click', shuffle);
|
2019-11-06 13:43:39 +03:00
|
|
|
}
|
|
|
|
|
2020-08-02 17:58:21 +01:00
|
|
|
self.alphaNumericShortcuts = new AlphaNumericShortcuts({
|
2018-10-23 01:05:09 +03:00
|
|
|
itemsContainer: self.itemsContainer
|
2019-11-06 13:43:39 +03:00
|
|
|
});
|
|
|
|
});
|
2020-05-04 12:44:12 +02:00
|
|
|
view.addEventListener('viewhide', function (e) {
|
2020-07-28 21:28:16 +01:00
|
|
|
const itemsContainer = self.itemsContainer;
|
2019-11-06 13:43:39 +03:00
|
|
|
|
|
|
|
if (itemsContainer) {
|
|
|
|
itemsContainer.pause();
|
|
|
|
}
|
|
|
|
|
2020-07-28 21:28:16 +01:00
|
|
|
const alphaNumericShortcuts = self.alphaNumericShortcuts;
|
2019-11-06 13:43:39 +03:00
|
|
|
|
|
|
|
if (alphaNumericShortcuts) {
|
2020-07-25 13:42:03 +02:00
|
|
|
alphaNumericShortcuts.destroy();
|
2019-11-06 13:43:39 +03:00
|
|
|
self.alphaNumericShortcuts = null;
|
|
|
|
}
|
|
|
|
});
|
2020-05-04 12:44:12 +02:00
|
|
|
view.addEventListener('viewdestroy', function () {
|
2019-11-06 13:43:39 +03:00
|
|
|
if (self.listController) {
|
|
|
|
self.listController.destroy();
|
|
|
|
}
|
|
|
|
|
|
|
|
if (self.alphaPicker) {
|
2020-05-04 12:44:12 +02:00
|
|
|
self.alphaPicker.off('alphavaluechanged', onAlphaPickerValueChanged);
|
2019-11-06 13:43:39 +03:00
|
|
|
self.alphaPicker.destroy();
|
|
|
|
}
|
|
|
|
|
|
|
|
self.currentItem = null;
|
|
|
|
self.scroller = null;
|
|
|
|
self.itemsContainer = null;
|
|
|
|
self.filterButtons = null;
|
|
|
|
self.sortButtons = null;
|
|
|
|
self.btnSortText = null;
|
|
|
|
self.btnSortIcon = null;
|
|
|
|
self.alphaPickerElement = null;
|
|
|
|
});
|
2018-10-23 01:05:09 +03:00
|
|
|
}
|
2020-08-02 18:06:40 +01:00
|
|
|
|
2020-07-28 21:28:16 +01:00
|
|
|
getFilters() {
|
|
|
|
const basekey = this.getSettingsKey();
|
2018-10-23 01:05:09 +03:00
|
|
|
return {
|
2020-07-30 16:07:13 +02:00
|
|
|
IsPlayed: userSettings.getFilter(basekey + '-filter-IsPlayed') === 'true',
|
|
|
|
IsUnplayed: userSettings.getFilter(basekey + '-filter-IsUnplayed') === 'true',
|
|
|
|
IsFavorite: userSettings.getFilter(basekey + '-filter-IsFavorite') === 'true',
|
|
|
|
IsResumable: userSettings.getFilter(basekey + '-filter-IsResumable') === 'true',
|
|
|
|
Is4K: userSettings.getFilter(basekey + '-filter-Is4K') === 'true',
|
|
|
|
IsHD: userSettings.getFilter(basekey + '-filter-IsHD') === 'true',
|
|
|
|
IsSD: userSettings.getFilter(basekey + '-filter-IsSD') === 'true',
|
|
|
|
Is3D: userSettings.getFilter(basekey + '-filter-Is3D') === 'true',
|
2020-05-04 12:44:12 +02:00
|
|
|
VideoTypes: userSettings.getFilter(basekey + '-filter-VideoTypes'),
|
|
|
|
SeriesStatus: userSettings.getFilter(basekey + '-filter-SeriesStatus'),
|
|
|
|
HasSubtitles: userSettings.getFilter(basekey + '-filter-HasSubtitles'),
|
|
|
|
HasTrailer: userSettings.getFilter(basekey + '-filter-HasTrailer'),
|
|
|
|
HasSpecialFeature: userSettings.getFilter(basekey + '-filter-HasSpecialFeature'),
|
|
|
|
HasThemeSong: userSettings.getFilter(basekey + '-filter-HasThemeSong'),
|
|
|
|
HasThemeVideo: userSettings.getFilter(basekey + '-filter-HasThemeVideo'),
|
|
|
|
GenreIds: userSettings.getFilter(basekey + '-filter-GenreIds')
|
2019-11-06 13:43:39 +03:00
|
|
|
};
|
2020-07-28 21:28:16 +01:00
|
|
|
}
|
2020-08-02 18:06:40 +01:00
|
|
|
|
2020-07-28 21:28:16 +01:00
|
|
|
getSortValues() {
|
|
|
|
const basekey = this.getSettingsKey();
|
2018-10-23 01:05:09 +03:00
|
|
|
return {
|
2020-05-04 12:44:12 +02:00
|
|
|
sortBy: userSettings.getFilter(basekey + '-sortby') || this.getDefaultSortBy(),
|
2020-07-30 16:07:13 +02:00
|
|
|
sortOrder: userSettings.getFilter(basekey + '-sortorder') === 'Descending' ? 'Descending' : 'Ascending'
|
2019-11-06 13:43:39 +03:00
|
|
|
};
|
2020-07-28 21:28:16 +01:00
|
|
|
}
|
2020-08-02 18:06:40 +01:00
|
|
|
|
2020-07-28 21:28:16 +01:00
|
|
|
getDefaultSortBy() {
|
2020-08-07 09:27:11 +01:00
|
|
|
const sortNameOption = this.getNameSortOption(this.params);
|
2019-11-06 13:43:39 +03:00
|
|
|
|
2020-08-07 09:27:11 +01:00
|
|
|
if (this.params.type) {
|
2019-11-06 13:43:39 +03:00
|
|
|
return sortNameOption.value;
|
2018-10-23 01:05:09 +03:00
|
|
|
}
|
2019-11-06 13:43:39 +03:00
|
|
|
|
2020-05-04 12:44:12 +02:00
|
|
|
return 'IsFolder,' + sortNameOption.value;
|
2020-07-28 21:28:16 +01:00
|
|
|
}
|
2020-08-02 18:06:40 +01:00
|
|
|
|
2020-07-28 21:28:16 +01:00
|
|
|
getSortMenuOptions() {
|
|
|
|
const sortBy = [];
|
2019-11-06 13:43:39 +03:00
|
|
|
|
2020-08-07 09:27:11 +01:00
|
|
|
if (this.params.type === 'Programs') {
|
2019-11-06 13:43:39 +03:00
|
|
|
sortBy.push({
|
2020-05-04 12:44:12 +02:00
|
|
|
name: globalize.translate('AirDate'),
|
|
|
|
value: 'StartDate,SortName'
|
2019-11-06 13:43:39 +03:00
|
|
|
});
|
|
|
|
}
|
|
|
|
|
2020-08-07 09:27:11 +01:00
|
|
|
let option = this.getNameSortOption(this.params);
|
2019-11-06 13:43:39 +03:00
|
|
|
|
|
|
|
if (option) {
|
|
|
|
sortBy.push(option);
|
|
|
|
}
|
|
|
|
|
|
|
|
option = this.getCommunityRatingSortOption();
|
|
|
|
|
|
|
|
if (option) {
|
|
|
|
sortBy.push(option);
|
|
|
|
}
|
|
|
|
|
|
|
|
option = this.getCriticRatingSortOption();
|
|
|
|
|
|
|
|
if (option) {
|
|
|
|
sortBy.push(option);
|
|
|
|
}
|
|
|
|
|
2020-08-07 09:27:11 +01:00
|
|
|
if (this.params.type !== 'Programs') {
|
2019-11-06 13:43:39 +03:00
|
|
|
sortBy.push({
|
2020-05-04 12:44:12 +02:00
|
|
|
name: globalize.translate('DateAdded'),
|
|
|
|
value: 'DateCreated,SortName'
|
2019-11-06 13:43:39 +03:00
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
option = this.getDatePlayedSortOption();
|
|
|
|
|
|
|
|
if (option) {
|
|
|
|
sortBy.push(option);
|
|
|
|
}
|
|
|
|
|
2020-08-07 09:27:11 +01:00
|
|
|
if (!this.params.type) {
|
|
|
|
option = this.getNameSortOption(this.params);
|
2019-11-06 13:43:39 +03:00
|
|
|
sortBy.push({
|
2020-05-04 12:44:12 +02:00
|
|
|
name: globalize.translate('Folders'),
|
|
|
|
value: 'IsFolder,' + option.value
|
2019-11-06 13:43:39 +03:00
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
sortBy.push({
|
2020-05-04 12:44:12 +02:00
|
|
|
name: globalize.translate('ParentalRating'),
|
|
|
|
value: 'OfficialRating,SortName'
|
2019-11-06 13:43:39 +03:00
|
|
|
});
|
|
|
|
option = this.getPlayCountSortOption();
|
|
|
|
|
|
|
|
if (option) {
|
|
|
|
sortBy.push(option);
|
|
|
|
}
|
|
|
|
|
|
|
|
sortBy.push({
|
2020-05-04 12:44:12 +02:00
|
|
|
name: globalize.translate('ReleaseDate'),
|
|
|
|
value: 'ProductionYear,PremiereDate,SortName'
|
2019-11-06 13:43:39 +03:00
|
|
|
});
|
|
|
|
sortBy.push({
|
2020-05-04 12:44:12 +02:00
|
|
|
name: globalize.translate('Runtime'),
|
|
|
|
value: 'Runtime,SortName'
|
2019-11-06 13:43:39 +03:00
|
|
|
});
|
|
|
|
return sortBy;
|
2020-07-28 21:28:16 +01:00
|
|
|
}
|
2020-08-02 18:06:40 +01:00
|
|
|
|
2020-07-28 21:28:16 +01:00
|
|
|
getNameSortOption(params) {
|
2020-07-30 16:07:13 +02:00
|
|
|
if (params.type === 'Episode') {
|
2019-11-06 13:43:39 +03:00
|
|
|
return {
|
2020-05-04 12:44:12 +02:00
|
|
|
name: globalize.translate('Name'),
|
|
|
|
value: 'SeriesName,SortName'
|
2019-11-06 13:43:39 +03:00
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
return {
|
2020-05-04 12:44:12 +02:00
|
|
|
name: globalize.translate('Name'),
|
|
|
|
value: 'SortName'
|
2019-11-06 13:43:39 +03:00
|
|
|
};
|
2020-07-28 21:28:16 +01:00
|
|
|
}
|
2020-08-02 18:06:40 +01:00
|
|
|
|
2020-07-28 21:28:16 +01:00
|
|
|
getPlayCountSortOption() {
|
2020-07-30 16:07:13 +02:00
|
|
|
if (this.params.type === 'Programs') {
|
2019-11-06 13:43:39 +03:00
|
|
|
return null;
|
2018-10-23 01:05:09 +03:00
|
|
|
}
|
2019-11-06 13:43:39 +03:00
|
|
|
|
|
|
|
return {
|
2020-05-04 12:44:12 +02:00
|
|
|
name: globalize.translate('PlayCount'),
|
|
|
|
value: 'PlayCount,SortName'
|
2019-11-06 13:43:39 +03:00
|
|
|
};
|
2020-07-28 21:28:16 +01:00
|
|
|
}
|
2020-08-02 18:06:40 +01:00
|
|
|
|
2020-07-28 21:28:16 +01:00
|
|
|
getDatePlayedSortOption() {
|
2020-07-30 16:07:13 +02:00
|
|
|
if (this.params.type === 'Programs') {
|
2019-11-06 13:43:39 +03:00
|
|
|
return null;
|
2018-10-23 01:05:09 +03:00
|
|
|
}
|
2019-11-06 13:43:39 +03:00
|
|
|
|
|
|
|
return {
|
2020-05-04 12:44:12 +02:00
|
|
|
name: globalize.translate('DatePlayed'),
|
|
|
|
value: 'DatePlayed,SortName'
|
2019-11-06 13:43:39 +03:00
|
|
|
};
|
2020-07-28 21:28:16 +01:00
|
|
|
}
|
2020-08-02 18:06:40 +01:00
|
|
|
|
2020-07-28 21:28:16 +01:00
|
|
|
getCriticRatingSortOption() {
|
2020-08-02 18:00:52 +01:00
|
|
|
if (this.params.type === 'Programs') {
|
2019-11-06 13:43:39 +03:00
|
|
|
return null;
|
2018-10-23 01:05:09 +03:00
|
|
|
}
|
2019-11-06 13:43:39 +03:00
|
|
|
|
|
|
|
return {
|
2020-05-04 12:44:12 +02:00
|
|
|
name: globalize.translate('CriticRating'),
|
|
|
|
value: 'CriticRating,SortName'
|
2019-11-06 13:43:39 +03:00
|
|
|
};
|
2020-07-28 21:28:16 +01:00
|
|
|
}
|
2020-08-02 18:06:40 +01:00
|
|
|
|
2020-07-28 21:28:16 +01:00
|
|
|
getCommunityRatingSortOption() {
|
2018-10-23 01:05:09 +03:00
|
|
|
return {
|
2020-05-04 12:44:12 +02:00
|
|
|
name: globalize.translate('CommunityRating'),
|
|
|
|
value: 'CommunityRating,SortName'
|
2019-11-06 13:43:39 +03:00
|
|
|
};
|
2020-07-28 21:28:16 +01:00
|
|
|
}
|
2020-08-02 18:06:40 +01:00
|
|
|
|
2020-07-28 21:28:16 +01:00
|
|
|
getVisibleFilters() {
|
|
|
|
const filters = [];
|
|
|
|
const params = this.params;
|
2019-11-06 13:43:39 +03:00
|
|
|
|
2020-07-30 16:07:13 +02:00
|
|
|
if (!(params.type === 'nextup')) {
|
|
|
|
if (params.type === 'Programs') {
|
2020-05-04 12:44:12 +02:00
|
|
|
filters.push('Genres');
|
2019-11-06 13:43:39 +03:00
|
|
|
} else {
|
2020-05-04 12:44:12 +02:00
|
|
|
filters.push('IsUnplayed');
|
|
|
|
filters.push('IsPlayed');
|
2019-11-06 13:43:39 +03:00
|
|
|
|
|
|
|
if (!params.IsFavorite) {
|
2020-05-04 12:44:12 +02:00
|
|
|
filters.push('IsFavorite');
|
2019-11-06 13:43:39 +03:00
|
|
|
}
|
|
|
|
|
2020-05-04 12:44:12 +02:00
|
|
|
filters.push('IsResumable');
|
|
|
|
filters.push('VideoType');
|
|
|
|
filters.push('HasSubtitles');
|
|
|
|
filters.push('HasTrailer');
|
|
|
|
filters.push('HasSpecialFeature');
|
|
|
|
filters.push('HasThemeSong');
|
|
|
|
filters.push('HasThemeVideo');
|
2019-11-06 13:43:39 +03:00
|
|
|
}
|
2018-10-23 01:05:09 +03:00
|
|
|
}
|
2019-11-06 13:43:39 +03:00
|
|
|
|
|
|
|
return filters;
|
2020-07-28 21:28:16 +01:00
|
|
|
}
|
2020-08-02 18:06:40 +01:00
|
|
|
|
2020-07-28 21:28:16 +01:00
|
|
|
setFilterStatus(hasFilters) {
|
2018-10-23 01:05:09 +03:00
|
|
|
this.hasFilters = hasFilters;
|
2020-07-28 21:28:16 +01:00
|
|
|
const filterButtons = this.filterButtons;
|
2019-11-06 13:43:39 +03:00
|
|
|
|
|
|
|
if (filterButtons.length) {
|
2020-08-07 09:27:11 +01:00
|
|
|
for (const btnFilter of filterButtons) {
|
2020-07-28 21:28:16 +01:00
|
|
|
let bubble = btnFilter.querySelector('.filterButtonBubble');
|
2019-11-06 13:43:39 +03:00
|
|
|
|
2018-10-23 01:05:09 +03:00
|
|
|
if (!bubble) {
|
2019-11-06 13:43:39 +03:00
|
|
|
if (!hasFilters) {
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
|
2020-05-04 12:44:12 +02:00
|
|
|
btnFilter.insertAdjacentHTML('afterbegin', '<div class="filterButtonBubble">!</div>');
|
|
|
|
btnFilter.classList.add('btnFilterWithBubble');
|
|
|
|
bubble = btnFilter.querySelector('.filterButtonBubble');
|
2019-11-06 13:43:39 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
if (hasFilters) {
|
2020-05-04 12:44:12 +02:00
|
|
|
bubble.classList.remove('hide');
|
2019-11-06 13:43:39 +03:00
|
|
|
} else {
|
2020-05-04 12:44:12 +02:00
|
|
|
bubble.classList.add('hide');
|
2018-10-23 01:05:09 +03:00
|
|
|
}
|
|
|
|
}
|
2019-11-06 13:43:39 +03:00
|
|
|
}
|
2020-07-28 21:28:16 +01:00
|
|
|
}
|
2020-08-02 18:06:40 +01:00
|
|
|
|
2020-07-28 21:28:16 +01:00
|
|
|
getFilterMenuOptions() {
|
|
|
|
const params = this.params;
|
2018-10-23 01:05:09 +03:00
|
|
|
return {
|
|
|
|
IsAiring: params.IsAiring,
|
|
|
|
IsMovie: params.IsMovie,
|
|
|
|
IsSports: params.IsSports,
|
|
|
|
IsKids: params.IsKids,
|
|
|
|
IsNews: params.IsNews,
|
|
|
|
IsSeries: params.IsSeries,
|
|
|
|
Recursive: this.queryRecursive
|
2019-11-06 13:43:39 +03:00
|
|
|
};
|
2020-07-28 21:28:16 +01:00
|
|
|
}
|
2020-08-02 18:06:40 +01:00
|
|
|
|
2020-07-28 21:28:16 +01:00
|
|
|
getVisibleViewSettings() {
|
|
|
|
const item = (this.params, this.currentItem);
|
|
|
|
const fields = ['showTitle'];
|
2019-11-06 13:43:39 +03:00
|
|
|
|
2020-07-30 16:07:13 +02:00
|
|
|
if (!item || item.Type !== 'PhotoAlbum' && item.Type !== 'ChannelFolderItem') {
|
2020-05-04 12:44:12 +02:00
|
|
|
fields.push('imageType');
|
2019-11-06 13:43:39 +03:00
|
|
|
}
|
|
|
|
|
2020-05-04 12:44:12 +02:00
|
|
|
fields.push('viewType');
|
2019-11-06 13:43:39 +03:00
|
|
|
return fields;
|
2020-07-28 21:28:16 +01:00
|
|
|
}
|
2020-08-02 18:06:40 +01:00
|
|
|
|
2020-07-28 21:28:16 +01:00
|
|
|
getViewSettings() {
|
|
|
|
const basekey = this.getSettingsKey();
|
|
|
|
const params = this.params;
|
|
|
|
const item = this.currentItem;
|
|
|
|
let showTitle = userSettings.get(basekey + '-showTitle');
|
2019-11-06 13:43:39 +03:00
|
|
|
|
2020-07-30 16:07:13 +02:00
|
|
|
if (showTitle === 'true') {
|
2019-11-06 13:43:39 +03:00
|
|
|
showTitle = true;
|
2020-07-30 16:07:13 +02:00
|
|
|
} else if (showTitle === 'false') {
|
2019-11-06 13:43:39 +03:00
|
|
|
showTitle = false;
|
2020-07-30 16:07:13 +02:00
|
|
|
} else if (params.type === 'Programs' || params.type === 'Recordings' || params.type === 'Person' || params.type === 'nextup' || params.type === 'Audio' || params.type === 'MusicAlbum' || params.type === 'MusicArtist') {
|
2019-11-06 13:43:39 +03:00
|
|
|
showTitle = true;
|
2020-07-30 16:07:13 +02:00
|
|
|
} else if (item && item.Type !== 'PhotoAlbum') {
|
2019-11-06 13:43:39 +03:00
|
|
|
showTitle = true;
|
2018-10-23 01:05:09 +03:00
|
|
|
}
|
2019-11-06 13:43:39 +03:00
|
|
|
|
2020-07-28 21:28:16 +01:00
|
|
|
let imageType = userSettings.get(basekey + '-imageType');
|
2019-11-06 13:43:39 +03:00
|
|
|
|
2020-07-30 16:07:13 +02:00
|
|
|
if (!imageType && params.type === 'nextup') {
|
2020-05-04 12:44:12 +02:00
|
|
|
imageType = 'thumb';
|
2019-11-06 13:43:39 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
return {
|
2018-10-23 01:05:09 +03:00
|
|
|
showTitle: showTitle,
|
2020-07-30 16:07:13 +02:00
|
|
|
showYear: userSettings.get(basekey + '-showYear') !== 'false',
|
2020-05-04 12:44:12 +02:00
|
|
|
imageType: imageType || 'primary',
|
|
|
|
viewType: userSettings.get(basekey + '-viewType') || 'images'
|
2019-11-06 13:43:39 +03:00
|
|
|
};
|
2020-07-28 21:28:16 +01:00
|
|
|
}
|
2020-08-02 18:06:40 +01:00
|
|
|
|
2020-07-28 21:28:16 +01:00
|
|
|
getItemTypes() {
|
|
|
|
const params = this.params;
|
2019-11-06 13:43:39 +03:00
|
|
|
|
2020-07-30 16:07:13 +02:00
|
|
|
if (params.type === 'nextup') {
|
2020-05-04 12:44:12 +02:00
|
|
|
return ['Episode'];
|
2019-11-06 13:43:39 +03:00
|
|
|
}
|
|
|
|
|
2020-07-30 16:07:13 +02:00
|
|
|
if (params.type === 'Programs') {
|
2020-05-04 12:44:12 +02:00
|
|
|
return ['Program'];
|
2019-11-06 13:43:39 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
return [];
|
2020-07-28 21:28:16 +01:00
|
|
|
}
|
2020-08-02 18:06:40 +01:00
|
|
|
|
2020-07-28 21:28:16 +01:00
|
|
|
getSettingsKey() {
|
|
|
|
const values = [];
|
2020-05-04 12:44:12 +02:00
|
|
|
values.push('items');
|
2020-07-28 21:28:16 +01:00
|
|
|
const params = this.params;
|
2019-11-06 13:43:39 +03:00
|
|
|
|
|
|
|
if (params.type) {
|
|
|
|
values.push(params.type);
|
|
|
|
} else if (params.parentId) {
|
|
|
|
values.push(params.parentId);
|
|
|
|
}
|
|
|
|
|
|
|
|
if (params.IsAiring) {
|
2020-05-04 12:44:12 +02:00
|
|
|
values.push('IsAiring');
|
2019-11-06 13:43:39 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
if (params.IsMovie) {
|
2020-05-04 12:44:12 +02:00
|
|
|
values.push('IsMovie');
|
2019-11-06 13:43:39 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
if (params.IsKids) {
|
2020-05-04 12:44:12 +02:00
|
|
|
values.push('IsKids');
|
2019-11-06 13:43:39 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
if (params.IsSports) {
|
2020-05-04 12:44:12 +02:00
|
|
|
values.push('IsSports');
|
2019-11-06 13:43:39 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
if (params.IsNews) {
|
2020-05-04 12:44:12 +02:00
|
|
|
values.push('IsNews');
|
2019-11-06 13:43:39 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
if (params.IsSeries) {
|
2020-05-04 12:44:12 +02:00
|
|
|
values.push('IsSeries');
|
2019-11-06 13:43:39 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
if (params.IsFavorite) {
|
2020-05-04 12:44:12 +02:00
|
|
|
values.push('IsFavorite');
|
2019-11-06 13:43:39 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
if (params.genreId) {
|
2020-05-04 12:44:12 +02:00
|
|
|
values.push('Genre');
|
2019-11-06 13:43:39 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
if (params.musicGenreId) {
|
2020-05-04 12:44:12 +02:00
|
|
|
values.push('MusicGenre');
|
2019-11-06 13:43:39 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
if (params.studioId) {
|
2020-05-04 12:44:12 +02:00
|
|
|
values.push('Studio');
|
2019-11-06 13:43:39 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
if (params.personId) {
|
2020-05-04 12:44:12 +02:00
|
|
|
values.push('Person');
|
2019-11-06 13:43:39 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
if (params.parentId) {
|
2020-05-04 12:44:12 +02:00
|
|
|
values.push('Folder');
|
2019-11-06 13:43:39 +03:00
|
|
|
}
|
|
|
|
|
2020-05-04 12:44:12 +02:00
|
|
|
return values.join('-');
|
2020-07-28 21:28:16 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
export default ItemsView;
|
2019-11-06 13:43:39 +03:00
|
|
|
|
2020-07-28 21:28:16 +01:00
|
|
|
/* eslint-enable indent */
|