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

Add some linting rules for the CI (#587)

* enable one-var rule

* enable indent rule

* enable no-multiple-empty-lines rule

* enable no-empty rule

* enable no-trailing-spaces rule

* enable no-extra-semi rule

* add eslint rules to fix block spacing

* enable max-statements-per-line rule

* enable brace-style rule

* fix some spacing issues and add future rules

* add code suggestions
This commit is contained in:
dkanada 2019-11-23 00:29:38 +09:00 committed by Vasily
parent 0b0ea7f406
commit 3739741786
101 changed files with 883 additions and 1051 deletions

1
.eslintignore Normal file
View file

@ -0,0 +1 @@
libraries/

View file

@ -2,3 +2,26 @@ env:
es6: true es6: true
browser: true browser: true
amd: true amd: true
rules:
block-spacing: ["error"]
brace-style: ["error"]
comma-dangle: ["error", "never"]
comma-spacing: ["error"]
eol-last: ["off"]
indent: ["error", 4, { "SwitchCase": 1 }]
keyword-spacing: ["error"]
line-comment-position: ["off"]
max-statements-per-line: ["error"]
no-empty: ["error"]
no-extra-semi: ["error"]
no-floating-decimal: ["error"]
no-multi-spaces: ["error"]
no-multiple-empty-lines: ["error", { "max": 1 }]
no-trailing-spaces: ["error"]
no-void: ["off"]
one-var: ["error", "never"]
padding-line-between-statements: ["off"]
semi: ["off"]
space-before-blocks: ["error"]
yoda: ["off"]

View file

@ -6,59 +6,87 @@ var _define = window.define;
// document-register-element // document-register-element
var docRegister = require("document-register-element"); var docRegister = require("document-register-element");
_define("document-register-element", function() { return docRegister; }); _define("document-register-element", function() {
return docRegister;
});
// fetch // fetch
var fetch = require("whatwg-fetch"); var fetch = require("whatwg-fetch");
_define("fetch", function() { return fetch }); _define("fetch", function() {
return fetch
});
// flvjs // flvjs
var flvjs = require("flv.js"); var flvjs = require("flv.js");
_define("flvjs", function() { return flvjs; }); _define("flvjs", function() {
return flvjs;
});
// jstree // jstree
var jstree = require("jstree"); var jstree = require("jstree");
require("jstree/dist/themes/default/style.css"); require("jstree/dist/themes/default/style.css");
_define("jstree", function() { return jstree; }); _define("jstree", function() {
return jstree;
});
// jquery // jquery
var jquery = require("jquery"); var jquery = require("jquery");
_define("jQuery", function() { return jquery; }); _define("jQuery", function() {
return jquery;
});
// hlsjs // hlsjs
var hlsjs = require("hls.js"); var hlsjs = require("hls.js");
_define("hlsjs", function() { return hlsjs; }); _define("hlsjs", function() {
return hlsjs;
});
// howler // howler
var howler = require("howler"); var howler = require("howler");
_define("howler", function() { return howler; }); _define("howler", function() {
return howler;
});
// native-promise-only // native-promise-only
var nativePromise = require("native-promise-only"); var nativePromise = require("native-promise-only");
_define("native-promise-only", function() { return nativePromise; }); _define("native-promise-only", function() {
return nativePromise;
});
// resize-observer-polyfill // resize-observer-polyfill
var resize = require("resize-observer-polyfill"); var resize = require("resize-observer-polyfill");
_define("resize-observer-polyfill", function() { return resize; }); _define("resize-observer-polyfill", function() {
return resize;
});
// shaka // shaka
var shaka = require("shaka-player"); var shaka = require("shaka-player");
_define("shaka", function() { return shaka; }); _define("shaka", function() {
return shaka;
});
// swiper // swiper
var swiper = require("swiper"); var swiper = require("swiper");
require("swiper/dist/css/swiper.min.css"); require("swiper/dist/css/swiper.min.css");
_define("swiper", function() { return swiper; }); _define("swiper", function() {
return swiper;
});
// sortable // sortable
var sortable = require("sortablejs"); var sortable = require("sortablejs");
_define("sortable", function() { return sortable; }); _define("sortable", function() {
return sortable;
});
// webcomponents // webcomponents
var webcomponents = require("webcomponents.js-2"); var webcomponents = require("webcomponents.js-2");
_define("webcomponents", function() { return webcomponents }); _define("webcomponents", function() {
return webcomponents
});
// libjass // libjass
var libjass = require("libjass"); var libjass = require("libjass");
require("libjass/libjass.css"); require("libjass/libjass.css");
_define("libjass", function() { return libjass; }); _define("libjass", function() {
return libjass;
});

View file

@ -139,7 +139,9 @@ define(['dialogHelper', 'layoutManager', 'globalize', 'browser', 'dom', 'emby-bu
style += "min-width:" + minWidth + "px;"; style += "min-width:" + minWidth + "px;";
} }
var i, length, option; var i;
var length;
var option;
var renderIcon = false; var renderIcon = false;
var icons = []; var icons = [];
var itemIcon; var itemIcon;
@ -225,8 +227,7 @@ define(['dialogHelper', 'layoutManager', 'globalize', 'browser', 'dom', 'emby-bu
if (itemIcon) { if (itemIcon) {
html += '<i class="actionsheetMenuItemIcon listItemIcon listItemIcon-transparent md-icon">' + itemIcon + '</i>'; html += '<i class="actionsheetMenuItemIcon listItemIcon listItemIcon-transparent md-icon">' + itemIcon + '</i>';
} } else if (renderIcon && !center) {
else if (renderIcon && !center) {
html += '<i class="actionsheetMenuItemIcon listItemIcon listItemIcon-transparent md-icon" style="visibility:hidden;">check</i>'; html += '<i class="actionsheetMenuItemIcon listItemIcon listItemIcon-transparent md-icon" style="visibility:hidden;">check</i>';
} }

View file

@ -35,7 +35,7 @@ define(['browser', 'dialog', 'globalize'], function (browser, dialog, globalize)
if (result === 'ok') { if (result === 'ok') {
return Promise.resolve(); return Promise.resolve();
} }
return Promise.reject(); return Promise.reject();
}); });
} }

View file

@ -50,9 +50,7 @@ define(['focusManager', 'layoutManager', 'dom', 'css!./style.css', 'paper-icon-b
var vertical = element.classList.contains('alphaPicker-vertical'); var vertical = element.classList.contains('alphaPicker-vertical');
if (vertical) { if (!vertical) {
} else {
element.classList.add('focuscontainer-x'); element.classList.add('focuscontainer-x');
} }
@ -230,7 +228,8 @@ define(['focusManager', 'layoutManager', 'dom', 'css!./style.css', 'paper-icon-b
AlphaPicker.prototype.value = function (value, applyValue) { AlphaPicker.prototype.value = function (value, applyValue) {
var element = this.options.element; var element = this.options.element;
var btn, selected; var btn;
var selected;
if (value !== undefined) { if (value !== undefined) {
if (value != null) { if (value != null) {

View file

@ -321,7 +321,8 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana
var apiClient; var apiClient;
var lastServerId; var lastServerId;
var i, length; var i;
var length;
for (i = 0, length = items.length; i < length; i++) { for (i = 0, length = items.length; i < length; i++) {
@ -339,19 +340,14 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana
if (options.indexBy === 'PremiereDate') { if (options.indexBy === 'PremiereDate') {
if (item.PremiereDate) { if (item.PremiereDate) {
try { try {
newIndexValue = datetime.toLocaleDateString(datetime.parseISO8601Date(item.PremiereDate), { weekday: 'long', month: 'long', day: 'numeric' }); newIndexValue = datetime.toLocaleDateString(datetime.parseISO8601Date(item.PremiereDate), { weekday: 'long', month: 'long', day: 'numeric' });
} catch (err) { } catch (err) {
console.log('error parsing timestamp for premiere date');
} }
} }
} } else if (options.indexBy === 'ProductionYear') {
else if (options.indexBy === 'ProductionYear') {
newIndexValue = item.ProductionYear; newIndexValue = item.ProductionYear;
} } else if (options.indexBy === 'CommunityRating') {
else if (options.indexBy === 'CommunityRating') {
newIndexValue = item.CommunityRating ? (Math.floor(item.CommunityRating) + (item.CommunityRating % 1 >= 0.5 ? 0.5 : 0)) + '+' : null; newIndexValue = item.CommunityRating ? (Math.floor(item.CommunityRating) + (item.CommunityRating % 1 >= 0.5 ? 0.5 : 0)) + '+' : null;
} }
@ -571,22 +567,19 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana
coverImage = (Math.abs(primaryImageAspectRatio - uiAspect) / uiAspect) <= 0.2; coverImage = (Math.abs(primaryImageAspectRatio - uiAspect) / uiAspect) <= 0.2;
} }
} }
} } else if (item.ParentPrimaryImageTag) {
else if (item.ParentPrimaryImageTag) {
imgUrl = apiClient.getScaledImageUrl(item.ParentPrimaryImageItemId, { imgUrl = apiClient.getScaledImageUrl(item.ParentPrimaryImageItemId, {
type: "Primary", type: "Primary",
tag: item.ParentPrimaryImageTag tag: item.ParentPrimaryImageTag
}); });
} } else if (item.SeriesPrimaryImageTag) {
else if (item.SeriesPrimaryImageTag) {
imgUrl = apiClient.getScaledImageUrl(item.SeriesId, { imgUrl = apiClient.getScaledImageUrl(item.SeriesId, {
type: "Primary", type: "Primary",
tag: item.SeriesPrimaryImageTag tag: item.SeriesPrimaryImageTag
}); });
} } else if (item.AlbumId && item.AlbumPrimaryImageTag) {
else if (item.AlbumId && item.AlbumPrimaryImageTag) {
width = primaryImageAspectRatio ? Math.round(height * primaryImageAspectRatio) : null; width = primaryImageAspectRatio ? Math.round(height * primaryImageAspectRatio) : null;
@ -601,16 +594,14 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana
coverImage = (Math.abs(primaryImageAspectRatio - uiAspect) / uiAspect) <= 0.2; coverImage = (Math.abs(primaryImageAspectRatio - uiAspect) / uiAspect) <= 0.2;
} }
} }
} } else if (item.Type === 'Season' && item.ImageTags && item.ImageTags.Thumb) {
else if (item.Type === 'Season' && item.ImageTags && item.ImageTags.Thumb) {
imgUrl = apiClient.getScaledImageUrl(item.Id, { imgUrl = apiClient.getScaledImageUrl(item.Id, {
type: "Thumb", type: "Thumb",
tag: item.ImageTags.Thumb tag: item.ImageTags.Thumb
}); });
} } else if (item.BackdropImageTags && item.BackdropImageTags.length) {
else if (item.BackdropImageTags && item.BackdropImageTags.length) {
imgUrl = apiClient.getScaledImageUrl(item.Id, { imgUrl = apiClient.getScaledImageUrl(item.Id, {
type: "Backdrop", type: "Backdrop",
@ -681,7 +672,8 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana
var html = ''; var html = '';
var valid = 0; var valid = 0;
var i, length; var i;
var length;
for (i = 0, length = lines.length; i < length; i++) { for (i = 0, length = lines.length; i < length; i++) {
@ -745,8 +737,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana
date = datetime.parseISO8601Date(item.EndDate); date = datetime.parseISO8601Date(item.EndDate);
airTimeText += ' - ' + datetime.getDisplayTime(date); airTimeText += ' - ' + datetime.getDisplayTime(date);
} }
} } catch (e) {
catch (e) {
console.log("Error parsing date: " + item.StartDate); console.log("Error parsing date: " + item.StartDate);
} }
} }
@ -794,8 +785,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana
} else { } else {
lines.push(item.SeriesName); lines.push(item.SeriesName);
} }
} } else {
else {
if (isUsingLiveTvNaming(item)) { if (isUsingLiveTvNaming(item)) {
@ -976,8 +966,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana
if (options.showSeriesTimerChannel) { if (options.showSeriesTimerChannel) {
if (item.RecordAnyChannel) { if (item.RecordAnyChannel) {
lines.push(globalize.translate('AllChannels')); lines.push(globalize.translate('AllChannels'));
} } else {
else {
lines.push(item.ChannelName || globalize.translate('OneChannel')); lines.push(item.ChannelName || globalize.translate('OneChannel'));
} }
} }
@ -985,8 +974,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana
if (options.showPersonRoleOrType) { if (options.showPersonRoleOrType) {
if (item.Role) { if (item.Role) {
lines.push('as ' + item.Role); lines.push('as ' + item.Role);
} } else if (item.Type) {
else if (item.Type) {
lines.push(globalize.translate('' + item.Type)); lines.push(globalize.translate('' + item.Type));
} else { } else {
lines.push(''); lines.push('');
@ -1060,8 +1048,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana
counts.push(childText); counts.push(childText);
} } else if (item.Type === 'Genre' || item.Type === 'Studio') {
else if (item.Type === 'Genre' || item.Type === 'Studio') {
if (item.MovieCount) { if (item.MovieCount) {
@ -1140,8 +1127,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana
if (item.IsPremiere) { if (item.IsPremiere) {
html += '<div class="premiereTvProgram programAttributeIndicator">' + globalize.translate('Premiere') + '</div>'; html += '<div class="premiereTvProgram programAttributeIndicator">' + globalize.translate('Premiere') + '</div>';
} } else if (item.IsSeries && !item.IsRepeat) {
else if (item.IsSeries && !item.IsRepeat) {
html += '<div class="newTvProgram programAttributeIndicator">' + globalize.translate('AttributeNew') + '</div>'; html += '<div class="newTvProgram programAttributeIndicator">' + globalize.translate('AttributeNew') + '</div>';
} }
//else if (item.IsRepeat) { //else if (item.IsRepeat) {
@ -1176,8 +1162,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana
if (action === 'play' && item.IsFolder) { if (action === 'play' && item.IsFolder) {
// If this hard-coding is ever removed make sure to test nested photo albums // If this hard-coding is ever removed make sure to test nested photo albums
action = 'link'; action = 'link';
} } else if (item.MediaType === 'Photo') {
else if (item.MediaType === 'Photo') {
action = 'play'; action = 'play';
} }
@ -1272,8 +1257,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana
height: logoHeight, height: logoHeight,
tag: item.ChannelPrimaryImageTag tag: item.ChannelPrimaryImageTag
}); });
} } else if (options.showLogo && item.ParentLogoImageTag) {
else if (options.showLogo && item.ParentLogoImageTag) {
logoUrl = apiClient.getScaledImageUrl(item.ParentLogoItemId, { logoUrl = apiClient.getScaledImageUrl(item.ParentLogoItemId, {
type: "Logo", type: "Logo",
height: logoHeight, height: logoHeight,
@ -1288,8 +1272,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana
footerCssClass = progressHtml ? 'innerCardFooter fullInnerCardFooter' : 'innerCardFooter'; footerCssClass = progressHtml ? 'innerCardFooter fullInnerCardFooter' : 'innerCardFooter';
innerCardFooter += getCardFooterText(item, apiClient, options, showTitle, forceName, overlayText, imgUrl, footerCssClass, progressHtml, logoUrl, false); innerCardFooter += getCardFooterText(item, apiClient, options, showTitle, forceName, overlayText, imgUrl, footerCssClass, progressHtml, logoUrl, false);
footerOverlayed = true; footerOverlayed = true;
} } else if (progressHtml) {
else if (progressHtml) {
innerCardFooter += '<div class="innerCardFooter fullInnerCardFooter innerCardFooterClear">'; innerCardFooter += '<div class="innerCardFooter fullInnerCardFooter innerCardFooterClear">';
innerCardFooter += progressHtml; innerCardFooter += progressHtml;
innerCardFooter += '</div>'; innerCardFooter += '</div>';
@ -1394,8 +1377,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana
indicatorsHtml += indicators.getChildCountIndicatorHtml(item, { indicatorsHtml += indicators.getChildCountIndicatorHtml(item, {
minCount: 1 minCount: 1
}); });
} } else {
else {
indicatorsHtml += indicators.getPlayedIndicatorHtml(item); indicatorsHtml += indicators.getPlayedIndicatorHtml(item);
} }
@ -1656,8 +1638,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana
} }
itemProgressBar.innerHTML = progressHtml; itemProgressBar.innerHTML = progressHtml;
} } else {
else {
itemProgressBar = card.querySelector('.itemProgressBar'); itemProgressBar = card.querySelector('.itemProgressBar');
if (itemProgressBar) { if (itemProgressBar) {

View file

@ -5,7 +5,7 @@ define(['events'], function (events) {
// //
// https://github.com/ravisorg/LinkParser // https://github.com/ravisorg/LinkParser
// //
// Locate and extract almost any URL within a string. Handles protocol-less domains, IPv4 and // Locate and extract almost any URL within a string. Handles protocol-less domains, IPv4 and
// IPv6, unrecognised TLDs, and more. // IPv6, unrecognised TLDs, and more.
// //
// This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License. // This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.
@ -14,26 +14,26 @@ define(['events'], function (events) {
// Original URL regex from the Android android.text.util.Linkify function, found here: // Original URL regex from the Android android.text.util.Linkify function, found here:
// http://stackoverflow.com/a/19696443 // http://stackoverflow.com/a/19696443
// //
// However there were problems with it, most probably related to the fact it was // However there were problems with it, most probably related to the fact it was
// written in 2007, and it's been highly modified. // written in 2007, and it's been highly modified.
// //
// 1) I didn't like the fact that it was tied to specific TLDs, since new ones // 1) I didn't like the fact that it was tied to specific TLDs, since new ones
// are being added all the time it wouldn't be reasonable to expect developer to // are being added all the time it wouldn't be reasonable to expect developer to
// be continually updating their regular expressions. // be continually updating their regular expressions.
// //
// 2) It didn't allow unicode characters in the domains which are now allowed in // 2) It didn't allow unicode characters in the domains which are now allowed in
// many languages, (including some IDN TLDs). Again these are constantly being // many languages, (including some IDN TLDs). Again these are constantly being
// added to and it doesn't seem reasonable to hard-code them. Note this ended up // added to and it doesn't seem reasonable to hard-code them. Note this ended up
// not being possible in standard JS due to the way it handles multibyte strings. // not being possible in standard JS due to the way it handles multibyte strings.
// It is possible using XRegExp, however a big performance hit results. Disabled // It is possible using XRegExp, however a big performance hit results. Disabled
// for now. // for now.
// //
// 3) It didn't allow for IPv6 hostnames // 3) It didn't allow for IPv6 hostnames
// IPv6 regex from http://stackoverflow.com/a/17871737 // IPv6 regex from http://stackoverflow.com/a/17871737
// //
// 4) It was very poorly commented // 4) It was very poorly commented
// //
// 5) It wasn't as smart as it could have been about what should be part of a // 5) It wasn't as smart as it could have been about what should be part of a
// URL and what should be part of human language. // URL and what should be part of human language.
@ -102,8 +102,8 @@ define(['events'], function (events) {
+ "|(?:\\%[a-f0-9]{2})" + "|(?:\\%[a-f0-9]{2})"
// some characters are much more likely to be used AFTER a url and // some characters are much more likely to be used AFTER a url and
// were not intended to be included in the url itself. Mostly end // were not intended to be included in the url itself. Mostly end
// of sentence type things. It's also likely that the URL would // of sentence type things. It's also likely that the URL would
// still work if any of these characters were missing from the end // still work if any of these characters were missing from the end
// because we parsed it incorrectly. For these characters to be accepted // because we parsed it incorrectly. For these characters to be accepted
// they must be followed by another character that we're reasonably // they must be followed by another character that we're reasonably
// sure is part of the url // sure is part of the url

View file

@ -479,8 +479,7 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', '
TotalRecordCount: 1 TotalRecordCount: 1
}; };
}); });
} } else {
else {
query.Limit = query.Limit || 100; query.Limit = query.Limit || 100;
query.ExcludeLocationTypes = "Virtual"; query.ExcludeLocationTypes = "Virtual";
@ -752,8 +751,7 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', '
ChromecastPlayer.prototype.volumeDown = function () { ChromecastPlayer.prototype.volumeDown = function () {
var vol = this._castPlayer.session.receiver.volume.level; var vol = this._castPlayer.session.receiver.volume.level;
if (vol == null) if (vol == null) {
{
vol = 0.5; vol = 0.5;
} }
vol -= 0.05; vol -= 0.05;
@ -776,8 +774,7 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', '
ChromecastPlayer.prototype.volumeUp = function () { ChromecastPlayer.prototype.volumeUp = function () {
var vol = this._castPlayer.session.receiver.volume.level; var vol = this._castPlayer.session.receiver.volume.level;
if (vol == null) if (vol == null) {
{
vol = 0.5; vol = 0.5;
} }
vol += 0.05; vol += 0.05;

View file

@ -51,7 +51,8 @@ define(['dialogHelper', 'dom', 'layoutManager', 'scrollHelper', 'globalize', 're
dlg.querySelector('.dialogContentInner').classList.add('hide'); dlg.querySelector('.dialogContentInner').classList.add('hide');
} }
var i, length; var i;
var length;
var html = ''; var html = '';
var hasDescriptions = false; var hasDescriptions = false;

View file

@ -18,8 +18,7 @@ define(['appRouter', 'focusManager', 'browser', 'layoutManager', 'inputManager',
if (layoutManager.tv) { if (layoutManager.tv) {
if (dlg.classList.contains('scrollX')) { if (dlg.classList.contains('scrollX')) {
centerFocus(dlg, true, false); centerFocus(dlg, true, false);
} } else if (dlg.classList.contains('smoothScrollY')) {
else if (dlg.classList.contains('smoothScrollY')) {
centerFocus(dlg, false, false); centerFocus(dlg, false, false);
} }
} }
@ -168,8 +167,8 @@ define(['appRouter', 'focusManager', 'browser', 'layoutManager', 'inputManager',
close(dlg); close(dlg);
} }
}, { }, {
passive: true passive: true
}); });
} }
function isHistoryEnabled(dlg) { function isHistoryEnabled(dlg) {
@ -433,8 +432,7 @@ define(['appRouter', 'focusManager', 'browser', 'layoutManager', 'inputManager',
if (layoutManager.tv) { if (layoutManager.tv) {
centerFocus(dlg, true, true); centerFocus(dlg, true, true);
} }
} } else if (options.scrollY !== false) {
else if (options.scrollY !== false) {
dlg.classList.add('smoothScrollY'); dlg.classList.add('smoothScrollY');
if (layoutManager.tv) { if (layoutManager.tv) {

View file

@ -115,7 +115,7 @@ define(['loading', 'dialogHelper', 'dom', 'listViewStyle', 'emby-input', 'paper-
var readOnlyAttribute = options.pathReadOnly ? " readonly" : ""; var readOnlyAttribute = options.pathReadOnly ? " readonly" : "";
html += '<input is="emby-input" id="txtDirectoryPickerPath" type="text" required="required" ' + readOnlyAttribute + ' label="' + Globalize.translate(labelKey) + '"/>'; html += '<input is="emby-input" id="txtDirectoryPickerPath" type="text" required="required" ' + readOnlyAttribute + ' label="' + Globalize.translate(labelKey) + '"/>';
html += "</div>"; html += "</div>";
if (!readOnlyAttribute) { if (!readOnlyAttribute) {
html += '<button type="button" is="paper-icon-button-light" class="btnRefreshDirectories emby-input-iconbutton" title="' + Globalize.translate("ButtonRefresh") + '"><i class="md-icon">search</i></button>'; html += '<button type="button" is="paper-icon-button-light" class="btnRefreshDirectories emby-input-iconbutton" title="' + Globalize.translate("ButtonRefresh") + '"><i class="md-icon">search</i></button>';
} }
html += "</div>"; html += "</div>";
@ -188,9 +188,9 @@ define(['loading', 'dialogHelper', 'dom', 'listViewStyle', 'emby-input', 'paper-
var path = lnkPath.getAttribute("data-path"); var path = lnkPath.getAttribute("data-path");
if (lnkPath.classList.contains("lnkFile")) { if (lnkPath.classList.contains("lnkFile")) {
content.querySelector("#txtDirectoryPickerPath").value = path; content.querySelector("#txtDirectoryPickerPath").value = path;
} else { } else {
refreshDirectoryBrowser(content, path, fileOptions, true) refreshDirectoryBrowser(content, path, fileOptions, true)
}; }
} }
}); });
@ -254,10 +254,10 @@ define(['loading', 'dialogHelper', 'dom', 'listViewStyle', 'emby-input', 'paper-
var systemInfo = responses[0]; var systemInfo = responses[0];
var initialPath = responses[1]; var initialPath = responses[1];
var dlg = dialogHelper.createDialog({ var dlg = dialogHelper.createDialog({
size: "medium-tall", size: "medium-tall",
removeOnClose: true, removeOnClose: true,
scrollY: false scrollY: false
}); });
dlg.classList.add("ui-body-a"); dlg.classList.add("ui-body-a");
dlg.classList.add("background-theme-a"); dlg.classList.add("background-theme-a");
dlg.classList.add("directoryPicker"); dlg.classList.add("directoryPicker");

View file

@ -68,7 +68,9 @@ define([], function () {
} }
}); });
window.addEventListener("test", null, opts); window.addEventListener("test", null, opts);
} catch (e) { } } catch (e) {
console.log('error checking capture support');
}
function addEventListenerWithOptions(target, type, handler, options) { function addEventListenerWithOptions(target, type, handler, options) {
var optionsOrCapture = options; var optionsOrCapture = options;
@ -116,8 +118,8 @@ define([], function () {
return _animationEvent; return _animationEvent;
} }
var t, var t;
el = document.createElement("div"); var el = document.createElement("div");
var animations = { var animations = {
"animation": "animationend", "animation": "animationend",
"OAnimation": "oAnimationEnd", "OAnimation": "oAnimationEnd",
@ -146,8 +148,8 @@ define([], function () {
return _transitionEvent; return _transitionEvent;
} }
var t, var t;
el = document.createElement("div"); var el = document.createElement("div");
var transitions = { var transitions = {
"transition": "transitionend", "transition": "transitionend",
"OTransition": "oTransitionEnd", "OTransition": "oTransitionEnd",

View file

@ -28,11 +28,12 @@ define(['layoutManager', 'browser', 'dom', 'css!./emby-input', 'registerElement'
} }
EmbyInputPrototype.createdCallback = function () { EmbyInputPrototype.createdCallback = function () {
if (!this.id) { if (!this.id) {
this.id = 'embyinput' + inputId; this.id = 'embyinput' + inputId;
inputId++; inputId++;
} if (this.classList.contains('emby-input')) { }
if (this.classList.contains('emby-input')) {
return; return;
} }

View file

@ -47,8 +47,7 @@ define(['require', 'css!./emby-progressring', 'registerElement'], function (requ
this.querySelector('.animate-25-50-b').style.transform = 'rotate(-90deg)'; this.querySelector('.animate-25-50-b').style.transform = 'rotate(-90deg)';
this.querySelector('.animate-50-75-b').style.transform = 'rotate(-90deg)'; this.querySelector('.animate-50-75-b').style.transform = 'rotate(-90deg)';
this.querySelector('.animate-75-100-b').style.transform = 'rotate(-90deg)'; this.querySelector('.animate-75-100-b').style.transform = 'rotate(-90deg)';
} } else if (progress >= 25 && progress < 50) {
else if (progress >= 25 && progress < 50) {
angle = -90 + ((progress - 25) / 100) * 360; angle = -90 + ((progress - 25) / 100) * 360;
@ -57,8 +56,7 @@ define(['require', 'css!./emby-progressring', 'registerElement'], function (requ
this.querySelector('.animate-50-75-b').style.transform = 'rotate(-90deg)'; this.querySelector('.animate-50-75-b').style.transform = 'rotate(-90deg)';
this.querySelector('.animate-75-100-b').style.transform = 'rotate(-90deg)'; this.querySelector('.animate-75-100-b').style.transform = 'rotate(-90deg)';
} } else if (progress >= 50 && progress < 75) {
else if (progress >= 50 && progress < 75) {
angle = -90 + ((progress - 50) / 100) * 360; angle = -90 + ((progress - 50) / 100) * 360;
this.querySelector('.animate-0-25-b').style.transform = 'none'; this.querySelector('.animate-0-25-b').style.transform = 'none';
@ -66,8 +64,7 @@ define(['require', 'css!./emby-progressring', 'registerElement'], function (requ
this.querySelector('.animate-50-75-b').style.transform = 'rotate(' + angle + 'deg)'; this.querySelector('.animate-50-75-b').style.transform = 'rotate(' + angle + 'deg)';
this.querySelector('.animate-75-100-b').style.transform = 'rotate(-90deg)'; this.querySelector('.animate-75-100-b').style.transform = 'rotate(-90deg)';
} } else if (progress >= 75 && progress <= 100) {
else if (progress >= 75 && progress <= 100) {
angle = -90 + ((progress - 75) / 100) * 360; angle = -90 + ((progress - 75) / 100) * 360;
this.querySelector('.animate-0-25-b').style.transform = 'none'; this.querySelector('.animate-0-25-b').style.transform = 'none';
@ -85,7 +82,6 @@ define(['require', 'css!./emby-progressring', 'registerElement'], function (requ
EmbyProgressRing.detachedCallback = function () { EmbyProgressRing.detachedCallback = function () {
var observer = this.observer; var observer = this.observer;
if (observer) { if (observer) {

View file

@ -142,7 +142,7 @@ define(['dom', 'scroller', 'browser', 'layoutManager', 'focusManager', 'register
tabs.classList.add('scrollX'); tabs.classList.add('scrollX');
tabs.classList.add('hiddenScrollX'); tabs.classList.add('hiddenScrollX');
tabs.classList.add('smoothScrollX'); tabs.classList.add('smoothScrollX');
} }
} }
EmbyTabs.createdCallback = function () { EmbyTabs.createdCallback = function () {

View file

@ -14,9 +14,9 @@ define(['layoutManager', 'browser', 'css!./emby-textarea', 'registerElement', 'e
* @returns {number} * @returns {number}
*/ */
self.getOffset = function (textarea) { self.getOffset = function (textarea) {
var style = window.getComputedStyle(textarea, null), var style = window.getComputedStyle(textarea, null);
props = ['paddingTop', 'paddingBottom'], var props = ['paddingTop', 'paddingBottom'];
offset = 0; var offset = 0;
for (var i = 0; i < props.length; i++) { for (var i = 0; i < props.length; i++) {
offset += parseInt(style[props[i]]); offset += parseInt(style[props[i]]);
@ -43,13 +43,13 @@ define(['layoutManager', 'browser', 'css!./emby-textarea', 'registerElement', 'e
textarea.rows = 3; textarea.rows = 3;
return; return;
} }
var newHeight = 0, hasGrown = false; var newHeight = 0;
var hasGrown = false;
if ((textarea.scrollHeight - offset) > self.maxAllowedHeight) { if ((textarea.scrollHeight - offset) > self.maxAllowedHeight) {
textarea.style.overflowY = 'scroll'; textarea.style.overflowY = 'scroll';
newHeight = self.maxAllowedHeight; newHeight = self.maxAllowedHeight;
} } else {
else {
textarea.style.overflowY = 'hidden'; textarea.style.overflowY = 'hidden';
textarea.style.height = 'auto'; textarea.style.height = 'auto';
newHeight = textarea.scrollHeight/* - offset*/; newHeight = textarea.scrollHeight/* - offset*/;

View file

@ -94,7 +94,8 @@ define(['require', 'dom', 'focusManager', 'dialogHelper', 'loading', 'apphost',
context.querySelector('form').addEventListener('submit', onSubmit); context.querySelector('form').addEventListener('submit', onSubmit);
var elems = context.querySelectorAll('.simpleFilter'); var elems = context.querySelectorAll('.simpleFilter');
var i, length; var i;
var length;
for (i = 0, length = elems.length; i < length; i++) { for (i = 0, length = elems.length; i < length; i++) {
@ -137,7 +138,8 @@ define(['require', 'dom', 'focusManager', 'dialogHelper', 'loading', 'apphost',
function saveValues(context, settings, settingsKey) { function saveValues(context, settings, settingsKey) {
var elems = context.querySelectorAll('.simpleFilter'); var elems = context.querySelectorAll('.simpleFilter');
var i, length; var i;
var length;
for (i = 0, length = elems.length; i < length; i++) { for (i = 0, length = elems.length; i < length; i++) {
if (elems[i].tagName === 'INPUT') { if (elems[i].tagName === 'INPUT') {

View file

@ -99,7 +99,7 @@ define(['dom'], function (dom) {
return normalizeFocusable(elem, originalElement); return normalizeFocusable(elem, originalElement);
} }
// Determines if a focusable element can be focused at a given point in time // Determines if a focusable element can be focused at a given point in time
function isCurrentlyFocusableInternal(elem) { function isCurrentlyFocusableInternal(elem) {
// http://stackoverflow.com/questions/19669786/check-if-element-is-visible-in-dom // http://stackoverflow.com/questions/19669786/check-if-element-is-visible-in-dom
@ -110,7 +110,7 @@ define(['dom'], function (dom) {
return true; return true;
} }
// Determines if a focusable element can be focused at a given point in time // Determines if a focusable element can be focused at a given point in time
function isCurrentlyFocusable(elem) { function isCurrentlyFocusable(elem) {
if (elem.disabled) { if (elem.disabled) {
@ -181,21 +181,18 @@ define(['dom'], function (dom) {
if (classList.contains('focuscontainer-left')) { if (classList.contains('focuscontainer-left')) {
return true; return true;
} }
} } else if (direction === 1) {
else if (direction === 1) {
if (classList.contains('focuscontainer-x')) { if (classList.contains('focuscontainer-x')) {
return true; return true;
} }
if (classList.contains('focuscontainer-right')) { if (classList.contains('focuscontainer-right')) {
return true; return true;
} }
} } else if (direction === 2) {
else if (direction === 2) {
if (classList.contains('focuscontainer-y')) { if (classList.contains('focuscontainer-y')) {
return true; return true;
} }
} } else if (direction === 3) {
else if (direction === 3) {
if (classList.contains('focuscontainer-y')) { if (classList.contains('focuscontainer-y')) {
return true; return true;
} }
@ -275,14 +272,14 @@ define(['dom'], function (dom) {
var rect = getOffset(activeElement); var rect = getOffset(activeElement);
// Get elements and work out x/y points // Get elements and work out x/y points
var cache = [], var cache = [];
point1x = parseFloat(rect.left) || 0, var point1x = parseFloat(rect.left) || 0;
point1y = parseFloat(rect.top) || 0, var point1y = parseFloat(rect.top) || 0;
point2x = parseFloat(point1x + rect.width - 1) || point1x, var point2x = parseFloat(point1x + rect.width - 1) || point1x;
point2y = parseFloat(point1y + rect.height - 1) || point1y, var point2y = parseFloat(point1y + rect.height - 1) || point1y;
// Shortcuts to help with compression // Shortcuts to help with compression
min = Math.min, var min = Math.min;
max = Math.max; var max = Math.max;
var sourceMidX = rect.left + (rect.width / 2); var sourceMidX = rect.left + (rect.width / 2);
var sourceMidY = rect.top + (rect.height / 2); var sourceMidY = rect.top + (rect.height / 2);
@ -357,10 +354,10 @@ define(['dom'], function (dom) {
break; break;
} }
var x = elementRect.left, var x = elementRect.left;
y = elementRect.top, var y = elementRect.top;
x2 = x + elementRect.width - 1, var x2 = x + elementRect.width - 1;
y2 = y + elementRect.height - 1; var y2 = y + elementRect.height - 1;
var intersectX = intersects(point1x, point2x, x, x2); var intersectX = intersects(point1x, point2x, x, x2);
var intersectY = intersects(point1y, point2y, y, y2); var intersectY = intersects(point1y, point2y, y, y2);
@ -470,7 +467,9 @@ define(['dom'], function (dom) {
var elems = container.querySelectorAll(focusableSelector); var elems = container.querySelectorAll(focusableSelector);
var list = []; var list = [];
var i, length, elem; var i;
var length;
var elem;
for (i = 0, length = elems.length; i < length; i++) { for (i = 0, length = elems.length; i < length; i++) {
@ -513,32 +512,24 @@ define(['dom'], function (dom) {
focusableParent: focusableParent, focusableParent: focusableParent,
getFocusableElements: getFocusableElements, getFocusableElements: getFocusableElements,
moveLeft: function (sourceElement, options) { moveLeft: function (sourceElement, options) {
var container = options ? options.container : null; var container = options ? options.container : null;
var focusableElements = options ? options.focusableElements : null; var focusableElements = options ? options.focusableElements : null;
nav(sourceElement, 0, container, focusableElements); nav(sourceElement, 0, container, focusableElements);
}, },
moveRight: function (sourceElement, options) { moveRight: function (sourceElement, options) {
var container = options ? options.container : null; var container = options ? options.container : null;
var focusableElements = options ? options.focusableElements : null; var focusableElements = options ? options.focusableElements : null;
nav(sourceElement, 1, container, focusableElements); nav(sourceElement, 1, container, focusableElements);
}, },
moveUp: function (sourceElement, options) { moveUp: function (sourceElement, options) {
var container = options ? options.container : null; var container = options ? options.container : null;
var focusableElements = options ? options.focusableElements : null; var focusableElements = options ? options.focusableElements : null;
nav(sourceElement, 2, container, focusableElements); nav(sourceElement, 2, container, focusableElements);
}, },
moveDown: function (sourceElement, options) { moveDown: function (sourceElement, options) {
var container = options ? options.container : null; var container = options ? options.container : null;
var focusableElements = options ? options.focusableElements : null; var focusableElements = options ? options.focusableElements : null;
nav(sourceElement, 3, container, focusableElements); nav(sourceElement, 3, container, focusableElements);
}, },
sendText: sendText, sendText: sendText,
isCurrentlyFocusable: isCurrentlyFocusable, isCurrentlyFocusable: isCurrentlyFocusable,

View file

@ -55,7 +55,7 @@ define(['events', 'dom', 'apphost', 'browser'], function (events, dom, appHost,
return document.fullscreen || return document.fullscreen ||
document.mozFullScreen || document.mozFullScreen ||
document.webkitIsFullScreen || document.webkitIsFullScreen ||
document.msFullscreenElement || /* IE/Edge syntax */ document.msFullscreenElement || /* IE/Edge syntax */
document.fullscreenElement || /* Standard syntax */ document.fullscreenElement || /* Standard syntax */
document.webkitFullscreenElement || /* Chrome, Safari and Opera syntax */ document.webkitFullscreenElement || /* Chrome, Safari and Opera syntax */
document.mozFullScreenElement; /* Firefox syntax */ document.mozFullScreenElement; /* Firefox syntax */

View file

@ -39,7 +39,8 @@ define(['dialogHelper', 'globalize', 'userSettings', 'layoutManager', 'connectio
function save(context) { function save(context) {
var i, length; var i;
var length;
var chkIndicators = context.querySelectorAll('.chkIndicator'); var chkIndicators = context.querySelectorAll('.chkIndicator');
for (i = 0, length = chkIndicators.length; i < length; i++) { for (i = 0, length = chkIndicators.length; i < length; i++) {
@ -62,7 +63,8 @@ define(['dialogHelper', 'globalize', 'userSettings', 'layoutManager', 'connectio
function load(context) { function load(context) {
var i, length; var i;
var length;
var chkIndicators = context.querySelectorAll('.chkIndicator'); var chkIndicators = context.querySelectorAll('.chkIndicator');
for (i = 0, length = chkIndicators.length; i < length; i++) { for (i = 0, length = chkIndicators.length; i < length; i++) {

View file

@ -277,7 +277,7 @@ define(['require', 'inputManager', 'browser', 'globalize', 'connectionManager',
var nextDay = new Date(date.getTime() + msPerDay - 2000); var nextDay = new Date(date.getTime() + msPerDay - 2000);
// Normally we'd want to just let responsive css handle this, // Normally we'd want to just let responsive css handle this,
// but since mobile browsers are often underpowered, // but since mobile browsers are often underpowered,
// it can help performance to get them out of the markup // it can help performance to get them out of the markup
var allowIndicators = dom.getWindowSize().innerWidth >= 600; var allowIndicators = dom.getWindowSize().innerWidth >= 600;
@ -392,27 +392,20 @@ define(['require', 'inputManager', 'browser', 'globalize', 'connectionManager',
} }
function parseDates(program) { function parseDates(program) {
if (!program.StartDateLocal) { if (!program.StartDateLocal) {
try { try {
program.StartDateLocal = datetime.parseISO8601Date(program.StartDate, { toLocal: true }); program.StartDateLocal = datetime.parseISO8601Date(program.StartDate, { toLocal: true });
} catch (err) { } catch (err) {
console.log('error parsing timestamp for start date');
} }
} }
if (!program.EndDateLocal) { if (!program.EndDateLocal) {
try { try {
program.EndDateLocal = datetime.parseISO8601Date(program.EndDate, { toLocal: true }); program.EndDateLocal = datetime.parseISO8601Date(program.EndDate, { toLocal: true });
} catch (err) { } catch (err) {
console.log('error parsing timestamp for end date');
} }
} }
return null; return null;
@ -424,16 +417,13 @@ define(['require', 'inputManager', 'browser', 'globalize', 'connectionManager',
if (item.Type === 'SeriesTimer') { if (item.Type === 'SeriesTimer') {
return '<i class="md-icon programIcon seriesTimerIcon">&#xE062;</i>'; return '<i class="md-icon programIcon seriesTimerIcon">&#xE062;</i>';
} } else if (item.TimerId || item.SeriesTimerId) {
else if (item.TimerId || item.SeriesTimerId) {
status = item.Status || 'Cancelled'; status = item.Status || 'Cancelled';
} } else if (item.Type === 'Timer') {
else if (item.Type === 'Timer') {
status = item.Status; status = item.Status;
} } else {
else {
return ''; return '';
} }
@ -529,11 +519,9 @@ define(['require', 'inputManager', 'browser', 'globalize', 'connectionManager',
} else if (program.IsMovie) { } else if (program.IsMovie) {
displayInnerContent = displayMovieContent; displayInnerContent = displayMovieContent;
accentCssClass = 'movie'; accentCssClass = 'movie';
} } else if (program.IsSeries) {
else if (program.IsSeries) {
displayInnerContent = displaySeriesContent; displayInnerContent = displaySeriesContent;
} } else {
else {
displayInnerContent = displayMovieContent && displayNewsContent && displaySportsContent && displayKidsContent && displaySeriesContent; displayInnerContent = displayMovieContent && displayNewsContent && displaySportsContent && displayKidsContent && displaySeriesContent;
} }
@ -569,14 +557,11 @@ define(['require', 'inputManager', 'browser', 'globalize', 'connectionManager',
var indicatorHtml = null; var indicatorHtml = null;
if (program.IsLive && options.showLiveIndicator) { if (program.IsLive && options.showLiveIndicator) {
indicatorHtml = '<span class="liveTvProgram guideProgramIndicator">' + globalize.translate('Live') + '</span>'; indicatorHtml = '<span class="liveTvProgram guideProgramIndicator">' + globalize.translate('Live') + '</span>';
} } else if (program.IsPremiere && options.showPremiereIndicator) {
else if (program.IsPremiere && options.showPremiereIndicator) {
indicatorHtml = '<span class="premiereTvProgram guideProgramIndicator">' + globalize.translate('Premiere') + '</span>'; indicatorHtml = '<span class="premiereTvProgram guideProgramIndicator">' + globalize.translate('Premiere') + '</span>';
} } else if (program.IsSeries && !program.IsRepeat && options.showNewIndicator) {
else if (program.IsSeries && !program.IsRepeat && options.showNewIndicator) {
indicatorHtml = '<span class="newTvProgram guideProgramIndicator">' + globalize.translate('AttributeNew') + '</span>'; indicatorHtml = '<span class="newTvProgram guideProgramIndicator">' + globalize.translate('AttributeNew') + '</span>';
} } else if (program.IsSeries && program.IsRepeat && options.showRepeatIndicator) {
else if (program.IsSeries && program.IsRepeat && options.showRepeatIndicator) {
indicatorHtml = '<span class="repeatTvProgram guideProgramIndicator">' + globalize.translate('Repeat') + '</span>'; indicatorHtml = '<span class="repeatTvProgram guideProgramIndicator">' + globalize.translate('Repeat') + '</span>';
} }
html += indicatorHtml || ''; html += indicatorHtml || '';
@ -614,7 +599,6 @@ define(['require', 'inputManager', 'browser', 'globalize', 'connectionManager',
return html; return html;
} }
function renderChannelHeaders(context, channels, apiClient) { function renderChannelHeaders(context, channels, apiClient) {
var html = ''; var html = '';
@ -1079,17 +1063,13 @@ define(['require', 'inputManager', 'browser', 'globalize', 'connectionManager',
scrollHelper.toStart(programGrid, programCell, true, true); scrollHelper.toStart(programGrid, programCell, true, true);
} }
} } else if (lastFocusDirection === 'right') {
else if (lastFocusDirection === 'right') {
if (programCell) { if (programCell) {
scrollHelper.toCenter(programGrid, programCell, true, true); scrollHelper.toCenter(programGrid, programCell, true, true);
} }
} } else if (lastFocusDirection === 'up' || lastFocusDirection === 'down') {
else if (lastFocusDirection === 'up' || lastFocusDirection === 'down') {
var verticalScroller = dom.parentWithClass(target, 'guideVerticalScroller'); var verticalScroller = dom.parentWithClass(target, 'guideVerticalScroller');
if (verticalScroller) { if (verticalScroller) {
@ -1195,14 +1175,14 @@ define(['require', 'inputManager', 'browser', 'globalize', 'connectionManager',
dom.addEventListener(programGrid, 'scroll', function (e) { dom.addEventListener(programGrid, 'scroll', function (e) {
onProgramGridScroll(context, this, timeslotHeaders); onProgramGridScroll(context, this, timeslotHeaders);
}, { }, {
passive: true passive: true
}); });
dom.addEventListener(timeslotHeaders, 'scroll', function () { dom.addEventListener(timeslotHeaders, 'scroll', function () {
onTimeslotHeadersScroll(context, this); onTimeslotHeadersScroll(context, this);
}, { }, {
passive: true passive: true
}); });
programGrid.addEventListener('click', onProgramGridClick); programGrid.addEventListener('click', onProgramGridClick);

View file

@ -255,8 +255,8 @@ define(['dom', 'layoutManager', 'browser', 'css!./headroom'], function (dom, lay
* @return {bool} true if should unpin, false otherwise * @return {bool} true if should unpin, false otherwise
*/ */
this.shouldUnpin = function (currentScrollY) { this.shouldUnpin = function (currentScrollY) {
var scrollingDown = currentScrollY > this.lastKnownScrollY, var scrollingDown = currentScrollY > this.lastKnownScrollY;
pastOffset = currentScrollY >= this.offset; var pastOffset = currentScrollY >= this.offset;
return scrollingDown && pastOffset; return scrollingDown && pastOffset;
}; };
@ -267,8 +267,8 @@ define(['dom', 'layoutManager', 'browser', 'css!./headroom'], function (dom, lay
* @return {bool} true if should pin, false otherwise * @return {bool} true if should pin, false otherwise
*/ */
this.shouldPin = function (currentScrollY) { this.shouldPin = function (currentScrollY) {
var scrollingUp = currentScrollY < this.lastKnownScrollY, var scrollingUp = currentScrollY < this.lastKnownScrollY;
pastOffset = currentScrollY <= this.offset; var pastOffset = currentScrollY <= this.offset;
return scrollingUp || pastOffset; return scrollingUp || pastOffset;
}; };
@ -290,11 +290,9 @@ define(['dom', 'layoutManager', 'browser', 'css!./headroom'], function (dom, lay
if (currentScrollY <= (isTv ? 120 : 10)) { if (currentScrollY <= (isTv ? 120 : 10)) {
this.clear(); this.clear();
} } else if (this.shouldUnpin(currentScrollY)) {
else if (this.shouldUnpin(currentScrollY)) {
this.unpin(); this.unpin();
} } else if (this.shouldPin(currentScrollY)) {
else if (this.shouldPin(currentScrollY)) {
var toleranceExceeded = Math.abs(currentScrollY - lastKnownScrollY) >= 14; var toleranceExceeded = Math.abs(currentScrollY - lastKnownScrollY) >= 14;
@ -310,7 +308,6 @@ define(['dom', 'layoutManager', 'browser', 'css!./headroom'], function (dom, lay
this.lastKnownScrollY = currentScrollY; this.lastKnownScrollY = currentScrollY;
}; };
if (browser.supportsCssAnimation()) { if (browser.supportsCssAnimation()) {
for (var i = 0, length = this.elems.length; i < length; i++) { for (var i = 0, length = this.elems.length; i < length; i++) {
this.elems[i].classList.add(this.initialClass); this.elems[i].classList.add(this.initialClass);

View file

@ -57,8 +57,7 @@ define(['require', 'apphost', 'layoutManager', 'focusManager', 'globalize', 'loa
name: globalize.translate('Collections'), name: globalize.translate('Collections'),
value: 'collections' value: 'collections'
}); });
} } else if (type === 'tvshows') {
else if (type === 'tvshows') {
list.push({ list.push({
name: globalize.translate('Shows'), name: globalize.translate('Shows'),
@ -78,8 +77,7 @@ define(['require', 'apphost', 'layoutManager', 'focusManager', 'globalize', 'loa
name: globalize.translate('Favorites'), name: globalize.translate('Favorites'),
value: 'favorites' value: 'favorites'
}); });
} } else if (type === 'music') {
else if (type === 'music') {
list.push({ list.push({
name: globalize.translate('Suggestions'), name: globalize.translate('Suggestions'),
@ -111,8 +109,7 @@ define(['require', 'apphost', 'layoutManager', 'focusManager', 'globalize', 'loa
name: globalize.translate('Genres'), name: globalize.translate('Genres'),
value: 'genres' value: 'genres'
}); });
} } else if (type === 'livetv') {
else if (type === 'livetv') {
list.push({ list.push({
name: globalize.translate('Suggestions'), name: globalize.translate('Suggestions'),
@ -256,7 +253,6 @@ define(['require', 'apphost', 'layoutManager', 'focusManager', 'globalize', 'loa
html += '</div>'; html += '</div>';
} }
return html; return html;
} }
@ -384,7 +380,8 @@ define(['require', 'apphost', 'layoutManager', 'focusManager', 'globalize', 'loa
var viewItems = context.querySelectorAll('.viewItem'); var viewItems = context.querySelectorAll('.viewItem');
var orderedViews = []; var orderedViews = [];
var i, length; var i;
var length;
for (i = 0, length = viewItems.length; i < length; i++) { for (i = 0, length = viewItems.length; i < length; i++) {
orderedViews.push(viewItems[i].getAttribute('data-viewid')); orderedViews.push(viewItems[i].getAttribute('data-viewid'));
} }

View file

@ -1,4 +1,4 @@
define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'layoutManager', 'imageLoader', 'globalize', 'itemShortcuts', 'itemHelper', 'appRouter', 'scripts/imagehelper','paper-icon-button-light', 'emby-itemscontainer', 'emby-scroller', 'emby-button', 'css!./homesections'], function (connectionManager, cardBuilder, appSettings, dom, appHost, layoutManager, imageLoader, globalize, itemShortcuts, itemHelper, appRouter, imageHelper) { define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'layoutManager', 'imageLoader', 'globalize', 'itemShortcuts', 'itemHelper', 'appRouter', 'scripts/imagehelper', 'paper-icon-button-light', 'emby-itemscontainer', 'emby-scroller', 'emby-button', 'css!./homesections'], function (connectionManager, cardBuilder, appSettings, dom, appHost, layoutManager, imageLoader, globalize, itemShortcuts, itemHelper, appRouter, imageHelper) {
'use strict'; 'use strict';
function getDefaultSection(index) { function getDefaultSection(index) {
@ -83,7 +83,8 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la
function resume(elem, options) { function resume(elem, options) {
var elems = elem.querySelectorAll('.itemsContainer'); var elems = elem.querySelectorAll('.itemsContainer');
var i, length; var i;
var length;
var promises = []; var promises = [];
for (i = 0, length = elems.length; i < length; i++) { for (i = 0, length = elems.length; i < length; i++) {
@ -567,7 +568,7 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la
html += '<a is="emby-linkbutton" href="' + appRouter.getRouteUrl('livetv', { html += '<a is="emby-linkbutton" href="' + appRouter.getRouteUrl('livetv', {
serverId: apiClient.serverId(), serverId: apiClient.serverId(),
section: 'programs' section: 'programs'
}) + '" class="raised"><span>' + globalize.translate('Programs') + '</span></a>'; }) + '" class="raised"><span>' + globalize.translate('Programs') + '</span></a>';
html += '<a is="emby-linkbutton" href="' + appRouter.getRouteUrl('livetv', { html += '<a is="emby-linkbutton" href="' + appRouter.getRouteUrl('livetv', {

View file

@ -12,7 +12,6 @@ define(['appSettings', 'browser', 'events'], function (appSettings, browser, eve
} }
function getCrossOriginValue(mediaSource) { function getCrossOriginValue(mediaSource) {
if (mediaSource.IsRemote) { if (mediaSource.IsRemote) {
return null; return null;
} }
@ -97,7 +96,8 @@ define(['appSettings', 'browser', 'events'], function (appSettings, browser, eve
return true; return true;
} }
var recoverDecodingErrorDate, recoverSwapAudioCodecDate; var recoverDecodingErrorDate;
var recoverSwapAudioCodecDate;
function handleHlsJsMediaError(instance, reject) { function handleHlsJsMediaError(instance, reject) {
var hlsPlayer = instance._hlsPlayer; var hlsPlayer = instance._hlsPlayer;
@ -144,7 +144,8 @@ define(['appSettings', 'browser', 'events'], function (appSettings, browser, eve
events.trigger(instance, 'error', [ events.trigger(instance, 'error', [
{ {
type: type type: type
}]); }
]);
} }
function isValidDuration(duration) { function isValidDuration(duration) {
@ -156,7 +157,6 @@ define(['appSettings', 'browser', 'events'], function (appSettings, browser, eve
} }
function setCurrentTimeIfNeeded(element, seconds) { function setCurrentTimeIfNeeded(element, seconds) {
if (Math.abs(element.currentTime || 0, seconds) <= 1) { if (Math.abs(element.currentTime || 0, seconds) <= 1) {
element.currentTime = seconds; element.currentTime = seconds;
} }
@ -354,9 +354,7 @@ define(['appSettings', 'browser', 'events'], function (appSettings, browser, eve
} else { } else {
onErrorInternal(instance, 'network'); onErrorInternal(instance, 'network');
} }
} } else {
else {
console.log("fatal network error encountered, try to recover"); console.log("fatal network error encountered, try to recover");
hls.startLoad(); hls.startLoad();
} }

View file

@ -52,7 +52,7 @@ define(['events', 'browser', 'require', 'apphost', 'appSettings', 'htmlMediaHelp
function supportsFade() { function supportsFade() {
if (browser.tv) { if (browser.tv) {
// Not working on tizen. // Not working on tizen.
// We could possibly enable on other tv's, but all smart tv browsers tend to be pretty primitive // We could possibly enable on other tv's, but all smart tv browsers tend to be pretty primitive
return false; return false;
} }
@ -168,7 +168,6 @@ define(['events', 'browser', 'require', 'apphost', 'appSettings', 'htmlMediaHelp
}); });
}); });
}, function () { }, function () {
elem.autoplay = true; elem.autoplay = true;

View file

@ -298,10 +298,10 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa
type: 'flv', type: 'flv',
url: url url: url
}, },
{ {
seekType: 'range', seekType: 'range',
lazyLoad: false lazyLoad: false
}); });
flvPlayer.attachMediaElement(elem); flvPlayer.attachMediaElement(elem);
flvPlayer.load(); flvPlayer.load();
@ -420,7 +420,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa
function onMediaManagerLoadMedia(event) { function onMediaManagerLoadMedia(event) {
if (self._castPlayer) { if (self._castPlayer) {
self._castPlayer.unload(); // Must unload before starting again. self._castPlayer.unload(); // Must unload before starting again.
} }
self._castPlayer = null; self._castPlayer = null;
@ -532,12 +532,8 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa
} else*/ if (browser.chromecast && val.indexOf('.m3u8') !== -1 && options.mediaSource.RunTimeTicks) { } else*/ if (browser.chromecast && val.indexOf('.m3u8') !== -1 && options.mediaSource.RunTimeTicks) {
return setCurrentSrcChromecast(self, elem, options, val); return setCurrentSrcChromecast(self, elem, options, val);
} } else if (htmlMediaHelper.enableHlsJsPlayer(options.mediaSource.RunTimeTicks, 'Video') && val.indexOf('.m3u8') !== -1) {
else if (htmlMediaHelper.enableHlsJsPlayer(options.mediaSource.RunTimeTicks, 'Video') && val.indexOf('.m3u8') !== -1) {
return setSrcWithHlsJs(self, elem, options, val); return setSrcWithHlsJs(self, elem, options, val);
} else if (options.playMethod !== 'Transcode' && options.mediaSource.Container === 'flv') { } else if (options.playMethod !== 'Transcode' && options.mediaSource.Container === 'flv') {
return setSrcWithFlvJs(self, elem, options, val); return setSrcWithFlvJs(self, elem, options, val);
@ -577,7 +573,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa
var offsetValue = parseFloat(offset); var offsetValue = parseFloat(offset);
// if .ass currently rendering // if .ass currently rendering
if (currentAssRenderer){ if (currentAssRenderer) {
updateCurrentTrackOffset(offsetValue); updateCurrentTrackOffset(offsetValue);
} else { } else {
var videoElement = self._mediaElement; var videoElement = self._mediaElement;
@ -586,22 +582,22 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa
Array.from(videoElement.textTracks) Array.from(videoElement.textTracks)
.filter(function(trackElement) { .filter(function(trackElement) {
// get showing .vtt textTacks // get showing .vtt textTacks
return trackElement.mode === 'showing'; return trackElement.mode === 'showing';
}) })
.forEach(function(trackElement) { .forEach(function(trackElement) {
var track = customTrackIndex === -1 ? null : mediaStreamTextTracks.filter(function (t) { var track = customTrackIndex === -1 ? null : mediaStreamTextTracks.filter(function (t) {
return t.Index === customTrackIndex; return t.Index === customTrackIndex;
})[0]; })[0];
if (track) { if (track) {
offsetValue = updateCurrentTrackOffset(offsetValue); offsetValue = updateCurrentTrackOffset(offsetValue);
setVttSubtitleOffset(trackElement, offsetValue); setVttSubtitleOffset(trackElement, offsetValue);
} else { } else {
console.log("No available track, cannot apply offset : " + offsetValue); console.log("No available track, cannot apply offset : " + offsetValue);
} }
}); });
} }
}; };
@ -609,7 +605,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa
var relativeOffset = offsetValue; var relativeOffset = offsetValue;
var newTrackOffset = offsetValue; var newTrackOffset = offsetValue;
if(currentTrackOffset){ if (currentTrackOffset) {
relativeOffset -= currentTrackOffset; relativeOffset -= currentTrackOffset;
} }
currentTrackOffset = newTrackOffset; currentTrackOffset = newTrackOffset;
@ -619,12 +615,12 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa
function setVttSubtitleOffset(currentTrack, offsetValue) { function setVttSubtitleOffset(currentTrack, offsetValue) {
if(currentTrack.cues) { if (currentTrack.cues) {
Array.from(currentTrack.cues) Array.from(currentTrack.cues)
.forEach(function(cue) { .forEach(function(cue) {
cue.startTime -= offsetValue; cue.startTime -= offsetValue;
cue.endTime -= offsetValue; cue.endTime -= offsetValue;
}); });
} }
} }
@ -650,7 +646,6 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa
return profiles.filter(function (p) { return profiles.filter(function (p) {
if (p.Type === 'Video') { if (p.Type === 'Video') {
if (!p.AudioCodec) { if (!p.AudioCodec) {
@ -683,7 +678,9 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa
} }
var audioIndex = -1; var audioIndex = -1;
var i, length, stream; var i;
var length;
var stream;
for (i = 0, length = streams.length; i < length; i++) { for (i = 0, length = streams.length; i < length; i++) {
stream = streams[i]; stream = streams[i];
@ -1029,8 +1026,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa
if (browser.ps4) { if (browser.ps4) {
// Text outlines are not rendering very well // Text outlines are not rendering very well
rendererSettings.enableSvg = false; rendererSettings.enableSvg = false;
} } else if (browser.edge || browser.msie) {
else if (browser.edge || browser.msie) {
// svg not rendering at all // svg not rendering at all
rendererSettings.enableSvg = false; rendererSettings.enableSvg = false;
} }
@ -1232,7 +1228,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa
function updateSubtitleText(timeMs) { function updateSubtitleText(timeMs) {
// handle offset for ass tracks // handle offset for ass tracks
if(currentTrackOffset) { if (currentTrackOffset) {
timeMs += (currentTrackOffset * 1000); timeMs += (currentTrackOffset * 1000);
} }
@ -1561,8 +1557,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa
this.isPip = isEnabled; this.isPip = isEnabled;
if (isEnabled) { if (isEnabled) {
Windows.UI.ViewManagement.ApplicationView.getForCurrentView().tryEnterViewModeAsync(Windows.UI.ViewManagement.ApplicationViewMode.compactOverlay); Windows.UI.ViewManagement.ApplicationView.getForCurrentView().tryEnterViewModeAsync(Windows.UI.ViewManagement.ApplicationViewMode.compactOverlay);
} } else {
else {
Windows.UI.ViewManagement.ApplicationView.getForCurrentView().tryEnterViewModeAsync(Windows.UI.ViewManagement.ApplicationViewMode.default); Windows.UI.ViewManagement.ApplicationView.getForCurrentView().tryEnterViewModeAsync(Windows.UI.ViewManagement.ApplicationViewMode.default);
} }
} else { } else {

View file

@ -176,22 +176,17 @@ define(['loading', 'apphost', 'dialogHelper', 'connectionManager', 'imageLoader'
var shape = 'backdrop'; var shape = 'backdrop';
if (imageType === "Backdrop" || imageType === "Art" || imageType === "Thumb" || imageType === "Logo") { if (imageType === "Backdrop" || imageType === "Art" || imageType === "Thumb" || imageType === "Logo") {
shape = 'backdrop'; shape = 'backdrop';
} } else if (imageType === "Banner") {
else if (imageType === "Banner") {
shape = 'banner'; shape = 'banner';
} } else if (imageType === "Disc") {
else if (imageType === "Disc") {
shape = 'square'; shape = 'square';
} } else {
else {
if (currentItemType === "Episode") { if (currentItemType === "Episode") {
shape = 'backdrop'; shape = 'backdrop';
} } else if (currentItemType === "MusicAlbum" || currentItemType === "MusicArtist") {
else if (currentItemType === "MusicAlbum" || currentItemType === "MusicArtist") {
shape = 'square'; shape = 'square';
} } else {
else {
shape = 'portrait'; shape = 'portrait';
} }
} }
@ -224,8 +219,7 @@ define(['loading', 'apphost', 'dialogHelper', 'connectionManager', 'imageLoader'
if (layoutManager.tv || !appHost.supports('externallinks')) { if (layoutManager.tv || !appHost.supports('externallinks')) {
html += '<div class="cardImageContainer lazy" data-src="' + getDisplayUrl(image.Url, apiClient) + '" style="background-position:center bottom;"></div>'; html += '<div class="cardImageContainer lazy" data-src="' + getDisplayUrl(image.Url, apiClient) + '" style="background-position:center bottom;"></div>';
} } else {
else {
html += '<a is="emby-linkbutton" target="_blank" href="' + getDisplayUrl(image.Url, apiClient) + '" class="button-link cardImageContainer lazy" data-src="' + getDisplayUrl(image.Url, apiClient) + '" style="background-position:center bottom;"></a>'; html += '<a is="emby-linkbutton" target="_blank" href="' + getDisplayUrl(image.Url, apiClient) + '" class="button-link cardImageContainer lazy" data-src="' + getDisplayUrl(image.Url, apiClient) + '" style="background-position:center bottom;"></a>';
} }

View file

@ -24,8 +24,7 @@ define(['dialogHelper', 'connectionManager', 'loading', 'dom', 'layoutManager',
if (item) { if (item) {
apiClient = connectionManager.getApiClient(item.ServerId); apiClient = connectionManager.getApiClient(item.ServerId);
reloadItem(page, item, apiClient, focusContext); reloadItem(page, item, apiClient, focusContext);
} } else {
else {
apiClient = connectionManager.getApiClient(currentItem.ServerId); apiClient = connectionManager.getApiClient(currentItem.ServerId);
apiClient.getItem(apiClient.getCurrentUserId(), currentItem.Id).then(function (item) { apiClient.getItem(apiClient.getCurrentUserId(), currentItem.Id).then(function (item) {
@ -60,7 +59,6 @@ define(['dialogHelper', 'connectionManager', 'loading', 'dom', 'layoutManager',
} }
} }
apiClient.getItemImageInfos(currentItem.Id).then(function (imageInfos) { apiClient.getItemImageInfos(currentItem.Id).then(function (imageInfos) {
renderStandardImages(page, apiClient, item, imageInfos, providers); renderStandardImages(page, apiClient, item, imageInfos, providers);
@ -167,8 +165,7 @@ define(['dialogHelper', 'connectionManager', 'loading', 'dom', 'layoutManager',
} else { } else {
html += '<button type="button" is="paper-icon-button-light" class="autoSize" disabled title="' + globalize.translate('MoveRight') + '"><i class="md-icon">chevron_right</i></button>'; html += '<button type="button" is="paper-icon-button-light" class="autoSize" disabled title="' + globalize.translate('MoveRight') + '"><i class="md-icon">chevron_right</i></button>';
} }
} } else {
else {
if (imageProviders.length) { if (imageProviders.length) {
html += '<button type="button" is="paper-icon-button-light" data-imagetype="' + image.ImageType + '" class="btnSearchImages autoSize" title="' + globalize.translate('Search') + '"><i class="md-icon">search</i></button>'; html += '<button type="button" is="paper-icon-button-light" data-imagetype="' + image.ImageType + '" class="btnSearchImages autoSize" title="' + globalize.translate('Search') + '"><i class="md-icon">search</i></button>';
} }

View file

@ -70,7 +70,9 @@ define(['lazyLoader', 'imageFetcher', 'layoutManager', 'browser', 'appSettings',
} }
// Use the median // Use the median
values.sort(function (a, b) { return a - b; }); values.sort(function (a, b) {
return a - b;
});
var half = Math.floor(values.length / 2); var half = Math.floor(values.length / 2);
@ -78,8 +80,7 @@ define(['lazyLoader', 'imageFetcher', 'layoutManager', 'browser', 'appSettings',
if (values.length % 2) { if (values.length % 2) {
result = values[half]; result = values[half];
} } else {
else {
result = (values[half - 1] + values[half]) / 2.0; result = (values[half - 1] + values[half]) / 2.0;
} }

View file

@ -150,7 +150,7 @@ define(['dialogHelper', 'connectionManager', 'dom', 'loading', 'scrollHelper', '
scrollHelper.centerFocus.on(dlg, false); scrollHelper.centerFocus.on(dlg, false);
} }
// Has to be assigned a z-index after the call to .open() // Has to be assigned a z-index after the call to .open()
dlg.addEventListener('close', function () { dlg.addEventListener('close', function () {
if (layoutManager.tv) { if (layoutManager.tv) {

View file

@ -52,8 +52,6 @@ define(["apphost", "globalize", "connectionManager", "itemHelper", "appRouter",
//} //}
} }
if (item.IsFolder || item.Type === "MusicArtist" || item.Type === "MusicGenre") { if (item.IsFolder || item.Type === "MusicArtist" || item.Type === "MusicGenre") {
if (item.CollectionType !== "livetv") { if (item.CollectionType !== "livetv") {
if (options.shuffle !== false) { if (options.shuffle !== false) {

View file

@ -250,9 +250,7 @@ define(['apphost', 'globalize'], function (appHost, globalize) {
if (item.Type !== 'TvChannel') { if (item.Type !== 'TvChannel') {
return true; return true;
} }
} } else if (item.MediaType === 'Audio') {
else if (item.MediaType === 'Audio') {
if (item.Type === 'AudioPodcast') { if (item.Type === 'AudioPodcast') {
return true; return true;
} }

View file

@ -21,7 +21,8 @@ define(["dialogHelper", "loading", "connectionManager", "require", "globalize",
ProviderIds: {} ProviderIds: {}
}; };
var i, length; var i;
var length;
var identifyField = page.querySelectorAll(".identifyField"); var identifyField = page.querySelectorAll(".identifyField");
var value; var value;
for (i = 0, length = identifyField.length; i < length; i++) { for (i = 0, length = identifyField.length; i < length; i++) {
@ -64,8 +65,7 @@ define(["dialogHelper", "loading", "connectionManager", "require", "globalize",
if (currentItem && currentItem.Id) { if (currentItem && currentItem.Id) {
lookupInfo.ItemId = currentItem.Id; lookupInfo.ItemId = currentItem.Id;
} } else {
else {
lookupInfo.IncludeDisabledProviders = true; lookupInfo.IncludeDisabledProviders = true;
} }
@ -97,7 +97,8 @@ define(["dialogHelper", "loading", "connectionManager", "require", "globalize",
page.querySelector(".dialogContentInner").classList.remove("dialog-content-centered"); page.querySelector(".dialogContentInner").classList.remove("dialog-content-centered");
var html = ""; var html = "";
var i, length; var i;
var length;
for (i = 0, length = results.length; i < length; i++) { for (i = 0, length = results.length; i < length; i++) {
var result = results[i]; var result = results[i];
@ -184,12 +185,10 @@ define(["dialogHelper", "loading", "connectionManager", "require", "globalize",
if (currentItemType === "Episode") { if (currentItemType === "Episode") {
cssClass += " backdropCard backdropCard-scalable"; cssClass += " backdropCard backdropCard-scalable";
padderClass = "cardPadder-backdrop"; padderClass = "cardPadder-backdrop";
} } else if (currentItemType === "MusicAlbum" || currentItemType === "MusicArtist") {
else if (currentItemType === "MusicAlbum" || currentItemType === "MusicArtist") {
cssClass += " squareCard squareCard-scalable"; cssClass += " squareCard squareCard-scalable";
padderClass = "cardPadder-square"; padderClass = "cardPadder-square";
} } else {
else {
cssClass += " portraitCard portraitCard-scalable"; cssClass += " portraitCard portraitCard-scalable";
padderClass = "cardPadder-portrait"; padderClass = "cardPadder-portrait";
} }
@ -452,8 +451,6 @@ define(["dialogHelper", "loading", "connectionManager", "require", "globalize",
scrollHelper.centerFocus.on(dlg.querySelector(".formDialogContent"), false); scrollHelper.centerFocus.on(dlg.querySelector(".formDialogContent"), false);
} }
dialogHelper.open(dlg); dialogHelper.open(dlg);
dlg.querySelector(".btnCancel").addEventListener("click", function (e) { dlg.querySelector(".btnCancel").addEventListener("click", function (e) {

View file

@ -11,8 +11,7 @@ define(['playbackManager', 'serverNotifications', 'events'], function (playbackM
if (eventsToMonitor.indexOf('markfavorite') !== -1) { if (eventsToMonitor.indexOf('markfavorite') !== -1) {
instance.notifyRefreshNeeded(); instance.notifyRefreshNeeded();
} } else if (eventsToMonitor.indexOf('markplayed') !== -1) {
else if (eventsToMonitor.indexOf('markplayed') !== -1) {
instance.notifyRefreshNeeded(); instance.notifyRefreshNeeded();
} }
@ -115,9 +114,7 @@ define(['playbackManager', 'serverNotifications', 'events'], function (playbackM
instance.notifyRefreshNeeded(true); instance.notifyRefreshNeeded(true);
return; return;
} }
} } else if (state.NowPlayingItem && state.NowPlayingItem.MediaType === 'Audio') {
else if (state.NowPlayingItem && state.NowPlayingItem.MediaType === 'Audio') {
if (eventsToMonitor.indexOf('audioplayback') !== -1) { if (eventsToMonitor.indexOf('audioplayback') !== -1) {

View file

@ -8,20 +8,20 @@ define(['inputManager', 'focusManager'], function(inputManager, focusManager) {
var capture = true; var capture = true;
switch (e.keyCode) { switch (e.keyCode) {
case 37: // ArrowLeft case 37: // ArrowLeft
inputManager.handle('left'); inputManager.handle('left');
break; break;
case 38: // ArrowUp case 38: // ArrowUp
inputManager.handle('up'); inputManager.handle('up');
break; break;
case 39: // ArrowRight case 39: // ArrowRight
inputManager.handle('right'); inputManager.handle('right');
break; break;
case 40: // ArrowDown case 40: // ArrowDown
inputManager.handle('down'); inputManager.handle('down');
break; break;
default: default:
capture = false; capture = false;
} }
if (capture) { if (capture) {
console.log("Disabling default event handling"); console.log("Disabling default event handling");
@ -31,6 +31,6 @@ define(['inputManager', 'focusManager'], function(inputManager, focusManager) {
} }
return { return {
enable: enable, enable: enable
}; };
}); });

View file

@ -45,7 +45,7 @@ define(['require', 'browser'], function (require, browser) {
} }
} }
}, },
observerOptions observerOptions
); );
this.observer = observer; this.observer = observer;

View file

@ -9,7 +9,8 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan
} }
var sortBy = (options.sortBy || '').toLowerCase(); var sortBy = (options.sortBy || '').toLowerCase();
var code, name; var code;
var name;
if (sortBy.indexOf('sortname') === 0) { if (sortBy.indexOf('sortname') === 0) {
@ -85,15 +86,12 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan
options.tag = item.AlbumPrimaryImageTag; options.tag = item.AlbumPrimaryImageTag;
return apiClient.getScaledImageUrl(item.AlbumId, options); return apiClient.getScaledImageUrl(item.AlbumId, options);
} } else if (item.SeriesId && item.SeriesPrimaryImageTag) {
else if (item.SeriesId && item.SeriesPrimaryImageTag) {
options.tag = item.SeriesPrimaryImageTag; options.tag = item.SeriesPrimaryImageTag;
return apiClient.getScaledImageUrl(item.SeriesId, options); return apiClient.getScaledImageUrl(item.SeriesId, options);
} } else if (item.ParentPrimaryImageTag) {
else if (item.ParentPrimaryImageTag) {
options.tag = item.ParentPrimaryImageTag; options.tag = item.ParentPrimaryImageTag;
return apiClient.getScaledImageUrl(item.ParentPrimaryImageItemId, options); return apiClient.getScaledImageUrl(item.ParentPrimaryImageItemId, options);
@ -209,8 +207,7 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan
if (i === 0) { if (i === 0) {
html += '<h2 class="listGroupHeader listGroupHeader-first">'; html += '<h2 class="listGroupHeader listGroupHeader-first">';
} } else {
else {
html += '<h2 class="listGroupHeader">'; html += '<h2 class="listGroupHeader">';
} }
html += itemGroupTitle; html += itemGroupTitle;
@ -349,9 +346,7 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan
if (options.showParentTitle) { if (options.showParentTitle) {
if (item.Type === 'Episode') { if (item.Type === 'Episode') {
parentTitle = item.SeriesName; parentTitle = item.SeriesName;
} } else if (item.IsSeries || (item.EpisodeTitle && item.Name)) {
else if (item.IsSeries || (item.EpisodeTitle && item.Name)) {
parentTitle = item.Name; parentTitle = item.Name;
} }
} }
@ -375,8 +370,7 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan
} }
textlines.push(parentTitle || ''); textlines.push(parentTitle || '');
} } else if (options.showParentTitle) {
else if (options.showParentTitle) {
textlines.push(parentTitle || ''); textlines.push(parentTitle || '');
} }
@ -400,8 +394,7 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan
if (!artistItems || !artistItems.length) { if (!artistItems || !artistItems.length) {
showArtist = true; showArtist = true;
} } else if (artistItems.length > 1 || containerAlbumArtistIds.indexOf(artistItems[0].Id) === -1) {
else if (artistItems.length > 1 || containerAlbumArtistIds.indexOf(artistItems[0].Id) === -1) {
showArtist = true; showArtist = true;
} }
} }

View file

@ -45,7 +45,8 @@ define(['components/loading/loadingLegacy', 'browser', 'css!./loading'], functio
layer3.classList.add('mdl-spinner__layer-3-active'); layer3.classList.add('mdl-spinner__layer-3-active');
layer4.classList.add('mdl-spinner__layer-4-active'); layer4.classList.add('mdl-spinner__layer-4-active');
var i, length; var i;
var length;
for (i = 0, length = circleLefts.length; i < length; i++) { for (i = 0, length = circleLefts.length; i < length; i++) {
circleLefts[i].classList.add('mdl-spinner__circleLeft-active'); circleLefts[i].classList.add('mdl-spinner__circleLeft-active');
@ -67,7 +68,8 @@ define(['components/loading/loadingLegacy', 'browser', 'css!./loading'], functio
elem.classList.remove('mdl-spinner__layer-3-active'); elem.classList.remove('mdl-spinner__layer-3-active');
elem.classList.remove('mdl-spinner__layer-4-active'); elem.classList.remove('mdl-spinner__layer-4-active');
var i, length; var i;
var length;
for (i = 0, length = circleLefts.length; i < length; i++) { for (i = 0, length = circleLefts.length; i < length; i++) {
circleLefts[i].classList.remove('mdl-spinner__circleLeft-active'); circleLefts[i].classList.remove('mdl-spinner__circleLeft-active');

View file

@ -7,16 +7,13 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater
if (item.Type === 'SeriesTimer') { if (item.Type === 'SeriesTimer') {
return '<i class="md-icon mediaInfoItem mediaInfoIconItem mediaInfoTimerIcon">&#xE062;</i>'; return '<i class="md-icon mediaInfoItem mediaInfoIconItem mediaInfoTimerIcon">&#xE062;</i>';
} } else if (item.TimerId || item.SeriesTimerId) {
else if (item.TimerId || item.SeriesTimerId) {
status = item.Status || 'Cancelled'; status = item.Status || 'Cancelled';
} } else if (item.Type === 'Timer') {
else if (item.Type === 'Timer') {
status = item.Status; status = item.Status;
} } else {
else {
return ''; return '';
} }
@ -36,7 +33,8 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater
var html = ''; var html = '';
var miscInfo = []; var miscInfo = [];
var text, date; var text;
var date;
if (item.StartDate && options.programTime !== false) { if (item.StartDate && options.programTime !== false) {
@ -58,8 +56,7 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater
} }
miscInfo.push(text); miscInfo.push(text);
} } catch (e) {
catch (e) {
console.log("Error parsing date: " + item.StartDate); console.log("Error parsing date: " + item.StartDate);
} }
} }
@ -107,7 +104,9 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater
var miscInfo = []; var miscInfo = [];
options = options || {}; options = options || {};
var text, date, minutes; var text;
var date;
var minutes;
var count; var count;
var showFolderRuntime = item.Type === "MusicAlbum" || item.MediaType === 'MusicArtist' || item.MediaType === 'Playlist' || item.MediaType === 'MusicGenre'; var showFolderRuntime = item.Type === "MusicAlbum" || item.MediaType === 'MusicArtist' || item.MediaType === 'Playlist' || item.MediaType === 'MusicGenre';
@ -124,9 +123,7 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater
if (item.RunTimeTicks) { if (item.RunTimeTicks) {
miscInfo.push(datetime.getDisplayRunningTime(item.RunTimeTicks)); miscInfo.push(datetime.getDisplayRunningTime(item.RunTimeTicks));
} }
} } else if (item.Type === "PhotoAlbum" || item.Type === "BoxSet") {
else if (item.Type === "PhotoAlbum" || item.Type === "BoxSet") {
count = item.ChildCount; count = item.ChildCount;
@ -145,8 +142,7 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater
text = datetime.toLocaleDateString(date); text = datetime.toLocaleDateString(date);
miscInfo.push(text); miscInfo.push(text);
} } catch (e) {
catch (e) {
console.log("Error parsing date: " + item.PremiereDate); console.log("Error parsing date: " + item.PremiereDate);
} }
} }
@ -162,8 +158,7 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater
if (item.RecordAnyChannel) { if (item.RecordAnyChannel) {
miscInfo.push(globalize.translate('AllChannels')); miscInfo.push(globalize.translate('AllChannels'));
} } else {
else {
miscInfo.push(item.ChannelName || globalize.translate('OneChannel')); miscInfo.push(item.ChannelName || globalize.translate('OneChannel'));
} }
} }
@ -180,8 +175,7 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater
text = datetime.getDisplayTime(date); text = datetime.getDisplayTime(date);
miscInfo.push(text); miscInfo.push(text);
} }
} } catch (e) {
catch (e) {
console.log("Error parsing date: " + item.StartDate); console.log("Error parsing date: " + item.StartDate);
} }
} }
@ -191,8 +185,7 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater
if (item.Status === "Continuing") { if (item.Status === "Continuing") {
miscInfo.push(globalize.translate('SeriesYearToPresent', item.ProductionYear)); miscInfo.push(globalize.translate('SeriesYearToPresent', item.ProductionYear));
} } else if (item.ProductionYear) {
else if (item.ProductionYear) {
text = item.ProductionYear; text = item.ProductionYear;
@ -206,8 +199,7 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater
text += "-" + datetime.parseISO8601Date(item.EndDate).getFullYear(); text += "-" + datetime.parseISO8601Date(item.EndDate).getFullYear();
} }
} } catch (e) {
catch (e) {
console.log("Error parsing date: " + item.EndDate); console.log("Error parsing date: " + item.EndDate);
} }
} }
@ -223,18 +215,15 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater
miscInfo.push({ miscInfo.push({
html: '<div class="mediaInfoProgramAttribute mediaInfoItem liveTvProgram">' + globalize.translate('Live') + '</div>' html: '<div class="mediaInfoProgramAttribute mediaInfoItem liveTvProgram">' + globalize.translate('Live') + '</div>'
}); });
} } else if (item.IsPremiere) {
else if (item.IsPremiere) {
miscInfo.push({ miscInfo.push({
html: '<div class="mediaInfoProgramAttribute mediaInfoItem premiereTvProgram">' + globalize.translate('Premiere') + '</div>' html: '<div class="mediaInfoProgramAttribute mediaInfoItem premiereTvProgram">' + globalize.translate('Premiere') + '</div>'
}); });
} } else if (item.IsSeries && !item.IsRepeat) {
else if (item.IsSeries && !item.IsRepeat) {
miscInfo.push({ miscInfo.push({
html: '<div class="mediaInfoProgramAttribute mediaInfoItem newTvProgram">' + globalize.translate('AttributeNew') + '</div>' html: '<div class="mediaInfoProgramAttribute mediaInfoItem newTvProgram">' + globalize.translate('AttributeNew') + '</div>'
}); });
} } else if (item.IsSeries && item.IsRepeat) {
else if (item.IsSeries && item.IsRepeat) {
miscInfo.push({ miscInfo.push({
html: '<div class="mediaInfoProgramAttribute mediaInfoItem repeatTvProgram">' + globalize.translate('Repeat') + '</div>' html: '<div class="mediaInfoProgramAttribute mediaInfoItem repeatTvProgram">' + globalize.translate('Repeat') + '</div>'
}); });
@ -250,20 +239,15 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater
if (text) { if (text) {
miscInfo.push(text); miscInfo.push(text);
} }
} } else if (item.IsMovie && item.ProductionYear && options.originalAirDate !== false) {
else if (item.IsMovie && item.ProductionYear && options.originalAirDate !== false) {
miscInfo.push(item.ProductionYear); miscInfo.push(item.ProductionYear);
} } else if (item.PremiereDate && options.originalAirDate !== false) {
else if (item.PremiereDate && options.originalAirDate !== false) {
try { try {
date = datetime.parseISO8601Date(item.PremiereDate); date = datetime.parseISO8601Date(item.PremiereDate);
text = globalize.translate('OriginalAirDateValue', datetime.toLocaleDateString(date)); text = globalize.translate('OriginalAirDateValue', datetime.toLocaleDateString(date));
miscInfo.push(text); miscInfo.push(text);
} } catch (e) {
catch (e) {
console.log("Error parsing date: " + item.PremiereDate); console.log("Error parsing date: " + item.PremiereDate);
} }
} else if (item.ProductionYear) { } else if (item.ProductionYear) {
@ -277,14 +261,12 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater
if (item.ProductionYear) { if (item.ProductionYear) {
miscInfo.push(item.ProductionYear); miscInfo.push(item.ProductionYear);
} } else if (item.PremiereDate) {
else if (item.PremiereDate) {
try { try {
text = datetime.parseISO8601Date(item.PremiereDate).getFullYear(); text = datetime.parseISO8601Date(item.PremiereDate).getFullYear();
miscInfo.push(text); miscInfo.push(text);
} } catch (e) {
catch (e) {
console.log("Error parsing date: " + item.PremiereDate); console.log("Error parsing date: " + item.PremiereDate);
} }
} }

View file

@ -151,13 +151,13 @@ define(["loading", "dialogHelper", "dom", "jQuery", "components/libraryoptionsed
var xhr = new XMLHttpRequest; var xhr = new XMLHttpRequest;
xhr.open("GET", "components/medialibrarycreator/medialibrarycreator.template.html", true); xhr.open("GET", "components/medialibrarycreator/medialibrarycreator.template.html", true);
xhr.onload = function(e) { xhr.onload = function(e) {
var template = this.response, var template = this.response;
dlg = dialogHelper.createDialog({ var dlg = dialogHelper.createDialog({
size: "medium-tall", size: "medium-tall",
modal: false, modal: false,
removeOnClose: true, removeOnClose: true,
scrollY: false scrollY: false
}); });
dlg.classList.add("ui-body-a"); dlg.classList.add("ui-body-a");
dlg.classList.add("background-theme-a"); dlg.classList.add("background-theme-a");
dlg.classList.add("dlg-librarycreator"); dlg.classList.add("dlg-librarycreator");

View file

@ -144,7 +144,9 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi
AirTime: form.querySelector('#txtAirTime').value, AirTime: form.querySelector('#txtAirTime').value,
Genres: getListValues(form.querySelector("#listGenres")), Genres: getListValues(form.querySelector("#listGenres")),
Tags: getListValues(form.querySelector("#listTags")), Tags: getListValues(form.querySelector("#listTags")),
Studios: getListValues(form.querySelector("#listStudios")).map(function (element) { return { Name: element }; }), Studios: getListValues(form.querySelector("#listStudios")).map(function (element) {
return { Name: element };
}),
PremiereDate: getDateValue(form, '#txtPremiereDate', 'PremiereDate'), PremiereDate: getDateValue(form, '#txtPremiereDate', 'PremiereDate'),
DateCreated: getDateValue(form, '#txtDateAdded', 'DateCreated'), DateCreated: getDateValue(form, '#txtDateAdded', 'DateCreated'),
@ -202,7 +204,9 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi
} }
function getListValues(list) { function getListValues(list) {
return Array.prototype.map.call(list.querySelectorAll('.textValue'), function (el) { return el.textContent; }); return Array.prototype.map.call(list.querySelectorAll('.textValue'), function (el) {
return el.textContent;
});
} }
function addElementToList(source, sortCallback) { function addElementToList(source, sortCallback) {
@ -439,7 +443,6 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi
var html = metadataInfo.ContentTypeOptions.map(function (i) { var html = metadataInfo.ContentTypeOptions.map(function (i) {
return '<option value="' + i.Value + '">' + i.Name + '</option>'; return '<option value="' + i.Value + '">' + i.Name + '</option>';
}).join(''); }).join('');
@ -744,7 +747,9 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi
populateListView(context.querySelector('#listGenres'), item.Genres); populateListView(context.querySelector('#listGenres'), item.Genres);
populatePeople(context, item.People || []); populatePeople(context, item.People || []);
populateListView(context.querySelector('#listStudios'), (item.Studios || []).map(function (element) { return element.Name || ''; })); populateListView(context.querySelector('#listStudios'), (item.Studios || []).map(function (element) {
return element.Name || '';
}));
populateListView(context.querySelector('#listTags'), item.Tags); populateListView(context.querySelector('#listTags'), item.Tags);
@ -783,8 +788,7 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi
if (item.Type === 'Series') { if (item.Type === 'Series') {
context.querySelector('#selectDisplayOrder').value = item.DisplayOrder || ''; context.querySelector('#selectDisplayOrder').value = item.DisplayOrder || '';
} } else {
else {
context.querySelector('#selectDisplayOrder').value = item.DisplayOrder || ''; context.querySelector('#selectDisplayOrder').value = item.DisplayOrder || '';
} }
@ -859,7 +863,9 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi
html += "<option value=''></option>"; html += "<option value=''></option>";
var ratings = []; var ratings = [];
var i, length, rating; var i;
var length;
var rating;
var currentValueFound = false; var currentValueFound = false;
@ -901,7 +907,9 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi
items = items || []; items = items || [];
if (typeof (sortCallback) === 'undefined') { if (typeof (sortCallback) === 'undefined') {
items.sort(function (a, b) { return a.toLowerCase().localeCompare(b.toLowerCase()); }); items.sort(function (a, b) {
return a.toLowerCase().localeCompare(b.toLowerCase());
});
} else { } else {
items = sortCallback(items); items = sortCallback(items);
} }

View file

@ -241,8 +241,6 @@ define(['browser', 'appStorage', 'apphost', 'loading', 'connectionManager', 'glo
id: 'refresh' id: 'refresh'
}); });
require(['actionsheet'], function (actionsheet) { require(['actionsheet'], function (actionsheet) {
actionsheet.show({ actionsheet.show({
items: menuItems, items: menuItems,

View file

@ -21,13 +21,13 @@ define(["browser", "dom", "css!./navdrawer", "scrollStyles"], function(browser,
} }
function onMenuTouchMove(e) { function onMenuTouchMove(e) {
var isOpen = self.visible, var isOpen = self.visible;
touches = getTouches(e), var touches = getTouches(e);
touch = touches[0] || {}, var touch = touches[0] || {};
endX = touch.clientX || 0, var endX = touch.clientX || 0;
endY = touch.clientY || 0, var endY = touch.clientY || 0;
deltaX = endX - (menuTouchStartX || 0), var deltaX = endX - (menuTouchStartX || 0);
deltaY = endY - (menuTouchStartY || 0); var deltaY = endY - (menuTouchStartY || 0);
setVelocity(deltaX), isOpen && 1 !== dragMode && deltaX > 0 && (dragMode = 2), 0 === dragMode && (!isOpen || Math.abs(deltaX) >= 10) && Math.abs(deltaY) < 5 ? (dragMode = 1, scrollContainer.addEventListener("scroll", disableEvent), self.showMask()) : 0 === dragMode && Math.abs(deltaY) >= 5 && (dragMode = 2), 1 === dragMode && (newPos = currentPos + deltaX, self.changeMenuPos()) setVelocity(deltaX), isOpen && 1 !== dragMode && deltaX > 0 && (dragMode = 2), 0 === dragMode && (!isOpen || Math.abs(deltaX) >= 10) && Math.abs(deltaY) < 5 ? (dragMode = 1, scrollContainer.addEventListener("scroll", disableEvent), self.showMask()) : 0 === dragMode && Math.abs(deltaY) >= 5 && (dragMode = 2), 1 === dragMode && (newPos = currentPos + deltaX, self.changeMenuPos())
} }
@ -36,12 +36,12 @@ define(["browser", "dom", "css!./navdrawer", "scrollStyles"], function(browser,
scrollContainer.removeEventListener("scroll", disableEvent); scrollContainer.removeEventListener("scroll", disableEvent);
dragMode = 0; dragMode = 0;
var touches = getTouches(e), var touches = getTouches(e);
touch = touches[0] || {}, var touch = touches[0] || {};
endX = touch.clientX || 0, var endX = touch.clientX || 0;
endY = touch.clientY || 0, var endY = touch.clientY || 0;
deltaX = endX - (menuTouchStartX || 0), var deltaX = endX - (menuTouchStartX || 0);
deltaY = endY - (menuTouchStartY || 0); var deltaY = endY - (menuTouchStartY || 0);
currentPos = deltaX; currentPos = deltaX;
self.checkMenuState(deltaX, deltaY); self.checkMenuState(deltaX, deltaY);
@ -78,15 +78,15 @@ define(["browser", "dom", "css!./navdrawer", "scrollStyles"], function(browser,
} }
function onBackgroundTouchStart(e) { function onBackgroundTouchStart(e) {
var touches = getTouches(e), var touches = getTouches(e);
touch = touches[0] || {}; var touch = touches[0] || {};
backgroundTouchStartX = touch.clientX, backgroundTouchStartTime = (new Date).getTime() backgroundTouchStartX = touch.clientX, backgroundTouchStartTime = (new Date).getTime()
} }
function onBackgroundTouchMove(e) { function onBackgroundTouchMove(e) {
var touches = getTouches(e), var touches = getTouches(e);
touch = touches[0] || {}, var touch = touches[0] || {};
endX = touch.clientX || 0; var endX = touch.clientX || 0;
if (endX <= options.width && self.isVisible) { if (endX <= options.width && self.isVisible) {
countStart++; countStart++;
var deltaX = endX - (backgroundTouchStartX || 0); var deltaX = endX - (backgroundTouchStartX || 0);
@ -100,10 +100,10 @@ define(["browser", "dom", "css!./navdrawer", "scrollStyles"], function(browser,
} }
function onBackgroundTouchEnd(e) { function onBackgroundTouchEnd(e) {
var touches = getTouches(e), var touches = getTouches(e);
touch = touches[0] || {}, var touch = touches[0] || {};
endX = touch.clientX || 0, var endX = touch.clientX || 0;
deltaX = endX - (backgroundTouchStartX || 0); var deltaX = endX - (backgroundTouchStartX || 0);
self.checkMenuState(deltaX), countStart = 0 self.checkMenuState(deltaX), countStart = 0
} }
@ -111,21 +111,24 @@ define(["browser", "dom", "css!./navdrawer", "scrollStyles"], function(browser,
var classList = mask.classList; var classList = mask.classList;
classList.contains("backdrop") || classList.add("hide") classList.contains("backdrop") || classList.add("hide")
} }
var self, defaults, mask, newPos = 0, var self;
currentPos = 0, var defaults;
startPoint = 0, var mask;
countStart = 0, var newPos = 0;
velocity = 0; var currentPos = 0;
var startPoint = 0;
var countStart = 0;
var velocity = 0;
options.target.classList.add("transition"); options.target.classList.add("transition");
var dragMode = 0, var dragMode = 0;
scrollContainer = options.target.querySelector(".mainDrawer-scrollContainer"); var scrollContainer = options.target.querySelector(".mainDrawer-scrollContainer");
scrollContainer.classList.add("scrollY"); scrollContainer.classList.add("scrollY");
var TouchMenuLA = function() { var TouchMenuLA = function() {
self = this, defaults = { self = this, defaults = {
width: 260, width: 260,
handleSize: 10, handleSize: 10,
disableMask: !1, disableMask: !1,
maxMaskOpacity: .5 maxMaskOpacity: 0.5
}, this.isVisible = !1, this.initialize() }, this.isVisible = !1, this.initialize()
}; };
TouchMenuLA.prototype.initElements = function() { TouchMenuLA.prototype.initElements = function() {
@ -133,8 +136,11 @@ define(["browser", "dom", "css!./navdrawer", "scrollStyles"], function(browser,
passive: !0 passive: !0
})) }))
}; };
var menuTouchStartX, menuTouchStartY, menuTouchStartTime, edgeContainer = document.querySelector(".mainDrawerHandle"), var menuTouchStartX;
isPeeking = !1; var menuTouchStartY;
var menuTouchStartTime;
var edgeContainer = document.querySelector(".mainDrawerHandle");
var isPeeking = false;
TouchMenuLA.prototype.animateToPosition = function(pos) { TouchMenuLA.prototype.animateToPosition = function(pos) {
requestAnimationFrame(function() { requestAnimationFrame(function() {
options.target.style.transform = pos ? "translateX(" + pos + "px)" : "none" options.target.style.transform = pos ? "translateX(" + pos + "px)" : "none"
@ -146,7 +152,7 @@ define(["browser", "dom", "css!./navdrawer", "scrollStyles"], function(browser,
self.close() self.close()
}) })
}, TouchMenuLA.prototype.checkMenuState = function(deltaX, deltaY) { }, TouchMenuLA.prototype.checkMenuState = function(deltaX, deltaY) {
velocity >= .4 ? deltaX >= 0 || Math.abs(deltaY || 0) >= 70 ? self.open() : self.close() : newPos >= 100 ? self.open() : newPos && self.close() velocity >= 0.4 ? deltaX >= 0 || Math.abs(deltaY || 0) >= 70 ? self.open() : self.close() : newPos >= 100 ? self.open() : newPos && self.close()
}, TouchMenuLA.prototype.open = function() { }, TouchMenuLA.prototype.open = function() {
this.animateToPosition(options.width), currentPos = options.width, this.isVisible = !0, options.target.classList.add("drawer-open"), self.showMask(), self.invoke(options.onChange) this.animateToPosition(options.width), currentPos = options.width, this.isVisible = !0, options.target.classList.add("drawer-open"), self.showMask(), self.invoke(options.onChange)
}, TouchMenuLA.prototype.close = function() { }, TouchMenuLA.prototype.close = function() {
@ -154,7 +160,8 @@ define(["browser", "dom", "css!./navdrawer", "scrollStyles"], function(browser,
}, TouchMenuLA.prototype.toggle = function() { }, TouchMenuLA.prototype.toggle = function() {
self.isVisible ? self.close() : self.open() self.isVisible ? self.close() : self.open()
}; };
var backgroundTouchStartX, backgroundTouchStartTime; var backgroundTouchStartX;
var backgroundTouchStartTime;
TouchMenuLA.prototype.showMask = function() { TouchMenuLA.prototype.showMask = function() {
mask.classList.remove("hide"), mask.offsetWidth, mask.classList.add("backdrop") mask.classList.remove("hide"), mask.offsetWidth, mask.classList.add("backdrop")
}, TouchMenuLA.prototype.hideMask = function() { }, TouchMenuLA.prototype.hideMask = function() {

View file

@ -21,8 +21,7 @@ define(['serverNotifications', 'playbackManager', 'events', 'globalize', 'requir
if (notification.close) { if (notification.close) {
notification.close(); notification.close();
} } else if (notification.cancel) {
else if (notification.cancel) {
notification.cancel(); notification.cancel();
} }
}, timeoutMs); }, timeoutMs);
@ -180,15 +179,12 @@ define(['serverNotifications', 'playbackManager', 'events', 'globalize', 'requir
if (status === 'completed') { if (status === 'completed') {
notification.title = globalize.translate('PackageInstallCompleted').replace('{0}', installation.Name + ' ' + installation.Version); notification.title = globalize.translate('PackageInstallCompleted').replace('{0}', installation.Name + ' ' + installation.Version);
notification.vibrate = true; notification.vibrate = true;
} } else if (status === 'cancelled') {
else if (status === 'cancelled') {
notification.title = globalize.translate('PackageInstallCancelled').replace('{0}', installation.Name + ' ' + installation.Version); notification.title = globalize.translate('PackageInstallCancelled').replace('{0}', installation.Name + ' ' + installation.Version);
} } else if (status === 'failed') {
else if (status === 'failed') {
notification.title = globalize.translate('PackageInstallFailed').replace('{0}', installation.Name + ' ' + installation.Version); notification.title = globalize.translate('PackageInstallFailed').replace('{0}', installation.Name + ' ' + installation.Version);
notification.vibrate = true; notification.vibrate = true;
} } else if (status === 'progress') {
else if (status === 'progress') {
notification.title = globalize.translate('InstallingPackage').replace('{0}', installation.Name + ' ' + installation.Version); notification.title = globalize.translate('InstallingPackage').replace('{0}', installation.Name + ' ' + installation.Version);
notification.actions = notification.actions =

View file

@ -134,7 +134,8 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader',
} }
}); });
var i, length; var i;
var length;
playPauseButtons = elem.querySelectorAll('.playPauseButton'); playPauseButtons = elem.querySelectorAll('.playPauseButton');
for (i = 0, length = playPauseButtons.length; i < length; i++) { for (i = 0, length = playPauseButtons.length; i < length; i++) {
playPauseButtons[i].addEventListener('click', onPlayPauseClick); playPauseButtons[i].addEventListener('click', onPlayPauseClick);
@ -195,7 +196,6 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader',
volumeSlider.addEventListener('mousemove', setVolume); volumeSlider.addEventListener('mousemove', setVolume);
volumeSlider.addEventListener('touchmove', setVolume); volumeSlider.addEventListener('touchmove', setVolume);
positionSlider = elem.querySelector('.nowPlayingBarPositionSlider'); positionSlider = elem.querySelector('.nowPlayingBarPositionSlider');
positionSlider.addEventListener('change', function () { positionSlider.addEventListener('change', function () {
@ -282,8 +282,8 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader',
} }
function updatePlayPauseState(isPaused) { function updatePlayPauseState(isPaused) {
var i;
var i, length; var length;
if (playPauseButtons) { if (playPauseButtons) {
if (isPaused) { if (isPaused) {
@ -345,8 +345,7 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader',
if (repeatMode === 'RepeatAll') { if (repeatMode === 'RepeatAll') {
toggleRepeatButtonIcon.innerHTML = "repeat"; toggleRepeatButtonIcon.innerHTML = "repeat";
toggleRepeatButton.classList.add('repeatButton-active'); toggleRepeatButton.classList.add('repeatButton-active');
} } else if (repeatMode === 'RepeatOne') {
else if (repeatMode === 'RepeatOne') {
toggleRepeatButtonIcon.innerHTML = "repeat_one"; toggleRepeatButtonIcon.innerHTML = "repeat_one";
toggleRepeatButton.classList.add('repeatButton-active'); toggleRepeatButton.classList.add('repeatButton-active');
} else { } else {

View file

@ -48,9 +48,7 @@ define([], function () {
} }
timeout = setTimeout(testAutoplay, 500); timeout = setTimeout(testAutoplay, 500);
} } catch (e) {
catch (e) {
reject(); reject();
return; return;
} }

View file

@ -103,8 +103,7 @@ define(['events', 'playbackManager', 'dom', 'browser', 'css!./iconosd', 'materia
if (iconElement) { if (iconElement) {
if (brightness >= 80) { if (brightness >= 80) {
iconElement.innerHTML = '&#xE1AC;'; iconElement.innerHTML = '&#xE1AC;';
} } else if (brightness >= 20) {
else if (brightness >= 20) {
iconElement.innerHTML = '&#xE1AE;'; iconElement.innerHTML = '&#xE1AE;';
} else { } else {
iconElement.innerHTML = '&#xE1AD;'; iconElement.innerHTML = '&#xE1AD;';

View file

@ -158,7 +158,7 @@ define(['playbackManager', 'nowPlayingHelper', 'events', 'connectionManager'], f
lastUpdateTime = now; lastUpdateTime = now;
if (navigator.mediaSession){ if (navigator.mediaSession) {
navigator.mediaSession.metadata = new MediaMetadata({ navigator.mediaSession.metadata = new MediaMetadata({
title: title, title: title,
artist: artist, artist: artist,
@ -278,7 +278,6 @@ define(['playbackManager', 'nowPlayingHelper', 'events', 'connectionManager'], f
} }
if (navigator.mediaSession) { if (navigator.mediaSession) {
navigator.mediaSession.setActionHandler('previoustrack', function () { navigator.mediaSession.setActionHandler('previoustrack', function () {
execute('previousTrack'); execute('previousTrack');
}); });

View file

@ -43,8 +43,7 @@ define([], function () {
} else if (nowPlayingItem.Artists && nowPlayingItem.Artists.length) { } else if (nowPlayingItem.Artists && nowPlayingItem.Artists.length) {
bottomText = nowPlayingItem.Artists.join(', '); bottomText = nowPlayingItem.Artists.join(', ');
} } else if (nowPlayingItem.SeriesName || nowPlayingItem.Album) {
else if (nowPlayingItem.SeriesName || nowPlayingItem.Album) {
bottomText = topText; bottomText = topText;
topText = nowPlayingItem.SeriesName || nowPlayingItem.Album; topText = nowPlayingItem.SeriesName || nowPlayingItem.Album;
@ -60,8 +59,7 @@ define([], function () {
} else { } else {
topItem = null; topItem = null;
} }
} } else if (nowPlayingItem.ProductionYear && includeNonNameInfo !== false) {
else if (nowPlayingItem.ProductionYear && includeNonNameInfo !== false) {
bottomText = nowPlayingItem.ProductionYear; bottomText = nowPlayingItem.ProductionYear;
} }

View file

@ -107,8 +107,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla
TotalRecordCount: 1 TotalRecordCount: 1
}; };
}); });
} } else {
else {
query.Limit = query.Limit || 300; query.Limit = query.Limit || 300;
query.Fields = "Chapters"; query.Fields = "Chapters";
@ -182,8 +181,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla
if (container === 'm4a') { if (container === 'm4a') {
return 'audio/mp4'; return 'audio/mp4';
} }
} } else if (type === 'video') {
else if (type === 'video') {
if (container === 'mkv') { if (container === 'mkv') {
return 'video/x-matroska'; return 'video/x-matroska';
} }
@ -212,8 +210,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla
var results = regex.exec(url); var results = regex.exec(url);
if (results == null) { if (results == null) {
return ""; return "";
} } else {
else {
return decodeURIComponent(results[1].replace(/\+/g, " ")); return decodeURIComponent(results[1].replace(/\+/g, " "));
} }
} }
@ -649,13 +646,10 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla
// If this is the only way it can be played, then allow it // If this is the only way it can be played, then allow it
if (!mediaSource.SupportsDirectStream && !mediaSource.SupportsTranscoding) { if (!mediaSource.SupportsDirectStream && !mediaSource.SupportsTranscoding) {
return Promise.resolve(true); return Promise.resolve(true);
} } else {
else {
return isHostReachable(mediaSource, apiClient); return isHostReachable(mediaSource, apiClient);
} }
} } else if (mediaSource.Protocol === 'File') {
else if (mediaSource.Protocol === 'File') {
return new Promise(function (resolve, reject) { return new Promise(function (resolve, reject) {
@ -1272,7 +1266,8 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla
var currentMediaSource = self.currentMediaSource(player); var currentMediaSource = self.currentMediaSource(player);
var mediaStreams = []; var mediaStreams = [];
var i, length; var i;
var length;
for (i = 0, length = currentMediaSource.MediaStreams.length; i < length; i++) { for (i = 0, length = currentMediaSource.MediaStreams.length; i < length; i++) {
if (currentMediaSource.MediaStreams[i].Type === 'Audio') { if (currentMediaSource.MediaStreams[i].Type === 'Audio') {
mediaStreams.push(currentMediaSource.MediaStreams[i]); mediaStreams.push(currentMediaSource.MediaStreams[i]);
@ -1316,7 +1311,8 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla
var currentMediaSource = self.currentMediaSource(player); var currentMediaSource = self.currentMediaSource(player);
var mediaStreams = []; var mediaStreams = [];
var i, length; var i;
var length;
for (i = 0, length = currentMediaSource.MediaStreams.length; i < length; i++) { for (i = 0, length = currentMediaSource.MediaStreams.length; i < length; i++) {
if (currentMediaSource.MediaStreams[i].Type === 'Subtitle') { if (currentMediaSource.MediaStreams[i].Type === 'Subtitle') {
mediaStreams.push(currentMediaSource.MediaStreams[i]); mediaStreams.push(currentMediaSource.MediaStreams[i]);
@ -1360,7 +1356,8 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla
function isAudioStreamSupported(mediaSource, index, deviceProfile) { function isAudioStreamSupported(mediaSource, index, deviceProfile) {
var mediaStream; var mediaStream;
var i, length; var i;
var length;
var mediaStreams = mediaSource.MediaStreams; var mediaStreams = mediaSource.MediaStreams;
for (i = 0, length = mediaStreams.length; i < length; i++) { for (i = 0, length = mediaStreams.length; i < length; i++) {
@ -1423,8 +1420,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla
if (isAudioStreamSupported(self.currentMediaSource(player), index, profile)) { if (isAudioStreamSupported(self.currentMediaSource(player), index, profile)) {
player.setAudioStreamIndex(index); player.setAudioStreamIndex(index);
getPlayerData(player).audioStreamIndex = index; getPlayerData(player).audioStreamIndex = index;
} } else {
else {
changeStream(player, getCurrentTicks(player), { AudioStreamIndex: index }); changeStream(player, getCurrentTicks(player), { AudioStreamIndex: index });
getPlayerData(player).audioStreamIndex = index; getPlayerData(player).audioStreamIndex = index;
} }
@ -1595,8 +1591,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla
// Need to change the transcoded stream to remove subs // Need to change the transcoded stream to remove subs
changeStream(player, getCurrentTicks(player), { SubtitleStreamIndex: -1 }); changeStream(player, getCurrentTicks(player), { SubtitleStreamIndex: -1 });
} }
} } else if (!currentStream && newStream) {
else if (!currentStream && newStream) {
if (getDeliveryMethod(newStream) === 'External') { if (getDeliveryMethod(newStream) === 'External') {
selectedTrackElementIndex = index; selectedTrackElementIndex = index;
@ -1607,8 +1602,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla
// Need to change the transcoded stream to add subs // Need to change the transcoded stream to add subs
changeStream(player, getCurrentTicks(player), { SubtitleStreamIndex: index }); changeStream(player, getCurrentTicks(player), { SubtitleStreamIndex: index });
} }
} } else if (currentStream && newStream) {
else if (currentStream && newStream) {
// Switching tracks // Switching tracks
// We can handle this clientside if the new track is external or the new track is embedded and we're not transcoding // We can handle this clientside if the new track is external or the new track is embedded and we're not transcoding
@ -1645,7 +1639,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla
player = player || self._currentPlayer; player = player || self._currentPlayer;
if (player.disableShowingSubtitleOffset) { if (player.disableShowingSubtitleOffset) {
player.disableShowingSubtitleOffset(); player.disableShowingSubtitleOffset();
} }
} }
self.isShowingSubtitleOffsetEnabled = function(player) { self.isShowingSubtitleOffsetEnabled = function(player) {
@ -1674,7 +1668,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla
self.canHandleOffsetOnCurrentSubtitle = function(player) { self.canHandleOffsetOnCurrentSubtitle = function(player) {
var index = self.getSubtitleStreamIndex(player); var index = self.getSubtitleStreamIndex(player);
return index !== -1 && self.isSubtitleStreamExternal(index, player); return index !== -1 && self.isSubtitleStreamExternal(index, player);
} }
self.seek = function (ticks, player) { self.seek = function (ticks, player) {
@ -1865,17 +1859,15 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla
if (firstItem.Type === "Program") { if (firstItem.Type === "Program") {
promise = getItemsForPlayback(serverId, { promise = getItemsForPlayback(serverId, {
Ids: firstItem.ChannelId, Ids: firstItem.ChannelId
}); });
} } else if (firstItem.Type === "Playlist") {
else if (firstItem.Type === "Playlist") {
promise = getItemsForPlayback(serverId, { promise = getItemsForPlayback(serverId, {
ParentId: firstItem.Id, ParentId: firstItem.Id,
SortBy: options.shuffle ? 'Random' : null SortBy: options.shuffle ? 'Random' : null
}); });
} } else if (firstItem.Type === "MusicArtist") {
else if (firstItem.Type === "MusicArtist") {
promise = getItemsForPlayback(serverId, { promise = getItemsForPlayback(serverId, {
ArtistIds: firstItem.Id, ArtistIds: firstItem.Id,
@ -1885,8 +1877,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla
MediaTypes: "Audio" MediaTypes: "Audio"
}); });
} } else if (firstItem.MediaType === "Photo") {
else if (firstItem.MediaType === "Photo") {
promise = getItemsForPlayback(serverId, { promise = getItemsForPlayback(serverId, {
ParentId: firstItem.ParentId, ParentId: firstItem.ParentId,
@ -1915,8 +1906,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla
return Promise.resolve(result); return Promise.resolve(result);
}); });
} } else if (firstItem.Type === "PhotoAlbum") {
else if (firstItem.Type === "PhotoAlbum") {
promise = getItemsForPlayback(serverId, { promise = getItemsForPlayback(serverId, {
ParentId: firstItem.Id, ParentId: firstItem.Id,
@ -1928,8 +1918,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla
Limit: 1000 Limit: 1000
}); });
} } else if (firstItem.Type === "MusicGenre") {
else if (firstItem.Type === "MusicGenre") {
promise = getItemsForPlayback(serverId, { promise = getItemsForPlayback(serverId, {
GenreIds: firstItem.Id, GenreIds: firstItem.Id,
@ -1938,8 +1927,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla
SortBy: options.shuffle ? 'Random' : 'SortName', SortBy: options.shuffle ? 'Random' : 'SortName',
MediaTypes: "Audio" MediaTypes: "Audio"
}); });
} } else if (firstItem.IsFolder) {
else if (firstItem.IsFolder) {
promise = getItemsForPlayback(serverId, mergePlaybackQueries({ promise = getItemsForPlayback(serverId, mergePlaybackQueries({
@ -1951,8 +1939,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla
MediaTypes: "Audio,Video" MediaTypes: "Audio,Video"
}, queryOptions)); }, queryOptions));
} } else if (firstItem.Type === "Episode" && items.length === 1 && getPlayer(firstItem, options).supportsProgress !== false) {
else if (firstItem.Type === "Episode" && items.length === 1 && getPlayer(firstItem, options).supportsProgress !== false) {
promise = new Promise(function (resolve, reject) { promise = new Promise(function (resolve, reject) {
var apiClient = connectionManager.getApiClient(firstItem.ServerId); var apiClient = connectionManager.getApiClient(firstItem.ServerId);
@ -2537,16 +2524,12 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla
playMethod = 'DirectPlay'; playMethod = 'DirectPlay';
} } else if (mediaSource.StreamUrl) {
else if (mediaSource.StreamUrl) {
// Only used for audio // Only used for audio
playMethod = 'Transcode'; playMethod = 'Transcode';
mediaUrl = mediaSource.StreamUrl; mediaUrl = mediaSource.StreamUrl;
} } else if (mediaSource.SupportsDirectStream) {
else if (mediaSource.SupportsDirectStream) {
directOptions = { directOptions = {
Static: true, Static: true,
@ -2706,9 +2689,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla
return p.canPlayItem(item, playOptions); return p.canPlayItem(item, playOptions);
} }
return true; return true;
} } else if (item.Url && p.canPlayUrl) {
else if (item.Url && p.canPlayUrl) {
return p.canPlayUrl(item.Url); return p.canPlayUrl(item.Url);
} }
} }
@ -3222,8 +3203,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla
if (displayErrorCode && typeof (displayErrorCode) === 'string') { if (displayErrorCode && typeof (displayErrorCode) === 'string') {
showPlaybackInfoErrorMessage(self, displayErrorCode, nextItem); showPlaybackInfoErrorMessage(self, displayErrorCode, nextItem);
} } else if (nextItem) {
else if (nextItem) {
self.nextTrack(); self.nextTrack();
} }
} }

View file

@ -29,8 +29,7 @@ define(['playbackManager', 'layoutManager', 'events'], function (playbackManager
// returns a boolean // returns a boolean
orientationLocked = promise; orientationLocked = promise;
} }
} } catch (err) {
catch (err) {
onOrientationChangeError(err); onOrientationChangeError(err);
} }
} }
@ -46,8 +45,7 @@ define(['playbackManager', 'layoutManager', 'events'], function (playbackManager
if (unlockOrientation) { if (unlockOrientation) {
try { try {
unlockOrientation(); unlockOrientation();
} } catch (err) {
catch (err) {
console.log('error unlocking orientation: ' + err); console.log('error unlocking orientation: ' + err);
} }
orientationLocked = false; orientationLocked = false;

View file

@ -153,7 +153,6 @@ define(['appSettings', 'events', 'browser', 'loading', 'playbackManager', 'appRo
}); });
} }
function disconnectFromPlayer(currentDeviceName) { function disconnectFromPlayer(currentDeviceName) {
if (playbackManager.getSupportedCommands().indexOf('EndSession') !== -1) { if (playbackManager.getSupportedCommands().indexOf('EndSession') !== -1) {
@ -193,7 +192,6 @@ define(['appSettings', 'events', 'browser', 'loading', 'playbackManager', 'appRo
}); });
} else { } else {
playbackManager.setDefaultPlayerActive(); playbackManager.setDefaultPlayerActive();
@ -275,8 +273,7 @@ define(['appSettings', 'events', 'browser', 'loading', 'playbackManager', 'appRo
dialogHelper.open(dlg).then(function () { dialogHelper.open(dlg).then(function () {
if (destination === 'nowplaying') { if (destination === 'nowplaying') {
appRouter.showNowPlaying(); appRouter.showNowPlaying();
} } else if (destination === 'disconnectFromPlayer') {
else if (destination === 'disconnectFromPlayer') {
disconnectFromPlayer(currentDeviceName); disconnectFromPlayer(currentDeviceName);
} }
}, emptyCallback); }, emptyCallback);

View file

@ -9,14 +9,11 @@ define([], function () {
if (session.TranscodingInfo && session.TranscodingInfo.IsVideoDirect) { if (session.TranscodingInfo && session.TranscodingInfo.IsVideoDirect) {
return 'DirectStream'; return 'DirectStream';
} } else if (session.PlayState.PlayMethod === 'Transcode') {
else if (session.PlayState.PlayMethod === 'Transcode') {
return 'Transcode'; return 'Transcode';
} } else if (session.PlayState.PlayMethod === 'DirectStream') {
else if (session.PlayState.PlayMethod === 'DirectStream') {
return 'DirectPlay'; return 'DirectPlay';
} } else if (session.PlayState.PlayMethod === 'DirectPlay') {
else if (session.PlayState.PlayMethod === 'DirectPlay') {
return 'DirectPlay'; return 'DirectPlay';
} }
} }

View file

@ -58,15 +58,15 @@ define([], function () {
function arrayInsertAt(destArray, pos, arrayToInsert) { function arrayInsertAt(destArray, pos, arrayToInsert) {
var args = []; var args = [];
args.push(pos); // where to insert args.push(pos); // where to insert
args.push(0); // nothing to remove args.push(0); // nothing to remove
args = args.concat(arrayToInsert); // add on array to insert args = args.concat(arrayToInsert); // add on array to insert
destArray.splice.apply(destArray, args); // splice it in destArray.splice.apply(destArray, args); // splice it in
} }
PlayQueueManager.prototype.queueNext = function (items) { PlayQueueManager.prototype.queueNext = function (items) {
var i;
var i, length; var length;
for (i = 0, length = items.length; i < length; i++) { for (i = 0, length = items.length; i < length; i++) {

View file

@ -364,8 +364,7 @@ define(['events', 'globalize', 'playbackManager', 'connectionManager', 'playMeth
var category = playerStats[i]; var category = playerStats[i];
if (category.type === 'audio') { if (category.type === 'audio') {
category.name = 'Audio Info'; category.name = 'Audio Info';
} } else if (category.type === 'video') {
else if (category.type === 'video') {
category.name = 'Video Info'; category.name = 'Video Info';
} }
categories.push(category); categories.push(category);

View file

@ -46,16 +46,13 @@ define(['globalize', 'connectionManager', 'require', 'loading', 'apphost', 'dom'
if (item.Type === 'SeriesTimer') { if (item.Type === 'SeriesTimer') {
return '&#xE062;'; return '&#xE062;';
} } else if (item.TimerId || item.SeriesTimerId) {
else if (item.TimerId || item.SeriesTimerId) {
status = item.Status || 'Cancelled'; status = item.Status || 'Cancelled';
} } else if (item.Type === 'Timer') {
else if (item.Type === 'Timer') {
status = item.Status; status = item.Status;
} } else {
else {
return '&#xE061;'; return '&#xE061;';
} }

View file

@ -40,8 +40,7 @@ define(['dialogHelper', 'globalize', 'layoutManager', 'mediaInfo', 'apphost', 'c
maxHeight: imageHeight, maxHeight: imageHeight,
tag: item.ImageTags.Primary tag: item.ImageTags.Primary
}); });
} } else if (imageTags.Thumb) {
else if (imageTags.Thumb) {
return apiClient.getScaledImageUrl(item.Id, { return apiClient.getScaledImageUrl(item.Id, {
type: "Thumb", type: "Thumb",

View file

@ -95,7 +95,6 @@ define(['dialogHelper', 'globalize', 'layoutManager', 'mediaInfo', 'apphost', 'c
currentResolve = resolve; currentResolve = resolve;
require(['text!./recordingeditor.template.html'], function (template) { require(['text!./recordingeditor.template.html'], function (template) {
var dialogOptions = { var dialogOptions = {
removeOnClose: true, removeOnClose: true,
scrollY: false scrollY: false
@ -103,7 +102,6 @@ define(['dialogHelper', 'globalize', 'layoutManager', 'mediaInfo', 'apphost', 'c
if (layoutManager.tv) { if (layoutManager.tv) {
dialogOptions.size = 'fullscreen'; dialogOptions.size = 'fullscreen';
} else {
} }
var dlg = dialogHelper.createDialog(dialogOptions); var dlg = dialogHelper.createDialog(dialogOptions);

View file

@ -166,8 +166,7 @@ define(['globalize', 'loading', 'connectionManager'], function (globalize, loadi
loading.show(); loading.show();
cancelTimer(apiClient, timerId, true).then(resolve, reject); cancelTimer(apiClient, timerId, true).then(resolve, reject);
} } else if (result === 'cancelseriestimer') {
else if (result === 'cancelseriestimer') {
loading.show(); loading.show();

View file

@ -139,7 +139,7 @@ define(['dialogHelper', 'globalize', 'layoutManager', 'mediaInfo', 'apphost', 'c
context.querySelector('.selectKeepUpTo').innerHTML = html; context.querySelector('.selectKeepUpTo').innerHTML = html;
} }
function onFieldChange(e) { function onFieldChange(e) {
this.querySelector('.btnSubmit').click(); this.querySelector('.btnSubmit').click();
} }

View file

@ -179,15 +179,15 @@ define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageL
if (player) { if (player) {
switch (playbackManager.getRepeatMode(player)) { switch (playbackManager.getRepeatMode(player)) {
case "RepeatNone": case "RepeatNone":
playbackManager.setRepeatMode("RepeatAll", player); playbackManager.setRepeatMode("RepeatAll", player);
break; break;
case "RepeatAll": case "RepeatAll":
playbackManager.setRepeatMode("RepeatOne", player); playbackManager.setRepeatMode("RepeatOne", player);
break; break;
case "RepeatOne": case "RepeatOne":
playbackManager.setRepeatMode("RepeatNone", player); playbackManager.setRepeatMode("RepeatNone", player);
} }
} }
} }

View file

@ -34,18 +34,14 @@ define([], function () {
// when parsing previous hi-surrogate, 3 is added to byteLength // when parsing previous hi-surrogate, 3 is added to byteLength
if (prevCodePoint != null && isHighSurrogate(prevCodePoint)) { if (prevCodePoint != null && isHighSurrogate(prevCodePoint)) {
byteLength += 1; byteLength += 1;
} } else {
else {
byteLength += 3; byteLength += 3;
} }
} } else if (codePoint <= 0x7f) {
else if (codePoint <= 0x7f) {
byteLength += 1; byteLength += 1;
} } else if (codePoint >= 0x80 && codePoint <= 0x7ff) {
else if (codePoint >= 0x80 && codePoint <= 0x7ff) {
byteLength += 2; byteLength += 2;
} } else if (codePoint >= 0x800 && codePoint <= 0xffff) {
else if (codePoint >= 0x800 && codePoint <= 0xffff) {
byteLength += 3; byteLength += 3;
} }
prevCodePoint = codePoint; prevCodePoint = codePoint;
@ -77,8 +73,7 @@ define([], function () {
if (curByteLength === byteLength) { if (curByteLength === byteLength) {
return string.slice(0, i + 1); return string.slice(0, i + 1);
} } else if (curByteLength > byteLength) {
else if (curByteLength > byteLength) {
return string.slice(0, i - segment.length + 1); return string.slice(0, i - segment.length + 1);
} }
} }
@ -89,11 +84,11 @@ define([], function () {
return { return {
sanitize: function (input, replacement) { sanitize: function (input, replacement) {
var sanitized = input var sanitized = input
.replace(illegalRe, replacement) .replace(illegalRe, replacement)
.replace(controlRe, replacement) .replace(controlRe, replacement)
.replace(reservedRe, replacement) .replace(reservedRe, replacement)
.replace(windowsReservedRe, replacement) .replace(windowsReservedRe, replacement)
.replace(windowsTrailingRe, replacement); .replace(windowsTrailingRe, replacement);
return truncate(sanitized, 255); return truncate(sanitized, 255);
} }
}; };

View file

@ -82,7 +82,7 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc
intervactive: null, // Selector for special interactive elements. intervactive: null, // Selector for special interactive elements.
// Mixed options // Mixed options
speed: 0, // Animations speed in milliseconds. 0 to disable animations. speed: 0 // Animations speed in milliseconds. 0 to disable animations.
}, options); }, options);
@ -93,17 +93,14 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc
// in cases with firefox, if the smooth scroll api is supported then use that because their implementation is very good // in cases with firefox, if the smooth scroll api is supported then use that because their implementation is very good
if (options.allowNativeScroll === false) { if (options.allowNativeScroll === false) {
options.enableNativeScroll = false; options.enableNativeScroll = false;
} } else if (isSmoothScrollSupported && ((browser.firefox && !layoutManager.tv) || options.allowNativeSmoothScroll)) {
else if (isSmoothScrollSupported && ((browser.firefox && !layoutManager.tv) || options.allowNativeSmoothScroll)) {
// native smooth scroll // native smooth scroll
options.enableNativeScroll = true; options.enableNativeScroll = true;
} } else if (options.requireAnimation && (browser.animate || browser.supportsCssAnimation())) {
else if (options.requireAnimation && (browser.animate || browser.supportsCssAnimation())) {
// transform is the only way to guarantee animation // transform is the only way to guarantee animation
options.enableNativeScroll = false; options.enableNativeScroll = false;
} } else if (!layoutManager.tv || !browser.animate) {
else if (!layoutManager.tv || !browser.animate) {
options.enableNativeScroll = true; options.enableNativeScroll = true;
} }
@ -211,7 +208,9 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc
self.frameResizeObserver.observe(frame); self.frameResizeObserver.observe(frame);
} }
self.reload = function () { load(); }; self.reload = function () {
load();
};
self.getScrollEventName = function () { self.getScrollEventName = function () {
return transform ? 'scrollanimate' : 'scroll'; return transform ? 'scrollanimate' : 'scroll';
@ -227,7 +226,6 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc
function nativeScrollTo(container, pos, immediate) { function nativeScrollTo(container, pos, immediate) {
if (container.scroll) { if (container.scroll) {
if (o.horizontal) { if (o.horizontal) {
@ -242,8 +240,7 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc
behavior: immediate ? 'instant' : 'smooth' behavior: immediate ? 'instant' : 'smooth'
}); });
} }
} } else if (!immediate && container.scrollTo) {
else if (!immediate && container.scrollTo) {
if (o.horizontal) { if (o.horizontal) {
container.scrollTo(Math.round(pos), 0); container.scrollTo(Math.round(pos), 0);
} else { } else {

View file

@ -56,8 +56,7 @@ define(['layoutManager', 'globalize', 'require', 'events', 'connectionManager',
if (instance.options.collectionType === 'tvshows') { if (instance.options.collectionType === 'tvshows') {
if (query.IncludeArtists) { if (query.IncludeArtists) {
allowSearch = false; allowSearch = false;
} } else if (queryIncludeItemTypes === 'Movie' ||
else if (queryIncludeItemTypes === 'Movie' ||
queryIncludeItemTypes === 'LiveTvProgram' || queryIncludeItemTypes === 'LiveTvProgram' ||
queryIncludeItemTypes === 'MusicAlbum' || queryIncludeItemTypes === 'MusicAlbum' ||
queryIncludeItemTypes === 'Audio' || queryIncludeItemTypes === 'Audio' ||
@ -69,12 +68,10 @@ define(['layoutManager', 'globalize', 'require', 'events', 'connectionManager',
query.MediaTypes === 'Photo') { query.MediaTypes === 'Photo') {
allowSearch = false; allowSearch = false;
} }
} } else if (instance.options.collectionType === 'movies') {
else if (instance.options.collectionType === 'movies') {
if (query.IncludeArtists) { if (query.IncludeArtists) {
allowSearch = false; allowSearch = false;
} } else if (queryIncludeItemTypes === 'Series' ||
else if (queryIncludeItemTypes === 'Series' ||
queryIncludeItemTypes === 'Episode' || queryIncludeItemTypes === 'Episode' ||
queryIncludeItemTypes === 'LiveTvProgram' || queryIncludeItemTypes === 'LiveTvProgram' ||
queryIncludeItemTypes === 'MusicAlbum' || queryIncludeItemTypes === 'MusicAlbum' ||
@ -87,23 +84,19 @@ define(['layoutManager', 'globalize', 'require', 'events', 'connectionManager',
query.MediaTypes === 'Photo') { query.MediaTypes === 'Photo') {
allowSearch = false; allowSearch = false;
} }
} } else if (instance.options.collectionType === 'music') {
else if (instance.options.collectionType === 'music') {
if (query.People) { if (query.People) {
allowSearch = false; allowSearch = false;
} } else if (queryIncludeItemTypes === 'Series' ||
else if (queryIncludeItemTypes === 'Series' ||
queryIncludeItemTypes === 'Episode' || queryIncludeItemTypes === 'Episode' ||
queryIncludeItemTypes === 'LiveTvProgram' || queryIncludeItemTypes === 'LiveTvProgram' ||
queryIncludeItemTypes === 'Movie') { queryIncludeItemTypes === 'Movie') {
allowSearch = false; allowSearch = false;
} }
} } else if (instance.options.collectionType === 'livetv') {
else if (instance.options.collectionType === 'livetv') {
if (query.IncludeArtists || query.IncludePeople) { if (query.IncludeArtists || query.IncludePeople) {
allowSearch = false; allowSearch = false;
} } else if (queryIncludeItemTypes === 'Series' ||
else if (queryIncludeItemTypes === 'Series' ||
queryIncludeItemTypes === 'Episode' || queryIncludeItemTypes === 'Episode' ||
queryIncludeItemTypes === 'MusicAlbum' || queryIncludeItemTypes === 'MusicAlbum' ||
queryIncludeItemTypes === 'Audio' || queryIncludeItemTypes === 'Audio' ||
@ -142,7 +135,7 @@ define(['layoutManager', 'globalize', 'require', 'events', 'connectionManager',
} else if (query.IncludeArtists) { } else if (query.IncludeArtists) {
methodName = 'getArtists'; methodName = 'getArtists';
} }
} }
return apiClient[methodName](apiClient.getCurrentUserId(), query); return apiClient[methodName](apiClient.getCurrentUserId(), query);
@ -179,19 +172,19 @@ define(['layoutManager', 'globalize', 'require', 'events', 'connectionManager',
}, context, '.movieResults', { }, context, '.movieResults', {
preferThumb: true, preferThumb: true,
inheritThumb: false, inheritThumb: false,
shape: (enableScrollX() ? 'overflowPortrait' : 'portrait'), shape: (enableScrollX() ? 'overflowPortrait' : 'portrait'),
showParentTitleOrTitle: true, showParentTitleOrTitle: true,
showTitle: false, showTitle: false,
centerText: true, centerText: true,
coverImage: true, coverImage: true,
overlayText: false, overlayText: false,
overlayMoreButton: true, overlayMoreButton: true,
showAirTime: true, showAirTime: true,
showAirDateTime: true, showAirDateTime: true,
showChannelName: true showChannelName: true
}); });
} else { } else {
searchType(instance, apiClient, { searchType(instance, apiClient, {
@ -205,11 +198,11 @@ define(['layoutManager', 'globalize', 'require', 'events', 'connectionManager',
}, context, '.movieResults', { }, context, '.movieResults', {
showTitle: true, showTitle: true,
overlayText: false, overlayText: false,
centerText: true, centerText: true,
showYear: true showYear: true
}); });
} }
searchType(instance, apiClient, { searchType(instance, apiClient, {
@ -223,11 +216,11 @@ define(['layoutManager', 'globalize', 'require', 'events', 'connectionManager',
}, context, '.seriesResults', { }, context, '.seriesResults', {
showTitle: true, showTitle: true,
overlayText: false, overlayText: false,
centerText: true, centerText: true,
showYear: true showYear: true
}); });
if (instance.options.collectionType === 'livetv') { if (instance.options.collectionType === 'livetv') {
@ -246,19 +239,19 @@ define(['layoutManager', 'globalize', 'require', 'events', 'connectionManager',
}, context, '.episodeResults', { }, context, '.episodeResults', {
preferThumb: true, preferThumb: true,
inheritThumb: false, inheritThumb: false,
shape: (enableScrollX() ? 'overflowBackdrop' : 'backdrop'), shape: (enableScrollX() ? 'overflowBackdrop' : 'backdrop'),
showParentTitleOrTitle: true, showParentTitleOrTitle: true,
showTitle: false, showTitle: false,
centerText: true, centerText: true,
coverImage: true, coverImage: true,
overlayText: false, overlayText: false,
overlayMoreButton: true, overlayMoreButton: true,
showAirTime: true, showAirTime: true,
showAirDateTime: true, showAirDateTime: true,
showChannelName: true showChannelName: true
}); });
} else { } else {
@ -273,10 +266,10 @@ define(['layoutManager', 'globalize', 'require', 'events', 'connectionManager',
}, context, '.episodeResults', { }, context, '.episodeResults', {
coverImage: true, coverImage: true,
showTitle: true, showTitle: true,
showParentTitle: true showParentTitle: true
}); });
} }
searchType(instance, apiClient, { searchType(instance, apiClient, {
@ -292,20 +285,20 @@ define(['layoutManager', 'globalize', 'require', 'events', 'connectionManager',
}, context, '.sportsResults', { }, context, '.sportsResults', {
preferThumb: true, preferThumb: true,
inheritThumb: false, inheritThumb: false,
shape: (enableScrollX() ? 'overflowBackdrop' : 'backdrop'), shape: (enableScrollX() ? 'overflowBackdrop' : 'backdrop'),
showParentTitleOrTitle: true, showParentTitleOrTitle: true,
showTitle: false, showTitle: false,
centerText: true, centerText: true,
coverImage: true, coverImage: true,
overlayText: false, overlayText: false,
overlayMoreButton: true, overlayMoreButton: true,
showAirTime: true, showAirTime: true,
showAirDateTime: true, showAirDateTime: true,
showChannelName: true showChannelName: true
}); });
searchType(instance, apiClient, { searchType(instance, apiClient, {
searchTerm: value, searchTerm: value,
@ -320,20 +313,20 @@ define(['layoutManager', 'globalize', 'require', 'events', 'connectionManager',
}, context, '.kidsResults', { }, context, '.kidsResults', {
preferThumb: true, preferThumb: true,
inheritThumb: false, inheritThumb: false,
shape: (enableScrollX() ? 'overflowBackdrop' : 'backdrop'), shape: (enableScrollX() ? 'overflowBackdrop' : 'backdrop'),
showParentTitleOrTitle: true, showParentTitleOrTitle: true,
showTitle: false, showTitle: false,
centerText: true, centerText: true,
coverImage: true, coverImage: true,
overlayText: false, overlayText: false,
overlayMoreButton: true, overlayMoreButton: true,
showAirTime: true, showAirTime: true,
showAirDateTime: true, showAirDateTime: true,
showChannelName: true showChannelName: true
}); });
searchType(instance, apiClient, { searchType(instance, apiClient, {
searchTerm: value, searchTerm: value,
@ -348,20 +341,20 @@ define(['layoutManager', 'globalize', 'require', 'events', 'connectionManager',
}, context, '.newsResults', { }, context, '.newsResults', {
preferThumb: true, preferThumb: true,
inheritThumb: false, inheritThumb: false,
shape: (enableScrollX() ? 'overflowBackdrop' : 'backdrop'), shape: (enableScrollX() ? 'overflowBackdrop' : 'backdrop'),
showParentTitleOrTitle: true, showParentTitleOrTitle: true,
showTitle: false, showTitle: false,
centerText: true, centerText: true,
coverImage: true, coverImage: true,
overlayText: false, overlayText: false,
overlayMoreButton: true, overlayMoreButton: true,
showAirTime: true, showAirTime: true,
showAirDateTime: true, showAirDateTime: true,
showChannelName: true showChannelName: true
}); });
searchType(instance, apiClient, { searchType(instance, apiClient, {
searchTerm: value, searchTerm: value,
@ -379,20 +372,20 @@ define(['layoutManager', 'globalize', 'require', 'events', 'connectionManager',
}, context, '.programResults', { }, context, '.programResults', {
preferThumb: true, preferThumb: true,
inheritThumb: false, inheritThumb: false,
shape: (enableScrollX() ? 'overflowBackdrop' : 'backdrop'), shape: (enableScrollX() ? 'overflowBackdrop' : 'backdrop'),
showParentTitleOrTitle: true, showParentTitleOrTitle: true,
showTitle: false, showTitle: false,
centerText: true, centerText: true,
coverImage: true, coverImage: true,
overlayText: false, overlayText: false,
overlayMoreButton: true, overlayMoreButton: true,
showAirTime: true, showAirTime: true,
showAirDateTime: true, showAirDateTime: true,
showChannelName: true showChannelName: true
}); });
searchType(instance, apiClient, { searchType(instance, apiClient, {
searchTerm: value, searchTerm: value,
@ -406,11 +399,11 @@ define(['layoutManager', 'globalize', 'require', 'events', 'connectionManager',
}, context, '.videoResults', { }, context, '.videoResults', {
showParentTitle: true, showParentTitle: true,
showTitle: true, showTitle: true,
overlayText: false, overlayText: false,
centerText: true centerText: true
}); });
searchType(instance, apiClient, { searchType(instance, apiClient, {
searchTerm: value, searchTerm: value,
@ -422,9 +415,9 @@ define(['layoutManager', 'globalize', 'require', 'events', 'connectionManager',
}, context, '.peopleResults', { }, context, '.peopleResults', {
coverImage: true, coverImage: true,
showTitle: true showTitle: true
}); });
searchType(instance, apiClient, { searchType(instance, apiClient, {
searchTerm: value, searchTerm: value,
@ -435,9 +428,9 @@ define(['layoutManager', 'globalize', 'require', 'events', 'connectionManager',
IncludeArtists: true IncludeArtists: true
}, context, '.artistResults', { }, context, '.artistResults', {
coverImage: true, coverImage: true,
showTitle: true showTitle: true
}); });
searchType(instance, apiClient, { searchType(instance, apiClient, {
searchTerm: value, searchTerm: value,
@ -450,11 +443,11 @@ define(['layoutManager', 'globalize', 'require', 'events', 'connectionManager',
}, context, '.albumResults', { }, context, '.albumResults', {
showParentTitle: true, showParentTitle: true,
showTitle: true, showTitle: true,
overlayText: false, overlayText: false,
centerText: true centerText: true
}); });
searchType(instance, apiClient, { searchType(instance, apiClient, {
searchTerm: value, searchTerm: value,
@ -467,13 +460,13 @@ define(['layoutManager', 'globalize', 'require', 'events', 'connectionManager',
}, context, '.songResults', { }, context, '.songResults', {
showParentTitle: true, showParentTitle: true,
showTitle: true, showTitle: true,
overlayText: false, overlayText: false,
centerText: true, centerText: true,
action: 'play' action: 'play'
}); });
searchType(instance, apiClient, { searchType(instance, apiClient, {
searchTerm: value, searchTerm: value,
@ -486,11 +479,11 @@ define(['layoutManager', 'globalize', 'require', 'events', 'connectionManager',
}, context, '.photoResults', { }, context, '.photoResults', {
showParentTitle: false, showParentTitle: false,
showTitle: true, showTitle: true,
overlayText: false, overlayText: false,
centerText: true centerText: true
}); });
searchType(instance, apiClient, { searchType(instance, apiClient, {
searchTerm: value, searchTerm: value,
@ -503,10 +496,10 @@ define(['layoutManager', 'globalize', 'require', 'events', 'connectionManager',
}, context, '.photoAlbumResults', { }, context, '.photoAlbumResults', {
showTitle: true, showTitle: true,
overlayText: false, overlayText: false,
centerText: true centerText: true
}); });
searchType(instance, apiClient, { searchType(instance, apiClient, {
searchTerm: value, searchTerm: value,
@ -519,11 +512,11 @@ define(['layoutManager', 'globalize', 'require', 'events', 'connectionManager',
}, context, '.bookResults', { }, context, '.bookResults', {
showTitle: true, showTitle: true,
overlayText: false, overlayText: false,
centerText: true centerText: true
}); });
searchType(instance, apiClient, { searchType(instance, apiClient, {
searchTerm: value, searchTerm: value,
@ -536,10 +529,10 @@ define(['layoutManager', 'globalize', 'require', 'events', 'connectionManager',
}, context, '.audioBookResults', { }, context, '.audioBookResults', {
showTitle: true, showTitle: true,
overlayText: false, overlayText: false,
centerText: true centerText: true
}); });
searchType(instance, apiClient, { searchType(instance, apiClient, {
searchTerm: value, searchTerm: value,
@ -552,10 +545,10 @@ define(['layoutManager', 'globalize', 'require', 'events', 'connectionManager',
}, context, '.playlistResults', { }, context, '.playlistResults', {
showTitle: true, showTitle: true,
overlayText: false, overlayText: false,
centerText: true centerText: true
}); });
} }
function searchType(instance, apiClient, query, context, section, cardOptions) { function searchType(instance, apiClient, query, context, section, cardOptions) {

View file

@ -22,44 +22,44 @@
require(['apphost'], function (appHost) { require(['apphost'], function (appHost) {
"use strict"; "use strict";
var _GAMEPAD_A_BUTTON_INDEX = 0, var _GAMEPAD_A_BUTTON_INDEX = 0;
_GAMEPAD_B_BUTTON_INDEX = 1, var _GAMEPAD_B_BUTTON_INDEX = 1;
_GAMEPAD_DPAD_UP_BUTTON_INDEX = 12, var _GAMEPAD_DPAD_UP_BUTTON_INDEX = 12;
_GAMEPAD_DPAD_DOWN_BUTTON_INDEX = 13, var _GAMEPAD_DPAD_DOWN_BUTTON_INDEX = 13;
_GAMEPAD_DPAD_LEFT_BUTTON_INDEX = 14, var _GAMEPAD_DPAD_LEFT_BUTTON_INDEX = 14;
_GAMEPAD_DPAD_RIGHT_BUTTON_INDEX = 15, var _GAMEPAD_DPAD_RIGHT_BUTTON_INDEX = 15;
_GAMEPAD_A_KEY = "GamepadA", var _GAMEPAD_A_KEY = "GamepadA";
_GAMEPAD_B_KEY = "GamepadB", var _GAMEPAD_B_KEY = "GamepadB";
_GAMEPAD_DPAD_UP_KEY = "GamepadDPadUp", var _GAMEPAD_DPAD_UP_KEY = "GamepadDPadUp";
_GAMEPAD_DPAD_DOWN_KEY = "GamepadDPadDown", var _GAMEPAD_DPAD_DOWN_KEY = "GamepadDPadDown";
_GAMEPAD_DPAD_LEFT_KEY = "GamepadDPadLeft", var _GAMEPAD_DPAD_LEFT_KEY = "GamepadDPadLeft";
_GAMEPAD_DPAD_RIGHT_KEY = "GamepadDPadRight", var _GAMEPAD_DPAD_RIGHT_KEY = "GamepadDPadRight";
_GAMEPAD_LEFT_THUMBSTICK_UP_KEY = "GamepadLeftThumbStickUp", var _GAMEPAD_LEFT_THUMBSTICK_UP_KEY = "GamepadLeftThumbStickUp";
_GAMEPAD_LEFT_THUMBSTICK_DOWN_KEY = "GamepadLeftThumbStickDown", var _GAMEPAD_LEFT_THUMBSTICK_DOWN_KEY = "GamepadLeftThumbStickDown";
_GAMEPAD_LEFT_THUMBSTICK_LEFT_KEY = "GamepadLeftThumbStickLeft", var _GAMEPAD_LEFT_THUMBSTICK_LEFT_KEY = "GamepadLeftThumbStickLeft";
_GAMEPAD_LEFT_THUMBSTICK_RIGHT_KEY = "GamepadLeftThumbStickRight", var _GAMEPAD_LEFT_THUMBSTICK_RIGHT_KEY = "GamepadLeftThumbStickRight";
_GAMEPAD_A_KEYCODE = 0, var _GAMEPAD_A_KEYCODE = 0;
_GAMEPAD_B_KEYCODE = 27, var _GAMEPAD_B_KEYCODE = 27;
_GAMEPAD_DPAD_UP_KEYCODE = 38, var _GAMEPAD_DPAD_UP_KEYCODE = 38;
_GAMEPAD_DPAD_DOWN_KEYCODE = 40, var _GAMEPAD_DPAD_DOWN_KEYCODE = 40;
_GAMEPAD_DPAD_LEFT_KEYCODE = 37, var _GAMEPAD_DPAD_LEFT_KEYCODE = 37;
_GAMEPAD_DPAD_RIGHT_KEYCODE = 39, var _GAMEPAD_DPAD_RIGHT_KEYCODE = 39;
_GAMEPAD_LEFT_THUMBSTICK_UP_KEYCODE = 38, var _GAMEPAD_LEFT_THUMBSTICK_UP_KEYCODE = 38;
_GAMEPAD_LEFT_THUMBSTICK_DOWN_KEYCODE = 40, var _GAMEPAD_LEFT_THUMBSTICK_DOWN_KEYCODE = 40;
_GAMEPAD_LEFT_THUMBSTICK_LEFT_KEYCODE = 37, var _GAMEPAD_LEFT_THUMBSTICK_LEFT_KEYCODE = 37;
_GAMEPAD_LEFT_THUMBSTICK_RIGHT_KEYCODE = 39, var _GAMEPAD_LEFT_THUMBSTICK_RIGHT_KEYCODE = 39;
_THUMB_STICK_THRESHOLD = 0.75; var _THUMB_STICK_THRESHOLD = 0.75;
var _leftThumbstickUpPressed = false, var _leftThumbstickUpPressed = false;
_leftThumbstickDownPressed = false, var _leftThumbstickDownPressed = false;
_leftThumbstickLeftPressed = false, var _leftThumbstickLeftPressed = false;
_leftThumbstickRightPressed = false, var _leftThumbstickRightPressed = false;
_dPadUpPressed = false, var _dPadUpPressed = false;
_dPadDownPressed = false, var _dPadDownPressed = false;
_dPadLeftPressed = false, var _dPadLeftPressed = false;
_dPadRightPressed = false, var _dPadRightPressed = false;
_gamepadAPressed = false, var _gamepadAPressed = false;
_gamepadBPressed = false; var _gamepadBPressed = false;
// The set of buttons on the gamepad we listen for. // The set of buttons on the gamepad we listen for.
var ProcessedButtons = [ var ProcessedButtons = [
@ -260,7 +260,9 @@ require(['apphost'], function (appHost) {
gamepads = navigator.webkitGetGamepads(); gamepads = navigator.webkitGetGamepads();
} }
gamepads = gamepads || []; gamepads = gamepads || [];
var i, j, len; var i;
var j;
var len;
for (i = 0, len = gamepads.length; i < len; i++) { for (i = 0, len = gamepads.length; i < len; i++) {
var gamepad = gamepads[i]; var gamepad = gamepads[i];
if (gamepad) { if (gamepad) {

View file

@ -18,8 +18,7 @@ define(['connectionManager', 'playbackManager', 'events', 'inputManager', 'focus
toast({ title: args.Header, text: args.Text }); toast({ title: args.Header, text: args.Text });
}); });
} } else {
else {
require(['alert'], function (alert) { require(['alert'], function (alert) {
alert({ title: args.Header, text: args.Text }); alert({ title: args.Header, text: args.Text });
}); });
@ -157,11 +156,9 @@ define(['connectionManager', 'playbackManager', 'events', 'inputManager', 'focus
if (msg.Data.PlayCommand === "PlayNext") { if (msg.Data.PlayCommand === "PlayNext") {
playbackManager.queueNext({ ids: msg.Data.ItemIds, serverId: serverId }); playbackManager.queueNext({ ids: msg.Data.ItemIds, serverId: serverId });
} } else if (msg.Data.PlayCommand === "PlayLast") {
else if (msg.Data.PlayCommand === "PlayLast") {
playbackManager.queue({ ids: msg.Data.ItemIds, serverId: serverId }); playbackManager.queue({ ids: msg.Data.ItemIds, serverId: serverId });
} } else {
else {
playbackManager.play({ playbackManager.play({
ids: msg.Data.ItemIds, ids: msg.Data.ItemIds,
startPositionTicks: msg.Data.StartPositionTicks, startPositionTicks: msg.Data.StartPositionTicks,
@ -173,38 +170,29 @@ define(['connectionManager', 'playbackManager', 'events', 'inputManager', 'focus
}); });
} }
} } else if (msg.MessageType === "Playstate") {
else if (msg.MessageType === "Playstate") {
if (msg.Data.Command === 'Stop') { if (msg.Data.Command === 'Stop') {
inputManager.trigger('stop'); inputManager.trigger('stop');
} } else if (msg.Data.Command === 'Pause') {
else if (msg.Data.Command === 'Pause') {
inputManager.trigger('pause'); inputManager.trigger('pause');
} } else if (msg.Data.Command === 'Unpause') {
else if (msg.Data.Command === 'Unpause') {
inputManager.trigger('play'); inputManager.trigger('play');
} } else if (msg.Data.Command === 'PlayPause') {
else if (msg.Data.Command === 'PlayPause') {
inputManager.trigger('playpause'); inputManager.trigger('playpause');
} } else if (msg.Data.Command === 'Seek') {
else if (msg.Data.Command === 'Seek') {
playbackManager.seek(msg.Data.SeekPositionTicks); playbackManager.seek(msg.Data.SeekPositionTicks);
} } else if (msg.Data.Command === 'NextTrack') {
else if (msg.Data.Command === 'NextTrack') {
inputManager.trigger('next'); inputManager.trigger('next');
} } else if (msg.Data.Command === 'PreviousTrack') {
else if (msg.Data.Command === 'PreviousTrack') {
inputManager.trigger('previous'); inputManager.trigger('previous');
} else { } else {
notifyApp(); notifyApp();
} }
} } else if (msg.MessageType === "GeneralCommand") {
else if (msg.MessageType === "GeneralCommand") {
var cmd = msg.Data; var cmd = msg.Data;
processGeneralCommand(cmd, apiClient); processGeneralCommand(cmd, apiClient);
} } else if (msg.MessageType === "UserDataChanged") {
else if (msg.MessageType === "UserDataChanged") {
if (msg.Data.UserId === apiClient.getCurrentUserId()) { if (msg.Data.UserId === apiClient.getCurrentUserId()) {
@ -212,8 +200,7 @@ define(['connectionManager', 'playbackManager', 'events', 'inputManager', 'focus
events.trigger(serverNotifications, 'UserDataChanged', [apiClient, msg.Data.UserDataList[i]]); events.trigger(serverNotifications, 'UserDataChanged', [apiClient, msg.Data.UserDataList[i]]);
} }
} }
} } else {
else {
events.trigger(serverNotifications, msg.MessageType, [apiClient, msg.Data]); events.trigger(serverNotifications, msg.MessageType, [apiClient, msg.Data]);
} }

View file

@ -6,9 +6,7 @@ define(['loading', 'events', 'dialogHelper', 'dom', 'layoutManager', 'scrollHelp
var currentInstance; var currentInstance;
function reloadPageWhenServerAvailable(retryCount) { function reloadPageWhenServerAvailable(retryCount) {
var apiClient = currentApiClient; var apiClient = currentApiClient;
if (!apiClient) { if (!apiClient) {
return; return;
} }
@ -31,7 +29,6 @@ define(['loading', 'events', 'dialogHelper', 'dom', 'layoutManager', 'scrollHelp
function retryReload(retryCount) { function retryReload(retryCount) {
setTimeout(function () { setTimeout(function () {
retryCount = retryCount || 0; retryCount = retryCount || 0;
retryCount++; retryCount++;
@ -42,15 +39,12 @@ define(['loading', 'events', 'dialogHelper', 'dom', 'layoutManager', 'scrollHelp
} }
function startRestart(instance, apiClient, dlg) { function startRestart(instance, apiClient, dlg) {
currentApiClient = apiClient; currentApiClient = apiClient;
currentDlg = dlg; currentDlg = dlg;
currentInstance = instance; currentInstance = instance;
apiClient.restartServer().then(function () { apiClient.restartServer().then(function () {
setTimeout(reloadPageWhenServerAvailable, 250); setTimeout(reloadPageWhenServerAvailable, 250);
}); });
} }
@ -94,7 +88,8 @@ define(['loading', 'events', 'dialogHelper', 'dom', 'layoutManager', 'scrollHelp
dlg.querySelector('.text').innerHTML = globalize.translate('RestartPleaseWaitMessage'); dlg.querySelector('.text').innerHTML = globalize.translate('RestartPleaseWaitMessage');
var i, length; var i;
var length;
var html = ''; var html = '';
for (i = 0, length = configuredButtons.length; i < length; i++) { for (i = 0, length = configuredButtons.length; i < length; i++) {
var item = configuredButtons[i]; var item = configuredButtons[i];
@ -138,12 +133,10 @@ define(['loading', 'events', 'dialogHelper', 'dom', 'layoutManager', 'scrollHelp
} }
function ServerRestartDialog(options) { function ServerRestartDialog(options) {
this.options = options; this.options = options;
} }
ServerRestartDialog.prototype.show = function () { ServerRestartDialog.prototype.show = function () {
var instance = this; var instance = this;
loading.show(); loading.show();
@ -155,7 +148,6 @@ define(['loading', 'events', 'dialogHelper', 'dom', 'layoutManager', 'scrollHelp
}; };
ServerRestartDialog.prototype.destroy = function () { ServerRestartDialog.prototype.destroy = function () {
currentApiClient = null; currentApiClient = null;
currentDlg = null; currentDlg = null;
currentInstance = null; currentInstance = null;

View file

@ -8,7 +8,7 @@ define([], function () {
} else { } else {
window.open(url, target || '_blank'); window.open(url, target || '_blank');
} }
}, },
canExec: false, canExec: false,
exec: function (options) { exec: function (options) {

View file

@ -128,8 +128,7 @@ define(['playbackManager', 'inputManager', 'connectionManager', 'appRouter', 'gl
if (result.command === 'playallfromhere' || result.command === 'queueallfromhere') { if (result.command === 'playallfromhere' || result.command === 'queueallfromhere') {
executeAction(card, options.positionTo, result.command); executeAction(card, options.positionTo, result.command);
} } else if (result.updated || result.deleted) {
else if (result.updated || result.deleted) {
notifyRefreshNeeded(card, options.itemsContainer); notifyRefreshNeeded(card, options.itemsContainer);
} }
}); });
@ -204,21 +203,15 @@ define(['playbackManager', 'inputManager', 'connectionManager', 'appRouter', 'gl
context: card.getAttribute('data-context'), context: card.getAttribute('data-context'),
parentId: card.getAttribute('data-parentid') parentId: card.getAttribute('data-parentid')
}); });
} } else if (action === 'programdialog') {
else if (action === 'programdialog') {
showProgramDialog(item); showProgramDialog(item);
} } else if (action === 'instantmix') {
else if (action === 'instantmix') {
playbackManager.instantMix({ playbackManager.instantMix({
Id: playableItemId, Id: playableItemId,
ServerId: serverId ServerId: serverId
}); });
} } else if (action === 'play' || action === 'resume') {
else if (action === 'play' || action === 'resume') {
var startPositionTicks = parseInt(card.getAttribute('data-positionticks') || '0'); var startPositionTicks = parseInt(card.getAttribute('data-positionticks') || '0');
@ -227,9 +220,7 @@ define(['playbackManager', 'inputManager', 'connectionManager', 'appRouter', 'gl
startPositionTicks: startPositionTicks, startPositionTicks: startPositionTicks,
serverId: serverId serverId: serverId
}); });
} } else if (action === 'queue') {
else if (action === 'queue') {
if (playbackManager.isPlaying()) { if (playbackManager.isPlaying()) {
playbackManager.queue({ playbackManager.queue({
@ -243,25 +234,15 @@ define(['playbackManager', 'inputManager', 'connectionManager', 'appRouter', 'gl
serverId: serverId serverId: serverId
}); });
} }
} } else if (action === 'playallfromhere') {
else if (action === 'playallfromhere') {
playAllFromHere(card, serverId); playAllFromHere(card, serverId);
} } else if (action === 'queueallfromhere') {
else if (action === 'queueallfromhere') {
playAllFromHere(card, serverId, true); playAllFromHere(card, serverId, true);
} } else if (action === 'setplaylistindex') {
else if (action === 'setplaylistindex') {
playbackManager.setCurrentPlaylistItem(card.getAttribute('data-playlistitemid')); playbackManager.setCurrentPlaylistItem(card.getAttribute('data-playlistitemid'));
} } else if (action === 'record') {
else if (action === 'record') {
onRecordCommand(serverId, id, type, card.getAttribute('data-timerid'), card.getAttribute('data-seriestimerid')); onRecordCommand(serverId, id, type, card.getAttribute('data-timerid'), card.getAttribute('data-seriestimerid'));
} } else if (action === 'menu') {
else if (action === 'menu') {
var options = target.getAttribute('data-playoptions') === 'false' ? var options = target.getAttribute('data-playoptions') === 'false' ?
{ {
@ -277,27 +258,17 @@ define(['playbackManager', 'inputManager', 'connectionManager', 'appRouter', 'gl
options.positionTo = target; options.positionTo = target;
showContextMenu(card, options); showContextMenu(card, options);
} } else if (action === 'playmenu') {
else if (action === 'playmenu') {
showPlayMenu(card, target); showPlayMenu(card, target);
} } else if (action === 'edit') {
else if (action === 'edit') {
getItem(target).then(function (item) { getItem(target).then(function (item) {
editItem(item, serverId); editItem(item, serverId);
}); });
} } else if (action === 'playtrailer') {
else if (action === 'playtrailer') {
getItem(target).then(playTrailer); getItem(target).then(playTrailer);
} } else if (action === 'addtoplaylist') {
else if (action === 'addtoplaylist') {
getItem(target).then(addToPlaylist); getItem(target).then(addToPlaylist);
} } else if (action === 'custom') {
else if (action === 'custom') {
var customAction = target.getAttribute('data-customaction'); var customAction = target.getAttribute('data-customaction');

View file

@ -20,7 +20,7 @@ define(['apphost', 'userSettings', 'browser', 'events', 'pluginManager', 'backdr
} else { } else {
Emby.Page.goHome(); Emby.Page.goHome();
} }
}; }
function getThemes() { function getThemes() {
return [{ return [{
@ -36,7 +36,7 @@ define(['apphost', 'userSettings', 'browser', 'events', 'pluginManager', 'backdr
isDefaultServerDashboard: true isDefaultServerDashboard: true
}, { }, {
name: "Emby", name: "Emby",
id: "emby", id: "emby"
}, { }, {
name: "Light", name: "Light",
id: "light" id: "light"
@ -47,7 +47,7 @@ define(['apphost', 'userSettings', 'browser', 'events', 'pluginManager', 'backdr
name: "Windows Media Center", name: "Windows Media Center",
id: "wmc" id: "wmc"
}]; }];
}; }
var skinManager = { var skinManager = {
getThemes: getThemes, getThemes: getThemes,

View file

@ -77,8 +77,7 @@ define(['dialogHelper', 'inputManager', 'connectionManager', 'layoutManager', 'f
try { try {
appHost.setUserScalable(scalable); appHost.setUserScalable(scalable);
} } catch (err) {
catch (err) {
console.log('error in appHost.setUserScalable: ' + err); console.log('error in appHost.setUserScalable: ' + err);
} }
} }

View file

@ -192,8 +192,7 @@ define(['dialogHelper', 'require', 'layoutManager', 'globalize', 'userSettings',
var lastLanguage = userSettings.get('subtitleeditor-language'); var lastLanguage = userSettings.get('subtitleeditor-language');
if (lastLanguage) { if (lastLanguage) {
selectLanguage.value = lastLanguage; selectLanguage.value = lastLanguage;
} } else {
else {
apiClient.getCurrentUser().then(function (user) { apiClient.getCurrentUser().then(function (user) {
@ -347,8 +346,7 @@ define(['dialogHelper', 'require', 'layoutManager', 'globalize', 'userSettings',
if (typeof itemId === 'string') { if (typeof itemId === 'string') {
apiClient.getItem(apiClient.getCurrentUserId(), itemId).then(onGetItem); apiClient.getItem(apiClient.getCurrentUserId(), itemId).then(onGetItem);
} } else {
else {
onGetItem(itemId); onGetItem(itemId);
} }
} }

View file

@ -33,7 +33,7 @@ define([], function () {
case 'smaller': case 'smaller':
list.push({ name: 'font-size', value: '.8em' }); list.push({ name: 'font-size', value: '.8em' });
break; break;
case 'small': case 'small':
list.push({ name: 'font-size', value: 'inherit' }); list.push({ name: 'font-size', value: 'inherit' });
break; break;
case 'larger': case 'larger':
@ -132,7 +132,6 @@ define([], function () {
function applyStyleList(styles, elem) { function applyStyleList(styles, elem) {
for (var i = 0, length = styles.length; i < length; i++) { for (var i = 0, length = styles.length; i < length; i++) {
var style = styles[i]; var style = styles[i];

View file

@ -25,10 +25,10 @@ define(['playbackManager', 'text!./subtitlesync.template.html', 'css!./subtitles
subtitleSyncTextField.addEventListener("keypress", function(event) { subtitleSyncTextField.addEventListener("keypress", function(event) {
if(event.key === "Enter"){ if (event.key === "Enter") {
// if input key is enter search for float pattern // if input key is enter search for float pattern
var inputOffset = /[-+]?\d+\.?\d*/g.exec(this.textContent); var inputOffset = /[-+]?\d+\.?\d*/g.exec(this.textContent);
if(inputOffset) { if (inputOffset) {
inputOffset = inputOffset[0]; inputOffset = inputOffset[0];
// replace current text by considered offset // replace current text by considered offset
@ -48,7 +48,7 @@ define(['playbackManager', 'text!./subtitlesync.template.html', 'css!./subtitles
} else { } else {
// keep focus to prevent fade with bottom layout // keep focus to prevent fade with bottom layout
this.hasFocus = true; this.hasFocus = true;
if(event.key.match(/[+-\d.s]/) === null) { if (event.key.match(/[+-\d.s]/) === null) {
event.preventDefault(); event.preventDefault();
} }
} }
@ -92,14 +92,13 @@ define(['playbackManager', 'text!./subtitlesync.template.html', 'css!./subtitles
instance.element = parent; instance.element = parent;
} }
function getOffsetFromPercentage(value) { function getOffsetFromPercentage(value) {
// convert percent to fraction // convert percent to fraction
var offset = (value - 50) / 50; var offset = (value - 50) / 50;
// multiply by offset min/max range value (-x to +x) : // multiply by offset min/max range value (-x to +x) :
offset *= 30; offset *= 30;
return offset.toFixed(1); return offset.toFixed(1);
}; }
function getPercentageFromOffset(value) { function getPercentageFromOffset(value) {
// divide by offset min/max range value (-x to +x) : // divide by offset min/max range value (-x to +x) :
@ -108,16 +107,16 @@ define(['playbackManager', 'text!./subtitlesync.template.html', 'css!./subtitles
percentValue *= 50; percentValue *= 50;
percentValue += 50; percentValue += 50;
return Math.min(100, Math.max(0, percentValue.toFixed())); return Math.min(100, Math.max(0, percentValue.toFixed()));
}; }
function SubtitleSync(currentPlayer) { function SubtitleSync(currentPlayer) {
player = currentPlayer; player = currentPlayer;
init(this); init(this);
} }
SubtitleSync.prototype.destroy = function(){ SubtitleSync.prototype.destroy = function() {
SubtitleSync.prototype.toggle("forceToHide"); SubtitleSync.prototype.toggle("forceToHide");
if(player){ if (player) {
playbackManager.disableShowingSubtitleOffset(player); playbackManager.disableShowingSubtitleOffset(player);
playbackManager.setSubtitleOffset(0, player); playbackManager.setSubtitleOffset(0, player);
} }
@ -130,27 +129,30 @@ define(['playbackManager', 'text!./subtitlesync.template.html', 'css!./subtitles
SubtitleSync.prototype.toggle = function(action) { SubtitleSync.prototype.toggle = function(action) {
if(player && playbackManager.supportSubtitleOffset(player)){ if (player && playbackManager.supportSubtitleOffset(player)) {
switch(action) { switch (action) {
case undefined: case undefined:
// if showing subtitle sync is enabled // if showing subtitle sync is enabled
if(playbackManager.isShowingSubtitleOffsetEnabled(player) && if (playbackManager.isShowingSubtitleOffsetEnabled(player) &&
// if there is an external subtitle stream enabled // if there is an external subtitle stream enabled
playbackManager.canHandleOffsetOnCurrentSubtitle(player)){ playbackManager.canHandleOffsetOnCurrentSubtitle(player)) {
// if no subtitle offset is defined // if no subtitle offset is defined
if(!playbackManager.getPlayerSubtitleOffset(player)) { if (!playbackManager.getPlayerSubtitleOffset(player)) {
// set default offset to '0' = 50% // set default offset to '0' = 50%
subtitleSyncSlider.value = "50"; subtitleSyncSlider.value = "50";
subtitleSyncTextField.textContent = "0s"; subtitleSyncTextField.textContent = "0s";
playbackManager.setSubtitleOffset(0, player); playbackManager.setSubtitleOffset(0, player);
} }
// show subtitle sync // show subtitle sync
subtitleSyncContainer.classList.remove("hide"); subtitleSyncContainer.classList.remove("hide");
break; // stop here break; // stop here
} // else continue and hide } // else continue and hide
case "hide": case "hide":
if(subtitleSyncTextField.hasFocus){break;} // else continue and hide // only break if element has focus
if (subtitleSyncTextField.hasFocus) {
break;
}
case "forceToHide": case "forceToHide":
subtitleSyncContainer.classList.add("hide"); subtitleSyncContainer.classList.add("hide");
break; break;

View file

@ -246,7 +246,8 @@ define(['playbackManager', 'userSettings', 'alphaPicker', 'alphaNumericShortcuts
this.itemsContainer.setAttribute('data-parentid', params.parentId); this.itemsContainer.setAttribute('data-parentid', params.parentId);
} }
var i, length; var i;
var length;
var btnViewSettings = view.querySelectorAll('.btnViewSettings'); var btnViewSettings = view.querySelectorAll('.btnViewSettings');
for (i = 0, length = btnViewSettings.length; i < length; i++) { for (i = 0, length = btnViewSettings.length; i < length; i++) {
@ -559,7 +560,6 @@ define(['playbackManager', 'userSettings', 'alphaPicker', 'alphaNumericShortcuts
}; };
ItemsTab.prototype.onPause = function () { ItemsTab.prototype.onPause = function () {
var scroller = this.scroller; var scroller = this.scroller;
if (scroller && scroller.pause) { if (scroller && scroller.pause) {
scroller.pause(); scroller.pause();
@ -573,7 +573,6 @@ define(['playbackManager', 'userSettings', 'alphaPicker', 'alphaNumericShortcuts
}; };
ItemsTab.prototype.destroy = function () { ItemsTab.prototype.destroy = function () {
this.view = null; this.view = null;
this.itemsContainer = null; this.itemsContainer = null;
this.params = null; this.params = null;
@ -585,6 +584,7 @@ define(['playbackManager', 'userSettings', 'alphaPicker', 'alphaNumericShortcuts
this.alphaPicker.destroy(); this.alphaPicker.destroy();
this.alphaPicker = null; this.alphaPicker = null;
} }
this.sortButtons = null; this.sortButtons = null;
this.btnSortText = null; this.btnSortText = null;
this.btnSortIcon = null; this.btnSortIcon = null;

View file

@ -101,8 +101,7 @@ define(['backdrop', 'mainTabsManager', 'layoutManager', 'emby-tabs'], function (
if (!currentTabController) { if (!currentTabController) {
mainTabsManager.selectedTabIndex(this.initialTabIndex); mainTabsManager.selectedTabIndex(this.initialTabIndex);
} } else if (currentTabController && currentTabController.onResume) {
else if (currentTabController && currentTabController.onResume) {
currentTabController.onResume({}); currentTabController.onResume({});
} }
}; };

View file

@ -94,8 +94,7 @@ define(['playbackManager', 'userSettings', 'connectionManager'], function (playb
if (viewOptions.supportsThemeMedia) { if (viewOptions.supportsThemeMedia) {
// Do nothing here, allow it to keep playing // Do nothing here, allow it to keep playing
} } else {
else {
playThemeMedia([], null); playThemeMedia([], null);
} }

View file

@ -78,11 +78,9 @@ define(['dom', 'events'], function (dom, events) {
if (deltaX > swipeXThreshold && Math.abs(deltaY) < swipeXMaxY) { if (deltaX > swipeXThreshold && Math.abs(deltaY) < swipeXMaxY) {
events.trigger(self, 'swiperight', [touchTarget]); events.trigger(self, 'swiperight', [touchTarget]);
} } else if (deltaX < (0 - swipeXThreshold) && Math.abs(deltaY) < swipeXMaxY) {
else if (deltaX < (0 - swipeXThreshold) && Math.abs(deltaY) < swipeXMaxY) {
events.trigger(self, 'swipeleft', [touchTarget]); events.trigger(self, 'swipeleft', [touchTarget]);
} } else if ((deltaY < (0 - swipeYThreshold) || thresholdYMet) && Math.abs(deltaX) < swipeXMaxY) {
else if ((deltaY < (0 - swipeYThreshold) || thresholdYMet) && Math.abs(deltaX) < swipeXMaxY) {
thresholdYMet = true; thresholdYMet = true;
@ -94,8 +92,7 @@ define(['dom', 'events'], function (dom, events) {
currentDeltaX: currentDeltaX, currentDeltaX: currentDeltaX,
currentDeltaY: currentDeltaY currentDeltaY: currentDeltaY
}]); }]);
} } else if ((deltaY > swipeYThreshold || thresholdYMet) && Math.abs(deltaX) < swipeXMaxY) {
else if ((deltaY > swipeYThreshold || thresholdYMet) && Math.abs(deltaX) < swipeXMaxY) {
thresholdYMet = true; thresholdYMet = true;
events.trigger(self, 'swipedown', [touchTarget, { events.trigger(self, 'swipedown', [touchTarget, {

View file

@ -33,8 +33,7 @@ define(['connectionManager', 'serverNotifications', 'events', 'globalize', 'emby
var isFavorite = this.getAttribute('data-isfavorite') === 'true'; var isFavorite = this.getAttribute('data-isfavorite') === 'true';
if (likes === 'true') { if (likes === 'true') {
likes = true; likes = true;
} } else if (likes === 'false') {
else if (likes === 'false') {
likes = false; likes = false;
} else { } else {
likes = null; likes = null;
@ -64,7 +63,7 @@ define(['connectionManager', 'serverNotifications', 'events', 'globalize', 'emby
if (icon) { if (icon) {
icon.innerHTML = '&#xE87D;'; icon.innerHTML = '&#xE87D;';
icon.classList.add('ratingbutton-icon-withrating'); icon.classList.add('ratingbutton-icon-withrating');
} }
button.classList.add('ratingbutton-withrating'); button.classList.add('ratingbutton-withrating');
@ -73,7 +72,7 @@ define(['connectionManager', 'serverNotifications', 'events', 'globalize', 'emby
if (icon) { if (icon) {
icon.innerHTML = '&#xE87D;'; icon.innerHTML = '&#xE87D;';
icon.classList.remove('ratingbutton-icon-withrating'); icon.classList.remove('ratingbutton-icon-withrating');
//icon.innerHTML = '&#xE8DC;'; //icon.innerHTML = '&#xE8DC;';
} }
button.classList.remove('ratingbutton-withrating'); button.classList.remove('ratingbutton-withrating');
@ -82,7 +81,7 @@ define(['connectionManager', 'serverNotifications', 'events', 'globalize', 'emby
if (icon) { if (icon) {
icon.innerHTML = '&#xE87D;'; icon.innerHTML = '&#xE87D;';
icon.classList.remove('ratingbutton-icon-withrating'); icon.classList.remove('ratingbutton-icon-withrating');
//icon.innerHTML = '&#xE8DB;'; //icon.innerHTML = '&#xE8DB;';
} }
button.classList.remove('ratingbutton-withrating'); button.classList.remove('ratingbutton-withrating');
@ -91,7 +90,7 @@ define(['connectionManager', 'serverNotifications', 'events', 'globalize', 'emby
if (icon) { if (icon) {
icon.innerHTML = '&#xE87D;'; icon.innerHTML = '&#xE87D;';
icon.classList.remove('ratingbutton-icon-withrating'); icon.classList.remove('ratingbutton-icon-withrating');
//icon.innerHTML = '&#xE8DD;'; //icon.innerHTML = '&#xE8DD;';
} }
button.classList.remove('ratingbutton-withrating'); button.classList.remove('ratingbutton-withrating');
@ -152,8 +151,7 @@ define(['connectionManager', 'serverNotifications', 'events', 'globalize', 'emby
var isFavorite = this.getAttribute('data-isfavorite') === 'true'; var isFavorite = this.getAttribute('data-isfavorite') === 'true';
if (likes === 'true') { if (likes === 'true') {
likes = true; likes = true;
} } else if (likes === 'false') {
else if (likes === 'false') {
likes = false; likes = false;
} else { } else {
likes = null; likes = null;

View file

@ -42,7 +42,6 @@ define(["browser", "dom", "layoutManager", "css!components/viewManager/viewConta
var newViewInfo = normalizeNewView(options, isPluginpage); var newViewInfo = normalizeNewView(options, isPluginpage);
var newView = newViewInfo.elem; var newView = newViewInfo.elem;
if (isPluginpage) { if (isPluginpage) {
require(["legacyDashboard"]); require(["legacyDashboard"]);
} }

View file

@ -50,8 +50,7 @@ define(['viewContainer', 'focusManager', 'queryString', 'layoutManager'], functi
if (options.autoFocus !== false) { if (options.autoFocus !== false) {
focusManager.autoFocus(view); focusManager.autoFocus(view);
} }
} } else if (!layoutManager.mobile) {
else if (!layoutManager.mobile) {
if (view.activeElement && document.body.contains(view.activeElement) && focusManager.isCurrentlyFocusable(view.activeElement)) { if (view.activeElement && document.body.contains(view.activeElement) && focusManager.isCurrentlyFocusable(view.activeElement)) {
focusManager.focus(view.activeElement); focusManager.focus(view.activeElement);
} else { } else {

View file

@ -29,7 +29,7 @@ define(['require', 'dialogHelper', 'loading', 'apphost', 'layoutManager', 'conne
} }
userSettings.set(settingsKey + '-imageType', context.querySelector('.selectImageType').value); userSettings.set(settingsKey + '-imageType', context.querySelector('.selectImageType').value);
} }
function centerFocus(elem, horiz, on) { function centerFocus(elem, horiz, on) {
require(['scrollHelper'], function (scrollHelper) { require(['scrollHelper'], function (scrollHelper) {

View file

@ -22,17 +22,17 @@ define(['dom'], function (dom) {
var windowSize = dom.getWindowSize(); var windowSize = dom.getWindowSize();
var vpWidth = windowSize.innerWidth, var vpWidth = windowSize.innerWidth;
vpHeight = windowSize.innerHeight; var vpHeight = windowSize.innerHeight;
// Use this native browser method, if available. // Use this native browser method, if available.
var rec = elem.getBoundingClientRect(), var rec = elem.getBoundingClientRect();
tViz = rec.top >= 0 && rec.top < vpHeight + thresholdY, var tViz = rec.top >= 0 && rec.top < vpHeight + thresholdY;
bViz = rec.bottom > 0 && rec.bottom <= vpHeight + thresholdY, var bViz = rec.bottom > 0 && rec.bottom <= vpHeight + thresholdY;
lViz = rec.left >= 0 && rec.left < vpWidth + thresholdX, var lViz = rec.left >= 0 && rec.left < vpWidth + thresholdX;
rViz = rec.right > 0 && rec.right <= vpWidth + thresholdX, var rViz = rec.right > 0 && rec.right <= vpWidth + thresholdX;
vVisible = partial ? tViz || bViz : tViz && bViz, var vVisible = partial ? tViz || bViz : tViz && bViz;
hVisible = partial ? lViz || rViz : lViz && rViz; var hVisible = partial ? lViz || rViz : lViz && rViz;
return vVisible && hVisible; return vVisible && hVisible;
} }

View file

@ -135,7 +135,6 @@ define(['require', 'events', 'browser', 'appRouter', 'loading'], function (requi
require(['queryString'], function (queryString) { require(['queryString'], function (queryString) {
instance._currentSrc = options.url; instance._currentSrc = options.url;
var params = queryString.parse(options.url.split('?')[1]); var params = queryString.parse(options.url.split('?')[1]);
// 3. This function creates an <iframe> (and YouTube player) // 3. This function creates an <iframe> (and YouTube player)

View file

@ -122,17 +122,17 @@ define(["appRouter", "cardBuilder", "dom", "globalize", "connectionManager", "ap
function getFetchDataFn(section) { function getFetchDataFn(section) {
return function() { return function() {
var apiClient = this.apiClient, var apiClient = this.apiClient;
options = { var options = {
SortBy: (section.types, "SeriesName,SortName"), SortBy: (section.types, "SeriesName,SortName"),
SortOrder: "Ascending", SortOrder: "Ascending",
Filters: "IsFavorite", Filters: "IsFavorite",
Recursive: !0, Recursive: !0,
Fields: "PrimaryImageAspectRatio,BasicSyncInfo", Fields: "PrimaryImageAspectRatio,BasicSyncInfo",
CollapseBoxSetItems: !1, CollapseBoxSetItems: !1,
ExcludeLocationTypes: "Virtual", ExcludeLocationTypes: "Virtual",
EnableTotalRecordCount: !1 EnableTotalRecordCount: !1
}; };
options.Limit = 20; options.Limit = 20;
var userId = apiClient.getCurrentUserId(); var userId = apiClient.getCurrentUserId();
return "MusicArtist" === section.types ? apiClient.getArtists(userId, options) : (options.IncludeItemTypes = section.types, apiClient.getItems(userId, options)) return "MusicArtist" === section.types ? apiClient.getArtists(userId, options) : (options.IncludeItemTypes = section.types, apiClient.getItems(userId, options))
@ -149,17 +149,17 @@ define(["appRouter", "cardBuilder", "dom", "globalize", "connectionManager", "ap
function getItemsHtmlFn(section) { function getItemsHtmlFn(section) {
return function(items) { return function(items) {
var supportsImageAnalysis = appHost.supports("imageanalysis"), var supportsImageAnalysis = appHost.supports("imageanalysis");
cardLayout = (appHost.preferVisualCards || supportsImageAnalysis) && section.autoCardLayout && section.showTitle; var cardLayout = (appHost.preferVisualCards || supportsImageAnalysis) && section.autoCardLayout && section.showTitle;
cardLayout = !1; cardLayout = !1;
var serverId = this.apiClient.serverId(), var serverId = this.apiClient.serverId();
leadingButtons = layoutManager.tv ? [{ var leadingButtons = layoutManager.tv ? [{
name: globalize.translate("All"), name: globalize.translate("All"),
id: "more", id: "more",
icon: "&#xE87D;", icon: "&#xE87D;",
routeUrl: getRouteUrl(section, serverId) routeUrl: getRouteUrl(section, serverId)
}] : null, }] : null;
lines = 0; var lines = 0;
return section.showTitle && lines++, section.showYear && lines++, section.showParentTitle && lines++, cardBuilder.getCardsHtml({ return section.showTitle && lines++, section.showYear && lines++, section.showParentTitle && lines++, cardBuilder.getCardsHtml({
items: items, items: items,
preferThumb: section.preferThumb, preferThumb: section.preferThumb,
@ -187,11 +187,13 @@ define(["appRouter", "cardBuilder", "dom", "globalize", "connectionManager", "ap
} }
function createSections(instance, elem, apiClient) { function createSections(instance, elem, apiClient) {
var i, length, sections = getSections(), var i;
html = ""; var length;
var sections = getSections();
var html = "";
for (i = 0, length = sections.length; i < length; i++) { for (i = 0, length = sections.length; i < length; i++) {
var section = sections[i], var section = sections[i];
sectionClass = "verticalSection"; var sectionClass = "verticalSection";
section.showTitle || (sectionClass += " verticalSection-extrabottompadding"), html += '<div class="' + sectionClass + ' hide">', html += '<div class="sectionTitleContainer sectionTitleContainer-cards padded-left">', layoutManager.tv ? html += '<h2 class="sectionTitle sectionTitle-cards">' + globalize.translate(section.name) + "</h2>" : (html += '<a is="emby-linkbutton" href="' + getRouteUrl(section, apiClient.serverId()) + '" class="more button-flat button-flat-mini sectionTitleTextButton">', html += '<h2 class="sectionTitle sectionTitle-cards">', html += globalize.translate(section.name), html += "</h2>", html += '<i class="md-icon">&#xE5CC;</i>', html += "</a>"), html += "</div>", html += '<div is="emby-scroller" class="padded-top-focusscale padded-bottom-focusscale" data-mousewheel="false" data-centerfocus="true"><div is="emby-itemscontainer" class="itemsContainer scrollSlider focuscontainer-x padded-left padded-right" data-monitor="markfavorite"></div></div>', html += "</div>" section.showTitle || (sectionClass += " verticalSection-extrabottompadding"), html += '<div class="' + sectionClass + ' hide">', html += '<div class="sectionTitleContainer sectionTitleContainer-cards padded-left">', layoutManager.tv ? html += '<h2 class="sectionTitle sectionTitle-cards">' + globalize.translate(section.name) + "</h2>" : (html += '<a is="emby-linkbutton" href="' + getRouteUrl(section, apiClient.serverId()) + '" class="more button-flat button-flat-mini sectionTitleTextButton">', html += '<h2 class="sectionTitle sectionTitle-cards">', html += globalize.translate(section.name), html += "</h2>", html += '<i class="md-icon">&#xE5CC;</i>', html += "</a>"), html += "</div>", html += '<div is="emby-scroller" class="padded-top-focusscale padded-bottom-focusscale" data-mousewheel="false" data-centerfocus="true"><div is="emby-itemscontainer" class="itemsContainer scrollSlider focuscontainer-x padded-left padded-right" data-monitor="markfavorite"></div></div>', html += "</div>"
} }
elem.innerHTML = html; elem.innerHTML = html;

View file

@ -822,7 +822,7 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "cardBuild
if (detectRatio && item.PrimaryImageAspectRatio) { if (detectRatio && item.PrimaryImageAspectRatio) {
if (item.PrimaryImageAspectRatio >= 1.48) { if (item.PrimaryImageAspectRatio >= 1.48) {
shape = "thumb"; shape = "thumb";
} else if (item.PrimaryImageAspectRatio >= .85 && item.PrimaryImageAspectRatio <= 1.34) { } else if (item.PrimaryImageAspectRatio >= 0.85 && item.PrimaryImageAspectRatio <= 1.34) {
shape = "square"; shape = "square";
} }
} }
@ -858,7 +858,6 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "cardBuild
elem.classList.remove("squareDetailImageContainer"); elem.classList.remove("squareDetailImageContainer");
} }
if (url) { if (url) {
imageLoader.lazyImage(elem.querySelector("img"), url); imageLoader.lazyImage(elem.querySelector("img"), url);
} }

View file

@ -60,11 +60,11 @@ define(["globalize", "loading", "libraryMenu", "emby-checkbox", "emby-button", "
libraryMenu.setTabs("librarysetup", 1, getTabs); libraryMenu.setTabs("librarysetup", 1, getTabs);
loadData(); loadData();
ApiClient.getSystemInfo().then(function(info) { ApiClient.getSystemInfo().then(function(info) {
if ("Windows" === info.OperatingSystem) { if ("Windows" === info.OperatingSystem) {
view.querySelector(".fldSaveMetadataHidden").classList.remove("hide"); view.querySelector(".fldSaveMetadataHidden").classList.remove("hide");
} else { } else {
view.querySelector(".fldSaveMetadataHidden").classList.add("hide"); view.querySelector(".fldSaveMetadataHidden").classList.add("hide");
} }
}); });
}); });
} }

View file

@ -61,7 +61,7 @@ define(["libraryBrowser", "cardBuilder", "apphost", "imageLoader", "loading"], f
preferThumb: true, preferThumb: true,
context: 'music', context: 'music',
cardLayout: true, cardLayout: true,
showTitle: true, showTitle: true
}); });
} else if (viewStyle == "PosterCard") { } else if (viewStyle == "PosterCard") {
html = cardBuilder.getCardsHtml({ html = cardBuilder.getCardsHtml({
@ -69,7 +69,7 @@ define(["libraryBrowser", "cardBuilder", "apphost", "imageLoader", "loading"], f
shape: "auto", shape: "auto",
context: 'music', context: 'music',
cardLayout: true, cardLayout: true,
showTitle: true, showTitle: true
}); });
} else if (viewStyle == "Poster") { } else if (viewStyle == "Poster") {
html = cardBuilder.getCardsHtml({ html = cardBuilder.getCardsHtml({

View file

@ -72,8 +72,8 @@ define(["loading", "libraryMenu", "globalize", "emby-checkbox", "emby-select"],
} }
function validateHttps(form) { function validateHttps(form) {
var certPath = form.querySelector("#txtCertificatePath").value || null, var certPath = form.querySelector("#txtCertificatePath").value || null;
httpsMode = form.querySelector("#selectHttpsMode").value; var httpsMode = form.querySelector("#selectHttpsMode").value;
return "enabled" !== httpsMode && "required" !== httpsMode || certPath ? Promise.resolve() : new Promise(function(resolve, reject) { return "enabled" !== httpsMode && "required" !== httpsMode || certPath ? Promise.resolve() : new Promise(function(resolve, reject) {
return alertText({ return alertText({
title: globalize.translate("TitleHostingSettings"), title: globalize.translate("TitleHostingSettings"),

View file

@ -92,13 +92,13 @@ define(["jQuery", "loading", "datetime", "dom", "globalize", "emby-input", "emby
var hours = trigger.IntervalTicks / 36e9; var hours = trigger.IntervalTicks / 36e9;
if (hours == .25) { if (hours == 0.25) {
return "Every 15 minutes"; return "Every 15 minutes";
} }
if (hours == .5) { if (hours == 0.5) {
return "Every 30 minutes"; return "Every 30 minutes";
} }
if (hours == .75) { if (hours == 0.75) {
return "Every 45 minutes"; return "Every 45 minutes";
} }
if (hours == 1) { if (hours == 1) {

View file

@ -137,7 +137,8 @@ define(["jQuery", "loading", "events", "globalize", "serverNotifications", "huma
pollInterval && clearInterval(pollInterval); pollInterval && clearInterval(pollInterval);
} }
var pollInterval, serverId = ApiClient.serverId(); var pollInterval;
var serverId = ApiClient.serverId();
$(".divScheduledTasks", view).on("click", ".btnStartTask", function() { $(".divScheduledTasks", view).on("click", ".btnStartTask", function() {
var button = this; var button = this;

View file

@ -57,7 +57,9 @@ define(["layoutManager", "loading", "datetime", "libraryBrowser", "cardBuilder",
month: "short", month: "short",
day: "numeric" day: "numeric"
}); });
} catch (err) {} } catch (err) {
console.log('error parsing timestamp for upcoming tv shows');
}
} }
if (dateText != currentGroupName) { if (dateText != currentGroupName) {

View file

@ -467,34 +467,34 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med
switch (e.detail.command) { switch (e.detail.command) {
case "left": case "left":
if ("osd" === currentVisibleMenu) { if ("osd" === currentVisibleMenu) {
showOsd(); showOsd();
} else { } else {
if (!currentVisibleMenu) { if (!currentVisibleMenu) {
e.preventDefault(); e.preventDefault();
playbackManager.rewind(player); playbackManager.rewind(player);
}
} }
}
break; break;
case "right": case "right":
if ("osd" === currentVisibleMenu) { if ("osd" === currentVisibleMenu) {
showOsd(); showOsd();
} else if (!currentVisibleMenu) { } else if (!currentVisibleMenu) {
e.preventDefault(); e.preventDefault();
playbackManager.fastForward(player); playbackManager.fastForward(player);
} }
break; break;
case "pageup": case "pageup":
playbackManager.nextChapter(player); playbackManager.nextChapter(player);
break; break;
case "pagedown": case "pagedown":
playbackManager.previousChapter(player); playbackManager.previousChapter(player);
break; break;
case "up": case "up":
case "down": case "down":
@ -508,16 +508,16 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med
case "rewind": case "rewind":
case "next": case "next":
case "previous": case "previous":
showOsd(); showOsd();
break; break;
case "record": case "record":
onRecordingCommand(); onRecordingCommand();
showOsd(); showOsd();
break; break;
case "togglestats": case "togglestats":
toggleStats(); toggleStats();
} }
} }
@ -852,7 +852,6 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med
var volumeSlider = view.querySelector('.osdVolumeSliderContainer'); var volumeSlider = view.querySelector('.osdVolumeSliderContainer');
var progressElement = volumeSlider.querySelector('.mdl-slider-background-lower'); var progressElement = volumeSlider.querySelector('.mdl-slider-background-lower');
if (-1 === supportedCommands.indexOf("Mute")) { if (-1 === supportedCommands.indexOf("Mute")) {
showMuteButton = false; showMuteButton = false;
} }
@ -1062,7 +1061,7 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med
var player = currentPlayer; var player = currentPlayer;
if (subtitleSyncOverlay) { if (subtitleSyncOverlay) {
subtitleSyncOverlay.toggle(action); subtitleSyncOverlay.toggle(action);
} else if(player){ } else if (player) {
subtitleSyncOverlay = new SubtitleSync(player); subtitleSyncOverlay = new SubtitleSync(player);
} }
}); });
@ -1096,52 +1095,52 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med
case "k": case "k":
playbackManager.playPause(currentPlayer); playbackManager.playPause(currentPlayer);
showOsd(); showOsd();
break; break;
case "l": case "l":
case "ArrowRight": case "ArrowRight":
case "Right": case "Right":
playbackManager.fastForward(currentPlayer); playbackManager.fastForward(currentPlayer);
showOsd(); showOsd();
break; break;
case "j": case "j":
case "ArrowLeft": case "ArrowLeft":
case "Left": case "Left":
playbackManager.rewind(currentPlayer); playbackManager.rewind(currentPlayer);
showOsd(); showOsd();
break; break;
case "f": case "f":
if (!e.ctrlKey && !e.metaKey) { if (!e.ctrlKey && !e.metaKey) {
playbackManager.toggleFullscreen(currentPlayer); playbackManager.toggleFullscreen(currentPlayer);
showOsd(); showOsd();
} }
break; break;
case "m": case "m":
playbackManager.toggleMute(currentPlayer); playbackManager.toggleMute(currentPlayer);
showOsd(); showOsd();
break; break;
case "NavigationLeft": case "NavigationLeft":
case "GamepadDPadLeft": case "GamepadDPadLeft":
case "GamepadLeftThumbstickLeft": case "GamepadLeftThumbstickLeft":
// Ignores gamepad events that are always triggered, even when not focused. // Ignores gamepad events that are always triggered, even when not focused.
if (document.hasFocus()) { if (document.hasFocus()) {
playbackManager.rewind(currentPlayer); playbackManager.rewind(currentPlayer);
showOsd(); showOsd();
} }
break; break;
case "NavigationRight": case "NavigationRight":
case "GamepadDPadRight": case "GamepadDPadRight":
case "GamepadLeftThumbstickRight": case "GamepadLeftThumbstickRight":
// Ignores gamepad events that are always triggered, even when not focused. // Ignores gamepad events that are always triggered, even when not focused.
if (document.hasFocus()) { if (document.hasFocus()) {
playbackManager.fastForward(currentPlayer); playbackManager.fastForward(currentPlayer);
showOsd(); showOsd();
} }
} }
} }
@ -1275,7 +1274,7 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med
dom.addEventListener(window, "keydown", onWindowKeyDown, { dom.addEventListener(window, "keydown", onWindowKeyDown, {
passive: true passive: true
}); });
} catch(e) { } catch (e) {
require(['appRouter'], function(appRouter) { require(['appRouter'], function(appRouter) {
appRouter.showDirect('/'); appRouter.showDirect('/');
}); });
@ -1334,24 +1333,24 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med
switch (pointerType) { switch (pointerType) {
case "touch": case "touch":
if (now - lastPointerDown > 300) { if (now - lastPointerDown > 300) {
lastPointerDown = now; lastPointerDown = now;
toggleOsd(); toggleOsd();
} }
break; break;
case "mouse": case "mouse":
if (!e.button) { if (!e.button) {
playbackManager.playPause(currentPlayer); playbackManager.playPause(currentPlayer);
showOsd(); showOsd();
} }
break; break;
default: default:
playbackManager.playPause(currentPlayer); playbackManager.playPause(currentPlayer);
showOsd(); showOsd();
} }
}, { }, {
passive: true passive: true
@ -1361,14 +1360,16 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med
dom.addEventListener(view, "dblclick", onDoubleClick, {}); dom.addEventListener(view, "dblclick", onDoubleClick, {});
} else { } else {
var options = { passive: true }; var options = { passive: true };
dom.addEventListener(view, "dblclick", function () { playbackManager.toggleFullscreen(currentPlayer); }, options); dom.addEventListener(view, "dblclick", function () {
playbackManager.toggleFullscreen(currentPlayer);
}, options);
} }
view.querySelector(".buttonMute").addEventListener("click", function () { view.querySelector(".buttonMute").addEventListener("click", function () {
playbackManager.toggleMute(currentPlayer); playbackManager.toggleMute(currentPlayer);
}); });
nowPlayingVolumeSlider.addEventListener("change", function () { nowPlayingVolumeSlider.addEventListener("change", function () {
if(volumeSliderTimer){ if (volumeSliderTimer) {
// interupt and remove existing timer // interupt and remove existing timer
clearTimeout(volumeSliderTimer); clearTimeout(volumeSliderTimer);
volumeSliderTimer = null; volumeSliderTimer = null;
@ -1376,10 +1377,10 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med
playbackManager.setVolume(this.value, currentPlayer); playbackManager.setVolume(this.value, currentPlayer);
}); });
nowPlayingVolumeSlider.addEventListener("mousemove", function () { nowPlayingVolumeSlider.addEventListener("mousemove", function () {
if(!volumeSliderTimer){ if (!volumeSliderTimer) {
var that = this; var that = this;
// register new timer // register new timer
volumeSliderTimer = setTimeout(function(){ volumeSliderTimer = setTimeout(function() {
playbackManager.setVolume(that.value, currentPlayer); playbackManager.setVolume(that.value, currentPlayer);
// delete timer after completion // delete timer after completion
volumeSliderTimer = null; volumeSliderTimer = null;
@ -1387,10 +1388,10 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med
} }
}); });
nowPlayingVolumeSlider.addEventListener("touchmove", function () { nowPlayingVolumeSlider.addEventListener("touchmove", function () {
if(!volumeSliderTimer){ if (!volumeSliderTimer) {
var that = this; var that = this;
// register new timer // register new timer
volumeSliderTimer = setTimeout(function(){ volumeSliderTimer = setTimeout(function() {
playbackManager.setVolume(that.value, currentPlayer); playbackManager.setVolume(that.value, currentPlayer);
// delete timer after completion // delete timer after completion
volumeSliderTimer = null; volumeSliderTimer = null;

View file

@ -30,7 +30,6 @@ define([], function () {
} }
function isMobile(userAgent) { function isMobile(userAgent) {
var terms = [ var terms = [
'mobi', 'mobi',
'ipad', 'ipad',
@ -144,14 +143,16 @@ define([], function () {
} }
} }
var animation = false, var animation = false;
animationstring = 'animation', var animationstring = 'animation';
keyframeprefix = '', var keyframeprefix = '';
domPrefixes = ['Webkit', 'O', 'Moz'], var domPrefixes = ['Webkit', 'O', 'Moz'];
pfx = '', var pfx = '';
elm = document.createElement('div'); var elm = document.createElement('div');
if (elm.style.animationName !== undefined) { animation = true; } if (elm.style.animationName !== undefined) {
animation = true;
}
if (animation === false && allowPrefix) { if (animation === false && allowPrefix) {
for (var i = 0; i < domPrefixes.length; i++) { for (var i = 0; i < domPrefixes.length; i++) {
@ -204,8 +205,7 @@ define([], function () {
// http://www.neowin.net/news/ie11-fakes-user-agent-to-fool-gmail-in-windows-phone-81-gdr1-update // http://www.neowin.net/news/ie11-fakes-user-agent-to-fool-gmail-in-windows-phone-81-gdr1-update
browser = "msie"; browser = "msie";
} } else if (ua.indexOf("like gecko") !== -1 && ua.indexOf('webkit') === -1 && ua.indexOf('opera') === -1 && ua.indexOf('chrome') === -1 && ua.indexOf('safari') === -1) {
else if (ua.indexOf("like gecko") !== -1 && ua.indexOf('webkit') === -1 && ua.indexOf('opera') === -1 && ua.indexOf('chrome') === -1 && ua.indexOf('safari') === -1) {
browser = "msie"; browser = "msie";
} }
} }

View file

@ -88,18 +88,14 @@ define(['browser'], function (browser) {
if (browser.edgeUwp) { if (browser.edgeUwp) {
return true; return true;
} }
} } else if (format === 'wma') {
else if (format === 'wma') {
if (browser.tizen || browser.orsay) { if (browser.tizen || browser.orsay) {
return true; return true;
} }
if (browser.edgeUwp) { if (browser.edgeUwp) {
return true; return true;
} }
} } else if (format === 'opus') {
else if (format === 'opus') {
typeString = 'audio/ogg; codecs="opus"'; typeString = 'audio/ogg; codecs="opus"';
if (document.createElement('audio').canPlayType(typeString).replace(/no/, '')) { if (document.createElement('audio').canPlayType(typeString).replace(/no/, '')) {
@ -107,9 +103,7 @@ define(['browser'], function (browser) {
} }
return false; return false;
} } else if (format === 'mp2') {
else if (format === 'mp2') {
// For now // For now
return false; return false;
@ -575,9 +569,7 @@ define(['browser'], function (browser) {
Type: 'Audio', Type: 'Audio',
AudioCodec: audioFormat AudioCodec: audioFormat
}); });
} } else if (audioFormat === 'mp3') {
else if (audioFormat === 'mp3') {
profile.DirectPlayProfiles.push({ profile.DirectPlayProfiles.push({
Container: audioFormat, Container: audioFormat,

View file

@ -2,19 +2,19 @@ define(["datetime", "jQuery", "material-icons"], function (datetime, $) {
"use strict"; "use strict";
function getNode(item, folderState, selected) { function getNode(item, folderState, selected) {
var htmlName = getNodeInnerHtml(item), var htmlName = getNodeInnerHtml(item);
node = { var node = {
id: item.Id, id: item.Id,
text: htmlName, text: htmlName,
state: { state: {
opened: item.IsFolder && folderState == "open", opened: item.IsFolder && folderState == "open",
selected: selected selected: selected
}, },
li_attr: { li_attr: {
serveritemtype: item.Type, serveritemtype: item.Type,
collectiontype: item.CollectionType collectiontype: item.CollectionType
} }
}; };
if (item.IsFolder) { if (item.IsFolder) {
node.children = [{ node.children = [{
text: "Loading...", text: "Loading...",
@ -44,20 +44,15 @@ define(["datetime", "jQuery", "material-icons"], function (datetime, $) {
var htmlName = "<div class='editorNode'>"; var htmlName = "<div class='editorNode'>";
if (item.IsFolder) { if (item.IsFolder) {
htmlName += '<i class="md-icon metadataSidebarIcon">folder</i>'; htmlName += '<i class="md-icon metadataSidebarIcon">folder</i>';
} } else if (item.MediaType === "Video") {
else if (item.MediaType === "Video") {
htmlName += '<i class="md-icon metadataSidebarIcon">movie</i>'; htmlName += '<i class="md-icon metadataSidebarIcon">movie</i>';
} } else if (item.MediaType === "Audio") {
else if (item.MediaType === "Audio") {
htmlName += '<i class="md-icon metadataSidebarIcon">audiotrack</i>'; htmlName += '<i class="md-icon metadataSidebarIcon">audiotrack</i>';
} } else if (item.Type === "TvChannel") {
else if (item.Type === "TvChannel") {
htmlName += '<i class="md-icon metadataSidebarIcon">live_tv</i>'; htmlName += '<i class="md-icon metadataSidebarIcon">live_tv</i>';
} } else if (item.MediaType === "Photo") {
else if (item.MediaType === "Photo") {
htmlName += '<i class="md-icon metadataSidebarIcon">photo</i>'; htmlName += '<i class="md-icon metadataSidebarIcon">photo</i>';
} } else if (item.MediaType === "Book") {
else if (item.MediaType === "Book") {
htmlName += '<i class="md-icon metadataSidebarIcon">book</i>'; htmlName += '<i class="md-icon metadataSidebarIcon">book</i>';
} }
if (item.LockData) { if (item.LockData) {

View file

@ -156,7 +156,8 @@ define(["userSettings"], function (userSettings) {
html += '<h2 style="margin:0 0 .5em;">'; html += '<h2 style="margin:0 0 .5em;">';
html += Globalize.translate("HeaderSortBy"); html += Globalize.translate("HeaderSortBy");
html += "</h2>"; html += "</h2>";
var i, length; var i;
var length;
var isChecked; var isChecked;
html += '<div>'; html += '<div>';
for (i = 0, length = options.items.length; i < length; i++) { for (i = 0, length = options.items.length; i < length; i++) {

View file

@ -189,7 +189,6 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", "
html += "</div>"; html += "</div>";
} }
// add buttons to navigation drawer // add buttons to navigation drawer
navDrawerScrollContainer.innerHTML = html; navDrawerScrollContainer.innerHTML = html;
// bind logout button click to method // bind logout button click to method

Some files were not shown because too many files have changed in this diff Show more