diff --git a/src/scripts/itembynamedetailpage.js b/src/scripts/itembynamedetailpage.js
index eaeecba275..f464f3b9e9 100644
--- a/src/scripts/itembynamedetailpage.js
+++ b/src/scripts/itembynamedetailpage.js
@@ -1,369 +1,374 @@
-define(['connectionManager', 'listView', 'cardBuilder', 'imageLoader', 'libraryBrowser', 'globalize', 'emby-itemscontainer', 'emby-button'], function (connectionManager, listView, cardBuilder, imageLoader, libraryBrowser, globalize) {
- 'use strict';
+import connectionManager from 'connectionManager';
+import listView from 'listView';
+import cardBuilder from 'cardBuilder';
+import imageLoader from 'imageLoader';
+import globalize from 'globalize';
+import 'emby-itemscontainer';
+import 'emby-button';
- function renderItems(page, item) {
- var sections = [];
+function renderItems(page, item) {
+ const sections = [];
- if (item.ArtistCount) {
- sections.push({
- name: globalize.translate('TabArtists'),
- type: 'MusicArtist'
- });
- }
-
- if (item.ProgramCount && item.Type == 'Person') {
- sections.push({
- name: globalize.translate('HeaderUpcomingOnTV'),
- type: 'Program'
- });
- }
-
- if (item.MovieCount) {
- sections.push({
- name: globalize.translate('TabMovies'),
- type: 'Movie'
- });
- }
-
- if (item.SeriesCount) {
- sections.push({
- name: globalize.translate('TabShows'),
- type: 'Series'
- });
- }
-
- if (item.EpisodeCount) {
- sections.push({
- name: globalize.translate('TabEpisodes'),
- type: 'Episode'
- });
- }
-
- if (item.TrailerCount) {
- sections.push({
- name: globalize.translate('TabTrailers'),
- type: 'Trailer'
- });
- }
-
- if (item.AlbumCount) {
- sections.push({
- name: globalize.translate('TabAlbums'),
- type: 'MusicAlbum'
- });
- }
-
- if (item.MusicVideoCount) {
- sections.push({
- name: globalize.translate('TabMusicVideos'),
- type: 'MusicVideo'
- });
- }
-
- var elem = page.querySelector('#childrenContent');
- elem.innerHTML = sections.map(function (section) {
- var html = '';
- var sectionClass = 'verticalSection';
-
- if (section.type === 'Audio') {
- sectionClass += ' verticalSection-extrabottompadding';
- }
-
- html += '
';
- html += '
';
- html += '
';
- html += '
';
- return html += '
';
- }).join('');
- var sectionElems = elem.querySelectorAll('.verticalSection');
-
- for (var i = 0, length = sectionElems.length; i < length; i++) {
- renderSection(page, item, sectionElems[i], sectionElems[i].getAttribute('data-type'));
- }
- }
-
- function renderSection(page, item, element, type) {
- switch (type) {
- case 'Program':
- loadItems(element, item, type, {
- MediaTypes: '',
- IncludeItemTypes: 'Program',
- PersonTypes: '',
- ArtistIds: '',
- AlbumArtistIds: '',
- Limit: 10,
- SortBy: 'StartDate'
- }, {
- shape: 'overflowBackdrop',
- showTitle: true,
- centerText: true,
- overlayMoreButton: true,
- preferThumb: true,
- overlayText: false,
- showAirTime: true,
- showAirDateTime: true,
- showChannelName: true
- });
- break;
-
- case 'Movie':
- loadItems(element, item, type, {
- MediaTypes: '',
- IncludeItemTypes: 'Movie',
- PersonTypes: '',
- ArtistIds: '',
- AlbumArtistIds: '',
- Limit: 10,
- SortBy: 'SortName'
- }, {
- shape: 'overflowPortrait',
- showTitle: true,
- centerText: true,
- overlayMoreButton: true,
- overlayText: false,
- showYear: true
- });
- break;
-
- case 'MusicVideo':
- loadItems(element, item, type, {
- MediaTypes: '',
- IncludeItemTypes: 'MusicVideo',
- PersonTypes: '',
- ArtistIds: '',
- AlbumArtistIds: '',
- Limit: 10,
- SortBy: 'SortName'
- }, {
- shape: 'overflowPortrait',
- showTitle: true,
- centerText: true,
- overlayPlayButton: true
- });
- break;
-
- case 'Trailer':
- loadItems(element, item, type, {
- MediaTypes: '',
- IncludeItemTypes: 'Trailer',
- PersonTypes: '',
- ArtistIds: '',
- AlbumArtistIds: '',
- Limit: 10,
- SortBy: 'SortName'
- }, {
- shape: 'overflowPortrait',
- showTitle: true,
- centerText: true,
- overlayPlayButton: true
- });
- break;
-
- case 'Series':
- loadItems(element, item, type, {
- MediaTypes: '',
- IncludeItemTypes: 'Series',
- PersonTypes: '',
- ArtistIds: '',
- AlbumArtistIds: '',
- Limit: 10,
- SortBy: 'SortName'
- }, {
- shape: 'overflowPortrait',
- showTitle: true,
- centerText: true,
- overlayMoreButton: true
- });
- break;
-
- case 'MusicAlbum':
- loadItems(element, item, type, {
- MediaTypes: '',
- IncludeItemTypes: 'MusicAlbum',
- PersonTypes: '',
- ArtistIds: '',
- AlbumArtistIds: '',
- SortOrder: 'Descending',
- SortBy: 'ProductionYear,Sortname'
- }, {
- shape: 'overflowSquare',
- playFromHere: true,
- showTitle: true,
- showYear: true,
- coverImage: true,
- centerText: true,
- overlayPlayButton: true
- });
- break;
-
- case 'MusicArtist':
- loadItems(element, item, type, {
- MediaTypes: '',
- IncludeItemTypes: 'MusicArtist',
- PersonTypes: '',
- ArtistIds: '',
- AlbumArtistIds: '',
- Limit: 8,
- SortBy: 'SortName'
- }, {
- shape: 'overflowSquare',
- playFromHere: true,
- showTitle: true,
- showParentTitle: true,
- coverImage: true,
- centerText: true,
- overlayPlayButton: true
- });
- break;
-
- case 'Episode':
- loadItems(element, item, type, {
- MediaTypes: '',
- IncludeItemTypes: 'Episode',
- PersonTypes: '',
- ArtistIds: '',
- AlbumArtistIds: '',
- Limit: 6,
- SortBy: 'SortName'
- }, {
- shape: 'overflowBackdrop',
- showTitle: true,
- showParentTitle: true,
- centerText: true,
- overlayPlayButton: true
- });
- break;
-
- case 'Audio':
- loadItems(element, item, type, {
- MediaTypes: '',
- IncludeItemTypes: 'Audio',
- PersonTypes: '',
- ArtistIds: '',
- AlbumArtistIds: '',
- SortBy: 'AlbumArtist,Album,SortName'
- }, {
- playFromHere: true,
- action: 'playallfromhere',
- smallIcon: true,
- artist: true
- });
- }
- }
-
- function loadItems(element, item, type, query, listOptions) {
- query = getQuery(query, item);
- getItemsFunction(query, item)(query.StartIndex, query.Limit, query.Fields).then(function (result) {
- var html = '';
-
- if (query.Limit && result.TotalRecordCount > query.Limit) {
- var link = element.querySelector('a');
- link.classList.remove('hide');
- link.setAttribute('href', getMoreItemsHref(item, type));
- } else {
- element.querySelector('a').classList.add('hide');
- }
-
- listOptions.items = result.Items;
- var itemsContainer = element.querySelector('.itemsContainer');
-
- if (type == 'Audio') {
- html = listView.getListViewHtml(listOptions);
- itemsContainer.classList.remove('vertical-wrap');
- itemsContainer.classList.add('vertical-list');
- } else {
- html = cardBuilder.getCardsHtml(listOptions);
- itemsContainer.classList.add('vertical-wrap');
- itemsContainer.classList.remove('vertical-list');
- }
-
- itemsContainer.innerHTML = html;
- imageLoader.lazyChildren(itemsContainer);
+ if (item.ArtistCount) {
+ sections.push({
+ name: globalize.translate('TabArtists'),
+ type: 'MusicArtist'
});
}
- function getMoreItemsHref(item, type) {
- if (item.Type == 'Genre') {
- return 'list.html?type=' + type + '&genreId=' + item.Id + '&serverId=' + item.ServerId;
- }
-
- if (item.Type == 'MusicGenre') {
- return 'list.html?type=' + type + '&musicGenreId=' + item.Id + '&serverId=' + item.ServerId;
- }
-
- if (item.Type == 'Studio') {
- return 'list.html?type=' + type + '&studioId=' + item.Id + '&serverId=' + item.ServerId;
- }
-
- if (item.Type == 'MusicArtist') {
- return 'list.html?type=' + type + '&artistId=' + item.Id + '&serverId=' + item.ServerId;
- }
-
- if (item.Type == 'Person') {
- return 'list.html?type=' + type + '&personId=' + item.Id + '&serverId=' + item.ServerId;
- }
-
- return 'list.html?type=' + type + '&parentId=' + item.Id + '&serverId=' + item.ServerId;
+ if (item.ProgramCount && item.Type === 'Person') {
+ sections.push({
+ name: globalize.translate('HeaderUpcomingOnTV'),
+ type: 'Program'
+ });
}
- function addCurrentItemToQuery(query, item) {
- if (item.Type == 'Person') {
- query.PersonIds = item.Id;
- } else if (item.Type == 'Genre') {
- query.Genres = item.Name;
- } else if (item.Type == 'MusicGenre') {
- query.Genres = item.Name;
- } else if (item.Type == 'GameGenre') {
- query.Genres = item.Name;
- } else if (item.Type == 'Studio') {
- query.StudioIds = item.Id;
- } else if (item.Type == 'MusicArtist') {
- query.AlbumArtistIds = item.Id;
+ if (item.MovieCount) {
+ sections.push({
+ name: globalize.translate('TabMovies'),
+ type: 'Movie'
+ });
+ }
+
+ if (item.SeriesCount) {
+ sections.push({
+ name: globalize.translate('TabShows'),
+ type: 'Series'
+ });
+ }
+
+ if (item.EpisodeCount) {
+ sections.push({
+ name: globalize.translate('TabEpisodes'),
+ type: 'Episode'
+ });
+ }
+
+ if (item.TrailerCount) {
+ sections.push({
+ name: globalize.translate('TabTrailers'),
+ type: 'Trailer'
+ });
+ }
+
+ if (item.AlbumCount) {
+ sections.push({
+ name: globalize.translate('TabAlbums'),
+ type: 'MusicAlbum'
+ });
+ }
+
+ if (item.MusicVideoCount) {
+ sections.push({
+ name: globalize.translate('TabMusicVideos'),
+ type: 'MusicVideo'
+ });
+ }
+
+ const elem = page.querySelector('#childrenContent');
+ elem.innerHTML = sections.map(function (section) {
+ let html = '';
+ let sectionClass = 'verticalSection';
+
+ if (section.type === 'Audio') {
+ sectionClass += ' verticalSection-extrabottompadding';
}
+
+ html += '';
+ html += '
';
+ html += '
';
+ html += '
';
+ html += '
';
+ return html;
+ }).join('');
+ const sectionElems = elem.querySelectorAll('.verticalSection');
+
+ for (let i = 0, length = sectionElems.length; i < length; i++) {
+ renderSection(page, item, sectionElems[i], sectionElems[i].getAttribute('data-type'));
+ }
+}
+
+function renderSection(page, item, element, type) {
+ switch (type) {
+ case 'Program':
+ loadItems(element, item, type, {
+ MediaTypes: '',
+ IncludeItemTypes: 'Program',
+ PersonTypes: '',
+ ArtistIds: '',
+ AlbumArtistIds: '',
+ Limit: 10,
+ SortBy: 'StartDate'
+ }, {
+ shape: 'overflowBackdrop',
+ showTitle: true,
+ centerText: true,
+ overlayMoreButton: true,
+ preferThumb: true,
+ overlayText: false,
+ showAirTime: true,
+ showAirDateTime: true,
+ showChannelName: true
+ });
+ break;
+
+ case 'Movie':
+ loadItems(element, item, type, {
+ MediaTypes: '',
+ IncludeItemTypes: 'Movie',
+ PersonTypes: '',
+ ArtistIds: '',
+ AlbumArtistIds: '',
+ Limit: 10,
+ SortBy: 'SortName'
+ }, {
+ shape: 'overflowPortrait',
+ showTitle: true,
+ centerText: true,
+ overlayMoreButton: true,
+ overlayText: false,
+ showYear: true
+ });
+ break;
+
+ case 'MusicVideo':
+ loadItems(element, item, type, {
+ MediaTypes: '',
+ IncludeItemTypes: 'MusicVideo',
+ PersonTypes: '',
+ ArtistIds: '',
+ AlbumArtistIds: '',
+ Limit: 10,
+ SortBy: 'SortName'
+ }, {
+ shape: 'overflowPortrait',
+ showTitle: true,
+ centerText: true,
+ overlayPlayButton: true
+ });
+ break;
+
+ case 'Trailer':
+ loadItems(element, item, type, {
+ MediaTypes: '',
+ IncludeItemTypes: 'Trailer',
+ PersonTypes: '',
+ ArtistIds: '',
+ AlbumArtistIds: '',
+ Limit: 10,
+ SortBy: 'SortName'
+ }, {
+ shape: 'overflowPortrait',
+ showTitle: true,
+ centerText: true,
+ overlayPlayButton: true
+ });
+ break;
+
+ case 'Series':
+ loadItems(element, item, type, {
+ MediaTypes: '',
+ IncludeItemTypes: 'Series',
+ PersonTypes: '',
+ ArtistIds: '',
+ AlbumArtistIds: '',
+ Limit: 10,
+ SortBy: 'SortName'
+ }, {
+ shape: 'overflowPortrait',
+ showTitle: true,
+ centerText: true,
+ overlayMoreButton: true
+ });
+ break;
+
+ case 'MusicAlbum':
+ loadItems(element, item, type, {
+ MediaTypes: '',
+ IncludeItemTypes: 'MusicAlbum',
+ PersonTypes: '',
+ ArtistIds: '',
+ AlbumArtistIds: '',
+ SortOrder: 'Descending',
+ SortBy: 'ProductionYear,Sortname'
+ }, {
+ shape: 'overflowSquare',
+ playFromHere: true,
+ showTitle: true,
+ showYear: true,
+ coverImage: true,
+ centerText: true,
+ overlayPlayButton: true
+ });
+ break;
+
+ case 'MusicArtist':
+ loadItems(element, item, type, {
+ MediaTypes: '',
+ IncludeItemTypes: 'MusicArtist',
+ PersonTypes: '',
+ ArtistIds: '',
+ AlbumArtistIds: '',
+ Limit: 8,
+ SortBy: 'SortName'
+ }, {
+ shape: 'overflowSquare',
+ playFromHere: true,
+ showTitle: true,
+ showParentTitle: true,
+ coverImage: true,
+ centerText: true,
+ overlayPlayButton: true
+ });
+ break;
+
+ case 'Episode':
+ loadItems(element, item, type, {
+ MediaTypes: '',
+ IncludeItemTypes: 'Episode',
+ PersonTypes: '',
+ ArtistIds: '',
+ AlbumArtistIds: '',
+ Limit: 6,
+ SortBy: 'SortName'
+ }, {
+ shape: 'overflowBackdrop',
+ showTitle: true,
+ showParentTitle: true,
+ centerText: true,
+ overlayPlayButton: true
+ });
+ break;
+
+ case 'Audio':
+ loadItems(element, item, type, {
+ MediaTypes: '',
+ IncludeItemTypes: 'Audio',
+ PersonTypes: '',
+ ArtistIds: '',
+ AlbumArtistIds: '',
+ SortBy: 'AlbumArtist,Album,SortName'
+ }, {
+ playFromHere: true,
+ action: 'playallfromhere',
+ smallIcon: true,
+ artist: true
+ });
+ }
+}
+
+function loadItems(element, item, type, query, listOptions) {
+ query = getQuery(query, item);
+ getItemsFunction(query, item)(query.StartIndex, query.Limit, query.Fields).then(function (result) {
+ let html = '';
+
+ if (query.Limit && result.TotalRecordCount > query.Limit) {
+ const link = element.querySelector('a');
+ link.classList.remove('hide');
+ link.setAttribute('href', getMoreItemsHref(item, type));
+ } else {
+ element.querySelector('a').classList.add('hide');
+ }
+
+ listOptions.items = result.Items;
+ const itemsContainer = element.querySelector('.itemsContainer');
+
+ if (type === 'Audio') {
+ html = listView.getListViewHtml(listOptions);
+ itemsContainer.classList.remove('vertical-wrap');
+ itemsContainer.classList.add('vertical-list');
+ } else {
+ html = cardBuilder.getCardsHtml(listOptions);
+ itemsContainer.classList.add('vertical-wrap');
+ itemsContainer.classList.remove('vertical-list');
+ }
+
+ itemsContainer.innerHTML = html;
+ imageLoader.lazyChildren(itemsContainer);
+ });
+}
+
+function getMoreItemsHref(item, type) {
+ if (item.Type === 'Genre') {
+ return 'list.html?type=' + type + '&genreId=' + item.Id + '&serverId=' + item.ServerId;
}
- function getQuery(options, item) {
- var query = {
- SortOrder: 'Ascending',
- IncludeItemTypes: '',
- Recursive: true,
- Fields: 'AudioInfo,SeriesInfo,ParentId,PrimaryImageAspectRatio,BasicSyncInfo',
- Limit: 100,
- StartIndex: 0,
- CollapseBoxSetItems: false
- };
- query = Object.assign(query, options || {});
- addCurrentItemToQuery(query, item);
- return query;
+ if (item.Type === 'MusicGenre') {
+ return 'list.html?type=' + type + '&musicGenreId=' + item.Id + '&serverId=' + item.ServerId;
}
- function getItemsFunction(options, item) {
- var query = getQuery(options, item);
- return function (index, limit, fields) {
- query.StartIndex = index;
- query.Limit = limit;
-
- if (fields) {
- query.Fields += ',' + fields;
- }
-
- var apiClient = connectionManager.getApiClient(item.ServerId);
-
- if (query.IncludeItemTypes === 'MusicArtist') {
- query.IncludeItemTypes = null;
- return apiClient.getAlbumArtists(apiClient.getCurrentUserId(), query);
- }
-
- return apiClient.getItems(apiClient.getCurrentUserId(), query);
- };
+ if (item.Type === 'Studio') {
+ return 'list.html?type=' + type + '&studioId=' + item.Id + '&serverId=' + item.ServerId;
}
- window.ItemsByName = {
- renderItems: renderItems
+ if (item.Type === 'MusicArtist') {
+ return 'list.html?type=' + type + '&artistId=' + item.Id + '&serverId=' + item.ServerId;
+ }
+
+ if (item.Type === 'Person') {
+ return 'list.html?type=' + type + '&personId=' + item.Id + '&serverId=' + item.ServerId;
+ }
+
+ return 'list.html?type=' + type + '&parentId=' + item.Id + '&serverId=' + item.ServerId;
+}
+
+function addCurrentItemToQuery(query, item) {
+ if (item.Type === 'Person') {
+ query.PersonIds = item.Id;
+ } else if (item.Type === 'Genre') {
+ query.Genres = item.Name;
+ } else if (item.Type === 'MusicGenre') {
+ query.Genres = item.Name;
+ } else if (item.Type === 'GameGenre') {
+ query.Genres = item.Name;
+ } else if (item.Type === 'Studio') {
+ query.StudioIds = item.Id;
+ } else if (item.Type === 'MusicArtist') {
+ query.AlbumArtistIds = item.Id;
+ }
+}
+
+function getQuery(options, item) {
+ let query = {
+ SortOrder: 'Ascending',
+ IncludeItemTypes: '',
+ Recursive: true,
+ Fields: 'AudioInfo,SeriesInfo,ParentId,PrimaryImageAspectRatio,BasicSyncInfo',
+ Limit: 100,
+ StartIndex: 0,
+ CollapseBoxSetItems: false
};
-});
+ query = Object.assign(query, options || {});
+ addCurrentItemToQuery(query, item);
+ return query;
+}
+
+function getItemsFunction(options, item) {
+ const query = getQuery(options, item);
+ return function (index, limit, fields) {
+ query.StartIndex = index;
+ query.Limit = limit;
+
+ if (fields) {
+ query.Fields += ',' + fields;
+ }
+
+ const apiClient = connectionManager.getApiClient(item.ServerId);
+
+ if (query.IncludeItemTypes === 'MusicArtist') {
+ query.IncludeItemTypes = null;
+ return apiClient.getAlbumArtists(apiClient.getCurrentUserId(), query);
+ }
+
+ return apiClient.getItems(apiClient.getCurrentUserId(), query);
+ };
+}
+
+window.ItemsByName = {
+ renderItems: renderItems
+};