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

Merge pull request #2250 from MediaBrowser/beta

Beta
This commit is contained in:
Luke 2016-10-20 15:27:40 -04:00 committed by GitHub
commit d6c43efc9c
127 changed files with 1222 additions and 922 deletions

View file

@ -16,12 +16,12 @@
}, },
"devDependencies": {}, "devDependencies": {},
"ignore": [], "ignore": [],
"version": "1.1.90", "version": "1.1.91",
"_release": "1.1.90", "_release": "1.1.91",
"_resolution": { "_resolution": {
"type": "version", "type": "version",
"tag": "1.1.90", "tag": "1.1.91",
"commit": "eb52e55b0f856ac89abcea9a71f475595d718627" "commit": "f94b80f14bce6922acf1dbd749a60ad54e4abfd8"
}, },
"_source": "https://github.com/MediaBrowser/Emby.ApiClient.Javascript.git", "_source": "https://github.com/MediaBrowser/Emby.ApiClient.Javascript.git",
"_target": "^1.1.51", "_target": "^1.1.51",

View file

@ -1252,11 +1252,9 @@
if (!username) { if (!username) {
return Promise.reject(); return Promise.reject();
return;
} }
if (!password) { if (!password) {
return Promise.reject(); return Promise.reject();
return;
} }
return ajax({ return ajax({

View file

@ -14,12 +14,12 @@
}, },
"devDependencies": {}, "devDependencies": {},
"ignore": [], "ignore": [],
"version": "1.4.313", "version": "1.4.321",
"_release": "1.4.313", "_release": "1.4.321",
"_resolution": { "_resolution": {
"type": "version", "type": "version",
"tag": "1.4.313", "tag": "1.4.321",
"commit": "79c18a7f2b379d8162bdca36b7cf0713bbe43ad8" "commit": "fb270e69c8391f62e762ee03d77a7b8a495c5a6f"
}, },
"_source": "https://github.com/MediaBrowser/emby-webcomponents.git", "_source": "https://github.com/MediaBrowser/emby-webcomponents.git",
"_target": "^1.2.1", "_target": "^1.2.1",

View file

@ -51,15 +51,21 @@
return; return;
} }
setTimeout(function () { var onAnimationComplete = function () {
dom.removeEventListener(backdropImage, 'animationend', onAnimationComplete, {
once: true
});
if (backdropImage === currentAnimatingElement) { if (backdropImage === currentAnimatingElement) {
currentAnimatingElement = null; currentAnimatingElement = null;
} }
if (existingBackdropImage && existingBackdropImage.parentNode) { if (existingBackdropImage && existingBackdropImage.parentNode) {
existingBackdropImage.parentNode.removeChild(existingBackdropImage); existingBackdropImage.parentNode.removeChild(existingBackdropImage);
} }
}, 800); };
dom.addEventListener(backdropImage, 'animationend', onAnimationComplete, {
once: true
});
internalBackdrop(true); internalBackdrop(true);
}; };

View file

