mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
Merge remote-tracking branch 'upstream/master'
This commit is contained in:
commit
c79be9075a
77 changed files with 1575 additions and 1480 deletions
|
@ -17,6 +17,11 @@
|
|||
<form class="advancedServerSettingsForm">
|
||||
|
||||
<ul data-role="listview" class="ulForm">
|
||||
<li>
|
||||
<label for="txtServerName">Friendly server name:</label>
|
||||
<input id="txtServerName" data-mini="true" />
|
||||
<div class="fieldDescription">This name will be used to identify this server. If left blank, the computer name will be used.</div>
|
||||
</li>
|
||||
<li>
|
||||
<label for="txtPortNumber">Http server port number: </label>
|
||||
<input type="number" id="txtPortNumber" name="txtPortNumber" pattern="[0-9]*" required="required" min="1" data-mini="true" />
|
||||
|
@ -25,16 +30,16 @@
|
|||
<label for="txtWebSocketPortNumber">Web socket port number: </label>
|
||||
<input type="number" id="txtWebSocketPortNumber" name="txtWebSocketPortNumber" pattern="[0-9]*" required="required" min="1" data-mini="true" />
|
||||
</li>
|
||||
<li>
|
||||
<label for="txtDdns">External DDNS:</label>
|
||||
<input id="txtDdns" data-mini="true" />
|
||||
<div class="fieldDescription">If you have a dynamic DNS enter it here. Media Browser apps will use it when connecting remotely.</div>
|
||||
</li>
|
||||
<li>
|
||||
<label for="chkEnableUpnp">Enable UPnP</label>
|
||||
<input type="checkbox" id="chkEnableUpnp" data-mini="true" />
|
||||
<div class="fieldDescription">UPnP allows automated router configuration for remote access. This may not work with some router models.</div>
|
||||
</li>
|
||||
<li>
|
||||
<label for="txtDdns">External DDNS:</label>
|
||||
<input id="txtDdns" data-mini="true" />
|
||||
<div class="fieldDescription">If you have a dynamic DNS enter it here. Media Browser apps will use it when connecting remotely.</div>
|
||||
</li>
|
||||
</ul>
|
||||
<ul data-role="listview" class="ulForm">
|
||||
<li>
|
||||
|
|
|
@ -143,6 +143,14 @@
|
|||
</div>
|
||||
<br />
|
||||
<ul data-role="listview" class="ulForm">
|
||||
<li>
|
||||
<label for="copyOrMoveFile">Transfer Method</label>
|
||||
<select id="copyOrMoveFile" data-mini="true">
|
||||
<option value="true">Copy</option>
|
||||
<option value="false">Move</option>
|
||||
</select>
|
||||
<div class="fieldDescription">Copy or move files from the watch folder</div>
|
||||
</li>
|
||||
<li>
|
||||
<input type="checkbox" id="chkOverwriteExistingEpisodes" name="chkOverwriteExistingEpisodes" />
|
||||
<label for="chkOverwriteExistingEpisodes">Overwrite existing episodes</label>
|
||||
|
@ -153,7 +161,7 @@
|
|||
<div class="fieldDescription">Separate with ;. For example: .nfo;.txt</div>
|
||||
</li>
|
||||
<li>
|
||||
<input type="checkbox" id="chkDeleteEmptyFolders" name="chkDeleteEmptyFolders" />
|
||||
<input type="checkbox" id="chkDeleteEmptyFolders" name="chkDeleteEmptyFolders" data-mini="true" />
|
||||
<label for="chkDeleteEmptyFolders">Delete empty folders after organizing</label>
|
||||
<div class="fieldDescription">Enable this to keep the download directory clean.</div>
|
||||
</li>
|
||||
|
|
|
@ -4,17 +4,7 @@
|
|||
<title>Media Browser</title>
|
||||
</head>
|
||||
<body>
|
||||
<div id="boxsetsPage" data-role="page" class="page libraryPage" data-theme="b" data-view="movies">
|
||||
|
||||
<div class="libraryViewNav">
|
||||
<a href="moviesrecommended.html">Suggested</a>
|
||||
<a href="movies.html">Movies</a>
|
||||
<a href="boxsets.html" class="ui-btn-active">Collections</a>
|
||||
<a href="movietrailers.html">Trailers</a>
|
||||
<a href="moviegenres.html">Genres</a>
|
||||
<a href="moviepeople.html">People</a>
|
||||
<a href="moviestudios.html">Studios</a>
|
||||
</div>
|
||||
<div id="boxsetsPage" data-role="page" class="page libraryPage" data-theme="b" data-view="boxsets">
|
||||
|
||||
<div class="alphabetPicker">
|
||||
</div>
|
||||
|
@ -26,17 +16,41 @@
|
|||
</div>
|
||||
<div class="listTopPaging">
|
||||
</div>
|
||||
<button id="btnNewCollection" data-mini="true" data-icon="plus" data-inline="true" class="hide">New</button>
|
||||
<div class="viewSummary"></div>
|
||||
</div>
|
||||
<div id="items" class="itemsContainer"></div>
|
||||
</div>
|
||||
<div data-role="panel" id="newCollectionPanel" data-position="right" data-display="overlay" data-theme="a" data-position-fixed="true">
|
||||
<form class="newCollectionForm">
|
||||
|
||||
<h3>New Collection</h3>
|
||||
|
||||
<br />
|
||||
<div>
|
||||
<label for="txtNewCollectionName">Name:</label>
|
||||
<input type="text" id="txtNewCollectionName" required="required" />
|
||||
<div class="fieldDescription">Example: Star Wars Collection</div>
|
||||
</div>
|
||||
|
||||
<br />
|
||||
<div>
|
||||
<label for="chkEnableInternetMetadata">Search the internet for artwork and metadata</label>
|
||||
<input type="checkbox" id="chkEnableInternetMetadata" data-mini="true" />
|
||||
</div>
|
||||
<br />
|
||||
<p>
|
||||
<button id="btnSubmitNewCollection" type="submit" data-icon="plus" data-mini="true" data-theme="b">Create</button>
|
||||
</p>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div data-role="panel" id="sortPanel" data-position="right" data-display="overlay" data-theme="a" data-position-fixed="true">
|
||||
|
||||
<form>
|
||||
<div id="sortpanel">
|
||||
<fieldset data-role="controlgroup">
|
||||
<legend>
|
||||
<h3>Sort By:</h3>
|
||||
<legend>Sort By:
|
||||
</legend>
|
||||
|
||||
<input class="radioSortBy defaultSort" type="radio" name="radioSortBy" id="radioSortName" value="on" checked="checked" data-sortby="SortName" data-mini="true">
|
||||
|
@ -50,8 +64,7 @@
|
|||
</fieldset>
|
||||
|
||||
<fieldset data-role="controlgroup">
|
||||
<legend>
|
||||
<h3>Sort Order:</h3>
|
||||
<legend>Sort Order:
|
||||
</legend>
|
||||
|
||||
<input class="radioSortOrder" type="radio" name="radioSortOrder" id="radioAscending" value="on" checked="checked" data-sortorder="Ascending" data-mini="true">
|
||||
|
@ -66,8 +79,7 @@
|
|||
<div data-role="panel" id="filterPanel" data-position="right" data-display="overlay" data-theme="a" data-position-fixed="true">
|
||||
<form>
|
||||
<fieldset data-role="controlgroup">
|
||||
<legend>
|
||||
<h3>Filters:</h3>
|
||||
<legend>Filters:
|
||||
</legend>
|
||||
<input class="chkStandardFilter" type="checkbox" name="chkIsFavorite" id="chkIsFavorite" data-filter="IsFavorite" data-mini="true">
|
||||
<label for="chkIsFavorite">Favorite</label>
|
||||
|
@ -80,8 +92,7 @@
|
|||
</fieldset>
|
||||
|
||||
<fieldset data-role="controlgroup">
|
||||
<legend>
|
||||
<strong>Features:</strong>
|
||||
<legend>Features:
|
||||
</legend>
|
||||
|
||||
<input class="chkFeatureFilter" type="checkbox" name="chkTrailer" id="chkTrailer" data-mini="true">
|
||||
|
@ -97,6 +108,10 @@
|
|||
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
$('.newCollectionForm').off('submit', BoxSetsPage.onNewCollectionSubmit).on('submit', BoxSetsPage.onNewCollectionSubmit);
|
||||
</script>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
|
@ -7,12 +7,16 @@
|
|||
padding-top: 48px !important;
|
||||
}
|
||||
|
||||
.libraryPage:not(.metadataEditorPage):not(#indexPage):not(#boxsetsPage) {
|
||||
padding-top: 91px !important;
|
||||
}
|
||||
|
||||
.ui-panel fieldset + fieldset {
|
||||
margin-top: 2em;
|
||||
}
|
||||
|
||||
.headerArrowImage {
|
||||
height: 24px;
|
||||
height: 20px;
|
||||
margin-left: .5em;
|
||||
}
|
||||
|
||||
|
@ -24,6 +28,8 @@
|
|||
z-index: 1000;
|
||||
top: 0;
|
||||
padding-left: 10px;
|
||||
background: #181818;
|
||||
border-bottom: 1px solid #080808;
|
||||
}
|
||||
|
||||
.viewMenuLink {
|
||||
|
@ -111,29 +117,65 @@
|
|||
}
|
||||
|
||||
.libraryViewNav {
|
||||
text-align: center;
|
||||
background-image: linear-gradient(#404040,#222);
|
||||
border-bottom: 1px solid #111;
|
||||
border-top: 1px solid #000;
|
||||
font-family: sans-serif, Arial;
|
||||
height: 42px;
|
||||
overflow: hidden;
|
||||
border-bottom: 1px solid #333;
|
||||
position: fixed;
|
||||
left: 0;
|
||||
right: 0;
|
||||
top: 48px;
|
||||
z-index: 1000;
|
||||
background-color: #252525;
|
||||
}
|
||||
|
||||
.libraryViewNav .ui-btn-active {
|
||||
border: 0!important;
|
||||
background-color: #38c;
|
||||
.libraryViewNavInner {
|
||||
text-align: center;
|
||||
font-family: sans-serif, Arial;
|
||||
font-size: 14px;
|
||||
white-space: nowrap;
|
||||
padding: 0 0 0;
|
||||
overflow-x: auto;
|
||||
height: 55px;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
.libraryViewNav .ui-btn-active .libraryViewNavLinkContent {
|
||||
border-bottom-color: #38c;
|
||||
}
|
||||
|
||||
.libraryViewNav a {
|
||||
display: inline-block;
|
||||
padding: 12px 0 0;
|
||||
color: #eee!important;
|
||||
text-decoration: none;
|
||||
margin: 0 0;
|
||||
position: relative;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
.libraryViewNav a:hover {
|
||||
color: #bbb!important;
|
||||
}
|
||||
|
||||
.libraryViewNav a {
|
||||
display: inline-block;
|
||||
padding: .6em 1em;
|
||||
color: #eee!important;
|
||||
text-decoration: none;
|
||||
margin: 1px 0;
|
||||
.libraryViewNav a:after {
|
||||
content: "|";
|
||||
color: #444;
|
||||
font-size: 20px;
|
||||
font-weight: normal !important;
|
||||
position: absolute;
|
||||
top: 7px;
|
||||
}
|
||||
|
||||
.libraryViewNav a:hover {
|
||||
color: #bbb!important;
|
||||
}
|
||||
.libraryViewNav a:last-child::after {
|
||||
content: "";
|
||||
}
|
||||
|
||||
.libraryViewNavLinkContent {
|
||||
border-bottom: 6px solid transparent;
|
||||
display: inline-block;
|
||||
padding: 0 1em 6px;
|
||||
margin: 0 -2px 0 -1px;
|
||||
}
|
||||
|
||||
.ehsContent {
|
||||
max-width: 620px;
|
||||
|
@ -609,13 +651,6 @@ a.itemTag:hover {
|
|||
height: 7px;
|
||||
}
|
||||
|
||||
@media all and (max-width: 550px) {
|
||||
|
||||
.desktopViewMenuLink {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
@media all and (min-width: 600px) {
|
||||
.inlineDetailSection:not(.hide) {
|
||||
display: inline-block;
|
||||
|
@ -627,22 +662,26 @@ a.itemTag:hover {
|
|||
}
|
||||
}
|
||||
|
||||
@media all and (max-width: 750px) {
|
||||
@media all and (min-width: 800px) {
|
||||
|
||||
.libraryViewNav {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
.desktopHomeLink {
|
||||
.libraryMenuButton {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
@media all and (min-width: 750px) {
|
||||
@media all and (max-width: 800px) {
|
||||
|
||||
.libraryMenuButton {
|
||||
.desktopHomeLink {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.desktopViewMenuLink {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.libraryViewNavInner {
|
||||
text-align: left;
|
||||
}
|
||||
}
|
||||
|
||||
@media all and (max-width: 750px) {
|
||||
|
@ -776,6 +815,10 @@ a.itemTag:hover {
|
|||
max-width: 950px;
|
||||
}
|
||||
|
||||
.detailPageContent {
|
||||
max-width: 930px;
|
||||
}
|
||||
|
||||
.primaryDetailPageContent {
|
||||
max-width: 850px;
|
||||
}
|
||||
|
@ -788,9 +831,6 @@ a.itemTag:hover {
|
|||
}
|
||||
}
|
||||
|
||||
@media all and (min-width: 1920px) {
|
||||
}
|
||||
|
||||
.detailPageParentLink {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
@ -927,7 +967,7 @@ a.itemTag:hover {
|
|||
border: 0;
|
||||
margin: 0;
|
||||
height: 14px;
|
||||
border: 1px solid #222;
|
||||
border: 0 solid #222;
|
||||
border-radius: 0;
|
||||
width: 50px;
|
||||
margin-right: 5px;
|
||||
|
|
|
@ -329,30 +329,43 @@
|
|||
}
|
||||
}
|
||||
|
||||
.popupIdentifyForm, .identificationSearchResults {
|
||||
.popupIdentify form, .identificationSearchResults {
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
.collectionItemSearchResults {
|
||||
max-height: 65%;
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
|
||||
@media all and (min-height: 500px) {
|
||||
|
||||
.popupIdentifyForm, .identificationSearchResults {
|
||||
.popupIdentify form, .identificationSearchResults {
|
||||
height: 350px;
|
||||
}
|
||||
}
|
||||
|
||||
@media all and (min-height: 600px) {
|
||||
|
||||
.popupIdentifyForm, .identificationSearchResults {
|
||||
.popupIdentify form, .identificationSearchResults {
|
||||
height: 450px;
|
||||
}
|
||||
|
||||
.collectionItemSearchResults {
|
||||
max-height: 70%;
|
||||
}
|
||||
}
|
||||
|
||||
@media all and (min-height: 700px) {
|
||||
|
||||
.popupIdentifyForm, .identificationSearchResults {
|
||||
.popupIdentify form, .identificationSearchResults {
|
||||
height: 550px;
|
||||
}
|
||||
|
||||
.collectionItemSearchResults {
|
||||
max-height: 75%;
|
||||
}
|
||||
}
|
||||
|
||||
@media all and (min-height: 800px) {
|
||||
|
@ -361,9 +374,13 @@
|
|||
height: 600px;
|
||||
}
|
||||
|
||||
.popupIdentifyForm, .identificationSearchResults {
|
||||
.popupIdentify form, .identificationSearchResults {
|
||||
height: 600px;
|
||||
}
|
||||
|
||||
.collectionItemSearchResults {
|
||||
max-height: 80%;
|
||||
}
|
||||
}
|
||||
|
||||
@media all and (min-height: 900px) {
|
||||
|
@ -372,7 +389,7 @@
|
|||
height: 700px;
|
||||
}
|
||||
|
||||
.popupIdentifyForm, .identificationSearchResults {
|
||||
.popupIdentify form, .identificationSearchResults {
|
||||
height: 700px;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
.posterItem {
|
||||
margin: 8px;
|
||||
margin: 4px 5px;
|
||||
text-shadow: none;
|
||||
font-weight: normal!important;
|
||||
display: inline-block;
|
||||
|
@ -35,10 +35,6 @@
|
|||
padding: 11px 12px 10px;
|
||||
}
|
||||
|
||||
.smallBackdropPosterItem, .smallPosterItem {
|
||||
margin: 5px;
|
||||
}
|
||||
|
||||
.posterItemImage {
|
||||
background-size: contain;
|
||||
background-repeat: no-repeat;
|
||||
|
@ -107,7 +103,7 @@
|
|||
.posterItemTextOverlay .posterItemText {
|
||||
background-color: transparent;
|
||||
padding-left: 5px;
|
||||
padding: 0 5px 5px;
|
||||
padding: 0 5px 3px;
|
||||
}
|
||||
|
||||
.posterItemTextOverlay .posterItemText:first-child {
|
||||
|
@ -136,11 +132,11 @@
|
|||
}
|
||||
|
||||
.squarePosterItem {
|
||||
width: 142px;
|
||||
width: 148px;
|
||||
}
|
||||
|
||||
.squarePosterItem .posterItemImage {
|
||||
height: 142px;
|
||||
height: 148px;
|
||||
}
|
||||
|
||||
.storeReviewCount {
|
||||
|
@ -149,11 +145,11 @@
|
|||
|
||||
|
||||
.backdropPosterItem {
|
||||
width: 142px;
|
||||
width: 148px;
|
||||
}
|
||||
|
||||
.backdropPosterItem .posterItemImage {
|
||||
height: 79.875px;
|
||||
height: 83.25px;
|
||||
}
|
||||
|
||||
.smallBackdropPosterItem {
|
||||
|
@ -165,17 +161,17 @@
|
|||
}
|
||||
|
||||
.portraitPosterItem {
|
||||
width: 90px;
|
||||
width: 96px;
|
||||
}
|
||||
|
||||
.portraitPosterItem .posterItemImage {
|
||||
height: 135px;
|
||||
height: 144px;
|
||||
}
|
||||
|
||||
.posterItemProgress .itemProgressBar {
|
||||
height: 10px;
|
||||
width: 100%;
|
||||
opacity: .6;
|
||||
opacity: .7;
|
||||
}
|
||||
|
||||
.miniPosterItemProgress {
|
||||
|
@ -188,6 +184,21 @@
|
|||
opacity: 1;
|
||||
}
|
||||
|
||||
.sessionPosterItem .posterItemText:not(.posterItemName) {
|
||||
color: #000;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.sessionPosterItem .posterItemName {
|
||||
color: #fff!important;
|
||||
}
|
||||
|
||||
.sessionPosterItem .posterItemDefaultText {
|
||||
color: #000!important;
|
||||
font-weight: normal !important;
|
||||
top: 42%;
|
||||
}
|
||||
|
||||
@media all and (max-width: 600px) {
|
||||
|
||||
.packageReviewText {
|
||||
|
@ -198,19 +209,19 @@
|
|||
@media all and (min-width: 540px) {
|
||||
|
||||
.backdropPosterItem {
|
||||
width: 260px;
|
||||
width: 266px;
|
||||
}
|
||||
|
||||
.backdropPosterItem .posterItemImage {
|
||||
height: 146.25px;
|
||||
height: 149.625px;
|
||||
}
|
||||
|
||||
.smallBackdropPosterItem {
|
||||
width: 184px;
|
||||
width: 180px;
|
||||
}
|
||||
|
||||
.smallBackdropPosterItem .posterItemImage {
|
||||
height: 103.5px;
|
||||
height: 101.25px;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -218,55 +229,32 @@
|
|||
|
||||
|
||||
.squarePosterItem {
|
||||
width: 164px;
|
||||
width: 170px;
|
||||
}
|
||||
|
||||
.squarePosterItem .posterItemImage {
|
||||
height: 164px;
|
||||
height: 170px;
|
||||
}
|
||||
|
||||
.portraitPosterItem {
|
||||
width: 122px;
|
||||
width: 128px;
|
||||
}
|
||||
|
||||
.portraitPosterItem .posterItemImage {
|
||||
height: 183px;
|
||||
height: 192px;
|
||||
}
|
||||
}
|
||||
|
||||
@media all and (min-width: 650px) {
|
||||
|
||||
.backdropPosterItem {
|
||||
width: 276px;
|
||||
width: 282px;
|
||||
}
|
||||
|
||||
.backdropPosterItem .posterItemImage {
|
||||
height: 155.25px;
|
||||
height: 158.625px;
|
||||
}
|
||||
|
||||
.smallBackdropPosterItem {
|
||||
width: 196px;
|
||||
}
|
||||
|
||||
.smallBackdropPosterItem .posterItemImage {
|
||||
height: 110.25px;
|
||||
}
|
||||
}
|
||||
|
||||
@media all and (min-width: 750px) {
|
||||
|
||||
.portraitPosterItem {
|
||||
width: 112px;
|
||||
}
|
||||
|
||||
.portraitPosterItem .posterItemImage {
|
||||
height: 168px;
|
||||
}
|
||||
}
|
||||
|
||||
@media all and (min-width: 1000px) {
|
||||
|
||||
|
||||
.smallBackdropPosterItem {
|
||||
width: 202px;
|
||||
}
|
||||
|
@ -276,22 +264,37 @@
|
|||
}
|
||||
}
|
||||
|
||||
@media all and (min-width: 1200px) {
|
||||
|
||||
.backdropPosterItem {
|
||||
width: 276px;
|
||||
}
|
||||
|
||||
.backdropPosterItem .posterItemImage {
|
||||
height: 155.25px;
|
||||
}
|
||||
@media all and (min-width: 750px) {
|
||||
|
||||
.portraitPosterItem {
|
||||
width: 138px;
|
||||
width: 118px;
|
||||
}
|
||||
|
||||
.portraitPosterItem .posterItemImage {
|
||||
height: 207px;
|
||||
height: 177px;
|
||||
}
|
||||
}
|
||||
|
||||
@media all and (min-width: 1000px) {
|
||||
|
||||
|
||||
.smallBackdropPosterItem {
|
||||
width: 208px;
|
||||
}
|
||||
|
||||
.smallBackdropPosterItem .posterItemImage {
|
||||
height: 117px;
|
||||
}
|
||||
}
|
||||
|
||||
@media all and (min-width: 1200px) {
|
||||
|
||||
.portraitPosterItem {
|
||||
width: 144px;
|
||||
}
|
||||
|
||||
.portraitPosterItem .posterItemImage {
|
||||
height: 216px;
|
||||
}
|
||||
|
||||
.storeReviewCount {
|
||||
|
@ -302,38 +305,30 @@
|
|||
@media all and (min-width: 1440px) {
|
||||
|
||||
.squarePosterItem {
|
||||
width: 174px;
|
||||
width: 180px;
|
||||
}
|
||||
|
||||
.squarePosterItem .posterItemImage {
|
||||
height: 174px;
|
||||
height: 180px;
|
||||
}
|
||||
|
||||
.backdropPosterItem {
|
||||
width: 292px;
|
||||
width: 298px;
|
||||
}
|
||||
|
||||
.backdropPosterItem .posterItemImage {
|
||||
height: 164.25px;
|
||||
height: 167.625px;
|
||||
}
|
||||
}
|
||||
|
||||
@media all and (min-width: 1920px) {
|
||||
|
||||
.portraitPosterItem {
|
||||
width: 160px;
|
||||
}
|
||||
|
||||
.portraitPosterItem .posterItemImage {
|
||||
height: 240px;
|
||||
}
|
||||
|
||||
.squarePosterItem {
|
||||
width: 184px;
|
||||
width: 190px;
|
||||
}
|
||||
|
||||
.squarePosterItem .posterItemImage {
|
||||
height: 184px;
|
||||
height: 190px;
|
||||
}
|
||||
}
|
||||
/********************/
|
||||
|
|
|
@ -330,6 +330,10 @@ h1 .imageLink {
|
|||
height: 30px;
|
||||
}
|
||||
|
||||
.activeDevicesCollapsible .ui-collapsible-content {
|
||||
padding: .5em .5em !important;
|
||||
}
|
||||
|
||||
@media all and (min-width: 450px) {
|
||||
|
||||
.currentUsername {
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
|
||||
<div data-role="content">
|
||||
<div class="content-primary">
|
||||
|
||||
<div data-role="controlgroup" data-type="horizontal" class="localnav" data-mini="true">
|
||||
<a href="#" data-role="button" class="ui-btn-active">Home</a>
|
||||
<a href="dashboardinfopage.html" data-role="button">Info</a>
|
||||
|
@ -59,11 +60,9 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<div data-role="collapsible" data-collapsed="false" style="margin-top: 2em;">
|
||||
<h3>Active Connections</h3>
|
||||
<div>
|
||||
<table class="tblConnections" style="border-collapse: collapse;">
|
||||
</table>
|
||||
<div class="activeDevicesCollapsible" data-role="collapsible" data-collapsed="false" style="margin-top: 2em;">
|
||||
<h3>Active Devices</h3>
|
||||
<div class="connections">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
44
dashboard-ui/dlnasettings.html
Normal file
44
dashboard-ui/dlnasettings.html
Normal file
|
@ -0,0 +1,44 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>DLNA</title>
|
||||
</head>
|
||||
<body>
|
||||
<div id="dlnaSettingsPage" data-role="page" class="page type-interior adminPage dlnaPage">
|
||||
|
||||
<div data-role="content">
|
||||
<div class="content-primary">
|
||||
|
||||
<div data-role="controlgroup" data-type="horizontal" class="localnav" data-mini="true">
|
||||
<a href="#" data-role="button" class="ui-btn-active">Settings</a>
|
||||
</div>
|
||||
|
||||
<form class="dlnaSettingsForm">
|
||||
|
||||
<ul data-role="listview" class="ulForm">
|
||||
<li>
|
||||
<label for="chkEnablePlayTo">Enable DLNA Play To</label>
|
||||
<input type="checkbox" id="chkEnablePlayTo" data-mini="true" />
|
||||
<div class="fieldDescription">Media Browser can detect devices within your network and offer the ability to remote control them.</div>
|
||||
</li>
|
||||
<li>
|
||||
<button type="submit" data-theme="b" data-icon="check">
|
||||
Save
|
||||
</button>
|
||||
<button type="button" onclick="Dashboard.navigate('dashboard.html');" data-icon="delete">
|
||||
Cancel
|
||||
</button>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
</form>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
$('.dlnaSettingsForm').off('submit', DlnaSettingsPage.onSubmit).on('submit', DlnaSettingsPage.onSubmit);
|
||||
</script>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
78
dashboard-ui/editcollectionitems.html
Normal file
78
dashboard-ui/editcollectionitems.html
Normal file
|
@ -0,0 +1,78 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Media Browser</title>
|
||||
</head>
|
||||
<body>
|
||||
<div id="editCollectionTitlesPage" data-role="page" data-theme="b" class="page libraryPage metadataEditorPage">
|
||||
<div data-role="content editPageContent">
|
||||
<div class="editPageSidebar">
|
||||
<div class="libraryTree">
|
||||
<ul>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="editPageInnerContent">
|
||||
<h1 class="itemName editPageName"> </h1>
|
||||
<br />
|
||||
<div data-role="controlgroup" data-type="horizontal" class="localnav" data-mini="true">
|
||||
<a href="#" data-role="button" id="btnEditMetadata">Metadata</a>
|
||||
<a id="btnEditPeople" style="display: none;" href="#" data-role="button">People</a>
|
||||
<a href="#" data-role="button" class="ui-btn-active">Titles</a>
|
||||
<a id="btnEditImages" href="#" data-role="button">Images</a>
|
||||
</div>
|
||||
|
||||
<p style="margin-top: -20px;">
|
||||
Add or remove any movies, series, albums, books or games you wish to group within this collection.
|
||||
</p>
|
||||
|
||||
<div>
|
||||
<button type="button" id="btnAddItem" data-icon="plus" data-inline="true" data-mini="true">Add</button>
|
||||
<button type="button" id="btnRemoveItems" data-icon="delete" data-inline="true" data-mini="true" disabled="disabled">Remove</button>
|
||||
</div>
|
||||
<br />
|
||||
<div class="collectionItems"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div data-role="popup" data-transition="slidefade" class="popupIdentify popup" data-theme="a">
|
||||
|
||||
<div class="ui-bar-a" style="text-align: center; padding: 0 20px;">
|
||||
<h3>Add Titles
|
||||
</h3>
|
||||
</div>
|
||||
|
||||
<div data-role="content">
|
||||
|
||||
<form class="collectionItemSearchForm" style="max-width: initial;">
|
||||
|
||||
<div>
|
||||
<label for="txtLookupName">Name:</label>
|
||||
|
||||
<div style="display: inline-block; width: 75%;">
|
||||
<input type="text" id="txtLookupName" data-mini="true" required="required" />
|
||||
</div>
|
||||
|
||||
<button type="submit" data-icon="search" data-mini="true" data-inline="true" data-iconpos="notext">
|
||||
Search
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="collectionItemSearchResults" style="min-height:100px;">
|
||||
</div>
|
||||
|
||||
<button id="btnAddItems" type="button" data-icon="plus" data-mini="true">
|
||||
Add
|
||||
</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
$('.collectionItemSearchForm').off('submit', EditCollectionItemsPage.onSearchFormSubmit).on('submit', EditCollectionItemsPage.onSearchFormSubmit);
|
||||
</script>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
|
@ -19,6 +19,7 @@
|
|||
<div data-role="controlgroup" data-type="horizontal" class="localnav" data-mini="true">
|
||||
<a href="#" data-role="button" id="btnEditMetadata">Metadata</a>
|
||||
<a href="#" data-role="button" id="btnEditPeople" style="display: none;">People</a>
|
||||
<a id="btnEditCollectionTitles" style="display: none;" href="#" data-role="button">Titles</a>
|
||||
<a href="#" data-role="button" class="ui-btn-active">Images</a>
|
||||
</div>
|
||||
|
||||
|
|
|
@ -18,6 +18,7 @@
|
|||
<div data-role="controlgroup" data-type="horizontal" class="localnav" data-mini="true">
|
||||
<a href="#" data-role="button" class="ui-btn-active">Metadata</a>
|
||||
<a id="btnEditPeople" style="display: none;" href="#" data-role="button">People</a>
|
||||
<a id="btnEditCollectionTitles" style="display: none;" href="editcollectionitems.html" data-role="button">Titles</a>
|
||||
<a href="#" data-role="button" id="btnEditImages">Images</a>
|
||||
</div>
|
||||
|
||||
|
@ -414,6 +415,9 @@
|
|||
<button type="submit" data-theme="b" data-icon="search" data-mini="true">
|
||||
Search
|
||||
</button>
|
||||
<button type="button" data-icon="delete" data-mini="true" onclick="$(this).parents('.popup').popup('close');">
|
||||
Cancel
|
||||
</button>
|
||||
</p>
|
||||
</form>
|
||||
|
||||
|
|
|
@ -18,6 +18,7 @@
|
|||
<div data-role="controlgroup" data-type="horizontal" class="localnav" data-mini="true">
|
||||
<a href="#" data-role="button" id="btnEditMetadata">Metadata</a>
|
||||
<a href="#" data-role="button" class="ui-btn-active">People</a>
|
||||
<a id="btnEditCollectionTitles" style="display: none;" href="#" data-role="button">Titles</a>
|
||||
<a href="#" data-role="button" id="btnEditImages">Images</a>
|
||||
</div>
|
||||
<div id="divAddPerson" style="display: none;">
|
||||
|
|
|
@ -15,40 +15,13 @@
|
|||
<div data-role="content">
|
||||
<div class="viewSettings">
|
||||
<div class="viewControls">
|
||||
<button data-mini="true" data-icon="sort" data-inline="true" onclick="$('#sortPanel', $(this).parents('.page')).panel( 'toggle' );">Sort</button>
|
||||
<button data-mini="true" data-icon="filter" data-inline="true" onclick="$('#filterPanel', $(this).parents('.page')).panel( 'toggle' );">Filter</button>
|
||||
</div>
|
||||
<div class="listTopPaging">
|
||||
</div>
|
||||
<div class="viewSummary"></div>
|
||||
</div>
|
||||
<div id="items" class="itemsContainer"></div>
|
||||
</div>
|
||||
<div data-role="panel" id="sortPanel" data-position="right" data-display="overlay" data-theme="a" data-position-fixed="true">
|
||||
|
||||
<form>
|
||||
<fieldset data-role="controlgroup">
|
||||
<legend>
|
||||
<strong>Sort By:</strong>
|
||||
</legend>
|
||||
|
||||
<input class="radioSortBy defaultSort" type="radio" name="radioSortBy" id="radioSortName" value="on" checked="checked" data-sortby="SortName" data-mini="true">
|
||||
<label for="radioSortName">Name</label>
|
||||
</fieldset>
|
||||
|
||||
<fieldset data-role="controlgroup">
|
||||
<legend>
|
||||
<strong>Sort Order:</strong>
|
||||
</legend>
|
||||
|
||||
<input class="radioSortOrder" type="radio" name="radioSortOrder" id="radioAscending" value="on" checked="checked" data-sortorder="Ascending" data-mini="true">
|
||||
<label for="radioAscending">Ascending</label>
|
||||
|
||||
<input class="radioSortOrder" type="radio" name="radioSortOrder" id="radioDescending" value="off" data-sortorder="Descending" data-mini="true">
|
||||
<label for="radioDescending">Descending</label>
|
||||
</fieldset>
|
||||
</form>
|
||||
</div>
|
||||
<div data-role="panel" id="filterPanel" data-position="right" data-display="overlay" data-theme="a" data-position-fixed="true">
|
||||
<form>
|
||||
<fieldset data-role="controlgroup">
|
||||
|
|
|
@ -15,40 +15,13 @@
|
|||
<div data-role="content">
|
||||
<div class="viewSettings">
|
||||
<div class="viewControls">
|
||||
<button data-mini="true" data-icon="sort" data-inline="true" onclick="$('#sortPanel', $(this).parents('.page')).panel( 'toggle' );">Sort</button>
|
||||
<button data-mini="true" data-icon="filter" data-inline="true" onclick="$('#filterPanel', $(this).parents('.page')).panel( 'toggle' );">Filter</button>
|
||||
</div>
|
||||
<div class="listTopPaging">
|
||||
</div>
|
||||
<div class="viewSummary"></div>
|
||||
</div>
|
||||
<div id="items" class="itemsContainer"></div>
|
||||
</div>
|
||||
<div data-role="panel" id="sortPanel" data-position="right" data-display="overlay" data-theme="a" data-position-fixed="true">
|
||||
|
||||
<form>
|
||||
<fieldset data-role="controlgroup">
|
||||
<legend>
|
||||
<strong>Sort By:</strong>
|
||||
</legend>
|
||||
|
||||
<input class="radioSortBy defaultSort" type="radio" name="radioSortBy" id="radioSortName" value="on" checked="checked" data-sortby="SortName" data-mini="true">
|
||||
<label for="radioSortName">Name</label>
|
||||
</fieldset>
|
||||
|
||||
<fieldset data-role="controlgroup">
|
||||
<legend>
|
||||
<strong>Sort Order:</strong>
|
||||
</legend>
|
||||
|
||||
<input class="radioSortOrder" type="radio" name="radioSortOrder" id="radioAscending" value="on" checked="checked" data-sortorder="Ascending" data-mini="true">
|
||||
<label for="radioAscending">Ascending</label>
|
||||
|
||||
<input class="radioSortOrder" type="radio" name="radioSortOrder" id="radioDescending" value="off" data-sortorder="Descending" data-mini="true">
|
||||
<label for="radioDescending">Descending</label>
|
||||
</fieldset>
|
||||
</form>
|
||||
</div>
|
||||
<div data-role="panel" id="filterPanel" data-position="right" data-display="overlay" data-theme="a" data-position-fixed="true">
|
||||
<form>
|
||||
<fieldset data-role="controlgroup">
|
||||
|
|
|
@ -7,9 +7,9 @@
|
|||
<div id="itemByNameDetailPage" data-role="page" class="page libraryPage" data-theme="b">
|
||||
<div id="movieGenreTabs" class="itemTabs" style="display: none;">
|
||||
<div class="libraryViewNav">
|
||||
<a href="movieslatest.html">Latest</a>
|
||||
<a href="moviesrecommended.html">Suggested</a>
|
||||
<a href="movies.html">Movies</a>
|
||||
<a href="boxsets.html">Box Sets</a>
|
||||
<a href="movietrailers.html">Trailers</a>
|
||||
<a href="moviegenres.html" class="ui-btn-active">Genres</a>
|
||||
<a href="moviepeople.html">People</a>
|
||||
|
@ -18,9 +18,9 @@
|
|||
</div>
|
||||
<div id="moviePeopleTabs" class="itemTabs" style="display: none;">
|
||||
<div class="libraryViewNav">
|
||||
<a href="movieslatest.html">Latest</a>
|
||||
<a href="moviesrecommended.html">Suggested</a>
|
||||
<a href="movies.html">Movies</a>
|
||||
<a href="boxsets.html">Box Sets</a>
|
||||
<a href="movietrailers.html">Trailers</a>
|
||||
<a href="moviegenres.html">Genres</a>
|
||||
<a href="moviepeople.html" class="ui-btn-active">People</a>
|
||||
|
@ -29,9 +29,9 @@
|
|||
</div>
|
||||
<div id="movieStudioTabs" class="itemTabs" style="display: none;">
|
||||
<div class="libraryViewNav">
|
||||
<a href="movieslatest.html">Latest</a>
|
||||
<a href="moviesrecommended.html">Suggested</a>
|
||||
<a href="movies.html">Movies</a>
|
||||
<a href="boxsets.html">Box Sets</a>
|
||||
<a href="movietrailers.html">Trailers</a>
|
||||
<a href="moviegenres.html">Genres</a>
|
||||
<a href="moviepeople.html">People</a>
|
||||
|
|
|
@ -7,20 +7,9 @@
|
|||
<div id="itemDetailPage" data-role="page" class="page libraryPage" data-theme="b">
|
||||
<div id="movieTabs" class="itemTabs" style="display: none;">
|
||||
<div class="libraryViewNav">
|
||||
<a href="movieslatest.html">Latest</a>
|
||||
<a href="moviesrecommended.html">Suggested</a>
|
||||
<a href="movies.html" class="ui-btn-active">Movies</a>
|
||||
<a href="boxsets.html">Collections</a>
|
||||
<a href="movietrailers.html">Trailers</a>
|
||||
<a href="moviegenres.html">Genres</a>
|
||||
<a href="moviepeople.html">People</a>
|
||||
<a href="moviestudios.html">Studios</a>
|
||||
</div>
|
||||
</div>
|
||||
<div id="boxsetTabs" class="itemTabs" style="display: none;">
|
||||
<div class="libraryViewNav">
|
||||
<a href="moviesrecommended.html">Suggested</a>
|
||||
<a href="movies.html">Movies</a>
|
||||
<a href="boxsets.html" class="ui-btn-active">Collections</a>
|
||||
<a href="movietrailers.html">Trailers</a>
|
||||
<a href="moviegenres.html">Genres</a>
|
||||
<a href="moviepeople.html">People</a>
|
||||
|
@ -29,9 +18,9 @@
|
|||
</div>
|
||||
<div id="trailerTabs" class="itemTabs" style="display: none;">
|
||||
<div class="libraryViewNav">
|
||||
<a href="movieslatest.html">Latest</a>
|
||||
<a href="moviesrecommended.html">Suggested</a>
|
||||
<a href="movies.html">Movies</a>
|
||||
<a href="boxsets.html">Collections</a>
|
||||
<a href="movietrailers.html" class="ui-btn-active">Trailers</a>
|
||||
<a href="moviegenres.html">Genres</a>
|
||||
<a href="moviepeople.html">People</a>
|
||||
|
@ -173,8 +162,11 @@
|
|||
<p class="itemTags"></p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="collectionItems"></div>
|
||||
<div id="childrenCollapsible" class="hide detailSection">
|
||||
<div class="detailSectionHeader"><span id="childrenTitle"></span></div>
|
||||
<div class="detailSectionHeader">
|
||||
<span id="childrenTitle"></span>
|
||||
</div>
|
||||
<div id="childrenContent" class="detailSectionContent"></div>
|
||||
</div>
|
||||
<div id="trailersCollapsible" class="detailSection hide">
|
||||
|
|
|
@ -114,7 +114,7 @@
|
|||
<label for="chkMissingOverview">Missing Overview</label>
|
||||
|
||||
<input class="chkMissingRating" type="checkbox" name="chkMissingRating" id="chkMissingRating" data-mini="true">
|
||||
<label for="chkMissingRating">Missing Rating</label>
|
||||
<label for="chkMissingRating">Missing Parental Rating</label>
|
||||
|
||||
<input class="chkIsUnidentified" type="checkbox" id="chkIsUnidentified" data-mini="true">
|
||||
<label for="chkIsUnidentified">Unidentified</label>
|
||||
|
|
|
@ -23,11 +23,12 @@
|
|||
<ul data-role="listview" class="ulForm">
|
||||
<li>
|
||||
<input type="checkbox" id="chkEnableInternetProviders" name="chkEnableInternetProviders" data-mini="true" />
|
||||
<label for="chkEnableInternetProviders">Download metadata and images from the internet </label>
|
||||
<label for="chkEnableInternetProviders">Download artwork and metadata from the internet </label>
|
||||
<div class="fieldDescription">Media Browser can download information about your media to enable rich presentations.</div>
|
||||
</li>
|
||||
<li>
|
||||
<input type="checkbox" id="chkSaveLocal" name="chkSaveLocal" data-mini="true" />
|
||||
<label for="chkSaveLocal">Save metadata and images within media folders </label>
|
||||
<label for="chkSaveLocal">Save artwork and metadata within media folders </label>
|
||||
<div class="fieldDescription">Save downloaded metadata and images into media folders where they can be stored permanently and easily edited.</div>
|
||||
</li>
|
||||
<li>
|
||||
|
|
|
@ -7,9 +7,9 @@
|
|||
<div id="movieGenresPage" data-role="page" class="page libraryPage" data-theme="b" data-view="movies">
|
||||
|
||||
<div class="libraryViewNav">
|
||||
<a href="movieslatest.html">Latest</a>
|
||||
<a href="moviesrecommended.html">Suggested</a>
|
||||
<a href="movies.html">Movies</a>
|
||||
<a href="boxsets.html">Collections</a>
|
||||
<a href="movietrailers.html">Trailers</a>
|
||||
<a href="moviegenres.html" class="ui-btn-active">Genres</a>
|
||||
<a href="moviepeople.html">People</a>
|
||||
|
@ -19,46 +19,13 @@
|
|||
<div data-role="content">
|
||||
<div class="viewSettings">
|
||||
<div class="viewControls">
|
||||
<button data-mini="true" data-icon="sort" data-inline="true" onclick="$('#sortPanel', $(this).parents('.page')).panel( 'toggle' );">Sort</button>
|
||||
<button data-mini="true" data-icon="filter" data-inline="true" onclick="$('#filterPanel', $(this).parents('.page')).panel( 'toggle' );">Filter</button>
|
||||
</div>
|
||||
<div class="listTopPaging">
|
||||
</div>
|
||||
<div class="viewSummary"></div>
|
||||
</div>
|
||||
<div id="items" class="itemsContainer"></div>
|
||||
</div>
|
||||
<div data-role="panel" id="sortPanel" data-position="right" data-display="overlay" data-theme="a" data-position-fixed="true">
|
||||
|
||||
<form>
|
||||
<fieldset data-role="controlgroup">
|
||||
<legend>
|
||||
<strong>Sort By:</strong>
|
||||
</legend>
|
||||
|
||||
<input class="radioSortBy defaultSort" type="radio" name="radioSortBy" id="radioSortName" value="on" checked="checked" data-sortby="SortName" data-mini="true">
|
||||
<label for="radioSortName">Name</label>
|
||||
|
||||
<input class="radioSortBy" type="radio" name="radioSortBy" id="radioMovieCount" value="on" checked="checked" data-sortby="MovieCount,SortName" data-mini="true">
|
||||
<label for="radioMovieCount">Movie count</label>
|
||||
|
||||
<input class="radioSortBy" type="radio" name="radioSortBy" id="radioTrailerCount" value="on" checked="checked" data-sortby="TrailerCount,SortName" data-mini="true">
|
||||
<label for="radioTrailerCount">Trailer count</label>
|
||||
</fieldset>
|
||||
|
||||
<fieldset data-role="controlgroup">
|
||||
<legend>
|
||||
<strong>Sort Order:</strong>
|
||||
</legend>
|
||||
|
||||
<input class="radioSortOrder" type="radio" name="radioSortOrder" id="radioAscending" value="on" checked="checked" data-sortorder="Ascending" data-mini="true">
|
||||
<label for="radioAscending">Ascending</label>
|
||||
|
||||
<input class="radioSortOrder" type="radio" name="radioSortOrder" id="radioDescending" value="off" data-sortorder="Descending" data-mini="true">
|
||||
<label for="radioDescending">Descending</label>
|
||||
</fieldset>
|
||||
</form>
|
||||
</div>
|
||||
<div data-role="panel" id="filterPanel" data-position="right" data-display="overlay" data-theme="a" data-position-fixed="true">
|
||||
<form>
|
||||
<fieldset data-role="controlgroup">
|
||||
|
|
|
@ -7,9 +7,9 @@
|
|||
<div id="moviePeoplePage" data-role="page" class="page libraryPage" data-theme="b" data-view="movies">
|
||||
|
||||
<div class="libraryViewNav">
|
||||
<a href="movieslatest.html">Latest</a>
|
||||
<a href="moviesrecommended.html">Suggested</a>
|
||||
<a href="movies.html">Movies</a>
|
||||
<a href="boxsets.html">Collections</a>
|
||||
<a href="movietrailers.html">Trailers</a>
|
||||
<a href="moviegenres.html">Genres</a>
|
||||
<a href="moviepeople.html" class="ui-btn-active">People</a>
|
||||
|
@ -21,46 +21,13 @@
|
|||
<div data-role="content">
|
||||
<div class="viewSettings">
|
||||
<div class="viewControls">
|
||||
<button data-mini="true" data-icon="sort" data-inline="true" onclick="$('#sortPanel', $(this).parents('.page')).panel( 'toggle' );">Sort</button>
|
||||
<button data-mini="true" data-icon="filter" data-inline="true" onclick="$('#filterPanel', $(this).parents('.page')).panel( 'toggle' );">Filter</button>
|
||||
</div>
|
||||
<div class="listTopPaging">
|
||||
</div>
|
||||
<div class="viewSummary"></div>
|
||||
</div>
|
||||
<div id="items" class="itemsContainer"></div>
|
||||
</div>
|
||||
<div data-role="panel" id="sortPanel" data-position="right" data-display="overlay" data-theme="a" data-position-fixed="true">
|
||||
|
||||
<form>
|
||||
<fieldset data-role="controlgroup">
|
||||
<legend>
|
||||
<strong>Sort By:</strong>
|
||||
</legend>
|
||||
|
||||
<input class="radioSortBy defaultSort" type="radio" name="radioSortBy" id="radioSortName" value="on" checked="checked" data-sortby="SortName" data-mini="true">
|
||||
<label for="radioSortName">Name</label>
|
||||
|
||||
<input class="radioSortBy" type="radio" name="radioSortBy" id="radioMovieCount" value="on" checked="checked" data-sortby="MovieCount,SortName" data-mini="true">
|
||||
<label for="radioMovieCount">Movie count</label>
|
||||
|
||||
<input class="radioSortBy" type="radio" name="radioSortBy" id="radioTrailerCount" value="on" checked="checked" data-sortby="TrailerCount,SortName" data-mini="true">
|
||||
<label for="radioTrailerCount">Trailer count</label>
|
||||
</fieldset>
|
||||
|
||||
<fieldset data-role="controlgroup">
|
||||
<legend>
|
||||
<strong>Sort Order:</strong>
|
||||
</legend>
|
||||
|
||||
<input class="radioSortOrder" type="radio" name="radioSortOrder" id="radioAscending" value="on" checked="checked" data-sortorder="Ascending" data-mini="true">
|
||||
<label for="radioAscending">Ascending</label>
|
||||
|
||||
<input class="radioSortOrder" type="radio" name="radioSortOrder" id="radioDescending" value="off" data-sortorder="Descending" data-mini="true">
|
||||
<label for="radioDescending">Descending</label>
|
||||
</fieldset>
|
||||
</form>
|
||||
</div>
|
||||
<div data-role="panel" id="filterPanel" data-position="right" data-display="overlay" data-theme="a" data-position-fixed="true">
|
||||
<form>
|
||||
<fieldset data-role="controlgroup">
|
||||
|
|
|
@ -7,9 +7,9 @@
|
|||
<div id="moviesPage" data-role="page" class="page libraryPage" data-theme="b" data-view="movies">
|
||||
|
||||
<div class="libraryViewNav">
|
||||
<a href="movieslatest.html">Latest</a>
|
||||
<a href="moviesrecommended.html">Suggested</a>
|
||||
<a href="movies.html" class="ui-btn-active">Movies</a>
|
||||
<a href="boxsets.html">Collections</a>
|
||||
<a href="movietrailers.html">Trailers</a>
|
||||
<a href="moviegenres.html">Genres</a>
|
||||
<a href="moviepeople.html">People</a>
|
||||
|
|
41
dashboard-ui/movieslatest.html
Normal file
41
dashboard-ui/movieslatest.html
Normal file
|
@ -0,0 +1,41 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Media Browser</title>
|
||||
</head>
|
||||
<body>
|
||||
<div id="moviesLatestPage" data-role="page" class="page libraryPage" data-theme="b" data-view="movies">
|
||||
|
||||
<div class="libraryViewNav">
|
||||
<a href="#" class="ui-btn-active">Latest</a>
|
||||
<a href="moviesrecommended.html">Suggested</a>
|
||||
<a href="movies.html">Movies</a>
|
||||
<a href="movietrailers.html">Trailers</a>
|
||||
<a href="moviegenres.html">Genres</a>
|
||||
<a href="moviepeople.html">People</a>
|
||||
<a href="moviestudios.html">Studios</a>
|
||||
</div>
|
||||
|
||||
<div data-role="content">
|
||||
|
||||
<table class="ehsContent">
|
||||
<tr>
|
||||
<td>
|
||||
<h1 class="listHeader">Latest Movies</h1>
|
||||
|
||||
<div id="recentlyAddedItems">
|
||||
</div>
|
||||
|
||||
<div id="trailerSection" style="display: none;">
|
||||
<h1 class="listHeader">Latest Trailers</h1>
|
||||
|
||||
<div id="trailerItems">
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
|
@ -7,9 +7,9 @@
|
|||
<div id="moviesRecommendedPage" data-role="page" class="page libraryPage" data-theme="b" data-view="movies">
|
||||
|
||||
<div class="libraryViewNav">
|
||||
<a href="moviesrecommended.html" class="ui-btn-active">Suggested</a>
|
||||
<a href="movieslatest.html">Latest</a>
|
||||
<a href="#" class="ui-btn-active">Suggested</a>
|
||||
<a href="movies.html">Movies</a>
|
||||
<a href="boxsets.html">Collections</a>
|
||||
<a href="movietrailers.html">Trailers</a>
|
||||
<a href="moviegenres.html">Genres</a>
|
||||
<a href="moviepeople.html">People</a>
|
||||
|
@ -28,16 +28,7 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<h1 class="listHeader">Latest Movies</h1>
|
||||
|
||||
<div id="recentlyAddedItems">
|
||||
</div>
|
||||
|
||||
<div id="trailerSection" style="display: none;">
|
||||
<h1 class="listHeader">Latest Trailers</h1>
|
||||
|
||||
<div id="trailerItems">
|
||||
</div>
|
||||
<div class="recommendations">
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
|
|
@ -7,9 +7,9 @@
|
|||
<div id="movieStudiosPage" data-role="page" class="page libraryPage" data-theme="b" data-view="movies">
|
||||
|
||||
<div class="libraryViewNav">
|
||||
<a href="movieslatest.html">Latest</a>
|
||||
<a href="moviesrecommended.html">Suggested</a>
|
||||
<a href="movies.html">Movies</a>
|
||||
<a href="boxsets.html">Collections</a>
|
||||
<a href="movietrailers.html">Trailers</a>
|
||||
<a href="moviegenres.html">Genres</a>
|
||||
<a href="moviepeople.html">People</a>
|
||||
|
@ -19,46 +19,13 @@
|
|||
<div data-role="content">
|
||||
<div class="viewSettings">
|
||||
<div class="viewControls">
|
||||
<button data-mini="true" data-icon="sort" data-inline="true" onclick="$('#sortPanel', $(this).parents('.page')).panel( 'toggle' );">Sort</button>
|
||||
<button data-mini="true" data-icon="filter" data-inline="true" onclick="$('#filterPanel', $(this).parents('.page')).panel( 'toggle' );">Filter</button>
|
||||
</div>
|
||||
<div class="listTopPaging">
|
||||
</div>
|
||||
<div class="viewSummary"></div>
|
||||
</div>
|
||||
<div id="items" class="itemsContainer"></div>
|
||||
</div>
|
||||
<div data-role="panel" id="sortPanel" data-position="right" data-display="overlay" data-theme="a" data-position-fixed="true">
|
||||
|
||||
<form>
|
||||
<fieldset data-role="controlgroup">
|
||||
<legend>
|
||||
<strong>Sort By:</strong>
|
||||
</legend>
|
||||
|
||||
<input class="radioSortBy defaultSort" type="radio" name="radioSortBy" id="radioSortName" value="on" checked="checked" data-sortby="SortName" data-mini="true">
|
||||
<label for="radioSortName">Name</label>
|
||||
|
||||
<input class="radioSortBy" type="radio" name="radioSortBy" id="radioMovieCount" value="on" checked="checked" data-sortby="MovieCount,SortName" data-mini="true">
|
||||
<label for="radioMovieCount">Movie count</label>
|
||||
|
||||
<input class="radioSortBy" type="radio" name="radioSortBy" id="radioTrailerCount" value="on" checked="checked" data-sortby="TrailerCount,SortName" data-mini="true">
|
||||
<label for="radioTrailerCount">Trailer count</label>
|
||||
</fieldset>
|
||||
|
||||
<fieldset data-role="controlgroup">
|
||||
<legend>
|
||||
<strong>Sort Order:</strong>
|
||||
</legend>
|
||||
|
||||
<input class="radioSortOrder" type="radio" name="radioSortOrder" id="radioAscending" value="on" checked="checked" data-sortorder="Ascending" data-mini="true">
|
||||
<label for="radioAscending">Ascending</label>
|
||||
|
||||
<input class="radioSortOrder" type="radio" name="radioSortOrder" id="radioDescending" value="off" data-sortorder="Descending" data-mini="true">
|
||||
<label for="radioDescending">Descending</label>
|
||||
</fieldset>
|
||||
</form>
|
||||
</div>
|
||||
<div data-role="panel" id="filterPanel" data-position="right" data-display="overlay" data-theme="a" data-position-fixed="true">
|
||||
<form>
|
||||
<fieldset data-role="controlgroup">
|
||||
|
|
|
@ -7,9 +7,9 @@
|
|||
<div id="movieTrailersPage" data-role="page" class="page libraryPage" data-theme="b" data-view="movies">
|
||||
|
||||
<div class="libraryViewNav">
|
||||
<a href="movieslatest.html">Latest</a>
|
||||
<a href="moviesrecommended.html">Suggested</a>
|
||||
<a href="movies.html">Movies</a>
|
||||
<a href="boxsets.html">Collections</a>
|
||||
<a href="movietrailers.html" class="ui-btn-active">Trailers</a>
|
||||
<a href="moviegenres.html">Genres</a>
|
||||
<a href="moviepeople.html">People</a>
|
||||
|
|
|
@ -20,49 +20,13 @@
|
|||
<div data-role="content">
|
||||
<div class="viewSettings">
|
||||
<div class="viewControls">
|
||||
<button data-mini="true" data-icon="sort" data-inline="true" onclick="$('#sortPanel', $(this).parents('.page')).panel( 'toggle' );">Sort</button>
|
||||
<button data-mini="true" data-icon="filter" data-inline="true" onclick="$('#filterPanel', $(this).parents('.page')).panel( 'toggle' );">Filter</button>
|
||||
</div>
|
||||
<div class="listTopPaging">
|
||||
</div>
|
||||
<div class="viewSummary"></div>
|
||||
</div>
|
||||
<div id="items" class="itemsContainer"></div>
|
||||
</div>
|
||||
<div data-role="panel" id="sortPanel" data-position="right" data-display="overlay" data-theme="a" data-position-fixed="true">
|
||||
|
||||
<form>
|
||||
<fieldset data-role="controlgroup">
|
||||
<legend>
|
||||
<strong>Sort By:</strong>
|
||||
</legend>
|
||||
|
||||
<input class="radioSortBy defaultSort" type="radio" name="radioSortBy" id="radioSortName" value="on" checked="checked" data-sortby="SortName" data-mini="true">
|
||||
<label for="radioSortName">Name</label>
|
||||
|
||||
<input class="radioSortBy" type="radio" name="radioSortBy" id="radioAlbumCount" value="on" checked="checked" data-sortby="AlbumCount,SortName" data-mini="true">
|
||||
<label for="radioAlbumCount">Album count</label>
|
||||
|
||||
<input class="radioSortBy" type="radio" name="radioSortBy" id="radioMusicVideoCount" value="on" checked="checked" data-sortby="MusicVideoCount,SortName" data-mini="true">
|
||||
<label for="radioMusicVideoCount">Music video count</label>
|
||||
|
||||
<input class="radioSortBy" type="radio" name="radioSortBy" id="radioSongCount" value="on" checked="checked" data-sortby="SongCount,SortName" data-mini="true">
|
||||
<label for="radioSongCount">Song count</label>
|
||||
</fieldset>
|
||||
|
||||
<fieldset data-role="controlgroup">
|
||||
<legend>
|
||||
<strong>Sort Order:</strong>
|
||||
</legend>
|
||||
|
||||
<input class="radioSortOrder" type="radio" name="radioSortOrder" id="radioAscending" value="on" checked="checked" data-sortorder="Ascending" data-mini="true">
|
||||
<label for="radioAscending">Ascending</label>
|
||||
|
||||
<input class="radioSortOrder" type="radio" name="radioSortOrder" id="radioDescending" value="off" data-sortorder="Descending" data-mini="true">
|
||||
<label for="radioDescending">Descending</label>
|
||||
</fieldset>
|
||||
</form>
|
||||
</div>
|
||||
<div data-role="panel" id="filterPanel" data-position="right" data-display="overlay" data-theme="a" data-position-fixed="true">
|
||||
<form>
|
||||
<fieldset data-role="controlgroup">
|
||||
|
|
|
@ -20,49 +20,13 @@
|
|||
<div data-role="content">
|
||||
<div class="viewSettings">
|
||||
<div class="viewControls">
|
||||
<button data-mini="true" data-icon="sort" data-inline="true" onclick="$('#sortPanel', $(this).parents('.page')).panel( 'toggle' );">Sort</button>
|
||||
<button data-mini="true" data-icon="filter" data-inline="true" onclick="$('#filterPanel', $(this).parents('.page')).panel( 'toggle' );">Filter</button>
|
||||
</div>
|
||||
<div class="listTopPaging">
|
||||
</div>
|
||||
<div class="viewSummary"></div>
|
||||
</div>
|
||||
<div id="items" class="itemsContainer"></div>
|
||||
</div>
|
||||
<div data-role="panel" id="sortPanel" data-position="right" data-display="overlay" data-theme="a" data-position-fixed="true">
|
||||
|
||||
<form>
|
||||
<fieldset data-role="controlgroup">
|
||||
<legend>
|
||||
<strong>Sort By:</strong>
|
||||
</legend>
|
||||
|
||||
<input class="radioSortBy defaultSort" type="radio" name="radioSortBy" id="radioSortName" value="on" checked="checked" data-sortby="SortName" data-mini="true">
|
||||
<label for="radioSortName">Name</label>
|
||||
|
||||
<input class="radioSortBy" type="radio" name="radioSortBy" id="radioAlbumCount" value="on" checked="checked" data-sortby="AlbumCount,SortName" data-mini="true">
|
||||
<label for="radioAlbumCount">Album count</label>
|
||||
|
||||
<input class="radioSortBy" type="radio" name="radioSortBy" id="radioMusicVideoCount" value="on" checked="checked" data-sortby="MusicVideoCount,SortName" data-mini="true">
|
||||
<label for="radioMusicVideoCount">Music video count</label>
|
||||
|
||||
<input class="radioSortBy" type="radio" name="radioSortBy" id="radioSongCount" value="on" checked="checked" data-sortby="SongCount,SortName" data-mini="true">
|
||||
<label for="radioSongCount">Song count</label>
|
||||
</fieldset>
|
||||
|
||||
<fieldset data-role="controlgroup">
|
||||
<legend>
|
||||
<strong>Sort Order:</strong>
|
||||
</legend>
|
||||
|
||||
<input class="radioSortOrder" type="radio" name="radioSortOrder" id="radioAscending" value="on" checked="checked" data-sortorder="Ascending" data-mini="true">
|
||||
<label for="radioAscending">Ascending</label>
|
||||
|
||||
<input class="radioSortOrder" type="radio" name="radioSortOrder" id="radioDescending" value="off" data-sortorder="Descending" data-mini="true">
|
||||
<label for="radioDescending">Descending</label>
|
||||
</fieldset>
|
||||
</form>
|
||||
</div>
|
||||
<div data-role="panel" id="filterPanel" data-position="right" data-display="overlay" data-theme="a" data-position-fixed="true">
|
||||
<form>
|
||||
<fieldset data-role="controlgroup">
|
||||
|
|
|
@ -17,7 +17,6 @@
|
|||
<div data-role="content">
|
||||
<div class="viewSettings">
|
||||
<div class="viewControls">
|
||||
<button data-mini="true" data-icon="sort" data-inline="true" onclick="$('#sortPanel', $(this).parents('.page')).panel( 'toggle' );">Sort</button>
|
||||
<button data-mini="true" data-icon="filter" data-inline="true" onclick="$('#filterPanel', $(this).parents('.page')).panel( 'toggle' );">Filter</button>
|
||||
</div>
|
||||
<div class="listTopPaging">
|
||||
|
@ -26,40 +25,6 @@
|
|||
</div>
|
||||
<div id="items" class="itemsContainer"></div>
|
||||
</div>
|
||||
<div data-role="panel" id="sortPanel" data-position="right" data-display="overlay" data-theme="a" data-position-fixed="true">
|
||||
|
||||
<form>
|
||||
<fieldset data-role="controlgroup">
|
||||
<legend>
|
||||
<strong>Sort By:</strong>
|
||||
</legend>
|
||||
|
||||
<input class="radioSortBy defaultSort" type="radio" name="radioSortBy" id="radioSortName" value="on" checked="checked" data-sortby="SortName" data-mini="true">
|
||||
<label for="radioSortName">Name</label>
|
||||
|
||||
<input class="radioSortBy" type="radio" name="radioSortBy" id="radioAlbumCount" value="on" checked="checked" data-sortby="AlbumCount,SortName" data-mini="true">
|
||||
<label for="radioAlbumCount">Album count</label>
|
||||
|
||||
<input class="radioSortBy" type="radio" name="radioSortBy" id="radioMusicVideoCount" value="on" checked="checked" data-sortby="MusicVideoCount,SortName" data-mini="true">
|
||||
<label for="radioMusicVideoCount">Music video count</label>
|
||||
|
||||
<input class="radioSortBy" type="radio" name="radioSortBy" id="radioSongCount" value="on" checked="checked" data-sortby="SongCount,SortName" data-mini="true">
|
||||
<label for="radioSongCount">Song count</label>
|
||||
</fieldset>
|
||||
|
||||
<fieldset data-role="controlgroup">
|
||||
<legend>
|
||||
<strong>Sort Order:</strong>
|
||||
</legend>
|
||||
|
||||
<input class="radioSortOrder" type="radio" name="radioSortOrder" id="radioAscending" value="on" checked="checked" data-sortorder="Ascending" data-mini="true">
|
||||
<label for="radioAscending">Ascending</label>
|
||||
|
||||
<input class="radioSortOrder" type="radio" name="radioSortOrder" id="radioDescending" value="off" data-sortorder="Descending" data-mini="true">
|
||||
<label for="radioDescending">Descending</label>
|
||||
</fieldset>
|
||||
</form>
|
||||
</div>
|
||||
<div data-role="panel" id="filterPanel" data-position="right" data-display="overlay" data-theme="a" data-position-fixed="true">
|
||||
<form>
|
||||
<fieldset data-role="controlgroup">
|
||||
|
|
|
@ -14,6 +14,7 @@
|
|||
$('#txtPortNumber', page).val(config.HttpServerPortNumber);
|
||||
|
||||
$('#txtDdns', page).val(config.WanDdns || '');
|
||||
$('#txtServerName', page).val(config.ServerName || '');
|
||||
|
||||
$('#chkEnableUpnp', page).checked(config.EnableUPnP).checkboxradio('refresh');
|
||||
|
||||
|
@ -52,6 +53,7 @@
|
|||
config.EnableUPnP = $('#chkEnableUpnp', form).checked();
|
||||
|
||||
config.WanDdns = $('#txtDdns', form).val();
|
||||
config.ServerName = $('#txtServerName', form).val();
|
||||
|
||||
ApiClient.updateServerConfiguration(config).done(Dashboard.processServerConfigurationUpdateResult);
|
||||
});
|
||||
|
|
|
@ -71,6 +71,9 @@
|
|||
$('#txtMultiEpisodePattern', page).val(tvOptions.MultiEpisodeNamePattern).trigger('change');
|
||||
|
||||
$('#txtDeleteLeftOverFiles', page).val(tvOptions.LeftOverFileExtensionsToDelete.join(';'));
|
||||
|
||||
$('#copyOrMoveFile', page).val(tvOptions.CopyOriginalFile.toString()).selectmenu('refresh');
|
||||
|
||||
}
|
||||
|
||||
$(document).on('pageinit', "#libraryFileOrganizerPage", function () {
|
||||
|
@ -150,6 +153,8 @@
|
|||
var watchLocation = $('#txtWatchFolder', form).val();
|
||||
tvOptions.WatchLocations = watchLocation ? [watchLocation] : [];
|
||||
|
||||
tvOptions.CopyOriginalFile = $('#copyOrMoveFile', form).val();
|
||||
|
||||
ApiClient.updateServerConfiguration(config).done(Dashboard.processServerConfigurationUpdateResult);
|
||||
});
|
||||
|
||||
|
|
|
@ -135,9 +135,9 @@
|
|||
|
||||
var html = '';
|
||||
|
||||
var table = $('.tblConnections', page);
|
||||
var container = $('.connections', page);
|
||||
|
||||
$('.trSession', table).addClass('deadSession');
|
||||
$('.sessionPosterItem', container).addClass('deadSession');
|
||||
|
||||
var deviceId = ApiClient.deviceId();
|
||||
|
||||
|
@ -145,98 +145,181 @@
|
|||
|
||||
var connection = dashboardInfo.ActiveConnections[i];
|
||||
|
||||
var rowId = 'trSession' + connection.Id;
|
||||
var itemId = 'session' + connection.Id;
|
||||
|
||||
var elem = $('#' + rowId, page);
|
||||
var elem = $('#' + itemId, page);
|
||||
|
||||
if (elem.length) {
|
||||
DashboardPage.updateSession(elem, connection);
|
||||
continue;
|
||||
}
|
||||
|
||||
html += '<tr class="trSession" id="' + rowId + '">';
|
||||
|
||||
html += '<td class="clientType" style="text-align:center;">';
|
||||
html += DashboardPage.getClientType(connection);
|
||||
html += '</td>';
|
||||
|
||||
html += '<td>';
|
||||
|
||||
html += '<div>';
|
||||
|
||||
if (deviceId == connection.DeviceId) {
|
||||
html += connection.Client;
|
||||
} else {
|
||||
html += '<a href="#" onclick="RemoteControl.showMenu({sessionId:\'' + connection.Id + '\'});">' + connection.Client + '</a>';
|
||||
}
|
||||
html += '</div>';
|
||||
|
||||
html += '<div>' + connection.ApplicationVersion + '</div>';
|
||||
html += '<div>' + connection.DeviceName + '</div>';
|
||||
html += '</td>';
|
||||
|
||||
html += '<td class="username">';
|
||||
html += DashboardPage.getUsersHtml(connection);
|
||||
html += '</td>';
|
||||
html += '<div class="sessionPosterItem posterItem squarePosterItem" id="' + itemId + '" style="vertical-align:top;margin-bottom:2em;">';
|
||||
|
||||
var nowPlayingItem = connection.NowPlayingItem;
|
||||
var imageUrl = DashboardPage.getNowPlayingImage(nowPlayingItem);
|
||||
|
||||
html += '<td class="nowPlayingImage">';
|
||||
html += DashboardPage.getNowPlayingImage(nowPlayingItem);
|
||||
html += '</td>';
|
||||
var style = "";
|
||||
|
||||
html += '<td class="nowPlayingText">';
|
||||
html += DashboardPage.getNowPlayingText(connection, nowPlayingItem);
|
||||
html += '</td>';
|
||||
if (imageUrl) {
|
||||
style += 'background-image:url(\'' + imageUrl + '\');';
|
||||
}
|
||||
|
||||
html += '</tr>';
|
||||
var onclick = connection.DeviceId == deviceId ? '' : ' onclick="RemoteControl.showMenu({sessionId:\'' + connection.Id + '\'});"';
|
||||
|
||||
html += '<a' + onclick + ' data-imageurl="' + imageUrl + '" href="#" class="posterItemImage coveredPosterItemImage" style="' + style + 'background-color:#f2f2f2;display:block;">';
|
||||
|
||||
var defaultTextStyle = '';
|
||||
|
||||
if (nowPlayingItem) {
|
||||
defaultTextStyle = "display:none;";
|
||||
}
|
||||
html += '<div class="posterItemDefaultText" style="' + defaultTextStyle + '">Nothing currently playing</div>';
|
||||
|
||||
html += '<div class="posterItemTextOverlay">';
|
||||
|
||||
var itemNameStyle='';
|
||||
|
||||
if (!nowPlayingItem) {
|
||||
itemNameStyle = "display:none;";
|
||||
}
|
||||
html += '<div class="posterItemText posterItemName" style="' + itemNameStyle + '">' + (nowPlayingItem ? nowPlayingItem.Name : '') + '</div>';
|
||||
|
||||
var progressStyle='';
|
||||
|
||||
if (!nowPlayingItem) {
|
||||
progressStyle = "display:none;";
|
||||
}
|
||||
html += "<div class='posterItemText posterItemProgress' style='" + progressStyle + "'>";
|
||||
|
||||
html += '<progress class="itemProgressBar" min="0" max="100" value="' + DashboardPage.getPlaybackProgress(connection) + '" style="opacity:.9;"></progress>';
|
||||
html += "</div>";
|
||||
html += "</div>";
|
||||
|
||||
html += '<img src="' + DashboardPage.getClientImage(connection) + '" style="top:10px;left:10px;height:24px;position:absolute;opacity: .95;" />';
|
||||
|
||||
html += '</a>';
|
||||
|
||||
html += '<div class="sessionItemText">' + DashboardPage.getSessionItemText(connection) + '</div>';
|
||||
|
||||
//html += '<td class="clientType" style="text-align:center;">';
|
||||
//html += DashboardPage.getClientType(connection);
|
||||
//html += '</td>';
|
||||
|
||||
//html += '<td>';
|
||||
|
||||
//html += '<div>';
|
||||
|
||||
//if (deviceId == connection.DeviceId) {
|
||||
// html += connection.Client;
|
||||
//} else {
|
||||
// html += '<a href="#" onclick="RemoteControl.showMenu({sessionId:\'' + connection.Id + '\'});">' + connection.Client + '</a>';
|
||||
//}
|
||||
//html += '</div>';
|
||||
|
||||
//html += '</td>';
|
||||
|
||||
//html += '<td class="nowPlayingImage">';
|
||||
//html += DashboardPage.getNowPlayingImage(nowPlayingItem);
|
||||
//html += '</td>';
|
||||
|
||||
//html += '<td class="nowPlayingText">';
|
||||
//html += DashboardPage.getNowPlayingText(connection, nowPlayingItem);
|
||||
//html += '</td>';
|
||||
|
||||
html += '</div>';
|
||||
}
|
||||
|
||||
table.append(html).trigger('create');
|
||||
container.append(html).trigger('create');
|
||||
|
||||
$('.deadSession', table).remove();
|
||||
$('.deadSession', container).remove();
|
||||
},
|
||||
|
||||
getPlaybackProgress: function (session) {
|
||||
|
||||
if (session.NowPlayingItem) {
|
||||
if (session.NowPlayingItem.RunTimeTicks) {
|
||||
|
||||
var pct = (session.NowPlayingPositionTicks || 0) / session.NowPlayingItem.RunTimeTicks;
|
||||
|
||||
return pct * 100;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
},
|
||||
|
||||
getUsersHtml: function (session) {
|
||||
|
||||
var html = '';
|
||||
var html = '<div>';
|
||||
|
||||
if (session.UserId) {
|
||||
html += '<div><a href="useredit.html?userid=' + session.UserId + '">' + session.UserName + '</a><div>';
|
||||
html += session.UserName;
|
||||
}
|
||||
|
||||
html += session.AdditionalUsers.map(function (currentSession) {
|
||||
|
||||
return '<div><a href="useredit.html?userid=' + currentSession.UserId + '">' + currentSession.UserName + '</a><div>';
|
||||
return ', ' + currentSession.UserName;
|
||||
});
|
||||
|
||||
html += '</div>';
|
||||
|
||||
return html;
|
||||
},
|
||||
|
||||
updateSession: function (row, session) {
|
||||
updateSession: function (elem, session) {
|
||||
|
||||
row.removeClass('deadSession');
|
||||
elem.removeClass('deadSession');
|
||||
|
||||
$('.username', row).html(DashboardPage.getUsersHtml(session)).trigger('create');
|
||||
$('.sessionItemText', elem).html(DashboardPage.getSessionItemText(session));
|
||||
|
||||
var nowPlayingItem = session.NowPlayingItem;
|
||||
|
||||
$('.nowPlayingText', row).html(DashboardPage.getNowPlayingText(session, nowPlayingItem)).trigger('create');
|
||||
if (nowPlayingItem) {
|
||||
$('.posterItemDefaultText', elem).hide();
|
||||
$('.posterItemProgress', elem).show();
|
||||
$('.posterItemName', elem).show().html(nowPlayingItem.Name);
|
||||
|
||||
var imageRow = $('.nowPlayingImage', row);
|
||||
$('progress', elem).val(DashboardPage.getPlaybackProgress(session));
|
||||
} else {
|
||||
$('.posterItemDefaultText', elem).show();
|
||||
$('.posterItemProgress', elem).hide();
|
||||
$('.posterItemName', elem).hide().html('');
|
||||
}
|
||||
|
||||
var image = $('img', imageRow)[0];
|
||||
var imageUrl = DashboardPage.getNowPlayingImage(nowPlayingItem);
|
||||
|
||||
var nowPlayingItemId = nowPlayingItem ? nowPlayingItem.Id : null;
|
||||
var nowPlayingItemImageTag = nowPlayingItem ? nowPlayingItem.PrimaryImageTag : null;
|
||||
var image = $('.posterItemImage', elem)[0];
|
||||
|
||||
if (!image || image.getAttribute('data-itemid') != nowPlayingItemId || image.getAttribute('data-tag') != nowPlayingItemImageTag) {
|
||||
imageRow.html(DashboardPage.getNowPlayingImage(nowPlayingItem));
|
||||
if (imageUrl && imageUrl != image.getAttribute('data-imageurl')) {
|
||||
|
||||
image.style.backgroundImage = 'url(\'' + imageUrl + '\')';
|
||||
image.setAttribute('data-imageurl', imageUrl);
|
||||
|
||||
} else if (!imageUrl && image.getAttribute('data-imageurl')) {
|
||||
|
||||
image.style.backgroundImage = null;
|
||||
image.setAttribute('data-imageurl', '');
|
||||
}
|
||||
},
|
||||
|
||||
getClientType: function (connection) {
|
||||
getSessionItemText: function (connection) {
|
||||
|
||||
var html = '';
|
||||
|
||||
html += '<div class="posterItemText">';
|
||||
html += DashboardPage.getUsersHtml(connection);
|
||||
html += '</div>';
|
||||
|
||||
//html += '<div class="posterItemText">' + connection.Client + '</div>';
|
||||
//html += '<div class="posterItemText">' + connection.ApplicationVersion + '</div>';
|
||||
|
||||
html += '<div class="posterItemText">' + connection.DeviceName + '</div>';
|
||||
|
||||
return html;
|
||||
},
|
||||
|
||||
getClientImage: function (connection) {
|
||||
|
||||
var clientLowered = connection.Client.toLowerCase();
|
||||
|
||||
|
@ -262,91 +345,81 @@
|
|||
imgUrl = 'css/images/clients/html5.png';
|
||||
}
|
||||
|
||||
return "<img src='" + imgUrl + "' alt='Dashboard' />";
|
||||
return imgUrl;
|
||||
}
|
||||
if (clientLowered == "mb-classic") {
|
||||
|
||||
return "<img src='css/images/clients/mbc.png' alt='Media Browser Classic' />";
|
||||
return "css/images/clients/mbc.png";
|
||||
}
|
||||
if (clientLowered == "media browser theater") {
|
||||
|
||||
return "<img src='css/images/clients/mb.png' alt='Media Browser Theater' />";
|
||||
return "css/images/clients/mb.png";
|
||||
}
|
||||
if (clientLowered == "android") {
|
||||
|
||||
return "<img src='css/images/clients/android.png' alt='Android' />";
|
||||
return "css/images/clients/android.png";
|
||||
}
|
||||
if (clientLowered == "roku") {
|
||||
|
||||
return "<img src='css/images/clients/roku.jpg' alt='Roku' />";
|
||||
return "css/images/clients/roku.jpg";
|
||||
}
|
||||
if (clientLowered == "ios") {
|
||||
|
||||
return "<img src='css/images/clients/ios.png' alt='iOS' />";
|
||||
return "css/images/clients/ios.png";
|
||||
}
|
||||
if (clientLowered == "windows rt") {
|
||||
|
||||
return "<img src='css/images/clients/windowsrt.png' alt='Windows RT' />";
|
||||
return "css/images/clients/windowsrt.png";
|
||||
}
|
||||
if (clientLowered == "windows phone") {
|
||||
|
||||
return "<img src='css/images/clients/windowsphone.png' alt='Windows Phone' />";
|
||||
return "css/images/clients/windowsphone.png";
|
||||
}
|
||||
if (clientLowered == "dlna") {
|
||||
|
||||
return "<img src='css/images/clients/dlna.png' alt='Dlna' />";
|
||||
return "css/images/clients/dlna.png";
|
||||
}
|
||||
if (clientLowered == "mbkinect") {
|
||||
|
||||
return "<img src='css/images/clients/mbkinect.png' alt='MB Kinect' />";
|
||||
return "css/images/clients/mbkinect.png";
|
||||
}
|
||||
if (clientLowered == "xbmc") {
|
||||
|
||||
return "<img src='css/images/clients/xbmc.png' alt='Xbmc' />";
|
||||
return "css/images/clients/xbmc.png";
|
||||
}
|
||||
|
||||
return connection.Client;
|
||||
return "css/images/clients/mb.png";
|
||||
},
|
||||
|
||||
getNowPlayingImage: function (item) {
|
||||
|
||||
if (item && item.ThumbItemId) {
|
||||
return ApiClient.getImageUrl(item.ThumbItemId, {
|
||||
type: "Thumb",
|
||||
height: 300,
|
||||
tag: item.ThumbImageTag
|
||||
});
|
||||
}
|
||||
|
||||
if (item && item.BackdropItemId) {
|
||||
return ApiClient.getImageUrl(item.BackdropItemId, {
|
||||
type: "Backdrop",
|
||||
height: 300,
|
||||
tag: item.BackdropImageTag
|
||||
});
|
||||
}
|
||||
|
||||
if (item && item.PrimaryImageTag) {
|
||||
var url = ApiClient.getImageUrl(item.Id, {
|
||||
return ApiClient.getImageUrl(item.Id, {
|
||||
type: "Primary",
|
||||
height: 100,
|
||||
height: 300,
|
||||
tag: item.PrimaryImageTag
|
||||
});
|
||||
|
||||
url += "&xxx=" + new Date().getTime();
|
||||
|
||||
return "<img data-itemid='" + item.Id + "' data-tag='" + item.PrimaryImageTag + "' class='clientNowPlayingImage' src='" + url + "' alt='" + item.Name + "' title='" + item.Name + "' />";
|
||||
}
|
||||
|
||||
return "";
|
||||
},
|
||||
|
||||
getNowPlayingText: function (connection, item) {
|
||||
|
||||
var html = "";
|
||||
|
||||
if (item) {
|
||||
|
||||
html += "<div><a href='itemdetails.html?id=" + item.Id + "'>" + item.Name + "</a></div>";
|
||||
|
||||
html += "<div>";
|
||||
|
||||
if (item.RunTimeTicks) {
|
||||
html += Dashboard.getDisplayTime(connection.NowPlayingPositionTicks || 0) + " / ";
|
||||
|
||||
html += Dashboard.getDisplayTime(item.RunTimeTicks);
|
||||
}
|
||||
|
||||
html += "</div>";
|
||||
}
|
||||
|
||||
return html;
|
||||
},
|
||||
|
||||
renderRunningTasks: function (dashboardInfo) {
|
||||
|
||||
var page = $.mobile.activePage;
|
||||
|
|
45
dashboard-ui/scripts/dlnasettings.js
Normal file
45
dashboard-ui/scripts/dlnasettings.js
Normal file
|
@ -0,0 +1,45 @@
|
|||
(function ($, document, window) {
|
||||
|
||||
function loadPage(page, config) {
|
||||
|
||||
$('#chkEnablePlayTo', page).checked(config.DlnaOptions.EnablePlayTo).checkboxradio("refresh");
|
||||
|
||||
Dashboard.hideLoadingMsg();
|
||||
}
|
||||
|
||||
$(document).on('pageshow', "#dlnaSettingsPage", function () {
|
||||
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
var page = this;
|
||||
|
||||
ApiClient.getServerConfiguration().done(function (config) {
|
||||
|
||||
loadPage(page, config);
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
function onSubmit() {
|
||||
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
var form = this;
|
||||
|
||||
ApiClient.getServerConfiguration().done(function (config) {
|
||||
|
||||
config.DlnaOptions.EnablePlayTo = $('#chkEnablePlayTo', form).checked();
|
||||
|
||||
ApiClient.updateServerConfiguration(config).done(Dashboard.processServerConfigurationUpdateResult);
|
||||
});
|
||||
|
||||
// Disable default form submission
|
||||
return false;
|
||||
}
|
||||
|
||||
window.DlnaSettingsPage = {
|
||||
onSubmit: onSubmit
|
||||
};
|
||||
|
||||
})(jQuery, document, window);
|
306
dashboard-ui/scripts/editcollectionitems.js
Normal file
306
dashboard-ui/scripts/editcollectionitems.js
Normal file
|
@ -0,0 +1,306 @@
|
|||
(function ($, document, window, FileReader, escape) {
|
||||
|
||||
var currentItem;
|
||||
|
||||
function updateTabs(page, item) {
|
||||
|
||||
var query = MetadataEditor.getEditQueryString(item);
|
||||
|
||||
$('#btnEditMetadata', page).attr('href', 'edititemmetadata.html?' + query);
|
||||
$('#btnEditImages', page).attr('href', 'edititemimages.html?' + query);
|
||||
}
|
||||
|
||||
function reload(page) {
|
||||
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
$('#btnRemoveItems', page).buttonEnabled(false);
|
||||
|
||||
MetadataEditor.getItemPromise().done(function (item) {
|
||||
|
||||
currentItem = item;
|
||||
|
||||
LibraryBrowser.renderName(item, $('.itemName', page), true);
|
||||
|
||||
updateTabs(page, item);
|
||||
|
||||
reloadTitles(page, item);
|
||||
});
|
||||
}
|
||||
|
||||
function getTitleHtml(item) {
|
||||
|
||||
var html = '<div style="display:inline-block;margin:5px;vertical-align:top;">';
|
||||
|
||||
html += '<div style="width:120px;height:180px;">';
|
||||
if (item.ImageTags.Primary) {
|
||||
|
||||
var imgUrl = ApiClient.getImageUrl(item.Id, {
|
||||
type: "Primary",
|
||||
width: 300,
|
||||
tag: item.ImageTags.Primary
|
||||
});
|
||||
|
||||
html += '<img src="' + imgUrl + '" style="max-width:120px;max-height:180px;" />';
|
||||
|
||||
}
|
||||
html += '</div>';
|
||||
|
||||
html += '<div style="text-align:center;margin-top:4px;max-width:100px;overflow:hidden;height: 32px;">' + item.Name + '</div>';
|
||||
|
||||
if (item.ParentId != currentItem.Id) {
|
||||
html += '<label for="chkRemove' + item.Id + '">Remove</label><input id="chkRemove' + item.Id + '" class="chkRemoveItem" type="checkbox" data-itemid="' + item.Id + '" data-mini="true" />';
|
||||
}
|
||||
|
||||
html += '</div>';
|
||||
|
||||
return html;
|
||||
}
|
||||
|
||||
function getSearchResultHtml(item) {
|
||||
|
||||
var html = '<div style="display:inline-block;margin:3px;vertical-align:top;">';
|
||||
|
||||
html += '<div style="width:100px;height:150px;">';
|
||||
|
||||
if (item.PrimaryImageTag) {
|
||||
|
||||
var imgUrl = ApiClient.getImageUrl(item.ItemId, {
|
||||
type: "Primary",
|
||||
width: 200,
|
||||
tag: item.PrimaryImageTag
|
||||
});
|
||||
|
||||
html += '<img src="' + imgUrl + '" style="max-width:100px;max-height:150px;" />';
|
||||
|
||||
}
|
||||
html += '</div>';
|
||||
|
||||
html += '<div style="text-align:center;margin-top:4px;max-width:100px;overflow:hidden;height: 32px;">' + item.Name + '</div>';
|
||||
|
||||
html += '<label for="chkAdd' + item.ItemId + '">Add</label><input id="chkAdd' + item.ItemId + '" class="chkAddItem" type="checkbox" data-itemid="' + item.ItemId + '" data-mini="true" />';
|
||||
|
||||
html += '</div>';
|
||||
|
||||
return html;
|
||||
}
|
||||
|
||||
function reloadTitles(page, item) {
|
||||
|
||||
ApiClient.getItems(Dashboard.getCurrentUserId(), {
|
||||
|
||||
ParentId: item.Id
|
||||
|
||||
}).done(function (result) {
|
||||
|
||||
// Scroll back up so they can see the results from the beginning
|
||||
$(document).scrollTop(0);
|
||||
|
||||
var html = result.Items.map(getTitleHtml).join('');
|
||||
|
||||
var elem = $('.collectionItems', page).html(html).trigger('create');
|
||||
|
||||
$('.chkRemoveItem', elem).on('change', function () {
|
||||
|
||||
if ($('.chkRemoveItem:checked', elem).length) {
|
||||
$('#btnRemoveItems', page).buttonEnabled(true);
|
||||
} else {
|
||||
$('#btnRemoveItems', page).buttonEnabled(false);
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
Dashboard.hideLoadingMsg();
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
function showSearchResults(page, searchTerm) {
|
||||
|
||||
ApiClient.getSearchHints({
|
||||
|
||||
userId: Dashboard.getCurrentUserId(),
|
||||
searchTerm: searchTerm,
|
||||
limit: 30,
|
||||
|
||||
includePeople: false,
|
||||
includeGenres: false,
|
||||
includeStudios: false,
|
||||
includeArtists: false,
|
||||
|
||||
IncludeItemTypes: "Movie,Series,Game,MusicAlbum,Book"
|
||||
|
||||
}).done(function (result) {
|
||||
|
||||
renderSearchResults(page, result.SearchHints);
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
function renderSearchResults(page, items) {
|
||||
|
||||
var existingIds = $('.chkRemoveItem', page).get().map(function (c) {
|
||||
return c.getAttribute('data-itemid');
|
||||
});
|
||||
|
||||
var html = items.filter(function (i) {
|
||||
|
||||
return existingIds.indexOf(i.ItemId) == -1;
|
||||
|
||||
}).map(getSearchResultHtml).join('');
|
||||
|
||||
var elem = $('.collectionItemSearchResults', page).html(html).trigger('create');
|
||||
|
||||
$('.chkAddItem', elem).on('change', function () {
|
||||
|
||||
if ($('.chkAddItem:checked', elem).length) {
|
||||
$('#btnAddItems', page).buttonEnabled(true);
|
||||
} else {
|
||||
$('#btnAddItems', page).buttonEnabled(false);
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
function addItemsToCollection(page) {
|
||||
|
||||
var items = $('.chkAddItem:checked', page).get().map(function (c) {
|
||||
|
||||
return c.getAttribute('data-itemid');
|
||||
|
||||
});
|
||||
|
||||
if (!items.length) {
|
||||
Dashboard.alert('Please select at least one item.');
|
||||
return;
|
||||
}
|
||||
|
||||
var url = ApiClient.getUrl("Collections/" + currentItem.Id + "/Items", {
|
||||
|
||||
Ids: items.join(',')
|
||||
|
||||
});
|
||||
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: url
|
||||
|
||||
}).done(function () {
|
||||
|
||||
Dashboard.hideLoadingMsg();
|
||||
|
||||
$('.popupIdentify', page).popup('close');
|
||||
|
||||
reload(page);
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
function removeItemsFromCollection(page) {
|
||||
var items = $('.chkRemoveItem:checked', page).get().map(function (c) {
|
||||
|
||||
return c.getAttribute('data-itemid');
|
||||
|
||||
});
|
||||
|
||||
if (!items.length) {
|
||||
Dashboard.alert('Please select at least one item.');
|
||||
return;
|
||||
}
|
||||
|
||||
var url = ApiClient.getUrl("Collections/" + currentItem.Id + "/Items", {
|
||||
|
||||
Ids: items.join(',')
|
||||
|
||||
});
|
||||
|
||||
$.ajax({
|
||||
type: "DELETE",
|
||||
url: url
|
||||
|
||||
}).done(function () {
|
||||
|
||||
Dashboard.hideLoadingMsg();
|
||||
|
||||
reload(page);
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
$(document).on('pageinit', "#editCollectionTitlesPage", function () {
|
||||
|
||||
var page = this;
|
||||
|
||||
$('.libraryTree', page).on('itemclicked', function (event, data) {
|
||||
|
||||
if (data.itemType == "libraryreport") {
|
||||
Dashboard.navigate('libraryreport.html');
|
||||
return;
|
||||
}
|
||||
|
||||
if (data.itemType == "livetvservice") {
|
||||
return;
|
||||
}
|
||||
|
||||
if (data.id != currentItem.Id) {
|
||||
|
||||
MetadataEditor.currentItemId = data.id;
|
||||
MetadataEditor.currentItemName = data.itemName;
|
||||
MetadataEditor.currentItemType = data.itemType;
|
||||
//Dashboard.navigate('edititemmetadata.html?id=' + data.id);
|
||||
|
||||
//$.mobile.urlHistory.ignoreNextHashChange = true;
|
||||
window.location.hash = 'editItemImagesPage?id=' + data.id;
|
||||
|
||||
reload(page);
|
||||
}
|
||||
});
|
||||
|
||||
$('#btnAddItem', page).on('click', function () {
|
||||
|
||||
|
||||
var popup = $('.popupIdentify', page).popup('open');
|
||||
|
||||
$('#txtLookupName', popup).val('');
|
||||
$('.collectionItemSearchResults', popup).empty();
|
||||
$('#btnAddItems', popup).buttonEnabled(false);
|
||||
});
|
||||
|
||||
$('#btnAddItems', page).on('click', function () {
|
||||
|
||||
addItemsToCollection(page);
|
||||
});
|
||||
|
||||
$('#btnRemoveItems', page).on('click', function () {
|
||||
|
||||
|
||||
removeItemsFromCollection(page);
|
||||
});
|
||||
|
||||
}).on('pagebeforeshow', "#editCollectionTitlesPage", function () {
|
||||
|
||||
var page = this;
|
||||
|
||||
reload(page);
|
||||
|
||||
}).on('pagehide', "#editCollectionTitlesPage", function () {
|
||||
|
||||
var page = this;
|
||||
|
||||
currentItem = null;
|
||||
|
||||
});
|
||||
|
||||
window.EditCollectionItemsPage = {
|
||||
|
||||
onSearchFormSubmit: function () {
|
||||
|
||||
var page = $(this).parents('.page');
|
||||
|
||||
showSearchResults(page, $('#txtLookupName', page).val());
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
})(jQuery, document, window, window.FileReader, escape);
|
|
@ -14,6 +14,7 @@
|
|||
|
||||
$('#btnEditPeople', page).attr('href', 'edititempeople.html?' + query);
|
||||
$('#btnEditMetadata', page).attr('href', 'edititemmetadata.html?' + query);
|
||||
$('#btnEditCollectionTitles', page).attr('href', 'editcollectionitems.html?' + query);
|
||||
}
|
||||
|
||||
function getBaseRemoteOptions() {
|
||||
|
@ -268,12 +269,18 @@
|
|||
|
||||
updateTabs(page, item);
|
||||
|
||||
if (item.Type == "Person" || item.Type == "Studio" || item.Type == "MusicGenre" || item.Type == "Genre" || item.Type == "MusicArtist" || item.Type == "GameGenre" || item.Type == "Channel") {
|
||||
if (item.Type == "Person" || item.Type == "Studio" || item.Type == "MusicGenre" || item.Type == "Genre" || item.Type == "MusicArtist" || item.Type == "GameGenre" || item.Type == "Channel" || item.Type == "BoxSet") {
|
||||
$('#btnEditPeople', page).hide();
|
||||
} else {
|
||||
$('#btnEditPeople', page).show();
|
||||
}
|
||||
|
||||
if (item.Type == "BoxSet") {
|
||||
$('#btnEditCollectionTitles', page).show();
|
||||
} else {
|
||||
$('#btnEditCollectionTitles', page).hide();
|
||||
}
|
||||
|
||||
ApiClient.getRemoteImageProviders(getBaseRemoteOptions()).done(function (providers) {
|
||||
|
||||
if (providers.length) {
|
||||
|
|
|
@ -16,6 +16,7 @@
|
|||
|
||||
$('#btnEditPeople', page).attr('href', 'edititempeople.html?' + query);
|
||||
$('#btnEditImages', page).attr('href', 'edititemimages.html?' + query);
|
||||
$('#btnEditCollectionTitles', page).attr('href', 'editcollectionitems.html?' + query);
|
||||
}
|
||||
|
||||
function reload(page) {
|
||||
|
@ -82,12 +83,18 @@
|
|||
setFieldVisibilities(page, item);
|
||||
fillItemInfo(page, item);
|
||||
|
||||
if (item.Type == "Person" || item.Type == "Studio" || item.Type == "MusicGenre" || item.Type == "Genre" || item.Type == "MusicArtist" || item.Type == "GameGenre" || item.Type == "Channel") {
|
||||
if (item.Type == "Person" || item.Type == "Studio" || item.Type == "MusicGenre" || item.Type == "Genre" || item.Type == "MusicArtist" || item.Type == "GameGenre" || item.Type == "Channel" || item.Type == "BoxSet") {
|
||||
$('#btnEditPeople', page).hide();
|
||||
} else {
|
||||
$('#btnEditPeople', page).show();
|
||||
}
|
||||
|
||||
if (item.Type == "BoxSet") {
|
||||
$('#btnEditCollectionTitles', page).show();
|
||||
} else {
|
||||
$('#btnEditCollectionTitles', page).hide();
|
||||
}
|
||||
|
||||
Dashboard.hideLoadingMsg();
|
||||
});
|
||||
}
|
||||
|
@ -280,7 +287,17 @@
|
|||
$('#fldYear', page).show();
|
||||
}
|
||||
|
||||
if (item.Type == "Movie" || item.Type == "Trailer" || item.Type == "AdultVideo" || item.Type == "Series" || item.Type == "Game" || item.Type == "BoxSet" || item.Type == "Person" || item.Type == "Book") {
|
||||
if (item.Type == "Movie" ||
|
||||
item.Type == "Trailer" ||
|
||||
item.Type == "AdultVideo" ||
|
||||
item.Type == "Series" ||
|
||||
item.Type == "Game" ||
|
||||
item.Type == "BoxSet" ||
|
||||
item.Type == "Person" ||
|
||||
item.Type == "Book" ||
|
||||
item.Type == "MusicAlbum" ||
|
||||
item.Type == "MusicArtist") {
|
||||
|
||||
$('#btnIdentify', page).show();
|
||||
} else {
|
||||
$('#btnIdentify', page).hide();
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
|
||||
$('#btnEditMetadata', page).attr('href', 'edititemmetadata.html?' + query);
|
||||
$('#btnEditImages', page).attr('href', 'edititemimages.html?' + query);
|
||||
$('#btnEditCollectionTitles', page).attr('href', 'editcollectionitems.html?' + query);
|
||||
}
|
||||
|
||||
function reload(page) {
|
||||
|
|
|
@ -46,7 +46,7 @@
|
|||
}
|
||||
|
||||
if (!item.BackdropImageTags || !item.BackdropImageTags.length) {
|
||||
if (item.Type !== "Episode" && item.Type !== "Season" && item.MediaType !== "Audio" && item.Type !== "Channel") {
|
||||
if (item.Type !== "Episode" && item.Type !== "Season" && item.MediaType !== "Audio" && item.Type !== "Channel" && item.Type !== "MusicAlbum") {
|
||||
htmlName += '<img src="css/images/editor/missingbackdrop.png" title="Missing backdrop image." />';
|
||||
}
|
||||
}
|
||||
|
@ -115,6 +115,13 @@
|
|||
|
||||
callback(nodes);
|
||||
|
||||
if (!selectedId) {
|
||||
|
||||
if (window.location.toString().toLowerCase().indexOf('report.html') != -1) {
|
||||
selectedId = 'libraryreport';
|
||||
}
|
||||
}
|
||||
|
||||
if (selectedId && nodes.filter(function (f) {
|
||||
|
||||
return f.attr.id == selectedId;
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
SortOrder: "Ascending",
|
||||
IncludeItemTypes: "Episode",
|
||||
Recursive: true,
|
||||
Fields: "DateCreated,SeriesInfo,PrimaryImageAspectRatio",
|
||||
Fields: "SeriesInfo,PrimaryImageAspectRatio",
|
||||
StartIndex: 0,
|
||||
IsMissing: false,
|
||||
IsVirtualUnaired: false
|
||||
|
|
|
@ -25,9 +25,6 @@
|
|||
|
||||
updateFilterControls(page);
|
||||
|
||||
var checkSortOption = $('.radioSortBy:checked', page);
|
||||
$('.viewSummary', page).html(LibraryBrowser.getViewSummaryHtml(query, checkSortOption)).trigger('create');
|
||||
|
||||
html = LibraryBrowser.getPosterViewHtml({
|
||||
items: result.Items,
|
||||
shape: "backdrop",
|
||||
|
@ -65,36 +62,12 @@
|
|||
|
||||
function updateFilterControls(page) {
|
||||
|
||||
// Reset form values using the last used query
|
||||
$('.radioSortBy', page).each(function () {
|
||||
|
||||
this.checked = (query.SortBy || '').toLowerCase() == this.getAttribute('data-sortby').toLowerCase();
|
||||
|
||||
}).checkboxradio('refresh');
|
||||
|
||||
$('.radioSortOrder', page).each(function () {
|
||||
|
||||
this.checked = (query.SortOrder || '').toLowerCase() == this.getAttribute('data-sortorder').toLowerCase();
|
||||
|
||||
}).checkboxradio('refresh');
|
||||
}
|
||||
|
||||
$(document).on('pageinit', "#gameGenresPage", function () {
|
||||
|
||||
var page = this;
|
||||
|
||||
$('.radioSortBy', this).on('click', function () {
|
||||
query.SortBy = this.getAttribute('data-sortby');
|
||||
query.StartIndex = 0;
|
||||
reloadItems(page);
|
||||
});
|
||||
|
||||
$('.radioSortOrder', this).on('click', function () {
|
||||
query.SortOrder = this.getAttribute('data-sortorder');
|
||||
query.StartIndex = 0;
|
||||
reloadItems(page);
|
||||
});
|
||||
|
||||
$('.chkStandardFilter', this).on('change', function () {
|
||||
|
||||
var filterName = this.getAttribute('data-filter');
|
||||
|
|
|
@ -26,9 +26,6 @@
|
|||
|
||||
updateFilterControls(page);
|
||||
|
||||
var checkSortOption = $('.radioSortBy:checked', page);
|
||||
$('.viewSummary', page).html(LibraryBrowser.getViewSummaryHtml(query, checkSortOption)).trigger('create');
|
||||
|
||||
html = LibraryBrowser.getPosterViewHtml({
|
||||
items: result.Items,
|
||||
shape: "backdrop",
|
||||
|
@ -66,36 +63,12 @@
|
|||
|
||||
function updateFilterControls(page) {
|
||||
|
||||
// Reset form values using the last used query
|
||||
$('.radioSortBy', page).each(function () {
|
||||
|
||||
this.checked = (query.SortBy || '').toLowerCase() == this.getAttribute('data-sortby').toLowerCase();
|
||||
|
||||
}).checkboxradio('refresh');
|
||||
|
||||
$('.radioSortOrder', page).each(function () {
|
||||
|
||||
this.checked = (query.SortOrder || '').toLowerCase() == this.getAttribute('data-sortorder').toLowerCase();
|
||||
|
||||
}).checkboxradio('refresh');
|
||||
}
|
||||
|
||||
$(document).on('pageinit', "#gameStudiosPage", function () {
|
||||
|
||||
var page = this;
|
||||
|
||||
$('.radioSortBy', this).on('click', function () {
|
||||
query.SortBy = this.getAttribute('data-sortby');
|
||||
query.StartIndex = 0;
|
||||
reloadItems(page);
|
||||
});
|
||||
|
||||
$('.radioSortOrder', this).on('click', function () {
|
||||
query.SortOrder = this.getAttribute('data-sortorder');
|
||||
query.StartIndex = 0;
|
||||
reloadItems(page);
|
||||
});
|
||||
|
||||
$('.chkStandardFilter', this).on('change', function () {
|
||||
|
||||
var filterName = this.getAttribute('data-filter');
|
||||
|
|
|
@ -174,7 +174,7 @@
|
|||
var views = [];
|
||||
|
||||
if (counts.MovieCount || counts.TrailerCount) {
|
||||
views.push({ id: "moviesView", name: "Movies", url: "moviesrecommended.html", img: "css/images/items/list/chapter.png", background: "#0094FF" });
|
||||
views.push({ id: "moviesView", name: "Movies", url: "movieslatest.html", img: "css/images/items/list/chapter.png", background: "#0094FF" });
|
||||
}
|
||||
|
||||
if (counts.EpisodeCount || counts.SeriesCount) {
|
||||
|
|
|
@ -396,7 +396,7 @@
|
|||
SortOrder: "Ascending",
|
||||
IncludeItemTypes: "",
|
||||
Recursive: true,
|
||||
Fields: "DateCreated,AudioInfo,SeriesInfo,ParentId,PrimaryImageAspectRatio",
|
||||
Fields: "AudioInfo,SeriesInfo,ParentId,PrimaryImageAspectRatio",
|
||||
Limit: LibraryBrowser.getDefaultPageSize(),
|
||||
StartIndex: 0
|
||||
};
|
||||
|
@ -477,10 +477,11 @@
|
|||
}
|
||||
else {
|
||||
|
||||
html += LibraryBrowser.getPosterDetailViewHtml({
|
||||
html = LibraryBrowser.getPosterViewHtml({
|
||||
items: result.Items,
|
||||
preferBackdrop: shape == "backdrop",
|
||||
shape: shape
|
||||
shape: "square",
|
||||
useAverageAspectRatio: true,
|
||||
showTitle: true
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -31,6 +31,7 @@
|
|||
|
||||
if (user.Configuration.IsAdministrator) {
|
||||
$('#editButtonContainer', page).show();
|
||||
|
||||
} else {
|
||||
$('#editButtonContainer', page).hide();
|
||||
}
|
||||
|
@ -122,7 +123,7 @@
|
|||
if (item.Type == "Episode" || item.Type == "Series" || item.Type == "Season") {
|
||||
return "tv";
|
||||
}
|
||||
if (item.Type == "Movie" || item.Type == "Trailer" || item.Type == "BoxSet") {
|
||||
if (item.Type == "Movie" || item.Type == "Trailer") {
|
||||
return "movies";
|
||||
}
|
||||
if (item.Type == "Audio" || item.Type == "MusicAlbum" || item.Type == "MusicArtist" || item.Type == "MusicVideo") {
|
||||
|
@ -131,6 +132,9 @@
|
|||
if (item.MediaType == "Game") {
|
||||
return "games";
|
||||
}
|
||||
if (item.Type == "BoxSet") {
|
||||
return "boxsets";
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
|
@ -162,10 +166,6 @@
|
|||
$('#gameSystemTabs', page).show();
|
||||
}
|
||||
|
||||
if (item.Type == "BoxSet") {
|
||||
$('#boxsetTabs', page).show();
|
||||
}
|
||||
|
||||
if (item.Type == "Trailer") {
|
||||
$('#trailerTabs', page).show();
|
||||
}
|
||||
|
@ -177,8 +177,15 @@
|
|||
|
||||
function setInitialCollapsibleState(page, item, context, user) {
|
||||
|
||||
$('.collectionItems', page).empty();
|
||||
|
||||
if (item.IsFolder) {
|
||||
$('#childrenCollapsible', page).removeClass('hide');
|
||||
|
||||
if (item.Type == "BoxSet") {
|
||||
$('#childrenCollapsible', page).addClass('hide');
|
||||
} else {
|
||||
$('#childrenCollapsible', page).removeClass('hide');
|
||||
}
|
||||
renderChildren(page, item, user);
|
||||
}
|
||||
else {
|
||||
|
@ -346,7 +353,7 @@
|
|||
ApiClient.getItems(Dashboard.getCurrentUserId(), {
|
||||
|
||||
Ids: item.SoundtrackIds.join(","),
|
||||
ItemFields: "PrimaryImageAspectRatio,ItemCounts,DateCreated,AudioInfo",
|
||||
ItemFields: "PrimaryImageAspectRatio,ItemCounts,AudioInfo",
|
||||
SortBy: "SortName"
|
||||
|
||||
}).done(function (result) {
|
||||
|
@ -425,7 +432,7 @@
|
|||
var options = {
|
||||
userId: Dashboard.getCurrentUserId(),
|
||||
limit: item.Type == "MusicAlbum" ? 4 : 5,
|
||||
fields: "PrimaryImageAspectRatio,DateCreated,UserData"
|
||||
fields: "PrimaryImageAspectRatio,UserData"
|
||||
};
|
||||
|
||||
if (item.Type == "Movie") {
|
||||
|
@ -527,7 +534,7 @@
|
|||
|
||||
function renderChildren(page, item, user) {
|
||||
|
||||
var fields = "ItemCounts,DateCreated,AudioInfo,PrimaryImageAspectRatio";
|
||||
var fields = "ItemCounts,AudioInfo,PrimaryImageAspectRatio";
|
||||
|
||||
var query = {
|
||||
ParentId: item.Id,
|
||||
|
@ -570,15 +577,9 @@
|
|||
|
||||
} else {
|
||||
|
||||
var shape = "smallPoster";
|
||||
var html = '';
|
||||
|
||||
if (item.Type == "Season") {
|
||||
shape = "smallBackdrop";
|
||||
}
|
||||
|
||||
var html;
|
||||
|
||||
if (item.Type == "Series" || item.Type == "BoxSet") {
|
||||
if (item.Type == "Series") {
|
||||
html = LibraryBrowser.getPosterViewHtml({
|
||||
items: result.Items,
|
||||
shape: "portrait",
|
||||
|
@ -606,18 +607,21 @@
|
|||
centerText: true
|
||||
});
|
||||
}
|
||||
else {
|
||||
html = LibraryBrowser.getPosterDetailViewHtml({
|
||||
items: result.Items,
|
||||
useAverageAspectRatio: true,
|
||||
shape: shape,
|
||||
showParentName: false,
|
||||
displayAsSpecial: item.Type == "Season" && item.IndexNumber
|
||||
});
|
||||
}
|
||||
|
||||
$('#childrenContent', page).html(html).createPosterItemHoverMenu();
|
||||
|
||||
if (item.Type == "BoxSet") {
|
||||
|
||||
var collectionItemTypes = [
|
||||
{ name: 'Movies', type: 'Movie' },
|
||||
{ name: 'Series', type: 'Series' },
|
||||
{ name: 'Albums', type: 'MusicAlbum' },
|
||||
{ name: 'Games', type: 'Game' },
|
||||
{ name: 'Books', type: 'Book' }
|
||||
];
|
||||
|
||||
renderCollectionItems(page, collectionItemTypes, result.Items, user);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -627,9 +631,6 @@
|
|||
else if (item.Type == "Series") {
|
||||
$('#childrenTitle', page).html('Seasons');
|
||||
}
|
||||
else if (item.Type == "BoxSet") {
|
||||
$('#childrenTitle', page).html('Titles');
|
||||
}
|
||||
else if (item.Type == "MusicAlbum") {
|
||||
$('#childrenTitle', page).html('Tracks');
|
||||
}
|
||||
|
@ -640,6 +641,82 @@
|
|||
$('#childrenTitle', page).html('Items');
|
||||
}
|
||||
}
|
||||
|
||||
function renderCollectionItems(page, types, items, user) {
|
||||
|
||||
for (var i = 0, length = types.length; i < length; i++) {
|
||||
|
||||
var type = types[i];
|
||||
|
||||
var typeItems = items.filter(function (curr) {
|
||||
|
||||
return curr.Type == type.type;
|
||||
|
||||
});
|
||||
|
||||
if (!typeItems.length) {
|
||||
continue;
|
||||
}
|
||||
|
||||
renderCollectionItemType(page, type, typeItems, user);
|
||||
}
|
||||
|
||||
var otherType = { name: 'Other Items' };
|
||||
|
||||
var otherTypeItems = items.filter(function (curr) {
|
||||
|
||||
return !types.filter(function(t) {
|
||||
|
||||
return t.type == curr.Type;
|
||||
|
||||
}).length;
|
||||
|
||||
});
|
||||
|
||||
if (otherTypeItems.length) {
|
||||
renderCollectionItemType(page, otherType, otherTypeItems, user);
|
||||
}
|
||||
|
||||
if (!items.length) {
|
||||
renderCollectionItemType(page, {name: 'Titles'}, items, user);
|
||||
}
|
||||
|
||||
$('.collectionItems', page).trigger('create').createPosterItemHoverMenu();
|
||||
}
|
||||
|
||||
function renderCollectionItemType(page, type, items, user) {
|
||||
|
||||
var html = '';
|
||||
|
||||
html += '<div class="detailSection">';
|
||||
|
||||
html += '<div class="detailSectionHeader" style="position: relative;">';
|
||||
html += '<span>' + type.name + '</span>';
|
||||
|
||||
if (user.Configuration.IsAdministrator) {
|
||||
html += '<a href="editcollectionitems.html?id=' + currentItem.Id + '" data-role="button" data-icon="edit" data-iconpos="notext" data-inline="true" style="position: absolute; right: 0; top: 6px; margin-top: 0; margin-bottom: 0;">Edit</a>';
|
||||
}
|
||||
|
||||
html += '</div>';
|
||||
|
||||
html += '<div class="detailSectionContent">';
|
||||
|
||||
var shape = type.type == 'MusicAlbum' ? 'square' : 'portrait';
|
||||
|
||||
html += LibraryBrowser.getPosterViewHtml({
|
||||
items: items,
|
||||
shape: shape,
|
||||
useAverageAspectRatio: true,
|
||||
showTitle: true,
|
||||
centerText: true
|
||||
});
|
||||
html += '</div>';
|
||||
|
||||
html += '</div>';
|
||||
|
||||
$('.collectionItems', page).append(html);
|
||||
}
|
||||
|
||||
function renderUserDataIcons(page, item) {
|
||||
$('.userDataIcons', page).html(LibraryBrowser.getUserDataIconsHtml(item));
|
||||
}
|
||||
|
|
|
@ -34,14 +34,23 @@
|
|||
$('.viewSummary', page).html(LibraryBrowser.getViewSummaryHtml(query, checkSortOption)).trigger('create');
|
||||
|
||||
if (view == "Backdrop") {
|
||||
html += LibraryBrowser.getPosterDetailViewHtml({
|
||||
|
||||
html = LibraryBrowser.getPosterViewHtml({
|
||||
items: result.Items,
|
||||
shape: "smallBackdrop",
|
||||
useAverageAspectRatio: true,
|
||||
showTitle: true,
|
||||
centerText: true,
|
||||
preferBackdrop: true
|
||||
});
|
||||
}
|
||||
else if (view == "Poster") {
|
||||
html += LibraryBrowser.getPosterDetailViewHtml({
|
||||
items: result.Items
|
||||
html = LibraryBrowser.getPosterViewHtml({
|
||||
items: result.Items,
|
||||
shape: "portrait",
|
||||
useAverageAspectRatio: true,
|
||||
showTitle: true,
|
||||
centerText: true
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -71,219 +71,6 @@
|
|||
return "" + d.getFullYear() + formatDigit(d.getMonth() + 1) + formatDigit(d.getDate()) + formatDigit(d.getHours()) + formatDigit(d.getMinutes()) + formatDigit(d.getSeconds());
|
||||
},
|
||||
|
||||
getPosterDetailViewHtml: function (options) {
|
||||
|
||||
var items = options.items;
|
||||
var currentIndexValue;
|
||||
|
||||
if (!options.shape) {
|
||||
options.shape = options.preferBackdrop ? "backdrop" : "poster";
|
||||
}
|
||||
|
||||
var html = '';
|
||||
|
||||
for (var i = 0, length = items.length; i < length; i++) {
|
||||
|
||||
var item = items[i];
|
||||
|
||||
if (options.timeline) {
|
||||
var year = item.ProductionYear || "Unknown Year";
|
||||
|
||||
if (year != currentIndexValue) {
|
||||
|
||||
html += '<h2 class="timelineHeader detailSectionHeader">' + year + '</h2>';
|
||||
currentIndexValue = year;
|
||||
}
|
||||
}
|
||||
|
||||
var imgUrl = null;
|
||||
var isDefault = false;
|
||||
var height = null;
|
||||
|
||||
var cssClass = "tileItem";
|
||||
|
||||
if (options.shape) {
|
||||
cssClass += " " + options.shape + "TileItem";
|
||||
}
|
||||
|
||||
html += '<a class="' + cssClass + '" href="' + LibraryBrowser.getHref(item, options.context) + '">';
|
||||
|
||||
if (options.preferBackdrop && item.BackdropImageTags && item.BackdropImageTags.length) {
|
||||
|
||||
imgUrl = LibraryBrowser.getImageUrl(item, 'Backdrop', 0, {
|
||||
height: 198,
|
||||
width: 352
|
||||
});
|
||||
|
||||
}
|
||||
else if (options.preferBackdrop && item.ImageTags && item.ImageTags.Thumb) {
|
||||
|
||||
imgUrl = ApiClient.getImageUrl(item.Id, {
|
||||
type: "Thumb",
|
||||
height: 198,
|
||||
width: 352,
|
||||
tag: item.ImageTags.Thumb
|
||||
});
|
||||
}
|
||||
else if (item.ImageTags && item.ImageTags.Primary) {
|
||||
|
||||
height = 300;
|
||||
|
||||
imgUrl = LibraryBrowser.getImageUrl(item, 'Primary', 0, {
|
||||
maxheight: height
|
||||
});
|
||||
|
||||
}
|
||||
else if (item.AlbumId && item.AlbumPrimaryImageTag) {
|
||||
|
||||
height = 300;
|
||||
|
||||
imgUrl = ApiClient.getImageUrl(item.AlbumId, {
|
||||
type: "Primary",
|
||||
height: 100,
|
||||
tag: item.AlbumPrimaryImageTag
|
||||
});
|
||||
|
||||
}
|
||||
else if (item.BackdropImageTags && item.BackdropImageTags.length) {
|
||||
|
||||
imgUrl = LibraryBrowser.getImageUrl(item, 'Backdrop', 0, {
|
||||
height: 198,
|
||||
width: 352
|
||||
});
|
||||
}
|
||||
else if (item.MediaType == "Audio" || item.Type == "MusicAlbum" || item.Type == "MusicArtist") {
|
||||
|
||||
imgUrl = "css/images/items/list/audio.png";
|
||||
isDefault = true;
|
||||
}
|
||||
else if (item.MediaType == "Video" || item.Type == "Season" || item.Type == "Series") {
|
||||
|
||||
imgUrl = "css/images/items/list/video.png";
|
||||
isDefault = true;
|
||||
}
|
||||
else if (item.Type == "Person") {
|
||||
|
||||
imgUrl = "css/images/items/list/person.png";
|
||||
isDefault = true;
|
||||
}
|
||||
else if (item.Type == "MusicArtist") {
|
||||
|
||||
imgUrl = "css/images/items/list/audiocollection.png";
|
||||
isDefault = true;
|
||||
}
|
||||
else if (item.MediaType == "Game") {
|
||||
|
||||
imgUrl = "css/images/items/list/game.png";
|
||||
isDefault = true;
|
||||
}
|
||||
else if (item.Type == "Studio" || item.Type == "Genre" || item.Type == "MusicGenre" || item.Type == "GameGenre") {
|
||||
|
||||
if (options.context == "games") {
|
||||
|
||||
imgUrl = "css/images/items/list/game.png";
|
||||
}
|
||||
else if (options.context == "music") {
|
||||
|
||||
imgUrl = "css/images/items/list/audio.png";
|
||||
}
|
||||
else if (options.context == "movies") {
|
||||
|
||||
imgUrl = "css/images/items/list/chapter.png";
|
||||
}
|
||||
else {
|
||||
imgUrl = "css/images/items/list/collection.png";
|
||||
}
|
||||
isDefault = true;
|
||||
}
|
||||
else {
|
||||
|
||||
imgUrl = "css/images/items/list/collection.png";
|
||||
isDefault = true;
|
||||
}
|
||||
|
||||
cssClass = isDefault ? "tileImage defaultTileImage" : "tileImage";
|
||||
|
||||
html += '<div class="' + cssClass + '" style="background-image: url(\'' + imgUrl + '\');"></div>';
|
||||
|
||||
html += '<div class="tileContent">';
|
||||
|
||||
if (options.showParentName !== false) {
|
||||
if (item.SeriesName || item.Album || item.AlbumArtist) {
|
||||
var seriesName = item.SeriesName || item.Album || item.AlbumArtist;
|
||||
html += '<div class="tileName">' + seriesName + '</div>';
|
||||
}
|
||||
}
|
||||
|
||||
var name = LibraryBrowser.getPosterViewDisplayName(item, options.displayAsSpecial);
|
||||
|
||||
html += '<div class="tileName">' + name + '</div>';
|
||||
|
||||
if (item.CommunityRating || item.CriticRating) {
|
||||
html += '<p>' + LibraryBrowser.getRatingHtml(item) + '</p>';
|
||||
}
|
||||
|
||||
var childText = null;
|
||||
|
||||
if (item.Type == "BoxSet") {
|
||||
|
||||
childText = item.ChildCount == 1 ? "1 Movie" : item.ChildCount + " Movies";
|
||||
|
||||
html += '<p class="itemMiscInfo">' + childText + '</p>';
|
||||
}
|
||||
else if (item.Type == "GameSystem") {
|
||||
|
||||
childText = item.ChildCount == 1 ? "1 Game" : item.ChildCount + " Games";
|
||||
|
||||
html += '<p class="itemMiscInfo">' + childText + '</p>';
|
||||
}
|
||||
else if (item.Type == "MusicAlbum") {
|
||||
|
||||
//childText = item.ChildCount == 1 ? "1 Song" : item.ChildCount + " Songs";
|
||||
|
||||
//html += '<p class="itemMiscInfo">' + childText + '</p>';
|
||||
}
|
||||
else if (item.Type == "Genre" || item.Type == "Studio" || item.Type == "Person" || item.Type == "MusicArtist" || item.Type == "MusicGenre" || item.Type == "GameGenre") {
|
||||
|
||||
var itemCountHtml = LibraryBrowser.getItemCountsHtml(options, item);
|
||||
|
||||
if (itemCountHtml) {
|
||||
html += '<p class="itemMiscInfo">' + itemCountHtml + '</p>';
|
||||
}
|
||||
}
|
||||
else if (item.Type == "Game") {
|
||||
|
||||
html += '<p class="itemMiscInfo">' + (item.GameSystem) + '</p>';
|
||||
}
|
||||
else if (item.Type == "Episode") {
|
||||
|
||||
// Skip it. Just clutter
|
||||
}
|
||||
else {
|
||||
html += '<p class="itemMiscInfo">' + LibraryBrowser.getMiscInfoHtml(item) + '</p>';
|
||||
}
|
||||
|
||||
if (item.Type == "MusicAlbum") {
|
||||
|
||||
html += '<p class="itemMiscInfo">' + LibraryBrowser.getMiscInfoHtml(item) + '</p>';
|
||||
}
|
||||
|
||||
html += '<p class="userDataIcons">' + LibraryBrowser.getUserDataIconsHtml(item) + '</p>';
|
||||
|
||||
html += '</div>';
|
||||
|
||||
if (item.LocationType == "Offline" || item.LocationType == "Virtual") {
|
||||
html += LibraryBrowser.getOfflineIndicatorHtml(item);
|
||||
} else {
|
||||
html += LibraryBrowser.getPlayedIndicatorHtml(item);
|
||||
}
|
||||
|
||||
html += "</a>";
|
||||
}
|
||||
|
||||
return html;
|
||||
},
|
||||
|
||||
getItemCountsHtml: function (options, item) {
|
||||
|
||||
var counts = [];
|
||||
|
|
|
@ -73,7 +73,7 @@
|
|||
|
||||
if (counts.MovieCount) {
|
||||
|
||||
html += '<a class="viewMenuLink viewMenuTextLink desktopViewMenuLink' + (view == 'movies' ? selectedCssClass : '') + '" href="moviesrecommended.html">' + (view == 'movies' ? selectedHtml : '') + '<span class="viewName">Movies</span></a>';
|
||||
html += '<a class="viewMenuLink viewMenuTextLink desktopViewMenuLink' + (view == 'movies' ? selectedCssClass : '') + '" href="movieslatest.html">' + (view == 'movies' ? selectedHtml : '') + '<span class="viewName">Movies</span></a>';
|
||||
}
|
||||
|
||||
if (counts.SeriesCount) {
|
||||
|
@ -92,6 +92,10 @@
|
|||
html += '<a class="viewMenuLink viewMenuTextLink desktopViewMenuLink' + (view == 'games' ? selectedCssClass : '') + '" href="gamesrecommended.html">' + (view == 'games' ? selectedHtml : '') + '<span class="viewName">Games</span></a>';
|
||||
}
|
||||
|
||||
if (counts.BoxSetCount) {
|
||||
html += '<a class="viewMenuLink viewMenuTextLink desktopViewMenuLink' + (view == 'boxsets' ? selectedCssClass : '') + '" href="collections.html">' + (view == 'boxsets' ? selectedHtml : '') + '<span class="viewName">Collections</span></a>';
|
||||
}
|
||||
|
||||
$('.viewMenuRemoteControlButton', page).before(html);
|
||||
}
|
||||
|
||||
|
@ -122,74 +126,33 @@
|
|||
|
||||
html += '<p class="libraryPanelHeader"><a href="index.html" class="imageLink"><img src="css/images/mblogoicon.png" /><span>MEDIA</span><span class="mediaBrowserAccent">BROWSER</span></a></p>';
|
||||
|
||||
html += '<div data-role="collapsible-set" data-inset="false" data-mini="true">';
|
||||
html += '<ul data-role="listview">';
|
||||
|
||||
if (counts.MovieCount) {
|
||||
|
||||
html += getCollapsibleHtml('Movies', [
|
||||
|
||||
{ text: 'Suggested', href: 'moviesrecommended.html' },
|
||||
{ text: 'Movies', href: 'movies.html' },
|
||||
{ text: 'Collections', href: 'boxsets.html' },
|
||||
{ text: 'Trailers', href: 'movietrailers.html' },
|
||||
{ text: 'Genres', href: 'moviegenres.html' },
|
||||
{ text: 'People', href: 'moviepeople.html' },
|
||||
{ text: 'Studios', href: 'moviestudios.html' }
|
||||
]);
|
||||
html += '<li><a class="libraryPanelLink" href="movieslatest.html">Movies</a></li>';
|
||||
}
|
||||
|
||||
if (counts.SeriesCount) {
|
||||
html += getCollapsibleHtml('TV', [
|
||||
|
||||
{ text: 'Suggested', href: 'tvrecommended.html' },
|
||||
{ text: 'Latest', href: 'tvlatest.html' },
|
||||
{ text: 'Upcoming', href: 'tvupcoming.html' },
|
||||
{ text: 'Shows', href: 'tvshows.html' },
|
||||
{ text: 'Episodes', href: 'episodes.html' },
|
||||
{ text: 'Genres', href: 'tvgenres.html' },
|
||||
{ text: 'People', href: 'tvpeople.html' },
|
||||
{ text: 'Networks', href: 'tvstudios.html' }
|
||||
]);
|
||||
html += '<li><a class="libraryPanelLink" href="tvrecommended.html">TV</a></li>';
|
||||
}
|
||||
|
||||
if (liveTvInfo.EnabledUsers.indexOf(Dashboard.getCurrentUserId()) != -1) {
|
||||
html += getCollapsibleHtml('Live TV', [
|
||||
|
||||
{ text: 'Suggested', href: 'livetvsuggested.html' },
|
||||
{ text: 'Guide', href: 'livetvguide.html' },
|
||||
{ text: 'Channels', href: 'livetvchannels.html' },
|
||||
{ text: 'Recordings', href: 'livetvrecordings.html' },
|
||||
{ text: 'Scheduled', href: 'livetvtimers.html' },
|
||||
{ text: 'Series', href: 'livetvseriestimers.html' }
|
||||
]);
|
||||
html += '<li><a class="libraryPanelLink" href="livetvsuggested.html">Live TV</a></li>';
|
||||
}
|
||||
|
||||
if (counts.SongCount || counts.MusicVideoCount) {
|
||||
html += getCollapsibleHtml('Music', [
|
||||
|
||||
{ text: 'Suggested', href: 'musicrecommended.html' },
|
||||
{ text: 'Songs', href: 'songs.html' },
|
||||
{ text: 'Albums', href: 'musicalbums.html' },
|
||||
{ text: 'Album Artists', href: 'musicalbumartists.html' },
|
||||
{ text: 'Artists', href: 'musicartists.html' },
|
||||
{ text: 'Music Videos', href: 'musicvideos.html' },
|
||||
{ text: 'Genres', href: 'musicgenres.html' }
|
||||
]);
|
||||
html += '<li><a class="libraryPanelLink" href="musicrecommended.html">Music</a></li>';
|
||||
}
|
||||
|
||||
if (counts.GameCount) {
|
||||
html += getCollapsibleHtml('Games', [
|
||||
|
||||
{ text: 'Suggested', href: 'gamesrecommended.html' },
|
||||
{ text: 'Games', href: 'games.html' },
|
||||
{ text: 'Game Systems', href: 'gamesystems.html' },
|
||||
{ text: 'Genres', href: 'gamegenres.html' },
|
||||
{ text: 'Studios', href: 'gamestudios.html' }
|
||||
]);
|
||||
html += '<li><a class="libraryPanelLink" href="gamesrecommended.html">Games</a></li>';
|
||||
}
|
||||
|
||||
html += '</div>';
|
||||
if (counts.BoxSetCount) {
|
||||
html += '<li><a class="libraryPanelLink" href="collections.html">Collections</a></li>';
|
||||
}
|
||||
|
||||
html += '</ul>';
|
||||
html += '</div>';
|
||||
|
||||
$(page).append(html);
|
||||
|
@ -200,50 +163,23 @@
|
|||
return panel;
|
||||
}
|
||||
|
||||
function getCollapsibleHtml(title, links) {
|
||||
|
||||
var i, length;
|
||||
var selectedIndex = -1;
|
||||
var collapsed = 'true';
|
||||
|
||||
var currentUrl = window.location.toString().toLowerCase();
|
||||
|
||||
for (i = 0, length = links.length; i < length; i++) {
|
||||
|
||||
if (currentUrl.indexOf(links[i].href.toLowerCase()) != -1) {
|
||||
collapsed = 'false';
|
||||
selectedIndex = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
var html = '';
|
||||
|
||||
html += '<div data-role="collapsible" data-mini="true" data-collapsed="' + collapsed + '">';
|
||||
html += '<h4 class="libraryPanelCollapsibleHeader">' + title + '</h4>';
|
||||
|
||||
html += '<ul data-role="listview" data-inset="false">';
|
||||
|
||||
for (i = 0, length = links.length; i < length; i++) {
|
||||
|
||||
var link = links[i];
|
||||
|
||||
var href = selectedIndex == i ? '#' : link.href;
|
||||
|
||||
html += '<li><a class="libraryPanelLink" href="' + href + '">' + link.text + '</a></li>';
|
||||
}
|
||||
|
||||
html += '</ul>';
|
||||
html += '</div>';
|
||||
|
||||
return html;
|
||||
}
|
||||
|
||||
window.LibraryMenu = {
|
||||
showLibraryMenu: showLibraryMenu
|
||||
};
|
||||
|
||||
$(document).on('pagebeforeshow', ".libraryPage", function () {
|
||||
$(document).on('pageinit', ".libraryPage", function () {
|
||||
|
||||
var page = this;
|
||||
|
||||
$('.libraryViewNav', page).wrapInner('<div class="libraryViewNavInner"></div>');
|
||||
|
||||
$('.libraryViewNav a', page).each(function () {
|
||||
|
||||
this.innerHTML = '<span class="libraryViewNavLinkContent">' + this.innerHTML + '</span>';
|
||||
|
||||
});
|
||||
|
||||
}).on('pagebeforeshow', ".libraryPage", function () {
|
||||
|
||||
var page = this;
|
||||
|
||||
|
|
|
@ -1,9 +1,11 @@
|
|||
(function ($, document, window) {
|
||||
|
||||
var defaultSortBy = "SortName";
|
||||
|
||||
// The base query options
|
||||
var query = {
|
||||
|
||||
SortBy: "SeriesSortName,SortName",
|
||||
SortBy: defaultSortBy,
|
||||
SortOrder: "Ascending",
|
||||
Recursive: true,
|
||||
Fields: "MediaStreams,DateCreated,Settings,Studios",
|
||||
|
@ -21,21 +23,22 @@
|
|||
{
|
||||
return [
|
||||
{},
|
||||
{ name: 'Series' },
|
||||
{ name: 'Season' },
|
||||
{ name: 'Date Added' }
|
||||
{ name: 'Series', sortField: 'SeriesSortName,SortName' },
|
||||
{ name: 'Season', sortField: 'SortName' },
|
||||
{ name: 'Date Added', sortField: 'DateCreated,SortName' }
|
||||
];
|
||||
}
|
||||
case 'Series':
|
||||
{
|
||||
return [
|
||||
{},
|
||||
{ name: 'Name' },
|
||||
{ name: 'Network' },
|
||||
{ name: 'Date Added' },
|
||||
{ name: 'Year' },
|
||||
{ name: 'Rating' },
|
||||
{ name: 'Runtime' },
|
||||
{ name: 'Name', sortField: 'SortName' },
|
||||
{ name: 'Network', sortField: 'Studio,SortName' },
|
||||
{ name: 'Date Added', sortField: 'DateCreated,SortName' },
|
||||
{ name: 'Year', sortField: 'ProductionYear,PremiereDate,SortName' },
|
||||
{ name: 'Parental Rating', sortField: 'OfficialRating,SortName' },
|
||||
{ name: 'Community Rating', sortField: 'CommunityRating,SortName' },
|
||||
{ name: 'Runtime', sortField: 'Runtime,SortName' },
|
||||
{ name: 'Trailers' },
|
||||
{ name: 'Specials' }
|
||||
];
|
||||
|
@ -44,12 +47,13 @@
|
|||
{
|
||||
return [
|
||||
{},
|
||||
{ name: 'Name' },
|
||||
{ name: 'Game System' },
|
||||
{ name: 'Date Added' },
|
||||
{ name: 'Release Date' },
|
||||
{ name: 'Rating' },
|
||||
{ name: 'Players' },
|
||||
{ name: 'Name', sortField: 'SortName' },
|
||||
{ name: 'Game System', sortField: 'GameSystem,SortName' },
|
||||
{ name: 'Date Added', sortField: 'DateCreated,GameSystem,SortName' },
|
||||
{ name: 'Release Date', sortField: 'ProductionYear,PremiereDate,GameSystem,SortName' },
|
||||
{ name: 'Parental Rating', sortField: 'OfficialRating,GameSystem,SortName' },
|
||||
{ name: 'Community Rating', sortField: 'CommunityRating,GameSystem,SortName' },
|
||||
{ name: 'Players', sortField: 'Players,GameSystem,SortName' },
|
||||
{ name: 'Trailers' }
|
||||
];
|
||||
}
|
||||
|
@ -57,13 +61,14 @@
|
|||
{
|
||||
return [
|
||||
{},
|
||||
{ name: 'Album Artist' },
|
||||
{ name: 'Album' },
|
||||
{ name: 'Album Artist', sortField: 'AlbumArtist,Album,SortName' },
|
||||
{ name: 'Album', sortField: 'Album,SortName' },
|
||||
{ name: 'Disc' },
|
||||
{ name: 'Track' },
|
||||
{ name: 'Name' },
|
||||
{ name: 'Date Added' },
|
||||
{ name: 'Release Date' },
|
||||
{ name: 'Runtime' },
|
||||
{ name: 'Name', sortField: 'Name' },
|
||||
{ name: 'Date Added', sortField: 'DateCreated,SortName' },
|
||||
{ name: 'Release Date', sortField: 'ProductionYear,PremiereDate,SortName' },
|
||||
{ name: 'Runtime', sortField: 'Runtime,SortName' },
|
||||
{ name: 'Audio' },
|
||||
{ name: 'Embedded Image' }
|
||||
];
|
||||
|
@ -72,13 +77,15 @@
|
|||
{
|
||||
return [
|
||||
{},
|
||||
{ name: 'Series' },
|
||||
{ name: 'Series', sortField: 'SeriesSortName,SortName' },
|
||||
{ name: 'Season' },
|
||||
{ name: 'Name' },
|
||||
{ name: 'Date Added' },
|
||||
{ name: 'Release Date' },
|
||||
{ name: 'Runtime' },
|
||||
{ name: 'Name', sortField: 'SortName' },
|
||||
{ name: 'Date Added', sortField: 'DateCreated,SortName' },
|
||||
{ name: 'Release Date', sortField: 'ProductionYear,PremiereDate,SortName' },
|
||||
{ name: 'Community Rating', sortField: 'CommunityRating,SortName' },
|
||||
{ name: 'Runtime', sortField: 'Runtime,SortName' },
|
||||
{ name: 'Video' },
|
||||
{ name: 'Resolution' },
|
||||
{ name: 'Audio' },
|
||||
{ name: 'Subtitles' }
|
||||
];
|
||||
|
@ -87,10 +94,11 @@
|
|||
{
|
||||
return [
|
||||
{},
|
||||
{ name: 'Name' },
|
||||
{ name: 'Date Added' },
|
||||
{ name: 'Release Date' },
|
||||
{ name: 'Rating' },
|
||||
{ name: 'Name', sortField: 'SortName' },
|
||||
{ name: 'Date Added', sortField: 'DateCreated,SortName' },
|
||||
{ name: 'Release Date', sortField: 'ProductionYear,PremiereDate,SortName' },
|
||||
{ name: 'Parental Rating', sortField: 'OfficialRating,SortName' },
|
||||
{ name: 'Community Rating', sortField: 'CommunityRating,SortName' },
|
||||
{ name: 'Trailers' }
|
||||
];
|
||||
}
|
||||
|
@ -99,42 +107,46 @@
|
|||
return [
|
||||
{},
|
||||
{ name: 'Series' },
|
||||
{ name: 'Name' },
|
||||
{ name: 'Date Added' },
|
||||
{ name: 'Release Date' },
|
||||
{ name: 'Rating' }
|
||||
{ name: 'Name', sortField: 'SortName' },
|
||||
{ name: 'Date Added', sortField: 'DateCreated,SortName' },
|
||||
{ name: 'Release Date', sortField: 'ProductionYear,PremiereDate,SortName' },
|
||||
{ name: 'Parental Rating', sortField: 'OfficialRating,SortName' },
|
||||
{ name: 'Community Rating', sortField: 'CommunityRating,SortName' }
|
||||
];
|
||||
}
|
||||
case 'MusicArtist':
|
||||
{
|
||||
return [
|
||||
{},
|
||||
{ name: 'Name' },
|
||||
{ name: 'Date Added' }
|
||||
{ name: 'Name', sortField: 'SortName' },
|
||||
{ name: 'Date Added', sortField: 'DateCreated,SortName' }
|
||||
];
|
||||
}
|
||||
case 'MusicAlbum':
|
||||
{
|
||||
return [
|
||||
{},
|
||||
{ name: 'Album Artist' },
|
||||
{ name: 'Name' },
|
||||
{ name: 'Date Added' },
|
||||
{ name: 'Release Date' },
|
||||
{ name: 'Rating' },
|
||||
{ name: 'Runtime' }
|
||||
{ name: 'Album Artist', sortField: 'AlbumArtist,SortName' },
|
||||
{ name: 'Name', sortField: 'SortName' },
|
||||
{ name: 'Date Added', sortField: 'DateCreated,SortName' },
|
||||
{ name: 'Release Date', sortField: 'ProductionYear,PremiereDate,SortName' },
|
||||
{ name: 'Parental Rating', sortField: 'OfficialRating,SortName' },
|
||||
{ name: 'Community Rating', sortField: 'CommunityRating,SortName' },
|
||||
{ name: 'Runtime', sortField: 'Runtime,SortName' }
|
||||
];
|
||||
}
|
||||
default:
|
||||
{
|
||||
return [
|
||||
{},
|
||||
{ name: 'Name' },
|
||||
{ name: 'Date Added' },
|
||||
{ name: 'Release Date' },
|
||||
{ name: 'Rating' },
|
||||
{ name: 'Runtime' },
|
||||
{ name: 'Name', sortField: 'SortName' },
|
||||
{ name: 'Date Added', sortField: 'DateCreated,SortName' },
|
||||
{ name: 'Release Date', sortField: 'ProductionYear,PremiereDate,SortName' },
|
||||
{ name: 'Parental Rating', sortField: 'OfficialRating,SortName' },
|
||||
{ name: 'Community Rating', sortField: 'CommunityRating,SortName' },
|
||||
{ name: 'Runtime', sortField: 'Runtime,SortName' },
|
||||
{ name: 'Video' },
|
||||
{ name: 'Resolution' },
|
||||
{ name: 'Audio' },
|
||||
{ name: 'Subtitles' },
|
||||
{ name: 'Trailers' },
|
||||
|
@ -144,6 +156,53 @@
|
|||
}
|
||||
}
|
||||
|
||||
function getDefaultSortOrder(reportType) {
|
||||
|
||||
switch (reportType) {
|
||||
|
||||
case 'Season':
|
||||
{
|
||||
return "SeriesSortName,SortName";
|
||||
}
|
||||
case 'Series':
|
||||
{
|
||||
return "SortName";
|
||||
}
|
||||
case 'Game':
|
||||
{
|
||||
return "GameSystem,SortName";
|
||||
}
|
||||
case 'Audio':
|
||||
{
|
||||
return "AlbumArtist,Album,SortName";
|
||||
}
|
||||
case 'Episode':
|
||||
{
|
||||
return "SeriesSortName,SortName";
|
||||
}
|
||||
case 'BoxSet':
|
||||
{
|
||||
return "SortName";
|
||||
}
|
||||
case 'Book':
|
||||
{
|
||||
return "SortName";
|
||||
}
|
||||
case 'MusicArtist':
|
||||
{
|
||||
return "SortName";
|
||||
}
|
||||
case 'MusicAlbum':
|
||||
{
|
||||
return "AlbumArtist,SortName";
|
||||
}
|
||||
default:
|
||||
{
|
||||
return "SortName";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function getItemCellsHtml(item, headercells) {
|
||||
|
||||
return headercells.map(function (cell) {
|
||||
|
@ -151,6 +210,8 @@
|
|||
var html = '';
|
||||
html += '<td>';
|
||||
|
||||
var stream;
|
||||
|
||||
switch (cell.type || cell.name) {
|
||||
|
||||
case 'Album Artist':
|
||||
|
@ -178,6 +239,11 @@
|
|||
html += item.Studios.length ? item.Studios[0].Name : ' ';
|
||||
break;
|
||||
}
|
||||
case 'Disc':
|
||||
{
|
||||
html += item.ParentIndexNumber == null ? '' : item.ParentIndexNumber;
|
||||
break;
|
||||
}
|
||||
case 'Track':
|
||||
{
|
||||
html += item.IndexNumber == null ? '' : item.IndexNumber;
|
||||
|
@ -190,7 +256,7 @@
|
|||
}
|
||||
case 'Audio':
|
||||
{
|
||||
var stream = (item.MediaStreams || []).filter(function (s) {
|
||||
stream = (item.MediaStreams || []).filter(function (s) {
|
||||
|
||||
return s.Type == 'Audio';
|
||||
|
||||
|
@ -205,7 +271,7 @@
|
|||
}
|
||||
case 'Video':
|
||||
{
|
||||
var stream = (item.MediaStreams || []).filter(function (s) {
|
||||
stream = (item.MediaStreams || []).filter(function (s) {
|
||||
|
||||
return s.Type == 'Video';
|
||||
|
||||
|
@ -216,6 +282,19 @@
|
|||
}
|
||||
break;
|
||||
}
|
||||
case 'Resolution':
|
||||
{
|
||||
stream = (item.MediaStreams || []).filter(function (s) {
|
||||
|
||||
return s.Type == 'Video';
|
||||
|
||||
})[0];
|
||||
|
||||
if (stream && stream.Width) {
|
||||
html += stream.Width + "*" + (stream.Height || "-");
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 'Embedded Image':
|
||||
{
|
||||
if ((item.MediaStreams || []).filter(function (s) {
|
||||
|
@ -281,7 +360,12 @@
|
|||
html += '<a href="edititemmetadata.html?id=' + item.Id + '">' + LibraryBrowser.getPosterViewDisplayName(item, false, false) + '</a>';
|
||||
break;
|
||||
}
|
||||
case 'Rating':
|
||||
case 'Community Rating':
|
||||
{
|
||||
html += item.CommunityRating || ' ';
|
||||
break;
|
||||
}
|
||||
case 'Parental Rating':
|
||||
{
|
||||
html += item.OfficialRating || ' ';
|
||||
break;
|
||||
|
@ -357,7 +441,7 @@
|
|||
}
|
||||
|
||||
if (!item.BackdropImageTags || !item.BackdropImageTags.length) {
|
||||
if (item.Type !== "Episode" && item.Type !== "Season" && item.MediaType !== "Audio" && item.Type !== "Channel") {
|
||||
if (item.Type !== "Episode" && item.Type !== "Season" && item.MediaType !== "Audio" && item.Type !== "Channel" && item.Type !== "MusicAlbum") {
|
||||
html += '<a href="edititemimages.html?id=' + item.Id + '"><img src="css/images/editor/missingbackdrop.png" title="Missing backdrop image." /></a>';
|
||||
}
|
||||
}
|
||||
|
@ -378,11 +462,11 @@
|
|||
}).join('');
|
||||
}
|
||||
|
||||
function getReportHtml(items, reportType) {
|
||||
function getReportHtml(items, reportType, currentSortField, currentSortDirection) {
|
||||
|
||||
var html = '';
|
||||
|
||||
html += '<table data-role="table" data-mode="reflow" class="tblLibraryReport detailTable stripedTable ui-responsive table-stroke" style="display: table;">';
|
||||
html += '<table id="tblReport" data-role="table" data-mode="reflow" class="tblLibraryReport stripedTable ui-responsive table-stroke detailTable" style="display:table;">';
|
||||
|
||||
html += '<thead>';
|
||||
html += '<tr>';
|
||||
|
@ -391,7 +475,31 @@
|
|||
|
||||
html += cells.map(function (c) {
|
||||
|
||||
return '<th>' + (c.name || ' ') + '</th>';
|
||||
var cellHtml = '<th data-priority="' + (c.priority || 'persist') + '">';
|
||||
|
||||
if (c.sortField) {
|
||||
cellHtml += '<a class="lnkColumnSort" href="#" data-sortfield="' + c.sortField + '" style="text-decoration:underline;">';
|
||||
}
|
||||
|
||||
cellHtml += (c.name || ' ');
|
||||
|
||||
if (c.sortField) {
|
||||
|
||||
cellHtml += '</a>';
|
||||
|
||||
if (c.sortField == currentSortField) {
|
||||
|
||||
if (currentSortDirection == "Descending") {
|
||||
cellHtml += '<span style="font-weight:bold;margin-left:5px;vertical-align:top;font-size:12px;">↓</span>';
|
||||
} else {
|
||||
cellHtml += '<span style="font-weight:bold;margin-left:5px;vertical-align:top;font-size:12px;">↑</span>';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
cellHtml += '</th>';
|
||||
|
||||
return cellHtml;
|
||||
|
||||
}).join('');
|
||||
|
||||
|
@ -427,7 +535,7 @@
|
|||
|
||||
$('.listBottomPaging', page).html(LibraryBrowser.getPagingHtml(query, result.TotalRecordCount)).trigger('create');
|
||||
|
||||
$('.reportContainer', page).html(getReportHtml(result.Items, reportType)).trigger('create');
|
||||
$('.reportContainer', page).html(getReportHtml(result.Items, reportType, query.SortBy, query.SortOrder)).trigger('create');
|
||||
|
||||
$('.btnNextPage', page).on('click', function () {
|
||||
query.StartIndex += query.Limit;
|
||||
|
@ -444,6 +552,34 @@
|
|||
query.StartIndex = 0;
|
||||
reloadItems(page);
|
||||
});
|
||||
|
||||
$('.lnkColumnSort', page).on('click', function () {
|
||||
|
||||
var order = this.getAttribute('data-sortfield');
|
||||
|
||||
if (query.SortBy == order) {
|
||||
|
||||
if (query.SortOrder == "Descending") {
|
||||
|
||||
query.SortOrder = "Ascending";
|
||||
query.SortBy = defaultSortBy;
|
||||
|
||||
} else {
|
||||
|
||||
query.SortOrder = "Descending";
|
||||
query.SortBy = order;
|
||||
}
|
||||
|
||||
} else {
|
||||
|
||||
query.SortOrder = "Ascending";
|
||||
query.SortBy = order;
|
||||
}
|
||||
|
||||
query.StartIndex = 0;
|
||||
|
||||
reloadItems(page);
|
||||
});
|
||||
}
|
||||
|
||||
function reloadItems(page) {
|
||||
|
@ -536,6 +672,9 @@
|
|||
query.StartIndex = 0;
|
||||
query.IncludeItemTypes = this.value;
|
||||
|
||||
query.SortBy = getDefaultSortOrder(this.value);
|
||||
query.SortOrder = "Ascending";
|
||||
|
||||
reloadItems(page);
|
||||
});
|
||||
|
||||
|
@ -710,6 +849,9 @@
|
|||
query.StartIndex = 0;
|
||||
}
|
||||
|
||||
query.SortBy = getDefaultSortOrder($('#selectView', page).val());
|
||||
query.SortOrder = "Ascending";
|
||||
|
||||
reloadItems(page);
|
||||
|
||||
}).on('pageshow', "#libraryReportPage", function () {
|
||||
|
|
|
@ -153,14 +153,15 @@
|
|||
|
||||
html += '<li><a href="livetvtimer.html?id=' + timer.Id + '">';
|
||||
|
||||
var program = timer.ProgramInfo;
|
||||
var program = timer.ProgramInfo || {};
|
||||
var imgUrl;
|
||||
|
||||
if (program.ImageTags && program.ImageTags.Primary) {
|
||||
var programImages = program.ImageTags || {};
|
||||
if (programImages.Primary) {
|
||||
|
||||
imgUrl = ApiClient.getImageUrl(program.Id, {
|
||||
height: 160,
|
||||
tag: program.ImageTags.Primary,
|
||||
tag: programImages.Primary,
|
||||
type: "Primary"
|
||||
});
|
||||
} else {
|
||||
|
@ -234,9 +235,9 @@
|
|||
userId: Dashboard.getCurrentUserId(),
|
||||
seriesTimerId: id
|
||||
|
||||
}).done(function (result) {
|
||||
}).done(function (recordingResult) {
|
||||
|
||||
renderRecordings(page, result);
|
||||
renderRecordings(page, recordingResult);
|
||||
|
||||
});
|
||||
|
||||
|
@ -244,9 +245,9 @@
|
|||
|
||||
seriesTimerId: id
|
||||
|
||||
}).done(function (result) {
|
||||
}).done(function (timerResult) {
|
||||
|
||||
renderSchedule(page, result);
|
||||
renderSchedule(page, timerResult);
|
||||
|
||||
});
|
||||
}
|
||||
|
|
|
@ -8,14 +8,14 @@
|
|||
|
||||
userId: Dashboard.getCurrentUserId(),
|
||||
IsAiring: true,
|
||||
limit: 10
|
||||
limit: 12
|
||||
|
||||
}).done(function (result) {
|
||||
|
||||
var html = LibraryBrowser.getPosterViewHtml({
|
||||
|
||||
items: result.Items,
|
||||
shape: "backdrop",
|
||||
shape: "square",
|
||||
showTitle: true,
|
||||
showParentTitle: true,
|
||||
overlayText: true,
|
||||
|
@ -31,14 +31,14 @@
|
|||
userId: Dashboard.getCurrentUserId(),
|
||||
IsAiring: false,
|
||||
HasAired: false,
|
||||
limit: 10
|
||||
limit: 12
|
||||
|
||||
}).done(function (result) {
|
||||
|
||||
var html = LibraryBrowser.getPosterViewHtml({
|
||||
|
||||
items: result.Items,
|
||||
shape: "backdrop",
|
||||
shape: "square",
|
||||
showTitle: true,
|
||||
showParentTitle: true,
|
||||
overlayText: true,
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
SortOrder: "Ascending",
|
||||
IncludeItemTypes: "BoxSet",
|
||||
Recursive: true,
|
||||
Fields: "DateCreated,PrimaryImageAspectRatio",
|
||||
Fields: "PrimaryImageAspectRatio",
|
||||
StartIndex: 0
|
||||
};
|
||||
|
||||
|
@ -26,19 +26,26 @@
|
|||
|
||||
updateFilterControls(page);
|
||||
|
||||
var checkSortOption = $('.radioSortBy:checked', page);
|
||||
$('.viewSummary', page).html(LibraryBrowser.getViewSummaryHtml(query, checkSortOption)).trigger('create');
|
||||
if (result.TotalRecordCount) {
|
||||
|
||||
html = LibraryBrowser.getPosterViewHtml({
|
||||
items: result.Items,
|
||||
shape: "portrait",
|
||||
context: 'movies',
|
||||
useAverageAspectRatio: true,
|
||||
showTitle: true,
|
||||
centerText: true
|
||||
});
|
||||
var checkSortOption = $('.radioSortBy:checked', page);
|
||||
$('.viewSummary', page).html(LibraryBrowser.getViewSummaryHtml(query, checkSortOption)).trigger('create');
|
||||
|
||||
html += LibraryBrowser.getPagingHtml(query, result.TotalRecordCount);
|
||||
html = LibraryBrowser.getPosterViewHtml({
|
||||
items: result.Items,
|
||||
shape: "portrait",
|
||||
context: 'movies',
|
||||
useAverageAspectRatio: true,
|
||||
showTitle: true,
|
||||
centerText: true
|
||||
});
|
||||
|
||||
html += LibraryBrowser.getPagingHtml(query, result.TotalRecordCount);
|
||||
|
||||
} else {
|
||||
|
||||
html += '<p>Collections allow you to enjoy personalized groupings of Movies, Series, Albums, Books and Games. Click the New button to start creating Collections.</p>';
|
||||
}
|
||||
|
||||
$('#items', page).html(html).trigger('create').createPosterItemHoverMenu();
|
||||
|
||||
|
@ -60,6 +67,16 @@
|
|||
|
||||
LibraryBrowser.saveQueryValues('boxsets', query);
|
||||
|
||||
Dashboard.getCurrentUser().done(function(user) {
|
||||
|
||||
if (user.Configuration.IsAdministrator) {
|
||||
$('#btnNewCollection', page).removeClass('hide');
|
||||
} else {
|
||||
$('#btnNewCollection', page).addClass('hide');
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
Dashboard.hideLoadingMsg();
|
||||
});
|
||||
}
|
||||
|
@ -95,6 +112,13 @@
|
|||
$('.alphabetPicker', page).alphaValue(query.NameStartsWithOrGreater);
|
||||
}
|
||||
|
||||
function showNewCollectionPanel(page) {
|
||||
|
||||
$('#newCollectionPanel', page).panel('toggle');
|
||||
|
||||
$('#txtNewCollectionName', page).val('').focus();
|
||||
}
|
||||
|
||||
$(document).on('pageinit', "#boxsetsPage", function () {
|
||||
|
||||
var page = this;
|
||||
|
@ -164,6 +188,11 @@
|
|||
reloadItems(page);
|
||||
});
|
||||
|
||||
$('#btnNewCollection', page).on('click', function () {
|
||||
|
||||
showNewCollectionPanel(page);
|
||||
});
|
||||
|
||||
}).on('pagebeforeshow', "#boxsetsPage", function () {
|
||||
|
||||
var limit = LibraryBrowser.getDefaultPageSize();
|
||||
|
@ -183,4 +212,37 @@
|
|||
updateFilterControls(this);
|
||||
});
|
||||
|
||||
window.BoxSetsPage = {
|
||||
|
||||
onNewCollectionSubmit: function () {
|
||||
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
var page = $(this).parents('.page');
|
||||
|
||||
var url = ApiClient.getUrl("Collections", {
|
||||
|
||||
Name: $('#txtNewCollectionName', page).val(),
|
||||
IsLocked: !$('#chkEnableInternetMetadata', page).checked()
|
||||
|
||||
});
|
||||
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: url
|
||||
|
||||
}).done(function () {
|
||||
|
||||
Dashboard.hideLoadingMsg();
|
||||
|
||||
$('#newCollectionPanel', page).panel('toggle');
|
||||
|
||||
reloadItems(page);
|
||||
|
||||
});
|
||||
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
})(jQuery, document);
|
|
@ -26,9 +26,6 @@
|
|||
|
||||
updateFilterControls(page);
|
||||
|
||||
var checkSortOption = $('.radioSortBy:checked', page);
|
||||
$('.viewSummary', page).html(LibraryBrowser.getViewSummaryHtml(query, checkSortOption)).trigger('create');
|
||||
|
||||
html = LibraryBrowser.getPosterViewHtml({
|
||||
items: result.Items,
|
||||
shape: "backdrop",
|
||||
|
@ -66,36 +63,12 @@
|
|||
|
||||
function updateFilterControls(page) {
|
||||
|
||||
// Reset form values using the last used query
|
||||
$('.radioSortBy', page).each(function () {
|
||||
|
||||
this.checked = (query.SortBy || '').toLowerCase() == this.getAttribute('data-sortby').toLowerCase();
|
||||
|
||||
}).checkboxradio('refresh');
|
||||
|
||||
$('.radioSortOrder', page).each(function () {
|
||||
|
||||
this.checked = (query.SortOrder || '').toLowerCase() == this.getAttribute('data-sortorder').toLowerCase();
|
||||
|
||||
}).checkboxradio('refresh');
|
||||
}
|
||||
|
||||
$(document).on('pageinit', "#movieGenresPage", function () {
|
||||
|
||||
var page = this;
|
||||
|
||||
$('.radioSortBy', this).on('click', function () {
|
||||
query.SortBy = this.getAttribute('data-sortby');
|
||||
query.StartIndex = 0;
|
||||
reloadItems(page);
|
||||
});
|
||||
|
||||
$('.radioSortOrder', this).on('click', function () {
|
||||
query.SortOrder = this.getAttribute('data-sortorder');
|
||||
query.StartIndex = 0;
|
||||
reloadItems(page);
|
||||
});
|
||||
|
||||
$('.chkStandardFilter', this).on('change', function () {
|
||||
|
||||
var filterName = this.getAttribute('data-filter');
|
||||
|
|
|
@ -27,9 +27,6 @@
|
|||
|
||||
updateFilterControls(page);
|
||||
|
||||
var checkSortOption = $('.radioSortBy:checked', page);
|
||||
$('.viewSummary', page).html(LibraryBrowser.getViewSummaryHtml(query, checkSortOption)).trigger('create');
|
||||
|
||||
html = LibraryBrowser.getPosterViewHtml({
|
||||
items: result.Items,
|
||||
shape: "portrait",
|
||||
|
@ -68,19 +65,6 @@
|
|||
|
||||
function updateFilterControls(page) {
|
||||
|
||||
// Reset form values using the last used query
|
||||
$('.radioSortBy', page).each(function () {
|
||||
|
||||
this.checked = (query.SortBy || '').toLowerCase() == this.getAttribute('data-sortby').toLowerCase();
|
||||
|
||||
}).checkboxradio('refresh');
|
||||
|
||||
$('.radioSortOrder', page).each(function () {
|
||||
|
||||
this.checked = (query.SortOrder || '').toLowerCase() == this.getAttribute('data-sortorder').toLowerCase();
|
||||
|
||||
}).checkboxradio('refresh');
|
||||
|
||||
$('.chkPersonTypeFilter', page).each(function () {
|
||||
|
||||
var filters = "," + (query.PersonTypes || "");
|
||||
|
@ -97,18 +81,6 @@
|
|||
|
||||
var page = this;
|
||||
|
||||
$('.radioSortBy', this).on('click', function () {
|
||||
query.SortBy = this.getAttribute('data-sortby');
|
||||
query.StartIndex = 0;
|
||||
reloadItems(page);
|
||||
});
|
||||
|
||||
$('.radioSortOrder', this).on('click', function () {
|
||||
query.SortOrder = this.getAttribute('data-sortorder');
|
||||
query.StartIndex = 0;
|
||||
reloadItems(page);
|
||||
});
|
||||
|
||||
$('.chkStandardFilter', this).on('change', function () {
|
||||
|
||||
var filterName = this.getAttribute('data-filter');
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
SortOrder: "Ascending",
|
||||
IncludeItemTypes: "Movie",
|
||||
Recursive: true,
|
||||
Fields: "DateCreated,PrimaryImageAspectRatio",
|
||||
Fields: "PrimaryImageAspectRatio",
|
||||
StartIndex: 0
|
||||
};
|
||||
|
||||
|
|
60
dashboard-ui/scripts/movieslatest.js
Normal file
60
dashboard-ui/scripts/movieslatest.js
Normal file
|
@ -0,0 +1,60 @@
|
|||
(function ($, document) {
|
||||
|
||||
$(document).on('pagebeforeshow', "#moviesLatestPage", function () {
|
||||
|
||||
var screenWidth = $(window).width();
|
||||
|
||||
var page = this;
|
||||
|
||||
var options = {
|
||||
|
||||
SortBy: "DateCreated",
|
||||
SortOrder: "Descending",
|
||||
IncludeItemTypes: "Movie",
|
||||
Limit: screenWidth >= 1920 ? 32 : (screenWidth >= 1440 ? 24 : (screenWidth >= 800 ? 18 : 12)),
|
||||
Recursive: true,
|
||||
Fields: "PrimaryImageAspectRatio",
|
||||
Filters: "IsUnplayed"
|
||||
};
|
||||
|
||||
ApiClient.getItems(Dashboard.getCurrentUserId(), options).done(function (result) {
|
||||
|
||||
$('#recentlyAddedItems', page).html(LibraryBrowser.getPosterViewHtml({
|
||||
items: result.Items,
|
||||
useAverageAspectRatio: true
|
||||
|
||||
})).createPosterItemHoverMenu();
|
||||
});
|
||||
|
||||
|
||||
options = {
|
||||
|
||||
SortBy: "DateCreated",
|
||||
SortOrder: "Descending",
|
||||
IncludeItemTypes: "Trailer",
|
||||
Limit: screenWidth >= 1920 ? 8 : (screenWidth >= 1440 ? 8 : 6),
|
||||
Recursive: true,
|
||||
Fields: "PrimaryImageAspectRatio",
|
||||
Filters: "IsUnplayed"
|
||||
};
|
||||
|
||||
ApiClient.getItems(Dashboard.getCurrentUserId(), options).done(function (result) {
|
||||
|
||||
if (result.Items.length) {
|
||||
$('#trailerSection', page).show();
|
||||
} else {
|
||||
$('#trailerSection', page).hide();
|
||||
}
|
||||
|
||||
$('#trailerItems', page).html(LibraryBrowser.getPosterViewHtml({
|
||||
items: result.Items,
|
||||
useAverageAspectRatio: true
|
||||
|
||||
})).createPosterItemHoverMenu();
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
|
||||
})(jQuery, document);
|
|
@ -1,5 +1,41 @@
|
|||
(function ($, document) {
|
||||
|
||||
function getRecommendationHtml(recommendation) {
|
||||
|
||||
var html = '';
|
||||
|
||||
var title = '';
|
||||
|
||||
switch (recommendation.RecommendationType) {
|
||||
|
||||
case 'SimilarToRecentlyPlayed':
|
||||
title = 'Because you watched ' + recommendation.BaselineItemName;
|
||||
break;
|
||||
case 'SimilarToLikedItem':
|
||||
title = 'Because you like ' + recommendation.BaselineItemName;
|
||||
break;
|
||||
case 'HasDirectorFromRecentlyPlayed':
|
||||
case 'HasLikedDirector':
|
||||
title = 'Directed by ' + recommendation.BaselineItemName;
|
||||
break;
|
||||
case 'HasActorFromRecentlyPlayed':
|
||||
case 'HasLikedActor':
|
||||
title = 'Starring ' + recommendation.BaselineItemName;
|
||||
break;
|
||||
}
|
||||
|
||||
html += '<h1 class="listHeader">' + title + '</h1>';
|
||||
|
||||
html += '<div>';
|
||||
html += LibraryBrowser.getPosterViewHtml({
|
||||
items: recommendation.Items,
|
||||
useAverageAspectRatio: true
|
||||
});
|
||||
html += '</div>';
|
||||
|
||||
return html;
|
||||
}
|
||||
|
||||
$(document).on('pagebeforeshow', "#moviesRecommendedPage", function () {
|
||||
|
||||
var screenWidth = $(window).width();
|
||||
|
@ -8,34 +44,13 @@
|
|||
|
||||
var options = {
|
||||
|
||||
SortBy: "DateCreated",
|
||||
SortOrder: "Descending",
|
||||
IncludeItemTypes: "Movie",
|
||||
Limit: screenWidth >= 1920 ? 21 : (screenWidth >= 1440 ? 16 : 12),
|
||||
Recursive: true,
|
||||
Fields: "PrimaryImageAspectRatio,DateCreated,UserData",
|
||||
Filters: "IsUnplayed"
|
||||
};
|
||||
|
||||
ApiClient.getItems(Dashboard.getCurrentUserId(), options).done(function (result) {
|
||||
|
||||
$('#recentlyAddedItems', page).html(LibraryBrowser.getPosterViewHtml({
|
||||
items: result.Items,
|
||||
useAverageAspectRatio: true
|
||||
|
||||
})).createPosterItemHoverMenu();
|
||||
});
|
||||
|
||||
|
||||
options = {
|
||||
|
||||
SortBy: "DatePlayed",
|
||||
SortOrder: "Descending",
|
||||
IncludeItemTypes: "Movie",
|
||||
Filters: "IsResumable",
|
||||
Limit: screenWidth >= 1920 ? 4 : (screenWidth >= 1440 ? 4 : 3),
|
||||
Recursive: true,
|
||||
Fields: "DateCreated,UserData"
|
||||
Fields: "PrimaryImageAspectRatio"
|
||||
};
|
||||
|
||||
ApiClient.getItems(Dashboard.getCurrentUserId(), options).done(function (result) {
|
||||
|
@ -57,33 +72,26 @@
|
|||
|
||||
});
|
||||
|
||||
options = {
|
||||
|
||||
SortBy: "DateCreated",
|
||||
SortOrder: "Descending",
|
||||
IncludeItemTypes: "Trailer",
|
||||
Limit: screenWidth >= 1920 ? 7 : (screenWidth >= 1440 ? 8 : 6),
|
||||
Recursive: true,
|
||||
Fields: "PrimaryImageAspectRatio,DateCreated,UserData",
|
||||
Filters: "IsUnplayed"
|
||||
};
|
||||
|
||||
ApiClient.getItems(Dashboard.getCurrentUserId(), options).done(function (result) {
|
||||
|
||||
if (result.Items.length) {
|
||||
$('#trailerSection', page).show();
|
||||
} else {
|
||||
$('#trailerSection', page).hide();
|
||||
}
|
||||
|
||||
$('#trailerItems', page).html(LibraryBrowser.getPosterViewHtml({
|
||||
items: result.Items,
|
||||
useAverageAspectRatio: true
|
||||
|
||||
})).createPosterItemHoverMenu();
|
||||
var url = ApiClient.getUrl("Movies/Recommendations", {
|
||||
|
||||
userId: Dashboard.getCurrentUserId(),
|
||||
categoryLimit: screenWidth >= 1200 ? 6 : 3,
|
||||
itemLimit: screenWidth >= 1920 ? 8 : (screenWidth >= 1440 ? 8 : 6),
|
||||
Fields: "PrimaryImageAspectRatio"
|
||||
});
|
||||
|
||||
$.getJSON(url).done(function(recommendations) {
|
||||
|
||||
if (!recommendations.length) {
|
||||
|
||||
$('.recommendations', page).html('<br/><p>No movie suggestions are currently available. Start watching and rating your movies, and then come back to view your recommendations.</p>');
|
||||
return;
|
||||
}
|
||||
|
||||
var html = recommendations.map(getRecommendationHtml).join('');
|
||||
|
||||
$('.recommendations', page).html(html).createPosterItemHoverMenu();
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
|
|
|
@ -26,9 +26,6 @@
|
|||
|
||||
updateFilterControls(page);
|
||||
|
||||
var checkSortOption = $('.radioSortBy:checked', page);
|
||||
$('.viewSummary', page).html(LibraryBrowser.getViewSummaryHtml(query, checkSortOption)).trigger('create');
|
||||
|
||||
html = LibraryBrowser.getPosterViewHtml({
|
||||
items: result.Items,
|
||||
shape: "backdrop",
|
||||
|
@ -65,37 +62,12 @@
|
|||
}
|
||||
|
||||
function updateFilterControls(page) {
|
||||
|
||||
// Reset form values using the last used query
|
||||
$('.radioSortBy', page).each(function () {
|
||||
|
||||
this.checked = (query.SortBy || '').toLowerCase() == this.getAttribute('data-sortby').toLowerCase();
|
||||
|
||||
}).checkboxradio('refresh');
|
||||
|
||||
$('.radioSortOrder', page).each(function () {
|
||||
|
||||
this.checked = (query.SortOrder || '').toLowerCase() == this.getAttribute('data-sortorder').toLowerCase();
|
||||
|
||||
}).checkboxradio('refresh');
|
||||
}
|
||||
|
||||
$(document).on('pageinit', "#movieStudiosPage", function () {
|
||||
|
||||
var page = this;
|
||||
|
||||
$('.radioSortBy', this).on('click', function () {
|
||||
query.SortBy = this.getAttribute('data-sortby');
|
||||
query.StartIndex = 0;
|
||||
reloadItems(page);
|
||||
});
|
||||
|
||||
$('.radioSortOrder', this).on('click', function () {
|
||||
query.SortOrder = this.getAttribute('data-sortorder');
|
||||
query.StartIndex = 0;
|
||||
reloadItems(page);
|
||||
});
|
||||
|
||||
$('.chkStandardFilter', this).on('change', function () {
|
||||
|
||||
var filterName = this.getAttribute('data-filter');
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
SortOrder: "Ascending",
|
||||
IncludeItemTypes: "Trailer",
|
||||
Recursive: true,
|
||||
Fields: "DateCreated,PrimaryImageAspectRatio",
|
||||
Fields: "PrimaryImageAspectRatio",
|
||||
StartIndex: 0
|
||||
};
|
||||
|
||||
|
|
|
@ -26,9 +26,6 @@
|
|||
|
||||
updateFilterControls(page);
|
||||
|
||||
var checkSortOption = $('.radioSortBy:checked', page);
|
||||
$('.viewSummary', page).html(LibraryBrowser.getViewSummaryHtml(query, checkSortOption)).trigger('create');
|
||||
|
||||
html = LibraryBrowser.getPosterViewHtml({
|
||||
items: result.Items,
|
||||
shape: "square",
|
||||
|
@ -66,19 +63,6 @@
|
|||
|
||||
function updateFilterControls(page) {
|
||||
|
||||
// Reset form values using the last used query
|
||||
$('.radioSortBy', page).each(function () {
|
||||
|
||||
this.checked = (query.SortBy || '').toLowerCase() == this.getAttribute('data-sortby').toLowerCase();
|
||||
|
||||
}).checkboxradio('refresh');
|
||||
|
||||
$('.radioSortOrder', page).each(function () {
|
||||
|
||||
this.checked = (query.SortOrder || '').toLowerCase() == this.getAttribute('data-sortorder').toLowerCase();
|
||||
|
||||
}).checkboxradio('refresh');
|
||||
|
||||
$('.alphabetPicker', page).alphaValue(query.NameStartsWithOrGreater);
|
||||
}
|
||||
|
||||
|
@ -86,18 +70,6 @@
|
|||
|
||||
var page = this;
|
||||
|
||||
$('.radioSortBy', this).on('click', function () {
|
||||
query.SortBy = this.getAttribute('data-sortby');
|
||||
query.StartIndex = 0;
|
||||
reloadItems(page);
|
||||
});
|
||||
|
||||
$('.radioSortOrder', this).on('click', function () {
|
||||
query.SortOrder = this.getAttribute('data-sortorder');
|
||||
query.StartIndex = 0;
|
||||
reloadItems(page);
|
||||
});
|
||||
|
||||
$('.chkStandardFilter', this).on('change', function () {
|
||||
|
||||
var filterName = this.getAttribute('data-filter');
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
SortOrder: "Ascending",
|
||||
IncludeItemTypes: "MusicAlbum",
|
||||
Recursive: true,
|
||||
Fields: "DateCreated,PrimaryImageAspectRatio",
|
||||
Fields: "PrimaryImageAspectRatio",
|
||||
StartIndex: 0
|
||||
};
|
||||
|
||||
|
|
|
@ -25,9 +25,6 @@
|
|||
|
||||
updateFilterControls(page);
|
||||
|
||||
var checkSortOption = $('.radioSortBy:checked', page);
|
||||
$('.viewSummary', page).html(LibraryBrowser.getViewSummaryHtml(query, checkSortOption)).trigger('create');
|
||||
|
||||
html = LibraryBrowser.getPosterViewHtml({
|
||||
items: result.Items,
|
||||
shape: "square",
|
||||
|
@ -65,19 +62,6 @@
|
|||
|
||||
function updateFilterControls(page) {
|
||||
|
||||
// Reset form values using the last used query
|
||||
$('.radioSortBy', page).each(function () {
|
||||
|
||||
this.checked = (query.SortBy || '').toLowerCase() == this.getAttribute('data-sortby').toLowerCase();
|
||||
|
||||
}).checkboxradio('refresh');
|
||||
|
||||
$('.radioSortOrder', page).each(function () {
|
||||
|
||||
this.checked = (query.SortOrder || '').toLowerCase() == this.getAttribute('data-sortorder').toLowerCase();
|
||||
|
||||
}).checkboxradio('refresh');
|
||||
|
||||
$('.alphabetPicker', page).alphaValue(query.NameStartsWithOrGreater);
|
||||
}
|
||||
|
||||
|
@ -85,18 +69,6 @@
|
|||
|
||||
var page = this;
|
||||
|
||||
$('.radioSortBy', this).on('click', function () {
|
||||
query.SortBy = this.getAttribute('data-sortby');
|
||||
query.StartIndex = 0;
|
||||
reloadItems(page);
|
||||
});
|
||||
|
||||
$('.radioSortOrder', this).on('click', function () {
|
||||
query.SortOrder = this.getAttribute('data-sortorder');
|
||||
query.StartIndex = 0;
|
||||
reloadItems(page);
|
||||
});
|
||||
|
||||
$('.chkStandardFilter', this).on('change', function () {
|
||||
|
||||
var filterName = this.getAttribute('data-filter');
|
||||
|
|
|
@ -26,9 +26,6 @@
|
|||
|
||||
updateFilterControls(page);
|
||||
|
||||
var checkSortOption = $('.radioSortBy:checked', page);
|
||||
$('.viewSummary', page).html(LibraryBrowser.getViewSummaryHtml(query, checkSortOption)).trigger('create');
|
||||
|
||||
html = LibraryBrowser.getPosterViewHtml({
|
||||
items: result.Items,
|
||||
shape: "backdrop",
|
||||
|
@ -66,36 +63,12 @@
|
|||
|
||||
function updateFilterControls(page) {
|
||||
|
||||
// Reset form values using the last used query
|
||||
$('.radioSortBy', page).each(function () {
|
||||
|
||||
this.checked = (query.SortBy || '').toLowerCase() == this.getAttribute('data-sortby').toLowerCase();
|
||||
|
||||
}).checkboxradio('refresh');
|
||||
|
||||
$('.radioSortOrder', page).each(function () {
|
||||
|
||||
this.checked = (query.SortOrder || '').toLowerCase() == this.getAttribute('data-sortorder').toLowerCase();
|
||||
|
||||
}).checkboxradio('refresh');
|
||||
}
|
||||
|
||||
$(document).on('pageinit', "#musicGenresPage", function () {
|
||||
|
||||
var page = this;
|
||||
|
||||
$('.radioSortBy', this).on('click', function () {
|
||||
query.SortBy = this.getAttribute('data-sortby');
|
||||
query.StartIndex = 0;
|
||||
reloadItems(page);
|
||||
});
|
||||
|
||||
$('.radioSortOrder', this).on('click', function () {
|
||||
query.SortOrder = this.getAttribute('data-sortorder');
|
||||
query.StartIndex = 0;
|
||||
reloadItems(page);
|
||||
});
|
||||
|
||||
$('.chkStandardFilter', this).on('change', function () {
|
||||
|
||||
var filterName = this.getAttribute('data-filter');
|
||||
|
|
|
@ -94,7 +94,7 @@
|
|||
}
|
||||
html += "</div>";
|
||||
|
||||
html += "<div class='posterItemText' style='color:#000;font-weight:400;font-size:16px;'>";
|
||||
html += "<div class='posterItemText' style='color:#000;font-weight:400;font-size:14px;'>";
|
||||
|
||||
var installedPlugin = plugin.isApp ? null : installedPlugins.filter(function (ip) {
|
||||
return ip.Name == plugin.name;
|
||||
|
@ -108,7 +108,7 @@
|
|||
|
||||
html += "</div>";
|
||||
|
||||
html += "<div class='posterItemText packageReviewText' style='color:#000;font-weight:400;font-size:15px;'>";
|
||||
html += "<div class='posterItemText packageReviewText' style='color:#000;font-weight:400;font-size:14px;'>";
|
||||
html += plugin.price > 0 ? "$" + plugin.price.toFixed(2) : "Free";
|
||||
html += Dashboard.getStoreRatingHtml(plugin.avgRating, plugin.id, plugin.name);
|
||||
|
||||
|
|
|
@ -721,14 +721,18 @@ var Dashboard = {
|
|||
name: "Metadata",
|
||||
href: "metadata.html",
|
||||
selected: pageElem.id == "metadataConfigurationPage" || pageElem.id == "advancedMetadataConfigurationPage" || pageElem.id == "metadataImagesConfigurationPage"
|
||||
}, {
|
||||
name: "Plugins",
|
||||
href: "plugins.html",
|
||||
selected: page.hasClass("pluginConfigurationPage")
|
||||
}, {
|
||||
name: "Auto-Organize",
|
||||
href: "autoorganizelog.html",
|
||||
selected: page.hasClass("organizePage")
|
||||
}, {
|
||||
name: "Plugins",
|
||||
href: "plugins.html",
|
||||
selected: page.hasClass("pluginConfigurationPage")
|
||||
name: "DLNA",
|
||||
href: "dlnasettings.html",
|
||||
selected: page.hasClass("dlnaPage")
|
||||
}, {
|
||||
name: "Live TV",
|
||||
href: "livetvstatus.html",
|
||||
|
@ -1141,9 +1145,7 @@ var Dashboard = {
|
|||
return;
|
||||
}
|
||||
|
||||
var pageElem = page[0];
|
||||
|
||||
if (pageElem.hasPageTitle) {
|
||||
if ($('.pageTitle', page).length) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -1154,8 +1156,6 @@ var Dashboard = {
|
|||
}
|
||||
|
||||
$(parent).prepend("<h2 class='pageTitle'>" + (document.title || " ") + "</h2>");
|
||||
|
||||
pageElem.hasPageTitle = true;
|
||||
},
|
||||
|
||||
setPageTitle: function (title) {
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
SortOrder: "Ascending",
|
||||
IncludeItemTypes: "Audio",
|
||||
Recursive: true,
|
||||
Fields: "DateCreated,AudioInfo,ParentId",
|
||||
Fields: "AudioInfo,ParentId",
|
||||
Limit: 200,
|
||||
StartIndex: 0
|
||||
};
|
||||
|
|
|
@ -26,9 +26,6 @@
|
|||
|
||||
updateFilterControls(page);
|
||||
|
||||
var checkSortOption = $('.radioSortBy:checked', page);
|
||||
$('.viewSummary', page).html(LibraryBrowser.getViewSummaryHtml(query, checkSortOption)).trigger('create');
|
||||
|
||||
html += LibraryBrowser.getPosterViewHtml({
|
||||
items: result.Items,
|
||||
useAverageAspectRatio: true,
|
||||
|
@ -69,19 +66,6 @@
|
|||
|
||||
function updateFilterControls(page) {
|
||||
|
||||
// Reset form values using the last used query
|
||||
$('.radioSortBy', page).each(function () {
|
||||
|
||||
this.checked = (query.SortBy || '').toLowerCase() == this.getAttribute('data-sortby').toLowerCase();
|
||||
|
||||
}).checkboxradio('refresh');
|
||||
|
||||
$('.radioSortOrder', page).each(function () {
|
||||
|
||||
this.checked = (query.SortOrder || '').toLowerCase() == this.getAttribute('data-sortorder').toLowerCase();
|
||||
|
||||
}).checkboxradio('refresh');
|
||||
|
||||
$('.chkStandardFilter', page).each(function () {
|
||||
|
||||
var filters = "," + (query.Filters || "");
|
||||
|
@ -96,18 +80,6 @@
|
|||
|
||||
var page = this;
|
||||
|
||||
$('.radioSortBy', this).on('click', function () {
|
||||
query.SortBy = this.getAttribute('data-sortby');
|
||||
query.StartIndex = 0;
|
||||
reloadItems(page);
|
||||
});
|
||||
|
||||
$('.radioSortOrder', this).on('click', function () {
|
||||
query.SortOrder = this.getAttribute('data-sortorder');
|
||||
query.StartIndex = 0;
|
||||
reloadItems(page);
|
||||
});
|
||||
|
||||
$('.chkStandardFilter', this).on('change', function () {
|
||||
|
||||
var filterName = this.getAttribute('data-filter');
|
||||
|
|
|
@ -27,9 +27,6 @@
|
|||
|
||||
updateFilterControls(page);
|
||||
|
||||
var checkSortOption = $('.radioSortBy:checked', page);
|
||||
$('.viewSummary', page).html(LibraryBrowser.getViewSummaryHtml(query, checkSortOption)).trigger('create');
|
||||
|
||||
html = LibraryBrowser.getPosterViewHtml({
|
||||
items: result.Items,
|
||||
shape: "portrait",
|
||||
|
@ -68,19 +65,6 @@
|
|||
|
||||
function updateFilterControls(page) {
|
||||
|
||||
// Reset form values using the last used query
|
||||
$('.radioSortBy', page).each(function () {
|
||||
|
||||
this.checked = (query.SortBy || '').toLowerCase() == this.getAttribute('data-sortby').toLowerCase();
|
||||
|
||||
}).checkboxradio('refresh');
|
||||
|
||||
$('.radioSortOrder', page).each(function () {
|
||||
|
||||
this.checked = (query.SortOrder || '').toLowerCase() == this.getAttribute('data-sortorder').toLowerCase();
|
||||
|
||||
}).checkboxradio('refresh');
|
||||
|
||||
$('.chkStandardFilter', page).each(function () {
|
||||
|
||||
var filters = "," + (query.Filters || "");
|
||||
|
@ -106,18 +90,6 @@
|
|||
|
||||
var page = this;
|
||||
|
||||
$('.radioSortBy', this).on('click', function () {
|
||||
query.SortBy = this.getAttribute('data-sortby');
|
||||
query.StartIndex = 0;
|
||||
reloadItems(page);
|
||||
});
|
||||
|
||||
$('.radioSortOrder', this).on('click', function () {
|
||||
query.SortOrder = this.getAttribute('data-sortorder');
|
||||
query.StartIndex = 0;
|
||||
reloadItems(page);
|
||||
});
|
||||
|
||||
$('.chkStandardFilter', this).on('change', function () {
|
||||
|
||||
var filterName = this.getAttribute('data-filter');
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
SortOrder: "Ascending",
|
||||
IncludeItemTypes: "Series",
|
||||
Recursive: true,
|
||||
Fields: "SeriesInfo,DateCreated,PrimaryImageAspectRatio",
|
||||
Fields: "SeriesInfo,PrimaryImageAspectRatio",
|
||||
StartIndex: 0
|
||||
};
|
||||
|
||||
|
|
|
@ -26,9 +26,6 @@
|
|||
|
||||
updateFilterControls(page);
|
||||
|
||||
var checkSortOption = $('.radioSortBy:checked', page);
|
||||
$('.viewSummary', page).html(LibraryBrowser.getViewSummaryHtml(query, checkSortOption)).trigger('create');
|
||||
|
||||
html += LibraryBrowser.getPosterViewHtml({
|
||||
items: result.Items,
|
||||
useAverageAspectRatio: true,
|
||||
|
@ -69,19 +66,6 @@
|
|||
|
||||
function updateFilterControls(page) {
|
||||
|
||||
// Reset form values using the last used query
|
||||
$('.radioSortBy', page).each(function () {
|
||||
|
||||
this.checked = (query.SortBy || '').toLowerCase() == this.getAttribute('data-sortby').toLowerCase();
|
||||
|
||||
}).checkboxradio('refresh');
|
||||
|
||||
$('.radioSortOrder', page).each(function () {
|
||||
|
||||
this.checked = (query.SortOrder || '').toLowerCase() == this.getAttribute('data-sortorder').toLowerCase();
|
||||
|
||||
}).checkboxradio('refresh');
|
||||
|
||||
$('.chkStandardFilter', page).each(function () {
|
||||
|
||||
var filters = "," + (query.Filters || "");
|
||||
|
@ -96,18 +80,6 @@
|
|||
|
||||
var page = this;
|
||||
|
||||
$('.radioSortBy', this).on('click', function () {
|
||||
query.SortBy = this.getAttribute('data-sortby');
|
||||
query.StartIndex = 0;
|
||||
reloadItems(page);
|
||||
});
|
||||
|
||||
$('.radioSortOrder', this).on('click', function () {
|
||||
query.SortOrder = this.getAttribute('data-sortorder');
|
||||
query.StartIndex = 0;
|
||||
reloadItems(page);
|
||||
});
|
||||
|
||||
$('.chkStandardFilter', this).on('change', function () {
|
||||
|
||||
var filterName = this.getAttribute('data-filter');
|
||||
|
|
|
@ -6,58 +6,29 @@
|
|||
|
||||
var query = {
|
||||
|
||||
SortBy: "PremiereDate,AirTime,SortName",
|
||||
SortOrder: "Ascending",
|
||||
IncludeItemTypes: "Episode",
|
||||
Limit: 30,
|
||||
Recursive: true,
|
||||
Fields: "SeriesInfo,UserData"
|
||||
Limit: 32,
|
||||
Fields: "SeriesInfo,UserData",
|
||||
UserId: Dashboard.getCurrentUserId()
|
||||
};
|
||||
|
||||
var missedItemsQuery = $.extend({
|
||||
$.getJSON(ApiClient.getUrl("Shows/Upcoming", query)).done(function (result) {
|
||||
|
||||
IsUnaired: false
|
||||
var items = result.Items;
|
||||
|
||||
}, query);
|
||||
|
||||
var yesterday = new Date();
|
||||
|
||||
yesterday.setDate(yesterday.getDate() - 1);
|
||||
yesterday.setHours(0, 0, 0, 0);
|
||||
|
||||
missedItemsQuery.MinPremiereDate = yesterday.toISOString();
|
||||
|
||||
var unairedQuery = $.extend({
|
||||
|
||||
IsUnaired: true
|
||||
|
||||
}, query);
|
||||
|
||||
var promise1 = ApiClient.getItems(Dashboard.getCurrentUserId(), missedItemsQuery);
|
||||
var promise2 = ApiClient.getItems(Dashboard.getCurrentUserId(), unairedQuery);
|
||||
|
||||
$.when(promise1, promise2).done(function (response1, response2) {
|
||||
|
||||
var missedItems = response1[0].Items;
|
||||
var unairedItems = response2[0].Items;
|
||||
|
||||
for (var i = 0, length = unairedItems.length; i < length; i++) {
|
||||
missedItems.push(unairedItems[i]);
|
||||
}
|
||||
|
||||
if (!missedItems.length) {
|
||||
if (!items.length) {
|
||||
$('#upcomingItems', page).html("<p>Nothing here. Please ensure <a href='metadata.html'>downloading of internet metadata</a> is enabled.</p>").trigger('create');
|
||||
return;
|
||||
}
|
||||
|
||||
$('#upcomingItems', page).html(LibraryBrowser.getPosterViewHtml({
|
||||
items: missedItems,
|
||||
items: items,
|
||||
showLocationTypeIndicator: false,
|
||||
shape: "backdrop",
|
||||
showTitle: true,
|
||||
showPremiereDate: true,
|
||||
showPremiereDateIndex: true,
|
||||
preferThumb: true
|
||||
|
||||
})).createPosterItemHoverMenu();
|
||||
});
|
||||
});
|
||||
|
|
|
@ -14,9 +14,10 @@
|
|||
// After saving chapter task, now save server config
|
||||
ApiClient.getServerConfiguration().done(function (config) {
|
||||
|
||||
config.ImageSavingConvention = $('#selectImageSavingConvention', page).val();
|
||||
config.EnableMovieChapterImageExtraction = $('#chkMovies', page).checked();
|
||||
|
||||
config.EnableUPnP = $('#chkEnableUpnp', page).checked();
|
||||
|
||||
ApiClient.updateServerConfiguration(config).done(function (result) {
|
||||
|
||||
navigateToNextPage();
|
||||
|
|
|
@ -11,6 +11,8 @@
|
|||
config.MetadataCountryCode = $('#selectCountry', page).val();
|
||||
config.SaveLocalMeta = $('#chkSaveLocalMetadata', page).checked();
|
||||
|
||||
config.EnableInternetProviders = $('#chkEnableInternetProviders', page).checked();
|
||||
|
||||
ApiClient.updateServerConfiguration(config).done(function (result) {
|
||||
|
||||
navigateToNextPage();
|
||||
|
|
|
@ -18,46 +18,13 @@
|
|||
<div data-role="content">
|
||||
<div class="viewSettings">
|
||||
<div class="viewControls">
|
||||
<button data-mini="true" data-icon="sort" data-inline="true" onclick="$('#sortPanel', $(this).parents('.page')).panel( 'toggle' );">Sort</button>
|
||||
<button data-mini="true" data-icon="filter" data-inline="true" onclick="$('#filterPanel', $(this).parents('.page')).panel( 'toggle' );">Filter</button>
|
||||
</div>
|
||||
<div class="listTopPaging">
|
||||
</div>
|
||||
<div class="viewSummary"></div>
|
||||
</div>
|
||||
<div id="items" class="itemsContainer"></div>
|
||||
</div>
|
||||
<div data-role="panel" id="sortPanel" data-position="right" data-display="overlay" data-theme="a" data-position-fixed="true">
|
||||
|
||||
<form>
|
||||
<fieldset data-role="controlgroup">
|
||||
<legend>
|
||||
<strong>Sort By:</strong>
|
||||
</legend>
|
||||
|
||||
<input class="radioSortBy defaultSort" type="radio" name="radioSortBy" id="radioSortName" value="on" checked="checked" data-sortby="SortName" data-mini="true">
|
||||
<label for="radioSortName">Name</label>
|
||||
|
||||
<input class="radioSortBy" type="radio" name="radioSortBy" id="radioSeriesCount" value="on" checked="checked" data-sortby="SeriesCount,SortName" data-mini="true">
|
||||
<label for="radioSeriesCount">Series count</label>
|
||||
|
||||
<input class="radioSortBy" type="radio" name="radioSortBy" id="radioEpisodeCount" value="on" checked="checked" data-sortby="EpisodeCount,SortName" data-mini="true">
|
||||
<label for="radioEpisodeCount">Episode count</label>
|
||||
</fieldset>
|
||||
|
||||
<fieldset data-role="controlgroup">
|
||||
<legend>
|
||||
<strong>Sort Order:</strong>
|
||||
</legend>
|
||||
|
||||
<input class="radioSortOrder" type="radio" name="radioSortOrder" id="radioAscending" value="on" checked="checked" data-sortorder="Ascending" data-mini="true">
|
||||
<label for="radioAscending">Ascending</label>
|
||||
|
||||
<input class="radioSortOrder" type="radio" name="radioSortOrder" id="radioDescending" value="off" data-sortorder="Descending" data-mini="true">
|
||||
<label for="radioDescending">Descending</label>
|
||||
</fieldset>
|
||||
</form>
|
||||
</div>
|
||||
<div data-role="panel" id="filterPanel" data-position="right" data-display="overlay" data-theme="a" data-position-fixed="true">
|
||||
<form>
|
||||
<fieldset data-role="controlgroup">
|
||||
|
|
|
@ -21,46 +21,13 @@
|
|||
<div data-role="content">
|
||||
<div class="viewSettings">
|
||||
<div class="viewControls">
|
||||
<button data-mini="true" data-icon="sort" data-inline="true" onclick="$('#sortPanel', $(this).parents('.page')).panel( 'toggle' );">Sort</button>
|
||||
<button data-mini="true" data-icon="filter" data-inline="true" onclick="$('#filterPanel', $(this).parents('.page')).panel( 'toggle' );">Filter</button>
|
||||
</div>
|
||||
<div class="listTopPaging">
|
||||
</div>
|
||||
<div class="viewSummary"></div>
|
||||
</div>
|
||||
<div id="items" class="itemsContainer"></div>
|
||||
</div>
|
||||
<div data-role="panel" id="sortPanel" data-position="right" data-display="overlay" data-theme="a" data-position-fixed="true">
|
||||
|
||||
<form>
|
||||
<fieldset data-role="controlgroup">
|
||||
<legend>
|
||||
<strong>Sort By:</strong>
|
||||
</legend>
|
||||
|
||||
<input class="radioSortBy defaultSort" type="radio" name="radioSortBy" id="radioSortName" value="on" checked="checked" data-sortby="SortName" data-mini="true">
|
||||
<label for="radioSortName">Name</label>
|
||||
|
||||
<input class="radioSortBy" type="radio" name="radioSortBy" id="radioSeriesCount" value="on" checked="checked" data-sortby="SeriesCount,SortName" data-mini="true">
|
||||
<label for="radioSeriesCount">Series count</label>
|
||||
|
||||
<input class="radioSortBy" type="radio" name="radioSortBy" id="radioEpisodeCount" value="on" checked="checked" data-sortby="EpisodeCount,SortName" data-mini="true">
|
||||
<label for="radioEpisodeCount">Episode count</label>
|
||||
</fieldset>
|
||||
|
||||
<fieldset data-role="controlgroup">
|
||||
<legend>
|
||||
<strong>Sort Order:</strong>
|
||||
</legend>
|
||||
|
||||
<input class="radioSortOrder" type="radio" name="radioSortOrder" id="radioAscending" value="on" checked="checked" data-sortorder="Ascending" data-mini="true">
|
||||
<label for="radioAscending">Ascending</label>
|
||||
|
||||
<input class="radioSortOrder" type="radio" name="radioSortOrder" id="radioDescending" value="off" data-sortorder="Descending" data-mini="true">
|
||||
<label for="radioDescending">Descending</label>
|
||||
</fieldset>
|
||||
</form>
|
||||
</div>
|
||||
<div data-role="panel" id="filterPanel" data-position="right" data-display="overlay" data-theme="a" data-position-fixed="true">
|
||||
<form>
|
||||
<fieldset data-role="controlgroup">
|
||||
|
|
|
@ -18,46 +18,13 @@
|
|||
<div data-role="content">
|
||||
<div class="viewSettings">
|
||||
<div class="viewControls">
|
||||
<button data-mini="true" data-icon="sort" data-inline="true" onclick="$('#sortPanel', $(this).parents('.page')).panel( 'toggle' );">Sort</button>
|
||||
<button data-mini="true" data-icon="filter" data-inline="true" onclick="$('#filterPanel', $(this).parents('.page')).panel( 'toggle' );">Filter</button>
|
||||
</div>
|
||||
<div class="listTopPaging">
|
||||
</div>
|
||||
<div class="viewSummary"></div>
|
||||
</div>
|
||||
<div id="items" class="itemsContainer"></div>
|
||||
</div>
|
||||
<div data-role="panel" id="sortPanel" data-position="right" data-display="overlay" data-theme="a" data-position-fixed="true">
|
||||
|
||||
<form>
|
||||
<fieldset data-role="controlgroup">
|
||||
<legend>
|
||||
<strong>Sort By:</strong>
|
||||
</legend>
|
||||
|
||||
<input class="radioSortBy defaultSort" type="radio" name="radioSortBy" id="radioSortName" value="on" checked="checked" data-sortby="SortName" data-mini="true">
|
||||
<label for="radioSortName">Name</label>
|
||||
|
||||
<input class="radioSortBy" type="radio" name="radioSortBy" id="radioSeriesCount" value="on" checked="checked" data-sortby="SeriesCount,SortName" data-mini="true">
|
||||
<label for="radioSeriesCount">Series count</label>
|
||||
|
||||
<input class="radioSortBy" type="radio" name="radioSortBy" id="radioEpisodeCount" value="on" checked="checked" data-sortby="EpisodeCount,SortName" data-mini="true">
|
||||
<label for="radioEpisodeCount">Episode count</label>
|
||||
</fieldset>
|
||||
|
||||
<fieldset data-role="controlgroup">
|
||||
<legend>
|
||||
<strong>Sort Order:</strong>
|
||||
</legend>
|
||||
|
||||
<input class="radioSortOrder" type="radio" name="radioSortOrder" id="radioAscending" value="on" checked="checked" data-sortorder="Ascending" data-mini="true">
|
||||
<label for="radioAscending">Ascending</label>
|
||||
|
||||
<input class="radioSortOrder" type="radio" name="radioSortOrder" id="radioDescending" value="off" data-sortorder="Descending" data-mini="true">
|
||||
<label for="radioDescending">Descending</label>
|
||||
</fieldset>
|
||||
</form>
|
||||
</div>
|
||||
<div data-role="panel" id="filterPanel" data-position="right" data-display="overlay" data-theme="a" data-position-fixed="true">
|
||||
<form>
|
||||
<fieldset data-role="controlgroup">
|
||||
|
|
|
@ -13,16 +13,7 @@
|
|||
<img src="css/images/mblogoicon.png" />Configure settings</h2>
|
||||
|
||||
<br />
|
||||
<div style="margin: 1em 0;">
|
||||
<label for="selectImageSavingConvention"><b>Image saving convention:</b></label>
|
||||
<select name="selectImageSavingConvention" id="selectImageSavingConvention">
|
||||
<option value="Compatible" selected="selected">Compatible - MB3/Plex/Xbmc</option>
|
||||
<option value="Legacy">Standard - MB3/MB2</option>
|
||||
</select>
|
||||
<div class="fieldDescription">Media Browser recognizes images from most major media applications. Choosing your downloading convention is useful if you also use other products.</div>
|
||||
</div>
|
||||
|
||||
<div style="margin: 2em 0;">
|
||||
<div style="margin: 1em 0 2em;">
|
||||
<label for="chkVideoImages">Enable video image extraction</label>
|
||||
<input id="chkVideoImages" name="chkVideoImages" type="checkbox" checked="checked" />
|
||||
<div class="fieldDescription">For videos that don't already have images, and that we're unable to find internet images for. This will add some additional time to the initial library scan but will result in a more pleasing presentation.</div>
|
||||
|
@ -34,6 +25,12 @@
|
|||
<div class="fieldDescription">Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs as a nightly scheduled task at 4am, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.</div>
|
||||
</div>
|
||||
|
||||
<div style="margin: 2em 0;">
|
||||
<label for="chkEnableUpnp">Enable automatic port mapping</label>
|
||||
<input type="checkbox" id="chkEnableUpnp" checked="checked" />
|
||||
<div class="fieldDescription">UPnP allows automated router configuration for easy remote access. This may not work with some router models.</div>
|
||||
</div>
|
||||
|
||||
<div class="wizardNavigation">
|
||||
<button type="button" data-iconpos="left" data-icon="arrow-l" data-inline="true" onclick="history.back();">Previous</button>
|
||||
<button id="btnNextPage" type="button" data-iconpos="right" data-icon="arrow-r" data-inline="true">Next</button>
|
||||
|
|
|
@ -15,7 +15,12 @@
|
|||
|
||||
<br />
|
||||
<div style="margin: 1em 0;">
|
||||
<label for="chkSaveLocalMetadata">Save metadata into media folders</label>
|
||||
<input type="checkbox" id="chkEnableInternetProviders" name="chkEnableInternetProviders" checked="checked" />
|
||||
<label for="chkEnableInternetProviders">Download artwork and metadata from the internet </label>
|
||||
<div class="fieldDescription">Media Browser can download information about your media to enable rich presentations.</div>
|
||||
</div>
|
||||
<div style="margin: 2em 0;">
|
||||
<label for="chkSaveLocalMetadata">Save artwork and metadata into media folders</label>
|
||||
<input id="chkSaveLocalMetadata" name="chkSaveLocalMetadata" type="checkbox" checked="checked" />
|
||||
<div class="fieldDescription">Saving artwork and metadata directly into media folders will put them in a place where they can be easily edited.</div>
|
||||
</div>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue