1
0
Fork 0
mirror of https://github.com/jellyfin/jellyfin-web synced 2025-03-30 19:56:21 +00:00

support IntersectionObserver

This commit is contained in:
Luke Pulverenti 2016-05-19 13:27:39 -04:00
parent 48058e8fff
commit b5883925e7
14 changed files with 165 additions and 181 deletions

View file

@ -16,12 +16,12 @@
},
"devDependencies": {},
"ignore": [],
"version": "1.3.48",
"_release": "1.3.48",
"version": "1.3.49",
"_release": "1.3.49",
"_resolution": {
"type": "version",
"tag": "1.3.48",
"commit": "0764e35340e4625a5af560b2f46468646a7d9d10"
"tag": "1.3.49",
"commit": "9838b499815bcaf95d4d50c4476c3b95173ffc30"
},
"_source": "https://github.com/MediaBrowser/emby-webcomponents.git",
"_target": "^1.2.0",

View file

@ -1,4 +1,4 @@
define(['visibleinviewport', 'imageFetcher', 'layoutManager', 'events'], function (visibleinviewport, imageFetcher, layoutManager, events) {
define(['visibleinviewport', 'imageFetcher', 'layoutManager', 'events', 'browser'], function (visibleinviewport, imageFetcher, layoutManager, events, browser) {
var thresholdX;
var thresholdY;
@ -119,13 +119,29 @@ define(['visibleinviewport', 'imageFetcher', 'layoutManager', 'events'], functio
}
}
var supportsIntersectionObserver = function () {
if (window.IntersectionObserver) {
// The api exists in chrome 50 but doesn't work
if (browser.chrome) {
var version = parseInt(browser.version.split('.')[0]);
return version >= 51;
}
return true;
}
return false;
}();
function unveilElements(images) {
if (!images.length) {
return;
}
if (window.IntersectionObserver) {
if (supportsIntersectionObserver) {
unveilWithIntersection(images);
return;
}

View file

@ -30,14 +30,14 @@
"web-component-tester": "polymer/web-component-tester#^3.4.0"
},
"ignore": [],
"homepage": "https://github.com/PolymerElements/iron-a11y-announcer",
"homepage": "https://github.com/polymerelements/iron-a11y-announcer",
"_release": "1.0.4",
"_resolution": {
"type": "version",
"tag": "v1.0.4",
"commit": "5ce3eb8c4282bb53cd72e348858dc6be6b4c50b9"
},
"_source": "git://github.com/PolymerElements/iron-a11y-announcer.git",
"_source": "git://github.com/polymerelements/iron-a11y-announcer.git",
"_target": "^1.0.0",
"_originalSource": "PolymerElements/iron-a11y-announcer"
"_originalSource": "polymerelements/iron-a11y-announcer"
}

View file

@ -36,7 +36,7 @@
"tag": "v1.5.2",
"commit": "18e8e12dcd9a4560de480562f65935feed334b86"
},
"_source": "git://github.com/polymerelements/iron-selector.git",
"_source": "git://github.com/PolymerElements/iron-selector.git",
"_target": "^1.0.0",
"_originalSource": "polymerelements/iron-selector"
"_originalSource": "PolymerElements/iron-selector"
}

View file

@ -45,7 +45,7 @@
"tag": "v1.0.11",
"commit": "e3c1ab0c72905b58fb4d9adc2921ea73b5c085a5"
},
"_source": "git://github.com/PolymerElements/paper-behaviors.git",
"_source": "git://github.com/polymerelements/paper-behaviors.git",
"_target": "^1.0.0",
"_originalSource": "PolymerElements/paper-behaviors"
"_originalSource": "polymerelements/paper-behaviors"
}

View file

@ -32,14 +32,14 @@
"iron-test-helpers": "PolymerElements/iron-test-helpers#^1.0.0"
},
"ignore": [],
"homepage": "https://github.com/PolymerElements/paper-ripple",
"homepage": "https://github.com/polymerelements/paper-ripple",
"_release": "1.0.5",
"_resolution": {
"type": "version",
"tag": "v1.0.5",
"commit": "d72e7a9a8ab518b901ed18dde492df3b87a93be5"
},
"_source": "git://github.com/PolymerElements/paper-ripple.git",
"_source": "git://github.com/polymerelements/paper-ripple.git",
"_target": "^1.0.0",
"_originalSource": "PolymerElements/paper-ripple"
"_originalSource": "polymerelements/paper-ripple"
}

