1 line
No EOL
9.8 KiB
JavaScript
1 line
No EOL
9.8 KiB
JavaScript
import connectionManager from"./../modules/emby-apiclient/connectionmanager.js";import BaseTab from"./../modules/tabbedview/basetab.js";import globalize from"./../modules/common/globalize.js";import"./../modules/emby-elements/emby-itemscontainer/emby-itemscontainer.js";import"./../modules/emby-elements/emby-button/emby-button.js";import"./../modules/emby-elements/emby-scroller/emby-scroller.js";import userSettings from"./../modules/common/usersettings/usersettings.js";import cardBuilder from"./../modules/cardbuilder/cardbuilder.js";function LiveTvSuggestionsTab(view,params){BaseTab.apply(this,arguments),this.view=view,this.params=params,this.apiClient=connectionManager.getApiClient(params.serverId),initMoreButtons(view,params),view.addEventListener("click",onViewClick),this.onNowItemsContainer=view.querySelector(".activePrograms .itemsContainer"),this.onNowItemsContainer.fetchData=fetchOnNow.bind(this),this.onNowItemsContainer.getListOptions=getOnNowListOptions.bind(this),this.onNowItemsContainer.parentContainer=this.onNowItemsContainer.closest(".verticalSection"),this.tagsItemsContainer=view.querySelector(".tagsSection .itemsContainer"),this.tagsItemsContainer.fetchData=fetchTags.bind(this),this.tagsItemsContainer.getListOptions=getTagsListOptions.bind(this),this.tagsItemsContainer.parentContainer=this.tagsItemsContainer.closest(".verticalSection"),this.newEpisodeItemsContainer=view.querySelector(".newEpisodes .itemsContainer"),this.newEpisodeItemsContainer.fetchData=fetchNewEpisodes.bind(this),this.newEpisodeItemsContainer.getListOptions=getNewEpisodesListOptions.bind(this),this.newEpisodeItemsContainer.parentContainer=this.newEpisodeItemsContainer.closest(".verticalSection"),this.episodeItemsContainer=view.querySelector(".upcomingEpisodes .itemsContainer"),this.episodeItemsContainer.fetchData=fetchEpisodes.bind(this),this.episodeItemsContainer.getListOptions=getEpisodesListOptions.bind(this),this.episodeItemsContainer.parentContainer=this.episodeItemsContainer.closest(".verticalSection"),this.movieItemsContainer=view.querySelector(".upcomingTvMovies .itemsContainer"),this.movieItemsContainer.fetchData=fetchMovies.bind(this),this.movieItemsContainer.getListOptions=getMoviesListOptions.bind(this),this.movieItemsContainer.parentContainer=this.movieItemsContainer.closest(".verticalSection"),this.sportsItemsContainer=view.querySelector(".upcomingSports .itemsContainer"),this.sportsItemsContainer.fetchData=fetchSports.bind(this),this.sportsItemsContainer.getListOptions=getSportsListOptions.bind(this),this.sportsItemsContainer.parentContainer=this.sportsItemsContainer.closest(".verticalSection"),this.kidsItemsContainer=view.querySelector(".upcomingKids .itemsContainer"),this.kidsItemsContainer.fetchData=fetchKids.bind(this),this.kidsItemsContainer.getListOptions=getKidsListOptions.bind(this),this.kidsItemsContainer.parentContainer=this.kidsItemsContainer.closest(".verticalSection"),this.newsItemsContainer=view.querySelector(".upcomingNews .itemsContainer"),this.newsItemsContainer.fetchData=fetchNews.bind(this),this.newsItemsContainer.getListOptions=getNewsListOptions.bind(this),this.newsItemsContainer.parentContainer=this.newsItemsContainer.closest(".verticalSection")}function fetchOnNow(query){var apiClient=this.apiClient;return query=Object.assign({UserId:apiClient.getCurrentUserId(),IsAiring:!0,ImageTypeLimit:1,EnableImageTypes:"Primary,Thumb,Backdrop",Fields:"ProgramPrimaryImageAspectRatio,PrimaryImageAspectRatio",EnableUserData:!1,SortBy:"ChannelNumber,SortName"},query),userSettings.addLiveTvChannelSortingToQuery(query,globalize),apiClient.getLiveTvChannels(query)}function getOnNowListOptions(items){return getListOptions(items,"play",{fields:["CurrentProgramName","CurrentProgramParentNameOrName","CurrentProgramTime"],showCurrentProgramImage:!0,defaultShape:"portrait",action:"programlink",programsAsSeries:!1},{createRecording:!1})}function fetchTags(query){var apiClient=this.apiClient;return apiClient.getLiveTvChannelTags({Fields:"PrimaryImageAspectRatio,ChannelImageIfNoImage",EnableImageTypes:"Primary,Thumb",Recursive:!0,UserId:apiClient.getCurrentUserId(),SortBy:"SortName",Limit:30})}function getTagsListOptions(items){return{renderer:cardBuilder,options:{overlayPlayButton:!1,sideFooter:!0,smallSideFooter:!0,multiSelect:!1,image:!1,imageFallback:!1,imageContainer:!1,hoverMenu:!1,contextMenu:!1,centerText:!0,fields:["Name"],draggable:!1,autoWidth:!0,cardBoxClass:"buttonCardBox",context:"livetv"},virtualScrollLayout:"horizontal-grid"}}function fetchNewEpisodes(query){var apiClient=this.apiClient;return apiClient.getItems(apiClient.getCurrentUserId(),Object.assign({HasAired:!1,IsSports:!1,IsKids:!1,IsNews:!1,IsSeries:!0,Fields:"PrimaryImageAspectRatio,ChannelImageIfNoImage",EnableImageTypes:"Primary,Thumb",IncludeItemTypes:"Program",Recursive:!0,SortBy:"StartDate",GroupProgramsBySeries:!0,IsNewOrPremiere:!0},query))}function fetchEpisodes(query){var apiClient=this.apiClient;return apiClient.getItems(apiClient.getCurrentUserId(),Object.assign({HasAired:!1,IsSports:!1,IsKids:!1,IsNews:!1,IsSeries:!0,Fields:"PrimaryImageAspectRatio,ChannelImageIfNoImage",EnableImageTypes:"Primary,Thumb",IncludeItemTypes:"Program",Recursive:!0,SortBy:"StartDate",GroupProgramsBySeries:!0},query))}function getNewEpisodesListOptions(items){return getListOptions(items,null,{showAirDateTime:!0,fields:["ParentName","Name","AirTime"]})}function getEpisodesListOptions(items){return getListOptions(items,null,{showAirDateTime:!0,fields:["ParentName","Name","AirTime"]})}function fetchMovies(query){var apiClient=this.apiClient;return apiClient.getItems(apiClient.getCurrentUserId(),Object.assign({HasAired:!1,IsMovie:!0,IsKids:!1,Fields:"PrimaryImageAspectRatio,ProductionYear,ChannelImageIfNoImage",EnableImageTypes:"Primary,Thumb",IncludeItemTypes:"Program",Recursive:!0,SortBy:"StartDate",GroupProgramsBySeries:!0},query))}function getMoviesListOptions(items){return getListOptions(items,null,{preferThumb:null,fields:["Name","ProductionYear","AirTime"],showAirDateTime:!0})}function fetchSports(query){var apiClient=this.apiClient;return apiClient.getItems(apiClient.getCurrentUserId(),Object.assign({HasAired:!1,IsSports:!0,Fields:"PrimaryImageAspectRatio,ChannelImageIfNoImage",EnableImageTypes:"Primary,Thumb",IncludeItemTypes:"Program",Recursive:!0,SortBy:"StartDate"},query))}function getSportsListOptions(items){return getListOptions(items,null,{programsAsSeries:!1,fields:["ParentName","Name","AirTime"],showAirDateTime:!0})}function fetchKids(query){var apiClient=this.apiClient;return apiClient.getItems(apiClient.getCurrentUserId(),Object.assign({HasAired:!1,IsKids:!0,Fields:"PrimaryImageAspectRatio,ChannelImageIfNoImage",EnableImageTypes:"Primary,Thumb",IncludeItemTypes:"Program",Recursive:!0,SortBy:"StartDate",GroupProgramsBySeries:!0},query))}function getKidsListOptions(items){return getListOptions(items,null,{showAirDateTime:!0,fields:["ParentName","Name","AirTime"]})}function fetchNews(query){var apiClient=this.apiClient;return apiClient.getItems(apiClient.getCurrentUserId(),Object.assign({HasAired:!1,IsNews:!0,Fields:"PrimaryImageAspectRatio,ChannelImageIfNoImage",EnableImageTypes:"Primary,Thumb",IncludeItemTypes:"Program",Recursive:!0,SortBy:"StartDate",GroupProgramsBySeries:!0},query))}function getNewsListOptions(items){return getListOptions(items,null,{showAirDateTime:!0,fields:["ParentName","Name","AirTime"]})}function onViewClick(e){e=e.target.closest(".textButtonCard");e&&e.closest(".verticalSection").querySelector(".btnMore").click()}function initMoreButtons(view,params){[].forEach.call(view.querySelectorAll(".sectionTitleTextButton-more"),function(link){var href=link.getAttribute("data-href");href&&(link.href=href+"&serverId="+params.serverId)})}function isNotName(n){return"Name"!==n}function isNotParentName(n){return"ParentName"!==n}function isNotAirTime(n){return"AirTime"!==n}function getListOptions(items,overlayButton,options,commandOptions){return options=Object.assign({preferThumb:"auto",inheritThumb:!1,shape:"autooverflow",centerText:!0,overlayPlayButton:"play"===overlayButton,multiSelect:!1,programsAsSeries:!0,focusTransformTitleAdjust:!0},options),items.length&&items[0].AsSeries&&(options.progress=!1,options.showAirDateTime=!1,options.fields=options.fields.filter(isNotName).filter(isNotParentName).filter(isNotAirTime),options.fields.push("ParentNameOrName")),{renderer:cardBuilder,options:options,virtualScrollLayout:"horizontal-grid",commandOptions:commandOptions}}Object.assign(LiveTvSuggestionsTab.prototype,BaseTab.prototype),LiveTvSuggestionsTab.prototype.onResume=function(options){BaseTab.prototype.onResume.apply(this,arguments);var promises=[];promises.push(this.onNowItemsContainer.resume(options)),promises.push(this.tagsItemsContainer.resume(options)),promises.push(this.newEpisodeItemsContainer.resume(options)),promises.push(this.episodeItemsContainer.resume(options)),promises.push(this.movieItemsContainer.resume(options)),promises.push(this.sportsItemsContainer.resume(options)),promises.push(this.kidsItemsContainer.resume(options)),promises.push(this.newsItemsContainer.resume(options));let instance=this;return Promise.all(promises).then(function(){options.autoFocus&&instance.autoFocus()})},LiveTvSuggestionsTab.prototype.onPause=function(){BaseTab.prototype.onPause.apply(this,arguments),this.onNowItemsContainer.pause(),this.tagsItemsContainer.pause(),this.newEpisodeItemsContainer.pause(),this.episodeItemsContainer.pause(),this.movieItemsContainer.pause(),this.sportsItemsContainer.pause(),this.kidsItemsContainer.pause(),this.newsItemsContainer.pause()},LiveTvSuggestionsTab.prototype.destroy=function(){BaseTab.prototype.destroy.apply(this,arguments),this.onNowItemsContainer=null,this.tagsItemsContainer=null,this.newEpisodeItemsContainer=null,this.episodeItemsContainer=null,this.movieItemsContainer=null,this.sportsItemsContainer=null,this.kidsItemsContainer=null,this.newsItemsContainer=null};export default LiveTvSuggestionsTab; |