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