1
0
Fork 0
mirror of https://github.com/jellyfin/jellyfin-web synced 2025-03-30 19:56:21 +00:00

Merge pull request #1675 from Camc314/migrate-to-ES6-45

Migration of list and screensavermanager to ES6 modules
This commit is contained in:
Anthony Lavado 2020-08-07 20:55:09 -04:00 committed by GitHub
commit 1ffe388faf
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 271 additions and 269 deletions

View file

@ -1,12 +1,21 @@
define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager', 'cardBuilder', 'loading', 'connectionManager', 'alphaNumericShortcuts', 'playbackManager', 'alphaPicker', 'emby-itemscontainer', 'emby-scroller'], function (globalize, listView, layoutManager, userSettings, focusManager, cardBuilder, loading, connectionManager, AlphaNumericShortcuts, playbackManager, AlphaPicker) {
'use strict';
import globalize from 'globalize';
import listView from 'listView';
import layoutManager from 'layoutManager';
import * as userSettings from 'userSettings';
import focusManager from 'focusManager';
import cardBuilder from 'cardBuilder';
import loading from 'loading';
import connectionManager from 'connectionManager';
import AlphaNumericShortcuts from 'alphaNumericShortcuts';
import playbackManager from 'playbackManager';
import AlphaPicker from 'alphaPicker';
import 'emby-itemscontainer';
import 'emby-scroller';
playbackManager = playbackManager.default || playbackManager;
loading = loading.default || loading;
focusManager = focusManager.default || focusManager;
/* eslint-disable indent */
function getInitialLiveTvQuery(instance, params) {
var query = {
const query = {
UserId: connectionManager.getApiClient(params.serverId).getCurrentUserId(),
StartIndex: 0,
Fields: 'ChannelInfo,PrimaryImageAspectRatio',
@ -63,7 +72,7 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
}
function modifyQueryWithFilters(instance, query) {
var sortValues = instance.getSortValues();
const sortValues = instance.getSortValues();
if (!query.SortBy) {
query.SortBy = sortValues.sortBy;
@ -72,9 +81,9 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
query.Fields = query.Fields ? query.Fields + ',PrimaryImageAspectRatio' : 'PrimaryImageAspectRatio';
query.ImageTypeLimit = 1;
var hasFilters;
var queryFilters = [];
var filters = instance.getFilters();
let hasFilters;
const queryFilters = [];
const filters = instance.getFilters();
if (filters.IsPlayed) {
queryFilters.push('IsPlayed');
@ -168,21 +177,21 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
}
function updateSortText(instance) {
var btnSortText = instance.btnSortText;
const btnSortText = instance.btnSortText;
if (btnSortText) {
var options = instance.getSortMenuOptions();
var values = instance.getSortValues();
var sortBy = values.sortBy;
const options = instance.getSortMenuOptions();
const values = instance.getSortValues();
const sortBy = values.sortBy;
for (var i = 0, length = options.length; i < length; i++) {
if (sortBy === options[i].value) {
btnSortText.innerHTML = globalize.translate('SortByValue', options[i].name);
for (const option of options) {
if (sortBy === option.value) {
btnSortText.innerHTML = globalize.translate('SortByValue', option.name);
break;
}
}
var btnSortIcon = instance.btnSortIcon;
const btnSortIcon = instance.btnSortIcon;
if (btnSortIcon) {
setSortButtonIcon(btnSortIcon, values.sortOrder === 'Descending' ? 'arrow_downward' : 'arrow_upward');
@ -202,10 +211,10 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
function updateAlphaPickerState(instance, numItems) {
if (instance.alphaPicker) {
var alphaPicker = instance.alphaPickerElement;
const alphaPicker = instance.alphaPickerElement;
if (alphaPicker) {
var values = instance.getSortValues();
const values = instance.getSortValues();
if (numItems == null) {
numItems = 100;
@ -223,7 +232,7 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
}
function getItems(instance, params, item, sortBy, startIndex, limit) {
var apiClient = connectionManager.getApiClient(params.serverId);
const apiClient = connectionManager.getApiClient(params.serverId);
instance.queryRecursive = false;
if (params.type === 'Recordings') {
@ -252,7 +261,7 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
if (!item) {
instance.queryRecursive = true;
var method = 'getItems';
let method = 'getItems';
if (params.type === 'MusicArtist') {
method = 'getArtists';
@ -275,7 +284,7 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
if (item.Type === 'Genre' || item.Type === 'MusicGenre' || item.Type === 'Studio' || item.Type === 'Person') {
instance.queryRecursive = true;
var query = {
const query = {
StartIndex: startIndex,
Limit: limit,
Fields: 'PrimaryImageAspectRatio,SortName',
@ -324,8 +333,8 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
return Promise.resolve(null);
}
var apiClient = connectionManager.getApiClient(params.serverId);
var itemId = params.genreId || params.musicGenreId || params.studioId || params.personId || params.parentId;
const apiClient = connectionManager.getApiClient(params.serverId);
const itemId = params.genreId || params.musicGenreId || params.studioId || params.personId || params.parentId;
if (itemId) {
return apiClient.getItem(apiClient.getCurrentUserId(), itemId);
@ -335,9 +344,9 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
}
function showViewSettingsMenu() {
var instance = this;
const instance = this;
require(['viewSettings'], function (ViewSettings) {
import('viewSettings').then(({default: ViewSettings}) => {
new ViewSettings().show({
settingsKey: instance.getSettingsKey(),
settings: instance.getViewSettings(),
@ -350,9 +359,9 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
}
function showFilterMenu() {
var instance = this;
const instance = this;
require(['filterMenu'], function (FilterMenu) {
import('filterMenu').then(({default: FilterMenu}) => {
new FilterMenu().show({
settingsKey: instance.getSettingsKey(),
settings: instance.getFilters(),
@ -369,9 +378,9 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
}
function showSortMenu() {
var instance = this;
const instance = this;
require(['sortMenu'], function (SortMenu) {
import('sortMenu').then(({default: SortMenu}) => {
new SortMenu().show({
settingsKey: instance.getSettingsKey(),
settings: instance.getSortValues(),
@ -387,10 +396,10 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
}
function onNewItemClick() {
var instance = this;
const instance = this;
require(['playlistEditor'], function (playlistEditor) {
new playlistEditor.showEditor({
import('playlistEditor').then(({default: playlistEditor}) => {
new playlistEditor({
items: [],
serverId: instance.params.serverId
});
@ -398,22 +407,23 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
}
function hideOrShowAll(elems, hide) {
for (var i = 0, length = elems.length; i < length; i++) {
for (const elem of elems) {
if (hide) {
elems[i].classList.add('hide');
elem.classList.add('hide');
} else {
elems[i].classList.remove('hide');
elem.classList.remove('hide');
}
}
}
function bindAll(elems, eventName, fn) {
for (var i = 0, length = elems.length; i < length; i++) {
elems[i].addEventListener(eventName, fn);
for (const elem of elems) {
elem.addEventListener(eventName, fn);
}
}
function ItemsView(view, params) {
class ItemsView {
constructor(view, params) {
function fetchData() {
return getItems(self, params, self.currentItem).then(function (result) {
if (self.totalItemCount == null) {
@ -426,7 +436,7 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
}
function getItemsHtml(items) {
var settings = self.getViewSettings();
const settings = self.getViewSettings();
if (settings.imageType === 'list') {
return listView.getListViewHtml({
@ -434,13 +444,13 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
});
}
var shape;
var preferThumb;
var preferDisc;
var preferLogo;
var defaultShape;
var item = self.currentItem;
var lines = settings.showTitle ? 2 : 0;
let shape;
let preferThumb;
let preferDisc;
let preferLogo;
let defaultShape;
const item = self.currentItem;
let lines = settings.showTitle ? 2 : 0;
if (settings.imageType === 'banner') {
shape = 'banner';
@ -464,7 +474,7 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
shape = 'autoVertical';
}
var posterOptions = {
let posterOptions = {
shape: shape,
showTitle: settings.showTitle,
showYear: settings.showTitle,
@ -497,19 +507,19 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
lines = 1;
} else if (params.type === 'Programs') {
lines = settings.showTitle ? 1 : 0;
var showParentTitle = settings.showTitle && params.IsMovie !== 'true';
const showParentTitle = settings.showTitle && params.IsMovie !== 'true';
if (showParentTitle) {
lines++;
}
var showAirTime = settings.showTitle && params.type !== 'Recordings';
const showAirTime = settings.showTitle && params.type !== 'Recordings';
if (showAirTime) {
lines++;
}
var showYear = settings.showTitle && params.IsMovie === 'true' && params.type === 'Recordings';
const showYear = settings.showTitle && params.IsMovie === 'true' && params.type === 'Recordings';
if (showYear) {
lines++;
@ -542,13 +552,13 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
function initAlphaPicker() {
self.scroller = view.querySelector('.scrollFrameY');
var alphaPickerElement = self.alphaPickerElement;
const alphaPickerElement = self.alphaPickerElement;
alphaPickerElement.classList.add('alphaPicker-fixed-right');
alphaPickerElement.classList.add('focuscontainer-right');
self.itemsContainer.parentNode.classList.add('padded-right-withalphapicker');
self.alphaPicker = new AlphaPicker.default({
self.alphaPicker = new AlphaPicker({
element: alphaPickerElement,
itemsContainer: layoutManager.tv ? self.itemsContainer : null,
itemClass: 'card',
@ -653,7 +663,7 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
}
function play() {
var currentItem = self.currentItem;
const currentItem = self.currentItem;
if (currentItem && !self.hasFilters) {
playbackManager.play({
@ -669,7 +679,7 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
}
function queue() {
var currentItem = self.currentItem;
const currentItem = self.currentItem;
if (currentItem && !self.hasFilters) {
playbackManager.queue({
@ -685,7 +695,7 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
}
function shuffle() {
var currentItem = self.currentItem;
const currentItem = self.currentItem;
if (currentItem && !self.hasFilters) {
playbackManager.shuffle(currentItem);
@ -698,7 +708,7 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
}
}
var self = this;
const self = this;
self.params = params;
this.itemsContainer = view.querySelector('.itemsContainer');
@ -712,20 +722,17 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
this.itemsContainer.setAttribute('data-refreshinterval', '300000');
}
var i;
var length;
var btnViewSettings = view.querySelectorAll('.btnViewSettings');
const btnViewSettings = view.querySelectorAll('.btnViewSettings');
for (i = 0, length = btnViewSettings.length; i < length; i++) {
btnViewSettings[i].addEventListener('click', showViewSettingsMenu.bind(this));
for (const btnViewSetting of btnViewSettings) {
btnViewSetting.addEventListener('click', showViewSettingsMenu.bind(this));
}
var filterButtons = view.querySelectorAll('.btnFilter');
const filterButtons = view.querySelectorAll('.btnFilter');
this.filterButtons = filterButtons;
var hasVisibleFilters = this.getVisibleFilters().length;
const hasVisibleFilters = this.getVisibleFilters().length;
for (i = 0, length = filterButtons.length; i < length; i++) {
var btnFilter = filterButtons[i];
for (const btnFilter of filterButtons) {
btnFilter.addEventListener('click', showFilterMenu.bind(this));
if (hasVisibleFilters) {
@ -735,10 +742,10 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
}
}
var sortButtons = view.querySelectorAll('.btnSort');
const sortButtons = view.querySelectorAll('.btnSort');
for (this.sortButtons = sortButtons, i = 0, length = sortButtons.length; i < length; i++) {
var sortButton = sortButtons[i];
this.sortButtons = sortButtons;
for (const sortButton of sortButtons) {
sortButton.addEventListener('click', showSortMenu.bind(this));
if (params.type !== 'nextup') {
@ -753,7 +760,7 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
self.itemsContainer.fetchData = fetchData;
self.itemsContainer.getItemsHtml = getItemsHtml;
view.addEventListener('viewshow', function (e) {
var isRestored = e.detail.isRestored;
const isRestored = e.detail.isRestored;
if (!isRestored) {
loading.show();
@ -765,7 +772,7 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
getItem(params).then(function (item) {
setTitle(item);
self.currentItem = item;
var refresh = !isRestored;
const refresh = !isRestored;
self.itemsContainer.resume({
refresh: refresh
}).then(function () {
@ -780,7 +787,7 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
initAlphaPicker();
}
var itemType = item ? item.Type : null;
const itemType = item ? item.Type : null;
if (itemType === 'MusicGenre' || params.type !== 'Programs' && itemType !== 'Channel') {
hideOrShowAll(view.querySelectorAll('.btnPlay'), false);
@ -807,18 +814,18 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
bindAll(view.querySelectorAll('.btnShuffle'), 'click', shuffle);
}
self.alphaNumericShortcuts = new AlphaNumericShortcuts.default({
self.alphaNumericShortcuts = new AlphaNumericShortcuts({
itemsContainer: self.itemsContainer
});
});
view.addEventListener('viewhide', function (e) {
var itemsContainer = self.itemsContainer;
const itemsContainer = self.itemsContainer;
if (itemsContainer) {
itemsContainer.pause();
}
var alphaNumericShortcuts = self.alphaNumericShortcuts;
const alphaNumericShortcuts = self.alphaNumericShortcuts;
if (alphaNumericShortcuts) {
alphaNumericShortcuts.destroy();
@ -846,8 +853,8 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
});
}
ItemsView.prototype.getFilters = function () {
var basekey = this.getSettingsKey();
getFilters() {
const basekey = this.getSettingsKey();
return {
IsPlayed: userSettings.getFilter(basekey + '-filter-IsPlayed') === 'true',
IsUnplayed: userSettings.getFilter(basekey + '-filter-IsUnplayed') === 'true',
@ -866,39 +873,37 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
HasThemeVideo: userSettings.getFilter(basekey + '-filter-HasThemeVideo'),
GenreIds: userSettings.getFilter(basekey + '-filter-GenreIds')
};
};
}
ItemsView.prototype.getSortValues = function () {
var basekey = this.getSettingsKey();
getSortValues() {
const basekey = this.getSettingsKey();
return {
sortBy: userSettings.getFilter(basekey + '-sortby') || this.getDefaultSortBy(),
sortOrder: userSettings.getFilter(basekey + '-sortorder') === 'Descending' ? 'Descending' : 'Ascending'
};
};
}
ItemsView.prototype.getDefaultSortBy = function () {
var params = this.params;
var sortNameOption = this.getNameSortOption(params);
getDefaultSortBy() {
const sortNameOption = this.getNameSortOption(this.params);
if (params.type) {
if (this.params.type) {
return sortNameOption.value;
}
return 'IsFolder,' + sortNameOption.value;
};
}
ItemsView.prototype.getSortMenuOptions = function () {
var sortBy = [];
var params = this.params;
getSortMenuOptions() {
const sortBy = [];
if (params.type === 'Programs') {
if (this.params.type === 'Programs') {
sortBy.push({
name: globalize.translate('AirDate'),
value: 'StartDate,SortName'
});
}
var option = this.getNameSortOption(params);
let option = this.getNameSortOption(this.params);
if (option) {
sortBy.push(option);
@ -916,7 +921,7 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
sortBy.push(option);
}
if (params.type !== 'Programs') {
if (this.params.type !== 'Programs') {
sortBy.push({
name: globalize.translate('DateAdded'),
value: 'DateCreated,SortName'
@ -929,8 +934,8 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
sortBy.push(option);
}
if (!params.type) {
option = this.getNameSortOption(params);
if (!this.params.type) {
option = this.getNameSortOption(this.params);
sortBy.push({
name: globalize.translate('Folders'),
value: 'IsFolder,' + option.value
@ -956,9 +961,9 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
value: 'Runtime,SortName'
});
return sortBy;
};
}
ItemsView.prototype.getNameSortOption = function (params) {
getNameSortOption(params) {
if (params.type === 'Episode') {
return {
name: globalize.translate('Name'),
@ -970,9 +975,9 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
name: globalize.translate('Name'),
value: 'SortName'
};
};
}
ItemsView.prototype.getPlayCountSortOption = function () {
getPlayCountSortOption() {
if (this.params.type === 'Programs') {
return null;
}
@ -981,9 +986,9 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
name: globalize.translate('PlayCount'),
value: 'PlayCount,SortName'
};
};
}
ItemsView.prototype.getDatePlayedSortOption = function () {
getDatePlayedSortOption() {
if (this.params.type === 'Programs') {
return null;
}
@ -992,9 +997,9 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
name: globalize.translate('DatePlayed'),
value: 'DatePlayed,SortName'
};
};
}
ItemsView.prototype.getCriticRatingSortOption = function () {
getCriticRatingSortOption() {
if (this.params.type === 'Programs') {
return null;
}
@ -1003,18 +1008,18 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
name: globalize.translate('CriticRating'),
value: 'CriticRating,SortName'
};
};
}
ItemsView.prototype.getCommunityRatingSortOption = function () {
getCommunityRatingSortOption() {
return {
name: globalize.translate('CommunityRating'),
value: 'CommunityRating,SortName'
};
};
}
ItemsView.prototype.getVisibleFilters = function () {
var filters = [];
var params = this.params;
getVisibleFilters() {
const filters = [];
const params = this.params;
if (!(params.type === 'nextup')) {
if (params.type === 'Programs') {
@ -1038,16 +1043,15 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
}
return filters;
};
}
ItemsView.prototype.setFilterStatus = function (hasFilters) {
setFilterStatus(hasFilters) {
this.hasFilters = hasFilters;
var filterButtons = this.filterButtons;
const filterButtons = this.filterButtons;
if (filterButtons.length) {
for (var i = 0, length = filterButtons.length; i < length; i++) {
var btnFilter = filterButtons[i];
var bubble = btnFilter.querySelector('.filterButtonBubble');
for (const btnFilter of filterButtons) {
let bubble = btnFilter.querySelector('.filterButtonBubble');
if (!bubble) {
if (!hasFilters) {
@ -1066,10 +1070,10 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
}
}
}
};
}
ItemsView.prototype.getFilterMenuOptions = function () {
var params = this.params;
getFilterMenuOptions() {
const params = this.params;
return {
IsAiring: params.IsAiring,
IsMovie: params.IsMovie,
@ -1079,11 +1083,11 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
IsSeries: params.IsSeries,
Recursive: this.queryRecursive
};
};
}
ItemsView.prototype.getVisibleViewSettings = function () {
var item = (this.params, this.currentItem);
var fields = ['showTitle'];
getVisibleViewSettings() {
const item = (this.params, this.currentItem);
const fields = ['showTitle'];
if (!item || item.Type !== 'PhotoAlbum' && item.Type !== 'ChannelFolderItem') {
fields.push('imageType');
@ -1091,13 +1095,13 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
fields.push('viewType');
return fields;
};
}
ItemsView.prototype.getViewSettings = function () {
var basekey = this.getSettingsKey();
var params = this.params;
var item = this.currentItem;
var showTitle = userSettings.get(basekey + '-showTitle');
getViewSettings() {
const basekey = this.getSettingsKey();
const params = this.params;
const item = this.currentItem;
let showTitle = userSettings.get(basekey + '-showTitle');
if (showTitle === 'true') {
showTitle = true;
@ -1109,7 +1113,7 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
showTitle = true;
}
var imageType = userSettings.get(basekey + '-imageType');
let imageType = userSettings.get(basekey + '-imageType');
if (!imageType && params.type === 'nextup') {
imageType = 'thumb';
@ -1121,10 +1125,10 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
imageType: imageType || 'primary',
viewType: userSettings.get(basekey + '-viewType') || 'images'
};
};
}
ItemsView.prototype.getItemTypes = function () {
var params = this.params;
getItemTypes() {
const params = this.params;
if (params.type === 'nextup') {
return ['Episode'];
@ -1135,12 +1139,12 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
}
return [];
};
}
ItemsView.prototype.getSettingsKey = function () {
var values = [];
getSettingsKey() {
const values = [];
values.push('items');
var params = this.params;
const params = this.params;
if (params.type) {
values.push(params.type);
@ -1197,7 +1201,9 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
}
return values.join('-');
};
}
}
return ItemsView;
});
export default ItemsView;
/* eslint-enable indent */