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:
parent
0b0ea7f406
commit
3739741786
101 changed files with 883 additions and 1051 deletions
1
.eslintignore
Normal file
1
.eslintignore
Normal file
|
@ -0,0 +1 @@
|
||||||
|
libraries/
|
|
@ -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"]
|
||||||
|
|
|
@ -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;
|
||||||
|
});
|
||||||
|
|
|
@ -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>';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
|
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
|
@ -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");
|
||||||
|
|
|
@ -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",
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
|
@ -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 () {
|
||||||
|
|
|
@ -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*/;
|
||||||
|
|
|
@ -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') {
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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 */
|
||||||
|
|
|
@ -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++) {
|
||||||
|
|
|
@ -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"></i>';
|
return '<i class="md-icon programIcon seriesTimerIcon"></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);
|
||||||
|
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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'));
|
||||||
}
|
}
|
||||||
|
|
|
@ -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', {
|
||||||
|
|
|
@ -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();
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
|
@ -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>';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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>';
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
|
@ -45,7 +45,7 @@ define(['require', 'browser'], function (require, browser) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
observerOptions
|
observerOptions
|
||||||
);
|
);
|
||||||
|
|
||||||
this.observer = observer;
|
this.observer = observer;
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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');
|
||||||
|
|
|
@ -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"></i>';
|
return '<i class="md-icon mediaInfoItem mediaInfoIconItem mediaInfoTimerIcon"></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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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");
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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() {
|
||||||
|
|
|
@ -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 =
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
|
@ -48,9 +48,7 @@ define([], function () {
|
||||||
}
|
}
|
||||||
|
|
||||||
timeout = setTimeout(testAutoplay, 500);
|
timeout = setTimeout(testAutoplay, 500);
|
||||||
}
|
} catch (e) {
|
||||||
|
|
||||||
catch (e) {
|
|
||||||
reject();
|
reject();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -103,8 +103,7 @@ define(['events', 'playbackManager', 'dom', 'browser', 'css!./iconosd', 'materia
|
||||||
if (iconElement) {
|
if (iconElement) {
|
||||||
if (brightness >= 80) {
|
if (brightness >= 80) {
|
||||||
iconElement.innerHTML = '';
|
iconElement.innerHTML = '';
|
||||||
}
|
} else if (brightness >= 20) {
|
||||||
else if (brightness >= 20) {
|
|
||||||
iconElement.innerHTML = '';
|
iconElement.innerHTML = '';
|
||||||
} else {
|
} else {
|
||||||
iconElement.innerHTML = '';
|
iconElement.innerHTML = '';
|
||||||
|
|
|
@ -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');
|
||||||
});
|
});
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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++) {
|
||||||
|
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -46,16 +46,13 @@ define(['globalize', 'connectionManager', 'require', 'loading', 'apphost', 'dom'
|
||||||
|
|
||||||
if (item.Type === 'SeriesTimer') {
|
if (item.Type === 'SeriesTimer') {
|
||||||
return '';
|
return '';
|
||||||
}
|
} 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 '';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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",
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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();
|
||||||
|
|
||||||
|
|
|
@ -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();
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
|
@ -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]);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
|
@ -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');
|
||||||
|
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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];
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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({});
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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, {
|
||||||
|
|
|
@ -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 = '';
|
icon.innerHTML = '';
|
||||||
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 = '';
|
icon.innerHTML = '';
|
||||||
icon.classList.remove('ratingbutton-icon-withrating');
|
icon.classList.remove('ratingbutton-icon-withrating');
|
||||||
//icon.innerHTML = '';
|
//icon.innerHTML = '';
|
||||||
}
|
}
|
||||||
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 = '';
|
icon.innerHTML = '';
|
||||||
icon.classList.remove('ratingbutton-icon-withrating');
|
icon.classList.remove('ratingbutton-icon-withrating');
|
||||||
//icon.innerHTML = '';
|
//icon.innerHTML = '';
|
||||||
}
|
}
|
||||||
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 = '';
|
icon.innerHTML = '';
|
||||||
icon.classList.remove('ratingbutton-icon-withrating');
|
icon.classList.remove('ratingbutton-icon-withrating');
|
||||||
//icon.innerHTML = '';
|
//icon.innerHTML = '';
|
||||||
}
|
}
|
||||||
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;
|
||||||
|
|
|
@ -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"]);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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: "",
|
icon: "",
|
||||||
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"></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"></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;
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -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({
|
||||||
|
|
|
@ -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"),
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
|
@ -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++) {
|
||||||
|
|
|
@ -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
Loading…
Add table
Add a link
Reference in a new issue