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 layoutManager from"./../modules/layoutmanager.js";import cardBuilder from"./../modules/cardbuilder/cardbuilder.js";import BaseTab from"./../modules/tabbedview/basetab.js";import"./../modules/emby-elements/emby-itemscontainer/emby-itemscontainer.js";import"./../modules/emby-elements/emby-scroller/emby-scroller.js";function fetchResumeItems(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))}function fetchLatestItems(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:!0}),query)}let msPerDay=864e5;function fetchRecentlyReleasedItems(query){var parentId=this.params.parentId,apiClient=this.apiClient,minPremiereDate=new Date(Date.now());return minPremiereDate.setTime(minPremiereDate.getTime()-14*msPerDay),apiClient.getItems(apiClient.getCurrentUserId(),Object.assign({Fields:this.getRequestedItemFields()+",PrimaryImageAspectRatio",IncludeItemTypes:"Episode",ParentId:parentId,Recursive:!0,SortBy:"ProductionYear,PremiereDate,SortParentIndexNumber,SortIndexNumber",SortOrder:"Descending,Descending,Ascending,Ascending",MinPremiereDate:minPremiereDate.toISOString(),IsUnaired:!1},query))}function getResumeListOptions(){var enableFocusPreview=this.enableFocusPreview();return{renderer:cardBuilder,options:{preferThumb:!0,shape:getThumbShape("latest"),scalable:!0,fields:enableFocusPreview?[]:["ParentName","Name"],centerText:!0,overlayPlayButton:!0,cardLayout:!1,focusTransformTitleAdjust:!0,animateProgressBar:!0,bottomPadding:enableFocusPreview?"focuspreview":null},virtualScrollLayout:"horizontal-grid"}}function getLatestListOptions(){var enableFocusPreview=this.enableFocusPreview();return{renderer:cardBuilder,options:{preferThumb:!0,shape:getThumbShape("resume"),scalable:!0,fields:enableFocusPreview?[]:["Name"],centerText:!0,overlayPlayButton:!0,cardLayout:!1,focusTransformTitleAdjust:!0,bottomPadding:enableFocusPreview?"focuspreview":null},virtualScrollLayout:"horizontal-grid"}}function getRecentlyReleasedListOptions(){var enableFocusPreview=this.enableFocusPreview();return{renderer:cardBuilder,options:{preferThumb:!0,shape:getThumbShape("latest"),scalable:!0,fields:enableFocusPreview?[]:["ParentName","Name"],centerText:!0,overlayPlayButton:!0,cardLayout:!1,focusTransformTitleAdjust:!0,animateProgressBar:!0,bottomPadding:enableFocusPreview?"focuspreview":null},virtualScrollLayout:"horizontal-grid"}}function TvSuggestionsTab(view,params){BaseTab.apply(this,arguments),this.view=view,this.params=params,this.apiClient=connectionManager.getApiClient(params.serverId),initLayout(view),this.resumeItemsContainer=view.querySelector(".resumeSection .itemsContainer"),this.resumeItemsContainer.fetchData=fetchResumeItems.bind(this),this.resumeItemsContainer.getListOptions=getResumeListOptions.bind(this),this.resumeItemsContainer.parentContainer=view.querySelector(".resumeSection"),this.addFocusBehavior(this.resumeItemsContainer),this.latestItemsContainer=view.querySelector(".latestSection .itemsContainer"),this.latestItemsContainer.fetchData=fetchLatestItems.bind(this),this.latestItemsContainer.getListOptions=getLatestListOptions.bind(this),this.latestItemsContainer.parentContainer=view.querySelector(".latestSection"),this.addFocusBehavior(this.latestItemsContainer),this.recentlyReleasedItemsContainer=view.querySelector(".recentlyReleasedSection .itemsContainer"),this.recentlyReleasedItemsContainer.fetchData=fetchRecentlyReleasedItems.bind(this),this.recentlyReleasedItemsContainer.getListOptions=getRecentlyReleasedListOptions.bind(this),this.recentlyReleasedItemsContainer.parentContainer=view.querySelector(".recentlyReleasedSection"),this.addFocusBehavior(this.recentlyReleasedItemsContainer),params.parentId&&(this.resumeItemsContainer.setAttribute("data-parentid",params.parentId),this.latestItemsContainer.setAttribute("data-parentid",params.parentId),this.recentlyReleasedItemsContainer.setAttribute("data-parentid",params.parentId))}function initLayout(view){var containers=view.querySelectorAll(".autoScrollSection");for(let i=0,length=containers.length;i<length;i++){var section=containers[i],sectionType=section.getAttribute("data-section");let commands="";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="resume"===sectionType?' data-commands="removefromresume"':commands)+' data-focusabletype="nearest" class="itemsContainer scrollSlider focusable focuscontainer-x" data-monitor="videoplayback,markplayed" data-virtualscrolllayout="horizontal-grid"></div></div>';section.insertAdjacentHTML("beforeend",sectionType)}}function getThumbShape(){return"backdrop"}Object.assign(TvSuggestionsTab.prototype,BaseTab.prototype),TvSuggestionsTab.prototype.enablePushDownFocusPreview=function(){return layoutManager.tv&&"y"===this.scrollDirection()},TvSuggestionsTab.prototype.onResume=function(options){BaseTab.prototype.onResume.apply(this,arguments);var promises=[];promises.push(this.resumeItemsContainer.resume(options)),promises.push(this.latestItemsContainer.resume(options)),promises.push(this.recentlyReleasedItemsContainer.resume(options));let instance=this;Promise.all(promises).then(function(){options.autoFocus&&instance.autoFocus(),instance.fillFocusPreviewIfNeeded()})},TvSuggestionsTab.prototype.onPause=function(){BaseTab.prototype.onPause.apply(this,arguments),this.resumeItemsContainer.pause(),this.latestItemsContainer.pause(),this.recentlyReleasedItemsContainer.pause()},TvSuggestionsTab.prototype.destroy=function(){BaseTab.prototype.destroy.apply(this,arguments),this.resumeItemsContainer=null,this.latestItemsContainer=null,this.recentlyReleasedItemsContainer=null};export default TvSuggestionsTab; |