mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
update people queries
This commit is contained in:
parent
99768ecffe
commit
17a0f1578d
22 changed files with 215 additions and 123 deletions
|
@ -1440,7 +1440,6 @@
|
|||
|
||||
//$.mobile.urlHistory.ignoreNextHashChange = true;
|
||||
window.location.hash = 'editItemMetadataPage?id=' + data.id;
|
||||
alert(window.location.href);
|
||||
reload(page);
|
||||
}
|
||||
});
|
||||
|
|
|
@ -64,7 +64,7 @@
|
|||
|
||||
} else {
|
||||
|
||||
elem.empty();
|
||||
elem.innerHTML = '';
|
||||
|
||||
var deferred = DeferredBuilder.Deferred();
|
||||
deferred.resolve();
|
||||
|
|
|
@ -494,7 +494,7 @@
|
|||
var mediaType = card.getAttribute('data-mediatype');
|
||||
var resumePosition = parseInt(card.getAttribute('data-resumeposition'));
|
||||
|
||||
if (type == 'MusicAlbum' || type == 'MusicArtist' || type == 'MusicGenre') {
|
||||
if (type == 'MusicAlbum' || type == 'MusicArtist' || type == 'MusicGenre' || type == 'Playlist') {
|
||||
isFolder = true;
|
||||
}
|
||||
|
||||
|
|
|
@ -153,6 +153,15 @@
|
|||
//});
|
||||
}
|
||||
|
||||
var directPlayVideoContainers = AppInfo.directPlayVideoContainers;
|
||||
|
||||
if (directPlayVideoContainers && directPlayVideoContainers.length) {
|
||||
profile.DirectPlayProfiles.push({
|
||||
Container: directPlayVideoContainers.join(','),
|
||||
Type: 'Video'
|
||||
});
|
||||
}
|
||||
|
||||
profile.DirectPlayProfiles.push({
|
||||
Container: 'mp3',
|
||||
Type: 'Audio'
|
||||
|
@ -300,23 +309,27 @@
|
|||
}]
|
||||
});
|
||||
|
||||
profile.CodecProfiles.push({
|
||||
Type: 'VideoAudio',
|
||||
Codec: 'aac',
|
||||
Container: 'mkv,mov',
|
||||
Conditions: [
|
||||
{
|
||||
Condition: 'NotEquals',
|
||||
Property: 'AudioProfile',
|
||||
Value: 'HE-AAC'
|
||||
},
|
||||
{
|
||||
Condition: 'NotEquals',
|
||||
Property: 'AudioProfile',
|
||||
Value: 'LC'
|
||||
}
|
||||
]
|
||||
});
|
||||
var isVlc = AppInfo.isNativeApp && $.browser.android;
|
||||
|
||||
if (!isVlc) {
|
||||
profile.CodecProfiles.push({
|
||||
Type: 'VideoAudio',
|
||||
Codec: 'aac',
|
||||
Container: 'mkv,mov',
|
||||
Conditions: [
|
||||
{
|
||||
Condition: 'NotEquals',
|
||||
Property: 'AudioProfile',
|
||||
Value: 'HE-AAC'
|
||||
},
|
||||
{
|
||||
Condition: 'NotEquals',
|
||||
Property: 'AudioProfile',
|
||||
Value: 'LC'
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
|
||||
profile.CodecProfiles.push({
|
||||
Type: 'VideoAudio',
|
||||
|
@ -330,49 +343,69 @@
|
|||
]
|
||||
});
|
||||
|
||||
profile.CodecProfiles.push({
|
||||
Type: 'Video',
|
||||
Codec: 'h264',
|
||||
Conditions: [
|
||||
{
|
||||
Condition: 'NotEquals',
|
||||
Property: 'IsAnamorphic',
|
||||
Value: 'true',
|
||||
IsRequired: false
|
||||
},
|
||||
{
|
||||
Condition: 'EqualsAny',
|
||||
Property: 'VideoProfile',
|
||||
Value: 'high|main|baseline|constrained baseline'
|
||||
},
|
||||
{
|
||||
Condition: 'LessThanEqual',
|
||||
Property: 'VideoLevel',
|
||||
Value: '41'
|
||||
},
|
||||
{
|
||||
Condition: 'LessThanEqual',
|
||||
Property: 'Height',
|
||||
Value: maxHeight
|
||||
}]
|
||||
});
|
||||
if (isVlc) {
|
||||
profile.CodecProfiles.push({
|
||||
Type: 'Video',
|
||||
Codec: 'h264',
|
||||
Conditions: [
|
||||
{
|
||||
Condition: 'EqualsAny',
|
||||
Property: 'VideoProfile',
|
||||
Value: 'high|main|baseline|constrained baseline'
|
||||
},
|
||||
{
|
||||
Condition: 'LessThanEqual',
|
||||
Property: 'VideoLevel',
|
||||
Value: '41'
|
||||
}]
|
||||
});
|
||||
} else {
|
||||
profile.CodecProfiles.push({
|
||||
Type: 'Video',
|
||||
Codec: 'h264',
|
||||
Conditions: [
|
||||
{
|
||||
Condition: 'NotEquals',
|
||||
Property: 'IsAnamorphic',
|
||||
Value: 'true',
|
||||
IsRequired: false
|
||||
},
|
||||
{
|
||||
Condition: 'EqualsAny',
|
||||
Property: 'VideoProfile',
|
||||
Value: 'high|main|baseline|constrained baseline'
|
||||
},
|
||||
{
|
||||
Condition: 'LessThanEqual',
|
||||
Property: 'VideoLevel',
|
||||
Value: '41'
|
||||
},
|
||||
{
|
||||
Condition: 'LessThanEqual',
|
||||
Property: 'Height',
|
||||
Value: maxHeight
|
||||
}]
|
||||
});
|
||||
}
|
||||
|
||||
profile.CodecProfiles.push({
|
||||
Type: 'Video',
|
||||
Codec: 'vpx',
|
||||
Conditions: [
|
||||
{
|
||||
Condition: 'NotEquals',
|
||||
Property: 'IsAnamorphic',
|
||||
Value: 'true',
|
||||
IsRequired: false
|
||||
},
|
||||
{
|
||||
Condition: 'LessThanEqual',
|
||||
Property: 'Height',
|
||||
Value: maxHeight
|
||||
}]
|
||||
});
|
||||
if (!isVlc) {
|
||||
profile.CodecProfiles.push({
|
||||
Type: 'Video',
|
||||
Codec: 'vpx',
|
||||
Conditions: [
|
||||
{
|
||||
Condition: 'NotEquals',
|
||||
Property: 'IsAnamorphic',
|
||||
Value: 'true',
|
||||
IsRequired: false
|
||||
},
|
||||
{
|
||||
Condition: 'LessThanEqual',
|
||||
Property: 'Height',
|
||||
Value: maxHeight
|
||||
}]
|
||||
});
|
||||
}
|
||||
|
||||
// Subtitle profiles
|
||||
// External vtt or burn in
|
||||
|
@ -483,6 +516,10 @@
|
|||
// }
|
||||
//}
|
||||
|
||||
if ($.browser.android && AppInfo.isNativeApp) {
|
||||
return true;
|
||||
}
|
||||
|
||||
var media = document.createElement('video');
|
||||
|
||||
// safari
|
||||
|
@ -501,7 +538,7 @@
|
|||
}
|
||||
|
||||
if ($.browser.chrome) {
|
||||
|
||||
|
||||
// viblast can help us here
|
||||
//return true;
|
||||
//return window.MediaSource != null;
|
||||
|
@ -572,13 +609,13 @@
|
|||
|
||||
Events.off(mediaRenderer, 'ended', self.onPlaybackStopped);
|
||||
Events.off(mediaRenderer, 'ended', self.playNextAfterEnded);
|
||||
|
||||
|
||||
$(mediaRenderer).one("play", function () {
|
||||
|
||||
self.updateCanClientSeek(this);
|
||||
|
||||
Events.on(this, 'ended', self.onPlaybackStopped);
|
||||
|
||||
|
||||
$(this).one('ended', self.playNextAfterEnded);
|
||||
|
||||
self.startProgressInterval();
|
||||
|
@ -1381,7 +1418,7 @@
|
|||
|
||||
Events.off(mediaRenderer, 'ended', self.playNextAfterEnded);
|
||||
|
||||
$(mediaRenderer).one("ended", function() {
|
||||
$(mediaRenderer).one("ended", function () {
|
||||
|
||||
$(this).off('.mediaplayerevent');
|
||||
|
||||
|
@ -1392,7 +1429,7 @@
|
|||
self.currentMediaSource = null;
|
||||
|
||||
});
|
||||
|
||||
|
||||
Events.trigger(mediaRenderer, "ended");
|
||||
|
||||
} else {
|
||||
|
@ -1588,7 +1625,7 @@
|
|||
var mediaRenderer = this;
|
||||
|
||||
Events.off(mediaRenderer, '.mediaplayerevent');
|
||||
|
||||
|
||||
Events.off(mediaRenderer, 'ended', self.onPlaybackStopped);
|
||||
|
||||
var item = self.currentItem;
|
||||
|
@ -1654,7 +1691,7 @@
|
|||
self.canPlayWebm = function () {
|
||||
|
||||
if (self._canPlayWebm == null) {
|
||||
self._canPlayWebm = document.createElement('video').canPlayType('video/webm').replace(/no/, '');
|
||||
self._canPlayWebm = ($.browser.android && AppInfo.isNativeApp) || document.createElement('video').canPlayType('video/webm').replace(/no/, '');
|
||||
}
|
||||
return self._canPlayWebm;
|
||||
};
|
||||
|
@ -1705,7 +1742,7 @@
|
|||
mediaRenderer.setPoster(self.getPosterUrl(item));
|
||||
mediaRenderer.setCurrentSrc(audioUrl, item, mediaSource);
|
||||
|
||||
Events.on(mediaRenderer, "volumechange.mediaplayerevent", function() {
|
||||
Events.on(mediaRenderer, "volumechange.mediaplayerevent", function () {
|
||||
|
||||
Logger.log('audio element event: volumechange');
|
||||
|
||||
|
|
|
@ -15,15 +15,45 @@
|
|||
EnableImageTypes: "Primary,Backdrop,Banner,Thumb"
|
||||
};
|
||||
|
||||
var data = {};
|
||||
|
||||
function getQuery() {
|
||||
|
||||
var key = getSavedQueryKey();
|
||||
var pageData = data[key];
|
||||
|
||||
if (!pageData) {
|
||||
pageData = data[key] = {
|
||||
query: {
|
||||
SortBy: "AlbumArtist,SortName",
|
||||
SortOrder: "Ascending",
|
||||
IncludeItemTypes: "MusicAlbum",
|
||||
Recursive: true,
|
||||
Fields: "PrimaryImageAspectRatio,SortName,SyncInfo",
|
||||
StartIndex: 0,
|
||||
ImageTypeLimit: 1,
|
||||
EnableImageTypes: "Primary,Backdrop,Banner,Thumb",
|
||||
Limit: LibraryBrowser.getDefaultPageSize()
|
||||
}
|
||||
};
|
||||
|
||||
pageData.query.ParentId = LibraryMenu.getTopParentId();
|
||||
LibraryBrowser.loadSavedQueryValues(key, pageData.query);
|
||||
}
|
||||
return pageData.query;
|
||||
}
|
||||
|
||||
function getSavedQueryKey() {
|
||||
|
||||
return 'musicalbums' + (query.ParentId || '');
|
||||
return getWindowUrl();
|
||||
}
|
||||
|
||||
function reloadItems(page) {
|
||||
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
var query = getQuery();
|
||||
|
||||
ApiClient.getItems(Dashboard.getCurrentUserId(), query).done(function (result) {
|
||||
|
||||
// Scroll back up so they can see the results from the beginning
|
||||
|
@ -109,13 +139,15 @@
|
|||
});
|
||||
|
||||
LibraryBrowser.saveQueryValues(getSavedQueryKey(), query);
|
||||
|
||||
LibraryBrowser.setLastRefreshed(page);
|
||||
Dashboard.hideLoadingMsg();
|
||||
});
|
||||
}
|
||||
|
||||
function updateFilterControls(page) {
|
||||
|
||||
var query = getQuery();
|
||||
|
||||
$('#selectView', page).val(view).selectmenu('refresh');
|
||||
|
||||
// Reset form values using the last used query
|
||||
|
@ -142,6 +174,8 @@
|
|||
|
||||
filtersLoaded = true;
|
||||
|
||||
var query = getQuery();
|
||||
|
||||
QueryFilters.loadFilters(page, Dashboard.getCurrentUserId(), query, function () {
|
||||
|
||||
reloadItems(page);
|
||||
|
@ -159,6 +193,8 @@
|
|||
});
|
||||
|
||||
$('.radioSortBy', page).on('click', function () {
|
||||
var query = getQuery();
|
||||
|
||||
query.SortBy = this.getAttribute('data-sortby');
|
||||
query.StartIndex = 0;
|
||||
|
||||
|
@ -171,6 +207,8 @@
|
|||
});
|
||||
|
||||
$('.radioSortOrder', page).on('click', function () {
|
||||
var query = getQuery();
|
||||
|
||||
query.SortOrder = this.getAttribute('data-sortorder');
|
||||
query.StartIndex = 0;
|
||||
|
||||
|
@ -183,6 +221,7 @@
|
|||
});
|
||||
|
||||
$('.chkStandardFilter', page).on('change', function () {
|
||||
var query = getQuery();
|
||||
|
||||
var filterName = this.getAttribute('data-filter');
|
||||
var filters = query.Filters || "";
|
||||
|
@ -203,6 +242,8 @@
|
|||
|
||||
view = this.value;
|
||||
|
||||
var query = getQuery();
|
||||
|
||||
if (view == "Timeline") {
|
||||
|
||||
query.SortBy = "PremiereDate";
|
||||
|
@ -218,6 +259,8 @@
|
|||
|
||||
$('.alphabetPicker', page).on('alphaselect', function (e, character) {
|
||||
|
||||
var query = getQuery();
|
||||
|
||||
if (query.SortBy.indexOf('AlbumArtist') == -1) {
|
||||
query.NameStartsWithOrGreater = character;
|
||||
query.AlbumArtistStartsWithOrGreater = '';
|
||||
|
@ -232,6 +275,8 @@
|
|||
|
||||
}).on('alphaclear', function (e) {
|
||||
|
||||
var query = getQuery();
|
||||
|
||||
query.NameStartsWithOrGreater = '';
|
||||
query.AlbumArtistStartsWithOrGreater = '';
|
||||
|
||||
|
@ -239,6 +284,8 @@
|
|||
});
|
||||
|
||||
$('#selectPageSize', page).on('change', function () {
|
||||
var query = getQuery();
|
||||
|
||||
query.Limit = parseInt(this.value);
|
||||
query.StartIndex = 0;
|
||||
reloadItems(page);
|
||||
|
@ -246,29 +293,22 @@
|
|||
|
||||
}).on('pagebeforeshowready', "#musicAlbumsPage", function () {
|
||||
|
||||
query.ParentId = LibraryMenu.getTopParentId();
|
||||
|
||||
var page = this;
|
||||
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;
|
||||
}
|
||||
|
||||
var viewKey = getSavedQueryKey();
|
||||
LibraryBrowser.loadSavedQueryValues(viewKey, query);
|
||||
QueryFilters.onPageShow(page, query);
|
||||
|
||||
LibraryBrowser.getSavedViewSetting(viewKey).done(function (val) {
|
||||
if (LibraryBrowser.needsRefresh(page)) {
|
||||
LibraryBrowser.getSavedViewSetting(viewKey).done(function (val) {
|
||||
|
||||
if (val) {
|
||||
$('#selectView', page).val(val).selectmenu('refresh').trigger('change');
|
||||
} else {
|
||||
reloadItems(page);
|
||||
}
|
||||
});
|
||||
if (val) {
|
||||
$('#selectView', page).val(val).selectmenu('refresh').trigger('change');
|
||||
} else {
|
||||
reloadItems(page);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
updateFilterControls(this);
|
||||
});
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
(function ($, document) {
|
||||
|
||||
var view = LibraryBrowser.getDefaultItemsView('PosterCard', 'PosterCard');
|
||||
var view = LibraryBrowser.getDefaultItemsView('Poster', 'Poster');
|
||||
|
||||
// The base query options
|
||||
var query = {
|
||||
|
@ -78,6 +78,19 @@
|
|||
cardLayout: true
|
||||
});
|
||||
}
|
||||
else if (view == "Poster") {
|
||||
html = LibraryBrowser.getPosterViewHtml({
|
||||
items: result.Items,
|
||||
shape: "square",
|
||||
context: 'playlists',
|
||||
showTitle: true,
|
||||
lazy: true,
|
||||
coverImage: true,
|
||||
showItemCounts: true,
|
||||
centerText: true,
|
||||
overlayPlayButton: true
|
||||
});
|
||||
}
|
||||
|
||||
$('.noItemsMessage', page).hide();
|
||||
|
||||
|
|
|
@ -1721,8 +1721,10 @@ var AppInfo = {};
|
|||
|
||||
if (isCordova && isAndroid) {
|
||||
AppInfo.directPlayAudioContainers = ['aac', 'mp3', 'ogg', 'flac', 'wma', 'm4a', 'oga'];
|
||||
AppInfo.directPlayVideoContainers = ['mkv', 'mp4', 'mov', 'm4v', 'avi', 'flv', 'wmv', 'webm'];
|
||||
} else {
|
||||
AppInfo.directPlayAudioContainers = [];
|
||||
AppInfo.directPlayVideoContainers = [];
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2061,7 +2063,9 @@ var AppInfo = {};
|
|||
|
||||
function initCordovaWithDeviceId(deferred, deviceId) {
|
||||
|
||||
require(['cordova/imagestore']);
|
||||
if ($.browser.android) {
|
||||
require(['cordova/imagestore']);
|
||||
}
|
||||
|
||||
var capablities = Dashboard.capabilities();
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue