diff --git a/package.json b/package.json
index 1d7cf770d3..678794aebc 100644
--- a/package.json
+++ b/package.json
@@ -212,6 +212,12 @@
"src/controllers/edititemmetadata.js",
"src/controllers/favorites.js",
"src/controllers/hometab.js",
+ "src/controllers/dashboard/plugins/repositories.js",
+ "src/controllers/movies/moviecollections.js",
+ "src/controllers/movies/moviegenres.js",
+ "src/controllers/movies/movies.js",
+ "src/controllers/movies/moviesrecommended.js",
+ "src/controllers/movies/movietrailers.js",
"src/controllers/playback/nowplaying.js",
"src/controllers/playback/videoosd.js",
"src/controllers/itemDetails/index.js",
diff --git a/src/controllers/movies/moviecollections.js b/src/controllers/movies/moviecollections.js
index 7c1a5156d9..530117295c 100644
--- a/src/controllers/movies/moviecollections.js
+++ b/src/controllers/movies/moviecollections.js
@@ -1,13 +1,19 @@
-define(['loading', 'events', 'libraryBrowser', 'imageLoader', 'listView', 'cardBuilder', 'userSettings', 'globalize', 'emby-itemscontainer'], function (loading, events, libraryBrowser, imageLoader, listView, cardBuilder, userSettings, globalize) {
- 'use strict';
+import loading from 'loading';
+import events from 'events';
+import libraryBrowser from 'libraryBrowser';
+import imageLoader from 'imageLoader';
+import listView from 'listView';
+import cardBuilder from 'cardBuilder';
+import * as userSettings from 'userSettings';
+import globalize from 'globalize';
+import 'emby-itemscontainer';
- loading = loading.default || loading;
- libraryBrowser = libraryBrowser.default || libraryBrowser;
+/* eslint-disable indent */
- return function (view, params, tabContent) {
+ export default function (view, params, tabContent) {
function getPageData(context) {
- var key = getSavedQueryKey(context);
- var pageData = data[key];
+ const key = getSavedQueryKey(context);
+ let pageData = data[key];
if (!pageData) {
pageData = data[key] = {
@@ -48,8 +54,8 @@ define(['loading', 'events', 'libraryBrowser', 'imageLoader', 'listView', 'cardB
}
function onViewStyleChange() {
- var viewStyle = self.getCurrentViewStyle();
- var itemsContainer = tabContent.querySelector('.itemsContainer');
+ const viewStyle = self.getCurrentViewStyle();
+ const itemsContainer = tabContent.querySelector('.itemsContainer');
if (viewStyle == 'List') {
itemsContainer.classList.add('vertical-list');
@@ -65,7 +71,7 @@ define(['loading', 'events', 'libraryBrowser', 'imageLoader', 'listView', 'cardB
function reloadItems(page) {
loading.show();
isLoading = true;
- var query = getQuery(page);
+ const query = getQuery(page);
ApiClient.getItems(ApiClient.getCurrentUserId(), query).then(function (result) {
function onNextPageClick() {
if (isLoading) {
@@ -90,8 +96,8 @@ define(['loading', 'events', 'libraryBrowser', 'imageLoader', 'listView', 'cardB
}
window.scrollTo(0, 0);
- var html;
- var pagingHtml = libraryBrowser.getQueryPagingHtml({
+ let html;
+ const pagingHtml = libraryBrowser.getQueryPagingHtml({
startIndex: query.StartIndex,
limit: query.Limit,
totalRecordCount: result.TotalRecordCount,
@@ -101,7 +107,7 @@ define(['loading', 'events', 'libraryBrowser', 'imageLoader', 'listView', 'cardB
sortButton: false,
filterButton: false
});
- var viewStyle = self.getCurrentViewStyle();
+ const viewStyle = self.getCurrentViewStyle();
if (viewStyle == 'Thumb') {
html = cardBuilder.getCardsHtml({
items: result.Items,
@@ -155,22 +161,21 @@ define(['loading', 'events', 'libraryBrowser', 'imageLoader', 'listView', 'cardB
showTitle: true
});
}
- var i;
- var length;
- var elems = tabContent.querySelectorAll('.paging');
- for (i = 0, length = elems.length; i < length; i++) {
- elems[i].innerHTML = pagingHtml;
+ let elems = tabContent.querySelectorAll('.paging');
+
+ for (const elem of elems) {
+ elem.innerHTML = pagingHtml;
}
elems = tabContent.querySelectorAll('.btnNextPage');
- for (i = 0, length = elems.length; i < length; i++) {
- elems[i].addEventListener('click', onNextPageClick);
+ for (const elem of elems) {
+ elem.addEventListener('click', onNextPageClick);
}
elems = tabContent.querySelectorAll('.btnPreviousPage');
- for (i = 0, length = elems.length; i < length; i++) {
- elems[i].addEventListener('click', onPreviousPageClick);
+ for (const elem of elems) {
+ elem.addEventListener('click', onPreviousPageClick);
}
if (!result.Items.length) {
@@ -182,22 +187,22 @@ define(['loading', 'events', 'libraryBrowser', 'imageLoader', 'listView', 'cardB
html += '';
}
- var itemsContainer = tabContent.querySelector('.itemsContainer');
+ const itemsContainer = tabContent.querySelector('.itemsContainer');
itemsContainer.innerHTML = html;
imageLoader.lazyChildren(itemsContainer);
libraryBrowser.saveQueryValues(getSavedQueryKey(page), query);
loading.hide();
isLoading = false;
- require(['autoFocuser'], function (autoFocuser) {
+ import('autoFocuser').then(({default: autoFocuser}) => {
autoFocuser.autoFocus(page);
});
});
}
- var self = this;
- var data = {};
- var isLoading = false;
+ const self = this;
+ const data = {};
+ let isLoading = false;
self.getCurrentViewStyle = function () {
return getPageData(tabContent).view;
@@ -230,21 +235,21 @@ define(['loading', 'events', 'libraryBrowser', 'imageLoader', 'listView', 'cardB
button: e.target
});
});
- var btnSelectView = tabContent.querySelector('.btnSelectView');
+ const btnSelectView = tabContent.querySelector('.btnSelectView');
btnSelectView.addEventListener('click', function (e) {
libraryBrowser.showLayoutMenu(e.target, self.getCurrentViewStyle(), 'List,Poster,PosterCard,Thumb,ThumbCard'.split(','));
});
btnSelectView.addEventListener('layoutchange', function (e) {
- var viewStyle = e.detail.viewStyle;
+ const viewStyle = e.detail.viewStyle;
getPageData(tabContent).view = viewStyle;
libraryBrowser.saveViewSetting(getSavedQueryKey(tabContent), viewStyle);
getQuery(tabContent).StartIndex = 0;
onViewStyleChange();
reloadItems(tabContent);
});
- tabContent.querySelector('.btnNewCollection').addEventListener('click', function () {
- require(['collectionEditor'], function (collectionEditor) {
- var serverId = ApiClient.serverInfo().Id;
+ tabContent.querySelector('.btnNewCollection').addEventListener('click', () => {
+ import('collectionEditor').then(({default: collectionEditor}) => {
+ const serverId = ApiClient.serverInfo().Id;
new collectionEditor.showEditor({
items: [],
serverId: serverId
@@ -261,5 +266,6 @@ define(['loading', 'events', 'libraryBrowser', 'imageLoader', 'listView', 'cardB
};
self.destroy = function () {};
- };
-});
+ }
+
+/* eslint-enable indent */
diff --git a/src/controllers/movies/moviegenres.js b/src/controllers/movies/moviegenres.js
index 82ab4d4d4b..56fb88b20f 100644
--- a/src/controllers/movies/moviegenres.js
+++ b/src/controllers/movies/moviegenres.js
@@ -1,13 +1,20 @@
-define(['layoutManager', 'loading', 'libraryBrowser', 'cardBuilder', 'lazyLoader', 'apphost', 'globalize', 'appRouter', 'dom', 'emby-button'], function (layoutManager, loading, libraryBrowser, cardBuilder, lazyLoader, appHost, globalize, appRouter, dom) {
- 'use strict';
+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';
- loading = loading.default || loading;
- libraryBrowser = libraryBrowser.default || libraryBrowser;
+/* eslint-disable indent */
- return function (view, params, tabContent) {
+ export default function (view, params, tabContent) {
function getPageData() {
- var key = getSavedQueryKey();
- var pageData = data[key];
+ const key = getSavedQueryKey();
+ let pageData = data[key];
if (!pageData) {
pageData = data[key] = {
@@ -37,7 +44,7 @@ define(['layoutManager', 'loading', 'libraryBrowser', 'cardBuilder', 'lazyLoader
function getPromise() {
loading.show();
- var query = getQuery();
+ const query = getQuery();
return ApiClient.getGenres(ApiClient.getCurrentUserId(), query);
}
@@ -54,17 +61,17 @@ define(['layoutManager', 'loading', 'libraryBrowser', 'cardBuilder', 'lazyLoader
}
function fillItemsContainer(entry) {
- var elem = entry.target;
- var id = elem.getAttribute('data-id');
- var viewStyle = self.getCurrentViewStyle();
- var limit = viewStyle == 'Thumb' || viewStyle == 'ThumbCard' ? 5 : 9;
+ 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;
}
- var enableImageTypes = viewStyle == 'Thumb' || viewStyle == 'ThumbCard' ? 'Primary,Backdrop,Thumb' : 'Primary';
- var query = {
+ const enableImageTypes = 'Thumb' == viewStyle || 'ThumbCard' == viewStyle ? 'Primary,Backdrop,Thumb' : 'Primary';
+ const query = {
SortBy: 'SortName',
SortOrder: 'Ascending',
IncludeItemTypes: 'Movie',
@@ -129,14 +136,14 @@ define(['layoutManager', 'loading', 'libraryBrowser', 'cardBuilder', 'lazyLoader
}
function reloadItems(context, promise) {
- var query = getQuery();
+ const query = getQuery();
promise.then(function (result) {
- var elem = context.querySelector('#items');
- var html = '';
- var items = result.Items;
+ const elem = context.querySelector('#items');
+ let html = '';
+ const items = result.Items;
- for (var i = 0, length = items.length; i < length; i++) {
- var item = items[i];
+ for (let i = 0, length = items.length; i < length; i++) {
+ const item = items[i];
html += '
';
html += '
';
@@ -151,7 +158,7 @@ define(['layoutManager', 'loading', 'libraryBrowser', 'cardBuilder', 'lazyLoader
html += '';
html += '
';
if (enableScrollX()) {
- var scrollXClass = 'scrollX hiddenScrollX';
+ let scrollXClass = 'scrollX hiddenScrollX';
if (layoutManager.tv) {
scrollXClass += 'smoothScrollX padded-top-focusscale padded-bottom-focusscale';
@@ -187,8 +194,8 @@ define(['layoutManager', 'loading', 'libraryBrowser', 'cardBuilder', 'lazyLoader
self.renderTab();
}
- var self = this;
- var data = {};
+ const self = this;
+ const data = {};
self.getViewStyles = function () {
return 'Poster,PosterCard,Thumb,ThumbCard'.split(',');
@@ -205,7 +212,7 @@ define(['layoutManager', 'loading', 'libraryBrowser', 'cardBuilder', 'lazyLoader
};
self.enableViewSelection = true;
- var promise;
+ let promise;
self.preRender = function () {
promise = getPromise();
@@ -214,5 +221,6 @@ define(['layoutManager', 'loading', 'libraryBrowser', 'cardBuilder', 'lazyLoader
self.renderTab = function () {
reloadItems(tabContent, promise);
};
- };
-});
+ }
+
+/* eslint-enable indent */
diff --git a/src/controllers/movies/movies.js b/src/controllers/movies/movies.js
index ade9dc4b89..3b68849036 100644
--- a/src/controllers/movies/movies.js
+++ b/src/controllers/movies/movies.js
@@ -1,12 +1,19 @@
-define(['loading', 'layoutManager', 'userSettings', 'events', 'libraryBrowser', 'alphaPicker', 'listView', 'cardBuilder', 'globalize', 'emby-itemscontainer'], function (loading, layoutManager, userSettings, events, libraryBrowser, AlphaPicker, listView, cardBuilder, globalize) {
- 'use strict';
+import loading from 'loading';
+import layoutManager from 'layoutManager';
+import * as userSettings from 'userSettings';
+import events from 'events';
+import libraryBrowser from 'libraryBrowser';
+import AlphaPicker from 'alphaPicker';
+import listView from 'listView';
+import cardBuilder from 'cardBuilder';
+import globalize from 'globalize';
+import 'emby-itemscontainer';
- loading = loading.default || loading;
- libraryBrowser = libraryBrowser.default || libraryBrowser;
+/* eslint-disable indent */
- return function (view, params, tabContent, options) {
- function onViewStyleChange() {
- if (self.getCurrentViewStyle() == 'List') {
+ export default function (view, params, tabContent, options) {
+ const onViewStyleChange = () => {
+ if (this.getCurrentViewStyle() == 'List') {
itemsContainer.classList.add('vertical-list');
itemsContainer.classList.remove('vertical-wrap');
} else {
@@ -15,13 +22,13 @@ define(['loading', 'layoutManager', 'userSettings', 'events', 'libraryBrowser',
}
itemsContainer.innerHTML = '';
- }
+ };
- function updateFilterControls() {
- if (self.alphaPicker) {
- self.alphaPicker.value(query.NameStartsWithOrGreater);
+ const updateFilterControls = () => {
+ if (this.alphaPicker) {
+ this.alphaPicker.value(query.NameStartsWithOrGreater);
}
- }
+ };
function fetchData() {
isLoading = true;
@@ -54,7 +61,7 @@ define(['loading', 'layoutManager', 'userSettings', 'events', 'libraryBrowser',
window.scrollTo(0, 0);
updateFilterControls();
- var pagingHtml = libraryBrowser.getQueryPagingHtml({
+ const pagingHtml = libraryBrowser.getQueryPagingHtml({
startIndex: query.StartIndex,
limit: query.Limit,
totalRecordCount: result.TotalRecordCount,
@@ -64,35 +71,30 @@ define(['loading', 'layoutManager', 'userSettings', 'events', 'libraryBrowser',
sortButton: false,
filterButton: false
});
- var i;
- var length;
- var elems = tabContent.querySelectorAll('.paging');
- for (i = 0, length = elems.length; i < length; i++) {
- elems[i].innerHTML = pagingHtml;
+ for (const elem of tabContent.querySelectorAll('.paging')) {
+ elem.innerHTML = pagingHtml;
}
- elems = tabContent.querySelectorAll('.btnNextPage');
- for (i = 0, length = elems.length; i < length; i++) {
- elems[i].addEventListener('click', onNextPageClick);
+ for (const elem of tabContent.querySelectorAll('.btnNextPage')) {
+ elem.addEventListener('click', onNextPageClick);
}
- elems = tabContent.querySelectorAll('.btnPreviousPage');
- for (i = 0, length = elems.length; i < length; i++) {
- elems[i].addEventListener('click', onPreviousPageClick);
+ for (const elem of tabContent.querySelectorAll('.btnPreviousPage')) {
+ elem.addEventListener('click', onPreviousPageClick);
}
isLoading = false;
loading.hide();
- require(['autoFocuser'], function (autoFocuser) {
+ import('autoFocuser').then(({default: autoFocuser}) => {
autoFocuser.autoFocus(tabContent);
});
}
- function getItemsHtml(items) {
- var html;
- var viewStyle = self.getCurrentViewStyle();
+ const getItemsHtml = (items) => {
+ let html;
+ const viewStyle = this.getCurrentViewStyle();
if (viewStyle == 'Thumb') {
html = cardBuilder.getCardsHtml({
@@ -156,22 +158,22 @@ define(['loading', 'layoutManager', 'userSettings', 'events', 'libraryBrowser',
}
return html;
- }
+ };
- function initPage(tabContent) {
+ const initPage = (tabContent) => {
itemsContainer.fetchData = fetchData;
itemsContainer.getItemsHtml = getItemsHtml;
itemsContainer.afterRefresh = afterRefresh;
- var alphaPickerElement = tabContent.querySelector('.alphaPicker');
+ let alphaPickerElement = tabContent.querySelector('.alphaPicker');
if (alphaPickerElement) {
alphaPickerElement.addEventListener('alphavaluechanged', function (e) {
- var newValue = e.detail.value;
+ let newValue = e.detail.value;
query.NameStartsWithOrGreater = newValue;
query.StartIndex = 0;
itemsContainer.refreshItems();
});
- self.alphaPicker = new AlphaPicker.default({
+ this.alphaPicker = new AlphaPicker({
element: alphaPickerElement,
valueChangeEvent: 'click'
});
@@ -181,14 +183,14 @@ define(['loading', 'layoutManager', 'userSettings', 'events', 'libraryBrowser',
itemsContainer.classList.add('padded-right-withalphapicker');
}
- var btnFilter = tabContent.querySelector('.btnFilter');
+ const btnFilter = tabContent.querySelector('.btnFilter');
if (btnFilter) {
- btnFilter.addEventListener('click', function () {
- self.showFilterMenu();
+ btnFilter.addEventListener('click', () => {
+ this.showFilterMenu();
});
}
- var btnSort = tabContent.querySelector('.btnSort');
+ const btnSort = tabContent.querySelector('.btnSort');
if (btnSort) {
btnSort.addEventListener('click', function (e) {
@@ -231,24 +233,23 @@ define(['loading', 'layoutManager', 'userSettings', 'events', 'libraryBrowser',
});
});
}
- var btnSelectView = tabContent.querySelector('.btnSelectView');
+ const btnSelectView = tabContent.querySelector('.btnSelectView');
btnSelectView.addEventListener('click', function (e) {
- libraryBrowser.showLayoutMenu(e.target, self.getCurrentViewStyle(), 'Banner,List,Poster,PosterCard,Thumb,ThumbCard'.split(','));
+ libraryBrowser.showLayoutMenu(e.target, this.getCurrentViewStyle, 'Banner,List,Poster,PosterCard,Thumb,ThumbCard'.split(','));
});
btnSelectView.addEventListener('layoutchange', function (e) {
- var viewStyle = e.detail.viewStyle;
+ let viewStyle = e.detail.viewStyle;
userSettings.set(savedViewKey, viewStyle);
query.StartIndex = 0;
onViewStyleChange();
itemsContainer.refreshItems();
});
- }
+ };
- var self = this;
- var itemsContainer = tabContent.querySelector('.itemsContainer');
- var savedQueryKey = params.topParentId + '-' + options.mode;
- var savedViewKey = savedQueryKey + '-view';
- var query = {
+ let itemsContainer = tabContent.querySelector('.itemsContainer');
+ const savedQueryKey = params.topParentId + '-' + options.mode;
+ const savedViewKey = savedQueryKey + '-view';
+ let query = {
SortBy: 'SortName,ProductionYear',
SortOrder: 'Ascending',
IncludeItemTypes: 'Movie',
@@ -264,7 +265,7 @@ define(['loading', 'layoutManager', 'userSettings', 'events', 'libraryBrowser',
query['Limit'] = userSettings.libraryPageSize();
}
- var isLoading = false;
+ let isLoading = false;
if (options.mode === 'favorites') {
query.IsFavorite = true;
@@ -272,14 +273,14 @@ define(['loading', 'layoutManager', 'userSettings', 'events', 'libraryBrowser',
query = userSettings.loadQuerySettings(savedQueryKey, query);
- self.showFilterMenu = function () {
- require(['components/filterdialog/filterdialog'], function ({default: filterDialogFactory}) {
- var filterDialog = new filterDialogFactory({
+ this.showFilterMenu = function () {
+ import('components/filterdialog/filterdialog').then(({default: filterDialogFactory}) => {
+ let filterDialog = new filterDialogFactory({
query: query,
mode: 'movies',
serverId: ApiClient.serverId()
});
- events.on(filterDialog, 'filterchange', function () {
+ events.on(filterDialog, 'filterchange', () => {
query.StartIndex = 0;
itemsContainer.refreshItems();
});
@@ -287,22 +288,24 @@ define(['loading', 'layoutManager', 'userSettings', 'events', 'libraryBrowser',
});
};
- self.getCurrentViewStyle = function () {
+ this.getCurrentViewStyle = function () {
return userSettings.get(savedViewKey) || 'Poster';
};
- self.initTab = function () {
+ this.initTab = function () {
initPage(tabContent);
onViewStyleChange();
};
- self.renderTab = function () {
+ //function renderTab () {
+ this.renderTab = function () {
itemsContainer.refreshItems();
updateFilterControls();
};
- self.destroy = function () {
+ this.destroy = function () {
itemsContainer = null;
};
- };
-});
+ }
+
+/* eslint-enable indent */
diff --git a/src/controllers/movies/moviesrecommended.js b/src/controllers/movies/moviesrecommended.js
index a633d654cd..5e376637b3 100644
--- a/src/controllers/movies/moviesrecommended.js
+++ b/src/controllers/movies/moviesrecommended.js
@@ -1,5 +1,20 @@
-define(['events', 'layoutManager', 'inputManager', 'userSettings', 'libraryMenu', 'mainTabsManager', 'cardBuilder', 'dom', 'imageLoader', 'playbackManager', 'globalize', 'emby-scroller', 'emby-itemscontainer', 'emby-tabs', 'emby-button'], function (events, layoutManager, inputManager, userSettings, libraryMenu, mainTabsManager, cardBuilder, dom, imageLoader, playbackManager, globalize) {
- 'use strict';
+import events from 'events';
+import layoutManager from 'layoutManager';
+import inputManager from 'inputManager';
+import * as userSettings from 'userSettings';
+import libraryMenu from 'libraryMenu';
+import mainTabsManager from 'mainTabsManager';
+import cardBuilder from 'cardBuilder';
+import dom from 'dom';
+import imageLoader from 'imageLoader';
+import playbackManager from 'playbackManager';
+import globalize from 'globalize';
+import 'emby-scroller';
+import 'emby-itemscontainer';
+import 'emby-tabs';
+import 'emby-button';
+
+/* eslint-disable indent */
playbackManager = playbackManager.default || playbackManager;
@@ -16,7 +31,7 @@ define(['events', 'layoutManager', 'inputManager', 'userSettings', 'libraryMenu'
}
function loadLatest(page, userId, parentId) {
- var options = {
+ const options = {
IncludeItemTypes: 'Movie',
Limit: 18,
Fields: 'PrimaryImageAspectRatio,MediaSourceCount,BasicSyncInfo',
@@ -26,8 +41,8 @@ define(['events', 'layoutManager', 'inputManager', 'userSettings', 'libraryMenu'
EnableTotalRecordCount: false
};
ApiClient.getJSON(ApiClient.getUrl('Users/' + userId + '/Items/Latest', options)).then(function (items) {
- var allowBottomPadding = !enableScrollX();
- var container = page.querySelector('#recentlyAddedItems');
+ const allowBottomPadding = !enableScrollX();
+ const container = page.querySelector('#recentlyAddedItems');
cardBuilder.buildCards(items, {
itemsContainer: container,
shape: getPortraitShape(),
@@ -45,8 +60,8 @@ define(['events', 'layoutManager', 'inputManager', 'userSettings', 'libraryMenu'
}
function loadResume(page, userId, parentId) {
- var screenWidth = dom.getWindowSize().innerWidth;
- var options = {
+ let screenWidth = dom.getWindowSize().innerWidth;
+ const options = {
SortBy: 'DatePlayed',
SortOrder: 'Descending',
IncludeItemTypes: 'Movie',
@@ -67,8 +82,8 @@ define(['events', 'layoutManager', 'inputManager', 'userSettings', 'libraryMenu'
page.querySelector('#resumableSection').classList.add('hide');
}
- var allowBottomPadding = !enableScrollX();
- var container = page.querySelector('#resumableItems');
+ const allowBottomPadding = !enableScrollX();
+ const container = page.querySelector('#resumableItems');
cardBuilder.buildCards(result.Items, {
itemsContainer: container,
preferThumb: true,
@@ -88,8 +103,8 @@ define(['events', 'layoutManager', 'inputManager', 'userSettings', 'libraryMenu'
}
function getRecommendationHtml(recommendation) {
- var html = '';
- var title = '';
+ let html = '';
+ let title = '';
switch (recommendation.RecommendationType) {
case 'SimilarToRecentlyPlayed':
@@ -113,7 +128,7 @@ define(['events', 'layoutManager', 'inputManager', 'userSettings', 'libraryMenu'
html += '
';
html += '
' + title + '
';
- var allowBottomPadding = true;
+ const allowBottomPadding = true;
if (enableScrollX()) {
html += '
';
@@ -141,8 +156,8 @@ define(['events', 'layoutManager', 'inputManager', 'userSettings', 'libraryMenu'
}
function loadSuggestions(page, userId, parentId) {
- var screenWidth = dom.getWindowSize().innerWidth;
- var url = ApiClient.getUrl('Movies/Recommendations', {
+ let screenWidth = dom.getWindowSize().innerWidth;
+ let url = ApiClient.getUrl('Movies/Recommendations', {
userId: userId,
categoryLimit: 6,
ItemLimit: screenWidth >= 1920 ? 8 : screenWidth >= 1600 ? 8 : screenWidth >= 1200 ? 6 : 5,
@@ -157,9 +172,9 @@ define(['events', 'layoutManager', 'inputManager', 'userSettings', 'libraryMenu'
return;
}
- var html = recommendations.map(getRecommendationHtml).join('');
+ const html = recommendations.map(getRecommendationHtml).join('');
page.querySelector('.noItemsMessage').classList.add('hide');
- var recs = page.querySelector('.recommendations');
+ let recs = page.querySelector('.recommendations');
recs.innerHTML = html;
imageLoader.lazyChildren(recs);
@@ -169,7 +184,7 @@ define(['events', 'layoutManager', 'inputManager', 'userSettings', 'libraryMenu'
}
function autoFocus(page) {
- require(['autoFocuser'], function (autoFocuser) {
+ import('autoFocuser').then(({default: autoFocuser}) => {
autoFocuser.autoFocus(page);
});
}
@@ -195,17 +210,16 @@ define(['events', 'layoutManager', 'inputManager', 'userSettings', 'libraryMenu'
}
function initSuggestedTab(page, tabContent) {
- var containers = tabContent.querySelectorAll('.itemsContainer');
+ const containers = tabContent.querySelectorAll('.itemsContainer');
- for (var i = 0, length = containers.length; i < length; i++) {
- setScrollClasses(containers[i], enableScrollX());
+ for (const container of containers) {
+ setScrollClasses(container, enableScrollX());
}
}
function loadSuggestionsTab(view, params, tabContent) {
- var parentId = params.topParentId;
- var userId = ApiClient.getCurrentUserId();
- console.debug('loadSuggestionsTab');
+ const parentId = params.topParentId;
+ const userId = ApiClient.getCurrentUserId();
loadResume(tabContent, userId, parentId);
loadLatest(tabContent, userId, parentId);
loadSuggestions(tabContent, userId, parentId);
@@ -249,13 +263,13 @@ define(['events', 'layoutManager', 'inputManager', 'userSettings', 'libraryMenu'
}
}
- return function (view, params) {
+ export default function (view, params) {
function onBeforeTabChange(e) {
preLoadTab(view, parseInt(e.detail.selectedTabIndex));
}
function onTabChange(e) {
- var newIndex = parseInt(e.detail.selectedTabIndex);
+ const newIndex = parseInt(e.detail.selectedTabIndex);
loadTab(view, newIndex);
}
@@ -268,45 +282,47 @@ define(['events', 'layoutManager', 'inputManager', 'userSettings', 'libraryMenu'
}
function getTabController(page, index, callback) {
- var depends = [];
+ let depends = '';
switch (index) {
case 0:
- depends.push('controllers/movies/movies');
+ depends = 'controllers/movies/movies';
break;
case 1:
+ depends = 'controllers/movies/moviesrecommended.js';
break;
case 2:
- depends.push('controllers/movies/movietrailers');
+ depends = 'controllers/movies/movietrailers';
break;
case 3:
- depends.push('controllers/movies/movies');
+ depends = 'controllers/movies/movies';
break;
case 4:
- depends.push('controllers/movies/moviecollections');
+ depends = 'controllers/movies/moviecollections';
break;
case 5:
- depends.push('controllers/movies/moviegenres');
+ depends = 'controllers/movies/moviegenres';
break;
case 6:
- depends.push('scripts/searchtab');
+ depends = 'scripts/searchtab';
+ break;
}
- require(depends, function (controllerFactory) {
- var tabContent;
+ import(depends).then(({default: controllerFactory}) => {
+ let tabContent;
if (index === suggestionsTabIndex) {
tabContent = view.querySelector(".pageTabContent[data-index='" + index + "']");
self.tabContent = tabContent;
}
- var controller = tabControllers[index];
+ let controller = tabControllers[index];
if (!controller) {
tabContent = view.querySelector(".pageTabContent[data-index='" + index + "']");
@@ -375,17 +391,17 @@ define(['events', 'layoutManager', 'inputManager', 'userSettings', 'libraryMenu'
var suggestionsTabIndex = 1;
self.initTab = function () {
- var tabContent = view.querySelector(".pageTabContent[data-index='" + suggestionsTabIndex + "']");
+ let tabContent = view.querySelector(".pageTabContent[data-index='" + suggestionsTabIndex + "']");
initSuggestedTab(view, tabContent);
};
self.renderTab = function () {
- var tabContent = view.querySelector(".pageTabContent[data-index='" + suggestionsTabIndex + "']");
+ let tabContent = view.querySelector(".pageTabContent[data-index='" + suggestionsTabIndex + "']");
loadSuggestionsTab(view, params, tabContent);
};
- var tabControllers = [];
- var renderedTabs = [];
+ let tabControllers = [];
+ let renderedTabs = [];
view.addEventListener('viewshow', function (e) {
initTabs();
if (!view.getAttribute('data-title')) {
@@ -408,12 +424,11 @@ define(['events', 'layoutManager', 'inputManager', 'userSettings', 'libraryMenu'
view.addEventListener('viewbeforehide', function (e) {
inputManager.off(window, onInputCommand);
});
- view.addEventListener('viewdestroy', function (e) {
- tabControllers.forEach(function (t) {
- if (t.destroy) {
- t.destroy();
- }
- });
- });
- };
-});
+ for (const tabController of tabControllers) {
+ if (tabController.destroy) {
+ tabController.destroy();
+ }
+ }
+ }
+
+/* eslint-enable indent */
diff --git a/src/controllers/movies/movietrailers.js b/src/controllers/movies/movietrailers.js
index 8d9fe8d090..a892769e47 100644
--- a/src/controllers/movies/movietrailers.js
+++ b/src/controllers/movies/movietrailers.js
@@ -1,13 +1,21 @@
-define(['layoutManager', 'loading', 'events', 'libraryBrowser', 'imageLoader', 'alphaPicker', 'listView', 'cardBuilder', 'userSettings', 'globalize', 'emby-itemscontainer'], function (layoutManager, loading, events, libraryBrowser, imageLoader, AlphaPicker, listView, cardBuilder, userSettings, globalize) {
- 'use strict';
+import layoutManager from 'layoutManager';
+import loading from 'loading';
+import events from 'events';
+import libraryBrowser from 'libraryBrowser';
+import imageLoader from 'imageLoader';
+import AlphaPicker from 'alphaPicker';
+import listView from 'listView';
+import cardBuilder from 'cardBuilder';
+import * as userSettings from 'userSettings';
+import globalize from 'globalize';
+import 'emby-itemscontainer';
- loading = loading.default || loading;
- libraryBrowser = libraryBrowser.default || libraryBrowser;
+/* eslint-disable indent */
- return function (view, params, tabContent) {
+ export default function (view, params, tabContent) {
function getPageData(context) {
- var key = getSavedQueryKey(context);
- var pageData = data[key];
+ const key = getSavedQueryKey(context);
+ let pageData = data[key];
if (!pageData) {
pageData = data[key] = {
@@ -49,7 +57,7 @@ define(['layoutManager', 'loading', 'events', 'libraryBrowser', 'imageLoader', '
function reloadItems() {
loading.show();
isLoading = true;
- var query = getQuery(tabContent);
+ const query = getQuery(tabContent);
ApiClient.getItems(ApiClient.getCurrentUserId(), query).then(function (result) {
function onNextPageClick() {
if (isLoading) {
@@ -75,7 +83,7 @@ define(['layoutManager', 'loading', 'events', 'libraryBrowser', 'imageLoader', '
window.scrollTo(0, 0);
updateFilterControls(tabContent);
- var pagingHtml = libraryBrowser.getQueryPagingHtml({
+ const pagingHtml = libraryBrowser.getQueryPagingHtml({
startIndex: query.StartIndex,
limit: query.Limit,
totalRecordCount: result.TotalRecordCount,
@@ -85,8 +93,8 @@ define(['layoutManager', 'loading', 'events', 'libraryBrowser', 'imageLoader', '
sortButton: false,
filterButton: false
});
- var html;
- var viewStyle = self.getCurrentViewStyle();
+ let html;
+ const viewStyle = self.getCurrentViewStyle();
if (viewStyle == 'Thumb') {
html = cardBuilder.getCardsHtml({
@@ -142,22 +150,20 @@ define(['layoutManager', 'loading', 'events', 'libraryBrowser', 'imageLoader', '
});
}
- var i;
- var length;
- var elems = tabContent.querySelectorAll('.paging');
+ let elems = tabContent.querySelectorAll('.paging');
- for (i = 0, length = elems.length; i < length; i++) {
- elems[i].innerHTML = pagingHtml;
+ for (const elem of elems) {
+ elem.innerHTML = pagingHtml;
}
elems = tabContent.querySelectorAll('.btnNextPage');
- for (i = 0, length = elems.length; i < length; i++) {
- elems[i].addEventListener('click', onNextPageClick);
+ for (const elem of elems) {
+ elem.addEventListener('click', onNextPageClick);
}
elems = tabContent.querySelectorAll('.btnPreviousPage');
- for (i = 0, length = elems.length; i < length; i++) {
- elems[i].addEventListener('click', onPreviousPageClick);
+ for (const elem of elems) {
+ elem.addEventListener('click', onPreviousPageClick);
}
if (!result.Items.length) {
@@ -169,7 +175,7 @@ define(['layoutManager', 'loading', 'events', 'libraryBrowser', 'imageLoader', '
html += '
';
}
- var itemsContainer = tabContent.querySelector('.itemsContainer');
+ const itemsContainer = tabContent.querySelector('.itemsContainer');
itemsContainer.innerHTML = html;
imageLoader.lazyChildren(itemsContainer);
libraryBrowser.saveQueryValues(getSavedQueryKey(tabContent), query);
@@ -179,17 +185,17 @@ define(['layoutManager', 'loading', 'events', 'libraryBrowser', 'imageLoader', '
}
function updateFilterControls(tabContent) {
- var query = getQuery(tabContent);
+ const query = getQuery(tabContent);
self.alphaPicker.value(query.NameStartsWithOrGreater);
}
- var self = this;
- var data = {};
- var isLoading = false;
+ const self = this;
+ const data = {};
+ let isLoading = false;
self.showFilterMenu = function () {
- require(['components/filterdialog/filterdialog'], function ({default: filterDialogFactory}) {
- var filterDialog = new filterDialogFactory({
+ import('components/filterdialog/filterdialog').then(({default: filterDialogFactory}) => {
+ const filterDialog = new filterDialogFactory({
query: getQuery(tabContent),
mode: 'movies',
serverId: ApiClient.serverId()
@@ -207,16 +213,16 @@ define(['layoutManager', 'loading', 'events', 'libraryBrowser', 'imageLoader', '
};
function initPage(tabContent) {
- var alphaPickerElement = tabContent.querySelector('.alphaPicker');
- var itemsContainer = tabContent.querySelector('.itemsContainer');
+ const alphaPickerElement = tabContent.querySelector('.alphaPicker');
+ const itemsContainer = tabContent.querySelector('.itemsContainer');
alphaPickerElement.addEventListener('alphavaluechanged', function (e) {
- var newValue = e.detail.value;
- var query = getQuery(tabContent);
+ const newValue = e.detail.value;
+ const query = getQuery(tabContent);
query.NameStartsWithOrGreater = newValue;
query.StartIndex = 0;
reloadItems();
});
- self.alphaPicker = new AlphaPicker.default({
+ self.alphaPicker = new AlphaPicker({
element: alphaPickerElement,
valueChangeEvent: 'click'
});
@@ -270,5 +276,6 @@ define(['layoutManager', 'loading', 'events', 'libraryBrowser', 'imageLoader', '
};
self.destroy = function () {};
- };
-});
+ }
+
+/* eslint-enable indent */