@ -264,7 +264,7 @@ define(['browser'], function (browser) {
// Otherwise with HLS and mp3 audio we're seeing some browsers // Otherwise with HLS and mp3 audio we're seeing some browsers
// safari is lying // safari is lying
if ((videoTestElement.canPlayType('audio/mp4; codecs="ac-3"').replace(/no/, '') && !browser.safari) || browser.edgeUwp || browser.tizen) { if ((videoTestElement.canPlayType('audio/mp4; codecs="ac-3"').replace(/no/, '') && !browser.safari) || browser.edgeUwp || browser.tizen) {
if ((options.disableVideoAudioCodecs || []).indexOf('ac3') == -1) { if ((options.disableVideoAudioCodecs || []).indexOf('ac3') === -1) {
videoAudioCodecs.push('ac3'); videoAudioCodecs.push('ac3');
// This works in edge desktop, but not mobile // This works in edge desktop, but not mobile

View file

@ -71,7 +71,7 @@ button {
.cardBox { .cardBox {
padding: 0 !important; padding: 0 !important;
margin: 0; margin: 2px;
transition: none; transition: none;
border: 3px solid transparent; border: 3px solid transparent;
/* Needed in case cardBox is a button */ /* Needed in case cardBox is a button */
@ -91,10 +91,6 @@ button {
transform: scale(1.16, 1.16); transform: scale(1.16, 1.16);
} }
.cardBox-mobile {
margin: 2px;
}
.card:focus { .card:focus {
position: relative !important; position: relative !important;
z-index: 10 !important; z-index: 10 !important;
@ -202,6 +198,11 @@ button {
} }
.coveredImage-img { .coveredImage-img {
width: 100%;
height: 100%;
}
.coveredImage-noscale-img {
max-height: none; max-height: none;
max-width: none; max-width: none;
} }

View file

@ -2,32 +2,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'mediaInfo
function (datetime, imageLoader, connectionManager, itemHelper, mediaInfo, focusManager, indicators, globalize, layoutManager, appHost, dom) { function (datetime, imageLoader, connectionManager, itemHelper, mediaInfo, focusManager, indicators, globalize, layoutManager, appHost, dom) {
'use strict'; 'use strict';
// Regular Expressions for parsing tags and attributes var devicePixelRatio = window.devicePixelRatio || 1;
var SURROGATE_PAIR_REGEXP = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g,
// Match everything outside of normal chars and " (quote character)
NON_ALPHANUMERIC_REGEXP = /([^\#-~| |!])/g;
/**
* Escapes all potentially dangerous characters, so that the
* resulting string can be safely inserted into attribute or
* element text.
* @param value
* @returns {string} escaped text
*/
function htmlEncode(value) {
return value.
replace(/&/g, '&').
replace(SURROGATE_PAIR_REGEXP, function (value) {
var hi = value.charCodeAt(0);
var low = value.charCodeAt(1);
return '&#' + (((hi - 0xD800) * 0x400) + (low - 0xDC00) + 0x10000) + ';';
}).
replace(NON_ALPHANUMERIC_REGEXP, function (value) {
return '&#' + value.charCodeAt(0) + ';';
}).
replace(/</g, '&lt;').
replace(/>/g, '&gt;');
}
function getCardsHtml(items, options) { function getCardsHtml(items, options) {
@ -1202,9 +1177,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'mediaInfo
var separateCardBox = scalable; var separateCardBox = scalable;
var cardBoxClass = options.cardLayout ? 'cardBox visualCardBox' : 'cardBox'; var cardBoxClass = options.cardLayout ? 'cardBox visualCardBox' : 'cardBox';
if (!layoutManager.tv) { if (layoutManager.tv) {
cardBoxClass += ' cardBox-mobile';
} else {
cardBoxClass += ' cardBox-focustransform'; cardBoxClass += ' cardBox-focustransform';
} }
@ -1300,8 +1273,12 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'mediaInfo
var imgClass = 'cardImage cardImage-img lazy'; var imgClass = 'cardImage cardImage-img lazy';
if (coveredImage) { if (coveredImage) {
if (devicePixelRatio === 1) {
imgClass += ' coveredImage-noscale-img';
} else {
imgClass += ' coveredImage-img'; imgClass += ' coveredImage-img';
} }
}
cardImageContainerOpen += '<img crossOrigin="Anonymous" class="' + imgClass + '" data-vibrant="' + cardFooterId + '" data-swatch="db" data-src="' + imgUrl + '" src="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==" />'; cardImageContainerOpen += '<img crossOrigin="Anonymous" class="' + imgClass + '" data-vibrant="' + cardFooterId + '" data-swatch="db" data-src="' + imgUrl + '" src="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==" />';
} else { } else {

View file

@ -1,4 +1,5 @@
define(['shell', 'dialogHelper', 'loading', 'layoutManager', 'connectionManager', 'embyRouter', 'globalize', 'emby-checkbox', 'emby-input', 'paper-icon-button-light', 'emby-select', 'material-icons', 'css!./../formdialog', 'emby-button'], function (shell, dialogHelper, loading, layoutManager, connectionManager, embyRouter, globalize) { define(['shell', 'dialogHelper', 'loading', 'layoutManager', 'connectionManager', 'embyRouter', 'globalize', 'emby-checkbox', 'emby-input', 'paper-icon-button-light', 'emby-select', 'material-icons', 'css!./../formdialog', 'emby-button'], function (shell, dialogHelper, loading, layoutManager, connectionManager, embyRouter, globalize) {
'use strict';
var currentServerId; var currentServerId;

View file

@ -148,6 +148,7 @@
} }
} }
if (toLocaleTimeStringSupportsLocales) {
return toLocaleTimeString(date, { return toLocaleTimeString(date, {
hour: 'numeric', hour: 'numeric',
@ -156,6 +157,40 @@
}); });
} }
var time = toLocaleTimeString(date);
var timeLower = time.toLowerCase();
if (timeLower.indexOf('am') !== -1 || timeLower.indexOf('pm') !== -1) {
time = timeLower;
var hour = date.getHours() % 12;
var suffix = date.getHours() > 11 ? 'pm' : 'am';
if (!hour) {
hour = 12;
}
var minutes = date.getMinutes();
if (minutes < 10) {
minutes = '0' + minutes;
}
minutes = ':' + minutes;
time = hour + minutes + suffix;
} else {
var timeParts = time.split(':');
// Trim off seconds
if (timeParts.length > 2) {
timeParts.length -= 1;
time = timeParts.join(':');
}
}
return time;
}
function isRelativeDay(date, offsetInDays) { function isRelativeDay(date, offsetInDays) {
var yesterday = new Date(); var yesterday = new Date();
var day = yesterday.getDate() + offsetInDays; var day = yesterday.getDate() + offsetInDays;

View file

@ -3,6 +3,24 @@
var globalOnOpenCallback; var globalOnOpenCallback;
function enableAnimation() {
if (browser.animate) {
return true;
}
if (browser.edge) {
return true;
}
// An indication of an older browser
if (browser.noFlex) {
return false;
}
return true;
}
function removeCenterFocus(dlg) { function removeCenterFocus(dlg) {
if (layoutManager.tv) { if (layoutManager.tv) {
@ -136,10 +154,9 @@
backdropParent.parentNode.insertBefore(backdrop, backdropParent); backdropParent.parentNode.insertBefore(backdrop, backdropParent);
dlg.backdrop = backdrop; dlg.backdrop = backdrop;
// Doing this immediately causes the opacity to jump immediately without animating // trigger reflow or the backdrop will not animate
setTimeout(function () { void backdrop.offsetWidth;
backdrop.classList.add('dialogBackdropOpened'); backdrop.classList.add('dialogBackdropOpened');
}, 0);
dom.addEventListener((dlg.dialogContainer || backdrop), 'click', function (e) { dom.addEventListener((dlg.dialogContainer || backdrop), 'click', function (e) {
if (e.target === dlg.dialogContainer) { if (e.target === dlg.dialogContainer) {
@ -226,11 +243,28 @@
} }
}; };
setTimeout(onAnimationFinish, dlg.animationConfig.entry.timing.duration); if (enableAnimation()) {
var onFinish = function () {
dom.removeEventListener(dlg, 'animationend', onFinish, {
once: true
});
onAnimationFinish();
};
dom.addEventListener(dlg, 'animationend', onFinish, {
once: true
});
return;
}
onAnimationFinish();
} }
function animateDialogClose(dlg, onAnimationFinish) { function animateDialogClose(dlg, onAnimationFinish) {
if (enableAnimation()) {
var animated = true;
switch (dlg.animationConfig.exit.name) { switch (dlg.animationConfig.exit.name) {
case 'fadeout': case 'fadeout':
@ -243,10 +277,25 @@
dlg.style.animation = 'slidedown ' + dlg.animationConfig.exit.timing.duration + 'ms ease-out normal both'; dlg.style.animation = 'slidedown ' + dlg.animationConfig.exit.timing.duration + 'ms ease-out normal both';
break; break;
default: default:
animated = false;
break; break;
} }
var onFinish = function () {
dom.removeEventListener(dlg, 'animationend', onFinish, {
once: true
});
onAnimationFinish();
};
dom.addEventListener(dlg, 'animationend', onFinish, {
once: true
});
setTimeout(onAnimationFinish, dlg.animationConfig.exit.timing.duration); if (animated) {
return;
}
}
onAnimationFinish();
} }
function shouldLockDocumentScroll(options) { function shouldLockDocumentScroll(options) {
@ -270,15 +319,26 @@
var backdrop = dlg.backdrop; var backdrop = dlg.backdrop;
if (backdrop) { if (!backdrop) {
return;
}
dlg.backdrop = null; dlg.backdrop = null;
var onAnimationFinish = function () {
backdrop.parentNode.removeChild(backdrop);
};
if (enableAnimation()) {
backdrop.classList.remove('dialogBackdropOpened'); backdrop.classList.remove('dialogBackdropOpened');
setTimeout(function () { // this is not firing animatonend
backdrop.parentNode.removeChild(backdrop); setTimeout(onAnimationFinish, 300);
}, 300); return;
} }
onAnimationFinish();
} }
function centerFocus(elem, horiz, on) { function centerFocus(elem, horiz, on) {
@ -375,6 +435,7 @@
dlg.classList.add('dialog-' + options.size); dlg.classList.add('dialog-' + options.size);
} }
if (enableAnimation()) {
switch (dlg.animationConfig.entry.name) { switch (dlg.animationConfig.entry.name) {
case 'fadein': case 'fadein':
@ -389,6 +450,7 @@
default: default:
break; break;
} }
}
return dlg; return dlg;
} }

View file

@ -1,4 +1,5 @@
define(['itemShortcuts', 'connectionManager', 'layoutManager', 'browser', 'dom', 'loading', 'serverNotifications', 'events', 'registerElement'], function (itemShortcuts, connectionManager, layoutManager, browser, dom, loading, serverNotifications, events) { define(['itemShortcuts', 'connectionManager', 'layoutManager', 'browser', 'dom', 'loading', 'serverNotifications', 'events', 'registerElement'], function (itemShortcuts, connectionManager, layoutManager, browser, dom, loading, serverNotifications, events) {
'use strict';
var ItemsContainerProtoType = Object.create(HTMLDivElement.prototype); var ItemsContainerProtoType = Object.create(HTMLDivElement.prototype);

View file

@ -1,4 +1,5 @@
define(['multi-download'], function (multiDownload) { define(['multi-download'], function (multiDownload) {
'use strict';
return { return {
download: function (items) { download: function (items) {

View file

@ -1,4 +1,5 @@
define(['dom', 'fullscreenManager'], function (dom, fullscreenManager) { define(['dom', 'fullscreenManager'], function (dom, fullscreenManager) {
'use strict';
dom.addEventListener(window, 'dblclick', function () { dom.addEventListener(window, 'dblclick', function () {

View file

@ -1,4 +1,5 @@
define([], function () { define([], function () {
'use strict';
function fullscreenManager() { function fullscreenManager() {

View file

@ -317,8 +317,9 @@
padding: 0 .5em 0; padding: 0 .5em 0;
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;
display: flex;
align-items: center; align-items: center;
/* Need block here or the ellipsis overflow is lost */
display: block;
} }
.programIcon { .programIcon {
@ -335,6 +336,20 @@
margin-left: .25em; margin-left: .25em;
} }
.programTextIcon {
font-weight: bold;
color: rgb(30,30,30);
font-size: .9em;
background: #555;
padding: .18em .32em;
border-radius: .25em;
margin-right: .35em;
}
.programTextIcon-tv {
font-size: .7em;
}
.guideChannelNumber { .guideChannelNumber {
padding-left: 1em; padding-left: 1em;
max-width: 30%; max-width: 30%;

View file

@ -378,7 +378,7 @@
return '<i class="md-icon programIcon timerIcon">&#xE061;</i>'; return '<i class="md-icon programIcon timerIcon">&#xE061;</i>';
} }
function getChannelProgramsHtml(context, date, channel, programs, options) { function getChannelProgramsHtml(context, date, channel, programs, options, index) {
var html = ''; var html = '';
@ -482,7 +482,7 @@
timerAttributes += ' data-seriestimerid="' + program.SeriesTimerId + '"'; timerAttributes += ' data-seriestimerid="' + program.SeriesTimerId + '"';
} }
html += '<button data-action="' + clickAction + '"' + timerAttributes + ' data-isfolder="' + program.IsFolder + '" data-id="' + program.Id + '" data-serverid="' + program.ServerId + '" data-type="' + program.Type + '" class="' + cssClass + '" style="left:' + startPercent + '%;width:' + endPercent + '%;">'; html += '<button data-action="' + clickAction + '"' + timerAttributes + ' data-id="' + program.Id + '" data-serverid="' + program.ServerId + '" data-type="' + program.Type + '" class="' + cssClass + '" style="left:' + startPercent + '%;width:' + endPercent + '%;">';
if (displayInnerContent) { if (displayInnerContent) {
var guideProgramNameClass = "guideProgramName"; var guideProgramNameClass = "guideProgramName";
@ -506,7 +506,12 @@
html += '</div>'; html += '</div>';
if (program.IsHD && options.showHdIcon) { if (program.IsHD && options.showHdIcon) {
html += '<i class="guideHdIcon md-icon programIcon">hd</i>'; //html += '<i class="guideHdIcon md-icon programIcon">hd</i>';
if (layoutManager.tv) {
html += '<div class="programIcon programTextIcon programTextIcon-tv">HD</div>';
} else {
html += '<div class="programIcon programTextIcon">HD</div>';
}
} }
html += getTimerIndicator(program); html += getTimerIndicator(program);
@ -543,7 +548,7 @@
for (var i = 0, length = channels.length; i < length; i++) { for (var i = 0, length = channels.length; i < length; i++) {
html.push(getChannelProgramsHtml(context, date, channels[i], programs, options)); html.push(getChannelProgramsHtml(context, date, channels[i], programs, options, i));
} }
var programGrid = context.querySelector('.programGrid'); var programGrid = context.querySelector('.programGrid');

View file

@ -176,7 +176,8 @@ define(['visibleinviewport', 'imageFetcher', 'layoutManager', 'events', 'browser
url = url.split('?')[0]; url = url.split('?')[0];
var cacheKey = 'vibrant21'; var cacheKey = 'vibrant25';
//cacheKey = 'vibrant' + new Date().getTime();
return cacheKey + url; return cacheKey + url;
} }

View file

@ -1,4 +1,5 @@
define(['connectionManager', 'playbackManager', 'events', 'inputManager', 'focusManager', 'embyRouter'], function (connectionManager, playbackManager, events, inputManager, focusManager, embyRouter) { define(['connectionManager', 'playbackManager', 'events', 'inputManager', 'focusManager', 'embyRouter'], function (connectionManager, playbackManager, events, inputManager, focusManager, embyRouter) {
'use strict';
function notifyApp() { function notifyApp() {
@ -149,10 +150,10 @@ define(['connectionManager', 'playbackManager', 'events', 'inputManager', 'focus
notifyApp(); notifyApp();
var serverId = apiClient.serverInfo().Id; var serverId = apiClient.serverInfo().Id;
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 {

View file

@ -1,4 +1,5 @@
define(['playbackManager', 'focusManager', 'embyRouter', 'dom'], function (playbackManager, focusManager, embyRouter, dom) { define(['playbackManager', 'focusManager', 'embyRouter', 'dom'], function (playbackManager, focusManager, embyRouter, dom) {
'use strict';
var lastInputTime = new Date().getTime(); var lastInputTime = new Date().getTime();

View file

@ -1,4 +1,5 @@
define(['apphost', 'globalize', 'connectionManager', 'itemHelper', 'embyRouter', 'playbackManager', 'loading', 'appSettings'], function (appHost, globalize, connectionManager, itemHelper, embyRouter, playbackManager, loading, appSettings) { define(['apphost', 'globalize', 'connectionManager', 'itemHelper', 'embyRouter', 'playbackManager', 'loading', 'appSettings'], function (appHost, globalize, connectionManager, itemHelper, embyRouter, playbackManager, loading, appSettings) {
'use strict';
var isMobileApp = window.Dashboard != null; var isMobileApp = window.Dashboard != null;
@ -29,21 +30,21 @@ define(['apphost', 'globalize', 'connectionManager', 'itemHelper', 'embyRouter',
}); });
} }
if ((item.Type == 'Timer') && user.Policy.EnableLiveTvManagement && options.cancelTimer !== false) { if ((item.Type === 'Timer') && user.Policy.EnableLiveTvManagement && options.cancelTimer !== false) {
commands.push({ commands.push({
name: globalize.translate('sharedcomponents#CancelRecording'), name: globalize.translate('sharedcomponents#CancelRecording'),
id: 'canceltimer' id: 'canceltimer'
}); });
} }
if ((item.Type == 'Recording' && item.Status == 'InProgress') && user.Policy.EnableLiveTvManagement && options.cancelTimer !== false) { if ((item.Type === 'Recording' && item.Status === 'InProgress') && user.Policy.EnableLiveTvManagement && options.cancelTimer !== false) {
commands.push({ commands.push({
name: globalize.translate('sharedcomponents#CancelRecording'), name: globalize.translate('sharedcomponents#CancelRecording'),
id: 'canceltimer' id: 'canceltimer'
}); });
} }
if ((item.Type == 'SeriesTimer') && user.Policy.EnableLiveTvManagement && options.cancelTimer !== false) { if ((item.Type === 'SeriesTimer') && user.Policy.EnableLiveTvManagement && options.cancelTimer !== false) {
commands.push({ commands.push({
name: globalize.translate('sharedcomponents#CancelSeries'), name: globalize.translate('sharedcomponents#CancelSeries'),
id: 'cancelseriestimer' id: 'cancelseriestimer'
@ -52,7 +53,7 @@ define(['apphost', 'globalize', 'connectionManager', 'itemHelper', 'embyRouter',
if (item.CanDelete) { if (item.CanDelete) {
if (item.Type == 'Playlist' || item.Type == 'BoxSet') { if (item.Type === 'Playlist' || item.Type === 'BoxSet') {
commands.push({ commands.push({
name: globalize.translate('sharedcomponents#Delete'), name: globalize.translate('sharedcomponents#Delete'),
id: 'delete' id: 'delete'
@ -67,9 +68,9 @@ define(['apphost', 'globalize', 'connectionManager', 'itemHelper', 'embyRouter',
if (itemHelper.canEdit(user, item)) { if (itemHelper.canEdit(user, item)) {
if (options.edit !== false && item.Type != 'SeriesTimer') { if (options.edit !== false && item.Type !== 'SeriesTimer') {
var text = (item.Type == 'Timer' || item.Type == 'SeriesTimer') ? globalize.translate('sharedcomponents#Edit') : globalize.translate('sharedcomponents#EditInfo'); var text = (item.Type === 'Timer' || item.Type === 'SeriesTimer') ? globalize.translate('sharedcomponents#Edit') : globalize.translate('sharedcomponents#EditInfo');
commands.push({ commands.push({
name: text, name: text,
@ -90,7 +91,7 @@ define(['apphost', 'globalize', 'connectionManager', 'itemHelper', 'embyRouter',
if (itemHelper.canEdit(user, item)) { if (itemHelper.canEdit(user, item)) {
if (item.MediaType == 'Video' && item.Type != 'TvChannel' && item.Type != 'Program' && item.LocationType != 'Virtual' && !(item.Type == 'Recording' && item.Status != 'Completed')) { if (item.MediaType === 'Video' && item.Type !== 'TvChannel' && item.Type !== 'Program' && item.LocationType !== 'Virtual' && !(item.Type === 'Recording' && item.Status !== 'Completed')) {
if (options.editSubtitles !== false) { if (options.editSubtitles !== false) {
commands.push({ commands.push({
name: globalize.translate('sharedcomponents#EditSubtitles'), name: globalize.translate('sharedcomponents#EditSubtitles'),
@ -116,7 +117,7 @@ define(['apphost', 'globalize', 'connectionManager', 'itemHelper', 'embyRouter',
} }
} }
if (item.MediaType == "Audio" || item.Type == "MusicAlbum" || item.Type == "MusicArtist" || item.Type == "MusicGenre" || item.CollectionType == "music") { if (item.MediaType === "Audio" || item.Type === "MusicAlbum" || item.Type === "MusicArtist" || item.Type === "MusicGenre" || item.CollectionType === "music") {
if (options.instantMix !== false) { if (options.instantMix !== false) {
commands.push({ commands.push({
name: globalize.translate('sharedcomponents#InstantMix'), name: globalize.translate('sharedcomponents#InstantMix'),
@ -149,7 +150,7 @@ define(['apphost', 'globalize', 'connectionManager', 'itemHelper', 'embyRouter',
} }
} }
if (options.playAllFromHere && item.Type != 'Program' && item.Type != 'TvChannel') { if (options.playAllFromHere && item.Type !== 'Program' && item.Type !== 'TvChannel') {
commands.push({ commands.push({
name: globalize.translate('sharedcomponents#PlayAllFromHere'), name: globalize.translate('sharedcomponents#PlayAllFromHere'),
id: 'playallfromhere' id: 'playallfromhere'
@ -173,7 +174,7 @@ define(['apphost', 'globalize', 'connectionManager', 'itemHelper', 'embyRouter',
} }
} }
if (item.Type == 'Program') { if (item.Type === 'Program') {
commands.push({ commands.push({
name: Globalize.translate('sharedcomponents#Record'), name: Globalize.translate('sharedcomponents#Record'),
@ -183,7 +184,7 @@ define(['apphost', 'globalize', 'connectionManager', 'itemHelper', 'embyRouter',
if (user.Policy.IsAdministrator) { if (user.Policy.IsAdministrator) {
if (item.Type != 'Timer' && item.Type != 'SeriesTimer' && item.Type != 'Program' && !(item.Type == 'Recording' && item.Status != 'Completed')) { if (item.Type !== 'Timer' && item.Type !== 'SeriesTimer' && item.Type !== 'Program' && !(item.Type === 'Recording' && item.Status !== 'Completed')) {
commands.push({ commands.push({
name: globalize.translate('sharedcomponents#Refresh'), name: globalize.translate('sharedcomponents#Refresh'),
id: 'refresh' id: 'refresh'
@ -214,7 +215,7 @@ define(['apphost', 'globalize', 'connectionManager', 'itemHelper', 'embyRouter',
} }
} }
if (item.IsFolder || item.Type == "MusicArtist" || item.Type == "MusicGenre") { if (item.IsFolder || item.Type === "MusicArtist" || item.Type === "MusicGenre") {
if (options.shuffle !== false) { if (options.shuffle !== false) {
commands.push({ commands.push({
name: globalize.translate('sharedcomponents#Shuffle'), name: globalize.translate('sharedcomponents#Shuffle'),
@ -534,7 +535,7 @@ define(['apphost', 'globalize', 'connectionManager', 'itemHelper', 'embyRouter',
startPosition = item.UserData.PlaybackPositionTicks; startPosition = item.UserData.PlaybackPositionTicks;
} }
if (item.Type == 'Program') { if (item.Type === 'Program') {
playbackManager[method]({ playbackManager[method]({
ids: [item.ChannelId], ids: [item.ChannelId],
startPositionTicks: startPosition startPositionTicks: startPosition
@ -553,12 +554,12 @@ define(['apphost', 'globalize', 'connectionManager', 'itemHelper', 'embyRouter',
var serverId = apiClient.serverInfo().Id; var serverId = apiClient.serverInfo().Id;
if (item.Type == 'Timer') { if (item.Type === 'Timer') {
require(['recordingEditor'], function (recordingEditor) { require(['recordingEditor'], function (recordingEditor) {
recordingEditor.show(item.Id, serverId).then(resolve, reject); recordingEditor.show(item.Id, serverId).then(resolve, reject);
}); });
} else if (item.Type == 'SeriesTimer') { } else if (item.Type === 'SeriesTimer') {
require(['seriesRecordingEditor'], function (recordingEditor) { require(['seriesRecordingEditor'], function (recordingEditor) {
recordingEditor.show(item.Id, serverId).then(resolve, reject); recordingEditor.show(item.Id, serverId).then(resolve, reject);

View file

@ -1,4 +1,5 @@
define(['apphost'], function (appHost) { define(['apphost'], function (appHost) {
'use strict';
function getDisplayName(item, options) { function getDisplayName(item, options) {
@ -8,24 +9,24 @@ define(['apphost'], function (appHost) {
options = options || {}; options = options || {};
if (item.Type == 'Timer') { if (item.Type === 'Timer') {
item = item.ProgramInfo || item; item = item.ProgramInfo || item;
} }
var name = (item.Type == 'Program' && item.IsSeries ? item.EpisodeTitle : item.Name) || ''; var name = (item.Type === 'Program' && item.IsSeries ? item.EpisodeTitle : item.Name) || '';
if (item.Type == "TvChannel") { if (item.Type === "TvChannel") {
if (item.Number) { if (item.Number) {
return item.Number + ' ' + name; return item.Number + ' ' + name;
} }
return name; return name;
} }
if (/*options.isInlineSpecial &&*/ item.Type == "Episode" && item.ParentIndexNumber == 0) { if (/*options.isInlineSpecial &&*/ item.Type === "Episode" && item.ParentIndexNumber === 0) {
name = Globalize.translate('sharedcomponents#ValueSpecialEpisodeName', name); name = Globalize.translate('sharedcomponents#ValueSpecialEpisodeName', name);
} else if ((item.Type == "Episode" || item.Type == 'Program') && item.IndexNumber != null && item.ParentIndexNumber != null) { } else if ((item.Type === "Episode" || item.Type === 'Program') && item.IndexNumber != null && item.ParentIndexNumber != null) {
var displayIndexNumber = item.IndexNumber; var displayIndexNumber = item.IndexNumber;
@ -50,56 +51,56 @@ define(['apphost'], function (appHost) {
function supportsAddingToCollection(item) { function supportsAddingToCollection(item) {
if (item.Type == 'Timer' || item.Type == 'SeriesTimer') { if (item.Type === 'Timer' || item.Type === 'SeriesTimer') {
return false; return false;
} }
var invalidTypes = ['Person', 'Genre', 'MusicGenre', 'Studio', 'GameGenre', 'BoxSet', 'Playlist', 'UserView', 'CollectionFolder', 'Audio', 'TvChannel', 'Program', 'MusicAlbum', 'Timer']; var invalidTypes = ['Person', 'Genre', 'MusicGenre', 'Studio', 'GameGenre', 'BoxSet', 'Playlist', 'UserView', 'CollectionFolder', 'Audio', 'TvChannel', 'Program', 'MusicAlbum', 'Timer'];
if (item.Type == 'Recording') { if (item.Type === 'Recording') {
if (item.Status != 'Completed') { if (item.Status !== 'Completed') {
return false; return false;
} }
} }
return !item.CollectionType && invalidTypes.indexOf(item.Type) == -1 && item.MediaType != 'Photo'; return !item.CollectionType && invalidTypes.indexOf(item.Type) === -1 && item.MediaType !== 'Photo';
} }
function supportsAddingToPlaylist(item) { function supportsAddingToPlaylist(item) {
if (item.Type == 'Program') { if (item.Type === 'Program') {
return false; return false;
} }
if (item.Type == 'Timer') { if (item.Type === 'Timer') {
return false; return false;
} }
if (item.Type == 'SeriesTimer') { if (item.Type === 'SeriesTimer') {
return false; return false;
} }
if (item.Type == 'Recording') { if (item.Type === 'Recording') {
if (item.Status != 'Completed') { if (item.Status !== 'Completed') {
return false; return false;
} }
} }
return item.MediaType || item.IsFolder || item.Type == "Genre" || item.Type == "MusicGenre" || item.Type == "MusicArtist"; return item.MediaType || item.IsFolder || item.Type === "Genre" || item.Type === "MusicGenre" || item.Type === "MusicArtist";
} }
function canEdit(user, item) { function canEdit(user, item) {
var itemType = item.Type; var itemType = item.Type;
if (itemType == "UserRootFolder" || /*itemType == "CollectionFolder" ||*/ itemType == "UserView") { if (itemType === "UserRootFolder" || /*itemType == "CollectionFolder" ||*/ itemType === "UserView") {
return false; return false;
} }
if (itemType == 'Program') { if (itemType === 'Program') {
return false; return false;
} }
if (item.Type == 'Recording') { if (item.Type === 'Recording') {
if (item.Status != 'Completed') { if (item.Status !== 'Completed') {
return false; return false;
} }
} }
@ -114,15 +115,15 @@ define(['apphost'], function (appHost) {
canIdentify: function (user, itemType) { canIdentify: function (user, itemType) {
if (itemType == "Movie" || if (itemType === "Movie" ||
itemType == "Trailer" || itemType === "Trailer" ||
itemType == "Series" || itemType === "Series" ||
itemType == "Game" || itemType === "Game" ||
itemType == "BoxSet" || itemType === "BoxSet" ||
itemType == "Person" || itemType === "Person" ||
itemType == "Book" || itemType === "Book" ||
itemType == "MusicAlbum" || itemType === "MusicAlbum" ||
itemType == "MusicArtist") { itemType === "MusicArtist") {
if (user.Policy.IsAdministrator) { if (user.Policy.IsAdministrator) {
@ -139,7 +140,7 @@ define(['apphost'], function (appHost) {
var itemType = item.Type; var itemType = item.Type;
if (itemType == 'UserView') { if (itemType === 'UserView') {
if (user.Policy.IsAdministrator) { if (user.Policy.IsAdministrator) {
return true; return true;
@ -148,13 +149,13 @@ define(['apphost'], function (appHost) {
return false; return false;
} }
if (item.Type == 'Recording') { if (item.Type === 'Recording') {
if (item.Status != 'Completed') { if (item.Status !== 'Completed') {
return false; return false;
} }
} }
return itemType != 'Timer' && itemType != 'SeriesTimer' && canEdit(user, item); return itemType !== 'Timer' && itemType !== 'SeriesTimer' && canEdit(user, item);
}, },
canSync: function (user, item) { canSync: function (user, item) {
@ -168,14 +169,14 @@ define(['apphost'], function (appHost) {
canShare: function (user, item) { canShare: function (user, item) {
if (item.Type == 'Timer') { if (item.Type === 'Timer') {
return false; return false;
} }
if (item.Type == 'SeriesTimer') { if (item.Type === 'SeriesTimer') {
return false; return false;
} }
if (item.Type == 'Recording') { if (item.Type === 'Recording') {
if (item.Status != 'Completed') { if (item.Status !== 'Completed') {
return false; return false;
} }
} }

View file

@ -1,4 +1,5 @@
define(['connectionManager', 'itemHelper', 'mediaInfo', 'userdataButtons', 'playbackManager', 'globalize', 'dom', 'apphost', 'css!./itemhovermenu', 'emby-button'], function (connectionManager, itemHelper, mediaInfo, userdataButtons, playbackManager, globalize, dom, appHost) { define(['connectionManager', 'itemHelper', 'mediaInfo', 'userdataButtons', 'playbackManager', 'globalize', 'dom', 'apphost', 'css!./itemhovermenu', 'emby-button'], function (connectionManager, itemHelper, mediaInfo, userdataButtons, playbackManager, globalize, dom, appHost) {
'use strict';
var preventHover = false; var preventHover = false;
var showOverlayTimeout; var showOverlayTimeout;
@ -72,9 +73,9 @@
var className = card.className.toLowerCase(); var className = card.className.toLowerCase();
var isMiniItem = className.indexOf('mini') != -1; var isMiniItem = className.indexOf('mini') !== -1;
var isSmallItem = isMiniItem || className.indexOf('small') != -1; var isSmallItem = isMiniItem || className.indexOf('small') !== -1;
var isPortrait = className.indexOf('portrait') != -1; var isPortrait = className.indexOf('portrait') !== -1;
var parentName = isSmallItem || isMiniItem || isPortrait ? null : item.SeriesName; var parentName = isSmallItem || isMiniItem || isPortrait ? null : item.SeriesName;
var name = item.EpisodeTitle ? item.Name : itemHelper.getDisplayName(item); var name = item.EpisodeTitle ? item.Name : itemHelper.getDisplayName(item);
@ -136,7 +137,7 @@
buttonCount++; buttonCount++;
} }
var moreIcon = appHost.moreIcon == 'dots-horiz' ? '&#xE5D3;' : '&#xE5D4;'; var moreIcon = appHost.moreIcon === 'dots-horiz' ? '&#xE5D3;' : '&#xE5D4;';
html += '<button is="emby-button" class="itemAction autoSize fab cardOverlayFab mini" data-action="menu" data-playoptions="false"><i class="md-icon cardOverlayFab-md-icon">' + moreIcon + '</i></button>'; html += '<button is="emby-button" class="itemAction autoSize fab cardOverlayFab mini" data-action="menu" data-playoptions="false"><i class="md-icon cardOverlayFab-md-icon">' + moreIcon + '</i></button>';
buttonCount++; buttonCount++;
@ -191,7 +192,7 @@
var id = dataElement.getAttribute('data-id'); var id = dataElement.getAttribute('data-id');
var type = dataElement.getAttribute('data-type'); var type = dataElement.getAttribute('data-type');
if (type == 'Timer' || type == 'SeriesTimer') { if (type === 'Timer' || type === 'SeriesTimer') {
return; return;
} }
@ -265,7 +266,6 @@
} }
ItemHoverMenu.prototype = { ItemHoverMenu.prototype = {
constructor: ItemHoverMenu, constructor: ItemHoverMenu,
destroy: function () { destroy: function () {
@ -276,7 +276,7 @@
passive: true passive: true
}); });
} }
} };
return ItemHoverMenu; return ItemHoverMenu;
}); });

View file

@ -1,4 +1,5 @@
define(['dialogHelper', 'loading', 'cardBuilder', 'connectionManager', 'require', 'globalize', 'scrollHelper', 'layoutManager', 'focusManager', 'emby-input', 'emby-checkbox', 'paper-icon-button-light', 'css!./../formdialog', 'material-icons', 'cardStyle'], function (dialogHelper, loading, cardBuilder, connectionManager, require, globalize, scrollHelper, layoutManager, focusManager) { define(['dialogHelper', 'loading', 'cardBuilder', 'connectionManager', 'require', 'globalize', 'scrollHelper', 'layoutManager', 'focusManager', 'emby-input', 'emby-checkbox', 'paper-icon-button-light', 'css!./../formdialog', 'material-icons', 'cardStyle'], function (dialogHelper, loading, cardBuilder, connectionManager, require, globalize, scrollHelper, layoutManager, focusManager) {
'use strict';
var currentItem; var currentItem;
var currentItemType; var currentItemType;
@ -20,13 +21,14 @@
var i, length; var i, length;
var identifyField = page.querySelectorAll('.identifyField'); var identifyField = page.querySelectorAll('.identifyField');
var value;
for (i = 0, length = identifyField.length; i < length; i++) { for (i = 0, length = identifyField.length; i < length; i++) {
var value = identifyField[i].value; value = identifyField[i].value;
if (value) { if (value) {
if (identifyField[i].type == 'number') { if (identifyField[i].type === 'number') {
value = parseInt(value); value = parseInt(value);
} }
@ -39,7 +41,7 @@
var txtLookupId = page.querySelectorAll('.txtLookupId'); var txtLookupId = page.querySelectorAll('.txtLookupId');
for (i = 0, length = txtLookupId.length; i < length; i++) { for (i = 0, length = txtLookupId.length; i < length; i++) {
var value = txtLookupId[i].value; value = txtLookupId[i].value;
if (value) { if (value) {
hasId = true; hasId = true;
@ -177,11 +179,11 @@
var cardBoxCssClass = 'cardBox visualCardBox'; var cardBoxCssClass = 'cardBox visualCardBox';
var padderClass; var padderClass;
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';
} }
@ -297,7 +299,7 @@
page.querySelector('#txtLookupName').value = ''; page.querySelector('#txtLookupName').value = '';
if (item.Type == "Person" || item.Type == "BoxSet") { if (item.Type === "Person" || item.Type === "BoxSet") {
page.querySelector('.fldLookupYear').classList.add('hide'); page.querySelector('.fldLookupYear').classList.add('hide');
page.querySelector('#txtLookupYear').value = ''; page.querySelector('#txtLookupYear').value = '';
@ -455,7 +457,7 @@
dlg.querySelector('#txtLookupName').value = itemName; dlg.querySelector('#txtLookupName').value = itemName;
if (itemType == "Person" || itemType == "BoxSet") { if (itemType === "Person" || itemType === "BoxSet") {
dlg.querySelector('.fldLookupYear').classList.add('hide'); dlg.querySelector('.fldLookupYear').classList.add('hide');
dlg.querySelector('#txtLookupYear').value = ''; dlg.querySelector('#txtLookupYear').value = '';

View file

@ -3,7 +3,7 @@ define(['browser', 'appSettings', 'events'], function (browser, appSettings, eve
function setLayout(self, layout, selectedLayout) { function setLayout(self, layout, selectedLayout) {
if (layout == selectedLayout) { if (layout === selectedLayout) {
self[layout] = true; self[layout] = true;
document.documentElement.classList.add('layout-' + layout); document.documentElement.classList.add('layout-' + layout);
} else { } else {
@ -12,7 +12,7 @@ define(['browser', 'appSettings', 'events'], function (browser, appSettings, eve
} }
} }
function layoutManager() { function LayoutManager() {
var self = this; var self = this;
@ -62,7 +62,7 @@ define(['browser', 'appSettings', 'events'], function (browser, appSettings, eve
self.autoLayout(); self.autoLayout();
} }
}; };
}; }
return new layoutManager(); return new LayoutManager();
}); });

View file

@ -1,8 +1,9 @@
define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutManager', 'globalize', 'datetime', 'userdataButtons', 'apphost', 'css!./listview'], function (itemHelper, mediaInfo, indicators, connectionManager, layoutManager, globalize, datetime, userdataButtons, appHost) { define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutManager', 'globalize', 'datetime', 'userdataButtons', 'apphost', 'css!./listview'], function (itemHelper, mediaInfo, indicators, connectionManager, layoutManager, globalize, datetime, userdataButtons, appHost) {
'use strict';
function getIndex(item, options) { function getIndex(item, options) {
if (options.index == 'disc') { if (options.index === 'disc') {
return item.ParentIndexNumber == null ? '' : globalize.translate('sharedcomponents#ValueDiscNumber', item.ParentIndexNumber); return item.ParentIndexNumber == null ? '' : globalize.translate('sharedcomponents#ValueDiscNumber', item.ParentIndexNumber);
} }
@ -10,9 +11,11 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan
var sortBy = (options.sortBy || '').toLowerCase(); var sortBy = (options.sortBy || '').toLowerCase();
var code, name; var code, name;
if (sortBy.indexOf('sortname') == 0) { if (sortBy.indexOf('sortname') === 0) {
if (item.Type == 'Episode') return ''; if (item.Type === 'Episode') {
return '';
}
// SortName // SortName
name = (item.SortName || item.Name || '?')[0].toUpperCase(); name = (item.SortName || item.Name || '?')[0].toUpperCase();
@ -24,11 +27,11 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan
return name.toUpperCase(); return name.toUpperCase();
} }
if (sortBy.indexOf('officialrating') == 0) { if (sortBy.indexOf('officialrating') === 0) {
return item.OfficialRating || globalize.translate('sharedcomponents#Unrated'); return item.OfficialRating || globalize.translate('sharedcomponents#Unrated');
} }
if (sortBy.indexOf('communityrating') == 0) { if (sortBy.indexOf('communityrating') === 0) {
if (item.CommunityRating == null) { if (item.CommunityRating == null) {
return globalize.translate('sharedcomponents#Unrated'); return globalize.translate('sharedcomponents#Unrated');
@ -36,7 +39,7 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan
return Math.floor(item.CommunityRating); return Math.floor(item.CommunityRating);
} }
if (sortBy.indexOf('criticrating') == 0) { if (sortBy.indexOf('criticrating') === 0) {
if (item.CriticRating == null) { if (item.CriticRating == null) {
return globalize.translate('sharedcomponents#Unrated'); return globalize.translate('sharedcomponents#Unrated');
@ -44,7 +47,7 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan
return Math.floor(item.CriticRating); return Math.floor(item.CriticRating);
} }
if (sortBy.indexOf('metascore') == 0) { if (sortBy.indexOf('metascore') === 0) {
if (item.Metascore == null) { if (item.Metascore == null) {
return globalize.translate('sharedcomponents#Unrated'); return globalize.translate('sharedcomponents#Unrated');
@ -52,10 +55,12 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan
return Math.floor(item.Metascore); return Math.floor(item.Metascore);
} }
if (sortBy.indexOf('albumartist') == 0) { if (sortBy.indexOf('albumartist') === 0) {
// SortName // SortName
if (!item.AlbumArtist) return ''; if (!item.AlbumArtist) {
return '';
}
name = item.AlbumArtist[0].toUpperCase(); name = item.AlbumArtist[0].toUpperCase();
@ -78,9 +83,9 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan
type: "Primary" type: "Primary"
}; };
if (item.ImageTags && item.ImageTags['Primary']) { if (item.ImageTags && item.ImageTags.Primary) {
options.tag = item.ImageTags['Primary']; options.tag = item.ImageTags.Primary;
return apiClient.getScaledImageUrl(item.Id, options); return apiClient.getScaledImageUrl(item.Id, options);
} }
@ -144,7 +149,7 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan
var groupTitle = ''; var groupTitle = '';
var action = options.action || 'link'; var action = options.action || 'link';
var isLargeStyle = options.imageSize == 'large'; var isLargeStyle = options.imageSize === 'large';
var enableOverview = options.enableOverview; var enableOverview = options.enableOverview;
var clickEntireItem = layoutManager.tv ? true : false; var clickEntireItem = layoutManager.tv ? true : false;
@ -163,13 +168,13 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan
var itemGroupTitle = getIndex(item, options); var itemGroupTitle = getIndex(item, options);
if (itemGroupTitle != groupTitle) { if (itemGroupTitle !== groupTitle) {
if (html) { if (html) {
html += '</div>'; html += '</div>';
} }
if (i == 0) { if (i === 0) {
html += '<h1 class="listGroupHeader listGroupHeader-first">'; html += '<h1 class="listGroupHeader listGroupHeader-first">';
} }
else { else {
@ -187,7 +192,7 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan
var cssClass = "listItem"; var cssClass = "listItem";
if (options.highlight !== false) { if (options.highlight !== false) {
if (i % 2 == 1) { if (i % 2 === 1) {
cssClass += ' listItem-odd'; cssClass += ' listItem-odd';
} }
} }
@ -270,7 +275,7 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan
var parentTitle = null; var parentTitle = null;
if (options.showParentTitle) { if (options.showParentTitle) {
if (item.Type == 'Episode') { if (item.Type === 'Episode') {
parentTitle = item.SeriesName; parentTitle = item.SeriesName;
} }
@ -306,23 +311,23 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan
} }
if (options.artist !== false) { if (options.artist !== false) {
if (item.ArtistItems && item.Type != 'MusicAlbum') { if (item.ArtistItems && item.Type !== 'MusicAlbum') {
textlines.push(item.ArtistItems.map(function (a) { textlines.push(item.ArtistItems.map(function (a) {
return a.Name; return a.Name;
}).join(', ')); }).join(', '));
} }
if (item.AlbumArtist && item.Type == 'MusicAlbum') { if (item.AlbumArtist && item.Type === 'MusicAlbum') {
textlines.push(item.AlbumArtist); textlines.push(item.AlbumArtist);
} }
} }
if (item.Type == 'Game') { if (item.Type === 'Game') {
textlines.push(item.GameSystem); textlines.push(item.GameSystem);
} }
if (item.Type == 'TvChannel') { if (item.Type === 'TvChannel') {
if (item.CurrentProgram) { if (item.CurrentProgram) {
textlines.push(itemHelper.getDisplayName(item.CurrentProgram)); textlines.push(itemHelper.getDisplayName(item.CurrentProgram));
@ -340,7 +345,7 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan
html += '<div class="' + cssClass + '">'; html += '<div class="' + cssClass + '">';
var moreIcon = appHost.moreIcon == 'dots-horiz' ? '&#xE5D3;' : '&#xE5D4;'; var moreIcon = appHost.moreIcon === 'dots-horiz' ? '&#xE5D3;' : '&#xE5D4;';
html += getTextLinesHtml(textlines, isLargeStyle); html += getTextLinesHtml(textlines, isLargeStyle);
@ -376,7 +381,7 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan
} }
} }
if (!options.recordButton && (item.Type == 'Timer' || item.Type == 'Program')) { if (!options.recordButton && (item.Type === 'Timer' || item.Type === 'Program')) {
html += indicators.getTimerIndicator(item).replace('indicatorIcon', 'indicatorIcon listItemAside'); html += indicators.getTimerIndicator(item).replace('indicatorIcon', 'indicatorIcon listItemAside');
} }

View file

@ -1,4 +1,5 @@
define(['css!./loading-legacy'], function () { define(['css!./loading-legacy'], function () {
'use strict';
var loadingElem; var loadingElem;

View file

@ -1,4 +1,5 @@
define(['css!./loading-lite'], function () { define(['css!./loading-lite'], function () {
'use strict';
var loadingElem; var loadingElem;

View file

@ -1,17 +1,18 @@
define(['datetime', 'globalize', 'embyRouter', 'itemHelper', 'material-icons', 'css!./mediainfo.css', 'programStyles'], function (datetime, globalize, embyRouter, itemHelper) { define(['datetime', 'globalize', 'embyRouter', 'itemHelper', 'material-icons', 'css!./mediainfo.css', 'programStyles'], function (datetime, globalize, embyRouter, itemHelper) {
'use strict';
function getTimerIndicator(item) { function getTimerIndicator(item) {
var status; var status;
if (item.Type == 'SeriesTimer') { if (item.Type === 'SeriesTimer') {
return '<i class="md-icon mediaInfoItem mediaInfoIconItem mediaInfoTimerIcon">&#xE062;</i>'; return '<i class="md-icon mediaInfoItem mediaInfoIconItem mediaInfoTimerIcon">&#xE062;</i>';
} }
else if (item.TimerId || item.SeriesTimerId) { else if (item.TimerId || item.SeriesTimerId) {
status = item.Status || 'Cancelled'; status = item.Status || 'Cancelled';
} }
else if (item.Type == 'Timer') { else if (item.Type === 'Timer') {
status = item.Status; status = item.Status;
} }
@ -21,7 +22,7 @@ define(['datetime', 'globalize', 'embyRouter', 'itemHelper', 'material-icons', '
if (item.SeriesTimerId) { if (item.SeriesTimerId) {
if (status != 'Cancelled') { if (status !== 'Cancelled') {
return '<i class="md-icon mediaInfoItem mediaInfoIconItem mediaInfoTimerIcon">&#xE062;</i>'; return '<i class="md-icon mediaInfoItem mediaInfoIconItem mediaInfoTimerIcon">&#xE062;</i>';
} }
@ -93,12 +94,13 @@ define(['datetime', 'globalize', 'embyRouter', 'itemHelper', 'material-icons', '
var miscInfo = []; var miscInfo = [];
options = options || {}; options = options || {};
var text, date, minutes; var text, date, minutes;
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';
if (showFolderRuntime) { if (showFolderRuntime) {
var count = item.SongCount || item.ChildCount; count = item.SongCount || item.ChildCount;
if (count) { if (count) {
@ -110,9 +112,9 @@ define(['datetime', 'globalize', 'embyRouter', 'itemHelper', 'material-icons', '
} }
} }
else if (item.Type == "PhotoAlbum" || item.Type == "BoxSet") { else if (item.Type === "PhotoAlbum" || item.Type === "BoxSet") {
var count = item.ChildCount; count = item.ChildCount;
if (count) { if (count) {
@ -120,7 +122,7 @@ define(['datetime', 'globalize', 'embyRouter', 'itemHelper', 'material-icons', '
} }
} }
if (item.Type == "Episode" || item.MediaType == 'Photo') { if (item.Type === "Episode" || item.MediaType === 'Photo') {
if (item.PremiereDate) { if (item.PremiereDate) {
@ -136,7 +138,7 @@ define(['datetime', 'globalize', 'embyRouter', 'itemHelper', 'material-icons', '
} }
} }
if (item.StartDate && item.Type != 'Program') { if (item.StartDate && item.Type !== 'Program') {
try { try {
date = datetime.parseISO8601Date(item.StartDate); date = datetime.parseISO8601Date(item.StartDate);
@ -144,7 +146,7 @@ define(['datetime', 'globalize', 'embyRouter', 'itemHelper', 'material-icons', '
text = datetime.toLocaleDateString(date); text = datetime.toLocaleDateString(date);
miscInfo.push(text); miscInfo.push(text);
if (item.Type != "Recording") { if (item.Type !== "Recording") {
text = datetime.getDisplayTime(date); text = datetime.getDisplayTime(date);
miscInfo.push(text); miscInfo.push(text);
} }
@ -154,9 +156,9 @@ define(['datetime', 'globalize', 'embyRouter', 'itemHelper', 'material-icons', '
} }
} }
if (options.year !== false && item.ProductionYear && item.Type == "Series") { if (options.year !== false && item.ProductionYear && item.Type === "Series") {
if (item.Status == "Continuing") { if (item.Status === "Continuing") {
miscInfo.push(globalize.translate('sharedcomponents#SeriesYearToPresent', item.ProductionYear)); miscInfo.push(globalize.translate('sharedcomponents#SeriesYearToPresent', item.ProductionYear));
} }
@ -170,7 +172,7 @@ define(['datetime', 'globalize', 'embyRouter', 'itemHelper', 'material-icons', '
var endYear = datetime.parseISO8601Date(item.EndDate).getFullYear(); var endYear = datetime.parseISO8601Date(item.EndDate).getFullYear();
if (endYear != item.ProductionYear) { if (endYear !== item.ProductionYear) {
text += "-" + datetime.parseISO8601Date(item.EndDate).getFullYear(); text += "-" + datetime.parseISO8601Date(item.EndDate).getFullYear();
} }
@ -184,7 +186,7 @@ define(['datetime', 'globalize', 'embyRouter', 'itemHelper', 'material-icons', '
} }
} }
if (item.Type == 'Program') { if (item.Type === 'Program') {
if (item.IsLive) { if (item.IsLive) {
miscInfo.push({ miscInfo.push({
@ -228,7 +230,7 @@ define(['datetime', 'globalize', 'embyRouter', 'itemHelper', 'material-icons', '
} }
if (options.year !== false) { if (options.year !== false) {
if (item.Type != "Series" && item.Type != "Episode" && item.Type != "Person" && item.MediaType != 'Photo' && item.Type != 'Program') { if (item.Type !== "Series" && item.Type !== "Episode" && item.Type !== "Person" && item.MediaType !== 'Photo' && item.Type !== 'Program') {
if (item.ProductionYear) { if (item.ProductionYear) {
@ -247,9 +249,9 @@ define(['datetime', 'globalize', 'embyRouter', 'itemHelper', 'material-icons', '
} }
} }
if (item.RunTimeTicks && item.Type != "Series" && item.Type != 'Program' && !showFolderRuntime && options.runtime !== false) { if (item.RunTimeTicks && item.Type !== "Series" && item.Type !== 'Program' && !showFolderRuntime && options.runtime !== false) {
if (item.Type == "Audio") { if (item.Type === "Audio") {
miscInfo.push(datetime.getDisplayRunningTime(item.RunTimeTicks)); miscInfo.push(datetime.getDisplayRunningTime(item.RunTimeTicks));
@ -273,11 +275,11 @@ define(['datetime', 'globalize', 'embyRouter', 'itemHelper', 'material-icons', '
miscInfo.push("3D"); miscInfo.push("3D");
} }
if (item.MediaType == 'Photo' && item.Width && item.Height) { if (item.MediaType === 'Photo' && item.Width && item.Height) {
miscInfo.push(item.Width + "x" + item.Height); miscInfo.push(item.Width + "x" + item.Height);
} }
if (options.container !== false && item.Type == 'Audio' && item.Container) { if (options.container !== false && item.Type === 'Audio' && item.Container) {
miscInfo.push(item.Container); miscInfo.push(item.Container);
} }
@ -313,7 +315,7 @@ define(['datetime', 'globalize', 'embyRouter', 'itemHelper', 'material-icons', '
function getEndsAt(item) { function getEndsAt(item) {
if (item.MediaType == 'Video' && item.RunTimeTicks) { if (item.MediaType === 'Video' && item.RunTimeTicks) {
if (!item.StartDate) { if (!item.StartDate) {
var endDate = new Date().getTime() + (item.RunTimeTicks / 10000); var endDate = new Date().getTime() + (item.RunTimeTicks / 10000);
@ -444,7 +446,7 @@ define(['datetime', 'globalize', 'embyRouter', 'itemHelper', 'material-icons', '
if (options.interactive == null) { if (options.interactive == null) {
options.interactive = false; options.interactive = false;
} }
if (item.Type == 'Program') { if (item.Type === 'Program') {
return getProgramInfoHtml(item, options); return getProgramInfoHtml(item, options);
} }

View file

@ -1,4 +1,5 @@
define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loading', 'focusManager', 'connectionManager', 'globalize', 'require', 'shell', 'dom', 'emby-checkbox', 'emby-input', 'emby-select', 'listViewStyle', 'emby-textarea', 'emby-button', 'paper-icon-button-light', 'css!./../formdialog'], function (itemHelper, dom, layoutManager, dialogHelper, datetime, loading, focusManager, connectionManager, globalize, require, shell, dom) { define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loading', 'focusManager', 'connectionManager', 'globalize', 'require', 'shell', 'emby-checkbox', 'emby-input', 'emby-select', 'listViewStyle', 'emby-textarea', 'emby-button', 'paper-icon-button-light', 'css!./../formdialog'], function (itemHelper, dom, layoutManager, dialogHelper, datetime, loading, focusManager, connectionManager, globalize, require, shell) {
'use strict';
var currentContext; var currentContext;
var metadataEditorInfo; var metadataEditorInfo;
@ -33,7 +34,7 @@
var newContentType = form.querySelector('#selectContentType').value || ''; var newContentType = form.querySelector('#selectContentType').value || '';
if ((metadataEditorInfo.ContentType || '') != newContentType) { if ((metadataEditorInfo.ContentType || '') !== newContentType) {
apiClient.ajax({ apiClient.ajax({
@ -104,7 +105,7 @@
var parts = date.toISOString().split('T'); var parts = date.toISOString().split('T');
// If the date is the same, preserve the time // If the date is the same, preserve the time
if (parts[0].indexOf(val) == 0) { if (parts[0].indexOf(val) === 0) {
var iso = parts[1]; var iso = parts[1];
@ -189,14 +190,14 @@
item.PreferredMetadataLanguage = form.querySelector('#selectLanguage').value; item.PreferredMetadataLanguage = form.querySelector('#selectLanguage').value;
item.PreferredMetadataCountryCode = form.querySelector('#selectCountry').value; item.PreferredMetadataCountryCode = form.querySelector('#selectCountry').value;
if (currentItem.Type == "Person") { if (currentItem.Type === "Person") {
var placeOfBirth = form.querySelector('#txtPlaceOfBirth').value; var placeOfBirth = form.querySelector('#txtPlaceOfBirth').value;
item.ProductionLocations = placeOfBirth ? [placeOfBirth] : []; item.ProductionLocations = placeOfBirth ? [placeOfBirth] : [];
} }
if (currentItem.Type == "Series") { if (currentItem.Type === "Series") {
// 600000000 // 600000000
var seriesRuntime = form.querySelector('#txtSeriesRuntime').value; var seriesRuntime = form.querySelector('#txtSeriesRuntime').value;
@ -248,7 +249,7 @@
personEditor.show(person).then(function (updatedPerson) { personEditor.show(person).then(function (updatedPerson) {
var isNew = index == -1; var isNew = index === -1;
if (isNew) { if (isNew) {
currentItem.People.push(updatedPerson); currentItem.People.push(updatedPerson);
@ -308,7 +309,7 @@
if (msg.MessageType === "LibraryChanged") { if (msg.MessageType === "LibraryChanged") {
if (msg.Data.ItemsUpdated.indexOf(currentItem.Id) != -1) { if (msg.Data.ItemsUpdated.indexOf(currentItem.Id) !== -1) {
console.log('Item updated - reloading metadata'); console.log('Item updated - reloading metadata');
reload(currentContext, currentItem.Id, currentItem.ServerId); reload(currentContext, currentItem.Id, currentItem.ServerId);
@ -400,16 +401,17 @@
context.querySelector('#peopleList').addEventListener('click', function (e) { context.querySelector('#peopleList').addEventListener('click', function (e) {
var index;
var btnDeletePerson = dom.parentWithClass(e.target, 'btnDeletePerson'); var btnDeletePerson = dom.parentWithClass(e.target, 'btnDeletePerson');
if (btnDeletePerson) { if (btnDeletePerson) {
var index = parseInt(btnDeletePerson.getAttribute('data-index')); index = parseInt(btnDeletePerson.getAttribute('data-index'));
currentItem.People.splice(index, 1); currentItem.People.splice(index, 1);
populatePeople(context, currentItem.People); populatePeople(context, currentItem.People);
} }
var btnEditPerson = dom.parentWithClass(e.target, 'btnEditPerson'); var btnEditPerson = dom.parentWithClass(e.target, 'btnEditPerson');
if (btnEditPerson) { if (btnEditPerson) {
var index = parseInt(btnEditPerson.getAttribute('data-index')); index = parseInt(btnEditPerson.getAttribute('data-index'));
editPerson(context, currentItem.People[index], index); editPerson(context, currentItem.People[index], index);
} }
}); });
@ -535,7 +537,7 @@
// Context is optional and restricts the querySelector to the context // Context is optional and restricts the querySelector to the context
function hideElement(selector, context, multiple) { function hideElement(selector, context, multiple) {
context = context || document; context = context || document;
if (typeof selector == 'string') { if (typeof selector === 'string') {
var elements = multiple ? context.querySelectorAll(selector) : [context.querySelector(selector)]; var elements = multiple ? context.querySelectorAll(selector) : [context.querySelector(selector)];
@ -554,7 +556,7 @@
// Context is optional and restricts the querySelector to the context // Context is optional and restricts the querySelector to the context
function showElement(selector, context, multiple) { function showElement(selector, context, multiple) {
context = context || document; context = context || document;
if (typeof selector == 'string') { if (typeof selector === 'string') {
var elements = multiple ? context.querySelectorAll(selector) : [context.querySelector(selector)]; var elements = multiple ? context.querySelectorAll(selector) : [context.querySelector(selector)];
@ -569,31 +571,31 @@
} }
function setFieldVisibilities(context, item) { function setFieldVisibilities(context, item) {
if (item.Path && item.LocationType != 'Remote') { if (item.Path && item.LocationType !== 'Remote') {
showElement('#fldPath', context); showElement('#fldPath', context);
} else { } else {
hideElement('#fldPath', context); hideElement('#fldPath', context);
} }
if (item.Type == "Series" || item.Type == "Movie" || item.Type == "Trailer") { if (item.Type === "Series" || item.Type === "Movie" || item.Type === "Trailer") {
showElement('#fldOriginalName', context); showElement('#fldOriginalName', context);
} else { } else {
hideElement('#fldOriginalName', context); hideElement('#fldOriginalName', context);
} }
if (item.Type == "Series") { if (item.Type === "Series") {
showElement('#fldSeriesRuntime', context); showElement('#fldSeriesRuntime', context);
} else { } else {
hideElement('#fldSeriesRuntime', context); hideElement('#fldSeriesRuntime', context);
} }
if (item.Type == "Series" || item.Type == "Person") { if (item.Type === "Series" || item.Type === "Person") {
showElement('#fldEndDate', context); showElement('#fldEndDate', context);
} else { } else {
hideElement('#fldEndDate', context); hideElement('#fldEndDate', context);
} }
if (item.Type == "Movie" || item.MediaType == "Game" || item.MediaType == "Trailer" || item.Type == "MusicVideo") { if (item.Type === "Movie" || item.MediaType === "Game" || item.MediaType === "Trailer" || item.Type === "MusicVideo") {
showElement('#fldBudget', context); showElement('#fldBudget', context);
showElement('#fldRevenue', context); showElement('#fldRevenue', context);
} else { } else {
@ -601,19 +603,19 @@
hideElement('#fldRevenue', context); hideElement('#fldRevenue', context);
} }
if (item.Type == "MusicAlbum") { if (item.Type === "MusicAlbum") {
showElement('#albumAssociationMessage', context); showElement('#albumAssociationMessage', context);
} else { } else {
hideElement('#albumAssociationMessage', context) hideElement('#albumAssociationMessage', context);
} }
if (item.MediaType == "Game") { if (item.MediaType === "Game") {
showElement('#fldPlayers', context); showElement('#fldPlayers', context);
} else { } else {
hideElement('#fldPlayers', context); hideElement('#fldPlayers', context);
} }
if (item.Type == "Movie" || item.Type == "Trailer") { if (item.Type === "Movie" || item.Type === "Trailer") {
showElement('#fldCriticRating', context); showElement('#fldCriticRating', context);
showElement('#fldCriticRatingSummary', context); showElement('#fldCriticRatingSummary', context);
} else { } else {
@ -621,19 +623,19 @@
hideElement('#fldCriticRatingSummary', context); hideElement('#fldCriticRatingSummary', context);
} }
if (item.Type == "Movie") { if (item.Type === "Movie") {
showElement('#fldAwardSummary', context); showElement('#fldAwardSummary', context);
} else { } else {
hideElement('#fldAwardSummary', context); hideElement('#fldAwardSummary', context);
} }
if (item.Type == "Movie" || item.Type == "Trailer") { if (item.Type === "Movie" || item.Type === "Trailer") {
showElement('#fldMetascore', context); showElement('#fldMetascore', context);
} else { } else {
hideElement('#fldMetascore', context); hideElement('#fldMetascore', context);
} }
if (item.Type == "Series") { if (item.Type === "Series") {
showElement('#fldStatus', context); showElement('#fldStatus', context);
showElement('#fldAirDays', context); showElement('#fldAirDays', context);
showElement('#fldAirTime', context); showElement('#fldAirTime', context);
@ -643,19 +645,19 @@
hideElement('#fldAirTime', context); hideElement('#fldAirTime', context);
} }
if (item.MediaType == "Video" && item.Type != "TvChannel") { if (item.MediaType === "Video" && item.Type !== "TvChannel") {
showElement('#fld3dFormat', context); showElement('#fld3dFormat', context);
} else { } else {
hideElement('#fld3dFormat', context); hideElement('#fld3dFormat', context);
} }
if (item.Type == "Audio") { if (item.Type === "Audio") {
showElement('#fldAlbumArtist', context); showElement('#fldAlbumArtist', context);
} else { } else {
hideElement('#fldAlbumArtist', context); hideElement('#fldAlbumArtist', context);
} }
if (item.Type == "Audio" || item.Type == "MusicVideo") { if (item.Type === "Audio" || item.Type === "MusicVideo") {
showElement('#fldArtist', context); showElement('#fldArtist', context);
showElement('#fldAlbum', context); showElement('#fldAlbum', context);
} else { } else {
@ -663,26 +665,26 @@
hideElement('#fldAlbum', context); hideElement('#fldAlbum', context);
} }
if (item.Type == "Episode") { if (item.Type === "Episode") {
showElement('#collapsibleDvdEpisodeInfo', context); showElement('#collapsibleDvdEpisodeInfo', context);
} else { } else {
hideElement('#collapsibleDvdEpisodeInfo', context); hideElement('#collapsibleDvdEpisodeInfo', context);
} }
if (item.Type == "Episode" && item.ParentIndexNumber == 0) { if (item.Type === "Episode" && item.ParentIndexNumber === 0) {
showElement('#collapsibleSpecialEpisodeInfo', context); showElement('#collapsibleSpecialEpisodeInfo', context);
} else { } else {
hideElement('#collapsibleSpecialEpisodeInfo', context); hideElement('#collapsibleSpecialEpisodeInfo', context);
} }
if (item.Type == "Person" || item.Type == "Genre" || item.Type == "Studio" || item.Type == "GameGenre" || item.Type == "MusicGenre" || item.Type == "TvChannel") { if (item.Type === "Person" || item.Type === "Genre" || item.Type === "Studio" || item.Type === "GameGenre" || item.Type === "MusicGenre" || item.Type === "TvChannel") {
hideElement('#fldCommunityRating', context); hideElement('#fldCommunityRating', context);
hideElement('#fldCommunityVoteCount', context); hideElement('#fldCommunityVoteCount', context);
hideElement('#genresCollapsible', context); hideElement('#genresCollapsible', context);
hideElement('#peopleCollapsible', context); hideElement('#peopleCollapsible', context);
hideElement('#studiosCollapsible', context); hideElement('#studiosCollapsible', context);
if (item.Type == "TvChannel") { if (item.Type === "TvChannel") {
showElement('#fldOfficialRating', context); showElement('#fldOfficialRating', context);
} else { } else {
hideElement('#fldOfficialRating', context); hideElement('#fldOfficialRating', context);
@ -698,7 +700,7 @@
showElement('#fldCustomRating', context); showElement('#fldCustomRating', context);
} }
if (item.Type == "TvChannel") { if (item.Type === "TvChannel") {
hideElement('#tagsCollapsible', context); hideElement('#tagsCollapsible', context);
hideElement('#metadataSettingsCollapsible', context); hideElement('#metadataSettingsCollapsible', context);
hideElement('#fldPremiereDate', context); hideElement('#fldPremiereDate', context);
@ -712,19 +714,19 @@
showElement('#fldYear', context); showElement('#fldYear', context);
} }
if (item.Type == "Movie" || item.Type == "Trailer" || item.Type == "BoxSet") { if (item.Type === "Movie" || item.Type === "Trailer" || item.Type === "BoxSet") {
showElement('#keywordsCollapsible', context); showElement('#keywordsCollapsible', context);
} else { } else {
hideElement('#keywordsCollapsible', context); hideElement('#keywordsCollapsible', context);
} }
if (item.MediaType == "Video" && item.Type != "TvChannel") { if (item.MediaType === "Video" && item.Type !== "TvChannel") {
showElement('#fldSourceType', context); showElement('#fldSourceType', context);
} else { } else {
hideElement('#fldSourceType', context); hideElement('#fldSourceType', context);
} }
if (item.Type == "Person") { if (item.Type === "Person") {
//todo //todo
context.querySelector('#txtProductionYear').label(globalize.translate('sharedcomponents#LabelBirthYear')); context.querySelector('#txtProductionYear').label(globalize.translate('sharedcomponents#LabelBirthYear'));
context.querySelector("#txtPremiereDate").label(globalize.translate('sharedcomponents#LabelBirthDate')); context.querySelector("#txtPremiereDate").label(globalize.translate('sharedcomponents#LabelBirthDate'));
@ -737,20 +739,20 @@
hideElement('#fldPlaceOfBirth'); hideElement('#fldPlaceOfBirth');
} }
if (item.MediaType == "Video" && item.Type != "TvChannel") { if (item.MediaType === "Video" && item.Type !== "TvChannel") {
showElement('#fldOriginalAspectRatio'); showElement('#fldOriginalAspectRatio');
} else { } else {
hideElement('#fldOriginalAspectRatio'); hideElement('#fldOriginalAspectRatio');
} }
if (item.Type == "Audio" || item.Type == "Episode" || item.Type == "Season") { if (item.Type === "Audio" || item.Type === "Episode" || item.Type === "Season") {
showElement('#fldIndexNumber'); showElement('#fldIndexNumber');
if (item.Type == "Episode") { if (item.Type === "Episode") {
context.querySelector('#txtIndexNumber').label(globalize.translate('sharedcomponents#LabelEpisodeNumber')); context.querySelector('#txtIndexNumber').label(globalize.translate('sharedcomponents#LabelEpisodeNumber'));
} else if (item.Type == "Season") { } else if (item.Type === "Season") {
context.querySelector('#txtIndexNumber').label(globalize.translate('sharedcomponents#LabelSeasonNumber')); context.querySelector('#txtIndexNumber').label(globalize.translate('sharedcomponents#LabelSeasonNumber'));
} else if (item.Type == "Audio") { } else if (item.Type === "Audio") {
context.querySelector('#txtIndexNumber').label(globalize.translate('sharedcomponents#LabelTrackNumber')); context.querySelector('#txtIndexNumber').label(globalize.translate('sharedcomponents#LabelTrackNumber'));
} else { } else {
context.querySelector('#txtIndexNumber').label(globalize.translate('sharedcomponents#LabelNumber')); context.querySelector('#txtIndexNumber').label(globalize.translate('sharedcomponents#LabelNumber'));
@ -759,12 +761,12 @@
hideElement('#fldIndexNumber'); hideElement('#fldIndexNumber');
} }
if (item.Type == "Audio" || item.Type == "Episode") { if (item.Type === "Audio" || item.Type === "Episode") {
showElement('#fldParentIndexNumber'); showElement('#fldParentIndexNumber');
if (item.Type == "Episode") { if (item.Type === "Episode") {
context.querySelector('#txtParentIndexNumber').label(globalize.translate('LabelSeasonNumber')); context.querySelector('#txtParentIndexNumber').label(globalize.translate('LabelSeasonNumber'));
} else if (item.Type == "Audio") { } else if (item.Type === "Audio") {
context.querySelector('#txtParentIndexNumber').label(globalize.translate('LabelDiscNumber')); context.querySelector('#txtParentIndexNumber').label(globalize.translate('LabelDiscNumber'));
} else { } else {
context.querySelector('#txtParentIndexNumber').label(globalize.translate('LabelParentNumber')); context.querySelector('#txtParentIndexNumber').label(globalize.translate('LabelParentNumber'));
@ -773,7 +775,7 @@
hideElement('#fldParentIndexNumber', context); hideElement('#fldParentIndexNumber', context);
} }
if (item.Type == "BoxSet") { if (item.Type === "BoxSet") {
showElement('#fldDisplayOrder', context); showElement('#fldDisplayOrder', context);
context.querySelector('#selectDisplayOrder').innerHTML = '<option value="SortName">' + globalize.translate('sharedcomponents#SortName') + '</option><option value="PremiereDate">' + globalize.translate('sharedcomponents#ReleaseDate') + '</option>'; context.querySelector('#selectDisplayOrder').innerHTML = '<option value="SortName">' + globalize.translate('sharedcomponents#SortName') + '</option><option value="PremiereDate">' + globalize.translate('sharedcomponents#ReleaseDate') + '</option>';
@ -784,7 +786,7 @@
var displaySettingFields = context.querySelectorAll('.fldDisplaySetting'); var displaySettingFields = context.querySelectorAll('.fldDisplaySetting');
var hiddenDisplaySettingFields = Array.prototype.filter.call(displaySettingFields, function (field) { var hiddenDisplaySettingFields = Array.prototype.filter.call(displaySettingFields, function (field) {
return field.style.display != 'none'; return field.style.display !== 'none';
}); });
if (hiddenDisplaySettingFields.length) { if (hiddenDisplaySettingFields.length) {
@ -815,7 +817,7 @@
context.querySelector('#select3dFormat', context).value = item.Video3DFormat || ""; context.querySelector('#select3dFormat', context).value = item.Video3DFormat || "";
Array.prototype.forEach.call(context.querySelectorAll('.chkAirDay', context), function (el) { Array.prototype.forEach.call(context.querySelectorAll('.chkAirDay', context), function (el) {
el.checked = (item.AirDays || []).indexOf(el.getAttribute('data-day')) != -1; el.checked = (item.AirDays || []).indexOf(el.getAttribute('data-day')) !== -1;
}); });
populateListView(context.querySelector('#listGenres'), item.Genres); populateListView(context.querySelector('#listGenres'), item.Genres);
@ -830,9 +832,9 @@
var chkLockData = context.querySelector("#chkLockData"); var chkLockData = context.querySelector("#chkLockData");
chkLockData.checked = lockData; chkLockData.checked = lockData;
if (chkLockData.checked) { if (chkLockData.checked) {
hideElement('.providerSettingsContainer', context) hideElement('.providerSettingsContainer', context);
} else { } else {
showElement('.providerSettingsContainer', context) showElement('.providerSettingsContainer', context);
} }
populateInternetProviderSettings(context, item, item.LockedFields); populateInternetProviderSettings(context, item, item.LockedFields);
@ -957,7 +959,7 @@
ratings.push({ Name: rating.Name, Value: rating.Name }); ratings.push({ Name: rating.Name, Value: rating.Name });
if (rating.Name == currentValue) { if (rating.Name === currentValue) {
currentValueFound = true; currentValueFound = true;
} }
} }
@ -1037,7 +1039,7 @@
html += (person.Name || ''); html += (person.Name || '');
html += '</div>'; html += '</div>';
if (person.Role && person.Role != lastType) { if (person.Role && person.Role !== lastType) {
html += '<div class="secondary">' + (person.Role) + '</div>'; html += '<div class="secondary">' + (person.Role) + '</div>';
} }
@ -1060,7 +1062,7 @@
var field = fields[i]; var field = fields[i];
var name = field.name; var name = field.name;
var value = field.value || field.name; var value = field.value || field.name;
var checkedHtml = currentFields.indexOf(value) == -1 ? ' checked' : ''; var checkedHtml = currentFields.indexOf(value) === -1 ? ' checked' : '';
html += '<label>'; html += '<label>';
html += '<input type="checkbox" is="emby-checkbox" class="selectLockedField" data-value="' + value + '"' + checkedHtml + '/>'; html += '<input type="checkbox" is="emby-checkbox" class="selectLockedField" data-value="' + value + '"' + checkedHtml + '/>';
html += '<span>' + name + '</span>'; html += '<span>' + name + '</span>';
@ -1071,7 +1073,7 @@
function populateInternetProviderSettings(context, item, lockedFields) { function populateInternetProviderSettings(context, item, lockedFields) {
var container = context.querySelector('.providerSettingsContainer'); var container = context.querySelector('.providerSettingsContainer');
lockedFields = lockedFields || new Array(); lockedFields = lockedFields || [];
var metadatafields = [ var metadatafields = [
{ name: globalize.translate('sharedcomponents#Name'), value: "Name" }, { name: globalize.translate('sharedcomponents#Name'), value: "Name" },
@ -1081,13 +1083,13 @@
{ name: globalize.translate('sharedcomponents#People'), value: "Cast" } { name: globalize.translate('sharedcomponents#People'), value: "Cast" }
]; ];
if (item.Type == "Person") { if (item.Type === "Person") {
metadatafields.push({ name: globalize.translate('sharedcomponents#BirthLocation'), value: "ProductionLocations" }); metadatafields.push({ name: globalize.translate('sharedcomponents#BirthLocation'), value: "ProductionLocations" });
} else { } else {
metadatafields.push({ name: globalize.translate('sharedcomponents#ProductionLocations'), value: "ProductionLocations" }); metadatafields.push({ name: globalize.translate('sharedcomponents#ProductionLocations'), value: "ProductionLocations" });
} }
if (item.Type == "Series") { if (item.Type === "Series") {
metadatafields.push({ name: globalize.translate('Runtime'), value: "Runtime" }); metadatafields.push({ name: globalize.translate('Runtime'), value: "Runtime" });
} }
@ -1097,7 +1099,7 @@
metadatafields.push({ name: globalize.translate('sharedcomponents#Images'), value: "Images" }); metadatafields.push({ name: globalize.translate('sharedcomponents#Images'), value: "Images" });
metadatafields.push({ name: globalize.translate('sharedcomponents#Backdrops'), value: "Backdrops" }); metadatafields.push({ name: globalize.translate('sharedcomponents#Backdrops'), value: "Backdrops" });
if (item.Type == "Game") { if (item.Type === "Game") {
metadatafields.push({ name: globalize.translate('sharedcomponents#Screenshots'), value: "Screenshots" }); metadatafields.push({ name: globalize.translate('sharedcomponents#Screenshots'), value: "Screenshots" });
} }
@ -1133,13 +1135,13 @@
setFieldVisibilities(context, item); setFieldVisibilities(context, item);
fillItemInfo(context, item, metadataEditorInfo.ParentalRatingOptions); fillItemInfo(context, item, metadataEditorInfo.ParentalRatingOptions);
if (item.MediaType == "Video" && item.Type != "Episode") { if (item.MediaType === "Video" && item.Type !== "Episode") {
showElement('#fldShortOverview', context); showElement('#fldShortOverview', context);
} else { } else {
hideElement('#fldShortOverview', context); hideElement('#fldShortOverview', context);
} }
if (item.MediaType == "Video" && item.Type != "Episode") { if (item.MediaType === "Video" && item.Type !== "Episode") {
showElement('#fldTagline', context); showElement('#fldTagline', context);
} else { } else {
hideElement('#fldTagline', context); hideElement('#fldTagline', context);

View file

@ -1,4 +1,5 @@
define(['dialogHelper', 'layoutManager', 'globalize', 'require', 'paper-icon-button-light', 'emby-input', 'emby-select', 'css!./../formdialog'], function (dialogHelper, layoutManager, globalize, require) { define(['dialogHelper', 'layoutManager', 'globalize', 'require', 'paper-icon-button-light', 'emby-input', 'emby-select', 'css!./../formdialog'], function (dialogHelper, layoutManager, globalize, require) {
'use strict';
function centerFocus(elem, horiz, on) { function centerFocus(elem, horiz, on) {
require(['scrollHelper'], function (scrollHelper) { require(['scrollHelper'], function (scrollHelper) {
@ -59,7 +60,7 @@
dlg.querySelector('.selectPersonType').addEventListener('change', function (e) { dlg.querySelector('.selectPersonType').addEventListener('change', function (e) {
if (this.value == 'Actor') { if (this.value === 'Actor') {
dlg.querySelector('.fldRole').classList.remove('hide'); dlg.querySelector('.fldRole').classList.remove('hide');
} else { } else {
dlg.querySelector('.fldRole').classList.add('hide'); dlg.querySelector('.fldRole').classList.add('hide');

View file

@ -1,7 +1,7 @@
(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.multiDownload = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){ define([], function () {
'use strict'; 'use strict';
function fallback(urls) { function fallback(urls) {
var i = 0; var i = 0;
(function createIframe() { (function createIframe() {
@ -26,29 +26,29 @@ function fallback(urls) {
} }
}, 100); }, 100);
})(); })();
} }
function isFirefox() { function isFirefox() {
// sad panda :( // sad panda :(
return /Firefox\//i.test(navigator.userAgent); return /Firefox\//i.test(navigator.userAgent);
} }
function sameDomain(url) { function sameDomain(url) {
var a = document.createElement('a'); var a = document.createElement('a');
a.href = url; a.href = url;
return location.hostname === a.hostname && location.protocol === a.protocol; return location.hostname === a.hostname && location.protocol === a.protocol;
} }
function download(url) { function download(url) {
var a = document.createElement('a'); var a = document.createElement('a');
a.download = ''; a.download = '';
a.href = url; a.href = url;
// firefox doesn't support `a.click()`... // firefox doesn't support `a.click()`...
a.dispatchEvent(new MouseEvent('click')); a.dispatchEvent(new MouseEvent('click'));
} }
module.exports = function (urls) { return function (urls) {
if (!urls) { if (!urls) {
throw new Error('`urls` required'); throw new Error('`urls` required');
} }
@ -67,7 +67,5 @@ module.exports = function (urls) {
download(url); download(url);
}); });
} };
},{}]},{},[1])(1)
}); });

View file

@ -1,4 +1,5 @@
define(['browser', 'appStorage', 'apphost', 'loading', 'connectionManager', 'globalize', 'embyRouter', 'dom', 'css!./multiselect'], function (browser, appStorage, appHost, loading, connectionManager, globalize, embyRouter, dom) { define(['browser', 'appStorage', 'apphost', 'loading', 'connectionManager', 'globalize', 'embyRouter', 'dom', 'css!./multiselect'], function (browser, appStorage, appHost, loading, connectionManager, globalize, embyRouter, dom) {
'use strict';
var selectedItems = []; var selectedItems = [];
var selectedElements = []; var selectedElements = [];
@ -54,7 +55,7 @@
if (selected) { if (selected) {
var current = selectedItems.filter(function (i) { var current = selectedItems.filter(function (i) {
return i == id; return i === id;
}); });
if (!current.length) { if (!current.length) {
@ -64,10 +65,10 @@
} else { } else {
selectedItems = selectedItems.filter(function (i) { selectedItems = selectedItems.filter(function (i) {
return i != id; return i !== id;
}); });
selectedElements = selectedElements.filter(function (i) { selectedElements = selectedElements.filter(function (i) {
return i != chkItemSelect; return i !== chkItemSelect;
}); });
} }
@ -130,7 +131,7 @@
html += '<span class="itemSelectionCount"></span>'; html += '<span class="itemSelectionCount"></span>';
html += '</div>'; html += '</div>';
var moreIcon = appHost.moreIcon == 'dots-horiz' ? '&#xE5D3;' : '&#xE5D4;'; var moreIcon = appHost.moreIcon === 'dots-horiz' ? '&#xE5D3;' : '&#xE5D4;';
html += '<button is="paper-icon-button-light" class="btnSelectionPanelOptions autoSize" style="margin-left:auto;"><i class="md-icon">' + moreIcon + '</i></button>'; html += '<button is="paper-icon-button-light" class="btnSelectionPanelOptions autoSize" style="margin-left:auto;"><i class="md-icon">' + moreIcon + '</i></button>';
selectionCommandsPanel.innerHTML = html; selectionCommandsPanel.innerHTML = html;
@ -354,7 +355,7 @@
var container = dom.parentWithAttribute(i, 'is', 'emby-itemscontainer'); var container = dom.parentWithAttribute(i, 'is', 'emby-itemscontainer');
if (container && elems.indexOf(container) == -1) { if (container && elems.indexOf(container) === -1) {
elems.push(container); elems.push(container);
} }
}); });
@ -400,7 +401,7 @@
require(['emby-checkbox'], function () { require(['emby-checkbox'], function () {
var cards = document.querySelectorAll('.card'); var cards = document.querySelectorAll('.card');
for (var i = 0, length = cards.length; i < length; i++) { for (var i = 0, length = cards.length; i < length; i++) {
showSelection(cards[i], initialCard == cards[i]); showSelection(cards[i], initialCard === cards[i]);
} }
showSelectionCommands(); showSelectionCommands();

View file

@ -1,4 +1,5 @@
define(['serverNotifications', 'playbackManager', 'events', 'globalize', 'require'], function (serverNotifications, playbackManager, events, globalize, require) { define(['serverNotifications', 'playbackManager', 'events', 'globalize', 'require'], function (serverNotifications, playbackManager, events, globalize, require) {
'use strict';
function onOneDocumentClick() { function onOneDocumentClick() {
@ -171,18 +172,18 @@ define(['serverNotifications', 'playbackManager', 'events', 'globalize', 'requir
data: {} data: {}
}; };
if (status == 'completed') { if (status === 'completed') {
notification.title = globalize.translate('sharedcomponents#PackageInstallCompleted').replace('{0}', installation.Name + ' ' + installation.Version); notification.title = globalize.translate('sharedcomponents#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('sharedcomponents#PackageInstallCancelled').replace('{0}', installation.Name + ' ' + installation.Version); notification.title = globalize.translate('sharedcomponents#PackageInstallCancelled').replace('{0}', installation.Name + ' ' + installation.Version);
} }
else if (status == 'failed') { else if (status === 'failed') {
notification.title = globalize.translate('sharedcomponents#PackageInstallFailed').replace('{0}', installation.Name + ' ' + installation.Version); notification.title = globalize.translate('sharedcomponents#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('sharedcomponents#InstallingPackage').replace('{0}', installation.Name + ' ' + installation.Version); notification.title = globalize.translate('sharedcomponents#InstallingPackage').replace('{0}', installation.Name + ' ' + installation.Version);
notification.actions = notification.actions =
@ -197,14 +198,14 @@ define(['serverNotifications', 'playbackManager', 'events', 'globalize', 'requir
notification.data.id = installation.id; notification.data.id = installation.id;
} }
if (status == 'progress') { if (status === 'progress') {
var percentComplete = Math.round(installation.PercentComplete || 0); var percentComplete = Math.round(installation.PercentComplete || 0);
notification.body = percentComplete + '% complete.'; notification.body = percentComplete + '% complete.';
} }
var timeout = status == 'cancelled' ? 5000 : 0; var timeout = status === 'cancelled' ? 5000 : 0;
showNotification(notification, timeout, apiClient); showNotification(notification, timeout, apiClient);
}); });

View file

@ -1,5 +1,7 @@
define([], function () { define([], function () {
'use strict';
/** /**
* Detect click event * Detect click event
*/ */
@ -123,7 +125,9 @@ define([], function () {
*/ */
page.base = function (path) { page.base = function (path) {
if (0 === arguments.length) return base; if (0 === arguments.length) {
return base;
}
base = path; base = path;
}; };
@ -142,17 +146,31 @@ define([], function () {
page.start = function (options) { page.start = function (options) {
options = options || {}; options = options || {};
if (running) return; if (running) {
return;
}
running = true; running = true;
if (false === options.dispatch) dispatch = false; if (false === options.dispatch) {
if (false === options.decodeURLComponents) decodeURLComponents = false; dispatch = false;
if (false !== options.popstate) window.addEventListener('popstate', onpopstate, false); }
if (false === options.decodeURLComponents) {
decodeURLComponents = false;
}
if (false !== options.popstate) {
window.addEventListener('popstate', onpopstate, false);
}
if (false !== options.click) { if (false !== options.click) {
document.addEventListener(clickEvent, onclick, false); document.addEventListener(clickEvent, onclick, false);
} }
if (options.enableHistory != null) enableHistory = options.enableHistory; if (options.enableHistory != null) {
if (true === options.hashbang) hashbang = true; enableHistory = options.enableHistory;
if (!dispatch) return; }
if (true === options.hashbang) {
hashbang = true;
}
if (!dispatch) {
return;
}
var url = (hashbang && ~location.hash.indexOf('#!')) ? location.hash.substr(2) + location.search : location.pathname + location.search + location.hash; var url = (hashbang && ~location.hash.indexOf('#!')) ? location.hash.substr(2) + location.search : location.pathname + location.search + location.hash;
page.replace(url, null, true, dispatch); page.replace(url, null, true, dispatch);
}; };
@ -164,7 +182,9 @@ define([], function () {
*/ */
page.stop = function () { page.stop = function () {
if (!running) return; if (!running) {
return;
}
page.current = ''; page.current = '';
page.len = 0; page.len = 0;
running = false; running = false;
@ -186,8 +206,12 @@ define([], function () {
var ctx = new Context(path, state); var ctx = new Context(path, state);
ctx.isBack = isBack; ctx.isBack = isBack;
page.current = ctx.path; page.current = ctx.path;
if (false !== dispatch) page.dispatch(ctx); if (false !== dispatch) {
if (false !== ctx.handled && false !== push) ctx.pushState(); page.dispatch(ctx);
}
if (false !== ctx.handled && false !== push) {
ctx.pushState();
}
return ctx; return ctx;
}; };
@ -286,7 +310,9 @@ define([], function () {
page.current = ctx.path; page.current = ctx.path;
ctx.init = init; ctx.init = init;
ctx.save(); // save before dispatching, which may redirect ctx.save(); // save before dispatching, which may redirect
if (false !== dispatch) page.dispatch(ctx); if (false !== dispatch) {
page.dispatch(ctx);
}
return ctx; return ctx;
}; };
@ -306,7 +332,9 @@ define([], function () {
function nextExit() { function nextExit() {
var fn = page.exits[j++]; var fn = page.exits[j++];
if (!fn) return nextEnter(); if (!fn) {
return nextEnter();
}
fn(prev, nextExit); fn(prev, nextExit);
} }
@ -317,7 +345,9 @@ define([], function () {
ctx.handled = false; ctx.handled = false;
return; return;
} }
if (!fn) return unhandled(ctx); if (!fn) {
return unhandled(ctx);
}
fn(ctx, nextEnter); fn(ctx, nextEnter);
} }
@ -338,7 +368,9 @@ define([], function () {
*/ */
function unhandled(ctx) { function unhandled(ctx) {
if (ctx.handled) return; if (ctx.handled) {
return;
}
var current; var current;
if (hashbang) { if (hashbang) {
@ -347,7 +379,9 @@ define([], function () {
current = location.pathname + location.search; current = location.pathname + location.search;
} }
if (current === ctx.canonicalPath) return; if (current === ctx.canonicalPath) {
return;
}
page.stop(); page.stop();
ctx.handled = false; ctx.handled = false;
location.href = ctx.canonicalPath; location.href = ctx.canonicalPath;
@ -392,12 +426,16 @@ define([], function () {
*/ */
function Context(path, state) { function Context(path, state) {
if ('/' === path[0] && 0 !== path.indexOf(base)) path = base + (hashbang ? '#!' : '') + path; if ('/' === path[0] && 0 !== path.indexOf(base)) {
path = base + (hashbang ? '#!' : '') + path;
}
var i = path.indexOf('?'); var i = path.indexOf('?');
this.canonicalPath = path; this.canonicalPath = path;
this.path = path.replace(base, '') || '/'; this.path = path.replace(base, '') || '/';
if (hashbang) this.path = this.path.replace('#!', '') || '/'; if (hashbang) {
this.path = this.path.replace('#!', '') || '/';
}
this.title = document.title; this.title = document.title;
this.state = state || {}; this.state = state || {};
@ -409,7 +447,9 @@ define([], function () {
// fragment // fragment
this.hash = ''; this.hash = '';
if (!hashbang) { if (!hashbang) {
if (!~this.path.indexOf('#')) return; if (!~this.path.indexOf('#')) {
return;
}
var parts = this.path.split('#'); var parts = this.path.split('#');
this.path = parts[0]; this.path = parts[0];
this.hash = decodeURLEncodedURIComponent(parts[1]) || ''; this.hash = decodeURLEncodedURIComponent(parts[1]) || '';
@ -507,7 +547,9 @@ define([], function () {
Route.prototype.middleware = function (fn) { Route.prototype.middleware = function (fn) {
var self = this; var self = this;
return function (ctx, next) { return function (ctx, next) {
if (self.match(ctx.path, ctx.params)) return fn(ctx, next); if (self.match(ctx.path, ctx.params)) {
return fn(ctx, next);
}
next(); next();
}; };
}; };
@ -528,7 +570,9 @@ define([], function () {
pathname = ~qsIndex ? path.slice(0, qsIndex) : path, pathname = ~qsIndex ? path.slice(0, qsIndex) : path,
m = this.regexp.exec(decodeURIComponent(pathname)); m = this.regexp.exec(decodeURIComponent(pathname));
if (!m) return false; if (!m) {
return false;
}
for (var i = 1, len = m.length; i < len; ++i) { for (var i = 1, len = m.length; i < len; ++i) {
var key = keys[i - 1]; var key = keys[i - 1];
@ -587,8 +631,12 @@ define([], function () {
}); });
} }
return function onpopstate(e) { return function onpopstate(e) {
if (!loaded) return; if (!loaded) {
if (ignorePopState(e)) return; return;
}
if (ignorePopState(e)) {
return;
}
if (e.state) { if (e.state) {
var path = e.state.path; var path = e.state.path;
page.replace(path, e.state, null, null, true); page.replace(path, e.state, null, null, true);
@ -603,43 +651,63 @@ define([], function () {
function onclick(e) { function onclick(e) {
if (1 !== which(e)) return; if (1 !== which(e)) {
return;
}
if (e.metaKey || e.ctrlKey || e.shiftKey) return; if (e.metaKey || e.ctrlKey || e.shiftKey) {
if (e.defaultPrevented) return; return;
}
if (e.defaultPrevented) {
return;
}
// ensure link // ensure link
var el = e.target; var el = e.target;
while (el && 'A' !== el.nodeName) el = el.parentNode; while (el && 'A' !== el.nodeName) {
if (!el || 'A' !== el.nodeName) return; el = el.parentNode;
}
if (!el || 'A' !== el.nodeName) {
return;
}
// Ignore if tag has // Ignore if tag has
// 1. "download" attribute // 1. "download" attribute
// 2. rel="external" attribute // 2. rel="external" attribute
if (el.hasAttribute('download') || el.getAttribute('rel') === 'external') return; if (el.hasAttribute('download') || el.getAttribute('rel') === 'external') {
return;
}
// ensure non-hash for the same path // ensure non-hash for the same path
var link = el.getAttribute('href'); var link = el.getAttribute('href');
if (link == '#') { if (link === '#') {
e.preventDefault(); e.preventDefault();
return; return;
} }
if (!hashbang && el.pathname === location.pathname && (el.hash || '#' === link)) return; if (!hashbang && el.pathname === location.pathname && (el.hash || '#' === link)) {
return;
}
// Check for mailto: in the href // Check for mailto: in the href
if (link && link.indexOf('mailto:') > -1) return; if (link && link.indexOf('mailto:') > -1) {
return;
}
// check target // check target
if (el.target) return; if (el.target) {
return;
}
// x-origin // x-origin
if (!sameOrigin(el.href)) return; if (!sameOrigin(el.href)) {
return;
}
@ -653,9 +721,13 @@ define([], function () {
path = path.substr(base.length); path = path.substr(base.length);
} }
if (hashbang) path = path.replace('#!', ''); if (hashbang) {
path = path.replace('#!', '');
}
if (base && orig === path) return; if (base && orig === path) {
return;
}
e.preventDefault(); e.preventDefault();
page.show(orig); page.show(orig);
@ -676,7 +748,9 @@ define([], function () {
function sameOrigin(href) { function sameOrigin(href) {
var origin = location.protocol + '//' + location.hostname; var origin = location.protocol + '//' + location.hostname;
if (location.port) origin += ':' + location.port; if (location.port) {
origin += ':' + location.port;
}
return (href && (0 === href.indexOf(origin))); return (href && (0 === href.indexOf(origin)));
} }
@ -698,7 +772,7 @@ define([], function () {
// "/route(\\d+)" => [undefined, undefined, undefined, "\d+", undefined, undefined] // "/route(\\d+)" => [undefined, undefined, undefined, "\d+", undefined, undefined]
// "/*" => ["/", undefined, undefined, undefined, undefined, "*"] // "/*" => ["/", undefined, undefined, undefined, undefined, "*"]
'([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^()])+)\\))?|\\(((?:\\\\.|[^()])+)\\))([+*?])?|(\\*))' '([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^()])+)\\))?|\\(((?:\\\\.|[^()])+)\\))([+*?])?|(\\*))'
].join('|'), 'g') ].join('|'), 'g');
/** /**
* Parse a string for the raw tokens. * Parse a string for the raw tokens.
@ -707,42 +781,42 @@ define([], function () {
* @return {Array} * @return {Array}
*/ */
function parse(str) { function parse(str) {
var tokens = [] var tokens = [];
var key = 0 var key = 0;
var index = 0 var index = 0;
var path = '' var path = '';
var res var res;
while ((res = PATH_REGEXP.exec(str)) != null) { while ((res = PATH_REGEXP.exec(str)) != null) {
var m = res[0] var m = res[0];
var escaped = res[1] var escaped = res[1];
var offset = res.index var offset = res.index;
path += str.slice(index, offset) path += str.slice(index, offset);
index = offset + m.length index = offset + m.length;
// Ignore already escaped sequences. // Ignore already escaped sequences.
if (escaped) { if (escaped) {
path += escaped[1] path += escaped[1];
continue continue;
} }
// Push the current path onto the tokens. // Push the current path onto the tokens.
if (path) { if (path) {
tokens.push(path) tokens.push(path);
path = '' path = '';
} }
var prefix = res[2] var prefix = res[2];
var name = res[3] var name = res[3];
var capture = res[4] var capture = res[4];
var group = res[5] var group = res[5];
var suffix = res[6] var suffix = res[6];
var asterisk = res[7] var asterisk = res[7];
var repeat = suffix === '+' || suffix === '*' var repeat = suffix === '+' || suffix === '*';
var optional = suffix === '?' || suffix === '*' var optional = suffix === '?' || suffix === '*';
var delimiter = prefix || '/' var delimiter = prefix || '/';
var pattern = capture || group || (asterisk ? '.*' : '[^' + delimiter + ']+?') var pattern = capture || group || (asterisk ? '.*' : '[^' + delimiter + ']+?');
tokens.push({ tokens.push({
name: name || key++, name: name || key++,
@ -751,24 +825,24 @@ define([], function () {
optional: optional, optional: optional,
repeat: repeat, repeat: repeat,
pattern: escapeGroup(pattern) pattern: escapeGroup(pattern)
}) });
} }
// Match any characters still remaining. // Match any characters still remaining.
if (index < str.length) { if (index < str.length) {
path += str.substr(index) path += str.substr(index);
} }
// If the path exists, push it onto the end. // If the path exists, push it onto the end.
if (path) { if (path) {
tokens.push(path) tokens.push(path);
} }
return tokens return tokens;
} }
var isarray = Array.isArray || function (arr) { var isarray = Array.isArray || function (arr) {
return Object.prototype.toString.call(arr) == '[object Array]'; return Object.prototype.toString.call(arr) === '[object Array]';
}; };
/** /**
@ -778,7 +852,7 @@ define([], function () {
* @return {String} * @return {String}
*/ */
function escapeString(str) { function escapeString(str) {
return str.replace(/([.+*?=^!:${}()[\]|\/])/g, '\\$1') return str.replace(/([.+*?=^!:${}()[\]|\/])/g, '\\$1');
} }
/** /**
@ -788,7 +862,7 @@ define([], function () {
* @return {String} * @return {String}
*/ */
function escapeGroup(group) { function escapeGroup(group) {
return group.replace(/([=!:$\/()])/g, '\\$1') return group.replace(/([=!:$\/()])/g, '\\$1');
} }
/** /**
@ -799,8 +873,8 @@ define([], function () {
* @return {RegExp} * @return {RegExp}
*/ */
function attachKeys(re, keys) { function attachKeys(re, keys) {
re.keys = keys re.keys = keys;
return re return re;
} }
/** /**
@ -810,7 +884,7 @@ define([], function () {
* @return {String} * @return {String}
*/ */
function flags(options) { function flags(options) {
return options.sensitive ? '' : 'i' return options.sensitive ? '' : 'i';
} }
/** /**
@ -822,7 +896,7 @@ define([], function () {
*/ */
function regexpToRegexp(path, keys) { function regexpToRegexp(path, keys) {
// Use a negative lookahead to match only capturing groups. // Use a negative lookahead to match only capturing groups.
var groups = path.source.match(/\((?!\?)/g) var groups = path.source.match(/\((?!\?)/g);
if (groups) { if (groups) {
for (var i = 0; i < groups.length; i++) { for (var i = 0; i < groups.length; i++) {
@ -833,11 +907,11 @@ define([], function () {
optional: false, optional: false,
repeat: false, repeat: false,
pattern: null pattern: null
}) });
} }
} }
return attachKeys(path, keys) return attachKeys(path, keys);
} }
/** /**
@ -849,15 +923,15 @@ define([], function () {
* @return {RegExp} * @return {RegExp}
*/ */
function arrayToRegexp(path, keys, options) { function arrayToRegexp(path, keys, options) {
var parts = [] var parts = [];
for (var i = 0; i < path.length; i++) { for (var i = 0; i < path.length; i++) {
parts.push(pathToRegexp(path[i], keys, options).source) parts.push(pathToRegexp(path[i], keys, options).source);
} }
var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options)) var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options));
return attachKeys(regexp, keys) return attachKeys(regexp, keys);
} }
/** /**
@ -869,17 +943,17 @@ define([], function () {
* @return {RegExp} * @return {RegExp}
*/ */
function stringToRegexp(path, keys, options) { function stringToRegexp(path, keys, options) {
var tokens = parse(path) var tokens = parse(path);
var re = tokensToRegExp(tokens, options) var re = tokensToRegExp(tokens, options);
// Attach keys back to the regexp. // Attach keys back to the regexp.
for (var i = 0; i < tokens.length; i++) { for (var i = 0; i < tokens.length; i++) {
if (typeof tokens[i] !== 'string') { if (typeof tokens[i] !== 'string') {
keys.push(tokens[i]) keys.push(tokens[i]);
} }
} }
return attachKeys(re, keys) return attachKeys(re, keys);
} }
/** /**
@ -891,39 +965,39 @@ define([], function () {
* @return {RegExp} * @return {RegExp}
*/ */
function tokensToRegExp(tokens, options) { function tokensToRegExp(tokens, options) {
options = options || {} options = options || {};
var strict = options.strict var strict = options.strict;
var end = options.end !== false var end = options.end !== false;
var route = '' var route = '';
var lastToken = tokens[tokens.length - 1] var lastToken = tokens[tokens.length - 1];
var endsWithSlash = typeof lastToken === 'string' && /\/$/.test(lastToken) var endsWithSlash = typeof lastToken === 'string' && /\/$/.test(lastToken);
// Iterate over the tokens and create our regexp string. // Iterate over the tokens and create our regexp string.
for (var i = 0; i < tokens.length; i++) { for (var i = 0; i < tokens.length; i++) {
var token = tokens[i] var token = tokens[i];
if (typeof token === 'string') { if (typeof token === 'string') {
route += escapeString(token) route += escapeString(token);
} else { } else {
var prefix = escapeString(token.prefix) var prefix = escapeString(token.prefix);
var capture = token.pattern var capture = token.pattern;
if (token.repeat) { if (token.repeat) {
capture += '(?:' + prefix + capture + ')*' capture += '(?:' + prefix + capture + ')*';
} }
if (token.optional) { if (token.optional) {
if (prefix) { if (prefix) {
capture = '(?:' + prefix + '(' + capture + '))?' capture = '(?:' + prefix + '(' + capture + '))?';
} else { } else {
capture = '(' + capture + ')?' capture = '(' + capture + ')?';
} }
} else { } else {
capture = prefix + '(' + capture + ')' capture = prefix + '(' + capture + ')';
} }
route += capture route += capture;
} }
} }
@ -932,18 +1006,18 @@ define([], function () {
// is valid at the end of a path match, not in the middle. This is important // is valid at the end of a path match, not in the middle. This is important
// in non-ending mode, where "/test/" shouldn't match "/test//route". // in non-ending mode, where "/test/" shouldn't match "/test//route".
if (!strict) { if (!strict) {
route = (endsWithSlash ? route.slice(0, -2) : route) + '(?:\\/(?=$))?' route = (endsWithSlash ? route.slice(0, -2) : route) + '(?:\\/(?=$))?';
} }
if (end) { if (end) {
route += '$' route += '$';
} else { } else {
// In non-ending mode, we need the capturing groups to match as much as // In non-ending mode, we need the capturing groups to match as much as
// possible by using a positive lookahead to the end or next path segment. // possible by using a positive lookahead to the end or next path segment.
route += strict && endsWithSlash ? '' : '(?=\\/|$)' route += strict && endsWithSlash ? '' : '(?=\\/|$)';
} }
return new RegExp('^' + route, flags(options)) return new RegExp('^' + route, flags(options));
} }
/** /**
@ -959,24 +1033,24 @@ define([], function () {
* @return {RegExp} * @return {RegExp}
*/ */
function pathToRegexp(path, keys, options) { function pathToRegexp(path, keys, options) {
keys = keys || [] keys = keys || [];
if (!isarray(keys)) { if (!isarray(keys)) {
options = keys options = keys;
keys = [] keys = [];
} else if (!options) { } else if (!options) {
options = {} options = {};
} }
if (path instanceof RegExp) { if (path instanceof RegExp) {
return regexpToRegexp(path, keys, options) return regexpToRegexp(path, keys, options);
} }
if (isarray(path)) { if (isarray(path)) {
return arrayToRegexp(path, keys, options) return arrayToRegexp(path, keys, options);
} }
return stringToRegexp(path, keys, options) return stringToRegexp(path, keys, options);
} }
return page; return page;

View file

@ -1,4 +1,5 @@
define(['shell', 'dialogHelper', 'loading', 'layoutManager', 'connectionManager', 'userSettings', 'embyRouter', 'globalize', 'emby-input', 'paper-icon-button-light', 'emby-select', 'material-icons', 'css!./../formdialog', 'emby-button'], function (shell, dialogHelper, loading, layoutManager, connectionManager, userSettings, embyRouter, globalize) { define(['shell', 'dialogHelper', 'loading', 'layoutManager', 'connectionManager', 'userSettings', 'embyRouter', 'globalize', 'emby-input', 'paper-icon-button-light', 'emby-select', 'material-icons', 'css!./../formdialog', 'emby-button'], function (shell, dialogHelper, loading, layoutManager, connectionManager, userSettings, embyRouter, globalize) {
'use strict';
var currentServerId; var currentServerId;

View file

@ -1,4 +1,5 @@
define(['actionsheet', 'datetime', 'playbackManager', 'globalize', 'appSettings'], function (actionsheet, datetime, playbackManager, globalize, appSettings) { define(['actionsheet', 'datetime', 'playbackManager', 'globalize', 'appSettings'], function (actionsheet, datetime, playbackManager, globalize, appSettings) {
'use strict';
var isMobileApp = window.Dashboard != null; var isMobileApp = window.Dashboard != null;
@ -14,10 +15,10 @@ define(['actionsheet', 'datetime', 'playbackManager', 'globalize', 'appSettings'
var serverId = item.ServerId; var serverId = item.ServerId;
var resumePositionTicks = item.UserData ? item.UserData.PlaybackPositionTicks : null; var resumePositionTicks = item.UserData ? item.UserData.PlaybackPositionTicks : null;
var showExternalPlayer = isMobileApp && mediaType == 'Video' && !isFolder && appSettings.enableExternalPlayers(); var showExternalPlayer = isMobileApp && mediaType === 'Video' && !isFolder && appSettings.enableExternalPlayers();
var playableItemId = itemType == 'Program' ? channelId : itemId; var playableItemId = itemType === 'Program' ? channelId : itemId;
if (!resumePositionTicks && mediaType != "Audio" && !isFolder && !showExternalPlayer) { if (!resumePositionTicks && mediaType !== "Audio" && !isFolder && !showExternalPlayer) {
playbackManager.play({ playbackManager.play({
ids: [playableItemId], ids: [playableItemId],
serverId: serverId serverId: serverId
@ -58,14 +59,14 @@ define(['actionsheet', 'datetime', 'playbackManager', 'globalize', 'appSettings'
}); });
} }
if (itemType == "Audio" || itemType == "MusicAlbum" || itemType == "MusicArtist" || itemType == "MusicGenre") { if (itemType === "Audio" || itemType === "MusicAlbum" || itemType === "MusicArtist" || itemType === "MusicGenre") {
menuItems.push({ menuItems.push({
name: globalize.translate('sharedcomponents#InstantMix'), name: globalize.translate('sharedcomponents#InstantMix'),
id: 'instantmix' id: 'instantmix'
}); });
} }
if (isFolder || itemType == "MusicArtist" || itemType == "MusicGenre") { if (isFolder || itemType === "MusicArtist" || itemType === "MusicGenre") {
menuItems.push({ menuItems.push({
name: globalize.translate('sharedcomponents#Shuffle'), name: globalize.translate('sharedcomponents#Shuffle'),
id: 'shuffle' id: 'shuffle'

View file

@ -1,4 +1,5 @@
define([], function () { define([], function () {
'use strict';
function replaceAll(str, find, replace) { function replaceAll(str, find, replace) {

View file

@ -1,4 +1,5 @@
define(['dialogHelper', 'layoutManager', 'scrollHelper', 'globalize', 'dom', 'require', 'material-icons', 'emby-button', 'paper-icon-button-light', 'emby-input', 'formDialogStyle'], function (dialogHelper, layoutManager, scrollHelper, globalize, dom, require) { define(['dialogHelper', 'layoutManager', 'scrollHelper', 'globalize', 'dom', 'require', 'material-icons', 'emby-button', 'paper-icon-button-light', 'emby-input', 'formDialogStyle'], function (dialogHelper, layoutManager, scrollHelper, globalize, dom, require) {
'use strict';
function setInputProperties(dlg, options) { function setInputProperties(dlg, options) {
var txtInput = dlg.querySelector('#txtInput'); var txtInput = dlg.querySelector('#txtInput');

View file

@ -1,4 +1,5 @@
define([], function () { define([], function () {
'use strict';
function getVideoQualityOptions(maxStreamingBitrate, videoWidth) { function getVideoQualityOptions(maxStreamingBitrate, videoWidth) {
@ -60,12 +61,12 @@
var option = options[i]; var option = options[i];
if (selectedIndex == -1 && option.bitrate <= maxStreamingBitrate) { if (selectedIndex === -1 && option.bitrate <= maxStreamingBitrate) {
selectedIndex = i; selectedIndex = i;
} }
} }
if (selectedIndex == -1) { if (selectedIndex === -1) {
selectedIndex = options.length - 1; selectedIndex = options.length - 1;
} }
@ -74,7 +75,7 @@
} }
return options; return options;
}; }
return { return {
getVideoQualityOptions: getVideoQualityOptions getVideoQualityOptions: getVideoQualityOptions

View file

@ -1,4 +1,5 @@
define(['dialogHelper', 'globalize', 'layoutManager', 'mediaInfo', 'apphost', 'connectionManager', 'require', 'loading', 'scrollHelper', 'datetime', 'imageLoader', 'recordingFields', 'events', 'emby-checkbox', 'emby-button', 'emby-collapse', 'emby-input', 'paper-icon-button-light', 'css!./../formdialog', 'css!./recordingcreator', 'material-icons'], function (dialogHelper, globalize, layoutManager, mediaInfo, appHost, connectionManager, require, loading, scrollHelper, datetime, imageLoader, recordingFields, events) { define(['dialogHelper', 'globalize', 'layoutManager', 'mediaInfo', 'apphost', 'connectionManager', 'require', 'loading', 'scrollHelper', 'datetime', 'imageLoader', 'recordingFields', 'events', 'emby-checkbox', 'emby-button', 'emby-collapse', 'emby-input', 'paper-icon-button-light', 'css!./../formdialog', 'css!./recordingcreator', 'material-icons'], function (dialogHelper, globalize, layoutManager, mediaInfo, appHost, connectionManager, require, loading, scrollHelper, datetime, imageLoader, recordingFields, events) {
'use strict';
var currentDialog; var currentDialog;
var closeAction; var closeAction;
@ -110,7 +111,7 @@
function executeCloseAction(action, programId, serverId) { function executeCloseAction(action, programId, serverId) {
if (action == 'play') { if (action === 'play') {
require(['playbackManager'], function (playbackManager) { require(['playbackManager'], function (playbackManager) {

View file

@ -1,4 +1,5 @@
define(['dialogHelper', 'globalize', 'layoutManager', 'mediaInfo', 'apphost', 'connectionManager', 'require', 'loading', 'scrollHelper', 'imageLoader', 'scrollStyles', 'emby-button', 'emby-collapse', 'emby-input', 'paper-icon-button-light', 'css!./../formdialog', 'css!./recordingcreator', 'material-icons'], function (dialogHelper, globalize, layoutManager, mediaInfo, appHost, connectionManager, require, loading, scrollHelper, imageLoader) { define(['dialogHelper', 'globalize', 'layoutManager', 'mediaInfo', 'apphost', 'connectionManager', 'require', 'loading', 'scrollHelper', 'imageLoader', 'scrollStyles', 'emby-button', 'emby-collapse', 'emby-input', 'paper-icon-button-light', 'css!./../formdialog', 'css!./recordingcreator', 'material-icons'], function (dialogHelper, globalize, layoutManager, mediaInfo, appHost, connectionManager, require, loading, scrollHelper, imageLoader) {
'use strict';
var currentDialog; var currentDialog;
var recordingDeleted = false; var recordingDeleted = false;

View file

@ -1,4 +1,5 @@
define(['globalize', 'connectionManager', 'require', 'loading', 'apphost', 'dom', 'recordingHelper', 'events', 'registrationServices', 'paper-icon-button-light', 'emby-button'], function (globalize, connectionManager, require, loading, appHost, dom, recordingHelper, events, registrationServices) { define(['globalize', 'connectionManager', 'require', 'loading', 'apphost', 'dom', 'recordingHelper', 'events', 'registrationServices', 'paper-icon-button-light', 'emby-button'], function (globalize, connectionManager, require, loading, appHost, dom, recordingHelper, events, registrationServices) {
'use strict';
function getRegistration(apiClient, programId, feature) { function getRegistration(apiClient, programId, feature) {
@ -114,7 +115,7 @@
parent.querySelector('.seriesRecordingButton .buttonText').innerHTML = globalize.translate('sharedcomponents#RecordSeries'); parent.querySelector('.seriesRecordingButton .buttonText').innerHTML = globalize.translate('sharedcomponents#RecordSeries');
} }
if (program.TimerId && program.Status != 'Cancelled') { if (program.TimerId && program.Status !== 'Cancelled') {
parent.querySelector('.btnManageRecording').classList.remove('visibilityHide'); parent.querySelector('.btnManageRecording').classList.remove('visibilityHide');
parent.querySelector('.singleRecordingButton .recordingIcon').classList.add('recordingIcon-active'); parent.querySelector('.singleRecordingButton .recordingIcon').classList.add('recordingIcon-active');
parent.querySelector('.singleRecordingButton .buttonText').innerHTML = globalize.translate('sharedcomponents#DoNotRecord'); parent.querySelector('.singleRecordingButton .buttonText').innerHTML = globalize.translate('sharedcomponents#DoNotRecord');
@ -142,7 +143,7 @@
}); });
} }
function recordingEditor(options) { function RecordingEditor(options) {
this.options = options; this.options = options;
this.embed(); this.embed();
} }
@ -155,7 +156,7 @@
var options = this.options; var options = this.options;
if (!this.TimerId || this.Status == 'Cancelled') { if (!this.TimerId || this.Status === 'Cancelled') {
return; return;
} }
@ -206,7 +207,7 @@
var button = dom.parentWithTag(e.target, 'BUTTON'); var button = dom.parentWithTag(e.target, 'BUTTON');
var isChecked = !button.querySelector('i').classList.contains('recordingIcon-active'); var isChecked = !button.querySelector('i').classList.contains('recordingIcon-active');
var hasEnabledTimer = this.TimerId && this.Status != 'Cancelled'; var hasEnabledTimer = this.TimerId && this.Status !== 'Cancelled';
if (isChecked) { if (isChecked) {
if (!hasEnabledTimer) { if (!hasEnabledTimer) {
@ -272,7 +273,7 @@
} }
} }
recordingEditor.prototype.embed = function () { RecordingEditor.prototype.embed = function () {
var self = this; var self = this;
@ -299,19 +300,19 @@
}); });
}; };
recordingEditor.prototype.hasChanged = function () { RecordingEditor.prototype.hasChanged = function () {
return this.changed; return this.changed;
}; };
recordingEditor.prototype.refresh = function () { RecordingEditor.prototype.refresh = function () {
fetchData(this); fetchData(this);
}; };
recordingEditor.prototype.destroy = function () { RecordingEditor.prototype.destroy = function () {
}; };
return recordingEditor; return RecordingEditor;
}); });

View file

@ -1,4 +1,5 @@
define(['globalize', 'loading'], function (globalize, loading) { define(['globalize', 'loading'], function (globalize, loading) {
'use strict';
function changeRecordingToSeries(apiClient, timerId, programId) { function changeRecordingToSeries(apiClient, timerId, programId) {
@ -129,7 +130,7 @@
var apiClient = connectionManager.getApiClient(serverId); var apiClient = connectionManager.getApiClient(serverId);
var hasTimer = timerId && timerStatus != 'Cancelled'; var hasTimer = timerId && timerStatus !== 'Cancelled';
if (seriesTimerId && hasTimer) { if (seriesTimerId && hasTimer) {

View file

@ -1,4 +1,5 @@
define(['dialogHelper', 'globalize', 'layoutManager', 'mediaInfo', 'apphost', 'connectionManager', 'require', 'loading', 'scrollHelper', 'imageLoader', 'datetime', 'scrollStyles', 'emby-button', 'emby-checkbox', 'emby-input', 'emby-select', 'paper-icon-button-light', 'css!./../formdialog', 'css!./recordingcreator', 'material-icons'], function (dialogHelper, globalize, layoutManager, mediaInfo, appHost, connectionManager, require, loading, scrollHelper, imageLoader, datetime) { define(['dialogHelper', 'globalize', 'layoutManager', 'mediaInfo', 'apphost', 'connectionManager', 'require', 'loading', 'scrollHelper', 'imageLoader', 'datetime', 'scrollStyles', 'emby-button', 'emby-checkbox', 'emby-input', 'emby-select', 'paper-icon-button-light', 'css!./../formdialog', 'css!./recordingcreator', 'material-icons'], function (dialogHelper, globalize, layoutManager, mediaInfo, appHost, connectionManager, require, loading, scrollHelper, imageLoader, datetime) {
'use strict';
var currentDialog; var currentDialog;
var recordingUpdated = false; var recordingUpdated = false;
@ -60,9 +61,9 @@
item.PrePaddingSeconds = form.querySelector('#txtPrePaddingMinutes').value * 60; item.PrePaddingSeconds = form.querySelector('#txtPrePaddingMinutes').value * 60;
item.PostPaddingSeconds = form.querySelector('#txtPostPaddingMinutes').value * 60; item.PostPaddingSeconds = form.querySelector('#txtPostPaddingMinutes').value * 60;
item.RecordAnyChannel = form.querySelector('.selectChannels').value == 'all'; item.RecordAnyChannel = form.querySelector('.selectChannels').value === 'all';
item.RecordAnyTime = form.querySelector('.selectAirTime').value == 'any'; item.RecordAnyTime = form.querySelector('.selectAirTime').value === 'any';
item.RecordNewOnly = form.querySelector('.selectShowType').value == 'new'; item.RecordNewOnly = form.querySelector('.selectShowType').value === 'new';
item.SkipEpisodesInLibrary = form.querySelector('.chkSkipEpisodesInLibrary').checked; item.SkipEpisodesInLibrary = form.querySelector('.chkSkipEpisodesInLibrary').checked;
item.KeepUpTo = form.querySelector('.selectKeepUpTo').value; item.KeepUpTo = form.querySelector('.selectKeepUpTo').value;
@ -116,9 +117,9 @@
var text; var text;
if (i == 0) { if (i === 0) {
text = globalize.translate('sharedcomponents#AsManyAsPossible'); text = globalize.translate('sharedcomponents#AsManyAsPossible');
} else if (i == 1) { } else if (i === 1) {
text = globalize.translate('sharedcomponents#ValueOneEpisode'); text = globalize.translate('sharedcomponents#ValueOneEpisode');
} else { } else {
text = globalize.translate('sharedcomponents#ValueEpisodeCount', i); text = globalize.translate('sharedcomponents#ValueEpisodeCount', i);

View file

@ -1,4 +1,5 @@
define(['shell', 'dialogHelper', 'loading', 'layoutManager', 'connectionManager', 'embyRouter', 'globalize', 'emby-input', 'emby-checkbox', 'paper-icon-button-light', 'emby-select', 'material-icons', 'css!./../formdialog', 'emby-button'], function (shell, dialogHelper, loading, layoutManager, connectionManager, embyRouter, globalize) { define(['shell', 'dialogHelper', 'loading', 'layoutManager', 'connectionManager', 'embyRouter', 'globalize', 'emby-input', 'emby-checkbox', 'paper-icon-button-light', 'emby-select', 'material-icons', 'css!./../formdialog', 'emby-button'], function (shell, dialogHelper, loading, layoutManager, connectionManager, embyRouter, globalize) {
'use strict';
function parentWithClass(elem, className) { function parentWithClass(elem, className) {
@ -71,7 +72,7 @@
var apiClient = connectionManager.getApiClient(options.serverId); var apiClient = connectionManager.getApiClient(options.serverId);
var replaceAllImages = dlg.querySelector('.chkReplaceImages').checked; var replaceAllImages = dlg.querySelector('.chkReplaceImages').checked;
var replaceAllMetadata = dlg.querySelector('#selectMetadataRefreshMode').value == 'all'; var replaceAllMetadata = dlg.querySelector('#selectMetadataRefreshMode').value === 'all';
options.itemIds.forEach(function (itemId) { options.itemIds.forEach(function (itemId) {
apiClient.refreshItem(itemId, { apiClient.refreshItem(itemId, {

View file

@ -1,4 +1,5 @@
define(['appSettings', 'loading', 'apphost', 'iapManager', 'events', 'shell', 'globalize', 'dialogHelper', 'connectionManager', 'layoutManager', 'emby-button'], function (appSettings, loading, appHost, iapManager, events, shell, globalize, dialogHelper, connectionManager, layoutManager) { define(['appSettings', 'loading', 'apphost', 'iapManager', 'events', 'shell', 'globalize', 'dialogHelper', 'connectionManager', 'layoutManager', 'emby-button'], function (appSettings, loading, appHost, iapManager, events, shell, globalize, dialogHelper, connectionManager, layoutManager) {
'use strict';
var currentDisplayingProductInfos = []; var currentDisplayingProductInfos = [];
var currentDisplayingResolve = null; var currentDisplayingResolve = null;
@ -150,14 +151,14 @@
console.log('validateFeature: ' + feature); console.log('validateFeature: ' + feature);
return iapManager.isUnlockedByDefault(feature).then(function () { return iapManager.isUnlockedByDefault(feature, options).then(function () {
return showPeriodicMessageIfNeeded(feature); return showPeriodicMessageIfNeeded(feature);
}, function () { }, function () {
var unlockableFeatureCacheKey = 'featurepurchased-' + feature; var unlockableFeatureCacheKey = 'featurepurchased-' + feature;
if (appSettings.get(unlockableFeatureCacheKey) == '1') { if (appSettings.get(unlockableFeatureCacheKey) === '1') {
return Promise.resolve(); return Promise.resolve();
} }
@ -173,7 +174,7 @@
return Promise.resolve(); return Promise.resolve();
} }
if (appSettings.get(unlockableCacheKey) == '1') { if (appSettings.get(unlockableCacheKey) === '1') {
return Promise.resolve(); return Promise.resolve();
} }
} }
@ -318,7 +319,7 @@
html += '</div>'; html += '</div>';
} }
if (dialogOptions.feature == 'playback') { if (dialogOptions.feature === 'playback') {
html += '<p>'; html += '<p>';
html += '<button is="emby-button" type="button" class="raised button-cancel block btnCloseDialog"><span>' + globalize.translate('sharedcomponents#ButtonPlayOneMinute') + '</span></button>'; html += '<button is="emby-button" type="button" class="raised button-cancel block btnCloseDialog"><span>' + globalize.translate('sharedcomponents#ButtonPlayOneMinute') + '</span></button>';
html += '</p>'; html += '</p>';
@ -356,7 +357,7 @@
dialogHelper.close(dlg); dialogHelper.close(dlg);
}; };
if (dialogOptions.feature == 'playback') { if (dialogOptions.feature === 'playback') {
alertText({ alertText({
text: globalize.translate('sharedcomponents#ThankYouForTryingEnjoyOneMinute'), text: globalize.translate('sharedcomponents#ThankYouForTryingEnjoyOneMinute'),
title: globalize.translate('sharedcomponents#HeaderTryPlayback') title: globalize.translate('sharedcomponents#HeaderTryPlayback')
@ -475,7 +476,7 @@
var featureId = this.getAttribute('data-featureid'); var featureId = this.getAttribute('data-featureid');
if (this.getAttribute('data-email') == 'true') { if (this.getAttribute('data-email') === 'true') {
getUserEmail().then(function (email) { getUserEmail().then(function (email) {
iapManager.beginPurchase(featureId, email); iapManager.beginPurchase(featureId, email);
}); });
@ -595,7 +596,7 @@
if (resolve && currentDisplayingProductInfos.filter(function (p) { if (resolve && currentDisplayingProductInfos.filter(function (p) {
return product.id == p.id; return product.id === p.id;
}).length) { }).length) {

View file

@ -1,17 +1,20 @@
define(function () { define(function () {
'use strict';
var requireCss = {}; var requireCss = {};
requireCss.normalize = function (name, normalize) { requireCss.normalize = function (name, normalize) {
if (name.substr(name.length - 4, 4) == '.css') if (name.substr(name.length - 4, 4) === '.css') {
name = name.substr(0, name.length - 4); name = name.substr(0, name.length - 4);
}
return normalize(name); return normalize(name);
} };
var importedCss = []; var importedCss = [];
function isLoaded(url) { function isLoaded(url) {
return importedCss.indexOf(url) != -1; return importedCss.indexOf(url) !== -1;
} }
function removeFromLoadHistory(url) { function removeFromLoadHistory(url) {
@ -19,7 +22,7 @@ define(function () {
url = url.toLowerCase(); url = url.toLowerCase();
importedCss = importedCss.filter(function (c) { importedCss = importedCss.filter(function (c) {
return url.indexOf(c.toLowerCase()) == -1; return url.indexOf(c.toLowerCase()) === -1;
}); });
} }
@ -29,13 +32,13 @@ define(function () {
var srch = '/emby-webcomponents/require/requirecss'; var srch = '/emby-webcomponents/require/requirecss';
var index = cssId.indexOf(srch); var index = cssId.indexOf(srch);
if (index != -1) { if (index !== -1) {
cssId = 'css' + cssId.substring(index + srch.length); cssId = 'css' + cssId.substring(index + srch.length);
} }
var url = cssId + '.css'; var url = cssId + '.css';
if (url.indexOf('://') == -1) { if (url.indexOf('://') === -1) {
url = config.baseUrl + url; url = config.baseUrl + url;
} }
@ -58,7 +61,7 @@ define(function () {
} else { } else {
load(); load();
} }
} };
window.requireCss = { window.requireCss = {
removeStylesheet: function (stylesheet) { removeStylesheet: function (stylesheet) {

View file

@ -1,4 +1,5 @@
define(function () { define(function () {
'use strict';
var importedFiles = []; var importedFiles = [];
@ -11,18 +12,18 @@ define(function () {
var url = cssId + '.html'; var url = cssId + '.html';
if (url.indexOf('://') == -1) { if (url.indexOf('://') === -1) {
url = config.baseUrl + url; url = config.baseUrl + url;
} }
if (importedFiles.indexOf(url) == -1) { if (importedFiles.indexOf(url) === -1) {
importedFiles.push(url); importedFiles.push(url);
var link = document.createElement('link'); var link = document.createElement('link');
link.rel = 'import'; link.rel = 'import';
if (config.urlArgs) { if (config.urlArgs) {
if (url.toLowerCase().indexOf('bower_') == -1 || url.toLowerCase().indexOf('emby-webcomponents') != -1) { if (url.toLowerCase().indexOf('bower_') === -1 || url.toLowerCase().indexOf('emby-webcomponents') !== -1) {
url = url + config.urlArgs(cssId, url); url = url + config.urlArgs(cssId, url);
} }
} }
@ -39,8 +40,9 @@ define(function () {
}, },
normalize: function (name, normalize) { normalize: function (name, normalize) {
if (name.substr(name.length - 5, 5) == '.html') if (name.substr(name.length - 5, 5) === '.html') {
name = name.substr(0, name.length - 5); name = name.substr(0, name.length - 5);
}
return normalize(name); return normalize(name);
} }

View file

@ -1,10 +1,11 @@
define(function () { define(function () {
'use strict';
return { return {
load: function (url, req, load, config) { load: function (url, req, load, config) {
if (url.indexOf('://') == -1) { if (url.indexOf('://') === -1) {
url = config.baseUrl + url; url = config.baseUrl + url;
} }

View file

@ -1,4 +1,5 @@
define(['loading', 'dom', 'viewManager', 'skinManager', 'pluginManager', 'backdrop', 'browser', 'pageJs', 'appSettings', 'apphost'], function (loading, dom, viewManager, skinManager, pluginManager, backdrop, browser, page, appSettings, appHost) { define(['loading', 'dom', 'viewManager', 'skinManager', 'pluginManager', 'backdrop', 'browser', 'pageJs', 'appSettings', 'apphost'], function (loading, dom, viewManager, skinManager, pluginManager, backdrop, browser, page, appSettings, appHost) {
'use strict';
var embyRouter = { var embyRouter = {
showLocalLogin: function (apiClient, serverId, manualLogin) { showLocalLogin: function (apiClient, serverId, manualLogin) {
@ -108,10 +109,10 @@ define(['loading', 'dom', 'viewManager', 'skinManager', 'pluginManager', 'backdr
var url = route.contentPath || route.path; var url = route.contentPath || route.path;
if (url.indexOf('://') == -1) { if (url.indexOf('://') === -1) {
// Put a slash at the beginning but make sure to avoid a double slash // Put a slash at the beginning but make sure to avoid a double slash
if (url.indexOf('/') != 0) { if (url.indexOf('/') !== 0) {
url = '/' + url; url = '/' + url;
} }
@ -162,7 +163,7 @@ define(['loading', 'dom', 'viewManager', 'skinManager', 'pluginManager', 'backdr
var currentViewLoadRequest; var currentViewLoadRequest;
function sendRouteToViewManager(ctx, next, route, controllerFactory) { function sendRouteToViewManager(ctx, next, route, controllerFactory) {
if (isDummyBackToHome && route.type == 'home') { if (isDummyBackToHome && route.type === 'home') {
isDummyBackToHome = false; isDummyBackToHome = false;
return; return;
} }
@ -198,7 +199,7 @@ define(['loading', 'dom', 'viewManager', 'skinManager', 'pluginManager', 'backdr
if (!isBackNav) { if (!isBackNav) {
// Don't force a new view for home due to the back menu // Don't force a new view for home due to the back menu
//if (route.type != 'home') { //if (route.type !== 'home') {
onNewViewNeeded(); onNewViewNeeded();
return; return;
//} //}
@ -269,7 +270,7 @@ define(['loading', 'dom', 'viewManager', 'skinManager', 'pluginManager', 'backdr
firstConnectionResult = null; firstConnectionResult = null;
if (firstResult.State != MediaBrowser.ConnectionState.SignedIn && !route.anonymous) { if (firstResult.State !== MediaBrowser.ConnectionState.SignedIn && !route.anonymous) {
handleConnectionResult(firstResult, loading); handleConnectionResult(firstResult, loading);
return; return;
@ -334,7 +335,7 @@ define(['loading', 'dom', 'viewManager', 'skinManager', 'pluginManager', 'backdr
function validateRole(apiClient, role) { function validateRole(apiClient, role) {
if (role == 'admin') { if (role === 'admin') {
return apiClient.getCurrentUser().then(function (user) { return apiClient.getCurrentUser().then(function (user) {
if (user.Policy.IsAdministrator) { if (user.Policy.IsAdministrator) {
@ -395,13 +396,13 @@ define(['loading', 'dom', 'viewManager', 'skinManager', 'pluginManager', 'backdr
var path = window.location.pathname || ''; var path = window.location.pathname || '';
var index = path.lastIndexOf('/'); var index = path.lastIndexOf('/');
if (index != -1) { if (index !== -1) {
path = path.substring(index); path = path.substring(index);
} else { } else {
path = '/' + path; path = '/' + path;
} }
if (!path || path == '/') { if (!path || path === '/') {
path = '/index.html'; path = '/index.html';
} }
@ -411,7 +412,7 @@ define(['loading', 'dom', 'viewManager', 'skinManager', 'pluginManager', 'backdr
var baseRoute = window.location.href.split('?')[0].replace(getRequestFile(), ''); var baseRoute = window.location.href.split('?')[0].replace(getRequestFile(), '');
// support hashbang // support hashbang
baseRoute = baseRoute.split('#')[0]; baseRoute = baseRoute.split('#')[0];
if (baseRoute.lastIndexOf('/') == baseRoute.length - 1) { if (baseRoute.lastIndexOf('/') === baseRoute.length - 1) {
baseRoute = baseRoute.substring(0, baseRoute.length - 1); baseRoute = baseRoute.substring(0, baseRoute.length - 1);
} }
function baseUrl() { function baseUrl() {
@ -431,7 +432,7 @@ define(['loading', 'dom', 'viewManager', 'skinManager', 'pluginManager', 'backdr
var index = currentPath.indexOf('?'); var index = currentPath.indexOf('?');
var search = ''; var search = '';
if (index != -1) { if (index !== -1) {
search = currentPath.substring(index); search = currentPath.substring(index);
} }
@ -444,11 +445,12 @@ define(['loading', 'dom', 'viewManager', 'skinManager', 'pluginManager', 'backdr
var regex = new RegExp(regexS, "i"); var regex = new RegExp(regexS, "i");
var results = regex.exec(url || getWindowLocationSearch()); var results = regex.exec(url || getWindowLocationSearch());
if (results == null) if (results == null) {
return ""; return "";
else } else {
return decodeURIComponent(results[1].replace(/\+/g, " ")); return decodeURIComponent(results[1].replace(/\+/g, " "));
} }
}
function back() { function back() {
@ -462,7 +464,7 @@ define(['loading', 'dom', 'viewManager', 'skinManager', 'pluginManager', 'backdr
return false; return false;
} }
if (curr.type == 'home') { if (curr.type === 'home') {
return false; return false;
} }
return page.canGoBack(); return page.canGoBack();
@ -472,10 +474,10 @@ define(['loading', 'dom', 'viewManager', 'skinManager', 'pluginManager', 'backdr
var baseRoute = baseUrl(); var baseRoute = baseUrl();
path = path.replace(baseRoute, ''); path = path.replace(baseRoute, '');
if (currentRouteInfo && currentRouteInfo.path == path) { if (currentRouteInfo && currentRouteInfo.path === path) {
// can't use this with home right now due to the back menu // can't use this with home right now due to the back menu
if (currentRouteInfo.route.type != 'home') { if (currentRouteInfo.route.type !== 'home') {
loading.hide(); loading.hide();
return Promise.resolve(); return Promise.resolve();
} }
@ -511,7 +513,7 @@ define(['loading', 'dom', 'viewManager', 'skinManager', 'pluginManager', 'backdr
var skin = skinManager.getCurrentSkin(); var skin = skinManager.getCurrentSkin();
var homeRoute = skin.getRoutes().filter(function (r) { var homeRoute = skin.getRoutes().filter(function (r) {
return r.type == 'home'; return r.type === 'home';
})[0]; })[0];
return show(pluginManager.mapRoute(skin, homeRoute)); return show(pluginManager.mapRoute(skin, homeRoute));
@ -528,7 +530,7 @@ define(['loading', 'dom', 'viewManager', 'skinManager', 'pluginManager', 'backdr
}); });
} else { } else {
if (arguments.length == 2) { if (arguments.length === 2) {
options = arguments[1]; options = arguments[1];
} }
skinManager.getCurrentSkin().showItem(item, options); skinManager.getCurrentSkin().showItem(item, options);
@ -543,7 +545,7 @@ define(['loading', 'dom', 'viewManager', 'skinManager', 'pluginManager', 'backdr
var skin = skinManager.getCurrentSkin(); var skin = skinManager.getCurrentSkin();
var homeRoute = skin.getRoutes().filter(function (r) { var homeRoute = skin.getRoutes().filter(function (r) {
return r.type == 'video-osd'; return r.type === 'video-osd';
})[0]; })[0];
return show(pluginManager.mapRoute(skin, homeRoute)); return show(pluginManager.mapRoute(skin, homeRoute));
@ -572,13 +574,13 @@ define(['loading', 'dom', 'viewManager', 'skinManager', 'pluginManager', 'backdr
backgroundContainer = document.querySelector('.backgroundContainer'); backgroundContainer = document.querySelector('.backgroundContainer');
} }
if (level == 'full' || level == 2) { if (level === 'full' || level === 2) {
backdrop.clear(true); backdrop.clear(true);
document.documentElement.classList.add('transparentDocument'); document.documentElement.classList.add('transparentDocument');
backgroundContainer.classList.add('backgroundContainer-transparent'); backgroundContainer.classList.add('backgroundContainer-transparent');
backdropContainer.classList.add('hide'); backdropContainer.classList.add('hide');
} }
else if (level == 'backdrop' || level == 1) { else if (level === 'backdrop' || level === 1) {
backdrop.externalBackdrop(true); backdrop.externalBackdrop(true);
document.documentElement.classList.add('transparentDocument'); document.documentElement.classList.add('transparentDocument');
backgroundContainer.classList.add('backgroundContainer-transparent'); backgroundContainer.classList.add('backgroundContainer-transparent');
@ -600,7 +602,7 @@ define(['loading', 'dom', 'viewManager', 'skinManager', 'pluginManager', 'backdr
function setBaseRoute() { function setBaseRoute() {
var baseRoute = window.location.pathname.replace(getRequestFile(), ''); var baseRoute = window.location.pathname.replace(getRequestFile(), '');
if (baseRoute.lastIndexOf('/') == baseRoute.length - 1) { if (baseRoute.lastIndexOf('/') === baseRoute.length - 1) {
baseRoute = baseRoute.substring(0, baseRoute.length - 1); baseRoute = baseRoute.substring(0, baseRoute.length - 1);
} }

View file

@ -1,4 +1,5 @@
define(['browser', 'layoutManager', 'dom', 'focusManager', 'scrollStyles'], function (browser, layoutManager, dom, focusManager) { define(['browser', 'layoutManager', 'dom', 'focusManager', 'scrollStyles'], function (browser, layoutManager, dom, focusManager) {
'use strict';
/** /**
* Return type of the value. * Return type of the value.
@ -65,7 +66,7 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'scrollStyles'], func
var scrollerFactory = function (frame, options) { var scrollerFactory = function (frame, options) {
// Extend options // Extend options
var o = extend({}, { var o = Object.assign({}, {
slidee: null, // Selector, DOM element, or jQuery object with DOM element representing SLIDEE. slidee: null, // Selector, DOM element, or jQuery object with DOM element representing SLIDEE.
horizontal: false, // Switch to horizontal mode. horizontal: false, // Switch to horizontal mode.
@ -483,7 +484,6 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'scrollStyles'], func
if (type(item) === 'boolean') { if (type(item) === 'boolean') {
immediate = item; immediate = item;
item = undefined; item = undefined;
v
} }
if (item === undefined) { if (item === undefined) {
@ -539,14 +539,6 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'scrollStyles'], func
to('center', item, immediate); to('center', item, immediate);
}; };
function extend() {
for (var i = 1; i < arguments.length; i++)
for (var key in arguments[i])
if (arguments[i].hasOwnProperty(key))
arguments[0][key] = arguments[i][key];
return arguments[0];
}
/** /**
* Initialize continuous movement. * Initialize continuous movement.
* *
@ -642,7 +634,9 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'scrollStyles'], func
dragging.path = sqrt(pow(dragging.pathX, 2) + pow(dragging.pathY, 2)); dragging.path = sqrt(pow(dragging.pathX, 2) + pow(dragging.pathY, 2));
dragging.delta = o.horizontal ? dragging.pathX : dragging.pathY; dragging.delta = o.horizontal ? dragging.pathX : dragging.pathY;
if (!dragging.released && dragging.path < 1) return; if (!dragging.released && dragging.path < 1) {
return;
}
// We haven't decided whether this is a drag or not... // We haven't decided whether this is a drag or not...
if (!dragging.init) { if (!dragging.init) {
@ -721,7 +715,7 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'scrollStyles'], func
while (element) { while (element) {
if (interactiveElements.indexOf(element.tagName) != -1) { if (interactiveElements.indexOf(element.tagName) !== -1) {
return true; return true;
} }
@ -832,9 +826,9 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'scrollStyles'], func
} }
function onFrameClick(e) { function onFrameClick(e) {
if (e.which == 1) { if (e.which === 1) {
var focusableParent = focusManager.focusableParent(e.target); var focusableParent = focusManager.focusableParent(e.target);
if (focusableParent && focusableParent != document.activeElement) { if (focusableParent && focusableParent !== document.activeElement) {
focusableParent.focus(); focusableParent.focus();
} }
} }
@ -851,7 +845,9 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'scrollStyles'], func
} }
// Disallow multiple instances on the same element // Disallow multiple instances on the same element
if (frame.sly) throw new Error('There is already a Sly instance on this element'); if (frame.sly) {
throw new Error('There is already a Sly instance on this element');
}
frame.sly = true; frame.sly = true;

View file

@ -1,4 +1,5 @@
define(['focusManager', 'dom', 'scrollStyles'], function (focusManager, dom) { define(['focusManager', 'dom', 'scrollStyles'], function (focusManager, dom) {
'use strict';
function getBoundingClientRect(elem) { function getBoundingClientRect(elem) {

View file

@ -1,4 +1,5 @@
define(['connectionManager', 'events'], function (connectionManager, events) { define(['connectionManager', 'events'], function (connectionManager, events) {
'use strict';
var serverNotifications = {}; var serverNotifications = {};
@ -8,7 +9,7 @@ define(['connectionManager', 'events'], function (connectionManager, events) {
if (msg.MessageType === "UserDataChanged") { if (msg.MessageType === "UserDataChanged") {
if (msg.Data.UserId == apiClient.getCurrentUserId()) { if (msg.Data.UserId === apiClient.getCurrentUserId()) {
for (var i = 0, length = msg.Data.UserDataList.length; i < length; i++) { for (var i = 0, length = msg.Data.UserDataList.length; i < length; i++) {
events.trigger(serverNotifications, 'UserDataChanged', [apiClient, msg.Data.UserDataList[i]]); events.trigger(serverNotifications, 'UserDataChanged', [apiClient, msg.Data.UserDataList[i]]);

View file

@ -1,6 +1,9 @@
var connectionManager; (function () {
'use strict';
function getApiClient(serverId) { var connectionManager;
function getApiClient(serverId) {
if (connectionManager) { if (connectionManager) {
return Promise.resolve(connectionManager.getApiClient(serverId)); return Promise.resolve(connectionManager.getApiClient(serverId));
@ -9,9 +12,9 @@ function getApiClient(serverId) {
//importScripts('serviceworker-cache-polyfill.js'); //importScripts('serviceworker-cache-polyfill.js');
return Promise.reject(); return Promise.reject();
} }
function executeAction(action, data, serverId) { function executeAction(action, data, serverId) {
return getApiClient(serverId).then(function (apiClient) { return getApiClient(serverId).then(function (apiClient) {
@ -26,9 +29,9 @@ function executeAction(action, data, serverId) {
return Promise.resolve(); return Promise.resolve();
} }
}); });
} }
self.addEventListener('notificationclick', function (event) { self.addEventListener('notificationclick', function (event) {
var notification = event.notification; var notification = event.notification;
notification.close(); notification.close();
@ -45,4 +48,5 @@ self.addEventListener('notificationclick', function (event) {
event.waitUntil(executeAction(action, data, serverId)); event.waitUntil(executeAction(action, data, serverId));
}, false); }, false);
})();

View file

@ -1,4 +1,6 @@
self.addEventListener('sync', function (event) { self.addEventListener('sync', function (event) {
if (event.tag == 'emby-sync') { 'use strict';
if (event.tag === 'emby-sync') {
} }
}); });

View file

@ -1,4 +1,5 @@
define(['connectionManager', 'sharingMenu', 'loading'], function (connectionManager, sharingMenu, loading) { define(['connectionManager', 'sharingMenu', 'loading'], function (connectionManager, sharingMenu, loading) {
'use strict';
function onSharingCancel(options, apiClient) { function onSharingCancel(options, apiClient) {

View file

@ -1,4 +1,5 @@
define(['dialogHelper', 'layoutManager', 'globalize', './social-share-kit-1.0.10/dist/js/social-share-kit.min', 'css!./social-share-kit-1.0.10/dist/css/social-share-kit.css', 'emby-button'], function (dialogHelper, layoutManager, globalize) { define(['dialogHelper', 'layoutManager', 'globalize', './social-share-kit-1.0.10/dist/js/social-share-kit.min', 'css!./social-share-kit-1.0.10/dist/css/social-share-kit.css', 'emby-button'], function (dialogHelper, layoutManager, globalize) {
'use strict';
function showMenu(options) { function showMenu(options) {
@ -24,7 +25,7 @@
html += '<a href="#" class="ssk ssk-tumblr" style="color:#fff;"></a>'; html += '<a href="#" class="ssk ssk-tumblr" style="color:#fff;"></a>';
html += '</div>'; html += '</div>';
dlg.style['padding'] = '.5em 1.5em 1.5em'; dlg.style.padding = '.5em 1.5em 1.5em';
dlg.innerHTML = html; dlg.innerHTML = html;

View file

@ -1,4 +1,5 @@
define([], function () { define([], function () {
'use strict';
return { return {
openUrl: function (url) { openUrl: function (url) {

View file

@ -1,4 +1,5 @@
define(['playbackManager', 'inputManager', 'connectionManager', 'embyRouter', 'globalize', 'loading', 'dom', 'recordingHelper'], function (playbackManager, inputManager, connectionManager, embyRouter, globalize, loading, dom, recordingHelper) { define(['playbackManager', 'inputManager', 'connectionManager', 'embyRouter', 'globalize', 'loading', 'dom', 'recordingHelper'], function (playbackManager, inputManager, connectionManager, embyRouter, globalize, loading, dom, recordingHelper) {
'use strict';
function playAllFromHere(card, serverId, queue) { function playAllFromHere(card, serverId, queue) {
@ -10,7 +11,7 @@ define(['playbackManager', 'inputManager', 'connectionManager', 'embyRouter', 'g
var foundCard = false; var foundCard = false;
for (var i = 0, length = cards.length; i < length; i++) { for (var i = 0, length = cards.length; i < length; i++) {
if (cards[i] == card) { if (cards[i] === card) {
foundCard = true; foundCard = true;
} }
if (foundCard) { if (foundCard) {
@ -58,7 +59,7 @@ define(['playbackManager', 'inputManager', 'connectionManager', 'embyRouter', 'g
}).indexOf(startItemId); }).indexOf(startItemId);
if (index == -1) { if (index === -1) {
index = 0; index = 0;
} }
@ -82,7 +83,7 @@ define(['playbackManager', 'inputManager', 'connectionManager', 'embyRouter', 'g
function showItem(item, options) { function showItem(item, options) {
if (item.Type == 'Photo') { if (item.Type === 'Photo') {
showSlideshow(item.Id, item.ServerId); showSlideshow(item.Id, item.ServerId);
return; return;
@ -108,10 +109,10 @@ define(['playbackManager', 'inputManager', 'connectionManager', 'embyRouter', 'g
var apiClient = connectionManager.getApiClient(serverId); var apiClient = connectionManager.getApiClient(serverId);
if (type == 'Timer') { if (type === 'Timer') {
return apiClient.getLiveTvTimer(id); return apiClient.getLiveTvTimer(id);
} }
if (type == 'SeriesTimer') { if (type === 'SeriesTimer') {
return apiClient.getLiveTvSeriesTimer(id); return apiClient.getLiveTvSeriesTimer(id);
} }
return apiClient.getItem(apiClient.getCurrentUserId(), id); return apiClient.getItem(apiClient.getCurrentUserId(), id);
@ -142,12 +143,14 @@ define(['playbackManager', 'inputManager', 'connectionManager', 'embyRouter', 'g
}, options || {})).then(function (result) { }, options || {})).then(function (result) {
if (result.command == 'playallfromhere' || result.command == 'queueallfromhere') { var itemsContainer;
if (result.command === 'playallfromhere' || result.command === 'queueallfromhere') {
executeAction(card, options.positionTo, result.command); executeAction(card, options.positionTo, result.command);
} }
else if (result.command == 'removefromplaylist' || result.command == 'removefromcollection') { else if (result.command === 'removefromplaylist' || result.command === 'removefromcollection') {
var itemsContainer = options.itemsContainer || dom.parentWithAttribute(card, 'is', 'emby-itemscontainer'); itemsContainer = options.itemsContainer || dom.parentWithAttribute(card, 'is', 'emby-itemscontainer');
if (itemsContainer) { if (itemsContainer) {
itemsContainer.dispatchEvent(new CustomEvent('needsrefresh', { itemsContainer.dispatchEvent(new CustomEvent('needsrefresh', {
@ -157,9 +160,9 @@ define(['playbackManager', 'inputManager', 'connectionManager', 'embyRouter', 'g
})); }));
} }
} }
else if (result.command == 'canceltimer') { else if (result.command === 'canceltimer') {
var itemsContainer = options.itemsContainer || dom.parentWithAttribute(card, 'is', 'emby-itemscontainer'); itemsContainer = options.itemsContainer || dom.parentWithAttribute(card, 'is', 'emby-itemscontainer');
if (itemsContainer) { if (itemsContainer) {
itemsContainer.dispatchEvent(new CustomEvent('timercancelled', { itemsContainer.dispatchEvent(new CustomEvent('timercancelled', {
@ -185,7 +188,7 @@ define(['playbackManager', 'inputManager', 'connectionManager', 'embyRouter', 'g
SeriesId: card.getAttribute('data-seriesid'), SeriesId: card.getAttribute('data-seriesid'),
ServerId: card.getAttribute('data-serverid'), ServerId: card.getAttribute('data-serverid'),
MediaType: card.getAttribute('data-mediatype'), MediaType: card.getAttribute('data-mediatype'),
IsFolder: card.getAttribute('data-isfolder') == 'true', IsFolder: card.getAttribute('data-isfolder') === 'true',
UserData: { UserData: {
PlaybackPositionTicks: parseInt(card.getAttribute('data-positionticks') || '0') PlaybackPositionTicks: parseInt(card.getAttribute('data-positionticks') || '0')
} }
@ -222,23 +225,23 @@ define(['playbackManager', 'inputManager', 'connectionManager', 'embyRouter', 'g
var serverId = item.ServerId; var serverId = item.ServerId;
var type = item.Type; var type = item.Type;
if (action == 'link') { if (action === 'link') {
showItem(item, { showItem(item, {
context: card.getAttribute('data-context') context: card.getAttribute('data-context')
}); });
} }
else if (action == 'programdialog') { else if (action === 'programdialog') {
showProgramDialog(item); showProgramDialog(item);
} }
else if (action == 'instantmix') { else if (action === 'instantmix') {
playbackManager.instantMix(id, serverId); playbackManager.instantMix(id, serverId);
} }
else if (action == 'play') { else if (action === 'play') {
var startPositionTicks = parseInt(card.getAttribute('data-positionticks') || '0'); var startPositionTicks = parseInt(card.getAttribute('data-positionticks') || '0');
@ -249,25 +252,25 @@ define(['playbackManager', 'inputManager', 'connectionManager', 'embyRouter', 'g
}); });
} }
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.currentPlaylistIndex(parseInt(card.getAttribute('data-index'))); playbackManager.currentPlaylistIndex(parseInt(card.getAttribute('data-index')));
} }
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' ?
{ {
shuffle: false, shuffle: false,
instantMix: false, instantMix: false,
@ -283,17 +286,17 @@ define(['playbackManager', 'inputManager', 'connectionManager', 'embyRouter', 'g
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);
} }
} }
@ -315,7 +318,7 @@ define(['playbackManager', 'inputManager', 'connectionManager', 'embyRouter', 'g
var serverId = apiClient.serverInfo().Id; var serverId = apiClient.serverInfo().Id;
if (item.Type == 'Timer') { if (item.Type === 'Timer') {
if (item.ProgramId) { if (item.ProgramId) {
require(['recordingCreator'], function (recordingCreator) { require(['recordingCreator'], function (recordingCreator) {
@ -338,9 +341,9 @@ define(['playbackManager', 'inputManager', 'connectionManager', 'embyRouter', 'g
function onRecordCommand(serverId, id, type, timerId, seriesTimerId) { function onRecordCommand(serverId, id, type, timerId, seriesTimerId) {
if (type == 'Program' || timerId || seriesTimerId) { if (type === 'Program' || timerId || seriesTimerId) {
var programId = type == 'Program' ? id : null; var programId = type === 'Program' ? id : null;
recordingHelper.toggle(serverId, programId, timerId, seriesTimerId); recordingHelper.toggle(serverId, programId, timerId, seriesTimerId);
} }
} }
@ -373,7 +376,7 @@ define(['playbackManager', 'inputManager', 'connectionManager', 'embyRouter', 'g
var cmd = e.detail.command; var cmd = e.detail.command;
if (cmd == 'play' || cmd == 'record' || cmd == 'menu' || cmd == 'info') { if (cmd === 'play' || cmd === 'record' || cmd === 'menu' || cmd === 'info') {
var card = dom.parentWithClass(e.target, 'itemAction'); var card = dom.parentWithClass(e.target, 'itemAction');
if (card) { if (card) {

View file

@ -1,4 +1,5 @@
define(['dialogHelper', 'inputManager', 'connectionManager', 'layoutManager', 'focusManager', 'apphost', 'loading', 'css!./style', 'material-icons', 'paper-icon-button-light'], function (dialogHelper, inputmanager, connectionManager, layoutManager, focusManager, appHost, loading) { define(['dialogHelper', 'inputManager', 'connectionManager', 'layoutManager', 'focusManager', 'apphost', 'loading', 'css!./style', 'material-icons', 'paper-icon-button-light'], function (dialogHelper, inputmanager, connectionManager, layoutManager, focusManager, appHost, loading) {
'use strict';
function getImageUrl(item, options, apiClient) { function getImageUrl(item, options, apiClient) {
@ -15,7 +16,7 @@ define(['dialogHelper', 'inputManager', 'connectionManager', 'layoutManager', 'f
return apiClient.getScaledImageUrl(item.Id, options); return apiClient.getScaledImageUrl(item.Id, options);
} }
if (options.type == 'Primary') { if (options.type === 'Primary') {
if (item.AlbumId && item.AlbumPrimaryImageTag) { if (item.AlbumId && item.AlbumPrimaryImageTag) {
options.tag = item.AlbumPrimaryImageTag; options.tag = item.AlbumPrimaryImageTag;
@ -57,7 +58,7 @@ define(['dialogHelper', 'inputManager', 'connectionManager', 'layoutManager', 'f
return getBackdropImageUrl(item, imageOptions, apiClient); return getBackdropImageUrl(item, imageOptions, apiClient);
} else { } else {
if (item.MediaType == 'Photo' && original) { if (item.MediaType === 'Photo' && original) {
return apiClient.getUrl("Items/" + item.Id + "/Download", { return apiClient.getUrl("Items/" + item.Id + "/Download", {
api_key: apiClient.accessToken() api_key: apiClient.accessToken()
}); });
@ -351,7 +352,7 @@ define(['dialogHelper', 'inputManager', 'connectionManager', 'layoutManager', 'f
function playPause() { function playPause() {
var paused = dlg.querySelector('.btnSlideshowPause i').innerHTML != "pause"; var paused = dlg.querySelector('.btnSlideshowPause i').innerHTML !== "pause";
if (paused) { if (paused) {
play(); play();
} else { } else {
@ -387,6 +388,7 @@ define(['dialogHelper', 'inputManager', 'connectionManager', 'layoutManager', 'f
} }
var _osdOpen = false; var _osdOpen = false;
function isOsdOpen() { function isOsdOpen() {
return _osdOpen; return _osdOpen;
} }
@ -413,10 +415,12 @@ define(['dialogHelper', 'inputManager', 'connectionManager', 'layoutManager', 'f
} }
var hideTimeout; var hideTimeout;
function startHideTimer() { function startHideTimer() {
stopHideTimer(); stopHideTimer();
hideTimeout = setTimeout(hideOsd, 4000); hideTimeout = setTimeout(hideOsd, 4000);
} }
function stopHideTimer() { function stopHideTimer() {
if (hideTimeout) { if (hideTimeout) {
clearTimeout(hideTimeout); clearTimeout(hideTimeout);
@ -437,7 +441,8 @@ define(['dialogHelper', 'inputManager', 'connectionManager', 'layoutManager', 'f
var keyframes = [ var keyframes = [
{ transform: 'translate3d(0,' + elem.offsetHeight + 'px,0)', opacity: '.3', offset: 0 }, { transform: 'translate3d(0,' + elem.offsetHeight + 'px,0)', opacity: '.3', offset: 0 },
{ transform: 'translate3d(0,0,0)', opacity: '1', offset: 1 }]; { transform: 'translate3d(0,0,0)', opacity: '1', offset: 1 }
];
var timing = { duration: 300, iterations: 1, easing: 'ease-out' }; var timing = { duration: 300, iterations: 1, easing: 'ease-out' };
elem.animate(keyframes, timing).onfinish = function () { elem.animate(keyframes, timing).onfinish = function () {
focusManager.focus(elem.querySelector('.btnSlideshowPause')); focusManager.focus(elem.querySelector('.btnSlideshowPause'));
@ -455,7 +460,8 @@ define(['dialogHelper', 'inputManager', 'connectionManager', 'layoutManager', 'f
var keyframes = [ var keyframes = [
{ transform: 'translate3d(0,0,0)', opacity: '1', offset: 0 }, { transform: 'translate3d(0,0,0)', opacity: '1', offset: 0 },
{ transform: 'translate3d(0,' + elem.offsetHeight + 'px,0)', opacity: '.3', offset: 1 }]; { transform: 'translate3d(0,' + elem.offsetHeight + 'px,0)', opacity: '.3', offset: 1 }
];
var timing = { duration: 300, iterations: 1, easing: 'ease-out' }; var timing = { duration: 300, iterations: 1, easing: 'ease-out' };
elem.animate(keyframes, timing).onfinish = function () { elem.animate(keyframes, timing).onfinish = function () {
elem.classList.add('hide'); elem.classList.add('hide');
@ -465,6 +471,7 @@ define(['dialogHelper', 'inputManager', 'connectionManager', 'layoutManager', 'f
} }
var lastMouseMoveData; var lastMouseMoveData;
function onMouseMove(e) { function onMouseMove(e) {
var eventX = e.screenX || 0; var eventX = e.screenX || 0;
@ -573,7 +580,8 @@ define(['dialogHelper', 'inputManager', 'connectionManager', 'layoutManager', 'f
var keyframes = [ var keyframes = [
{ opacity: '0', offset: 0 }, { opacity: '0', offset: 0 },
{ opacity: '1', offset: 1 }]; { opacity: '1', offset: 1 }
];
var timing = { duration: 1200, iterations: 1 }; var timing = { duration: 1200, iterations: 1 };
newCardImageContainer.animate(keyframes, timing).onfinish = onAnimationFinished; newCardImageContainer.animate(keyframes, timing).onfinish = onAnimationFinished;
} else { } else {
@ -615,5 +623,5 @@ define(['dialogHelper', 'inputManager', 'connectionManager', 'layoutManager', 'f
dialogHelper.close(dialog); dialogHelper.close(dialog);
} }
}; };
} };
}); });

View file

@ -1,4 +1,5 @@
define(['dialogHelper', 'require', 'layoutManager', 'globalize', 'userSettings', 'connectionManager', 'loading', 'focusManager', 'dom', 'apphost', 'emby-select', 'listViewStyle', 'paper-icon-button-light', 'css!./../formdialog', 'material-icons', 'css!./subtitleeditor', 'emby-button'], function (dialogHelper, require, layoutManager, globalize, userSettings, connectionManager, loading, focusManager, dom, appHost) { define(['dialogHelper', 'require', 'layoutManager', 'globalize', 'userSettings', 'connectionManager', 'loading', 'focusManager', 'dom', 'apphost', 'emby-select', 'listViewStyle', 'paper-icon-button-light', 'css!./../formdialog', 'material-icons', 'css!./subtitleeditor', 'emby-button'], function (dialogHelper, require, layoutManager, globalize, userSettings, connectionManager, loading, focusManager, dom, appHost) {
'use strict';
var currentItem; var currentItem;
var hasChanges; var hasChanges;
@ -104,7 +105,7 @@
var subs = streams.filter(function (s) { var subs = streams.filter(function (s) {
return s.Type == 'Subtitle'; return s.Type === 'Subtitle';
}); });
var html = ''; var html = '';
@ -223,7 +224,7 @@
context.querySelector('.noSearchResults').classList.add('hide'); context.querySelector('.noSearchResults').classList.add('hide');
var moreIcon = appHost.moreIcon == 'dots-horiz' ? '&#xE5D3;' : '&#xE5D4;'; var moreIcon = appHost.moreIcon === 'dots-horiz' ? '&#xE5D3;' : '&#xE5D4;';
for (var i = 0, length = results.length; i < length; i++) { for (var i = 0, length = results.length; i < length; i++) {
@ -231,7 +232,7 @@
var provider = result.ProviderName; var provider = result.ProviderName;
if (provider != lastProvider) { if (provider !== lastProvider) {
if (i > 0) { if (i > 0) {
html += '</div>'; html += '</div>';
@ -336,7 +337,7 @@
loading.hide(); loading.hide();
} }
if (typeof itemId == 'string') { if (typeof itemId === 'string') {
apiClient.getItem(apiClient.getCurrentUserId(), itemId).then(onGetItem); apiClient.getItem(apiClient.getCurrentUserId(), itemId).then(onGetItem);
} }
else { else {

View file

@ -1,4 +1,5 @@
define(['apphost', 'globalize', 'connectionManager', 'layoutManager', 'shell', 'focusManager', 'scrollHelper', 'appSettings', 'paper-icon-button-light', 'formDialogStyle'], function (appHost, globalize, connectionManager, layoutManager, shell, focusManager, scrollHelper, appSettings) { define(['apphost', 'globalize', 'connectionManager', 'layoutManager', 'shell', 'focusManager', 'scrollHelper', 'appSettings', 'paper-icon-button-light', 'formDialogStyle'], function (appHost, globalize, connectionManager, layoutManager, shell, focusManager, scrollHelper, appSettings) {
'use strict';
var currentDialogOptions; var currentDialogOptions;
@ -57,7 +58,7 @@
dialogHelper.close(dlg); dialogHelper.close(dlg);
require(['toast'], function (toast) { require(['toast'], function (toast) {
var msg = target == apiClient.deviceId() ? globalize.translate('sharedcomponents#DownloadScheduled') : globalize.translate('sharedcomponents#SyncJobCreated'); var msg = target === apiClient.deviceId() ? globalize.translate('sharedcomponents#DownloadScheduled') : globalize.translate('sharedcomponents#SyncJobCreated');
toast(msg); toast(msg);
}); });
@ -109,7 +110,7 @@
require(['toast'], function (toast) { require(['toast'], function (toast) {
var msg = targetId == apiClient.deviceId() ? globalize.translate('sharedcomponents#DownloadScheduled') : globalize.translate('sharedcomponents#SyncJobCreated'); var msg = targetId === apiClient.deviceId() ? globalize.translate('sharedcomponents#DownloadScheduled') : globalize.translate('sharedcomponents#SyncJobCreated');
toast(msg); toast(msg);
}); });
@ -189,7 +190,7 @@
var targetContainerClass = options.isLocalSync ? ' hide' : ''; var targetContainerClass = options.isLocalSync ? ' hide' : '';
if (options.showName || dialogOptions.Options.indexOf('Name') != -1) { if (options.showName || dialogOptions.Options.indexOf('Name') !== -1) {
html += '<div class="inputContainer' + targetContainerClass + '">'; html += '<div class="inputContainer' + targetContainerClass + '">';
html += '<input is="emby-input" type="text" id="txtSyncJobName" class="txtSyncJobName" required="required" label="' + globalize.translate('sharedcomponents#LabelSyncJobName') + '"/>'; html += '<input is="emby-input" type="text" id="txtSyncJobName" class="txtSyncJobName" required="required" label="' + globalize.translate('sharedcomponents#LabelSyncJobName') + '"/>';
@ -206,7 +207,7 @@
html += targets.map(function (t) { html += targets.map(function (t) {
var isSelected = t.Id == appInfo.deviceId; var isSelected = t.Id === appInfo.deviceId;
var selectedHtml = isSelected ? ' selected="selected"' : ''; var selectedHtml = isSelected ? ' selected="selected"' : '';
return '<option' + selectedHtml + ' value="' + t.Id + '">' + t.Name + '</option>'; return '<option' + selectedHtml + ' value="' + t.Id + '">' + t.Name + '</option>';
@ -235,7 +236,7 @@
html += '<input is="emby-input" type="number" step=".1" min=".1" id="txtBitrate" label="' + globalize.translate('sharedcomponents#LabelBitrateMbps') + '"/>'; html += '<input is="emby-input" type="number" step=".1" min=".1" id="txtBitrate" label="' + globalize.translate('sharedcomponents#LabelBitrateMbps') + '"/>';
html += '</div>'; html += '</div>';
if (dialogOptions.Options.indexOf('UnwatchedOnly') != -1) { if (dialogOptions.Options.indexOf('UnwatchedOnly') !== -1) {
html += '<div class="checkboxContainer checkboxContainer-withDescription">'; html += '<div class="checkboxContainer checkboxContainer-withDescription">';
html += '<label>'; html += '<label>';
html += '<input is="emby-checkbox" type="checkbox" id="chkUnwatchedOnly"/>'; html += '<input is="emby-checkbox" type="checkbox" id="chkUnwatchedOnly"/>';
@ -245,7 +246,7 @@
html += '</div>'; html += '</div>';
} }
if (dialogOptions.Options.indexOf('SyncNewContent') != -1) { if (dialogOptions.Options.indexOf('SyncNewContent') !== -1) {
html += '<div class="checkboxContainer checkboxContainer-withDescription">'; html += '<div class="checkboxContainer checkboxContainer-withDescription">';
html += '<label>'; html += '<label>';
html += '<input is="emby-checkbox" type="checkbox" id="chkSyncNewContent"/>'; html += '<input is="emby-checkbox" type="checkbox" id="chkSyncNewContent"/>';
@ -255,7 +256,7 @@
html += '</div>'; html += '</div>';
} }
if (dialogOptions.Options.indexOf('ItemLimit') != -1) { if (dialogOptions.Options.indexOf('ItemLimit') !== -1) {
html += '<div class="inputContainer">'; html += '<div class="inputContainer">';
html += '<input is="emby-input" type="number" step="1" min="1" id="txtItemLimit" label="' + globalize.translate('sharedcomponents#LabelItemLimit') + '"/>'; html += '<input is="emby-input" type="number" step="1" min="1" id="txtItemLimit" label="' + globalize.translate('sharedcomponents#LabelItemLimit') + '"/>';
html += '<div class="fieldDescription">' + globalize.translate('sharedcomponents#LabelItemLimitHelp') + '</div>'; html += '<div class="fieldDescription">' + globalize.translate('sharedcomponents#LabelItemLimitHelp') + '</div>';
@ -330,16 +331,16 @@
var firstItem = (options.items || [])[0] || {}; var firstItem = (options.items || [])[0] || {};
if (firstItem.Type == 'Audio') { if (firstItem.Type === 'Audio') {
return true; return true;
} }
if (firstItem.Type == 'MusicAlbum') { if (firstItem.Type === 'MusicAlbum') {
return true; return true;
} }
if (firstItem.Type == 'MusicArtist') { if (firstItem.Type === 'MusicArtist') {
return true; return true;
} }
if (firstItem.Type == 'MusicGenre') { if (firstItem.Type === 'MusicGenre') {
return true; return true;
} }
@ -492,17 +493,17 @@
var options = currentDialogOptions || {}; var options = currentDialogOptions || {};
var option = (options.ProfileOptions || []).filter(function (o) { var option = (options.ProfileOptions || []).filter(function (o) {
return o.Id == profileId; return o.Id === profileId;
})[0]; })[0];
var qualityOptions = options.QualityOptions || []; var qualityOptions = options.QualityOptions || [];
if (option) { if (option) {
form.querySelector('.profileDescription').innerHTML = option.Description || ''; form.querySelector('.profileDescription').innerHTML = option.Description || '';
setQualityFieldVisible(form, qualityOptions.length > 0 && option.EnableQualityOptions && options.Options.indexOf('Quality') != -1); setQualityFieldVisible(form, qualityOptions.length > 0 && option.EnableQualityOptions && options.Options.indexOf('Quality') !== -1);
} else { } else {
form.querySelector('.profileDescription').innerHTML = ''; form.querySelector('.profileDescription').innerHTML = '';
setQualityFieldVisible(form, qualityOptions.length > 0 && options.Options.indexOf('Quality') != -1); setQualityFieldVisible(form, qualityOptions.length > 0 && options.Options.indexOf('Quality') !== -1);
} }
} }
@ -510,7 +511,7 @@
var options = currentDialogOptions || {}; var options = currentDialogOptions || {};
var option = (options.QualityOptions || []).filter(function (o) { var option = (options.QualityOptions || []).filter(function (o) {
return o.Id == qualityId; return o.Id === qualityId;
})[0]; })[0];
var qualityDescription = form.querySelector('.qualityDescription'); var qualityDescription = form.querySelector('.qualityDescription');
@ -524,7 +525,7 @@
var fldBitrate = form.querySelector('.fldBitrate'); var fldBitrate = form.querySelector('.fldBitrate');
var txtBitrate = form.querySelector('#txtBitrate'); var txtBitrate = form.querySelector('#txtBitrate');
if (qualityId == 'custom') { if (qualityId === 'custom') {
if (fldBitrate) { if (fldBitrate) {
fldBitrate.classList.remove('hide'); fldBitrate.classList.remove('hide');
@ -549,7 +550,7 @@
var fldProfile = form.querySelector('.fldProfile'); var fldProfile = form.querySelector('.fldProfile');
var selectProfile = form.querySelector('#selectProfile'); var selectProfile = form.querySelector('#selectProfile');
if (options.ProfileOptions.length && options.Options.indexOf('Profile') != -1) { if (options.ProfileOptions.length && options.Options.indexOf('Profile') !== -1) {
if (fldProfile) { if (fldProfile) {
fldProfile.classList.remove('hide'); fldProfile.classList.remove('hide');
} }

View file

@ -1,4 +1,5 @@
define(['playbackManager', 'userSettings'], function (playbackManager, userSettings) { define(['playbackManager', 'userSettings'], function (playbackManager, userSettings) {
'use strict';
var currentOwnerId; var currentOwnerId;
var currentThemeIds = []; var currentThemeIds = [];
@ -39,7 +40,7 @@ define(['playbackManager', 'userSettings'], function (playbackManager, userSetti
function enabled(mediaType) { function enabled(mediaType) {
if (mediaType == 'Video') { if (mediaType === 'Video') {
return userSettings.enableThemeVideos(); return userSettings.enableThemeVideos();
} }
@ -55,7 +56,7 @@ define(['playbackManager', 'userSettings'], function (playbackManager, userSetti
var ownerId = themeMediaResult.ThemeVideosResult.Items.length ? themeMediaResult.ThemeVideosResult.OwnerId : themeMediaResult.ThemeSongsResult.OwnerId; var ownerId = themeMediaResult.ThemeVideosResult.Items.length ? themeMediaResult.ThemeVideosResult.OwnerId : themeMediaResult.ThemeSongsResult.OwnerId;
if (ownerId != currentOwnerId) { if (ownerId !== currentOwnerId) {
var items = themeMediaResult.ThemeVideosResult.Items.length ? themeMediaResult.ThemeVideosResult.Items : themeMediaResult.ThemeSongsResult.Items; var items = themeMediaResult.ThemeVideosResult.Items.length ? themeMediaResult.ThemeVideosResult.Items : themeMediaResult.ThemeSongsResult.Items;

View file

@ -1,4 +1,5 @@
define(['css!./toast'], function () { define(['css!./toast'], function () {
'use strict';
function remove(elem) { function remove(elem) {

View file

@ -1,4 +1,4 @@
define(['browser', 'css!./viewcontainer-lite'], function (browser) { define(['browser', 'dom', 'css!./viewcontainer-lite'], function (browser, dom) {
'use strict'; 'use strict';
var mainAnimatedPages = document.querySelector('.mainAnimatedPages'); var mainAnimatedPages = document.querySelector('.mainAnimatedPages');
@ -140,7 +140,16 @@ define(['browser', 'css!./viewcontainer-lite'], function (browser) {
currentAnimations = animations; currentAnimations = animations;
setTimeout(resolve, duration); var onAnimationComplete = function () {
dom.removeEventListener(newAnimatedPage, 'animationend', onAnimationComplete, {
once: true
});
resolve();
};
dom.addEventListener(newAnimatedPage, 'animationend', onAnimationComplete, {
once: true
});
}); });
} }
@ -161,7 +170,16 @@ define(['browser', 'css!./viewcontainer-lite'], function (browser) {
currentAnimations = animations; currentAnimations = animations;
setTimeout(resolve, duration); var onAnimationComplete = function () {
dom.removeEventListener(newAnimatedPage, 'animationend', onAnimationComplete, {
once: true
});
resolve();
};
dom.addEventListener(newAnimatedPage, 'animationend', onAnimationComplete, {
once: true
});
}); });
} }

View file

@ -1,4 +1,5 @@
define(['dom'], function (dom) { define(['dom'], function (dom) {
'use strict';
/** /**
* Copyright 2012, Digital Fusion * Copyright 2012, Digital Fusion

View file

@ -1,4 +1,5 @@
define(['playbackManager'], function (playbackManager) { define(['playbackManager'], function (playbackManager) {
'use strict';
function setActiveDevice(name) { function setActiveDevice(name) {
return function () { return function () {
@ -12,5 +13,5 @@
return setActiveDevice(result.properties.devicename); return setActiveDevice(result.properties.devicename);
} }
return; return;
} };
}); });

View file

@ -1,4 +1,5 @@
define(['inputManager'], function (inputManager) { define(['inputManager'], function (inputManager) {
'use strict';
function disableDisplayMirror() { function disableDisplayMirror() {
return function () { return function () {
@ -11,10 +12,9 @@
switch (result.item.deviceid) { switch (result.item.deviceid) {
case 'displaymirroring': case 'displaymirroring':
return disableDisplayMirror(); return disableDisplayMirror();
break;
default: default:
return; return;
} }
} };
}); });

View file

@ -1,4 +1,5 @@
define(['inputManager'], function (inputManager) { define(['inputManager'], function (inputManager) {
'use strict';
function enableDisplayMirror() { function enableDisplayMirror() {
return function () { return function () {
@ -11,10 +12,9 @@
switch (result.item.deviceid) { switch (result.item.deviceid) {
case 'displaymirroring': case 'displaymirroring':
return enableDisplayMirror(); return enableDisplayMirror();
break;
default: default:
return; return;
} }
} };
}); });

View file

@ -1,4 +1,5 @@
define(['connectionManager', 'playbackManager', 'globalize'], function (connectionManager, playbackManager, globalize) { define(['connectionManager', 'playbackManager', 'globalize'], function (connectionManager, playbackManager, globalize) {
'use strict';
/// <summary> Play items. </summary> /// <summary> Play items. </summary>
/// <param name="items"> The items. </param> /// <param name="items"> The items. </param>
@ -54,7 +55,6 @@
return function () { return function () {
var query = { var query = {
Limit: result.item.limit || 100, Limit: result.item.limit || 100,
UserId: result.userId, UserId: result.userId,
ExcludeLocationTypes: "Virtual" ExcludeLocationTypes: "Virtual"
@ -98,5 +98,5 @@
playItems(queryResult.Items, result.item.shuffle); playItems(queryResult.Items, result.item.shuffle);
}); });
}; };
} };
}); });

View file

@ -1,10 +1,11 @@
define(['inputManager'], function (inputManager) { define(['inputManager'], function (inputManager) {
'use strict';
return function (result) { return function (result) {
switch (result.item.deviceid) { switch (result.item.deviceid) {
default: default:
return; return;
} }
} };
}); });

View file

@ -1,4 +1,5 @@
define(['inputManager', 'connectionManager', 'embyRouter'], function (inputManager, connectionManager, embyRouter) { define(['inputManager', 'connectionManager', 'embyRouter'], function (inputManager, connectionManager, embyRouter) {
'use strict';
function getMusicCommand(result) { function getMusicCommand(result) {
return function () { return function () {
@ -46,17 +47,17 @@
return function () { return function () {
var act = result.item.menuid; var act = result.item.menuid;
if (act) { if (act) {
if (act.indexOf('livetv') != -1) { if (act.indexOf('livetv') !== -1) {
inputManager.trigger('livetv'); inputManager.trigger('livetv');
} else if (act.indexOf('guide') != -1) { } else if (act.indexOf('guide') !== -1) {
inputManager.trigger('guide'); inputManager.trigger('guide');
} else if (act.indexOf('channels') != -1) { } else if (act.indexOf('channels') !== -1) {
inputManager.trigger('livetv'); inputManager.trigger('livetv');
} else if (act.indexOf('recordings') != -1) { } else if (act.indexOf('recordings') !== -1) {
inputManager.trigger('recordedtv'); inputManager.trigger('recordedtv');
} else if (act.indexOf('scheduled') != -1) { } else if (act.indexOf('scheduled') !== -1) {
inputManager.trigger('recordedtv'); inputManager.trigger('recordedtv');
} else if (act.indexOf('series') != -1) { } else if (act.indexOf('series') !== -1) {
inputManager.trigger('recordedtv'); inputManager.trigger('recordedtv');
} else { } else {
inputManager.trigger('livetv'); inputManager.trigger('livetv');
@ -83,18 +84,18 @@
return function () { return function () {
var act = result.item.menuid; var act = result.item.menuid;
if (act) { if (act) {
if (act.indexOf('home') != -1) { if (act.indexOf('home') !== -1) {
inputManager.trigger('home'); inputManager.trigger('home');
} }
else if (act.indexOf('nextup') != -1) { else if (act.indexOf('nextup') !== -1) {
inputManager.trigger('nextup'); inputManager.trigger('nextup');
} }
else if (act.indexOf('favorites') != -1) { else if (act.indexOf('favorites') !== -1) {
inputManager.trigger('favorites'); inputManager.trigger('favorites');
} else if (act.indexOf('upcoming') != -1) { } else if (act.indexOf('upcoming') !== -1) {
inputManager.trigger('upcomingtv'); inputManager.trigger('upcomingtv');
} }
else if (act.indexOf('nowplaying') != -1) { else if (act.indexOf('nowplaying') !== -1) {
inputManager.trigger('nowplaying'); inputManager.trigger('nowplaying');
} }
else { else {
@ -129,5 +130,5 @@
return; return;
} }
} };
}); });

View file

@ -1,4 +1,5 @@
define(['inputManager'], function (inputManager) { define(['inputManager'], function (inputManager) {
'use strict';
function toggleDisplayMirror() { function toggleDisplayMirror() {
return function () { return function () {
@ -11,10 +12,9 @@
switch (result.item.deviceid) { switch (result.item.deviceid) {
case 'displaymirroring': case 'displaymirroring':
return toggleDisplayMirror(); return toggleDisplayMirror();
break;
default: default:
return; return;
} }
} };
}); });

View file

@ -1,6 +1,7 @@
// <date>09.10.2015</date> // <date>09.10.2015</date>
// <summary>grammarprocessor class</summary> // <summary>grammarprocessor class</summary>
define([], function () { define([], function () {
'use strict';
/// <summary> The named register exponent. </summary> /// <summary> The named register exponent. </summary>
var NamedRegExp = function (pattern, string) { var NamedRegExp = function (pattern, string) {
@ -24,14 +25,15 @@ define([], function () {
for (var i = 0, len = regexp.length; i < len; i++) { for (var i = 0, len = regexp.length; i < len; i++) {
if (finalMatch[(i + 1)] !== false) { if (finalMatch[(i + 1)] !== false) {
var mth = finalMatch[(i + 1)]; var mth = finalMatch[(i + 1)];
if (mth) if (mth) {
mth = mth.trim().toLowerCase(); mth = mth.trim().toLowerCase();
}
regexp[i].value = mth; regexp[i].value = mth;
} }
} }
} } else {
else
regexp = null; regexp = null;
}
return regexp; return regexp;
}; };
@ -91,8 +93,9 @@ define([], function () {
var isvalid = false; var isvalid = false;
commandgroups.map(function (group) { commandgroups.map(function (group) {
if (isvalid) if (isvalid) {
return; return;
}
if (group.defaultValues && group.defaultValues.length > 0) { if (group.defaultValues && group.defaultValues.length > 0) {
group.defaultValues.map(function (item) { group.defaultValues.map(function (item) {
@ -105,14 +108,19 @@ define([], function () {
group.items.map(function (item) { group.items.map(function (item) {
var regex = NamedRegExp(item.command, text); var regex = NamedRegExp(item.command, text);
if (!regex && item.altcommand) if (!regex && item.altcommand) {
regex = NamedRegExp(item.altcommand, text) regex = NamedRegExp(item.altcommand, text);
}
if (regex && regex.length > 0) { if (regex && regex.length > 0) {
//Group data //Group data
if (group.groupid) result.groupid = group.groupid; if (group.groupid) {
if (group.name) result.name = group.name; result.groupid = group.groupid;
}
if (group.name) {
result.name = group.name;
}
if (group.defaultValues) { if (group.defaultValues) {
result.defaultValues.sourceid = group.defaultValues.sourceid || result.defaultValues.sourceid; result.defaultValues.sourceid = group.defaultValues.sourceid || result.defaultValues.sourceid;
result.defaultValues.deviceid = group.defaultValues.deviceid || result.defaultValues.deviceid; result.defaultValues.deviceid = group.defaultValues.deviceid || result.defaultValues.deviceid;
@ -128,7 +136,9 @@ define([], function () {
if (group.name) result.name = group.name; if (group.name) {
result.name = group.name;
}
//Item data //Item data
var usegroupDefault = checkItemProperty(item.usedefaultvalues, result.item.usedefaultvalues); var usegroupDefault = checkItemProperty(item.usedefaultvalues, result.item.usedefaultvalues);
@ -181,15 +191,17 @@ define([], function () {
break; break;
} }
if (result.text) if (result.text) {
result.text = result.text.replace(regresult.value, '').trim(); result.text = result.text.replace(regresult.value, '').trim();
}
}); });
isvalid = true; isvalid = true;
} }
if (isvalid) if (isvalid) {
return; return;
}
}); });
} }
}); });
@ -205,11 +217,13 @@ define([], function () {
var idx = -1; var idx = -1;
idx = actions.map(function (e) { return e.name; }).indexOf(name); idx = actions.map(function (e) { return e.name; }).indexOf(name);
if (idx > -1) if (idx > -1) {
return actions[idx]; return actions[idx];
else }
else {
return null; return null;
} }
}
/// <summary> Check item property. </summary> /// <summary> Check item property. </summary>
/// <param name="property"> The property. </param> /// <param name="property"> The property. </param>
@ -218,23 +232,27 @@ define([], function () {
/// <param name="groupDefaultValue"> The group default value. </param> /// <param name="groupDefaultValue"> The group default value. </param>
/// <returns> . </returns> /// <returns> . </returns>
function checkItemProperty(property, itemDefaultValue, useGroupDefaultValue, groupDefaultValue) { function checkItemProperty(property, itemDefaultValue, useGroupDefaultValue, groupDefaultValue) {
if (property) if (property) {
return property; return property;
}
if (useGroupDefaultValue && groupDefaultValue) if (useGroupDefaultValue && groupDefaultValue) {
return groupDefaultValue; return groupDefaultValue;
}
return itemDefaultValue; return itemDefaultValue;
} }
return function (commandgroups, text) { return function (commandgroups, text) {
var result;
if (commandgroups) { if (commandgroups) {
var result = processcommands(text, commandgroups); result = processcommands(text, commandgroups);
console.log(text); console.log(text);
console.log(commandgroups); console.log(commandgroups);
} }
return result; return result;
} };
}); });

View file

@ -1,6 +1,7 @@
// <date>09.10.2015</date> // <date>09.10.2015</date>
// <summary>voicecommands class</summary> // <summary>voicecommands class</summary>
define(['require'], function (require) { define(['require'], function (require) {
'use strict';
/// <summary> Process the command. </summary> /// <summary> Process the command. </summary>
/// <param name="commandPath"> Full pathname of the command file. </param> /// <param name="commandPath"> Full pathname of the command file. </param>
@ -31,30 +32,22 @@ define(['require'], function (require) {
case 'show': case 'show':
return processCommand('./commands/showcommands.js', result); return processCommand('./commands/showcommands.js', result);
break;
case 'play': case 'play':
return processCommand('./commands/playcommands.js', result); return processCommand('./commands/playcommands.js', result);
break;
case 'shuffle': case 'shuffle':
return processCommand('./commands/playcommands.js', result); return processCommand('./commands/playcommands.js', result);
break;
case 'search': case 'search':
return processCommand('./commands/searchcommands.js', result); return processCommand('./commands/searchcommands.js', result);
break;
case 'control': case 'control':
return processCommand('./commands/controlcommands.js', result); return processCommand('./commands/controlcommands.js', result);
break;
case 'enable': case 'enable':
return processCommand('./commands/enablecommands.js', result); return processCommand('./commands/enablecommands.js', result);
break;
case 'disable': case 'disable':
return processCommand('./commands/disablecommands.js', result); return processCommand('./commands/disablecommands.js', result);
break;
case 'toggle': case 'toggle':
return processCommand('./commands/togglecommands.js', result); return processCommand('./commands/togglecommands.js', result);
break;
default: default:
return Promise.reject(); return Promise.reject();
} }
} };
}); });

View file

@ -1,4 +1,5 @@
define(['dialogHelper', 'voiceReceiver', 'voiceProcessor', 'globalize', 'emby-button', 'css!./voice.css', 'material-icons', 'css!./../formdialog'], function (dialogHelper, voicereceiver, voiceprocessor, globalize) { define(['dialogHelper', 'voiceReceiver', 'voiceProcessor', 'globalize', 'emby-button', 'css!./voice.css', 'material-icons', 'css!./../formdialog'], function (dialogHelper, voicereceiver, voiceprocessor, globalize) {
'use strict';
var lang = 'en-US'; var lang = 'en-US';
@ -33,7 +34,7 @@ define(['dialogHelper', 'voiceReceiver', 'voiceProcessor', 'globalize', 'emby-bu
var commands = []; var commands = [];
commandGroups.map(function (group) { commandGroups.map(function (group) {
if ((group.items && group.items.length > 0) && (groupid == group.groupid || groupid == '')) { if ((group.items && group.items.length > 0) && (groupid !== group.groupid || groupid === '')) {
group.items.map(function (item) { group.items.map(function (item) {
@ -63,12 +64,15 @@ define(['dialogHelper', 'voiceReceiver', 'voiceProcessor', 'globalize', 'emby-bu
idx = commandgroups.map(function (e) { return e.groupid; }).indexOf(groupid); idx = commandgroups.map(function (e) { return e.groupid; }).indexOf(groupid);
if (idx > -1) if (idx > -1) {
return commandgroups[idx]; return commandgroups[idx];
else }
else {
return null; return null;
} else }
} else {
return null; return null;
}
}); });
} }
@ -99,6 +103,10 @@ define(['dialogHelper', 'voiceReceiver', 'voiceProcessor', 'globalize', 'emby-bu
var isNewDialog = false; var isNewDialog = false;
var dlg; var dlg;
function onCancelClick() {
dialogHelper.close(dlg);
}
if (!currentDialog) { if (!currentDialog) {
isNewDialog = true; isNewDialog = true;
@ -166,10 +174,6 @@ define(['dialogHelper', 'voiceReceiver', 'voiceProcessor', 'globalize', 'emby-bu
currentDialog = null; currentDialog = null;
}); });
function onCancelClick() {
dialogHelper.close(dlg);
}
var closeButtons = dlg.querySelectorAll('.btnCancelVoiceInput'); var closeButtons = dlg.querySelectorAll('.btnCancelVoiceInput');
for (var i = 0, length = closeButtons.length; i < length; i++) { for (var i = 0, length = closeButtons.length; i < length; i++) {
closeButtons[i].addEventListener('click', onCancelClick); closeButtons[i].addEventListener('click', onCancelClick);
@ -214,8 +218,9 @@ define(['dialogHelper', 'voiceReceiver', 'voiceProcessor', 'globalize', 'emby-bu
/// <returns> . </returns> /// <returns> . </returns>
function showUnrecognizedCommandHelp(command) { function showUnrecognizedCommandHelp(command) {
//speak("I don't understend this command"); //speak("I don't understend this command");
if (command) if (command) {
currentDialog.querySelector('.voiceInputText').innerText = command; currentDialog.querySelector('.voiceInputText').innerText = command;
}
currentDialog.querySelector('.unrecognizedCommand').classList.remove('hide'); currentDialog.querySelector('.unrecognizedCommand').classList.remove('hide');
currentDialog.querySelector('.defaultVoiceHelp').classList.add('hide'); currentDialog.querySelector('.defaultVoiceHelp').classList.add('hide');
} }
@ -225,11 +230,13 @@ define(['dialogHelper', 'voiceReceiver', 'voiceProcessor', 'globalize', 'emby-bu
/// <returns> . </returns> /// <returns> . </returns>
function showCommands(result) { function showCommands(result) {
//speak('Hello, what can I do for you?'); //speak('Hello, what can I do for you?');
if (result) if (result) {
showVoiceHelp(result.groupid, result.name); showVoiceHelp(result.groupid, result.name);
else }
else {
showVoiceHelp(); showVoiceHelp();
} }
}
function resetDialog() { function resetDialog() {
if (currentDialog) { if (currentDialog) {
@ -257,7 +264,7 @@ define(['dialogHelper', 'voiceReceiver', 'voiceProcessor', 'globalize', 'emby-bu
}, 1); }, 1);
}, function (result) { }, function (result) {
if (result.error == 'group') { if (result.error === 'group') {
showVoiceHelp(result.item.groupid, result.groupName); showVoiceHelp(result.item.groupid, result.groupName);
return; return;
} }

View file

@ -1,4 +1,5 @@
define(['./voicecommands.js', './grammarprocessor.js', 'require'], function (voicecommands, grammarprocessor, require) { define(['./voicecommands.js', './grammarprocessor.js', 'require'], function (voicecommands, grammarprocessor, require) {
'use strict';
var commandgroups; var commandgroups;

View file

@ -1,4 +1,5 @@
define(['events'], function (events) { define(['events'], function (events) {
'use strict';
var receiver = { var receiver = {
@ -13,7 +14,7 @@
var srch = 'jarvis'; var srch = 'jarvis';
var index = text.toLowerCase().indexOf(srch); var index = text.toLowerCase().indexOf(srch);
if (index != -1) { if (index !== -1) {
text = text.substring(index + srch.length); text = text.substring(index + srch.length);
} else { } else {
return null; return null;
@ -30,11 +31,13 @@
return new Promise(function (resolve, reject) { return new Promise(function (resolve, reject) {
cancelListener(); cancelListener();
var recognition = new (window.SpeechRecognition || var recognitionObj = window.SpeechRecognition ||
window.webkitSpeechRecognition || window.webkitSpeechRecognition ||
window.mozSpeechRecognition || window.mozSpeechRecognition ||
window.oSpeechRecognition || window.oSpeechRecognition ||
window.msSpeechRecognition)(); window.msSpeechRecognition;
var recognition = new recognitionObj();
recognition.lang = options.lang; recognition.lang = options.lang;
recognition.continuous = options.continuous || false; recognition.continuous = options.continuous || false;

View file

@ -155,7 +155,6 @@ define(['appStorage', 'browser'], function (appStorage, browser) {
return features; return features;
}(); }();
var appInfo; var appInfo;
var version = window.dashboardVersion || '3.0'; var version = window.dashboardVersion || '3.0';

View file

@ -98,6 +98,11 @@
var commands = []; var commands = [];
commands.push({
name: globalize.translate('ButtonRemoteControl'),
id: 'remotecontrol'
});
// manage server, metadata manager, reports, sync to other devices // manage server, metadata manager, reports, sync to other devices
if (currentUser.Policy.IsAdministrator) { if (currentUser.Policy.IsAdministrator) {
commands.push({ commands.push({
@ -118,11 +123,6 @@
}); });
} }
commands.push({
name: globalize.translate('ButtonRemoteControl'),
id: 'remotecontrol'
});
if (Dashboard.isConnectMode()) { if (Dashboard.isConnectMode()) {
commands.push({ commands.push({
name: globalize.translate('HeaderSelectServer'), name: globalize.translate('HeaderSelectServer'),

View file

@ -1,9 +1,7 @@
define([], function () { define([], function () {
function goNext() { function goNext() {
require(['scripts/wizardcontroller'], function (wizardcontroller) { Dashboard.navigate('wizardagreement.html');
wizardcontroller.navigateToService();
});
} }
function loadDownloadInfo(view) { function loadDownloadInfo(view) {

View file

@ -107,6 +107,12 @@
<div id="castContent" is="emby-itemscontainer" class="itemsContainer"></div> <div id="castContent" is="emby-itemscontainer" class="itemsContainer"></div>
<button is="emby-button" type="button" class="raised more morePeople hide">${ButtonMore}</button> <button is="emby-button" type="button" class="raised more morePeople hide">${ButtonMore}</button>
</div> </div>
<div id="seriesScheduleSection" class="detailSection hide">
<h1>
${HeaderUpcomingOnTV}
</h1>
<div id="seriesScheduleList" is="emby-itemscontainer" class="itemsContainer vertical-list"></div>
</div>
<div class="detailSection photoInfo hide"> <div class="detailSection photoInfo hide">
<h1> <h1>

View file

@ -446,6 +446,11 @@
page.querySelector('#childrenCollapsible').classList.add('hide'); page.querySelector('#childrenCollapsible').classList.add('hide');
} }
if (item.Type == 'Series') {
renderSeriesSchedule(page, item, user);
}
if (item.Type == 'Series') { if (item.Type == 'Series') {
renderNextUp(page, item, user); renderNextUp(page, item, user);
@ -934,20 +939,21 @@
} }
var supportsImageAnalysis = appHost.supports('imageanalysis'); var supportsImageAnalysis = appHost.supports('imageanalysis');
var cardLayout = supportsImageAnalysis && (item.Type == "MusicAlbum" || item.Type == "Game" || item.Type == "MusicArtist");
html += cardBuilder.getCardsHtml({ html += cardBuilder.getCardsHtml({
items: result.Items, items: result.Items,
shape: shape, shape: shape,
showParentTitle: item.Type == "MusicAlbum", showParentTitle: item.Type == "MusicAlbum",
centerText: !supportsImageAnalysis, centerText: !cardLayout,
showTitle: item.Type == "MusicAlbum" || item.Type == "Game" || item.Type == "MusicArtist", showTitle: item.Type == "MusicAlbum" || item.Type == "Game" || item.Type == "MusicArtist",
context: context, context: context,
lazy: true, lazy: true,
showDetailsMenu: true, showDetailsMenu: true,
coverImage: item.Type == "MusicAlbum" || item.Type == "MusicArtist", coverImage: item.Type == "MusicAlbum" || item.Type == "MusicArtist",
overlayPlayButton: true, overlayPlayButton: true,
cardLayout: supportsImageAnalysis && (item.Type == "MusicAlbum" || item.Type == "Game" || item.Type == "MusicArtist"), cardLayout: cardLayout,
vibrant: supportsImageAnalysis vibrant: cardLayout && supportsImageAnalysis
}); });
html += '</div>'; html += '</div>';
@ -1242,10 +1248,49 @@
function renderChannelGuide(page, item, user) { function renderChannelGuide(page, item, user) {
require('scripts/livetvcomponents,scripts/livetvchannel,livetvcss'.split(','), function () { require('scripts/livetvchannel,scripts/livetvcomponents,livetvcss'.split(','), function (liveTvChannelPage) {
liveTvChannelPage.renderPrograms(page, item.Id);
});
}
LiveTvChannelPage.renderPrograms(page, item.Id); function renderSeriesSchedule(page, item, user) {
return;
ApiClient.getLiveTvPrograms({
UserId: Dashboard.getCurrentUserId(),
HasAired: false,
SortBy: "StartDate",
EnableTotalRecordCount: false,
EnableImages: false,
ImageTypeLimit: 0,
Limit: 50,
EnableUserData: false,
LibrarySeriesId: item.Id
}).then(function (result) {
if (result.Items.length) {
page.querySelector('#seriesScheduleSection').classList.remove('hide');
} else {
page.querySelector('#seriesScheduleSection').classList.add('hide');
}
page.querySelector('#seriesScheduleList').innerHTML = listView.getListViewHtml({
items: result.Items,
enableUserDataButtons: false,
showParentTitle: false,
image: false,
showProgramDateTime: true,
mediaInfo: false,
showTitle: true,
moreButton: false,
action: 'programdialog'
});
Dashboard.hideLoadingMsg();
}); });
} }

View file

@ -55,7 +55,8 @@
SortBy: "StartDate", SortBy: "StartDate",
EnableTotalRecordCount: false, EnableTotalRecordCount: false,
EnableImages: false, EnableImages: false,
ImageTypeLimit: 0 ImageTypeLimit: 0,
EnableUserData: false
}).then(function (result) { }).then(function (result) {
@ -64,7 +65,7 @@
}); });
} }
window.LiveTvChannelPage = { return {
renderPrograms: loadPrograms renderPrograms: loadPrograms
}; };

View file

@ -87,7 +87,7 @@
html += cardBuilder.getCardsHtml({ html += cardBuilder.getCardsHtml({
items: group.items, items: group.items,
shape: getBackdropShape(), shape: getBackdropShape(),
showTitle: true, showParentTitleOrTitle: true,
showAirTime: true, showAirTime: true,
showAirEndTime: true, showAirEndTime: true,
showChannelName: true, showChannelName: true,

View file

@ -130,7 +130,9 @@
promise.then(function (result) { promise.then(function (result) {
renderRecordings(context.querySelector('#latestRecordings'), result.Items); renderRecordings(context.querySelector('#latestRecordings'), result.Items, {
shape: (enableScrollX() ? 'overflowBackdrop' : 'backdrop')
});
Dashboard.hideLoadingMsg(); Dashboard.hideLoadingMsg();
}); });

View file

@ -113,7 +113,6 @@
var html = cardBuilder.getCardsHtml({ var html = cardBuilder.getCardsHtml({
items: hints, items: hints,
shape: "auto", shape: "auto",
lazy: true,
overlayText: false, overlayText: false,
showTitle: true, showTitle: true,
centerImage: true, centerImage: true,

View file

@ -15,10 +15,7 @@
function showServerConnectionFailure() { function showServerConnectionFailure() {
Dashboard.alert({ alertText(Globalize.translate('MessageUnableToConnectToServer'), Globalize.translate("HeaderConnectionFailure"));
message: Globalize.translate("MessageUnableToConnectToServer"),
title: Globalize.translate("HeaderConnectionFailure")
});
} }
function getServerHtml(server) { function getServerHtml(server) {
@ -69,12 +66,23 @@
page.querySelector('.serverList').innerHTML = html; page.querySelector('.serverList').innerHTML = html;
} }
function alertText(text, title) {
alertTextWithOptions({
title: title,
text: text
});
}
function alertTextWithOptions(options) {
require(['alert'], function (alert) {
alert(options);
});
}
function showGeneralError() { function showGeneralError() {
Dashboard.hideLoadingMsg(); Dashboard.hideLoadingMsg();
Dashboard.alert({ alertText(Globalize.translate('DefaultErrorMessage'));
message: Globalize.translate('DefaultErrorMessage')
});
} }
function parentWithClass(elem, className) { function parentWithClass(elem, className) {
@ -124,12 +132,10 @@
break; break;
case MediaBrowser.ConnectionState.ServerUpdateNeeded: case MediaBrowser.ConnectionState.ServerUpdateNeeded:
{ {
Dashboard.alert(alert({ alertTextWithOptions({
text: Globalize.translate('core#ServerUpdateNeeded', 'https://emby.media'), text: Globalize.translate('core#ServerUpdateNeeded', 'https://emby.media'),
html: Globalize.translate('core#ServerUpdateNeeded', '<a href="https://emby.media">https://emby.media</a>') html: Globalize.translate('core#ServerUpdateNeeded', '<a href="https://emby.media">https://emby.media</a>')
});
}));
} }
break; break;
default: default:
@ -284,7 +290,7 @@
html += '</div>'; html += '</div>';
html += '<button is="paper-icon-button-light" class="btnInviteMenu autoSize"><i class="md-icon">' + AppInfo.moreIcon.replace('-','_') + '</i></button>'; html += '<button is="paper-icon-button-light" class="btnInviteMenu autoSize"><i class="md-icon">' + AppInfo.moreIcon.replace('-', '_') + '</i></button>';
html += '</div>'; html += '</div>';

View file

@ -1119,7 +1119,7 @@ var AppInfo = {};
var headroom = new Headroom([], { var headroom = new Headroom([], {
// or scroll tolerance per direction // or scroll tolerance per direction
tolerance: { tolerance: {
down: 20, down: 0,
up: 0 up: 0
}, },
classes: { classes: {
@ -2588,13 +2588,6 @@ var AppInfo = {};
anonymous: true anonymous: true
}); });
defineRoute({
path: '/wizardservice.html',
dependencies: ['dashboardcss'],
autoFocus: false,
anonymous: true
});
defineRoute({ defineRoute({
path: '/wizardsettings.html', path: '/wizardsettings.html',
dependencies: ['dashboardcss'], dependencies: ['dashboardcss'],

View file

@ -6,7 +6,7 @@
apiClient.getJSON(apiClient.getUrl('Startup/Info')).then(function (info) { apiClient.getJSON(apiClient.getUrl('Startup/Info')).then(function (info) {
if (info.HasMediaEncoder) { if (info.HasMediaEncoder) {
navigateToService(); Dashboard.navigate('wizardagreement.html');
} else { } else {
Dashboard.navigate('wizardcomponents.html'); Dashboard.navigate('wizardcomponents.html');
@ -14,22 +14,7 @@
}); });
} }
function navigateToService() {
var apiClient = ApiClient;
apiClient.getJSON(apiClient.getUrl('Startup/Info')).then(function (info) {
if (info.SupportsRunningAsService) {
Dashboard.navigate('wizardservice.html');
} else {
Dashboard.navigate('wizardagreement.html');
}
});
}
return { return {
navigateToComponents: navigateToComponents, navigateToComponents: navigateToComponents
navigateToService: navigateToService
}; };
}); });

View file

@ -1,13 +0,0 @@
define(['jQuery'], function ($) {
$(document).on('pageinit', "#wizardServicePage", function () {
var page = this;
$('#btnNextPage', page).on('click', function () {
Dashboard.navigate('wizardagreement.html');
});
});
});

View file

@ -1932,8 +1932,8 @@
"SyncJobItemStatusCancelled": "Cancelled", "SyncJobItemStatusCancelled": "Cancelled",
"LabelProfile": "Profile:", "LabelProfile": "Profile:",
"LabelBitrateMbps": "Bitrate (Mbps):", "LabelBitrateMbps": "Bitrate (Mbps):",
"EmbyIntroDownloadMessage": "To download and install Emby Server visit {0}.", "EmbyIntroDownloadMessage": "To download and install the free Emby Server visit {0}.",
"EmbyIntroDownloadMessageWithoutLink": "To download and install Emby Server visit the Emby website.", "EmbyIntroDownloadMessageWithoutLink": "To download and install the free Emby Server visit the Emby website.",
"ButtonNewServer": "New Server", "ButtonNewServer": "New Server",
"MyDevice": "My Device", "MyDevice": "My Device",
"ButtonRemote": "Remote", "ButtonRemote": "Remote",
@ -2094,7 +2094,7 @@
"MapChannels": "Map Channels", "MapChannels": "Map Channels",
"LabelffmpegPath": "FFmpeg path:", "LabelffmpegPath": "FFmpeg path:",
"LabelffmpegVersion": "FFmpeg version:", "LabelffmpegVersion": "FFmpeg version:",
"LabelffmpegPathHelp": "The path to your downloaded ffmpeg application file, or folder containing ffmpeg.", "LabelffmpegPathHelp": "The path to the ffmpeg application file, or folder containing ffmpeg.",
"SetupFFmpeg": "Setup FFmpeg", "SetupFFmpeg": "Setup FFmpeg",
"SetupFFmpegHelp": "Emby may require a library or application to convert certain media types. There are many different applications available, however, Emby has been tested to work with ffmpeg. Emby is in no way affiliated with ffmpeg, its ownership, code or distribution.", "SetupFFmpegHelp": "Emby may require a library or application to convert certain media types. There are many different applications available, however, Emby has been tested to work with ffmpeg. Emby is in no way affiliated with ffmpeg, its ownership, code or distribution.",
"EnterFFmpegLocation": "Enter FFmpeg path", "EnterFFmpegLocation": "Enter FFmpeg path",

View file

@ -1932,8 +1932,8 @@
"SyncJobItemStatusCancelled": "Cancelled", "SyncJobItemStatusCancelled": "Cancelled",
"LabelProfile": "Profile:", "LabelProfile": "Profile:",
"LabelBitrateMbps": "Bitrate (Mbps):", "LabelBitrateMbps": "Bitrate (Mbps):",
"EmbyIntroDownloadMessage": "To download and install Emby Server visit {0}.", "EmbyIntroDownloadMessage": "To download and install the free Emby Server visit {0}.",
"EmbyIntroDownloadMessageWithoutLink": "To download and install Emby Server visit the Emby website.", "EmbyIntroDownloadMessageWithoutLink": "To download and install the free Emby Server visit the Emby website.",
"ButtonNewServer": "New Server", "ButtonNewServer": "New Server",
"MyDevice": "My Device", "MyDevice": "My Device",
"ButtonRemote": "Remote", "ButtonRemote": "Remote",
@ -2094,7 +2094,7 @@
"MapChannels": "Map Channels", "MapChannels": "Map Channels",
"LabelffmpegPath": "FFmpeg path:", "LabelffmpegPath": "FFmpeg path:",
"LabelffmpegVersion": "FFmpeg version:", "LabelffmpegVersion": "FFmpeg version:",
"LabelffmpegPathHelp": "The path to your downloaded ffmpeg application file, or folder containing ffmpeg.", "LabelffmpegPathHelp": "The path to the ffmpeg application file, or folder containing ffmpeg.",
"SetupFFmpeg": "Setup FFmpeg", "SetupFFmpeg": "Setup FFmpeg",
"SetupFFmpegHelp": "Emby may require a library or application to convert certain media types. There are many different applications available, however, Emby has been tested to work with ffmpeg. Emby is in no way affiliated with ffmpeg, its ownership, code or distribution.", "SetupFFmpegHelp": "Emby may require a library or application to convert certain media types. There are many different applications available, however, Emby has been tested to work with ffmpeg. Emby is in no way affiliated with ffmpeg, its ownership, code or distribution.",
"EnterFFmpegLocation": "Enter FFmpeg path", "EnterFFmpegLocation": "Enter FFmpeg path",

View file

@ -1932,8 +1932,8 @@
"SyncJobItemStatusCancelled": "Cancelled", "SyncJobItemStatusCancelled": "Cancelled",
"LabelProfile": "Profile:", "LabelProfile": "Profile:",
"LabelBitrateMbps": "Bitrate (Mbps):", "LabelBitrateMbps": "Bitrate (Mbps):",
"EmbyIntroDownloadMessage": "To download and install Emby Server visit {0}.", "EmbyIntroDownloadMessage": "To download and install the free Emby Server visit {0}.",
"EmbyIntroDownloadMessageWithoutLink": "To download and install Emby Server visit the Emby website.", "EmbyIntroDownloadMessageWithoutLink": "To download and install the free Emby Server visit the Emby website.",
"ButtonNewServer": "New Server", "ButtonNewServer": "New Server",
"MyDevice": "My Device", "MyDevice": "My Device",
"ButtonRemote": "Remote", "ButtonRemote": "Remote",
@ -2094,7 +2094,7 @@
"MapChannels": "Map Channels", "MapChannels": "Map Channels",
"LabelffmpegPath": "FFmpeg path:", "LabelffmpegPath": "FFmpeg path:",
"LabelffmpegVersion": "FFmpeg version:", "LabelffmpegVersion": "FFmpeg version:",
"LabelffmpegPathHelp": "The path to your downloaded ffmpeg application file, or folder containing ffmpeg.", "LabelffmpegPathHelp": "The path to the ffmpeg application file, or folder containing ffmpeg.",
"SetupFFmpeg": "Setup FFmpeg", "SetupFFmpeg": "Setup FFmpeg",
"SetupFFmpegHelp": "Emby may require a library or application to convert certain media types. There are many different applications available, however, Emby has been tested to work with ffmpeg. Emby is in no way affiliated with ffmpeg, its ownership, code or distribution.", "SetupFFmpegHelp": "Emby may require a library or application to convert certain media types. There are many different applications available, however, Emby has been tested to work with ffmpeg. Emby is in no way affiliated with ffmpeg, its ownership, code or distribution.",
"EnterFFmpegLocation": "Enter FFmpeg path", "EnterFFmpegLocation": "Enter FFmpeg path",

View file

@ -1932,8 +1932,8 @@
"SyncJobItemStatusCancelled": "Cancel\u00b7lat", "SyncJobItemStatusCancelled": "Cancel\u00b7lat",
"LabelProfile": "Perfil:", "LabelProfile": "Perfil:",
"LabelBitrateMbps": "Bitrate (Mbps):", "LabelBitrateMbps": "Bitrate (Mbps):",
"EmbyIntroDownloadMessage": "To download and install Emby Server visit {0}.", "EmbyIntroDownloadMessage": "To download and install the free Emby Server visit {0}.",
"EmbyIntroDownloadMessageWithoutLink": "To download and install Emby Server visit the Emby website.", "EmbyIntroDownloadMessageWithoutLink": "To download and install the free Emby Server visit the Emby website.",
"ButtonNewServer": "Nou servidor", "ButtonNewServer": "Nou servidor",
"MyDevice": "El meu dispositiu", "MyDevice": "El meu dispositiu",
"ButtonRemote": "Remot", "ButtonRemote": "Remot",
@ -2094,7 +2094,7 @@
"MapChannels": "Map Channels", "MapChannels": "Map Channels",
"LabelffmpegPath": "FFmpeg path:", "LabelffmpegPath": "FFmpeg path:",
"LabelffmpegVersion": "FFmpeg version:", "LabelffmpegVersion": "FFmpeg version:",
"LabelffmpegPathHelp": "The path to your downloaded ffmpeg application file, or folder containing ffmpeg.", "LabelffmpegPathHelp": "The path to the ffmpeg application file, or folder containing ffmpeg.",
"SetupFFmpeg": "Setup FFmpeg", "SetupFFmpeg": "Setup FFmpeg",
"SetupFFmpegHelp": "Emby may require a library or application to convert certain media types. There are many different applications available, however, Emby has been tested to work with ffmpeg. Emby is in no way affiliated with ffmpeg, its ownership, code or distribution.", "SetupFFmpegHelp": "Emby may require a library or application to convert certain media types. There are many different applications available, however, Emby has been tested to work with ffmpeg. Emby is in no way affiliated with ffmpeg, its ownership, code or distribution.",
"EnterFFmpegLocation": "Enter FFmpeg path", "EnterFFmpegLocation": "Enter FFmpeg path",

View file

@ -2094,7 +2094,7 @@
"MapChannels": "Map Channels", "MapChannels": "Map Channels",
"LabelffmpegPath": "FFmpeg path:", "LabelffmpegPath": "FFmpeg path:",
"LabelffmpegVersion": "FFmpeg version:", "LabelffmpegVersion": "FFmpeg version:",
"LabelffmpegPathHelp": "The path to your downloaded ffmpeg application file, or folder containing ffmpeg.", "LabelffmpegPathHelp": "The path to the ffmpeg application file, or folder containing ffmpeg.",
"SetupFFmpeg": "Setup FFmpeg", "SetupFFmpeg": "Setup FFmpeg",
"SetupFFmpegHelp": "Emby may require a library or application to convert certain media types. There are many different applications available, however, Emby has been tested to work with ffmpeg. Emby is in no way affiliated with ffmpeg, its ownership, code or distribution.", "SetupFFmpegHelp": "Emby may require a library or application to convert certain media types. There are many different applications available, however, Emby has been tested to work with ffmpeg. Emby is in no way affiliated with ffmpeg, its ownership, code or distribution.",
"EnterFFmpegLocation": "Enter FFmpeg path", "EnterFFmpegLocation": "Enter FFmpeg path",

View file

@ -1933,7 +1933,7 @@
"LabelProfile": "Profil:", "LabelProfile": "Profil:",
"LabelBitrateMbps": "Bitrate (Mbps):", "LabelBitrateMbps": "Bitrate (Mbps):",
"EmbyIntroDownloadMessage": "For at downloade og installere Emby bes\u00f8g {0}.", "EmbyIntroDownloadMessage": "For at downloade og installere Emby bes\u00f8g {0}.",
"EmbyIntroDownloadMessageWithoutLink": "To download and install Emby Server visit the Emby website.", "EmbyIntroDownloadMessageWithoutLink": "To download and install the free Emby Server visit the Emby website.",
"ButtonNewServer": "Ny server", "ButtonNewServer": "Ny server",
"MyDevice": "Min enhed", "MyDevice": "Min enhed",
"ButtonRemote": "Fjernbetjening", "ButtonRemote": "Fjernbetjening",
@ -2094,7 +2094,7 @@
"MapChannels": "Map Channels", "MapChannels": "Map Channels",
"LabelffmpegPath": "FFmpeg path:", "LabelffmpegPath": "FFmpeg path:",
"LabelffmpegVersion": "FFmpeg version:", "LabelffmpegVersion": "FFmpeg version:",
"LabelffmpegPathHelp": "The path to your downloaded ffmpeg application file, or folder containing ffmpeg.", "LabelffmpegPathHelp": "The path to the ffmpeg application file, or folder containing ffmpeg.",
"SetupFFmpeg": "Setup FFmpeg", "SetupFFmpeg": "Setup FFmpeg",
"SetupFFmpegHelp": "Emby may require a library or application to convert certain media types. There are many different applications available, however, Emby has been tested to work with ffmpeg. Emby is in no way affiliated with ffmpeg, its ownership, code or distribution.", "SetupFFmpegHelp": "Emby may require a library or application to convert certain media types. There are many different applications available, however, Emby has been tested to work with ffmpeg. Emby is in no way affiliated with ffmpeg, its ownership, code or distribution.",
"EnterFFmpegLocation": "Enter FFmpeg path", "EnterFFmpegLocation": "Enter FFmpeg path",

View file

@ -1932,8 +1932,8 @@
"SyncJobItemStatusCancelled": "Cancelled", "SyncJobItemStatusCancelled": "Cancelled",
"LabelProfile": "Profile:", "LabelProfile": "Profile:",
"LabelBitrateMbps": "Bitrate (Mbps):", "LabelBitrateMbps": "Bitrate (Mbps):",
"EmbyIntroDownloadMessage": "To download and install Emby Server visit {0}.", "EmbyIntroDownloadMessage": "To download and install the free Emby Server visit {0}.",
"EmbyIntroDownloadMessageWithoutLink": "To download and install Emby Server visit the Emby website.", "EmbyIntroDownloadMessageWithoutLink": "To download and install the free Emby Server visit the Emby website.",
"ButtonNewServer": "New Server", "ButtonNewServer": "New Server",
"MyDevice": "My Device", "MyDevice": "My Device",
"ButtonRemote": "Remote", "ButtonRemote": "Remote",
@ -2094,7 +2094,7 @@
"MapChannels": "Map Channels", "MapChannels": "Map Channels",
"LabelffmpegPath": "FFmpeg path:", "LabelffmpegPath": "FFmpeg path:",
"LabelffmpegVersion": "FFmpeg version:", "LabelffmpegVersion": "FFmpeg version:",
"LabelffmpegPathHelp": "The path to your downloaded ffmpeg application file, or folder containing ffmpeg.", "LabelffmpegPathHelp": "The path to the ffmpeg application file, or folder containing ffmpeg.",
"SetupFFmpeg": "Setup FFmpeg", "SetupFFmpeg": "Setup FFmpeg",
"SetupFFmpegHelp": "Emby may require a library or application to convert certain media types. There are many different applications available, however, Emby has been tested to work with ffmpeg. Emby is in no way affiliated with ffmpeg, its ownership, code or distribution.", "SetupFFmpegHelp": "Emby may require a library or application to convert certain media types. There are many different applications available, however, Emby has been tested to work with ffmpeg. Emby is in no way affiliated with ffmpeg, its ownership, code or distribution.",
"EnterFFmpegLocation": "Enter FFmpeg path", "EnterFFmpegLocation": "Enter FFmpeg path",

View file

@ -1932,8 +1932,8 @@
"SyncJobItemStatusCancelled": "Cancelled", "SyncJobItemStatusCancelled": "Cancelled",
"LabelProfile": "Profile:", "LabelProfile": "Profile:",
"LabelBitrateMbps": "Bitrate (Mbps):", "LabelBitrateMbps": "Bitrate (Mbps):",
"EmbyIntroDownloadMessage": "To download and install Emby Server visit {0}.", "EmbyIntroDownloadMessage": "To download and install the free Emby Server visit {0}.",
"EmbyIntroDownloadMessageWithoutLink": "To download and install Emby Server visit the Emby website.", "EmbyIntroDownloadMessageWithoutLink": "To download and install the free Emby Server visit the Emby website.",
"ButtonNewServer": "New Server", "ButtonNewServer": "New Server",
"MyDevice": "My Device", "MyDevice": "My Device",
"ButtonRemote": "Remote", "ButtonRemote": "Remote",
@ -2094,7 +2094,7 @@
"MapChannels": "Map Channels", "MapChannels": "Map Channels",
"LabelffmpegPath": "FFmpeg path:", "LabelffmpegPath": "FFmpeg path:",
"LabelffmpegVersion": "FFmpeg version:", "LabelffmpegVersion": "FFmpeg version:",
"LabelffmpegPathHelp": "The path to your downloaded ffmpeg application file, or folder containing ffmpeg.", "LabelffmpegPathHelp": "The path to the ffmpeg application file, or folder containing ffmpeg.",
"SetupFFmpeg": "Setup FFmpeg", "SetupFFmpeg": "Setup FFmpeg",
"SetupFFmpegHelp": "Emby may require a library or application to convert certain media types. There are many different applications available, however, Emby has been tested to work with ffmpeg. Emby is in no way affiliated with ffmpeg, its ownership, code or distribution.", "SetupFFmpegHelp": "Emby may require a library or application to convert certain media types. There are many different applications available, however, Emby has been tested to work with ffmpeg. Emby is in no way affiliated with ffmpeg, its ownership, code or distribution.",
"EnterFFmpegLocation": "Enter FFmpeg path", "EnterFFmpegLocation": "Enter FFmpeg path",

View file

@ -2094,7 +2094,7 @@
"MapChannels": "Map Channels", "MapChannels": "Map Channels",
"LabelffmpegPath": "FFmpeg path:", "LabelffmpegPath": "FFmpeg path:",
"LabelffmpegVersion": "FFmpeg version:", "LabelffmpegVersion": "FFmpeg version:",
"LabelffmpegPathHelp": "The path to your downloaded ffmpeg application file, or folder containing ffmpeg.", "LabelffmpegPathHelp": "The path to the ffmpeg application file, or folder containing ffmpeg.",
"SetupFFmpeg": "Setup FFmpeg", "SetupFFmpeg": "Setup FFmpeg",
"SetupFFmpegHelp": "Emby may require a library or application to convert certain media types. There are many different applications available, however, Emby has been tested to work with ffmpeg. Emby is in no way affiliated with ffmpeg, its ownership, code or distribution.", "SetupFFmpegHelp": "Emby may require a library or application to convert certain media types. There are many different applications available, however, Emby has been tested to work with ffmpeg. Emby is in no way affiliated with ffmpeg, its ownership, code or distribution.",
"EnterFFmpegLocation": "Enter FFmpeg path", "EnterFFmpegLocation": "Enter FFmpeg path",

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