1 line
No EOL
6.2 KiB
JavaScript
1 line
No EOL
6.2 KiB
JavaScript
import connectionManager from"./../modules/emby-apiclient/connectionmanager.js";import cardBuilder from"./../modules/cardbuilder/cardbuilder.js";import itemManager from"./../modules/common/itemmanager/itemmanager.js";import"./../modules/emby-elements/emby-itemscontainer/emby-itemscontainer.js";import globalize from"./../modules/common/globalize.js";import appRouter from"./../modules/approuter.js";import spotlight from"./spotlight.js";import BaseTab from"./../modules/tabbedview/basetab.js";function fetchResumeItems(){var apiClient=this.getApiClient(),options={Limit:24,IncludeItemTypes:"Episode",ParentId:this.params.parentId,ImageTypeLimit:1,EnableImageTypes:"Primary,Backdrop,Thumb,Logo"};return apiClient.getResumableItems(apiClient.getCurrentUserId(),options)}function getResumeListOptions(){return{renderer:cardBuilder,options:{shape:"backdrop",preferThumb:!0,scalable:!1,multiSelect:!1,horizontalGrid:!0}}}function fetchLatestItems(){var options={IncludeItemTypes:"Episode",Limit:12,ParentId:this.params.parentId,Fields:this.getRequestedItemFields(),EnableImageTypes:this.getRequestedImageTypes(),ImageTypeLimit:1};return this.getApiClient().getLatestItems(options)}function getLatestListOptions(){return{renderer:cardBuilder,options:{shape:"backdrop",preferThumb:!0,showGroupCount:!0,multiSelect:!1,horizontalGrid:!0}}}function backdropImageUrl(item,options){return(options=options||{}).type=options.type||"Backdrop",options.maxWidth||options.width||options.maxHeight||options.height||(options.quality=100),item.BackdropImageTags&&item.BackdropImageTags.length?(options.tag=item.BackdropImageTags[0],connectionManager.getApiClient(item.ServerId).getImageUrl(item.Id,options)):null}function getCategoryItems(){let apiClient=this.getApiClient(),parentId=this.params.parentId;return apiClient.getItems(apiClient.getCurrentUserId(),{SortBy:"IsFavoriteOrLiked,Random",SortOrder:"Descending",IncludeItemTypes:"Series",Limit:3,Recursive:!0,ParentId:parentId,ImageTypes:"Backdrop",Fields:this.getRequestedItemFields(),EnableImageTypes:this.getRequestedImageTypes(),ImageTypeLimit:1}).then(function(seriesResult){var seriesResult=seriesResult.Items,imgOptions={maxWidth:600},items=[];return items.push({Name:globalize.translate("Shows"),Id:"tvshows",ServerId:apiClient.serverId(),ParentId:parentId,Icon:itemManager.getDefaultIcon({CollectionType:"tvshows"}),IsCategory:!0,ImageUrl:1<seriesResult.length?backdropImageUrl(seriesResult[1],imgOptions):null}),items.push({Name:globalize.translate("Favorites"),Id:"tvshows_favorites",ServerId:apiClient.serverId(),ParentId:parentId,Icon:"favorite",IsCategory:!0,ImageUrl:seriesResult.length?backdropImageUrl(seriesResult[0],imgOptions):null}),items.push({Name:globalize.translate("Upcoming"),Id:"tvshows_upcoming",ServerId:apiClient.serverId(),ParentId:parentId,Icon:"",IsCategory:!0}),Promise.resolve({Items:items,TotalRecordCount:items.length})})}function getCategoryListOptions(){return{renderer:cardBuilder,options:{shape:"backdrop",multiSelect:!1,contextMenu:!1,overlayText:!0,fields:["Name"],action:"custom",cardClass:"categoryItemsContainer-spotlight-backdropCard"}}}function onCategoryCardAction(e){e=e.detail.item;let url="/tv?serverId="+connectionManager.getApiClient(e).serverId()+"&parentId="+e.ParentId;e=e.Id.split("_");1<e.length&&(url+="&tab="+e[1]),appRouter.show(url)}function getSpotlightItems(query){var apiClient=this.getApiClient();return apiClient.getItems(apiClient.getCurrentUserId(),Object.assign({SortBy:"Random",IncludeItemTypes:"Series",Recursive:!0,ParentId:this.params.parentId,EnableImageTypes:"Backdrop,Logo",ImageTypes:"Backdrop",Fields:this.getRequestedItemFields(),ImageTypeLimit:1},query))}function getDefaultSpotlightItem(){var apiClient=this.getApiClient();return{Id:this.params.parentId,ServerId:apiClient.serverId(),CollectionType:"tvshows",Name:globalize.translate("Shows"),IsFolder:!0}}function TVTab(view,params){BaseTab.apply(this,arguments)}Object.assign(TVTab.prototype,BaseTab.prototype),TVTab.prototype.scrollDirection=function(){return"x"},TVTab.prototype.onTemplateLoaded=function(){BaseTab.prototype.onTemplateLoaded.apply(this,arguments);var view=this.view;this.latestItemsContainer=view.querySelector(".latestSection .itemsContainer"),this.latestItemsContainer.fetchData=fetchLatestItems.bind(this),this.latestItemsContainer.getListOptions=getLatestListOptions.bind(this),this.latestItemsContainer.parentContainer=this.latestItemsContainer.closest(".horizontalSection"),this.addFocusBehavior(this.latestItemsContainer),this.resumeItemsContainer=view.querySelector(".resumeSection .itemsContainer"),this.resumeItemsContainer.fetchData=fetchResumeItems.bind(this),this.resumeItemsContainer.getListOptions=getResumeListOptions.bind(this),this.resumeItemsContainer.parentContainer=this.resumeItemsContainer.closest(".horizontalSection"),this.addFocusBehavior(this.resumeItemsContainer),this.categoryItemsContainer=view.querySelector(".categoryItemsContainer"),this.categoryItemsContainer.fetchData=getCategoryItems.bind(this),this.categoryItemsContainer.getListOptions=getCategoryListOptions.bind(this),this.categoryItemsContainer.addEventListener("action-null",onCategoryCardAction.bind(this)),this.addFocusBehavior(this.categoryItemsContainer),this.spotlight=new spotlight(view.querySelector(".spotlightItemsContainer"),getSpotlightItems.bind(this),getDefaultSpotlightItem.bind(this))},TVTab.prototype.onResume=function(options){BaseTab.prototype.onResume.apply(this,arguments);var promises=[this.spotlight.resume(options),this.categoryItemsContainer.resume(options),this.resumeItemsContainer.resume(options),this.latestItemsContainer.resume(options)];let instance=this;return Promise.all(promises).then(function(){options.autoFocus&&instance.autoFocus()})},TVTab.prototype.onPause=function(){BaseTab.prototype.onPause.apply(this,arguments),this.spotlight.pause(),this.categoryItemsContainer.pause(),this.latestItemsContainer.pause(),this.resumeItemsContainer.pause()},TVTab.prototype.destroy=function(){BaseTab.prototype.destroy.apply(this,arguments),this.spotlight&&(this.spotlight.destroy(),this.spotlight=null),this.categoryItemsContainer=null,this.latestItemsContainer=null,this.resumeItemsContainer=null},TVTab.prototype.loadTemplate=function(){return require(["text!home_horiz/views.tv.html"])};export default TVTab; |