mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
commit
d6c43efc9c
127 changed files with 1222 additions and 922 deletions
|
@ -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",
|
||||||
|
|
|
@ -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({
|
||||||
|
|
|
@ -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",
|
||||||
|
|
|
@ -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);
|
||||||
};
|
};
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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, '<').
|
|
||||||
replace(/>/g, '>');
|
|
||||||
}
|
|
||||||
|
|
||||||
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 {
|
||||||
|
|
|
@ -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;
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
define(['multi-download'], function (multiDownload) {
|
define(['multi-download'], function (multiDownload) {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
return {
|
return {
|
||||||
download: function (items) {
|
download: function (items) {
|
||||||
|
|
|
@ -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 () {
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
define([], function () {
|
define([], function () {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
function fullscreenManager() {
|
function fullscreenManager() {
|
||||||
|
|
||||||
|
|
|
@ -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%;
|
||||||
|
|
|
@ -378,7 +378,7 @@
|
||||||
return '<i class="md-icon programIcon timerIcon"></i>';
|
return '<i class="md-icon programIcon timerIcon"></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');
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
|
@ -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();
|
||||||
|
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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' ? '' : '';
|
var moreIcon = appHost.moreIcon === 'dots-horiz' ? '' : '';
|
||||||
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;
|
||||||
});
|
});
|
|
@ -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 = '';
|
||||||
|
|
|
@ -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();
|
||||||
});
|
});
|
|
@ -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' ? '' : '';
|
var moreIcon = appHost.moreIcon === 'dots-horiz' ? '' : '';
|
||||||
|
|
||||||
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');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
define(['css!./loading-legacy'], function () {
|
define(['css!./loading-legacy'], function () {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
var loadingElem;
|
var loadingElem;
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
define(['css!./loading-lite'], function () {
|
define(['css!./loading-lite'], function () {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
var loadingElem;
|
var loadingElem;
|
||||||
|
|
||||||
|
|
|
@ -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"></i>';
|
return '<i class="md-icon mediaInfoItem mediaInfoIconItem mediaInfoTimerIcon"></i>';
|
||||||
}
|
}
|
||||||
else if (item.TimerId || item.SeriesTimerId) {
|
else if (item.TimerId || item.SeriesTimerId) {
|
||||||
|
|
||||||
status = item.Status || 'Cancelled';
|
status = item.Status || 'Cancelled';
|
||||||
}
|
}
|
||||||
else if (item.Type == 'Timer') {
|
else if (item.Type === 'Timer') {
|
||||||
|
|
||||||
status = item.Status;
|
status = item.Status;
|
||||||
}
|
}
|
||||||
|
@ -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"></i>';
|
return '<i class="md-icon mediaInfoItem mediaInfoIconItem mediaInfoTimerIcon"></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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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');
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
(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) {
|
||||||
|
@ -48,7 +48,7 @@ function download(url) {
|
||||||
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)
|
|
||||||
});
|
});
|
|
@ -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' ? '' : '';
|
var moreIcon = appHost.moreIcon === 'dots-horiz' ? '' : '';
|
||||||
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();
|
||||||
|
|
|
@ -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);
|
||||||
});
|
});
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
|
|
||||||
|
|
|
@ -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'
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
define([], function () {
|
define([], function () {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
function replaceAll(str, find, replace) {
|
function replaceAll(str, find, replace) {
|
||||||
|
|
||||||
|
|
|
@ -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');
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
});
|
});
|
|
@ -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) {
|
||||||
|
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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, {
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
|
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
||||||
|
|
|
@ -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]]);
|
||||||
|
|
|
@ -1,3 +1,6 @@
|
||||||
|
(function () {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
var connectionManager;
|
var connectionManager;
|
||||||
|
|
||||||
function getApiClient(serverId) {
|
function getApiClient(serverId) {
|
||||||
|
@ -46,3 +49,4 @@ self.addEventListener('notificationclick', function (event) {
|
||||||
event.waitUntil(executeAction(action, data, serverId));
|
event.waitUntil(executeAction(action, data, serverId));
|
||||||
|
|
||||||
}, false);
|
}, false);
|
||||||
|
})();
|
|
@ -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') {
|
||||||
}
|
}
|
||||||
});
|
});
|
|
@ -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) {
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
define([], function () {
|
define([], function () {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
return {
|
return {
|
||||||
openUrl: function (url) {
|
openUrl: function (url) {
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
};
|
||||||
});
|
});
|
|
@ -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' ? '' : '';
|
var moreIcon = appHost.moreIcon === 'dots-horiz' ? '' : '';
|
||||||
|
|
||||||
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 {
|
||||||
|
|
|
@ -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');
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
define(['css!./toast'], function () {
|
define(['css!./toast'], function () {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
function remove(elem) {
|
function remove(elem) {
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
define(['dom'], function (dom) {
|
define(['dom'], function (dom) {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Copyright 2012, Digital Fusion
|
* Copyright 2012, Digital Fusion
|
||||||
|
|
|
@ -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;
|
||||||
}
|
};
|
||||||
});
|
});
|
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
});
|
});
|
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
});
|
});
|
|
@ -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);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
}
|
};
|
||||||
});
|
});
|
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
});
|
});
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
};
|
||||||
});
|
});
|
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
});
|
});
|
|
@ -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;
|
||||||
}
|
};
|
||||||
});
|
});
|
||||||
|
|
|
@ -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();
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
});
|
});
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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';
|
||||||
|
|
||||||
|
|
|
@ -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'),
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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();
|
||||||
});
|
});
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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:
|
||||||
|
|
|
@ -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'],
|
||||||
|
|
|
@ -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
|
|
||||||
};
|
};
|
||||||
});
|
});
|
|
@ -1,13 +0,0 @@
|
||||||
define(['jQuery'], function ($) {
|
|
||||||
|
|
||||||
$(document).on('pageinit', "#wizardServicePage", function () {
|
|
||||||
|
|
||||||
var page = this;
|
|
||||||
|
|
||||||
$('#btnNextPage', page).on('click', function () {
|
|
||||||
|
|
||||||
Dashboard.navigate('wizardagreement.html');
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
});
|
|
|
@ -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",
|
||||||
|
|
|
@ -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",
|
||||||
|
|
|
@ -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",
|
||||||
|
|
|
@ -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",
|
||||||
|
|
|
@ -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",
|
||||||
|
|
|
@ -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",
|
||||||
|
|
|
@ -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",
|
||||||
|
|
|
@ -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",
|
||||||
|
|
|
@ -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
Loading…
Add table
Add a link
Reference in a new issue