mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
change tv and home to multi-pages
This commit is contained in:
parent
e2823d0367
commit
5bfd2d683c
63 changed files with 987 additions and 658 deletions
|
@ -28,14 +28,14 @@
|
|||
"web-component-tester": "*",
|
||||
"webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0"
|
||||
},
|
||||
"homepage": "https://github.com/polymerelements/iron-selector",
|
||||
"homepage": "https://github.com/PolymerElements/iron-selector",
|
||||
"_release": "1.0.2",
|
||||
"_resolution": {
|
||||
"type": "version",
|
||||
"tag": "v1.0.2",
|
||||
"commit": "ea22d91d11ba6f72c01faa952d5e600f9d1773cf"
|
||||
},
|
||||
"_source": "git://github.com/polymerelements/iron-selector.git",
|
||||
"_source": "git://github.com/PolymerElements/iron-selector.git",
|
||||
"_target": "^1.0.0",
|
||||
"_originalSource": "polymerelements/iron-selector"
|
||||
"_originalSource": "PolymerElements/iron-selector"
|
||||
}
|
|
@ -89,7 +89,7 @@
|
|||
|
||||
ApiClientBridge.sendRequest(JSON.stringify(javaRequest), request.dataType, id);
|
||||
|
||||
Events.on(AndroidAjax, 'response' + id, function (e, isSuccess, status, response) {
|
||||
Events.on(AndroidAjax, 'response' + id, function (e, isSuccess, response) {
|
||||
|
||||
Events.off(AndroidAjax, 'response' + id);
|
||||
|
||||
|
@ -116,7 +116,10 @@
|
|||
|
||||
var error = {};
|
||||
|
||||
error.status = response.StatusCode;
|
||||
if (response.StatusCode) {
|
||||
error.status = response.StatusCode;
|
||||
}
|
||||
|
||||
error.ResponseHeaders = response.ResponseHeaders || {};
|
||||
|
||||
error.getResponseHeader = function (name) {
|
||||
|
@ -133,13 +136,13 @@
|
|||
|
||||
window.AndroidAjax = {
|
||||
|
||||
onResponse: function (id, status, response) {
|
||||
onResponse: function (id, response) {
|
||||
|
||||
Events.trigger(AndroidAjax, 'response' + id, [true, status, response]);
|
||||
Events.trigger(AndroidAjax, 'response' + id, [true, response]);
|
||||
},
|
||||
onError: function (id, status, response) {
|
||||
onError: function (id, response) {
|
||||
|
||||
Events.trigger(AndroidAjax, 'response' + id, [false, status, response]);
|
||||
Events.trigger(AndroidAjax, 'response' + id, [false, response]);
|
||||
}
|
||||
};
|
||||
|
||||
|
|
6
dashboard-ui/cordova/android/immersive.js
vendored
6
dashboard-ui/cordova/android/immersive.js
vendored
|
@ -65,15 +65,15 @@
|
|||
return;
|
||||
}
|
||||
|
||||
$(player).on('playbackstart.fullscreen', onPlaybackStart)
|
||||
.on('playbackstop.fullscreen', onPlaybackStopped);
|
||||
$(player).on('playbackstart', onPlaybackStart)
|
||||
.on('playbackstop', onPlaybackStopped);
|
||||
}
|
||||
|
||||
function releaseCurrentPlayer() {
|
||||
|
||||
if (currentPlayer) {
|
||||
|
||||
$(currentPlayer).off('.fullscreen');
|
||||
$(currentPlayer).off('playbackstart', onPlaybackStart).off('playbackstop', onPlaybackStopped);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
14
dashboard-ui/cordova/android/mediasession.js
vendored
14
dashboard-ui/cordova/android/mediasession.js
vendored
|
@ -119,7 +119,11 @@
|
|||
|
||||
if (currentPlayer) {
|
||||
|
||||
$(currentPlayer).off('.cordovaremote');
|
||||
$(currentPlayer).off('playbackstart', onPlaybackStart)
|
||||
.off('playbackstop', onPlaybackStopped)
|
||||
.off('playstatechange', onStateChanged)
|
||||
.off('positionchange', onStateChanged);
|
||||
|
||||
currentPlayer.endPlayerUpdates();
|
||||
currentPlayer = null;
|
||||
|
||||
|
@ -153,10 +157,10 @@
|
|||
onStateChanged.call(player, { type: 'init' }, state);
|
||||
});
|
||||
|
||||
$(player).on('playbackstart.cordovaremote', onPlaybackStart)
|
||||
.on('playbackstop.cordovaremote', onPlaybackStopped)
|
||||
.on('playstatechange.cordovaremote', onStateChanged)
|
||||
.on('positionchange.cordovaremote', onStateChanged);
|
||||
$(player).on('playbackstart', onPlaybackStart)
|
||||
.on('playbackstop', onPlaybackStopped)
|
||||
.on('playstatechange', onStateChanged)
|
||||
.on('positionchange', onStateChanged);
|
||||
}
|
||||
|
||||
Dashboard.ready(function () {
|
||||
|
|
2
dashboard-ui/cordova/ios/orientation.js
vendored
2
dashboard-ui/cordova/ios/orientation.js
vendored
|
@ -6,6 +6,8 @@
|
|||
|
||||
// Try to make it react quicker to the orientation change
|
||||
doc.scrollTop(doc.scrollTop() + 1);
|
||||
|
||||
$('.libraryViewNav').filter(':visible').hide().show();
|
||||
}
|
||||
|
||||
function onOrientationChange() {
|
||||
|
|
14
dashboard-ui/cordova/remotecontrols.js
vendored
14
dashboard-ui/cordova/remotecontrols.js
vendored
|
@ -94,7 +94,11 @@
|
|||
|
||||
if (currentPlayer) {
|
||||
|
||||
$(currentPlayer).off('.cordovaremote');
|
||||
$(currentPlayer).off('playbackstart', onPlaybackStart)
|
||||
.off('playbackstop', onPlaybackStopped)
|
||||
.off('playstatechange', onStateChanged)
|
||||
.off('positionchange', onStateChanged);
|
||||
|
||||
currentPlayer.endPlayerUpdates();
|
||||
currentPlayer = null;
|
||||
|
||||
|
@ -151,10 +155,10 @@
|
|||
onStateChanged.call(player, { type: 'init' }, state);
|
||||
});
|
||||
|
||||
$(player).on('playbackstart.cordovaremote', onPlaybackStart)
|
||||
.on('playbackstop.cordovaremote', onPlaybackStopped)
|
||||
.on('playstatechange.cordovaremote', onStateChanged)
|
||||
.on('positionchange.cordovaremote', onStateChanged);
|
||||
$(player).on('playbackstart', onPlaybackStart)
|
||||
.on('playbackstop', onPlaybackStopped)
|
||||
.on('playstatechange', onStateChanged)
|
||||
.on('positionchange', onStateChanged);
|
||||
}
|
||||
|
||||
Dashboard.ready(function () {
|
||||
|
|
|
@ -1,24 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Emby</title>
|
||||
</head>
|
||||
<body>
|
||||
<div id="favoritesPage" data-role="page" class="page libraryPage allLibraryPage backdropPage" data-backdroptype="movie,series,game,book" data-require="scripts/favorites,paperbuttonstyle">
|
||||
|
||||
<div class="libraryViewNav scopedLibraryViewNav">
|
||||
<a href="index.html"><i class="material-icons">home</i>${TabHome}</a>
|
||||
<a href="tvrecommended.html"><i class="material-icons">navigate_next</i>${TabNextUp}</a>
|
||||
<a href="favorites.html" class="ui-btn-active"><i class="material-icons">favorite</i>${TabFavorites}</a>
|
||||
<a href="tvupcoming.html"><i class="material-icons">schedule</i>${TabUpcoming}</a>
|
||||
</div>
|
||||
|
||||
<div data-role="content">
|
||||
|
||||
<div class="ehsContent">
|
||||
<div class="sections"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
|
@ -9,9 +9,9 @@
|
|||
|
||||
<div class="libraryViewNav scopedLibraryViewNav">
|
||||
<a href="#" class="ui-btn-active"><i class="material-icons">home</i>${TabHome}</a>
|
||||
<a href="tvrecommended.html"><i class="material-icons">navigate_next</i>${TabNextUp}</a>
|
||||
<a href="favorites.html"><i class="material-icons">favorite</i>${TabFavorites}</a>
|
||||
<a href="tvupcoming.html"><i class="material-icons">schedule</i>${TabUpcoming}</a>
|
||||
<a href="#homeNextUpPage"><i class="material-icons">navigate_next</i>${TabNextUp}</a>
|
||||
<a href="#favoritesPage"><i class="material-icons">favorite</i>${TabFavorites}</a>
|
||||
<a href="#homeUpcomingPage"><i class="material-icons">schedule</i>${TabUpcoming}</a>
|
||||
</div>
|
||||
|
||||
<div data-role="content">
|
||||
|
@ -29,6 +29,72 @@
|
|||
|
||||
</div>
|
||||
</div>
|
||||
<div id="homeNextUpPage" data-role="page" class="page libraryPage backdropPage" data-backdroptype="series" data-require="scripts/homenextup,paperbuttonstyle">
|
||||
|
||||
<div class="libraryViewNav globalNav">
|
||||
<a href="#indexPage"><i class="material-icons">home</i>${TabHome}</a>
|
||||
<a href="#" class="ui-btn-active"><i class="material-icons">navigate_next</i>${TabNextUp}</a>
|
||||
<a href="#favoritesPage"><i class="material-icons">favorite</i>${TabFavorites}</a>
|
||||
<a href="#homeUpcomingPage"><i class="material-icons">schedule</i>${TabUpcoming}</a>
|
||||
</div>
|
||||
<div data-role="content">
|
||||
<div class="ehsContent">
|
||||
|
||||
<div id="resumableSection" style="display: none;" class="scopedContent homePageSection">
|
||||
<div>
|
||||
<h1 class="listHeader" style="display:inline-block;vertical-align:middle;">${HeaderResume}</h1>
|
||||
<paper-button raised class="submit mini categorySyncButton" data-category="Resume"><iron-icon icon="refresh"></iron-icon><span>${ButtonSync}</span></paper-button>
|
||||
</div>
|
||||
|
||||
<div id="resumableItems" class="itemsContainer">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="homePageSection">
|
||||
<div>
|
||||
<h1 class="listHeader nextUpHeader" style="display:inline-block;vertical-align:middle;">${HeaderNextUp}</h1>
|
||||
<paper-button raised class="submit mini categorySyncButton" data-category="NextUp"><iron-icon icon="refresh"></iron-icon><span>${ButtonSync}</span></paper-button>
|
||||
</div>
|
||||
<div id="nextUpItems" class="itemsContainer">
|
||||
</div>
|
||||
</div>
|
||||
<p class="noNextUpItems" style="display: none;">${NoNextUpItemsMessage}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="favoritesPage" data-role="page" class="page libraryPage allLibraryPage backdropPage" data-backdroptype="movie,series,game,book" data-require="scripts/favorites,paperbuttonstyle">
|
||||
|
||||
<div class="libraryViewNav scopedLibraryViewNav">
|
||||
<a href="#indexPage"><i class="material-icons">home</i>${TabHome}</a>
|
||||
<a href="#homeNextUpPage"><i class="material-icons">navigate_next</i>${TabNextUp}</a>
|
||||
<a href="#favoritesPage" class="ui-btn-active"><i class="material-icons">favorite</i>${TabFavorites}</a>
|
||||
<a href="#homeUpcomingPage"><i class="material-icons">schedule</i>${TabUpcoming}</a>
|
||||
</div>
|
||||
|
||||
<div data-role="content">
|
||||
|
||||
<div class="ehsContent">
|
||||
<div class="sections"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="homeUpcomingPage" data-role="page" class="page libraryPage backdropPage" data-backdroptype="series" data-require="scripts/homeupcoming">
|
||||
<div class="libraryViewNav globalNav">
|
||||
<a href="#indexPage"><i class="material-icons">home</i>${TabHome}</a>
|
||||
<a href="#homeNextUpPage"><i class="material-icons">navigate_next</i>${TabNextUp}</a>
|
||||
<a href="#favoritesPage"><i class="material-icons">favorite</i>${TabFavorites}</a>
|
||||
<a href="#" class="ui-btn-active"><i class="material-icons">schedule</i>${TabUpcoming}</a>
|
||||
</div>
|
||||
<div data-role="content">
|
||||
<div class="ehsContent">
|
||||
<div id="upcomingItems" class="itemsContainer">
|
||||
</div>
|
||||
<div class="noItemsMessage" style="display: none;">
|
||||
<p>${MessageNothingHere}</p>
|
||||
<p><a href="metadata.html">${MessagePleaseEnsureInternetMetadata}</a></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -9,9 +9,9 @@
|
|||
<div class="itemTabs homeTabs" style="display: none;">
|
||||
<div class="libraryViewNav scopedLibraryViewNav">
|
||||
<a href="index.html" class="lnkHomeHome"><i class="material-icons">home</i>${TabHome}</a>
|
||||
<a href="tvrecommended.html" class="lnkHomeNextUp"><i class="material-icons">navigate_next</i>${TabNextUp}</a>
|
||||
<a href="favorites.html" class="lnkHomeFavorites"><i class="material-icons">favorite</i>${TabFavorites}</a>
|
||||
<a href="tvupcoming.html" class="lnkHomeUpcoming"><i class="material-icons">schedule</i>${TabUpcoming}</a>
|
||||
<a href="index.html#homeNextUpPage" class="lnkHomeNextUp"><i class="material-icons">navigate_next</i>${TabNextUp}</a>
|
||||
<a href="index.html#favoritesPage" class="lnkHomeFavorites"><i class="material-icons">favorite</i>${TabFavorites}</a>
|
||||
<a href="index.html#homeUpcomingPage" class="lnkHomeUpcoming"><i class="material-icons">schedule</i>${TabUpcoming}</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
|
@ -7,11 +7,11 @@
|
|||
<div id="liveTvChannelPage" data-role="page" class="page libraryPage liveTvPage" data-contextname="${HeaderLiveTv}" data-require="scripts/livetvcomponents,scripts/livetvchannel,paperbuttonstyle,livetvcss">
|
||||
<div class="libraryViewNav">
|
||||
<a href="livetvsuggested.html"><i class="material-icons">info</i>${TabSuggestions}</a>
|
||||
<a href="livetvguide.html"><i class="material-icons">grid_on</i>${TabGuide}</a>
|
||||
<a href="livetvchannels.html" class="ui-btn-active"><i class="material-icons">live_tv</i>${TabChannels}</a>
|
||||
<a href="livetvrecordings.html"><i class="material-icons">slideshow</i>${TabRecordings}</a>
|
||||
<a href="livetvtimers.html"><i class="material-icons">schedule</i>${TabScheduled}</a>
|
||||
<a href="livetvseriestimers.html"><i class="material-icons">refresh</i>${TabSeries}</a>
|
||||
<a href="livetvsuggested.html#liveTvGuidePage"><i class="material-icons">grid_on</i>${TabGuide}</a>
|
||||
<a href="livetvsuggested.html#liveTvChannelsPage" class="ui-btn-active"><i class="material-icons">live_tv</i>${TabChannels}</a>
|
||||
<a href="livetvsuggested.html#liveTvRecordingsPage"><i class="material-icons">slideshow</i>${TabRecordings}</a>
|
||||
<a href="livetvsuggested.html#liveTvTimersPage"><i class="material-icons">schedule</i>${TabScheduled}</a>
|
||||
<a href="livetvsuggested.html#liveTvSeriesTimersPage"><i class="material-icons">refresh</i>${TabSeries}</a>
|
||||
</div>
|
||||
<table class="detailPageContent primaryDetailPageContent">
|
||||
<tr>
|
||||
|
|
|
@ -1,60 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Emby</title>
|
||||
</head>
|
||||
<body>
|
||||
<div id="liveTvChannelsPage" data-role="page" class="page libraryPage liveTvPage" data-contextname="${HeaderLiveTv}" data-require="scripts/livetvchannels,livetvcss">
|
||||
<div class="libraryViewNav">
|
||||
<a href="livetvsuggested.html"><i class="material-icons">info</i>${TabSuggestions}</a>
|
||||
<a href="livetvguide.html"><i class="material-icons">grid_on</i>${TabGuide}</a>
|
||||
<a href="livetvchannels.html" class="ui-btn-active"><i class="material-icons">live_tv</i>${TabChannels}</a>
|
||||
<a href="livetvrecordings.html"><i class="material-icons">slideshow</i>${TabRecordings}</a>
|
||||
<a href="livetvtimers.html"><i class="material-icons">schedule</i>${TabScheduled}</a>
|
||||
<a href="livetvseriestimers.html"><i class="material-icons">refresh</i>${TabSeries}</a>
|
||||
</div>
|
||||
<div data-role="content">
|
||||
<div class="viewSettings">
|
||||
<div class="listTopPaging">
|
||||
</div>
|
||||
</div>
|
||||
<div id="items" class="itemsContainer"></div>
|
||||
|
||||
</div>
|
||||
|
||||
<div data-role="panel" class="viewPanel" data-theme="a" data-position="right" data-display="overlay" data-position-fixed="true">
|
||||
<form>
|
||||
|
||||
<div data-role="controlgroup" data-type="horizontal" data-mini="true" class="viewPanelTabs">
|
||||
<a href="#" data-role="button" class="viewTabButton" data-tab="tabView">${TabView}</a>
|
||||
<a href="#" data-role="button" class="viewTabButton" data-tab="tabFilter">${TabFilter}</a>
|
||||
</div>
|
||||
|
||||
<div class="tabView viewTab">
|
||||
|
||||
<div>
|
||||
<label for="selectPageSize">${LabelPageSize}</label>
|
||||
<select id="selectPageSize"></select>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="tabFilter viewTab">
|
||||
<fieldset data-role="controlgroup">
|
||||
<legend>${HeaderFilters}</legend>
|
||||
<input class="chkStandardFilter" type="checkbox" id="chkFavorite" data-filter="IsFavorite" data-mini="true">
|
||||
<label for="chkFavorite">${OptionFavorite}</label>
|
||||
|
||||
<input class="chkStandardFilter" type="checkbox" id="chkLikes" data-filter="Likes" data-mini="true">
|
||||
<label for="chkLikes">${OptionLikes}</label>
|
||||
|
||||
<input class="chkStandardFilter" type="checkbox" id="chkDislikes" data-filter="Dislikes" data-mini="true">
|
||||
<label for="chkDislikes">${OptionDislikes}</label>
|
||||
</fieldset>
|
||||
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
|
@ -1,42 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Emby</title>
|
||||
</head>
|
||||
<body>
|
||||
<div id="liveTvGuidePage" data-role="page" class="page libraryPage liveTvPage" data-contextname="${HeaderLiveTv}" data-require="scripts/registrationservices,scripts/livetvcomponents,scripts/livetvguide,paperbuttonstyle,livetvcss">
|
||||
<div class="libraryViewNav">
|
||||
<a href="livetvsuggested.html"><i class="material-icons">info</i>${TabSuggestions}</a>
|
||||
<a href="livetvguide.html" class="ui-btn-active"><i class="material-icons">grid_on</i>${TabGuide}</a>
|
||||
<a href="livetvchannels.html"><i class="material-icons">live_tv</i>${TabChannels}</a>
|
||||
<a href="livetvrecordings.html"><i class="material-icons">slideshow</i>${TabRecordings}</a>
|
||||
<a href="livetvtimers.html"><i class="material-icons">schedule</i>${TabScheduled}</a>
|
||||
<a href="livetvseriestimers.html"><i class="material-icons">refresh</i>${TabSeries}</a>
|
||||
</div>
|
||||
<div data-role="content" style="padding-top: 5px;padding-left:0!important;padding-right:0!important;">
|
||||
|
||||
<div class="tvGuide">
|
||||
<div class="tvGuideHeader">
|
||||
<div class="channelTimeslotHeader">
|
||||
<div class="timeslotHeaderInner">
|
||||
<a class="btnSelectDate" href="#" style="display:block;padding-left:5px;color:#fff;text-decoration:none;font-weight:normal!important;padding:4px 10px 4px 0;"><i class="fa fa-calendar" style="margin-right:3px;"></i><span class="currentDate"></span></a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="timeslotHeaders hiddenScrollX"></div>
|
||||
</div>
|
||||
|
||||
<div class="programContainer">
|
||||
|
||||
<div class="channelList"></div>
|
||||
<div class="programGrid hiddenScrollX"></div>
|
||||
</div>
|
||||
<div class="channelPaging"></div>
|
||||
</div>
|
||||
<div class="guideRequiresUnlock readOnlyContent" style="margin:1em auto;text-align:center;display:none;padding:1em;">
|
||||
<p class="unlockText"></p>
|
||||
<paper-button raised class="secondary block btnUnlockGuide"><iron-icon icon="check"></iron-icon><span>${ButtonUnlockGuide}</span></paper-button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
|
@ -7,11 +7,11 @@
|
|||
<div id="liveTvItemsPage" data-role="page" class="page libraryPage liveTvPage" data-contextname="${HeaderLiveTv}" data-require="scripts/livetvitems,scripts/queryfilters,livetvcss">
|
||||
<div class="libraryViewNav">
|
||||
<a href="livetvsuggested.html" class="ui-btn-active"><i class="material-icons">info</i>${TabSuggestions}</a>
|
||||
<a href="livetvguide.html"><i class="material-icons">grid_on</i>${TabGuide}</a>
|
||||
<a href="livetvchannels.html"><i class="material-icons">live_tv</i>${TabChannels}</a>
|
||||
<a href="livetvrecordings.html"><i class="material-icons">slideshow</i>${TabRecordings}</a>
|
||||
<a href="livetvtimers.html"><i class="material-icons">schedule</i>${TabScheduled}</a>
|
||||
<a href="livetvseriestimers.html"><i class="material-icons">refresh</i>${TabSeries}</a>
|
||||
<a href="livetvsuggested.html#liveTvGuidePage"><i class="material-icons">grid_on</i>${TabGuide}</a>
|
||||
<a href="livetvsuggested.html#liveTvChannelsPage"><i class="material-icons">live_tv</i>${TabChannels}</a>
|
||||
<a href="livetvsuggested.html#liveTvRecordingsPage"><i class="material-icons">slideshow</i>${TabRecordings}</a>
|
||||
<a href="livetvsuggested.html#liveTvTimersPage"><i class="material-icons">schedule</i>${TabScheduled}</a>
|
||||
<a href="livetvsuggested.html#liveTvSeriesTimersPage"><i class="material-icons">refresh</i>${TabSeries}</a>
|
||||
</div>
|
||||
<div data-role="content">
|
||||
<div class="viewSettings">
|
||||
|
|
|
@ -7,11 +7,11 @@
|
|||
<div id="liveTvNewRecordingPage" data-role="page" class="page libraryPage liveTvPage" data-contextname="${HeaderLiveTv}" data-require="scripts/livetvcomponents,scripts/livetvnewrecording,livetvcss">
|
||||
<div class="libraryViewNav">
|
||||
<a href="livetvsuggested.html"><i class="material-icons">info</i>${TabSuggestions}</a>
|
||||
<a href="livetvguide.html"><i class="material-icons">grid_on</i>${TabGuide}</a>
|
||||
<a href="livetvchannels.html"><i class="material-icons">live_tv</i>${TabChannels}</a>
|
||||
<a href="livetvrecordings.html" class="ui-btn-active"><i class="material-icons">slideshow</i>${TabRecordings}</a>
|
||||
<a href="livetvtimers.html"><i class="material-icons">schedule</i>${TabScheduled}</a>
|
||||
<a href="livetvseriestimers.html"><i class="material-icons">refresh</i>${TabSeries}</a>
|
||||
<a href="livetvsuggested.html#liveTvGuidePage"><i class="material-icons">grid_on</i>${TabGuide}</a>
|
||||
<a href="livetvsuggested.html#liveTvChannelsPage"><i class="material-icons">live_tv</i>${TabChannels}</a>
|
||||
<a href="livetvsuggested.html#liveTvRecordingsPage" class="ui-btn-active"><i class="material-icons">slideshow</i>${TabRecordings}</a>
|
||||
<a href="livetvsuggested.html#liveTvTimersPage"><i class="material-icons">schedule</i>${TabScheduled}</a>
|
||||
<a href="livetvsuggested.html#liveTvSeriesTimersPage"><i class="material-icons">refresh</i>${TabSeries}</a>
|
||||
</div>
|
||||
<div data-role="content">
|
||||
<form class="liveTvNewRecordingForm" style="margin: 0 auto;">
|
||||
|
|
|
@ -7,11 +7,11 @@
|
|||
<div id="liveTvProgramPage" data-role="page" class="page libraryPage liveTvPage" data-contextname="${HeaderLiveTv}" data-require="scripts/livetvcomponents,scripts/livetvprogram,livetvcss">
|
||||
<div class="libraryViewNav">
|
||||
<a href="livetvsuggested.html"><i class="material-icons">info</i>${TabSuggestions}</a>
|
||||
<a href="livetvguide.html"><i class="material-icons">grid_on</i>${TabGuide}</a>
|
||||
<a href="livetvchannels.html" class="ui-btn-active"><i class="material-icons">live_tv</i>${TabChannels}</a>
|
||||
<a href="livetvrecordings.html"><i class="material-icons">slideshow</i>${TabRecordings}</a>
|
||||
<a href="livetvtimers.html"><i class="material-icons">schedule</i>${TabScheduled}</a>
|
||||
<a href="livetvseriestimers.html"><i class="material-icons">refresh</i>${TabSeries}</a>
|
||||
<a href="livetvsuggested.html#liveTvGuidePage"><i class="material-icons">grid_on</i>${TabGuide}</a>
|
||||
<a href="livetvsuggested.html#liveTvChannelsPage" class="ui-btn-active"><i class="material-icons">live_tv</i>${TabChannels}</a>
|
||||
<a href="livetvsuggested.html#liveTvRecordingsPage"><i class="material-icons">slideshow</i>${TabRecordings}</a>
|
||||
<a href="livetvsuggested.html#liveTvTimersPage"><i class="material-icons">schedule</i>${TabScheduled}</a>
|
||||
<a href="livetvsuggested.html#liveTvSeriesTimersPage"><i class="material-icons">refresh</i>${TabSeries}</a>
|
||||
</div>
|
||||
<div style="padding: 1em 0;">
|
||||
<div>
|
||||
|
|
|
@ -7,11 +7,11 @@
|
|||
<div id="liveTvRecordingPage" data-role="page" class="page libraryPage liveTvPage" data-contextname="${HeaderLiveTv}" data-require="scripts/livetvcomponents,scripts/livetvrecording,paperbuttonstyle,livetvcss">
|
||||
<div class="libraryViewNav">
|
||||
<a href="livetvsuggested.html"><i class="material-icons">info</i>${TabSuggestions}</a>
|
||||
<a href="livetvguide.html"><i class="material-icons">grid_on</i>${TabGuide}</a>
|
||||
<a href="livetvchannels.html"><i class="material-icons">live_tv</i>${TabChannels}</a>
|
||||
<a href="livetvrecordings.html" class="ui-btn-active"><i class="material-icons">slideshow</i>${TabRecordings}</a>
|
||||
<a href="livetvtimers.html"><i class="material-icons">schedule</i>${TabScheduled}</a>
|
||||
<a href="livetvseriestimers.html"><i class="material-icons">refresh</i>${TabSeries}</a>
|
||||
<a href="livetvsuggested.html#liveTvGuidePage"><i class="material-icons">grid_on</i>${TabGuide}</a>
|
||||
<a href="livetvsuggested.html#liveTvChannelsPage"><i class="material-icons">live_tv</i>${TabChannels}</a>
|
||||
<a href="livetvsuggested.html#liveTvRecordingsPage" class="ui-btn-active"><i class="material-icons">slideshow</i>${TabRecordings}</a>
|
||||
<a href="livetvsuggested.html#liveTvTimersPage"><i class="material-icons">schedule</i>${TabScheduled}</a>
|
||||
<a href="livetvsuggested.html#liveTvSeriesTimersPage"><i class="material-icons">refresh</i>${TabSeries}</a>
|
||||
</div>
|
||||
<div style="padding: 1em 0;">
|
||||
<div>
|
||||
|
|
|
@ -7,11 +7,11 @@
|
|||
<div id="liveTvRecordingListPage" data-role="page" class="page libraryPage liveTvPage" data-contextname="${HeaderLiveTv}" data-require="scripts/livetvrecordinglist,livetvcss">
|
||||
<div class="libraryViewNav">
|
||||
<a href="livetvsuggested.html"><i class="material-icons">info</i>${TabSuggestions}</a>
|
||||
<a href="livetvguide.html"><i class="material-icons">grid_on</i>${TabGuide}</a>
|
||||
<a href="livetvchannels.html"><i class="material-icons">live_tv</i>${TabChannels}</a>
|
||||
<a href="livetvrecordings.html" class="ui-btn-active"><i class="material-icons">slideshow</i>${TabRecordings}</a>
|
||||
<a href="livetvtimers.html"><i class="material-icons">schedule</i>${TabScheduled}</a>
|
||||
<a href="livetvseriestimers.html"><i class="material-icons">refresh</i>${TabSeries}</a>
|
||||
<a href="livetvsuggested.html#liveTvGuidePage"><i class="material-icons">grid_on</i>${TabGuide}</a>
|
||||
<a href="livetvsuggested.html#liveTvChannelsPage"><i class="material-icons">live_tv</i>${TabChannels}</a>
|
||||
<a href="livetvsuggested.html#liveTvRecordingsPage" class="ui-btn-active"><i class="material-icons">slideshow</i>${TabRecordings}</a>
|
||||
<a href="livetvsuggested.html#liveTvTimersPage"><i class="material-icons">schedule</i>${TabScheduled}</a>
|
||||
<a href="livetvsuggested.html#liveTvSeriesTimersPage"><i class="material-icons">refresh</i>${TabSeries}</a>
|
||||
</div>
|
||||
<div data-role="content">
|
||||
<div class="viewSettings" style="margin:.5em 0;">
|
||||
|
|
|
@ -1,40 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Emby</title>
|
||||
</head>
|
||||
<body>
|
||||
<div id="liveTvRecordingsPage" data-role="page" class="page libraryPage liveTvPage" data-contextname="${HeaderLiveTv}" data-require="scripts/livetvrecordings,paperbuttonstyle,livetvcss">
|
||||
|
||||
<div class="libraryViewNav">
|
||||
<a href="livetvsuggested.html"><i class="material-icons">info</i>${TabSuggestions}</a>
|
||||
<a href="livetvguide.html"><i class="material-icons">grid_on</i>${TabGuide}</a>
|
||||
<a href="livetvchannels.html"><i class="material-icons">live_tv</i>${TabChannels}</a>
|
||||
<a href="livetvrecordings.html" class="ui-btn-active"><i class="material-icons">slideshow</i>${TabRecordings}</a>
|
||||
<a href="livetvtimers.html"><i class="material-icons">schedule</i>${TabScheduled}</a>
|
||||
<a href="livetvseriestimers.html"><i class="material-icons">refresh</i>${TabSeries}</a>
|
||||
</div>
|
||||
<div data-role="content">
|
||||
<div class="ehsContent">
|
||||
<div id="activeRecordings" style="display: none;">
|
||||
<h1 class="listHeader">${HeaderActiveRecordings}</h1>
|
||||
<div class="recordingItems itemsContainer"></div>
|
||||
<br />
|
||||
</div>
|
||||
<div id="latestRecordings" style="display: none;">
|
||||
<div>
|
||||
<h1 class="listHeader" style="display:inline-block;vertical-align:middle;">${HeaderLatestRecordings}</h1>
|
||||
<paper-button raised class="submit mini categorySyncButton" data-category="Latest"><iron-icon icon="refresh"></iron-icon><span>${ButtonSync}</span></paper-button>
|
||||
</div>
|
||||
<div class="recordingItems itemsContainer"></div>
|
||||
<br />
|
||||
</div>
|
||||
<div id="recordingGroups" style="display: none;">
|
||||
<h1 class="listHeader"><a href="livetvrecordinglist.html">${HeaderAllRecordings}<img src="css/images/rightarrow.png" class="headerArrowImage" /></a></h1>
|
||||
<div id="recordingGroupItems"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
|
@ -7,11 +7,11 @@
|
|||
<div id="liveTvSeriesTimerPage" data-role="page" class="page libraryPage liveTvPage" data-contextname="${HeaderLiveTv}" data-require="scripts/livetvcomponents,scripts/livetvseriestimer,livetvcss">
|
||||
<div class="libraryViewNav">
|
||||
<a href="livetvsuggested.html"><i class="material-icons">info</i>${TabSuggestions}</a>
|
||||
<a href="livetvguide.html"><i class="material-icons">grid_on</i>${TabGuide}</a>
|
||||
<a href="livetvchannels.html"><i class="material-icons">live_tv</i>${TabChannels}</a>
|
||||
<a href="livetvrecordings.html"><i class="material-icons">slideshow</i>${TabRecordings}</a>
|
||||
<a href="livetvtimers.html"><i class="material-icons">schedule</i>${TabScheduled}</a>
|
||||
<a href="livetvseriestimers.html" class="ui-btn-active"><i class="material-icons">refresh</i>${TabSeries}</a>
|
||||
<a href="livetvsuggested.html#liveTvGuidePage"><i class="material-icons">grid_on</i>${TabGuide}</a>
|
||||
<a href="livetvsuggested.html#liveTvChannelsPage"><i class="material-icons">live_tv</i>${TabChannels}</a>
|
||||
<a href="livetvsuggested.html#liveTvRecordingsPage"><i class="material-icons">slideshow</i>${TabRecordings}</a>
|
||||
<a href="livetvsuggested.html#liveTvTimersPage"><i class="material-icons">schedule</i>${TabScheduled}</a>
|
||||
<a href="livetvsuggested.html#liveTvSeriesTimersPage" class="ui-btn-active"><i class="material-icons">refresh</i>${TabSeries}</a>
|
||||
</div>
|
||||
<div data-role="content">
|
||||
<form class="liveTvSeriesTimerForm" style="margin: 0 auto; max-width: 720px;">
|
||||
|
|
|
@ -1,57 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Emby</title>
|
||||
</head>
|
||||
<body>
|
||||
<div id="liveTvSeriesTimersPage" data-role="page" class="page libraryPage liveTvPage" data-contextname="${HeaderLiveTv}" data-require="scripts/livetvseriestimers,livetvcss">
|
||||
<div class="libraryViewNav">
|
||||
<a href="livetvsuggested.html"><i class="material-icons">info</i>${TabSuggestions}</a>
|
||||
<a href="livetvguide.html"><i class="material-icons">grid_on</i>${TabGuide}</a>
|
||||
<a href="livetvchannels.html"><i class="material-icons">live_tv</i>${TabChannels}</a>
|
||||
<a href="livetvrecordings.html"><i class="material-icons">slideshow</i>${TabRecordings}</a>
|
||||
<a href="livetvtimers.html"><i class="material-icons">schedule</i>${TabScheduled}</a>
|
||||
<a href="#" class="ui-btn-active"><i class="material-icons">refresh</i>${TabSeries}</a>
|
||||
</div>
|
||||
<div data-role="content">
|
||||
<div style="max-width: 600px; margin: 0 auto;">
|
||||
|
||||
<div style="text-align: right;">
|
||||
<button data-mini="true" data-inline="true" onclick="$('#sortPanel', $(this).parents('.page')).panel( 'toggle' );">${ButtonSort}</button>
|
||||
</div>
|
||||
|
||||
<div id="items"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div data-role="panel" id="sortPanel" data-theme="a" data-position="right" data-display="overlay" data-position-fixed="true">
|
||||
|
||||
<form>
|
||||
<fieldset data-role="controlgroup">
|
||||
<legend>
|
||||
${HeaderSortBy}
|
||||
</legend>
|
||||
|
||||
<input class="radioSortBy defaultSort" type="radio" name="radioSortBy" id="radioSortName" value="on" checked="checked" data-sortby="SortName" data-mini="true">
|
||||
<label for="radioSortName">${OptionNameSort}</label>
|
||||
|
||||
<input class="radioSortBy" type="radio" name="radioSortBy" id="radioPriority" value="off" data-sortby="Priority" data-mini="true">
|
||||
<label for="radioPriority">${OptionPriority}</label>
|
||||
</fieldset>
|
||||
|
||||
<fieldset data-role="controlgroup">
|
||||
<legend>
|
||||
${HeaderSortOrder}
|
||||
</legend>
|
||||
|
||||
<input class="radioSortOrder" type="radio" name="radioSortOrder" id="radioAscending" value="on" checked="checked" data-sortorder="Ascending" data-mini="true">
|
||||
<label for="radioAscending">${OptionAscending}</label>
|
||||
|
||||
<input class="radioSortOrder" type="radio" name="radioSortOrder" id="radioDescending" value="off" data-sortorder="Descending" data-mini="true">
|
||||
<label for="radioDescending">${OptionDescending}</label>
|
||||
</fieldset>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
|
@ -8,11 +8,11 @@
|
|||
|
||||
<div class="libraryViewNav">
|
||||
<a href="#" class="ui-btn-active"><i class="material-icons">info</i>${TabSuggestions}</a>
|
||||
<a href="livetvguide.html"><i class="material-icons">grid_on</i>${TabGuide}</a>
|
||||
<a href="livetvchannels.html"><i class="material-icons">live_tv</i>${TabChannels}</a>
|
||||
<a href="livetvrecordings.html"><i class="material-icons">slideshow</i>${TabRecordings}</a>
|
||||
<a href="livetvtimers.html"><i class="material-icons">schedule</i>${TabScheduled}</a>
|
||||
<a href="livetvseriestimers.html"><i class="material-icons">refresh</i>${TabSeries}</a>
|
||||
<a href="#liveTvGuidePage"><i class="material-icons">grid_on</i>${TabGuide}</a>
|
||||
<a href="#liveTvChannelsPage"><i class="material-icons">live_tv</i>${TabChannels}</a>
|
||||
<a href="#liveTvRecordingsPage"><i class="material-icons">slideshow</i>${TabRecordings}</a>
|
||||
<a href="#liveTvTimersPage"><i class="material-icons">schedule</i>${TabScheduled}</a>
|
||||
<a href="#liveTvSeriesTimersPage"><i class="material-icons">refresh</i>${TabSeries}</a>
|
||||
</div>
|
||||
<div data-role="content">
|
||||
<div class="ehsContent">
|
||||
|
@ -45,5 +45,187 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="liveTvGuidePage" data-role="page" class="page libraryPage liveTvPage" data-contextname="${HeaderLiveTv}" data-require="scripts/registrationservices,scripts/livetvcomponents,scripts/livetvguide,paperbuttonstyle,livetvcss">
|
||||
<div class="libraryViewNav">
|
||||
<a href="#liveTvSuggestedPage"><i class="material-icons">info</i>${TabSuggestions}</a>
|
||||
<a href="#" class="ui-btn-active"><i class="material-icons">grid_on</i>${TabGuide}</a>
|
||||
<a href="#liveTvChannelsPage"><i class="material-icons">live_tv</i>${TabChannels}</a>
|
||||
<a href="#liveTvRecordingsPage"><i class="material-icons">slideshow</i>${TabRecordings}</a>
|
||||
<a href="#liveTvTimersPage"><i class="material-icons">schedule</i>${TabScheduled}</a>
|
||||
<a href="#liveTvSeriesTimersPage"><i class="material-icons">refresh</i>${TabSeries}</a>
|
||||
</div>
|
||||
<div data-role="content" style="padding-top: 5px;padding-left:0!important;padding-right:0!important;">
|
||||
|
||||
<div class="tvGuide">
|
||||
<div class="tvGuideHeader">
|
||||
<div class="channelTimeslotHeader">
|
||||
<div class="timeslotHeaderInner">
|
||||
<a class="btnSelectDate" href="#" style="display:block;padding-left:5px;color:#fff;text-decoration:none;font-weight:normal!important;padding:4px 10px 4px 0;"><i class="fa fa-calendar" style="margin-right:3px;"></i><span class="currentDate"></span></a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="timeslotHeaders hiddenScrollX"></div>
|
||||
</div>
|
||||
|
||||
<div class="programContainer">
|
||||
|
||||
<div class="channelList"></div>
|
||||
<div class="programGrid hiddenScrollX"></div>
|
||||
</div>
|
||||
<div class="channelPaging"></div>
|
||||
</div>
|
||||
<div class="guideRequiresUnlock readOnlyContent" style="margin:1em auto;text-align:center;display:none;padding:1em;">
|
||||
<p class="unlockText"></p>
|
||||
<paper-button raised class="secondary block btnUnlockGuide"><iron-icon icon="check"></iron-icon><span>${ButtonUnlockGuide}</span></paper-button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="liveTvChannelsPage" data-role="page" class="page libraryPage liveTvPage" data-contextname="${HeaderLiveTv}" data-require="scripts/livetvchannels,livetvcss">
|
||||
<div class="libraryViewNav">
|
||||
<a href="#liveTvSuggestedPage"><i class="material-icons">info</i>${TabSuggestions}</a>
|
||||
<a href="#liveTvGuidePage"><i class="material-icons">grid_on</i>${TabGuide}</a>
|
||||
<a href="#" class="ui-btn-active"><i class="material-icons">live_tv</i>${TabChannels}</a>
|
||||
<a href="#liveTvRecordingsPage"><i class="material-icons">slideshow</i>${TabRecordings}</a>
|
||||
<a href="#liveTvTimersPage"><i class="material-icons">schedule</i>${TabScheduled}</a>
|
||||
<a href="#liveTvSeriesTimersPage"><i class="material-icons">refresh</i>${TabSeries}</a>
|
||||
</div>
|
||||
<div data-role="content">
|
||||
<div class="viewSettings">
|
||||
<div class="listTopPaging">
|
||||
</div>
|
||||
</div>
|
||||
<div id="items" class="itemsContainer"></div>
|
||||
|
||||
</div>
|
||||
|
||||
<div data-role="panel" class="viewPanel" data-theme="a" data-position="right" data-display="overlay" data-position-fixed="true">
|
||||
<form>
|
||||
|
||||
<div data-role="controlgroup" data-type="horizontal" data-mini="true" class="viewPanelTabs">
|
||||
<a href="#" data-role="button" class="viewTabButton" data-tab="tabView">${TabView}</a>
|
||||
<a href="#" data-role="button" class="viewTabButton" data-tab="tabFilter">${TabFilter}</a>
|
||||
</div>
|
||||
|
||||
<div class="tabView viewTab">
|
||||
|
||||
<div>
|
||||
<label for="selectPageSize">${LabelPageSize}</label>
|
||||
<select id="selectPageSize"></select>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="tabFilter viewTab">
|
||||
<fieldset data-role="controlgroup">
|
||||
<legend>${HeaderFilters}</legend>
|
||||
<input class="chkStandardFilter" type="checkbox" id="chkFavorite" data-filter="IsFavorite" data-mini="true">
|
||||
<label for="chkFavorite">${OptionFavorite}</label>
|
||||
|
||||
<input class="chkStandardFilter" type="checkbox" id="chkLikes" data-filter="Likes" data-mini="true">
|
||||
<label for="chkLikes">${OptionLikes}</label>
|
||||
|
||||
<input class="chkStandardFilter" type="checkbox" id="chkDislikes" data-filter="Dislikes" data-mini="true">
|
||||
<label for="chkDislikes">${OptionDislikes}</label>
|
||||
</fieldset>
|
||||
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div id="liveTvRecordingsPage" data-role="page" class="page libraryPage liveTvPage" data-contextname="${HeaderLiveTv}" data-require="scripts/livetvrecordings,paperbuttonstyle,livetvcss">
|
||||
|
||||
<div class="libraryViewNav">
|
||||
<a href="#liveTvSuggestedPage"><i class="material-icons">info</i>${TabSuggestions}</a>
|
||||
<a href="#liveTvGuidePage"><i class="material-icons">grid_on</i>${TabGuide}</a>
|
||||
<a href="#liveTvChannelsPage"><i class="material-icons">live_tv</i>${TabChannels}</a>
|
||||
<a href="#" class="ui-btn-active"><i class="material-icons">slideshow</i>${TabRecordings}</a>
|
||||
<a href="#liveTvTimersPage"><i class="material-icons">schedule</i>${TabScheduled}</a>
|
||||
<a href="#liveTvSeriesTimersPage"><i class="material-icons">refresh</i>${TabSeries}</a>
|
||||
</div>
|
||||
<div data-role="content">
|
||||
<div class="ehsContent">
|
||||
<div id="activeRecordings" style="display: none;">
|
||||
<h1 class="listHeader">${HeaderActiveRecordings}</h1>
|
||||
<div class="recordingItems itemsContainer"></div>
|
||||
<br />
|
||||
</div>
|
||||
<div id="latestRecordings" style="display: none;">
|
||||
<div>
|
||||
<h1 class="listHeader" style="display:inline-block;vertical-align:middle;">${HeaderLatestRecordings}</h1>
|
||||
<paper-button raised class="submit mini categorySyncButton" data-category="Latest"><iron-icon icon="refresh"></iron-icon><span>${ButtonSync}</span></paper-button>
|
||||
</div>
|
||||
<div class="recordingItems itemsContainer"></div>
|
||||
<br />
|
||||
</div>
|
||||
<div id="recordingGroups" style="display: none;">
|
||||
<h1 class="listHeader"><a href="livetvrecordinglist.html">${HeaderAllRecordings}<img src="css/images/rightarrow.png" class="headerArrowImage" /></a></h1>
|
||||
<div id="recordingGroupItems"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="liveTvTimersPage" data-role="page" class="page libraryPage liveTvPage" data-contextname="${HeaderLiveTv}" data-require="scripts/livetvtimers,livetvcss">
|
||||
<div class="libraryViewNav">
|
||||
<a href="#liveTvSuggestedPage"><i class="material-icons">info</i>${TabSuggestions}</a>
|
||||
<a href="#liveTvGuidePage"><i class="material-icons">grid_on</i>${TabGuide}</a>
|
||||
<a href="#liveTvChannelsPage"><i class="material-icons">live_tv</i>${TabChannels}</a>
|
||||
<a href="#liveTvRecordingsPage"><i class="material-icons">slideshow</i>${TabRecordings}</a>
|
||||
<a href="#" class="ui-btn-active"><i class="material-icons">schedule</i>${TabScheduled}</a>
|
||||
<a href="#liveTvSeriesTimersPage"><i class="material-icons">refresh</i>${TabSeries}</a>
|
||||
</div>
|
||||
<div data-role="content">
|
||||
<div style="max-width: 600px; margin: 0 auto;">
|
||||
<div id="items"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="liveTvSeriesTimersPage" data-role="page" class="page libraryPage liveTvPage" data-contextname="${HeaderLiveTv}" data-require="scripts/livetvseriestimers,livetvcss">
|
||||
<div class="libraryViewNav">
|
||||
<a href="#liveTvSuggestedPage"><i class="material-icons">info</i>${TabSuggestions}</a>
|
||||
<a href="#liveTvGuidePage"><i class="material-icons">grid_on</i>${TabGuide}</a>
|
||||
<a href="#liveTvChannelsPage"><i class="material-icons">live_tv</i>${TabChannels}</a>
|
||||
<a href="#liveTvRecordingsPage"><i class="material-icons">slideshow</i>${TabRecordings}</a>
|
||||
<a href="#liveTvTimersPage"><i class="material-icons">schedule</i>${TabScheduled}</a>
|
||||
<a href="#" class="ui-btn-active"><i class="material-icons">refresh</i>${TabSeries}</a>
|
||||
</div>
|
||||
<div data-role="content">
|
||||
<div style="max-width: 600px; margin: 0 auto;">
|
||||
|
||||
<div style="text-align: right;">
|
||||
<button data-mini="true" data-inline="true" onclick="$('#sortPanel', $(this).parents('.page')).panel( 'toggle' );">${ButtonSort}</button>
|
||||
</div>
|
||||
|
||||
<div id="items"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div data-role="panel" id="sortPanel" data-theme="a" data-position="right" data-display="overlay" data-position-fixed="true">
|
||||
|
||||
<form>
|
||||
<fieldset data-role="controlgroup">
|
||||
<legend>
|
||||
${HeaderSortBy}
|
||||
</legend>
|
||||
|
||||
<input class="radioSortBy defaultSort" type="radio" name="radioSortBy" id="radioSortName" value="on" checked="checked" data-sortby="SortName" data-mini="true">
|
||||
<label for="radioSortName">${OptionNameSort}</label>
|
||||
|
||||
<input class="radioSortBy" type="radio" name="radioSortBy" id="radioPriority" value="off" data-sortby="Priority" data-mini="true">
|
||||
<label for="radioPriority">${OptionPriority}</label>
|
||||
</fieldset>
|
||||
|
||||
<fieldset data-role="controlgroup">
|
||||
<legend>
|
||||
${HeaderSortOrder}
|
||||
</legend>
|
||||
|
||||
<input class="radioSortOrder" type="radio" name="radioSortOrder" id="radioAscending" value="on" checked="checked" data-sortorder="Ascending" data-mini="true">
|
||||
<label for="radioAscending">${OptionAscending}</label>
|
||||
|
||||
<input class="radioSortOrder" type="radio" name="radioSortOrder" id="radioDescending" value="off" data-sortorder="Descending" data-mini="true">
|
||||
<label for="radioDescending">${OptionDescending}</label>
|
||||
</fieldset>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -7,11 +7,11 @@
|
|||
<div id="liveTvTimerPage" data-role="page" class="page libraryPage liveTvPage" data-contextname="${HeaderLiveTv}" data-require="scripts/livetvcomponents,scripts/livetvtimer,livetvcss">
|
||||
<div class="libraryViewNav">
|
||||
<a href="livetvsuggested.html"><i class="material-icons">info</i>${TabSuggestions}</a>
|
||||
<a href="livetvguide.html"><i class="material-icons">grid_on</i>${TabGuide}</a>
|
||||
<a href="livetvchannels.html"><i class="material-icons">live_tv</i>${TabChannels}</a>
|
||||
<a href="livetvrecordings.html"><i class="material-icons">slideshow</i>${TabRecordings}</a>
|
||||
<a href="livetvtimers.html" class="ui-btn-active"><i class="material-icons">schedule</i>${TabScheduled}</a>
|
||||
<a href="livetvseriestimers.html"><i class="material-icons">refresh</i>${TabSeries}</a>
|
||||
<a href="livetvsuggested.html#liveTvGuidePage"><i class="material-icons">grid_on</i>${TabGuide}</a>
|
||||
<a href="livetvsuggested.html#liveTvChannelsPage"><i class="material-icons">live_tv</i>${TabChannels}</a>
|
||||
<a href="livetvsuggested.html#liveTvRecordingsPage"><i class="material-icons">slideshow</i>${TabRecordings}</a>
|
||||
<a href="livetvsuggested.html#liveTvTimersPage" class="ui-btn-active"><i class="material-icons">schedule</i>${TabScheduled}</a>
|
||||
<a href="livetvsuggested.html#liveTvSeriesTimersPage"><i class="material-icons">refresh</i>${TabSeries}</a>
|
||||
</div>
|
||||
<div data-role="content">
|
||||
|
||||
|
@ -74,7 +74,7 @@
|
|||
<button type="submit" data-theme="a" data-icon="check" data-mini="true">
|
||||
${ButtonSave}
|
||||
</button>
|
||||
<button type="button" onclick="Dashboard.navigate('livetvtimers.html');" data-icon="delete" data-mini="true">
|
||||
<button type="button" onclick="Dashboard.navigate('livetvsuggested.html#liveTvTimersPage');" data-icon="delete" data-mini="true">
|
||||
${ButtonCancel}
|
||||
</button>
|
||||
</li>
|
||||
|
|
|
@ -1,23 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Emby</title>
|
||||
</head>
|
||||
<body>
|
||||
<div id="liveTvTimersPage" data-role="page" class="page libraryPage liveTvPage" data-contextname="${HeaderLiveTv}" data-require="scripts/livetvtimers,livetvcss">
|
||||
<div class="libraryViewNav">
|
||||
<a href="livetvsuggested.html"><i class="material-icons">info</i>${TabSuggestions}</a>
|
||||
<a href="livetvguide.html"><i class="material-icons">grid_on</i>${TabGuide}</a>
|
||||
<a href="livetvchannels.html"><i class="material-icons">live_tv</i>${TabChannels}</a>
|
||||
<a href="livetvrecordings.html"><i class="material-icons">slideshow</i>${TabRecordings}</a>
|
||||
<a href="livetvtimers.html" class="ui-btn-active"><i class="material-icons">schedule</i>${TabScheduled}</a>
|
||||
<a href="livetvseriestimers.html"><i class="material-icons">refresh</i>${TabSeries}</a>
|
||||
</div>
|
||||
<div data-role="content">
|
||||
<div style="max-width: 600px; margin: 0 auto;">
|
||||
<div id="items"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
|
@ -20,8 +20,8 @@
|
|||
|
||||
var pos = $(options.positionTo).offset();
|
||||
|
||||
pos.top += options.positionTo.innerHeight / 2;
|
||||
pos.left += options.positionTo.innerWidth / 2;
|
||||
pos.top += $(options.positionTo).innerHeight() / 2;
|
||||
pos.left += $(options.positionTo).innerWidth() / 2;
|
||||
|
||||
// Account for margins
|
||||
pos.top -= 24;
|
||||
|
|
|
@ -379,7 +379,7 @@
|
|||
mode: 'off'
|
||||
});
|
||||
|
||||
$(ApiClient).off(".autoorganizelog");
|
||||
$(ApiClient).off("websocketmessage.autoorganizelog", onWebSocketMessage);
|
||||
});
|
||||
|
||||
})(jQuery, document, window);
|
||||
|
|
|
@ -109,9 +109,10 @@
|
|||
|
||||
function setDefault(page) {
|
||||
|
||||
getElement().css('backgroundImage', 'url(css/images/splash.jpg)');
|
||||
getElement().style.backgroundImage = "url(css/images/splash.jpg)";
|
||||
|
||||
page.classList.add('backdropPage staticBackdropPage');
|
||||
page.classList.add('backdropPage');
|
||||
page.classList.add('staticBackdropPage');
|
||||
}
|
||||
|
||||
function isEnabledByDefault() {
|
||||
|
|
|
@ -1022,23 +1022,19 @@ $(document).on('pageshowready', "#dashboardPage", DashboardPage.onPageShow).on('
|
|||
showOverlayTimeout = null;
|
||||
}
|
||||
|
||||
$('.cardOverlayTarget:visible', this).each(function () {
|
||||
var elem = this.querySelector('.cardOverlayTarget');
|
||||
|
||||
var elem = this;
|
||||
|
||||
$(this).animate({ "height": "0" }, "fast", function () {
|
||||
|
||||
$(elem).hide();
|
||||
if ($(elem).is(':visible')) {
|
||||
require(["jquery", "velocity"], function ($, Velocity) {
|
||||
|
||||
Velocity.animate(elem, { "height": "0" },
|
||||
{
|
||||
complete: function () {
|
||||
$(elem).hide();
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
$('.cardOverlayTarget:visible', this).stop().animate({ "height": "0" }, function () {
|
||||
|
||||
$(this).hide();
|
||||
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
$.fn.createSessionItemMenus = function () {
|
||||
|
@ -1082,8 +1078,7 @@ $(document).on('pageshowready', "#dashboardPage", DashboardPage.onPageShow).on('
|
|||
return this;
|
||||
}
|
||||
|
||||
return this.off('.sessionItemMenu').on('mouseenter.sessionItemMenu', '.playingSession', onHoverIn)
|
||||
.on('mouseleave.sessionItemMenu', '.playingSession', onHoverOut);
|
||||
return this.off('mouseenter', '.playingSession', onHoverIn).off('mouseleave', '.playingSession', onHoverOut).on('mouseenter', '.playingSession', onHoverIn).on('mouseleave', '.playingSession', onHoverOut);
|
||||
};
|
||||
|
||||
})(jQuery, document, window);
|
||||
|
@ -1225,7 +1220,8 @@ $(document).on('pageshowready', "#dashboardPage", DashboardPage.onPageShow).on('
|
|||
elem.each(function () {
|
||||
|
||||
reloadData(this);
|
||||
});
|
||||
|
||||
}).addClass('activityLogListWidget');
|
||||
|
||||
var apiClient = ApiClient;
|
||||
|
||||
|
@ -1233,21 +1229,7 @@ $(document).on('pageshowready', "#dashboardPage", DashboardPage.onPageShow).on('
|
|||
return;
|
||||
}
|
||||
|
||||
$(apiClient).on('websocketmessage.activityloglistener', function (e, data) {
|
||||
|
||||
var msg = data;
|
||||
|
||||
if (msg.MessageType === "ActivityLogEntry") {
|
||||
elem.each(function () {
|
||||
|
||||
reloadData(this);
|
||||
});
|
||||
}
|
||||
|
||||
}).on('websocketopen.activityloglistener', function (e, data) {
|
||||
|
||||
startListening(apiClient);
|
||||
});
|
||||
$(apiClient).on('websocketmessage', onSocketMessage).on('websocketopen', onSocketOpen);
|
||||
}
|
||||
|
||||
function startListening(apiClient) {
|
||||
|
@ -1266,22 +1248,41 @@ $(document).on('pageshowready', "#dashboardPage", DashboardPage.onPageShow).on('
|
|||
|
||||
}
|
||||
|
||||
function onSocketOpen() {
|
||||
|
||||
var apiClient = ApiClient;
|
||||
if (apiClient) {
|
||||
startListening(apiClient);
|
||||
}
|
||||
}
|
||||
|
||||
function onSocketMessage(e, data) {
|
||||
|
||||
var msg = data;
|
||||
|
||||
if (msg.MessageType === "ActivityLogEntry") {
|
||||
$('.activityLogListWidget').each(function () {
|
||||
|
||||
reloadData(this);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function destroyList(elem) {
|
||||
|
||||
var apiClient = ApiClient;
|
||||
|
||||
if (apiClient) {
|
||||
$(apiClient).off('websocketopen.activityloglistener').off('websocketmessage.activityloglistener');
|
||||
$(apiClient).off('websocketopen', onSocketOpen).off('websocketmessage', onSocketOpen);
|
||||
|
||||
stopListening(apiClient);
|
||||
}
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
$.fn.activityLogList = function (action) {
|
||||
|
||||
if (action == 'destroy') {
|
||||
this.removeClass('activityLogListWidget');
|
||||
destroyList(this);
|
||||
} else {
|
||||
createList(this);
|
||||
|
@ -1310,7 +1311,7 @@ $(document).on('pageshowready', "#dashboardPage", DashboardPage.onPageShow).on('
|
|||
result.CustomPrefs[welcomeTourKey] = welcomeDismissValue;
|
||||
ApiClient.updateDisplayPreferences('dashboard', result, userId, 'dashboard');
|
||||
|
||||
$(page).off('.checktour');
|
||||
$(page).off('pageshowready', onPageShowReadyCheckTour);
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -1367,6 +1368,16 @@ $(document).on('pageshowready', "#dashboardPage", DashboardPage.onPageShow).on('
|
|||
});
|
||||
}
|
||||
|
||||
function onPageShowReadyCheckTour() {
|
||||
var page = this;
|
||||
|
||||
var apiClient = ApiClient;
|
||||
|
||||
if (apiClient && !AppInfo.isNativeApp) {
|
||||
showWelcomeIfNeeded(page, apiClient);
|
||||
}
|
||||
}
|
||||
|
||||
$(document).on('pageinitdepends', "#dashboardPage", function () {
|
||||
|
||||
var page = this;
|
||||
|
@ -1375,17 +1386,7 @@ $(document).on('pageshowready', "#dashboardPage", DashboardPage.onPageShow).on('
|
|||
takeTour(page, Dashboard.getCurrentUserId());
|
||||
});
|
||||
|
||||
}).on('pageshowready.checktour', "#dashboardPage", function () {
|
||||
|
||||
var page = this;
|
||||
|
||||
var apiClient = ApiClient;
|
||||
|
||||
if (apiClient && !AppInfo.isNativeApp) {
|
||||
showWelcomeIfNeeded(page, apiClient);
|
||||
}
|
||||
|
||||
});
|
||||
}).on('pageshowready', "#dashboardPage", onPageShowReadyCheckTour);
|
||||
|
||||
})(jQuery, document, window);
|
||||
|
||||
|
|
|
@ -285,17 +285,11 @@
|
|||
|
||||
reload(page);
|
||||
|
||||
$("body").on("popupafteropen.collections", ".popupIdentify", function (e) {
|
||||
$("#txtLookupName").focus().select();
|
||||
});
|
||||
|
||||
}).on('pagebeforehide', "#editCollectionTitlesPage", function () {
|
||||
|
||||
var page = this;
|
||||
|
||||
currentItem = null;
|
||||
|
||||
$("body").off("popupafteropen.collections");
|
||||
});
|
||||
|
||||
})(jQuery, document, window, window.FileReader, escape);
|
|
@ -809,9 +809,9 @@
|
|||
|
||||
function getAlbumArtists(form) {
|
||||
|
||||
return $('#txtAlbumArtist', form).val().trim().split(';').filter(function(s){
|
||||
return $('#txtAlbumArtist', form).val().trim().split(';').filter(function (s) {
|
||||
|
||||
return s.length > 0;
|
||||
return s.length > 0;
|
||||
|
||||
}).map(function (a) {
|
||||
|
||||
|
@ -823,9 +823,9 @@
|
|||
|
||||
function getArtists(form) {
|
||||
|
||||
return $('#txtArtist', form).val().trim().split(';').filter(function(s){
|
||||
return $('#txtArtist', form).val().trim().split(';').filter(function (s) {
|
||||
|
||||
return s.length > 0;
|
||||
return s.length > 0;
|
||||
|
||||
}).map(function (a) {
|
||||
|
||||
|
@ -1379,6 +1379,18 @@
|
|||
$(ApiClient).off("websocketmessage", onWebSocketMessageReceived);
|
||||
}
|
||||
|
||||
function onItemDeleted(e, itemId) {
|
||||
|
||||
if (currentItem && currentItem.Id == itemId) {
|
||||
|
||||
if (currentItem.ParentId) {
|
||||
Dashboard.navigate('edititemmetadata.html?id=' + currentItem.ParentId);
|
||||
} else {
|
||||
Dashboard.navigate('edititemmetadata.html');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$(document).on('pageinitdepends', "#editItemMetadataPage", function () {
|
||||
|
||||
var page = this;
|
||||
|
@ -1450,22 +1462,12 @@
|
|||
|
||||
reload(page);
|
||||
|
||||
$(LibraryBrowser).on('itemdeleting.editor', function (e, itemId) {
|
||||
|
||||
if (currentItem && currentItem.Id == itemId) {
|
||||
|
||||
if (currentItem.ParentId) {
|
||||
Dashboard.navigate('edititemmetadata.html?id=' + currentItem.ParentId);
|
||||
} else {
|
||||
Dashboard.navigate('edititemmetadata.html');
|
||||
}
|
||||
}
|
||||
});
|
||||
$(LibraryBrowser).on('itemdeleting', onItemDeleted);
|
||||
|
||||
}).on('pagebeforehide', "#editItemMetadataPage", function () {
|
||||
|
||||
var page = this;
|
||||
$(LibraryBrowser).off('itemdeleting.editor');
|
||||
$(LibraryBrowser).off('itemdeleting', onItemDeleted);
|
||||
|
||||
unbindItemChanged(page);
|
||||
|
||||
|
|
|
@ -269,6 +269,53 @@
|
|||
});
|
||||
}
|
||||
|
||||
function onNodeSelect(event, data) {
|
||||
var node = data.node;
|
||||
|
||||
var eventData = {
|
||||
id: node.id,
|
||||
itemType: node.li_attr.itemtype
|
||||
};
|
||||
|
||||
if (eventData.itemType != 'livetv' && eventData.itemType != 'mediafolders') {
|
||||
$(this).trigger('itemclicked', [eventData]);
|
||||
}
|
||||
}
|
||||
|
||||
function onNodeOpen(event, data) {
|
||||
|
||||
var page = $(this).parents('.page')[0];
|
||||
var node = data.node;
|
||||
|
||||
if (node.children && node.children) {
|
||||
loadNodesToLoad(page, node);
|
||||
}
|
||||
|
||||
if (node.li_attr && node.id != '#' && !node.li_attr.loadedFromServer) {
|
||||
|
||||
node.li_attr.loadedFromServer = true;
|
||||
|
||||
$.jstree.reference(".libraryTree", page).load_node(node.id, loadNodeCallback);
|
||||
}
|
||||
}
|
||||
|
||||
function onNodeLoad(event, data) {
|
||||
|
||||
var page = $(this).parents('.page')[0];
|
||||
var node = data.node;
|
||||
|
||||
if (node.children && node.children) {
|
||||
loadNodesToLoad(page, node);
|
||||
}
|
||||
|
||||
if (node.li_attr && node.id != '#' && !node.li_attr.loadedFromServer) {
|
||||
|
||||
node.li_attr.loadedFromServer = true;
|
||||
|
||||
$.jstree.reference(".libraryTree", page).load_node(node.id, loadNodeCallback);
|
||||
}
|
||||
}
|
||||
|
||||
function initializeTreeInternal(page, currentUser, openItems, selectedId) {
|
||||
|
||||
nodesToLoad = [];
|
||||
|
@ -293,50 +340,7 @@
|
|||
}
|
||||
}
|
||||
|
||||
}).off('select_node.jstree').on('select_node.jstree', function (event, data) {
|
||||
|
||||
var node = data.node;
|
||||
|
||||
var eventData = {
|
||||
id: node.id,
|
||||
itemType: node.li_attr.itemtype
|
||||
};
|
||||
|
||||
if (eventData.itemType != 'livetv' && eventData.itemType != 'mediafolders') {
|
||||
$(this).trigger('itemclicked', [eventData]);
|
||||
}
|
||||
|
||||
}).off('open_node.jstree').on('open_node.jstree', function (event, data) {
|
||||
|
||||
var node = data.node;
|
||||
|
||||
if (node.children && node.children) {
|
||||
loadNodesToLoad(page, node);
|
||||
}
|
||||
|
||||
if (node.li_attr && node.id != '#' && !node.li_attr.loadedFromServer) {
|
||||
|
||||
node.li_attr.loadedFromServer = true;
|
||||
|
||||
$.jstree.reference(".libraryTree", page).load_node(node.id, loadNodeCallback);
|
||||
}
|
||||
|
||||
}).off('load_node.jstree').on('load_node.jstree', function (event, data) {
|
||||
|
||||
var node = data.node;
|
||||
|
||||
if (node.children && node.children) {
|
||||
loadNodesToLoad(page, node);
|
||||
}
|
||||
|
||||
if (node.li_attr && node.id != '#' && !node.li_attr.loadedFromServer) {
|
||||
|
||||
node.li_attr.loadedFromServer = true;
|
||||
|
||||
$.jstree.reference(".libraryTree", page).load_node(node.id, loadNodeCallback);
|
||||
}
|
||||
|
||||
});
|
||||
}).off('select_node.jstree', onNodeSelect).on('select_node.jstree', onNodeSelect).off('open_node.jstree', onNodeOpen).on('open_node.jstree', onNodeOpen).off('load_node.jstree', onNodeLoad).on('load_node.jstree', onNodeLoad);
|
||||
}
|
||||
|
||||
function loadNodesToLoad(page, node) {
|
||||
|
@ -431,7 +435,7 @@
|
|||
|
||||
var page = this;
|
||||
|
||||
$('.libraryTree', page).off('select_node.jstree');
|
||||
$('.libraryTree', page).off('select_node.jstree', onNodeSelect).off('open_node.jstree', onNodeOpen).off('load_node.jstree', onNodeLoad);
|
||||
|
||||
});
|
||||
|
||||
|
|
|
@ -312,7 +312,7 @@ function replaceQueryString(url, param, value) {
|
|||
var re = new RegExp("([?|&])" + param + "=.*?(&|$)", "i");
|
||||
if (url.match(re))
|
||||
return url.replace(re, '$1' + param + "=" + value + '$2');
|
||||
else {
|
||||
else if (value) {
|
||||
|
||||
if (url.indexOf('?') == -1) {
|
||||
return url + '?' + param + "=" + value;
|
||||
|
@ -320,6 +320,8 @@ function replaceQueryString(url, param, value) {
|
|||
|
||||
return url + '&' + param + "=" + value;
|
||||
}
|
||||
|
||||
return url;
|
||||
}
|
||||
|
||||
function parseISO8601Date(s, options) {
|
||||
|
|
|
@ -54,7 +54,7 @@
|
|||
html += '</div>';
|
||||
|
||||
if (result.TotalRecordCount > result.Items.length) {
|
||||
var href = "favorites.html?sectionid=" + section.id;
|
||||
var href = "index.html#favoritesPage?sectionid=" + section.id;
|
||||
|
||||
html += '<a class="clearLink" href="' + href + '"><paper-button raised class="more">' + Globalize.translate('ButtonMoreItems') + '</paper-button></a>';
|
||||
}
|
||||
|
|
191
dashboard-ui/scripts/homenextup.js
Normal file
191
dashboard-ui/scripts/homenextup.js
Normal file
|
@ -0,0 +1,191 @@
|
|||
(function ($, document) {
|
||||
|
||||
function getView() {
|
||||
|
||||
return 'Thumb';
|
||||
}
|
||||
|
||||
function getResumeView() {
|
||||
|
||||
return 'Poster';
|
||||
}
|
||||
|
||||
function reload(page) {
|
||||
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
var context = '';
|
||||
|
||||
if (LibraryMenu.getTopParentId()) {
|
||||
|
||||
$('.scopedLibraryViewNav', page).show();
|
||||
$('.globalNav', page).hide();
|
||||
$('.scopedContent', page).show();
|
||||
context = 'tv';
|
||||
|
||||
loadResume(page);
|
||||
|
||||
} else {
|
||||
$('.scopedLibraryViewNav', page).hide();
|
||||
$('.globalNav', page).show();
|
||||
$('.scopedContent', page).hide();
|
||||
}
|
||||
|
||||
loadNextUp(page, context || 'home-nextup');
|
||||
}
|
||||
|
||||
function loadNextUp(page, context) {
|
||||
|
||||
var limit = AppInfo.hasLowImageBandwidth ?
|
||||
16 :
|
||||
24;
|
||||
|
||||
var query = {
|
||||
|
||||
Limit: limit,
|
||||
Fields: "PrimaryImageAspectRatio,SeriesInfo,DateCreated,SyncInfo",
|
||||
UserId: Dashboard.getCurrentUserId(),
|
||||
ExcludeLocationTypes: "Virtual",
|
||||
ImageTypeLimit: 1,
|
||||
EnableImageTypes: "Primary,Backdrop,Banner,Thumb"
|
||||
};
|
||||
|
||||
query.ParentId = LibraryMenu.getTopParentId();
|
||||
|
||||
ApiClient.getNextUpEpisodes(query).done(function (result) {
|
||||
|
||||
if (result.Items.length) {
|
||||
$('.noNextUpItems', page).hide();
|
||||
} else {
|
||||
$('.noNextUpItems', page).show();
|
||||
}
|
||||
|
||||
var view = getView();
|
||||
var html = '';
|
||||
|
||||
if (view == 'ThumbCard') {
|
||||
|
||||
html += LibraryBrowser.getPosterViewHtml({
|
||||
items: result.Items,
|
||||
shape: "backdrop",
|
||||
showTitle: true,
|
||||
preferThumb: true,
|
||||
showParentTitle: true,
|
||||
lazy: true,
|
||||
cardLayout: true,
|
||||
context: 'tv',
|
||||
showDetailsMenu: true
|
||||
});
|
||||
|
||||
} else if (view == 'Thumb') {
|
||||
|
||||
html += LibraryBrowser.getPosterViewHtml({
|
||||
items: result.Items,
|
||||
shape: "backdrop",
|
||||
showTitle: true,
|
||||
showParentTitle: true,
|
||||
overlayText: false,
|
||||
context: context,
|
||||
lazy: true,
|
||||
preferThumb: true,
|
||||
showDetailsMenu: true
|
||||
});
|
||||
}
|
||||
|
||||
var elem = page.querySelector('#nextUpItems');
|
||||
elem.innerHTML = html;
|
||||
ImageLoader.lazyChildren(elem);
|
||||
Dashboard.hideLoadingMsg();
|
||||
});
|
||||
}
|
||||
|
||||
function enableScrollX() {
|
||||
return $.browser.mobile && AppInfo.enableAppLayouts;
|
||||
}
|
||||
|
||||
function getThumbShape() {
|
||||
return enableScrollX() ? 'overflowBackdrop' : 'backdrop';
|
||||
}
|
||||
|
||||
function loadResume(page) {
|
||||
|
||||
var parentId = LibraryMenu.getTopParentId();
|
||||
|
||||
var screenWidth = $(window).width();
|
||||
|
||||
var limit = 6;
|
||||
|
||||
var options = {
|
||||
|
||||
SortBy: "DatePlayed",
|
||||
SortOrder: "Descending",
|
||||
IncludeItemTypes: "Episode",
|
||||
Filters: "IsResumable",
|
||||
Limit: limit,
|
||||
Recursive: true,
|
||||
Fields: "PrimaryImageAspectRatio,SeriesInfo,UserData,SyncInfo",
|
||||
ExcludeLocationTypes: "Virtual",
|
||||
ParentId: parentId,
|
||||
ImageTypeLimit: 1,
|
||||
EnableImageTypes: "Primary,Backdrop,Banner,Thumb"
|
||||
};
|
||||
|
||||
ApiClient.getItems(Dashboard.getCurrentUserId(), options).done(function (result) {
|
||||
|
||||
if (result.Items.length) {
|
||||
$('#resumableSection', page).show();
|
||||
} else {
|
||||
$('#resumableSection', page).hide();
|
||||
}
|
||||
|
||||
var view = getResumeView();
|
||||
var html = '';
|
||||
|
||||
if (view == 'PosterCard') {
|
||||
|
||||
html += LibraryBrowser.getPosterViewHtml({
|
||||
items: result.Items,
|
||||
shape: getThumbShape(),
|
||||
showTitle: true,
|
||||
showParentTitle: true,
|
||||
lazy: true,
|
||||
cardLayout: true,
|
||||
context: 'tv',
|
||||
showDetailsMenu: true
|
||||
});
|
||||
|
||||
} else if (view == 'Poster') {
|
||||
|
||||
html += LibraryBrowser.getPosterViewHtml({
|
||||
items: result.Items,
|
||||
shape: getThumbShape(),
|
||||
showTitle: true,
|
||||
showParentTitle: true,
|
||||
overlayText: screenWidth >= 800 && !AppInfo.hasLowImageBandwidth,
|
||||
lazy: true,
|
||||
context: 'tv',
|
||||
showDetailsMenu: true
|
||||
});
|
||||
}
|
||||
|
||||
var elem = page.querySelector('#resumableItems');
|
||||
elem.innerHTML = html;
|
||||
ImageLoader.lazyChildren(elem);
|
||||
});
|
||||
}
|
||||
|
||||
$(document).on('pagebeforeshowready', "#homeNextUpPage", function () {
|
||||
|
||||
var page = this;
|
||||
|
||||
if (enableScrollX()) {
|
||||
page.querySelector('#resumableItems').classList.add('hiddenScrollX');
|
||||
} else {
|
||||
page.querySelector('#resumableItems').classList.remove('hiddenScrollX');
|
||||
}
|
||||
|
||||
reload(page);
|
||||
});
|
||||
|
||||
|
||||
})(jQuery, document);
|
65
dashboard-ui/scripts/homeupcoming.js
Normal file
65
dashboard-ui/scripts/homeupcoming.js
Normal file
|
@ -0,0 +1,65 @@
|
|||
(function ($, document) {
|
||||
|
||||
$(document).on('pagebeforeshowready', "#homeUpcomingPage", function () {
|
||||
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
var page = this;
|
||||
|
||||
var limit = AppInfo.hasLowImageBandwidth ?
|
||||
24 :
|
||||
40;
|
||||
|
||||
var query = {
|
||||
|
||||
Limit: limit,
|
||||
Fields: "AirTime,UserData,SeriesStudio,SyncInfo",
|
||||
UserId: Dashboard.getCurrentUserId(),
|
||||
ImageTypeLimit: 1,
|
||||
EnableImageTypes: "Primary,Backdrop,Banner,Thumb"
|
||||
};
|
||||
|
||||
query.ParentId = LibraryMenu.getTopParentId();
|
||||
|
||||
var context = '';
|
||||
|
||||
if (query.ParentId) {
|
||||
|
||||
context = 'tv';
|
||||
|
||||
}
|
||||
|
||||
ApiClient.getJSON(ApiClient.getUrl("Shows/Upcoming", query)).done(function (result) {
|
||||
|
||||
var items = result.Items;
|
||||
|
||||
if (items.length) {
|
||||
page.querySelector('.noItemsMessage').style.display = 'none';
|
||||
} else {
|
||||
page.querySelector('.noItemsMessage').style.display = 'block';
|
||||
}
|
||||
|
||||
var elem = page.querySelector('#upcomingItems');
|
||||
elem.innerHTML = LibraryBrowser.getPosterViewHtml({
|
||||
items: items,
|
||||
showLocationTypeIndicator: false,
|
||||
shape: "backdrop",
|
||||
showTitle: true,
|
||||
showPremiereDate: true,
|
||||
showPremiereDateIndex: true,
|
||||
preferThumb: true,
|
||||
context: context || 'home-upcoming',
|
||||
lazy: true,
|
||||
showDetailsMenu: true
|
||||
|
||||
});
|
||||
|
||||
ImageLoader.lazyChildren(elem);
|
||||
|
||||
Dashboard.hideLoadingMsg();
|
||||
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
})(jQuery, document);
|
|
@ -129,7 +129,7 @@
|
|||
var elem = $('.itemVideo');
|
||||
|
||||
return elem
|
||||
.one('.loadedmetadata')
|
||||
.one('.loadedmetadata', onLoadedMetadata)
|
||||
.one('playing', onOneVideoPlaying)
|
||||
.on('timeupdate', onTimeUpdate)
|
||||
.on('ended', onEnded)
|
||||
|
@ -220,7 +220,7 @@
|
|||
}
|
||||
else {
|
||||
|
||||
$(elem).one("loadedmetadata.mediaplayerevent", onLoadedMetadata);
|
||||
$(elem).one("loadedmetadata", onLoadedMetadata);
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -247,7 +247,31 @@
|
|||
|
||||
if (elem) {
|
||||
|
||||
$(elem).off();
|
||||
if (elem.tagName == 'AUDIO') {
|
||||
|
||||
Events.off(elem, 'timeupdate', onTimeUpdate);
|
||||
Events.off(elem, 'ended', onEnded);
|
||||
Events.off(elem, 'volumechange', onVolumeChange);
|
||||
Events.off(elem, 'playing', onOneAudioPlaying);
|
||||
Events.off(elem, 'play', onPlay);
|
||||
Events.off(elem, 'pause', onPause);
|
||||
Events.off(elem, 'playing', onPlaying);
|
||||
Events.off(elem, 'error', onError);
|
||||
|
||||
} else {
|
||||
|
||||
Events.off(elem, 'loadedmetadata', onLoadedMetadata);
|
||||
Events.off(elem, 'playing', onOneVideoPlaying);
|
||||
Events.off(elem, 'timeupdate', onTimeUpdate);
|
||||
Events.off(elem, 'ended', onEnded);
|
||||
Events.off(elem, 'volumechange', onVolumeChange);
|
||||
Events.off(elem, 'play', onPlay);
|
||||
Events.off(elem, 'pause', onPause);
|
||||
Events.off(elem, 'playing', onPlaying);
|
||||
Events.off(elem, 'click', onClick);
|
||||
Events.off(elem, 'dblclick', onDblClick);
|
||||
Events.off(elem, 'error', onError);
|
||||
}
|
||||
|
||||
if (elem.tagName.toLowerCase() != 'audio') {
|
||||
$(elem).remove();
|
||||
|
|
|
@ -117,6 +117,8 @@
|
|||
$('.welcomeMessage', page).hide();
|
||||
} else {
|
||||
|
||||
Dashboard.hideLoadingMsg();
|
||||
|
||||
var elem = $('.welcomeMessage', page).show();
|
||||
|
||||
if (displayPreferences.CustomPrefs[homePageTourKey]) {
|
||||
|
@ -178,6 +180,8 @@
|
|||
if (window.ApiClient) {
|
||||
var userId = Dashboard.getCurrentUserId();
|
||||
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
getDisplayPreferences('home', userId).done(function (result) {
|
||||
|
||||
Dashboard.getCurrentUser().done(function (user) {
|
||||
|
@ -187,6 +191,7 @@
|
|||
if (!AppInfo.isNativeApp) {
|
||||
showWelcomeIfNeeded(page, result);
|
||||
}
|
||||
Dashboard.hideLoadingMsg();
|
||||
});
|
||||
|
||||
});
|
||||
|
|
|
@ -318,7 +318,7 @@
|
|||
LibraryBrowser.renderOverview(page.querySelector('.itemOverview'), item);
|
||||
|
||||
renderUserDataIcons(page, item);
|
||||
LibraryBrowser.renderLinks($('#itemLinks', page), item);
|
||||
LibraryBrowser.renderLinks(page.querySelector('#itemLinks'), item);
|
||||
|
||||
LibraryBrowser.renderGenres($('.itemGenres', page), item, context);
|
||||
|
||||
|
|
|
@ -129,7 +129,7 @@
|
|||
function onWebSocketMessage(e, data) {
|
||||
|
||||
var msg = data;
|
||||
var page = $.mobile.activePage;
|
||||
var page = $($.mobile.activePage)[0];
|
||||
|
||||
if (msg.MessageType === "UserDataChanged") {
|
||||
|
||||
|
@ -375,7 +375,7 @@
|
|||
LibraryBrowser.renderGenres($('.itemGenres', page), item, context);
|
||||
LibraryBrowser.renderStudios($('.itemStudios', page), item, context);
|
||||
renderUserDataIcons(page, item);
|
||||
LibraryBrowser.renderLinks($('.itemExternalLinks', page), item);
|
||||
LibraryBrowser.renderLinks(page.querySelector('.itemExternalLinks'), item);
|
||||
|
||||
$('.criticRatingScore', page).html((item.CriticRating || '0') + '%');
|
||||
|
||||
|
@ -1585,6 +1585,12 @@
|
|||
});
|
||||
}
|
||||
|
||||
function onItemDeleted(e, itemId) {
|
||||
if (currentItem && currentItem.Id == itemId) {
|
||||
Dashboard.navigate('index.html');
|
||||
}
|
||||
}
|
||||
|
||||
$(document).on('pageinitdepends', "#itemDetailPage", function () {
|
||||
|
||||
var page = this;
|
||||
|
@ -1637,53 +1643,46 @@
|
|||
|
||||
});
|
||||
|
||||
}).on('pagebeforeshowready', "#itemDetailPage", function () {
|
||||
|
||||
var page = this;
|
||||
|
||||
$(page).on("click.moreScenes", ".moreScenes", function () {
|
||||
$(page).on("click", ".moreScenes", function () {
|
||||
|
||||
Dashboard.getCurrentUser().done(function (user) {
|
||||
renderScenes(page, currentItem, user);
|
||||
});
|
||||
|
||||
}).on("click.morePeople", ".morePeople", function () {
|
||||
}).on("click", ".morePeople", function () {
|
||||
|
||||
renderCast(page, currentItem, getContext(currentItem));
|
||||
|
||||
}).on("click.moreSpecials", ".moreSpecials", function () {
|
||||
}).on("click", ".moreSpecials", function () {
|
||||
|
||||
Dashboard.getCurrentUser().done(function (user) {
|
||||
renderSpecials(page, currentItem, user);
|
||||
});
|
||||
|
||||
}).on("click.moreCriticReviews", ".moreCriticReviews", function () {
|
||||
}).on("click", ".moreCriticReviews", function () {
|
||||
|
||||
renderCriticReviews(page, currentItem);
|
||||
|
||||
});
|
||||
|
||||
}).on('pagebeforeshowready', "#itemDetailPage", function () {
|
||||
|
||||
var page = this;
|
||||
|
||||
reload(page);
|
||||
|
||||
Events.on(ApiClient, 'websocketmessage', onWebSocketMessage);
|
||||
|
||||
Events.on(LibraryBrowser, 'itemdeleting.detailpage', function (e, itemId) {
|
||||
|
||||
if (currentItem && currentItem.Id == itemId) {
|
||||
Dashboard.navigate('index.html');
|
||||
}
|
||||
});
|
||||
Events.on(LibraryBrowser, 'itemdeleting', onItemDeleted);
|
||||
|
||||
}).on('pagebeforehide', "#itemDetailPage", function () {
|
||||
|
||||
Events.off(LibraryBrowser, 'itemdeleting.detailpage');
|
||||
Events.off(LibraryBrowser, 'itemdeleting', onItemDeleted);
|
||||
|
||||
currentItem = null;
|
||||
|
||||
var page = this;
|
||||
|
||||
$(page).off("click.moreScenes").off("click.morePeople").off("click.moreSpecials").off("click.moreCriticReviews");
|
||||
|
||||
Events.off(ApiClient, 'websocketmessage', onWebSocketMessage);
|
||||
});
|
||||
|
||||
|
|
|
@ -545,7 +545,7 @@
|
|||
var id = item.Id || item.ItemId;
|
||||
|
||||
if (item.CollectionType == 'livetv') {
|
||||
return 'livetvsuggested.html';
|
||||
return 'livetvsuggested.html#liveTvSuggestedPage';
|
||||
}
|
||||
|
||||
if (item.CollectionType == 'channels') {
|
||||
|
@ -2138,7 +2138,9 @@
|
|||
|
||||
html = Globalize.translate('ValueLinks', html);
|
||||
|
||||
$(linksElem).html(html).trigger('create');
|
||||
linksElem.innerHTML = html;
|
||||
$(linksElem).trigger('create');
|
||||
$(linksElem).show();
|
||||
|
||||
} else {
|
||||
$(linksElem).hide();
|
||||
|
@ -2683,23 +2685,23 @@
|
|||
removeClass(detailContentEffectedByImage, 'detailContentEffectedByPortraitImage');
|
||||
|
||||
elem.classList.add('thumbDetailImageContainer');
|
||||
elem.classList.add('portraitDetailImageContainer');
|
||||
elem.classList.add('squareDetailImageContainer');
|
||||
elem.classList.remove('portraitDetailImageContainer');
|
||||
elem.classList.remove('squareDetailImageContainer');
|
||||
}
|
||||
else if (shape == 'square') {
|
||||
removeClass(detailContentEffectedByImage, 'detailContentEffectedByThumbImage');
|
||||
removeClass(detailContentEffectedByImage, 'detailContentEffectedByPortraitImage');
|
||||
addClass(detailContentEffectedByImage, 'detailContentEffectedBySquareImage');
|
||||
|
||||
elem.classList.add('thumbDetailImageContainer');
|
||||
elem.classList.add('portraitDetailImageContainer');
|
||||
elem.classList.remove('thumbDetailImageContainer');
|
||||
elem.classList.remove('portraitDetailImageContainer');
|
||||
elem.classList.add('squareDetailImageContainer');
|
||||
} else {
|
||||
removeClass(detailContentEffectedByImage, 'detailContentEffectedByThumbImage');
|
||||
removeClass(detailContentEffectedByImage, 'detailContentEffectedBySquareImage');
|
||||
addClass(detailContentEffectedByImage, 'detailContentEffectedByPortraitImage');
|
||||
|
||||
elem.classList.add('thumbDetailImageContainer');
|
||||
elem.classList.remove('thumbDetailImageContainer');
|
||||
elem.classList.add('portraitDetailImageContainer');
|
||||
elem.classList.remove('squareDetailImageContainer');
|
||||
}
|
||||
|
|
|
@ -350,9 +350,9 @@
|
|||
var href = card.getAttribute('data-href') || card.href;
|
||||
|
||||
if (!href) {
|
||||
var link = card.getElementsByTagName('a');
|
||||
if (link) {
|
||||
href = link.href;
|
||||
var links = card.getElementsByTagName('a');
|
||||
if (links.length) {
|
||||
href = links[0].href;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -518,7 +518,7 @@
|
|||
|
||||
$('.detailsMenu').remove();
|
||||
|
||||
var html = '<div data-role="popup" class="detailsMenu" data-transition="slidedown" style="border:0;padding:0;" data-ids="' + ids.join(',') + '" data-context="' + (context || '') + '">';
|
||||
var html = '<div data-role="popup" class="detailsMenu" style="border:0;padding:0;" data-ids="' + ids.join(',') + '" data-context="' + (context || '') + '">';
|
||||
|
||||
html += '<div style="padding:1em 1em;background:rgba(20,20,20,1);margin:0;text-align:center;" class="detailsMenuHeader">';
|
||||
html += '<button type="button" class="imageButton detailsMenuLeftButton" data-role="none"><i class="fa fa-arrow-left"></i></button>';
|
||||
|
@ -850,18 +850,28 @@
|
|||
preventHover = true;
|
||||
}
|
||||
|
||||
this.off('.cardMenu')
|
||||
.on('contextmenu.cardMenu', '.card', onCardTapHold)
|
||||
.off('.latestgroupings')
|
||||
.on('click.latestgroupings', '.groupedCard', onGroupedCardClick)
|
||||
.off('.dotmenu')
|
||||
.on('click.dotmenu', '.listviewMenuButton', onListViewMenuButtonClick);
|
||||
this.off('contextmenu', '.card', onCardTapHold);
|
||||
this.on('contextmenu', '.card', onCardTapHold);
|
||||
|
||||
this.off('click', '.groupedCard', onGroupedCardClick);
|
||||
this.on('click', '.groupedCard', onGroupedCardClick);
|
||||
|
||||
this.off('click', '.listviewMenuButton', onListViewMenuButtonClick);
|
||||
this.on('click', '.listviewMenuButton', onListViewMenuButtonClick);
|
||||
|
||||
if (!AppInfo.isTouchPreferred) {
|
||||
this.off('.cardHoverMenu').on('mouseenter.cardHoverMenu', '.card:not(.bannerCard)', onHoverIn).on('mouseleave.cardHoverMenu', '.card:not(.bannerCard)', onHoverOut).on("touchstart.cardHoverMenu", '.card:not(.bannerCard)', preventTouchHover);
|
||||
this.off('mouseenter', '.card:not(.bannerCard)', onHoverIn);
|
||||
this.on('mouseenter', '.card:not(.bannerCard)', onHoverIn);
|
||||
|
||||
this.off('mouseleave', '.card:not(.bannerCard)', onHoverOut);
|
||||
this.on('mouseleave', '.card:not(.bannerCard)', onHoverOut);
|
||||
|
||||
this.off("touchstart", '.card:not(.bannerCard)', preventTouchHover);
|
||||
this.on("touchstart", '.card:not(.bannerCard)', preventTouchHover);
|
||||
}
|
||||
|
||||
this.off('.mediaDetails').on('click.mediaDetails', '.mediaItem', onCardClick);
|
||||
this.off('click', '.mediaItem', onCardClick);
|
||||
this.on('click', '.mediaItem', onCardClick);
|
||||
|
||||
return this;
|
||||
};
|
||||
|
@ -927,6 +937,11 @@
|
|||
}).get();
|
||||
}
|
||||
|
||||
function onSyncJobListSubmit() {
|
||||
|
||||
hideSelections($($.mobile.activePage)[0]);
|
||||
}
|
||||
|
||||
function sync(page) {
|
||||
|
||||
var selection = getSelectedItems(page);
|
||||
|
@ -945,12 +960,8 @@
|
|||
items: selection
|
||||
});
|
||||
|
||||
Events.off(SyncManager, 'jobsubmit.librarylist');
|
||||
|
||||
Events.on(SyncManager, 'jobsubmit.librarylist', function () {
|
||||
|
||||
hideSelections(page);
|
||||
});
|
||||
Events.off(SyncManager, 'jobsubmit', onSyncJobListSubmit);
|
||||
Events.on(SyncManager, 'jobsubmit', onSyncJobListSubmit);
|
||||
}
|
||||
|
||||
function combineVersions(page) {
|
||||
|
@ -1214,7 +1225,7 @@
|
|||
}
|
||||
|
||||
function initializeApiClient(apiClient) {
|
||||
$(apiClient).off('websocketmessage.librarylist', onWebSocketMessage).on('websocketmessage.librarylist', onWebSocketMessage);
|
||||
$(apiClient).off('websocketmessage', onWebSocketMessage).on('websocketmessage', onWebSocketMessage);
|
||||
}
|
||||
|
||||
Dashboard.ready(function () {
|
||||
|
|
|
@ -125,11 +125,7 @@
|
|||
|
||||
if (AppInfo.isTouchPreferred) {
|
||||
|
||||
if ('ontouchend' in document) {
|
||||
$('.mainDrawerButton').on('touchend click', openMainDrawer);
|
||||
} else {
|
||||
$('.mainDrawerButton').on('click', openMainDrawer);
|
||||
}
|
||||
$('.mainDrawerButton').on('touchend', openMainDrawer).on('click', openMainDrawer);
|
||||
|
||||
} else {
|
||||
$('.mainDrawerButton').createHoverTouch().on('hovertouch', openMainDrawer);
|
||||
|
@ -378,6 +374,13 @@
|
|||
Events.on(drawer.querySelector('.lnkManageServer'), 'click', onManageServerClicked);
|
||||
}
|
||||
|
||||
function onSidebarLinkClick() {
|
||||
var section = this.getElementsByClassName('sectionName')[0];
|
||||
var text = section ? section.innerHTML : this.innerHTML;
|
||||
|
||||
document.querySelector('.libraryMenuButtonText').innerHTML = text;
|
||||
}
|
||||
|
||||
function updateLibraryMenu(user) {
|
||||
|
||||
if (!user) {
|
||||
|
@ -462,14 +465,7 @@
|
|||
libraryMenuOptions.innerHTML = html;
|
||||
var elem = libraryMenuOptions;
|
||||
|
||||
$('.sidebarLink', elem).off('click.updateText').on('click.updateText', function () {
|
||||
|
||||
var section = this.getElementsByClassName('sectionName')[0];
|
||||
var text = section ? section.innerHTML : this.innerHTML;
|
||||
|
||||
document.querySelector('.libraryMenuButtonText').innerHTML = text;
|
||||
|
||||
});
|
||||
$('.sidebarLink', elem).off('click', onSidebarLinkClick).on('click', onSidebarLinkClick);
|
||||
});
|
||||
|
||||
if (user.Policy.IsAdministrator) {
|
||||
|
@ -811,7 +807,7 @@
|
|||
Events.off(page, 'swiperight', onPageSwipeLeft);
|
||||
|
||||
if (canGoBack) {
|
||||
Events.on(page, 'swiperight', onPageSwipeLeft);
|
||||
//Events.on(page, 'swiperight', onPageSwipeLeft);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -862,9 +858,9 @@
|
|||
function initializeApiClient(apiClient) {
|
||||
|
||||
requiresLibraryMenuRefresh = true;
|
||||
Events.off(apiClient, 'websocketmessage.librarymenu', onWebSocketMessage);
|
||||
Events.off(apiClient, 'websocketmessage', onWebSocketMessage);
|
||||
|
||||
Events.on(apiClient, 'websocketmessage.librarymenu', onWebSocketMessage);
|
||||
Events.on(apiClient, 'websocketmessage', onWebSocketMessage);
|
||||
}
|
||||
|
||||
Dashboard.ready(function () {
|
||||
|
@ -878,7 +874,13 @@
|
|||
|
||||
});
|
||||
|
||||
Events.on(ConnectionManager, 'localusersignedin localusersignedout', function () {
|
||||
Events.on(ConnectionManager, 'localusersignedin', function () {
|
||||
requiresLibraryMenuRefresh = true;
|
||||
requiresViewMenuRefresh = true;
|
||||
requiresDrawerRefresh = true;
|
||||
});
|
||||
|
||||
Events.on(ConnectionManager, 'localusersignedout', function () {
|
||||
requiresLibraryMenuRefresh = true;
|
||||
requiresViewMenuRefresh = true;
|
||||
requiresDrawerRefresh = true;
|
||||
|
|
|
@ -208,7 +208,7 @@
|
|||
|
||||
if (currentPosterItem) {
|
||||
|
||||
$(currentPosterItem).off('click.overlay');
|
||||
$(currentPosterItem).off('click');
|
||||
currentPosterItem = null;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -126,7 +126,7 @@
|
|||
ApiClient.createLiveTvSeriesTimer(item).done(function () {
|
||||
|
||||
Dashboard.hideLoadingMsg();
|
||||
Dashboard.navigate('livetvseriestimers.html');
|
||||
Dashboard.navigate('livetvsuggested.html#liveTvSeriesTimersPage');
|
||||
|
||||
});
|
||||
|
||||
|
@ -134,7 +134,7 @@
|
|||
ApiClient.createLiveTvTimer(item).done(function () {
|
||||
|
||||
Dashboard.hideLoadingMsg();
|
||||
Dashboard.navigate('livetvtimers.html');
|
||||
Dashboard.navigate('livetvsuggested.html#liveTvTimersPage');
|
||||
|
||||
});
|
||||
}
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
|
||||
Dashboard.alert(Globalize.translate('MessageRecordingDeleted'));
|
||||
|
||||
Dashboard.navigate('livetvrecordings.html');
|
||||
Dashboard.navigate('livetvsuggested.html#liveTvRecordingsPage');
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
|
||||
Dashboard.alert(Globalize.translate('MessageRecordingCancelled'));
|
||||
|
||||
Dashboard.navigate('livetvtimers.html');
|
||||
Dashboard.navigate('livetvsuggested.html#liveTvTimersPage');
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -39,7 +39,7 @@
|
|||
|
||||
function monitorPlayer(player) {
|
||||
|
||||
Events.on(player, 'playbackstart.mediacontroller', function (e, state) {
|
||||
Events.on(player, 'playbackstart', function (e, state) {
|
||||
|
||||
var info = {
|
||||
QueueableMediaTypes: state.NowPlayingItem.MediaType,
|
||||
|
@ -53,7 +53,7 @@
|
|||
|
||||
});
|
||||
|
||||
Events.on(player, 'playbackstop.mediacontroller', function (e, state) {
|
||||
Events.on(player, 'playbackstop', function (e, state) {
|
||||
|
||||
var stopInfo = {
|
||||
itemId: state.NowPlayingItem.Id,
|
||||
|
@ -263,7 +263,7 @@
|
|||
|
||||
var keys = new bindKeys(self);
|
||||
|
||||
$(window).on("keydown", keys.keyBinding).on("keypress keyup", keys.keyPrevent);
|
||||
$(window).on("keydown", keys.keyBinding).on("keypress", keys.keyPrevent).on("keyup", keys.keyPrevent);
|
||||
|
||||
self.registerPlayer = function (player) {
|
||||
|
||||
|
@ -875,12 +875,14 @@
|
|||
});
|
||||
});
|
||||
|
||||
function onCastButtonClicked() {
|
||||
|
||||
showPlayerSelection();
|
||||
}
|
||||
|
||||
$(document).on('headercreated', function () {
|
||||
|
||||
$('.btnCast').off('.mediacontroller').on('click.mediacontroller', function () {
|
||||
|
||||
showPlayerSelection();
|
||||
});
|
||||
$('.btnCast').off('click', onCastButtonClicked).on('click', onCastButtonClicked);
|
||||
|
||||
}).on('pagebeforeshow', ".page", function () {
|
||||
|
||||
|
|
|
@ -678,10 +678,9 @@
|
|||
html += '</div>'; // videoBackdrop
|
||||
html += '</div>'; // mediaPlayer
|
||||
|
||||
$(document.body).append(html);
|
||||
|
||||
var mediaPlayerElem = $('#mediaPlayer', document.body);
|
||||
mediaPlayerElem.trigger('create');
|
||||
var div = document.createElement('div');
|
||||
div.innerHTML = html;
|
||||
document.body.appendChild(div);
|
||||
}
|
||||
|
||||
Dashboard.ready(function () {
|
||||
|
@ -858,49 +857,73 @@
|
|||
return html;
|
||||
}
|
||||
|
||||
function bindEventsForPlayback() {
|
||||
function onPopState() {
|
||||
// Stop playback on browser back button nav
|
||||
self.stop();
|
||||
return;
|
||||
}
|
||||
|
||||
function onBodyMouseMove() {
|
||||
idleHandler();
|
||||
}
|
||||
|
||||
function onFullScreenChange() {
|
||||
if (self.isFullScreen()) {
|
||||
enterFullScreen();
|
||||
idleState = true;
|
||||
|
||||
} else {
|
||||
exitFullScreenToWindow();
|
||||
}
|
||||
}
|
||||
|
||||
function bindEventsForPlayback(mediaRenderer) {
|
||||
|
||||
var hideElementsOnIdle = true;
|
||||
|
||||
if (hideElementsOnIdle) {
|
||||
$('.itemVideo').off('mousemove.videoplayer keydown.videoplayer scroll.videoplayer mousedown.videoplayer', idleHandler).on('mousemove.videoplayer keydown.videoplayer scroll.videoplayer mousedown.videoplayer', idleHandler).trigger('mousemove');
|
||||
|
||||
var itemVideo = document.querySelector('.itemVideo');
|
||||
if (itemVideo) {
|
||||
Events.on(itemVideo, 'mousemove', idleHandler);
|
||||
Events.on(itemVideo, 'keydown', idleHandler);
|
||||
Events.on(itemVideo, 'scroll', idleHandler);
|
||||
Events.on(itemVideo, 'mousedown', idleHandler);
|
||||
idleHandler();
|
||||
}
|
||||
}
|
||||
|
||||
$(document).on('webkitfullscreenchange.videoplayer mozfullscreenchange.videoplayer msfullscreenchange.videoplayer fullscreenchange.videoplayer', function (e) {
|
||||
$(document).on('webkitfullscreenchange', onFullScreenChange);
|
||||
$(document).on('mozfullscreenchange', onFullScreenChange);
|
||||
$(document).on('msfullscreenchange', onFullScreenChange);
|
||||
$(document).on('fullscreenchange', onFullScreenChange);
|
||||
|
||||
if (self.isFullScreen()) {
|
||||
enterFullScreen();
|
||||
idleState = true;
|
||||
|
||||
} else {
|
||||
exitFullScreenToWindow();
|
||||
}
|
||||
});
|
||||
|
||||
// Stop playback on browser back button nav
|
||||
$(window).one("popstate.videoplayer", function () {
|
||||
self.stop();
|
||||
return;
|
||||
});
|
||||
$(window).one("popstate", onPopState);
|
||||
|
||||
if (hideElementsOnIdle) {
|
||||
$(document.body).on("mousemove.videoplayer", function () {
|
||||
|
||||
idleHandler(this);
|
||||
});
|
||||
$(document.body).on("mousemove", onBodyMouseMove);
|
||||
}
|
||||
}
|
||||
|
||||
function unbindEventsForPlayback() {
|
||||
function unbindEventsForPlayback(mediaRenderer) {
|
||||
|
||||
$(document).off('.videoplayer');
|
||||
$(document).off('webkitfullscreenchange', onFullScreenChange);
|
||||
$(document).off('mozfullscreenchange', onFullScreenChange);
|
||||
$(document).off('msfullscreenchange', onFullScreenChange);
|
||||
$(document).off('fullscreenchange', onFullScreenChange);
|
||||
|
||||
// Stop playback on browser back button nav
|
||||
$(window).off("popstate.videoplayer");
|
||||
$(window).off("popstate", onPopState);
|
||||
|
||||
$(document.body).off("mousemove.videoplayer");
|
||||
$(document.body).off("mousemove", onBodyMouseMove);
|
||||
|
||||
$('.itemVideo').off('mousemove.videoplayer keydown.videoplayer scroll.videoplayer mousedown.videoplayer');
|
||||
var itemVideo = document.querySelector('.itemVideo');
|
||||
if (itemVideo) {
|
||||
Events.off(itemVideo, 'mousemove', idleHandler);
|
||||
Events.off(itemVideo, 'keydown', idleHandler);
|
||||
Events.off(itemVideo, 'scroll', idleHandler);
|
||||
Events.off(itemVideo, 'mousedown', idleHandler);
|
||||
}
|
||||
}
|
||||
|
||||
self.canAutoPlayVideo = function () {
|
||||
|
@ -926,7 +949,7 @@
|
|||
|
||||
currentTimeElement.html('--:--');
|
||||
|
||||
unbindEventsForPlayback();
|
||||
unbindEventsForPlayback(mediaRenderer);
|
||||
};
|
||||
|
||||
self.playVideo = function (item, mediaSource, startPosition) {
|
||||
|
@ -1087,9 +1110,8 @@
|
|||
|
||||
}).one("playing.mediaplayerevent", function () {
|
||||
|
||||
|
||||
// For some reason this is firing at the start, so don't bind until playback has begun
|
||||
$(this).on("ended.playbackstopped", self.onPlaybackStopped).one('ended.playnext', self.playNextAfterEnded);
|
||||
$(this).on("ended", self.onPlaybackStopped).one('ended', self.playNextAfterEnded);
|
||||
|
||||
self.onPlaybackStart(this, item, mediaSource);
|
||||
|
||||
|
@ -1160,7 +1182,7 @@
|
|||
}
|
||||
});
|
||||
|
||||
bindEventsForPlayback();
|
||||
bindEventsForPlayback(mediaRenderer);
|
||||
|
||||
mediaPlayerContainer.trigger('create');
|
||||
|
||||
|
@ -1185,7 +1207,7 @@
|
|||
}
|
||||
|
||||
var controls = requiresNativeControls ? '.videoAdvancedControls' : '.videoControls';
|
||||
controls = document.getElementsByClassName(controls)[0];
|
||||
controls = document.querySelector(controls);
|
||||
|
||||
var previousTrackButton = controls.getElementsByClassName('previousTrackButton')[0];
|
||||
var nextTrackButton = controls.getElementsByClassName('nextTrackButton')[0];
|
||||
|
|
|
@ -557,16 +557,16 @@
|
|||
|
||||
clearProgressInterval();
|
||||
|
||||
Events.off(mediaRenderer, 'ended.playbackstopped');
|
||||
Events.off(mediaRenderer, 'ended.playnext');
|
||||
Events.off(mediaRenderer, 'ended', self.onPlaybackStopped);
|
||||
Events.off(mediaRenderer, 'ended', self.playNextAfterEnded);
|
||||
|
||||
$(mediaRenderer).one("play", function () {
|
||||
|
||||
self.updateCanClientSeek(this);
|
||||
|
||||
Events.on(this, 'ended.playbackstopped', self.onPlaybackStopped);
|
||||
Events.on(this, 'ended', self.onPlaybackStopped);
|
||||
|
||||
$(this).one('ended.playnext', self.playNextAfterEnded);
|
||||
$(this).one('ended', self.playNextAfterEnded);
|
||||
|
||||
self.startProgressInterval();
|
||||
sendProgressUpdate();
|
||||
|
@ -1358,11 +1358,11 @@
|
|||
|
||||
mediaRenderer.stop();
|
||||
|
||||
Events.off(mediaRenderer, "ended.playnext");
|
||||
Events.off(mediaRenderer, 'ended', self.playNextAfterEnded);
|
||||
|
||||
$(mediaRenderer).one("ended", function() {
|
||||
|
||||
Events.off(this);
|
||||
$(this).off('.mediaplayerevent');
|
||||
|
||||
this.cleanup(destroyRenderer);
|
||||
|
||||
|
@ -1568,7 +1568,7 @@
|
|||
|
||||
Events.off(mediaRenderer, '.mediaplayerevent');
|
||||
|
||||
Events.off(mediaRenderer, 'ended.playbackstopped');
|
||||
Events.off(mediaRenderer, 'ended', self.onPlaybackStopped);
|
||||
|
||||
self.cleanup(mediaRenderer);
|
||||
|
||||
|
@ -1697,9 +1697,9 @@
|
|||
Logger.log('audio element event: playing');
|
||||
|
||||
// For some reason this is firing at the start, so don't bind until playback has begun
|
||||
Events.on(this, "ended.playbackstopped", self.onPlaybackStopped);
|
||||
|
||||
$(this).one('ended.playnext', self.playNextAfterEnded);
|
||||
Events.on(this, 'ended', self.onPlaybackStopped);
|
||||
|
||||
$(this).one('ended', self.playNextAfterEnded);
|
||||
|
||||
self.onPlaybackStart(this, item, mediaSource);
|
||||
|
||||
|
|
|
@ -449,7 +449,12 @@
|
|||
|
||||
if (currentPlayer) {
|
||||
|
||||
Events.off(currentPlayer, '.nowplayingbar');
|
||||
$(currentPlayer).off('playbackstart', onPlaybackStart)
|
||||
.off('playbackstop', onPlaybackStopped)
|
||||
.off('volumechange', onVolumeChanged)
|
||||
.off('playstatechange', onStateChanged)
|
||||
.off('positionchange', onStateChanged);
|
||||
|
||||
currentPlayer.endPlayerUpdates();
|
||||
currentPlayer = null;
|
||||
|
||||
|
@ -486,11 +491,11 @@
|
|||
onStateChanged.call(player, { type: 'init' }, state);
|
||||
});
|
||||
|
||||
$(player).on('playbackstart.nowplayingbar', onPlaybackStart)
|
||||
.on('playbackstop.nowplayingbar', onPlaybackStopped)
|
||||
.on('volumechange.nowplayingbar', onVolumeChanged)
|
||||
.on('playstatechange.nowplayingbar', onStateChanged)
|
||||
.on('positionchange.nowplayingbar', onStateChanged);
|
||||
$(player).on('playbackstart', onPlaybackStart)
|
||||
.on('playbackstop', onPlaybackStopped)
|
||||
.on('volumechange', onVolumeChanged)
|
||||
.on('playstatechange', onStateChanged)
|
||||
.on('positionchange', onStateChanged);
|
||||
}
|
||||
|
||||
Dashboard.ready(function () {
|
||||
|
|
|
@ -565,7 +565,12 @@
|
|||
|
||||
if (currentPlayer) {
|
||||
|
||||
$(currentPlayer).off('.nowplayingpage');
|
||||
$(currentPlayer).off('playbackstart', onPlaybackStart)
|
||||
.off('playbackstop', onPlaybackStopped)
|
||||
.off('volumechange', onStateChanged)
|
||||
.off('playstatechange', onStateChanged)
|
||||
.off('positionchange', onStateChanged);
|
||||
|
||||
currentPlayer.endPlayerUpdates();
|
||||
currentPlayer = null;
|
||||
}
|
||||
|
@ -586,11 +591,11 @@
|
|||
onStateChanged.call(player, { type: 'init' }, state);
|
||||
});
|
||||
|
||||
$(player).on('playbackstart.nowplayingpage', onPlaybackStart)
|
||||
.on('playbackstop.nowplayingpage', onPlaybackStopped)
|
||||
.on('volumechange.nowplayingpage', onStateChanged)
|
||||
.on('playstatechange.nowplayingpage', onStateChanged)
|
||||
.on('positionchange.nowplayingpage', onStateChanged);
|
||||
$(player).on('playbackstart', onPlaybackStart)
|
||||
.on('playbackstop', onPlaybackStopped)
|
||||
.on('volumechange', onStateChanged)
|
||||
.on('playstatechange', onStateChanged)
|
||||
.on('positionchange', onStateChanged);
|
||||
|
||||
var playerInfo = MediaController.getPlayerInfo();
|
||||
|
||||
|
@ -708,6 +713,10 @@
|
|||
return true;
|
||||
}
|
||||
|
||||
function onPlayerChange() {
|
||||
bindToPlayer($($.mobile.activePage)[0], MediaController.getCurrentPlayer());
|
||||
}
|
||||
|
||||
$(document).on('pageinitdepends', "#nowPlayingPage", function () {
|
||||
|
||||
var page = this;
|
||||
|
@ -766,10 +775,7 @@
|
|||
|
||||
Dashboard.ready(function () {
|
||||
|
||||
$(MediaController).on('playerchange.nowplayingpage', function () {
|
||||
|
||||
bindToPlayer(page, MediaController.getCurrentPlayer());
|
||||
});
|
||||
$(MediaController).on('playerchange', onPlayerChange);
|
||||
|
||||
bindToPlayer(page, MediaController.getCurrentPlayer());
|
||||
|
||||
|
@ -787,7 +793,7 @@
|
|||
|
||||
releaseCurrentPlayer();
|
||||
|
||||
$(MediaController).off('playerchange.nowplayingpage');
|
||||
$(MediaController).off('playerchange', onPlayerChange);
|
||||
|
||||
lastPlayerState = null;
|
||||
$(document.body).removeClass('hiddenViewMenuBar').removeClass('hiddenNowPlayingBar');
|
||||
|
|
|
@ -227,14 +227,19 @@
|
|||
|
||||
function hideSearchMenu() {
|
||||
|
||||
if ($('.viewMenuSearch').is(':visible')) {
|
||||
var viewMenuSearch = document.querySelector('.viewMenuSearch');
|
||||
|
||||
if (!viewMenuSearch) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!viewMenuSearch.classList.contains('hide')) {
|
||||
require(["jquery", "velocity"], function ($, Velocity) {
|
||||
|
||||
$('.btnCloseSearch').hide();
|
||||
var elem = $('.viewMenuSearch')
|
||||
.css({ left: '0' })[0];
|
||||
viewMenuSearch.style.left = '0';
|
||||
|
||||
Velocity.animate(elem, { "left": "100%" },
|
||||
Velocity.animate(viewMenuSearch, { "left": "100%" },
|
||||
{
|
||||
complete: function () {
|
||||
$('.viewMenuSearch').visible(false);
|
||||
|
|
|
@ -440,7 +440,7 @@
|
|||
|
||||
html += '<div>';
|
||||
html += '<h1 style="display:inline-block; vertical-align:middle;" class="' + cssClass + '">' + Globalize.translate('HeaderLatestTvRecordings') + '</h1>';
|
||||
html += '<a href="livetvrecordings.html?context=livetv" class="clearLink" style="margin-left:2em;"><paper-button raised class="more mini"><span>' + Globalize.translate('ButtonMore') + '</span></paper-button></a>';
|
||||
html += '<a href="livetvsuggested.html#liveTvRecordingsPage?context=livetv" class="clearLink" style="margin-left:2em;"><paper-button raised class="more mini"><span>' + Globalize.translate('ButtonMore') + '</span></paper-button></a>';
|
||||
html += '</div>';
|
||||
}
|
||||
|
||||
|
|
|
@ -33,7 +33,7 @@ var Dashboard = {
|
|||
//$.mobile.listview.prototype.options.dividerTheme = "b";
|
||||
|
||||
//$.mobile.popup.prototype.options.theme = "c";
|
||||
$.mobile.popup.prototype.options.transition = "pop";
|
||||
$.mobile.popup.prototype.options.transition = "none";
|
||||
|
||||
//$.mobile.keepNative = "textarea";
|
||||
|
||||
|
@ -623,7 +623,7 @@ var Dashboard = {
|
|||
html += '</paper-dialog>';
|
||||
|
||||
$(document.body).append(html);
|
||||
|
||||
|
||||
document.body.classList.add('bodyWithPopupOpen');
|
||||
|
||||
// This timeout is obviously messy but it's unclear how to determine when the webcomponent is ready for use
|
||||
|
@ -1734,9 +1734,9 @@ var AppInfo = {};
|
|||
apiClient.getDefaultImageQuality = Dashboard.getDefaultImageQuality;
|
||||
apiClient.normalizeImageOptions = Dashboard.normalizeImageOptions;
|
||||
|
||||
$(apiClient).off('.dashboard')
|
||||
.on("websocketmessage.dashboard", Dashboard.onWebSocketMessageReceived)
|
||||
.on('requestfail.dashboard', Dashboard.onRequestFail);
|
||||
$(apiClient).off("websocketmessage", Dashboard.onWebSocketMessageReceived).off('requestfail', Dashboard.onRequestFail);
|
||||
|
||||
$(apiClient).on("websocketmessage", Dashboard.onWebSocketMessageReceived).on('requestfail', Dashboard.onRequestFail);
|
||||
}
|
||||
|
||||
//localStorage.clear();
|
||||
|
@ -2014,11 +2014,12 @@ var AppInfo = {};
|
|||
|
||||
$(document).on('WebComponentsReady', function () {
|
||||
|
||||
var drawer = $('.mainDrawerPanel').removeClass('mainDrawerPanelPreInit')[0];
|
||||
var drawer = document.querySelector('.mainDrawerPanel');
|
||||
drawer.classList.remove('mainDrawerPanelPreInit');
|
||||
drawer.forceNarrow = true;
|
||||
drawer.drawerWidth = screen.availWidth >= 330 ? "310px" : "270px";
|
||||
|
||||
if ($.browser.safari) {
|
||||
if ($.browser.safari && !AppInfo.isNativeApp) {
|
||||
drawer.disableEdgeSwipe = true;
|
||||
}
|
||||
|
||||
|
|
|
@ -311,7 +311,7 @@
|
|||
});
|
||||
|
||||
startListening(page);
|
||||
$(ApiClient).on("websocketmessage.syncactivity", onWebSocketMessage);
|
||||
$(ApiClient).on("websocketmessage", onWebSocketMessage);
|
||||
|
||||
}).on('pagebeforehide', ".syncActivityPage", function () {
|
||||
|
||||
|
@ -323,7 +323,7 @@
|
|||
});
|
||||
|
||||
stopListening();
|
||||
$(ApiClient).off(".syncactivity");
|
||||
$(ApiClient).off("websocketmessage", onWebSocketMessage);
|
||||
});
|
||||
|
||||
})();
|
|
@ -403,14 +403,14 @@
|
|||
loadJob(page);
|
||||
|
||||
startListening(page);
|
||||
$(ApiClient).on("websocketmessage.syncJobPage", onWebSocketMessage);
|
||||
$(ApiClient).on("websocketmessage", onWebSocketMessage);
|
||||
|
||||
}).on('pagebeforehide', ".syncJobPage", function () {
|
||||
|
||||
var page = this;
|
||||
|
||||
stopListening();
|
||||
$(ApiClient).off(".syncJobPage");
|
||||
$(ApiClient).off("websocketmessage", onWebSocketMessage);
|
||||
});
|
||||
|
||||
})();
|
|
@ -72,13 +72,16 @@ $.fn.taskButton = function (options) {
|
|||
});
|
||||
}
|
||||
|
||||
function onButtonClick(instance, id) {
|
||||
function onButtonClick() {
|
||||
|
||||
var button = this;
|
||||
var id = button.getAttribute('data-taskid');
|
||||
|
||||
var key = 'scheduledTaskButton' + options.taskKey;
|
||||
var expectedValue = '4';
|
||||
|
||||
if (appStorage.getItem(key) == expectedValue) {
|
||||
onScheduledTaskMessageConfirmed(instance, id);
|
||||
onScheduledTaskMessageConfirmed(button, id);
|
||||
} else {
|
||||
|
||||
var msg = Globalize.translate('ConfirmMessageScheduledTaskButton');
|
||||
|
@ -91,13 +94,28 @@ $.fn.taskButton = function (options) {
|
|||
if (result) {
|
||||
|
||||
appStorage.setItem(key, expectedValue);
|
||||
onScheduledTaskMessageConfirmed(instance, id);
|
||||
onScheduledTaskMessageConfirmed(button, id);
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
function onSocketOpen() {
|
||||
if (ApiClient.isWebSocketOpen()) {
|
||||
ApiClient.sendWebSocketMessage("ScheduledTasksInfoStart", "1000,1000");
|
||||
}
|
||||
}
|
||||
|
||||
function onSocketMessage(e, msg) {
|
||||
if (msg.MessageType == "ScheduledTasksInfo") {
|
||||
|
||||
var tasks = msg.Data;
|
||||
|
||||
updateTasks(self, tasks);
|
||||
}
|
||||
}
|
||||
|
||||
var self = this;
|
||||
|
||||
if (options.panel) {
|
||||
|
@ -106,8 +124,8 @@ $.fn.taskButton = function (options) {
|
|||
|
||||
if (options.mode == 'off') {
|
||||
|
||||
this.off(".taskbutton");
|
||||
$(ApiClient).off(".taskbutton");
|
||||
this.off('click', onButtonClick);
|
||||
$(ApiClient).off("websocketmessage", onSocketMessage).off('websocketopen', onSocketOpen);
|
||||
|
||||
if (ApiClient.isWebSocketOpen()) {
|
||||
ApiClient.sendWebSocketMessage("ScheduledTasksInfoStop");
|
||||
|
@ -115,13 +133,7 @@ $.fn.taskButton = function (options) {
|
|||
|
||||
} else if (this.length) {
|
||||
|
||||
this.on('click.taskbutton', function () {
|
||||
|
||||
var button = this;
|
||||
var id = button.getAttribute('data-taskid');
|
||||
|
||||
onButtonClick(self, id);
|
||||
});
|
||||
this.on('click', onButtonClick);
|
||||
|
||||
pollTasks(self);
|
||||
|
||||
|
@ -129,21 +141,7 @@ $.fn.taskButton = function (options) {
|
|||
ApiClient.sendWebSocketMessage("ScheduledTasksInfoStart", "1000,1000");
|
||||
}
|
||||
|
||||
$(ApiClient).on("websocketmessage.taskbutton", function (e, msg) {
|
||||
|
||||
if (msg.MessageType == "ScheduledTasksInfo") {
|
||||
|
||||
var tasks = msg.Data;
|
||||
|
||||
updateTasks(self, tasks);
|
||||
}
|
||||
|
||||
}).on('websocketopen.taskbutton', function () {
|
||||
|
||||
if (ApiClient.isWebSocketOpen()) {
|
||||
ApiClient.sendWebSocketMessage("ScheduledTasksInfoStart", "1000,1000");
|
||||
}
|
||||
});
|
||||
$(ApiClient).on("websocketmessage", onSocketMessage).on('websocketopen', onSocketOpen);
|
||||
}
|
||||
|
||||
return this;
|
||||
|
|
|
@ -18,16 +18,12 @@
|
|||
|
||||
if (LibraryMenu.getTopParentId()) {
|
||||
|
||||
$('.scopedLibraryViewNav', page).show();
|
||||
$('.globalNav', page).hide();
|
||||
$('.scopedContent', page).show();
|
||||
context = 'tv';
|
||||
|
||||
loadResume(page);
|
||||
|
||||
} else {
|
||||
$('.scopedLibraryViewNav', page).hide();
|
||||
$('.globalNav', page).show();
|
||||
$('.scopedContent', page).hide();
|
||||
}
|
||||
|
||||
|
|
|
@ -2,20 +2,6 @@
|
|||
|
||||
$(document).on('pagebeforeshowready', "#tvUpcomingPage", function () {
|
||||
|
||||
var page = this;
|
||||
|
||||
if (LibraryMenu.getTopParentId()) {
|
||||
|
||||
$('.scopedLibraryViewNav', page).show();
|
||||
$('.globalNav', page).hide();
|
||||
|
||||
} else {
|
||||
$('.scopedLibraryViewNav', page).hide();
|
||||
$('.globalNav', page).show();
|
||||
}
|
||||
|
||||
}).on('pagebeforeshowready', "#tvUpcomingPage", function () {
|
||||
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
var page = this;
|
||||
|
|
1
dashboard-ui/thirdparty/emby-icons.html
vendored
1
dashboard-ui/thirdparty/emby-icons.html
vendored
|
@ -107,6 +107,7 @@ See [iron-iconset](#iron-iconset) and [iron-iconset-svg](#iron-iconset-svg) for
|
|||
<g id="keyboard-arrow-right"><path d="M8.59 16.34l4.58-4.59-4.58-4.59L10 5.75l6 6-6 6z" /></g>
|
||||
<g id="keyboard-arrow-up"><path d="M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z" /></g>
|
||||
<g id="queue-music"><path d="M15 6H3v2h12V6zm0 4H3v2h12v-2zM3 16h8v-2H3v2zM17 6v8.18c-.31-.11-.65-.18-1-.18-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3V8h3V6h-5z" /></g>
|
||||
<g id="games"><path d="M15 7.5V2H9v5.5l3 3 3-3zM7.5 9H2v6h5.5l3-3-3-3zM9 16.5V22h6v-5.5l-3-3-3 3zM16.5 9l-3 3 3 3H22V9h-5.5z" /></g>
|
||||
</defs>
|
||||
</svg>
|
||||
</iron-iconset-svg>
|
||||
|
|
|
@ -6,13 +6,7 @@
|
|||
<body>
|
||||
<div id="tvRecommendedPage" data-role="page" class="page libraryPage backdropPage" data-backdroptype="series" data-require="scripts/tvrecommended,paperbuttonstyle">
|
||||
|
||||
<div class="libraryViewNav globalNav" style="display: none;">
|
||||
<a href="index.html"><i class="material-icons">home</i>${TabHome}</a>
|
||||
<a href="#" class="ui-btn-active"><i class="material-icons">navigate_next</i>${TabNextUp}</a>
|
||||
<a href="favorites.html"><i class="material-icons">favorite</i>${TabFavorites}</a>
|
||||
<a href="tvupcoming.html"><i class="material-icons">schedule</i>${TabUpcoming}</a>
|
||||
</div>
|
||||
<div class="libraryViewNav scopedLibraryViewNav" style="display: none;">
|
||||
<div class="libraryViewNav scopedLibraryViewNav">
|
||||
<a href="tvrecommended.html" class="ui-btn-active"><i class="material-icons">info</i>${TabSuggestions}</a>
|
||||
<a href="tvlatest.html"><i class="material-icons">new_releases</i>${TabLatest}</a>
|
||||
<a href="tvupcoming.html"><i class="material-icons">schedule</i>${TabUpcoming}</a>
|
||||
|
|
|
@ -5,13 +5,7 @@
|
|||
</head>
|
||||
<body>
|
||||
<div id="tvUpcomingPage" data-role="page" class="page libraryPage backdropPage" data-backdroptype="series" data-require="scripts/tvupcoming">
|
||||
<div class="libraryViewNav globalNav" style="display: none;">
|
||||
<a href="index.html"><i class="material-icons">home</i>${TabHome}</a>
|
||||
<a href="tvrecommended.html"><i class="material-icons">navigate_next</i>${TabNextUp}</a>
|
||||
<a href="favorites.html"><i class="material-icons">favorite</i>${TabFavorites}</a>
|
||||
<a href="#" class="ui-btn-active"><i class="material-icons">schedule</i>${TabUpcoming}</a>
|
||||
</div>
|
||||
<div class="libraryViewNav scopedLibraryViewNav" style="display: none;">
|
||||
<div class="libraryViewNav scopedLibraryViewNav">
|
||||
<a href="tvrecommended.html"><i class="material-icons">info</i>${TabSuggestions}</a>
|
||||
<a href="tvlatest.html"><i class="material-icons">new_releases</i>${TabLatest}</a>
|
||||
<a href="tvupcoming.html" class="ui-btn-active"><i class="material-icons">schedule</i>${TabUpcoming}</a>
|
||||
|
|
|
@ -248,12 +248,12 @@
|
|||
function showCommand(result) {
|
||||
|
||||
if (result.category == 'tvguide') {
|
||||
Dashboard.navigate('livetvguide.html');
|
||||
Dashboard.navigate('livetvsuggested.html#liveTvGuidePage');
|
||||
return;
|
||||
}
|
||||
|
||||
if (result.category == 'recordings') {
|
||||
Dashboard.navigate('livetvrecordings.html');
|
||||
Dashboard.navigate('livetvsuggested.html#liveTvRecordingsPage');
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -17113,6 +17113,7 @@ paper-ripple {
|
|||
<g id="keyboard-arrow-right"><path d="M8.59 16.34l4.58-4.59-4.58-4.59L10 5.75l6 6-6 6z"></path></g>
|
||||
<g id="keyboard-arrow-up"><path d="M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z"></path></g>
|
||||
<g id="queue-music"><path d="M15 6H3v2h12V6zm0 4H3v2h12v-2zM3 16h8v-2H3v2zM17 6v8.18c-.31-.11-.65-.18-1-.18-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3V8h3V6h-5z"></path></g>
|
||||
<g id="games"><path d="M15 7.5V2H9v5.5l3 3 3-3zM7.5 9H2v6h5.5l3-3-3-3zM9 16.5V22h6v-5.5l-3-3-3 3zM16.5 9l-3 3 3 3H22V9h-5.5z"></path></g>
|
||||
</defs>
|
||||
</svg>
|
||||
</iron-iconset-svg>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue