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

update by genre views

This commit is contained in:
Luke Pulverenti 2016-11-16 12:54:05 -05:00
parent 71b0be28b8
commit dfbe16f07e
7 changed files with 75 additions and 35 deletions

View file

@ -14,12 +14,12 @@
}, },
"devDependencies": {}, "devDependencies": {},
"ignore": [], "ignore": [],
"version": "1.4.337", "version": "1.4.338",
"_release": "1.4.337", "_release": "1.4.338",
"_resolution": { "_resolution": {
"type": "version", "type": "version",
"tag": "1.4.337", "tag": "1.4.338",
"commit": "1653cc935acba06056afae3a6fc8bce17fb46a7a" "commit": "89d5917a0c6425e6f07868b92c9cabb04dcd0139"
}, },
"_source": "https://github.com/MediaBrowser/emby-webcomponents.git", "_source": "https://github.com/MediaBrowser/emby-webcomponents.git",
"_target": "^1.2.1", "_target": "^1.2.1",

View file

@ -15,17 +15,24 @@ define(['visibleinviewport', 'browser', 'dom'], function (visibleinviewport, bro
//options.rootMargin = "300%"; //options.rootMargin = "300%";
var observerId = 'obs' + new Date().getTime();
var self = this; var self = this;
var observer = new IntersectionObserver(function (entries) { var observer = new IntersectionObserver(function (entries) {
for (var j = 0, length2 = entries.length; j < length2; j++) { for (var j = 0, length2 = entries.length; j < length2; j++) {
var entry = entries[j]; var entry = entries[j];
var target = entry.target; var target = entry.target;
observer.unobserve(target);
callback(target);
loadedCount++;
if (loadedCount >= self.elementCount) { observer.unobserve(target);
self.destroyObserver();
if (!target[observerId]) {
target[observerId] = 1;
callback(target);
loadedCount++;
if (loadedCount >= self.elementCount) {
self.destroyObserver();
}
} }
} }
}, },

View file

@ -95,10 +95,7 @@
<button type="button" is="paper-icon-button-light" class="btnNewCollection autoSize"><i class="md-icon">add</i></button> <button type="button" is="paper-icon-button-light" class="btnNewCollection autoSize"><i class="md-icon">add</i></button>
</div> </div>
<div class="alphaPicker alphabetPicker alphaPicker-vertical"> <div is="emby-itemscontainer" class="itemsContainer vertical-wrap centered" style="text-align:center;">
</div>
<div is="emby-itemscontainer" class="itemsContainer itemsContainerWithAlphaPicker centered" style="text-align:center;">
</div> </div>
<div style="text-align: center; display: flex; flex-wrap: wrap; align-items: center; justify-content: center;padding:.7em .5em;"> <div style="text-align: center; display: flex; flex-wrap: wrap; align-items: center; justify-content: center;padding:.7em .5em;">
<div class="paging"></div> <div class="paging"></div>

View file

@ -1,4 +1,4 @@
define(['events', 'libraryBrowser', 'imageLoader', 'alphaPicker', 'listView', 'cardBuilder', 'emby-itemscontainer'], function (events, libraryBrowser, imageLoader, alphaPicker, listView, cardBuilder) { define(['events', 'libraryBrowser', 'imageLoader', 'listView', 'cardBuilder', 'emby-itemscontainer'], function (events, libraryBrowser, imageLoader, listView, cardBuilder) {
'use strict'; 'use strict';
return function (view, params, tabContent) { return function (view, params, tabContent) {
@ -205,26 +205,10 @@
function updateFilterControls(tabContent) { function updateFilterControls(tabContent) {
var query = getQuery(tabContent);
self.alphaPicker.value(query.NameStartsWithOrGreater);
} }
function initPage(tabContent) { function initPage(tabContent) {
var alphaPickerElement = tabContent.querySelector('.alphaPicker');
alphaPickerElement.addEventListener('alphavaluechanged', function (e) {
var newValue = e.detail.value;
var query = getQuery(tabContent);
query.NameStartsWithOrGreater = newValue;
query.StartIndex = 0;
reloadItems(tabContent);
});
self.alphaPicker = new alphaPicker({
element: alphaPickerElement,
valueChangeEvent: 'click'
});
tabContent.querySelector('.btnSort').addEventListener('click', function (e) { tabContent.querySelector('.btnSort').addEventListener('click', function (e) {
libraryBrowser.showSortMenu({ libraryBrowser.showSortMenu({
items: [{ items: [{

View file

@ -1,4 +1,4 @@
define(['libraryBrowser', 'cardBuilder', 'lazyLoader', 'apphost'], function (libraryBrowser, cardBuilder, lazyLoader, appHost) { define(['libraryBrowser', 'cardBuilder', 'lazyLoader', 'apphost', 'globalize', 'dom'], function (libraryBrowser, cardBuilder, lazyLoader, appHost, globalize, dom) {
'use strict'; 'use strict';
return function (view, params, tabContent) { return function (view, params, tabContent) {
@ -56,7 +56,24 @@
function getPortraitShape() { function getPortraitShape() {
return enableScrollX() ? 'overflowPortrait' : 'portrait'; return enableScrollX() ? 'overflowPortrait' : 'portrait';
} }
function getMoreItemsHref(itemId, type) {
return 'secondaryitems.html?type=' + type + '&parentId=' + itemId;
}
dom.addEventListener(tabContent, 'click', function (e) {
var btnMoreFromGenre = dom.parentWithClass(e.target, 'btnMoreFromGenre');
if (btnMoreFromGenre) {
var id = btnMoreFromGenre.getAttribute('data-id');
Dashboard.navigate(getMoreItemsHref(id, 'Movie'));
}
}, {
passive: true
});
function fillItemsContainer(elem) { function fillItemsContainer(elem) {
@ -144,6 +161,9 @@
}); });
} }
if (result.Items.length >= query.Limit) {
tabContent.querySelector('.btnMoreFromGenre' + id).classList.remove('hide');
}
}); });
} }
@ -163,9 +183,15 @@
var item = items[i]; var item = items[i];
html += '<div class="homePageSection">'; html += '<div class="homePageSection">';
html += '<div style="display:flex;align-items:center;">';
html += '<h1 class="listHeader">'; html += '<h1 class="listHeader">';
html += item.Name; html += item.Name;
html += '</h1>'; html += '</h1>';
html += '<button is="emby-button" type="button" class="raised more mini noIcon hide btnMoreFromGenre btnMoreFromGenre' + item.Id + '" data-id="' + item.Id + '">';
html += '<span>' + globalize.translate('ButtonMore') + '</span>';
html += '</button>';
html += '</div>';
if (enableScrollX()) { if (enableScrollX()) {
html += '<div is="emby-itemscontainer" class="itemsContainer hiddenScrollX lazy" data-id="' + item.Id + '">'; html += '<div is="emby-itemscontainer" class="itemsContainer hiddenScrollX lazy" data-id="' + item.Id + '">';

View file

@ -1,4 +1,4 @@
define(['libraryBrowser', 'cardBuilder', 'lazyLoader', 'apphost'], function (libraryBrowser, cardBuilder, lazyLoader, appHost) { define(['libraryBrowser', 'cardBuilder', 'lazyLoader', 'apphost', 'globalize', 'dom'], function (libraryBrowser, cardBuilder, lazyLoader, appHost, globalize, dom) {
'use strict'; 'use strict';
return function (view, params, tabContent) { return function (view, params, tabContent) {
@ -56,7 +56,24 @@
function getPortraitShape() { function getPortraitShape() {
return enableScrollX() ? 'overflowPortrait' : 'portrait'; return enableScrollX() ? 'overflowPortrait' : 'portrait';
} }
function getMoreItemsHref(itemId, type) {
return 'secondaryitems.html?type=' + type + '&parentId=' + itemId;
}
dom.addEventListener(tabContent, 'click', function (e) {
var btnMoreFromGenre = dom.parentWithClass(e.target, 'btnMoreFromGenre');
if (btnMoreFromGenre) {
var id = btnMoreFromGenre.getAttribute('data-id');
Dashboard.navigate(getMoreItemsHref(id, 'Series'));
}
}, {
passive: true
});
function fillItemsContainer(elem) { function fillItemsContainer(elem) {
@ -144,6 +161,9 @@
}); });
} }
if (result.Items.length >= query.Limit) {
tabContent.querySelector('.btnMoreFromGenre' + id).classList.remove('hide');
}
}); });
} }
@ -163,9 +183,15 @@
var item = items[i]; var item = items[i];
html += '<div class="homePageSection">'; html += '<div class="homePageSection">';
html += '<div style="display:flex;align-items:center;">';
html += '<h1 class="listHeader">'; html += '<h1 class="listHeader">';
html += item.Name; html += item.Name;
html += '</h1>'; html += '</h1>';
html += '<button is="emby-button" type="button" class="raised more mini noIcon hide btnMoreFromGenre btnMoreFromGenre' + item.Id + '" data-id="' + item.Id + '">';
html += '<span>' + globalize.translate('ButtonMore') + '</span>';
html += '</button>';
html += '</div>';
if (enableScrollX()) { if (enableScrollX()) {
html += '<div is="emby-itemscontainer" class="itemsContainer hiddenScrollX lazy" data-id="' + item.Id + '">'; html += '<div is="emby-itemscontainer" class="itemsContainer hiddenScrollX lazy" data-id="' + item.Id + '">';

View file

@ -1,4 +1,4 @@
<div id="secondaryItemsPage" data-role="page" class="page libraryPage noSecondaryNavPage" data-menubutton="false"> <div id="secondaryItemsPage" data-role="page" class="page libraryPage noSecondaryNavPage" data-backbutton="true">
<div data-role="content"> <div data-role="content">
<div class="viewSettings"> <div class="viewSettings">