This commit is contained in:
root
2023-08-31 15:30:17 +02:00
commit dea16b40a8
833 changed files with 142024 additions and 0 deletions

1
tv/favorites.js Normal file
View File

@@ -0,0 +1 @@
define(["exports","./../modules/emby-apiclient/connectionmanager.js","./../modules/layoutmanager.js","./../modules/cardbuilder/cardbuilder.js","./../modules/tabbedview/basetab.js","./../modules/emby-elements/emby-itemscontainer/emby-itemscontainer.js","./../modules/emby-elements/emby-scroller/emby-scroller.js"],function(_exports,_connectionmanager,_layoutmanager,_cardbuilder,_basetab,_embyItemscontainer,_embyScroller){function TvFavoritesTab(view,params){_basetab.default.apply(this,arguments),this.view=view,this.params=params,this.apiClient=_connectionmanager.default.getApiClient(params.serverId);var seriesItemsContainer=view.querySelector(".seriesItems"),seriesItemsContainer=(seriesItemsContainer.getListOptions=function(items){return{renderer:_cardbuilder.default,options:{shape:"auto",centerText:!0,fields:this.enableFocusPreview()?[]:["Name"]},virtualScrollLayout:"vertical-grid"}}.bind(this),seriesItemsContainer.fetchData=function(items){var apiClient=this.apiClient,parentId=this.params.parentId;return apiClient.getItems(apiClient.getCurrentUserId(),{SortBy:"SortName",SortOrder:"Ascending",IncludeItemTypes:"Series",Recursive:!0,Fields:this.getRequestedItemFields()+",PrimaryImageAspectRatio",ImageTypeLimit:1,EnableImageTypes:this.getRequestedImageTypes(),StartIndex:0,parentId:parentId,IsFavorite:!0})}.bind(this),seriesItemsContainer.parentContainer=view.querySelector(".favoriteSeriesSection"),this.seriesItemsContainer=seriesItemsContainer,this.addFocusBehavior(this.seriesItemsContainer),view.querySelector(".episodeItems"));seriesItemsContainer.getListOptions=function(items){return{renderer:_cardbuilder.default,options:{shape:"auto",fields:["ParentName","Name"],centerText:!0},virtualScrollLayout:"vertical-grid"}}.bind(this),seriesItemsContainer.fetchData=function(items){var apiClient=this.apiClient,parentId=this.params.parentId;return apiClient.getItems(apiClient.getCurrentUserId(),{SortBy:"SeriesName,SortName",SortOrder:"Ascending",IncludeItemTypes:"Episode",Recursive:!0,Fields:this.getRequestedItemFields()+",PrimaryImageAspectRatio",ImageTypeLimit:1,EnableImageTypes:this.getRequestedImageTypes(),StartIndex:0,parentId:parentId,IsFavorite:!0})}.bind(this),seriesItemsContainer.parentContainer=view.querySelector(".favoriteEpisodesSection"),this.episodeItemsContainer=seriesItemsContainer,this.addFocusBehavior(this.episodeItemsContainer),params.parentId&&(this.seriesItemsContainer.setAttribute("data-parentid",params.parentId),this.episodeItemsContainer.setAttribute("data-parentid",params.parentId))}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,Object.assign(TvFavoritesTab.prototype,_basetab.default.prototype),TvFavoritesTab.prototype.supportsFocusPreview=function(){return!0},TvFavoritesTab.prototype.enableFocusPreview=function(){return _layoutmanager.default.tv&&this.supportsFocusPreview()},TvFavoritesTab.prototype.onResume=function(options){var promises,instance;_basetab.default.prototype.onResume.apply(this,arguments),options.refresh&&((promises=[]).push(this.seriesItemsContainer.resume(options)),promises.push(this.episodeItemsContainer.resume(options)),instance=this,Promise.all(promises).then(function(){options.autoFocus&&instance.autoFocus(),instance.fillFocusPreviewIfNeeded()}))},TvFavoritesTab.prototype.onPause=function(){_basetab.default.prototype.onPause.apply(this,arguments);var seriesItemsContainer=this.seriesItemsContainer,seriesItemsContainer=(seriesItemsContainer&&seriesItemsContainer.pause&&seriesItemsContainer.pause(),this.episodeItemsContainer);seriesItemsContainer&&seriesItemsContainer.pause&&seriesItemsContainer.pause()},TvFavoritesTab.prototype.destroy=function(){_basetab.default.prototype.destroy.apply(this,arguments),this.view=null,this.params=null,this.apiClient=null,this.seriesItemsContainer=null,this.episodeItemsContainer=null},_exports.default=TvFavoritesTab});

1
tv/studios.js Normal file
View File

@@ -0,0 +1 @@
define(["exports","./../modules/tabbedview/itemstab.js","./../modules/emby-elements/emby-itemscontainer/emby-itemscontainer.js","./../modules/emby-elements/emby-scroller/emby-scroller.js","./../modules/emby-elements/emby-button/emby-button.js"],function(_exports,_itemstab,_embyItemscontainer,_embyScroller,_embyButton){function StudiosTab(view,params,options){this.supportsViewSettings=!1,_itemstab.default.call(this,view,params,options)}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,Object.assign(StudiosTab.prototype,_itemstab.default.prototype),StudiosTab.prototype.getQueryIncludeItemTypes=function(){return["Series"]},StudiosTab.prototype.getItemTypes=function(){return["Studio"]},StudiosTab.prototype.getSettingsKey=function(){return _itemstab.default.prototype.getSettingsKey.call(this)+"-studios"},StudiosTab.prototype.getApiClientQueryMethodName=function(){return"getStudios"},StudiosTab.prototype.getContext=function(){return"tvshows"},StudiosTab.prototype.getCardOptions=function(items,settings){var options=_itemstab.default.prototype.getCardOptions.apply(this,arguments);return options.preferThumb=!0,options.shape="backdrop",options},StudiosTab.prototype.getSortMenuOptions=function(){return[]},StudiosTab.prototype.loadTemplate=function(){return this.loadItemsTemplate()},_exports.default=StudiosTab});

1
tv/suggestions.js Normal file
View File

@@ -0,0 +1 @@
define(["exports","./../modules/emby-apiclient/connectionmanager.js","./../modules/layoutmanager.js","./../modules/cardbuilder/cardbuilder.js","./../modules/tabbedview/basetab.js","./../modules/emby-elements/emby-itemscontainer/emby-itemscontainer.js","./../modules/emby-elements/emby-scroller/emby-scroller.js"],function(_exports,_connectionmanager,_layoutmanager,_cardbuilder,_basetab,_embyItemscontainer,_embyScroller){function enableScrollX(section){return"resume"===section||_layoutmanager.default.tv}function TvSuggestionsTab(view,params){_basetab.default.apply(this,arguments),this.view=view,this.params=params,this.apiClient=_connectionmanager.default.getApiClient(params.serverId),function(view){for(var containers=view.querySelectorAll(".autoScrollSection"),i=0,length=containers.length;i<length;i++){var section=containers[i],html=void 0,sectionType=section.getAttribute("data-section"),commands="resume"===sectionType?' data-commands="removefromresume"':"";html=enableScrollX(sectionType)?'<div is="emby-scroller" class="padded-top-focusscale padded-bottom-focusscale padded-left padded-left-page padded-right" data-mousewheel="false" data-focusscroll="true"><div is="emby-itemscontainer"'+commands+' class="itemsContainer scrollSlider focuscontainer-x" data-monitor="videoplayback,markplayed" data-virtualscrolllayout="horizontal-grid"></div></div>':'<div is="emby-itemscontainer"'+commands+' class="itemsContainer padded-left padded-left-page padded-right vertical-wrap focuscontainer-x" data-monitor="videoplayback,markplayed"></div>',section.insertAdjacentHTML("beforeend",html)}}(view),this.resumeItemsContainer=view.querySelector(".resumeSection .itemsContainer"),this.resumeItemsContainer.fetchData=function(query){var apiClient=this.apiClient,parentId=this.params.parentId;return apiClient.getResumableItems(apiClient.getCurrentUserId(),Object.assign({IncludeItemTypes:"Episode",Fields:this.getRequestedItemFields()+",PrimaryImageAspectRatio",ParentId:parentId,ImageTypeLimit:1,EnableImageTypes:this.getRequestedImageTypes()},query))}.bind(this),this.resumeItemsContainer.getListOptions=function(){return{renderer:_cardbuilder.default,options:{preferThumb:!0,shape:"backdrop",scalable:!0,fields:this.enableFocusPreview()?[]:["ParentName","Name"],centerText:!0,overlayPlayButton:!0,cardLayout:!1,focusTransformTitleAdjust:!0,animateProgressBar:!0},virtualScrollLayout:"horizontal-grid"}}.bind(this),this.resumeItemsContainer.parentContainer=view.querySelector(".resumeSection"),this.addFocusBehavior(this.resumeItemsContainer),this.latestItemsContainer=view.querySelector(".latestSection .itemsContainer"),this.latestItemsContainer.fetchData=function(query){var parentId=this.params.parentId;return this.apiClient.getLatestItems(Object.assign({IncludeItemTypes:"Episode",Limit:30,Fields:this.getRequestedItemFields()+",PrimaryImageAspectRatio",ParentId:parentId,ImageTypeLimit:1,EnableImageTypes:this.getRequestedImageTypes(),GroupItems:!1}),query)}.bind(this),this.latestItemsContainer.getListOptions=function(){return{renderer:_cardbuilder.default,options:{preferThumb:!0,shape:"backdrop",scalable:!0,fields:this.enableFocusPreview()?[]:["ParentName","Name"],centerText:!0,overlayPlayButton:!0,cardLayout:!1,focusTransformTitleAdjust:!0},virtualScrollLayout:enableScrollX("latest")?"horizontal-grid":"vertical-grid"}}.bind(this),this.latestItemsContainer.parentContainer=view.querySelector(".latestSection"),this.addFocusBehavior(this.latestItemsContainer),params.parentId&&(this.resumeItemsContainer.setAttribute("data-parentid",params.parentId),this.latestItemsContainer.setAttribute("data-parentid",params.parentId))}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,Object.assign(TvSuggestionsTab.prototype,_basetab.default.prototype),TvSuggestionsTab.prototype.supportsFocusPreview=function(){return!0},TvSuggestionsTab.prototype.enableFocusPreview=function(){return _layoutmanager.default.tv&&this.supportsFocusPreview()},TvSuggestionsTab.prototype.onResume=function(options){_basetab.default.prototype.onResume.apply(this,arguments);var promises=[],instance=(promises.push(this.resumeItemsContainer.resume(options)),promises.push(this.latestItemsContainer.resume(options)),this);Promise.all(promises).then(function(){options.autoFocus&&instance.autoFocus(),instance.fillFocusPreviewIfNeeded()})},TvSuggestionsTab.prototype.onPause=function(){_basetab.default.prototype.onPause.apply(this,arguments),this.resumeItemsContainer.pause(),this.latestItemsContainer.pause()},TvSuggestionsTab.prototype.destroy=function(){_basetab.default.prototype.destroy.apply(this,arguments),this.view=null,this.params=null,this.apiClient=null,this.resumeItemsContainer=null,this.latestItemsContainer=null},_exports.default=TvSuggestionsTab});

77
tv/tv.html Normal file
View File