View file

@ -34,6 +34,6 @@
"commit": "11c987b2eb3c73b388a79fc8aaea8ca01624f514"
},
"_source": "git://github.com/Polymer/polymer.git",
"_target": "^1.1.0",
"_target": "^1.0.0",
"_originalSource": "Polymer/polymer"
}

View file

@ -1,4 +1,4 @@
<div id="itemDetailPage" data-role="page" class="page libraryPage itemDetailPage noSecondaryNavPage selfBackdropPage" data-theme="b" data-require="scripts/itemdetailpage,tileitemcss,scripts/livetvcomponents,paper-fab,paper-item-body,paper-icon-item,paper-button,paper-icon-button-light">
<div id="itemDetailPage" data-role="page" class="page libraryPage itemDetailPage noSecondaryNavPage selfBackdropPage" data-theme="b">
<div id="itemBackdrop" class="itemBackdrop noBackdrop">
<div class="itemBackdropContent">

View file

@ -10,7 +10,7 @@
UserId: Dashboard.getCurrentUserId(),
ImageTypeLimit: 1,
EnableImageTypes: "Primary,Backdrop,Banner,Thumb",
EnableTotalRecordCount: 0
EnableTotalRecordCount: false
};
ApiClient.getJSON(ApiClient.getUrl("Shows/Upcoming", query)).then(function (result) {

View file

@ -2,33 +2,33 @@
var currentItem;
function getPromise() {
function getPromise(params) {
var id = getParameterByName('id');
var id = params.id;
if (id) {
return ApiClient.getItem(Dashboard.getCurrentUserId(), id);
}
var name = getParameterByName('genre');
var name = params.genre;
if (name) {
return ApiClient.getGenre(name, Dashboard.getCurrentUserId());
}
name = getParameterByName('musicgenre');
name = params.musicgenre;
if (name) {
return ApiClient.getMusicGenre(name, Dashboard.getCurrentUserId());
}
name = getParameterByName('gamegenre');
name = params.gamegenre;
if (name) {
return ApiClient.getGameGenre(name, Dashboard.getCurrentUserId());
}
name = getParameterByName('musicartist');
name = params.musicartist;
if (name) {
return ApiClient.getArtist(name, Dashboard.getCurrentUserId());
@ -38,21 +38,21 @@
}
}
function reload(page) {
function reload(page, params) {
Dashboard.showLoadingMsg();
getPromise().then(function (item) {
getPromise(params).then(function (item) {
reloadFromItem(page, item);
reloadFromItem(page, params, item);
});
}
function reloadFromItem(page, item) {
function reloadFromItem(page, params, item) {
currentItem = item;
var context = getContext(item);
var context = params.context;
LibraryMenu.setBackButtonVisible(true);
LibraryMenu.setMenuButtonVisible(false);
@ -300,11 +300,6 @@
}
function getContext(item) {
return getParameterByName('context');
}
function renderNextUp(page, item, user) {
var section = page.querySelector('.nextUpSection');
@ -1935,9 +1930,7 @@
});
}
function splitVersions(page) {
var id = getParameterByName('id');
function splitVersions(page, params) {
require(['confirm'], function (confirm) {
@ -1947,13 +1940,13 @@
ApiClient.ajax({
type: "DELETE",
url: ApiClient.getUrl("Videos/" + id + "/AlternateSources")
url: ApiClient.getUrl("Videos/" + params.id + "/AlternateSources")
}).then(function () {
Dashboard.hideLoadingMsg();
reload(page);
reload(page, params);
});
});
});
@ -2002,7 +1995,7 @@
LibraryBrowser.showPlayMenu(button, currentItem.Id, currentItem.Type, currentItem.IsFolder, mediaType, userdata.PlaybackPositionTicks);
}
function deleteTimer(page, id) {
function deleteTimer(page, params, id) {
require(['confirm'], function (confirm) {
@ -2016,129 +2009,12 @@
toast(Globalize.translate('MessageRecordingCancelled'));
});
reload(page);
reload(page, params);
});
});
});
}
pageIdOn('pageinit', "itemDetailPage", function () {
var page = this;
$('.btnPlay', page).on('click', function () {
playCurrentItem(this);
});
$('.btnPlayTrailer', page).on('click', function () {
playTrailer(page);
});
$('.btnSplitVersions', page).on('click', function () {
splitVersions(page);
});
$('.btnSync', page).on('click', function () {
require(['syncDialog'], function (syncDialog) {
syncDialog.showMenu({
items: [currentItem]
});
});
});
$('.btnRecord,.btnFloatingRecord', page).on('click', function () {
var id = getParameterByName('id');
Dashboard.showLoadingMsg();
require(['recordingCreator'], function (recordingCreator) {
recordingCreator.show(id, currentItem.ServerId).then(function () {
reload(page);
});
});
});
$('.btnCancelRecording', page).on('click', function () {
deleteTimer(page, currentItem.TimerId);
});
$('.btnMoreCommands', page).on('click', function () {
var button = this;
Dashboard.getCurrentUser().then(function (user) {
LibraryBrowser.showMoreCommands(button, currentItem.Id, currentItem.Type, LibraryBrowser.getMoreCommands(currentItem, user));
});
});
$('.childrenItemsContainer', page).on('playallfromhere', function (e, index) {
LibraryBrowser.playAllFromHere(_childrenItemsFunction, index);
}).on('queueallfromhere', function (e, index) {
LibraryBrowser.queueAllFromHere(_childrenItemsFunction, index);
});
$(page).on("click", ".moreScenes", function () {
Dashboard.getCurrentUser().then(function (user) {
renderScenes(page, currentItem, user);
});
}).on("click", ".morePeople", function () {
renderCast(page, currentItem, getContext(currentItem));
}).on("click", ".moreSpecials", function () {
Dashboard.getCurrentUser().then(function (user) {
renderSpecials(page, currentItem, user);
});
}).on("click", ".moreCriticReviews", function () {
renderCriticReviews(page, currentItem);
});
//var btnMore = page.querySelectorAll('.btnMoreCommands iron-icon');
//for (var i = 0, length = btnMore.length; i < length; i++) {
// btnMore[i].icon = AppInfo.moreIcon;
//}
});
pageIdOn('pagebeforeshow', "itemDetailPage", function () {
var page = this;
reload(page);
Events.on(ApiClient, 'websocketmessage', onWebSocketMessage);
Events.on(LibraryBrowser, 'itemdeleting', onItemDeleted);
});
pageIdOn('pagebeforehide', "itemDetailPage", function () {
Events.off(LibraryBrowser, 'itemdeleting', onItemDeleted);
currentItem = null;
var page = this;
Events.off(ApiClient, 'websocketmessage', onWebSocketMessage);
LibraryMenu.setTransparentMenu(false);
});
function itemDetailPage() {
var self = this;
@ -2154,4 +2030,111 @@
window.ItemDetailPage = new itemDetailPage();
return function (view, params) {
$('.btnPlay', view).on('click', function () {
playCurrentItem(this);
});
$('.btnPlayTrailer', view).on('click', function () {
playTrailer(view);
});
$('.btnSplitVersions', view).on('click', function () {
splitVersions(view, params);
});
$('.btnSync', view).on('click', function () {
require(['syncDialog'], function (syncDialog) {
syncDialog.showMenu({
items: [currentItem]
});
});
});
$('.btnRecord,.btnFloatingRecord', view).on('click', function () {
var id = params.id;
Dashboard.showLoadingMsg();
require(['recordingCreator'], function (recordingCreator) {
recordingCreator.show(id, currentItem.ServerId).then(function () {
reload(view, params);
});
});
});
$('.btnCancelRecording', view).on('click', function () {
deleteTimer(view, params, currentItem.TimerId);
});
$('.btnMoreCommands', view).on('click', function () {
var button = this;
Dashboard.getCurrentUser().then(function (user) {
LibraryBrowser.showMoreCommands(button, currentItem.Id, currentItem.Type, LibraryBrowser.getMoreCommands(currentItem, user));
});
});
$('.childrenItemsContainer', view).on('playallfromhere', function (e, index) {
LibraryBrowser.playAllFromHere(_childrenItemsFunction, index);
}).on('queueallfromhere', function (e, index) {
LibraryBrowser.queueAllFromHere(_childrenItemsFunction, index);
});
$(view).on("click", ".moreScenes", function () {
Dashboard.getCurrentUser().then(function (user) {
renderScenes(view, currentItem, user);
});
}).on("click", ".morePeople", function () {
renderCast(view, currentItem, params.context);
}).on("click", ".moreSpecials", function () {
Dashboard.getCurrentUser().then(function (user) {
renderSpecials(view, currentItem, user);
});
}).on("click", ".moreCriticReviews", function () {
renderCriticReviews(view, currentItem);
});
//var btnMore = page.querySelectorAll('.btnMoreCommands iron-icon');
//for (var i = 0, length = btnMore.length; i < length; i++) {
// btnMore[i].icon = AppInfo.moreIcon;
//}
view.addEventListener('viewbeforeshow', function () {
var page = this;
reload(page, params);
Events.on(ApiClient, 'websocketmessage', onWebSocketMessage);
Events.on(LibraryBrowser, 'itemdeleting', onItemDeleted);
});
view.addEventListener('viewbeforehide', function () {
Events.off(LibraryBrowser, 'itemdeleting', onItemDeleted);
currentItem = null;
Events.off(ApiClient, 'websocketmessage', onWebSocketMessage);
LibraryMenu.setTransparentMenu(false);
});
};
});

