EmbyCrackedClient/web/tv/upcoming.js

1 line
3.1 KiB
JavaScript
Raw Normal View History

2025-06-25 11:46:04 +08:00
import connectionManager from"./../modules/emby-apiclient/connectionmanager.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";import globalize from"./../modules/common/globalize.js";import datetime from"./../modules/common/datetime.js";import loading from"./../modules/loading/loading.js";function UpcomingTab(view,params){BaseTab.apply(this,arguments),this.view=view,this.params=params,this.apiClient=connectionManager.getApiClient(params.serverId)}function renderUpcoming(view,items){var groups=[];let currentGroupName="",currentGroup=[],i,length;for(i=0,length=items.length;i<length;i++){var item=items[i];let dateText="";if(item.PremiereDate)try{var premiereDate=new Date(Date.parse(item.PremiereDate));dateText=datetime.isRelativeDay(premiereDate,-1)?globalize.translate("Yesterday"):datetime.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)}let html="",group;for(i=0,length=groups.length;i<length;i++)group=groups[i],html=(html=(html=(html+='<div class="verticalSection verticalSection-cards">')+'<h2 class="sectionTitle sectionTitle-cards padded-left padded-left-page">'+group.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" data-focusabletype="nearest" class="itemsContainer scrollSlider focuscontainer-x focusable padded-left padded-left-page padded-right"></div>')+"</div></div>";var view=view.classList.contains("upcomingContainer")?view:view.querySelector(".upcomingContainer"),itemContainers=(view.innerHTML=html,view.querySelectorAll(".itemsContainer"));for(i=0,length=groups.length;i<length;i++)group=groups[i],cardBuilder.buildCards(group.items,{shape:"backdrop",preferThumb:!0,fields:["ParentName","Name"],multiSelect:!1,itemsContainer:itemContainers[i],contextMenu:!1,draggable:!1,action:"overview",horizontal:!0})}Object.assign(UpcomingTab.prototype,BaseTab.prototype),UpcomingTab.prototype.onResume=function(options){BaseTab.prototype.onResume.apply(this,arguments);var apiClient=this.apiClient;if(options.refresh){var promises=[],parentId=this.params.parentId;loading.show(),promises.push(apiClient.getUpcomingEpisodes({Limit:100,UserId:apiClient.getCurrentUserId(),ImageTypeLimit:1,EnableImageTypes:"Primary,Backdrop,Thumb",EnableTotalRecordCount:!1,parentId:parentId,Fields:"Overview"}));let view=this.view,instance=this;Promise.all(promises).then(function(responses){return loading.hide(),renderUpcoming(view,responses[0].Items),options.autoFocus&&instance.autoFocus(),Promise.resolve()})}},UpcomingTab.prototype.onPause=function(){BaseTab.prototype.onPause.apply(this,arguments)};export default UpcomingTab;