diff --git a/.eslintrc.js b/.eslintrc.js index d9080d1ac4..765db89daa 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -28,7 +28,7 @@ module.exports = { ], rules: { 'block-spacing': ['error'], - 'brace-style': ['error'], + 'brace-style': ['error', "1tbs", { "allowSingleLine": true }], 'comma-dangle': ['error', 'never'], 'comma-spacing': ['error'], 'eol-last': ['error'], @@ -42,6 +42,7 @@ module.exports = { 'no-unused-expressions': ['error', { 'allowShortCircuit': true, 'allowTernary': true, 'allowTaggedTemplates': true }], "no-unused-vars": ["error", { "vars": "all", "args": "none", "ignoreRestSiblings": true }], 'one-var': ['error', 'never'], + 'padded-blocks': ['error', 'never'], 'quotes': ['error', 'single', { 'avoidEscape': true, 'allowTemplateLiterals': false }], 'semi': ['error'], 'space-before-blocks': ['error'], diff --git a/src/components/actionSheet/actionSheet.js b/src/components/actionSheet/actionSheet.js index 3f772250e1..937cd2afe5 100644 --- a/src/components/actionSheet/actionSheet.js +++ b/src/components/actionSheet/actionSheet.js @@ -9,7 +9,6 @@ import 'scrollStyles'; import 'listViewStyle'; function getOffsets(elems) { - let results = []; if (!document) { @@ -31,7 +30,6 @@ function getOffsets(elems) { } function getPosition(options, dlg) { - const windowSize = dom.getWindowSize(); const windowHeight = windowSize.innerHeight; const windowWidth = windowSize.innerWidth; @@ -80,7 +78,6 @@ function centerFocus(elem, horiz, on) { } export function show(options) { - // items // positionTo // showCancel @@ -98,7 +95,6 @@ export function show(options) { isFullscreen = true; dialogOptions.autoFocus = true; } else { - dialogOptions.modal = false; dialogOptions.entryAnimation = options.entryAnimation; dialogOptions.exitAnimation = options.exitAnimation; @@ -136,7 +132,6 @@ export function show(options) { let icons = []; let itemIcon; for (const item of options.items) { - itemIcon = item.icon || (item.selected ? 'check' : null); if (itemIcon) { @@ -161,7 +156,6 @@ export function show(options) { } if (options.title) { - html += '

' + options.title + '

'; } if (options.text) { @@ -197,7 +191,6 @@ export function show(options) { const item = options.items[i]; if (item.divider) { - html += '
'; continue; } @@ -265,26 +258,20 @@ export function show(options) { } return new Promise(function (resolve, reject) { - let isResolved; dlg.addEventListener('click', function (e) { - const actionSheetMenuItem = dom.parentWithClass(e.target, 'actionSheetMenuItem'); if (actionSheetMenuItem) { selectedId = actionSheetMenuItem.getAttribute('data-id'); if (options.resolveOnClick) { - if (options.resolveOnClick.indexOf) { - if (options.resolveOnClick.indexOf(selectedId) !== -1) { - resolve(selectedId); isResolved = true; } - } else { resolve(selectedId); isResolved = true; @@ -293,11 +280,9 @@ export function show(options) { dialogHelper.close(dlg); } - }); dlg.addEventListener('close', function () { - if (layoutManager.tv) { centerFocus(dlg.querySelector('.actionSheetScroller'), false, false); } diff --git a/src/components/alert.js b/src/components/alert.js index 5d396e3a62..1420c7f428 100644 --- a/src/components/alert.js +++ b/src/components/alert.js @@ -10,7 +10,6 @@ import globalize from 'globalize'; } export default function (text, title) { - let options; if (typeof text === 'string') { options = { diff --git a/src/components/alphaPicker/alphaPicker.js b/src/components/alphaPicker/alphaPicker.js index 4bc8af56f0..95b5881677 100644 --- a/src/components/alphaPicker/alphaPicker.js +++ b/src/components/alphaPicker/alphaPicker.js @@ -26,7 +26,6 @@ import 'material-icons'; } function getAlphaPickerButtonClassName(vertical) { - let alphaPickerButtonClassName = 'alphaPickerButton'; if (layoutManager.tv) { @@ -45,14 +44,12 @@ import 'material-icons'; } function mapLetters(letters, vertical) { - return letters.map(l => { return getLetterButton(l, vertical); }); } function render(element, options) { - element.classList.add('alphaPicker'); if (layoutManager.tv) { @@ -137,7 +134,6 @@ import 'material-icons'; } function onAlphaPickerInKeyboardModeClick(e) { - const alphaPickerButton = dom.parentWithClass(e.target, 'alphaPickerButton'); if (alphaPickerButton) { @@ -153,7 +149,6 @@ import 'material-icons'; } function onAlphaPickerClick(e) { - const alphaPickerButton = dom.parentWithClass(e.target, 'alphaPickerButton'); if (alphaPickerButton) { @@ -167,7 +162,6 @@ import 'material-icons'; } function onAlphaPickerFocusIn(e) { - if (alphaFocusTimeout) { clearTimeout(alphaFocusTimeout); alphaFocusTimeout = null; @@ -182,13 +176,11 @@ import 'material-icons'; } function onItemsFocusIn(e) { - const item = dom.parentWithClass(e.target, itemClass); if (item) { const prefix = item.getAttribute('data-prefix'); if (prefix && prefix.length) { - itemFocusValue = prefix[0]; if (itemFocusTimeout) { clearTimeout(itemFocusTimeout); @@ -199,9 +191,7 @@ import 'material-icons'; } this.enabled = function (enabled) { - if (enabled) { - if (itemsContainer) { itemsContainer.addEventListener('focus', onItemsFocusIn, true); } @@ -215,9 +205,7 @@ import 'material-icons'; } else { element.addEventListener('click', onAlphaPickerClick.bind(this)); } - } else { - if (itemsContainer) { itemsContainer.removeEventListener('focus', onItemsFocusIn, true); } @@ -235,14 +223,12 @@ import 'material-icons'; } value(value, applyValue) { - const element = this.options.element; let btn; let selected; if (value !== undefined) { if (value != null) { - value = value.toUpperCase(); this._currentValue = value; @@ -295,33 +281,27 @@ import 'material-icons'; } visible(visible) { - const element = this.options.element; element.style.visibility = visible ? 'visible' : 'hidden'; } values() { - const element = this.options.element; const elems = element.querySelectorAll('.alphaPickerButton'); const values = []; for (let i = 0, length = elems.length; i < length; i++) { - values.push(elems[i].getAttribute('data-value')); - } return values; } focus() { - const element = this.options.element; focusManager.autoFocus(element, true); } destroy() { - const element = this.options.element; this.enabled(false); element.classList.remove('focuscontainer-x'); diff --git a/src/components/appRouter.js b/src/components/appRouter.js index a86c585759..138d58e5c0 100644 --- a/src/components/appRouter.js +++ b/src/components/appRouter.js @@ -161,7 +161,6 @@ define(['loading', 'globalize', 'events', 'viewManager', 'skinManager', 'backdro route: route, path: ctx.path }; - }).catch(function (result) { if (!result || !result.cancelled) { onNewViewNeeded(); @@ -192,12 +191,10 @@ define(['loading', 'globalize', 'events', 'viewManager', 'skinManager', 'backdro } function onRequestFail(e, data) { - var apiClient = this; if (data.status === 403) { if (data.errorCode === 'ParentalControl') { - var isCurrentAllowed = currentRouteInfo ? (currentRouteInfo.route.anonymous || currentRouteInfo.route.startup) : true; // Bounce to the login screen, but not if a password entry fails, obviously @@ -205,7 +202,6 @@ define(['loading', 'globalize', 'events', 'viewManager', 'skinManager', 'backdro showForcedLogoutMessage(globalize.translate('AccessRestrictedTryAgainLater')); appRouter.showLocalLogin(apiClient.serverId()); } - } } } @@ -232,7 +228,6 @@ define(['loading', 'globalize', 'events', 'viewManager', 'skinManager', 'backdro if (navigator.connection) { var max = navigator.connection.downlinkMax; if (max && max > 0 && max < Number.POSITIVE_INFINITY) { - max /= 8; max *= 1000000; max *= 0.7; @@ -250,7 +245,6 @@ define(['loading', 'globalize', 'events', 'viewManager', 'skinManager', 'backdro } function onApiClientCreated(e, newApiClient) { - newApiClient.normalizeImageOptions = normalizeImageOptions; if (browser.iOS) { @@ -264,12 +258,10 @@ define(['loading', 'globalize', 'events', 'viewManager', 'skinManager', 'backdro } function initApiClient(apiClient) { - onApiClientCreated({}, apiClient); } function initApiClients() { - connectionManager.getApiClients().forEach(initApiClient); events.on(connectionManager, 'apiclientcreated', onApiClientCreated); @@ -285,7 +277,6 @@ define(['loading', 'globalize', 'events', 'viewManager', 'skinManager', 'backdro var firstConnectionResult; function start(options) { - loading.show(); initApiClients(); @@ -297,7 +288,6 @@ define(['loading', 'globalize', 'events', 'viewManager', 'skinManager', 'backdro enableAutoLogin: appSettings.enableAutoLogin() }).then(function (result) { - firstConnectionResult = result; options = options || {}; @@ -316,14 +306,11 @@ define(['loading', 'globalize', 'events', 'viewManager', 'skinManager', 'backdro } function authenticate(ctx, route, callback) { - var firstResult = firstConnectionResult; if (firstResult) { - firstConnectionResult = null; if (firstResult.State !== 'SignedIn' && !route.anonymous) { - handleConnectionResult(firstResult); return; } @@ -352,7 +339,6 @@ define(['loading', 'globalize', 'events', 'viewManager', 'skinManager', 'backdro } if (apiClient && apiClient.isLoggedIn()) { - console.debug('appRouter - user is authenticated'); if (route.isDefaultRoute) { @@ -360,11 +346,8 @@ define(['loading', 'globalize', 'events', 'viewManager', 'skinManager', 'backdro loadUserSkinWithOptions(ctx); return; } else if (route.roles) { - validateRoles(apiClient, route.roles).then(function () { - callback(); - }, beginConnectionWizard); return; } @@ -406,7 +389,6 @@ define(['loading', 'globalize', 'events', 'viewManager', 'skinManager', 'backdro var isDummyBackToHome; function loadContent(ctx, route, html, request) { - html = globalize.translateHtml(html, route.dictionary); request.view = html; @@ -466,7 +448,6 @@ define(['loading', 'globalize', 'events', 'viewManager', 'skinManager', 'backdro } function getWindowLocationSearch(win) { - var currentPath = currentRouteInfo ? (currentRouteInfo.path || '') : ''; var index = currentPath.indexOf('?'); @@ -617,7 +598,6 @@ define(['loading', 'globalize', 'events', 'viewManager', 'skinManager', 'backdro function pushState(state, title, url) { state.navigate = false; history.pushState(state, title, url); - } function setBaseRoute() { diff --git a/src/components/cardbuilder/cardBuilder.js b/src/components/cardbuilder/cardBuilder.js index 4c64c5e06b..edb9db28ba 100644 --- a/src/components/cardbuilder/cardBuilder.js +++ b/src/components/cardbuilder/cardBuilder.js @@ -291,12 +291,10 @@ import 'programStyles'; const primaryImageAspectRatio = imageLoader.getPrimaryImageAspectRatio(items); if (['auto', 'autohome', 'autooverflow', 'autoVertical'].includes(options.shape)) { - const requestedShape = options.shape; options.shape = null; if (primaryImageAspectRatio) { - if (primaryImageAspectRatio >= 3) { options.shape = 'banner'; options.coverImage = true; @@ -394,7 +392,6 @@ import 'programStyles'; } if (newIndexValue !== currentIndexValue) { - if (hasOpenRow) { html += ''; hasOpenRow = false; @@ -402,7 +399,6 @@ import 'programStyles'; } if (hasOpenSection) { - html += ''; if (isVertical) { @@ -426,7 +422,6 @@ import 'programStyles'; } if (options.rows && itemsInRow === 0) { - if (hasOpenRow) { html += ''; hasOpenRow = false; @@ -686,7 +681,6 @@ import 'programStyles'; let valid = 0; for (let i = 0; i < lines.length; i++) { - let currentCssClass = cssClass; let text = lines[i]; @@ -713,7 +707,6 @@ import 'programStyles'; } if (forceLines) { - let linesLength = maxLines || Math.min(lines.length, maxLines || lines.length); while (valid < linesLength) { @@ -745,7 +738,6 @@ import 'programStyles'; let airTimeText = ''; if (item.StartDate) { - try { let date = datetime.parseISO8601Date(item.StartDate); @@ -792,7 +784,6 @@ import 'programStyles'; const showOtherText = isOuterFooter ? !overlayText : overlayText; if (isOuterFooter && options.cardLayout && layoutManager.mobile) { - if (options.cardFooterAside !== 'none') { html += ''; } @@ -807,9 +798,7 @@ import 'programStyles'; if (showOtherText) { if ((options.showParentTitle || options.showParentTitleOrTitle) && !parentTitleUnderneath) { - if (isOuterFooter && item.Type === 'Episode' && item.SeriesName) { - if (item.SeriesId) { lines.push(getTextActionButton({ Id: item.SeriesId, @@ -822,15 +811,12 @@ import 'programStyles'; lines.push(item.SeriesName); } } else { - if (isUsingLiveTvNaming(item)) { - lines.push(item.Name); if (!item.EpisodeTitle) { titleAdded = true; } - } else { const parentTitle = item.SeriesName || item.Series || item.Album || item.AlbumArtist || ''; @@ -848,7 +834,6 @@ import 'programStyles'; } if (showMediaTitle) { - const name = options.showTitle === 'auto' && !item.IsFolder && item.MediaType === 'Photo' ? '' : itemHelper.getDisplayName(item, { includeParentInfo: options.includeParentInfoInTitle }); @@ -865,7 +850,6 @@ import 'programStyles'; if (showOtherText) { if (options.showParentTitle && parentTitleUnderneath) { - if (isOuterFooter && item.AlbumArtists && item.AlbumArtists.length) { item.AlbumArtists[0].Type = 'MusicArtist'; item.AlbumArtists[0].IsFolder = true; @@ -899,7 +883,6 @@ import 'programStyles'; } if (options.showPremiereDate) { - if (item.PremiereDate) { try { lines.push(datetime.toLocaleDateString( @@ -908,7 +891,6 @@ import 'programStyles'; )); } catch (err) { lines.push(''); - } } else { lines.push(''); @@ -916,14 +898,10 @@ import 'programStyles'; } if (options.showYear || options.showSeriesYear) { - if (item.Type === 'Series') { if (item.Status === 'Continuing') { - lines.push(globalize.translate('SeriesYearToPresent', item.ProductionYear || '')); - } else { - if (item.EndDate && item.ProductionYear) { const endYear = datetime.parseISO8601Date(item.EndDate).getFullYear(); lines.push(item.ProductionYear + ((endYear === item.ProductionYear) ? '' : (' - ' + endYear))); @@ -937,9 +915,7 @@ import 'programStyles'; } if (options.showRuntime) { - if (item.RunTimeTicks) { - lines.push(datetime.getDisplayRunningTime(item.RunTimeTicks)); } else { lines.push(''); @@ -947,14 +923,11 @@ import 'programStyles'; } if (options.showAirTime) { - lines.push(getAirTimeText(item, options.showAirDateTime, options.showAirEndTime) || ''); } if (options.showChannelName) { - if (item.ChannelId) { - lines.push(getTextActionButton({ Id: item.ChannelId, @@ -971,7 +944,6 @@ import 'programStyles'; } if (options.showCurrentProgram && item.Type === 'TvChannel') { - if (item.CurrentProgram) { lines.push(item.CurrentProgram.Name); } else { @@ -980,7 +952,6 @@ import 'programStyles'; } if (options.showCurrentProgramTime && item.Type === 'TvChannel') { - if (item.CurrentProgram) { lines.push(getAirTimeText(item.CurrentProgram, false, true) || ''); } else { @@ -990,7 +961,6 @@ import 'programStyles'; if (options.showSeriesTimerTime) { if (item.RecordAnyTime) { - lines.push(globalize.translate('Anytime')); } else { lines.push(datetime.getDisplayTime(item.StartDate)); @@ -1025,7 +995,6 @@ import 'programStyles'; } if (html) { - if (!isOuterFooter || logoUrl || options.cardLayout) { html = '
' + html; @@ -1071,27 +1040,21 @@ import 'programStyles'; let childText; if (item.Type === 'Playlist') { - childText = ''; if (item.RunTimeTicks) { - let minutes = item.RunTimeTicks / 600000000; minutes = minutes || 1; childText += globalize.translate('ValueMinutes', Math.round(minutes)); - } else { childText += globalize.translate('ValueMinutes', 0); } counts.push(childText); - } else if (item.Type === 'Genre' || item.Type === 'Studio') { - if (item.MovieCount) { - childText = item.MovieCount === 1 ? globalize.translate('ValueOneMovie') : globalize.translate('ValueMovieCount', item.MovieCount); @@ -1100,7 +1063,6 @@ import 'programStyles'; } if (item.SeriesCount) { - childText = item.SeriesCount === 1 ? globalize.translate('ValueOneSeries') : globalize.translate('ValueSeriesCount', item.SeriesCount); @@ -1108,18 +1070,14 @@ import 'programStyles'; counts.push(childText); } if (item.EpisodeCount) { - childText = item.EpisodeCount === 1 ? globalize.translate('ValueOneEpisode') : globalize.translate('ValueEpisodeCount', item.EpisodeCount); counts.push(childText); } - } else if (item.Type === 'MusicGenre' || options.context === 'MusicArtist') { - if (item.AlbumCount) { - childText = item.AlbumCount === 1 ? globalize.translate('ValueOneAlbum') : globalize.translate('ValueAlbumCount', item.AlbumCount); @@ -1127,7 +1085,6 @@ import 'programStyles'; counts.push(childText); } if (item.SongCount) { - childText = item.SongCount === 1 ? globalize.translate('ValueOneSong') : globalize.translate('ValueSongCount', item.SongCount); @@ -1135,16 +1092,13 @@ import 'programStyles'; counts.push(childText); } if (item.MusicVideoCount) { - childText = item.MusicVideoCount === 1 ? globalize.translate('ValueOneMusicVideo') : globalize.translate('ValueMusicVideoCount', item.MusicVideoCount); counts.push(childText); } - } else if (item.Type === 'Series') { - childText = item.RecursiveItemCount === 1 ? globalize.translate('ValueOneEpisode') : globalize.translate('ValueEpisodeCount', item.RecursiveItemCount); @@ -1198,13 +1152,11 @@ import 'programStyles'; let shape = options.shape; if (shape === 'mixed') { - shape = null; const primaryImageAspectRatio = item.PrimaryImageAspectRatio; if (primaryImageAspectRatio) { - if (primaryImageAspectRatio >= 1.33) { shape = 'mixedBackdrop'; } else if (primaryImageAspectRatio > 0.71) { @@ -1296,7 +1248,6 @@ import 'programStyles'; } if (overlayText) { - logoUrl = null; footerCssClass = progressHtml ? 'innerCardFooter fullInnerCardFooter' : 'innerCardFooter'; @@ -1405,7 +1356,6 @@ import 'programStyles'; indicatorsHtml += indicators.getTypeIndicator(item); if (options.showGroupCount) { - indicatorsHtml += indicators.getChildCountIndicatorHtml(item, { minCount: 1 }); @@ -1505,7 +1455,6 @@ import 'programStyles'; } if (itemHelper.canRate(item)) { - const likes = userData.Likes == null ? '' : userData.Likes; /* eslint-disable-next-line no-unused-expressions */ @@ -1586,7 +1535,6 @@ import 'programStyles'; const html = buildCardsHtmlInternal(items, options); if (html) { - if (options.itemsContainer.cardBuilderHtml !== html) { options.itemsContainer.innerHTML = html; @@ -1599,7 +1547,6 @@ import 'programStyles'; imageLoader.lazyChildren(options.itemsContainer); } else { - options.itemsContainer.innerHTML = html; options.itemsContainer.cardBuilderHtml = null; } @@ -1623,7 +1570,6 @@ import 'programStyles'; indicatorsElem = card.querySelector('.cardIndicators'); if (!indicatorsElem) { - const cardImageContainer = card.querySelector('.cardImageContainer'); indicatorsElem = document.createElement('div'); indicatorsElem.classList.add('cardIndicators'); @@ -1647,11 +1593,9 @@ import 'programStyles'; let itemProgressBar = null; if (userData.Played) { - playedIndicator = card.querySelector('.playedIndicator'); if (!playedIndicator) { - playedIndicator = document.createElement('div'); playedIndicator.classList.add('playedIndicator'); playedIndicator.classList.add('indicator'); @@ -1660,10 +1604,8 @@ import 'programStyles'; } playedIndicator.innerHTML = ''; } else { - playedIndicator = card.querySelector('.playedIndicator'); if (playedIndicator) { - playedIndicator.parentNode.removeChild(playedIndicator); } } @@ -1671,7 +1613,6 @@ import 'programStyles'; countIndicator = card.querySelector('.countIndicator'); if (!countIndicator) { - countIndicator = document.createElement('div'); countIndicator.classList.add('countIndicator'); indicatorsElem = ensureIndicators(card, indicatorsElem); @@ -1679,10 +1620,8 @@ import 'programStyles'; } countIndicator.innerHTML = userData.UnplayedItemCount; } else if (enableCountIndicator) { - countIndicator = card.querySelector('.countIndicator'); if (countIndicator) { - countIndicator.parentNode.removeChild(countIndicator); } } @@ -1694,7 +1633,6 @@ import 'programStyles'; }); if (progressHtml) { - itemProgressBar = card.querySelector('.itemProgressBar'); if (!itemProgressBar) { @@ -1713,7 +1651,6 @@ import 'programStyles'; itemProgressBar.innerHTML = progressHtml; } else { - itemProgressBar = card.querySelector('.itemProgressBar'); if (itemProgressBar) { itemProgressBar.parentNode.removeChild(itemProgressBar); diff --git a/src/components/cardbuilder/chaptercardbuilder.js b/src/components/cardbuilder/chaptercardbuilder.js index c6ee9ba3c5..0215f8d8e5 100644 --- a/src/components/cardbuilder/chaptercardbuilder.js +++ b/src/components/cardbuilder/chaptercardbuilder.js @@ -14,7 +14,6 @@ import browser from 'browser'; const enableFocusTransform = !browser.slow && !browser.edge; function buildChapterCardsHtml(item, chapters, options) { - // TODO move card creation code to Card component let className = 'card itemAction chapterCard'; @@ -35,7 +34,6 @@ import browser from 'browser'; let shape = (options.backdropShape || 'backdrop'); if (videoStream.Width && videoStream.Height) { - if ((videoStream.Width / videoStream.Height) <= 1.2) { shape = (options.squareShape || 'square'); } @@ -53,7 +51,6 @@ import browser from 'browser'; const apiClient = connectionManager.getApiClient(item.ServerId); for (let i = 0, length = chapters.length; i < length; i++) { - if (options.rows && itemsInRow === 0) { html += '
'; } @@ -73,9 +70,7 @@ import browser from 'browser'; } function getImgUrl({Id}, {ImageTag}, index, maxWidth, apiClient) { - if (ImageTag) { - return apiClient.getScaledImageUrl(Id, { maxWidth: maxWidth * 2, @@ -89,7 +84,6 @@ import browser from 'browser'; } function buildChapterCard(item, apiClient, chapter, index, {width, coverImage}, className, shape) { - const imgUrl = getImgUrl(item, chapter, index, width || 400, apiClient); let cardImageContainerClass = 'cardContent cardContent-shadow cardImageContainer chapterCardImageContainer'; @@ -116,7 +110,6 @@ import browser from 'browser'; } export function buildChapterCards(item, chapters, options) { - if (options.parentContainer) { // Abort if the container has been disposed if (!document.body.contains(options.parentContainer)) { diff --git a/src/components/cardbuilder/peoplecardbuilder.js b/src/components/cardbuilder/peoplecardbuilder.js index 3b9a26a704..5fc9e8ade5 100644 --- a/src/components/cardbuilder/peoplecardbuilder.js +++ b/src/components/cardbuilder/peoplecardbuilder.js @@ -8,7 +8,6 @@ import cardBuilder from 'cardBuilder'; export function buildPeopleCards(items, options) { - options = Object.assign(options || {}, { cardLayout: false, centerText: true, diff --git a/src/components/collectionEditor/collectionEditor.js b/src/components/collectionEditor/collectionEditor.js index 70e2083cd3..a115b86a8f 100644 --- a/src/components/collectionEditor/collectionEditor.js +++ b/src/components/collectionEditor/collectionEditor.js @@ -38,7 +38,6 @@ import 'flexStyles'; } function createCollection(apiClient, dlg) { - const url = apiClient.getUrl('Collections', { Name: dlg.querySelector('#txtNewCollectionName').value, @@ -52,7 +51,6 @@ import 'flexStyles'; dataType: 'json' }).then(result => { - loading.hide(); const id = result.Id; @@ -60,17 +58,14 @@ import 'flexStyles'; dlg.submitted = true; dialogHelper.close(dlg); redirectToCollection(apiClient, id); - }); } function redirectToCollection(apiClient, id) { - appRouter.showItem(id, apiClient.serverId()); } function addToCollection(apiClient, dlg, id) { - const url = apiClient.getUrl(`Collections/${id}/Items`, { Ids: dlg.querySelector('.fldSelectedItemIds').value || '' @@ -81,7 +76,6 @@ import 'flexStyles'; url: url }).then(() => { - loading.hide(); dlg.submitted = true; @@ -98,7 +92,6 @@ import 'flexStyles'; } function populateCollections(panel) { - loading.show(); const select = panel.querySelector('#selectCollectionToAddTo'); @@ -115,13 +108,11 @@ import 'flexStyles'; const apiClient = connectionManager.getApiClient(currentServerId); apiClient.getItems(apiClient.getCurrentUserId(), options).then(result => { - let html = ''; html += ``; html += result.Items.map(i => { - return ``; }); @@ -134,7 +125,6 @@ import 'flexStyles'; } function getEditorHtml() { - let html = ''; html += '
'; @@ -182,7 +172,6 @@ import 'flexStyles'; } function initEditor(content, items) { - content.querySelector('#selectCollectionToAddTo').addEventListener('change', function () { if (this.value) { content.querySelector('.newCollectionInfo').classList.add('hide'); @@ -219,7 +208,6 @@ import 'flexStyles'; export class showEditor { constructor(options) { - const items = options.items || {}; currentServerId = options.serverId; @@ -256,7 +244,6 @@ import 'flexStyles'; initEditor(dlg, items); dlg.querySelector('.btnCancel').addEventListener('click', () => { - dialogHelper.close(dlg); }); @@ -265,7 +252,6 @@ import 'flexStyles'; } return dialogHelper.open(dlg).then(() => { - if (layoutManager.tv) { centerFocus(dlg.querySelector('.formDialogContent'), false, false); } diff --git a/src/components/confirm/confirm.js b/src/components/confirm/confirm.js index 2d5cfdb55c..0670816a53 100644 --- a/src/components/confirm/confirm.js +++ b/src/components/confirm/confirm.js @@ -4,7 +4,6 @@ import globalize from 'globalize'; /* eslint-disable indent */ export default (() => { - function replaceAll(str, find, replace) { return str.split(find).join(replace); } diff --git a/src/components/dialog/dialog.js b/src/components/dialog/dialog.js index 2250dac7da..1b13900d85 100644 --- a/src/components/dialog/dialog.js +++ b/src/components/dialog/dialog.js @@ -13,7 +13,6 @@ import 'flexStyles'; /* eslint-disable indent */ function showDialog(options, template) { - const dialogOptions = { removeOnClose: true, scrollY: false @@ -64,7 +63,6 @@ import 'flexStyles'; let hasDescriptions = false; for (i = 0, length = options.buttons.length; i < length; i++) { - const item = options.buttons[i]; const autoFocus = i === 0 ? ' autofocus' : ''; @@ -107,7 +105,6 @@ import 'flexStyles'; } return dialogHelper.open(dlg).then(() => { - if (enableTvLayout) { scrollHelper.centerFocus.off(dlg.querySelector('.formDialogContent'), false); } @@ -121,7 +118,6 @@ import 'flexStyles'; } export async function show(text, title) { - let options; if (typeof text === 'string') { options = { diff --git a/src/components/dialogHelper/dialogHelper.js b/src/components/dialogHelper/dialogHelper.js index ca7c94a416..1f11d8a195 100644 --- a/src/components/dialogHelper/dialogHelper.js +++ b/src/components/dialogHelper/dialogHelper.js @@ -12,7 +12,6 @@ import 'scrollStyles'; let globalOnOpenCallback; function enableAnimation() { - // too slow if (browser.tv) { return false; @@ -22,7 +21,6 @@ import 'scrollStyles'; } function removeCenterFocus(dlg) { - if (layoutManager.tv) { if (dlg.classList.contains('scrollX')) { centerFocus(dlg, true, false); @@ -35,7 +33,6 @@ import 'scrollStyles'; function tryRemoveElement(elem) { const parentNode = elem.parentNode; if (parentNode) { - // Seeing crashes in edge webview try { parentNode.removeChild(elem); @@ -46,14 +43,12 @@ import 'scrollStyles'; } function DialogHashHandler(dlg, hash, resolve) { - const self = this; self.originalUrl = window.location.href; const activeElement = document.activeElement; let removeScrollLockOnClose = false; function onHashChange(e) { - const isBack = self.originalUrl === window.location.href; if (isBack || !isOpened(dlg)) { @@ -67,7 +62,6 @@ import 'scrollStyles'; } function onBackCommand(e) { - if (e.detail.command === 'back') { self.closedByBack = true; e.preventDefault(); @@ -77,7 +71,6 @@ import 'scrollStyles'; } function onDialogClosed() { - if (!isHistoryEnabled(dlg)) { inputManager.off(dlg, onBackCommand); } @@ -158,7 +151,6 @@ import 'scrollStyles'; } function addBackdropOverlay(dlg) { - const backdrop = document.createElement('div'); backdrop.classList.add('dialogBackdrop'); @@ -193,7 +185,6 @@ import 'scrollStyles'; } export function open(dlg) { - if (globalOnOpenCallback) { globalOnOpenCallback(dlg); } @@ -210,19 +201,16 @@ import 'scrollStyles'; document.body.appendChild(dialogContainer); return new Promise((resolve, reject) => { - new DialogHashHandler(dlg, `dlg${new Date().getTime()}`, resolve); }); } function isOpened(dlg) { - //return dlg.opened; return !dlg.classList.contains('hide'); } export function close(dlg) { - if (isOpened(dlg)) { if (isHistoryEnabled(dlg)) { history.back(); @@ -233,9 +221,7 @@ import 'scrollStyles'; } function closeDialog(dlg) { - if (!dlg.classList.contains('hide')) { - dlg.dispatchEvent(new CustomEvent('closing', { bubbles: false, cancelable: false @@ -256,7 +242,6 @@ import 'scrollStyles'; } function animateDialogOpen(dlg) { - const onAnimationFinish = () => { focusManager.pushScope(dlg); @@ -271,7 +256,6 @@ import 'scrollStyles'; }; if (enableAnimation()) { - const onFinish = () => { dom.removeEventListener(dlg, dom.whichAnimationEvent(), onFinish, { once: true @@ -288,13 +272,10 @@ import 'scrollStyles'; } function animateDialogClose(dlg, onAnimationFinish) { - if (enableAnimation()) { - let animated = true; switch (dlg.animationConfig.exit.name) { - case 'fadeout': dlg.style.animation = `fadeout ${dlg.animationConfig.exit.timing.duration}ms ease-out normal both`; break; @@ -329,7 +310,6 @@ import 'scrollStyles'; const supportsOverscrollBehavior = 'overscroll-behavior-y' in document.body.style; function shouldLockDocumentScroll(options) { - if (supportsOverscrollBehavior && (options.size || !browser.touch)) { return false; } @@ -350,7 +330,6 @@ import 'scrollStyles'; } function removeBackdrop(dlg) { - const backdrop = dlg.backdrop; if (!backdrop) { @@ -364,7 +343,6 @@ import 'scrollStyles'; }; if (enableAnimation()) { - backdrop.classList.remove('dialogBackdropOpened'); // this is not firing animatonend @@ -383,7 +361,6 @@ import 'scrollStyles'; } export function createDialog(options) { - options = options || {}; // If there's no native dialog support, use a plain div @@ -473,9 +450,7 @@ import 'scrollStyles'; } if (enableAnimation()) { - switch (dlg.animationConfig.entry.name) { - case 'fadein': dlg.style.animation = `fadein ${entryAnimationDuration}ms ease-out normal`; break; diff --git a/src/components/displaySettings/displaySettings.js b/src/components/displaySettings/displaySettings.js index 4e24a3b730..ba78ab99e1 100644 --- a/src/components/displaySettings/displaySettings.js +++ b/src/components/displaySettings/displaySettings.js @@ -55,7 +55,6 @@ import 'emby-button'; } function loadSoundEffects(context, userSettings) { - const selectSoundEffects = context.querySelector('.selectSoundEffects'); const options = pluginManager.ofType('soundeffects').map(plugin => { return { @@ -81,7 +80,6 @@ import 'emby-button'; } function loadSkins(context, userSettings) { - const selectSkin = context.querySelector('.selectSkin'); const options = pluginManager.ofType('skin').map(plugin => { @@ -108,7 +106,6 @@ import 'emby-button'; } function showOrHideMissingEpisodesField(context) { - if (browser.tizen || browser.web0s) { context.querySelector('.fldDisplayMissingEpisodes').classList.add('hide'); return; @@ -118,7 +115,6 @@ import 'emby-button'; } function loadForm(context, user, userSettings) { - if (user.Policy.IsAdministrator) { context.querySelector('.selectDashboardThemeContainer').classList.remove('hide'); } else { @@ -213,7 +209,6 @@ import 'emby-button'; } function saveUser(context, user, userSettingsInstance, apiClient) { - appSettings.runAtStartup(context.querySelector('.chkRunAtStartup').checked); user.Configuration.DisplayMissingEpisodes = context.querySelector('.chkDisplayMissingEpisodes').checked; diff --git a/src/components/fetchhelper.js b/src/components/fetchhelper.js index f626abefee..00bffc235a 100644 --- a/src/components/fetchhelper.js +++ b/src/components/fetchhelper.js @@ -1,6 +1,5 @@ /* eslint-disable indent */ export function getFetchPromise(request) { - const headers = request.headers || {}; if (request.dataType === 'json') { @@ -16,7 +15,6 @@ let contentType = request.contentType; if (request.data) { - if (typeof request.data === 'string') { fetchRequest.body = request.data; } else { @@ -27,7 +25,6 @@ } if (contentType) { - headers['Content-Type'] = contentType; } @@ -48,11 +45,9 @@ } function fetchWithTimeout(url, options, timeoutMs) { - console.debug(`fetchWithTimeout: timeoutMs: ${timeoutMs}, url: ${url}`); return new Promise(function (resolve, reject) { - const timeout = setTimeout(reject, timeoutMs); options = options || {}; @@ -65,7 +60,6 @@ resolve(response); }, function (error) { - clearTimeout(timeout); console.debug(`fetchWithTimeout: timed out connecting to url: ${url}`); diff --git a/src/components/filtermenu/filtermenu.js b/src/components/filtermenu/filtermenu.js index a757e3ee19..20399fb52d 100644 --- a/src/components/filtermenu/filtermenu.js +++ b/src/components/filtermenu/filtermenu.js @@ -2,19 +2,15 @@ define(['require', 'dom', 'focusManager', 'dialogHelper', 'loading', 'apphost', 'use strict'; function onSubmit(e) { - e.preventDefault(); return false; } function renderOptions(context, selector, cssClass, items, isCheckedFn) { - var elem = context.querySelector(selector); if (items.length) { - elem.classList.remove('hide'); - } else { elem.classList.add('hide'); } @@ -22,7 +18,6 @@ define(['require', 'dom', 'focusManager', 'dialogHelper', 'loading', 'apphost', var html = ''; html += items.map(function (filter) { - var itemHtml = ''; var checkedHtml = isCheckedFn(filter) ? ' checked' : ''; @@ -32,7 +27,6 @@ define(['require', 'dom', 'focusManager', 'dialogHelper', 'loading', 'apphost', itemHtml += ''; return itemHtml; - }).join(''); elem.querySelector('.filterOptions').innerHTML = html; @@ -47,7 +41,6 @@ define(['require', 'dom', 'focusManager', 'dialogHelper', 'loading', 'apphost', } function loadDynamicFilters(context, options) { - var apiClient = connectionManager.getApiClient(options.serverId); var filterMenuOptions = Object.assign(options.filterMenuOptions, { @@ -63,7 +56,6 @@ define(['require', 'dom', 'focusManager', 'dialogHelper', 'loading', 'apphost', } function initEditor(context, settings) { - context.querySelector('form').addEventListener('submit', onSubmit); var elems = context.querySelectorAll('.simpleFilter'); @@ -71,7 +63,6 @@ define(['require', 'dom', 'focusManager', 'dialogHelper', 'loading', 'apphost', var length; for (i = 0, length = elems.length; i < length; i++) { - if (elems[i].tagName === 'INPUT') { elems[i].checked = settings[elems[i].getAttribute('data-settingname')] || false; } else { @@ -83,7 +74,6 @@ define(['require', 'dom', 'focusManager', 'dialogHelper', 'loading', 'apphost', elems = context.querySelectorAll('.chkVideoTypeFilter'); for (i = 0, length = elems.length; i < length; i++) { - elems[i].checked = videoTypes.indexOf(elems[i].getAttribute('data-filter')) !== -1; } @@ -91,7 +81,6 @@ define(['require', 'dom', 'focusManager', 'dialogHelper', 'loading', 'apphost', elems = context.querySelectorAll('.chkSeriesStatus'); for (i = 0, length = elems.length; i < length; i++) { - elems[i].checked = seriesStatuses.indexOf(elems[i].getAttribute('data-filter')) !== -1; } @@ -109,12 +98,10 @@ define(['require', 'dom', 'focusManager', 'dialogHelper', 'loading', 'apphost', } function saveValues(context, settings, settingsKey) { - var elems = context.querySelectorAll('.simpleFilter'); var i; var length; for (i = 0, length = elems.length; i < length; i++) { - if (elems[i].tagName === 'INPUT') { setBasicFilter(context, settingsKey + '-filter-' + elems[i].getAttribute('data-settingname'), elems[i]); } else { @@ -127,7 +114,6 @@ define(['require', 'dom', 'focusManager', 'dialogHelper', 'loading', 'apphost', elems = context.querySelectorAll('.chkVideoTypeFilter'); for (i = 0, length = elems.length; i < length; i++) { - if (elems[i].checked) { videoTypes.push(elems[i].getAttribute('data-filter')); } @@ -139,7 +125,6 @@ define(['require', 'dom', 'focusManager', 'dialogHelper', 'loading', 'apphost', elems = context.querySelectorAll('.chkSeriesStatus'); for (i = 0, length = elems.length; i < length; i++) { - if (elems[i].checked) { seriesStatuses.push(elems[i].getAttribute('data-filter')); } @@ -150,7 +135,6 @@ define(['require', 'dom', 'focusManager', 'dialogHelper', 'loading', 'apphost', elems = context.querySelectorAll('.chkGenreFilter'); for (i = 0, length = elems.length; i < length; i++) { - if (elems[i].checked) { genres.push(elems[i].getAttribute('data-filter')); } @@ -159,7 +143,6 @@ define(['require', 'dom', 'focusManager', 'dialogHelper', 'loading', 'apphost', } function setBasicFilter(context, key, elem) { - var value = elem.checked; value = value ? value : null; userSettings.setFilter(key, value); @@ -173,7 +156,6 @@ define(['require', 'dom', 'focusManager', 'dialogHelper', 'loading', 'apphost', } function moveCheckboxFocus(elem, offset) { - var parent = dom.parentWithClass(elem, 'checkboxList-verticalwrap'); var elems = focusManager.getFocusableElements(parent); @@ -198,7 +180,6 @@ define(['require', 'dom', 'focusManager', 'dialogHelper', 'loading', 'apphost', function onInputCommand(e) { switch (e.detail.command) { - case 'left': moveCheckboxFocus(e.target, -1); e.preventDefault(); @@ -217,7 +198,6 @@ define(['require', 'dom', 'focusManager', 'dialogHelper', 'loading', 'apphost', } function bindCheckboxInput(context, on) { - var elems = context.querySelectorAll('.checkboxList-verticalwrap'); for (var i = 0, length = elems.length; i < length; i++) { if (on) { @@ -229,11 +209,8 @@ define(['require', 'dom', 'focusManager', 'dialogHelper', 'loading', 'apphost', } FilterMenu.prototype.show = function (options) { - return new Promise(function (resolve, reject) { - require(['text!./filtermenu.template.html'], function (template) { - var dialogOptions = { removeOnClose: true, scrollY: false @@ -276,7 +253,6 @@ define(['require', 'dom', 'focusManager', 'dialogHelper', 'loading', 'apphost', bindCheckboxInput(dlg, true); dlg.querySelector('.btnCancel').addEventListener('click', function () { - dialogHelper.close(dlg); }); @@ -291,7 +267,6 @@ define(['require', 'dom', 'focusManager', 'dialogHelper', 'loading', 'apphost', }, true); dialogHelper.open(dlg).then(function () { - bindCheckboxInput(dlg, false); if (layoutManager.tv) { @@ -299,7 +274,6 @@ define(['require', 'dom', 'focusManager', 'dialogHelper', 'loading', 'apphost', } if (submitted) { - //if (!options.onChange) { saveValues(dlg, options.settings, options.settingsKey); resolve(); diff --git a/src/components/focusManager.js b/src/components/focusManager.js index a5dcad38ca..9c495bf952 100644 --- a/src/components/focusManager.js +++ b/src/components/focusManager.js @@ -7,14 +7,12 @@ define(['dom', 'scrollManager'], function (dom, scrollManager) { } function popScope(elem) { - if (scopes.length) { scopes.length -= 1; } } function autoFocus(view, defaultToFirst, findAutoFocusElement) { - var element; if (findAutoFocusElement !== false) { element = view.querySelector('*[autofocus]'); @@ -37,7 +35,6 @@ define(['dom', 'scrollManager'], function (dom, scrollManager) { } function focus(element) { - try { element.focus({ preventScroll: scrollManager.isEnabled() @@ -50,16 +47,13 @@ define(['dom', 'scrollManager'], function (dom, scrollManager) { var focusableTagNames = ['INPUT', 'TEXTAREA', 'SELECT', 'BUTTON', 'A']; var focusableContainerTagNames = ['BODY', 'DIALOG']; var focusableQuery = focusableTagNames.map(function (t) { - if (t === 'INPUT') { t += ':not([type="range"]):not([type="file"])'; } return t + ':not([tabindex="-1"]):not(:disabled)'; - }).join(',') + ',.focusable'; function isFocusable(elem) { - if (focusableTagNames.indexOf(elem.tagName) !== -1) { return true; } @@ -83,7 +77,6 @@ define(['dom', 'scrollManager'], function (dom, scrollManager) { } function focusableParent(elem) { - var originalElement = elem; while (!isFocusable(elem)) { @@ -101,7 +94,6 @@ define(['dom', 'scrollManager'], function (dom, scrollManager) { // Determines if a focusable element can be focused at a given point in time function isCurrentlyFocusableInternal(elem) { - // http://stackoverflow.com/questions/19669786/check-if-element-is-visible-in-dom if (elem.offsetParent === null) { return false; @@ -112,7 +104,6 @@ define(['dom', 'scrollManager'], function (dom, scrollManager) { // Determines if a focusable element can be focused at a given point in time function isCurrentlyFocusable(elem) { - if (elem.disabled) { return false; } @@ -143,7 +134,6 @@ define(['dom', 'scrollManager'], function (dom, scrollManager) { var focusableElements = []; for (var i = 0, length = elems.length; i < length; i++) { - var elem = elems[i]; if (excludeClass && elem.classList.contains(excludeClass)) { @@ -163,7 +153,6 @@ define(['dom', 'scrollManager'], function (dom, scrollManager) { } function isFocusContainer(elem, direction) { - if (focusableContainerTagNames.indexOf(elem.tagName) !== -1) { return true; } @@ -217,7 +206,6 @@ define(['dom', 'scrollManager'], function (dom, scrollManager) { } function getOffset(elem) { - var box; // Support: BlackBerry 5, iOS 3 (original iPhone) @@ -234,7 +222,6 @@ define(['dom', 'scrollManager'], function (dom, scrollManager) { } if (box.right === null) { - // Create a new object because some browsers will throw an error when trying to set data onto the Rect object var newBox = { top: box.top, @@ -253,7 +240,6 @@ define(['dom', 'scrollManager'], function (dom, scrollManager) { } function nav(activeElement, direction, container, focusableElements) { - activeElement = activeElement || document.activeElement; if (activeElement) { @@ -305,7 +291,6 @@ define(['dom', 'scrollManager'], function (dom, scrollManager) { } switch (direction) { - case 0: // left if (elementRect.left >= rect.left) { @@ -361,7 +346,6 @@ define(['dom', 'scrollManager'], function (dom, scrollManager) { var distY; switch (direction) { - case 0: // left distX = Math.abs(point1x - Math.min(point1x, x2)); @@ -395,7 +379,6 @@ define(['dom', 'scrollManager'], function (dom, scrollManager) { } if (nearestElement) { - // See if there's a focusable container, and if so, send the focus command to that if (activeElement) { var nearestElementFocusableParent = dom.parentWithClass(nearestElement, 'focusable'); @@ -410,12 +393,10 @@ define(['dom', 'scrollManager'], function (dom, scrollManager) { } function intersectsInternal(a1, a2, b1, b2) { - return (b1 >= a1 && b1 <= a2) || (b2 >= a1 && b2 <= a2); } function intersects(a1, a2, b1, b2) { - return intersectsInternal(a1, a2, b1, b2) || intersectsInternal(b1, b2, a1, a2); } @@ -426,11 +407,9 @@ define(['dom', 'scrollManager'], function (dom, scrollManager) { } function focusFirst(container, focusableSelector) { - var elems = container.querySelectorAll(focusableSelector); for (var i = 0, length = elems.length; i < length; i++) { - var elem = elems[i]; if (isCurrentlyFocusableInternal(elem)) { @@ -441,11 +420,9 @@ define(['dom', 'scrollManager'], function (dom, scrollManager) { } function focusLast(container, focusableSelector) { - var elems = [].slice.call(container.querySelectorAll(focusableSelector), 0).reverse(); for (var i = 0, length = elems.length; i < length; i++) { - var elem = elems[i]; if (isCurrentlyFocusableInternal(elem)) { @@ -456,7 +433,6 @@ define(['dom', 'scrollManager'], function (dom, scrollManager) { } function moveFocus(sourceElement, container, focusableSelector, offset) { - var elems = container.querySelectorAll(focusableSelector); var list = []; var i; @@ -464,7 +440,6 @@ define(['dom', 'scrollManager'], function (dom, scrollManager) { var elem; for (i = 0, length = elems.length; i < length; i++) { - elem = elems[i]; if (isCurrentlyFocusableInternal(elem)) { @@ -475,7 +450,6 @@ define(['dom', 'scrollManager'], function (dom, scrollManager) { var currentIndex = -1; for (i = 0, length = list.length; i < length; i++) { - elem = list[i]; if (sourceElement === elem || elem.contains(sourceElement)) { diff --git a/src/components/guide/guide-settings.js b/src/components/guide/guide-settings.js index 77a3637251..c3ba49f283 100644 --- a/src/components/guide/guide-settings.js +++ b/src/components/guide/guide-settings.js @@ -2,12 +2,10 @@ define(['dialogHelper', 'globalize', 'userSettings', 'layoutManager', 'connectio 'use strict'; function saveCategories(context, options) { - var categories = []; var chkCategorys = context.querySelectorAll('.chkCategory'); for (var i = 0, length = chkCategorys.length; i < length; i++) { - var type = chkCategorys[i].getAttribute('data-type'); if (chkCategorys[i].checked) { @@ -25,12 +23,10 @@ define(['dialogHelper', 'globalize', 'userSettings', 'layoutManager', 'connectio } function loadCategories(context, options) { - var selectedCategories = options.categories || []; var chkCategorys = context.querySelectorAll('.chkCategory'); for (var i = 0, length = chkCategorys.length; i < length; i++) { - var type = chkCategorys[i].getAttribute('data-type'); chkCategorys[i].checked = !selectedCategories.length || selectedCategories.indexOf(type) !== -1; @@ -38,13 +34,11 @@ define(['dialogHelper', 'globalize', 'userSettings', 'layoutManager', 'connectio } function save(context) { - var i; var length; var chkIndicators = context.querySelectorAll('.chkIndicator'); for (i = 0, length = chkIndicators.length; i < length; i++) { - var type = chkIndicators[i].getAttribute('data-type'); userSettings.set('guide-indicator-' + type, chkIndicators[i].checked); } @@ -62,13 +56,11 @@ define(['dialogHelper', 'globalize', 'userSettings', 'layoutManager', 'connectio } function load(context) { - var i; var length; var chkIndicators = context.querySelectorAll('.chkIndicator'); for (i = 0, length = chkIndicators.length; i < length; i++) { - var type = chkIndicators[i].getAttribute('data-type'); if (chkIndicators[i].getAttribute('data-default') === 'true') { @@ -90,13 +82,10 @@ define(['dialogHelper', 'globalize', 'userSettings', 'layoutManager', 'connectio } function showEditor(options) { - return new Promise(function (resolve, reject) { - var settingsChanged = false; require(['text!./guide-settings.template.html'], function (template) { - var dialogOptions = { removeOnClose: true, scrollY: false @@ -119,12 +108,10 @@ define(['dialogHelper', 'globalize', 'userSettings', 'layoutManager', 'connectio dlg.innerHTML = html; dlg.addEventListener('change', function () { - settingsChanged = true; }); dlg.addEventListener('close', function () { - if (layoutManager.tv) { scrollHelper.centerFocus.off(dlg.querySelector('.formDialogContent'), false); } diff --git a/src/components/guide/guide.js b/src/components/guide/guide.js index 9fd78fdf49..bd3ad89aaa 100644 --- a/src/components/guide/guide.js +++ b/src/components/guide/guide.js @@ -2,7 +2,6 @@ define(['require', 'inputManager', 'browser', 'globalize', 'connectionManager', 'use strict'; function showViewSettings(instance) { - require(['guide-settings-dialog'], function (guideSettingsDialog) { guideSettingsDialog.show(instance.categoryOptions).then(function () { instance.refresh(); @@ -11,7 +10,6 @@ define(['require', 'inputManager', 'browser', 'globalize', 'connectionManager', } function updateProgramCellOnScroll(cell, scrollPct) { - var left = cell.posLeft; if (!left) { left = parseFloat(cell.style.left.replace('%', '')); @@ -54,7 +52,6 @@ define(['require', 'inputManager', 'browser', 'globalize', 'connectionManager', var isUpdatingProgramCellScroll = false; function updateProgramCellsOnScroll(programGrid, programCells) { - if (isUpdatingProgramCellScroll) { return; } @@ -62,13 +59,11 @@ define(['require', 'inputManager', 'browser', 'globalize', 'connectionManager', isUpdatingProgramCellScroll = true; requestAnimationFrame(function () { - var scrollLeft = programGrid.scrollLeft; var scrollPct = scrollLeft ? (scrollLeft / programGrid.scrollWidth) * 100 : 0; for (var i = 0, length = programCells.length; i < length; i++) { - updateProgramCellOnScroll(programCells[i], scrollPct); } @@ -77,14 +72,12 @@ define(['require', 'inputManager', 'browser', 'globalize', 'connectionManager', } function onProgramGridClick(e) { - if (!layoutManager.tv) { return; } var programCell = dom.parentWithClass(e.target, 'programCell'); if (programCell) { - var startDate = programCell.getAttribute('data-startdate'); var endDate = programCell.getAttribute('data-enddate'); startDate = datetime.parseISO8601Date(startDate, { toLocal: true }).getTime(); @@ -92,7 +85,6 @@ define(['require', 'inputManager', 'browser', 'globalize', 'connectionManager', var now = new Date().getTime(); if (now >= startDate && now < endDate) { - var channelId = programCell.getAttribute('data-channelid'); var serverId = programCell.getAttribute('data-serverid'); @@ -108,7 +100,6 @@ define(['require', 'inputManager', 'browser', 'globalize', 'connectionManager', } function Guide(options) { - var self = this; var items = {}; @@ -129,7 +120,6 @@ define(['require', 'inputManager', 'browser', 'globalize', 'connectionManager', var programGrid; self.refresh = function () { - currentDate = null; reloadPage(options.element); restartAutoRefresh(); @@ -148,7 +138,6 @@ define(['require', 'inputManager', 'browser', 'globalize', 'connectionManager', }; self.destroy = function () { - stopAutoRefresh(); events.off(serverNotifications, 'TimerCreated', onTimerCreated); @@ -162,7 +151,6 @@ define(['require', 'inputManager', 'browser', 'globalize', 'connectionManager', }; function restartAutoRefresh() { - stopAutoRefresh(); var intervalMs = 60000 * 15; // (minutes) @@ -180,15 +168,11 @@ define(['require', 'inputManager', 'browser', 'globalize', 'connectionManager', } function normalizeDateToTimeslot(date) { - var minutesOffset = date.getMinutes() - cellCurationMinutes; if (minutesOffset >= 0) { - date.setHours(date.getHours(), cellCurationMinutes, 0, 0); - } else { - date.setHours(date.getHours(), 0, 0, 0); } @@ -204,7 +188,6 @@ define(['require', 'inputManager', 'browser', 'globalize', 'connectionManager', } function reloadGuide(context, newStartDate, scrollToTimeMs, focusToTimeMs, startTimeOfDayMs, focusProgramOnRender) { - var apiClient = connectionManager.getApiClient(options.serverId); var channelQuery = { @@ -287,12 +270,10 @@ define(['require', 'inputManager', 'browser', 'globalize', 'connectionManager', }; apiClient.getLiveTvChannels(channelQuery).then(function (channelsResult) { - var btnPreviousPage = context.querySelector('.btnPreviousPage'); var btnNextPage = context.querySelector('.btnNextPage'); if (channelsResult.TotalRecordCount > channelLimit) { - context.querySelector('.guideOptions').classList.remove('hide'); btnPreviousPage.classList.remove('hide'); @@ -309,7 +290,6 @@ define(['require', 'inputManager', 'browser', 'globalize', 'connectionManager', } else { btnNextPage.disabled = true; } - } else { context.querySelector('.guideOptions').classList.add('hide'); } @@ -340,22 +320,17 @@ define(['require', 'inputManager', 'browser', 'globalize', 'connectionManager', } apiClient.getLiveTvPrograms(programQuery).then(function (programsResult) { - renderGuide(context, date, channelsResult.Items, programsResult.Items, renderOptions, apiClient, scrollToTimeMs, focusToTimeMs, startTimeOfDayMs, focusProgramOnRender); hideLoading(); - }); }); } function getDisplayTime(date) { - if ((typeof date).toString().toLowerCase() === 'string') { try { - date = datetime.parseISO8601Date(date, { toLocal: true }); - } catch (err) { return date; } @@ -365,7 +340,6 @@ define(['require', 'inputManager', 'browser', 'globalize', 'connectionManager', } function getTimeslotHeadersHtml(startDate, endDateTime) { - var html = ''; // clone @@ -374,7 +348,6 @@ define(['require', 'inputManager', 'browser', 'globalize', 'connectionManager', html += '
'; while (startDate.getTime() < endDateTime) { - html += '
'; html += getDisplayTime(startDate); @@ -408,23 +381,19 @@ define(['require', 'inputManager', 'browser', 'globalize', 'connectionManager', } function getTimerIndicator(item) { - var status; if (item.Type === 'SeriesTimer') { return ''; } else if (item.TimerId || item.SeriesTimerId) { - status = item.Status || 'Cancelled'; } else if (item.Type === 'Timer') { - status = item.Status; } else { return ''; } if (item.SeriesTimerId) { - if (status !== 'Cancelled') { return ''; } @@ -436,7 +405,6 @@ define(['require', 'inputManager', 'browser', 'globalize', 'connectionManager', } function getChannelProgramsHtml(context, date, channel, programs, options, listInfo) { - var html = ''; var startMs = date.getTime(); @@ -460,11 +428,9 @@ define(['require', 'inputManager', 'browser', 'globalize', 'connectionManager', var now = new Date().getTime(); for (var i = listInfo.startIndex, length = programs.length; i < length; i++) { - var program = programs[i]; if (program.ChannelId !== channel.Id) { - if (programsFound) { break; } @@ -595,11 +561,9 @@ define(['require', 'inputManager', 'browser', 'globalize', 'connectionManager', } function renderChannelHeaders(context, channels, apiClient) { - var html = ''; for (var i = 0, length = channels.length; i < length; i++) { - var channel = channels[i]; var hasChannelImage = channel.ImageTags.Primary; @@ -611,18 +575,15 @@ define(['require', 'inputManager', 'browser', 'globalize', 'connectionManager', var title = []; if (channel.ChannelNumber) { - title.push(channel.ChannelNumber); } if (channel.Name) { - title.push(channel.Name); } html += '