@@ -0,0 +1,77 @@
<div class="view flex flex-direction-column withTabs">
<div class="tabContent tabContent-positioned flex flex-grow" data-index="0">
</div>
<div class="tabContent tabContent-positioned flex flex-grow" data-index="1">
<div is="emby-scroller" data-horizontal="false" data-focusscroll="true" data-navcommands="card" data-forcescrollbar="true" class="scrollFrameY flex flex-grow" data-bindheader="true">
<div class="scrollSlider flex-grow padded-top-page">
<div class="resumeSection hide verticalSection verticalSection-cards autoScrollSection focusable" data-focusabletype="nearest" data-section="resume">
<h2 class="sectionTitle sectionTitle-cards padded-left padded-left-page padded-right">${HeaderContinueWatching}</h2>
</div>
<div class="latestSection hide verticalSection verticalSection-cards autoScrollSection focusable" data-focusabletype="nearest" data-section="latest">
<div class="sectionTitleContainer sectionTitleContainer-cards">
<h2 class="sectionTitle sectionTitle-cards padded-left padded-left-page">${HeaderLatestEpisodes}</h2>
</div>
</div>
<div class="padded-bottom-page"></div>
</div>
</div>
</div>
<div class="tabContent tabContent-positioned flex flex-grow" data-index="2">
<div is="emby-scroller" data-horizontal="false" data-focusscroll="true" data-navcommands="card" data-forcescrollbar="true" class="scrollFrameY flex flex-grow" data-bindheader="true">
<div class="scrollSlider flex-grow padded-top-page">
<div class="upcomingContainer"></div>
<div class="padded-bottom-page"></div>
</div>
</div>
</div>
<div class="tabContent tabContent-positioned flex flex-grow" data-index="3">
<div is="emby-scroller" data-horizontal="false" data-focusscroll="true" data-navcommands="card" data-forcescrollbar="true" class="scrollFrameY flex flex-grow" data-bindheader="true">
<div class="scrollSlider flex-grow padded-top-page padded-left padded-left-page padded-right">
<div class="favoriteSeriesSection hide verticalSection verticalSection-cards">
<div>
<h2 class="sectionTitle sectionTitle-cards">${HeaderFavoriteShows}</h2>
</div>
<div is="emby-itemscontainer" class="seriesItems itemsContainer vertical-wrap focuscontainer-x" data-monitor="markfavorite"></div>
</div>
<div class="favoriteEpisodesSection hide verticalSection verticalSection-cards">
<div>
<h2 class="sectionTitle sectionTitle-cards">${HeaderFavoriteEpisodes}</h2>
</div>
<div is="emby-itemscontainer" class="episodeItems itemsContainer vertical-wrap focuscontainer-x" data-monitor="markfavorite"></div>
</div>
<div class="padded-bottom-page"></div>
</div>
</div>
</div>
<div class="tabContent tabContent-positioned flex flex-grow" data-index="4">
</div>
<div class="tabContent tabContent-positioned flex flex-grow" data-index="5">
</div>
<div class="tabContent tabContent-positioned flex flex-grow" data-index="6">
</div>
<div class="tabContent tabContent-positioned flex flex-grow" data-index="7">
</div>
<div class="tabContent tabContent-positioned flex flex-grow" data-index="8">
</div>
<div class="tabContent tabContent-positioned flex flex-grow" data-index="9">
</div>
</div>

1
tv/tv.js Normal file
View File

@@ -0,0 +1 @@
define(["exports","./../modules/tabbedview/tabbedview.js","./../modules/common/globalize.js","./../modules/emby-elements/emby-itemscontainer/emby-itemscontainer.js","./../modules/emby-elements/emby-button/emby-button.js","./../modules/emby-elements/emby-scroller/emby-scroller.js"],function(_exports,_tabbedview,_globalize,_embyItemscontainer,_embyButton,_embyScroller){function TVView(view,params){_tabbedview.default.call(this,view,params)}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,Object.assign(TVView.prototype,_tabbedview.default.prototype),TVView.prototype.getTabs=function(){var subviews=this.item.Subviews||["series","suggestions","upcoming","favorites","genres","studios","episodes","folders"];return[{name:_globalize.default.translate("Shows"),id:"series",enabled:subviews.includes("series")},{name:_globalize.default.translate("Suggestions"),id:"suggestions"},{name:_globalize.default.translate("Upcoming"),id:"upcoming"},{name:_globalize.default.translate("Favorites"),id:"favorites"},{name:_globalize.default.translate("Collections"),id:"collections",enabled:subviews.includes("collections")},{name:_globalize.default.translate("Genres"),id:"genres",enabled:subviews.includes("genres")},{name:_globalize.default.translate("Tags"),id:"tags",enabled:subviews.includes("tags")},{name:_globalize.default.translate("Networks"),id:"studios",enabled:subviews.includes("studios")},{name:_globalize.default.translate("Episodes"),id:"episodes",enabled:subviews.includes("episodes")},{name:_globalize.default.translate("Folders"),id:"folders"}]},TVView.prototype.loadTabController=function(id){switch(id){case"series":return Emby.importModule("./modules/tabbedview/seriestab.js");case"suggestions":return Emby.importModule("./tv/suggestions.js");case"upcoming":return Emby.importModule("./tv/upcoming.js");case"favorites":return Emby.importModule("./tv/favorites.js");case"collections":return Emby.importModule("./modules/tabbedview/collectionstab.js");case"genres":return Emby.importModule("./modules/tabbedview/genrestab.js");case"studios":return Emby.importModule("./tv/studios.js");case"tags":return Emby.importModule("./modules/tabbedview/tagstab.js");case"episodes":return Emby.importModule("./modules/tabbedview/videostab.js");case"folders":return Emby.importModule("./modules/tabbedview/folderstab.js");default:throw new Error("tab not found: "+id)}},TVView.prototype.getTabControllerOptions=function(id){var options=_tabbedview.default.prototype.getTabControllerOptions.apply(this,arguments);return"genres"===id?options.queryIncludeItemTypes=["Series"]:"episodes"===id&&(options.itemType="Episode",options.enableAlphaPicker=!1),options},_exports.default=TVView});

