mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
start to rework music tabs
This commit is contained in:
parent
d09b8462c4
commit
387550a5cf
12 changed files with 566 additions and 1555 deletions
|
@ -26,14 +26,14 @@
|
||||||
"web-component-tester": "*",
|
"web-component-tester": "*",
|
||||||
"webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0"
|
"webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0"
|
||||||
},
|
},
|
||||||
"homepage": "https://github.com/PolymerElements/paper-ripple",
|
"homepage": "https://github.com/polymerelements/paper-ripple",
|
||||||
"_release": "1.0.1",
|
"_release": "1.0.1",
|
||||||
"_resolution": {
|
"_resolution": {
|
||||||
"type": "version",
|
"type": "version",
|
||||||
"tag": "v1.0.1",
|
"tag": "v1.0.1",
|
||||||
"commit": "af19d904802437c305390bb03415c11661de3d0a"
|
"commit": "af19d904802437c305390bb03415c11661de3d0a"
|
||||||
},
|
},
|
||||||
"_source": "git://github.com/PolymerElements/paper-ripple.git",
|
"_source": "git://github.com/polymerelements/paper-ripple.git",
|
||||||
"_target": "^1.0.0",
|
"_target": "^1.0.0",
|
||||||
"_originalSource": "PolymerElements/paper-ripple"
|
"_originalSource": "polymerelements/paper-ripple"
|
||||||
}
|
}
|
|
@ -429,6 +429,42 @@ h1 a:hover {
|
||||||
margin: -10px 0 0 -10px;
|
margin: -10px 0 0 -10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
input:not(.paper-input):not(.likePaperText):not([type='checkbox']):not([type='radio']) {
|
||||||
|
-webkit-appearance: none;
|
||||||
|
-webkit-font-smoothing: antialiased;
|
||||||
|
-webkit-rtl-ordering: logical;
|
||||||
|
-webkit-user-select: text;
|
||||||
|
box-sizing: border-box;
|
||||||
|
font-family: inherit;
|
||||||
|
font-size: inherit;
|
||||||
|
height: 28.5938px;
|
||||||
|
letter-spacing: normal;
|
||||||
|
line-height: 18.2px;
|
||||||
|
list-style-image: none;
|
||||||
|
list-style-position: outside;
|
||||||
|
list-style-type: none;
|
||||||
|
min-height: 28.6px;
|
||||||
|
padding-bottom: 5.2px;
|
||||||
|
padding-left: 5.2px;
|
||||||
|
padding-right: 5.2px;
|
||||||
|
padding-top: 5.2px;
|
||||||
|
text-align: left;
|
||||||
|
text-indent: 0px;
|
||||||
|
text-rendering: auto;
|
||||||
|
text-shadow: none;
|
||||||
|
text-transform: none;
|
||||||
|
white-space: nowrap;
|
||||||
|
word-spacing: 0px;
|
||||||
|
writing-mode: lr-tb;
|
||||||
|
-webkit-writing-mode: horizontal-tb;
|
||||||
|
background: white;
|
||||||
|
width: 100%;
|
||||||
|
border: 1px solid #ccc;
|
||||||
|
color: #000;
|
||||||
|
margin: 0 0 3px 0;
|
||||||
|
border-radius: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
.smoothScrollX {
|
.smoothScrollX {
|
||||||
overflow-x: scroll;
|
overflow-x: scroll;
|
||||||
-webkit-overflow-scrolling: touch;
|
-webkit-overflow-scrolling: touch;
|
||||||
|
|
|
@ -1,66 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<title>Emby</title>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div id="musicGenresPage" data-role="page" class="page libraryPage" data-require="scripts/musicgenres">
|
|
||||||
<div class="libraryViewNav scopedLibraryViewNav">
|
|
||||||
<a href="musicrecommended.html"><iron-icon icon="info"></iron-icon>${TabSuggestions}</a>
|
|
||||||
<a href="musicalbums.html"><iron-icon icon="album"></iron-icon>${TabAlbums}</a>
|
|
||||||
<a href="musicalbumartists.html"><iron-icon icon="music-note"></iron-icon>${TabAlbumArtists}</a>
|
|
||||||
<a href="musicartists.html" class="musicArtistsTab"><iron-icon icon="music-note"></iron-icon>${TabArtists}</a>
|
|
||||||
<a href="songs.html" class="musicSongsTab"><iron-icon icon="music-note"></iron-icon>${TabSongs}</a>
|
|
||||||
<a href="#" class="ui-btn-active"><iron-icon icon="library-music"></iron-icon>${TabGenres}</a>
|
|
||||||
</div>
|
|
||||||
<div data-role="content">
|
|
||||||
<div class="viewSettings">
|
|
||||||
<div class="listTopPaging">
|
|
||||||
</div>
|
|
||||||
<div class="selectionCommands" style="display: none;">
|
|
||||||
<div class="selectionCommandsControlGroup">
|
|
||||||
<button class="btnAddToPlaylist" data-mini="true" data-icon="plus" data-inline="true" title="${ButtonAddToPlaylist}">${ButtonAddToPlaylist}</button>
|
|
||||||
<button class="btnSyncItems" data-mini="true" data-icon="refresh" data-inline="true" title="${ButtonSync}">${ButtonSync}</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div id="items" class="itemsContainer paddedItemsContainer"></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div data-role="panel" class="viewPanel" data-theme="a" data-position="right" data-display="overlay" data-position-fixed="true">
|
|
||||||
<form>
|
|
||||||
|
|
||||||
<div data-role="controlgroup" data-type="horizontal" data-mini="true" class="viewPanelTabs">
|
|
||||||
<a href="#" data-role="button" class="viewTabButton" data-tab="tabView">${TabView}</a>
|
|
||||||
<a href="#" data-role="button" class="viewTabButton" data-tab="tabFilter">${TabFilter}</a>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="tabView viewTab">
|
|
||||||
|
|
||||||
<div>
|
|
||||||
<label for="selectPageSize">${LabelPageSize}</label>
|
|
||||||
<select id="selectPageSize" class="selectPageSize"></select>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div class="tabFilter viewTab">
|
|
||||||
<fieldset data-role="controlgroup">
|
|
||||||
<legend>
|
|
||||||
${HeaderFilters}
|
|
||||||
</legend>
|
|
||||||
<input class="chkStandardFilter" type="checkbox" name="chkIsFavorite" id="chkIsFavorite" data-filter="IsFavorite" data-mini="true">
|
|
||||||
<label for="chkIsFavorite">${OptionFavorite}</label>
|
|
||||||
|
|
||||||
<input class="chkStandardFilter" type="checkbox" name="chkLikes" id="chkLikes" data-filter="Likes" data-mini="true">
|
|
||||||
<label for="chkLikes">${OptionLikes}</label>
|
|
||||||
|
|
||||||
<input class="chkStandardFilter" type="checkbox" name="chkDislikes" id="chkDislikes" data-filter="Dislikes" data-mini="true">
|
|
||||||
<label for="chkDislikes">${OptionDislikes}</label>
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -4,18 +4,33 @@
|
||||||
<title>Emby</title>
|
<title>Emby</title>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="musicRecommendedPage" data-role="page" class="page libraryPage backdropPage" data-backdroptype="musicartist" data-require="scripts/musicrecommended">
|
<div id="musicRecommendedPage" data-role="page" class="page libraryPage backdropPage pageWithAbsoluteTabs" data-backdroptype="musicartist" data-require="scripts/musicrecommended">
|
||||||
<div class="libraryViewNav scopedLibraryViewNav">
|
<div class="libraryViewNav libraryViewNavWithMinHeight">
|
||||||
<a href="#" class="ui-btn-active"><iron-icon icon="info"></iron-icon>${TabSuggestions}</a>
|
<paper-tabs hidescrollbuttons noink>
|
||||||
<a href="musicalbums.html"><iron-icon icon="album"></iron-icon>${TabAlbums}</a>
|
<paper-tab><iron-icon icon="info"></iron-icon>${TabSuggestions}</paper-tab>
|
||||||
<a href="musicalbumartists.html"><iron-icon icon="music-note"></iron-icon>${TabAlbumArtists}</a>
|
<paper-tab><iron-icon icon="local-movies"></iron-icon>${TabMovies}</paper-tab>
|
||||||
<a href="musicartists.html" class="musicArtistsTab"><iron-icon icon="music-note"></iron-icon>${TabArtists}</a>
|
<paper-tab class="movieTrailersTab"><iron-icon icon="movie"></iron-icon>${TabTrailers}</paper-tab>
|
||||||
<a href="songs.html" class="musicSongsTab"><iron-icon icon="music-note"></iron-icon>${TabSongs}</a>
|
<paper-tab><iron-icon icon="video-library"></iron-icon>${TabCollections}</paper-tab>
|
||||||
<a href="musicgenres.html"><iron-icon icon="library-music"></iron-icon>${TabGenres}</a>
|
<paper-tab><iron-icon icon="video-library"></iron-icon>${TabGenres}</paper-tab>
|
||||||
|
<paper-tab class="moviePeopleTab"><iron-icon icon="people"></iron-icon>${TabPeople}</paper-tab>
|
||||||
|
</paper-tabs>
|
||||||
|
<div class="legacyTabs scopedLibraryViewNav">
|
||||||
|
<a href="musicrecommended.html"><iron-icon icon="info"></iron-icon>${TabSuggestions}</a>
|
||||||
|
<a href="musicrecommended.html?tab=1"><iron-icon icon="album"></iron-icon>${TabAlbums}</a>
|
||||||
|
<a href="musicrecommended.html?tab=2"><iron-icon icon="music-note"></iron-icon>${TabAlbumArtists}</a>
|
||||||
|
<a href="musicrecommended.html?tab=3"><iron-icon icon="music-note"></iron-icon>${TabArtists}</a>
|
||||||
|
<a href="musicrecommended.html?tab=4"><iron-icon icon="music-note"></iron-icon>${TabSongs}</a>
|
||||||
|
<a href="musicrecommended.html?tab=5"><iron-icon icon="library-music"></iron-icon>${TabGenres}</a>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div data-role="content">
|
|
||||||
<div class="ehsContent squareEhsContent">
|
|
||||||
|
|
||||||
|
<div class="pageBackground"></div>
|
||||||
|
|
||||||
|
<div class="ehsContent fullWidth">
|
||||||
|
|
||||||
|
<neon-animated-pages>
|
||||||
|
<neon-animatable>
|
||||||
|
<div class="pageTabContent" data-index="0">
|
||||||
<div class="homePageSection">
|
<div class="homePageSection">
|
||||||
<h1 class="listHeader">${HeaderLatestMusic}</h1>
|
<h1 class="listHeader">${HeaderLatestMusic}</h1>
|
||||||
|
|
||||||
|
@ -44,6 +59,101 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</neon-animatable>
|
||||||
|
<neon-animatable>
|
||||||
|
<div class="pageTabContent" data-index="1">
|
||||||
|
</div>
|
||||||
|
</neon-animatable>
|
||||||
|
<neon-animatable>
|
||||||
|
<div class="pageTabContent" data-index="2">
|
||||||
|
</div>
|
||||||
|
</neon-animatable>
|
||||||
|
<neon-animatable>
|
||||||
|
<div class="pageTabContent" data-index="3">
|
||||||
|
</div>
|
||||||
|
</neon-animatable>
|
||||||
|
<neon-animatable>
|
||||||
|
<div class="pageTabContent" data-index="4">
|
||||||
|
<div class="viewSettings">
|
||||||
|
<div class="listTopPaging">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="items" class="itemsContainer" style="max-width:1000px;margin: 0 auto;"></div>
|
||||||
|
</div>
|
||||||
|
</neon-animatable>
|
||||||
|
<neon-animatable>
|
||||||
|
<div class="pageTabContent" data-index="5">
|
||||||
|
<div class="viewSettings">
|
||||||
|
<div class="listTopPaging">
|
||||||
|
</div>
|
||||||
|
<div class="selectionCommands" style="display: none;">
|
||||||
|
<div class="selectionCommandsControlGroup">
|
||||||
|
<button class="btnAddToPlaylist" data-mini="true" data-icon="plus" data-inline="true" title="${ButtonAddToPlaylist}">${ButtonAddToPlaylist}</button>
|
||||||
|
<button class="btnSyncItems" data-mini="true" data-icon="refresh" data-inline="true" title="${ButtonSync}">${ButtonSync}</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="items" class="itemsContainer paddedItemsContainer"></div>
|
||||||
|
</div>
|
||||||
|
</neon-animatable>
|
||||||
|
</neon-animated-pages>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div data-role="panel" class="viewPanel songsViewPanel" data-theme="a" data-position="right" data-display="overlay" data-position-fixed="true">
|
||||||
|
<form>
|
||||||
|
|
||||||
|
<fieldset data-role="controlgroup">
|
||||||
|
<legend>${HeaderFilters}</legend>
|
||||||
|
<input class="chkStandardFilter" type="checkbox" name="chkPlayed" id="chkPlayed" data-filter="IsPlayed" data-mini="true">
|
||||||
|
<label for="chkPlayed">${OptionPlayed}</label>
|
||||||
|
|
||||||
|
<input class="chkStandardFilter" type="checkbox" name="chkUnplayed" id="chkUnplayed" data-filter="IsUnPlayed" data-mini="true">
|
||||||
|
<label for="chkUnplayed">${OptionUnplayed}</label>
|
||||||
|
|
||||||
|
<input class="chkStandardFilter" type="checkbox" name="chkIsFavorite" id="chkIsFavorite" data-filter="IsFavorite" data-mini="true">
|
||||||
|
<label for="chkIsFavorite">${OptionFavorite}</label>
|
||||||
|
|
||||||
|
<input class="chkStandardFilter" type="checkbox" name="chkLikes" id="chkLikes" data-filter="Likes" data-mini="true">
|
||||||
|
<label for="chkLikes">${OptionLikes}</label>
|
||||||
|
|
||||||
|
<input class="chkStandardFilter" type="checkbox" name="chkDislikes" id="chkDislikes" data-filter="Dislikes" data-mini="true">
|
||||||
|
<label for="chkDislikes">${OptionDislikes}</label>
|
||||||
|
|
||||||
|
</fieldset>
|
||||||
|
<br />
|
||||||
|
|
||||||
|
<div data-role="collapsible" data-collapsed="true" data-mini="true" class="genreFilters">
|
||||||
|
<h2>${HeaderGenres}</h2>
|
||||||
|
|
||||||
|
<div class="filterOptions">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div data-role="collapsible" data-collapsed="true" data-mini="true" class="officialRatingFilters">
|
||||||
|
<h2>${HeaderParentalRatings}</h2>
|
||||||
|
|
||||||
|
<div class="filterOptions">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div data-role="collapsible" data-collapsed="true" data-mini="true" class="tagFilters">
|
||||||
|
<h2>${HeaderTags}</h2>
|
||||||
|
|
||||||
|
<div class="filterOptions">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div data-role="collapsible" data-collapsed="true" data-mini="true" class="yearFilters">
|
||||||
|
<h2>${HeaderYears}</h2>
|
||||||
|
|
||||||
|
<div class="filterOptions">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div data-role="content">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
|
|
|
@ -50,6 +50,8 @@
|
||||||
// Some 1080- videos are reported as 1912?
|
// Some 1080- videos are reported as 1912?
|
||||||
if (maxAllowedWidth >= 1900) {
|
if (maxAllowedWidth >= 1900) {
|
||||||
|
|
||||||
|
options.push({ name: '1080p - 40Mbps', maxHeight: 1080, bitrate: 40000000 });
|
||||||
|
options.push({ name: '1080p - 35Mbps', maxHeight: 1080, bitrate: 35000000 });
|
||||||
options.push({ name: '1080p - 30Mbps', maxHeight: 1080, bitrate: 30000000 });
|
options.push({ name: '1080p - 30Mbps', maxHeight: 1080, bitrate: 30000000 });
|
||||||
options.push({ name: '1080p - 25Mbps', maxHeight: 1080, bitrate: 25000000 });
|
options.push({ name: '1080p - 25Mbps', maxHeight: 1080, bitrate: 25000000 });
|
||||||
options.push({ name: '1080p - 20Mbps', maxHeight: 1080, bitrate: 20000000 });
|
options.push({ name: '1080p - 20Mbps', maxHeight: 1080, bitrate: 20000000 });
|
||||||
|
|
|
@ -1,27 +1,46 @@
|
||||||
(function ($, document) {
|
(function ($, document) {
|
||||||
|
|
||||||
var view = LibraryBrowser.getDefaultItemsView('Thumb', 'Thumb');
|
var data = {};
|
||||||
|
function getPageData() {
|
||||||
// The base query options
|
var key = getSavedQueryKey();
|
||||||
var query = {
|
var pageData = data[key];
|
||||||
|
|
||||||
|
if (!pageData) {
|
||||||
|
pageData = data[key] = {
|
||||||
|
query: {
|
||||||
SortBy: "SortName",
|
SortBy: "SortName",
|
||||||
SortOrder: "Ascending",
|
SortOrder: "Ascending",
|
||||||
IncludeItemTypes: "Audio,MusicVideo",
|
IncludeItemTypes: "Audio,MusicVideo",
|
||||||
Recursive: true,
|
Recursive: true,
|
||||||
Fields: "DateCreated,SyncInfo,ItemCounts",
|
Fields: "DateCreated,SyncInfo,ItemCounts",
|
||||||
StartIndex: 0
|
StartIndex: 0,
|
||||||
|
Limit: LibraryBrowser.getDefaultPageSize()
|
||||||
|
},
|
||||||
|
view: LibraryBrowser.getSavedView(key) || LibraryBrowser.getDefaultItemsView('Thumb', 'Thumb')
|
||||||
};
|
};
|
||||||
|
|
||||||
|
pageData.query.ParentId = LibraryMenu.getTopParentId();
|
||||||
|
LibraryBrowser.loadSavedQueryValues(key, pageData.query);
|
||||||
|
}
|
||||||
|
return pageData;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getQuery() {
|
||||||
|
|
||||||
|
return getPageData().query;
|
||||||
|
}
|
||||||
|
|
||||||
function getSavedQueryKey() {
|
function getSavedQueryKey() {
|
||||||
|
|
||||||
return 'musicgenres' + (query.ParentId || '');
|
return getWindowUrl();
|
||||||
}
|
}
|
||||||
|
|
||||||
function reloadItems(page) {
|
function reloadItems(page) {
|
||||||
|
|
||||||
Dashboard.showLoadingMsg();
|
Dashboard.showLoadingMsg();
|
||||||
|
|
||||||
|
var query = getQuery();
|
||||||
|
|
||||||
ApiClient.getMusicGenres(Dashboard.getCurrentUserId(), query).done(function (result) {
|
ApiClient.getMusicGenres(Dashboard.getCurrentUserId(), query).done(function (result) {
|
||||||
|
|
||||||
// Scroll back up so they can see the results from the beginning
|
// Scroll back up so they can see the results from the beginning
|
||||||
|
@ -29,16 +48,18 @@
|
||||||
|
|
||||||
var html = '';
|
var html = '';
|
||||||
|
|
||||||
|
var view = getPageData().view;
|
||||||
|
|
||||||
$('.listTopPaging', page).html(LibraryBrowser.getQueryPagingHtml({
|
$('.listTopPaging', page).html(LibraryBrowser.getQueryPagingHtml({
|
||||||
startIndex: query.StartIndex,
|
startIndex: query.StartIndex,
|
||||||
limit: query.Limit,
|
limit: query.Limit,
|
||||||
totalRecordCount: result.TotalRecordCount,
|
totalRecordCount: result.TotalRecordCount,
|
||||||
viewButton: true,
|
|
||||||
showLimit: false,
|
showLimit: false,
|
||||||
addSelectionButton: true
|
updatePageSizeSetting: false,
|
||||||
})).trigger('create');
|
addLayoutButton: true,
|
||||||
|
currentLayout: view
|
||||||
|
|
||||||
updateFilterControls(page);
|
})).trigger('create');
|
||||||
|
|
||||||
if (view == "Thumb") {
|
if (view == "Thumb") {
|
||||||
html = LibraryBrowser.getPosterViewHtml({
|
html = LibraryBrowser.getPosterViewHtml({
|
||||||
|
@ -80,61 +101,23 @@
|
||||||
reloadItems(page);
|
reloadItems(page);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
$('.btnChangeLayout', page).on('layoutchange', function (e, layout) {
|
||||||
|
getPageData().view = layout;
|
||||||
|
LibraryBrowser.saveViewSetting(getSavedQueryKey(), layout);
|
||||||
|
reloadItems(page);
|
||||||
|
});
|
||||||
|
|
||||||
LibraryBrowser.saveQueryValues(getSavedQueryKey(), query);
|
LibraryBrowser.saveQueryValues(getSavedQueryKey(), query);
|
||||||
|
|
||||||
Dashboard.hideLoadingMsg();
|
Dashboard.hideLoadingMsg();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function updateFilterControls(page) {
|
window.MusicPage.renderGenresTab = function (page, tabContent) {
|
||||||
|
|
||||||
$('#selectPageSize', page).val(query.Limit).selectmenu('refresh');
|
if (LibraryBrowser.needsRefresh(tabContent)) {
|
||||||
|
reloadItems(tabContent);
|
||||||
}
|
}
|
||||||
|
};
|
||||||
$(document).on('pageinit', "#musicGenresPage", function () {
|
|
||||||
|
|
||||||
var page = this;
|
|
||||||
|
|
||||||
$('.chkStandardFilter', this).on('change', function () {
|
|
||||||
|
|
||||||
var filterName = this.getAttribute('data-filter');
|
|
||||||
var filters = query.Filters || "";
|
|
||||||
|
|
||||||
filters = (',' + filters).replace(',' + filterName, '').substring(1);
|
|
||||||
|
|
||||||
if (this.checked) {
|
|
||||||
filters = filters ? (filters + ',' + filterName) : filterName;
|
|
||||||
}
|
|
||||||
|
|
||||||
query.StartIndex = 0;
|
|
||||||
query.Filters = filters;
|
|
||||||
|
|
||||||
reloadItems(page);
|
|
||||||
});
|
|
||||||
|
|
||||||
$('#selectPageSize', page).on('change', function () {
|
|
||||||
query.Limit = parseInt(this.value);
|
|
||||||
query.StartIndex = 0;
|
|
||||||
reloadItems(page);
|
|
||||||
});
|
|
||||||
|
|
||||||
}).on('pagebeforeshow', "#musicGenresPage", function () {
|
|
||||||
|
|
||||||
query.ParentId = LibraryMenu.getTopParentId();
|
|
||||||
|
|
||||||
var limit = LibraryBrowser.getDefaultPageSize();
|
|
||||||
|
|
||||||
// If the default page size has changed, the start index will have to be reset
|
|
||||||
if (limit != query.Limit) {
|
|
||||||
query.Limit = limit;
|
|
||||||
query.StartIndex = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
LibraryBrowser.loadSavedQueryValues(getSavedQueryKey(), query);
|
|
||||||
|
|
||||||
reloadItems(this);
|
|
||||||
|
|
||||||
updateFilterControls(this);
|
|
||||||
});
|
|
||||||
|
|
||||||
})(jQuery, document);
|
})(jQuery, document);
|
|
@ -186,25 +186,129 @@
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
$(document).on('pagebeforeshow', "#musicRecommendedPage", function () {
|
function loadSuggestionsTab(page, tabContent) {
|
||||||
|
|
||||||
var parentId = LibraryMenu.getTopParentId();
|
var parentId = LibraryMenu.getTopParentId();
|
||||||
|
|
||||||
var page = this;
|
var containers = tabContent.querySelectorAll('.itemsContainer');
|
||||||
|
|
||||||
var containers = page.querySelectorAll('.itemsContainer');
|
|
||||||
if (enableScrollX()) {
|
if (enableScrollX()) {
|
||||||
$(containers).addClass('hiddenScrollX');
|
$(containers).addClass('hiddenScrollX');
|
||||||
} else {
|
} else {
|
||||||
$(containers).removeClass('hiddenScrollX');
|
$(containers).removeClass('hiddenScrollX');
|
||||||
}
|
}
|
||||||
|
|
||||||
if (LibraryBrowser.needsRefresh(page)) {
|
if (LibraryBrowser.needsRefresh(tabContent)) {
|
||||||
loadLatest(page, parentId);
|
console.log('loadSuggestionsTab');
|
||||||
loadPlaylists(page, parentId);
|
loadLatest(tabContent, parentId);
|
||||||
loadRecentlyPlayed(page, parentId);
|
loadPlaylists(tabContent, parentId);
|
||||||
loadFrequentlyPlayed(page, parentId);
|
loadRecentlyPlayed(tabContent, parentId);
|
||||||
|
loadFrequentlyPlayed(tabContent, parentId);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function loadTab(page, index) {
|
||||||
|
|
||||||
|
var tabContent = page.querySelector('.pageTabContent[data-index=\'' + index + '\']');
|
||||||
|
var depends = [];
|
||||||
|
var scope = 'MusicPage';
|
||||||
|
var renderMethod = '';
|
||||||
|
var initMethod = '';
|
||||||
|
|
||||||
|
switch (index) {
|
||||||
|
|
||||||
|
case 0:
|
||||||
|
renderMethod = 'renderSuggestedTab';
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
depends.push('scripts/movies');
|
||||||
|
depends.push('scripts/queryfilters');
|
||||||
|
renderMethod = 'renderMoviesTab';
|
||||||
|
initMethod = 'initMoviesTab';
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
depends.push('scripts/movietrailers');
|
||||||
|
renderMethod = 'renderTrailerTab';
|
||||||
|
initMethod = 'initTrailerTab';
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
depends.push('scripts/moviecollections');
|
||||||
|
renderMethod = 'renderCollectionsTab';
|
||||||
|
initMethod = 'initCollectionsTab';
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
depends.push('scripts/songs');
|
||||||
|
renderMethod = 'renderSongsTab';
|
||||||
|
initMethod = 'initSongsTab';
|
||||||
|
depends.push('scripts/queryfilters');
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
depends.push('scripts/musicgenres');
|
||||||
|
renderMethod = 'renderGenresTab';
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
require(depends, function () {
|
||||||
|
|
||||||
|
if (initMethod && !tabContent.initComplete) {
|
||||||
|
|
||||||
|
window[scope][initMethod](page, tabContent);
|
||||||
|
tabContent.initComplete = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
window[scope][renderMethod](page, tabContent);
|
||||||
|
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
window.MusicPage = window.MusicPage || {};
|
||||||
|
window.MusicPage.renderSuggestedTab = loadSuggestionsTab;
|
||||||
|
|
||||||
|
$(document).on('pageinit', "#musicRecommendedPage", function () {
|
||||||
|
|
||||||
|
var page = this;
|
||||||
|
|
||||||
|
$('.recommendations', page).createCardMenus();
|
||||||
|
|
||||||
|
var tabs = page.querySelector('paper-tabs');
|
||||||
|
var pages = page.querySelector('neon-animated-pages');
|
||||||
|
|
||||||
|
var baseUrl = 'musicrecommended.html';
|
||||||
|
var topParentId = LibraryMenu.getTopParentId();
|
||||||
|
if (topParentId) {
|
||||||
|
baseUrl += '?topParentId=' + topParentId;
|
||||||
|
}
|
||||||
|
|
||||||
|
LibraryBrowser.configurePaperLibraryTabs(page, tabs, pages, baseUrl);
|
||||||
|
|
||||||
|
$(pages).on('tabchange', function () {
|
||||||
|
loadTab(page, parseInt(this.selected));
|
||||||
|
});
|
||||||
|
|
||||||
|
}).on('pageshowready', "#musicRecommendedPage", function () {
|
||||||
|
|
||||||
|
var page = this;
|
||||||
|
|
||||||
|
if (!page.getAttribute('data-title')) {
|
||||||
|
|
||||||
|
var parentId = LibraryMenu.getTopParentId();
|
||||||
|
|
||||||
|
if (parentId) {
|
||||||
|
|
||||||
|
ApiClient.getItem(Dashboard.getCurrentUserId(), parentId).done(function (item) {
|
||||||
|
|
||||||
|
page.setAttribute('data-title', item.Name);
|
||||||
|
LibraryMenu.setTitle(item.Name);
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
} else {
|
||||||
|
page.setAttribute('data-title', Globalize.translate('TabMusic'));
|
||||||
|
LibraryMenu.setTitle(Globalize.translate('TabMusic'));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -2,46 +2,47 @@
|
||||||
|
|
||||||
var defaultSortBy = "Album,SortName";
|
var defaultSortBy = "Album,SortName";
|
||||||
|
|
||||||
// The base query options
|
var data = {};
|
||||||
var query = {
|
function getPageData() {
|
||||||
|
var key = getSavedQueryKey();
|
||||||
|
var pageData = data[key];
|
||||||
|
|
||||||
|
if (!pageData) {
|
||||||
|
pageData = data[key] = {
|
||||||
|
query: {
|
||||||
SortBy: defaultSortBy,
|
SortBy: defaultSortBy,
|
||||||
SortOrder: "Ascending",
|
SortOrder: "Ascending",
|
||||||
IncludeItemTypes: "Audio",
|
IncludeItemTypes: "Audio",
|
||||||
Recursive: true,
|
Recursive: true,
|
||||||
Fields: "AudioInfo,ParentId,SyncInfo",
|
Fields: "AudioInfo,ParentId,SyncInfo",
|
||||||
Limit: 200,
|
Limit: 100,
|
||||||
StartIndex: 0,
|
StartIndex: 0,
|
||||||
ImageTypeLimit: 1,
|
ImageTypeLimit: 1,
|
||||||
EnableImageTypes: "Primary,Backdrop,Banner,Thumb"
|
EnableImageTypes: "Primary,Backdrop,Banner,Thumb"
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
pageData.query.ParentId = LibraryMenu.getTopParentId();
|
||||||
|
LibraryBrowser.loadSavedQueryValues(key, pageData.query);
|
||||||
|
}
|
||||||
|
return pageData;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getQuery() {
|
||||||
|
|
||||||
|
return getPageData().query;
|
||||||
|
}
|
||||||
|
|
||||||
function getSavedQueryKey() {
|
function getSavedQueryKey() {
|
||||||
|
|
||||||
return 'songs' + (query.ParentId || '');
|
return getWindowUrl();
|
||||||
}
|
}
|
||||||
|
|
||||||
function updateFilterControls(page) {
|
function reloadItems(page, viewPanel) {
|
||||||
|
|
||||||
// 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', this).each(function () {
|
|
||||||
|
|
||||||
this.checked = (query.SortOrder || '').toLowerCase() == this.getAttribute('data-sortorder').toLowerCase();
|
|
||||||
|
|
||||||
}).checkboxradio('refresh');
|
|
||||||
$('#selectPageSize', page).val(query.Limit).selectmenu('refresh');
|
|
||||||
}
|
|
||||||
|
|
||||||
function reloadItems(page) {
|
|
||||||
|
|
||||||
Dashboard.showLoadingMsg();
|
Dashboard.showLoadingMsg();
|
||||||
|
|
||||||
|
var query = getQuery();
|
||||||
ApiClient.getItems(Dashboard.getCurrentUserId(), query).done(function (result) {
|
ApiClient.getItems(Dashboard.getCurrentUserId(), query).done(function (result) {
|
||||||
|
|
||||||
// Scroll back up so they can see the results from the beginning
|
// Scroll back up so they can see the results from the beginning
|
||||||
|
@ -54,13 +55,13 @@
|
||||||
totalRecordCount: result.TotalRecordCount,
|
totalRecordCount: result.TotalRecordCount,
|
||||||
viewButton: true,
|
viewButton: true,
|
||||||
showLimit: false,
|
showLimit: false,
|
||||||
|
sortButton: true,
|
||||||
|
viewPanelClass: 'songsViewPanel',
|
||||||
updatePageSizeSetting: false
|
updatePageSizeSetting: false
|
||||||
});
|
});
|
||||||
|
|
||||||
page.querySelector('.listTopPaging').innerHTML = pagingHtml;
|
page.querySelector('.listTopPaging').innerHTML = pagingHtml;
|
||||||
|
|
||||||
updateFilterControls(page);
|
|
||||||
|
|
||||||
html += LibraryBrowser.getListViewHtml({
|
html += LibraryBrowser.getListViewHtml({
|
||||||
items: result.Items,
|
items: result.Items,
|
||||||
showIndex: true,
|
showIndex: true,
|
||||||
|
@ -76,40 +77,74 @@
|
||||||
|
|
||||||
$('.btnNextPage', page).on('click', function () {
|
$('.btnNextPage', page).on('click', function () {
|
||||||
query.StartIndex += query.Limit;
|
query.StartIndex += query.Limit;
|
||||||
reloadItems(page);
|
reloadItems(page, viewPanel);
|
||||||
});
|
});
|
||||||
|
|
||||||
$('.btnPreviousPage', page).on('click', function () {
|
$('.btnPreviousPage', page).on('click', function () {
|
||||||
query.StartIndex -= query.Limit;
|
query.StartIndex -= query.Limit;
|
||||||
reloadItems(page);
|
reloadItems(page, viewPanel);
|
||||||
});
|
});
|
||||||
|
|
||||||
$('.lnkColumnSort', page).on('click', function () {
|
// On callback make sure to set StartIndex = 0
|
||||||
|
$('.btnSort', page).on('click', function () {
|
||||||
var order = this.getAttribute('data-sortfield');
|
LibraryBrowser.showSortMenu({
|
||||||
|
items: [{
|
||||||
if (query.SortBy == order) {
|
name: Globalize.translate('OptionNameSort'),
|
||||||
|
id: 'SortName'
|
||||||
if (query.SortOrder == "Descending") {
|
},
|
||||||
|
{
|
||||||
query.SortOrder = "Ascending";
|
name: Globalize.translate('OptionBudget'),
|
||||||
query.SortBy = defaultSortBy;
|
id: 'Budget,SortName'
|
||||||
|
},
|
||||||
} else {
|
{
|
||||||
|
name: Globalize.translate('OptionImdbRating'),
|
||||||
query.SortOrder = "Descending";
|
id: 'CommunityRating,SortName'
|
||||||
query.SortBy = order;
|
},
|
||||||
}
|
{
|
||||||
|
name: Globalize.translate('OptionCriticRating'),
|
||||||
} else {
|
id: 'CriticRating,SortName'
|
||||||
|
},
|
||||||
query.SortOrder = "Ascending";
|
{
|
||||||
query.SortBy = order;
|
name: Globalize.translate('OptionDateAdded'),
|
||||||
}
|
id: 'DateCreated,SortName'
|
||||||
|
},
|
||||||
query.StartIndex = 0;
|
{
|
||||||
|
name: Globalize.translate('OptionDatePlayed'),
|
||||||
reloadItems(page);
|
id: 'DatePlayed,SortName'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: Globalize.translate('OptionMetascore'),
|
||||||
|
id: 'Metascore,SortName'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: Globalize.translate('OptionParentalRating'),
|
||||||
|
id: 'OfficialRating,SortName'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: Globalize.translate('OptionPlayCount'),
|
||||||
|
id: 'PlayCount,SortName'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: Globalize.translate('OptionReleaseDate'),
|
||||||
|
id: 'PremiereDate,SortName'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: Globalize.translate('OptionRevenue'),
|
||||||
|
id: 'Revenue,SortName'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: Globalize.translate('OptionRuntime'),
|
||||||
|
id: 'Runtime,SortName'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: Globalize.translate('OptionVideoBitrate'),
|
||||||
|
id: 'VideoBitRate,SortName'
|
||||||
|
}],
|
||||||
|
callback: function () {
|
||||||
|
reloadItems(page, viewPanel);
|
||||||
|
},
|
||||||
|
query: query
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
LibraryBrowser.saveQueryValues(getSavedQueryKey(), query);
|
LibraryBrowser.saveQueryValues(getSavedQueryKey(), query);
|
||||||
|
@ -119,42 +154,30 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
var filtersLoaded;
|
var filtersLoaded;
|
||||||
function reloadFiltersIfNeeded(page) {
|
function reloadFiltersIfNeeded(page, viewPanel) {
|
||||||
|
|
||||||
if (!filtersLoaded) {
|
if (!filtersLoaded) {
|
||||||
|
|
||||||
filtersLoaded = true;
|
filtersLoaded = true;
|
||||||
|
|
||||||
QueryFilters.loadFilters(page, Dashboard.getCurrentUserId(), query, function () {
|
var query = getQuery();
|
||||||
|
QueryFilters.loadFilters(viewPanel, Dashboard.getCurrentUserId(), query, function () {
|
||||||
|
|
||||||
reloadItems(page);
|
reloadItems(page, viewPanel);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$(document).on('pageinit', "#songsPage", function () {
|
function initPage(tabContent, viewPanel) {
|
||||||
|
|
||||||
var page = this;
|
$(viewPanel).on('panelopen', function () {
|
||||||
|
|
||||||
$('.viewPanel', page).on('panelopen', function () {
|
reloadFiltersIfNeeded(tabContent, viewPanel);
|
||||||
|
|
||||||
reloadFiltersIfNeeded(page);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
$('.radioSortBy', this).on('click', function () {
|
$('.chkStandardFilter', viewPanel).on('change', 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 query = getQuery();
|
||||||
var filterName = this.getAttribute('data-filter');
|
var filterName = this.getAttribute('data-filter');
|
||||||
var filters = query.Filters || "";
|
var filters = query.Filters || "";
|
||||||
|
|
||||||
|
@ -167,28 +190,22 @@
|
||||||
query.StartIndex = 0;
|
query.StartIndex = 0;
|
||||||
query.Filters = filters;
|
query.Filters = filters;
|
||||||
|
|
||||||
reloadItems(page);
|
reloadItems(tabContent, viewPanel);
|
||||||
});
|
});
|
||||||
|
}
|
||||||
|
|
||||||
$('#selectPageSize', page).on('change', function () {
|
window.MusicPage.initSongsTab = function (page, tabContent) {
|
||||||
query.Limit = parseInt(this.value);
|
|
||||||
query.StartIndex = 0;
|
|
||||||
reloadItems(page);
|
|
||||||
});
|
|
||||||
|
|
||||||
}).on('pagebeforeshow', "#songsPage", function () {
|
var viewPanel = page.querySelector('.songsViewPanel');
|
||||||
|
initPage(tabContent, viewPanel);
|
||||||
|
};
|
||||||
|
|
||||||
var page = this;
|
window.MusicPage.renderSongsTab = function (page, tabContent) {
|
||||||
|
|
||||||
query.ParentId = LibraryMenu.getTopParentId();
|
if (LibraryBrowser.needsRefresh(tabContent)) {
|
||||||
|
var viewPanel = page.querySelector('.songsViewPanel');
|
||||||
LibraryBrowser.loadSavedQueryValues(getSavedQueryKey(), query);
|
reloadItems(tabContent, viewPanel);
|
||||||
QueryFilters.onPageShow(page, query);
|
}
|
||||||
|
};
|
||||||
reloadItems(page);
|
|
||||||
|
|
||||||
updateFilterControls(this);
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
})(jQuery, document);
|
})(jQuery, document);
|
|
@ -1,141 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<title>Emby</title>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div id="songsPage" data-role="page" class="page libraryPage backdropPage" data-backdroptype="musicartist" data-require="scripts/songs,scripts/queryfilters">
|
|
||||||
<div class="libraryViewNav scopedLibraryViewNav">
|
|
||||||
<a href="musicrecommended.html"><iron-icon icon="info"></iron-icon>${TabSuggestions}</a>
|
|
||||||
<a href="musicalbums.html"><iron-icon icon="album"></iron-icon>${TabAlbums}</a>
|
|
||||||
<a href="musicalbumartists.html"><iron-icon icon="music-note"></iron-icon>${TabAlbumArtists}</a>
|
|
||||||
<a href="musicartists.html" class="musicArtistsTab"><iron-icon icon="music-note"></iron-icon>${TabArtists}</a>
|
|
||||||
<a href="#" class="ui-btn-active"><iron-icon icon="music-note"></iron-icon>${TabSongs}</a>
|
|
||||||
<a href="musicgenres.html"><iron-icon icon="library-music"></iron-icon>${TabGenres}</a>
|
|
||||||
</div>
|
|
||||||
<div data-role="content">
|
|
||||||
<div class="viewSettings">
|
|
||||||
<div class="listTopPaging">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div id="items" class="itemsContainer" style="max-width:1000px;margin: 0 auto;"></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div data-role="panel" class="viewPanel" data-theme="a" data-position="right" data-display="overlay" data-position-fixed="true">
|
|
||||||
<form>
|
|
||||||
|
|
||||||
<div data-role="controlgroup" data-type="horizontal" data-mini="true" class="viewPanelTabs">
|
|
||||||
<a href="#" data-role="button" class="viewTabButton" data-tab="tabView">${TabView}</a>
|
|
||||||
<a href="#" data-role="button" class="viewTabButton" data-tab="tabSort">${TabSort}</a>
|
|
||||||
<a href="#" data-role="button" class="viewTabButton" data-tab="tabFilter">${TabFilter}</a>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="tabView viewTab">
|
|
||||||
|
|
||||||
<div>
|
|
||||||
<label for="selectPageSize">${LabelPageSize}</label>
|
|
||||||
<select id="selectPageSize" class="selectPageSize"></select>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div class="tabFilter viewTab">
|
|
||||||
<fieldset data-role="controlgroup">
|
|
||||||
<legend>${HeaderFilters}</legend>
|
|
||||||
<input class="chkStandardFilter" type="checkbox" name="chkPlayed" id="chkPlayed" data-filter="IsPlayed" data-mini="true">
|
|
||||||
<label for="chkPlayed">${OptionPlayed}</label>
|
|
||||||
|
|
||||||
<input class="chkStandardFilter" type="checkbox" name="chkUnplayed" id="chkUnplayed" data-filter="IsUnPlayed" data-mini="true">
|
|
||||||
<label for="chkUnplayed">${OptionUnplayed}</label>
|
|
||||||
|
|
||||||
<input class="chkStandardFilter" type="checkbox" name="chkIsFavorite" id="chkIsFavorite" data-filter="IsFavorite" data-mini="true">
|
|
||||||
<label for="chkIsFavorite">${OptionFavorite}</label>
|
|
||||||
|
|
||||||
<input class="chkStandardFilter" type="checkbox" name="chkLikes" id="chkLikes" data-filter="Likes" data-mini="true">
|
|
||||||
<label for="chkLikes">${OptionLikes}</label>
|
|
||||||
|
|
||||||
<input class="chkStandardFilter" type="checkbox" name="chkDislikes" id="chkDislikes" data-filter="Dislikes" data-mini="true">
|
|
||||||
<label for="chkDislikes">${OptionDislikes}</label>
|
|
||||||
|
|
||||||
</fieldset>
|
|
||||||
<br />
|
|
||||||
|
|
||||||
<div data-role="collapsible" data-collapsed="true" data-mini="true" class="genreFilters">
|
|
||||||
<h2>${HeaderGenres}</h2>
|
|
||||||
|
|
||||||
<div class="filterOptions">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div data-role="collapsible" data-collapsed="true" data-mini="true" class="officialRatingFilters">
|
|
||||||
<h2>${HeaderParentalRatings}</h2>
|
|
||||||
|
|
||||||
<div class="filterOptions">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div data-role="collapsible" data-collapsed="true" data-mini="true" class="tagFilters">
|
|
||||||
<h2>${HeaderTags}</h2>
|
|
||||||
|
|
||||||
<div class="filterOptions">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div data-role="collapsible" data-collapsed="true" data-mini="true" class="yearFilters">
|
|
||||||
<h2>${HeaderYears}</h2>
|
|
||||||
|
|
||||||
<div class="filterOptions">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div class="tabSort viewTab">
|
|
||||||
<fieldset data-role="controlgroup">
|
|
||||||
<legend>
|
|
||||||
${HeaderSortBy}
|
|
||||||
</legend>
|
|
||||||
|
|
||||||
<input class="radioSortBy" type="radio" name="radioSortBy" id="radioName" value="on" checked="checked" data-sortby="Name" data-mini="true">
|
|
||||||
<label for="radioName">${OptionTrackName}</label>
|
|
||||||
|
|
||||||
<input class="radioSortBy defaultSort" type="radio" name="radioSortBy" id="radioAlbum" value="on" checked="checked" data-sortby="Album,SortName" data-mini="true">
|
|
||||||
<label for="radioAlbum">${OptionAlbum}</label>
|
|
||||||
|
|
||||||
<input class="radioSortBy" type="radio" name="radioSortBy" id="radioAlbumArtist" value="on" data-sortby="AlbumArtist,Album,SortName" data-mini="true">
|
|
||||||
<label for="radioAlbumArtist">${OptionAlbumArtist}</label>
|
|
||||||
|
|
||||||
<input class="radioSortBy" type="radio" name="radioSortBy" id="radioArtist" value="on" data-sortby="Artist,Album,SortName" data-mini="true">
|
|
||||||
<label for="radioArtist">${OptionArtist}</label>
|
|
||||||
|
|
||||||
<input class="radioSortBy" type="radio" name="radioSortBy" id="radioDateCreated" value="off" data-sortby="DateCreated,AlbumArtist,Album,SortName" data-mini="true">
|
|
||||||
<label for="radioDateCreated">${OptionDateAdded}</label>
|
|
||||||
|
|
||||||
<input class="radioSortBy" type="radio" name="radioSortBy" id="radioDatePlayed" value="off" data-sortby="DatePlayed,AlbumArtist,Album,SortName" data-mini="true">
|
|
||||||
<label for="radioDatePlayed">${OptionDatePlayed}</label>
|
|
||||||
|
|
||||||
<input class="radioSortBy" type="radio" name="radioSortBy" id="radioPlayCount" value="off" data-sortby="PlayCount,AlbumArtist,Album,SortName" data-mini="true">
|
|
||||||
<label for="radioPlayCount">${OptionPlayCount}</label>
|
|
||||||
|
|
||||||
<input class="radioSortBy" type="radio" name="radioSortBy" id="radioPremiereDate" value="off" data-sortby="PremiereDate,AlbumArtist,Album,SortName" data-mini="true">
|
|
||||||
<label for="radioPremiereDate">${OptionReleaseDate}</label>
|
|
||||||
|
|
||||||
<input class="radioSortBy" type="radio" name="radioSortBy" id="radioRuntime" value="off" data-sortby="Runtime,AlbumArtist,Album,SortName" data-mini="true">
|
|
||||||
<label for="radioRuntime">${OptionRuntime}</label>
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
<fieldset data-role="controlgroup">
|
|
||||||
<legend>
|
|
||||||
${HeaderSortOrder}
|
|
||||||
</legend>
|
|
||||||
|
|
||||||
<input class="radioSortOrder" type="radio" name="radioSortOrder" id="radioAscending" value="on" checked="checked" data-sortorder="Ascending" data-mini="true">
|
|
||||||
<label for="radioAscending">${OptionAscending}</label>
|
|
||||||
|
|
||||||
<input class="radioSortOrder" type="radio" name="radioSortOrder" id="radioDescending" value="off" data-sortorder="Descending" data-mini="true">
|
|
||||||
<label for="radioDescending">${OptionDescending}</label>
|
|
||||||
</fieldset>
|
|
||||||
</div>
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -67,7 +67,7 @@
|
||||||
currentOptions.history = currentOptions.history && $.mobile.ajaxEnabled && $.mobile.hashListeningEnabled;
|
currentOptions.history = currentOptions.history && $.mobile.ajaxEnabled && $.mobile.hashListeningEnabled;
|
||||||
|
|
||||||
this._on(this.document, {
|
this._on(this.document, {
|
||||||
"vmousedown": "_handleDocumentVmousedown"
|
"mousedown": "_handleDocumentVmousedown"
|
||||||
});
|
});
|
||||||
|
|
||||||
// Define instance variables
|
// Define instance variables
|
||||||
|
@ -104,7 +104,7 @@
|
||||||
._ui.focusElement = this._ui.container;
|
._ui.focusElement = this._ui.container;
|
||||||
|
|
||||||
// Event handlers
|
// Event handlers
|
||||||
this._on(this._ui.screen, { "vclick": "_eatEventAndClose" });
|
this._on(this._ui.screen, { "click": "_eatEventAndClose" });
|
||||||
this._on(this.window, {
|
this._on(this.window, {
|
||||||
orientationchange: $.proxy(this, "_handleWindowOrientationchange"),
|
orientationchange: $.proxy(this, "_handleWindowOrientationchange"),
|
||||||
resize: $.proxy(this, "_handleWindowResize"),
|
resize: $.proxy(this, "_handleWindowResize"),
|
||||||
|
|
|
@ -135,7 +135,7 @@
|
||||||
});
|
});
|
||||||
|
|
||||||
slider.bind("vmousedown", $.proxy(this._sliderVMouseDown, this))
|
slider.bind("vmousedown", $.proxy(this._sliderVMouseDown, this))
|
||||||
.bind("vclick", false);
|
.bind("click", false);
|
||||||
|
|
||||||
// We have to instantiate a new function object for the unbind to work properly
|
// We have to instantiate a new function object for the unbind to work properly
|
||||||
// since the method itself is defined in the prototype (causing it to unbind everything)
|
// since the method itself is defined in the prototype (causing it to unbind everything)
|
||||||
|
@ -158,7 +158,7 @@
|
||||||
"keyup": "_handleKeyup"
|
"keyup": "_handleKeyup"
|
||||||
});
|
});
|
||||||
|
|
||||||
this.handle.bind("vclick", false);
|
this.handle.bind("click", false);
|
||||||
|
|
||||||
this._handleFormReset();
|
this._handleFormReset();
|
||||||
|
|
||||||
|
|
File diff suppressed because it is too large
Load diff
Loading…
Add table
Add a link
Reference in a new issue