EmbyCrackedClient/web/modules/indicators/indicators.js

1 line
3.8 KiB
JavaScript
Raw Permalink Normal View History

2025-06-25 11:46:04 +08:00
import itemManager from"./../common/itemmanager/itemmanager.js";import ApiClient from"./../emby-apiclient/apiclient.js";require(["css!modules/indicators/indicators.css","material-icons"]);let progressBarRequired;function getProgressHtml(pct,options){progressBarRequired||(progressBarRequired=!0,Emby.importModule("./modules/emby-elements/emby-progressbar/emby-progressbar.js"));let containerClass="itemProgressBar";return options&&options.containerClass&&(containerClass+=" "+options.containerClass),'<div class="'+containerClass+'"><div class="itemProgressBarForeground" style="width:'+pct+'%;"></div></div>'}function getAutoTimeProgressHtml(pct,options,isRecording,start,end){progressBarRequired||(progressBarRequired=!0,Emby.importModule("./modules/emby-elements/emby-progressbar/emby-progressbar.js"));let containerClass="itemProgressBar",foregroundClass="itemProgressBarForeground";return options&&options.containerClass&&(containerClass+=" "+options.containerClass),isRecording&&(foregroundClass+=" itemProgressBarForeground-recording"),'<div is="emby-progressbar" data-automode="time" data-starttime="'+start+'" data-endtime="'+end+'" class="'+containerClass+'"><div class="'+foregroundClass+'" style="width:'+pct+'%;"></div></div>'}function getProgressBarHtml(item,options){var itemType=item.Type;switch(itemType){case"Program":case"Timer":case"Recording":case"TvChannel":if((item=item.CurrentProgram||item).StartDate&&item.EndDate){let startDate=0,endDate=1;try{startDate=Date.parse(item.StartDate)}catch(err){}try{endDate=Date.parse(item.EndDate)}catch(err){}var now=Date.now(),total=endDate-startDate,now=(now-startDate)/total*100;if(0<now&&now<100)return getAutoTimeProgressHtml(now,options,"Timer"===itemType||"Recording"===itemType||item.TimerId,startDate,endDate)}break;case"ActiveSession":total=item.PlayState,now=item.NowPlayingItem;if(total&&now&&now.RunTimeTicks){let html=getProgressHtml(100*(total.PositionTicks||0)/now.RunTimeTicks,{});return item.TranscodingInfo&&item.TranscodingInfo.CompletionPercentage&&(html+=getProgressHtml(item.TranscodingInfo.CompletionPercentage,{containerClass:"sessionTranscodingProgress"})),html}break;default:if(!item.IsFolder){total=options&&options.userData||item.UserData;if(total){let pct=total.PlayedPercentage;if(pct&&pct<100)return getProgressHtml(pct,options)}}}return""}function getPlayedIndicator(item,classNamePrefix){var userData=item.UserData;if(userData){let className;if(userData.Played)return item.IsFolder&&"MusicAlbum"!==item.Type||!itemManager.canMarkPlayed(item)?"":'<i class="'+(className=classNamePrefix?classNamePrefix+"PlayedIndicator ":"")+'playedIndicator md-icon">&#xe5CA;</i>';if(userData.UnplayedItemCount)return itemManager.canMarkPlayed(item)&&!ApiClient.isLocalItem(item)?'<div class="'+(className=classNamePrefix?classNamePrefix+"CountIndicator ":"")+'CountIndicator countIndicator">'+userData.UnplayedItemCount+"</div>":""}return""}function getTimerIndicator(item,classNamePrefix){let status;var itemType=(item=item.CurrentProgram||item).Type,classNamePrefix=classNamePrefix?classNamePrefix+"TimerIndicator ":"";if("SeriesTimer"===itemType)return'<i class="'+classNamePrefix+'md-icon md-icon-fill timerIndicator seriesTimerIndicator indicatorIcon">&#xe062;</i>';if(item.TimerId||item.SeriesTimerId)status=item.Status||"Cancelled";else{if("Timer"!==itemType)return"";status=item.Status}return item.SeriesTimerId?"Cancelled"!==status?'<i class="'+classNamePrefix+'md-icon md-icon-fill timerIndicator seriesTimerIndicator indicatorIcon">&#xe062;</i>':'<i class="'+classNamePrefix+'md-icon md-icon-fill timerIndicator seriesTimerIndicator timerIndicator-inactive indicatorIcon">&#xe062;</i>':'<i class="'+classNamePrefix+'md-icon md-icon-fill timerIndicator indicatorIcon">&#xe061;</i>'}export default{getProgressBarHtml:getProgressBarHtml,getPlayedIndicatorHtml:getPlayedIndicator,getTimerIndicator:getTimerIndicator};