1
tv/upcoming.js Normal file
View File

@@ -0,0 +1 @@
define(["exports","./../modules/emby-apiclient/connectionmanager.js","./../modules/cardbuilder/cardbuilder.js","./../modules/tabbedview/basetab.js","./../modules/emby-elements/emby-itemscontainer/emby-itemscontainer.js","./../modules/emby-elements/emby-scroller/emby-scroller.js","./../modules/common/globalize.js","./../modules/common/datetime.js"],function(_exports,_connectionmanager,_cardbuilder,_basetab,_embyItemscontainer,_embyScroller,_globalize,_datetime){function UpcomingTab(view,params){_basetab.default.apply(this,arguments),this.view=view,this.params=params,this.apiClient=_connectionmanager.default.getApiClient(params.serverId)}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,Object.assign(UpcomingTab.prototype,_basetab.default.prototype),UpcomingTab.prototype.onResume=function(options){_basetab.default.prototype.onResume.apply(this,arguments);var promises,parentId,view,instance,apiClient=this.apiClient;options.refresh&&(parentId=this.params.parentId,(promises=[]).push(apiClient.getUpcomingEpisodes({Limit:60,UserId:apiClient.getCurrentUserId(),ImageTypeLimit:1,EnableImageTypes:"Primary,Backdrop,Thumb",EnableTotalRecordCount:!1,parentId:parentId})),view=this.view,instance=this,Promise.all(promises).then(function(responses){return function(view,items){for(var groups=[],currentGroupName="",currentGroup=[],i=0,length=items.length;i<length;i++){var item=items[i],dateText="";if(item.PremiereDate)try{var premiereDate=new Date(Date.parse(item.PremiereDate)),dateText=_datetime.default.isRelativeDay(premiereDate,-1)?_globalize.default.translate("Yesterday"):_datetime.default.toLocaleDateString(premiereDate,{weekday:"long",month:"short",day:"numeric"})}catch(err){dateText=item.PremiereDate}dateText!==currentGroupName?(currentGroup.length&&groups.push({name:currentGroupName,items:currentGroup}),currentGroupName=dateText,currentGroup=[item]):currentGroup.push(item)}var html="";for(i=0,length=groups.length;i<length;i++)html=(html+='<div class="verticalSection verticalSection-cards focusable" data-focusabletype="nearest">')+'<h2 class="sectionTitle sectionTitle-cards padded-left padded-left-page">'+groups[i].name+'</h2><div is="emby-scroller" class="padded-top-focusscale padded-bottom-focusscale" data-framesize="matchgrandparent" data-focusscroll="true" data-mousewheel="false"><div is="emby-itemscontainer" class="itemsContainer scrollSlider focuscontainer-x padded-left padded-left-page padded-right"></div></div></div>';(view=view.classList.contains("upcomingContainer")?view:view.querySelector(".upcomingContainer")).innerHTML=html;var itemContainers=view.querySelectorAll(".itemsContainer");for(i=0,length=groups.length;i<length;i++)_cardbuilder.default.buildCards(groups[i].items,{showLocationTypeIndicator:!1,shape:"backdrop",preferThumb:!0,showDetailsMenu:!0,fields:["ParentName","Name"],missingIndicator:!1,multiSelect:!1,itemsContainer:itemContainers[i]})}(view,responses[0].Items),options.autoFocus&&instance.autoFocus(),Promise.resolve()}))},UpcomingTab.prototype.onPause=function(){_basetab.default.prototype.onPause.apply(this,arguments)},UpcomingTab.prototype.destroy=function(){_basetab.default.prototype.destroy.apply(this,arguments),this.view=null,this.params=null,this.apiClient=null},_exports.default=UpcomingTab});