import appRouter from"./../modules/approuter.js";import loading from"./../modules/loading/loading.js";import cardBuilder from"./../modules/cardbuilder/cardbuilder.js";import{appHost}from"./../modules/common/servicelocator.js";import textEncoding from"./../modules/common/textencoding.js";import globalize from"./../modules/common/globalize.js";import serverNotifications from"./../modules/common/input/api.js";import events from"./../modules/emby-apiclient/events.js";import connectionManager from"./../modules/emby-apiclient/connectionmanager.js";import"./../modules/emby-elements/emby-button/emby-button.js";import"./../modules/emby-elements/emby-itemscontainer/emby-itemscontainer.js";import BaseView from"./../modules/viewmanager/baseview.js";import ActivityLog from"./../components/activitylog.js";function showPrompt(options){return Emby.importModule("./modules/prompt/prompt.js").then(function(prompt){return prompt(options)})}function showAlert(options){return Emby.importModule("./modules/common/dialogs/alert.js").then(function(alert){return alert(options)})}function showActionSheet(options){return Emby.importModule("./modules/actionsheet/actionsheet.js").then(function(ActionSheet){return ActionSheet.show(options)})}function confirmRestartOrShutdown(options){return Emby.importModule("./modules/common/servershutdown.js").then(function(ServerShutdown){return ServerShutdown.confirmRestartOrShutdown(options)})}function buttonEnabled(elem,enabled){enabled?(elem.setAttribute("disabled",""),elem.removeAttribute("disabled")):elem.setAttribute("disabled","disabled")}function showEditServerNameDialog(page){showPrompt({label:globalize.translate("LabelFriendlyServerName"),description:globalize.translate("LabelFriendlyServerNameHelp"),value:page.querySelector(".serverNameHeader").innerHTML,confirmText:globalize.translate("Save")}).then(function(value){loading.show(),ApiClient.getServerConfiguration().then(function(config){config.ServerName=value,ApiClient.updateServerConfiguration(config).then(function(){page.querySelector(".serverNameHeader").innerHTML=textEncoding.htmlEncode(value),loading.hide()})})})}require(["flexStyles","css!dashboard/dashboard.css"]);let DashboardPage={startInterval:function(apiClient){apiClient.startMessageListener("Sessions","0,1500,0,true,true"),apiClient.startMessageListener("ScheduledTasksInfo","0,1000")},stopInterval:function(apiClient){apiClient.stopMessageListener("Sessions"),apiClient.stopMessageListener("ScheduledTasksInfo")},systemUpdateTaskKey:"SystemUpdateTask",renderUrls:function(page,systemInfo){var localAccessHtml,localUrlElem=page.querySelector(".localUrl"),page=page.querySelector(".externalUrl");systemInfo.LocalAddress?(localAccessHtml=globalize.translate("LabelLocalAccessUrl",''+systemInfo.LocalAddress+""),localUrlElem.innerHTML=localAccessHtml,localUrlElem.classList.remove("hide")):localUrlElem.classList.add("hide"),systemInfo.WanAddress?(localAccessHtml=systemInfo.WanAddress,localUrlElem=globalize.translate("LabelRemoteAccessUrl",''+localAccessHtml+""),page.innerHTML=localUrlElem,page.classList.remove("hide")):page.classList.add("hide")},renderSupporterIcon:function(page,pluginSecurityInfo){page=page.querySelector(".supporterIconContainer");pluginSecurityInfo.IsMBSupporter?(page.classList.remove("hide"),page.innerHTML='
'):page.classList.add("hide")},installPluginUpdate:function(button){buttonEnabled(button,!1);var name=button.getAttribute("data-name"),guid=button.getAttribute("data-guid"),version=button.getAttribute("data-version"),button=button.getAttribute("data-classification");loading.show(),ApiClient.installPlugin(name,guid,button,version).then(function(){loading.hide()})},restartServer:function(){require(["serverRestartDialog"],function(ServerRestartDialog){new ServerRestartDialog({apiClient:ApiClient}).show()})},restart:function(btn){confirmRestartOrShutdown({apiClient:ApiClient,type:"restart"}).then(function(){DashboardPage.restartServer()})},shutdown:function(btn){confirmRestartOrShutdown({apiClient:ApiClient,type:"shutdown"}).then(function(){ApiClient.shutdownServer()})}};function getServerInfoRow(name,value){var html="";return html+"
"+'| '+globalize.translate(name)+" | "+''+value+" | "+"
"}function getServerInfoSectionName(name){var html="";return html+""+''+(''+globalize.translate(name)+"")+" | "+''+" | "+"
"}function showServerInfo(){ApiClient.getSystemInfo().then(function(systemInfo){var html="";showAlert({html:(html+='')+getServerInfoRow(globalize.translate("Version"),systemInfo.Version)+getServerInfoSectionName(globalize.translate("Folders"))+getServerInfoRow(globalize.translate("HeaderProgramData"),systemInfo.ProgramDataPath)+getServerInfoRow(globalize.translate("Cache"),systemInfo.CachePath)+getServerInfoRow(globalize.translate("Metadata"),systemInfo.InternalMetadataPath)+getServerInfoRow(globalize.translate("Logs"),systemInfo.LogPath)+getServerInfoRow(globalize.translate("HeaderTranscodingTemporaryFiles"),systemInfo.TranscodingTempPath)+"
",title:systemInfo.ServerName})})}function onShowServerMenuClick(e){let btn=e.target;e=[];return e.push({name:globalize.translate("ChangeServerDisplayName"),id:"editname",icon:"edit"}),e.push({name:globalize.translate("HeaderViewServerInfo"),id:"serverinfo",icon:"insights"}),showActionSheet({items:e,positionTo:btn,positionY:"center",positionX:"after",transformOrigin:"left top",hasItemIcon:!0}).then(function(id){switch(id){case"editname":showEditServerNameDialog(btn.closest(".page"));break;case"restart":DashboardPage.restart(btn);break;case"shutdown":DashboardPage.shutdown(btn);break;case"serverinfo":showServerInfo()}},function(){})}function onUpdateServerClick(){let page=this.closest(".page");buttonEnabled(page.querySelector(".btnUpdateApplication"),!1),loading.show(),ApiClient.getScheduledTasks().then(function(tasks){tasks=tasks.filter(function(t){return t.Key===DashboardPage.systemUpdateTaskKey})[0];ApiClient.startScheduledTask(tasks.Id).then(function(){pollScheduledTasks(page,ApiClient),loading.hide()})})}function onPowerMenuClick(e){ApiClient.getSystemInfo().then(function(systemInfo){let btn=e.target;var menuItems=[];return systemInfo.CanSelfRestart&&menuItems.push({name:globalize.translate("RestartServer"),id:"restart",icon:""}),menuItems.push({name:globalize.translate("ShutdownServer"),id:"shutdown",icon:""}),showActionSheet({items:menuItems,positionTo:btn,positionY:"center",positionX:"after",transformOrigin:"left top",hasItemIcon:!0}).then(function(id){switch(id){case"editname":showEditServerNameDialog(btn.closest(".page"));break;case"restart":DashboardPage.restart(btn);break;case"shutdown":DashboardPage.shutdown(btn)}})})}function getPluginSecurityInfo(){var apiClient=window.ApiClient;return apiClient?connectionManager.getRegistrationInfo("themes",apiClient,{viewOnly:!0}).then(function(result){return{IsMBSupporter:!0}},function(){return{IsMBSupporter:!1}}):Promise.reject()}function getActiveRecordings(){var apiClient=ApiClient;return apiClient.getLiveTvRecordings({UserId:apiClient.getCurrentUserId(),IsInProgress:!0,Fields:this.getRequestedItemFields()+",PrimaryImageAspectRatio",EnableTotalRecordCount:!1,EnableImageTypes:"Primary,Thumb,Backdrop"})}function getActiveRecordingsListOptions(items){return{renderer:cardBuilder,options:{shape:"auto",defaultShape:"backdrop",fields:["ParentName","Name","ChannelName","AirTime"],cardLayout:!1,centerText:!0,preferThumb:"auto",multiSelect:!1,showAirEndTime:!0},virtualScrollLayout:"vertical-grid"}}function sortSessions(a,b){return a.NowPlayingItem&&!b.NowPlayingItem?-1:b.NowPlayingItem&&!a.NowPlayingItem?1:0}function filterSessions(sessions,apiClient){var list=[],serverId=apiClient.serverId();for(let i=0,length=sessions.length;i'+versionText+"");systemInfo.SystemUpdateLevel&&"Release"!==systemInfo.SystemUpdateLevel?(localizedVersion+=" "+globalize.translate("Option"+systemInfo.SystemUpdateLevel).toLowerCase(),view.querySelector(".betaInfo").classList.remove("hide")):view.querySelector(".betaInfo").classList.add("hide"),view.querySelector(".appVersionNumber").innerHTML=localizedVersion,systemInfo.SupportsHttps?view.querySelector(".ports").innerHTML=globalize.translate("LabelRunningOnPorts",systemInfo.HttpServerPortNumber,systemInfo.HttpsPortNumber):view.querySelector(".ports").innerHTML=globalize.translate("LabelRunningOnPort",systemInfo.HttpServerPortNumber),DashboardPage.renderUrls(view,systemInfo),systemInfo.CanSelfUpdate?(view.querySelector(".btnUpdateApplication").classList.remove("hide"),view.querySelector(".btnManualUpdateContainer").classList.add("hide")):(view.querySelector(".btnUpdateApplication").classList.add("hide"),view.querySelector(".btnManualUpdateContainer").classList.remove("hide")),view.querySelector(".btnManualUpdateContainer").innerHTML="synology"===systemInfo.PackageName?globalize.translate("SynologyUpdateInstructions"):''+globalize.translate("PleaseUpdateManually")+"",renderHasPendingRestart(view,apiClient,systemInfo.ServerName,systemInfo.HasPendingRestart,systemInfo.IsShuttingDown,systemInfo.HasUpdateAvailable)})}function pollScheduledTasks(view,apiClient){apiClient.getScheduledTasks().then(function(tasks){renderRunningTasks(view,tasks)})}function renderRunningTasks(view,tasks){let html="";(tasks=tasks.filter(function(t){return"Idle"!==t.State&&!t.IsHidden})).length?view.querySelector(".runningTasksContainer").classList.remove("hide"):view.querySelector(".runningTasksContainer").classList.add("hide"),tasks.filter(function(t){return t.Key===DashboardPage.systemUpdateTaskKey}).length?buttonEnabled(view.querySelector(".btnUpdateApplication"),!1):buttonEnabled(view.querySelector(".btnUpdateApplication"),!0);for(let i=0,length=tasks.length;i")+(""+task.Name+"
")+'',"Running"===task.State?(progress=(task.CurrentProgressPercentage||0).toFixed(1),html=(html=(html+='
')+'
'):"Cancelling"===task.State&&(html+='
'+globalize.translate("LabelStopping")+""),html=html+"
"+""}view.querySelector(".divRunningTasks").innerHTML=html}function updateSwaggerLink(view,apiClient){var swaggerUrl="https://swagger.emby.media",apiClient=(swaggerUrl=(swaggerUrl+="?api_key="+apiClient.accessToken())+("&url="+encodeURIComponent(apiClient.getUrl("openapi",{serverUrl:apiClient.serverAddress()}))),view.querySelector(".swaggerLink"));apiClient.setAttribute("href",swaggerUrl),appHost.supports("externallinks")?apiClient.classList.remove("hide"):apiClient.classList.add("hide")}function ServerDashboardView(view,params){BaseView.apply(this,arguments);let self=this,serverId=ApiClient.serverId();function onRestartRequired(e,apiClient){var serverName;apiClient.serverId()===serverId&&(serverName=view.querySelector(".serverNameHeader").innerHTML,renderHasPendingRestart(view,apiClient,serverName,!0))}function onServerShuttingDown(e,apiClient){var serverName;apiClient.serverId()===serverId&&(serverName=view.querySelector(".serverNameHeader").innerHTML,renderHasPendingRestart(view,apiClient,serverName,!0,!0))}function onServerRestarting(e,apiClient){var serverName;apiClient.serverId()===serverId&&(serverName=view.querySelector(".serverNameHeader").innerHTML,renderHasPendingRestart(view,apiClient,serverName,!0,!0))}function onPackageInstalling(e,apiClient){apiClient.serverId()===serverId&&(pollScheduledTasks(view,apiClient,!0),reloadSystemInfo(view,apiClient))}function onPackageInstallationCompleted(e,apiClient){apiClient.serverId()===serverId&&(pollScheduledTasks(view,apiClient,!0),reloadSystemInfo(view,apiClient))}function setNowPlayingItems(items){var itemsContainer=self.nowPlayingSessionsItemsContainer;if(((itemsContainer,items)=>{var lookup={};for(let i=0,length=items.length;i",page.querySelector(".dashboardContainer").insertAdjacentHTML("afterbegin",supporterPromotionElem))}),reloadSystemInfo(page,ApiClient))}),view.querySelector(".betaInfoBanner").innerHTML=globalize.translate("BetaTesterMessage",'',""),view.addEventListener("viewbeforehide",function(){events.off(serverNotifications,"RestartRequired",onRestartRequired),events.off(serverNotifications,"ServerShuttingDown",onServerShuttingDown),events.off(serverNotifications,"ServerRestarting",onServerRestarting),events.off(serverNotifications,"PackageInstalling",onPackageInstalling),events.off(serverNotifications,"PackageInstallationCompleted",onPackageInstallationCompleted),events.off(serverNotifications,"Sessions",onSessionsUpdate),events.off(serverNotifications,"ScheduledTasksInfo",onScheduledTasksUpdate)})}window.stopDashboardTask=function(btn,id){let page=btn.closest(".page");ApiClient.stopScheduledTask(id).then(function(){pollScheduledTasks(page,ApiClient)})},Object.assign(ServerDashboardView.prototype,BaseView.prototype),ServerDashboardView.prototype.onResume=function(options){BaseView.prototype.onResume.apply(this,arguments),this.activeRecordingsItemsContainer.resume(options),this.nowPlayingSessionsItemsContainer.resume(Object.assign(options,{refresh:!0}));var apiClient=ApiClient;if(apiClient){try{this.userActivityLog?this.userActivityLog.resume(options):this.userActivityLog=new ActivityLog({serverId:apiClient.serverId(),element:this.view.querySelector(".userActivityItems")}),this.serverActivityLog?this.serverActivityLog.resume(options):this.serverActivityLog=new ActivityLog({serverId:apiClient.serverId(),element:this.view.querySelector(".serverActivityItems")})}catch(e){console.error("Error loading activity logs",e)}updateSwaggerLink(this.view,apiClient),options.autoFocus&&this.autoFocus()}},ServerDashboardView.prototype.onPause=function(){BaseView.prototype.onPause.apply(this,arguments);var apiClient=ApiClient;apiClient&&DashboardPage.stopInterval(apiClient),this.activeRecordingsItemsContainer.pause(),this.nowPlayingSessionsItemsContainer.pause(),this.userActivityLog&&this.userActivityLog.pause(),this.serverActivityLog&&this.serverActivityLog.pause()},ServerDashboardView.prototype.destroy=function(){BaseView.prototype.destroy.apply(this,arguments);var userActivityLog=this.userActivityLog,userActivityLog=(userActivityLog&&(userActivityLog.destroy(),this.userActivityLog=null),this.serverActivityLog);userActivityLog&&(userActivityLog.destroy(),this.serverActivityLog=null),this.activeRecordingsItemsContainer=null,this.nowPlayingSessionsItemsContainer=null,this._activeSessions=null};export default ServerDashboardView;