View file

@ -36,10 +36,6 @@
return enableScrollX() ? 'overflowPortrait' : 'portrait';
}
function getSquareShape() {
return enableScrollX() ? 'overflowSquare' : 'square';
}
function getLibraryButtonsHtml(items) {
var html = "";
@ -495,7 +491,7 @@
ExcludeLocationTypes: "Virtual",
ImageTypeLimit: 1,
EnableImageTypes: "Primary,Backdrop,Banner,Thumb",
EnableTotalRecordCount: 0
EnableTotalRecordCount: false
};
return ApiClient.getItems(userId, options).then(function (result) {
@ -679,6 +675,7 @@
userId: userId,
limit: 5,
Fields: "PrimaryImageAspectRatio,SyncInfo",
IsInProgress: false
}).then(function (result) {
@ -702,7 +699,7 @@
}
html += LibraryBrowser.getPosterViewHtml({
items: result.Items,
shape: getSquareShape(),
shape: enableScrollX() ? 'autoOverflow' : 'auto',
showTitle: true,
showParentTitle: true,
coverImage: true,

View file

@ -1280,19 +1280,6 @@ var Dashboard = {
Method: 'Embed'
});
// These don't play very well
profile.CodecProfiles.push({
Type: 'VideoAudio',
Codec: 'dca',
Conditions: [
{
Condition: 'LessThanEqual',
Property: 'AudioChannels',
Value: 6
}
]
});
profile.CodecProfiles.push({
Type: 'VideoAudio',
Codec: 'aac,mp3',
@ -2539,7 +2526,8 @@ var AppInfo = {};
defineRoute({
path: '/itemdetails.html',
dependencies: ['paper-button'],
dependencies: ['paper-button', 'tileitemcss', 'scripts/livetvcomponents', 'paper-fab', 'paper-item-body', 'paper-icon-item', 'paper-icon-button-light'],
controller: 'scripts/itemdetailpage',
autoFocus: false,
transition: 'fade'
});

View file

@ -109,7 +109,7 @@
ParentId: parentId,
ImageTypeLimit: 1,
EnableImageTypes: "Primary,Backdrop,Banner,Thumb",
EnableTotalRecordCount: 0
EnableTotalRecordCount: false
};
ApiClient.getItems(Dashboard.getCurrentUserId(), options).then(function (result) {

View file

@ -11,7 +11,7 @@
UserId: Dashboard.getCurrentUserId(),
ImageTypeLimit: 1,
EnableImageTypes: "Primary,Backdrop,Banner,Thumb",
EnableTotalRecordCount: 0
EnableTotalRecordCount: false
};
query.ParentId = params.topParentId;