diff --git a/dashboard-ui/components/directorybrowser/directorybrowser.js b/dashboard-ui/components/directorybrowser/directorybrowser.js index 9fcf64a4e4..ce7ae8f7a2 100644 --- a/dashboard-ui/components/directorybrowser/directorybrowser.js +++ b/dashboard-ui/components/directorybrowser/directorybrowser.js @@ -1 +1 @@ -define(["dialogHelper","dom","listViewStyle","emby-input","emby-button","paper-icon-button-light","css!./directorybrowser","formDialogStyle"],function(dialogHelper,dom){"use strict";function getSystemInfo(){return systemInfo?Promise.resolve(systemInfo):ApiClient.getPublicSystemInfo().then(function(info){return systemInfo=info,info})}function onDialogClosed(){Dashboard.hideLoadingMsg()}function refreshDirectoryBrowser(page,path,fileOptions){if(path&&"string"!=typeof path)throw new Error("invalid path");Dashboard.showLoadingMsg();var promises=[];"Network"===path?promises.push(ApiClient.getNetworkDevices()):path?(promises.push(ApiClient.getDirectoryContents(path,fileOptions)),promises.push(ApiClient.getParentPath(path))):promises.push(ApiClient.getDrives()),Promise.all(promises).then(function(responses){var folders=responses[0],parentPath=responses[1]||"";page.querySelector("#txtDirectoryPickerPath").value=path||"";var html="";path&&(html+=getItem("lnkPath lnkDirectory","",parentPath,"..."));for(var i=0,length=folders.length;i',html+='
',html+='
',html+=name,html+="
",html+="
",html+='arrow_forward',html+=""}function getEditorHtml(options,systemInfo){var html="";if(html+='
',html+='
',!options.pathReadOnly){var instruction=options.instruction?options.instruction+"

":"";html+='
',html+=instruction,html+=Globalize.translate("MessageDirectoryPickerInstruction").replace("{0}","\\\\server").replace("{1}","\\\\192.168.1.101"),"bsd"==systemInfo.OperatingSystem.toLowerCase()?(html+="
",html+="
",html+=Globalize.translate("MessageDirectoryPickerBSDInstruction"),html+="
",html+=''+Globalize.translate("ButtonMoreInformation")+""):"linux"==systemInfo.OperatingSystem.toLowerCase()&&(html+="
",html+="
",html+=Globalize.translate("MessageDirectoryPickerLinuxInstruction"),html+="
"),html+="
"}html+='
',html+='
',html+='
';var labelKey=options.includeFiles!==!0?"LabelFolder":"LabelPath",readOnlyAttribute=options.pathReadOnly?" readonly":"";return html+='',html+="
",readOnlyAttribute||(html+=''),html+="
",readOnlyAttribute||(html+='
'),options.enableNetworkSharePath&&(html+='
',html+='',html+='
',html+=Globalize.translate("LabelOptionalNetworkPathHelp"),html+="
",html+="
"),html+='
',html+='",html+="
",html+="
",html+="
",html+="
",html+=""}function initEditor(content,options,fileOptions){content.addEventListener("click",function(e){var lnkPath=dom.parentWithClass(e.target,"lnkPath");if(lnkPath){var path=lnkPath.getAttribute("data-path");lnkPath.classList.contains("lnkFile")?content.querySelector("#txtDirectoryPickerPath").value=path:refreshDirectoryBrowser(content,path,fileOptions)}}),content.addEventListener("click",function(e){var btnRefreshDirectories=dom.parentWithClass(e.target,"btnRefreshDirectories");if(btnRefreshDirectories){var path=content.querySelector("#txtDirectoryPickerPath").value;refreshDirectoryBrowser(content,path,fileOptions)}}),content.addEventListener("change",function(e){var txtDirectoryPickerPath=dom.parentWithTag(e.target,"INPUT");txtDirectoryPickerPath&&"txtDirectoryPickerPath"==txtDirectoryPickerPath.id&&refreshDirectoryBrowser(content,txtDirectoryPickerPath.value,fileOptions)}),content.querySelector("form").addEventListener("submit",function(e){if(options.callback){var networkSharePath=this.querySelector("#txtNetworkPath");networkSharePath=networkSharePath?networkSharePath.value:null,options.callback(this.querySelector("#txtDirectoryPickerPath").value,networkSharePath)}return e.preventDefault(),e.stopPropagation(),!1})}function getDefaultPath(options){return options.path?Promise.resolve(options.path):ApiClient.getJSON(ApiClient.getUrl("Environment/DefaultDirectoryBrowser")).then(function(result){return result.Path||""},function(){return""})}function directoryBrowser(){var currentDialog,self=this;self.show=function(options){options=options||{};var fileOptions={includeDirectories:!0};null!=options.includeDirectories&&(fileOptions.includeDirectories=options.includeDirectories),null!=options.includeFiles&&(fileOptions.includeFiles=options.includeFiles),Promise.all([getSystemInfo(),getDefaultPath(options)]).then(function(responses){var systemInfo=responses[0],initialPath=responses[1],dlg=dialogHelper.createDialog({size:"medium-tall",removeOnClose:!0,scrollY:!1});dlg.classList.add("ui-body-a"),dlg.classList.add("background-theme-a"),dlg.classList.add("directoryPicker"),dlg.classList.add("formDialog");var html="";html+='
',html+='',html+='

',html+=options.header||Globalize.translate("HeaderSelectPath"),html+="

",html+="
",html+=getEditorHtml(options,systemInfo),dlg.innerHTML=html,initEditor(dlg,options,fileOptions),dlg.addEventListener("close",onDialogClosed),dialogHelper.open(dlg),dlg.querySelector(".btnCloseDialog").addEventListener("click",function(){dialogHelper.close(dlg)}),currentDialog=dlg;var txtCurrentPath=dlg.querySelector("#txtDirectoryPickerPath");txtCurrentPath.value=initialPath;var txtNetworkPath=dlg.querySelector("#txtNetworkPath");txtNetworkPath&&(txtNetworkPath.value=options.networkSharePath||""),options.pathReadOnly||refreshDirectoryBrowser(dlg,txtCurrentPath.value)})},self.close=function(){currentDialog&&dialogHelper.close(currentDialog)}}var systemInfo;return directoryBrowser}); \ No newline at end of file +define(["loading","dialogHelper","dom","listViewStyle","emby-input","emby-button","paper-icon-button-light","css!./directorybrowser","formDialogStyle"],function(loading,dialogHelper,dom){"use strict";function getSystemInfo(){return systemInfo?Promise.resolve(systemInfo):ApiClient.getPublicSystemInfo().then(function(info){return systemInfo=info,info})}function onDialogClosed(){loading.hide()}function refreshDirectoryBrowser(page,path,fileOptions){if(path&&"string"!=typeof path)throw new Error("invalid path");loading.show();var promises=[];"Network"===path?promises.push(ApiClient.getNetworkDevices()):path?(promises.push(ApiClient.getDirectoryContents(path,fileOptions)),promises.push(ApiClient.getParentPath(path))):promises.push(ApiClient.getDrives()),Promise.all(promises).then(function(responses){var folders=responses[0],parentPath=responses[1]||"";page.querySelector("#txtDirectoryPickerPath").value=path||"";var html="";path&&(html+=getItem("lnkPath lnkDirectory","",parentPath,"..."));for(var i=0,length=folders.length;i',html+='
',html+='
',html+=name,html+="
",html+="
",html+='arrow_forward',html+=""}function getEditorHtml(options,systemInfo){var html="";if(html+='
',html+='
',!options.pathReadOnly){var instruction=options.instruction?options.instruction+"

":"";html+='
',html+=instruction,html+=Globalize.translate("MessageDirectoryPickerInstruction").replace("{0}","\\\\server").replace("{1}","\\\\192.168.1.101"),"bsd"==systemInfo.OperatingSystem.toLowerCase()?(html+="
",html+="
",html+=Globalize.translate("MessageDirectoryPickerBSDInstruction"),html+="
",html+=''+Globalize.translate("ButtonMoreInformation")+""):"linux"==systemInfo.OperatingSystem.toLowerCase()&&(html+="
",html+="
",html+=Globalize.translate("MessageDirectoryPickerLinuxInstruction"),html+="
"),html+="
"}html+='
',html+='
',html+='
';var labelKey=options.includeFiles!==!0?"LabelFolder":"LabelPath",readOnlyAttribute=options.pathReadOnly?" readonly":"";return html+='',html+="
",readOnlyAttribute||(html+=''),html+="
",readOnlyAttribute||(html+='
'),options.enableNetworkSharePath&&(html+='
',html+='',html+='
',html+=Globalize.translate("LabelOptionalNetworkPathHelp"),html+="
",html+="
"),html+='
',html+='",html+="
",html+="
",html+="
",html+="
",html+=""}function initEditor(content,options,fileOptions){content.addEventListener("click",function(e){var lnkPath=dom.parentWithClass(e.target,"lnkPath");if(lnkPath){var path=lnkPath.getAttribute("data-path");lnkPath.classList.contains("lnkFile")?content.querySelector("#txtDirectoryPickerPath").value=path:refreshDirectoryBrowser(content,path,fileOptions)}}),content.addEventListener("click",function(e){var btnRefreshDirectories=dom.parentWithClass(e.target,"btnRefreshDirectories");if(btnRefreshDirectories){var path=content.querySelector("#txtDirectoryPickerPath").value;refreshDirectoryBrowser(content,path,fileOptions)}}),content.addEventListener("change",function(e){var txtDirectoryPickerPath=dom.parentWithTag(e.target,"INPUT");txtDirectoryPickerPath&&"txtDirectoryPickerPath"==txtDirectoryPickerPath.id&&refreshDirectoryBrowser(content,txtDirectoryPickerPath.value,fileOptions)}),content.querySelector("form").addEventListener("submit",function(e){if(options.callback){var networkSharePath=this.querySelector("#txtNetworkPath");networkSharePath=networkSharePath?networkSharePath.value:null,options.callback(this.querySelector("#txtDirectoryPickerPath").value,networkSharePath)}return e.preventDefault(),e.stopPropagation(),!1})}function getDefaultPath(options){return options.path?Promise.resolve(options.path):ApiClient.getJSON(ApiClient.getUrl("Environment/DefaultDirectoryBrowser")).then(function(result){return result.Path||""},function(){return""})}function directoryBrowser(){var currentDialog,self=this;self.show=function(options){options=options||{};var fileOptions={includeDirectories:!0};null!=options.includeDirectories&&(fileOptions.includeDirectories=options.includeDirectories),null!=options.includeFiles&&(fileOptions.includeFiles=options.includeFiles),Promise.all([getSystemInfo(),getDefaultPath(options)]).then(function(responses){var systemInfo=responses[0],initialPath=responses[1],dlg=dialogHelper.createDialog({size:"medium-tall",removeOnClose:!0,scrollY:!1});dlg.classList.add("ui-body-a"),dlg.classList.add("background-theme-a"),dlg.classList.add("directoryPicker"),dlg.classList.add("formDialog");var html="";html+='
',html+='',html+='

',html+=options.header||Globalize.translate("HeaderSelectPath"),html+="

",html+="
",html+=getEditorHtml(options,systemInfo),dlg.innerHTML=html,initEditor(dlg,options,fileOptions),dlg.addEventListener("close",onDialogClosed),dialogHelper.open(dlg),dlg.querySelector(".btnCloseDialog").addEventListener("click",function(){dialogHelper.close(dlg)}),currentDialog=dlg;var txtCurrentPath=dlg.querySelector("#txtDirectoryPickerPath");txtCurrentPath.value=initialPath;var txtNetworkPath=dlg.querySelector("#txtNetworkPath");txtNetworkPath&&(txtNetworkPath.value=options.networkSharePath||""),options.pathReadOnly||refreshDirectoryBrowser(dlg,txtCurrentPath.value)})},self.close=function(){currentDialog&&dialogHelper.close(currentDialog)}}var systemInfo;return directoryBrowser}); \ No newline at end of file diff --git a/dashboard-ui/components/favoriteitems.js b/dashboard-ui/components/favoriteitems.js index db80dfa5a1..89a491e3fb 100644 --- a/dashboard-ui/components/favoriteitems.js +++ b/dashboard-ui/components/favoriteitems.js @@ -1 +1 @@ -define(["libraryBrowser","cardBuilder","dom","apphost","imageLoader","scrollStyles","emby-itemscontainer"],function(libraryBrowser,cardBuilder,dom,appHost,imageLoader){"use strict";function enableScrollX(){return browserInfo.mobile}function getThumbShape(){return enableScrollX()?"overflowBackdrop":"backdrop"}function getPosterShape(){return enableScrollX()?"overflowPortrait":"portrait"}function getSquareShape(){return enableScrollX()?"overflowSquare":"square"}function getSections(){return[{name:"HeaderFavoriteMovies",types:"Movie",id:"favoriteMovies",shape:getPosterShape(),showTitle:!1,overlayPlayButton:!0},{name:"HeaderFavoriteShows",types:"Series",id:"favoriteShows",shape:getPosterShape(),showTitle:!1,overlayPlayButton:!0},{name:"HeaderFavoriteEpisodes",types:"Episode",id:"favoriteEpisode",shape:getThumbShape(),preferThumb:!1,showTitle:!0,showParentTitle:!0,overlayPlayButton:!0,overlayText:!1,centerText:!0},{name:"HeaderFavoriteVideos",types:"Video,MusicVideo",id:"favoriteVideos",shape:getThumbShape(),preferThumb:!0,showTitle:!0,overlayPlayButton:!0,overlayText:!1,centerText:!0},{name:"HeaderFavoriteGames",types:"Game",id:"favoriteGames",shape:getSquareShape(),preferThumb:!1,showTitle:!0},{name:"HeaderFavoriteArtists",types:"MusicArtist",id:"favoriteArtists",shape:getSquareShape(),preferThumb:!1,showTitle:!0,overlayText:!1,showParentTitle:!1,centerText:!0,overlayPlayButton:!0,autoCardLayout:!0},{name:"HeaderFavoriteAlbums",types:"MusicAlbum",id:"favoriteAlbums",shape:getSquareShape(),preferThumb:!1,showTitle:!0,overlayText:!1,showParentTitle:!0,centerText:!0,overlayPlayButton:!0,autoCardLayout:!0},{name:"HeaderFavoriteSongs",types:"Audio",id:"favoriteSongs",shape:getSquareShape(),preferThumb:!1,showTitle:!0,overlayText:!1,showParentTitle:!0,centerText:!0,overlayMoreButton:!0,action:"instantmix",autoCardLayout:!0}]}function loadSection(elem,userId,topParentId,section,isSingleSection){var screenWidth=dom.getWindowSize().innerWidth,options={SortBy:"SortName",SortOrder:"Ascending",Filters:"IsFavorite",Recursive:!0,Fields:"PrimaryImageAspectRatio,BasicSyncInfo",CollapseBoxSetItems:!1,ExcludeLocationTypes:"Virtual",EnableTotalRecordCount:!1};topParentId&&(options.ParentId=topParentId),isSingleSection||(options.Limit=screenWidth>=1920?10:screenWidth>=1440?8:6,enableScrollX()&&(options.Limit=20));var promise;return"MusicArtist"==section.types?promise=ApiClient.getArtists(userId,options):(options.IncludeItemTypes=section.types,promise=ApiClient.getItems(userId,options)),promise.then(function(result){var html="";if(result.Items.length){if(html+="
",html+='

'+Globalize.translate(section.name)+"

",options.Limit&&result.Items.length>=options.Limit){var href="secondaryitems.html?type="+section.types+"&filters=IsFavorite";html+='"}html+="
",html+=enableScrollX()?'
':'
';var supportsImageAnalysis=appHost.supports("imageanalysis"),cardLayout=(appHost.preferVisualCards||supportsImageAnalysis)&§ion.autoCardLayout&§ion.showTitle;html+=cardBuilder.getCardsHtml(result.Items,{preferThumb:section.preferThumb,shape:section.shape,centerText:section.centerText&&!cardLayout,overlayText:section.overlayText!==!1,showTitle:section.showTitle,showParentTitle:section.showParentTitle,scalable:!0,overlayPlayButton:section.overlayPlayButton,overlayMoreButton:section.overlayMoreButton&&!cardLayout,action:section.action,allowBottomPadding:!enableScrollX(),cardLayout:cardLayout,vibrant:supportsImageAnalysis&&cardLayout}),html+="
"}elem.innerHTML=html,imageLoader.lazyChildren(elem)})}function loadSections(page,userId,topParentId,types){Dashboard.showLoadingMsg();var sections=getSections(),sectionid=getParameterByName("sectionid");sectionid&&(sections=sections.filter(function(s){return s.id==sectionid})),types&&(sections=sections.filter(function(s){return types.indexOf(s.id)!=-1}));var i,length,elem=page.querySelector(".favoriteSections");if(!elem.innerHTML){var html="";for(i=0,length=sections.length;i
';elem.innerHTML=html}var promises=[];for(i=0,length=sections.length;i=1920?10:screenWidth>=1440?8:6,enableScrollX()&&(options.Limit=20));var promise;return"MusicArtist"==section.types?promise=ApiClient.getArtists(userId,options):(options.IncludeItemTypes=section.types,promise=ApiClient.getItems(userId,options)),promise.then(function(result){var html="";if(result.Items.length){if(html+="
",html+='

'+Globalize.translate(section.name)+"

",options.Limit&&result.Items.length>=options.Limit){var href="secondaryitems.html?type="+section.types+"&filters=IsFavorite";html+='"}html+="
",html+=enableScrollX()?'
':'
';var supportsImageAnalysis=appHost.supports("imageanalysis"),cardLayout=(appHost.preferVisualCards||supportsImageAnalysis)&§ion.autoCardLayout&§ion.showTitle;html+=cardBuilder.getCardsHtml(result.Items,{preferThumb:section.preferThumb,shape:section.shape,centerText:section.centerText&&!cardLayout,overlayText:section.overlayText!==!1,showTitle:section.showTitle,showParentTitle:section.showParentTitle,scalable:!0,overlayPlayButton:section.overlayPlayButton,overlayMoreButton:section.overlayMoreButton&&!cardLayout,action:section.action,allowBottomPadding:!enableScrollX(),cardLayout:cardLayout,vibrant:supportsImageAnalysis&&cardLayout}),html+="
"}elem.innerHTML=html,imageLoader.lazyChildren(elem)})}function loadSections(page,userId,topParentId,types){loading.show();var sections=getSections(),sectionid=getParameterByName("sectionid");sectionid&&(sections=sections.filter(function(s){return s.id==sectionid})),types&&(sections=sections.filter(function(s){return types.indexOf(s.id)!=-1}));var i,length,elem=page.querySelector(".favoriteSections");if(!elem.innerHTML){var html="";for(i=0,length=sections.length;i
';elem.innerHTML=html}var promises=[];for(i=0,length=sections.length;i'+s.Name+""}).join(""),existingSeriesHtml=''+existingSeriesHtml,context.querySelector("#selectSeries").innerHTML=existingSeriesHtml,ApiClient.getVirtualFolders().then(function(result){for(var seriesLocations=[],n=0;n'+s.display+""}).join("");seriesLocations.length>1&&(seriesFolderHtml=''+seriesFolderHtml),context.querySelector("#selectSeriesFolder").innerHTML=seriesFolderHtml},onApiFailure)},onApiFailure)}function submitEpisodeForm(dlg){Dashboard.showLoadingMsg();var resultId=dlg.querySelector("#hfResultId").value,seriesId=dlg.querySelector("#selectSeries").value,targetFolder=null,newProviderIds=null,newSeriesName=null,newSeriesYear=null;"##NEW##"==seriesId&&null!=currentNewItem&&(seriesId=null,newProviderIds=JSON.stringify(currentNewItem.ProviderIds),newSeriesName=currentNewItem.Name,newSeriesYear=currentNewItem.ProductionYear,targetFolder=dlg.querySelector("#selectSeriesFolder").value);var options={SeriesId:seriesId,SeasonNumber:dlg.querySelector("#txtSeason").value,EpisodeNumber:dlg.querySelector("#txtEpisode").value,EndingEpisodeNumber:dlg.querySelector("#txtEndingEpisode").value,RememberCorrection:dlg.querySelector("#chkRememberCorrection").checked,NewSeriesProviderIds:newProviderIds,NewSeriesName:newSeriesName,NewSeriesYear:newSeriesYear,TargetFolder:targetFolder};ApiClient.performEpisodeOrganization(resultId,options).then(function(){Dashboard.hideLoadingMsg(),dlg.submitted=!0,dialogHelper.close(dlg)},onApiFailure)}function showNewSeriesDialog(dlg){return 0==seriesLocationsCount?void require(["alert"],function(alert){alert({title:Globalize.translate("AutoOrganizeError"),text:Globalize.translate("NoTvFoldersConfigured")})}):void require(["itemIdentifier"],function(itemIdentifier){itemIdentifier.showFindNew(extractedName,extractedYear,"Series",ApiClient.serverId()).then(function(newItem){if(null!=newItem){currentNewItem=newItem;var seriesHtml=existingSeriesHtml;seriesHtml=seriesHtml+'",dlg.querySelector("#selectSeries").innerHTML=seriesHtml,selectedSeriesChanged(dlg)}})})}function selectedSeriesChanged(dlg){var seriesId=dlg.querySelector("#selectSeries").value;"##NEW##"==seriesId?(dlg.querySelector(".fldSelectSeriesFolder").classList.remove("hide"),dlg.querySelector("#selectSeriesFolder").setAttribute("required","required")):(dlg.querySelector(".fldSelectSeriesFolder").classList.add("hide"),dlg.querySelector("#selectSeriesFolder").removeAttribute("required"))}var extractedName,extractedYear,currentNewItem,existingSeriesHtml,seriesLocationsCount=0;return{show:function(item){return new Promise(function(resolve,reject){extractedName=null,extractedYear=null,currentNewItem=null,existingSeriesHtml=null;var xhr=new XMLHttpRequest;xhr.open("GET","components/fileorganizer/fileorganizer.template.html",!0),xhr.onload=function(e){var template=this.response,dlg=dialogHelper.createDialog({removeOnClose:!0,size:"small"});dlg.classList.add("ui-body-a"),dlg.classList.add("background-theme-a"),dlg.classList.add("formDialog");var html="";html+=Globalize.translateDocument(template),dlg.innerHTML=html,dlg.querySelector(".formDialogHeaderTitle").innerHTML=Globalize.translate("FileOrganizeManually"),dialogHelper.open(dlg),dlg.addEventListener("close",function(){dlg.submitted?resolve():reject()}),dlg.querySelector(".btnCancel").addEventListener("click",function(e){dialogHelper.close(dlg)}),dlg.querySelector("form").addEventListener("submit",function(e){return submitEpisodeForm(dlg),e.preventDefault(),!1}),dlg.querySelector("#btnNewSeries").addEventListener("click",function(e){showNewSeriesDialog(dlg)}),dlg.querySelector("#selectSeries").addEventListener("change",function(e){selectedSeriesChanged(dlg)}),initEpisodeForm(dlg,item)},xhr.send()})}}}); \ No newline at end of file +define(["dialogHelper","loading","emby-checkbox","emby-input","emby-button","emby-select","paper-icon-button-light","formDialogStyle"],function(dialogHelper,loading){"use strict";function onApiFailure(e){loading.hide(),require(["alert"],function(alert){alert({title:Globalize.translate("AutoOrganizeError"),text:Globalize.translate("ErrorOrganizingFileWithErrorCode",e.headers.get("X-Application-Error-Code"))})})}function initEpisodeForm(context,item){!item.ExtractedName||item.ExtractedName.length<3?context.querySelector(".fldRemember").classList.add("hide"):context.querySelector(".fldRemember").classList.remove("hide"),context.querySelector(".inputFile").innerHTML=item.OriginalFileName,context.querySelector("#txtSeason").value=item.ExtractedSeasonNumber,context.querySelector("#txtEpisode").value=item.ExtractedEpisodeNumber,context.querySelector("#txtEndingEpisode").value=item.ExtractedEndingEpisodeNumber,extractedName=item.ExtractedName,extractedYear=item.ExtractedYear,context.querySelector("#chkRememberCorrection").checked=!1,context.querySelector("#hfResultId").value=item.Id,ApiClient.getItems(null,{recursive:!0,includeItemTypes:"Series",sortBy:"SortName"}).then(function(result){existingSeriesHtml=result.Items.map(function(s){return'"}).join(""),existingSeriesHtml=''+existingSeriesHtml,context.querySelector("#selectSeries").innerHTML=existingSeriesHtml,ApiClient.getVirtualFolders().then(function(result){for(var seriesLocations=[],n=0;n'+s.display+""}).join("");seriesLocations.length>1&&(seriesFolderHtml=''+seriesFolderHtml),context.querySelector("#selectSeriesFolder").innerHTML=seriesFolderHtml},onApiFailure)},onApiFailure)}function submitEpisodeForm(dlg){loading.show();var resultId=dlg.querySelector("#hfResultId").value,seriesId=dlg.querySelector("#selectSeries").value,targetFolder=null,newProviderIds=null,newSeriesName=null,newSeriesYear=null;"##NEW##"==seriesId&&null!=currentNewItem&&(seriesId=null,newProviderIds=JSON.stringify(currentNewItem.ProviderIds),newSeriesName=currentNewItem.Name,newSeriesYear=currentNewItem.ProductionYear,targetFolder=dlg.querySelector("#selectSeriesFolder").value);var options={SeriesId:seriesId,SeasonNumber:dlg.querySelector("#txtSeason").value,EpisodeNumber:dlg.querySelector("#txtEpisode").value,EndingEpisodeNumber:dlg.querySelector("#txtEndingEpisode").value,RememberCorrection:dlg.querySelector("#chkRememberCorrection").checked,NewSeriesProviderIds:newProviderIds,NewSeriesName:newSeriesName,NewSeriesYear:newSeriesYear,TargetFolder:targetFolder};ApiClient.performEpisodeOrganization(resultId,options).then(function(){loading.hide(),dlg.submitted=!0,dialogHelper.close(dlg)},onApiFailure)}function showNewSeriesDialog(dlg){return 0==seriesLocationsCount?void require(["alert"],function(alert){alert({title:Globalize.translate("AutoOrganizeError"),text:Globalize.translate("NoTvFoldersConfigured")})}):void require(["itemIdentifier"],function(itemIdentifier){itemIdentifier.showFindNew(extractedName,extractedYear,"Series",ApiClient.serverId()).then(function(newItem){if(null!=newItem){currentNewItem=newItem;var seriesHtml=existingSeriesHtml;seriesHtml=seriesHtml+'",dlg.querySelector("#selectSeries").innerHTML=seriesHtml,selectedSeriesChanged(dlg)}})})}function selectedSeriesChanged(dlg){var seriesId=dlg.querySelector("#selectSeries").value;"##NEW##"==seriesId?(dlg.querySelector(".fldSelectSeriesFolder").classList.remove("hide"),dlg.querySelector("#selectSeriesFolder").setAttribute("required","required")):(dlg.querySelector(".fldSelectSeriesFolder").classList.add("hide"),dlg.querySelector("#selectSeriesFolder").removeAttribute("required"))}var extractedName,extractedYear,currentNewItem,existingSeriesHtml,seriesLocationsCount=0;return{show:function(item){return new Promise(function(resolve,reject){extractedName=null,extractedYear=null,currentNewItem=null,existingSeriesHtml=null;var xhr=new XMLHttpRequest;xhr.open("GET","components/fileorganizer/fileorganizer.template.html",!0),xhr.onload=function(e){var template=this.response,dlg=dialogHelper.createDialog({removeOnClose:!0,size:"small"});dlg.classList.add("ui-body-a"),dlg.classList.add("background-theme-a"),dlg.classList.add("formDialog");var html="";html+=Globalize.translateDocument(template),dlg.innerHTML=html,dlg.querySelector(".formDialogHeaderTitle").innerHTML=Globalize.translate("FileOrganizeManually"),dialogHelper.open(dlg),dlg.addEventListener("close",function(){dlg.submitted?resolve():reject()}),dlg.querySelector(".btnCancel").addEventListener("click",function(e){dialogHelper.close(dlg)}),dlg.querySelector("form").addEventListener("submit",function(e){return submitEpisodeForm(dlg),e.preventDefault(),!1}),dlg.querySelector("#btnNewSeries").addEventListener("click",function(e){showNewSeriesDialog(dlg)}),dlg.querySelector("#selectSeries").addEventListener("change",function(e){selectedSeriesChanged(dlg)}),initEpisodeForm(dlg,item)},xhr.send()})}}}); \ No newline at end of file diff --git a/dashboard-ui/components/guestinviter/guestinviter.js b/dashboard-ui/components/guestinviter/guestinviter.js index 24594bc464..491545fe2c 100644 --- a/dashboard-ui/components/guestinviter/guestinviter.js +++ b/dashboard-ui/components/guestinviter/guestinviter.js @@ -1 +1 @@ -define(["dialogHelper","jQuery","emby-input","emby-button","emby-checkbox","paper-icon-button-light","formDialogStyle"],function(dialogHelper,$){"use strict";function renderLibrarySharingList(context,result){var folderHtml="";folderHtml+=result.Items.map(function(i){var currentHtml="",isChecked=!0,checkedHtml=isChecked?' checked="checked"':"";return currentHtml+='"}).join(""),context.querySelector(".librarySharingList").innerHTML=folderHtml}function inviteUser(dlg){Dashboard.showLoadingMsg();var shareExcludes=$(".chkShareFolder",dlg).get().filter(function(i){return i.checked}).map(function(i){return i.getAttribute("data-folderid")});require(["connectHelper"],function(connectHelper){connectHelper.inviteGuest({apiClient:ApiClient,guestOptions:{ConnectUsername:dlg.querySelector("#txtConnectUsername").value,EnabledLibraries:shareExcludes.join(","),SendingUserId:Dashboard.getCurrentUserId(),EnableLiveTv:!1}}).then(function(){dlg.submitted=!0,dialogHelper.close(dlg)})})}return{show:function(){return new Promise(function(resolve,reject){var xhr=new XMLHttpRequest;xhr.open("GET","components/guestinviter/guestinviter.template.html",!0),xhr.onload=function(e){var template=this.response,dlg=dialogHelper.createDialog({removeOnClose:!0,size:"small"});dlg.classList.add("ui-body-a"),dlg.classList.add("background-theme-a"),dlg.classList.add("formDialog");var html="";html+=Globalize.translateDocument(template),dlg.innerHTML=html,dialogHelper.open(dlg),dlg.addEventListener("close",function(){dlg.submitted?resolve():reject()}),dlg.querySelector(".btnCancel").addEventListener("click",function(e){dialogHelper.close(dlg)}),dlg.querySelector("form").addEventListener("submit",function(e){return inviteUser(dlg),e.preventDefault(),!1}),ApiClient.getJSON(ApiClient.getUrl("Library/MediaFolders",{IsHidden:!1})).then(function(result){renderLibrarySharingList(dlg,result)})},xhr.send()})}}}); \ No newline at end of file +define(["dialogHelper","jQuery","loading","emby-input","emby-button","emby-checkbox","paper-icon-button-light","formDialogStyle"],function(dialogHelper,$,loading){"use strict";function renderLibrarySharingList(context,result){var folderHtml="";folderHtml+=result.Items.map(function(i){var currentHtml="",isChecked=!0,checkedHtml=isChecked?' checked="checked"':"";return currentHtml+='"}).join(""),context.querySelector(".librarySharingList").innerHTML=folderHtml}function inviteUser(dlg){loading.show();var shareExcludes=$(".chkShareFolder",dlg).get().filter(function(i){return i.checked}).map(function(i){return i.getAttribute("data-folderid")});require(["connectHelper"],function(connectHelper){connectHelper.inviteGuest({apiClient:ApiClient,guestOptions:{ConnectUsername:dlg.querySelector("#txtConnectUsername").value,EnabledLibraries:shareExcludes.join(","),SendingUserId:Dashboard.getCurrentUserId(),EnableLiveTv:!1}}).then(function(){loading.hide(),dlg.submitted=!0,dialogHelper.close(dlg)})})}return{show:function(){return new Promise(function(resolve,reject){var xhr=new XMLHttpRequest;xhr.open("GET","components/guestinviter/guestinviter.template.html",!0),xhr.onload=function(e){var template=this.response,dlg=dialogHelper.createDialog({removeOnClose:!0,size:"small"});dlg.classList.add("ui-body-a"),dlg.classList.add("background-theme-a"),dlg.classList.add("formDialog");var html="";html+=Globalize.translateDocument(template),dlg.innerHTML=html,dialogHelper.open(dlg),dlg.addEventListener("close",function(){dlg.submitted?resolve():reject()}),dlg.querySelector(".btnCancel").addEventListener("click",function(e){dialogHelper.close(dlg)}),dlg.querySelector("form").addEventListener("submit",function(e){return inviteUser(dlg),e.preventDefault(),!1}),ApiClient.getJSON(ApiClient.getUrl("Library/MediaFolders",{IsHidden:!1})).then(function(result){renderLibrarySharingList(dlg,result)})},xhr.send()})}}}); \ No newline at end of file diff --git a/dashboard-ui/components/imagedownloader/imagedownloader.js b/dashboard-ui/components/imagedownloader/imagedownloader.js index 0559a8be9e..c58c3ea2ca 100644 --- a/dashboard-ui/components/imagedownloader/imagedownloader.js +++ b/dashboard-ui/components/imagedownloader/imagedownloader.js @@ -1 +1 @@ -define(["dialogHelper","imageLoader","emby-checkbox","emby-button","paper-icon-button-light","css!css/metadataeditor.css"],function(dialogHelper,imageLoader){"use strict";function getBaseRemoteOptions(){var options={};return options.itemId=currentItemId,options}function reloadBrowsableImages(page){Dashboard.showLoadingMsg();var options=getBaseRemoteOptions();options.type=browsableImageType,options.startIndex=browsableImageStartIndex,options.limit=browsableImagePageSize,options.IncludeAllLanguages=page.querySelector("#chkAllLanguages").checked;var provider=selectedProvider||"";provider&&(options.ProviderName=provider),ApiClient.getAvailableRemoteImages(options).then(function(result){renderRemoteImages(page,result,browsableImageType,options.startIndex,options.limit),page.querySelector("#selectBrowsableImageType").value=browsableImageType;var providersHtml=result.Providers.map(function(p){return'"}),selectImageProvider=page.querySelector("#selectImageProvider");selectImageProvider.innerHTML='"+providersHtml,selectImageProvider.value=provider,Dashboard.hideLoadingMsg()})}function renderRemoteImages(page,imagesResult,imageType,startIndex,limit){page.querySelector(".availableImagesPaging").innerHTML=getPagingHtml(startIndex,limit,imagesResult.TotalRecordCount);for(var html="",i=0,length=imagesResult.Images.length;ilimit;html+='
',html+='';var startAtDisplay=totalRecordCount?startIndex+1:0;return html+=startAtDisplay+"-"+recordsEnd+" of "+totalRecordCount,html+="",showControls&&(html+='
',html+='',html+='',html+="
"),html+="
"}function parentWithClass(elem,className){for(;!elem.classList||!elem.classList.contains(className);)if(elem=elem.parentNode,!elem)return null;return elem}function downloadRemoteImage(page,url,type,provider){var options=getBaseRemoteOptions();options.Type=type,options.ImageUrl=url,options.ProviderName=provider,Dashboard.showLoadingMsg(),ApiClient.downloadRemoteImage(options).then(function(){hasChanges=!0;var dlg=parentWithClass(page,"dialog");dialogHelper.close(dlg)})}function getDisplayUrl(url){return ApiClient.getUrl("Images/Remote",{imageUrl:url})}function getRemoteImageHtml(image,imageType){var html="";html+='
';var cssClass="remoteImage lazy";cssClass+="Backdrop"==imageType||"Art"==imageType||"Thumb"==imageType||"Logo"==imageType?" remoteBackdropImage":"Banner"==imageType?" remoteBannerImage":"Disc"==imageType?" remoteDiscImage":"Episode"==currentItemType?" remoteBackdropImage":"MusicAlbum"==currentItemType||"MusicArtist"==currentItemType?" remoteDiscImage":" remotePosterImage";var displayUrl=getDisplayUrl(image.ThumbnailUrl||image.Url);return html+='',html+="",html+='
',html+='
',html+=image.ProviderName,html+="
",(image.Width||image.Height||image.Language)&&(html+='
',image.Width&&image.Height?(html+=image.Width+" x "+image.Height,image.Language&&(html+=" • "+image.Language)):image.Language&&(html+=image.Language),html+="
"),null!=image.CommunityRating&&(html+='
',"Likes"==image.RatingType?html+=image.CommunityRating+(1==image.CommunityRating?" like":" likes"):image.CommunityRating?(html+=image.CommunityRating.toFixed(1),image.VoteCount&&(html+=" • "+image.VoteCount+(1==image.VoteCount?" vote":" votes"))):html+="Unrated",html+="
"),html+='',html+="
",html+="
"}function initEditor(page){page.querySelector("#selectBrowsableImageType").addEventListener("change",function(){browsableImageType=this.value,browsableImageStartIndex=0,selectedProvider=null,reloadBrowsableImages(page)}),page.querySelector("#selectImageProvider").addEventListener("change",function(){browsableImageStartIndex=0,selectedProvider=this.value,reloadBrowsableImages(page)}),page.querySelector("#chkAllLanguages").addEventListener("change",function(){browsableImageStartIndex=0,reloadBrowsableImages(page)}),page.addEventListener("click",function(e){var btnDownloadRemoteImage=parentWithClass(e.target,"btnDownloadRemoteImage");btnDownloadRemoteImage&&downloadRemoteImage(page,btnDownloadRemoteImage.getAttribute("data-imageurl"),btnDownloadRemoteImage.getAttribute("data-imagetype"),btnDownloadRemoteImage.getAttribute("data-imageprovider"))})}function showEditor(itemId,itemType){Dashboard.showLoadingMsg();var xhr=new XMLHttpRequest;xhr.open("GET","components/imagedownloader/imagedownloader.template.html",!0),xhr.onload=function(e){var template=this.response;currentItemId=itemId,currentItemType=itemType;var dlg=dialogHelper.createDialog({size:"fullscreen-border",lockScroll:!0,removeOnClose:!0}),theme="b";dlg.classList.add("ui-body-"+theme),dlg.classList.add("background-theme-"+theme);var html="";html+='

',html+='',html+='
'+Globalize.translate("HeaderSearch")+"
",html+="

",html+='
',html+=Globalize.translateDocument(template),html+="
",dlg.innerHTML=html,dlg.addEventListener("close",onDialogClosed),dialogHelper.open(dlg);var editorContent=dlg.querySelector(".editorContent");initEditor(editorContent),dlg.querySelector(".btnCloseDialog").addEventListener("click",function(){dialogHelper.close(dlg)}),reloadBrowsableImages(editorContent)},xhr.send()}function onDialogClosed(){Dashboard.hideLoadingMsg(),hasChanges?currentResolve():currentReject()}var currentItemId,currentItemType,currentResolve,currentReject,selectedProvider,hasChanges=!1,browsableImagePageSize=browserInfo.slow?6:30,browsableImageStartIndex=0,browsableImageType="Primary";return{show:function(itemId,itemType,imageType){return new Promise(function(resolve,reject){currentResolve=resolve,currentReject=reject,hasChanges=!1,browsableImageStartIndex=0,browsableImageType=imageType||"Primary",selectedProvider=null,showEditor(itemId,itemType)})}}}); \ No newline at end of file +define(["loading","dialogHelper","imageLoader","emby-checkbox","emby-button","paper-icon-button-light","css!css/metadataeditor.css"],function(loading,dialogHelper,imageLoader){"use strict";function getBaseRemoteOptions(){var options={};return options.itemId=currentItemId,options}function reloadBrowsableImages(page){loading.show();var options=getBaseRemoteOptions();options.type=browsableImageType,options.startIndex=browsableImageStartIndex,options.limit=browsableImagePageSize,options.IncludeAllLanguages=page.querySelector("#chkAllLanguages").checked;var provider=selectedProvider||"";provider&&(options.ProviderName=provider),ApiClient.getAvailableRemoteImages(options).then(function(result){renderRemoteImages(page,result,browsableImageType,options.startIndex,options.limit),page.querySelector("#selectBrowsableImageType").value=browsableImageType;var providersHtml=result.Providers.map(function(p){return'"}),selectImageProvider=page.querySelector("#selectImageProvider");selectImageProvider.innerHTML='"+providersHtml,selectImageProvider.value=provider,loading.hide()})}function renderRemoteImages(page,imagesResult,imageType,startIndex,limit){page.querySelector(".availableImagesPaging").innerHTML=getPagingHtml(startIndex,limit,imagesResult.TotalRecordCount);for(var html="",i=0,length=imagesResult.Images.length;ilimit;html+='
',html+='';var startAtDisplay=totalRecordCount?startIndex+1:0;return html+=startAtDisplay+"-"+recordsEnd+" of "+totalRecordCount,html+="",showControls&&(html+='
',html+='',html+='',html+="
"),html+="
"}function parentWithClass(elem,className){for(;!elem.classList||!elem.classList.contains(className);)if(elem=elem.parentNode,!elem)return null;return elem}function downloadRemoteImage(page,url,type,provider){var options=getBaseRemoteOptions();options.Type=type,options.ImageUrl=url,options.ProviderName=provider,loading.show(),ApiClient.downloadRemoteImage(options).then(function(){hasChanges=!0;var dlg=parentWithClass(page,"dialog");dialogHelper.close(dlg)})}function getDisplayUrl(url){return ApiClient.getUrl("Images/Remote",{imageUrl:url})}function getRemoteImageHtml(image,imageType){var html="";html+='
';var cssClass="remoteImage lazy";cssClass+="Backdrop"==imageType||"Art"==imageType||"Thumb"==imageType||"Logo"==imageType?" remoteBackdropImage":"Banner"==imageType?" remoteBannerImage":"Disc"==imageType?" remoteDiscImage":"Episode"==currentItemType?" remoteBackdropImage":"MusicAlbum"==currentItemType||"MusicArtist"==currentItemType?" remoteDiscImage":" remotePosterImage";var displayUrl=getDisplayUrl(image.ThumbnailUrl||image.Url);return html+='',html+="",html+='
',html+='
',html+=image.ProviderName,html+="
",(image.Width||image.Height||image.Language)&&(html+='
',image.Width&&image.Height?(html+=image.Width+" x "+image.Height,image.Language&&(html+=" • "+image.Language)):image.Language&&(html+=image.Language),html+="
"),null!=image.CommunityRating&&(html+='
',"Likes"==image.RatingType?html+=image.CommunityRating+(1==image.CommunityRating?" like":" likes"):image.CommunityRating?(html+=image.CommunityRating.toFixed(1),image.VoteCount&&(html+=" • "+image.VoteCount+(1==image.VoteCount?" vote":" votes"))):html+="Unrated",html+="
"),html+='',html+="
",html+="
"}function initEditor(page){page.querySelector("#selectBrowsableImageType").addEventListener("change",function(){browsableImageType=this.value,browsableImageStartIndex=0,selectedProvider=null,reloadBrowsableImages(page)}),page.querySelector("#selectImageProvider").addEventListener("change",function(){browsableImageStartIndex=0,selectedProvider=this.value,reloadBrowsableImages(page)}),page.querySelector("#chkAllLanguages").addEventListener("change",function(){browsableImageStartIndex=0,reloadBrowsableImages(page)}),page.addEventListener("click",function(e){var btnDownloadRemoteImage=parentWithClass(e.target,"btnDownloadRemoteImage");btnDownloadRemoteImage&&downloadRemoteImage(page,btnDownloadRemoteImage.getAttribute("data-imageurl"),btnDownloadRemoteImage.getAttribute("data-imagetype"),btnDownloadRemoteImage.getAttribute("data-imageprovider"))})}function showEditor(itemId,itemType){loading.show();var xhr=new XMLHttpRequest;xhr.open("GET","components/imagedownloader/imagedownloader.template.html",!0),xhr.onload=function(e){var template=this.response;currentItemId=itemId,currentItemType=itemType;var dlg=dialogHelper.createDialog({size:"fullscreen-border",lockScroll:!0,removeOnClose:!0}),theme="b";dlg.classList.add("ui-body-"+theme),dlg.classList.add("background-theme-"+theme);var html="";html+='

',html+='',html+='
'+Globalize.translate("HeaderSearch")+"
",html+="

",html+='
',html+=Globalize.translateDocument(template),html+="
",dlg.innerHTML=html,dlg.addEventListener("close",onDialogClosed),dialogHelper.open(dlg);var editorContent=dlg.querySelector(".editorContent");initEditor(editorContent),dlg.querySelector(".btnCloseDialog").addEventListener("click",function(){dialogHelper.close(dlg)}),reloadBrowsableImages(editorContent)},xhr.send()}function onDialogClosed(){loading.hide(),hasChanges?currentResolve():currentReject()}var currentItemId,currentItemType,currentResolve,currentReject,selectedProvider,hasChanges=!1,browsableImagePageSize=browserInfo.slow?6:30,browsableImageStartIndex=0,browsableImageType="Primary";return{show:function(itemId,itemType,imageType){return new Promise(function(resolve,reject){currentResolve=resolve,currentReject=reject,hasChanges=!1,browsableImageStartIndex=0,browsableImageType=imageType||"Primary",selectedProvider=null,showEditor(itemId,itemType)})}}}); \ No newline at end of file diff --git a/dashboard-ui/components/imageuploader/imageuploader.js b/dashboard-ui/components/imageuploader/imageuploader.js index 572f3c222c..3018bcebeb 100644 --- a/dashboard-ui/components/imageuploader/imageuploader.js +++ b/dashboard-ui/components/imageuploader/imageuploader.js @@ -1 +1 @@ -define(["dialogHelper","jQuery","emby-button","emby-select"],function(dialogHelper,$){"use strict";function onFileReaderError(evt){switch(Dashboard.hideLoadingMsg(),evt.target.error.code){case evt.target.error.NOT_FOUND_ERR:require(["toast"],function(toast){toast(Globalize.translate("MessageFileNotFound"))});break;case evt.target.error.ABORT_ERR:break;default:require(["toast"],function(toast){toast(Globalize.translate("MessageFileReadError"))})}}function setFiles(page,files){var file=files[0];if(!file||!file.type.match("image.*"))return $("#imageOutput",page).html(""),$("#fldUpload",page).hide(),void(currentFile=null);currentFile=file;var reader=new FileReader;reader.onerror=onFileReaderError,reader.onloadstart=function(){$("#fldUpload",page).hide()},reader.onabort=function(){Dashboard.hideLoadingMsg(),console.log("File read cancelled")},reader.onload=function(theFile){return function(e){var html=[''].join("");$("#imageOutput",page).html(html),$("#fldUpload",page).show()}}(file),reader.readAsDataURL(file)}function processImageChangeResult(page){hasChanges=!0,history.back()}function onSubmit(){var file=currentFile;if(!file)return!1;if("image/png"!=file.type&&"image/jpeg"!=file.type&&"image/jpeg"!=file.type)return!1;Dashboard.showLoadingMsg();var page=$(this).parents(".dialog"),imageType=$("#selectImageType",page).val();return ApiClient.uploadItemImage(currentItemId,imageType,file).then(function(){$("#uploadImage",page).val("").trigger("change"),Dashboard.hideLoadingMsg(),processImageChangeResult(page)}),!1}function initEditor(page){$("form",page).off("submit",onSubmit).on("submit",onSubmit),$("#uploadImage",page).on("change",function(){setFiles(page,this.files)}),$("#imageDropZone",page).on("dragover",function(e){return e.preventDefault(),e.originalEvent.dataTransfer.dropEffect="Copy",!1}).on("drop",function(e){return e.preventDefault(),setFiles(page,e.originalEvent.dataTransfer.files),!1})}function showEditor(itemId,options){options=options||{};var xhr=new XMLHttpRequest;xhr.open("GET","components/imageuploader/imageuploader.template.html",!0),xhr.onload=function(e){var template=this.response;currentItemId=itemId;var dlg=dialogHelper.createDialog({size:"fullscreen-border"}),theme=options.theme||"b";dlg.classList.add("ui-body-"+theme),dlg.classList.add("background-theme-"+theme);var html="";html+='

',html+='',html+='
'+Globalize.translate("HeaderUploadImage")+"
",html+="

",html+='
',html+=Globalize.translateDocument(template),html+="
",dlg.innerHTML=html,$(dlg).on("close",onDialogClosed),dialogHelper.open(dlg);var editorContent=dlg.querySelector(".editorContent");initEditor(editorContent),$("#selectImageType",dlg).val(options.imageType||"Primary"),$(".btnCloseDialog",dlg).on("click",function(){dialogHelper.close(dlg)})},xhr.send()}function onDialogClosed(){$(this).remove(),Dashboard.hideLoadingMsg(),currentDeferred.resolveWith(null,[hasChanges])}var currentItemId,currentFile,currentDeferred,hasChanges=!1;return{show:function(itemId,options){var deferred=jQuery.Deferred();return currentDeferred=deferred,hasChanges=!1,showEditor(itemId,options),deferred.promise()}}}); \ No newline at end of file +define(["dialogHelper","jQuery","loading","emby-button","emby-select"],function(dialogHelper,$,loading){"use strict";function onFileReaderError(evt){switch(loading.hide(),evt.target.error.code){case evt.target.error.NOT_FOUND_ERR:require(["toast"],function(toast){toast(Globalize.translate("MessageFileNotFound"))});break;case evt.target.error.ABORT_ERR:break;default:require(["toast"],function(toast){toast(Globalize.translate("MessageFileReadError"))})}}function setFiles(page,files){var file=files[0];if(!file||!file.type.match("image.*"))return $("#imageOutput",page).html(""),$("#fldUpload",page).hide(),void(currentFile=null);currentFile=file;var reader=new FileReader;reader.onerror=onFileReaderError,reader.onloadstart=function(){$("#fldUpload",page).hide()},reader.onabort=function(){loading.hide(),console.log("File read cancelled")},reader.onload=function(theFile){return function(e){var html=[''].join("");$("#imageOutput",page).html(html),$("#fldUpload",page).show()}}(file),reader.readAsDataURL(file)}function processImageChangeResult(page){hasChanges=!0,history.back()}function onSubmit(){var file=currentFile;if(!file)return!1;if("image/png"!=file.type&&"image/jpeg"!=file.type&&"image/jpeg"!=file.type)return!1;loading.show();var page=$(this).parents(".dialog"),imageType=$("#selectImageType",page).val();return ApiClient.uploadItemImage(currentItemId,imageType,file).then(function(){$("#uploadImage",page).val("").trigger("change"),loading.hide(),processImageChangeResult(page)}),!1}function initEditor(page){$("form",page).off("submit",onSubmit).on("submit",onSubmit),$("#uploadImage",page).on("change",function(){setFiles(page,this.files)}),$("#imageDropZone",page).on("dragover",function(e){return e.preventDefault(),e.originalEvent.dataTransfer.dropEffect="Copy",!1}).on("drop",function(e){return e.preventDefault(),setFiles(page,e.originalEvent.dataTransfer.files),!1})}function showEditor(itemId,options){options=options||{};var xhr=new XMLHttpRequest;xhr.open("GET","components/imageuploader/imageuploader.template.html",!0),xhr.onload=function(e){var template=this.response;currentItemId=itemId;var dlg=dialogHelper.createDialog({size:"fullscreen-border"}),theme=options.theme||"b";dlg.classList.add("ui-body-"+theme),dlg.classList.add("background-theme-"+theme);var html="";html+='

',html+='',html+='
'+Globalize.translate("HeaderUploadImage")+"
",html+="

",html+='
',html+=Globalize.translateDocument(template),html+="
",dlg.innerHTML=html,$(dlg).on("close",onDialogClosed),dialogHelper.open(dlg);var editorContent=dlg.querySelector(".editorContent");initEditor(editorContent),$("#selectImageType",dlg).val(options.imageType||"Primary"),$(".btnCloseDialog",dlg).on("click",function(){dialogHelper.close(dlg)})},xhr.send()}function onDialogClosed(){$(this).remove(),loading.hide(),currentDeferred.resolveWith(null,[hasChanges])}var currentItemId,currentFile,currentDeferred,hasChanges=!1;return{show:function(itemId,options){var deferred=jQuery.Deferred();return currentDeferred=deferred,hasChanges=!1,showEditor(itemId,options),deferred.promise()}}}); \ No newline at end of file diff --git a/dashboard-ui/components/medialibrarycreator/medialibrarycreator.js b/dashboard-ui/components/medialibrarycreator/medialibrarycreator.js index e05aef05ba..ebf7253a1c 100644 --- a/dashboard-ui/components/medialibrarycreator/medialibrarycreator.js +++ b/dashboard-ui/components/medialibrarycreator/medialibrarycreator.js @@ -1 +1 @@ -define(["dialogHelper","jQuery","components/libraryoptionseditor/libraryoptionseditor","emby-input","emby-select","paper-icon-button-light","listViewStyle","formDialogStyle"],function(dialogHelper,$,libraryoptionseditor){"use strict";function onSubmit(){if(0==pathInfos.length)return require(["alert"],function(alert){alert({text:Globalize.translate("PleaseAddAtLeastOneFolder"),type:"error"})}),!1;var form=this,dlg=$(form).parents(".dialog")[0],name=$("#txtValue",form).val(),type=$("#selectCollectionType",form).val();"mixed"==type&&(type=null);var libraryOptions=libraryoptionseditor.getLibraryOptions(dlg.querySelector(".libraryOptions"));return libraryOptions.PathInfos=pathInfos,ApiClient.addVirtualFolder(name,type,currentOptions.refresh,libraryOptions).then(function(){hasChanges=!0,dialogHelper.close(dlg)},function(){require(["toast"],function(toast){toast(Globalize.translate("ErrorAddingMediaPathToVirtualFolder"))})}),!1}function getCollectionTypeOptionsHtml(collectionTypeOptions){return collectionTypeOptions.filter(function(i){return i.isSelectable!==!1}).map(function(i){return'"}).join("")}function initEditor(page,collectionTypeOptions){$("#selectCollectionType",page).html(getCollectionTypeOptionsHtml(collectionTypeOptions)).val("").on("change",function(){var value=this.value,dlg=$(this).parents(".dialog")[0];if(libraryoptionseditor.setContentType(dlg.querySelector(".libraryOptions"),"mixed"==value?"":value),value?dlg.querySelector(".libraryOptions").classList.remove("hide"):dlg.querySelector(".libraryOptions").classList.add("hide"),"mixed"!=value){var index=this.selectedIndex;if(index!=-1){var name=this.options[index].innerHTML.replace("*","").replace("&","&");$("#txtValue",dlg).val(name);var folderOption=collectionTypeOptions.filter(function(i){return i.value==value})[0];$(".collectionTypeFieldDescription",dlg).html(folderOption.message||"")}}}),$(".btnAddFolder",page).on("click",onAddButtonClick),$("form",page).off("submit",onSubmit).on("submit",onSubmit)}function onAddButtonClick(){var page=$(this).parents(".dlg-librarycreator")[0];require(["directorybrowser"],function(directoryBrowser){var picker=new directoryBrowser;picker.show({enableNetworkSharePath:!0,callback:function(path,networkSharePath){path&&addMediaLocation(page,path,networkSharePath),picker.close()}})})}function getFolderHtml(pathInfo,index){var html="";html+='
',html+='folder';var cssClass=pathInfo.NetworkPath?"listItemBody two-line":"listItemBody";return html+='
',html+='
'+pathInfo.Path+"
",pathInfo.NetworkPath&&(html+='
'+pathInfo.NetworkPath+"
"),html+="
",html+='',html+="
"}function renderPaths(page){var foldersHtml=pathInfos.map(getFolderHtml).join(""),folderList=page.querySelector(".folderList");folderList.innerHTML=foldersHtml,foldersHtml?folderList.classList.remove("hide"):folderList.classList.add("hide"),$(page.querySelectorAll(".btnRemovePath")).on("click",onRemoveClick)}function addMediaLocation(page,path,networkSharePath){if(0==pathInfos.filter(function(p){return p.Path.toLowerCase()==path.toLowerCase()}).length){var pathInfo={Path:path};networkSharePath&&(pathInfo.NetworkPath=networkSharePath),pathInfos.push(pathInfo),renderPaths(page)}}function onRemoveClick(){var button=this,index=parseInt(button.getAttribute("data-index")),location=pathInfos[index];pathInfos=pathInfos.filter(function(p){return p.Path.toLowerCase()!=location.toLowerCase()});var page=$(this).parents(".dlg-librarycreator")[0];renderPaths(page)}function onDialogClosed(){Dashboard.hideLoadingMsg(),currentDeferred.resolveWith(null,[hasChanges])}function initLibraryOptions(dlg){libraryoptionseditor.embed(dlg.querySelector(".libraryOptions")).then(function(){$("#selectCollectionType",dlg).trigger("change")})}function editor(){var self=this;self.show=function(options){var deferred=jQuery.Deferred();currentOptions=options,currentDeferred=deferred,hasChanges=!1;var xhr=new XMLHttpRequest;return xhr.open("GET","components/medialibrarycreator/medialibrarycreator.template.html",!0),xhr.onload=function(e){var template=this.response,dlg=dialogHelper.createDialog({size:"medium",modal:!1,removeOnClose:!0,scrollY:!1});dlg.classList.add("ui-body-a"),dlg.classList.add("background-theme-a"),dlg.classList.add("dlg-librarycreator"),dlg.classList.add("formDialog"),dlg.innerHTML=Globalize.translateDocument(template),initEditor(dlg,options.collectionTypeOptions),dlg.addEventListener("close",onDialogClosed),dialogHelper.open(dlg),dlg.querySelector(".btnCancel").addEventListener("click",function(){dialogHelper.close(dlg)}),pathInfos=[],renderPaths(dlg),initLibraryOptions(dlg)},xhr.send(),deferred.promise()}}var currentDeferred,hasChanges,currentOptions,pathInfos=[];return editor}); \ No newline at end of file +define(["loading","dialogHelper","dom","jQuery","components/libraryoptionseditor/libraryoptionseditor","emby-input","emby-select","paper-icon-button-light","listViewStyle","formDialogStyle"],function(loading,dialogHelper,dom,$,libraryoptionseditor){"use strict";function onSubmit(e){if(e.preventDefault(),e.stopPropagation(),0==pathInfos.length)return require(["alert"],function(alert){alert({text:Globalize.translate("PleaseAddAtLeastOneFolder"),type:"error"})}),!1;var form=this,dlg=$(form).parents(".dialog")[0],name=$("#txtValue",form).val(),type=$("#selectCollectionType",form).val();"mixed"==type&&(type=null);var libraryOptions=libraryoptionseditor.getLibraryOptions(dlg.querySelector(".libraryOptions"));return libraryOptions.PathInfos=pathInfos,ApiClient.addVirtualFolder(name,type,currentOptions.refresh,libraryOptions).then(function(){hasChanges=!0,dialogHelper.close(dlg)},function(){require(["toast"],function(toast){toast(Globalize.translate("ErrorAddingMediaPathToVirtualFolder"))})}),!1}function getCollectionTypeOptionsHtml(collectionTypeOptions){return collectionTypeOptions.filter(function(i){return i.isSelectable!==!1}).map(function(i){return'"}).join("")}function initEditor(page,collectionTypeOptions){$("#selectCollectionType",page).html(getCollectionTypeOptionsHtml(collectionTypeOptions)).val("").on("change",function(){var value=this.value,dlg=$(this).parents(".dialog")[0];if(libraryoptionseditor.setContentType(dlg.querySelector(".libraryOptions"),"mixed"==value?"":value),value?dlg.querySelector(".libraryOptions").classList.remove("hide"):dlg.querySelector(".libraryOptions").classList.add("hide"),"mixed"!=value){var index=this.selectedIndex;if(index!=-1){var name=this.options[index].innerHTML.replace("*","").replace("&","&");$("#txtValue",dlg).val(name);var folderOption=collectionTypeOptions.filter(function(i){return i.value==value})[0];$(".collectionTypeFieldDescription",dlg).html(folderOption.message||"")}}}),page.querySelector(".btnAddFolder").addEventListener("click",onAddButtonClick),page.querySelector("form").addEventListener("submit",onSubmit),page.querySelector(".folderList").addEventListener("click",onRemoveClick)}function onAddButtonClick(){var page=dom.parentWithClass(this,"dlg-librarycreator");require(["directorybrowser"],function(directoryBrowser){var picker=new directoryBrowser;picker.show({enableNetworkSharePath:!0,callback:function(path,networkSharePath){path&&addMediaLocation(page,path,networkSharePath),picker.close()}})})}function getFolderHtml(pathInfo,index){var html="";html+='
',html+='folder';var cssClass=pathInfo.NetworkPath?"listItemBody two-line":"listItemBody";return html+='
',html+='
'+pathInfo.Path+"
",pathInfo.NetworkPath&&(html+='
'+pathInfo.NetworkPath+"
"),html+="
",html+='',html+="
"}function renderPaths(page){var foldersHtml=pathInfos.map(getFolderHtml).join(""),folderList=page.querySelector(".folderList");folderList.innerHTML=foldersHtml,foldersHtml?folderList.classList.remove("hide"):folderList.classList.add("hide")}function addMediaLocation(page,path,networkSharePath){var pathLower=path.toLowerCase();if(0==pathInfos.filter(function(p){return p.Path.toLowerCase()==pathLower}).length){var pathInfo={Path:path};networkSharePath&&(pathInfo.NetworkPath=networkSharePath),pathInfos.push(pathInfo),renderPaths(page)}}function onRemoveClick(e){var button=dom.parentWithClass(e.target,"btnRemovePath"),index=parseInt(button.getAttribute("data-index")),location=pathInfos[index].Path,locationLower=location.toLowerCase();pathInfos=pathInfos.filter(function(p){return p.Path.toLowerCase()!=locationLower});var page=dom.parentWithClass(button,"dlg-librarycreator");renderPaths(page)}function onDialogClosed(){loading.hide(),currentResolve(hasChanges)}function initLibraryOptions(dlg){libraryoptionseditor.embed(dlg.querySelector(".libraryOptions")).then(function(){$("#selectCollectionType",dlg).trigger("change")})}function editor(){var self=this;self.show=function(options){return new Promise(function(resolve,reject){currentOptions=options,currentResolve=resolve,hasChanges=!1;var xhr=new XMLHttpRequest;xhr.open("GET","components/medialibrarycreator/medialibrarycreator.template.html",!0),xhr.onload=function(e){var template=this.response,dlg=dialogHelper.createDialog({size:"medium",modal:!1,removeOnClose:!0,scrollY:!1});dlg.classList.add("ui-body-a"),dlg.classList.add("background-theme-a"),dlg.classList.add("dlg-librarycreator"),dlg.classList.add("formDialog"),dlg.innerHTML=Globalize.translateDocument(template),initEditor(dlg,options.collectionTypeOptions),dlg.addEventListener("close",onDialogClosed),dialogHelper.open(dlg),dlg.querySelector(".btnCancel").addEventListener("click",function(){dialogHelper.close(dlg)}),pathInfos=[],renderPaths(dlg),initLibraryOptions(dlg)},xhr.send()})}}var currentResolve,hasChanges,currentOptions,pathInfos=[];return editor}); \ No newline at end of file diff --git a/dashboard-ui/components/medialibrarycreator/medialibrarycreator.template.html b/dashboard-ui/components/medialibrarycreator/medialibrarycreator.template.html index a2e10af2f0..59b3a06c89 100644 --- a/dashboard-ui/components/medialibrarycreator/medialibrarycreator.template.html +++ b/dashboard-ui/components/medialibrarycreator/medialibrarycreator.template.html @@ -1,5 +1,5 @@ 
- +

${ButtonAddMediaLibrary}

diff --git a/dashboard-ui/components/medialibraryeditor/medialibraryeditor.js b/dashboard-ui/components/medialibraryeditor/medialibraryeditor.js index 8963ecdd8e..46e72beae2 100644 --- a/dashboard-ui/components/medialibraryeditor/medialibraryeditor.js +++ b/dashboard-ui/components/medialibraryeditor/medialibraryeditor.js @@ -1 +1 @@ -define(["dialogHelper","dom","components/libraryoptionseditor/libraryoptionseditor","emby-button","listViewStyle","paper-icon-button-light","formDialogStyle"],function(dialogHelper,dom,libraryoptionseditor){"use strict";function addMediaLocation(page,path,networkSharePath){var virtualFolder=currentOptions.library,refreshAfterChange=currentOptions.refresh;ApiClient.addMediaPath(virtualFolder.Name,path,networkSharePath,refreshAfterChange).then(function(){hasChanges=!0,refreshLibraryFromServer(page)},function(){require(["toast"],function(toast){toast(Globalize.translate("ErrorAddingMediaPathToVirtualFolder"))})})}function updateMediaLocation(page,path,networkSharePath){var virtualFolder=currentOptions.library;ApiClient.updateMediaPath(virtualFolder.Name,{Path:path,NetworkPath:networkSharePath}).then(function(){hasChanges=!0,refreshLibraryFromServer(page)},function(){require(["toast"],function(toast){toast(Globalize.translate("ErrorAddingMediaPathToVirtualFolder"))})})}function onRemoveClick(btnRemovePath){var button=btnRemovePath,index=parseInt(button.getAttribute("data-index")),virtualFolder=currentOptions.library,location=virtualFolder.Locations[index];require(["confirm"],function(confirm){confirm({title:Globalize.translate("HeaderRemoveMediaLocation"),text:Globalize.translate("MessageConfirmRemoveMediaLocation"),confirmText:Globalize.translate("ButtonDelete"),primary:"cancel"}).then(function(){var refreshAfterChange=currentOptions.refresh;ApiClient.removeMediaPath(virtualFolder.Name,location,refreshAfterChange).then(function(){hasChanges=!0,refreshLibraryFromServer(dom.parentWithClass(button,"dlg-libraryeditor"))},function(){require(["toast"],function(toast){toast(Globalize.translate("DefaultErrorMessage"))})})})})}function onListItemClick(e){var btnRemovePath=dom.parentWithClass(e.target,"btnRemovePath");if(btnRemovePath)return void onRemoveClick(btnRemovePath);var listItem=dom.parentWithClass(e.target,"listItem");if(listItem){var index=parseInt(listItem.getAttribute("data-index")),page=dom.parentWithClass(listItem,"dlg-libraryeditor");showDirectoryBrowser(page,index)}}function getFolderHtml(pathInfo,index){var html="";html+='
',html+='folder';var cssClass=pathInfo.NetworkPath?"listItemBody two-line":"listItemBody";return html+='
',html+='

',html+=pathInfo.Path,html+="

",pathInfo.NetworkPath&&(html+='
'+pathInfo.NetworkPath+"
"),html+="
",html+='',html+="
"}function refreshLibraryFromServer(page){ApiClient.getVirtualFolders().then(function(result){var library=result.filter(function(f){return f.Name==currentOptions.library.Name})[0];library&&(currentOptions.library=library,renderLibrary(page,currentOptions))})}function renderLibrary(page,options){var pathInfos=(options.library.LibraryOptions||{}).PathInfos||[];pathInfos.length||(pathInfos=options.library.Locations.map(function(p){return{Path:p}}));var foldersHtml=pathInfos.map(getFolderHtml).join("");page.querySelector(".folderList").innerHTML=foldersHtml;for(var listItems=page.querySelectorAll(".listItem"),i=0,length=listItems.length;i',html+='folder';var cssClass=pathInfo.NetworkPath?"listItemBody two-line":"listItemBody";return html+='
',html+='

',html+=pathInfo.Path,html+="

",pathInfo.NetworkPath&&(html+='
'+pathInfo.NetworkPath+"
"),html+="
",html+='',html+="
"}function refreshLibraryFromServer(page){ApiClient.getVirtualFolders().then(function(result){var library=result.filter(function(f){return f.Name==currentOptions.library.Name})[0];library&&(currentOptions.library=library,renderLibrary(page,currentOptions))})}function renderLibrary(page,options){var pathInfos=(options.library.LibraryOptions||{}).PathInfos||[];pathInfos.length||(pathInfos=options.library.Locations.map(function(p){return{Path:p}}));var foldersHtml=pathInfos.map(getFolderHtml).join("");page.querySelector(".folderList").innerHTML=foldersHtml}function onAddButtonClick(){var page=dom.parentWithClass(this,"dlg-libraryeditor");showDirectoryBrowser(page)}function showDirectoryBrowser(context,listIndex){require(["directorybrowser"],function(directoryBrowser){var picker=new directoryBrowser,pathInfos=(currentOptions.library.LibraryOptions||{}).PathInfos||[],pathInfo=null==listIndex?{}:pathInfos[listIndex]||{},location=null==listIndex?null:currentOptions.library.Locations[listIndex],originalPath=pathInfo.Path||location;picker.show({enableNetworkSharePath:!0,pathReadOnly:null!=listIndex,path:originalPath,networkSharePath:pathInfo.NetworkPath,callback:function(path,networkSharePath){path&&(originalPath?updateMediaLocation(context,originalPath,networkSharePath):addMediaLocation(context,path,networkSharePath)),picker.close()}})})}function initEditor(dlg,options){renderLibrary(dlg,options),dlg.querySelector(".btnAddFolder").addEventListener("click",onAddButtonClick),dlg.querySelector(".folderList").addEventListener("click",onListItemClick),libraryoptionseditor.embed(dlg.querySelector(".libraryOptions"),options.library.CollectionType,options.library.LibraryOptions)}function onDialogClosing(){var dlg=this,libraryOptions=libraryoptionseditor.getLibraryOptions(dlg.querySelector(".libraryOptions"));libraryOptions=Object.assign(currentOptions.library.LibraryOptions||{},libraryOptions),ApiClient.updateVirtualFolderOptions(currentOptions.library.ItemId,libraryOptions)}function onDialogClosed(){loading.hide(),hasChanges=!0,currentDeferred.resolveWith(null,[hasChanges])}function editor(){var self=this;self.show=function(options){var deferred=jQuery.Deferred();currentOptions=options,currentDeferred=deferred,hasChanges=!1;var xhr=new XMLHttpRequest;return xhr.open("GET","components/medialibraryeditor/medialibraryeditor.template.html",!0),xhr.onload=function(e){var template=this.response,dlg=dialogHelper.createDialog({size:"medium",modal:!1,removeOnClose:!0,scrollY:!1});dlg.classList.add("dlg-libraryeditor"),dlg.classList.add("ui-body-a"),dlg.classList.add("background-theme-a"),dlg.classList.add("formDialog"),dlg.innerHTML=Globalize.translateDocument(template),dlg.querySelector(".formDialogHeaderTitle").innerHTML=options.library.Name,initEditor(dlg,options),dlg.addEventListener("closing",onDialogClosing),dlg.addEventListener("close",onDialogClosed),dialogHelper.open(dlg),dlg.querySelector(".btnCancel").addEventListener("click",function(){dialogHelper.close(dlg)}),refreshLibraryFromServer(dlg)},xhr.send(),deferred.promise()}}var currentDeferred,hasChanges,currentOptions;return editor}); \ No newline at end of file diff --git a/dashboard-ui/components/medialibraryeditor/medialibraryeditor.template.html b/dashboard-ui/components/medialibraryeditor/medialibraryeditor.template.html index 868fa1edf2..d476608075 100644 --- a/dashboard-ui/components/medialibraryeditor/medialibraryeditor.template.html +++ b/dashboard-ui/components/medialibraryeditor/medialibraryeditor.template.html @@ -1,5 +1,5 @@ 
- +

diff --git a/dashboard-ui/components/tunerpicker.js b/dashboard-ui/components/tunerpicker.js index f2ecf5fcd8..cfe6169bd1 100644 --- a/dashboard-ui/components/tunerpicker.js +++ b/dashboard-ui/components/tunerpicker.js @@ -1 +1 @@ -define(["dialogHelper","dom","layoutManager","connectionManager","globalize","loading","material-icons","formDialogStyle","emby-button","emby-itemscontainer","cardStyle"],function(dialogHelper,dom,layoutManager,connectionManager,globalize,loading){"use strict";function getEditorHtml(){var html="";return html+='
',html+='
',html+='
',html+="

"+globalize.translate("DetectingDevices")+"...

",html+="

"+globalize.translate("MessagePleaseWait")+"

",html+="
",html+='

'+globalize.translate("HeaderNewDevices")+"

",html+='
',html+="
",html+="
",html+="
"}function getDeviceHtml(device){var padderClass,html="",cssClass="card scalableCard",cardBoxCssClass="cardBox visualCardBox";return cssClass+=" backdropCard backdropCard-scalable",padderClass="cardPadder-backdrop",layoutManager.tv&&(cssClass+=" card-focusscale",cardBoxCssClass+=" cardBox-focustransform"),cardBoxCssClass+=" card-focuscontent",html+='"}function renderDevices(view,devices){var i,length,html="";for(i=0,length=devices.length;i"+globalize.translate("NoNewDevicesFound")+"

",view.querySelector(".devicesHeader").classList.add("hide"));var elem=view.querySelector(".results");elem.innerHTML=html,layoutManager.tv&&focusManager.autoFocus(elem)}function discoverDevices(view,apiClient){return loading.show(),view.querySelector(".loadingContent").classList.remove("hide"),ApiClient.getJSON(ApiClient.getUrl("LiveTv/Tuners/Discvover",{NewDevicesOnly:!0})).then(function(devices){currentDevices=devices,renderDevices(view,devices),view.querySelector(".loadingContent").classList.add("hide"),loading.hide()})}function tunerPicker(){var self=this;self.show=function(options){var dialogOptions={removeOnClose:!0,scrollY:!1};layoutManager.tv?dialogOptions.size="fullscreen":dialogOptions.size="small";var dlg=dialogHelper.createDialog(dialogOptions);dlg.classList.add("formDialog");var html="";html+='
',html+='',html+='

',html+=globalize.translate("HeaderLiveTvTunerSetup"),html+="

",html+="
",html+=getEditorHtml(),dlg.innerHTML=html,dlg.querySelector(".btnCancel").addEventListener("click",function(){dialogHelper.close(dlg)});var deviceResult;dlg.querySelector(".results").addEventListener("click",function(e){var tunerCard=dom.parentWithClass(e.target,"card");if(tunerCard){var deviceId=tunerCard.getAttribute("data-id");deviceResult=currentDevices.filter(function(d){return d.DeviceId===deviceId})[0],dialogHelper.close(dlg)}}),layoutManager.tv&¢erFocus(dlg.querySelector(".formDialogContent"),!1,!0);var apiClient=connectionManager.getApiClient(options.serverId);return discoverDevices(dlg,apiClient),layoutManager.tv&¢erFocus(dlg.querySelector(".formDialogContent"),!1,!1),dialogHelper.open(dlg).then(function(){return deviceResult?Promise.resolve(deviceResult):Promise.reject()})}}var currentDevices=[];return tunerPicker}); \ No newline at end of file +define(["dialogHelper","dom","layoutManager","connectionManager","globalize","loading","material-icons","formDialogStyle","emby-button","emby-itemscontainer","cardStyle"],function(dialogHelper,dom,layoutManager,connectionManager,globalize,loading){"use strict";function getEditorHtml(){var html="";return html+='
',html+='
',html+='
',html+="

"+globalize.translate("DetectingDevices")+"...

",html+="

"+globalize.translate("MessagePleaseWait")+"

",html+="
",html+='

'+globalize.translate("HeaderNewDevices")+"

",html+='
',html+="
",html+="
",html+="
"}function getDeviceHtml(device){var padderClass,html="",cssClass="card scalableCard",cardBoxCssClass="cardBox visualCardBox";return cssClass+=" backdropCard backdropCard-scalable",padderClass="cardPadder-backdrop",layoutManager.tv&&(cssClass+=" card-focusscale",cardBoxCssClass+=" cardBox-focustransform"),cardBoxCssClass+=" card-focuscontent",html+='"}function renderDevices(view,devices){var i,length,html="";for(i=0,length=devices.length;i
"+globalize.translate("NoNewDevicesFound")+"

",view.querySelector(".devicesHeader").classList.add("hide"));var elem=view.querySelector(".results");elem.innerHTML=html,layoutManager.tv&&focusManager.autoFocus(elem)}function discoverDevices(view,apiClient){return loading.show(),view.querySelector(".loadingContent").classList.remove("hide"),ApiClient.getJSON(ApiClient.getUrl("LiveTv/Tuners/Discvover",{NewDevicesOnly:!0})).then(function(devices){currentDevices=devices,renderDevices(view,devices),view.querySelector(".loadingContent").classList.add("hide"),loading.hide()})}function tunerPicker(){var self=this;self.show=function(options){var dialogOptions={removeOnClose:!0,scrollY:!1};layoutManager.tv?dialogOptions.size="fullscreen":dialogOptions.size="small";var dlg=dialogHelper.createDialog(dialogOptions);dlg.classList.add("formDialog");var html="";html+='
',html+='',html+='

',html+=globalize.translate("HeaderLiveTvTunerSetup"),html+="

",html+="
",html+=getEditorHtml(),dlg.innerHTML=html,dlg.querySelector(".btnCancel").addEventListener("click",function(){dialogHelper.close(dlg)});var deviceResult;dlg.querySelector(".results").addEventListener("click",function(e){var tunerCard=dom.parentWithClass(e.target,"card");if(tunerCard){var deviceId=tunerCard.getAttribute("data-id");deviceResult=currentDevices.filter(function(d){return d.DeviceId===deviceId})[0],dialogHelper.close(dlg)}}),layoutManager.tv&¢erFocus(dlg.querySelector(".formDialogContent"),!1,!0);var apiClient=connectionManager.getApiClient(options.serverId);return discoverDevices(dlg,apiClient),layoutManager.tv&¢erFocus(dlg.querySelector(".formDialogContent"),!1,!1),dialogHelper.open(dlg).then(function(){return deviceResult?Promise.resolve(deviceResult):Promise.reject()})}}var currentDevices=[];return tunerPicker}); \ No newline at end of file diff --git a/dashboard-ui/components/tvproviders/schedulesdirect.js b/dashboard-ui/components/tvproviders/schedulesdirect.js index 6b0dc31d7c..6982d2b747 100644 --- a/dashboard-ui/components/tvproviders/schedulesdirect.js +++ b/dashboard-ui/components/tvproviders/schedulesdirect.js @@ -1 +1 @@ -define(["jQuery","emby-checkbox","listViewStyle","emby-input","emby-select"],function($){"use strict";return function(page,providerId,options){function reload(){Dashboard.showLoadingMsg(),ApiClient.getNamedConfiguration("livetv").then(function(config){var info=config.ListingProviders.filter(function(i){return i.Id==providerId})[0]||{};listingsId=info.ListingsId,$("#selectListing",page).val(info.ListingsId||""),page.querySelector(".txtUser").value=info.Username||"",page.querySelector(".txtPass").value="",page.querySelector(".txtZipCode").value=info.ZipCode||"",info.Username&&info.Password?page.querySelector(".listingsSection").classList.remove("hide"):page.querySelector(".listingsSection").classList.add("hide"),page.querySelector(".chkAllTuners").checked=info.EnableAllTuners,page.querySelector(".chkAllTuners").checked?page.querySelector(".selectTunersSection").classList.add("hide"):page.querySelector(".selectTunersSection").classList.remove("hide"),setCountry(info),refreshTunerDevices(page,info,config.TunerHosts)})}function setCountry(info){ApiClient.getJSON(ApiClient.getUrl("LiveTv/ListingProviders/SchedulesDirect/Countries")).then(function(result){var i,length,countryList=[];for(var region in result){var countries=result[region];if(countries.length&&"ZZZ"!==region)for(i=0,length=countries.length;ib.name?1:a.name'+c.name+""}).join("")).val(info.Country||""),$(page.querySelector(".txtZipCode")).trigger("change")},function(){Dashboard.alert({message:Globalize.translate("ErrorGettingTvLineups")})}),Dashboard.hideLoadingMsg()}function submitLoginForm(){Dashboard.showLoadingMsg(),require(["cryptojs-sha1"],function(){var info={Type:"SchedulesDirect",Username:page.querySelector(".txtUser").value,EnableAllTuners:!0,Password:CryptoJS.SHA1(page.querySelector(".txtPass").value).toString()},id=providerId;id&&(info.Id=id),ApiClient.ajax({type:"POST",url:ApiClient.getUrl("LiveTv/ListingProviders",{ValidateLogin:!0}),data:JSON.stringify(info),contentType:"application/json",dataType:"json"}).then(function(result){Dashboard.processServerConfigurationUpdateResult(),providerId=result.Id,reload()},function(){Dashboard.alert({message:Globalize.translate("ErrorSavingTvProvider")})})})}function submitListingsForm(){var selectedListingsId=$("#selectListing",page).val();if(!selectedListingsId)return void Dashboard.alert({message:Globalize.translate("ErrorPleaseSelectLineup")});Dashboard.showLoadingMsg();var id=providerId;ApiClient.getNamedConfiguration("livetv").then(function(config){var info=config.ListingProviders.filter(function(i){return i.Id==id})[0];info.ZipCode=page.querySelector(".txtZipCode").value,info.Country=$("#selectCountry",page).val(),info.ListingsId=selectedListingsId,info.EnableAllTuners=page.querySelector(".chkAllTuners").checked,info.EnabledTuners=info.EnableAllTuners?[]:$(".chkTuner",page).get().filter(function(i){return i.checked}).map(function(i){return i.getAttribute("data-id")}),ApiClient.ajax({type:"POST",url:ApiClient.getUrl("LiveTv/ListingProviders",{ValidateListings:!0}),data:JSON.stringify(info),contentType:"application/json"}).then(function(result){Dashboard.hideLoadingMsg(),options.showConfirmation!==!1&&Dashboard.processServerConfigurationUpdateResult(),Events.trigger(self,"submitted")},function(){Dashboard.hideLoadingMsg(),Dashboard.alert({message:Globalize.translate("ErrorAddingListingsToSchedulesDirect")})})})}function refreshListings(value){return value?(Dashboard.showLoadingMsg(),void ApiClient.ajax({type:"GET",url:ApiClient.getUrl("LiveTv/ListingProviders/Lineups",{Id:providerId,Location:value,Country:$("#selectCountry",page).val()}),dataType:"json"}).then(function(result){$("#selectListing",page).html(result.map(function(o){return'"})),listingsId&&$("#selectListing",page).val(listingsId),Dashboard.hideLoadingMsg()},function(result){Dashboard.alert({message:Globalize.translate("ErrorGettingTvLineups")}),refreshListings(""),Dashboard.hideLoadingMsg()})):void $("#selectListing",page).html("")}function getTunerName(providerId){switch(providerId=providerId.toLowerCase()){case"m3u":return"M3U Playlist";case"hdhomerun":return"HDHomerun";case"satip":return"DVB";default:return"Unknown"}}function refreshTunerDevices(page,providerInfo,devices){for(var html="",i=0,length=devices.length;i';var enabledTuners=providerInfo.EnabledTuners||[],isChecked=providerInfo.EnableAllTuners||enabledTuners.indexOf(device.Id)!=-1,checkedAttribute=isChecked?" checked":"";html+='",html+='
',html+='
',html+=device.FriendlyName||getTunerName(device.Type),html+="
",html+='
',html+=device.Url,html+="
",html+="
",html+=""}page.querySelector(".tunerList").innerHTML=html}var listingsId,self=this;self.submit=function(){page.querySelector(".btnSubmitListingsContainer").click()},self.init=function(){options=options||{},options.showCancelButton!==!1?page.querySelector(".btnCancel").classList.remove("hide"):page.querySelector(".btnCancel").classList.add("hide"),options.showSubmitButton!==!1?page.querySelector(".btnSubmitListings").classList.remove("hide"):page.querySelector(".btnSubmitListings").classList.add("hide"),$(".formLogin",page).on("submit",function(){return submitLoginForm(),!1}),$(".formListings",page).on("submit",function(){return submitListingsForm(),!1}),$(".txtZipCode",page).on("change",function(){refreshListings(this.value)}),page.querySelector(".chkAllTuners").addEventListener("change",function(e){e.target.checked?page.querySelector(".selectTunersSection").classList.add("hide"):page.querySelector(".selectTunersSection").classList.remove("hide")}),$(".createAccountHelp",page).html(Globalize.translate("MessageCreateAccountAt",'http://www.schedulesdirect.org')),reload()}}}); \ No newline at end of file +define(["jQuery","loading","emby-checkbox","listViewStyle","emby-input","emby-select"],function($,loading){"use strict";return function(page,providerId,options){function reload(){loading.show(),ApiClient.getNamedConfiguration("livetv").then(function(config){var info=config.ListingProviders.filter(function(i){return i.Id==providerId})[0]||{};listingsId=info.ListingsId,$("#selectListing",page).val(info.ListingsId||""),page.querySelector(".txtUser").value=info.Username||"",page.querySelector(".txtPass").value="",page.querySelector(".txtZipCode").value=info.ZipCode||"",info.Username&&info.Password?page.querySelector(".listingsSection").classList.remove("hide"):page.querySelector(".listingsSection").classList.add("hide"),page.querySelector(".chkAllTuners").checked=info.EnableAllTuners,page.querySelector(".chkAllTuners").checked?page.querySelector(".selectTunersSection").classList.add("hide"):page.querySelector(".selectTunersSection").classList.remove("hide"),setCountry(info),refreshTunerDevices(page,info,config.TunerHosts)})}function setCountry(info){ApiClient.getJSON(ApiClient.getUrl("LiveTv/ListingProviders/SchedulesDirect/Countries")).then(function(result){var i,length,countryList=[];for(var region in result){var countries=result[region];if(countries.length&&"ZZZ"!==region)for(i=0,length=countries.length;ib.name?1:a.name'+c.name+""}).join("")).val(info.Country||""),$(page.querySelector(".txtZipCode")).trigger("change")},function(){Dashboard.alert({message:Globalize.translate("ErrorGettingTvLineups")})}),loading.hide()}function submitLoginForm(){loading.show(),require(["cryptojs-sha1"],function(){var info={Type:"SchedulesDirect",Username:page.querySelector(".txtUser").value,EnableAllTuners:!0,Password:CryptoJS.SHA1(page.querySelector(".txtPass").value).toString()},id=providerId;id&&(info.Id=id),ApiClient.ajax({type:"POST",url:ApiClient.getUrl("LiveTv/ListingProviders",{ValidateLogin:!0}),data:JSON.stringify(info),contentType:"application/json",dataType:"json"}).then(function(result){Dashboard.processServerConfigurationUpdateResult(),providerId=result.Id,reload()},function(){Dashboard.alert({message:Globalize.translate("ErrorSavingTvProvider")})})})}function submitListingsForm(){var selectedListingsId=$("#selectListing",page).val();if(!selectedListingsId)return void Dashboard.alert({message:Globalize.translate("ErrorPleaseSelectLineup")});loading.show();var id=providerId;ApiClient.getNamedConfiguration("livetv").then(function(config){var info=config.ListingProviders.filter(function(i){return i.Id==id})[0];info.ZipCode=page.querySelector(".txtZipCode").value,info.Country=$("#selectCountry",page).val(),info.ListingsId=selectedListingsId,info.EnableAllTuners=page.querySelector(".chkAllTuners").checked,info.EnabledTuners=info.EnableAllTuners?[]:$(".chkTuner",page).get().filter(function(i){return i.checked}).map(function(i){return i.getAttribute("data-id")}),ApiClient.ajax({type:"POST",url:ApiClient.getUrl("LiveTv/ListingProviders",{ValidateListings:!0}),data:JSON.stringify(info),contentType:"application/json"}).then(function(result){loading.hide(),options.showConfirmation!==!1&&Dashboard.processServerConfigurationUpdateResult(),Events.trigger(self,"submitted")},function(){loading.hide(),Dashboard.alert({message:Globalize.translate("ErrorAddingListingsToSchedulesDirect")})})})}function refreshListings(value){return value?(loading.show(),void ApiClient.ajax({type:"GET",url:ApiClient.getUrl("LiveTv/ListingProviders/Lineups",{Id:providerId,Location:value,Country:$("#selectCountry",page).val()}),dataType:"json"}).then(function(result){$("#selectListing",page).html(result.map(function(o){return'"})),listingsId&&$("#selectListing",page).val(listingsId),loading.hide()},function(result){Dashboard.alert({message:Globalize.translate("ErrorGettingTvLineups")}),refreshListings(""),loading.hide()})):void $("#selectListing",page).html("")}function getTunerName(providerId){switch(providerId=providerId.toLowerCase()){case"m3u":return"M3U Playlist";case"hdhomerun":return"HDHomerun";case"satip":return"DVB";default:return"Unknown"}}function refreshTunerDevices(page,providerInfo,devices){for(var html="",i=0,length=devices.length;i';var enabledTuners=providerInfo.EnabledTuners||[],isChecked=providerInfo.EnableAllTuners||enabledTuners.indexOf(device.Id)!=-1,checkedAttribute=isChecked?" checked":"";html+='",html+='
',html+='
',html+=device.FriendlyName||getTunerName(device.Type),html+="
",html+='
',html+=device.Url,html+="
",html+="
",html+=""}page.querySelector(".tunerList").innerHTML=html}var listingsId,self=this;self.submit=function(){page.querySelector(".btnSubmitListingsContainer").click()},self.init=function(){options=options||{},options.showCancelButton!==!1?page.querySelector(".btnCancel").classList.remove("hide"):page.querySelector(".btnCancel").classList.add("hide"),options.showSubmitButton!==!1?page.querySelector(".btnSubmitListings").classList.remove("hide"):page.querySelector(".btnSubmitListings").classList.add("hide"),$(".formLogin",page).on("submit",function(){return submitLoginForm(),!1}),$(".formListings",page).on("submit",function(){return submitListingsForm(),!1}),$(".txtZipCode",page).on("change",function(){refreshListings(this.value)}),page.querySelector(".chkAllTuners").addEventListener("change",function(e){e.target.checked?page.querySelector(".selectTunersSection").classList.add("hide"):page.querySelector(".selectTunersSection").classList.remove("hide")}),$(".createAccountHelp",page).html(Globalize.translate("MessageCreateAccountAt",'http://www.schedulesdirect.org')),reload()}}}); \ No newline at end of file diff --git a/dashboard-ui/components/tvproviders/xmltv.js b/dashboard-ui/components/tvproviders/xmltv.js index 8992938821..676211ccf7 100644 --- a/dashboard-ui/components/tvproviders/xmltv.js +++ b/dashboard-ui/components/tvproviders/xmltv.js @@ -1 +1 @@ -define(["jQuery","registrationServices","emby-checkbox","emby-input","listViewStyle","paper-icon-button-light"],function($,registrationServices){"use strict";return function(page,providerId,options){function getListingProvider(config,id){if(config&&id){var result=config.ListingProviders.filter(function(i){return i.Id==id})[0];return result?Promise.resolve(result):getListingProvider()}return ApiClient.getJSON(ApiClient.getUrl("LiveTv/ListingProviders/Default"))}function reload(){Dashboard.showLoadingMsg(),ApiClient.getNamedConfiguration("livetv").then(function(config){getListingProvider(config,providerId).then(function(info){page.querySelector(".txtPath").value=info.Path||"",page.querySelector(".txtKids").value=(info.KidsCategories||[]).join("|"),page.querySelector(".txtNews").value=(info.NewsCategories||[]).join("|"),page.querySelector(".txtSports").value=(info.SportsCategories||[]).join("|"),page.querySelector(".txtMovies").value=(info.MovieCategories||[]).join("|"),page.querySelector(".txtMoviePrefix").value=info.MoviePrefix||"",page.querySelector(".chkAllTuners").checked=info.EnableAllTuners,page.querySelector(".chkAllTuners").checked?page.querySelector(".selectTunersSection").classList.add("hide"):page.querySelector(".selectTunersSection").classList.remove("hide"),refreshTunerDevices(page,info,config.TunerHosts),Dashboard.hideLoadingMsg()})})}function getCategories(txtInput){var value=txtInput.value;return value?value.split("|"):[]}function submitListingsForm(){Dashboard.showLoadingMsg();var id=providerId;ApiClient.getNamedConfiguration("livetv").then(function(config){var info=config.ListingProviders.filter(function(i){return i.Id==id})[0]||{};info.Type="xmltv",info.Path=page.querySelector(".txtPath").value,info.MoviePrefix=page.querySelector(".txtMoviePrefix").value||null,info.MovieCategories=getCategories(page.querySelector(".txtMovies")),info.KidsCategories=getCategories(page.querySelector(".txtKids")),info.NewsCategories=getCategories(page.querySelector(".txtNews")),info.SportsCategories=getCategories(page.querySelector(".txtSports")),info.EnableAllTuners=page.querySelector(".chkAllTuners").checked,info.EnabledTuners=info.EnableAllTuners?[]:$(".chkTuner",page).get().filter(function(i){return i.checked}).map(function(i){return i.getAttribute("data-id")}),ApiClient.ajax({type:"POST",url:ApiClient.getUrl("LiveTv/ListingProviders",{ValidateListings:!0}),data:JSON.stringify(info),contentType:"application/json"}).then(function(result){Dashboard.hideLoadingMsg(),options.showConfirmation!==!1&&Dashboard.processServerConfigurationUpdateResult(),Events.trigger(self,"submitted")},function(){Dashboard.hideLoadingMsg(),Dashboard.alert({message:Globalize.translate("ErrorAddingXmlTvFile")})})})}function getTunerName(providerId){switch(providerId=providerId.toLowerCase()){case"m3u":return"M3U Playlist";case"hdhomerun":return"HDHomerun";case"satip":return"DVB";default:return"Unknown"}}function refreshTunerDevices(page,providerInfo,devices){for(var html="",i=0,length=devices.length;i';var enabledTuners=providerInfo.EnabledTuners||[],isChecked=providerInfo.EnableAllTuners||enabledTuners.indexOf(device.Id)!=-1,checkedAttribute=isChecked?" checked":"";html+='",html+='
',html+='
',html+=device.FriendlyName||getTunerName(device.Type),html+="
",html+='
',html+=device.Url,html+="
",html+="
",html+=""}page.querySelector(".tunerList").innerHTML=html}function onSelectPathClick(e){var page=$(e.target).parents(".xmltvForm")[0];require(["directorybrowser"],function(directoryBrowser){var picker=new directoryBrowser;picker.show({includeFiles:!0,callback:function(path){if(path){var txtPath=page.querySelector(".txtPath");txtPath.value=path,txtPath.focus()}picker.close()}})})}var self=this;self.submit=function(){page.querySelector(".btnSubmitListings").click()},self.init=function(){options=options||{},options.showCancelButton!==!1?page.querySelector(".btnCancel").classList.remove("hide"):page.querySelector(".btnCancel").classList.add("hide"),options.showSubmitButton!==!1?page.querySelector(".btnSubmitListings").classList.remove("hide"):page.querySelector(".btnSubmitListings").classList.add("hide"),page.querySelector(".premiereHelp").innerHTML=Globalize.translate("XmlTvPremiere",24),$("form",page).on("submit",function(){return submitListingsForm(),!1}),page.querySelector("#btnSelectPath").addEventListener("click",onSelectPathClick),page.querySelector(".lnkPremiere").addEventListener("click",function(e){registrationServices.showPremiereInfo(),e.preventDefault()}),page.querySelector(".chkAllTuners").addEventListener("change",function(e){e.target.checked?page.querySelector(".selectTunersSection").classList.add("hide"):page.querySelector(".selectTunersSection").classList.remove("hide")}),reload()}}}); \ No newline at end of file +define(["jQuery","registrationServices","loading","emby-checkbox","emby-input","listViewStyle","paper-icon-button-light"],function($,registrationServices,loading){"use strict";return function(page,providerId,options){function getListingProvider(config,id){if(config&&id){var result=config.ListingProviders.filter(function(i){return i.Id==id})[0];return result?Promise.resolve(result):getListingProvider()}return ApiClient.getJSON(ApiClient.getUrl("LiveTv/ListingProviders/Default"))}function reload(){loading.show(),ApiClient.getNamedConfiguration("livetv").then(function(config){getListingProvider(config,providerId).then(function(info){page.querySelector(".txtPath").value=info.Path||"",page.querySelector(".txtKids").value=(info.KidsCategories||[]).join("|"),page.querySelector(".txtNews").value=(info.NewsCategories||[]).join("|"),page.querySelector(".txtSports").value=(info.SportsCategories||[]).join("|"),page.querySelector(".txtMovies").value=(info.MovieCategories||[]).join("|"),page.querySelector(".txtMoviePrefix").value=info.MoviePrefix||"",page.querySelector(".chkAllTuners").checked=info.EnableAllTuners,page.querySelector(".chkAllTuners").checked?page.querySelector(".selectTunersSection").classList.add("hide"):page.querySelector(".selectTunersSection").classList.remove("hide"),refreshTunerDevices(page,info,config.TunerHosts),loading.hide()})})}function getCategories(txtInput){var value=txtInput.value;return value?value.split("|"):[]}function submitListingsForm(){loading.show();var id=providerId;ApiClient.getNamedConfiguration("livetv").then(function(config){var info=config.ListingProviders.filter(function(i){return i.Id==id})[0]||{};info.Type="xmltv",info.Path=page.querySelector(".txtPath").value,info.MoviePrefix=page.querySelector(".txtMoviePrefix").value||null,info.MovieCategories=getCategories(page.querySelector(".txtMovies")),info.KidsCategories=getCategories(page.querySelector(".txtKids")),info.NewsCategories=getCategories(page.querySelector(".txtNews")),info.SportsCategories=getCategories(page.querySelector(".txtSports")),info.EnableAllTuners=page.querySelector(".chkAllTuners").checked,info.EnabledTuners=info.EnableAllTuners?[]:$(".chkTuner",page).get().filter(function(i){return i.checked}).map(function(i){return i.getAttribute("data-id")}),ApiClient.ajax({type:"POST",url:ApiClient.getUrl("LiveTv/ListingProviders",{ValidateListings:!0}),data:JSON.stringify(info),contentType:"application/json"}).then(function(result){loading.hide(),options.showConfirmation!==!1&&Dashboard.processServerConfigurationUpdateResult(),Events.trigger(self,"submitted")},function(){loading.hide(),Dashboard.alert({message:Globalize.translate("ErrorAddingXmlTvFile")})})})}function getTunerName(providerId){switch(providerId=providerId.toLowerCase()){case"m3u":return"M3U Playlist";case"hdhomerun":return"HDHomerun";case"satip":return"DVB";default:return"Unknown"}}function refreshTunerDevices(page,providerInfo,devices){for(var html="",i=0,length=devices.length;i';var enabledTuners=providerInfo.EnabledTuners||[],isChecked=providerInfo.EnableAllTuners||enabledTuners.indexOf(device.Id)!=-1,checkedAttribute=isChecked?" checked":"";html+='",html+='
',html+='
',html+=device.FriendlyName||getTunerName(device.Type),html+="
",html+='
',html+=device.Url,html+="
",html+="
",html+=""}page.querySelector(".tunerList").innerHTML=html}function onSelectPathClick(e){var page=$(e.target).parents(".xmltvForm")[0];require(["directorybrowser"],function(directoryBrowser){var picker=new directoryBrowser;picker.show({includeFiles:!0,callback:function(path){if(path){var txtPath=page.querySelector(".txtPath");txtPath.value=path,txtPath.focus()}picker.close()}})})}var self=this;self.submit=function(){page.querySelector(".btnSubmitListings").click()},self.init=function(){options=options||{},options.showCancelButton!==!1?page.querySelector(".btnCancel").classList.remove("hide"):page.querySelector(".btnCancel").classList.add("hide"),options.showSubmitButton!==!1?page.querySelector(".btnSubmitListings").classList.remove("hide"):page.querySelector(".btnSubmitListings").classList.add("hide"),page.querySelector(".premiereHelp").innerHTML=Globalize.translate("XmlTvPremiere",24),$("form",page).on("submit",function(){return submitListingsForm(),!1}),page.querySelector("#btnSelectPath").addEventListener("click",onSelectPathClick),page.querySelector(".lnkPremiere").addEventListener("click",function(e){registrationServices.showPremiereInfo(),e.preventDefault()}),page.querySelector(".chkAllTuners").addEventListener("change",function(e){e.target.checked?page.querySelector(".selectTunersSection").classList.add("hide"):page.querySelector(".selectTunersSection").classList.remove("hide")}),reload()}}}); \ No newline at end of file diff --git a/dashboard-ui/dashboard/autoorganizelog.js b/dashboard-ui/dashboard/autoorganizelog.js index 4deb839b9d..36d46363af 100644 --- a/dashboard-ui/dashboard/autoorganizelog.js +++ b/dashboard-ui/dashboard/autoorganizelog.js @@ -1 +1 @@ -define(["serverNotifications","events","scripts/taskbutton","datetime","paper-icon-button-light"],function(serverNotifications,events,taskButton,datetime){"use strict";function parentWithClass(elem,className){for(;!elem.classList||!elem.classList.contains(className);)if(elem=elem.parentNode,!elem)return null;return elem}function showStatusMessage(id){var item=currentResult.Items.filter(function(i){return i.Id==id})[0];Dashboard.alert({title:getStatusText(item,!1),message:item.StatusMessage})}function deleteOriginalFile(page,id){var item=currentResult.Items.filter(function(i){return i.Id==id})[0],message=Globalize.translate("MessageFileWillBeDeleted")+"

"+item.OriginalPath+"

"+Globalize.translate("MessageSureYouWishToProceed");require(["confirm"],function(confirm){confirm(message,Globalize.translate("HeaderDeleteFile")).then(function(){Dashboard.showLoadingMsg(),ApiClient.deleteOriginalFileFromOrganizationResult(id).then(function(){Dashboard.hideLoadingMsg(),reloadItems(page,!0)},Dashboard.processErrorResponse)})})}function organizeFileWithCorrections(page,item){showCorrectionPopup(page,item)}function showCorrectionPopup(page,item){require(["components/fileorganizer/fileorganizer"],function(fileorganizer){fileorganizer.show(item).then(function(){reloadItems(page,!1)})})}function organizeFile(page,id){var item=currentResult.Items.filter(function(i){return i.Id==id})[0];if(!item.TargetPath)return void("Episode"==item.Type&&organizeFileWithCorrections(page,item));var message=Globalize.translate("MessageFollowingFileWillBeMovedFrom")+"

"+item.OriginalPath+"

"+Globalize.translate("MessageDestinationTo")+"

"+item.TargetPath;item.DuplicatePaths.length&&(message+="

"+Globalize.translate("MessageDuplicatesWillBeDeleted"),message+="

"+item.DuplicatePaths.join("
")),message+="

"+Globalize.translate("MessageSureYouWishToProceed"),require(["confirm"],function(confirm){confirm(message,Globalize.translate("HeaderOrganizeFile")).then(function(){Dashboard.showLoadingMsg(),ApiClient.performOrganization(id).then(function(){Dashboard.hideLoadingMsg(),reloadItems(page,!0)},Dashboard.processErrorResponse)})})}function reloadItems(page,showSpinner){showSpinner&&Dashboard.showLoadingMsg(),ApiClient.getFileOrganizationResults(query).then(function(result){currentResult=result,renderResults(page,result),Dashboard.hideLoadingMsg()},Dashboard.processErrorResponse)}function getStatusText(item,enhance){var status=item.Status,color=null;return"SkippedExisting"==status?status=Globalize.translate("StatusSkipped"):"Failure"==status&&(color="#cc0000",status=Globalize.translate("StatusFailed")),"Success"==status&&(color="green",status=Globalize.translate("StatusSuccess")),enhance?item.StatusMessage?''+status+"":''+status+"":status}function renderResults(page,result){var rows=result.Items.map(function(item){var html="";return html+='',html+=renderItemRow(item),html+=""}).join(""),resultBody=page.querySelector(".resultBody");resultBody.innerHTML=rows,resultBody.addEventListener("click",handleItemClick);var pagingHtml=LibraryBrowser.getQueryPagingHtml({startIndex:query.StartIndex,limit:query.Limit,totalRecordCount:result.TotalRecordCount,showLimit:!1,updatePageSizeSetting:!1}),topPaging=page.querySelector(".listTopPaging");topPaging.innerHTML=pagingHtml;var bottomPaging=page.querySelector(".listBottomPaging");bottomPaging.innerHTML=pagingHtml;var btnNextTop=topPaging.querySelector(".btnNextPage"),btnNextBottom=bottomPaging.querySelector(".btnNextPage"),btnPrevTop=topPaging.querySelector(".btnPreviousPage"),btnPrevBottom=bottomPaging.querySelector(".btnPreviousPage");btnNextTop&&btnNextTop.addEventListener("click",function(){query.StartIndex+=query.Limit,reloadItems(page,!0)}),btnNextBottom&&btnNextBottom.addEventListener("click",function(){query.StartIndex+=query.Limit,reloadItems(page,!0)}),btnPrevTop&&btnPrevTop.addEventListener("click",function(){query.StartIndex-=query.Limit,reloadItems(page,!0)}),btnPrevBottom&&btnPrevBottom.addEventListener("click",function(){query.StartIndex-=query.Limit,reloadItems(page,!0)});var btnClearLog=page.querySelector(".btnClearLog");result.TotalRecordCount?btnClearLog.classList.remove("hide"):btnClearLog.classList.add("hide")}function renderItemRow(item){var html="";html+="";var hide=item.IsInProgress?"":" hide";html+='',html+="",html+='';var date=datetime.parseISO8601Date(item.Date,!0);html+=datetime.toLocaleDateString(date),html+="",html+='';var status=item.Status;return item.IsInProgress?(html+='',html+=item.OriginalFileName,html+=""):"SkippedExisting"==status?(html+='',html+=item.OriginalFileName,html+=""):"Failure"==status?(html+='',html+=item.OriginalFileName,html+=""):(html+='',html+=item.OriginalFileName,html+=""),html+="",html+='',html+=item.TargetPath||"",html+="",html+='',"Success"!=item.Status&&(html+='',html+=''),html+=""}function handleItemClick(e){var id,buttonStatus=parentWithClass(e.target,"btnShowStatusMessage");buttonStatus&&(id=buttonStatus.getAttribute("data-resultid"),showStatusMessage(id));var buttonOrganize=parentWithClass(e.target,"btnProcessResult");buttonOrganize&&(id=buttonOrganize.getAttribute("data-resultid"),organizeFile(e.view,id));var buttonDelete=parentWithClass(e.target,"btnDeleteResult");buttonDelete&&(id=buttonDelete.getAttribute("data-resultid"),deleteOriginalFile(e.view,id))}function onServerEvent(e,apiClient,data){"ScheduledTaskEnded"==e.type?data&&"AutoOrganize"==data.Key&&reloadItems(page,!1):"AutoOrganize_ItemUpdated"==e.type&&data?updateItemStatus(page,data):reloadItems(page,!1)}function updateItemStatus(page,item){var rowId="#row"+item.Id,row=page.querySelector(rowId);row&&(row.innerHTML=renderItemRow(item))}function getTabs(){return[{href:"autoorganizelog.html",name:Globalize.translate("TabActivityLog")},{href:"autoorganizetv.html",name:Globalize.translate("TabTV")},{href:"autoorganizesmart.html",name:Globalize.translate("TabSmartMatches")}]}var currentResult,page,query={StartIndex:0,Limit:50};return function(view,params){page=view;var clearButton=view.querySelector(".btnClearLog");clearButton.addEventListener("click",function(){ApiClient.clearOrganizationLog().then(function(){query.StartIndex=0,reloadItems(view,!0)},Dashboard.processErrorResponse)}),view.addEventListener("viewshow",function(e){LibraryMenu.setTabs("autoorganize",0,getTabs),reloadItems(view,!0),events.on(serverNotifications,"AutoOrganize_LogReset",onServerEvent),events.on(serverNotifications,"AutoOrganize_ItemUpdated",onServerEvent),events.on(serverNotifications,"AutoOrganize_ItemRemoved",onServerEvent),events.on(serverNotifications,"AutoOrganize_ItemAdded",onServerEvent),events.on(serverNotifications,"ScheduledTaskEnded",onServerEvent),taskButton({mode:"on",progressElem:view.querySelector(".organizeProgress"),panel:view.querySelector(".organizeTaskPanel"),taskKey:"AutoOrganize",button:view.querySelector(".btnOrganize")})}),view.addEventListener("viewhide",function(e){currentResult=null,events.off(serverNotifications,"AutoOrganize_LogReset",onServerEvent),events.off(serverNotifications,"AutoOrganize_ItemUpdated",onServerEvent),events.off(serverNotifications,"AutoOrganize_ItemRemoved",onServerEvent),events.off(serverNotifications,"AutoOrganize_ItemAdded",onServerEvent),events.off(serverNotifications,"ScheduledTaskEnded",onServerEvent),taskButton({mode:"off",button:view.querySelector(".btnOrganize")})})}}); \ No newline at end of file +define(["serverNotifications","events","scripts/taskbutton","datetime","loading","paper-icon-button-light"],function(serverNotifications,events,taskButton,datetime,loading){"use strict";function parentWithClass(elem,className){for(;!elem.classList||!elem.classList.contains(className);)if(elem=elem.parentNode,!elem)return null;return elem}function showStatusMessage(id){var item=currentResult.Items.filter(function(i){return i.Id==id})[0];Dashboard.alert({title:getStatusText(item,!1),message:item.StatusMessage})}function deleteOriginalFile(page,id){var item=currentResult.Items.filter(function(i){return i.Id==id})[0],message=Globalize.translate("MessageFileWillBeDeleted")+"

"+item.OriginalPath+"

"+Globalize.translate("MessageSureYouWishToProceed");require(["confirm"],function(confirm){confirm(message,Globalize.translate("HeaderDeleteFile")).then(function(){loading.show(),ApiClient.deleteOriginalFileFromOrganizationResult(id).then(function(){loading.hide(),reloadItems(page,!0)},Dashboard.processErrorResponse)})})}function organizeFileWithCorrections(page,item){showCorrectionPopup(page,item)}function showCorrectionPopup(page,item){require(["components/fileorganizer/fileorganizer"],function(fileorganizer){fileorganizer.show(item).then(function(){reloadItems(page,!1)})})}function organizeFile(page,id){var item=currentResult.Items.filter(function(i){return i.Id==id})[0];if(!item.TargetPath)return void("Episode"==item.Type&&organizeFileWithCorrections(page,item));var message=Globalize.translate("MessageFollowingFileWillBeMovedFrom")+"

"+item.OriginalPath+"

"+Globalize.translate("MessageDestinationTo")+"

"+item.TargetPath;item.DuplicatePaths.length&&(message+="

"+Globalize.translate("MessageDuplicatesWillBeDeleted"),message+="

"+item.DuplicatePaths.join("
")),message+="

"+Globalize.translate("MessageSureYouWishToProceed"),require(["confirm"],function(confirm){confirm(message,Globalize.translate("HeaderOrganizeFile")).then(function(){loading.show(),ApiClient.performOrganization(id).then(function(){loading.hide(),reloadItems(page,!0)},Dashboard.processErrorResponse)})})}function reloadItems(page,showSpinner){showSpinner&&loading.show(),ApiClient.getFileOrganizationResults(query).then(function(result){currentResult=result,renderResults(page,result),loading.hide()},Dashboard.processErrorResponse)}function getStatusText(item,enhance){var status=item.Status,color=null;return"SkippedExisting"==status?status=Globalize.translate("StatusSkipped"):"Failure"==status&&(color="#cc0000",status=Globalize.translate("StatusFailed")),"Success"==status&&(color="green",status=Globalize.translate("StatusSuccess")),enhance?item.StatusMessage?''+status+"":''+status+"":status}function renderResults(page,result){var rows=result.Items.map(function(item){var html="";return html+='',html+=renderItemRow(item),html+=""}).join(""),resultBody=page.querySelector(".resultBody");resultBody.innerHTML=rows,resultBody.addEventListener("click",handleItemClick);var pagingHtml=LibraryBrowser.getQueryPagingHtml({startIndex:query.StartIndex,limit:query.Limit,totalRecordCount:result.TotalRecordCount,showLimit:!1,updatePageSizeSetting:!1}),topPaging=page.querySelector(".listTopPaging");topPaging.innerHTML=pagingHtml;var bottomPaging=page.querySelector(".listBottomPaging");bottomPaging.innerHTML=pagingHtml;var btnNextTop=topPaging.querySelector(".btnNextPage"),btnNextBottom=bottomPaging.querySelector(".btnNextPage"),btnPrevTop=topPaging.querySelector(".btnPreviousPage"),btnPrevBottom=bottomPaging.querySelector(".btnPreviousPage");btnNextTop&&btnNextTop.addEventListener("click",function(){query.StartIndex+=query.Limit,reloadItems(page,!0)}),btnNextBottom&&btnNextBottom.addEventListener("click",function(){query.StartIndex+=query.Limit,reloadItems(page,!0)}),btnPrevTop&&btnPrevTop.addEventListener("click",function(){query.StartIndex-=query.Limit,reloadItems(page,!0)}),btnPrevBottom&&btnPrevBottom.addEventListener("click",function(){query.StartIndex-=query.Limit,reloadItems(page,!0)});var btnClearLog=page.querySelector(".btnClearLog");result.TotalRecordCount?btnClearLog.classList.remove("hide"):btnClearLog.classList.add("hide")}function renderItemRow(item){var html="";html+="";var hide=item.IsInProgress?"":" hide";html+='',html+="",html+='';var date=datetime.parseISO8601Date(item.Date,!0);html+=datetime.toLocaleDateString(date),html+="",html+='';var status=item.Status;return item.IsInProgress?(html+='',html+=item.OriginalFileName,html+=""):"SkippedExisting"==status?(html+='',html+=item.OriginalFileName,html+=""):"Failure"==status?(html+='',html+=item.OriginalFileName,html+=""):(html+='',html+=item.OriginalFileName,html+=""),html+="",html+='',html+=item.TargetPath||"",html+="",html+='',"Success"!=item.Status&&(html+='',html+=''),html+=""}function handleItemClick(e){var id,buttonStatus=parentWithClass(e.target,"btnShowStatusMessage");buttonStatus&&(id=buttonStatus.getAttribute("data-resultid"),showStatusMessage(id));var buttonOrganize=parentWithClass(e.target,"btnProcessResult");buttonOrganize&&(id=buttonOrganize.getAttribute("data-resultid"),organizeFile(e.view,id));var buttonDelete=parentWithClass(e.target,"btnDeleteResult");buttonDelete&&(id=buttonDelete.getAttribute("data-resultid"),deleteOriginalFile(e.view,id))}function onServerEvent(e,apiClient,data){"ScheduledTaskEnded"==e.type?data&&"AutoOrganize"==data.Key&&reloadItems(page,!1):"AutoOrganize_ItemUpdated"==e.type&&data?updateItemStatus(page,data):reloadItems(page,!1)}function updateItemStatus(page,item){var rowId="#row"+item.Id,row=page.querySelector(rowId);row&&(row.innerHTML=renderItemRow(item))}function getTabs(){return[{href:"autoorganizelog.html",name:Globalize.translate("TabActivityLog")},{href:"autoorganizetv.html",name:Globalize.translate("TabTV")},{href:"autoorganizesmart.html",name:Globalize.translate("TabSmartMatches")}]}var currentResult,page,query={StartIndex:0,Limit:50};return function(view,params){page=view;var clearButton=view.querySelector(".btnClearLog");clearButton.addEventListener("click",function(){ApiClient.clearOrganizationLog().then(function(){query.StartIndex=0,reloadItems(view,!0)},Dashboard.processErrorResponse)}),view.addEventListener("viewshow",function(e){LibraryMenu.setTabs("autoorganize",0,getTabs),reloadItems(view,!0),events.on(serverNotifications,"AutoOrganize_LogReset",onServerEvent),events.on(serverNotifications,"AutoOrganize_ItemUpdated",onServerEvent),events.on(serverNotifications,"AutoOrganize_ItemRemoved",onServerEvent),events.on(serverNotifications,"AutoOrganize_ItemAdded",onServerEvent),events.on(serverNotifications,"ScheduledTaskEnded",onServerEvent),taskButton({mode:"on",progressElem:view.querySelector(".organizeProgress"),panel:view.querySelector(".organizeTaskPanel"),taskKey:"AutoOrganize",button:view.querySelector(".btnOrganize")})}),view.addEventListener("viewhide",function(e){currentResult=null,events.off(serverNotifications,"AutoOrganize_LogReset",onServerEvent),events.off(serverNotifications,"AutoOrganize_ItemUpdated",onServerEvent),events.off(serverNotifications,"AutoOrganize_ItemRemoved",onServerEvent),events.off(serverNotifications,"AutoOrganize_ItemAdded",onServerEvent),events.off(serverNotifications,"ScheduledTaskEnded",onServerEvent),taskButton({mode:"off",button:view.querySelector(".btnOrganize")})})}}); \ No newline at end of file diff --git a/dashboard-ui/dashboard/autoorganizesmart.js b/dashboard-ui/dashboard/autoorganizesmart.js index bd21108a63..484ccd2622 100644 --- a/dashboard-ui/dashboard/autoorganizesmart.js +++ b/dashboard-ui/dashboard/autoorganizesmart.js @@ -1 +1 @@ -define(["listViewStyle"],function(){"use strict";function parentWithClass(elem,className){for(;!elem.classList||!elem.classList.contains(className);)if(elem=elem.parentNode,!elem)return null;return elem}function reloadList(page){Dashboard.showLoadingMsg(),ApiClient.getSmartMatchInfos(query).then(function(infos){currentResult=infos,populateList(page,infos),Dashboard.hideLoadingMsg()},function(){Dashboard.hideLoadingMsg()})}function populateList(page,result){var infos=result.Items;infos.length>0&&(infos=infos.sort(function(a,b){return a=a.OrganizerType+" "+(a.DisplayName||a.ItemName),b=b.OrganizerType+" "+(b.DisplayName||b.ItemName),a==b?0:a',html+='
',html+='folder',html+="
",html+='
',html+="

"+(info.DisplayName||info.ItemName)+"

",html+="
",html+="";var matchStringIndex=0;html+=info.MatchStrings.map(function(m){var matchStringHtml="";return matchStringHtml+='
',matchStringHtml+='
',matchStringHtml+="
"+m+"
",matchStringHtml+="
",matchStringHtml+='',matchStringHtml+="
",matchStringIndex++,matchStringHtml}).join("")}infos.length&&(html+="");var matchInfos=page.querySelector(".divMatchInfos");matchInfos.innerHTML=html}function getTabs(){return[{href:"autoorganizelog.html",name:Globalize.translate("TabActivityLog")},{href:"autoorganizetv.html",name:Globalize.translate("TabTV")},{href:"autoorganizesmart.html",name:Globalize.translate("TabSmartMatches")}]}var currentResult,query={StartIndex:0,Limit:1e5};return function(view,params){var divInfos=view.querySelector(".divMatchInfos");divInfos.addEventListener("click",function(e){var button=parentWithClass(e.target,"btnDeleteMatchEntry");if(button){var index=parseInt(button.getAttribute("data-index")),matchIndex=parseInt(button.getAttribute("data-matchindex")),info=currentResult.Items[index],entries=[{Name:info.ItemName,Value:info.MatchStrings[matchIndex]}];ApiClient.deleteSmartMatchEntries(entries).then(function(){reloadList(view)},Dashboard.processErrorResponse)}}),view.addEventListener("viewshow",function(e){LibraryMenu.setTabs("autoorganize",2,getTabs),Dashboard.showLoadingMsg(),reloadList(view)}),view.addEventListener("viewhide",function(e){currentResult=null})}}); \ No newline at end of file +define(["loading","listViewStyle"],function(loading){"use strict";function parentWithClass(elem,className){for(;!elem.classList||!elem.classList.contains(className);)if(elem=elem.parentNode,!elem)return null;return elem}function reloadList(page){loading.show(),ApiClient.getSmartMatchInfos(query).then(function(infos){currentResult=infos,populateList(page,infos),loading.hide()},function(){loading.hide()})}function populateList(page,result){var infos=result.Items;infos.length>0&&(infos=infos.sort(function(a,b){return a=a.OrganizerType+" "+(a.DisplayName||a.ItemName),b=b.OrganizerType+" "+(b.DisplayName||b.ItemName),a==b?0:a',html+='
',html+='folder',html+="
",html+='
',html+="

"+(info.DisplayName||info.ItemName)+"

",html+="
",html+="";var matchStringIndex=0;html+=info.MatchStrings.map(function(m){var matchStringHtml="";return matchStringHtml+='
',matchStringHtml+='
',matchStringHtml+="
"+m+"
",matchStringHtml+="
",matchStringHtml+='',matchStringHtml+="
",matchStringIndex++,matchStringHtml}).join("")}infos.length&&(html+="");var matchInfos=page.querySelector(".divMatchInfos");matchInfos.innerHTML=html}function getTabs(){return[{href:"autoorganizelog.html",name:Globalize.translate("TabActivityLog")},{href:"autoorganizetv.html",name:Globalize.translate("TabTV")},{href:"autoorganizesmart.html",name:Globalize.translate("TabSmartMatches")}]}var currentResult,query={StartIndex:0,Limit:1e5};return function(view,params){var divInfos=view.querySelector(".divMatchInfos");divInfos.addEventListener("click",function(e){var button=parentWithClass(e.target,"btnDeleteMatchEntry");if(button){var index=parseInt(button.getAttribute("data-index")),matchIndex=parseInt(button.getAttribute("data-matchindex")),info=currentResult.Items[index],entries=[{Name:info.ItemName,Value:info.MatchStrings[matchIndex]}];ApiClient.deleteSmartMatchEntries(entries).then(function(){reloadList(view)},Dashboard.processErrorResponse)}}),view.addEventListener("viewshow",function(e){LibraryMenu.setTabs("autoorganize",2,getTabs),loading.show(),reloadList(view)}),view.addEventListener("viewhide",function(e){currentResult=null})}}); \ No newline at end of file diff --git a/dashboard-ui/dashboard/cinemamodeconfiguration.js b/dashboard-ui/dashboard/cinemamodeconfiguration.js index ccdf9ac533..48093ba318 100644 --- a/dashboard-ui/dashboard/cinemamodeconfiguration.js +++ b/dashboard-ui/dashboard/cinemamodeconfiguration.js @@ -1 +1 @@ -define(["jQuery","fnchecked"],function($){"use strict";function loadPage(page,config){$(".chkMovies",page).checked(config.EnableIntrosForMovies),$(".chkEpisodes",page).checked(config.EnableIntrosForEpisodes),$(".chkMyMovieTrailers",page).checked(config.EnableIntrosFromMoviesInLibrary),$(".chkUpcomingTheaterTrailers",page).checked(config.EnableIntrosFromUpcomingTrailers),$(".chkUpcomingDvdTrailers",page).checked(config.EnableIntrosFromUpcomingDvdMovies),$(".chkUpcomingStreamingTrailers",page).checked(config.EnableIntrosFromUpcomingStreamingMovies),$(".chkOtherTrailers",page).checked(config.EnableIntrosFromSimilarMovies),$(".chkUnwatchedOnly",page).checked(!config.EnableIntrosForWatchedContent),$(".chkEnableParentalControl",page).checked(config.EnableIntrosParentalControl),$("#txtCustomIntrosPath",page).val(config.CustomIntroPath||""),$("#txtCodecIntrosPath",page).val(config.MediaInfoIntroPath||""),$("#txtNumTrailers",page).val(config.TrailerLimit),Dashboard.hideLoadingMsg()}function onSubmit(){Dashboard.showLoadingMsg();var form=this,page=$(form).parents(".page");return ApiClient.getNamedConfiguration("cinemamode").then(function(config){config.CustomIntroPath=$("#txtCustomIntrosPath",page).val(),config.MediaInfoIntroPath=$("#txtCodecIntrosPath",page).val(),config.TrailerLimit=$("#txtNumTrailers",page).val(),config.EnableIntrosForMovies=$(".chkMovies",page).checked(),config.EnableIntrosForEpisodes=$(".chkEpisodes",page).checked(),config.EnableIntrosFromMoviesInLibrary=$(".chkMyMovieTrailers",page).checked(),config.EnableIntrosForWatchedContent=!$(".chkUnwatchedOnly",page).checked(),config.EnableIntrosParentalControl=$(".chkEnableParentalControl",page).checked(),config.EnableIntrosFromUpcomingTrailers=$(".chkUpcomingTheaterTrailers",page).checked(),config.EnableIntrosFromUpcomingDvdMovies=$(".chkUpcomingDvdTrailers",page).checked(),config.EnableIntrosFromUpcomingStreamingMovies=$(".chkUpcomingStreamingTrailers",page).checked(),config.EnableIntrosFromSimilarMovies=$(".chkOtherTrailers",page).checked(),ApiClient.updateNamedConfiguration("cinemamode",config).then(Dashboard.processServerConfigurationUpdateResult)}),!1}function getTabs(){return[{href:"cinemamodeconfiguration.html",name:Globalize.translate("TabCinemaMode")},{href:"playbackconfiguration.html",name:Globalize.translate("TabResumeSettings")},{href:"streamingsettings.html",name:Globalize.translate("TabStreaming")}]}$(document).on("pageinit","#cinemaModeConfigurationPage",function(){var page=this;$("#btnSelectCustomIntrosPath",page).on("click.selectDirectory",function(){require(["directorybrowser"],function(directoryBrowser){var picker=new directoryBrowser;picker.show({callback:function(path){path&&$("#txtCustomIntrosPath",page).val(path),picker.close()},header:Globalize.translate("HeaderSelectCustomIntrosPath")})})}),$("#btnSelectCodecIntrosPath",page).on("click.selectDirectory",function(){require(["directorybrowser"],function(directoryBrowser){var picker=new directoryBrowser;picker.show({callback:function(path){path&&$("#txtCodecIntrosPath",page).val(path),picker.close()},header:Globalize.translate("HeaderSelectCodecIntrosPath")})})}),$(".cinemaModeConfigurationForm").off("submit",onSubmit).on("submit",onSubmit),AppInfo.enableSupporterMembership||(page.querySelector(".lnkSupporterLearnMore").href="#",page.querySelector(".lnkSupporterLearnMore").addEventListener("click",function(e){return e.preventDefault(),!1}))}).on("pageshow","#cinemaModeConfigurationPage",function(){LibraryMenu.setTabs("playback",0,getTabs),Dashboard.showLoadingMsg();var page=this;ApiClient.getNamedConfiguration("cinemamode").then(function(config){loadPage(page,config)})})}); \ No newline at end of file +define(["jQuery","loading","fnchecked"],function($,loading){"use strict";function loadPage(page,config){$(".chkMovies",page).checked(config.EnableIntrosForMovies),$(".chkEpisodes",page).checked(config.EnableIntrosForEpisodes),$(".chkMyMovieTrailers",page).checked(config.EnableIntrosFromMoviesInLibrary),$(".chkUpcomingTheaterTrailers",page).checked(config.EnableIntrosFromUpcomingTrailers),$(".chkUpcomingDvdTrailers",page).checked(config.EnableIntrosFromUpcomingDvdMovies),$(".chkUpcomingStreamingTrailers",page).checked(config.EnableIntrosFromUpcomingStreamingMovies),$(".chkOtherTrailers",page).checked(config.EnableIntrosFromSimilarMovies),$(".chkUnwatchedOnly",page).checked(!config.EnableIntrosForWatchedContent),$(".chkEnableParentalControl",page).checked(config.EnableIntrosParentalControl),$("#txtCustomIntrosPath",page).val(config.CustomIntroPath||""),$("#txtCodecIntrosPath",page).val(config.MediaInfoIntroPath||""),$("#txtNumTrailers",page).val(config.TrailerLimit),loading.hide()}function onSubmit(){loading.show();var form=this,page=$(form).parents(".page");return ApiClient.getNamedConfiguration("cinemamode").then(function(config){config.CustomIntroPath=$("#txtCustomIntrosPath",page).val(),config.MediaInfoIntroPath=$("#txtCodecIntrosPath",page).val(),config.TrailerLimit=$("#txtNumTrailers",page).val(),config.EnableIntrosForMovies=$(".chkMovies",page).checked(),config.EnableIntrosForEpisodes=$(".chkEpisodes",page).checked(),config.EnableIntrosFromMoviesInLibrary=$(".chkMyMovieTrailers",page).checked(),config.EnableIntrosForWatchedContent=!$(".chkUnwatchedOnly",page).checked(),config.EnableIntrosParentalControl=$(".chkEnableParentalControl",page).checked(),config.EnableIntrosFromUpcomingTrailers=$(".chkUpcomingTheaterTrailers",page).checked(),config.EnableIntrosFromUpcomingDvdMovies=$(".chkUpcomingDvdTrailers",page).checked(),config.EnableIntrosFromUpcomingStreamingMovies=$(".chkUpcomingStreamingTrailers",page).checked(),config.EnableIntrosFromSimilarMovies=$(".chkOtherTrailers",page).checked(),ApiClient.updateNamedConfiguration("cinemamode",config).then(Dashboard.processServerConfigurationUpdateResult)}),!1}function getTabs(){return[{href:"cinemamodeconfiguration.html",name:Globalize.translate("TabCinemaMode")},{href:"playbackconfiguration.html",name:Globalize.translate("TabResumeSettings")},{href:"streamingsettings.html",name:Globalize.translate("TabStreaming")}]}$(document).on("pageinit","#cinemaModeConfigurationPage",function(){var page=this;$("#btnSelectCustomIntrosPath",page).on("click.selectDirectory",function(){require(["directorybrowser"],function(directoryBrowser){var picker=new directoryBrowser;picker.show({callback:function(path){path&&$("#txtCustomIntrosPath",page).val(path),picker.close()},header:Globalize.translate("HeaderSelectCustomIntrosPath")})})}),$("#btnSelectCodecIntrosPath",page).on("click.selectDirectory",function(){require(["directorybrowser"],function(directoryBrowser){var picker=new directoryBrowser;picker.show({callback:function(path){path&&$("#txtCodecIntrosPath",page).val(path),picker.close()},header:Globalize.translate("HeaderSelectCodecIntrosPath")})})}),$(".cinemaModeConfigurationForm").off("submit",onSubmit).on("submit",onSubmit),AppInfo.enableSupporterMembership||(page.querySelector(".lnkSupporterLearnMore").href="#",page.querySelector(".lnkSupporterLearnMore").addEventListener("click",function(e){return e.preventDefault(),!1}))}).on("pageshow","#cinemaModeConfigurationPage",function(){LibraryMenu.setTabs("playback",0,getTabs),loading.show();var page=this;ApiClient.getNamedConfiguration("cinemamode").then(function(config){loadPage(page,config)})})}); \ No newline at end of file diff --git a/dashboard-ui/dashboard/dashboardgeneral.js b/dashboard-ui/dashboard/dashboardgeneral.js index 1f8560436d..4575ecd556 100644 --- a/dashboard-ui/dashboard/dashboardgeneral.js +++ b/dashboard-ui/dashboard/dashboardgeneral.js @@ -1 +1 @@ -define(["jQuery","fnchecked","emby-checkbox","emby-collapse","emby-textarea","emby-input","emby-select"],function($){"use strict";function loadPage(page,config,languageOptions,systemInfo){var os=systemInfo.OperatingSystem.toLowerCase();os.indexOf("windows")!=-1?$("#windowsStartupDescription",page).show():$("#windowsStartupDescription",page).hide(),systemInfo.SupportsAutoRunAtStartup?$("#fldRunAtStartup",page).show():$("#fldRunAtStartup",page).hide(),page.querySelector("#txtCachePath").value=config.CachePath||"",$("#selectLocalizationLanguage",page).html(languageOptions.map(function(l){return'"})).val(config.UICulture),currentLanguage=config.UICulture,$("#chkUsageData",page).checked(config.EnableAnonymousUsageReporting),$("#chkRunAtStartup",page).checked(config.RunAtStartup),systemInfo.CanSelfUpdate?$(".fldAutomaticUpdates",page).show():$(".fldAutomaticUpdates",page).hide(),$("#chkEnableAutomaticServerUpdates",page).checked(config.EnableAutoUpdate),$("#chkEnableAutomaticRestart",page).checked(config.EnableAutomaticRestart),systemInfo.CanSelfRestart?$("#fldEnableAutomaticRestart",page).show():$("#fldEnableAutomaticRestart",page).hide(),systemInfo.CanSelfRestart||systemInfo.CanSelfUpdate?$(".autoUpdatesContainer",page).removeClass("hide"):$(".autoUpdatesContainer",page).addClass("hide"),Dashboard.hideLoadingMsg()}function onSubmit(){Dashboard.showLoadingMsg();var form=this;$(form).parents(".page");return ApiClient.getServerConfiguration().then(function(config){config.UICulture=$("#selectLocalizationLanguage",form).val(),config.CachePath=form.querySelector("#txtCachePath").value;var requiresReload=!1;config.UICulture!=currentLanguage&&(requiresReload=!0),config.EnableAnonymousUsageReporting=$("#chkUsageData",form).checked(),config.RunAtStartup=$("#chkRunAtStartup",form).checked(),config.EnableAutomaticRestart=$("#chkEnableAutomaticRestart",form).checked(),config.EnableAutoUpdate=$("#chkEnableAutomaticServerUpdates",form).checked(),ApiClient.updateServerConfiguration(config).then(function(){ApiClient.getNamedConfiguration(brandingConfigKey).then(function(brandingConfig){brandingConfig.LoginDisclaimer=form.querySelector("#txtLoginDisclaimer").value,brandingConfig.CustomCss=form.querySelector("#txtCustomCss").value,currentBrandingOptions&&brandingConfig.CustomCss!=currentBrandingOptions.CustomCss&&(requiresReload=!0),ApiClient.updateNamedConfiguration(brandingConfigKey,brandingConfig).then(function(){Dashboard.processServerConfigurationUpdateResult(),requiresReload&&!AppInfo.isNativeApp&&window.location.reload(!0)})})})}),!1}var currentBrandingOptions,currentLanguage,brandingConfigKey="branding";return function(view,params){$("#btnSelectCachePath",view).on("click.selectDirectory",function(){require(["directorybrowser"],function(directoryBrowser){var picker=new directoryBrowser;picker.show({callback:function(path){path&&(view.querySelector("#txtCachePath").value=path),picker.close()},header:Globalize.translate("HeaderSelectServerCachePath"),instruction:Globalize.translate("HeaderSelectServerCachePathHelp")})})}),$(".dashboardGeneralForm",view).off("submit",onSubmit).on("submit",onSubmit),view.addEventListener("viewshow",function(){var promise1=ApiClient.getServerConfiguration(),promise2=ApiClient.getJSON(ApiClient.getUrl("Localization/Options")),promise3=ApiClient.getSystemInfo();Promise.all([promise1,promise2,promise3]).then(function(responses){loadPage(view,responses[0],responses[1],responses[2])}),ApiClient.getNamedConfiguration(brandingConfigKey).then(function(config){currentBrandingOptions=config,view.querySelector("#txtLoginDisclaimer").value=config.LoginDisclaimer||"",view.querySelector("#txtCustomCss").value=config.CustomCss||""})})}}); \ No newline at end of file +define(["jQuery","loading","fnchecked","emby-checkbox","emby-collapse","emby-textarea","emby-input","emby-select"],function($,loading){"use strict";function loadPage(page,config,languageOptions,systemInfo){var os=systemInfo.OperatingSystem.toLowerCase();os.indexOf("windows")!=-1?$("#windowsStartupDescription",page).show():$("#windowsStartupDescription",page).hide(),systemInfo.SupportsAutoRunAtStartup?$("#fldRunAtStartup",page).show():$("#fldRunAtStartup",page).hide(),page.querySelector("#txtCachePath").value=config.CachePath||"",$("#selectLocalizationLanguage",page).html(languageOptions.map(function(l){return'"})).val(config.UICulture),currentLanguage=config.UICulture,$("#chkUsageData",page).checked(config.EnableAnonymousUsageReporting),$("#chkRunAtStartup",page).checked(config.RunAtStartup),systemInfo.CanSelfUpdate?$(".fldAutomaticUpdates",page).show():$(".fldAutomaticUpdates",page).hide(),$("#chkEnableAutomaticServerUpdates",page).checked(config.EnableAutoUpdate),$("#chkEnableAutomaticRestart",page).checked(config.EnableAutomaticRestart),systemInfo.CanSelfRestart?$("#fldEnableAutomaticRestart",page).show():$("#fldEnableAutomaticRestart",page).hide(),systemInfo.CanSelfRestart||systemInfo.CanSelfUpdate?$(".autoUpdatesContainer",page).removeClass("hide"):$(".autoUpdatesContainer",page).addClass("hide"),loading.hide()}function onSubmit(){loading.show();var form=this;$(form).parents(".page");return ApiClient.getServerConfiguration().then(function(config){config.UICulture=$("#selectLocalizationLanguage",form).val(),config.CachePath=form.querySelector("#txtCachePath").value;var requiresReload=!1;config.UICulture!=currentLanguage&&(requiresReload=!0),config.EnableAnonymousUsageReporting=$("#chkUsageData",form).checked(),config.RunAtStartup=$("#chkRunAtStartup",form).checked(),config.EnableAutomaticRestart=$("#chkEnableAutomaticRestart",form).checked(),config.EnableAutoUpdate=$("#chkEnableAutomaticServerUpdates",form).checked(),ApiClient.updateServerConfiguration(config).then(function(){ApiClient.getNamedConfiguration(brandingConfigKey).then(function(brandingConfig){brandingConfig.LoginDisclaimer=form.querySelector("#txtLoginDisclaimer").value,brandingConfig.CustomCss=form.querySelector("#txtCustomCss").value,currentBrandingOptions&&brandingConfig.CustomCss!=currentBrandingOptions.CustomCss&&(requiresReload=!0),ApiClient.updateNamedConfiguration(brandingConfigKey,brandingConfig).then(function(){Dashboard.processServerConfigurationUpdateResult(),requiresReload&&!AppInfo.isNativeApp&&window.location.reload(!0)})})})}),!1}var currentBrandingOptions,currentLanguage,brandingConfigKey="branding";return function(view,params){$("#btnSelectCachePath",view).on("click.selectDirectory",function(){require(["directorybrowser"],function(directoryBrowser){var picker=new directoryBrowser;picker.show({callback:function(path){path&&(view.querySelector("#txtCachePath").value=path),picker.close()},header:Globalize.translate("HeaderSelectServerCachePath"),instruction:Globalize.translate("HeaderSelectServerCachePathHelp")})})}),$(".dashboardGeneralForm",view).off("submit",onSubmit).on("submit",onSubmit),view.addEventListener("viewshow",function(){var promise1=ApiClient.getServerConfiguration(),promise2=ApiClient.getJSON(ApiClient.getUrl("Localization/Options")),promise3=ApiClient.getSystemInfo();Promise.all([promise1,promise2,promise3]).then(function(responses){loadPage(view,responses[0],responses[1],responses[2])}),ApiClient.getNamedConfiguration(brandingConfigKey).then(function(config){currentBrandingOptions=config,view.querySelector("#txtLoginDisclaimer").value=config.LoginDisclaimer||"",view.querySelector("#txtCustomCss").value=config.CustomCss||""})})}}); \ No newline at end of file diff --git a/dashboard-ui/dashboard/dashboardhosting.js b/dashboard-ui/dashboard/dashboardhosting.js index dbce604b08..cb5198d29b 100644 --- a/dashboard-ui/dashboard/dashboardhosting.js +++ b/dashboard-ui/dashboard/dashboardhosting.js @@ -1 +1 @@ -define(["jQuery","fnchecked","emby-checkbox"],function($){"use strict";function onSubmit(){var form=this,localAddress=form.querySelector("#txtLocalAddress").value,enableUpnp=$("#chkEnableUpnp",form).checked();return confirmSelections(localAddress,enableUpnp,function(){Dashboard.showLoadingMsg(),ApiClient.getServerConfiguration().then(function(config){config.HttpServerPortNumber=$("#txtPortNumber",form).val(),config.PublicPort=$("#txtPublicPort",form).val(),config.PublicHttpsPort=$("#txtPublicHttpsPort",form).val(),config.EnableHttps=$("#chkEnableHttps",form).checked(),config.HttpsPortNumber=$("#txtHttpsPort",form).val(),config.EnableUPnP=enableUpnp,config.WanDdns=$("#txtDdns",form).val(),config.CertificatePath=$("#txtCertificatePath",form).val(),config.LocalNetworkAddresses=localAddress?[localAddress]:[],ApiClient.updateServerConfiguration(config).then(Dashboard.processServerConfigurationUpdateResult,Dashboard.processErrorResponse)})}),!1}function confirmSelections(localAddress,enableUpnp,callback){localAddress||!enableUpnp?require(["alert"],function(alert){alert({title:Globalize.translate("TitleHostingSettings"),text:Globalize.translate("SettingsWarning")}).then(callback)}):callback()}function getTabs(){return[{href:"dashboardhosting.html",name:Globalize.translate("TabHosting")},{href:"serversecurity.html",name:Globalize.translate("TabSecurity")}]}return function(view,params){function loadPage(page,config){$("#txtPortNumber",page).val(config.HttpServerPortNumber),$("#txtPublicPort",page).val(config.PublicPort),$("#txtPublicHttpsPort",page).val(config.PublicHttpsPort),page.querySelector("#txtLocalAddress").value=config.LocalNetworkAddresses[0]||"";var chkEnableHttps=page.querySelector("#chkEnableHttps");chkEnableHttps.checked=config.EnableHttps,$("#txtHttpsPort",page).val(config.HttpsPortNumber),$("#txtDdns",page).val(config.WanDdns||"");var txtCertificatePath=page.querySelector("#txtCertificatePath");txtCertificatePath.value=config.CertificatePath||"",$("#chkEnableUpnp",page).checked(config.EnableUPnP),onCertPathChange.call(txtCertificatePath),Dashboard.hideLoadingMsg()}function onCertPathChange(){this.value?view.querySelector("#txtDdns").setAttribute("required","required"):view.querySelector("#txtDdns").removeAttribute("required")}$("#btnSelectCertPath",view).on("click.selectDirectory",function(){require(["directorybrowser"],function(directoryBrowser){var picker=new directoryBrowser;picker.show({includeFiles:!0,includeDirectories:!0,callback:function(path){path&&$("#txtCertificatePath",view).val(path),picker.close()},header:Globalize.translate("HeaderSelectCertificatePath")})})}),$(".dashboardHostingForm").off("submit",onSubmit).on("submit",onSubmit),view.querySelector("#txtCertificatePath").addEventListener("change",onCertPathChange),view.addEventListener("viewshow",function(e){LibraryMenu.setTabs("adminadvanced",0,getTabs),Dashboard.showLoadingMsg(),ApiClient.getServerConfiguration().then(function(config){loadPage(view,config)})})}}); \ No newline at end of file +define(["jQuery","loading","fnchecked","emby-checkbox"],function($,loading){"use strict";function onSubmit(){var form=this,localAddress=form.querySelector("#txtLocalAddress").value,enableUpnp=$("#chkEnableUpnp",form).checked();return confirmSelections(localAddress,enableUpnp,function(){loading.show(),ApiClient.getServerConfiguration().then(function(config){config.HttpServerPortNumber=$("#txtPortNumber",form).val(),config.PublicPort=$("#txtPublicPort",form).val(),config.PublicHttpsPort=$("#txtPublicHttpsPort",form).val(),config.EnableHttps=$("#chkEnableHttps",form).checked(),config.HttpsPortNumber=$("#txtHttpsPort",form).val(),config.EnableUPnP=enableUpnp,config.WanDdns=$("#txtDdns",form).val(),config.CertificatePath=$("#txtCertificatePath",form).val(),config.LocalNetworkAddresses=localAddress?[localAddress]:[],ApiClient.updateServerConfiguration(config).then(Dashboard.processServerConfigurationUpdateResult,Dashboard.processErrorResponse)})}),!1}function confirmSelections(localAddress,enableUpnp,callback){localAddress||!enableUpnp?require(["alert"],function(alert){alert({title:Globalize.translate("TitleHostingSettings"),text:Globalize.translate("SettingsWarning")}).then(callback)}):callback()}function getTabs(){return[{href:"dashboardhosting.html",name:Globalize.translate("TabHosting")},{href:"serversecurity.html",name:Globalize.translate("TabSecurity")}]}return function(view,params){function loadPage(page,config){$("#txtPortNumber",page).val(config.HttpServerPortNumber),$("#txtPublicPort",page).val(config.PublicPort),$("#txtPublicHttpsPort",page).val(config.PublicHttpsPort),page.querySelector("#txtLocalAddress").value=config.LocalNetworkAddresses[0]||"";var chkEnableHttps=page.querySelector("#chkEnableHttps");chkEnableHttps.checked=config.EnableHttps,$("#txtHttpsPort",page).val(config.HttpsPortNumber),$("#txtDdns",page).val(config.WanDdns||"");var txtCertificatePath=page.querySelector("#txtCertificatePath");txtCertificatePath.value=config.CertificatePath||"",$("#chkEnableUpnp",page).checked(config.EnableUPnP),onCertPathChange.call(txtCertificatePath),loading.hide()}function onCertPathChange(){this.value?view.querySelector("#txtDdns").setAttribute("required","required"):view.querySelector("#txtDdns").removeAttribute("required")}$("#btnSelectCertPath",view).on("click.selectDirectory",function(){require(["directorybrowser"],function(directoryBrowser){var picker=new directoryBrowser;picker.show({includeFiles:!0,includeDirectories:!0,callback:function(path){path&&$("#txtCertificatePath",view).val(path),picker.close()},header:Globalize.translate("HeaderSelectCertificatePath")})})}),$(".dashboardHostingForm").off("submit",onSubmit).on("submit",onSubmit),view.querySelector("#txtCertificatePath").addEventListener("change",onCertPathChange),view.addEventListener("viewshow",function(e){LibraryMenu.setTabs("adminadvanced",0,getTabs),loading.show(),ApiClient.getServerConfiguration().then(function(config){loadPage(view,config)})})}}); \ No newline at end of file diff --git a/dashboard-ui/dashboard/devicesupload.js b/dashboard-ui/dashboard/devicesupload.js index 80c918be9c..38eef1bd4e 100644 --- a/dashboard-ui/dashboard/devicesupload.js +++ b/dashboard-ui/dashboard/devicesupload.js @@ -1 +1 @@ -define(["jQuery","fnchecked"],function($){"use strict";function load(page,config){$("#txtUploadPath",page).val(config.CameraUploadPath||""),$("#chkSubfolder",page).checked(config.EnableCameraUploadSubfolders)}function loadData(page){Dashboard.showLoadingMsg(),ApiClient.getNamedConfiguration("devices").then(function(config){load(page,config),Dashboard.hideLoadingMsg()})}function save(page){ApiClient.getNamedConfiguration("devices").then(function(config){config.CameraUploadPath=$("#txtUploadPath",page).val(),config.EnableCameraUploadSubfolders=$("#chkSubfolder",page).checked(),ApiClient.updateNamedConfiguration("devices",config).then(Dashboard.processServerConfigurationUpdateResult)})}function onSubmit(){var form=this,page=$(form).parents(".page");return save(page),!1}function getTabs(){return[{href:"devices.html",name:Globalize.translate("TabDevices")},{href:"devicesupload.html",name:Globalize.translate("TabCameraUpload")}]}$(document).on("pageinit","#devicesUploadPage",function(){var page=this;$("#btnSelectUploadPath",page).on("click.selectDirectory",function(){require(["directorybrowser"],function(directoryBrowser){var picker=new directoryBrowser;picker.show({callback:function(path){path&&$("#txtUploadPath",page).val(path),picker.close()},header:Globalize.translate("HeaderSelectUploadPath")})})}),$(".devicesUploadForm").off("submit",onSubmit).on("submit",onSubmit)}).on("pageshow","#devicesUploadPage",function(){LibraryMenu.setTabs("devices",1,getTabs);var page=this;loadData(page)})}); \ No newline at end of file +define(["jQuery","loading","fnchecked"],function($,loading){"use strict";function load(page,config){$("#txtUploadPath",page).val(config.CameraUploadPath||""),$("#chkSubfolder",page).checked(config.EnableCameraUploadSubfolders)}function loadData(page){loading.show(),ApiClient.getNamedConfiguration("devices").then(function(config){load(page,config),loading.hide()})}function save(page){ApiClient.getNamedConfiguration("devices").then(function(config){config.CameraUploadPath=$("#txtUploadPath",page).val(),config.EnableCameraUploadSubfolders=$("#chkSubfolder",page).checked(),ApiClient.updateNamedConfiguration("devices",config).then(Dashboard.processServerConfigurationUpdateResult)})}function onSubmit(){var form=this,page=$(form).parents(".page");return save(page),!1}function getTabs(){return[{href:"devices.html",name:Globalize.translate("TabDevices")},{href:"devicesupload.html",name:Globalize.translate("TabCameraUpload")}]}$(document).on("pageinit","#devicesUploadPage",function(){var page=this;$("#btnSelectUploadPath",page).on("click.selectDirectory",function(){require(["directorybrowser"],function(directoryBrowser){var picker=new directoryBrowser;picker.show({callback:function(path){path&&$("#txtUploadPath",page).val(path),picker.close()},header:Globalize.translate("HeaderSelectUploadPath")})})}),$(".devicesUploadForm").off("submit",onSubmit).on("submit",onSubmit)}).on("pageshow","#devicesUploadPage",function(){LibraryMenu.setTabs("devices",1,getTabs);var page=this;loadData(page)})}); \ No newline at end of file diff --git a/dashboard-ui/dashboard/librarydisplay.js b/dashboard-ui/dashboard/librarydisplay.js index 8a5482b966..1de7131da3 100644 --- a/dashboard-ui/dashboard/librarydisplay.js +++ b/dashboard-ui/dashboard/librarydisplay.js @@ -1 +1 @@ -define(["globalize","emby-checkbox","emby-button"],function(globalize){"use strict";function getTabs(){return[{href:"library.html",name:Globalize.translate("HeaderLibraries")},{href:"librarydisplay.html",name:Globalize.translate("TabDisplay")},{href:"metadataimages.html",name:Globalize.translate("TabMetadata")},{href:"metadatanfo.html",name:Globalize.translate("TabNfoSettings")},{href:"librarysettings.html",name:Globalize.translate("TabAdvanced")}]}return function(view,params){function loadData(){ApiClient.getServerConfiguration().then(function(config){view.querySelector(".chkFolderView").checked=config.EnableFolderView,view.querySelector(".chkGroupMoviesIntoCollections").checked=config.EnableGroupingIntoCollections,view.querySelector(".chkDisplaySpecialsWithinSeasons").checked=config.DisplaySpecialsWithinSeasons,view.querySelector(".chkDisplayCollectionView").checked=config.DisplayCollectionsView,view.querySelector(".chkDisplayChannelsInline").checked=!config.EnableChannelView,view.querySelector(".chkExternalContentInSuggestions").checked=config.EnableExternalContentInSuggestions})}view.querySelector("form").addEventListener("submit",function(e){Dashboard.showLoadingMsg();var form=this;return ApiClient.getServerConfiguration().then(function(config){config.EnableFolderView=form.querySelector(".chkFolderView").checked,config.EnableGroupingIntoCollections=form.querySelector(".chkGroupMoviesIntoCollections").checked,config.DisplaySpecialsWithinSeasons=form.querySelector(".chkDisplaySpecialsWithinSeasons").checked,config.DisplayCollectionsView=form.querySelector(".chkDisplayCollectionView").checked,config.EnableChannelView=!form.querySelector(".chkDisplayChannelsInline").checked,config.EnableExternalContentInSuggestions=form.querySelector(".chkExternalContentInSuggestions").checked,ApiClient.updateServerConfiguration(config).then(Dashboard.processServerConfigurationUpdateResult)}),e.preventDefault(),!1}),view.addEventListener("viewshow",function(){LibraryMenu.setTabs("librarysetup",1,getTabs),loadData()})}}); \ No newline at end of file +define(["globalize","loading","emby-checkbox","emby-button"],function(globalize,loading){"use strict";function getTabs(){return[{href:"library.html",name:Globalize.translate("HeaderLibraries")},{href:"librarydisplay.html",name:Globalize.translate("TabDisplay")},{href:"metadataimages.html",name:Globalize.translate("TabMetadata")},{href:"metadatanfo.html",name:Globalize.translate("TabNfoSettings")},{href:"librarysettings.html",name:Globalize.translate("TabAdvanced")}]}return function(view,params){function loadData(){ApiClient.getServerConfiguration().then(function(config){view.querySelector(".chkFolderView").checked=config.EnableFolderView,view.querySelector(".chkGroupMoviesIntoCollections").checked=config.EnableGroupingIntoCollections,view.querySelector(".chkDisplaySpecialsWithinSeasons").checked=config.DisplaySpecialsWithinSeasons,view.querySelector(".chkDisplayCollectionView").checked=config.DisplayCollectionsView,view.querySelector(".chkDisplayChannelsInline").checked=!config.EnableChannelView,view.querySelector(".chkExternalContentInSuggestions").checked=config.EnableExternalContentInSuggestions})}view.querySelector("form").addEventListener("submit",function(e){loading.show();var form=this;return ApiClient.getServerConfiguration().then(function(config){config.EnableFolderView=form.querySelector(".chkFolderView").checked,config.EnableGroupingIntoCollections=form.querySelector(".chkGroupMoviesIntoCollections").checked,config.DisplaySpecialsWithinSeasons=form.querySelector(".chkDisplaySpecialsWithinSeasons").checked,config.DisplayCollectionsView=form.querySelector(".chkDisplayCollectionView").checked,config.EnableChannelView=!form.querySelector(".chkDisplayChannelsInline").checked,config.EnableExternalContentInSuggestions=form.querySelector(".chkExternalContentInSuggestions").checked,ApiClient.updateServerConfiguration(config).then(Dashboard.processServerConfigurationUpdateResult)}),e.preventDefault(),!1}),view.addEventListener("viewshow",function(){LibraryMenu.setTabs("librarysetup",1,getTabs),loadData()})}}); \ No newline at end of file diff --git a/dashboard-ui/dashboard/librarysettings.js b/dashboard-ui/dashboard/librarysettings.js index 434ec8bd4f..b1cdbf5da8 100644 --- a/dashboard-ui/dashboard/librarysettings.js +++ b/dashboard-ui/dashboard/librarysettings.js @@ -1 +1 @@ -define(["jQuery","fnchecked","emby-checkbox"],function($){"use strict";function loadPage(page,config){config.MergeMetadataAndImagesByName?$(".fldImagesByName",page).hide():$(".fldImagesByName",page).show(),$("#txtSeasonZeroName",page).val(config.SeasonZeroDisplayName),$("#chkSaveMetadataHidden",page).checked(config.SaveMetadataHidden),$("#txtMetadataPath",page).val(config.MetadataPath||""),$("#txtMetadataNetworkPath",page).val(config.MetadataNetworkPath||""),Dashboard.hideLoadingMsg()}function loadMetadataConfig(page,config){$("#selectDateAdded",page).val(config.UseFileCreationTimeForDateAdded?"1":"0")}function loadFanartConfig(page,config){$("#txtFanartApiKey",page).val(config.UserApiKey||"")}function saveFanart(form){ApiClient.getNamedConfiguration("fanart").then(function(config){config.UserApiKey=$("#txtFanartApiKey",form).val(),ApiClient.updateNamedConfiguration("fanart",config)})}function saveMetadata(form){ApiClient.getNamedConfiguration("metadata").then(function(config){config.UseFileCreationTimeForDateAdded="1"==$("#selectDateAdded",form).val(),ApiClient.updateNamedConfiguration("metadata",config)})}function onSubmit(){Dashboard.showLoadingMsg();var form=this;return ApiClient.getServerConfiguration().then(function(config){config.SeasonZeroDisplayName=$("#txtSeasonZeroName",form).val(),config.SaveMetadataHidden=$("#chkSaveMetadataHidden",form).checked(),config.EnableTvDbUpdates=$("#chkEnableTvdbUpdates",form).checked(),config.EnableTmdbUpdates=$("#chkEnableTmdbUpdates",form).checked(),config.EnableFanArtUpdates=$("#chkEnableFanartUpdates",form).checked(),config.MetadataPath=$("#txtMetadataPath",form).val(),config.MetadataNetworkPath=$("#txtMetadataNetworkPath",form).val(),config.FanartApiKey=$("#txtFanartApiKey",form).val(),ApiClient.updateServerConfiguration(config).then(Dashboard.processServerConfigurationUpdateResult)}),saveMetadata(form),saveFanart(form),!1}function getTabs(){return[{href:"library.html",name:Globalize.translate("HeaderLibraries")},{href:"librarydisplay.html",name:Globalize.translate("TabDisplay")},{href:"metadataimages.html",name:Globalize.translate("TabMetadata")},{href:"metadatanfo.html",name:Globalize.translate("TabNfoSettings")},{href:"librarysettings.html",name:Globalize.translate("TabAdvanced")}]}return function(view,params){$("#btnSelectMetadataPath",view).on("click.selectDirectory",function(){require(["directorybrowser"],function(directoryBrowser){var picker=new directoryBrowser;picker.show({path:$("#txtMetadataPath",view).val(),networkSharePath:$("#txtMetadataNetworkPath",view).val(),callback:function(path,networkPath){path&&($("#txtMetadataPath",view).val(path),$("#txtMetadataNetworkPath",view).val(networkPath)),picker.close()},header:Globalize.translate("HeaderSelectMetadataPath"),instruction:Globalize.translate("HeaderSelectMetadataPathHelp"),enableNetworkSharePath:!0})})}),$(".librarySettingsForm").off("submit",onSubmit).on("submit",onSubmit),view.addEventListener("viewshow",function(){LibraryMenu.setTabs("librarysetup",4,getTabs),Dashboard.showLoadingMsg();var page=this;ApiClient.getServerConfiguration().then(function(config){loadPage(page,config)}),ApiClient.getNamedConfiguration("metadata").then(function(metadata){loadMetadataConfig(page,metadata)}),ApiClient.getNamedConfiguration("fanart").then(function(metadata){loadFanartConfig(page,metadata)})})}}); \ No newline at end of file +define(["jQuery","loading","fnchecked","emby-checkbox"],function($,loading){"use strict";function loadPage(page,config){config.MergeMetadataAndImagesByName?$(".fldImagesByName",page).hide():$(".fldImagesByName",page).show(),$("#txtSeasonZeroName",page).val(config.SeasonZeroDisplayName),$("#chkSaveMetadataHidden",page).checked(config.SaveMetadataHidden),$("#txtMetadataPath",page).val(config.MetadataPath||""),$("#txtMetadataNetworkPath",page).val(config.MetadataNetworkPath||""),loading.hide()}function loadMetadataConfig(page,config){$("#selectDateAdded",page).val(config.UseFileCreationTimeForDateAdded?"1":"0")}function loadFanartConfig(page,config){$("#txtFanartApiKey",page).val(config.UserApiKey||"")}function saveFanart(form){ApiClient.getNamedConfiguration("fanart").then(function(config){config.UserApiKey=$("#txtFanartApiKey",form).val(),ApiClient.updateNamedConfiguration("fanart",config)})}function saveMetadata(form){ApiClient.getNamedConfiguration("metadata").then(function(config){config.UseFileCreationTimeForDateAdded="1"==$("#selectDateAdded",form).val(),ApiClient.updateNamedConfiguration("metadata",config)})}function onSubmit(){loading.show();var form=this;return ApiClient.getServerConfiguration().then(function(config){config.SeasonZeroDisplayName=$("#txtSeasonZeroName",form).val(),config.SaveMetadataHidden=$("#chkSaveMetadataHidden",form).checked(),config.EnableTvDbUpdates=$("#chkEnableTvdbUpdates",form).checked(),config.EnableTmdbUpdates=$("#chkEnableTmdbUpdates",form).checked(),config.EnableFanArtUpdates=$("#chkEnableFanartUpdates",form).checked(),config.MetadataPath=$("#txtMetadataPath",form).val(),config.MetadataNetworkPath=$("#txtMetadataNetworkPath",form).val(),config.FanartApiKey=$("#txtFanartApiKey",form).val(),ApiClient.updateServerConfiguration(config).then(Dashboard.processServerConfigurationUpdateResult)}),saveMetadata(form),saveFanart(form),!1}function getTabs(){return[{href:"library.html",name:Globalize.translate("HeaderLibraries")},{href:"librarydisplay.html",name:Globalize.translate("TabDisplay")},{href:"metadataimages.html",name:Globalize.translate("TabMetadata")},{href:"metadatanfo.html",name:Globalize.translate("TabNfoSettings")},{href:"librarysettings.html",name:Globalize.translate("TabAdvanced")}]}return function(view,params){$("#btnSelectMetadataPath",view).on("click.selectDirectory",function(){require(["directorybrowser"],function(directoryBrowser){var picker=new directoryBrowser;picker.show({path:$("#txtMetadataPath",view).val(),networkSharePath:$("#txtMetadataNetworkPath",view).val(),callback:function(path,networkPath){path&&($("#txtMetadataPath",view).val(path),$("#txtMetadataNetworkPath",view).val(networkPath)),picker.close()},header:Globalize.translate("HeaderSelectMetadataPath"),instruction:Globalize.translate("HeaderSelectMetadataPathHelp"),enableNetworkSharePath:!0})})}),$(".librarySettingsForm").off("submit",onSubmit).on("submit",onSubmit),view.addEventListener("viewshow",function(){LibraryMenu.setTabs("librarysetup",4,getTabs),loading.show();var page=this;ApiClient.getServerConfiguration().then(function(config){loadPage(page,config)}),ApiClient.getNamedConfiguration("metadata").then(function(metadata){loadMetadataConfig(page,metadata)}),ApiClient.getNamedConfiguration("fanart").then(function(metadata){loadFanartConfig(page,metadata)})})}}); \ No newline at end of file diff --git a/dashboard-ui/dashboard/livetvtuner.js b/dashboard-ui/dashboard/livetvtuner.js index eca7ba4bbe..dd98253e21 100644 --- a/dashboard-ui/dashboard/livetvtuner.js +++ b/dashboard-ui/dashboard/livetvtuner.js @@ -1 +1 @@ -define(["globalize","emby-input","emby-button","emby-checkbox","emby-select"],function(globalize){"use strict";function fillTypes(view,currentId){return ApiClient.getJSON(ApiClient.getUrl("LiveTv/TunerHosts/Types")).then(function(types){var selectType=view.querySelector(".selectType");selectType.innerHTML=types.map(function(t){return'"}).join(""),selectType.disabled=null!=currentId,selectType.value="",selectType.dispatchEvent(new CustomEvent("change",{}))})}function reload(view,providerId){view.querySelector(".txtDevicePath").value="",view.querySelector(".chkFavorite").checked=!1,providerId&&ApiClient.getNamedConfiguration("livetv").then(function(config){var info=config.TunerHosts.filter(function(i){return i.Id==providerId})[0];fillTunerHostInfo(view,info)})}function fillTunerHostInfo(view,info){var selectType=view.querySelector(".selectType");selectType.value=info.Type||"",selectType.dispatchEvent(new CustomEvent("change",{})),view.querySelector(".txtDevicePath").value=info.Url||"",view.querySelector(".chkFavorite").checked=info.ImportFavoritesOnly,view.querySelector(".chkTranscode").checked=info.AllowHWTranscoding}function submitForm(page){Dashboard.showLoadingMsg();var info={Type:page.querySelector(".selectType").value,Url:page.querySelector(".txtDevicePath").value,ImportFavoritesOnly:page.querySelector(".chkFavorite").checked,AllowHWTranscoding:page.querySelector(".chkTranscode").checked,EnableTvgId:!0},id=getParameterByName("id");id&&(info.Id=id),ApiClient.ajax({type:"POST",url:ApiClient.getUrl("LiveTv/TunerHosts"),data:JSON.stringify(info),contentType:"application/json"}).then(function(result){Dashboard.processServerConfigurationUpdateResult(),Dashboard.navigate("livetvstatus.html")},function(){Dashboard.alert({message:Globalize.translate("ErrorSavingTvProvider")})})}function getRequirePromise(deps){return new Promise(function(resolve,reject){require(deps,resolve)})}function getDetectedDevice(){return getRequirePromise(["tunerPicker"]).then(function(tunerPicker){return(new tunerPicker).show({serverId:ApiClient.serverId()})})}return function(view,params){function onTypeChange(){var value=this.value,mayIncludeUnsupportedDrmChannels="hdhomerun"===value,supportsTranscoding="hdhomerun"===value,supportsFavorites="hdhomerun"===value,supportsTunerIpAddress="hdhomerun"===value,supportsTunerFileOrUrl="m3u"===value;supportsTunerIpAddress?(view.querySelector(".txtDevicePath").label(globalize.translate("LabelTunerIpAddress")),view.querySelector(".btnSelectPath").classList.add("hide"),view.querySelector(".fldPath").classList.remove("hide")):supportsTunerFileOrUrl?(view.querySelector(".txtDevicePath").label(globalize.translate("LabelFileOrUrl")),view.querySelector(".btnSelectPath").classList.remove("hide"),view.querySelector(".fldPath").classList.remove("hide")):(view.querySelector(".fldPath").classList.add("hide"),view.querySelector(".btnSelectPath").classList.add("hide")),supportsFavorites?view.querySelector(".fldFavorites").classList.remove("hide"):view.querySelector(".fldFavorites").classList.add("hide"),supportsTranscoding?view.querySelector(".fldTranscode").classList.remove("hide"):view.querySelector(".fldTranscode").classList.add("hide"),mayIncludeUnsupportedDrmChannels?view.querySelector(".drmMessage").classList.remove("hide"):view.querySelector(".drmMessage").classList.add("hide")}params.id||view.querySelector(".btnDetect").classList.remove("hide"),view.addEventListener("viewshow",function(){var currentId=params.id;fillTypes(view,currentId).then(function(){reload(view,currentId)})}),view.querySelector("form").addEventListener("submit",function(e){return submitForm(view),e.preventDefault(),e.stopPropagation(),!1}),view.querySelector(".selectType").addEventListener("change",onTypeChange),view.querySelector(".btnDetect").addEventListener("click",function(){getDetectedDevice().then(function(info){fillTunerHostInfo(view,info)})}),view.querySelector(".btnSelectPath").addEventListener("click",function(){require(["directorybrowser"],function(directoryBrowser){var picker=new directoryBrowser;picker.show({includeFiles:!0,callback:function(path){path&&(view.querySelector(".txtDevicePath").value=path),picker.close()}})})})}}); \ No newline at end of file +define(["globalize","loading","emby-input","emby-button","emby-checkbox","emby-select"],function(globalize,loading){"use strict";function fillTypes(view,currentId){return ApiClient.getJSON(ApiClient.getUrl("LiveTv/TunerHosts/Types")).then(function(types){var selectType=view.querySelector(".selectType");selectType.innerHTML=types.map(function(t){return'"}).join("")+'",selectType.disabled=null!=currentId,selectType.value="",selectType.dispatchEvent(new CustomEvent("change",{}))})}function reload(view,providerId){view.querySelector(".txtDevicePath").value="",view.querySelector(".chkFavorite").checked=!1,providerId&&ApiClient.getNamedConfiguration("livetv").then(function(config){var info=config.TunerHosts.filter(function(i){return i.Id==providerId})[0];fillTunerHostInfo(view,info)})}function fillTunerHostInfo(view,info){var selectType=view.querySelector(".selectType");selectType.value=info.Type||"",selectType.dispatchEvent(new CustomEvent("change",{})),view.querySelector(".txtDevicePath").value=info.Url||"",view.querySelector(".chkFavorite").checked=info.ImportFavoritesOnly,view.querySelector(".chkTranscode").checked=info.AllowHWTranscoding}function submitForm(page){loading.show();var info={Type:page.querySelector(".selectType").value,Url:page.querySelector(".txtDevicePath").value,ImportFavoritesOnly:page.querySelector(".chkFavorite").checked,AllowHWTranscoding:page.querySelector(".chkTranscode").checked,EnableTvgId:!0},id=getParameterByName("id");id&&(info.Id=id),ApiClient.ajax({type:"POST",url:ApiClient.getUrl("LiveTv/TunerHosts"),data:JSON.stringify(info),contentType:"application/json"}).then(function(result){Dashboard.processServerConfigurationUpdateResult(),Dashboard.navigate("livetvstatus.html")},function(){Dashboard.alert({message:Globalize.translate("ErrorSavingTvProvider")})})}function getRequirePromise(deps){return new Promise(function(resolve,reject){require(deps,resolve)})}function getDetectedDevice(){return getRequirePromise(["tunerPicker"]).then(function(tunerPicker){return(new tunerPicker).show({serverId:ApiClient.serverId()})})}function getTabs(){return[{href:"livetvstatus.html",name:Globalize.translate("TabDevices")},{href:"livetvsettings.html",name:Globalize.translate("TabSettings")},{href:"appservices.html?context=livetv",name:Globalize.translate("TabServices")}]}return function(view,params){function onTypeChange(){var value=this.value,mayIncludeUnsupportedDrmChannels="hdhomerun"===value,supportsTranscoding="hdhomerun"===value,supportsFavorites="hdhomerun"===value,supportsTunerIpAddress="hdhomerun"===value,supportsTunerFileOrUrl="m3u"===value,suppportsSubmit="other"!==value;supportsTunerIpAddress?(view.querySelector(".txtDevicePath").label(globalize.translate("LabelTunerIpAddress")),view.querySelector(".btnSelectPath").classList.add("hide"),view.querySelector(".fldPath").classList.remove("hide")):supportsTunerFileOrUrl?(view.querySelector(".txtDevicePath").label(globalize.translate("LabelFileOrUrl")),view.querySelector(".btnSelectPath").classList.remove("hide"),view.querySelector(".fldPath").classList.remove("hide")):(view.querySelector(".fldPath").classList.add("hide"),view.querySelector(".btnSelectPath").classList.add("hide")),supportsFavorites?view.querySelector(".fldFavorites").classList.remove("hide"):view.querySelector(".fldFavorites").classList.add("hide"),supportsTranscoding?view.querySelector(".fldTranscode").classList.remove("hide"):view.querySelector(".fldTranscode").classList.add("hide"),mayIncludeUnsupportedDrmChannels?view.querySelector(".drmMessage").classList.remove("hide"):view.querySelector(".drmMessage").classList.add("hide"),suppportsSubmit?(view.querySelector(".button-submit").classList.remove("hide"),view.querySelector(".otherOptionsMessage").classList.add("hide")):(view.querySelector(".button-submit").classList.add("hide"),view.querySelector(".otherOptionsMessage").classList.remove("hide"))}params.id||view.querySelector(".btnDetect").classList.remove("hide"),view.addEventListener("viewshow",function(){LibraryMenu.setTabs("livetvadmin",0,getTabs);var currentId=params.id;fillTypes(view,currentId).then(function(){reload(view,currentId)})}),view.querySelector("form").addEventListener("submit",function(e){return submitForm(view),e.preventDefault(),e.stopPropagation(),!1}),view.querySelector(".selectType").addEventListener("change",onTypeChange),view.querySelector(".btnDetect").addEventListener("click",function(){getDetectedDevice().then(function(info){fillTunerHostInfo(view,info)})}),view.querySelector(".btnSelectPath").addEventListener("click",function(){require(["directorybrowser"],function(directoryBrowser){var picker=new directoryBrowser;picker.show({includeFiles:!0,callback:function(path){path&&(view.querySelector(".txtDevicePath").value=path),picker.close()}})})})}}); \ No newline at end of file diff --git a/dashboard-ui/dashboard/logpage.js b/dashboard-ui/dashboard/logpage.js index 048bd1e31f..6cb43bda05 100644 --- a/dashboard-ui/dashboard/logpage.js +++ b/dashboard-ui/dashboard/logpage.js @@ -1 +1 @@ -define(["datetime","listViewStyle"],function(datetime){"use strict";return function(view,params){view.querySelector("#chkDebugLog").addEventListener("change",function(){ApiClient.getServerConfiguration().then(function(config){config.EnableDebugLevelLogging=view.querySelector("#chkDebugLog").checked,ApiClient.updateServerConfiguration(config)})}),view.addEventListener("viewbeforeshow",function(){Dashboard.showLoadingMsg();var apiClient=ApiClient;apiClient.getJSON(apiClient.getUrl("System/Logs")).then(function(logs){var html="";html+='
',html+=logs.map(function(log){var logUrl=apiClient.getUrl("System/Logs/Log",{name:log.Name});logUrl+="&api_key="+apiClient.accessToken();var logHtml="";logHtml+='"}).join(""),html+="
",view.querySelector(".serverLogs").innerHTML=html,Dashboard.hideLoadingMsg()}),apiClient.getServerConfiguration().then(function(config){view.querySelector("#chkDebugLog").checked=config.EnableDebugLevelLogging})})}}); \ No newline at end of file +define(["datetime","loading","listViewStyle"],function(datetime,loading){"use strict";return function(view,params){view.querySelector("#chkDebugLog").addEventListener("change",function(){ApiClient.getServerConfiguration().then(function(config){config.EnableDebugLevelLogging=view.querySelector("#chkDebugLog").checked,ApiClient.updateServerConfiguration(config)})}),view.addEventListener("viewbeforeshow",function(){loading.show();var apiClient=ApiClient;apiClient.getJSON(apiClient.getUrl("System/Logs")).then(function(logs){var html="";html+='
',html+=logs.map(function(log){var logUrl=apiClient.getUrl("System/Logs/Log",{name:log.Name});logUrl+="&api_key="+apiClient.accessToken();var logHtml="";logHtml+='"}).join(""),html+="
",view.querySelector(".serverLogs").innerHTML=html,loading.hide()}),apiClient.getServerConfiguration().then(function(config){view.querySelector("#chkDebugLog").checked=config.EnableDebugLevelLogging})})}}); \ No newline at end of file diff --git a/dashboard-ui/livetvtuner.html b/dashboard-ui/livetvtuner.html index 5fea67473a..eb2c60f5d7 100644 --- a/dashboard-ui/livetvtuner.html +++ b/dashboard-ui/livetvtuner.html @@ -36,7 +36,8 @@
${AllowHWTranscodingHelp}

${DrmChannelsNotImported}

-
+

${ForAdditionalLiveTvOptions}

+
",html+='
',html+='
',html+=DashboardPage.getSessionNowPlayingStreamInfo(session),html+="
",html+='
';var userImage=DashboardPage.getUserImage(session);html+=userImage?'':'
',html+='
',html+=DashboardPage.getUsersHtml(session)||" ",html+="
",html+="
",html+="
",html+="",html+=""}}parentElement.append(html),$(".deadSession",parentElement).remove()},getSessionNowPlayingStreamInfo:function(session){var html="",showTranscodingInfo=!1;if(session.TranscodingInfo&&session.TranscodingInfo.IsAudioDirect&&session.TranscodingInfo.IsVideoDirect?html+=Globalize.translate("LabelPlayMethodDirectStream"):session.TranscodingInfo&&session.TranscodingInfo.IsVideoDirect?html+=Globalize.translate("LabelPlayMethodDirectStream"):"Transcode"==session.PlayState.PlayMethod?(html+=Globalize.translate("LabelPlayMethodTranscoding"),session.TranscodingInfo&&session.TranscodingInfo.Framerate&&(html+=" ("+session.TranscodingInfo.Framerate+" fps)"),showTranscodingInfo=!0):"DirectStream"==session.PlayState.PlayMethod?html+=Globalize.translate("LabelPlayMethodDirectPlay"):"DirectPlay"==session.PlayState.PlayMethod&&(html+=Globalize.translate("LabelPlayMethodDirectPlay")),showTranscodingInfo){var line=[];session.TranscodingInfo&&(session.TranscodingInfo.Bitrate&&(session.TranscodingInfo.Bitrate>1e6?line.push((session.TranscodingInfo.Bitrate/1e6).toFixed(1)+" Mbps"):line.push(Math.floor(session.TranscodingInfo.Bitrate/1e3)+" kbps")),session.TranscodingInfo.Container&&line.push(session.TranscodingInfo.Container),session.TranscodingInfo.VideoCodec&&line.push(session.TranscodingInfo.VideoCodec),session.TranscodingInfo.AudioCodec&&session.TranscodingInfo.AudioCodec!=session.TranscodingInfo.Container&&line.push(session.TranscodingInfo.AudioCodec)),line.length&&(html+=" - "+line.join(" "))}return html||" "},getSessionNowPlayingTime:function(session){var html="";html+=session.PlayState.PositionTicks?datetime.getDisplayRunningTime(session.PlayState.PositionTicks):"--:--:--",html+=" / ";var nowPlayingItem=session.NowPlayingItem;return html+=nowPlayingItem&&nowPlayingItem.RunTimeTicks?datetime.getDisplayRunningTime(nowPlayingItem.RunTimeTicks):"--:--:--"},getAppSecondaryText:function(session){return session.Client+" "+session.ApplicationVersion},getNowPlayingName:function(session){var imgUrl="",nowPlayingItem=session.NowPlayingItem;if(!nowPlayingItem)return{html:"Last seen "+humane_date(session.LastActivityDate),image:imgUrl};var topText=nowPlayingItem.Name,bottomText="";nowPlayingItem.Artists&&nowPlayingItem.Artists.length?(bottomText=topText,topText=nowPlayingItem.Artists[0]):nowPlayingItem.SeriesName||nowPlayingItem.Album?(bottomText=topText,topText=nowPlayingItem.SeriesName||nowPlayingItem.Album):nowPlayingItem.ProductionYear&&(bottomText=nowPlayingItem.ProductionYear),nowPlayingItem.LogoItemId&&(imgUrl=ApiClient.getScaledImageUrl(nowPlayingItem.LogoItemId,{tag:session.LogoImageTag,maxHeight:24,maxWidth:130,type:"Logo"}),topText='');var text=bottomText?topText+"
"+bottomText:topText;return{html:text,image:imgUrl}},getUsersHtml:function(session){var html=[];session.UserId&&html.push(session.UserName);for(var i=0,length=session.AdditionalUsers.length;i";if("dashboard"==clientLowered||"emby web client"==clientLowered){var imgUrl;return imgUrl=device.indexOf("chrome")!=-1?"css/images/clients/chrome.png":"css/images/clients/html5.png","Emby Web Client"}return clientLowered.indexOf("android")!=-1?"":clientLowered.indexOf("ios")!=-1?"":"mb-classic"==clientLowered?"":"roku"==clientLowered?"":"dlna"==clientLowered?"":"kodi"==clientLowered||"xbmc"==clientLowered?"":"chromecast"==clientLowered?"":null},getNowPlayingImageUrl:function(item){return item&&item.BackdropImageTag?ApiClient.getScaledImageUrl(item.BackdropItemId,{type:"Backdrop",width:275,tag:item.BackdropImageTag}):item&&item.ThumbImageTag?ApiClient.getScaledImageUrl(item.ThumbItemId,{type:"Thumb",width:275,tag:item.ThumbImageTag}):item&&item.PrimaryImageTag?ApiClient.getScaledImageUrl(item.PrimaryImageItemId,{type:"Primary",width:275,tag:item.PrimaryImageTag}):null},systemUpdateTaskKey:"SystemUpdateTask",renderRunningTasks:function(page,tasks){var html="";tasks=tasks.filter(function(t){return"Idle"!=t.State&&!t.IsHidden}),tasks.filter(function(t){return t.Key==DashboardPage.systemUpdateTaskKey}).length?$("#btnUpdateApplication",page).buttonEnabled(!1):$("#btnUpdateApplication",page).buttonEnabled(!0),tasks.length?$("#runningTasksCollapsible",page).show():$("#runningTasksCollapsible",page).hide();for(var i=0,length=tasks.length;i",html+=task.Name+"
","Running"==task.State){var progress=(task.CurrentProgressPercentage||0).toFixed(1);html+='',html+=""+progress+"%",html+="",html+=""+progress+"%",html+=''}else"Cancelling"==task.State&&(html+=''+Globalize.translate("LabelStopping")+"");html+="

"}$("#divRunningTasks",page).html(html)},renderUrls:function(page,systemInfo){var helpButton=''+Globalize.translate("ButtonHelp")+"";if(systemInfo.LocalAddress){var localAccessHtml=Globalize.translate("LabelLocalAccessUrl",''+systemInfo.LocalAddress+"");$(".localUrl",page).html(localAccessHtml+helpButton).show().trigger("create")}else $(".externalUrl",page).hide();if(systemInfo.WanAddress){var externalUrl=systemInfo.WanAddress,remoteAccessHtml=Globalize.translate("LabelRemoteAccessUrl",''+externalUrl+"");$(".externalUrl",page).html(remoteAccessHtml+helpButton).show().trigger("create")}else $(".externalUrl",page).hide()},renderSupporterIcon:function(page,pluginSecurityInfo){var imgUrl,text,supporterIconContainer=page.querySelector(".supporterIconContainer");AppInfo.enableSupporterMembership&&pluginSecurityInfo.IsMBSupporter?(supporterIconContainer.classList.remove("hide"),imgUrl="css/images/supporter/supporterbadge.png",text=Globalize.translate("MessageThankYouForSupporting"),supporterIconContainer.innerHTML=''+text+""):supporterIconContainer.classList.add("hide")},renderHasPendingRestart:function(page,hasPendingRestart){if(hasPendingRestart)page.querySelector("#pUpToDate").classList.add("hide"),$("#pUpdateNow",page).hide();else{if(DashboardPage.lastAppUpdateCheck&&(new Date).getTime()-DashboardPage.lastAppUpdateCheck<18e5)return;DashboardPage.lastAppUpdateCheck=(new Date).getTime(),ApiClient.getAvailableApplicationUpdate().then(function(packageInfo){var version=packageInfo[0];version?(page.querySelector("#pUpToDate").classList.add("hide"),$("#pUpdateNow",page).show(),$("#newVersionNumber",page).html(Globalize.translate("VersionXIsAvailableForDownload").replace("{0}",version.versionStr))):(page.querySelector("#pUpToDate").classList.remove("hide"),$("#pUpdateNow",page).hide())})}},renderPendingInstallations:function(page,systemInfo){if(!systemInfo.CompletedInstallations.length)return void $("#collapsiblePendingInstallations",page).hide();$("#collapsiblePendingInstallations",page).show();for(var html="",i=0,length=systemInfo.CompletedInstallations.length;i"+update.Name+" ("+update.Version+")"}$("#pendingInstallations",page).html(html)},renderPluginUpdateInfo:function(page,forceUpdate){!forceUpdate&&DashboardPage.lastPluginUpdateCheck&&(new Date).getTime()-DashboardPage.lastPluginUpdateCheck<18e5||(DashboardPage.lastPluginUpdateCheck=(new Date).getTime(),ApiClient.getAvailablePluginUpdates().then(function(updates){var elem=$("#pPluginUpdates",page);if(!updates.length)return void elem.hide();elem.show();for(var html="",i=0,length=updates.length;i"+Globalize.translate("NewVersionOfSomethingAvailable").replace("{0}",update.name)+"

",html+='"}elem.html(html)}))},installPluginUpdate:function(button){$(button).buttonEnabled(!1);var name=button.getAttribute("data-name"),guid=button.getAttribute("data-guid"),version=button.getAttribute("data-version"),classification=button.getAttribute("data-classification");Dashboard.showLoadingMsg(),ApiClient.installPlugin(name,guid,classification,version).then(function(){Dashboard.hideLoadingMsg()})},updateApplication:function(){var page=$.mobile.activePage;$("#btnUpdateApplication",page).buttonEnabled(!1),Dashboard.showLoadingMsg(),ApiClient.getScheduledTasks().then(function(tasks){var task=tasks.filter(function(t){return t.Key==DashboardPage.systemUpdateTaskKey})[0];ApiClient.startScheduledTask(task.Id).then(function(){DashboardPage.pollForInfo(page),Dashboard.hideLoadingMsg()})})},stopTask:function(id){var page=$.mobile.activePage;ApiClient.stopScheduledTask(id).then(function(){DashboardPage.pollForInfo(page)})},restart:function(){require(["confirm"],function(confirm){confirm({title:Globalize.translate("HeaderRestart"),text:Globalize.translate("MessageConfirmRestart"),confirmText:Globalize.translate("ButtonRestart"),primary:"cancel"}).then(function(){$("#btnRestartServer").buttonEnabled(!1),$("#btnShutdown").buttonEnabled(!1),Dashboard.restartServer()})})},shutdown:function(){require(["confirm"],function(confirm){confirm({title:Globalize.translate("HeaderShutdown"),text:Globalize.translate("MessageConfirmShutdown"),confirmText:Globalize.translate("ButtonShutdown"),primary:"cancel"}).then(function(){$("#btnRestartServer").buttonEnabled(!1),$("#btnShutdown").buttonEnabled(!1),ApiClient.shutdownServer()})})}},$(document).on("pageinit","#dashboardPage",DashboardPage.onPageInit).on("pageshow","#dashboardPage",DashboardPage.onPageShow).on("pagebeforehide","#dashboardPage",DashboardPage.onPageHide),function($,document,window){function getEntryHtml(entry){var html="";html+='
';var color="Error"==entry.Severity||"Fatal"==entry.Severity||"Warn"==entry.Severity?"#cc0000":"#52B54B";if(entry.UserId&&entry.UserPrimaryImageTag){var userImgUrl=ApiClient.getUserImageUrl(entry.UserId,{type:"Primary",tag:entry.UserPrimaryImageTag,height:40});html+='dvr"}else html+='dvr';html+='
',html+='
',html+=entry.Name,html+="
",html+='
';var date=datetime.parseISO8601Date(entry.Date,!0);return html+=datetime.toLocaleString(date).toLowerCase(),html+="
",html+='
',html+=entry.ShortOverview||"",html+="
",html+="
",html+="
"}function renderList(elem,result,startIndex,limit){var html=result.Items.map(getEntryHtml).join("");if(result.TotalRecordCount>limit){var query={StartIndex:startIndex,Limit:limit};html+=LibraryBrowser.getQueryPagingHtml({startIndex:query.StartIndex,limit:query.Limit,totalRecordCount:result.TotalRecordCount,showLimit:!1,updatePageSizeSetting:!1})}$(elem).html(html),$(".btnNextPage",elem).on("click",function(){reloadData(elem,startIndex+limit,limit)}),$(".btnPreviousPage",elem).on("click",function(){reloadData(elem,startIndex-limit,limit)}),$(".btnShowOverview",elem).on("click",function(){var item=$(this).parents(".newsItem"),overview=$(".newsItemLongDescription",item).html(),name=$(".notificationName",item).html();Dashboard.alert({message:'
'+overview+"
",title:name})})}function reloadData(elem,startIndex,limit){null==startIndex&&(startIndex=parseInt(elem.getAttribute("data-activitystartindex")||"0")),limit=limit||parseInt(elem.getAttribute("data-activitylimit")||"7");var minDate=new Date;minDate.setTime(minDate.getTime()-864e5),ApiClient.getJSON(ApiClient.getUrl("System/ActivityLog/Entries",{startIndex:startIndex,limit:limit,minDate:minDate.toISOString()})).then(function(result){elem.setAttribute("data-activitystartindex",startIndex),elem.setAttribute("data-activitylimit",limit),renderList(elem,result,startIndex,limit)})}function createList(elem){elem.each(function(){reloadData(this)}).addClass("activityLogListWidget");var apiClient=ApiClient;apiClient&&(Events.on(apiClient,"websocketopen",onSocketOpen),Events.on(apiClient,"websocketmessage",onSocketMessage))}function startListening(apiClient){apiClient.isWebSocketOpen()&&apiClient.sendWebSocketMessage("ActivityLogEntryStart","0,1500")}function stopListening(apiClient){apiClient.isWebSocketOpen()&&apiClient.sendWebSocketMessage("ActivityLogEntryStop","0,1500")}function onSocketOpen(){var apiClient=ApiClient;apiClient&&startListening(apiClient)}function onSocketMessage(e,data){var msg=data;"ActivityLogEntry"===msg.MessageType&&$(".activityLogListWidget").each(function(){reloadData(this)})}function destroyList(elem){var apiClient=ApiClient;apiClient&&(Events.off(apiClient,"websocketopen",onSocketOpen),Events.off(apiClient,"websocketmessage",onSocketMessage),stopListening(apiClient))}$.fn.activityLogList=function(action){"destroy"==action?(this.removeClass("activityLogListWidget"),destroyList(this)):createList(this);var apiClient=ApiClient;return apiClient&&startListening(apiClient),this}}(jQuery,document,window),function($,document,window){function dismissWelcome(page,userId){ApiClient.getDisplayPreferences("dashboard",userId,"dashboard").then(function(result){result.CustomPrefs[welcomeTourKey]=welcomeDismissValue,ApiClient.updateDisplayPreferences("dashboard",result,userId,"dashboard"),$(page).off("pageshow",onPageShowCheckTour)})}function showWelcomeIfNeeded(page,apiClient){var userId=Dashboard.getCurrentUserId();apiClient.getDisplayPreferences("dashboard",userId,"dashboard").then(function(result){if(result.CustomPrefs[welcomeTourKey]==welcomeDismissValue)$(".welcomeMessage",page).hide();else{var elem=$(".welcomeMessage",page).show();result.CustomPrefs[welcomeTourKey]?($(".tourHeader",elem).html(Globalize.translate("HeaderWelcomeBack")),$(".tourButtonText",elem).html(Globalize.translate("ButtonTakeTheTourToSeeWhatsNew"))):($(".tourHeader",elem).html(Globalize.translate("HeaderWelcomeToProjectServerDashboard")),$(".tourButtonText",elem).html(Globalize.translate("ButtonTakeTheTour")))}})}function takeTour(page,userId){require(["slideshow"],function(){var slides=[{imageUrl:"css/images/tour/admin/dashboard.png",title:Globalize.translate("DashboardTourDashboard")},{imageUrl:"css/images/tour/admin/help.png",title:Globalize.translate("DashboardTourHelp")},{imageUrl:"css/images/tour/admin/users.png",title:Globalize.translate("DashboardTourUsers")},{imageUrl:"css/images/tour/admin/sync.png",title:Globalize.translate("DashboardTourSync")},{imageUrl:"css/images/tour/admin/cinemamode.png",title:Globalize.translate("DashboardTourCinemaMode")},{imageUrl:"css/images/tour/admin/chapters.png",title:Globalize.translate("DashboardTourChapters")},{imageUrl:"css/images/tour/admin/subtitles.png",title:Globalize.translate("DashboardTourSubtitles")},{imageUrl:"css/images/tour/admin/plugins.png",title:Globalize.translate("DashboardTourPlugins")},{imageUrl:"css/images/tour/admin/notifications.png",title:Globalize.translate("DashboardTourNotifications")},{imageUrl:"css/images/tour/admin/scheduledtasks.png",title:Globalize.translate("DashboardTourScheduledTasks")},{imageUrl:"css/images/tour/admin/mobile.png",title:Globalize.translate("DashboardTourMobile")},{imageUrl:"css/images/tour/enjoy.jpg",title:Globalize.translate("MessageEnjoyYourStay")}];require(["slideshow"],function(slideshow){var newSlideShow=new slideshow({slides:slides,interactive:!0,loop:!1});newSlideShow.show(),dismissWelcome(page,userId),$(".welcomeMessage",page).hide()})})}function onPageShowCheckTour(){var page=this,apiClient=ApiClient;apiClient&&!AppInfo.isNativeApp&&showWelcomeIfNeeded(page,apiClient)}var welcomeDismissValue="12",welcomeTourKey="welcomeTour";$(document).on("pageinit","#dashboardPage",function(){var page=this;$(".btnTakeTour",page).on("click",function(){takeTour(page,Dashboard.getCurrentUserId())})}).on("pageshow","#dashboardPage",onPageShowCheckTour)}(jQuery,document,window),pageClassOn("pageshow","type-interior",function(){var page=this;Dashboard.getPluginSecurityInfo().then(function(pluginSecurityInfo){if(!page.querySelector(".customSupporterPromotion")&&($(".supporterPromotion",page).remove(),!pluginSecurityInfo.IsMBSupporter&&AppInfo.enableSupporterMembership)){var html='";page.querySelector(".content-primary").insertAdjacentHTML("afterbegin",html)}})})}); \ No newline at end of file +define(["datetime","jQuery","dom","loading","humanedate","cardStyle","listViewStyle"],function(datetime,$,dom,loading){"use strict";function renderNoHealthAlertsMessage(page){var html='

';html+='',html+=Globalize.translate("HealthMonitorNoAlerts")+"

",page.querySelector(".healthMonitor").innerHTML=html}function refreshHealthMonitor(page){renderNoHealthAlertsMessage(page)}function onConnectionHelpClick(e){return e.preventDefault(),!1}function onEditServerNameClick(e){var page=dom.parentWithClass(this,"page");return require(["prompt"],function(prompt){prompt({label:Globalize.translate("LabelFriendlyServerName"),description:Globalize.translate("LabelFriendlyServerNameHelp"),value:page.querySelector(".serverNameHeader").innerHTML,confirmText:Globalize.translate("ButtonSave")}).then(function(value){loading.show(),ApiClient.getServerConfiguration().then(function(config){config.ServerName=value,ApiClient.updateServerConfiguration(config).then(function(){page.querySelector(".serverNameHeader").innerHTML=value,loading.hide()})})})}),e.preventDefault(),!1}window.DashboardPage={newsStartIndex:0,onPageInit:function(){var page=this;page.querySelector(".btnConnectionHelp").addEventListener("click",onConnectionHelpClick),page.querySelector(".btnEditServerName").addEventListener("click",onEditServerNameClick)},onPageShow:function(){var page=this,apiClient=ApiClient;apiClient&&(DashboardPage.newsStartIndex=0,loading.show(),DashboardPage.pollForInfo(page),DashboardPage.startInterval(apiClient),Events.on(apiClient,"websocketmessage",DashboardPage.onWebSocketMessage),Events.on(apiClient,"websocketopen",DashboardPage.onWebSocketOpen),DashboardPage.lastAppUpdateCheck=null,DashboardPage.lastPluginUpdateCheck=null,Dashboard.getPluginSecurityInfo().then(function(pluginSecurityInfo){DashboardPage.renderSupporterIcon(page,pluginSecurityInfo)}),DashboardPage.reloadSystemInfo(page),DashboardPage.reloadNews(page),DashboardPage.sessionUpdateTimer=setInterval(DashboardPage.refreshSessionsLocally,6e4),$(".activityItems",page).activityLogList(),$(".swaggerLink",page).attr("href",apiClient.getUrl("swagger-ui/index.html",{api_key:ApiClient.accessToken()})),refreshHealthMonitor(page))},onPageHide:function(){var page=this;$(".activityItems",page).activityLogList("destroy");var apiClient=ApiClient;apiClient&&(Events.off(apiClient,"websocketmessage",DashboardPage.onWebSocketMessage),Events.off(apiClient,"websocketopen",DashboardPage.onWebSocketOpen),DashboardPage.stopInterval(apiClient)),DashboardPage.sessionUpdateTimer&&clearInterval(DashboardPage.sessionUpdateTimer)},renderPaths:function(page,systemInfo){$("#cachePath",page).html(systemInfo.CachePath),$("#logPath",page).html(systemInfo.LogPath),$("#transcodingTemporaryPath",page).html(systemInfo.TranscodingTempPath),$("#metadataPath",page).html(systemInfo.InternalMetadataPath)},refreshSessionsLocally:function(){var list=DashboardPage.sessionsList;list&&DashboardPage.renderActiveConnections($.mobile.activePage,list)},reloadSystemInfo:function(page){ApiClient.getSystemInfo().then(function(systemInfo){page.querySelector(".serverNameHeader").innerHTML=systemInfo.ServerName;var localizedVersion=Globalize.translate("LabelVersionNumber",systemInfo.Version);systemInfo.SystemUpdateLevel&&"Release"!=systemInfo.SystemUpdateLevel&&(localizedVersion+=" "+Globalize.translate("Option"+systemInfo.SystemUpdateLevel).toLowerCase()),$("#appVersionNumber",page).html(localizedVersion),systemInfo.SupportsHttps?$("#ports",page).html(Globalize.translate("LabelRunningOnPorts",systemInfo.HttpServerPortNumber,systemInfo.HttpsPortNumber)):$("#ports",page).html(Globalize.translate("LabelRunningOnPort",systemInfo.HttpServerPortNumber)),systemInfo.CanSelfRestart?$(".btnRestartContainer",page).removeClass("hide"):$(".btnRestartContainer",page).addClass("hide"),DashboardPage.renderUrls(page,systemInfo),DashboardPage.renderPendingInstallations(page,systemInfo),systemInfo.CanSelfUpdate?($("#btnUpdateApplicationContainer",page).show(),$("#btnManualUpdateContainer",page).hide()):($("#btnUpdateApplicationContainer",page).hide(),$("#btnManualUpdateContainer",page).show()),"synology"==systemInfo.PackageName?$("#btnManualUpdateContainer").html(Globalize.translate("SynologyUpdateInstructions")):$("#btnManualUpdateContainer").html(''+Globalize.translate("PleaseUpdateManually")+""),DashboardPage.renderPaths(page,systemInfo),DashboardPage.renderHasPendingRestart(page,systemInfo.HasPendingRestart)})},reloadNews:function(page){var query={StartIndex:DashboardPage.newsStartIndex,Limit:7};ApiClient.getProductNews(query).then(function(result){var html=result.Items.map(function(item){var itemHtml="";itemHtml+='',itemHtml+='
',itemHtml+='dvr',itemHtml+='
',itemHtml+='
',itemHtml+=item.Title,itemHtml+="
",itemHtml+='
';var date=datetime.parseISO8601Date(item.Date,!0);return itemHtml+=datetime.toLocaleDateString(date),itemHtml+="
",itemHtml+="
",itemHtml+="
",itemHtml+="
"}),pagingHtml="";pagingHtml+="
",pagingHtml+=LibraryBrowser.getQueryPagingHtml({startIndex:query.StartIndex,limit:query.Limit,totalRecordCount:result.TotalRecordCount,showLimit:!1,updatePageSizeSetting:!1}),pagingHtml+="
",html=html.join("")+pagingHtml;var elem=$(".latestNewsItems",page).html(html);$(".btnNextPage",elem).on("click",function(){DashboardPage.newsStartIndex+=query.Limit,DashboardPage.reloadNews(page)}),$(".btnPreviousPage",elem).on("click",function(){DashboardPage.newsStartIndex-=query.Limit,DashboardPage.reloadNews(page)})})},startInterval:function(apiClient){apiClient.isWebSocketOpen()&&(apiClient.sendWebSocketMessage("SessionsStart","0,1500"),apiClient.sendWebSocketMessage("ScheduledTasksInfoStart","0,1000"))},stopInterval:function(apiClient){apiClient.isWebSocketOpen()&&(apiClient.sendWebSocketMessage("SessionsStop"),apiClient.sendWebSocketMessage("ScheduledTasksInfoStop"))},onWebSocketMessage:function(e,msg){var page=$.mobile.activePage;if("Sessions"==msg.MessageType)DashboardPage.renderInfo(page,msg.Data);else if("RestartRequired"==msg.MessageType)DashboardPage.renderHasPendingRestart(page,!0);else if("ServerShuttingDown"==msg.MessageType)DashboardPage.renderHasPendingRestart(page,!0);else if("ServerRestarting"==msg.MessageType)DashboardPage.renderHasPendingRestart(page,!0);else if("ScheduledTasksInfo"==msg.MessageType){var tasks=msg.Data;DashboardPage.renderRunningTasks(page,tasks)}else"PackageInstalling"!=msg.MessageType&&"PackageInstallationCompleted"!=msg.MessageType||(DashboardPage.pollForInfo(page,!0),DashboardPage.reloadSystemInfo(page))},onWebSocketOpen:function(){var apiClient=this;DashboardPage.startInterval(apiClient)},pollForInfo:function(page,forceUpdate){var apiClient=window.ApiClient;apiClient&&(apiClient.getSessions().then(function(sessions){DashboardPage.renderInfo(page,sessions,forceUpdate)}),apiClient.getScheduledTasks().then(function(tasks){DashboardPage.renderRunningTasks(page,tasks)}))},renderInfo:function(page,sessions,forceUpdate){DashboardPage.renderActiveConnections(page,sessions),DashboardPage.renderPluginUpdateInfo(page,forceUpdate),loading.hide()},renderActiveConnections:function(page,sessions){var html="";DashboardPage.sessionsList=sessions;var parentElement=$(".activeDevices",page);$(".card",parentElement).addClass("deadSession");for(var i=0,length=sessions.length;i',html+='
',html+='
',html+='
',html+='
',html+='
',html+='
'+session.DeviceName+"
",html+='
'+DashboardPage.getAppSecondaryText(session)+"
",html+="
",html+="
",html+='
'+DashboardPage.getSessionNowPlayingTime(session)+"
";var nowPlayingName=DashboardPage.getNowPlayingName(session);if(html+='
',html+=nowPlayingName.html,html+="
",nowPlayingItem&&nowPlayingItem.RunTimeTicks){var position=session.PlayState.PositionTicks||0,value=100*position/nowPlayingItem.RunTimeTicks;html+=''}else html+='';html+=session.TranscodingInfo&&session.TranscodingInfo.CompletionPercentage?'':'',html+="
",html+="
",html+="",html+='
',html+='
',html+=DashboardPage.getSessionNowPlayingStreamInfo(session),html+="
",html+='
';var userImage=DashboardPage.getUserImage(session);html+=userImage?'':'
',html+='
',html+=DashboardPage.getUsersHtml(session)||" ",html+="
",html+="
",html+="
",html+="",html+=""}}parentElement.append(html),$(".deadSession",parentElement).remove()},getSessionNowPlayingStreamInfo:function(session){var html="",showTranscodingInfo=!1;if(session.TranscodingInfo&&session.TranscodingInfo.IsAudioDirect&&session.TranscodingInfo.IsVideoDirect?html+=Globalize.translate("LabelPlayMethodDirectStream"):session.TranscodingInfo&&session.TranscodingInfo.IsVideoDirect?html+=Globalize.translate("LabelPlayMethodDirectStream"):"Transcode"==session.PlayState.PlayMethod?(html+=Globalize.translate("LabelPlayMethodTranscoding"),session.TranscodingInfo&&session.TranscodingInfo.Framerate&&(html+=" ("+session.TranscodingInfo.Framerate+" fps)"),showTranscodingInfo=!0):"DirectStream"==session.PlayState.PlayMethod?html+=Globalize.translate("LabelPlayMethodDirectPlay"):"DirectPlay"==session.PlayState.PlayMethod&&(html+=Globalize.translate("LabelPlayMethodDirectPlay")),showTranscodingInfo){var line=[];session.TranscodingInfo&&(session.TranscodingInfo.Bitrate&&(session.TranscodingInfo.Bitrate>1e6?line.push((session.TranscodingInfo.Bitrate/1e6).toFixed(1)+" Mbps"):line.push(Math.floor(session.TranscodingInfo.Bitrate/1e3)+" kbps")),session.TranscodingInfo.Container&&line.push(session.TranscodingInfo.Container),session.TranscodingInfo.VideoCodec&&line.push(session.TranscodingInfo.VideoCodec),session.TranscodingInfo.AudioCodec&&session.TranscodingInfo.AudioCodec!=session.TranscodingInfo.Container&&line.push(session.TranscodingInfo.AudioCodec)),line.length&&(html+=" - "+line.join(" "))}return html||" "},getSessionNowPlayingTime:function(session){var html="";html+=session.PlayState.PositionTicks?datetime.getDisplayRunningTime(session.PlayState.PositionTicks):"--:--:--",html+=" / ";var nowPlayingItem=session.NowPlayingItem;return html+=nowPlayingItem&&nowPlayingItem.RunTimeTicks?datetime.getDisplayRunningTime(nowPlayingItem.RunTimeTicks):"--:--:--"},getAppSecondaryText:function(session){return session.Client+" "+session.ApplicationVersion},getNowPlayingName:function(session){var imgUrl="",nowPlayingItem=session.NowPlayingItem;if(!nowPlayingItem)return{html:"Last seen "+humane_date(session.LastActivityDate),image:imgUrl};var topText=nowPlayingItem.Name,bottomText="";nowPlayingItem.Artists&&nowPlayingItem.Artists.length?(bottomText=topText,topText=nowPlayingItem.Artists[0]):nowPlayingItem.SeriesName||nowPlayingItem.Album?(bottomText=topText,topText=nowPlayingItem.SeriesName||nowPlayingItem.Album):nowPlayingItem.ProductionYear&&(bottomText=nowPlayingItem.ProductionYear),nowPlayingItem.LogoItemId&&(imgUrl=ApiClient.getScaledImageUrl(nowPlayingItem.LogoItemId,{tag:session.LogoImageTag,maxHeight:24,maxWidth:130,type:"Logo"}),topText='');var text=bottomText?topText+"
"+bottomText:topText;return{html:text,image:imgUrl}},getUsersHtml:function(session){var html=[];session.UserId&&html.push(session.UserName);for(var i=0,length=session.AdditionalUsers.length;i";if("dashboard"==clientLowered||"emby web client"==clientLowered){var imgUrl;return imgUrl=device.indexOf("chrome")!=-1?"css/images/clients/chrome.png":"css/images/clients/html5.png","Emby Web Client"}return clientLowered.indexOf("android")!=-1?"":clientLowered.indexOf("ios")!=-1?"":"mb-classic"==clientLowered?"":"roku"==clientLowered?"":"dlna"==clientLowered?"":"kodi"==clientLowered||"xbmc"==clientLowered?"":"chromecast"==clientLowered?"":null},getNowPlayingImageUrl:function(item){return item&&item.BackdropImageTag?ApiClient.getScaledImageUrl(item.BackdropItemId,{type:"Backdrop",width:275,tag:item.BackdropImageTag}):item&&item.ThumbImageTag?ApiClient.getScaledImageUrl(item.ThumbItemId,{type:"Thumb",width:275,tag:item.ThumbImageTag}):item&&item.PrimaryImageTag?ApiClient.getScaledImageUrl(item.PrimaryImageItemId,{type:"Primary",width:275,tag:item.PrimaryImageTag}):null},systemUpdateTaskKey:"SystemUpdateTask",renderRunningTasks:function(page,tasks){var html="";tasks=tasks.filter(function(t){return"Idle"!=t.State&&!t.IsHidden}),tasks.filter(function(t){return t.Key==DashboardPage.systemUpdateTaskKey}).length?$("#btnUpdateApplication",page).buttonEnabled(!1):$("#btnUpdateApplication",page).buttonEnabled(!0),tasks.length?$("#runningTasksCollapsible",page).show():$("#runningTasksCollapsible",page).hide();for(var i=0,length=tasks.length;i",html+=task.Name+"
","Running"==task.State){var progress=(task.CurrentProgressPercentage||0).toFixed(1);html+='',html+=""+progress+"%",html+="",html+=""+progress+"%",html+=''}else"Cancelling"==task.State&&(html+=''+Globalize.translate("LabelStopping")+"");html+="

"}$("#divRunningTasks",page).html(html)},renderUrls:function(page,systemInfo){var helpButton=''+Globalize.translate("ButtonHelp")+"";if(systemInfo.LocalAddress){var localAccessHtml=Globalize.translate("LabelLocalAccessUrl",''+systemInfo.LocalAddress+"");$(".localUrl",page).html(localAccessHtml+helpButton).show().trigger("create")}else $(".externalUrl",page).hide();if(systemInfo.WanAddress){var externalUrl=systemInfo.WanAddress,remoteAccessHtml=Globalize.translate("LabelRemoteAccessUrl",''+externalUrl+"");$(".externalUrl",page).html(remoteAccessHtml+helpButton).show().trigger("create")}else $(".externalUrl",page).hide()},renderSupporterIcon:function(page,pluginSecurityInfo){var imgUrl,text,supporterIconContainer=page.querySelector(".supporterIconContainer");AppInfo.enableSupporterMembership&&pluginSecurityInfo.IsMBSupporter?(supporterIconContainer.classList.remove("hide"),imgUrl="css/images/supporter/supporterbadge.png",text=Globalize.translate("MessageThankYouForSupporting"),supporterIconContainer.innerHTML=''+text+""):supporterIconContainer.classList.add("hide")},renderHasPendingRestart:function(page,hasPendingRestart){if(hasPendingRestart)page.querySelector("#pUpToDate").classList.add("hide"),$("#pUpdateNow",page).hide();else{if(DashboardPage.lastAppUpdateCheck&&(new Date).getTime()-DashboardPage.lastAppUpdateCheck<18e5)return;DashboardPage.lastAppUpdateCheck=(new Date).getTime(),ApiClient.getAvailableApplicationUpdate().then(function(packageInfo){var version=packageInfo[0];version?(page.querySelector("#pUpToDate").classList.add("hide"),$("#pUpdateNow",page).show(),$("#newVersionNumber",page).html(Globalize.translate("VersionXIsAvailableForDownload").replace("{0}",version.versionStr))):(page.querySelector("#pUpToDate").classList.remove("hide"),$("#pUpdateNow",page).hide())})}},renderPendingInstallations:function(page,systemInfo){if(!systemInfo.CompletedInstallations.length)return void $("#collapsiblePendingInstallations",page).hide();$("#collapsiblePendingInstallations",page).show();for(var html="",i=0,length=systemInfo.CompletedInstallations.length;i"+update.Name+" ("+update.Version+")"}$("#pendingInstallations",page).html(html)},renderPluginUpdateInfo:function(page,forceUpdate){!forceUpdate&&DashboardPage.lastPluginUpdateCheck&&(new Date).getTime()-DashboardPage.lastPluginUpdateCheck<18e5||(DashboardPage.lastPluginUpdateCheck=(new Date).getTime(),ApiClient.getAvailablePluginUpdates().then(function(updates){var elem=$("#pPluginUpdates",page);if(!updates.length)return void elem.hide();elem.show();for(var html="",i=0,length=updates.length;i"+Globalize.translate("NewVersionOfSomethingAvailable").replace("{0}",update.name)+"

",html+='"}elem.html(html)}))},installPluginUpdate:function(button){$(button).buttonEnabled(!1);var name=button.getAttribute("data-name"),guid=button.getAttribute("data-guid"),version=button.getAttribute("data-version"),classification=button.getAttribute("data-classification");loading.show(),ApiClient.installPlugin(name,guid,classification,version).then(function(){loading.hide()})},updateApplication:function(){var page=$.mobile.activePage;$("#btnUpdateApplication",page).buttonEnabled(!1),loading.show(),ApiClient.getScheduledTasks().then(function(tasks){var task=tasks.filter(function(t){return t.Key==DashboardPage.systemUpdateTaskKey})[0];ApiClient.startScheduledTask(task.Id).then(function(){DashboardPage.pollForInfo(page),loading.hide()})})},stopTask:function(id){var page=$.mobile.activePage;ApiClient.stopScheduledTask(id).then(function(){DashboardPage.pollForInfo(page)})},restart:function(){require(["confirm"],function(confirm){confirm({title:Globalize.translate("HeaderRestart"),text:Globalize.translate("MessageConfirmRestart"),confirmText:Globalize.translate("ButtonRestart"),primary:"cancel"}).then(function(){$("#btnRestartServer").buttonEnabled(!1),$("#btnShutdown").buttonEnabled(!1),Dashboard.restartServer()})})},shutdown:function(){require(["confirm"],function(confirm){confirm({title:Globalize.translate("HeaderShutdown"),text:Globalize.translate("MessageConfirmShutdown"),confirmText:Globalize.translate("ButtonShutdown"),primary:"cancel"}).then(function(){$("#btnRestartServer").buttonEnabled(!1),$("#btnShutdown").buttonEnabled(!1),ApiClient.shutdownServer()})})}},$(document).on("pageinit","#dashboardPage",DashboardPage.onPageInit).on("pageshow","#dashboardPage",DashboardPage.onPageShow).on("pagebeforehide","#dashboardPage",DashboardPage.onPageHide),function($,document,window){function getEntryHtml(entry){var html="";html+='
';var color="Error"==entry.Severity||"Fatal"==entry.Severity||"Warn"==entry.Severity?"#cc0000":"#52B54B";if(entry.UserId&&entry.UserPrimaryImageTag){var userImgUrl=ApiClient.getUserImageUrl(entry.UserId,{type:"Primary",tag:entry.UserPrimaryImageTag,height:40});html+='dvr"}else html+='dvr';html+='
',html+='
',html+=entry.Name,html+="
",html+='
';var date=datetime.parseISO8601Date(entry.Date,!0);return html+=datetime.toLocaleString(date).toLowerCase(),html+="
",html+='
',html+=entry.ShortOverview||"",html+="
",html+="
",html+="
"}function renderList(elem,result,startIndex,limit){var html=result.Items.map(getEntryHtml).join("");if(result.TotalRecordCount>limit){var query={StartIndex:startIndex,Limit:limit};html+=LibraryBrowser.getQueryPagingHtml({startIndex:query.StartIndex,limit:query.Limit,totalRecordCount:result.TotalRecordCount,showLimit:!1,updatePageSizeSetting:!1})}$(elem).html(html),$(".btnNextPage",elem).on("click",function(){reloadData(elem,startIndex+limit,limit)}),$(".btnPreviousPage",elem).on("click",function(){reloadData(elem,startIndex-limit,limit)}),$(".btnShowOverview",elem).on("click",function(){var item=$(this).parents(".newsItem"),overview=$(".newsItemLongDescription",item).html(),name=$(".notificationName",item).html();Dashboard.alert({message:'
'+overview+"
",title:name})})}function reloadData(elem,startIndex,limit){null==startIndex&&(startIndex=parseInt(elem.getAttribute("data-activitystartindex")||"0")),limit=limit||parseInt(elem.getAttribute("data-activitylimit")||"7");var minDate=new Date;minDate.setTime(minDate.getTime()-864e5),ApiClient.getJSON(ApiClient.getUrl("System/ActivityLog/Entries",{startIndex:startIndex,limit:limit,minDate:minDate.toISOString()})).then(function(result){elem.setAttribute("data-activitystartindex",startIndex),elem.setAttribute("data-activitylimit",limit),renderList(elem,result,startIndex,limit)})}function createList(elem){elem.each(function(){reloadData(this)}).addClass("activityLogListWidget");var apiClient=ApiClient;apiClient&&(Events.on(apiClient,"websocketopen",onSocketOpen),Events.on(apiClient,"websocketmessage",onSocketMessage))}function startListening(apiClient){apiClient.isWebSocketOpen()&&apiClient.sendWebSocketMessage("ActivityLogEntryStart","0,1500")}function stopListening(apiClient){apiClient.isWebSocketOpen()&&apiClient.sendWebSocketMessage("ActivityLogEntryStop","0,1500")}function onSocketOpen(){var apiClient=ApiClient;apiClient&&startListening(apiClient)}function onSocketMessage(e,data){var msg=data;"ActivityLogEntry"===msg.MessageType&&$(".activityLogListWidget").each(function(){reloadData(this)})}function destroyList(elem){var apiClient=ApiClient;apiClient&&(Events.off(apiClient,"websocketopen",onSocketOpen),Events.off(apiClient,"websocketmessage",onSocketMessage),stopListening(apiClient))}$.fn.activityLogList=function(action){"destroy"==action?(this.removeClass("activityLogListWidget"),destroyList(this)):createList(this);var apiClient=ApiClient;return apiClient&&startListening(apiClient),this}}(jQuery,document,window),function($,document,window){function dismissWelcome(page,userId){ApiClient.getDisplayPreferences("dashboard",userId,"dashboard").then(function(result){result.CustomPrefs[welcomeTourKey]=welcomeDismissValue,ApiClient.updateDisplayPreferences("dashboard",result,userId,"dashboard"),$(page).off("pageshow",onPageShowCheckTour)})}function showWelcomeIfNeeded(page,apiClient){var userId=Dashboard.getCurrentUserId();apiClient.getDisplayPreferences("dashboard",userId,"dashboard").then(function(result){if(result.CustomPrefs[welcomeTourKey]==welcomeDismissValue)$(".welcomeMessage",page).hide();else{var elem=$(".welcomeMessage",page).show();result.CustomPrefs[welcomeTourKey]?($(".tourHeader",elem).html(Globalize.translate("HeaderWelcomeBack")),$(".tourButtonText",elem).html(Globalize.translate("ButtonTakeTheTourToSeeWhatsNew"))):($(".tourHeader",elem).html(Globalize.translate("HeaderWelcomeToProjectServerDashboard")),$(".tourButtonText",elem).html(Globalize.translate("ButtonTakeTheTour")))}})}function takeTour(page,userId){require(["slideshow"],function(){var slides=[{imageUrl:"css/images/tour/admin/dashboard.png",title:Globalize.translate("DashboardTourDashboard")},{imageUrl:"css/images/tour/admin/help.png",title:Globalize.translate("DashboardTourHelp")},{imageUrl:"css/images/tour/admin/users.png",title:Globalize.translate("DashboardTourUsers")},{imageUrl:"css/images/tour/admin/sync.png",title:Globalize.translate("DashboardTourSync")},{imageUrl:"css/images/tour/admin/cinemamode.png",title:Globalize.translate("DashboardTourCinemaMode")},{imageUrl:"css/images/tour/admin/chapters.png",title:Globalize.translate("DashboardTourChapters")},{imageUrl:"css/images/tour/admin/subtitles.png",title:Globalize.translate("DashboardTourSubtitles")},{imageUrl:"css/images/tour/admin/plugins.png",title:Globalize.translate("DashboardTourPlugins")},{imageUrl:"css/images/tour/admin/notifications.png",title:Globalize.translate("DashboardTourNotifications")},{imageUrl:"css/images/tour/admin/scheduledtasks.png",title:Globalize.translate("DashboardTourScheduledTasks")},{imageUrl:"css/images/tour/admin/mobile.png",title:Globalize.translate("DashboardTourMobile")},{imageUrl:"css/images/tour/enjoy.jpg",title:Globalize.translate("MessageEnjoyYourStay")}];require(["slideshow"],function(slideshow){var newSlideShow=new slideshow({slides:slides,interactive:!0,loop:!1});newSlideShow.show(),dismissWelcome(page,userId),$(".welcomeMessage",page).hide()})})}function onPageShowCheckTour(){var page=this,apiClient=ApiClient;apiClient&&!AppInfo.isNativeApp&&showWelcomeIfNeeded(page,apiClient)}var welcomeDismissValue="12",welcomeTourKey="welcomeTour";$(document).on("pageinit","#dashboardPage",function(){var page=this;$(".btnTakeTour",page).on("click",function(){takeTour(page,Dashboard.getCurrentUserId())})}).on("pageshow","#dashboardPage",onPageShowCheckTour)}(jQuery,document,window),pageClassOn("pageshow","type-interior",function(){var page=this;Dashboard.getPluginSecurityInfo().then(function(pluginSecurityInfo){if(!page.querySelector(".customSupporterPromotion")&&($(".supporterPromotion",page).remove(),!pluginSecurityInfo.IsMBSupporter&&AppInfo.enableSupporterMembership)){var html='";page.querySelector(".content-primary").insertAdjacentHTML("afterbegin",html)}})})}); \ No newline at end of file diff --git a/dashboard-ui/scripts/device.js b/dashboard-ui/scripts/device.js index 7b8d16ed54..71f9741bf0 100644 --- a/dashboard-ui/scripts/device.js +++ b/dashboard-ui/scripts/device.js @@ -1 +1 @@ -define(["jQuery"],function($){"use strict";function load(page,device,capabilities){capabilities.SupportsContentUploading?$("#fldCameraUploadPath",page).removeClass("hide"):$("#fldCameraUploadPath",page).addClass("hide"),$("#txtCustomName",page).val(device.CustomName||""),$("#txtUploadPath",page).val(device.CameraUploadPath||""),$(".reportedName",page).html(device.ReportedName||"")}function loadData(page){Dashboard.showLoadingMsg();var id=getParameterByName("id"),promise1=ApiClient.getJSON(ApiClient.getUrl("Devices/Info",{Id:id})),promise2=ApiClient.getJSON(ApiClient.getUrl("Devices/Capabilities",{Id:id}));Promise.all([promise1,promise2]).then(function(responses){load(page,responses[0],responses[1]),Dashboard.hideLoadingMsg()})}function save(page){var id=getParameterByName("id");ApiClient.ajax({url:ApiClient.getUrl("Devices/Options",{Id:id}),type:"POST",data:JSON.stringify({CustomName:$("#txtCustomName",page).val(),CameraUploadPath:$("#txtUploadPath",page).val()}),contentType:"application/json"}).then(Dashboard.processServerConfigurationUpdateResult)}function onSubmit(){var form=this,page=$(form).parents(".page");return save(page),!1}function getTabs(){return[{href:"devices.html",name:Globalize.translate("TabDevices")},{href:"devicesupload.html",name:Globalize.translate("TabCameraUpload")}]}$(document).on("pageinit","#devicePage",function(){var page=this;$("#btnSelectUploadPath",page).on("click.selectDirectory",function(){require(["directorybrowser"],function(directoryBrowser){var picker=new directoryBrowser;picker.show({callback:function(path){path&&$("#txtUploadPath",page).val(path),picker.close()},header:Globalize.translate("HeaderSelectUploadPath")})})}),$(".deviceForm").off("submit",onSubmit).on("submit",onSubmit)}).on("pageshow","#devicePage",function(){LibraryMenu.setTabs("devices",0,getTabs);var page=this;loadData(page)})}); \ No newline at end of file +define(["jQuery","loading"],function($,loading){"use strict";function load(page,device,capabilities){capabilities.SupportsContentUploading?$("#fldCameraUploadPath",page).removeClass("hide"):$("#fldCameraUploadPath",page).addClass("hide"),$("#txtCustomName",page).val(device.CustomName||""),$("#txtUploadPath",page).val(device.CameraUploadPath||""),$(".reportedName",page).html(device.ReportedName||"")}function loadData(page){loading.show();var id=getParameterByName("id"),promise1=ApiClient.getJSON(ApiClient.getUrl("Devices/Info",{Id:id})),promise2=ApiClient.getJSON(ApiClient.getUrl("Devices/Capabilities",{Id:id}));Promise.all([promise1,promise2]).then(function(responses){load(page,responses[0],responses[1]),loading.hide()})}function save(page){var id=getParameterByName("id");ApiClient.ajax({url:ApiClient.getUrl("Devices/Options",{Id:id}),type:"POST",data:JSON.stringify({CustomName:$("#txtCustomName",page).val(),CameraUploadPath:$("#txtUploadPath",page).val()}),contentType:"application/json"}).then(Dashboard.processServerConfigurationUpdateResult)}function onSubmit(){var form=this,page=$(form).parents(".page");return save(page),!1}function getTabs(){return[{href:"devices.html",name:Globalize.translate("TabDevices")},{href:"devicesupload.html",name:Globalize.translate("TabCameraUpload")}]}$(document).on("pageinit","#devicePage",function(){var page=this;$("#btnSelectUploadPath",page).on("click.selectDirectory",function(){require(["directorybrowser"],function(directoryBrowser){var picker=new directoryBrowser;picker.show({callback:function(path){path&&$("#txtUploadPath",page).val(path),picker.close()},header:Globalize.translate("HeaderSelectUploadPath")})})}),$(".deviceForm").off("submit",onSubmit).on("submit",onSubmit)}).on("pageshow","#devicePage",function(){LibraryMenu.setTabs("devices",0,getTabs);var page=this;loadData(page)})}); \ No newline at end of file diff --git a/dashboard-ui/scripts/devices.js b/dashboard-ui/scripts/devices.js index cf779ae7a6..22c41b6fb1 100644 --- a/dashboard-ui/scripts/devices.js +++ b/dashboard-ui/scripts/devices.js @@ -1 +1 @@ -define(["jQuery","listViewStyle"],function($){"use strict";function deleteDevice(page,id){var msg=Globalize.translate("DeleteDeviceConfirmation");require(["confirm"],function(confirm){confirm(msg,Globalize.translate("HeaderDeleteDevice")).then(function(){Dashboard.showLoadingMsg(),ApiClient.ajax({type:"DELETE",url:ApiClient.getUrl("Devices",{Id:id})}).then(function(){loadData(page)})})})}function load(page,devices){var html="";devices.length&&(html+='
'),html+=devices.map(function(d){var deviceHtml="";return deviceHtml+='
',deviceHtml+='tablet_android',deviceHtml+=d.AppName&&d.LastUserName?'"}).join(""),devices.length&&(html+="
");var elem=$(".devicesList",page).html(html).trigger("create");$(".btnDeleteDevice",elem).on("click",function(){deleteDevice(page,this.getAttribute("data-id"))})}function loadData(page){Dashboard.showLoadingMsg(),ApiClient.getJSON(ApiClient.getUrl("Devices",{SupportsPersistentIdentifier:!0})).then(function(result){load(page,result.Items),Dashboard.hideLoadingMsg()})}function getTabs(){return[{href:"devices.html",name:Globalize.translate("TabDevices")},{href:"devicesupload.html",name:Globalize.translate("TabCameraUpload")}]}$(document).on("pageshow","#devicesPage",function(){LibraryMenu.setTabs("devices",0,getTabs);var page=this;loadData(page)})}); \ No newline at end of file +define(["jQuery","loading","listViewStyle"],function($,loading){"use strict";function deleteDevice(page,id){var msg=Globalize.translate("DeleteDeviceConfirmation");require(["confirm"],function(confirm){confirm(msg,Globalize.translate("HeaderDeleteDevice")).then(function(){loading.show(),ApiClient.ajax({type:"DELETE",url:ApiClient.getUrl("Devices",{Id:id})}).then(function(){loadData(page)})})})}function load(page,devices){var html="";devices.length&&(html+='
'),html+=devices.map(function(d){var deviceHtml="";return deviceHtml+='
',deviceHtml+='tablet_android',deviceHtml+=d.AppName&&d.LastUserName?'"}).join(""),devices.length&&(html+="
");var elem=$(".devicesList",page).html(html).trigger("create");$(".btnDeleteDevice",elem).on("click",function(){deleteDevice(page,this.getAttribute("data-id"))})}function loadData(page){loading.show(),ApiClient.getJSON(ApiClient.getUrl("Devices",{SupportsPersistentIdentifier:!0})).then(function(result){load(page,result.Items),loading.hide()})}function getTabs(){return[{href:"devices.html",name:Globalize.translate("TabDevices")},{href:"devicesupload.html",name:Globalize.translate("TabCameraUpload")}]}$(document).on("pageshow","#devicesPage",function(){LibraryMenu.setTabs("devices",0,getTabs);var page=this;loadData(page)})}); \ No newline at end of file diff --git a/dashboard-ui/scripts/dlnaprofile.js b/dashboard-ui/scripts/dlnaprofile.js index 11c36918f4..12ef484a34 100644 --- a/dashboard-ui/scripts/dlnaprofile.js +++ b/dashboard-ui/scripts/dlnaprofile.js @@ -1 +1 @@ -define(["jQuery","fnchecked","jqmlistview","emby-select","emby-button","emby-input","emby-checkbox","listViewStyle"],function($){"use strict";function loadProfile(page){Dashboard.showLoadingMsg();var promise1=getProfile(),promise2=ApiClient.getUsers();Promise.all([promise1,promise2]).then(function(responses){currentProfile=responses[0],renderProfile(page,currentProfile,responses[1]),Dashboard.hideLoadingMsg()})}function getProfile(){var id=getParameterByName("id"),url=id?"Dlna/Profiles/"+id:"Dlna/Profiles/Default";return ApiClient.getJSON(ApiClient.getUrl(url))}function renderProfile(page,profile,users){$("#txtName",page).val(profile.Name),$(".chkMediaType",page).each(function(){this.checked=(profile.SupportedMediaTypes||"").split(",").indexOf(this.getAttribute("data-value"))!=-1}),$("#chkEnableAlbumArtInDidl",page).checked(profile.EnableAlbumArtInDidl),$("#chkEnableSingleImageLimit",page).checked(profile.EnableSingleAlbumArtLimit),renderXmlDocumentAttributes(page,profile.XmlRootAttributes||[]);var idInfo=profile.Identification||{};renderIdentificationHeaders(page,idInfo.Headers||[]),renderSubtitleProfiles(page,profile.SubtitleProfiles||[]),$("#txtInfoFriendlyName",page).val(profile.FriendlyName||""),$("#txtInfoModelName",page).val(profile.ModelName||""),$("#txtInfoModelNumber",page).val(profile.ModelNumber||""),$("#txtInfoModelDescription",page).val(profile.ModelDescription||""),$("#txtInfoModelUrl",page).val(profile.ModelUrl||""),$("#txtInfoManufacturer",page).val(profile.Manufacturer||""),$("#txtInfoManufacturerUrl",page).val(profile.ManufacturerUrl||""),$("#txtInfoSerialNumber",page).val(profile.SerialNumber||""),$("#txtIdFriendlyName",page).val(idInfo.FriendlyName||""),$("#txtIdModelName",page).val(idInfo.ModelName||""),$("#txtIdModelNumber",page).val(idInfo.ModelNumber||""),$("#txtIdModelDescription",page).val(idInfo.ModelDescription||""),$("#txtIdModelUrl",page).val(idInfo.ModelUrl||""),$("#txtIdManufacturer",page).val(idInfo.Manufacturer||""),$("#txtIdManufacturerUrl",page).val(idInfo.ManufacturerUrl||""),$("#txtIdSerialNumber",page).val(idInfo.SerialNumber||""),$("#txtIdDeviceDescription",page).val(idInfo.DeviceDescription||""),$("#txtAlbumArtPn",page).val(profile.AlbumArtPn||""),$("#txtAlbumArtMaxWidth",page).val(profile.MaxAlbumArtWidth||""),$("#txtAlbumArtMaxHeight",page).val(profile.MaxAlbumArtHeight||""),$("#txtIconMaxWidth",page).val(profile.MaxIconWidth||""),$("#txtIconMaxHeight",page).val(profile.MaxIconHeight||""),$("#chkIgnoreTranscodeByteRangeRequests",page).checked(profile.IgnoreTranscodeByteRangeRequests),$("#txtMaxAllowedBitrate",page).val(profile.MaxStreamingBitrate||""),$("#txtMusicStreamingTranscodingBitrate",page).val(profile.MusicStreamingTranscodingBitrate||""),$("#chkRequiresPlainFolders",page).checked(profile.RequiresPlainFolders),$("#chkRequiresPlainVideoItems",page).checked(profile.RequiresPlainVideoItems),$("#txtProtocolInfo",page).val(profile.ProtocolInfo||""),$("#txtXDlnaCap",page).val(profile.XDlnaCap||""),$("#txtXDlnaDoc",page).val(profile.XDlnaDoc||""),$("#txtSonyAggregationFlags",page).val(profile.SonyAggregationFlags||""),profile.DirectPlayProfiles=profile.DirectPlayProfiles||[],profile.TranscodingProfiles=profile.TranscodingProfiles||[],profile.ContainerProfiles=profile.ContainerProfiles||[],profile.CodecProfiles=profile.CodecProfiles||[],profile.ResponseProfiles=profile.ResponseProfiles||[];var usersHtml=""+users.map(function(u){return'"}).join("");$("#selectUser",page).html(usersHtml).val(profile.UserId||""),renderSubProfiles(page,profile)}function renderIdentificationHeaders(page,headers){var index=0,html='
'+headers.map(function(h){var li='
';return li+='info',li+='
',li+='

'+h.Name+": "+(h.Value||"")+"

",li+='
'+(h.Match||"")+"
",li+="
",li+='',li+="
",index++,li}).join("")+"
",elem=$(".httpHeaderIdentificationList",page).html(html).trigger("create");$(".btnDeleteIdentificationHeader",elem).on("click",function(){var itemIndex=parseInt(this.getAttribute("data-index"));currentProfile.Identification.Headers.splice(itemIndex,1),renderIdentificationHeaders(page,currentProfile.Identification.Headers)})}function editIdentificationHeader(page,header){isSubProfileNew=null==header,header=header||{},currentSubProfile=header;var popup=$("#identificationHeaderPopup",page);$("#txtIdentificationHeaderName",popup).val(header.Name||""),$("#txtIdentificationHeaderValue",popup).val(header.Value||""),$("#selectMatchType",popup).val(header.Match||"Equals"),popup.popup("open")}function saveIdentificationHeader(page){currentSubProfile.Name=$("#txtIdentificationHeaderName",page).val(),currentSubProfile.Value=$("#txtIdentificationHeaderValue",page).val(),currentSubProfile.Match=$("#selectMatchType",page).val(),isSubProfileNew&&(currentProfile.Identification=currentProfile.Identification||{},currentProfile.Identification.Headers=currentProfile.Identification.Headers||[],currentProfile.Identification.Headers.push(currentSubProfile)),renderIdentificationHeaders(page,currentProfile.Identification.Headers),currentSubProfile=null,$("#identificationHeaderPopup",page).popup("close")}function renderXmlDocumentAttributes(page,attribute){var index=0,html='
'+attribute.map(function(h){var li='
';return li+='info',li+='
',li+='

'+h.Name+" = "+(h.Value||"")+"

",li+="
",li+='',li+="
"}).join("")+"
",elem=$(".xmlDocumentAttributeList",page).html(html).trigger("create");$(".btnDeleteXmlAttribute",elem).on("click",function(){var itemIndex=parseInt(this.getAttribute("data-index"));currentProfile.XmlRootAttributes.splice(itemIndex,1),renderXmlDocumentAttributes(page,currentProfile.XmlRootAttributes)})}function editXmlDocumentAttribute(page,attribute){isSubProfileNew=null==attribute,attribute=attribute||{},currentSubProfile=attribute;var popup=$("#xmlAttributePopup",page);$("#txtXmlAttributeName",popup).val(attribute.Name||""),$("#txtXmlAttributeValue",popup).val(attribute.Value||""),popup.popup("open")}function saveXmlDocumentAttribute(page){currentSubProfile.Name=$("#txtXmlAttributeName",page).val(),currentSubProfile.Value=$("#txtXmlAttributeValue",page).val(),isSubProfileNew&¤tProfile.XmlRootAttributes.push(currentSubProfile),renderXmlDocumentAttributes(page,currentProfile.XmlRootAttributes),currentSubProfile=null,$("#xmlAttributePopup",page).popup("close")}function renderSubtitleProfiles(page,profiles){var index=0,html='
'+profiles.map(function(h){var li='
';return li+='info',li+='
',li+='

'+(h.Format||"")+"

",li+="
",li+='',li+="
",index++,li}).join("")+"
",elem=$(".subtitleProfileList",page).html(html).trigger("create");$(".btnDeleteProfile",elem).on("click",function(){var itemIndex=parseInt(this.getAttribute("data-index"));currentProfile.SubtitleProfiles.splice(itemIndex,1),renderSubtitleProfiles(page,currentProfile.SubtitleProfiles)}),$(".lnkEditSubProfile",elem).on("click",function(){var itemIndex=parseInt(this.getAttribute("data-index"));editSubtitleProfile(page,currentProfile.SubtitleProfiles[itemIndex])})}function editSubtitleProfile(page,profile){isSubProfileNew=null==profile,profile=profile||{},currentSubProfile=profile;var popup=$("#subtitleProfilePopup",page);$("#txtSubtitleProfileFormat",popup).val(profile.Format||""),$("#selectSubtitleProfileMethod",popup).val(profile.Method||""),$("#selectSubtitleProfileDidlMode",popup).val(profile.DidlMode||""),popup.popup("open")}function saveSubtitleProfile(page){currentSubProfile.Format=$("#txtSubtitleProfileFormat",page).val(),currentSubProfile.Method=$("#selectSubtitleProfileMethod",page).val(),currentSubProfile.DidlMode=$("#selectSubtitleProfileDidlMode",page).val(),isSubProfileNew&¤tProfile.SubtitleProfiles.push(currentSubProfile),renderSubtitleProfiles(page,currentProfile.SubtitleProfiles),currentSubProfile=null,$("#subtitleProfilePopup",page).popup("close")}function renderSubProfiles(page,profile){renderDirectPlayProfiles(page,profile.DirectPlayProfiles),renderTranscodingProfiles(page,profile.TranscodingProfiles),renderContainerProfiles(page,profile.ContainerProfiles),renderCodecProfiles(page,profile.CodecProfiles),renderResponseProfiles(page,profile.ResponseProfiles)}function saveDirectPlayProfile(page){currentSubProfile.Type=$("#selectDirectPlayProfileType",page).val(),currentSubProfile.Container=$("#txtDirectPlayContainer",page).val(),currentSubProfile.AudioCodec=$("#txtDirectPlayAudioCodec",page).val(),currentSubProfile.VideoCodec=$("#txtDirectPlayVideoCodec",page).val(),isSubProfileNew&¤tProfile.DirectPlayProfiles.push(currentSubProfile),renderSubProfiles(page,currentProfile),currentSubProfile=null,$("#popupEditDirectPlayProfile",page).popup("close")}function renderDirectPlayProfiles(page,profiles){var html="";html+='";var elem=$(".directPlayProfiles",page).html(html).trigger("create");$(".btnDeleteProfile",elem).on("click",function(){var index=this.getAttribute("data-profileindex");deleteDirectPlayProfile(page,index)}),$(".lnkEditSubProfile",elem).on("click",function(){var index=parseInt(this.getAttribute("data-profileindex"));editDirectPlayProfile(page,currentProfile.DirectPlayProfiles[index])})}function deleteDirectPlayProfile(page,index){currentProfile.DirectPlayProfiles.splice(index,1),renderDirectPlayProfiles(page,currentProfile.DirectPlayProfiles)}function editDirectPlayProfile(page,directPlayProfile){isSubProfileNew=null==directPlayProfile,directPlayProfile=directPlayProfile||{},currentSubProfile=directPlayProfile;var popup=$("#popupEditDirectPlayProfile",page);$("#selectDirectPlayProfileType",popup).val(directPlayProfile.Type||"Video").trigger("change"),$("#txtDirectPlayContainer",popup).val(directPlayProfile.Container||""),$("#txtDirectPlayAudioCodec",popup).val(directPlayProfile.AudioCodec||""),$("#txtDirectPlayVideoCodec",popup).val(directPlayProfile.VideoCodec||""),popup.popup("open")}function renderTranscodingProfiles(page,profiles){var html="";html+='";var elem=$(".transcodingProfiles",page).html(html).trigger("create");$(".btnDeleteProfile",elem).on("click",function(){var index=this.getAttribute("data-profileindex");deleteTranscodingProfile(page,index)}),$(".lnkEditSubProfile",elem).on("click",function(){var index=parseInt(this.getAttribute("data-profileindex"));editTranscodingProfile(page,currentProfile.TranscodingProfiles[index])})}function editTranscodingProfile(page,transcodingProfile){isSubProfileNew=null==transcodingProfile,transcodingProfile=transcodingProfile||{},currentSubProfile=transcodingProfile;var popup=$("#transcodingProfilePopup",page);$("#selectTranscodingProfileType",popup).val(transcodingProfile.Type||"Video").trigger("change"),$("#txtTranscodingContainer",popup).val(transcodingProfile.Container||""),$("#txtTranscodingAudioCodec",popup).val(transcodingProfile.AudioCodec||""),$("#txtTranscodingVideoCodec",popup).val(transcodingProfile.VideoCodec||""),$("#selectTranscodingProtocol",popup).val(transcodingProfile.Protocol||"Http"),$("#chkEnableMpegtsM2TsMode",popup).checked(transcodingProfile.EnableMpegtsM2TsMode||!1),$("#chkEstimateContentLength",popup).checked(transcodingProfile.EstimateContentLength||!1),$("#chkReportByteRangeRequests",popup).checked("Bytes"==transcodingProfile.TranscodeSeekInfo),$(".radioTabButton:first",popup).trigger("click"),popup.popup("open")}function deleteTranscodingProfile(page,index){currentProfile.TranscodingProfiles.splice(index,1),renderTranscodingProfiles(page,currentProfile.TranscodingProfiles)}function saveTranscodingProfile(page){currentSubProfile.Type=$("#selectTranscodingProfileType",page).val(),currentSubProfile.Container=$("#txtTranscodingContainer",page).val(),currentSubProfile.AudioCodec=$("#txtTranscodingAudioCodec",page).val(),currentSubProfile.VideoCodec=$("#txtTranscodingVideoCodec",page).val(),currentSubProfile.Protocol=$("#selectTranscodingProtocol",page).val(),currentSubProfile.Context="Streaming",currentSubProfile.EnableMpegtsM2TsMode=$("#chkEnableMpegtsM2TsMode",page).checked(),currentSubProfile.EstimateContentLength=$("#chkEstimateContentLength",page).checked(),currentSubProfile.TranscodeSeekInfo=$("#chkReportByteRangeRequests",page).checked()?"Bytes":"Auto",isSubProfileNew&¤tProfile.TranscodingProfiles.push(currentSubProfile),renderSubProfiles(page,currentProfile),currentSubProfile=null,$("#transcodingProfilePopup",page).popup("close")}function renderContainerProfiles(page,profiles){var html="";html+='";var elem=$(".containerProfiles",page).html(html).trigger("create");$(".btnDeleteProfile",elem).on("click",function(){var index=this.getAttribute("data-profileindex");deleteContainerProfile(page,index)}),$(".lnkEditSubProfile",elem).on("click",function(){var index=parseInt(this.getAttribute("data-profileindex"));editContainerProfile(page,currentProfile.ContainerProfiles[index])})}function deleteContainerProfile(page,index){currentProfile.ContainerProfiles.splice(index,1),renderContainerProfiles(page,currentProfile.ContainerProfiles)}function editContainerProfile(page,containerProfile){isSubProfileNew=null==containerProfile,containerProfile=containerProfile||{},currentSubProfile=containerProfile;var popup=$("#containerProfilePopup",page);$("#selectContainerProfileType",popup).val(containerProfile.Type||"Video").trigger("change"),$("#txtContainerProfileContainer",popup).val(containerProfile.Container||""),$(".radioTabButton:first",popup).trigger("click"),popup.popup("open")}function saveContainerProfile(page){currentSubProfile.Type=$("#selectContainerProfileType",page).val(),currentSubProfile.Container=$("#txtContainerProfileContainer",page).val(),isSubProfileNew&¤tProfile.ContainerProfiles.push(currentSubProfile),renderSubProfiles(page,currentProfile),currentSubProfile=null,$("#containerProfilePopup",page).popup("close")}function renderCodecProfiles(page,profiles){var html="";html+='";var elem=$(".codecProfiles",page).html(html).trigger("create");$(".btnDeleteProfile",elem).on("click",function(){var index=this.getAttribute("data-profileindex");deleteCodecProfile(page,index)}),$(".lnkEditSubProfile",elem).on("click",function(){var index=parseInt(this.getAttribute("data-profileindex"));editCodecProfile(page,currentProfile.CodecProfiles[index])})}function deleteCodecProfile(page,index){currentProfile.CodecProfiles.splice(index,1),renderCodecProfiles(page,currentProfile.CodecProfiles)}function editCodecProfile(page,codecProfile){isSubProfileNew=null==codecProfile,codecProfile=codecProfile||{},currentSubProfile=codecProfile;var popup=$("#codecProfilePopup",page);$("#selectCodecProfileType",popup).val(codecProfile.Type||"Video").trigger("change"),$("#txtCodecProfileCodec",popup).val(codecProfile.Codec||""),$(".radioTabButton:first",popup).trigger("click"),popup.popup("open")}function saveCodecProfile(page){currentSubProfile.Type=$("#selectCodecProfileType",page).val(),currentSubProfile.Codec=$("#txtCodecProfileCodec",page).val(),isSubProfileNew&¤tProfile.CodecProfiles.push(currentSubProfile),renderSubProfiles(page,currentProfile),currentSubProfile=null,$("#codecProfilePopup",page).popup("close")}function renderResponseProfiles(page,profiles){var html="";html+='";var elem=$(".mediaProfiles",page).html(html).trigger("create");$(".btnDeleteProfile",elem).on("click",function(){var index=this.getAttribute("data-profileindex");deleteResponseProfile(page,index)}),$(".lnkEditSubProfile",elem).on("click",function(){var index=parseInt(this.getAttribute("data-profileindex"));editResponseProfile(page,currentProfile.ResponseProfiles[index])})}function deleteResponseProfile(page,index){currentProfile.ResponseProfiles.splice(index,1),renderResponseProfiles(page,currentProfile.ResponseProfiles)}function editResponseProfile(page,responseProfile){isSubProfileNew=null==responseProfile,responseProfile=responseProfile||{},currentSubProfile=responseProfile;var popup=$("#responseProfilePopup",page);$("#selectResponseProfileType",popup).val(responseProfile.Type||"Video").trigger("change"),$("#txtResponseProfileContainer",popup).val(responseProfile.Container||""),$("#txtResponseProfileAudioCodec",popup).val(responseProfile.AudioCodec||""),$("#txtResponseProfileVideoCodec",popup).val(responseProfile.VideoCodec||""),$(".radioTabButton:first",popup).trigger("click"),popup.popup("open")}function saveResponseProfile(page){currentSubProfile.Type=$("#selectResponseProfileType",page).val(),currentSubProfile.Container=$("#txtResponseProfileContainer",page).val(),currentSubProfile.AudioCodec=$("#txtResponseProfileAudioCodec",page).val(),currentSubProfile.VideoCodec=$("#txtResponseProfileVideoCodec",page).val(),isSubProfileNew&¤tProfile.ResponseProfiles.push(currentSubProfile),renderSubProfiles(page,currentProfile),currentSubProfile=null,$("#responseProfilePopup",page).popup("close")}function saveProfile(page,profile){updateProfile(page,profile);var id=getParameterByName("id");id?ApiClient.ajax({type:"POST",url:ApiClient.getUrl("Dlna/Profiles/"+id),data:JSON.stringify(profile),contentType:"application/json"}).then(function(){require(["toast"],function(toast){toast("Settings saved.")})},Dashboard.processErrorResponse):ApiClient.ajax({type:"POST",url:ApiClient.getUrl("Dlna/Profiles"),data:JSON.stringify(profile),contentType:"application/json"}).then(function(){Dashboard.navigate("dlnaprofiles.html")},Dashboard.processErrorResponse),Dashboard.hideLoadingMsg()}function updateProfile(page,profile){profile.Name=$("#txtName",page).val(),profile.EnableAlbumArtInDidl=$("#chkEnableAlbumArtInDidl",page).checked(),profile.EnableSingleAlbumArtLimit=$("#chkEnableSingleImageLimit",page).checked(),profile.SupportedMediaTypes=$(".chkMediaType:checked",page).get().map(function(c){return c.getAttribute("data-value")}).join(","),profile.Identification=profile.Identification||{},profile.FriendlyName=$("#txtInfoFriendlyName",page).val(),profile.ModelName=$("#txtInfoModelName",page).val(),profile.ModelNumber=$("#txtInfoModelNumber",page).val(),profile.ModelDescription=$("#txtInfoModelDescription",page).val(),profile.ModelUrl=$("#txtInfoModelUrl",page).val(),profile.Manufacturer=$("#txtInfoManufacturer",page).val(),profile.ManufacturerUrl=$("#txtInfoManufacturerUrl",page).val(),profile.SerialNumber=$("#txtInfoSerialNumber",page).val(),profile.Identification.FriendlyName=$("#txtIdFriendlyName",page).val(),profile.Identification.ModelName=$("#txtIdModelName",page).val(),profile.Identification.ModelNumber=$("#txtIdModelNumber",page).val(),profile.Identification.ModelDescription=$("#txtIdModelDescription",page).val(),profile.Identification.ModelUrl=$("#txtIdModelUrl",page).val(),profile.Identification.Manufacturer=$("#txtIdManufacturer",page).val(),profile.Identification.ManufacturerUrl=$("#txtIdManufacturerUrl",page).val(),profile.Identification.SerialNumber=$("#txtIdSerialNumber",page).val(),profile.Identification.DeviceDescription=$("#txtIdDeviceDescription",page).val(),profile.AlbumArtPn=$("#txtAlbumArtPn",page).val(),profile.MaxAlbumArtWidth=$("#txtAlbumArtMaxWidth",page).val(),profile.MaxAlbumArtHeight=$("#txtAlbumArtMaxHeight",page).val(),profile.MaxIconWidth=$("#txtIconMaxWidth",page).val(),profile.MaxIconHeight=$("#txtIconMaxHeight",page).val(),profile.RequiresPlainFolders=$("#chkRequiresPlainFolders",page).checked(),profile.RequiresPlainVideoItems=$("#chkRequiresPlainVideoItems",page).checked(),profile.IgnoreTranscodeByteRangeRequests=$("#chkIgnoreTranscodeByteRangeRequests",page).checked(),profile.MaxStreamingBitrate=$("#txtMaxAllowedBitrate",page).val(),profile.MusicStreamingTranscodingBitrate=$("#txtMusicStreamingTranscodingBitrate",page).val(),profile.ProtocolInfo=$("#txtProtocolInfo",page).val(),profile.XDlnaCap=$("#txtXDlnaCap",page).val(),profile.XDlnaDoc=$("#txtXDlnaDoc",page).val(),profile.SonyAggregationFlags=$("#txtSonyAggregationFlags",page).val(),profile.UserId=$("#selectUser",page).val()}var currentProfile,currentSubProfile,isSubProfileNew,allText=Globalize.translate("LabelAll");$(document).on("pageinit","#dlnaProfilePage",function(){var page=this;$(".radioTabButton",page).on("click",function(){$(this).siblings().removeClass("ui-btn-active"),$(this).addClass("ui-btn-active");var value="A"==this.tagName?this.getAttribute("data-value"):this.value,elem=$("."+value,page);elem.siblings(".tabContent").hide(),elem.show()}),$("#selectDirectPlayProfileType",page).on("change",function(){"Video"==this.value?$("#fldDirectPlayVideoCodec",page).show():$("#fldDirectPlayVideoCodec",page).hide(),"Photo"==this.value?$("#fldDirectPlayAudioCodec",page).hide():$("#fldDirectPlayAudioCodec",page).show()}),$("#selectTranscodingProfileType",page).on("change",function(){"Video"==this.value?($("#fldTranscodingVideoCodec",page).show(),$("#fldTranscodingProtocol",page).show(),$("#fldEnableMpegtsM2TsMode",page).show()):($("#fldTranscodingVideoCodec",page).hide(),$("#fldTranscodingProtocol",page).hide(),$("#fldEnableMpegtsM2TsMode",page).hide()),"Photo"==this.value?($("#fldTranscodingAudioCodec",page).hide(),$("#fldEstimateContentLength",page).hide(),$("#fldReportByteRangeRequests",page).hide()):($("#fldTranscodingAudioCodec",page).show(),$("#fldEstimateContentLength",page).show(),$("#fldReportByteRangeRequests",page).show())}),$("#selectResponseProfileType",page).on("change",function(){"Video"==this.value?$("#fldResponseProfileVideoCodec",page).show():$("#fldResponseProfileVideoCodec",page).hide(),"Photo"==this.value?$("#fldResponseProfileAudioCodec",page).hide():$("#fldResponseProfileAudioCodec",page).show()}),$(".btnAddDirectPlayProfile",page).on("click",function(){editDirectPlayProfile(page)}),$(".btnAddTranscodingProfile",page).on("click",function(){editTranscodingProfile(page)}),$(".btnAddContainerProfile",page).on("click",function(){editContainerProfile(page)}),$(".btnAddCodecProfile",page).on("click",function(){editCodecProfile(page)}),$(".btnAddResponseProfile",page).on("click",function(){editResponseProfile(page)}),$(".btnAddIdentificationHttpHeader",page).on("click",function(){editIdentificationHeader(page)}),$(".btnAddXmlDocumentAttribute",page).on("click",function(){editXmlDocumentAttribute(page)}),$(".btnAddSubtitleProfile",page).on("click",function(){editSubtitleProfile(page)}),$(".dlnaProfileForm").off("submit",DlnaProfilePage.onSubmit).on("submit",DlnaProfilePage.onSubmit),$(".editDirectPlayProfileForm").off("submit",DlnaProfilePage.onDirectPlayFormSubmit).on("submit",DlnaProfilePage.onDirectPlayFormSubmit),$(".transcodingProfileForm").off("submit",DlnaProfilePage.onTranscodingProfileFormSubmit).on("submit",DlnaProfilePage.onTranscodingProfileFormSubmit),$(".containerProfileForm").off("submit",DlnaProfilePage.onContainerProfileFormSubmit).on("submit",DlnaProfilePage.onContainerProfileFormSubmit),$(".codecProfileForm").off("submit",DlnaProfilePage.onCodecProfileFormSubmit).on("submit",DlnaProfilePage.onCodecProfileFormSubmit),$(".editResponseProfileForm").off("submit",DlnaProfilePage.onResponseProfileFormSubmit).on("submit",DlnaProfilePage.onResponseProfileFormSubmit),$(".identificationHeaderForm").off("submit",DlnaProfilePage.onIdentificationHeaderFormSubmit).on("submit",DlnaProfilePage.onIdentificationHeaderFormSubmit),$(".xmlAttributeForm").off("submit",DlnaProfilePage.onXmlAttributeFormSubmit).on("submit",DlnaProfilePage.onXmlAttributeFormSubmit),$(".subtitleProfileForm").off("submit",DlnaProfilePage.onSubtitleProfileFormSubmit).on("submit",DlnaProfilePage.onSubtitleProfileFormSubmit)}).on("pageshow","#dlnaProfilePage",function(){var page=this;$("#radioInfo",page).trigger("click"),loadProfile(page)}),window.DlnaProfilePage={onSubmit:function(){Dashboard.showLoadingMsg();var form=this,page=$(form).parents(".page");return saveProfile(page,currentProfile),!1},onDirectPlayFormSubmit:function(){var form=this,page=$(form).parents(".page");return saveDirectPlayProfile(page),!1},onTranscodingProfileFormSubmit:function(){var form=this,page=$(form).parents(".page");return saveTranscodingProfile(page),!1},onContainerProfileFormSubmit:function(){var form=this,page=$(form).parents(".page");return saveContainerProfile(page),!1},onCodecProfileFormSubmit:function(){var form=this,page=$(form).parents(".page");return saveCodecProfile(page),!1},onResponseProfileFormSubmit:function(){var form=this,page=$(form).parents(".page");return saveResponseProfile(page),!1},onIdentificationHeaderFormSubmit:function(){var form=this,page=$(form).parents(".page");return saveIdentificationHeader(page),!1},onXmlAttributeFormSubmit:function(){var form=this,page=$(form).parents(".page");return saveXmlDocumentAttribute(page),!1},onSubtitleProfileFormSubmit:function(){var form=this,page=$(form).parents(".page");return saveSubtitleProfile(page),!1}}}); \ No newline at end of file +define(["jQuery","loading","fnchecked","jqmlistview","emby-select","emby-button","emby-input","emby-checkbox","listViewStyle"],function($,loading){"use strict";function loadProfile(page){loading.show();var promise1=getProfile(),promise2=ApiClient.getUsers();Promise.all([promise1,promise2]).then(function(responses){currentProfile=responses[0],renderProfile(page,currentProfile,responses[1]),loading.hide()})}function getProfile(){var id=getParameterByName("id"),url=id?"Dlna/Profiles/"+id:"Dlna/Profiles/Default";return ApiClient.getJSON(ApiClient.getUrl(url))}function renderProfile(page,profile,users){$("#txtName",page).val(profile.Name),$(".chkMediaType",page).each(function(){this.checked=(profile.SupportedMediaTypes||"").split(",").indexOf(this.getAttribute("data-value"))!=-1}),$("#chkEnableAlbumArtInDidl",page).checked(profile.EnableAlbumArtInDidl),$("#chkEnableSingleImageLimit",page).checked(profile.EnableSingleAlbumArtLimit),renderXmlDocumentAttributes(page,profile.XmlRootAttributes||[]);var idInfo=profile.Identification||{};renderIdentificationHeaders(page,idInfo.Headers||[]),renderSubtitleProfiles(page,profile.SubtitleProfiles||[]),$("#txtInfoFriendlyName",page).val(profile.FriendlyName||""),$("#txtInfoModelName",page).val(profile.ModelName||""),$("#txtInfoModelNumber",page).val(profile.ModelNumber||""),$("#txtInfoModelDescription",page).val(profile.ModelDescription||""),$("#txtInfoModelUrl",page).val(profile.ModelUrl||""),$("#txtInfoManufacturer",page).val(profile.Manufacturer||""),$("#txtInfoManufacturerUrl",page).val(profile.ManufacturerUrl||""),$("#txtInfoSerialNumber",page).val(profile.SerialNumber||""),$("#txtIdFriendlyName",page).val(idInfo.FriendlyName||""),$("#txtIdModelName",page).val(idInfo.ModelName||""),$("#txtIdModelNumber",page).val(idInfo.ModelNumber||""),$("#txtIdModelDescription",page).val(idInfo.ModelDescription||""),$("#txtIdModelUrl",page).val(idInfo.ModelUrl||""),$("#txtIdManufacturer",page).val(idInfo.Manufacturer||""),$("#txtIdManufacturerUrl",page).val(idInfo.ManufacturerUrl||""),$("#txtIdSerialNumber",page).val(idInfo.SerialNumber||""),$("#txtIdDeviceDescription",page).val(idInfo.DeviceDescription||""),$("#txtAlbumArtPn",page).val(profile.AlbumArtPn||""),$("#txtAlbumArtMaxWidth",page).val(profile.MaxAlbumArtWidth||""),$("#txtAlbumArtMaxHeight",page).val(profile.MaxAlbumArtHeight||""),$("#txtIconMaxWidth",page).val(profile.MaxIconWidth||""),$("#txtIconMaxHeight",page).val(profile.MaxIconHeight||""),$("#chkIgnoreTranscodeByteRangeRequests",page).checked(profile.IgnoreTranscodeByteRangeRequests),$("#txtMaxAllowedBitrate",page).val(profile.MaxStreamingBitrate||""),$("#txtMusicStreamingTranscodingBitrate",page).val(profile.MusicStreamingTranscodingBitrate||""),$("#chkRequiresPlainFolders",page).checked(profile.RequiresPlainFolders),$("#chkRequiresPlainVideoItems",page).checked(profile.RequiresPlainVideoItems),$("#txtProtocolInfo",page).val(profile.ProtocolInfo||""),$("#txtXDlnaCap",page).val(profile.XDlnaCap||""),$("#txtXDlnaDoc",page).val(profile.XDlnaDoc||""),$("#txtSonyAggregationFlags",page).val(profile.SonyAggregationFlags||""),profile.DirectPlayProfiles=profile.DirectPlayProfiles||[],profile.TranscodingProfiles=profile.TranscodingProfiles||[],profile.ContainerProfiles=profile.ContainerProfiles||[],profile.CodecProfiles=profile.CodecProfiles||[],profile.ResponseProfiles=profile.ResponseProfiles||[];var usersHtml=""+users.map(function(u){return'"}).join("");$("#selectUser",page).html(usersHtml).val(profile.UserId||""),renderSubProfiles(page,profile)}function renderIdentificationHeaders(page,headers){var index=0,html='
'+headers.map(function(h){var li='
';return li+='info',li+='
',li+='

'+h.Name+": "+(h.Value||"")+"

",li+='
'+(h.Match||"")+"
",li+="
",li+='',li+="
",index++,li}).join("")+"
",elem=$(".httpHeaderIdentificationList",page).html(html).trigger("create");$(".btnDeleteIdentificationHeader",elem).on("click",function(){var itemIndex=parseInt(this.getAttribute("data-index"));currentProfile.Identification.Headers.splice(itemIndex,1),renderIdentificationHeaders(page,currentProfile.Identification.Headers)})}function editIdentificationHeader(page,header){isSubProfileNew=null==header,header=header||{},currentSubProfile=header;var popup=$("#identificationHeaderPopup",page);$("#txtIdentificationHeaderName",popup).val(header.Name||""),$("#txtIdentificationHeaderValue",popup).val(header.Value||""),$("#selectMatchType",popup).val(header.Match||"Equals"),popup.popup("open")}function saveIdentificationHeader(page){currentSubProfile.Name=$("#txtIdentificationHeaderName",page).val(),currentSubProfile.Value=$("#txtIdentificationHeaderValue",page).val(),currentSubProfile.Match=$("#selectMatchType",page).val(),isSubProfileNew&&(currentProfile.Identification=currentProfile.Identification||{},currentProfile.Identification.Headers=currentProfile.Identification.Headers||[],currentProfile.Identification.Headers.push(currentSubProfile)),renderIdentificationHeaders(page,currentProfile.Identification.Headers),currentSubProfile=null,$("#identificationHeaderPopup",page).popup("close")}function renderXmlDocumentAttributes(page,attribute){var index=0,html='
'+attribute.map(function(h){var li='
';return li+='info',li+='
',li+='

'+h.Name+" = "+(h.Value||"")+"

",li+="
",li+='',li+="
"}).join("")+"
",elem=$(".xmlDocumentAttributeList",page).html(html).trigger("create");$(".btnDeleteXmlAttribute",elem).on("click",function(){var itemIndex=parseInt(this.getAttribute("data-index"));currentProfile.XmlRootAttributes.splice(itemIndex,1),renderXmlDocumentAttributes(page,currentProfile.XmlRootAttributes)})}function editXmlDocumentAttribute(page,attribute){isSubProfileNew=null==attribute,attribute=attribute||{},currentSubProfile=attribute;var popup=$("#xmlAttributePopup",page);$("#txtXmlAttributeName",popup).val(attribute.Name||""),$("#txtXmlAttributeValue",popup).val(attribute.Value||""),popup.popup("open")}function saveXmlDocumentAttribute(page){currentSubProfile.Name=$("#txtXmlAttributeName",page).val(),currentSubProfile.Value=$("#txtXmlAttributeValue",page).val(),isSubProfileNew&¤tProfile.XmlRootAttributes.push(currentSubProfile),renderXmlDocumentAttributes(page,currentProfile.XmlRootAttributes),currentSubProfile=null,$("#xmlAttributePopup",page).popup("close")}function renderSubtitleProfiles(page,profiles){var index=0,html='
'+profiles.map(function(h){var li='
';return li+='info',li+='
',li+='

'+(h.Format||"")+"

",li+="
",li+='',li+="
",index++,li}).join("")+"
",elem=$(".subtitleProfileList",page).html(html).trigger("create");$(".btnDeleteProfile",elem).on("click",function(){var itemIndex=parseInt(this.getAttribute("data-index"));currentProfile.SubtitleProfiles.splice(itemIndex,1),renderSubtitleProfiles(page,currentProfile.SubtitleProfiles)}),$(".lnkEditSubProfile",elem).on("click",function(){var itemIndex=parseInt(this.getAttribute("data-index"));editSubtitleProfile(page,currentProfile.SubtitleProfiles[itemIndex])})}function editSubtitleProfile(page,profile){isSubProfileNew=null==profile,profile=profile||{},currentSubProfile=profile;var popup=$("#subtitleProfilePopup",page);$("#txtSubtitleProfileFormat",popup).val(profile.Format||""),$("#selectSubtitleProfileMethod",popup).val(profile.Method||""),$("#selectSubtitleProfileDidlMode",popup).val(profile.DidlMode||""),popup.popup("open")}function saveSubtitleProfile(page){currentSubProfile.Format=$("#txtSubtitleProfileFormat",page).val(),currentSubProfile.Method=$("#selectSubtitleProfileMethod",page).val(),currentSubProfile.DidlMode=$("#selectSubtitleProfileDidlMode",page).val(),isSubProfileNew&¤tProfile.SubtitleProfiles.push(currentSubProfile),renderSubtitleProfiles(page,currentProfile.SubtitleProfiles),currentSubProfile=null,$("#subtitleProfilePopup",page).popup("close")}function renderSubProfiles(page,profile){renderDirectPlayProfiles(page,profile.DirectPlayProfiles),renderTranscodingProfiles(page,profile.TranscodingProfiles),renderContainerProfiles(page,profile.ContainerProfiles),renderCodecProfiles(page,profile.CodecProfiles),renderResponseProfiles(page,profile.ResponseProfiles)}function saveDirectPlayProfile(page){currentSubProfile.Type=$("#selectDirectPlayProfileType",page).val(),currentSubProfile.Container=$("#txtDirectPlayContainer",page).val(),currentSubProfile.AudioCodec=$("#txtDirectPlayAudioCodec",page).val(),currentSubProfile.VideoCodec=$("#txtDirectPlayVideoCodec",page).val(),isSubProfileNew&¤tProfile.DirectPlayProfiles.push(currentSubProfile),renderSubProfiles(page,currentProfile),currentSubProfile=null,$("#popupEditDirectPlayProfile",page).popup("close")}function renderDirectPlayProfiles(page,profiles){var html="";html+='";var elem=$(".directPlayProfiles",page).html(html).trigger("create");$(".btnDeleteProfile",elem).on("click",function(){var index=this.getAttribute("data-profileindex");deleteDirectPlayProfile(page,index)}),$(".lnkEditSubProfile",elem).on("click",function(){var index=parseInt(this.getAttribute("data-profileindex"));editDirectPlayProfile(page,currentProfile.DirectPlayProfiles[index])})}function deleteDirectPlayProfile(page,index){currentProfile.DirectPlayProfiles.splice(index,1),renderDirectPlayProfiles(page,currentProfile.DirectPlayProfiles)}function editDirectPlayProfile(page,directPlayProfile){isSubProfileNew=null==directPlayProfile,directPlayProfile=directPlayProfile||{},currentSubProfile=directPlayProfile;var popup=$("#popupEditDirectPlayProfile",page);$("#selectDirectPlayProfileType",popup).val(directPlayProfile.Type||"Video").trigger("change"),$("#txtDirectPlayContainer",popup).val(directPlayProfile.Container||""),$("#txtDirectPlayAudioCodec",popup).val(directPlayProfile.AudioCodec||""),$("#txtDirectPlayVideoCodec",popup).val(directPlayProfile.VideoCodec||""),popup.popup("open")}function renderTranscodingProfiles(page,profiles){var html="";html+='";var elem=$(".transcodingProfiles",page).html(html).trigger("create");$(".btnDeleteProfile",elem).on("click",function(){var index=this.getAttribute("data-profileindex");deleteTranscodingProfile(page,index)}),$(".lnkEditSubProfile",elem).on("click",function(){var index=parseInt(this.getAttribute("data-profileindex"));editTranscodingProfile(page,currentProfile.TranscodingProfiles[index])})}function editTranscodingProfile(page,transcodingProfile){isSubProfileNew=null==transcodingProfile,transcodingProfile=transcodingProfile||{},currentSubProfile=transcodingProfile;var popup=$("#transcodingProfilePopup",page);$("#selectTranscodingProfileType",popup).val(transcodingProfile.Type||"Video").trigger("change"),$("#txtTranscodingContainer",popup).val(transcodingProfile.Container||""),$("#txtTranscodingAudioCodec",popup).val(transcodingProfile.AudioCodec||""),$("#txtTranscodingVideoCodec",popup).val(transcodingProfile.VideoCodec||""),$("#selectTranscodingProtocol",popup).val(transcodingProfile.Protocol||"Http"),$("#chkEnableMpegtsM2TsMode",popup).checked(transcodingProfile.EnableMpegtsM2TsMode||!1),$("#chkEstimateContentLength",popup).checked(transcodingProfile.EstimateContentLength||!1),$("#chkReportByteRangeRequests",popup).checked("Bytes"==transcodingProfile.TranscodeSeekInfo),$(".radioTabButton:first",popup).trigger("click"),popup.popup("open")}function deleteTranscodingProfile(page,index){currentProfile.TranscodingProfiles.splice(index,1),renderTranscodingProfiles(page,currentProfile.TranscodingProfiles)}function saveTranscodingProfile(page){currentSubProfile.Type=$("#selectTranscodingProfileType",page).val(),currentSubProfile.Container=$("#txtTranscodingContainer",page).val(),currentSubProfile.AudioCodec=$("#txtTranscodingAudioCodec",page).val(),currentSubProfile.VideoCodec=$("#txtTranscodingVideoCodec",page).val(),currentSubProfile.Protocol=$("#selectTranscodingProtocol",page).val(),currentSubProfile.Context="Streaming",currentSubProfile.EnableMpegtsM2TsMode=$("#chkEnableMpegtsM2TsMode",page).checked(),currentSubProfile.EstimateContentLength=$("#chkEstimateContentLength",page).checked(),currentSubProfile.TranscodeSeekInfo=$("#chkReportByteRangeRequests",page).checked()?"Bytes":"Auto",isSubProfileNew&¤tProfile.TranscodingProfiles.push(currentSubProfile),renderSubProfiles(page,currentProfile),currentSubProfile=null,$("#transcodingProfilePopup",page).popup("close")}function renderContainerProfiles(page,profiles){var html="";html+='";var elem=$(".containerProfiles",page).html(html).trigger("create");$(".btnDeleteProfile",elem).on("click",function(){var index=this.getAttribute("data-profileindex");deleteContainerProfile(page,index)}),$(".lnkEditSubProfile",elem).on("click",function(){var index=parseInt(this.getAttribute("data-profileindex"));editContainerProfile(page,currentProfile.ContainerProfiles[index])})}function deleteContainerProfile(page,index){currentProfile.ContainerProfiles.splice(index,1),renderContainerProfiles(page,currentProfile.ContainerProfiles)}function editContainerProfile(page,containerProfile){isSubProfileNew=null==containerProfile,containerProfile=containerProfile||{},currentSubProfile=containerProfile;var popup=$("#containerProfilePopup",page);$("#selectContainerProfileType",popup).val(containerProfile.Type||"Video").trigger("change"),$("#txtContainerProfileContainer",popup).val(containerProfile.Container||""),$(".radioTabButton:first",popup).trigger("click"),popup.popup("open")}function saveContainerProfile(page){currentSubProfile.Type=$("#selectContainerProfileType",page).val(),currentSubProfile.Container=$("#txtContainerProfileContainer",page).val(),isSubProfileNew&¤tProfile.ContainerProfiles.push(currentSubProfile),renderSubProfiles(page,currentProfile),currentSubProfile=null,$("#containerProfilePopup",page).popup("close")}function renderCodecProfiles(page,profiles){var html="";html+='";var elem=$(".codecProfiles",page).html(html).trigger("create");$(".btnDeleteProfile",elem).on("click",function(){var index=this.getAttribute("data-profileindex");deleteCodecProfile(page,index)}),$(".lnkEditSubProfile",elem).on("click",function(){var index=parseInt(this.getAttribute("data-profileindex"));editCodecProfile(page,currentProfile.CodecProfiles[index])})}function deleteCodecProfile(page,index){currentProfile.CodecProfiles.splice(index,1),renderCodecProfiles(page,currentProfile.CodecProfiles)}function editCodecProfile(page,codecProfile){isSubProfileNew=null==codecProfile,codecProfile=codecProfile||{},currentSubProfile=codecProfile;var popup=$("#codecProfilePopup",page);$("#selectCodecProfileType",popup).val(codecProfile.Type||"Video").trigger("change"),$("#txtCodecProfileCodec",popup).val(codecProfile.Codec||""),$(".radioTabButton:first",popup).trigger("click"),popup.popup("open")}function saveCodecProfile(page){currentSubProfile.Type=$("#selectCodecProfileType",page).val(),currentSubProfile.Codec=$("#txtCodecProfileCodec",page).val(),isSubProfileNew&¤tProfile.CodecProfiles.push(currentSubProfile),renderSubProfiles(page,currentProfile),currentSubProfile=null,$("#codecProfilePopup",page).popup("close")}function renderResponseProfiles(page,profiles){var html="";html+='";var elem=$(".mediaProfiles",page).html(html).trigger("create");$(".btnDeleteProfile",elem).on("click",function(){var index=this.getAttribute("data-profileindex");deleteResponseProfile(page,index)}),$(".lnkEditSubProfile",elem).on("click",function(){var index=parseInt(this.getAttribute("data-profileindex"));editResponseProfile(page,currentProfile.ResponseProfiles[index])})}function deleteResponseProfile(page,index){currentProfile.ResponseProfiles.splice(index,1),renderResponseProfiles(page,currentProfile.ResponseProfiles)}function editResponseProfile(page,responseProfile){isSubProfileNew=null==responseProfile,responseProfile=responseProfile||{},currentSubProfile=responseProfile;var popup=$("#responseProfilePopup",page);$("#selectResponseProfileType",popup).val(responseProfile.Type||"Video").trigger("change"),$("#txtResponseProfileContainer",popup).val(responseProfile.Container||""),$("#txtResponseProfileAudioCodec",popup).val(responseProfile.AudioCodec||""),$("#txtResponseProfileVideoCodec",popup).val(responseProfile.VideoCodec||""),$(".radioTabButton:first",popup).trigger("click"),popup.popup("open")}function saveResponseProfile(page){currentSubProfile.Type=$("#selectResponseProfileType",page).val(),currentSubProfile.Container=$("#txtResponseProfileContainer",page).val(),currentSubProfile.AudioCodec=$("#txtResponseProfileAudioCodec",page).val(),currentSubProfile.VideoCodec=$("#txtResponseProfileVideoCodec",page).val(),isSubProfileNew&¤tProfile.ResponseProfiles.push(currentSubProfile),renderSubProfiles(page,currentProfile),currentSubProfile=null,$("#responseProfilePopup",page).popup("close")}function saveProfile(page,profile){updateProfile(page,profile);var id=getParameterByName("id");id?ApiClient.ajax({type:"POST",url:ApiClient.getUrl("Dlna/Profiles/"+id),data:JSON.stringify(profile),contentType:"application/json"}).then(function(){require(["toast"],function(toast){toast("Settings saved.")})},Dashboard.processErrorResponse):ApiClient.ajax({type:"POST",url:ApiClient.getUrl("Dlna/Profiles"),data:JSON.stringify(profile),contentType:"application/json"}).then(function(){Dashboard.navigate("dlnaprofiles.html")},Dashboard.processErrorResponse),loading.hide()}function updateProfile(page,profile){profile.Name=$("#txtName",page).val(),profile.EnableAlbumArtInDidl=$("#chkEnableAlbumArtInDidl",page).checked(),profile.EnableSingleAlbumArtLimit=$("#chkEnableSingleImageLimit",page).checked(),profile.SupportedMediaTypes=$(".chkMediaType:checked",page).get().map(function(c){return c.getAttribute("data-value")}).join(","),profile.Identification=profile.Identification||{},profile.FriendlyName=$("#txtInfoFriendlyName",page).val(),profile.ModelName=$("#txtInfoModelName",page).val(),profile.ModelNumber=$("#txtInfoModelNumber",page).val(),profile.ModelDescription=$("#txtInfoModelDescription",page).val(),profile.ModelUrl=$("#txtInfoModelUrl",page).val(),profile.Manufacturer=$("#txtInfoManufacturer",page).val(),profile.ManufacturerUrl=$("#txtInfoManufacturerUrl",page).val(),profile.SerialNumber=$("#txtInfoSerialNumber",page).val(),profile.Identification.FriendlyName=$("#txtIdFriendlyName",page).val(),profile.Identification.ModelName=$("#txtIdModelName",page).val(),profile.Identification.ModelNumber=$("#txtIdModelNumber",page).val(),profile.Identification.ModelDescription=$("#txtIdModelDescription",page).val(),profile.Identification.ModelUrl=$("#txtIdModelUrl",page).val(),profile.Identification.Manufacturer=$("#txtIdManufacturer",page).val(),profile.Identification.ManufacturerUrl=$("#txtIdManufacturerUrl",page).val(),profile.Identification.SerialNumber=$("#txtIdSerialNumber",page).val(),profile.Identification.DeviceDescription=$("#txtIdDeviceDescription",page).val(),profile.AlbumArtPn=$("#txtAlbumArtPn",page).val(),profile.MaxAlbumArtWidth=$("#txtAlbumArtMaxWidth",page).val(),profile.MaxAlbumArtHeight=$("#txtAlbumArtMaxHeight",page).val(),profile.MaxIconWidth=$("#txtIconMaxWidth",page).val(),profile.MaxIconHeight=$("#txtIconMaxHeight",page).val(),profile.RequiresPlainFolders=$("#chkRequiresPlainFolders",page).checked(),profile.RequiresPlainVideoItems=$("#chkRequiresPlainVideoItems",page).checked(),profile.IgnoreTranscodeByteRangeRequests=$("#chkIgnoreTranscodeByteRangeRequests",page).checked(),profile.MaxStreamingBitrate=$("#txtMaxAllowedBitrate",page).val(),profile.MusicStreamingTranscodingBitrate=$("#txtMusicStreamingTranscodingBitrate",page).val(),profile.ProtocolInfo=$("#txtProtocolInfo",page).val(),profile.XDlnaCap=$("#txtXDlnaCap",page).val(),profile.XDlnaDoc=$("#txtXDlnaDoc",page).val(),profile.SonyAggregationFlags=$("#txtSonyAggregationFlags",page).val(),profile.UserId=$("#selectUser",page).val()}var currentProfile,currentSubProfile,isSubProfileNew,allText=Globalize.translate("LabelAll");$(document).on("pageinit","#dlnaProfilePage",function(){var page=this;$(".radioTabButton",page).on("click",function(){$(this).siblings().removeClass("ui-btn-active"),$(this).addClass("ui-btn-active");var value="A"==this.tagName?this.getAttribute("data-value"):this.value,elem=$("."+value,page);elem.siblings(".tabContent").hide(),elem.show()}),$("#selectDirectPlayProfileType",page).on("change",function(){"Video"==this.value?$("#fldDirectPlayVideoCodec",page).show():$("#fldDirectPlayVideoCodec",page).hide(),"Photo"==this.value?$("#fldDirectPlayAudioCodec",page).hide():$("#fldDirectPlayAudioCodec",page).show()}),$("#selectTranscodingProfileType",page).on("change",function(){"Video"==this.value?($("#fldTranscodingVideoCodec",page).show(),$("#fldTranscodingProtocol",page).show(),$("#fldEnableMpegtsM2TsMode",page).show()):($("#fldTranscodingVideoCodec",page).hide(),$("#fldTranscodingProtocol",page).hide(),$("#fldEnableMpegtsM2TsMode",page).hide()),"Photo"==this.value?($("#fldTranscodingAudioCodec",page).hide(),$("#fldEstimateContentLength",page).hide(),$("#fldReportByteRangeRequests",page).hide()):($("#fldTranscodingAudioCodec",page).show(),$("#fldEstimateContentLength",page).show(),$("#fldReportByteRangeRequests",page).show())}),$("#selectResponseProfileType",page).on("change",function(){"Video"==this.value?$("#fldResponseProfileVideoCodec",page).show():$("#fldResponseProfileVideoCodec",page).hide(),"Photo"==this.value?$("#fldResponseProfileAudioCodec",page).hide():$("#fldResponseProfileAudioCodec",page).show()}),$(".btnAddDirectPlayProfile",page).on("click",function(){editDirectPlayProfile(page)}),$(".btnAddTranscodingProfile",page).on("click",function(){editTranscodingProfile(page)}),$(".btnAddContainerProfile",page).on("click",function(){editContainerProfile(page)}),$(".btnAddCodecProfile",page).on("click",function(){editCodecProfile(page)}),$(".btnAddResponseProfile",page).on("click",function(){editResponseProfile(page)}),$(".btnAddIdentificationHttpHeader",page).on("click",function(){editIdentificationHeader(page)}),$(".btnAddXmlDocumentAttribute",page).on("click",function(){editXmlDocumentAttribute(page)}),$(".btnAddSubtitleProfile",page).on("click",function(){editSubtitleProfile(page)}),$(".dlnaProfileForm").off("submit",DlnaProfilePage.onSubmit).on("submit",DlnaProfilePage.onSubmit),$(".editDirectPlayProfileForm").off("submit",DlnaProfilePage.onDirectPlayFormSubmit).on("submit",DlnaProfilePage.onDirectPlayFormSubmit),$(".transcodingProfileForm").off("submit",DlnaProfilePage.onTranscodingProfileFormSubmit).on("submit",DlnaProfilePage.onTranscodingProfileFormSubmit),$(".containerProfileForm").off("submit",DlnaProfilePage.onContainerProfileFormSubmit).on("submit",DlnaProfilePage.onContainerProfileFormSubmit),$(".codecProfileForm").off("submit",DlnaProfilePage.onCodecProfileFormSubmit).on("submit",DlnaProfilePage.onCodecProfileFormSubmit),$(".editResponseProfileForm").off("submit",DlnaProfilePage.onResponseProfileFormSubmit).on("submit",DlnaProfilePage.onResponseProfileFormSubmit),$(".identificationHeaderForm").off("submit",DlnaProfilePage.onIdentificationHeaderFormSubmit).on("submit",DlnaProfilePage.onIdentificationHeaderFormSubmit),$(".xmlAttributeForm").off("submit",DlnaProfilePage.onXmlAttributeFormSubmit).on("submit",DlnaProfilePage.onXmlAttributeFormSubmit),$(".subtitleProfileForm").off("submit",DlnaProfilePage.onSubtitleProfileFormSubmit).on("submit",DlnaProfilePage.onSubtitleProfileFormSubmit)}).on("pageshow","#dlnaProfilePage",function(){var page=this;$("#radioInfo",page).trigger("click"),loadProfile(page)}),window.DlnaProfilePage={onSubmit:function(){loading.show();var form=this,page=$(form).parents(".page");return saveProfile(page,currentProfile),!1},onDirectPlayFormSubmit:function(){var form=this,page=$(form).parents(".page");return saveDirectPlayProfile(page),!1},onTranscodingProfileFormSubmit:function(){var form=this,page=$(form).parents(".page");return saveTranscodingProfile(page),!1},onContainerProfileFormSubmit:function(){var form=this,page=$(form).parents(".page");return saveContainerProfile(page),!1},onCodecProfileFormSubmit:function(){var form=this,page=$(form).parents(".page");return saveCodecProfile(page),!1},onResponseProfileFormSubmit:function(){var form=this,page=$(form).parents(".page");return saveResponseProfile(page),!1},onIdentificationHeaderFormSubmit:function(){var form=this,page=$(form).parents(".page");return saveIdentificationHeader(page),!1},onXmlAttributeFormSubmit:function(){var form=this,page=$(form).parents(".page");return saveXmlDocumentAttribute(page),!1},onSubtitleProfileFormSubmit:function(){var form=this,page=$(form).parents(".page");return saveSubtitleProfile(page),!1}}}); \ No newline at end of file diff --git a/dashboard-ui/scripts/dlnaprofiles.js b/dashboard-ui/scripts/dlnaprofiles.js index c41b4e770c..6de45a9460 100644 --- a/dashboard-ui/scripts/dlnaprofiles.js +++ b/dashboard-ui/scripts/dlnaprofiles.js @@ -1 +1 @@ -define(["jQuery","listViewStyle"],function($){"use strict";function loadProfiles(page){Dashboard.showLoadingMsg(),ApiClient.getJSON(ApiClient.getUrl("Dlna/ProfileInfos")).then(function(result){renderUserProfiles(page,result),renderSystemProfiles(page,result),Dashboard.hideLoadingMsg()})}function renderUserProfiles(page,profiles){renderProfiles(page,page.querySelector(".customProfiles"),profiles.filter(function(p){return"User"==p.Type}))}function renderSystemProfiles(page,profiles){renderProfiles(page,page.querySelector(".systemProfiles"),profiles.filter(function(p){return"System"==p.Type}))}function renderProfiles(page,element,profiles){var html="";profiles.length&&(html+='
');for(var i=0,length=profiles.length;i',html+="",html+='dvr',html+="",html+='","User"==profile.Type&&(html+=''),html+="
"}profiles.length&&(html+="
"),element.innerHTML=html,$(".btnDeleteProfile",element).on("click",function(){var id=this.getAttribute("data-profileid");deleteProfile(page,id)})}function deleteProfile(page,id){require(["confirm"],function(confirm){confirm(Globalize.translate("MessageConfirmProfileDeletion"),Globalize.translate("HeaderConfirmProfileDeletion")).then(function(){Dashboard.showLoadingMsg(),ApiClient.ajax({type:"DELETE",url:ApiClient.getUrl("Dlna/Profiles/"+id)}).then(function(){Dashboard.hideLoadingMsg(),loadProfiles(page)})})})}function getTabs(){return[{href:"dlnasettings.html",name:Globalize.translate("TabSettings")},{href:"dlnaprofiles.html",name:Globalize.translate("TabProfiles")}]}$(document).on("pageshow","#dlnaProfilesPage",function(){LibraryMenu.setTabs("dlna",1,getTabs);var page=this;loadProfiles(page)})}); \ No newline at end of file +define(["jQuery","loading","listViewStyle"],function($,loading){"use strict";function loadProfiles(page){loading.show(),ApiClient.getJSON(ApiClient.getUrl("Dlna/ProfileInfos")).then(function(result){renderUserProfiles(page,result),renderSystemProfiles(page,result),loading.hide()})}function renderUserProfiles(page,profiles){renderProfiles(page,page.querySelector(".customProfiles"),profiles.filter(function(p){return"User"==p.Type}))}function renderSystemProfiles(page,profiles){renderProfiles(page,page.querySelector(".systemProfiles"),profiles.filter(function(p){return"System"==p.Type}))}function renderProfiles(page,element,profiles){var html="";profiles.length&&(html+='
');for(var i=0,length=profiles.length;i',html+="",html+='dvr',html+="",html+='","User"==profile.Type&&(html+=''),html+="
"}profiles.length&&(html+="
"),element.innerHTML=html,$(".btnDeleteProfile",element).on("click",function(){var id=this.getAttribute("data-profileid");deleteProfile(page,id)})}function deleteProfile(page,id){require(["confirm"],function(confirm){confirm(Globalize.translate("MessageConfirmProfileDeletion"),Globalize.translate("HeaderConfirmProfileDeletion")).then(function(){loading.show(),ApiClient.ajax({type:"DELETE",url:ApiClient.getUrl("Dlna/Profiles/"+id)}).then(function(){loading.hide(),loadProfiles(page)})})})}function getTabs(){return[{href:"dlnasettings.html",name:Globalize.translate("TabSettings")},{href:"dlnaprofiles.html",name:Globalize.translate("TabProfiles")}]}$(document).on("pageshow","#dlnaProfilesPage",function(){LibraryMenu.setTabs("dlna",1,getTabs);var page=this;loadProfiles(page)})}); \ No newline at end of file diff --git a/dashboard-ui/scripts/dlnasettings.js b/dashboard-ui/scripts/dlnasettings.js index 2ea7077265..35b49045d9 100644 --- a/dashboard-ui/scripts/dlnasettings.js +++ b/dashboard-ui/scripts/dlnasettings.js @@ -1 +1 @@ -define(["jQuery","fnchecked"],function($){"use strict";function loadPage(page,config,users){page.querySelector("#chkEnablePlayTo").checked=config.EnablePlayTo,page.querySelector("#chkEnableDlnaDebugLogging").checked=config.EnableDebugLog,$("#txtClientDiscoveryInterval",page).val(config.ClientDiscoveryIntervalSeconds),$("#chkEnableServer",page).checked(config.EnableServer),$("#chkBlastAliveMessages",page).checked(config.BlastAliveMessages),$("#txtBlastInterval",page).val(config.BlastAliveMessageIntervalSeconds);var usersHtml=users.map(function(u){return'"}).join("");$("#selectUser",page).html(usersHtml).val(config.DefaultUserId||""),Dashboard.hideLoadingMsg()}function onSubmit(){Dashboard.showLoadingMsg();var form=this;return ApiClient.getNamedConfiguration("dlna").then(function(config){config.EnablePlayTo=form.querySelector("#chkEnablePlayTo").checked,config.EnableDebugLog=form.querySelector("#chkEnableDlnaDebugLogging").checked,config.ClientDiscoveryIntervalSeconds=$("#txtClientDiscoveryInterval",form).val(),config.EnableServer=$("#chkEnableServer",form).checked(),config.BlastAliveMessages=$("#chkBlastAliveMessages",form).checked(),config.BlastAliveMessageIntervalSeconds=$("#txtBlastInterval",form).val(),config.DefaultUserId=$("#selectUser",form).val(),ApiClient.updateNamedConfiguration("dlna",config).then(Dashboard.processServerConfigurationUpdateResult)}),!1}function getTabs(){return[{href:"dlnasettings.html",name:Globalize.translate("TabSettings")},{href:"dlnaprofiles.html",name:Globalize.translate("TabProfiles")}]}$(document).on("pageinit","#dlnaSettingsPage",function(){$(".dlnaSettingsForm").off("submit",onSubmit).on("submit",onSubmit)}).on("pageshow","#dlnaSettingsPage",function(){LibraryMenu.setTabs("dlna",0,getTabs),Dashboard.showLoadingMsg();var page=this,promise1=ApiClient.getNamedConfiguration("dlna"),promise2=ApiClient.getUsers();Promise.all([promise1,promise2]).then(function(responses){loadPage(page,responses[0],responses[1])})})}); \ No newline at end of file +define(["jQuery","loading","fnchecked"],function($,loading){"use strict";function loadPage(page,config,users){page.querySelector("#chkEnablePlayTo").checked=config.EnablePlayTo,page.querySelector("#chkEnableDlnaDebugLogging").checked=config.EnableDebugLog,$("#txtClientDiscoveryInterval",page).val(config.ClientDiscoveryIntervalSeconds),$("#chkEnableServer",page).checked(config.EnableServer),$("#chkBlastAliveMessages",page).checked(config.BlastAliveMessages),$("#txtBlastInterval",page).val(config.BlastAliveMessageIntervalSeconds);var usersHtml=users.map(function(u){return'"}).join("");$("#selectUser",page).html(usersHtml).val(config.DefaultUserId||""),loading.hide()}function onSubmit(){loading.show();var form=this;return ApiClient.getNamedConfiguration("dlna").then(function(config){config.EnablePlayTo=form.querySelector("#chkEnablePlayTo").checked,config.EnableDebugLog=form.querySelector("#chkEnableDlnaDebugLogging").checked,config.ClientDiscoveryIntervalSeconds=$("#txtClientDiscoveryInterval",form).val(),config.EnableServer=$("#chkEnableServer",form).checked(),config.BlastAliveMessages=$("#chkBlastAliveMessages",form).checked(),config.BlastAliveMessageIntervalSeconds=$("#txtBlastInterval",form).val(),config.DefaultUserId=$("#selectUser",form).val(),ApiClient.updateNamedConfiguration("dlna",config).then(Dashboard.processServerConfigurationUpdateResult)}),!1}function getTabs(){return[{href:"dlnasettings.html",name:Globalize.translate("TabSettings")},{href:"dlnaprofiles.html",name:Globalize.translate("TabProfiles")}]}$(document).on("pageinit","#dlnaSettingsPage",function(){$(".dlnaSettingsForm").off("submit",onSubmit).on("submit",onSubmit)}).on("pageshow","#dlnaSettingsPage",function(){LibraryMenu.setTabs("dlna",0,getTabs),loading.show();var page=this,promise1=ApiClient.getNamedConfiguration("dlna"),promise2=ApiClient.getUsers();Promise.all([promise1,promise2]).then(function(responses){loadPage(page,responses[0],responses[1])})})}); \ No newline at end of file diff --git a/dashboard-ui/scripts/encodingsettings.js b/dashboard-ui/scripts/encodingsettings.js index e17d6dde00..dae53b3992 100644 --- a/dashboard-ui/scripts/encodingsettings.js +++ b/dashboard-ui/scripts/encodingsettings.js @@ -1 +1 @@ -define(["jQuery"],function($){"use strict";function loadPage(page,config,systemInfo){page.querySelector("#chkEnableThrottle").checked=config.EnableThrottling,$("#selectVideoDecoder",page).val(config.HardwareAccelerationType),$("#selectThreadCount",page).val(config.EncodingThreadCount),$("#txtDownMixAudioBoost",page).val(config.DownMixAudioBoost),page.querySelector(".txtEncoderPath").value=config.EncoderAppPath||"",$("#txtTranscodingTempPath",page).val(config.TranscodingTempPath||""),$("#txtVaapiDevice",page).val(config.VaapiDevice||""),page.querySelector("#selectH264Preset").value=config.H264Preset||"",page.querySelector("#txtH264Crf").value=config.H264Crf||"";var selectEncoderPath=page.querySelector("#selectEncoderPath");selectEncoderPath.value=systemInfo.EncoderLocationType,onSelectEncoderPathChange.call(selectEncoderPath),page.querySelector("#selectVideoDecoder").dispatchEvent(new CustomEvent("change",{bubbles:!0})),Dashboard.hideLoadingMsg()}function onSaveEncodingPathFailure(response){Dashboard.hideLoadingMsg();var msg="";msg=Globalize.translate("FFmpegSavePathNotFound"),require(["alert"],function(alert){alert(msg)})}function updateEncoder(form){return ApiClient.getSystemInfo().then(function(systemInfo){return ApiClient.ajax({url:ApiClient.getUrl("System/MediaEncoder/Path"),type:"POST",data:{Path:form.querySelector(".txtEncoderPath").value,PathType:form.querySelector("#selectEncoderPath").value}}).then(Dashboard.processServerConfigurationUpdateResult,onSaveEncodingPathFailure)})}function onSubmit(){var form=this,onDecoderConfirmed=function(){Dashboard.showLoadingMsg(),ApiClient.getNamedConfiguration("encoding").then(function(config){config.DownMixAudioBoost=$("#txtDownMixAudioBoost",form).val(),config.TranscodingTempPath=$("#txtTranscodingTempPath",form).val(),config.EncodingThreadCount=$("#selectThreadCount",form).val(),config.HardwareAccelerationType=$("#selectVideoDecoder",form).val(),config.VaapiDevice=$("#txtVaapiDevice",form).val(),config.H264Preset=form.querySelector("#selectH264Preset").value,config.H264Crf=parseInt(form.querySelector("#txtH264Crf").value||"0"),config.EnableThrottling=form.querySelector("#chkEnableThrottle").checked,ApiClient.updateNamedConfiguration("encoding",config).then(function(){updateEncoder(form)})})};return $("#selectVideoDecoder",form).val()?require(["alert"],function(alert){alert({title:Globalize.translate("TitleHardwareAcceleration"),text:Globalize.translate("HardwareAccelerationWarning")}).then(onDecoderConfirmed)}):onDecoderConfirmed(),!1}function onSelectEncoderPathChange(e){var page=$(this).parents(".page")[0];"Custom"==this.value?(page.querySelector(".fldEncoderPath").classList.remove("hide"),page.querySelector(".txtEncoderPath").setAttribute("required","required")):(page.querySelector(".fldEncoderPath").classList.add("hide"),page.querySelector(".txtEncoderPath").removeAttribute("required"))}$(document).on("pageinit","#encodingSettingsPage",function(){var page=this;page.querySelector("#selectVideoDecoder").addEventListener("change",function(){"vaapi"==this.value?(page.querySelector(".fldVaapiDevice").classList.remove("hide"),page.querySelector("#txtVaapiDevice").setAttribute("required","required")):(page.querySelector(".fldVaapiDevice").classList.add("hide"),page.querySelector("#txtVaapiDevice").removeAttribute("required"))}),$("#btnSelectEncoderPath",page).on("click.selectDirectory",function(){require(["directorybrowser"],function(directoryBrowser){var picker=new directoryBrowser;picker.show({includeFiles:!0,callback:function(path){path&&$(".txtEncoderPath",page).val(path),picker.close()}})})}),$("#btnSelectTranscodingTempPath",page).on("click.selectDirectory",function(){require(["directorybrowser"],function(directoryBrowser){var picker=new directoryBrowser;picker.show({callback:function(path){path&&$("#txtTranscodingTempPath",page).val(path),picker.close()},header:Globalize.translate("HeaderSelectTranscodingPath"),instruction:Globalize.translate("HeaderSelectTranscodingPathHelp")})})}),$(".encodingSettingsForm").off("submit",onSubmit).on("submit",onSubmit),page.querySelector("#selectEncoderPath").addEventListener("change",onSelectEncoderPathChange)}).on("pageshow","#encodingSettingsPage",function(){Dashboard.showLoadingMsg();var page=this;ApiClient.getNamedConfiguration("encoding").then(function(config){ApiClient.getSystemInfo().then(function(systemInfo){"External"==systemInfo.EncoderLocationType?page.querySelector(".fldSelectEncoderPathType").classList.add("hide"):page.querySelector(".fldSelectEncoderPathType").classList.remove("hide"),loadPage(page,config,systemInfo)})})})}); \ No newline at end of file +define(["jQuery","loading"],function($,loading){"use strict";function loadPage(page,config,systemInfo){page.querySelector("#chkEnableThrottle").checked=config.EnableThrottling,$("#selectVideoDecoder",page).val(config.HardwareAccelerationType),$("#selectThreadCount",page).val(config.EncodingThreadCount),$("#txtDownMixAudioBoost",page).val(config.DownMixAudioBoost),page.querySelector(".txtEncoderPath").value=config.EncoderAppPath||"",$("#txtTranscodingTempPath",page).val(config.TranscodingTempPath||""),$("#txtVaapiDevice",page).val(config.VaapiDevice||""),page.querySelector("#selectH264Preset").value=config.H264Preset||"",page.querySelector("#txtH264Crf").value=config.H264Crf||"";var selectEncoderPath=page.querySelector("#selectEncoderPath");selectEncoderPath.value=systemInfo.EncoderLocationType,onSelectEncoderPathChange.call(selectEncoderPath),page.querySelector("#selectVideoDecoder").dispatchEvent(new CustomEvent("change",{bubbles:!0})),loading.hide()}function onSaveEncodingPathFailure(response){loading.hide();var msg="";msg=Globalize.translate("FFmpegSavePathNotFound"),require(["alert"],function(alert){alert(msg)})}function updateEncoder(form){return ApiClient.getSystemInfo().then(function(systemInfo){return ApiClient.ajax({url:ApiClient.getUrl("System/MediaEncoder/Path"),type:"POST",data:{Path:form.querySelector(".txtEncoderPath").value,PathType:form.querySelector("#selectEncoderPath").value}}).then(Dashboard.processServerConfigurationUpdateResult,onSaveEncodingPathFailure)})}function onSubmit(){var form=this,onDecoderConfirmed=function(){loading.show(),ApiClient.getNamedConfiguration("encoding").then(function(config){config.DownMixAudioBoost=$("#txtDownMixAudioBoost",form).val(),config.TranscodingTempPath=$("#txtTranscodingTempPath",form).val(),config.EncodingThreadCount=$("#selectThreadCount",form).val(),config.HardwareAccelerationType=$("#selectVideoDecoder",form).val(),config.VaapiDevice=$("#txtVaapiDevice",form).val(),config.H264Preset=form.querySelector("#selectH264Preset").value,config.H264Crf=parseInt(form.querySelector("#txtH264Crf").value||"0"),config.EnableThrottling=form.querySelector("#chkEnableThrottle").checked,ApiClient.updateNamedConfiguration("encoding",config).then(function(){updateEncoder(form)})})};return $("#selectVideoDecoder",form).val()?require(["alert"],function(alert){alert({title:Globalize.translate("TitleHardwareAcceleration"),text:Globalize.translate("HardwareAccelerationWarning")}).then(onDecoderConfirmed)}):onDecoderConfirmed(),!1}function onSelectEncoderPathChange(e){var page=$(this).parents(".page")[0];"Custom"==this.value?(page.querySelector(".fldEncoderPath").classList.remove("hide"),page.querySelector(".txtEncoderPath").setAttribute("required","required")):(page.querySelector(".fldEncoderPath").classList.add("hide"),page.querySelector(".txtEncoderPath").removeAttribute("required"))}$(document).on("pageinit","#encodingSettingsPage",function(){var page=this;page.querySelector("#selectVideoDecoder").addEventListener("change",function(){"vaapi"==this.value?(page.querySelector(".fldVaapiDevice").classList.remove("hide"),page.querySelector("#txtVaapiDevice").setAttribute("required","required")):(page.querySelector(".fldVaapiDevice").classList.add("hide"),page.querySelector("#txtVaapiDevice").removeAttribute("required"))}),$("#btnSelectEncoderPath",page).on("click.selectDirectory",function(){require(["directorybrowser"],function(directoryBrowser){var picker=new directoryBrowser;picker.show({includeFiles:!0,callback:function(path){path&&$(".txtEncoderPath",page).val(path),picker.close()}})})}),$("#btnSelectTranscodingTempPath",page).on("click.selectDirectory",function(){require(["directorybrowser"],function(directoryBrowser){var picker=new directoryBrowser;picker.show({callback:function(path){path&&$("#txtTranscodingTempPath",page).val(path),picker.close()},header:Globalize.translate("HeaderSelectTranscodingPath"),instruction:Globalize.translate("HeaderSelectTranscodingPathHelp")})})}),$(".encodingSettingsForm").off("submit",onSubmit).on("submit",onSubmit),page.querySelector("#selectEncoderPath").addEventListener("change",onSelectEncoderPathChange)}).on("pageshow","#encodingSettingsPage",function(){loading.show();var page=this;ApiClient.getNamedConfiguration("encoding").then(function(config){ApiClient.getSystemInfo().then(function(systemInfo){"External"==systemInfo.EncoderLocationType?page.querySelector(".fldSelectEncoderPathType").classList.add("hide"):page.querySelector(".fldSelectEncoderPathType").classList.remove("hide"),loadPage(page,config,systemInfo)})})})}); \ No newline at end of file diff --git a/dashboard-ui/scripts/episodes.js b/dashboard-ui/scripts/episodes.js index ae0aaa2b27..bd461bca1b 100644 --- a/dashboard-ui/scripts/episodes.js +++ b/dashboard-ui/scripts/episodes.js @@ -1 +1 @@ -define(["events","libraryBrowser","imageLoader","listView","cardBuilder","emby-itemscontainer"],function(events,libraryBrowser,imageLoader,listView,cardBuilder){"use strict";return function(view,params,tabContent){function getPageData(context){var key=getSavedQueryKey(context),pageData=data[key];return pageData||(pageData=data[key]={query:{SortBy:"SeriesSortName,SortName",SortOrder:"Ascending",IncludeItemTypes:"Episode",Recursive:!0,Fields:"PrimaryImageAspectRatio,MediaSourceCount,UserData",IsMissing:!1,IsVirtualUnaired:!1,ImageTypeLimit:1,EnableImageTypes:"Primary,Backdrop,Thumb",StartIndex:0,Limit:pageSize},view:libraryBrowser.getSavedView(key)||"Poster"},pageData.query.ParentId=params.topParentId,libraryBrowser.loadSavedQueryValues(key,pageData.query)),pageData}function getQuery(context){return getPageData(context).query}function getSavedQueryKey(context){return context.savedQueryKey||(context.savedQueryKey=libraryBrowser.getSavedQueryKey("episodes")),context.savedQueryKey}function onViewStyleChange(){var viewStyle=self.getCurrentViewStyle(),itemsContainer=tabContent.querySelector(".itemsContainer");"List"==viewStyle?(itemsContainer.classList.add("vertical-list"),itemsContainer.classList.remove("vertical-wrap")):(itemsContainer.classList.remove("vertical-list"),itemsContainer.classList.add("vertical-wrap")),itemsContainer.innerHTML=""}function reloadItems(page){Dashboard.showLoadingMsg();var query=getQuery(page);ApiClient.getItems(Dashboard.getCurrentUserId(),query).then(function(result){function onNextPageClick(){query.StartIndex+=query.Limit,reloadItems(tabContent)}function onPreviousPageClick(){query.StartIndex-=query.Limit,reloadItems(tabContent)}window.scrollTo(0,0);var html,pagingHtml=LibraryBrowser.getQueryPagingHtml({startIndex:query.StartIndex,limit:query.Limit,totalRecordCount:result.TotalRecordCount,showLimit:!1,updatePageSizeSetting:!1,addLayoutButton:!1,sortButton:!1,filterButton:!1}),viewStyle=self.getCurrentViewStyle(),itemsContainer=tabContent.querySelector(".itemsContainer");html="List"==viewStyle?listView.getListViewHtml({items:result.Items,sortBy:query.SortBy,showParentTitle:!0}):"PosterCard"==viewStyle?cardBuilder.getCardsHtml({items:result.Items,shape:"backdrop",showTitle:!0,showParentTitle:!0,scalable:!0,cardLayout:!0}):cardBuilder.getCardsHtml({items:result.Items,shape:"backdrop",showTitle:!0,showParentTitle:!0,overlayText:!0,scalable:!0,overlayPlayButton:!0});var i,length,elems=tabContent.querySelectorAll(".paging");for(i=0,length=elems.length;i',html+='

'+group.name+"

";var allowBottomPadding=!0;enableScrollX()?(allowBottomPadding=!1,html+='
'):html+='
';var supportsImageAnalysis=appHost.supports("imageanalysis");html+=cardBuilder.getCardsHtml({items:group.items,showLocationTypeIndicator:!1,shape:getThumbShape(),showTitle:!0,preferThumb:!0,lazy:!0,showDetailsMenu:!0,centerText:!supportsImageAnalysis,context:"home-upcoming",overlayMoreButton:!supportsImageAnalysis,showParentTitle:!0,allowBottomPadding:allowBottomPadding,cardLayout:supportsImageAnalysis,vibrant:supportsImageAnalysis}),html+="
",html+="
"}elem.innerHTML=html,imageLoader.lazyChildren(elem)}return function(view,params,tabContent){var upcomingPromise,self=this;self.preRender=function(){upcomingPromise=getUpcomingPromise()},self.renderTab=function(){Dashboard.showLoadingMsg(),loadUpcoming(view,upcomingPromise)}}}); \ No newline at end of file +define(["datetime","cardBuilder","apphost","imageLoader","loading","emby-itemscontainer","scrollStyles"],function(datetime,cardBuilder,appHost,imageLoader,loading){"use strict";function getUpcomingPromise(){loading.show();var query={Limit:40,Fields:"AirTime,UserData",UserId:Dashboard.getCurrentUserId(),ImageTypeLimit:1,EnableImageTypes:"Primary,Backdrop,Banner,Thumb",EnableTotalRecordCount:!1};return ApiClient.getJSON(ApiClient.getUrl("Shows/Upcoming",query))}function loadUpcoming(page,promise){promise.then(function(result){var items=result.Items;items.length?page.querySelector(".noItemsMessage").style.display="none":page.querySelector(".noItemsMessage").style.display="block";var elem=page.querySelector("#upcomingItems");renderUpcoming(elem,items),loading.hide()})}function enableScrollX(){return browserInfo.mobile}function getThumbShape(){return enableScrollX()?"overflowBackdrop":"backdrop"}function renderUpcoming(elem,items){var i,length,groups=[],currentGroupName="",currentGroup=[];for(i=0,length=items.length;i',html+='

'+group.name+"

";var allowBottomPadding=!0;enableScrollX()?(allowBottomPadding=!1,html+='
'):html+='
';var supportsImageAnalysis=appHost.supports("imageanalysis");html+=cardBuilder.getCardsHtml({items:group.items,showLocationTypeIndicator:!1,shape:getThumbShape(),showTitle:!0,preferThumb:!0,lazy:!0,showDetailsMenu:!0,centerText:!supportsImageAnalysis,context:"home-upcoming",overlayMoreButton:!supportsImageAnalysis,showParentTitle:!0,allowBottomPadding:allowBottomPadding,cardLayout:supportsImageAnalysis,vibrant:supportsImageAnalysis}),html+="
",html+="
"}elem.innerHTML=html,imageLoader.lazyChildren(elem)}return function(view,params,tabContent){var upcomingPromise,self=this;self.preRender=function(){upcomingPromise=getUpcomingPromise()},self.renderTab=function(){loading.show(),loadUpcoming(view,upcomingPromise)}}}); \ No newline at end of file diff --git a/dashboard-ui/scripts/indexpage.js b/dashboard-ui/scripts/indexpage.js index 526de89048..0c1e490007 100644 --- a/dashboard-ui/scripts/indexpage.js +++ b/dashboard-ui/scripts/indexpage.js @@ -1 +1 @@ -define(["libraryBrowser","libraryMenu","playbackManager","mainTabsManager","emby-button"],function(libraryBrowser,libraryMenu,playbackManager,mainTabsManager){"use strict";function getDefaultSection(index){switch(index){case 0:return defaultFirstSection;case 1:return"resume";case 2:return"resumeaudio";case 3:return"nextup";case 4:return"latestmedia";case 5:return"latesttvrecordings";default:return""}}function loadSection(page,user,userSettings,index){var userId=user.Id,section=userSettings.get("homesection"+index)||getDefaultSection(index);"folders"==section&&(section=defaultFirstSection);var elem=page.querySelector(".section"+index);return"latestmedia"==section?Sections.loadRecentlyAdded(elem,user):"librarytiles"==section?Sections.loadLibraryTiles(elem,user,"backdrop",index):"smalllibrarytiles"==section?Sections.loadLibraryTiles(elem,user,"smallBackdrop",index):"smalllibrarytiles-automobile"==section?Sections.loadLibraryTiles(elem,user,"smallBackdrop",index):"librarytiles-automobile"==section?Sections.loadLibraryTiles(elem,user,"backdrop",index):"librarybuttons"==section?Sections.loadlibraryButtons(elem,userId,index):"resume"==section?Sections.loadResumeVideo(elem,userId):"resumeaudio"==section?Sections.loadResumeAudio(elem,userId):"nextup"==section?Sections.loadNextUp(elem,userId):"latesttvrecordings"==section?Sections.loadLatestLiveTvRecordings(elem,userId):"latestchannelmedia"==section?Sections.loadLatestChannelMedia(elem,userId):(elem.innerHTML="",Promise.resolve())}function loadSections(page,user,userSettings){var i,length,sectionCount=6,elem=page.querySelector(".sections"),html="";for(i=0,length=sectionCount;i';elem.innerHTML=html;var promises=[];for(i=0,length=sectionCount;i';elem.innerHTML=html;var promises=[];for(i=0,length=sectionCount;i"}function renderSeriesTimerSchedule(page,seriesTimerId){ApiClient.getLiveTvTimers({UserId:ApiClient.getCurrentUserId(),ImageTypeLimit:1,EnableImageTypes:"Primary,Backdrop,Thumb",SortBy:"StartDate",EnableTotalRecordCount:!1,EnableUserData:!1,SeriesTimerId:seriesTimerId,Fields:"ChannelInfo"}).then(function(result){result.Items.length&&result.Items[0].SeriesTimerId!=seriesTimerId&&(result.Items=[]);var html=getProgramScheduleHtml(result.Items),scheduleTab=page.querySelector(".seriesTimerSchedule");scheduleTab.innerHTML=html,imageLoader.lazyChildren(scheduleTab)})}function renderSeriesTimerEditor(page,item,user){if("SeriesTimer"===item.Type){if(!user.Policy.EnableLiveTvManagement)return page.querySelector(".seriesTimerScheduleSection").classList.add("hide"),void page.querySelector(".btnCancelSeriesTimer").classList.add("hide");require(["seriesRecordingEditor"],function(seriesRecordingEditor){seriesRecordingEditor.embed(item,ApiClient.serverId(),{context:page.querySelector(".seriesRecordingEditor")})}),page.querySelector(".seriesTimerScheduleSection").classList.remove("hide"),page.querySelector(".btnCancelSeriesTimer").classList.remove("hide"),renderSeriesTimerSchedule(page,item.Id)}}function reloadPlayButtons(page,item){var canPlay=!1;if("Program"==item.Type){var now=new Date;now>=datetime.parseISO8601Date(item.StartDate,!0)&&now0)}else hideAll(page,"btnPlay"),hideAll(page,"btnResume"),hideAll(page,"btnInstantMix"),hideAll(page,"btnShuffle");return canPlay}function reloadFromItem(page,params,item){currentItem=item;var context=params.context;LibraryBrowser.renderName(item,page.querySelector(".itemName"),!1,context),LibraryBrowser.renderParentName(item,page.querySelector(".parentName"),context),libraryMenu.setTitle(""),Dashboard.getCurrentUser().then(function(user){window.scrollTo(0,0),renderSeriesTimerEditor(page,item,user),renderImage(page,item,user),renderLogo(page,item,ApiClient),setInitialCollapsibleState(page,item,context,user),renderDetails(page,item,context),dom.getWindowSize().innerWidth>=800?backdrop.setBackdrops([item]):backdrop.clear(),LibraryBrowser.renderDetailPageBackdrop(page,item,imageLoader),libraryMenu.setTransparentMenu(!0);var canPlay=reloadPlayButtons(page,item),hasAnyButton=canPlay;item.LocalTrailerCount||item.RemoteTrailers&&item.RemoteTrailers.length?(hideAll(page,"btnPlayTrailer",!0),hasAnyButton=!0):hideAll(page,"btnPlayTrailer"),item.CanDelete&&!item.IsFolder?(hideAll(page,"btnDeleteItem",!0),hasAnyButton=!0):hideAll(page,"btnDeleteItem"),renderSyncLocalContainer(page,params,user,item),hasAnyButton||"Program"!==item.Type?hideAll(page,"mainDetailButtons",!0):hideAll(page,"mainDetailButtons"),showRecordingFields(page,item,user);var groupedVersions=(item.MediaSources||[]).filter(function(g){return"Grouping"==g.Type});user.Policy.IsAdministrator&&groupedVersions.length?page.querySelector(".splitVersionContainer").classList.remove("hide"):page.querySelector(".splitVersionContainer").classList.add("hide"),itemContextMenu.getCommands(getContextMenuOptions(item)).then(function(commands){commands.length?hideAll(page,"btnMoreCommands",!0):hideAll(page,"btnMoreCommands")});var itemBirthday=page.querySelector("#itemBirthday");if("Person"==item.Type&&item.PremiereDate)try{var birthday=datetime.parseISO8601Date(item.PremiereDate,!0).toDateString();itemBirthday.classList.remove("hide"),itemBirthday.innerHTML=globalize.translate("BirthDateValue").replace("{0}",birthday)}catch(err){itemBirthday.classList.add("hide")}else itemBirthday.classList.add("hide");var itemDeathDate=page.querySelector("#itemDeathDate");if("Person"==item.Type&&item.EndDate)try{var deathday=datetime.parseISO8601Date(item.EndDate,!0).toDateString();itemDeathDate.classList.remove("hide"),itemDeathDate.innerHTML=globalize.translate("DeathDateValue").replace("{0}",deathday)}catch(err){itemDeathDate.classList.add("hide")}var itemBirthLocation=page.querySelector("#itemBirthLocation");if("Person"==item.Type&&item.ProductionLocations&&item.ProductionLocations.length){var gmap=''+item.ProductionLocations[0]+"";itemBirthLocation.classList.remove("hide"),itemBirthLocation.innerHTML=globalize.translate("BirthPlaceValue").replace("{0}",gmap)}else itemBirthLocation.classList.add("hide")}),setPeopleHeader(page,item),page.dispatchEvent(new CustomEvent("displayingitem",{detail:{item:item,context:context},bubbles:!0})),Dashboard.hideLoadingMsg()}function logoImageUrl(item,apiClient,options){return options=options||{},options.type="Logo",item.ImageTags&&item.ImageTags.Logo?(options.tag=item.ImageTags.Logo,apiClient.getScaledImageUrl(item.Id,options)):item.ParentLogoImageTag?(options.tag=item.ParentLogoImageTag,apiClient.getScaledImageUrl(item.ParentLogoItemId,options)):null}function renderLogo(page,item,apiClient){var url=logoImageUrl(item,apiClient,{maxWidth:300}),detailLogo=page.querySelector(".detailLogo");url?(detailLogo.classList.remove("hide"),detailLogo.classList.add("lazy"),detailLogo.setAttribute("data-src",url),imageLoader.lazyImage(detailLogo)):detailLogo.classList.add("hide")}function showRecordingFields(page,item,user){if(!currentRecordingFields){var recordingFieldsElement=page.querySelector(".recordingFields");"Program"==item.Type&&user.Policy.EnableLiveTvManagement?require(["recordingFields"],function(recordingFields){currentRecordingFields=new recordingFields({parent:recordingFieldsElement,programId:item.Id,serverId:item.ServerId}),recordingFieldsElement.classList.remove("hide")}):(recordingFieldsElement.classList.add("hide"),recordingFieldsElement.innerHTML="")}}function renderLinks(linksElem,item){var links=[];if(item.HomePageUrl&&links.push(''+globalize.translate("ButtonWebsite")+""),item.ExternalUrls)for(var i=0,length=item.ExternalUrls.length;i'+url.Name+"")}if(links.length){var html=links.join('');linksElem.innerHTML=html,linksElem.classList.remove("hide")}else linksElem.classList.add("hide")}function renderImage(page,item,user){var container=page.querySelector(".detailImageContainer");LibraryBrowser.renderDetailImage(container,item,user.Policy.IsAdministrator&&"Photo"!=item.MediaType,null,imageLoader,indicators)}function refreshDetailImageUserData(elem,item){var detailImageProgressContainer=elem.querySelector(".detailImageProgressContainer");detailImageProgressContainer.innerHTML=indicators.getProgressBarHtml(item)}function refreshImage(page,item,user){refreshDetailImageUserData(page.querySelector(".detailImageContainer"),item)}function setPeopleHeader(page,item){"Audio"==item.MediaType||"MusicAlbum"==item.Type||"Book"==item.MediaType||"Photo"==item.MediaType?page.querySelector("#peopleHeader").innerHTML=globalize.translate("HeaderPeople"):page.querySelector("#peopleHeader").innerHTML=globalize.translate("HeaderCastAndCrew")}function renderNextUp(page,item,user){var section=page.querySelector(".nextUpSection");return"Series"!=item.Type?void section.classList.add("hide"):void ApiClient.getNextUpEpisodes({SeriesId:item.Id,UserId:user.Id}).then(function(result){result.Items.length?section.classList.remove("hide"):section.classList.add("hide");var html=cardBuilder.getCardsHtml({items:result.Items,shape:getThumbShape(!1),showTitle:!0,displayAsSpecial:"Season"==item.Type&&item.IndexNumber,overlayText:!0,lazy:!0,overlayPlayButton:!0}),itemsContainer=section.querySelector(".nextUpItems");itemsContainer.innerHTML=html,imageLoader.lazyChildren(itemsContainer)})}function setInitialCollapsibleState(page,item,context,user){page.querySelector(".collectionItems").innerHTML="","TvChannel"==item.Type?(page.querySelector("#childrenCollapsible").classList.remove("hide"),renderChannelGuide(page,item,user)):"Playlist"==item.Type?(page.querySelector("#childrenCollapsible").classList.remove("hide"),renderPlaylistItems(page,item,user)):"Studio"==item.Type||"Person"==item.Type||"Genre"==item.Type||"MusicGenre"==item.Type||"GameGenre"==item.Type||"MusicArtist"==item.Type?(page.querySelector("#childrenCollapsible").classList.remove("hide"),renderItemsByName(page,item,user)):item.IsFolder||"Episode"==item.Type&&item.SeasonId&&item.SeriesId?("BoxSet"==item.Type&&page.querySelector("#childrenCollapsible").classList.add("hide"),renderChildren(page,item)):page.querySelector("#childrenCollapsible").classList.add("hide"),"Series"==item.Type&&renderSeriesSchedule(page,item,user),"Series"==item.Type?renderNextUp(page,item,user):page.querySelector(".nextUpSection").classList.add("hide"),item.MediaSources&&item.MediaSources.length&&renderMediaSources(page,user,item),renderScenes(page,item),item.SpecialFeatureCount&&0!=item.SpecialFeatureCount&&"Series"!=item.Type?(page.querySelector("#specialsCollapsible").classList.remove("hide"),renderSpecials(page,item,user,6)):page.querySelector("#specialsCollapsible").classList.add("hide"),item.People&&item.People.length?(page.querySelector("#castCollapsible").classList.remove("hide"),renderCast(page,item,context,enableScrollX()?null:12)):page.querySelector("#castCollapsible").classList.add("hide"),item.PartCount&&item.PartCount>1?(page.querySelector("#additionalPartsCollapsible").classList.remove("hide"),renderAdditionalParts(page,item,user)):page.querySelector("#additionalPartsCollapsible").classList.add("hide"),page.querySelector("#themeSongsCollapsible").classList.add("hide"),page.querySelector("#themeVideosCollapsible").classList.add("hide"),"MusicAlbum"==item.Type?renderMusicVideos(page,item,user):page.querySelector("#musicVideosCollapsible").classList.add("hide"),renderThemeMedia(page,item,user),enableScrollX()?renderCriticReviews(page,item):renderCriticReviews(page,item,1)}function renderOverview(elems,item){for(var i=0,length=elems.length;i'+text+"":'
'+text+"
"}).join("");return view.querySelector(".mediaInfoIcons").innerHTML=html,html}function renderPhotoInfo(page,item){var html="",attributes=[];if(item.CameraMake&&attributes.push(createAttribute(globalize.translate("MediaInfoCameraMake"),item.CameraMake)),item.CameraModel&&attributes.push(createAttribute(globalize.translate("MediaInfoCameraModel"),item.CameraModel)),item.Altitude&&attributes.push(createAttribute(globalize.translate("MediaInfoAltitude"),item.Altitude.toFixed(1))),item.Aperture&&attributes.push(createAttribute(globalize.translate("MediaInfoAperture"),"F"+item.Aperture.toFixed(1))),item.ExposureTime){var val=1/item.ExposureTime;attributes.push(createAttribute(globalize.translate("MediaInfoExposureTime"),"1/"+val+" s"))}item.FocalLength&&attributes.push(createAttribute(globalize.translate("MediaInfoFocalLength"),item.FocalLength.toFixed(1)+" mm")),item.ImageOrientation,item.IsoSpeedRating&&attributes.push(createAttribute(globalize.translate("MediaInfoIsoSpeedRating"),item.IsoSpeedRating)),item.Latitude&&attributes.push(createAttribute(globalize.translate("MediaInfoLatitude"),item.Latitude.toFixed(1))),item.Longitude&&attributes.push(createAttribute(globalize.translate("MediaInfoLongitude"),item.Longitude.toFixed(1))),item.ShutterSpeed&&attributes.push(createAttribute(globalize.translate("MediaInfoShutterSpeed"),item.ShutterSpeed)),item.Software&&attributes.push(createAttribute(globalize.translate("MediaInfoSoftware"),item.Software)),html+=attributes.join("
"),page.querySelector(".photoInfoContent").innerHTML=html}function getArtistLinksHtml(artists,context){for(var html=[],i=0,length=artists.length;i'+artist.Name+"")}return html=html.join(" / "),1==artists.length?globalize.translate("ValueArtist",html):artists.length>1?globalize.translate("ValueArtists",html):html}function enableScrollX(){return browserInfo.mobile&&screen.availWidth<=1e3}function getPortraitShape(scrollX){return null==scrollX&&(scrollX=enableScrollX()),scrollX?"overflowPortrait":"portrait"}function getSquareShape(scrollX){return null==scrollX&&(scrollX=enableScrollX()),scrollX?"overflowSquare":"square"}function getThumbShape(scrollX){return null==scrollX&&(scrollX=enableScrollX()),scrollX?"overflowBackdrop":"backdrop"}function renderMoreFromItems(page,item){var moreFromSection=page.querySelector("#moreFromSection");if(moreFromSection)return"MusicAlbum"==item.Type&&item.AlbumArtists&&item.AlbumArtists.length?void ApiClient.getItems(Dashboard.getCurrentUserId(),{IncludeItemTypes:"MusicAlbum",ArtistIds:item.AlbumArtists[0].Id,Recursive:!0,ExcludeItemIds:item.Id}).then(function(result){if(!result.Items.length)return void moreFromSection.classList.add("hide");moreFromSection.classList.remove("hide"),moreFromSection.querySelector(".moreFromHeader").innerHTML=globalize.translate("MoreFromValue",item.AlbumArtists[0].Name);var html="";html+=enableScrollX()?'
':'
';var shape="MusicAlbum"==item.Type||"MusicArtist"==item.Type?getSquareShape():getPortraitShape(),supportsImageAnalysis=appHost.supports("imageanalysis");html+=cardBuilder.getCardsHtml({items:result.Items,shape:shape,showParentTitle:"MusicAlbum"==item.Type,centerText:!supportsImageAnalysis,showTitle:"MusicAlbum"==item.Type||"Game"==item.Type||"MusicArtist"==item.Type,coverImage:"MusicAlbum"==item.Type||"MusicArtist"==item.Type,overlayPlayButton:!0,cardLayout:supportsImageAnalysis,vibrant:supportsImageAnalysis}),html+="
";var similarContent=page.querySelector("#moreFromItems");similarContent.innerHTML=html,imageLoader.lazyChildren(similarContent)}):void moreFromSection.classList.add("hide")}function renderSimilarItems(page,item,context){var similarCollapsible=page.querySelector("#similarCollapsible");if(similarCollapsible){if("Movie"!=item.Type&&"Trailer"!=item.Type&&"Series"!=item.Type&&"Program"!=item.Type&&"Recording"!=item.Type&&"Game"!=item.Type&&"MusicAlbum"!=item.Type&&"MusicArtist"!=item.Type&&"ChannelVideoItem"!=item.Type)return void similarCollapsible.classList.add("hide");similarCollapsible.classList.remove("hide");var shape="MusicAlbum"==item.Type||"MusicArtist"==item.Type?getSquareShape():getPortraitShape(),options={userId:Dashboard.getCurrentUserId(),limit:"MusicAlbum"==item.Type||"MusicArtist"==item.Type?8:10,fields:"PrimaryImageAspectRatio,UserData,CanDelete"};"MusicAlbum"==item.Type&&item.AlbumArtists&&item.AlbumArtists.length&&(options.ExcludeArtistIds=item.AlbumArtists[0].Id),enableScrollX()&&(options.limit=12),ApiClient.getSimilarItems(item.Id,options).then(function(result){if(!result.Items.length)return void similarCollapsible.classList.add("hide");similarCollapsible.classList.remove("hide");var html="";html+=enableScrollX()?'
':'
';var supportsImageAnalysis=appHost.supports("imageanalysis"),cardLayout=supportsImageAnalysis&&("MusicAlbum"==item.Type||"Game"==item.Type||"MusicArtist"==item.Type);html+=cardBuilder.getCardsHtml({items:result.Items,shape:shape,showParentTitle:"MusicAlbum"==item.Type,centerText:!cardLayout,showTitle:"MusicAlbum"==item.Type||"Game"==item.Type||"MusicArtist"==item.Type,context:context,lazy:!0,showDetailsMenu:!0,coverImage:"MusicAlbum"==item.Type||"MusicArtist"==item.Type,overlayPlayButton:!0,cardLayout:cardLayout,vibrant:cardLayout&&supportsImageAnalysis}),html+="
";var similarContent=similarCollapsible.querySelector(".similarContent");similarContent.innerHTML=html,imageLoader.lazyChildren(similarContent)})}}function renderSeriesAirTime(page,item,isStatic){var seriesAirTime=page.querySelector("#seriesAirTime");if("Series"!=item.Type)return void seriesAirTime.classList.add("hide");var html="";if(item.AirDays&&item.AirDays.length&&(html+=7==item.AirDays.length?"daily":item.AirDays.map(function(a){return a+"s"}).join(",")),item.AirTime&&(html+=" at "+item.AirTime),item.Studios.length)if(isStatic)html+=" on "+item.Studios[0].Name;else{var context=inferContext(item),href=LibraryBrowser.getHref(item.Studios[0],context);html+=' on '+item.Studios[0].Name+""}html?(html=("Ended"==item.Status?"Aired ":"Airs ")+html,seriesAirTime.innerHTML=html,seriesAirTime.classList.remove("hide")):seriesAirTime.classList.add("hide")}function renderTags(page,item){var itemTags=page.querySelector(".itemTags");if(item.Tags&&item.Tags.length){for(var html="",i=0,length=item.Tags.length;i'+item.Tags[i]+"
";itemTags.innerHTML=html,itemTags.classList.remove("hide")}else itemTags.classList.add("hide")}function getEpisodesFunction(seriesId,query){return query=Object.assign({},query),function(index,limit,fields){return query.StartIndex=index,query.Limit=limit,query.Fields=fields,ApiClient.getEpisodes(seriesId,query)}}function getAlbumSongsFunction(query){return query=Object.assign({},query),function(index,limit,fields){return query.StartIndex=index,query.Limit=limit,query.Fields=fields,ApiClient.getItems(Dashboard.getCurrentUserId(),query)}}function renderChildren(page,item){_childrenItemsFunction=null;var fields="ItemCounts,PrimaryImageAspectRatio,BasicSyncInfo,CanDelete",query={ParentId:item.Id,Fields:fields};"BoxSet"!==item.Type&&(query.SortBy="SortName");var promise,userId=Dashboard.getCurrentUserId();"Series"==item.Type?promise=ApiClient.getSeasons(item.Id,{userId:userId,Fields:fields}):"Season"==item.Type?(promise=ApiClient.getEpisodes(item.SeriesId,{seasonId:item.Id,userId:userId,Fields:fields}),_childrenItemsFunction=getEpisodesFunction(item.SeriesId,{seasonId:item.Id,userId:userId,Fields:fields})):"Episode"==item.Type&&item.SeriesId&&item.SeasonId?(promise=ApiClient.getEpisodes(item.SeriesId,{seasonId:item.SeasonId,userId:userId,Fields:fields}),_childrenItemsFunction=getEpisodesFunction(item.SeriesId,{seasonId:item.SeasonId,userId:userId,Fields:fields})):"MusicAlbum"==item.Type&&(_childrenItemsFunction=getAlbumSongsFunction(query)),promise=promise||ApiClient.getItems(Dashboard.getCurrentUserId(),query),promise.then(function(result){var html="",scrollX=!1,isList=!1,scrollClass="hiddenScrollX",childrenItemsContainer=page.querySelector(".childrenItemsContainer");if("MusicAlbum"==item.Type)html=listView.getListViewHtml({items:result.Items,smallIcon:!0,showIndex:!0,index:"disc",showIndexNumber:!0,playFromHere:!0,action:"playallfromhere",image:!1,artist:"auto",containerAlbumArtist:item.AlbumArtist,addToListButton:!0}),isList=!0;else if("Series"==item.Type)scrollX=enableScrollX(),html=cardBuilder.getCardsHtml({items:result.Items,shape:getPortraitShape(),showTitle:!0,centerText:!0,lazy:!0,overlayPlayButton:!0,allowBottomPadding:!scrollX});else if("Season"==item.Type||"Episode"==item.Type){if("Episode"===item.Type&&childrenItemsContainer.classList.add("darkScroller"),scrollX="Episode"==item.Type,browser.touch||(scrollClass="smoothScrollX"),result.Items.length<2&&"Episode"===item.Type)return;html=cardBuilder.getCardsHtml({items:result.Items,shape:getThumbShape(scrollX),showTitle:!0,displayAsSpecial:"Season"==item.Type&&item.IndexNumber,playFromHere:!0,overlayText:!0,lazy:!0,showDetailsMenu:!0,overlayPlayButton:!0,allowBottomPadding:!scrollX,includeParentInfoInTitle:!1})}else"GameSystem"==item.Type&&(html=cardBuilder.getCardsHtml({items:result.Items,shape:"auto",showTitle:!0,centerText:!0,lazy:!0,showDetailsMenu:!0}));if("BoxSet"!==item.Type&&page.querySelector("#childrenCollapsible").classList.remove("hide"),scrollX?(childrenItemsContainer.classList.add(scrollClass),childrenItemsContainer.classList.remove("vertical-wrap"),childrenItemsContainer.classList.remove("vertical-list")):(childrenItemsContainer.classList.remove("hiddenScrollX"),childrenItemsContainer.classList.remove("smoothScrollX"),isList?(childrenItemsContainer.classList.add("vertical-list"),childrenItemsContainer.classList.remove("vertical-wrap")):(childrenItemsContainer.classList.add("vertical-wrap"),childrenItemsContainer.classList.remove("vertical-list"))),childrenItemsContainer.innerHTML=html,imageLoader.lazyChildren(childrenItemsContainer),"BoxSet"==item.Type){var collectionItemTypes=[{name:globalize.translate("HeaderVideos"),mediaType:"Video"},{name:globalize.translate("HeaderSeries"),type:"Series"},{name:globalize.translate("HeaderAlbums"),type:"MusicAlbum"},{name:globalize.translate("HeaderGames"),type:"Game"},{name:globalize.translate("HeaderBooks"),type:"Book"}];renderCollectionItems(page,item,collectionItemTypes,result.Items)}else if("Episode"===item.Type){var card=childrenItemsContainer.querySelector('.card[data-id="'+item.Id+'"]');card&&scrollHelper.toStart(childrenItemsContainer,card.previousSibling||card,!0)}}),"Season"==item.Type?page.querySelector("#childrenTitle").innerHTML=globalize.translate("HeaderEpisodes"):"Episode"==item.Type?page.querySelector("#childrenTitle").innerHTML=globalize.translate("MoreFromValue",item.SeasonName):"Series"==item.Type?page.querySelector("#childrenTitle").innerHTML=globalize.translate("HeaderSeasons"):"MusicAlbum"==item.Type?page.querySelector("#childrenTitle").innerHTML=globalize.translate("HeaderTracks"):"GameSystem"==item.Type?page.querySelector("#childrenTitle").innerHTML=globalize.translate("HeaderGames"):page.querySelector("#childrenTitle").innerHTML=globalize.translate("HeaderItems"),"MusicAlbum"==item.Type?page.querySelector(".childrenSectionHeader",page).classList.add("hide"):page.querySelector(".childrenSectionHeader",page).classList.remove("hide")}function renderItemsByName(page,item,user){require("scripts/itembynamedetailpage".split(","),function(){window.ItemsByName.renderItems(page,item)})}function renderPlaylistItems(page,item,user){require("scripts/playlistedit".split(","),function(){PlaylistViewer.render(page,item)})}function renderChannelGuide(page,item,user){require("scripts/livetvchannel,scripts/livetvcomponents,livetvcss".split(","),function(liveTvChannelPage){liveTvChannelPage.renderPrograms(page,item.Id)})}function renderSeriesSchedule(page,item,user){}function inferContext(item){return"Movie"==item.Type||"BoxSet"==item.Type?"movies":"Series"==item.Type||"Season"==item.Type||"Episode"==item.Type?"tvshows":"Game"==item.Type||"GameSystem"==item.Type?"games":"Game"==item.Type||"GameSystem"==item.Type?"games":"MusicArtist"==item.Type||"MusicAlbum"==item.Type?"music":null}function renderStudios(elem,item,isStatic){var context=inferContext(item);if(item.Studios&&item.Studios.length&&"Series"!=item.Type,1)elem.classList.add("hide");else{for(var html="",i=0,length=item.Studios.length;i0&&(html+="  /  "),isStatic)html+=item.Studios[i].Name;else{item.Studios[i].Type="Studio";var href=LibraryBrowser.getHref(item.Studios[i],context);html+=''+item.Studios[i].Name+""}var translationKey=item.Studios.length>1?"ValueStudios":"ValueStudio";html=globalize.translate(translationKey,html),elem.innerHTML=html,elem.classList.remove("hide")}}function renderGenres(elem,item,limit,isStatic){for(var context=inferContext(item),html="",genres=item.Genres||[],i=0,length=genres.length;i=limit);i++){i>0&&(html+='');var param="Audio"==item.Type||"MusicArtist"==item.Type||"MusicAlbum"==item.Type?"musicgenre":"genre";if("Game"==item.MediaType&&(param="gamegenre"),isStatic)html+=genres[i];else{var type;switch(context){case"tvshows":type="Series";break;case"games":type="Game";break;case"music":type="MusicAlbum";break;default:type="Movie"}var url="secondaryitems.html?type="+type+"&"+param+"="+ApiClient.encodeName(genres[i]);html+=''+genres[i]+""}}elem.innerHTML=html}function renderAwardSummary(elem,item){item.AwardSummary?(elem.classList.remove("hide"),elem.innerHTML=globalize.translate("ValueAwards",item.AwardSummary)):elem.classList.add("hide")}function filterItemsByCollectionItemType(items,typeInfo){return items.filter(function(item){return typeInfo.mediaType?item.MediaType==typeInfo.mediaType:item.Type==typeInfo.type})}function renderCollectionItems(page,parentItem,types,items){page.querySelector(".collectionItems").innerHTML="";var i,length;for(i=0,length=types.length;i0}).length});otherTypeItems.length&&renderCollectionItemType(page,parentItem,otherType,otherTypeItems),items.length||renderCollectionItemType(page,parentItem,{name:globalize.translate("HeaderItems")},items)}function renderCollectionItemType(page,parentItem,type,items){var html="";html+='
',html+='
',html+="

",html+=""+type.name+"",html+="

",html+='',html+="
",html+='
';var shape="MusicAlbum"==type.type?getSquareShape(!1):getPortraitShape(!1);html+=cardBuilder.getCardsHtml({ -items:items,shape:shape,showTitle:!0,centerText:!0,lazy:!0,showDetailsMenu:!0,overlayMoreButton:!0,showAddToCollection:!1,showRemoveFromCollection:!0,collectionId:parentItem.Id}),html+="
",html+="
";var collectionItems=page.querySelector(".collectionItems");collectionItems.insertAdjacentHTML("beforeend",html),imageLoader.lazyChildren(collectionItems),collectionItems.querySelector(".btnAddToCollection").addEventListener("click",function(){require(["alert"],function(alert){alert({text:globalize.translate("AddItemToCollectionHelp"),html:globalize.translate("AddItemToCollectionHelp")+'

'+globalize.translate("ButtonLearnMore")+""})})})}function renderUserDataIcons(page,item){for(var userDataIcons=page.querySelectorAll(".userDataIcons"),i=0,length=userDataIcons.length;i',html+='
',null!=review.Score||null!=review.Likes&&(html+=review.Likes?"
":"
"),html+='
',html+='

'+review.Caption+"

";var vals=[];if(review.ReviewerName&&vals.push(review.ReviewerName),review.Publisher&&vals.push(review.Publisher),html+='
'+vals.join(", ")+".",review.Date)try{var date=datetime.toLocaleDateString(datetime.parseISO8601Date(review.Date,!0));html+=''+date+""}catch(error){}html+="
",review.Url&&(html+='"),html+="
",html+="
",html+="
"}limit&&result.TotalRecordCount>limit&&(html+='

");var criticReviewsContent=page.querySelector("#criticReviewsContent");criticReviewsContent.innerHTML=html,enableScrollX()?criticReviewsContent.classList.add("hiddenScrollX"):criticReviewsContent.classList.remove("hiddenScrollX")}function renderThemeMedia(page,item){"SeriesTimer"!==item.Type&&"Timer"!==item.Type&&"Genre"!==item.Type&&"MusicGenre"!==item.Type&&"GameGenre"!==item.Type&&"Studio"!==item.Type&&"Person"!==item.Type&&ApiClient.getThemeMedia(Dashboard.getCurrentUserId(),item.Id,!0).then(function(result){var themeSongs=result.ThemeSongsResult.OwnerId==item.Id?result.ThemeSongsResult.Items:[],themeVideos=result.ThemeVideosResult.OwnerId==item.Id?result.ThemeVideosResult.Items:[];renderThemeSongs(page,themeSongs),renderThemeVideos(page,themeVideos)})}function renderThemeSongs(page,items){if(items.length){page.querySelector("#themeSongsCollapsible").classList.remove("hide");var html=listView.getListViewHtml({items:items});page.querySelector("#themeSongsContent").innerHTML=html}else page.querySelector("#themeSongsCollapsible").classList.add("hide")}function renderThemeVideos(page,items,user){if(items.length){page.querySelector("#themeVideosCollapsible").classList.remove("hide");var themeVideosContent=page.querySelector("#themeVideosContent");themeVideosContent.innerHTML=getVideosHtml(items,user),imageLoader.lazyChildren(themeVideosContent)}else page.querySelector("#themeVideosCollapsible").classList.add("hide")}function renderMusicVideos(page,item,user){ApiClient.getItems(user.Id,{SortBy:"SortName",SortOrder:"Ascending",IncludeItemTypes:"MusicVideo",Recursive:!0,Fields:"DateCreated,CanDelete",AlbumIds:item.Id}).then(function(result){if(result.Items.length){page.querySelector("#musicVideosCollapsible").classList.remove("hide");var musicVideosContent=page.querySelector(".musicVideosContent");musicVideosContent.innerHTML=getVideosHtml(result.Items,user),imageLoader.lazyChildren(musicVideosContent)}else page.querySelector("#musicVideosCollapsible").classList.add("hide")})}function renderAdditionalParts(page,item,user){ApiClient.getAdditionalVideoParts(user.Id,item.Id).then(function(result){if(result.Items.length){page.querySelector("#additionalPartsCollapsible").classList.remove("hide");var additionalPartsContent=page.querySelector("#additionalPartsContent");additionalPartsContent.innerHTML=getVideosHtml(result.Items,user),imageLoader.lazyChildren(additionalPartsContent)}else page.querySelector("#additionalPartsCollapsible").classList.add("hide")})}function renderScenes(page,item){var chapters=item.Chapters||[];if(chapters.length&&!chapters[0].ImageTag&&(chapters=[]),chapters.length){page.querySelector("#scenesCollapsible").classList.remove("hide");var scenesContent=page.querySelector("#scenesContent");enableScrollX()?scenesContent.classList.add("smoothScrollX"):scenesContent.classList.add("vertical-wrap"),require(["chaptercardbuilder"],function(chaptercardbuilder){chaptercardbuilder.buildChapterCards(item,chapters,{itemsContainer:scenesContent,width:400,backdropShape:getThumbShape(),squareShape:getSquareShape()})})}else page.querySelector("#scenesCollapsible").classList.add("hide")}function renderMediaSources(page,user,item){var html=item.MediaSources.map(function(v){return getMediaSourceHtml(user,item,v)}).join('
');item.MediaSources.length>1&&(html="
"+html);var mediaInfoContent=page.querySelector("#mediaInfoContent");mediaInfoContent.innerHTML=html}function getMediaSourceHtml(user,item,version){var html="";version.Name&&item.MediaSources.length>1&&(html+='
'+version.Name+"

");for(var i=0,length=version.MediaStreams.length;i';var displayType=globalize.translate("MediaInfoStreamType"+stream.Type);html+='

'+displayType+"

";var attributes=[];stream.Language&&"Video"!=stream.Type&&attributes.push(createAttribute(globalize.translate("MediaInfoLanguage"),stream.Language)),stream.Codec&&attributes.push(createAttribute(globalize.translate("MediaInfoCodec"),stream.Codec.toUpperCase())),stream.CodecTag&&attributes.push(createAttribute(globalize.translate("MediaInfoCodecTag"),stream.CodecTag)),null!=stream.IsAVC&&attributes.push(createAttribute("AVC",stream.IsAVC?"Yes":"No")),stream.Profile&&attributes.push(createAttribute(globalize.translate("MediaInfoProfile"),stream.Profile)),stream.Level&&attributes.push(createAttribute(globalize.translate("MediaInfoLevel"),stream.Level)),(stream.Width||stream.Height)&&attributes.push(createAttribute(globalize.translate("MediaInfoResolution"),stream.Width+"x"+stream.Height)),stream.AspectRatio&&"mjpeg"!=stream.Codec&&attributes.push(createAttribute(globalize.translate("MediaInfoAspectRatio"),stream.AspectRatio)),"Video"==stream.Type&&(null!=stream.IsAnamorphic&&attributes.push(createAttribute(globalize.translate("MediaInfoAnamorphic"),stream.IsAnamorphic?"Yes":"No")),attributes.push(createAttribute(globalize.translate("MediaInfoInterlaced"),stream.IsInterlaced?"Yes":"No"))),(stream.AverageFrameRate||stream.RealFrameRate)&&attributes.push(createAttribute(globalize.translate("MediaInfoFramerate"),stream.AverageFrameRate||stream.RealFrameRate)),stream.ChannelLayout&&attributes.push(createAttribute(globalize.translate("MediaInfoLayout"),stream.ChannelLayout)),stream.Channels&&attributes.push(createAttribute(globalize.translate("MediaInfoChannels"),stream.Channels+" ch")),stream.BitRate&&"mjpeg"!=stream.Codec&&attributes.push(createAttribute(globalize.translate("MediaInfoBitrate"),parseInt(stream.BitRate/1e3)+" kbps")),stream.SampleRate&&attributes.push(createAttribute(globalize.translate("MediaInfoSampleRate"),stream.SampleRate+" Hz")),stream.BitDepth&&attributes.push(createAttribute(globalize.translate("MediaInfoBitDepth"),stream.BitDepth+" bit")),stream.PixelFormat&&attributes.push(createAttribute(globalize.translate("MediaInfoPixelFormat"),stream.PixelFormat)),stream.RefFrames&&attributes.push(createAttribute(globalize.translate("MediaInfoRefFrames"),stream.RefFrames)),stream.NalLengthSize&&attributes.push(createAttribute("NAL",stream.NalLengthSize)),"Video"!=stream.Type&&attributes.push(createAttribute(globalize.translate("MediaInfoDefault"),stream.IsDefault?"Yes":"No")),"Subtitle"==stream.Type&&(attributes.push(createAttribute(globalize.translate("MediaInfoForced"),stream.IsForced?"Yes":"No")),attributes.push(createAttribute(globalize.translate("MediaInfoExternal"),stream.IsExternal?"Yes":"No"))),"Video"==stream.Type&&version.Timestamp&&attributes.push(createAttribute(globalize.translate("MediaInfoTimestamp"),version.Timestamp)),stream.DisplayTitle&&attributes.push(createAttribute("Title",stream.DisplayTitle)),html+=attributes.join("
"),html+=""}}if(version.Container&&(html+='
'+globalize.translate("MediaInfoContainer")+''+version.Container+"
"),version.Formats&&version.Formats.length,version.Path&&"Http"!=version.Protocol&&user&&user.Policy.IsAdministrator&&(html+='
'+globalize.translate("MediaInfoPath")+''+version.Path+"
"),version.Size){var size=(version.Size/1048576).toFixed(0);html+='
'+globalize.translate("MediaInfoSize")+''+size+" MB
"}return html}function createAttribute(label,value){return''+label+''+value+""}function getVideosHtml(items,user,limit,moreButtonClass){var html=cardBuilder.getCardsHtml({items:items,shape:"auto",showTitle:!0,action:"play",overlayText:!0,showRuntime:!0});return limit&&items.length>limit&&(html+='

"),html}function renderSpecials(page,item,user,limit){ApiClient.getSpecialFeatures(user.Id,item.Id).then(function(specials){var specialsContent=page.querySelector("#specialsContent");specialsContent.innerHTML=getVideosHtml(specials,user,limit,"moreSpecials"),imageLoader.lazyChildren(specialsContent)})}function renderCast(page,item,context,limit,isStatic){var people=item.People||[],castContent=page.querySelector("#castContent");enableScrollX()?(castContent.classList.add("smoothScrollX"),limit=32):castContent.classList.add("vertical-wrap");var limitExceeded=limit&&people.length>limit;limitExceeded&&(people=people.slice(0),people.length=Math.min(limit,people.length)),require(["peoplecardbuilder"],function(peoplecardbuilder){peoplecardbuilder.buildPeopleCards(people,{itemsContainer:castContent,coverImage:!0,serverId:item.ServerId,width:160,shape:getPortraitShape()})});var morePeopleButton=page.querySelector(".morePeople");morePeopleButton&&(limitExceeded&&!enableScrollX()?morePeopleButton.classList.remove("hide"):morePeopleButton.classList.add("hide"))}function play(startPosition){playbackManager.play({items:[currentItem],startPositionTicks:startPosition})}function splitVersions(page,params){require(["confirm"],function(confirm){confirm("Are you sure you wish to split the media sources into separate items?","Split Media Apart").then(function(){Dashboard.showLoadingMsg(),ApiClient.ajax({type:"DELETE",url:ApiClient.getUrl("Videos/"+params.id+"/AlternateSources")}).then(function(){Dashboard.hideLoadingMsg(),reload(page,params)})})})}function playTrailer(page){playbackManager.playTrailers(currentItem)}function showPlayMenu(item,target){require(["playMenu"],function(playMenu){playMenu.show({item:item,positionTo:target})})}function playCurrentItem(button,mode){var item=currentItem;return"Program"===item.Type?void ApiClient.getLiveTvChannel(item.ChannelId,Dashboard.getCurrentUserId()).then(function(channel){playbackManager.play({items:[channel]})}):void("playmenu"===mode?showPlayMenu(item,button):playbackManager.play({items:[item],startPositionTicks:item.UserData&&"resume"===mode?item.UserData.PlaybackPositionTicks:0}))}function itemDetailPage(){var self=this;self.play=play,self.setInitialCollapsibleState=setInitialCollapsibleState,self.renderDetails=renderDetails,self.renderCriticReviews=renderCriticReviews,self.renderCast=renderCast,self.renderScenes=renderScenes,self.renderMediaSources=renderMediaSources}function onPlayClick(){var mode=this.getAttribute("data-mode");playCurrentItem(this,mode)}function onInstantMixClick(){playbackManager.instantMix(currentItem)}function onShuffleClick(){playbackManager.shuffle(currentItem)}function onDeleteClick(){require(["deleteHelper"],function(deleteHelper){deleteHelper.deleteItem({item:currentItem,navigate:!0})})}function onCancelSeriesTimerClick(){require(["recordingHelper"],function(recordingHelper){recordingHelper.cancelSeriesTimerWithConfirmation(currentItem.Id,currentItem.ServerId).then(function(){Dashboard.navigate("livetv.html")})})}var currentItem,currentRecordingFields,_childrenItemsFunction=null;return window.ItemDetailPage=new itemDetailPage,function(view,params){function onPlayTrailerClick(){playTrailer(view)}function onMoreCommandsClick(){var button=this;itemContextMenu.show(getContextMenuOptions(currentItem,button)).then(function(result){result.deleted?Emby.Page.goHome():result.updated&&reload(view,params)})}function editImages(){return new Promise(function(resolve,reject){require(["imageEditor"],function(imageEditor){imageEditor.show({itemId:currentItem.Id,serverId:currentItem.ServerId}).then(resolve,reject)})})}function onWebSocketMessage(e,data){var msg=data;if("UserDataChanged"===msg.MessageType&¤tItem&&msg.Data.UserId==Dashboard.getCurrentUserId()){var key=currentItem.UserData.Key,userData=msg.Data.UserDataList.filter(function(u){return u.Key==key})[0];userData&&(currentItem.UserData=userData,reloadPlayButtons(view,currentItem),Dashboard.getCurrentUser().then(function(user){refreshImage(view,currentItem,user)}))}}var i,length,elems=view.querySelectorAll(".btnPlay");for(i=0,length=elems.length;i"}function renderSeriesTimerSchedule(page,seriesTimerId){ApiClient.getLiveTvTimers({UserId:ApiClient.getCurrentUserId(),ImageTypeLimit:1,EnableImageTypes:"Primary,Backdrop,Thumb",SortBy:"StartDate",EnableTotalRecordCount:!1,EnableUserData:!1,SeriesTimerId:seriesTimerId,Fields:"ChannelInfo"}).then(function(result){result.Items.length&&result.Items[0].SeriesTimerId!=seriesTimerId&&(result.Items=[]);var html=getProgramScheduleHtml(result.Items),scheduleTab=page.querySelector(".seriesTimerSchedule");scheduleTab.innerHTML=html,imageLoader.lazyChildren(scheduleTab)})}function renderSeriesTimerEditor(page,item,user){if("SeriesTimer"===item.Type){if(!user.Policy.EnableLiveTvManagement)return page.querySelector(".seriesTimerScheduleSection").classList.add("hide"),void page.querySelector(".btnCancelSeriesTimer").classList.add("hide");require(["seriesRecordingEditor"],function(seriesRecordingEditor){seriesRecordingEditor.embed(item,ApiClient.serverId(),{context:page.querySelector(".seriesRecordingEditor")})}),page.querySelector(".seriesTimerScheduleSection").classList.remove("hide"),page.querySelector(".btnCancelSeriesTimer").classList.remove("hide"),renderSeriesTimerSchedule(page,item.Id)}}function reloadPlayButtons(page,item){var canPlay=!1;if("Program"==item.Type){var now=new Date;now>=datetime.parseISO8601Date(item.StartDate,!0)&&now0)}else hideAll(page,"btnPlay"),hideAll(page,"btnResume"),hideAll(page,"btnInstantMix"),hideAll(page,"btnShuffle");return canPlay}function reloadFromItem(page,params,item){currentItem=item;var context=params.context;LibraryBrowser.renderName(item,page.querySelector(".itemName"),!1,context),LibraryBrowser.renderParentName(item,page.querySelector(".parentName"),context),libraryMenu.setTitle(""),Dashboard.getCurrentUser().then(function(user){window.scrollTo(0,0),renderSeriesTimerEditor(page,item,user),renderImage(page,item,user),renderLogo(page,item,ApiClient),setInitialCollapsibleState(page,item,context,user),renderDetails(page,item,context),dom.getWindowSize().innerWidth>=800?backdrop.setBackdrops([item]):backdrop.clear(),LibraryBrowser.renderDetailPageBackdrop(page,item,imageLoader),libraryMenu.setTransparentMenu(!0);var canPlay=reloadPlayButtons(page,item),hasAnyButton=canPlay;item.LocalTrailerCount||item.RemoteTrailers&&item.RemoteTrailers.length?(hideAll(page,"btnPlayTrailer",!0),hasAnyButton=!0):hideAll(page,"btnPlayTrailer"),item.CanDelete&&!item.IsFolder?(hideAll(page,"btnDeleteItem",!0),hasAnyButton=!0):hideAll(page,"btnDeleteItem"),renderSyncLocalContainer(page,params,user,item),hasAnyButton||"Program"!==item.Type?hideAll(page,"mainDetailButtons",!0):hideAll(page,"mainDetailButtons"),showRecordingFields(page,item,user);var groupedVersions=(item.MediaSources||[]).filter(function(g){return"Grouping"==g.Type});user.Policy.IsAdministrator&&groupedVersions.length?page.querySelector(".splitVersionContainer").classList.remove("hide"):page.querySelector(".splitVersionContainer").classList.add("hide"),itemContextMenu.getCommands(getContextMenuOptions(item)).then(function(commands){commands.length?hideAll(page,"btnMoreCommands",!0):hideAll(page,"btnMoreCommands")});var itemBirthday=page.querySelector("#itemBirthday");if("Person"==item.Type&&item.PremiereDate)try{var birthday=datetime.parseISO8601Date(item.PremiereDate,!0).toDateString();itemBirthday.classList.remove("hide"),itemBirthday.innerHTML=globalize.translate("BirthDateValue").replace("{0}",birthday)}catch(err){itemBirthday.classList.add("hide")}else itemBirthday.classList.add("hide");var itemDeathDate=page.querySelector("#itemDeathDate");if("Person"==item.Type&&item.EndDate)try{var deathday=datetime.parseISO8601Date(item.EndDate,!0).toDateString();itemDeathDate.classList.remove("hide"),itemDeathDate.innerHTML=globalize.translate("DeathDateValue").replace("{0}",deathday)}catch(err){itemDeathDate.classList.add("hide")}var itemBirthLocation=page.querySelector("#itemBirthLocation");if("Person"==item.Type&&item.ProductionLocations&&item.ProductionLocations.length){var gmap=''+item.ProductionLocations[0]+"";itemBirthLocation.classList.remove("hide"),itemBirthLocation.innerHTML=globalize.translate("BirthPlaceValue").replace("{0}",gmap)}else itemBirthLocation.classList.add("hide")}),setPeopleHeader(page,item),page.dispatchEvent(new CustomEvent("displayingitem",{detail:{item:item,context:context},bubbles:!0})),loading.hide()}function logoImageUrl(item,apiClient,options){return options=options||{},options.type="Logo",item.ImageTags&&item.ImageTags.Logo?(options.tag=item.ImageTags.Logo,apiClient.getScaledImageUrl(item.Id,options)):item.ParentLogoImageTag?(options.tag=item.ParentLogoImageTag,apiClient.getScaledImageUrl(item.ParentLogoItemId,options)):null}function renderLogo(page,item,apiClient){var url=logoImageUrl(item,apiClient,{maxWidth:300}),detailLogo=page.querySelector(".detailLogo");url?(detailLogo.classList.remove("hide"),detailLogo.classList.add("lazy"),detailLogo.setAttribute("data-src",url),imageLoader.lazyImage(detailLogo)):detailLogo.classList.add("hide")}function showRecordingFields(page,item,user){if(!currentRecordingFields){var recordingFieldsElement=page.querySelector(".recordingFields");"Program"==item.Type&&user.Policy.EnableLiveTvManagement?require(["recordingFields"],function(recordingFields){currentRecordingFields=new recordingFields({parent:recordingFieldsElement,programId:item.Id,serverId:item.ServerId}),recordingFieldsElement.classList.remove("hide")}):(recordingFieldsElement.classList.add("hide"),recordingFieldsElement.innerHTML="")}}function renderLinks(linksElem,item){var links=[];if(item.HomePageUrl&&links.push(''+globalize.translate("ButtonWebsite")+""),item.ExternalUrls)for(var i=0,length=item.ExternalUrls.length;i'+url.Name+"")}if(links.length){var html=links.join('');linksElem.innerHTML=html,linksElem.classList.remove("hide")}else linksElem.classList.add("hide")}function renderImage(page,item,user){var container=page.querySelector(".detailImageContainer");LibraryBrowser.renderDetailImage(container,item,user.Policy.IsAdministrator&&"Photo"!=item.MediaType,null,imageLoader,indicators)}function refreshDetailImageUserData(elem,item){var detailImageProgressContainer=elem.querySelector(".detailImageProgressContainer");detailImageProgressContainer.innerHTML=indicators.getProgressBarHtml(item)}function refreshImage(page,item,user){refreshDetailImageUserData(page.querySelector(".detailImageContainer"),item)}function setPeopleHeader(page,item){"Audio"==item.MediaType||"MusicAlbum"==item.Type||"Book"==item.MediaType||"Photo"==item.MediaType?page.querySelector("#peopleHeader").innerHTML=globalize.translate("HeaderPeople"):page.querySelector("#peopleHeader").innerHTML=globalize.translate("HeaderCastAndCrew")}function renderNextUp(page,item,user){var section=page.querySelector(".nextUpSection");return"Series"!=item.Type?void section.classList.add("hide"):void ApiClient.getNextUpEpisodes({SeriesId:item.Id,UserId:user.Id}).then(function(result){result.Items.length?section.classList.remove("hide"):section.classList.add("hide");var html=cardBuilder.getCardsHtml({items:result.Items,shape:getThumbShape(!1),showTitle:!0,displayAsSpecial:"Season"==item.Type&&item.IndexNumber,overlayText:!0,lazy:!0,overlayPlayButton:!0}),itemsContainer=section.querySelector(".nextUpItems");itemsContainer.innerHTML=html,imageLoader.lazyChildren(itemsContainer)})}function setInitialCollapsibleState(page,item,context,user){page.querySelector(".collectionItems").innerHTML="","TvChannel"==item.Type?(page.querySelector("#childrenCollapsible").classList.remove("hide"),renderChannelGuide(page,item,user)):"Playlist"==item.Type?(page.querySelector("#childrenCollapsible").classList.remove("hide"),renderPlaylistItems(page,item,user)):"Studio"==item.Type||"Person"==item.Type||"Genre"==item.Type||"MusicGenre"==item.Type||"GameGenre"==item.Type||"MusicArtist"==item.Type?(page.querySelector("#childrenCollapsible").classList.remove("hide"),renderItemsByName(page,item,user)):item.IsFolder||"Episode"==item.Type&&item.SeasonId&&item.SeriesId?("BoxSet"==item.Type&&page.querySelector("#childrenCollapsible").classList.add("hide"),renderChildren(page,item)):page.querySelector("#childrenCollapsible").classList.add("hide"),"Series"==item.Type&&renderSeriesSchedule(page,item,user),"Series"==item.Type?renderNextUp(page,item,user):page.querySelector(".nextUpSection").classList.add("hide"),item.MediaSources&&item.MediaSources.length&&renderMediaSources(page,user,item),renderScenes(page,item),item.SpecialFeatureCount&&0!=item.SpecialFeatureCount&&"Series"!=item.Type?(page.querySelector("#specialsCollapsible").classList.remove("hide"),renderSpecials(page,item,user,6)):page.querySelector("#specialsCollapsible").classList.add("hide"),item.People&&item.People.length?(page.querySelector("#castCollapsible").classList.remove("hide"),renderCast(page,item,context,enableScrollX()?null:12)):page.querySelector("#castCollapsible").classList.add("hide"),item.PartCount&&item.PartCount>1?(page.querySelector("#additionalPartsCollapsible").classList.remove("hide"),renderAdditionalParts(page,item,user)):page.querySelector("#additionalPartsCollapsible").classList.add("hide"),page.querySelector("#themeSongsCollapsible").classList.add("hide"),page.querySelector("#themeVideosCollapsible").classList.add("hide"),"MusicAlbum"==item.Type?renderMusicVideos(page,item,user):page.querySelector("#musicVideosCollapsible").classList.add("hide"),renderThemeMedia(page,item,user),enableScrollX()?renderCriticReviews(page,item):renderCriticReviews(page,item,1)}function renderOverview(elems,item){for(var i=0,length=elems.length;i'+text+"":'
'+text+"
"}).join("");return view.querySelector(".mediaInfoIcons").innerHTML=html,html}function renderPhotoInfo(page,item){var html="",attributes=[];if(item.CameraMake&&attributes.push(createAttribute(globalize.translate("MediaInfoCameraMake"),item.CameraMake)),item.CameraModel&&attributes.push(createAttribute(globalize.translate("MediaInfoCameraModel"),item.CameraModel)),item.Altitude&&attributes.push(createAttribute(globalize.translate("MediaInfoAltitude"),item.Altitude.toFixed(1))),item.Aperture&&attributes.push(createAttribute(globalize.translate("MediaInfoAperture"),"F"+item.Aperture.toFixed(1))),item.ExposureTime){var val=1/item.ExposureTime;attributes.push(createAttribute(globalize.translate("MediaInfoExposureTime"),"1/"+val+" s"))}item.FocalLength&&attributes.push(createAttribute(globalize.translate("MediaInfoFocalLength"),item.FocalLength.toFixed(1)+" mm")),item.ImageOrientation,item.IsoSpeedRating&&attributes.push(createAttribute(globalize.translate("MediaInfoIsoSpeedRating"),item.IsoSpeedRating)),item.Latitude&&attributes.push(createAttribute(globalize.translate("MediaInfoLatitude"),item.Latitude.toFixed(1))),item.Longitude&&attributes.push(createAttribute(globalize.translate("MediaInfoLongitude"),item.Longitude.toFixed(1))),item.ShutterSpeed&&attributes.push(createAttribute(globalize.translate("MediaInfoShutterSpeed"),item.ShutterSpeed)),item.Software&&attributes.push(createAttribute(globalize.translate("MediaInfoSoftware"),item.Software)),html+=attributes.join("
"),page.querySelector(".photoInfoContent").innerHTML=html}function getArtistLinksHtml(artists,context){for(var html=[],i=0,length=artists.length;i'+artist.Name+"")}return html=html.join(" / "),1==artists.length?globalize.translate("ValueArtist",html):artists.length>1?globalize.translate("ValueArtists",html):html}function enableScrollX(){return browserInfo.mobile&&screen.availWidth<=1e3}function getPortraitShape(scrollX){return null==scrollX&&(scrollX=enableScrollX()),scrollX?"overflowPortrait":"portrait"}function getSquareShape(scrollX){return null==scrollX&&(scrollX=enableScrollX()),scrollX?"overflowSquare":"square"}function getThumbShape(scrollX){return null==scrollX&&(scrollX=enableScrollX()),scrollX?"overflowBackdrop":"backdrop"}function renderMoreFromItems(page,item){var moreFromSection=page.querySelector("#moreFromSection");if(moreFromSection)return"MusicAlbum"==item.Type&&item.AlbumArtists&&item.AlbumArtists.length?void ApiClient.getItems(Dashboard.getCurrentUserId(),{IncludeItemTypes:"MusicAlbum",ArtistIds:item.AlbumArtists[0].Id,Recursive:!0,ExcludeItemIds:item.Id}).then(function(result){if(!result.Items.length)return void moreFromSection.classList.add("hide");moreFromSection.classList.remove("hide"),moreFromSection.querySelector(".moreFromHeader").innerHTML=globalize.translate("MoreFromValue",item.AlbumArtists[0].Name);var html="";html+=enableScrollX()?'
':'
';var shape="MusicAlbum"==item.Type||"MusicArtist"==item.Type?getSquareShape():getPortraitShape(),supportsImageAnalysis=appHost.supports("imageanalysis");html+=cardBuilder.getCardsHtml({items:result.Items,shape:shape,showParentTitle:"MusicAlbum"==item.Type,centerText:!supportsImageAnalysis,showTitle:"MusicAlbum"==item.Type||"Game"==item.Type||"MusicArtist"==item.Type,coverImage:"MusicAlbum"==item.Type||"MusicArtist"==item.Type,overlayPlayButton:!0,cardLayout:supportsImageAnalysis,vibrant:supportsImageAnalysis}),html+="
";var similarContent=page.querySelector("#moreFromItems");similarContent.innerHTML=html,imageLoader.lazyChildren(similarContent)}):void moreFromSection.classList.add("hide")}function renderSimilarItems(page,item,context){var similarCollapsible=page.querySelector("#similarCollapsible");if(similarCollapsible){if("Movie"!=item.Type&&"Trailer"!=item.Type&&"Series"!=item.Type&&"Program"!=item.Type&&"Recording"!=item.Type&&"Game"!=item.Type&&"MusicAlbum"!=item.Type&&"MusicArtist"!=item.Type&&"ChannelVideoItem"!=item.Type)return void similarCollapsible.classList.add("hide");similarCollapsible.classList.remove("hide");var shape="MusicAlbum"==item.Type||"MusicArtist"==item.Type?getSquareShape():getPortraitShape(),options={userId:Dashboard.getCurrentUserId(),limit:"MusicAlbum"==item.Type||"MusicArtist"==item.Type?8:10,fields:"PrimaryImageAspectRatio,UserData,CanDelete"};"MusicAlbum"==item.Type&&item.AlbumArtists&&item.AlbumArtists.length&&(options.ExcludeArtistIds=item.AlbumArtists[0].Id),enableScrollX()&&(options.limit=12),ApiClient.getSimilarItems(item.Id,options).then(function(result){if(!result.Items.length)return void similarCollapsible.classList.add("hide");similarCollapsible.classList.remove("hide");var html="";html+=enableScrollX()?'
':'
';var supportsImageAnalysis=appHost.supports("imageanalysis"),cardLayout=supportsImageAnalysis&&("MusicAlbum"==item.Type||"Game"==item.Type||"MusicArtist"==item.Type);html+=cardBuilder.getCardsHtml({items:result.Items,shape:shape,showParentTitle:"MusicAlbum"==item.Type,centerText:!cardLayout,showTitle:"MusicAlbum"==item.Type||"Game"==item.Type||"MusicArtist"==item.Type,context:context,lazy:!0,showDetailsMenu:!0,coverImage:"MusicAlbum"==item.Type||"MusicArtist"==item.Type,overlayPlayButton:!0,cardLayout:cardLayout,vibrant:cardLayout&&supportsImageAnalysis}),html+="
";var similarContent=similarCollapsible.querySelector(".similarContent");similarContent.innerHTML=html,imageLoader.lazyChildren(similarContent)})}}function renderSeriesAirTime(page,item,isStatic){var seriesAirTime=page.querySelector("#seriesAirTime");if("Series"!=item.Type)return void seriesAirTime.classList.add("hide");var html="";if(item.AirDays&&item.AirDays.length&&(html+=7==item.AirDays.length?"daily":item.AirDays.map(function(a){return a+"s"}).join(",")),item.AirTime&&(html+=" at "+item.AirTime),item.Studios.length)if(isStatic)html+=" on "+item.Studios[0].Name;else{var context=inferContext(item),href=LibraryBrowser.getHref(item.Studios[0],context);html+=' on '+item.Studios[0].Name+""}html?(html=("Ended"==item.Status?"Aired ":"Airs ")+html,seriesAirTime.innerHTML=html,seriesAirTime.classList.remove("hide")):seriesAirTime.classList.add("hide")}function renderTags(page,item){var itemTags=page.querySelector(".itemTags");if(item.Tags&&item.Tags.length){for(var html="",i=0,length=item.Tags.length;i'+item.Tags[i]+"
";itemTags.innerHTML=html,itemTags.classList.remove("hide")}else itemTags.classList.add("hide")}function getEpisodesFunction(seriesId,query){return query=Object.assign({},query),function(index,limit,fields){return query.StartIndex=index,query.Limit=limit,query.Fields=fields,ApiClient.getEpisodes(seriesId,query)}}function getAlbumSongsFunction(query){return query=Object.assign({},query),function(index,limit,fields){return query.StartIndex=index,query.Limit=limit,query.Fields=fields,ApiClient.getItems(Dashboard.getCurrentUserId(),query)}}function renderChildren(page,item){_childrenItemsFunction=null;var fields="ItemCounts,PrimaryImageAspectRatio,BasicSyncInfo,CanDelete",query={ParentId:item.Id,Fields:fields};"BoxSet"!==item.Type&&(query.SortBy="SortName");var promise,userId=Dashboard.getCurrentUserId();"Series"==item.Type?promise=ApiClient.getSeasons(item.Id,{userId:userId,Fields:fields}):"Season"==item.Type?(promise=ApiClient.getEpisodes(item.SeriesId,{seasonId:item.Id,userId:userId,Fields:fields}),_childrenItemsFunction=getEpisodesFunction(item.SeriesId,{seasonId:item.Id,userId:userId,Fields:fields})):"Episode"==item.Type&&item.SeriesId&&item.SeasonId?(promise=ApiClient.getEpisodes(item.SeriesId,{seasonId:item.SeasonId,userId:userId,Fields:fields}),_childrenItemsFunction=getEpisodesFunction(item.SeriesId,{seasonId:item.SeasonId,userId:userId,Fields:fields})):"MusicAlbum"==item.Type&&(_childrenItemsFunction=getAlbumSongsFunction(query)),promise=promise||ApiClient.getItems(Dashboard.getCurrentUserId(),query),promise.then(function(result){var html="",scrollX=!1,isList=!1,scrollClass="hiddenScrollX",childrenItemsContainer=page.querySelector(".childrenItemsContainer");if("MusicAlbum"==item.Type)html=listView.getListViewHtml({items:result.Items,smallIcon:!0,showIndex:!0,index:"disc",showIndexNumber:!0,playFromHere:!0,action:"playallfromhere",image:!1,artist:"auto",containerAlbumArtist:item.AlbumArtist,addToListButton:!0}),isList=!0;else if("Series"==item.Type)scrollX=enableScrollX(),html=cardBuilder.getCardsHtml({items:result.Items,shape:getPortraitShape(),showTitle:!0,centerText:!0,lazy:!0,overlayPlayButton:!0,allowBottomPadding:!scrollX});else if("Season"==item.Type||"Episode"==item.Type){if("Episode"===item.Type&&childrenItemsContainer.classList.add("darkScroller"),scrollX="Episode"==item.Type,browser.touch||(scrollClass="smoothScrollX"),result.Items.length<2&&"Episode"===item.Type)return;html=cardBuilder.getCardsHtml({items:result.Items,shape:getThumbShape(scrollX),showTitle:!0,displayAsSpecial:"Season"==item.Type&&item.IndexNumber,playFromHere:!0,overlayText:!0,lazy:!0,showDetailsMenu:!0,overlayPlayButton:!0,allowBottomPadding:!scrollX,includeParentInfoInTitle:!1})}else"GameSystem"==item.Type&&(html=cardBuilder.getCardsHtml({items:result.Items,shape:"auto",showTitle:!0,centerText:!0,lazy:!0,showDetailsMenu:!0}));if("BoxSet"!==item.Type&&page.querySelector("#childrenCollapsible").classList.remove("hide"),scrollX?(childrenItemsContainer.classList.add(scrollClass),childrenItemsContainer.classList.remove("vertical-wrap"),childrenItemsContainer.classList.remove("vertical-list")):(childrenItemsContainer.classList.remove("hiddenScrollX"),childrenItemsContainer.classList.remove("smoothScrollX"),isList?(childrenItemsContainer.classList.add("vertical-list"),childrenItemsContainer.classList.remove("vertical-wrap")):(childrenItemsContainer.classList.add("vertical-wrap"),childrenItemsContainer.classList.remove("vertical-list"))),childrenItemsContainer.innerHTML=html,imageLoader.lazyChildren(childrenItemsContainer),"BoxSet"==item.Type){var collectionItemTypes=[{name:globalize.translate("HeaderVideos"),mediaType:"Video"},{name:globalize.translate("HeaderSeries"),type:"Series"},{name:globalize.translate("HeaderAlbums"),type:"MusicAlbum"},{name:globalize.translate("HeaderGames"),type:"Game"},{name:globalize.translate("HeaderBooks"),type:"Book"}];renderCollectionItems(page,item,collectionItemTypes,result.Items)}else if("Episode"===item.Type){var card=childrenItemsContainer.querySelector('.card[data-id="'+item.Id+'"]');card&&scrollHelper.toStart(childrenItemsContainer,card.previousSibling||card,!0)}}),"Season"==item.Type?page.querySelector("#childrenTitle").innerHTML=globalize.translate("HeaderEpisodes"):"Episode"==item.Type?page.querySelector("#childrenTitle").innerHTML=globalize.translate("MoreFromValue",item.SeasonName):"Series"==item.Type?page.querySelector("#childrenTitle").innerHTML=globalize.translate("HeaderSeasons"):"MusicAlbum"==item.Type?page.querySelector("#childrenTitle").innerHTML=globalize.translate("HeaderTracks"):"GameSystem"==item.Type?page.querySelector("#childrenTitle").innerHTML=globalize.translate("HeaderGames"):page.querySelector("#childrenTitle").innerHTML=globalize.translate("HeaderItems"),"MusicAlbum"==item.Type?page.querySelector(".childrenSectionHeader",page).classList.add("hide"):page.querySelector(".childrenSectionHeader",page).classList.remove("hide")}function renderItemsByName(page,item,user){require("scripts/itembynamedetailpage".split(","),function(){window.ItemsByName.renderItems(page,item)})}function renderPlaylistItems(page,item,user){require("scripts/playlistedit".split(","),function(){PlaylistViewer.render(page,item)})}function renderChannelGuide(page,item,user){require("scripts/livetvchannel,scripts/livetvcomponents,livetvcss".split(","),function(liveTvChannelPage){liveTvChannelPage.renderPrograms(page,item.Id)})}function renderSeriesSchedule(page,item,user){}function inferContext(item){return"Movie"==item.Type||"BoxSet"==item.Type?"movies":"Series"==item.Type||"Season"==item.Type||"Episode"==item.Type?"tvshows":"Game"==item.Type||"GameSystem"==item.Type?"games":"Game"==item.Type||"GameSystem"==item.Type?"games":"MusicArtist"==item.Type||"MusicAlbum"==item.Type?"music":null}function renderStudios(elem,item,isStatic){var context=inferContext(item);if(item.Studios&&item.Studios.length&&"Series"!=item.Type,1)elem.classList.add("hide");else{for(var html="",i=0,length=item.Studios.length;i0&&(html+="  /  "),isStatic)html+=item.Studios[i].Name;else{item.Studios[i].Type="Studio";var href=LibraryBrowser.getHref(item.Studios[i],context);html+=''+item.Studios[i].Name+""}var translationKey=item.Studios.length>1?"ValueStudios":"ValueStudio";html=globalize.translate(translationKey,html),elem.innerHTML=html,elem.classList.remove("hide")}}function renderGenres(elem,item,limit,isStatic){for(var context=inferContext(item),html="",genres=item.Genres||[],i=0,length=genres.length;i=limit);i++){i>0&&(html+='');var param="Audio"==item.Type||"MusicArtist"==item.Type||"MusicAlbum"==item.Type?"musicgenre":"genre";if("Game"==item.MediaType&&(param="gamegenre"),isStatic)html+=genres[i];else{var type;switch(context){case"tvshows":type="Series";break;case"games":type="Game";break;case"music":type="MusicAlbum";break;default:type="Movie"}var url="secondaryitems.html?type="+type+"&"+param+"="+ApiClient.encodeName(genres[i]);html+=''+genres[i]+""}}elem.innerHTML=html}function renderAwardSummary(elem,item){item.AwardSummary?(elem.classList.remove("hide"),elem.innerHTML=globalize.translate("ValueAwards",item.AwardSummary)):elem.classList.add("hide")}function filterItemsByCollectionItemType(items,typeInfo){return items.filter(function(item){return typeInfo.mediaType?item.MediaType==typeInfo.mediaType:item.Type==typeInfo.type})}function renderCollectionItems(page,parentItem,types,items){page.querySelector(".collectionItems").innerHTML="";var i,length;for(i=0,length=types.length;i0}).length});otherTypeItems.length&&renderCollectionItemType(page,parentItem,otherType,otherTypeItems),items.length||renderCollectionItemType(page,parentItem,{name:globalize.translate("HeaderItems")},items)}function renderCollectionItemType(page,parentItem,type,items){var html="";html+='
',html+='
',html+="

",html+=""+type.name+"",html+="

",html+='',html+="
",html+='
';var shape="MusicAlbum"==type.type?getSquareShape(!1):getPortraitShape(!1);html+=cardBuilder.getCardsHtml({ +items:items,shape:shape,showTitle:!0,centerText:!0,lazy:!0,showDetailsMenu:!0,overlayMoreButton:!0,showAddToCollection:!1,showRemoveFromCollection:!0,collectionId:parentItem.Id}),html+="
",html+="
";var collectionItems=page.querySelector(".collectionItems");collectionItems.insertAdjacentHTML("beforeend",html),imageLoader.lazyChildren(collectionItems),collectionItems.querySelector(".btnAddToCollection").addEventListener("click",function(){require(["alert"],function(alert){alert({text:globalize.translate("AddItemToCollectionHelp"),html:globalize.translate("AddItemToCollectionHelp")+'

'+globalize.translate("ButtonLearnMore")+""})})})}function renderUserDataIcons(page,item){for(var userDataIcons=page.querySelectorAll(".userDataIcons"),i=0,length=userDataIcons.length;i',html+='
',null!=review.Score||null!=review.Likes&&(html+=review.Likes?"
":"
"),html+='
',html+='

'+review.Caption+"

";var vals=[];if(review.ReviewerName&&vals.push(review.ReviewerName),review.Publisher&&vals.push(review.Publisher),html+='
'+vals.join(", ")+".",review.Date)try{var date=datetime.toLocaleDateString(datetime.parseISO8601Date(review.Date,!0));html+=''+date+""}catch(error){}html+="
",review.Url&&(html+='"),html+="
",html+="
",html+="
"}limit&&result.TotalRecordCount>limit&&(html+='

");var criticReviewsContent=page.querySelector("#criticReviewsContent");criticReviewsContent.innerHTML=html,enableScrollX()?criticReviewsContent.classList.add("hiddenScrollX"):criticReviewsContent.classList.remove("hiddenScrollX")}function renderThemeMedia(page,item){"SeriesTimer"!==item.Type&&"Timer"!==item.Type&&"Genre"!==item.Type&&"MusicGenre"!==item.Type&&"GameGenre"!==item.Type&&"Studio"!==item.Type&&"Person"!==item.Type&&ApiClient.getThemeMedia(Dashboard.getCurrentUserId(),item.Id,!0).then(function(result){var themeSongs=result.ThemeSongsResult.OwnerId==item.Id?result.ThemeSongsResult.Items:[],themeVideos=result.ThemeVideosResult.OwnerId==item.Id?result.ThemeVideosResult.Items:[];renderThemeSongs(page,themeSongs),renderThemeVideos(page,themeVideos)})}function renderThemeSongs(page,items){if(items.length){page.querySelector("#themeSongsCollapsible").classList.remove("hide");var html=listView.getListViewHtml({items:items});page.querySelector("#themeSongsContent").innerHTML=html}else page.querySelector("#themeSongsCollapsible").classList.add("hide")}function renderThemeVideos(page,items,user){if(items.length){page.querySelector("#themeVideosCollapsible").classList.remove("hide");var themeVideosContent=page.querySelector("#themeVideosContent");themeVideosContent.innerHTML=getVideosHtml(items,user),imageLoader.lazyChildren(themeVideosContent)}else page.querySelector("#themeVideosCollapsible").classList.add("hide")}function renderMusicVideos(page,item,user){ApiClient.getItems(user.Id,{SortBy:"SortName",SortOrder:"Ascending",IncludeItemTypes:"MusicVideo",Recursive:!0,Fields:"DateCreated,CanDelete",AlbumIds:item.Id}).then(function(result){if(result.Items.length){page.querySelector("#musicVideosCollapsible").classList.remove("hide");var musicVideosContent=page.querySelector(".musicVideosContent");musicVideosContent.innerHTML=getVideosHtml(result.Items,user),imageLoader.lazyChildren(musicVideosContent)}else page.querySelector("#musicVideosCollapsible").classList.add("hide")})}function renderAdditionalParts(page,item,user){ApiClient.getAdditionalVideoParts(user.Id,item.Id).then(function(result){if(result.Items.length){page.querySelector("#additionalPartsCollapsible").classList.remove("hide");var additionalPartsContent=page.querySelector("#additionalPartsContent");additionalPartsContent.innerHTML=getVideosHtml(result.Items,user),imageLoader.lazyChildren(additionalPartsContent)}else page.querySelector("#additionalPartsCollapsible").classList.add("hide")})}function renderScenes(page,item){var chapters=item.Chapters||[];if(chapters.length&&!chapters[0].ImageTag&&(chapters=[]),chapters.length){page.querySelector("#scenesCollapsible").classList.remove("hide");var scenesContent=page.querySelector("#scenesContent");enableScrollX()?scenesContent.classList.add("smoothScrollX"):scenesContent.classList.add("vertical-wrap"),require(["chaptercardbuilder"],function(chaptercardbuilder){chaptercardbuilder.buildChapterCards(item,chapters,{itemsContainer:scenesContent,width:400,backdropShape:getThumbShape(),squareShape:getSquareShape()})})}else page.querySelector("#scenesCollapsible").classList.add("hide")}function renderMediaSources(page,user,item){var html=item.MediaSources.map(function(v){return getMediaSourceHtml(user,item,v)}).join('
');item.MediaSources.length>1&&(html="
"+html);var mediaInfoContent=page.querySelector("#mediaInfoContent");mediaInfoContent.innerHTML=html}function getMediaSourceHtml(user,item,version){var html="";version.Name&&item.MediaSources.length>1&&(html+='
'+version.Name+"

");for(var i=0,length=version.MediaStreams.length;i';var displayType=globalize.translate("MediaInfoStreamType"+stream.Type);html+='

'+displayType+"

";var attributes=[];stream.Language&&"Video"!=stream.Type&&attributes.push(createAttribute(globalize.translate("MediaInfoLanguage"),stream.Language)),stream.Codec&&attributes.push(createAttribute(globalize.translate("MediaInfoCodec"),stream.Codec.toUpperCase())),stream.CodecTag&&attributes.push(createAttribute(globalize.translate("MediaInfoCodecTag"),stream.CodecTag)),null!=stream.IsAVC&&attributes.push(createAttribute("AVC",stream.IsAVC?"Yes":"No")),stream.Profile&&attributes.push(createAttribute(globalize.translate("MediaInfoProfile"),stream.Profile)),stream.Level&&attributes.push(createAttribute(globalize.translate("MediaInfoLevel"),stream.Level)),(stream.Width||stream.Height)&&attributes.push(createAttribute(globalize.translate("MediaInfoResolution"),stream.Width+"x"+stream.Height)),stream.AspectRatio&&"mjpeg"!=stream.Codec&&attributes.push(createAttribute(globalize.translate("MediaInfoAspectRatio"),stream.AspectRatio)),"Video"==stream.Type&&(null!=stream.IsAnamorphic&&attributes.push(createAttribute(globalize.translate("MediaInfoAnamorphic"),stream.IsAnamorphic?"Yes":"No")),attributes.push(createAttribute(globalize.translate("MediaInfoInterlaced"),stream.IsInterlaced?"Yes":"No"))),(stream.AverageFrameRate||stream.RealFrameRate)&&attributes.push(createAttribute(globalize.translate("MediaInfoFramerate"),stream.AverageFrameRate||stream.RealFrameRate)),stream.ChannelLayout&&attributes.push(createAttribute(globalize.translate("MediaInfoLayout"),stream.ChannelLayout)),stream.Channels&&attributes.push(createAttribute(globalize.translate("MediaInfoChannels"),stream.Channels+" ch")),stream.BitRate&&"mjpeg"!=stream.Codec&&attributes.push(createAttribute(globalize.translate("MediaInfoBitrate"),parseInt(stream.BitRate/1e3)+" kbps")),stream.SampleRate&&attributes.push(createAttribute(globalize.translate("MediaInfoSampleRate"),stream.SampleRate+" Hz")),stream.BitDepth&&attributes.push(createAttribute(globalize.translate("MediaInfoBitDepth"),stream.BitDepth+" bit")),stream.PixelFormat&&attributes.push(createAttribute(globalize.translate("MediaInfoPixelFormat"),stream.PixelFormat)),stream.RefFrames&&attributes.push(createAttribute(globalize.translate("MediaInfoRefFrames"),stream.RefFrames)),stream.NalLengthSize&&attributes.push(createAttribute("NAL",stream.NalLengthSize)),"Video"!=stream.Type&&attributes.push(createAttribute(globalize.translate("MediaInfoDefault"),stream.IsDefault?"Yes":"No")),"Subtitle"==stream.Type&&(attributes.push(createAttribute(globalize.translate("MediaInfoForced"),stream.IsForced?"Yes":"No")),attributes.push(createAttribute(globalize.translate("MediaInfoExternal"),stream.IsExternal?"Yes":"No"))),"Video"==stream.Type&&version.Timestamp&&attributes.push(createAttribute(globalize.translate("MediaInfoTimestamp"),version.Timestamp)),stream.DisplayTitle&&attributes.push(createAttribute("Title",stream.DisplayTitle)),html+=attributes.join("
"),html+=""}}if(version.Container&&(html+='
'+globalize.translate("MediaInfoContainer")+''+version.Container+"
"),version.Formats&&version.Formats.length,version.Path&&"Http"!=version.Protocol&&user&&user.Policy.IsAdministrator&&(html+='
'+globalize.translate("MediaInfoPath")+''+version.Path+"
"),version.Size){var size=(version.Size/1048576).toFixed(0);html+='
'+globalize.translate("MediaInfoSize")+''+size+" MB
"}return html}function createAttribute(label,value){return''+label+''+value+""}function getVideosHtml(items,user,limit,moreButtonClass){var html=cardBuilder.getCardsHtml({items:items,shape:"auto",showTitle:!0,action:"play",overlayText:!0,showRuntime:!0});return limit&&items.length>limit&&(html+='

"),html}function renderSpecials(page,item,user,limit){ApiClient.getSpecialFeatures(user.Id,item.Id).then(function(specials){var specialsContent=page.querySelector("#specialsContent");specialsContent.innerHTML=getVideosHtml(specials,user,limit,"moreSpecials"),imageLoader.lazyChildren(specialsContent)})}function renderCast(page,item,context,limit,isStatic){var people=item.People||[],castContent=page.querySelector("#castContent");enableScrollX()?(castContent.classList.add("smoothScrollX"),limit=32):castContent.classList.add("vertical-wrap");var limitExceeded=limit&&people.length>limit;limitExceeded&&(people=people.slice(0),people.length=Math.min(limit,people.length)),require(["peoplecardbuilder"],function(peoplecardbuilder){peoplecardbuilder.buildPeopleCards(people,{itemsContainer:castContent,coverImage:!0,serverId:item.ServerId,width:160,shape:getPortraitShape()})});var morePeopleButton=page.querySelector(".morePeople");morePeopleButton&&(limitExceeded&&!enableScrollX()?morePeopleButton.classList.remove("hide"):morePeopleButton.classList.add("hide"))}function play(startPosition){playbackManager.play({items:[currentItem],startPositionTicks:startPosition})}function splitVersions(page,params){require(["confirm"],function(confirm){confirm("Are you sure you wish to split the media sources into separate items?","Split Media Apart").then(function(){loading.show(),ApiClient.ajax({type:"DELETE",url:ApiClient.getUrl("Videos/"+params.id+"/AlternateSources")}).then(function(){loading.hide(),reload(page,params)})})})}function playTrailer(page){playbackManager.playTrailers(currentItem)}function showPlayMenu(item,target){require(["playMenu"],function(playMenu){playMenu.show({item:item,positionTo:target})})}function playCurrentItem(button,mode){var item=currentItem;return"Program"===item.Type?void ApiClient.getLiveTvChannel(item.ChannelId,Dashboard.getCurrentUserId()).then(function(channel){playbackManager.play({items:[channel]})}):void("playmenu"===mode?showPlayMenu(item,button):playbackManager.play({items:[item],startPositionTicks:item.UserData&&"resume"===mode?item.UserData.PlaybackPositionTicks:0}))}function itemDetailPage(){var self=this;self.play=play,self.setInitialCollapsibleState=setInitialCollapsibleState,self.renderDetails=renderDetails,self.renderCriticReviews=renderCriticReviews,self.renderCast=renderCast,self.renderScenes=renderScenes,self.renderMediaSources=renderMediaSources}function onPlayClick(){var mode=this.getAttribute("data-mode");playCurrentItem(this,mode)}function onInstantMixClick(){playbackManager.instantMix(currentItem)}function onShuffleClick(){playbackManager.shuffle(currentItem)}function onDeleteClick(){require(["deleteHelper"],function(deleteHelper){deleteHelper.deleteItem({item:currentItem,navigate:!0})})}function onCancelSeriesTimerClick(){require(["recordingHelper"],function(recordingHelper){recordingHelper.cancelSeriesTimerWithConfirmation(currentItem.Id,currentItem.ServerId).then(function(){Dashboard.navigate("livetv.html")})})}var currentItem,currentRecordingFields,_childrenItemsFunction=null;return window.ItemDetailPage=new itemDetailPage,function(view,params){function onPlayTrailerClick(){playTrailer(view)}function onMoreCommandsClick(){var button=this;itemContextMenu.show(getContextMenuOptions(currentItem,button)).then(function(result){result.deleted?embyRouter.goHome():result.updated&&reload(view,params)})}function editImages(){return new Promise(function(resolve,reject){require(["imageEditor"],function(imageEditor){imageEditor.show({itemId:currentItem.Id,serverId:currentItem.ServerId}).then(resolve,reject)})})}function onWebSocketMessage(e,data){var msg=data;if("UserDataChanged"===msg.MessageType&¤tItem&&msg.Data.UserId==Dashboard.getCurrentUserId()){var key=currentItem.UserData.Key,userData=msg.Data.UserDataList.filter(function(u){return u.Key==key})[0];userData&&(currentItem.UserData=userData,reloadPlayButtons(view,currentItem),Dashboard.getCurrentUser().then(function(user){refreshImage(view,currentItem,user)}))}}var i,length,elems=view.querySelectorAll(".btnPlay");for(i=0,length=elems.length;i'+Globalize.translate("MessageNoCollectionsAvailable")+"

")):view.querySelector(".btnNewCollection").classList.add("hide");var elem=view.querySelector("#items");elem.innerHTML=html,imageLoader.lazyChildren(elem);var i,length,elems=view.querySelectorAll(".paging");for(i=0,length=elems.length;i'+Globalize.translate("MessageNoCollectionsAvailable")+"

")):view.querySelector(".btnNewCollection").classList.add("hide");var elem=view.querySelector("#items");elem.innerHTML=html,imageLoader.lazyChildren(elem);var i,length,elems=view.querySelectorAll(".paging");for(i=0,length=elems.length;i"+datetime.toLocaleDateString(currentStartDate,{weekday:"long",month:"long",day:"numeric"})+"",html+='
'+listView.getListViewHtml({items:currentItems,enableUserDataButtons:!1,showParentTitle:!0,image:!1,showProgramTime:!0,mediaInfo:!1,parentTitleWithTitle:!0})+"
"),currentStartDate=itemStartDate,currentItems=[]),currentItems.push(item)}page.querySelector("#childrenContent").innerHTML=html}function loadPrograms(page,channelId){ApiClient.getLiveTvPrograms({ChannelIds:channelId,UserId:Dashboard.getCurrentUserId(),HasAired:!1,SortBy:"StartDate",EnableTotalRecordCount:!1,EnableImages:!1,ImageTypeLimit:0,EnableUserData:!1}).then(function(result){renderPrograms(page,result),Dashboard.hideLoadingMsg()})}return{renderPrograms:loadPrograms}}); \ No newline at end of file +define(["datetime","listView","loading"],function(datetime,listView,loading){"use strict";function isSameDay(date1,date2){return date1.toDateString()===date2.toDateString()}function renderPrograms(page,result){for(var html="",currentItems=[],currentStartDate=null,i=0,length=result.Items.length;i"+datetime.toLocaleDateString(currentStartDate,{weekday:"long",month:"long",day:"numeric"})+"",html+='
'+listView.getListViewHtml({items:currentItems,enableUserDataButtons:!1,showParentTitle:!0,image:!1,showProgramTime:!0,mediaInfo:!1,parentTitleWithTitle:!0})+"
"),currentStartDate=itemStartDate,currentItems=[]),currentItems.push(item)}page.querySelector("#childrenContent").innerHTML=html}function loadPrograms(page,channelId){ApiClient.getLiveTvPrograms({ChannelIds:channelId,UserId:Dashboard.getCurrentUserId(),HasAired:!1,SortBy:"StartDate",EnableTotalRecordCount:!1,EnableImages:!1,ImageTypeLimit:0,EnableUserData:!1}).then(function(result){renderPrograms(page,result),loading.hide()})}return{renderPrograms:loadPrograms}}); \ No newline at end of file diff --git a/dashboard-ui/scripts/livetvguideprovider.js b/dashboard-ui/scripts/livetvguideprovider.js index b5179e4724..7bf6d8b3cb 100644 --- a/dashboard-ui/scripts/livetvguideprovider.js +++ b/dashboard-ui/scripts/livetvguideprovider.js @@ -1 +1 @@ -define(["events"],function(events){"use strict";function onListingsSubmitted(){Dashboard.navigate("livetvstatus.html")}function init(page,type,providerId){var url="components/tvproviders/"+type+".js";require([url],function(factory){var instance=new factory(page,providerId,{});events.on(instance,"submitted",onListingsSubmitted),instance.init()})}function loadTemplate(page,type,providerId){var xhr=new XMLHttpRequest;xhr.open("GET","components/tvproviders/"+type+".template.html",!0),xhr.onload=function(e){var html=this.response,elem=page.querySelector(".providerTemplate");elem.innerHTML=Globalize.translateDocument(html),init(page,type,providerId)},xhr.send()}pageIdOn("pageshow","liveTvGuideProviderPage",function(){Dashboard.showLoadingMsg();var providerId=getParameterByName("id"),type=getParameterByName("type"),page=this;loadTemplate(page,type,providerId)})}); \ No newline at end of file +define(["events","loading"],function(events,loading){"use strict";function onListingsSubmitted(){Dashboard.navigate("livetvstatus.html")}function init(page,type,providerId){var url="components/tvproviders/"+type+".js";require([url],function(factory){var instance=new factory(page,providerId,{});events.on(instance,"submitted",onListingsSubmitted),instance.init()})}function loadTemplate(page,type,providerId){var xhr=new XMLHttpRequest;xhr.open("GET","components/tvproviders/"+type+".template.html",!0),xhr.onload=function(e){var html=this.response,elem=page.querySelector(".providerTemplate");elem.innerHTML=Globalize.translateDocument(html),init(page,type,providerId)},xhr.send()}pageIdOn("pageshow","liveTvGuideProviderPage",function(){loading.show();var providerId=getParameterByName("id"),type=getParameterByName("type"),page=this;loadTemplate(page,type,providerId)})}); \ No newline at end of file diff --git a/dashboard-ui/scripts/livetvitems.js b/dashboard-ui/scripts/livetvitems.js index f33744a35b..94187414da 100644 --- a/dashboard-ui/scripts/livetvitems.js +++ b/dashboard-ui/scripts/livetvitems.js @@ -1 +1 @@ -define(["cardBuilder","apphost","imageLoader","libraryBrowser","emby-itemscontainer"],function(cardBuilder,appHost,imageLoader,libraryBrowser){"use strict";return function(view,params){function getSavedQueryKey(){return libraryBrowser.getSavedQueryKey()}function reloadItems(page){Dashboard.showLoadingMsg();var promise="Recordings"==params.type?ApiClient.getLiveTvRecordings(query):"RecordingSeries"==params.type?ApiClient.getLiveTvRecordingSeries(query):"true"==params.IsAiring?ApiClient.getLiveTvRecommendedPrograms(query):ApiClient.getLiveTvPrograms(query);promise.then(function(result){function onNextPageClick(){query.StartIndex+=query.Limit,reloadItems(page)}function onPreviousPageClick(){query.StartIndex-=query.Limit,reloadItems(page)}window.scrollTo(0,0);var html="",pagingHtml=libraryBrowser.getQueryPagingHtml({startIndex:query.StartIndex,limit:query.Limit,totalRecordCount:result.TotalRecordCount,showLimit:!1});page.querySelector(".listTopPaging").innerHTML=pagingHtml,html=cardBuilder.getCardsHtml({items:result.Items,shape:query.IsMovie||"RecordingSeries"==params.type?"portrait":"backdrop",preferThumb:!query.IsMovie&&"RecordingSeries"!=params.type,inheritThumb:"Recordings"==params.type,context:"livetv",centerText:!0,lazy:!0,overlayText:!1,showTitle:!0,showParentTitle:query.IsSeries!==!1&&!query.IsMovie,showAirTime:"Recordings"!=params.type&&"RecordingSeries"!=params.type,showAirDateTime:"Recordings"!=params.type&&"RecordingSeries"!=params.type,showChannelName:"Recordings"!=params.type&&"RecordingSeries"!=params.type,overlayMoreButton:!0,showYear:query.IsMovie&&"Recordings"==params.type,showSeriesYear:"RecordingSeries"===params.type,coverImage:!0});var elem=page.querySelector(".itemsContainer");elem.innerHTML=html+pagingHtml,imageLoader.lazyChildren(elem);var i,length,elems;for(elems=page.querySelectorAll(".btnNextPage"),i=0,length=elems.length;i',html+="
",html+=group.Name,html+="
",html+='
',html+=1==group.RecordingCount?Globalize.translate("ValueItemCount",group.RecordingCount):Globalize.translate("ValueItemCountPlural",group.RecordingCount),html+="
",html+="",html+="",html+=""}function renderRecordingGroups(context,groups){groups.length?context.querySelector("#recordingGroups").classList.remove("hide"):context.querySelector("#recordingGroups").classList.add("hide");var html="";html+='
';for(var i=0,length=groups.length;i",context.querySelector("#recordingGroupItems").innerHTML=html,Dashboard.hideLoadingMsg()}function enableScrollX(){return browserInfo.mobile}function renderRecordings(elem,recordings,cardOptions){recordings.length?elem.classList.remove("hide"):elem.classList.add("hide");var recordingItems=elem.querySelector(".recordingItems");enableScrollX()?(recordingItems.classList.add("hiddenScrollX"),recordingItems.classList.remove("vertical-wrap")):(recordingItems.classList.remove("hiddenScrollX"),recordingItems.classList.add("vertical-wrap"));var supportsImageAnalysis=appHost.supports("imageanalysis"),cardLayout=appHost.preferVisualCards||supportsImageAnalysis;recordingItems.innerHTML=cardBuilder.getCardsHtml(Object.assign({items:recordings,shape:enableScrollX()?"autooverflow":"auto",showTitle:!0,showParentTitle:!0,coverImage:!0,lazy:!0,cardLayout:cardLayout,centerText:!cardLayout,vibrant:supportsImageAnalysis,allowBottomPadding:!enableScrollX(),preferThumb:"auto",overlayText:!1},cardOptions||{})),imageLoader.lazyChildren(recordingItems)}function getBackdropShape(){return enableScrollX()?"overflowBackdrop":"backdrop"}function renderActiveRecordings(context,promise){promise.then(function(result){result.Items.length&&"InProgress"!=result.Items[0].Status&&(result.Items=[]),renderRecordings(context.querySelector("#activeRecordings"),result.Items,{shape:getBackdropShape(),showParentTitle:!1,showTitle:!0,showAirTime:!0,showAirEndTime:!0,showChannelName:!0,cardLayout:!0,vibrant:!0,preferThumb:!0,coverImage:!0})})}function renderLatestRecordings(context,promise){promise.then(function(result){renderRecordings(context.querySelector("#latestRecordings"),result.Items,{shape:enableScrollX()?"overflowBackdrop":"backdrop",showYear:!0,lines:2}),Dashboard.hideLoadingMsg()})}function renderMovieRecordings(context,promise){promise.then(function(result){renderRecordings(context.querySelector("#movieRecordings"),result.Items,{showYear:!0,showParentTitle:!1})})}function renderEpisodeRecordings(context,promise){promise.then(function(result){renderRecordings(context.querySelector("#episodeRecordings"),result.Items,{showSeriesYear:!0,showParentTitle:!1})})}function renderSportsRecordings(context,promise){promise.then(function(result){renderRecordings(context.querySelector("#sportsRecordings"),result.Items,{showYear:!0,showParentTitle:!1})})}function renderKidsRecordings(context,promise){promise.then(function(result){renderRecordings(context.querySelector("#kidsRecordings"),result.Items,{shape:enableScrollX()?"overflowBackdrop":"backdrop",showYear:!0,lines:2})})}function onMoreClick(e){var type=this.getAttribute("data-type");switch(type){case"latest":Dashboard.navigate("livetvitems.html?type=Recordings");break;case"movies":Dashboard.navigate("livetvitems.html?type=Recordings&IsMovie=true");break;case"episodes":Dashboard.navigate("livetvitems.html?type=RecordingSeries");break;case"programs":Dashboard.navigate("livetvitems.html?type=Recordings&IsSeries=false&IsMovie=false");break;case"kids":Dashboard.navigate("livetvitems.html?type=Recordings&IsKids=true");break;case"sports":Dashboard.navigate("livetvitems.html?type=Recordings&IsSports=true")}}return function(view,params,tabContent){function enableFullRender(){return(new Date).getTime()-lastFullRender>3e5}var activeRecordingsPromise,sportsPromise,kidsPromise,moviesPromise,seriesPromise,latestPromise,self=this,lastFullRender=0;categorysyncbuttons.init(tabContent);for(var moreButtons=tabContent.querySelectorAll(".more"),i=0,length=moreButtons.length;i',html+="
",html+=group.Name,html+="
",html+='
',html+=1==group.RecordingCount?Globalize.translate("ValueItemCount",group.RecordingCount):Globalize.translate("ValueItemCountPlural",group.RecordingCount),html+="
",html+="",html+="
",html+=""}function renderRecordingGroups(context,groups){groups.length?context.querySelector("#recordingGroups").classList.remove("hide"):context.querySelector("#recordingGroups").classList.add("hide");var html="";html+='
';for(var i=0,length=groups.length;i",context.querySelector("#recordingGroupItems").innerHTML=html,loading.hide()}function enableScrollX(){return browserInfo.mobile}function renderRecordings(elem,recordings,cardOptions){recordings.length?elem.classList.remove("hide"):elem.classList.add("hide");var recordingItems=elem.querySelector(".recordingItems");enableScrollX()?(recordingItems.classList.add("hiddenScrollX"),recordingItems.classList.remove("vertical-wrap")):(recordingItems.classList.remove("hiddenScrollX"),recordingItems.classList.add("vertical-wrap"));var supportsImageAnalysis=appHost.supports("imageanalysis"),cardLayout=appHost.preferVisualCards||supportsImageAnalysis;recordingItems.innerHTML=cardBuilder.getCardsHtml(Object.assign({items:recordings,shape:enableScrollX()?"autooverflow":"auto",showTitle:!0,showParentTitle:!0,coverImage:!0,lazy:!0,cardLayout:cardLayout,centerText:!cardLayout,vibrant:supportsImageAnalysis,allowBottomPadding:!enableScrollX(),preferThumb:"auto",overlayText:!1},cardOptions||{})),imageLoader.lazyChildren(recordingItems)}function getBackdropShape(){return enableScrollX()?"overflowBackdrop":"backdrop"}function renderActiveRecordings(context,promise){promise.then(function(result){result.Items.length&&"InProgress"!=result.Items[0].Status&&(result.Items=[]),renderRecordings(context.querySelector("#activeRecordings"),result.Items,{shape:getBackdropShape(),showParentTitle:!1,showTitle:!0,showAirTime:!0,showAirEndTime:!0,showChannelName:!0,cardLayout:!0,vibrant:!0,preferThumb:!0,coverImage:!0})})}function renderLatestRecordings(context,promise){promise.then(function(result){renderRecordings(context.querySelector("#latestRecordings"),result.Items,{shape:enableScrollX()?"overflowBackdrop":"backdrop",showYear:!0,lines:2}),loading.hide()})}function renderMovieRecordings(context,promise){promise.then(function(result){renderRecordings(context.querySelector("#movieRecordings"),result.Items,{showYear:!0,showParentTitle:!1})})}function renderEpisodeRecordings(context,promise){promise.then(function(result){renderRecordings(context.querySelector("#episodeRecordings"),result.Items,{showSeriesYear:!0,showParentTitle:!1})})}function renderSportsRecordings(context,promise){promise.then(function(result){renderRecordings(context.querySelector("#sportsRecordings"),result.Items,{showYear:!0,showParentTitle:!1})})}function renderKidsRecordings(context,promise){promise.then(function(result){renderRecordings(context.querySelector("#kidsRecordings"),result.Items,{shape:enableScrollX()?"overflowBackdrop":"backdrop",showYear:!0,lines:2})})}function onMoreClick(e){var type=this.getAttribute("data-type");switch(type){case"latest":Dashboard.navigate("livetvitems.html?type=Recordings");break;case"movies":Dashboard.navigate("livetvitems.html?type=Recordings&IsMovie=true");break;case"episodes":Dashboard.navigate("livetvitems.html?type=RecordingSeries");break;case"programs":Dashboard.navigate("livetvitems.html?type=Recordings&IsSeries=false&IsMovie=false");break;case"kids":Dashboard.navigate("livetvitems.html?type=Recordings&IsKids=true");break;case"sports":Dashboard.navigate("livetvitems.html?type=Recordings&IsSports=true")}}return function(view,params,tabContent){function enableFullRender(){return(new Date).getTime()-lastFullRender>3e5}var activeRecordingsPromise,sportsPromise,kidsPromise,moviesPromise,seriesPromise,latestPromise,self=this,lastFullRender=0;categorysyncbuttons.init(tabContent);for(var moreButtons=tabContent.querySelectorAll(".more"),i=0,length=moreButtons.length;i',html+='live_tv',html+='
',html+='

',html+=tuner.Name,html+="

",html+='
',html+=tuner.SourceType,html+="
",html+='
',"RecordingTv"==tuner.Status?tuner.ChannelName?(html+='',html+=Globalize.translate("StatusRecordingProgram").replace("{0}",tuner.ChannelName),html+=""):html+=Globalize.translate("StatusRecording"):"LiveTv"==tuner.Status?tuner.ChannelName?(html+='',html+=Globalize.translate("StatusWatchingProgram").replace("{0}",tuner.ChannelName),html+=""):html+=Globalize.translate("StatusWatching"):html+=tuner.Status,html+="
",html+="
",tuner.CanReset&&(html+=''),html+="
"}html+=""}tuners.length?page.querySelector(".tunerSection").classList.remove("hide"):page.querySelector(".tunerSection").classList.add("hide");var elem=$(".tunerList",page).html(html);$(".btnResetTuner",elem).on("click",function(){var id=this.getAttribute("data-tunerid");resetTuner(page,id)})}function getServiceHtml(service){var html="";html+="
";var serviceUrl=service.HomePageUrl||"#";html+='

'+service.Name+"

";var versionHtml=service.Version||"Unknown";versionHtml+=service.HasUpdateAvailable?' '+Globalize.translate("LiveTvUpdateAvailable")+"":' '+Globalize.translate("LabelVersionUpToDate"),html+="

"+versionHtml+"

";var status=service.Status;return"Ok"==service.Status?status=''+status+"":(service.StatusMessage&&(status+=" ("+service.StatusMessage+")"),status=''+status+""),html+="

"+Globalize.translate("ValueStatus",status)+"

",html+="
"}function loadPage(page,liveTvInfo){liveTvInfo.IsEnabled?$(".liveTvStatusContent",page).show():$(".liveTvStatusContent",page).hide();var servicesToDisplay=liveTvInfo.Services.filter(function(s){return s.IsVisible});servicesToDisplay.length?$(".servicesSection",page).show():$(".servicesSection",page).hide(),$(".servicesList",page).html(servicesToDisplay.map(getServiceHtml).join(""));for(var tuners=[],i=0,length=liveTvInfo.Services.length;i',html+='
',html+='
',html+='
',html+='
',html+='
dvr
',html+="
",html+="
",html+='
',html+='',html+='
'+(device.FriendlyName||device.Type)+"
",html+='
',html+=device.Url||" ",html+="
",html+="
",html+="
",html+=""}function renderDevices(page,devices){var html=devices.map(getDeviceHtml).join("");page.querySelector(".devicesList").innerHTML=html}function deleteDevice(page,id){var message=Globalize.translate("MessageConfirmDeleteTunerDevice");require(["confirm"],function(confirm){confirm(message,Globalize.translate("HeaderDeleteDevice")).then(function(){Dashboard.showLoadingMsg(),ApiClient.ajax({type:"DELETE",url:ApiClient.getUrl("LiveTv/TunerHosts",{Id:id})}).then(function(){reload(page)})})})}function reload(page){Dashboard.showLoadingMsg(),ApiClient.getLiveTvInfo().then(function(liveTvInfo){loadPage(page,liveTvInfo)},function(){loadPage(page,{Services:[],IsEnabled:!0})})}function submitAddDeviceForm(page){page.querySelector(".dlgAddDevice").close(),Dashboard.showLoadingMsg(),ApiClient.ajax({type:"POST",url:ApiClient.getUrl("LiveTv/TunerHosts"),data:JSON.stringify({Type:$("#selectTunerDeviceType",page).val(),Url:$("#txtDevicePath",page).val()}),contentType:"application/json"}).then(function(){reload(page)},function(){Dashboard.alert({message:Globalize.translate("ErrorAddingTunerDevice")})})}function renderProviders(page,providers){var html="";if(providers.length){html+='
';for(var i=0,length=providers.length;i',html+='dvr',html+='",html+='',html+="
"}html+=""}var elem=$(".providerList",page).html(html);$(".btnOptions",elem).on("click",function(){var id=this.getAttribute("data-id");showProviderOptions(page,id,this)})}function showProviderOptions(page,providerId,button){var items=[];items.push({name:Globalize.translate("ButtonDelete"),id:"delete"}),items.push({name:Globalize.translate("MapChannels"),id:"map"}),require(["actionsheet"],function(actionsheet){actionsheet.show({items:items,positionTo:button}).then(function(id){switch(id){case"delete":deleteProvider(page,providerId);break;case"map":mapChannels(page,providerId)}})})}function mapChannels(page,providerId){require(["components/channelmapper/channelmapper"],function(channelmapper){new channelmapper({serverId:ApiClient.serverInfo().Id,providerId:providerId}).show()})}function deleteProvider(page,id){var message=Globalize.translate("MessageConfirmDeleteGuideProvider");require(["confirm"],function(confirm){confirm(message,Globalize.translate("HeaderDeleteProvider")).then(function(){Dashboard.showLoadingMsg(),ApiClient.ajax({type:"DELETE",url:ApiClient.getUrl("LiveTv/ListingProviders",{Id:id})}).then(function(){reload(page)},function(){reload(page)})})})}function getProviderName(providerId){switch(providerId=providerId.toLowerCase()){case"schedulesdirect":return"Schedules Direct";case"xmltv":return"Xml TV";case"emby":return"Emby Guide";default:return"Unknown"}}function getProviderConfigurationUrl(providerId){switch(providerId=providerId.toLowerCase()){case"xmltv":return"livetvguideprovider.html?type=xmltv";case"schedulesdirect":return"livetvguideprovider.html?type=schedulesdirect";case"emby":return"livetvguideprovider.html?type=emby"}}function addProvider(button){var menuItems=[];menuItems.push({name:"Schedules Direct",id:"SchedulesDirect"}),menuItems.push({name:"Xml TV",id:"xmltv"}),menuItems.push({name:Globalize.translate("ButtonOther"),id:"other"}),require(["actionsheet"],function(actionsheet){actionsheet.show({items:menuItems,positionTo:button,callback:function(id){"other"==id?Dashboard.alert({message:Globalize.translate("ForAdditionalLiveTvOptions")}):Dashboard.navigate(getProviderConfigurationUrl(id))}})})}function addDevice(button){Dashboard.navigate("livetvtuner.html")}function getTabs(){return[{href:"livetvstatus.html",name:Globalize.translate("TabDevices")},{href:"livetvsettings.html",name:Globalize.translate("TabSettings")},{href:"appservices.html?context=livetv",name:Globalize.translate("TabServices")}]}function showDeviceMenu(button,tunerDeviceId){var items=[];items.push({name:Globalize.translate("ButtonDelete"),id:"delete"}),items.push({name:Globalize.translate("ButtonEdit"),id:"edit"}),require(["actionsheet"],function(actionsheet){actionsheet.show({items:items,positionTo:button}).then(function(id){switch(id){case"delete":deleteDevice(dom.parentWithClass(button,"page"),tunerDeviceId);break;case"edit":Dashboard.navigate("livetvtuner.html?id="+tunerDeviceId)}})})}function onDevicesListClick(e){var card=dom.parentWithClass(e.target,"card");if(card){var id=card.getAttribute("data-id"),btnCardOptions=dom.parentWithClass(e.target,"btnCardOptions");btnCardOptions?showDeviceMenu(btnCardOptions,id):Dashboard.navigate("livetvtuner.html?id="+id)}}$(document).on("pageinit","#liveTvStatusPage",function(){var page=this;$(".btnAddDevice",page).on("click",function(){addDevice(this)}),$(".formAddDevice",page).on("submit",function(){return submitAddDeviceForm(page),!1}),$(".btnAddProvider",page).on("click",function(){addProvider(this)}),page.querySelector(".devicesList").addEventListener("click",onDevicesListClick)}).on("pageshow","#liveTvStatusPage",function(){LibraryMenu.setTabs("livetvadmin",0,getTabs);var page=this;reload(page),taskButton({mode:"on",progressElem:page.querySelector(".refreshGuideProgress"),taskKey:"RefreshGuide",button:page.querySelector(".btnRefresh")})}).on("pagehide","#liveTvStatusPage",function(){var page=this;taskButton({mode:"off",progressElem:page.querySelector(".refreshGuideProgress"),taskKey:"RefreshGuide",button:page.querySelector(".btnRefresh")})})}); \ No newline at end of file +define(["jQuery","scripts/taskbutton","dom","layoutManager","loading","listViewStyle","flexStyles","emby-itemscontainer","cardStyle","material-icons"],function($,taskButton,dom,layoutManager,loading){"use strict";function resetTuner(page,id){var message=Globalize.translate("MessageConfirmResetTuner");require(["confirm"],function(confirm){confirm(message,Globalize.translate("HeaderResetTuner")).then(function(){loading.show(),ApiClient.resetLiveTvTuner(id).then(function(){loading.hide(),reload(page)})})})}function renderTuners(page,tuners){var html="";if(tuners.length){html+='
';for(var i=0,length=tuners.length;i',html+='live_tv',html+='
',html+='

',html+=tuner.Name,html+="

",html+='
',html+=tuner.SourceType,html+="
",html+='
',"RecordingTv"==tuner.Status?tuner.ChannelName?(html+='',html+=Globalize.translate("StatusRecordingProgram").replace("{0}",tuner.ChannelName),html+=""):html+=Globalize.translate("StatusRecording"):"LiveTv"==tuner.Status?tuner.ChannelName?(html+='',html+=Globalize.translate("StatusWatchingProgram").replace("{0}",tuner.ChannelName),html+=""):html+=Globalize.translate("StatusWatching"):html+=tuner.Status,html+="
",html+="
",tuner.CanReset&&(html+=''),html+="
"}html+=""}tuners.length?page.querySelector(".tunerSection").classList.remove("hide"):page.querySelector(".tunerSection").classList.add("hide");var elem=$(".tunerList",page).html(html);$(".btnResetTuner",elem).on("click",function(){var id=this.getAttribute("data-tunerid");resetTuner(page,id)})}function getServiceHtml(service){var html="";html+="
";var serviceUrl=service.HomePageUrl||"#";html+='

'+service.Name+"

";var versionHtml=service.Version||"Unknown";versionHtml+=service.HasUpdateAvailable?' '+Globalize.translate("LiveTvUpdateAvailable")+"":' '+Globalize.translate("LabelVersionUpToDate"),html+="

"+versionHtml+"

";var status=service.Status;return"Ok"==service.Status?status=''+status+"":(service.StatusMessage&&(status+=" ("+service.StatusMessage+")"),status=''+status+""),html+="

"+Globalize.translate("ValueStatus",status)+"

",html+="
"}function loadPage(page,liveTvInfo){liveTvInfo.IsEnabled?$(".liveTvStatusContent",page).show():$(".liveTvStatusContent",page).hide();var servicesToDisplay=liveTvInfo.Services.filter(function(s){return s.IsVisible});servicesToDisplay.length?$(".servicesSection",page).show():$(".servicesSection",page).hide(),$(".servicesList",page).html(servicesToDisplay.map(getServiceHtml).join(""));for(var tuners=[],i=0,length=liveTvInfo.Services.length;i',html+='
',html+='
',html+='
',html+='
',html+='
dvr
',html+="
",html+="
",html+='
',html+='',html+='
'+(device.FriendlyName||device.Type)+"
",html+='
',html+=device.Url||" ",html+="
",html+="
",html+="
",html+=""}function renderDevices(page,devices){var html=devices.map(getDeviceHtml).join("");page.querySelector(".devicesList").innerHTML=html}function deleteDevice(page,id){var message=Globalize.translate("MessageConfirmDeleteTunerDevice");require(["confirm"],function(confirm){confirm(message,Globalize.translate("HeaderDeleteDevice")).then(function(){loading.show(),ApiClient.ajax({type:"DELETE",url:ApiClient.getUrl("LiveTv/TunerHosts",{Id:id})}).then(function(){reload(page)})})})}function reload(page){loading.show(),ApiClient.getLiveTvInfo().then(function(liveTvInfo){loadPage(page,liveTvInfo)},function(){loadPage(page,{Services:[],IsEnabled:!0})})}function submitAddDeviceForm(page){page.querySelector(".dlgAddDevice").close(),loading.show(),ApiClient.ajax({type:"POST",url:ApiClient.getUrl("LiveTv/TunerHosts"),data:JSON.stringify({Type:$("#selectTunerDeviceType",page).val(),Url:$("#txtDevicePath",page).val()}),contentType:"application/json"}).then(function(){reload(page)},function(){Dashboard.alert({message:Globalize.translate("ErrorAddingTunerDevice")})})}function renderProviders(page,providers){var html="";if(providers.length){html+='
';for(var i=0,length=providers.length;i',html+='dvr',html+='",html+='',html+="
"}html+=""}var elem=$(".providerList",page).html(html);$(".btnOptions",elem).on("click",function(){var id=this.getAttribute("data-id");showProviderOptions(page,id,this)})}function showProviderOptions(page,providerId,button){var items=[];items.push({name:Globalize.translate("ButtonDelete"),id:"delete"}),items.push({name:Globalize.translate("MapChannels"),id:"map"}),require(["actionsheet"],function(actionsheet){actionsheet.show({items:items,positionTo:button}).then(function(id){switch(id){case"delete":deleteProvider(page,providerId);break;case"map":mapChannels(page,providerId)}})})}function mapChannels(page,providerId){require(["components/channelmapper/channelmapper"],function(channelmapper){new channelmapper({serverId:ApiClient.serverInfo().Id,providerId:providerId}).show()})}function deleteProvider(page,id){var message=Globalize.translate("MessageConfirmDeleteGuideProvider");require(["confirm"],function(confirm){confirm(message,Globalize.translate("HeaderDeleteProvider")).then(function(){loading.show(),ApiClient.ajax({type:"DELETE",url:ApiClient.getUrl("LiveTv/ListingProviders",{Id:id})}).then(function(){reload(page)},function(){reload(page)})})})}function getProviderName(providerId){switch(providerId=providerId.toLowerCase()){case"schedulesdirect":return"Schedules Direct";case"xmltv":return"Xml TV";case"emby":return"Emby Guide";default:return"Unknown"}}function getProviderConfigurationUrl(providerId){switch(providerId=providerId.toLowerCase()){case"xmltv":return"livetvguideprovider.html?type=xmltv";case"schedulesdirect":return"livetvguideprovider.html?type=schedulesdirect";case"emby":return"livetvguideprovider.html?type=emby"}}function addProvider(button){var menuItems=[];menuItems.push({name:"Schedules Direct",id:"SchedulesDirect"}),menuItems.push({name:"Xml TV",id:"xmltv"}),menuItems.push({name:Globalize.translate("ButtonOther"),id:"other"}),require(["actionsheet"],function(actionsheet){actionsheet.show({items:menuItems,positionTo:button,callback:function(id){"other"==id?Dashboard.alert({message:Globalize.translate("ForAdditionalLiveTvOptions")}):Dashboard.navigate(getProviderConfigurationUrl(id))}})})}function addDevice(button){Dashboard.navigate("livetvtuner.html")}function getTabs(){return[{href:"livetvstatus.html",name:Globalize.translate("TabDevices")},{href:"livetvsettings.html",name:Globalize.translate("TabSettings")},{href:"appservices.html?context=livetv",name:Globalize.translate("TabServices")}]}function showDeviceMenu(button,tunerDeviceId){var items=[];items.push({name:Globalize.translate("ButtonDelete"),id:"delete"}),items.push({name:Globalize.translate("ButtonEdit"),id:"edit"}),require(["actionsheet"],function(actionsheet){actionsheet.show({items:items,positionTo:button}).then(function(id){switch(id){case"delete":deleteDevice(dom.parentWithClass(button,"page"),tunerDeviceId);break;case"edit":Dashboard.navigate("livetvtuner.html?id="+tunerDeviceId)}})})}function onDevicesListClick(e){var card=dom.parentWithClass(e.target,"card");if(card){var id=card.getAttribute("data-id"),btnCardOptions=dom.parentWithClass(e.target,"btnCardOptions");btnCardOptions?showDeviceMenu(btnCardOptions,id):Dashboard.navigate("livetvtuner.html?id="+id)}}$(document).on("pageinit","#liveTvStatusPage",function(){var page=this;$(".btnAddDevice",page).on("click",function(){addDevice(this)}),$(".formAddDevice",page).on("submit",function(){return submitAddDeviceForm(page),!1}),$(".btnAddProvider",page).on("click",function(){addProvider(this)}),page.querySelector(".devicesList").addEventListener("click",onDevicesListClick)}).on("pageshow","#liveTvStatusPage",function(){LibraryMenu.setTabs("livetvadmin",0,getTabs);var page=this;reload(page),taskButton({mode:"on",progressElem:page.querySelector(".refreshGuideProgress"),taskKey:"RefreshGuide",button:page.querySelector(".btnRefresh")})}).on("pagehide","#liveTvStatusPage",function(){var page=this;taskButton({mode:"off",progressElem:page.querySelector(".refreshGuideProgress"),taskKey:"RefreshGuide",button:page.querySelector(".btnRefresh")})})}); \ No newline at end of file diff --git a/dashboard-ui/scripts/livetvsuggested.js b/dashboard-ui/scripts/livetvsuggested.js index fbf9bad9af..99cbfbc303 100644 --- a/dashboard-ui/scripts/livetvsuggested.js +++ b/dashboard-ui/scripts/livetvsuggested.js @@ -1 +1 @@ -define(["libraryBrowser","mainTabsManager","cardBuilder","apphost","imageLoader","scrollStyles","emby-itemscontainer","emby-tabs","emby-button"],function(libraryBrowser,mainTabsManager,cardBuilder,appHost,imageLoader){"use strict";function enableScrollX(){return browserInfo.mobile}function renderRecordings(elem,recordings,cardOptions){recordings.length?elem.classList.remove("hide"):elem.classList.add("hide");var recordingItems=elem.querySelector(".recordingItems");enableScrollX()?(recordingItems.classList.add("hiddenScrollX"),recordingItems.classList.remove("vertical-wrap")):(recordingItems.classList.remove("hiddenScrollX"),recordingItems.classList.add("vertical-wrap")),recordingItems.innerHTML=cardBuilder.getCardsHtml(Object.assign({items:recordings,shape:enableScrollX()?"autooverflow":"auto",showTitle:!0,showParentTitle:!0,coverImage:!0,lazy:!0,cardLayout:!0,allowBottomPadding:!enableScrollX(),preferThumb:"auto"},cardOptions||{})),imageLoader.lazyChildren(recordingItems)}function getBackdropShape(){return enableScrollX()?"overflowBackdrop":"backdrop"}function renderActiveRecordings(context,promise){promise.then(function(result){result.Items.length&&"InProgress"!=result.Items[0].Status&&(result.Items=[]),renderRecordings(context.querySelector("#activeRecordings"),result.Items,{shape:getBackdropShape(),showParentTitle:!1,showTitle:!0,showAirTime:!0,showAirEndTime:!0,showChannelName:!0,cardLayout:!0,preferThumb:!0,coverImage:!0,overlayText:!1})})}function getPortraitShape(){return enableScrollX()?"overflowPortrait":"portrait"}function getLimit(){return enableScrollX()?12:8}function loadRecommendedPrograms(page){Dashboard.showLoadingMsg();var limit=getLimit();enableScrollX()&&(limit*=2),ApiClient.getLiveTvRecommendedPrograms({userId:Dashboard.getCurrentUserId(),IsAiring:!0,limit:limit,ImageTypeLimit:1,EnableImageTypes:"Primary,Thumb,Backdrop",EnableTotalRecordCount:!1,Fields:"ChannelInfo"}).then(function(result){renderItems(page,result.Items,"activeProgramItems","play",{showAirDateTime:!1,showAirEndTime:!0}),Dashboard.hideLoadingMsg()})}function reload(page,enableFullRender){renderActiveRecordings(page,ApiClient.getLiveTvRecordings({UserId:Dashboard.getCurrentUserId(),IsInProgress:!0,Fields:"CanDelete,PrimaryImageAspectRatio,BasicSyncInfo",EnableTotalRecordCount:!1,EnableImageTypes:"Primary,Thumb,Backdrop"})),enableFullRender&&(loadRecommendedPrograms(page),ApiClient.getLiveTvRecommendedPrograms({userId:Dashboard.getCurrentUserId(),IsAiring:!1,HasAired:!1,limit:getLimit(),IsMovie:!1,IsSports:!1,IsKids:!1,IsNews:!1,IsSeries:!0,EnableTotalRecordCount:!1,Fields:"ChannelInfo",EnableImageTypes:"Primary,Thumb"}).then(function(result){renderItems(page,result.Items,"upcomingEpisodeItems")}),ApiClient.getLiveTvRecommendedPrograms({userId:Dashboard.getCurrentUserId(),IsAiring:!1,HasAired:!1,limit:getLimit(),IsMovie:!0,EnableTotalRecordCount:!1,Fields:"ChannelInfo",EnableImageTypes:"Primary,Thumb"}).then(function(result){renderItems(page,result.Items,"upcomingTvMovieItems",null,{shape:getPortraitShape(),preferThumb:null})}),ApiClient.getLiveTvRecommendedPrograms({userId:Dashboard.getCurrentUserId(),IsAiring:!1,HasAired:!1,limit:getLimit(),IsSports:!0,EnableTotalRecordCount:!1,Fields:"ChannelInfo",EnableImageTypes:"Primary,Thumb"}).then(function(result){renderItems(page,result.Items,"upcomingSportsItems")}),ApiClient.getLiveTvRecommendedPrograms({userId:Dashboard.getCurrentUserId(),IsAiring:!1,HasAired:!1,limit:getLimit(),IsKids:!0,EnableTotalRecordCount:!1,Fields:"ChannelInfo",EnableImageTypes:"Primary,Thumb"}).then(function(result){renderItems(page,result.Items,"upcomingKidsItems")}),ApiClient.getLiveTvRecommendedPrograms({userId:Dashboard.getCurrentUserId(),IsAiring:!1,HasAired:!1,limit:getLimit(),IsMovie:!1,IsSports:!1,IsKids:!1,IsSeries:!1,EnableTotalRecordCount:!1,Fields:"ChannelInfo",EnableImageTypes:"Primary,Thumb"}).then(function(result){result.Items.length?page.querySelector(".upcomingPrograms").classList.remove("hide"):page.querySelector(".upcomingPrograms").classList.add("hide"),renderItems(page,result.Items,"upcomingProgramItems")}))}function renderItems(page,items,sectionClass,overlayButton,cardOptions){cardOptions=cardOptions||{};var html=cardBuilder.getCardsHtml(Object.assign({items:items,preferThumb:!0,inheritThumb:!1,shape:enableScrollX()?"overflowBackdrop":"backdrop",showParentTitleOrTitle:!0,showTitle:!1,centerText:!0,coverImage:!0,overlayText:!1,lazy:!0,overlayMoreButton:"play"!=overlayButton,overlayPlayButton:"play"==overlayButton,allowBottomPadding:!enableScrollX(),showAirTime:!0,showAirDateTime:!0,showChannelName:!0},cardOptions)),elem=page.querySelector("."+sectionClass);elem.innerHTML=html,imageLoader.lazyChildren(elem)}function getTabs(){return[{name:Globalize.translate("TabSuggestions")},{name:Globalize.translate("TabGuide")},{name:Globalize.translate("TabChannels")},{name:Globalize.translate("TabRecordings")},{name:Globalize.translate("HeaderSchedule")},{name:Globalize.translate("TabSeries")}]}return function(view,params){function enableFullRender(){return(new Date).getTime()-lastFullRender>3e5}function onBeforeTabChange(e){preLoadTab(view,parseInt(e.detail.selectedTabIndex))}function onTabChange(e){var previousTabController=tabControllers[parseInt(e.detail.previousIndex)];previousTabController&&previousTabController.onHide&&previousTabController.onHide(),loadTab(view,parseInt(e.detail.selectedTabIndex))}function initTabs(){var tabsReplaced=mainTabsManager.setTabs(view,currentTabIndex,getTabs);if(tabsReplaced){var viewTabs=document.querySelector(".tabs-viewmenubar");viewTabs.addEventListener("beforetabchange",onBeforeTabChange),viewTabs.addEventListener("tabchange",onTabChange),libraryBrowser.configurePaperLibraryTabs(view,viewTabs,view.querySelectorAll(".pageTabContent"),[0,2,3,4,5]),viewTabs.triggerBeforeTabChange||viewTabs.addEventListener("ready",function(){viewTabs.triggerBeforeTabChange()})}}function getTabController(page,index,callback){var depends=[];switch(index){case 0:break;case 1:depends.push("scripts/livetvguide");break;case 2:depends.push("scripts/livetvchannels");break;case 3:depends.push("scripts/livetvrecordings");break;case 4:depends.push("scripts/livetvschedule");break;case 5:depends.push("scripts/livetvseriestimers")}require(depends,function(controllerFactory){var tabContent;0==index&&(tabContent=view.querySelector(".pageTabContent[data-index='"+index+"']"),self.tabContent=tabContent);var controller=tabControllers[index];controller||(tabContent=view.querySelector(".pageTabContent[data-index='"+index+"']"),controller=index?new controllerFactory(view,params,tabContent):self,tabControllers[index]=controller,controller.initTab&&controller.initTab()),callback(controller)})}function preLoadTab(page,index){getTabController(page,index,function(controller){renderedTabs.indexOf(index)==-1&&controller.preRender&&controller.preRender()})}function loadTab(page,index){currentTabIndex=index,getTabController(page,index,function(controller){1===index?document.body.classList.add("autoScrollY"):document.body.classList.remove("autoScrollY"),renderedTabs.indexOf(index)==-1?(1===index&&renderedTabs.push(index),controller.renderTab()):controller.onShow&&controller.onShow(),currentTabController=controller})}var self=this,currentTabIndex=parseInt(params.tab||"0"),lastFullRender=0;self.initTab=function(){for(var tabContent=view.querySelector(".pageTabContent[data-index='0']"),containers=tabContent.querySelectorAll(".itemsContainer"),i=0,length=containers.length;i3e5}function onBeforeTabChange(e){preLoadTab(view,parseInt(e.detail.selectedTabIndex))}function onTabChange(e){var previousTabController=tabControllers[parseInt(e.detail.previousIndex)];previousTabController&&previousTabController.onHide&&previousTabController.onHide(),loadTab(view,parseInt(e.detail.selectedTabIndex))}function initTabs(){var tabsReplaced=mainTabsManager.setTabs(view,currentTabIndex,getTabs);if(tabsReplaced){var viewTabs=document.querySelector(".tabs-viewmenubar");viewTabs.addEventListener("beforetabchange",onBeforeTabChange),viewTabs.addEventListener("tabchange",onTabChange),libraryBrowser.configurePaperLibraryTabs(view,viewTabs,view.querySelectorAll(".pageTabContent"),[0,2,3,4,5]),viewTabs.triggerBeforeTabChange||viewTabs.addEventListener("ready",function(){viewTabs.triggerBeforeTabChange()})}}function getTabController(page,index,callback){var depends=[];switch(index){case 0:break;case 1:depends.push("scripts/livetvguide");break;case 2:depends.push("scripts/livetvchannels");break;case 3:depends.push("scripts/livetvrecordings");break;case 4:depends.push("scripts/livetvschedule");break;case 5:depends.push("scripts/livetvseriestimers")}require(depends,function(controllerFactory){var tabContent;0==index&&(tabContent=view.querySelector(".pageTabContent[data-index='"+index+"']"),self.tabContent=tabContent);var controller=tabControllers[index];controller||(tabContent=view.querySelector(".pageTabContent[data-index='"+index+"']"),controller=index?new controllerFactory(view,params,tabContent):self,tabControllers[index]=controller,controller.initTab&&controller.initTab()),callback(controller)})}function preLoadTab(page,index){getTabController(page,index,function(controller){renderedTabs.indexOf(index)==-1&&controller.preRender&&controller.preRender()})}function loadTab(page,index){currentTabIndex=index,getTabController(page,index,function(controller){1===index?document.body.classList.add("autoScrollY"):document.body.classList.remove("autoScrollY"),renderedTabs.indexOf(index)==-1?(1===index&&renderedTabs.push(index),controller.renderTab()):controller.onShow&&controller.onShow(),currentTabController=controller})}var self=this,currentTabIndex=parseInt(params.tab||"0"),lastFullRender=0;self.initTab=function(){for(var tabContent=view.querySelector(".pageTabContent[data-index='0']"),containers=tabContent.querySelectorAll(".itemsContainer"),i=0,length=containers.length;i",html+=""}var container=context.querySelector("#divUsers");container.innerHTML=html}var metroColors=["#6FBD45","#4BB3DD","#4164A5","#E12026","#800080","#E1B222","#008040","#0094FF","#FF00C7","#FF870F","#7F0037"];return function(view,params){function getApiClient(){var serverId=params.serverid;return serverId?connectionManager.getOrCreateApiClient(serverId):ApiClient}function showVisualForm(){view.querySelector(".visualLoginForm").classList.remove("hide"),view.querySelector(".manualLoginForm").classList.add("hide")}view.querySelector("#divUsers").addEventListener("click",function(e){var cardContent=dom.parentWithClass(e.target,"cardContent");if(cardContent){var context=view,id=cardContent.getAttribute("data-userid"),name=cardContent.getAttribute("data-username"),haspw=cardContent.getAttribute("data-haspw");"manual"==id?(context.querySelector("#txtManualName").value="",showManualForm(context,!0)):"false"==haspw?authenticateUserByName(context,getApiClient(),name,""):(context.querySelector("#txtManualName").value=name,context.querySelector("#txtManualPassword").value="",showManualForm(context,!0,!0))}}),view.querySelector(".manualLoginForm").addEventListener("submit",function(e){appSettings.enableAutoLogin(view.querySelector(".chkRememberLogin").checked);var apiClient=getApiClient();return authenticateUserByName(view,apiClient,view.querySelector("#txtManualName").value,view.querySelector("#txtManualPassword").value),e.preventDefault(),!1}),view.querySelector(".btnForgotPassword").addEventListener("click",function(){Dashboard.navigate("forgotpassword.html")}),view.querySelector(".btnCancel").addEventListener("click",showVisualForm),view.querySelector(".btnManual").addEventListener("click",function(){view.querySelector("#txtManualName").value="",showManualForm(view,!0)}),view.addEventListener("viewshow",function(e){Dashboard.showLoadingMsg();var apiClient=getApiClient();apiClient.getPublicUsers().then(function(users){users.length?users.length&&users[0].EnableAutoLogin?authenticateUserByName(view,apiClient,users[0].Name,""):(showVisualForm(),loadUserList(view,apiClient,users)):(view.querySelector("#txtManualName").value="",showManualForm(view,!1,!1)),Dashboard.hideLoadingMsg()}),apiClient.getJSON(apiClient.getUrl("Branding/Configuration")).then(function(options){view.querySelector(".disclaimer").innerHTML=options.LoginDisclaimer||""}),Dashboard.isConnectMode()?view.querySelector(".connectButtons").classList.remove("hide"):view.querySelector(".connectButtons").classList.add("hide")})}}); \ No newline at end of file +define(["appSettings","dom","connectionManager","loading","cardStyle","emby-checkbox"],function(appSettings,dom,connectionManager,loading){"use strict";function authenticateUserByName(page,apiClient,username,password){loading.show(),apiClient.authenticateUserByName(username,password).then(function(result){var newUrl,user=result.User,serverId=getParameterByName("serverid");newUrl=user.Policy.IsAdministrator&&!serverId?"dashboard.html":"home.html",loading.hide(),Dashboard.onServerChanged(user.Id,result.AccessToken,apiClient),Dashboard.navigate(newUrl)},function(response){page.querySelector("#txtManualName").value="",page.querySelector("#txtManualPassword").value="",loading.hide(),401==response.status?require(["toast"],function(toast){toast(Globalize.translate("MessageInvalidUser"))}):showServerConnectionFailure()})}function showServerConnectionFailure(){Dashboard.alert({message:Globalize.translate("MessageUnableToConnectToServer"),title:Globalize.translate("HeaderConnectionFailure")})}function showManualForm(context,showCancel,focusPassword){context.querySelector(".chkRememberLogin").checked=appSettings.enableAutoLogin(),context.querySelector(".manualLoginForm").classList.remove("hide"),context.querySelector(".visualLoginForm").classList.add("hide"),focusPassword?context.querySelector("#txtManualPassword").focus():context.querySelector("#txtManualName").focus(),showCancel?context.querySelector(".btnCancel").classList.remove("hide"):context.querySelector(".btnCancel").classList.add("hide")}function getRandomMetroColor(){var index=Math.floor(Math.random()*(metroColors.length-1));return metroColors[index]}function getMetroColor(str){if(str){for(var character=String(str.substr(0,1).charCodeAt()),sum=0,i=0;i",html+=""}var container=context.querySelector("#divUsers");container.innerHTML=html}var metroColors=["#6FBD45","#4BB3DD","#4164A5","#E12026","#800080","#E1B222","#008040","#0094FF","#FF00C7","#FF870F","#7F0037"];return function(view,params){function getApiClient(){var serverId=params.serverid;return serverId?connectionManager.getOrCreateApiClient(serverId):ApiClient}function showVisualForm(){view.querySelector(".visualLoginForm").classList.remove("hide"),view.querySelector(".manualLoginForm").classList.add("hide")}view.querySelector("#divUsers").addEventListener("click",function(e){var cardContent=dom.parentWithClass(e.target,"cardContent");if(cardContent){var context=view,id=cardContent.getAttribute("data-userid"),name=cardContent.getAttribute("data-username"),haspw=cardContent.getAttribute("data-haspw");"manual"==id?(context.querySelector("#txtManualName").value="",showManualForm(context,!0)):"false"==haspw?authenticateUserByName(context,getApiClient(),name,""):(context.querySelector("#txtManualName").value=name,context.querySelector("#txtManualPassword").value="",showManualForm(context,!0,!0))}}),view.querySelector(".manualLoginForm").addEventListener("submit",function(e){appSettings.enableAutoLogin(view.querySelector(".chkRememberLogin").checked);var apiClient=getApiClient();return authenticateUserByName(view,apiClient,view.querySelector("#txtManualName").value,view.querySelector("#txtManualPassword").value),e.preventDefault(),!1}),view.querySelector(".btnForgotPassword").addEventListener("click",function(){Dashboard.navigate("forgotpassword.html")}),view.querySelector(".btnCancel").addEventListener("click",showVisualForm),view.querySelector(".btnManual").addEventListener("click",function(){view.querySelector("#txtManualName").value="",showManualForm(view,!0)}),view.addEventListener("viewshow",function(e){loading.show();var apiClient=getApiClient();apiClient.getPublicUsers().then(function(users){users.length?users.length&&users[0].EnableAutoLogin?authenticateUserByName(view,apiClient,users[0].Name,""):(showVisualForm(),loadUserList(view,apiClient,users)):(view.querySelector("#txtManualName").value="",showManualForm(view,!1,!1)),loading.hide()}),apiClient.getJSON(apiClient.getUrl("Branding/Configuration")).then(function(options){view.querySelector(".disclaimer").innerHTML=options.LoginDisclaimer||""}),Dashboard.isConnectMode()?view.querySelector(".connectButtons").classList.remove("hide"):view.querySelector(".connectButtons").classList.add("hide")})}}); \ No newline at end of file diff --git a/dashboard-ui/scripts/medialibrarypage.js b/dashboard-ui/scripts/medialibrarypage.js index e5e7e67248..66e6305c26 100644 --- a/dashboard-ui/scripts/medialibrarypage.js +++ b/dashboard-ui/scripts/medialibrarypage.js @@ -1 +1 @@ -define(["jQuery","apphost","scripts/taskbutton","cardStyle"],function($,appHost,taskButton){"use strict";function changeCollectionType(page,virtualFolder){require(["alert"],function(alert){alert({title:Globalize.translate("HeaderChangeFolderType"),text:Globalize.translate("HeaderChangeFolderTypeHelp")})})}function addVirtualFolder(page){require(["medialibrarycreator"],function(medialibrarycreator){(new medialibrarycreator).show({collectionTypeOptions:getCollectionTypeOptions().filter(function(f){return!f.hidden}),refresh:shouldRefreshLibraryAfterChanges(page)}).then(function(hasChanges){hasChanges&&reloadLibrary(page)})})}function editVirtualFolder(page,virtualFolder){require(["medialibraryeditor"],function(medialibraryeditor){(new medialibraryeditor).show({refresh:shouldRefreshLibraryAfterChanges(page),library:virtualFolder}).then(function(hasChanges){hasChanges&&reloadLibrary(page)})})}function deleteVirtualFolder(page,virtualFolder){var msg=Globalize.translate("MessageAreYouSureYouWishToRemoveMediaFolder");virtualFolder.Locations.length&&(msg+="

"+Globalize.translate("MessageTheFollowingLocationWillBeRemovedFromLibrary")+"

",msg+=virtualFolder.Locations.join("
")),require(["confirm"],function(confirm){confirm(msg,Globalize.translate("HeaderRemoveMediaFolder")).then(function(){var refreshAfterChange=shouldRefreshLibraryAfterChanges(page);ApiClient.removeVirtualFolder(virtualFolder.Name,refreshAfterChange).then(function(){reloadLibrary(page)})})})}function renameVirtualFolder(page,virtualFolder){require(["prompt"],function(prompt){prompt({label:Globalize.translate("LabelNewName"),confirmText:Globalize.translate("ButtonRename")}).then(function(newName){if(newName&&newName!=virtualFolder.Name){var refreshAfterChange=shouldRefreshLibraryAfterChanges(page);ApiClient.renameVirtualFolder(virtualFolder.Name,newName,refreshAfterChange).then(function(){reloadLibrary(page)})}})})}function showCardMenu(page,elem,virtualFolders){var card=$(elem).parents(".card")[0],index=parseInt(card.getAttribute("data-index")),virtualFolder=virtualFolders[index],menuItems=[];menuItems.push({name:Globalize.translate("ButtonChangeContentType"),id:"changetype",ironIcon:"videocam"}),menuItems.push({name:Globalize.translate("ButtonEditImages"),id:"editimages",ironIcon:"photo"}),menuItems.push({name:Globalize.translate("ButtonManageFolders"),id:"edit",ironIcon:"folder_open"}),menuItems.push({name:Globalize.translate("ButtonRemove"),id:"delete",ironIcon:"remove"}),menuItems.push({name:Globalize.translate("ButtonRename"),id:"rename",ironIcon:"mode_edit"}),require(["actionsheet"],function(actionsheet){actionsheet.show({items:menuItems,positionTo:elem,callback:function(resultId){switch(resultId){case"changetype":changeCollectionType(page,virtualFolder);break;case"edit":editVirtualFolder(page,virtualFolder);break;case"editimages":editImages(page,virtualFolder);break;case"rename":renameVirtualFolder(page,virtualFolder);break;case"delete":deleteVirtualFolder(page,virtualFolder)}}})})}function reloadLibrary(page){Dashboard.showLoadingMsg(),ApiClient.getVirtualFolders().then(function(result){reloadVirtualFolders(page,result)})}function shouldRefreshLibraryAfterChanges(page){return $(page).is("#mediaLibraryPage")}function reloadVirtualFolders(page,virtualFolders){var html="";virtualFolders.push({Name:Globalize.translate("ButtonAddMediaLibrary"),icon:"add_circle",Locations:[],showType:!1,showLocations:!1,showMenu:!1,showNameWithIcon:!0});for(var i=0,length=virtualFolders.length;i',html+='
',html+='
',html+='
',html+='
';var imgUrl="";if(virtualFolder.PrimaryImageItemId&&(imgUrl=ApiClient.getScaledImageUrl(virtualFolder.PrimaryImageItemId,{type:"Primary"})),imgUrl?html+='
":virtualFolder.showNameWithIcon||(html+='
',html+=''+(virtualFolder.icon||getIcon(virtualFolder.CollectionType))+"",html+="
"),!imgUrl&&virtualFolder.showNameWithIcon&&(html+='

',html+=''+(virtualFolder.icon||getIcon(virtualFolder.CollectionType))+"",virtualFolder.showNameWithIcon&&(html+='
',html+=virtualFolder.Name,html+="
"),html+="

"),html+="
",html+="
",html+='
',virtualFolder.showMenu!==!1){var moreIcon="dots-horiz"==appHost.moreIcon?"":"";html+='
',html+='",html+="
"}html+="
",html+=virtualFolder.showNameWithIcon?" ":virtualFolder.Name,html+="
";var typeName=getCollectionTypeOptions().filter(function(t){return t.value==virtualFolder.CollectionType})[0];return typeName=typeName?typeName.name:Globalize.translate("FolderTypeUnset"),html+="
",html+=virtualFolder.showType===!1?" ":typeName,html+="
",virtualFolder.showLocations===!1?(html+="
",html+=" ",html+="
"):virtualFolder.Locations.length?1==virtualFolder.Locations.length?(html+="
",html+=virtualFolder.Locations[0],html+="
"):(html+="
",html+=Globalize.translate("NumLocationsValue",virtualFolder.Locations.length),html+="
"):(html+="
",html+=Globalize.translate("NumLocationsValue",virtualFolder.Locations.length),html+="
"),html+="
",html+="
",html+=""}function getTabs(){return[{href:"library.html",name:Globalize.translate("HeaderLibraries")},{href:"librarydisplay.html",name:Globalize.translate("TabDisplay")},{href:"metadataimages.html",name:Globalize.translate("TabMetadata")},{href:"metadatanfo.html",name:Globalize.translate("TabNfoSettings")},{href:"librarysettings.html",name:Globalize.translate("TabAdvanced")}]}window.WizardLibraryPage={next:function(){Dashboard.showLoadingMsg();var apiClient=ApiClient;apiClient.ajax({type:"POST",url:apiClient.getUrl("System/Configuration/MetadataPlugins/Autoset")}).then(function(){Dashboard.hideLoadingMsg(),Dashboard.navigate("wizardsettings.html")})}},pageClassOn("pageshow","mediaLibraryPage",function(){var page=this;reloadLibrary(page)}),pageIdOn("pageshow","mediaLibraryPage",function(){LibraryMenu.setTabs("librarysetup",0,getTabs);var page=this;taskButton({mode:"on",progressElem:page.querySelector(".refreshProgress"),taskKey:"RefreshLibrary",button:page.querySelector(".btnRefresh")})}),pageIdOn("pagebeforehide","mediaLibraryPage",function(){var page=this;taskButton({mode:"off",progressElem:page.querySelector(".refreshProgress"),taskKey:"RefreshLibrary",button:page.querySelector(".btnRefresh")})})}); \ No newline at end of file +define(["jQuery","apphost","scripts/taskbutton","loading","cardStyle"],function($,appHost,taskButton,loading){"use strict";function changeCollectionType(page,virtualFolder){require(["alert"],function(alert){alert({title:Globalize.translate("HeaderChangeFolderType"),text:Globalize.translate("HeaderChangeFolderTypeHelp")})})}function addVirtualFolder(page){require(["medialibrarycreator"],function(medialibrarycreator){(new medialibrarycreator).show({collectionTypeOptions:getCollectionTypeOptions().filter(function(f){return!f.hidden}),refresh:shouldRefreshLibraryAfterChanges(page)}).then(function(hasChanges){hasChanges&&reloadLibrary(page)})})}function editVirtualFolder(page,virtualFolder){require(["medialibraryeditor"],function(medialibraryeditor){(new medialibraryeditor).show({refresh:shouldRefreshLibraryAfterChanges(page),library:virtualFolder}).then(function(hasChanges){hasChanges&&reloadLibrary(page)})})}function deleteVirtualFolder(page,virtualFolder){var msg=Globalize.translate("MessageAreYouSureYouWishToRemoveMediaFolder");virtualFolder.Locations.length&&(msg+="

"+Globalize.translate("MessageTheFollowingLocationWillBeRemovedFromLibrary")+"

",msg+=virtualFolder.Locations.join("
")),require(["confirm"],function(confirm){confirm(msg,Globalize.translate("HeaderRemoveMediaFolder")).then(function(){var refreshAfterChange=shouldRefreshLibraryAfterChanges(page);ApiClient.removeVirtualFolder(virtualFolder.Name,refreshAfterChange).then(function(){reloadLibrary(page)})})})}function renameVirtualFolder(page,virtualFolder){require(["prompt"],function(prompt){prompt({label:Globalize.translate("LabelNewName"),confirmText:Globalize.translate("ButtonRename")}).then(function(newName){if(newName&&newName!=virtualFolder.Name){var refreshAfterChange=shouldRefreshLibraryAfterChanges(page);ApiClient.renameVirtualFolder(virtualFolder.Name,newName,refreshAfterChange).then(function(){reloadLibrary(page)})}})})}function showCardMenu(page,elem,virtualFolders){var card=$(elem).parents(".card")[0],index=parseInt(card.getAttribute("data-index")),virtualFolder=virtualFolders[index],menuItems=[];menuItems.push({name:Globalize.translate("ButtonChangeContentType"),id:"changetype",ironIcon:"videocam"}),menuItems.push({name:Globalize.translate("ButtonEditImages"),id:"editimages",ironIcon:"photo"}),menuItems.push({name:Globalize.translate("ButtonManageFolders"),id:"edit",ironIcon:"folder_open"}),menuItems.push({name:Globalize.translate("ButtonRemove"),id:"delete",ironIcon:"remove"}),menuItems.push({name:Globalize.translate("ButtonRename"),id:"rename",ironIcon:"mode_edit"}),require(["actionsheet"],function(actionsheet){actionsheet.show({items:menuItems,positionTo:elem,callback:function(resultId){switch(resultId){case"changetype":changeCollectionType(page,virtualFolder);break;case"edit":editVirtualFolder(page,virtualFolder);break;case"editimages":editImages(page,virtualFolder);break;case"rename":renameVirtualFolder(page,virtualFolder);break;case"delete":deleteVirtualFolder(page,virtualFolder)}}})})}function reloadLibrary(page){loading.show(),ApiClient.getVirtualFolders().then(function(result){reloadVirtualFolders(page,result)})}function shouldRefreshLibraryAfterChanges(page){return $(page).is("#mediaLibraryPage")}function reloadVirtualFolders(page,virtualFolders){var html="";virtualFolders.push({Name:Globalize.translate("ButtonAddMediaLibrary"),icon:"add_circle",Locations:[],showType:!1,showLocations:!1,showMenu:!1,showNameWithIcon:!0});for(var i=0,length=virtualFolders.length;i',html+='
',html+='
',html+='
',html+='
';var imgUrl="";if(virtualFolder.PrimaryImageItemId&&(imgUrl=ApiClient.getScaledImageUrl(virtualFolder.PrimaryImageItemId,{type:"Primary"})),imgUrl?html+='
":virtualFolder.showNameWithIcon||(html+='
',html+=''+(virtualFolder.icon||getIcon(virtualFolder.CollectionType))+"",html+="
"),!imgUrl&&virtualFolder.showNameWithIcon&&(html+='

',html+=''+(virtualFolder.icon||getIcon(virtualFolder.CollectionType))+"",virtualFolder.showNameWithIcon&&(html+='
',html+=virtualFolder.Name,html+="
"),html+="

"),html+="
",html+="
",html+='
',virtualFolder.showMenu!==!1){var moreIcon="dots-horiz"==appHost.moreIcon?"":"";html+='
',html+='",html+="
"}html+="
",html+=virtualFolder.showNameWithIcon?" ":virtualFolder.Name,html+="
";var typeName=getCollectionTypeOptions().filter(function(t){return t.value==virtualFolder.CollectionType})[0];return typeName=typeName?typeName.name:Globalize.translate("FolderTypeUnset"),html+="
",html+=virtualFolder.showType===!1?" ":typeName,html+="
",virtualFolder.showLocations===!1?(html+="
",html+=" ",html+="
"):virtualFolder.Locations.length?1==virtualFolder.Locations.length?(html+="
",html+=virtualFolder.Locations[0],html+="
"):(html+="
",html+=Globalize.translate("NumLocationsValue",virtualFolder.Locations.length),html+="
"):(html+="
",html+=Globalize.translate("NumLocationsValue",virtualFolder.Locations.length),html+="
"),html+="
",html+="
",html+=""}function getTabs(){return[{href:"library.html",name:Globalize.translate("HeaderLibraries")},{href:"librarydisplay.html",name:Globalize.translate("TabDisplay")},{href:"metadataimages.html",name:Globalize.translate("TabMetadata")},{href:"metadatanfo.html",name:Globalize.translate("TabNfoSettings")},{href:"librarysettings.html",name:Globalize.translate("TabAdvanced")}]}window.WizardLibraryPage={next:function(){loading.show();var apiClient=ApiClient;apiClient.ajax({type:"POST",url:apiClient.getUrl("System/Configuration/MetadataPlugins/Autoset")}).then(function(){loading.hide(),Dashboard.navigate("wizardsettings.html")})}},pageClassOn("pageshow","mediaLibraryPage",function(){var page=this;reloadLibrary(page)}),pageIdOn("pageshow","mediaLibraryPage",function(){LibraryMenu.setTabs("librarysetup",0,getTabs);var page=this;taskButton({mode:"on",progressElem:page.querySelector(".refreshProgress"),taskKey:"RefreshLibrary",button:page.querySelector(".btnRefresh")})}),pageIdOn("pagebeforehide","mediaLibraryPage",function(){var page=this;taskButton({mode:"off",progressElem:page.querySelector(".refreshProgress"),taskKey:"RefreshLibrary",button:page.querySelector(".btnRefresh")})})}); \ No newline at end of file diff --git a/dashboard-ui/scripts/metadataimagespage.js b/dashboard-ui/scripts/metadataimagespage.js index 7931fdd778..94c2180592 100644 --- a/dashboard-ui/scripts/metadataimagespage.js +++ b/dashboard-ui/scripts/metadataimagespage.js @@ -1 +1 @@ -define(["jQuery","dom","listViewStyle"],function($,dom){"use strict";function populateLanguages(select){return ApiClient.getCultures().then(function(languages){var html="";html+="";for(var i=0,length=languages.length;i"+culture.DisplayName+""}select.innerHTML=html})}function populateCountries(select){return ApiClient.getCountries().then(function(allCountries){var html="";html+="";for(var i=0,length=allCountries.length;i"+culture.DisplayName+""}select.innerHTML=html})}function loadTabs(page,tabs){for(var html="",i=0,length=tabs.length;i"+Globalize.translate(tab.name)+""}$("#selectItemType",page).html(html).trigger("change"),Dashboard.hideLoadingMsg()}function loadType(page,type){Dashboard.showLoadingMsg(),currentType=type;var promise1=ApiClient.getServerConfiguration(),promise2=ApiClient.getJSON(ApiClient.getUrl("System/Configuration/MetadataPlugins"));Promise.all([promise1,promise2]).then(function(responses){var config=responses[0],metadataPlugins=responses[1];config=config.MetadataOptions.filter(function(c){return c.ItemType==type})[0],config?(renderType(page,type,config,metadataPlugins),Dashboard.hideLoadingMsg()):ApiClient.getJSON(ApiClient.getUrl("System/Configuration/MetadataOptions/Default")).then(function(defaultConfig){config=defaultConfig,renderType(page,type,config,metadataPlugins),Dashboard.hideLoadingMsg()})})}function setVisibilityOfBackdrops(elem,visible){visible?(elem.show(),$("input",elem).attr("required","required")):(elem.hide(),$("input",elem).attr("required","").removeAttr("required"))}function renderType(page,type,config,metadataPlugins){var metadataInfo=metadataPlugins.filter(function(f){return type==f.ItemType})[0];setVisibilityOfBackdrops($(".backdropFields",page),metadataInfo.SupportedImageTypes.indexOf("Backdrop")!=-1),setVisibilityOfBackdrops($(".screenshotFields",page),metadataInfo.SupportedImageTypes.indexOf("Screenshot")!=-1),$(".imageType",page).each(function(){var imageType=this.getAttribute("data-imagetype"),container=dom.parentWithTag(this,"LABEL");metadataInfo.SupportedImageTypes.indexOf(imageType)==-1?container.classList.add("hide"):container.classList.remove("hide"),getImageConfig(config,imageType).Limit?this.checked=!0:this.checked=!1});var backdropConfig=getImageConfig(config,"Backdrop");$("#txtMaxBackdrops",page).val(backdropConfig.Limit),$("#txtMinBackdropDownloadWidth",page).val(backdropConfig.MinWidth);var screenshotConfig=getImageConfig(config,"Screenshot");$("#txtMaxScreenshots",page).val(screenshotConfig.Limit),$("#txtMinScreenshotDownloadWidth",page).val(screenshotConfig.MinWidth),renderMetadataLocals(page,type,config,metadataInfo),renderMetadataFetchers(page,type,config,metadataInfo),renderMetadataSavers(page,type,config,metadataInfo),renderImageFetchers(page,type,config,metadataInfo)}function getImageConfig(config,type){return config.ImageOptions.filter(function(i){return i.Type==type})[0]||{Type:type,MinWidth:"Backdrop"==type?1280:0,Limit:"Backdrop"==type?3:1}}function renderImageFetchers(page,type,config,metadataInfo){var plugins=metadataInfo.Plugins.filter(function(p){return"ImageFetcher"==p.Type}),html="";if(!plugins.length)return void $(".imageFetchers",page).html(html).hide();var i,length,plugin;for(html+='

'+Globalize.translate("LabelImageFetchers")+"

",html+='
',i=0,length=plugins.length;i',html+='",html+='
',html+='

',html+=plugin.Name,html+="

",html+="
",html+='',html+='',html+="
"}html+="",html+='
'+Globalize.translate("LabelImageFetchersHelp")+"
";var elem=$(".imageFetchers",page).html(html).show();$(".btnDown",elem).on("click",function(){var elemToMove=$(this).parents(".imageFetcherItem")[0],insertAfter=$(elemToMove).next(".imageFetcherItem")[0];insertAfter&&(elemToMove.parentNode.removeChild(elemToMove),$(elemToMove).insertAfter(insertAfter))}),$(".btnUp",elem).on("click",function(){var elemToMove=$(this).parents(".imageFetcherItem")[0],insertBefore=$(elemToMove).prev(".imageFetcherItem")[0];insertBefore&&(elemToMove.parentNode.removeChild(elemToMove),$(elemToMove).insertBefore(insertBefore))})}function renderMetadataSavers(page,type,config,metadataInfo){var plugins=metadataInfo.Plugins.filter(function(p){return"MetadataSaver"==p.Type}),html="";if(!plugins.length)return void $(".metadataSavers",page).html(html).hide();html+='

'+Globalize.translate("LabelMetadataSavers")+"

",html+='
';for(var i=0,length=plugins.length;i"+plugin.Name+""}html+="
",html+='
'+Globalize.translate("LabelMetadataSaversHelp")+"
",page.querySelector(".metadataSavers").innerHTML=html}function renderMetadataFetchers(page,type,config,metadataInfo){var plugins=metadataInfo.Plugins.filter(function(p){return"MetadataFetcher"==p.Type}),html="";if(!plugins.length)return void $(".metadataFetchers",page).html(html).hide();var i,length,plugin;for(html+='

'+Globalize.translate("LabelMetadataDownloaders")+"

",html+='
',i=0,length=plugins.length;i',html+='",html+='
',html+='

',html+=plugin.Name,html+="

",html+="
",html+='',html+='',html+="
"}html+="",html+='
'+Globalize.translate("LabelMetadataDownloadersHelp")+"
";var elem=$(".metadataFetchers",page).html(html).show();$(".btnDown",elem).on("click",function(){var elemToMove=$(this).parents(".metadataFetcherItem")[0],insertAfter=$(elemToMove).next(".metadataFetcherItem")[0];insertAfter&&(elemToMove.parentNode.removeChild(elemToMove),$(elemToMove).insertAfter(insertAfter))}),$(".btnUp",elem).on("click",function(){var elemToMove=$(this).parents(".metadataFetcherItem")[0],insertBefore=$(elemToMove).prev(".metadataFetcherItem")[0];insertBefore&&(elemToMove.parentNode.removeChild(elemToMove),$(elemToMove).insertBefore(insertBefore))})}function renderMetadataLocals(page,type,config,metadataInfo){var plugins=metadataInfo.Plugins.filter(function(p){return"LocalMetadataProvider"==p.Type}),html="";if(plugins.length<2)return void $(".metadataReaders",page).html(html).hide();html+='

'+Globalize.translate("LabelMetadataReaders")+"

",html+='
';for(var i=0,length=plugins.length;i',html+='live_tv',html+='
',html+='

',html+=plugin.Name,html+="

",html+="
",i>0?html+='':plugins.length>1&&(html+=''),html+="
"}html+="",html+='
'+Globalize.translate("LabelMetadataReadersHelp")+"
",$(".metadataReaders",page).html(html).show()}function loadPage(page){var promises=[ApiClient.getServerConfiguration(),populateLanguages(page.querySelector("#selectLanguage")),populateCountries(page.querySelector("#selectCountry"))];Promise.all(promises).then(function(responses){var config=responses[0];page.querySelector("#selectLanguage").value=config.PreferredMetadataLanguage||"",page.querySelector("#selectCountry").value=config.MetadataCountryCode||""}),loadTabs(page,[{name:"OptionMovies",type:"Movie"},{name:"OptionCollections",type:"BoxSet"},{name:"OptionSeries",type:"Series"},{name:"OptionSeasons",type:"Season"},{name:"OptionEpisodes",type:"Episode"},{name:"OptionGames",type:"Game"},{name:"OptionGameSystems",type:"GameSystem"},{name:"OptionMusicArtists",type:"MusicArtist"},{name:"OptionMusicAlbums",type:"MusicAlbum"},{name:"OptionMusicVideos",type:"MusicVideo"},{name:"OptionSongs",type:"Audio"},{name:"OptionHomeVideos",type:"Video"},{name:"OptionBooks",type:"Book"},{name:"OptionPeople",type:"Person"}])}function saveSettingsIntoConfig(form,config){config.DisabledMetadataSavers=$(".chkMetadataSaver",form).get().filter(function(c){return!c.checked}).map(function(c){return c.getAttribute("data-pluginname")}),config.LocalMetadataReaderOrder=$(".localReaderOption",form).get().map(function(c){return c.getAttribute("data-pluginname")}),config.DisabledMetadataFetchers=$(".chkMetadataFetcher",form).get().filter(function(c){return!c.checked}).map(function(c){return c.getAttribute("data-pluginname")}),config.MetadataFetcherOrder=$(".chkMetadataFetcher",form).get().map(function(c){return c.getAttribute("data-pluginname")}),config.DisabledImageFetchers=$(".chkImageFetcher",form).get().filter(function(c){return!c.checked}).map(function(c){return c.getAttribute("data-pluginname")}),config.ImageFetcherOrder=$(".chkImageFetcher",form).get().map(function(c){return c.getAttribute("data-pluginname")}),config.ImageOptions=$(".imageType:not(.hide)",form).get().map(function(c){return{Type:c.getAttribute("data-imagetype"),Limit:c.checked?1:0,MinWidth:0}}),config.ImageOptions.push({Type:"Backdrop",Limit:$("#txtMaxBackdrops",form).val(),MinWidth:$("#txtMinBackdropDownloadWidth",form).val()}),config.ImageOptions.push({Type:"Screenshot",Limit:$("#txtMaxScreenshots",form).val(),MinWidth:$("#txtMinScreenshotDownloadWidth",form).val()})}function onSubmit(){var form=this;return Dashboard.showLoadingMsg(),ApiClient.getServerConfiguration().then(function(config){var type=currentType,metadataOptions=config.MetadataOptions.filter(function(c){return c.ItemType==type})[0];metadataOptions?(config.PreferredMetadataLanguage=form.querySelector("#selectLanguage").value,config.MetadataCountryCode=form.querySelector("#selectCountry").value,saveSettingsIntoConfig(form,metadataOptions),ApiClient.updateServerConfiguration(config).then(Dashboard.processServerConfigurationUpdateResult)):ApiClient.getJSON(ApiClient.getUrl("System/Configuration/MetadataOptions/Default")).then(function(defaultOptions){defaultOptions.ItemType=type,config.MetadataOptions.push(defaultOptions),saveSettingsIntoConfig(form,defaultOptions),ApiClient.updateServerConfiguration(config).then(Dashboard.processServerConfigurationUpdateResult)})}),!1}function getTabs(){return[{href:"library.html",name:Globalize.translate("HeaderLibraries")},{href:"librarydisplay.html",name:Globalize.translate("TabDisplay")},{href:"metadataimages.html",name:Globalize.translate("TabMetadata")},{href:"metadatanfo.html",name:Globalize.translate("TabNfoSettings")},{href:"librarysettings.html",name:Globalize.translate("TabAdvanced")}]}var currentType;$(document).on("pageinit","#metadataImagesConfigurationPage",function(){var page=this;$(".metadataReaders",page).on("click",".btnLocalReaderMove",function(){var li=$(this).parents(".localReaderOption"),list=li.parents(".paperList");if($(this).hasClass("btnLocalReaderDown")){var next=li.next();li.remove().insertAfter(next)}else{var prev=li.prev();li.remove().insertBefore(prev)}$(".localReaderOption",list).each(function(){$(this).prev(".localReaderOption").length?$(".btnLocalReaderMove",this).addClass("btnLocalReaderUp").removeClass("btnLocalReaderDown").attr("icon","keyboard-arrow-up"):$(".btnLocalReaderMove",this).addClass("btnLocalReaderDown").removeClass("btnLocalReaderUp").attr("icon","keyboard-arrow-down")})}),$("#selectItemType",page).on("change",function(){loadType(page,this.value)}),$(".metadataImagesConfigurationForm").off("submit",onSubmit).on("submit",onSubmit)}).on("pageshow","#metadataImagesConfigurationPage",function(){LibraryMenu.setTabs("metadata",2,getTabs),Dashboard.showLoadingMsg();var page=this;loadPage(page)})}); \ No newline at end of file +define(["jQuery","dom","loading","listViewStyle"],function($,dom,loading){"use strict";function populateLanguages(select){return ApiClient.getCultures().then(function(languages){var html="";html+="";for(var i=0,length=languages.length;i"+culture.DisplayName+""}select.innerHTML=html})}function populateCountries(select){return ApiClient.getCountries().then(function(allCountries){var html="";html+="";for(var i=0,length=allCountries.length;i"+culture.DisplayName+""}select.innerHTML=html})}function loadTabs(page,tabs){for(var html="",i=0,length=tabs.length;i"+Globalize.translate(tab.name)+""}$("#selectItemType",page).html(html).trigger("change"),loading.hide()}function loadType(page,type){loading.show(),currentType=type;var promise1=ApiClient.getServerConfiguration(),promise2=ApiClient.getJSON(ApiClient.getUrl("System/Configuration/MetadataPlugins"));Promise.all([promise1,promise2]).then(function(responses){var config=responses[0],metadataPlugins=responses[1];config=config.MetadataOptions.filter(function(c){return c.ItemType==type})[0],config?(renderType(page,type,config,metadataPlugins),loading.hide()):ApiClient.getJSON(ApiClient.getUrl("System/Configuration/MetadataOptions/Default")).then(function(defaultConfig){config=defaultConfig,renderType(page,type,config,metadataPlugins),loading.hide()})})}function setVisibilityOfBackdrops(elem,visible){visible?(elem.show(),$("input",elem).attr("required","required")):(elem.hide(),$("input",elem).attr("required","").removeAttr("required"))}function renderType(page,type,config,metadataPlugins){var metadataInfo=metadataPlugins.filter(function(f){return type==f.ItemType})[0];setVisibilityOfBackdrops($(".backdropFields",page),metadataInfo.SupportedImageTypes.indexOf("Backdrop")!=-1),setVisibilityOfBackdrops($(".screenshotFields",page),metadataInfo.SupportedImageTypes.indexOf("Screenshot")!=-1),$(".imageType",page).each(function(){var imageType=this.getAttribute("data-imagetype"),container=dom.parentWithTag(this,"LABEL");metadataInfo.SupportedImageTypes.indexOf(imageType)==-1?container.classList.add("hide"):container.classList.remove("hide"),getImageConfig(config,imageType).Limit?this.checked=!0:this.checked=!1});var backdropConfig=getImageConfig(config,"Backdrop");$("#txtMaxBackdrops",page).val(backdropConfig.Limit),$("#txtMinBackdropDownloadWidth",page).val(backdropConfig.MinWidth);var screenshotConfig=getImageConfig(config,"Screenshot");$("#txtMaxScreenshots",page).val(screenshotConfig.Limit),$("#txtMinScreenshotDownloadWidth",page).val(screenshotConfig.MinWidth),renderMetadataLocals(page,type,config,metadataInfo),renderMetadataFetchers(page,type,config,metadataInfo),renderMetadataSavers(page,type,config,metadataInfo),renderImageFetchers(page,type,config,metadataInfo)}function getImageConfig(config,type){return config.ImageOptions.filter(function(i){return i.Type==type})[0]||{Type:type,MinWidth:"Backdrop"==type?1280:0,Limit:"Backdrop"==type?3:1}}function renderImageFetchers(page,type,config,metadataInfo){var plugins=metadataInfo.Plugins.filter(function(p){return"ImageFetcher"==p.Type}),html="";if(!plugins.length)return void $(".imageFetchers",page).html(html).hide();var i,length,plugin;for(html+='

'+Globalize.translate("LabelImageFetchers")+"

",html+='
',i=0,length=plugins.length;i',html+='",html+='
',html+='

',html+=plugin.Name,html+="

",html+="
",html+='',html+='',html+="
"}html+="",html+='
'+Globalize.translate("LabelImageFetchersHelp")+"
";var elem=$(".imageFetchers",page).html(html).show();$(".btnDown",elem).on("click",function(){var elemToMove=$(this).parents(".imageFetcherItem")[0],insertAfter=$(elemToMove).next(".imageFetcherItem")[0];insertAfter&&(elemToMove.parentNode.removeChild(elemToMove),$(elemToMove).insertAfter(insertAfter))}),$(".btnUp",elem).on("click",function(){var elemToMove=$(this).parents(".imageFetcherItem")[0],insertBefore=$(elemToMove).prev(".imageFetcherItem")[0];insertBefore&&(elemToMove.parentNode.removeChild(elemToMove),$(elemToMove).insertBefore(insertBefore))})}function renderMetadataSavers(page,type,config,metadataInfo){var plugins=metadataInfo.Plugins.filter(function(p){return"MetadataSaver"==p.Type}),html="";if(!plugins.length)return void $(".metadataSavers",page).html(html).hide();html+='

'+Globalize.translate("LabelMetadataSavers")+"

",html+='
';for(var i=0,length=plugins.length;i"+plugin.Name+""}html+="
",html+='
'+Globalize.translate("LabelMetadataSaversHelp")+"
",page.querySelector(".metadataSavers").innerHTML=html}function renderMetadataFetchers(page,type,config,metadataInfo){var plugins=metadataInfo.Plugins.filter(function(p){return"MetadataFetcher"==p.Type}),html="";if(!plugins.length)return void $(".metadataFetchers",page).html(html).hide();var i,length,plugin;for(html+='

'+Globalize.translate("LabelMetadataDownloaders")+"

",html+='
',i=0,length=plugins.length;i',html+='",html+='
',html+='

',html+=plugin.Name,html+="

",html+="
",html+='',html+='',html+="
"}html+="",html+='
'+Globalize.translate("LabelMetadataDownloadersHelp")+"
";var elem=$(".metadataFetchers",page).html(html).show();$(".btnDown",elem).on("click",function(){var elemToMove=$(this).parents(".metadataFetcherItem")[0],insertAfter=$(elemToMove).next(".metadataFetcherItem")[0];insertAfter&&(elemToMove.parentNode.removeChild(elemToMove),$(elemToMove).insertAfter(insertAfter))}),$(".btnUp",elem).on("click",function(){var elemToMove=$(this).parents(".metadataFetcherItem")[0],insertBefore=$(elemToMove).prev(".metadataFetcherItem")[0];insertBefore&&(elemToMove.parentNode.removeChild(elemToMove),$(elemToMove).insertBefore(insertBefore))})}function renderMetadataLocals(page,type,config,metadataInfo){var plugins=metadataInfo.Plugins.filter(function(p){return"LocalMetadataProvider"==p.Type}),html="";if(plugins.length<2)return void $(".metadataReaders",page).html(html).hide();html+='

'+Globalize.translate("LabelMetadataReaders")+"

",html+='
';for(var i=0,length=plugins.length;i',html+='live_tv',html+='
',html+='

',html+=plugin.Name,html+="

",html+="
",i>0?html+='':plugins.length>1&&(html+=''),html+="
"}html+="",html+='
'+Globalize.translate("LabelMetadataReadersHelp")+"
",$(".metadataReaders",page).html(html).show()}function loadPage(page){var promises=[ApiClient.getServerConfiguration(),populateLanguages(page.querySelector("#selectLanguage")),populateCountries(page.querySelector("#selectCountry"))];Promise.all(promises).then(function(responses){var config=responses[0];page.querySelector("#selectLanguage").value=config.PreferredMetadataLanguage||"",page.querySelector("#selectCountry").value=config.MetadataCountryCode||""}),loadTabs(page,[{name:"OptionMovies",type:"Movie"},{name:"OptionCollections",type:"BoxSet"},{name:"OptionSeries",type:"Series"},{name:"OptionSeasons",type:"Season"},{name:"OptionEpisodes",type:"Episode"},{name:"OptionGames",type:"Game"},{name:"OptionGameSystems",type:"GameSystem"},{name:"OptionMusicArtists",type:"MusicArtist"},{name:"OptionMusicAlbums",type:"MusicAlbum"},{name:"OptionMusicVideos",type:"MusicVideo"},{name:"OptionSongs",type:"Audio"},{name:"OptionHomeVideos",type:"Video"},{name:"OptionBooks",type:"Book"},{name:"OptionPeople",type:"Person"}])}function saveSettingsIntoConfig(form,config){config.DisabledMetadataSavers=$(".chkMetadataSaver",form).get().filter(function(c){return!c.checked}).map(function(c){return c.getAttribute("data-pluginname")}),config.LocalMetadataReaderOrder=$(".localReaderOption",form).get().map(function(c){return c.getAttribute("data-pluginname")}),config.DisabledMetadataFetchers=$(".chkMetadataFetcher",form).get().filter(function(c){return!c.checked}).map(function(c){return c.getAttribute("data-pluginname")}),config.MetadataFetcherOrder=$(".chkMetadataFetcher",form).get().map(function(c){return c.getAttribute("data-pluginname")}),config.DisabledImageFetchers=$(".chkImageFetcher",form).get().filter(function(c){return!c.checked}).map(function(c){return c.getAttribute("data-pluginname")}),config.ImageFetcherOrder=$(".chkImageFetcher",form).get().map(function(c){return c.getAttribute("data-pluginname")}),config.ImageOptions=$(".imageType:not(.hide)",form).get().map(function(c){return{Type:c.getAttribute("data-imagetype"),Limit:c.checked?1:0,MinWidth:0}}),config.ImageOptions.push({Type:"Backdrop",Limit:$("#txtMaxBackdrops",form).val(),MinWidth:$("#txtMinBackdropDownloadWidth",form).val()}),config.ImageOptions.push({Type:"Screenshot",Limit:$("#txtMaxScreenshots",form).val(),MinWidth:$("#txtMinScreenshotDownloadWidth",form).val()})}function onSubmit(){var form=this;return loading.show(),ApiClient.getServerConfiguration().then(function(config){var type=currentType,metadataOptions=config.MetadataOptions.filter(function(c){return c.ItemType==type})[0];metadataOptions?(config.PreferredMetadataLanguage=form.querySelector("#selectLanguage").value,config.MetadataCountryCode=form.querySelector("#selectCountry").value,saveSettingsIntoConfig(form,metadataOptions),ApiClient.updateServerConfiguration(config).then(Dashboard.processServerConfigurationUpdateResult)):ApiClient.getJSON(ApiClient.getUrl("System/Configuration/MetadataOptions/Default")).then(function(defaultOptions){defaultOptions.ItemType=type,config.MetadataOptions.push(defaultOptions),saveSettingsIntoConfig(form,defaultOptions),ApiClient.updateServerConfiguration(config).then(Dashboard.processServerConfigurationUpdateResult)})}),!1}function getTabs(){return[{href:"library.html",name:Globalize.translate("HeaderLibraries")},{href:"librarydisplay.html",name:Globalize.translate("TabDisplay")},{href:"metadataimages.html",name:Globalize.translate("TabMetadata")},{href:"metadatanfo.html",name:Globalize.translate("TabNfoSettings")},{href:"librarysettings.html",name:Globalize.translate("TabAdvanced")}]}var currentType;$(document).on("pageinit","#metadataImagesConfigurationPage",function(){var page=this;$(".metadataReaders",page).on("click",".btnLocalReaderMove",function(){var li=$(this).parents(".localReaderOption"),list=li.parents(".paperList");if($(this).hasClass("btnLocalReaderDown")){var next=li.next();li.remove().insertAfter(next)}else{var prev=li.prev();li.remove().insertBefore(prev)}$(".localReaderOption",list).each(function(){$(this).prev(".localReaderOption").length?$(".btnLocalReaderMove",this).addClass("btnLocalReaderUp").removeClass("btnLocalReaderDown").attr("icon","keyboard-arrow-up"):$(".btnLocalReaderMove",this).addClass("btnLocalReaderDown").removeClass("btnLocalReaderUp").attr("icon","keyboard-arrow-down")})}),$("#selectItemType",page).on("change",function(){loadType(page,this.value)}),$(".metadataImagesConfigurationForm").off("submit",onSubmit).on("submit",onSubmit)}).on("pageshow","#metadataImagesConfigurationPage",function(){LibraryMenu.setTabs("metadata",2,getTabs),loading.show();var page=this;loadPage(page)})}); \ No newline at end of file diff --git a/dashboard-ui/scripts/metadatanfo.js b/dashboard-ui/scripts/metadatanfo.js index 40eca1ee09..95864d32a9 100644 --- a/dashboard-ui/scripts/metadatanfo.js +++ b/dashboard-ui/scripts/metadatanfo.js @@ -1 +1 @@ -define(["jQuery"],function($){"use strict";function loadPage(page,config,users){var html='";html+=users.map(function(user){return'"}).join(""),$("#selectUser",page).html(html).val(config.UserId||""),$("#selectReleaseDateFormat",page).val(config.ReleaseDateFormat),page.querySelector("#chkSaveImagePaths").checked=config.SaveImagePathsInNfo,page.querySelector("#chkEnablePathSubstitution").checked=config.EnablePathSubstitution,page.querySelector("#chkEnableExtraThumbs").checked=config.EnableExtraThumbsDuplication,Dashboard.hideLoadingMsg()}function onSubmit(){Dashboard.showLoadingMsg();var form=this;return ApiClient.getNamedConfiguration(metadataKey).then(function(config){config.UserId=$("#selectUser",form).val()||null,config.ReleaseDateFormat=$("#selectReleaseDateFormat",form).val(),config.SaveImagePathsInNfo=form.querySelector("#chkSaveImagePaths").checked,config.EnablePathSubstitution=form.querySelector("#chkEnablePathSubstitution").checked,config.EnableExtraThumbsDuplication=form.querySelector("#chkEnableExtraThumbs").checked,ApiClient.updateNamedConfiguration(metadataKey,config).then(function(){Dashboard.processServerConfigurationUpdateResult(),showConfirmMessage(config)})}),!1}function showConfirmMessage(config){var msg=[];msg.push(Globalize.translate("MetadataSettingChangeHelp")),require(["alert"],function(alert){alert({text:msg.join("

")})})}function getTabs(){return[{href:"library.html",name:Globalize.translate("HeaderLibraries")},{href:"librarydisplay.html",name:Globalize.translate("TabDisplay")},{href:"metadataimages.html",name:Globalize.translate("TabMetadata")},{href:"metadatanfo.html",name:Globalize.translate("TabNfoSettings")},{href:"librarysettings.html",name:Globalize.translate("TabAdvanced")}]}var metadataKey="xbmcmetadata";$(document).on("pageinit","#metadataNfoPage",function(){$(".metadataNfoForm").off("submit",onSubmit).on("submit",onSubmit)}).on("pageshow","#metadataNfoPage",function(){LibraryMenu.setTabs("metadata",3,getTabs),Dashboard.showLoadingMsg();var page=this,promise1=ApiClient.getUsers(),promise2=ApiClient.getNamedConfiguration(metadataKey);Promise.all([promise1,promise2]).then(function(responses){loadPage(page,responses[1],responses[0])})})}); \ No newline at end of file +define(["jQuery","loading"],function($,loading){"use strict";function loadPage(page,config,users){var html='";html+=users.map(function(user){return'"}).join(""),$("#selectUser",page).html(html).val(config.UserId||""),$("#selectReleaseDateFormat",page).val(config.ReleaseDateFormat),page.querySelector("#chkSaveImagePaths").checked=config.SaveImagePathsInNfo,page.querySelector("#chkEnablePathSubstitution").checked=config.EnablePathSubstitution,page.querySelector("#chkEnableExtraThumbs").checked=config.EnableExtraThumbsDuplication,loading.hide()}function onSubmit(){loading.show();var form=this;return ApiClient.getNamedConfiguration(metadataKey).then(function(config){config.UserId=$("#selectUser",form).val()||null,config.ReleaseDateFormat=$("#selectReleaseDateFormat",form).val(),config.SaveImagePathsInNfo=form.querySelector("#chkSaveImagePaths").checked,config.EnablePathSubstitution=form.querySelector("#chkEnablePathSubstitution").checked,config.EnableExtraThumbsDuplication=form.querySelector("#chkEnableExtraThumbs").checked,ApiClient.updateNamedConfiguration(metadataKey,config).then(function(){Dashboard.processServerConfigurationUpdateResult(),showConfirmMessage(config)})}),!1}function showConfirmMessage(config){var msg=[];msg.push(Globalize.translate("MetadataSettingChangeHelp")),require(["alert"],function(alert){alert({text:msg.join("

")})})}function getTabs(){return[{href:"library.html",name:Globalize.translate("HeaderLibraries")},{href:"librarydisplay.html",name:Globalize.translate("TabDisplay")},{href:"metadataimages.html",name:Globalize.translate("TabMetadata")},{href:"metadatanfo.html",name:Globalize.translate("TabNfoSettings")},{href:"librarysettings.html",name:Globalize.translate("TabAdvanced")}]}var metadataKey="xbmcmetadata";$(document).on("pageinit","#metadataNfoPage",function(){$(".metadataNfoForm").off("submit",onSubmit).on("submit",onSubmit)}).on("pageshow","#metadataNfoPage",function(){LibraryMenu.setTabs("metadata",3,getTabs),loading.show();var page=this,promise1=ApiClient.getUsers(),promise2=ApiClient.getNamedConfiguration(metadataKey);Promise.all([promise1,promise2]).then(function(responses){loadPage(page,responses[1],responses[0])})})}); \ No newline at end of file diff --git a/dashboard-ui/scripts/metadatasubtitles.js b/dashboard-ui/scripts/metadatasubtitles.js index 2eb0c25a95..eca3c13583 100644 --- a/dashboard-ui/scripts/metadatasubtitles.js +++ b/dashboard-ui/scripts/metadatasubtitles.js @@ -1 +1 @@ -define(["jQuery","fnchecked"],function($){"use strict";function loadPage(page,config,languages){$("#chkSubtitlesMovies",page).checked(config.DownloadMovieSubtitles),$("#chkSubtitlesEpisodes",page).checked(config.DownloadEpisodeSubtitles),$("#chkSkipIfGraphicalSubsPresent",page).checked(config.SkipIfEmbeddedSubtitlesPresent),$("#chkSkipIfAudioTrackPresent",page).checked(config.SkipIfAudioTrackMatches),$("#chkRequirePerfectMatch",page).checked(config.RequirePerfectMatch),$("#txtOpenSubtitleUsername",page).val(config.OpenSubtitlesUsername),$("#txtOpenSubtitlePassword",page).val(""),populateLanguages(page,config,languages),Dashboard.hideLoadingMsg()}function populateLanguages(page,config,languages){for(var html="",i=0,length=languages.length;i'+culture.DisplayName+""}$(".downloadLanguages",page).html(html);var langs=config.DownloadLanguages||[];$(".chkLang",page).each(function(){this.checked=langs.indexOf(this.getAttribute("data-lang"))!=-1})}function onSubmit(){Dashboard.showLoadingMsg();var form=this;return ApiClient.getNamedConfiguration("subtitles").then(function(config){config.DownloadMovieSubtitles=$("#chkSubtitlesMovies",form).checked(),config.DownloadEpisodeSubtitles=$("#chkSubtitlesEpisodes",form).checked(),config.SkipIfEmbeddedSubtitlesPresent=$("#chkSkipIfGraphicalSubsPresent",form).checked(),config.SkipIfAudioTrackMatches=$("#chkSkipIfAudioTrackPresent",form).checked(),config.RequirePerfectMatch=$("#chkRequirePerfectMatch",form).checked(),config.OpenSubtitlesUsername=$("#txtOpenSubtitleUsername",form).val();var newPassword=$("#txtOpenSubtitlePassword",form).val();newPassword&&(config.OpenSubtitlesPasswordHash=newPassword),config.DownloadLanguages=$(".chkLang",form).get().filter(function(c){return c.checked}).map(function(c){return c.getAttribute("data-lang")}),ApiClient.updateNamedConfiguration("subtitles",config).then(Dashboard.processServerConfigurationUpdateResult)}),!1}$(document).on("pageinit","#metadataSubtitlesPage",function(){$(".metadataSubtitlesForm").off("submit",onSubmit).on("submit",onSubmit)}).on("pageshow","#metadataSubtitlesPage",function(){Dashboard.showLoadingMsg();var page=this,promise1=ApiClient.getNamedConfiguration("subtitles"),promise2=ApiClient.getCultures();Promise.all([promise1,promise2]).then(function(responses){loadPage(page,responses[0],responses[1])})})}); \ No newline at end of file +define(["jQuery","loading","fnchecked"],function($,loading){"use strict";function loadPage(page,config,languages){$("#chkSubtitlesMovies",page).checked(config.DownloadMovieSubtitles),$("#chkSubtitlesEpisodes",page).checked(config.DownloadEpisodeSubtitles),$("#chkSkipIfGraphicalSubsPresent",page).checked(config.SkipIfEmbeddedSubtitlesPresent),$("#chkSkipIfAudioTrackPresent",page).checked(config.SkipIfAudioTrackMatches),$("#chkRequirePerfectMatch",page).checked(config.RequirePerfectMatch),$("#txtOpenSubtitleUsername",page).val(config.OpenSubtitlesUsername),$("#txtOpenSubtitlePassword",page).val(""),populateLanguages(page,config,languages),loading.hide()}function populateLanguages(page,config,languages){for(var html="",i=0,length=languages.length;i'+culture.DisplayName+""}$(".downloadLanguages",page).html(html);var langs=config.DownloadLanguages||[];$(".chkLang",page).each(function(){this.checked=langs.indexOf(this.getAttribute("data-lang"))!=-1})}function onSubmit(){loading.show();var form=this;return ApiClient.getNamedConfiguration("subtitles").then(function(config){config.DownloadMovieSubtitles=$("#chkSubtitlesMovies",form).checked(),config.DownloadEpisodeSubtitles=$("#chkSubtitlesEpisodes",form).checked(),config.SkipIfEmbeddedSubtitlesPresent=$("#chkSkipIfGraphicalSubsPresent",form).checked(),config.SkipIfAudioTrackMatches=$("#chkSkipIfAudioTrackPresent",form).checked(),config.RequirePerfectMatch=$("#chkRequirePerfectMatch",form).checked(),config.OpenSubtitlesUsername=$("#txtOpenSubtitleUsername",form).val();var newPassword=$("#txtOpenSubtitlePassword",form).val();newPassword&&(config.OpenSubtitlesPasswordHash=newPassword),config.DownloadLanguages=$(".chkLang",form).get().filter(function(c){return c.checked}).map(function(c){return c.getAttribute("data-lang")}),ApiClient.updateNamedConfiguration("subtitles",config).then(Dashboard.processServerConfigurationUpdateResult)}),!1}$(document).on("pageinit","#metadataSubtitlesPage",function(){$(".metadataSubtitlesForm").off("submit",onSubmit).on("submit",onSubmit)}).on("pageshow","#metadataSubtitlesPage",function(){loading.show();var page=this,promise1=ApiClient.getNamedConfiguration("subtitles"),promise2=ApiClient.getCultures();Promise.all([promise1,promise2]).then(function(responses){loadPage(page,responses[0],responses[1])})})}); \ No newline at end of file diff --git a/dashboard-ui/scripts/moviecollections.js b/dashboard-ui/scripts/moviecollections.js index a85da92a0b..2a29adb93b 100644 --- a/dashboard-ui/scripts/moviecollections.js +++ b/dashboard-ui/scripts/moviecollections.js @@ -1 +1 @@ -define(["events","libraryBrowser","imageLoader","listView","cardBuilder","apphost","emby-itemscontainer"],function(events,libraryBrowser,imageLoader,listView,cardBuilder,appHost){"use strict";return function(view,params,tabContent){function getPageData(context){var key=getSavedQueryKey(context),pageData=data[key];return pageData||(pageData=data[key]={query:{SortBy:"SortName",SortOrder:"Ascending",IncludeItemTypes:"BoxSet",Recursive:!0,Fields:"PrimaryImageAspectRatio,SortName",ImageTypeLimit:1,EnableImageTypes:"Primary,Backdrop,Banner,Thumb",StartIndex:0,Limit:pageSize},view:libraryBrowser.getSavedView(key)||"Poster"},libraryBrowser.loadSavedQueryValues(key,pageData.query)),pageData}function getQuery(context){return getPageData(context).query}function getSavedQueryKey(context){return context.savedQueryKey||(context.savedQueryKey=libraryBrowser.getSavedQueryKey("moviecollections")),context.savedQueryKey}function onViewStyleChange(){var viewStyle=self.getCurrentViewStyle(),itemsContainer=tabContent.querySelector(".itemsContainer");"List"==viewStyle?(itemsContainer.classList.add("vertical-list"),itemsContainer.classList.remove("vertical-wrap")):(itemsContainer.classList.remove("vertical-list"),itemsContainer.classList.add("vertical-wrap")),itemsContainer.innerHTML=""}function reloadItems(page){Dashboard.showLoadingMsg();var query=getQuery(page);ApiClient.getItems(Dashboard.getCurrentUserId(),query).then(function(result){function onNextPageClick(){query.StartIndex+=query.Limit,reloadItems(tabContent)}function onPreviousPageClick(){query.StartIndex-=query.Limit,reloadItems(tabContent)}window.scrollTo(0,0),updateFilterControls(page);var html,pagingHtml=LibraryBrowser.getQueryPagingHtml({startIndex:query.StartIndex,limit:query.Limit,totalRecordCount:result.TotalRecordCount,showLimit:!1,updatePageSizeSetting:!1,addLayoutButton:!1,sortButton:!1,filterButton:!1}),viewStyle=self.getCurrentViewStyle();html="Thumb"==viewStyle?cardBuilder.getCardsHtml({items:result.Items,shape:"backdrop",preferThumb:!0,context:"movies",overlayPlayButton:!0,centerText:!0,showTitle:!0}):"ThumbCard"==viewStyle?cardBuilder.getCardsHtml({items:result.Items,shape:"backdrop",preferThumb:!0,context:"movies",lazy:!0,cardLayout:!0,showTitle:!0,vibrant:!0}):"Banner"==viewStyle?cardBuilder.getCardsHtml({items:result.Items,shape:"banner",preferBanner:!0,context:"movies",lazy:!0}):"List"==viewStyle?listView.getListViewHtml({items:result.Items,context:"movies",sortBy:query.SortBy}):"PosterCard"==viewStyle?cardBuilder.getCardsHtml({items:result.Items,shape:"auto",context:"movies",showTitle:!0,centerText:!1,cardLayout:!0,vibrant:!0}):cardBuilder.getCardsHtml({items:result.Items,shape:"auto",context:"movies",centerText:!0,overlayPlayButton:!0,showTitle:!0});var i,length,elems=tabContent.querySelectorAll(".paging");for(i=0,length=elems.length;i'+Globalize.translate("MessageNoCollectionsAvailable")+"

");var itemsContainer=tabContent.querySelector(".itemsContainer");itemsContainer.innerHTML=html,imageLoader.lazyChildren(itemsContainer),libraryBrowser.saveQueryValues(getSavedQueryKey(page),query),Dashboard.hideLoadingMsg()})}function updateFilterControls(tabContent){}function initPage(tabContent){tabContent.querySelector(".btnSort").addEventListener("click",function(e){libraryBrowser.showSortMenu({items:[{name:Globalize.translate("OptionNameSort"),id:"SortName"},{name:Globalize.translate("OptionImdbRating"),id:"CommunityRating,SortName"},{name:Globalize.translate("OptionDateAdded"),id:"DateCreated,SortName"},{name:Globalize.translate("OptionParentalRating"),id:"OfficialRating,SortName"},{name:Globalize.translate("OptionReleaseDate"),id:"PremiereDate,SortName"}],callback:function(){getQuery(tabContent).StartIndex=0,reloadItems(tabContent)},query:getQuery(tabContent),button:e.target})});var btnSelectView=tabContent.querySelector(".btnSelectView");btnSelectView.addEventListener("click",function(e){libraryBrowser.showLayoutMenu(e.target,self.getCurrentViewStyle(),"List,Poster,PosterCard,Thumb,ThumbCard".split(","))}),btnSelectView.addEventListener("layoutchange",function(e){var viewStyle=e.detail.viewStyle;getPageData(tabContent).view=viewStyle,libraryBrowser.saveViewSetting(getSavedQueryKey(tabContent),viewStyle),getQuery(tabContent).StartIndex=0,onViewStyleChange(),reloadItems(tabContent)}),tabContent.querySelector(".btnNewCollection").addEventListener("click",function(){require(["collectionEditor"],function(collectionEditor){var serverId=ApiClient.serverInfo().Id;(new collectionEditor).show({items:[],serverId:serverId})})})}var self=this,pageSize=libraryBrowser.getDefaultPageSize(),data={};self.getCurrentViewStyle=function(){return getPageData(tabContent).view},initPage(tabContent),onViewStyleChange(),self.renderTab=function(){reloadItems(tabContent),updateFilterControls(tabContent)},self.destroy=function(){}}}); \ No newline at end of file +define(["loading","events","libraryBrowser","imageLoader","listView","cardBuilder","apphost","emby-itemscontainer"],function(loading,events,libraryBrowser,imageLoader,listView,cardBuilder,appHost){"use strict";return function(view,params,tabContent){function getPageData(context){var key=getSavedQueryKey(context),pageData=data[key];return pageData||(pageData=data[key]={query:{SortBy:"SortName",SortOrder:"Ascending",IncludeItemTypes:"BoxSet",Recursive:!0,Fields:"PrimaryImageAspectRatio,SortName",ImageTypeLimit:1,EnableImageTypes:"Primary,Backdrop,Banner,Thumb",StartIndex:0,Limit:pageSize},view:libraryBrowser.getSavedView(key)||"Poster"},libraryBrowser.loadSavedQueryValues(key,pageData.query)),pageData}function getQuery(context){return getPageData(context).query}function getSavedQueryKey(context){return context.savedQueryKey||(context.savedQueryKey=libraryBrowser.getSavedQueryKey("moviecollections")),context.savedQueryKey}function onViewStyleChange(){var viewStyle=self.getCurrentViewStyle(),itemsContainer=tabContent.querySelector(".itemsContainer");"List"==viewStyle?(itemsContainer.classList.add("vertical-list"),itemsContainer.classList.remove("vertical-wrap")):(itemsContainer.classList.remove("vertical-list"),itemsContainer.classList.add("vertical-wrap")),itemsContainer.innerHTML=""}function reloadItems(page){loading.show();var query=getQuery(page);ApiClient.getItems(Dashboard.getCurrentUserId(),query).then(function(result){function onNextPageClick(){query.StartIndex+=query.Limit,reloadItems(tabContent)}function onPreviousPageClick(){query.StartIndex-=query.Limit,reloadItems(tabContent)}window.scrollTo(0,0),updateFilterControls(page);var html,pagingHtml=LibraryBrowser.getQueryPagingHtml({startIndex:query.StartIndex,limit:query.Limit,totalRecordCount:result.TotalRecordCount,showLimit:!1,updatePageSizeSetting:!1,addLayoutButton:!1,sortButton:!1,filterButton:!1}),viewStyle=self.getCurrentViewStyle();html="Thumb"==viewStyle?cardBuilder.getCardsHtml({items:result.Items,shape:"backdrop",preferThumb:!0,context:"movies",overlayPlayButton:!0,centerText:!0,showTitle:!0}):"ThumbCard"==viewStyle?cardBuilder.getCardsHtml({items:result.Items,shape:"backdrop",preferThumb:!0,context:"movies",lazy:!0,cardLayout:!0,showTitle:!0,vibrant:!0}):"Banner"==viewStyle?cardBuilder.getCardsHtml({items:result.Items,shape:"banner",preferBanner:!0,context:"movies",lazy:!0}):"List"==viewStyle?listView.getListViewHtml({items:result.Items,context:"movies",sortBy:query.SortBy}):"PosterCard"==viewStyle?cardBuilder.getCardsHtml({items:result.Items,shape:"auto",context:"movies",showTitle:!0,centerText:!1,cardLayout:!0,vibrant:!0}):cardBuilder.getCardsHtml({items:result.Items,shape:"auto",context:"movies",centerText:!0,overlayPlayButton:!0,showTitle:!0});var i,length,elems=tabContent.querySelectorAll(".paging");for(i=0,length=elems.length;i'+Globalize.translate("MessageNoCollectionsAvailable")+"

");var itemsContainer=tabContent.querySelector(".itemsContainer");itemsContainer.innerHTML=html,imageLoader.lazyChildren(itemsContainer),libraryBrowser.saveQueryValues(getSavedQueryKey(page),query),loading.hide()})}function updateFilterControls(tabContent){}function initPage(tabContent){tabContent.querySelector(".btnSort").addEventListener("click",function(e){libraryBrowser.showSortMenu({items:[{name:Globalize.translate("OptionNameSort"),id:"SortName"},{name:Globalize.translate("OptionImdbRating"),id:"CommunityRating,SortName"},{name:Globalize.translate("OptionDateAdded"),id:"DateCreated,SortName"},{name:Globalize.translate("OptionParentalRating"),id:"OfficialRating,SortName"},{name:Globalize.translate("OptionReleaseDate"),id:"PremiereDate,SortName"}],callback:function(){getQuery(tabContent).StartIndex=0,reloadItems(tabContent)},query:getQuery(tabContent),button:e.target})});var btnSelectView=tabContent.querySelector(".btnSelectView");btnSelectView.addEventListener("click",function(e){libraryBrowser.showLayoutMenu(e.target,self.getCurrentViewStyle(),"List,Poster,PosterCard,Thumb,ThumbCard".split(","))}),btnSelectView.addEventListener("layoutchange",function(e){var viewStyle=e.detail.viewStyle;getPageData(tabContent).view=viewStyle,libraryBrowser.saveViewSetting(getSavedQueryKey(tabContent),viewStyle),getQuery(tabContent).StartIndex=0,onViewStyleChange(),reloadItems(tabContent)}),tabContent.querySelector(".btnNewCollection").addEventListener("click",function(){require(["collectionEditor"],function(collectionEditor){var serverId=ApiClient.serverInfo().Id;(new collectionEditor).show({items:[],serverId:serverId})})})}var self=this,pageSize=libraryBrowser.getDefaultPageSize(),data={};self.getCurrentViewStyle=function(){return getPageData(tabContent).view},initPage(tabContent),onViewStyleChange(),self.renderTab=function(){reloadItems(tabContent),updateFilterControls(tabContent)},self.destroy=function(){}}}); \ No newline at end of file diff --git a/dashboard-ui/scripts/moviegenres.js b/dashboard-ui/scripts/moviegenres.js index 6520247b11..8d874ff8ef 100644 --- a/dashboard-ui/scripts/moviegenres.js +++ b/dashboard-ui/scripts/moviegenres.js @@ -1 +1 @@ -define(["libraryBrowser","cardBuilder","lazyLoader","apphost","globalize","dom"],function(libraryBrowser,cardBuilder,lazyLoader,appHost,globalize,dom){"use strict";return function(view,params,tabContent){function getPageData(){var key=getSavedQueryKey(),pageData=data[key];return pageData||(pageData=data[key]={query:{SortBy:"SortName",SortOrder:"Ascending",IncludeItemTypes:"Movie",Recursive:!0,EnableTotalRecordCount:!1},view:"Poster"},pageData.query.ParentId=params.topParentId,libraryBrowser.loadSavedQueryValues(key,pageData.query)),pageData}function getQuery(){return getPageData().query}function getSavedQueryKey(){return libraryBrowser.getSavedQueryKey("moviegenres")}function getPromise(){Dashboard.showLoadingMsg();var query=getQuery();return ApiClient.getGenres(Dashboard.getCurrentUserId(),query)}function enableScrollX(){return browserInfo.mobile}function getThumbShape(){return enableScrollX()?"overflowBackdrop":"backdrop"}function getPortraitShape(){return enableScrollX()?"overflowPortrait":"portrait"}function getMoreItemsHref(itemId,type){return"secondaryitems.html?type="+type+"&genreId="+itemId+"&parentId="+params.topParentId}function fillItemsContainer(elem){var id=elem.getAttribute("data-id"),viewStyle=self.getCurrentViewStyle(),limit="Thumb"==viewStyle||"ThumbCard"==viewStyle?5:8;enableScrollX()&&(limit=10);var enableImageTypes="Thumb"==viewStyle||"ThumbCard"==viewStyle?"Primary,Backdrop,Thumb":"Primary",query={SortBy:"SortName",SortOrder:"Ascending",IncludeItemTypes:"Movie",Recursive:!0,Fields:"PrimaryImageAspectRatio,MediaSourceCount,BasicSyncInfo",ImageTypeLimit:1,EnableImageTypes:enableImageTypes,Limit:limit,GenreIds:id,EnableTotalRecordCount:!1,ParentId:params.topParentId};ApiClient.getItems(Dashboard.getCurrentUserId(),query).then(function(result){var supportsImageAnalysis=appHost.supports("imageanalysis");"Thumb"==viewStyle?cardBuilder.buildCards(result.Items,{itemsContainer:elem,shape:getThumbShape(),preferThumb:!0,showTitle:!0,scalable:!0,centerText:!0,overlayMoreButton:!0,allowBottomPadding:!1}):"ThumbCard"==viewStyle?cardBuilder.buildCards(result.Items,{itemsContainer:elem,shape:getThumbShape(),preferThumb:!0,showTitle:!0,scalable:!0,centerText:!1,cardLayout:!0,vibrant:supportsImageAnalysis,showYear:!0}):"PosterCard"==viewStyle?cardBuilder.buildCards(result.Items,{itemsContainer:elem,shape:getPortraitShape(),showTitle:!0,scalable:!0,centerText:!1,cardLayout:!0,vibrant:supportsImageAnalysis,showYear:!0}):"Poster"==viewStyle&&cardBuilder.buildCards(result.Items,{itemsContainer:elem,shape:getPortraitShape(),scalable:!0,overlayMoreButton:!0,allowBottomPadding:!1}),result.Items.length>=query.Limit&&tabContent.querySelector(".btnMoreFromGenre"+id).classList.remove("hide")})}function reloadItems(context,promise){var query=getQuery();promise.then(function(result){for(var elem=context.querySelector("#items"),html="",items=result.Items,i=0,length=items.length;i',html+='
',html+='

',html+=item.Name,html+="

",html+='",html+="
",html+=enableScrollX()?'
':'
',html+="
",html+="
"}elem.innerHTML=html,lazyLoader.lazyChildren(elem,fillItemsContainer),libraryBrowser.saveQueryValues(getSavedQueryKey(),query),Dashboard.hideLoadingMsg()})}function fullyReload(){self.preRender(),self.renderTab()}var self=this,data={};dom.addEventListener(tabContent,"click",function(e){var btnMoreFromGenre=dom.parentWithClass(e.target,"btnMoreFromGenre");if(btnMoreFromGenre){var id=btnMoreFromGenre.getAttribute("data-id");Dashboard.navigate(getMoreItemsHref(id,"Movie"))}},{passive:!0}),self.getViewStyles=function(){return"Poster,PosterCard,Thumb,ThumbCard".split(",")},self.getCurrentViewStyle=function(){return getPageData(tabContent).view},self.setCurrentViewStyle=function(viewStyle){getPageData(tabContent).view=viewStyle,libraryBrowser.saveViewSetting(getSavedQueryKey(tabContent),viewStyle),fullyReload()},self.enableViewSelection=!0;var promise;self.preRender=function(){promise=getPromise()},self.renderTab=function(){reloadItems(tabContent,promise)}}}); \ No newline at end of file +define(["loading","libraryBrowser","cardBuilder","lazyLoader","apphost","globalize","dom"],function(loading,libraryBrowser,cardBuilder,lazyLoader,appHost,globalize,dom){"use strict";return function(view,params,tabContent){function getPageData(){var key=getSavedQueryKey(),pageData=data[key];return pageData||(pageData=data[key]={query:{SortBy:"SortName",SortOrder:"Ascending",IncludeItemTypes:"Movie",Recursive:!0,EnableTotalRecordCount:!1},view:"Poster"},pageData.query.ParentId=params.topParentId,libraryBrowser.loadSavedQueryValues(key,pageData.query)),pageData}function getQuery(){return getPageData().query}function getSavedQueryKey(){return libraryBrowser.getSavedQueryKey("moviegenres")}function getPromise(){loading.show();var query=getQuery();return ApiClient.getGenres(Dashboard.getCurrentUserId(),query)}function enableScrollX(){return browserInfo.mobile}function getThumbShape(){return enableScrollX()?"overflowBackdrop":"backdrop"}function getPortraitShape(){return enableScrollX()?"overflowPortrait":"portrait"}function getMoreItemsHref(itemId,type){return"secondaryitems.html?type="+type+"&genreId="+itemId+"&parentId="+params.topParentId}function fillItemsContainer(elem){var id=elem.getAttribute("data-id"),viewStyle=self.getCurrentViewStyle(),limit="Thumb"==viewStyle||"ThumbCard"==viewStyle?5:8;enableScrollX()&&(limit=10);var enableImageTypes="Thumb"==viewStyle||"ThumbCard"==viewStyle?"Primary,Backdrop,Thumb":"Primary",query={SortBy:"SortName",SortOrder:"Ascending",IncludeItemTypes:"Movie",Recursive:!0,Fields:"PrimaryImageAspectRatio,MediaSourceCount,BasicSyncInfo",ImageTypeLimit:1,EnableImageTypes:enableImageTypes,Limit:limit,GenreIds:id,EnableTotalRecordCount:!1,ParentId:params.topParentId};ApiClient.getItems(Dashboard.getCurrentUserId(),query).then(function(result){var supportsImageAnalysis=appHost.supports("imageanalysis");"Thumb"==viewStyle?cardBuilder.buildCards(result.Items,{itemsContainer:elem,shape:getThumbShape(),preferThumb:!0,showTitle:!0,scalable:!0,centerText:!0,overlayMoreButton:!0,allowBottomPadding:!1}):"ThumbCard"==viewStyle?cardBuilder.buildCards(result.Items,{itemsContainer:elem,shape:getThumbShape(),preferThumb:!0,showTitle:!0,scalable:!0,centerText:!1,cardLayout:!0,vibrant:supportsImageAnalysis,showYear:!0}):"PosterCard"==viewStyle?cardBuilder.buildCards(result.Items,{itemsContainer:elem,shape:getPortraitShape(),showTitle:!0,scalable:!0,centerText:!1,cardLayout:!0,vibrant:supportsImageAnalysis,showYear:!0}):"Poster"==viewStyle&&cardBuilder.buildCards(result.Items,{itemsContainer:elem,shape:getPortraitShape(),scalable:!0,overlayMoreButton:!0,allowBottomPadding:!1}),result.Items.length>=query.Limit&&tabContent.querySelector(".btnMoreFromGenre"+id).classList.remove("hide")})}function reloadItems(context,promise){var query=getQuery();promise.then(function(result){for(var elem=context.querySelector("#items"),html="",items=result.Items,i=0,length=items.length;i',html+='
',html+='

',html+=item.Name,html+="

",html+='",html+="
",html+=enableScrollX()?'
':'
',html+="
",html+="
"}elem.innerHTML=html,lazyLoader.lazyChildren(elem,fillItemsContainer),libraryBrowser.saveQueryValues(getSavedQueryKey(),query),loading.hide()})}function fullyReload(){self.preRender(),self.renderTab()}var self=this,data={};dom.addEventListener(tabContent,"click",function(e){var btnMoreFromGenre=dom.parentWithClass(e.target,"btnMoreFromGenre");if(btnMoreFromGenre){var id=btnMoreFromGenre.getAttribute("data-id");Dashboard.navigate(getMoreItemsHref(id,"Movie"))}},{passive:!0}),self.getViewStyles=function(){return"Poster,PosterCard,Thumb,ThumbCard".split(",")},self.getCurrentViewStyle=function(){return getPageData(tabContent).view},self.setCurrentViewStyle=function(viewStyle){getPageData(tabContent).view=viewStyle,libraryBrowser.saveViewSetting(getSavedQueryKey(tabContent),viewStyle),fullyReload()},self.enableViewSelection=!0;var promise;self.preRender=function(){promise=getPromise()},self.renderTab=function(){reloadItems(tabContent,promise)}}}); \ No newline at end of file diff --git a/dashboard-ui/scripts/movies.js b/dashboard-ui/scripts/movies.js index 41112e6859..72e3ac66c6 100644 --- a/dashboard-ui/scripts/movies.js +++ b/dashboard-ui/scripts/movies.js @@ -1 +1 @@ -define(["events","libraryBrowser","imageLoader","alphaPicker","listView","cardBuilder","apphost","emby-itemscontainer"],function(events,libraryBrowser,imageLoader,alphaPicker,listView,cardBuilder,appHost){"use strict";return function(view,params,tabContent){function getPageData(context){var key=getSavedQueryKey(context),pageData=data[key];return pageData||(pageData=data[key]={query:{SortBy:"SortName",SortOrder:"Ascending",IncludeItemTypes:"Movie",Recursive:!0,Fields:"PrimaryImageAspectRatio,MediaSourceCount,BasicSyncInfo",ImageTypeLimit:1,EnableImageTypes:"Primary,Backdrop,Banner,Thumb",StartIndex:0,Limit:pageSize},view:libraryBrowser.getSavedView(key)||"Poster"},pageData.query.ParentId=params.topParentId,libraryBrowser.loadSavedQueryValues(key,pageData.query)),pageData}function getQuery(context){return getPageData(context).query}function getSavedQueryKey(context){return context.savedQueryKey||(context.savedQueryKey=libraryBrowser.getSavedQueryKey("movies")),context.savedQueryKey}function onViewStyleChange(){var viewStyle=self.getCurrentViewStyle(),itemsContainer=tabContent.querySelector(".itemsContainer");"List"==viewStyle?(itemsContainer.classList.add("vertical-list"),itemsContainer.classList.remove("vertical-wrap")):(itemsContainer.classList.remove("vertical-list"),itemsContainer.classList.add("vertical-wrap")),itemsContainer.innerHTML=""}function reloadItems(page){Dashboard.showLoadingMsg();var query=getQuery(page);ApiClient.getItems(Dashboard.getCurrentUserId(),query).then(function(result){function onNextPageClick(){query.StartIndex+=query.Limit,reloadItems(tabContent)}function onPreviousPageClick(){query.StartIndex-=query.Limit,reloadItems(tabContent)}window.scrollTo(0,0),updateFilterControls(page);var html,pagingHtml=LibraryBrowser.getQueryPagingHtml({startIndex:query.StartIndex,limit:query.Limit,totalRecordCount:result.TotalRecordCount,showLimit:!1,updatePageSizeSetting:!1,addLayoutButton:!1,sortButton:!1,filterButton:!1}),viewStyle=self.getCurrentViewStyle(),supportsImageAnalysis=appHost.supports("imageanalysis");html="Thumb"==viewStyle?cardBuilder.getCardsHtml({items:result.Items,shape:"backdrop",preferThumb:!0,context:"movies",lazy:!0,overlayPlayButton:!0}):"ThumbCard"==viewStyle?cardBuilder.getCardsHtml({items:result.Items,shape:"backdrop",preferThumb:!0,context:"movies",lazy:!0,cardLayout:!0,showTitle:!0,showYear:!0,vibrant:supportsImageAnalysis}):"Banner"==viewStyle?cardBuilder.getCardsHtml({items:result.Items,shape:"banner",preferBanner:!0,context:"movies",lazy:!0}):"List"==viewStyle?listView.getListViewHtml({items:result.Items,context:"movies",sortBy:query.SortBy}):"PosterCard"==viewStyle?cardBuilder.getCardsHtml({items:result.Items,shape:"portrait",context:"movies",showTitle:!0,showYear:!0,lazy:!0,cardLayout:!0,vibrant:supportsImageAnalysis}):cardBuilder.getCardsHtml({items:result.Items,shape:"portrait",context:"movies",centerText:!0,lazy:!0,overlayPlayButton:!0});var i,length,elems=tabContent.querySelectorAll(".paging");for(i=0,length=elems.length;i'+Globalize.translate("MessageNoTrailersFound")+"

");var itemsContainer=tabContent.querySelector(".itemsContainer");itemsContainer.innerHTML=html,imageLoader.lazyChildren(itemsContainer),libraryBrowser.saveQueryValues(getSavedQueryKey(tabContent),query),Dashboard.hideLoadingMsg()})}function updateFilterControls(tabContent){var query=getQuery(tabContent);self.alphaPicker.value(query.NameStartsWithOrGreater)}function initPage(tabContent){var alphaPickerElement=tabContent.querySelector(".alphaPicker");alphaPickerElement.addEventListener("alphavaluechanged",function(e){var newValue=e.detail.value,query=getQuery(tabContent);query.NameStartsWithOrGreater=newValue,query.StartIndex=0,reloadItems()}),self.alphaPicker=new alphaPicker({element:alphaPickerElement,valueChangeEvent:"click"}),tabContent.querySelector(".btnFilter").addEventListener("click",function(){self.showFilterMenu()}),tabContent.querySelector(".btnSort").addEventListener("click",function(e){libraryBrowser.showSortMenu({items:[{name:Globalize.translate("OptionNameSort"),id:"SortName"},{name:Globalize.translate("OptionImdbRating"),id:"CommunityRating,SortName"},{name:Globalize.translate("OptionDateAdded"),id:"DateCreated,SortName"},{name:Globalize.translate("OptionDatePlayed"),id:"DatePlayed,SortName"},{name:Globalize.translate("OptionParentalRating"),id:"OfficialRating,SortName"},{name:Globalize.translate("OptionPlayCount"),id:"PlayCount,SortName"},{name:Globalize.translate("OptionReleaseDate"),id:"PremiereDate,SortName"}],callback:function(){getQuery(tabContent).StartIndex=0,reloadItems()},query:getQuery(tabContent),button:e.target})})}var self=this,pageSize=libraryBrowser.getDefaultPageSize(),data={};self.showFilterMenu=function(){require(["components/filterdialog/filterdialog"],function(filterDialogFactory){var filterDialog=new filterDialogFactory({query:getQuery(tabContent),mode:"movies"});Events.on(filterDialog,"filterchange",function(){getQuery(tabContent).StartIndex=0,reloadItems()}),filterDialog.show()})},self.getCurrentViewStyle=function(){return getPageData(tabContent).view},initPage(tabContent),self.renderTab=function(){reloadItems(),updateFilterControls(tabContent)},self.destroy=function(){}}}); \ No newline at end of file +define(["loading","events","libraryBrowser","imageLoader","alphaPicker","listView","cardBuilder","apphost","emby-itemscontainer"],function(loading,events,libraryBrowser,imageLoader,alphaPicker,listView,cardBuilder,appHost){"use strict";return function(view,params,tabContent){function getPageData(context){var key=getSavedQueryKey(context),pageData=data[key];return pageData||(pageData=data[key]={query:{SortBy:"SortName",SortOrder:"Ascending",IncludeItemTypes:"Trailer",Recursive:!0,Fields:"PrimaryImageAspectRatio,SortName,BasicSyncInfo",ImageTypeLimit:1,EnableImageTypes:"Primary,Backdrop,Banner,Thumb",StartIndex:0,Limit:pageSize},view:libraryBrowser.getSavedView(key)||"Poster"},libraryBrowser.loadSavedQueryValues(key,pageData.query)),pageData}function getQuery(context){return getPageData(context).query}function getSavedQueryKey(context){return context.savedQueryKey||(context.savedQueryKey=libraryBrowser.getSavedQueryKey("trailers")),context.savedQueryKey}function reloadItems(){loading.show();var query=getQuery(tabContent);ApiClient.getItems(Dashboard.getCurrentUserId(),query).then(function(result){function onNextPageClick(){query.StartIndex+=query.Limit,reloadItems()}function onPreviousPageClick(){query.StartIndex-=query.Limit,reloadItems()}window.scrollTo(0,0),updateFilterControls(tabContent);var html,pagingHtml=LibraryBrowser.getQueryPagingHtml({startIndex:query.StartIndex,limit:query.Limit,totalRecordCount:result.TotalRecordCount,showLimit:!1,updatePageSizeSetting:!1,addLayoutButton:!1,sortButton:!1,filterButton:!1}),viewStyle=self.getCurrentViewStyle();html="Thumb"==viewStyle?cardBuilder.getCardsHtml({items:result.Items,shape:"backdrop",preferThumb:!0,context:"movies",overlayPlayButton:!0}):"ThumbCard"==viewStyle?cardBuilder.getCardsHtml({items:result.Items,shape:"backdrop",preferThumb:!0,context:"movies",cardLayout:!0,showTitle:!0,showYear:!0,vibrant:!0}):"Banner"==viewStyle?cardBuilder.getCardsHtml({items:result.Items,shape:"banner",preferBanner:!0,context:"movies"}):"List"==viewStyle?listView.getListViewHtml({items:result.Items,context:"movies",sortBy:query.SortBy}):"PosterCard"==viewStyle?cardBuilder.getCardsHtml({items:result.Items,shape:"portrait",context:"movies",showTitle:!0,showYear:!0,cardLayout:!0,vibrant:!0}):cardBuilder.getCardsHtml({items:result.Items,shape:"portrait",context:"movies",centerText:!0,overlayPlayButton:!0,showTitle:!0,showYear:!0});var i,length,elems=tabContent.querySelectorAll(".paging");for(i=0,length=elems.length;i'+Globalize.translate("MessageNoTrailersFound")+"

");var itemsContainer=tabContent.querySelector(".itemsContainer");itemsContainer.innerHTML=html,imageLoader.lazyChildren(itemsContainer),libraryBrowser.saveQueryValues(getSavedQueryKey(tabContent),query),loading.hide()})}function updateFilterControls(tabContent){var query=getQuery(tabContent);self.alphaPicker.value(query.NameStartsWithOrGreater)}function initPage(tabContent){var alphaPickerElement=tabContent.querySelector(".alphaPicker");alphaPickerElement.addEventListener("alphavaluechanged",function(e){var newValue=e.detail.value,query=getQuery(tabContent);query.NameStartsWithOrGreater=newValue,query.StartIndex=0,reloadItems()}),self.alphaPicker=new alphaPicker({element:alphaPickerElement,valueChangeEvent:"click"}),tabContent.querySelector(".btnFilter").addEventListener("click",function(){self.showFilterMenu()}),tabContent.querySelector(".btnSort").addEventListener("click",function(e){libraryBrowser.showSortMenu({items:[{name:Globalize.translate("OptionNameSort"),id:"SortName"},{name:Globalize.translate("OptionImdbRating"),id:"CommunityRating,SortName"},{name:Globalize.translate("OptionDateAdded"),id:"DateCreated,SortName"},{name:Globalize.translate("OptionDatePlayed"),id:"DatePlayed,SortName"},{name:Globalize.translate("OptionParentalRating"),id:"OfficialRating,SortName"},{name:Globalize.translate("OptionPlayCount"),id:"PlayCount,SortName"},{name:Globalize.translate("OptionReleaseDate"),id:"PremiereDate,SortName"}],callback:function(){getQuery(tabContent).StartIndex=0,reloadItems()},query:getQuery(tabContent),button:e.target})})}var self=this,pageSize=libraryBrowser.getDefaultPageSize(),data={};self.showFilterMenu=function(){require(["components/filterdialog/filterdialog"],function(filterDialogFactory){var filterDialog=new filterDialogFactory({query:getQuery(tabContent),mode:"movies"});Events.on(filterDialog,"filterchange",function(){getQuery(tabContent).StartIndex=0,reloadItems()}),filterDialog.show()})},self.getCurrentViewStyle=function(){return getPageData(tabContent).view},initPage(tabContent),self.renderTab=function(){reloadItems(),updateFilterControls(tabContent)},self.destroy=function(){}}}); \ No newline at end of file diff --git a/dashboard-ui/scripts/musicalbums.js b/dashboard-ui/scripts/musicalbums.js index b3e14c21af..fb605963c2 100644 --- a/dashboard-ui/scripts/musicalbums.js +++ b/dashboard-ui/scripts/musicalbums.js @@ -1 +1 @@ -define(["events","libraryBrowser","imageLoader","alphaPicker","listView","cardBuilder","apphost","emby-itemscontainer"],function(events,libraryBrowser,imageLoader,alphaPicker,listView,cardBuilder,appHost){"use strict";return function(view,params,tabContent){function getPageData(context){var key=getSavedQueryKey(context),pageData=data[key];return pageData||(pageData=data[key]={query:{SortBy:"SortName",SortOrder:"Ascending",IncludeItemTypes:"MusicAlbum",Recursive:!0,Fields:"PrimaryImageAspectRatio,SortName,BasicSyncInfo",ImageTypeLimit:1,EnableImageTypes:"Primary,Backdrop,Banner,Thumb",StartIndex:0,Limit:pageSize},view:libraryBrowser.getSavedView(key)||(appHost.preferVisualCards?"PosterCard":"Poster")},pageData.query.ParentId=params.topParentId,libraryBrowser.loadSavedQueryValues(key,pageData.query)),pageData}function getQuery(context){return getPageData(context).query}function getSavedQueryKey(context){return context.savedQueryKey||(context.savedQueryKey=libraryBrowser.getSavedQueryKey("musicalbums")),context.savedQueryKey}function onViewStyleChange(){var viewStyle=self.getCurrentViewStyle(),itemsContainer=tabContent.querySelector(".itemsContainer");"List"==viewStyle?(itemsContainer.classList.add("vertical-list"),itemsContainer.classList.remove("vertical-wrap")):(itemsContainer.classList.remove("vertical-list"),itemsContainer.classList.add("vertical-wrap")),itemsContainer.innerHTML=""}function reloadItems(page){Dashboard.showLoadingMsg();var query=getQuery(page);ApiClient.getItems(Dashboard.getCurrentUserId(),query).then(function(result){function onNextPageClick(){query.StartIndex+=query.Limit,reloadItems(tabContent)}function onPreviousPageClick(){query.StartIndex-=query.Limit,reloadItems(tabContent)}window.scrollTo(0,0),updateFilterControls(page);var html,pagingHtml=LibraryBrowser.getQueryPagingHtml({startIndex:query.StartIndex,limit:query.Limit,totalRecordCount:result.TotalRecordCount,showLimit:!1,updatePageSizeSetting:!1,addLayoutButton:!1,sortButton:!1,filterButton:!1}),viewStyle=self.getCurrentViewStyle();html="List"==viewStyle?listView.getListViewHtml({items:result.Items,context:"music",sortBy:query.SortBy,addToListButton:!0}):"PosterCard"==viewStyle?cardBuilder.getCardsHtml({items:result.Items,shape:"square",context:"music",showTitle:!0,coverImage:!0,showParentTitle:!0,lazy:!0,cardLayout:!0,vibrant:!0}):cardBuilder.getCardsHtml({items:result.Items,shape:"square",context:"music",showTitle:!0,showParentTitle:!0,lazy:!0,centerText:!0,overlayPlayButton:!0});var i,length,elems=tabContent.querySelectorAll(".paging");for(i=0,length=elems.length;i=1920?9:screenWidth>=1200?12:screenWidth>=1e3?10:8}function enableScrollX(){return browserInfo.mobile}function getSquareShape(){return enableScrollX()?"overflowSquare":"square"}function loadLatest(page,parentId){Dashboard.showLoadingMsg();var userId=Dashboard.getCurrentUserId(),options={IncludeItemTypes:"Audio",Limit:itemsPerRow(),Fields:"PrimaryImageAspectRatio,BasicSyncInfo",ParentId:parentId,ImageTypeLimit:1,EnableImageTypes:"Primary,Backdrop,Banner,Thumb",EnableTotalRecordCount:!1};ApiClient.getJSON(ApiClient.getUrl("Users/"+userId+"/Items/Latest",options)).then(function(items){var elem=page.querySelector("#recentlyAddedSongs"),supportsImageAnalysis=appHost.supports("imageanalysis");elem.innerHTML=cardBuilder.getCardsHtml({items:items,showUnplayedIndicator:!1,showLatestItemsPopup:!1,shape:getSquareShape(),showTitle:!0,showParentTitle:!0,lazy:!0,centerText:!supportsImageAnalysis,overlayPlayButton:!supportsImageAnalysis,allowBottomPadding:!enableScrollX(),cardLayout:supportsImageAnalysis,vibrant:supportsImageAnalysis}),imageLoader.lazyChildren(elem),Dashboard.hideLoadingMsg()})}function loadRecentlyPlayed(page,parentId){var options={SortBy:"DatePlayed",SortOrder:"Descending",IncludeItemTypes:"Audio",Limit:itemsPerRow(),Recursive:!0,Fields:"PrimaryImageAspectRatio,AudioInfo",Filters:"IsPlayed",ParentId:parentId,ImageTypeLimit:1,EnableImageTypes:"Primary,Backdrop,Banner,Thumb",EnableTotalRecordCount:!1};ApiClient.getItems(Dashboard.getCurrentUserId(),options).then(function(result){var elem=page.querySelector("#recentlyPlayed");result.Items.length?elem.classList.remove("hide"):elem.classList.add("hide");var itemsContainer=elem.querySelector(".itemsContainer"),supportsImageAnalysis=appHost.supports("imageanalysis");itemsContainer.innerHTML=cardBuilder.getCardsHtml({items:result.Items,showUnplayedIndicator:!1,shape:getSquareShape(),showTitle:!0,showParentTitle:!0,action:"instantmix",lazy:!0,centerText:!supportsImageAnalysis,overlayMoreButton:!supportsImageAnalysis,allowBottomPadding:!enableScrollX(),cardLayout:supportsImageAnalysis,vibrant:supportsImageAnalysis}),imageLoader.lazyChildren(itemsContainer)})}function loadFrequentlyPlayed(page,parentId){var options={SortBy:"PlayCount",SortOrder:"Descending",IncludeItemTypes:"Audio",Limit:itemsPerRow(),Recursive:!0,Fields:"PrimaryImageAspectRatio,AudioInfo",Filters:"IsPlayed",ParentId:parentId,ImageTypeLimit:1,EnableImageTypes:"Primary,Backdrop,Banner,Thumb",EnableTotalRecordCount:!1};ApiClient.getItems(Dashboard.getCurrentUserId(),options).then(function(result){var elem=page.querySelector("#topPlayed");result.Items.length?elem.classList.remove("hide"):elem.classList.add("hide");var itemsContainer=elem.querySelector(".itemsContainer"),supportsImageAnalysis=appHost.supports("imageanalysis");itemsContainer.innerHTML=cardBuilder.getCardsHtml({items:result.Items,showUnplayedIndicator:!1,shape:getSquareShape(),showTitle:!0,showParentTitle:!0,action:"instantmix",lazy:!0,centerText:!supportsImageAnalysis,overlayMoreButton:!supportsImageAnalysis,allowBottomPadding:!enableScrollX(),cardLayout:supportsImageAnalysis,vibrant:supportsImageAnalysis}),imageLoader.lazyChildren(itemsContainer)})}function loadPlaylists(page,parentId){var options={SortBy:"SortName",SortOrder:"Ascending",IncludeItemTypes:"Playlist",Recursive:!0,Fields:"PrimaryImageAspectRatio,SortName,CumulativeRunTimeTicks,CanDelete",StartIndex:0,Limit:itemsPerRow(),EnableTotalRecordCount:!1};ApiClient.getItems(Dashboard.getCurrentUserId(),options).then(function(result){var elem=page.querySelector("#playlists");result.Items.length?elem.classList.remove("hide"):elem.classList.add("hide");var itemsContainer=elem.querySelector(".itemsContainer"),supportsImageAnalysis=appHost.supports("imageanalysis");itemsContainer.innerHTML=cardBuilder.getCardsHtml({items:result.Items,shape:getSquareShape(),showTitle:!0,lazy:!0,coverImage:!0,centerText:!supportsImageAnalysis,overlayPlayButton:!supportsImageAnalysis,allowBottomPadding:!enableScrollX(),cardLayout:supportsImageAnalysis,vibrant:supportsImageAnalysis}),imageLoader.lazyChildren(itemsContainer)})}function loadSuggestionsTab(page,tabContent,parentId){console.log("loadSuggestionsTab"),loadLatest(tabContent,parentId),loadPlaylists(tabContent,parentId),loadRecentlyPlayed(tabContent,parentId),loadFrequentlyPlayed(tabContent,parentId),require(["components/favoriteitems"],function(favoriteItems){favoriteItems.render(tabContent,Dashboard.getCurrentUserId(),parentId,["favoriteArtists","favoriteAlbums","favoriteSongs"])})}function getTabs(){return[{name:Globalize.translate("TabSuggestions")},{name:Globalize.translate("TabAlbums")},{name:Globalize.translate("TabAlbumArtists")},{name:Globalize.translate("TabArtists")},{name:Globalize.translate("TabSongs")},{name:Globalize.translate("TabGenres")},{name:Globalize.translate("TabFolders")}]}return function(view,params){function reload(){Dashboard.showLoadingMsg();var tabContent=view.querySelector(".pageTabContent[data-index='0']");loadSuggestionsTab(view,tabContent,params.topParentId)}function enableScrollX(){return browserInfo.mobile}function onBeforeTabChange(e){preLoadTab(view,parseInt(e.detail.selectedTabIndex))}function onTabChange(e){loadTab(view,parseInt(e.detail.selectedTabIndex))}function initTabs(){var tabsReplaced=mainTabsManager.setTabs(view,currentTabIndex,getTabs);if(tabsReplaced){var viewTabs=document.querySelector(".tabs-viewmenubar");viewTabs.addEventListener("beforetabchange",onBeforeTabChange),viewTabs.addEventListener("tabchange",onTabChange),libraryBrowser.configurePaperLibraryTabs(view,viewTabs,view.querySelectorAll(".pageTabContent"),[0,4,5,6]),viewTabs.triggerBeforeTabChange||viewTabs.addEventListener("ready",function(){viewTabs.triggerBeforeTabChange()})}}function getTabController(page,index,callback){var depends=[];switch(index){case 0:break;case 1:depends.push("scripts/musicalbums");break;case 2:depends.push("scripts/musicartists");break;case 3:depends.push("scripts/musicartists");break;case 4:depends.push("scripts/songs");break;case 5:depends.push("scripts/musicgenres");break;case 6:depends.push("scripts/musicfolders")}require(depends,function(controllerFactory){var tabContent;0==index&&(tabContent=view.querySelector(".pageTabContent[data-index='"+index+"']"),self.tabContent=tabContent);var controller=tabControllers[index];controller||(tabContent=view.querySelector(".pageTabContent[data-index='"+index+"']"),controller=index?new controllerFactory(view,params,tabContent):self,2==index?controller.mode="albumartists":3==index&&(controller.mode="artists"),tabControllers[index]=controller,controller.initTab&&controller.initTab()),callback(controller)})}function preLoadTab(page,index){getTabController(page,index,function(controller){renderedTabs.indexOf(index)==-1&&controller.preRender&&controller.preRender()})}function loadTab(page,index){currentTabIndex=index,getTabController(page,index,function(controller){renderedTabs.indexOf(index)==-1&&(renderedTabs.push(index),controller.renderTab())})}var self=this,currentTabIndex=parseInt(params.tab||"0");self.initTab=function(){for(var tabContent=view.querySelector(".pageTabContent[data-index='0']"),containers=tabContent.querySelectorAll(".itemsContainer"),i=0,length=containers.length;i=1920?9:screenWidth>=1200?12:screenWidth>=1e3?10:8}function enableScrollX(){return browserInfo.mobile}function getSquareShape(){return enableScrollX()?"overflowSquare":"square"}function loadLatest(page,parentId){loading.show();var userId=Dashboard.getCurrentUserId(),options={IncludeItemTypes:"Audio",Limit:itemsPerRow(),Fields:"PrimaryImageAspectRatio,BasicSyncInfo",ParentId:parentId,ImageTypeLimit:1,EnableImageTypes:"Primary,Backdrop,Banner,Thumb",EnableTotalRecordCount:!1};ApiClient.getJSON(ApiClient.getUrl("Users/"+userId+"/Items/Latest",options)).then(function(items){var elem=page.querySelector("#recentlyAddedSongs"),supportsImageAnalysis=appHost.supports("imageanalysis");elem.innerHTML=cardBuilder.getCardsHtml({items:items,showUnplayedIndicator:!1,showLatestItemsPopup:!1,shape:getSquareShape(),showTitle:!0,showParentTitle:!0,lazy:!0,centerText:!supportsImageAnalysis,overlayPlayButton:!supportsImageAnalysis,allowBottomPadding:!enableScrollX(),cardLayout:supportsImageAnalysis,vibrant:supportsImageAnalysis}),imageLoader.lazyChildren(elem),loading.hide()})}function loadRecentlyPlayed(page,parentId){var options={SortBy:"DatePlayed",SortOrder:"Descending",IncludeItemTypes:"Audio",Limit:itemsPerRow(),Recursive:!0,Fields:"PrimaryImageAspectRatio,AudioInfo",Filters:"IsPlayed",ParentId:parentId,ImageTypeLimit:1,EnableImageTypes:"Primary,Backdrop,Banner,Thumb",EnableTotalRecordCount:!1};ApiClient.getItems(Dashboard.getCurrentUserId(),options).then(function(result){var elem=page.querySelector("#recentlyPlayed");result.Items.length?elem.classList.remove("hide"):elem.classList.add("hide");var itemsContainer=elem.querySelector(".itemsContainer"),supportsImageAnalysis=appHost.supports("imageanalysis");itemsContainer.innerHTML=cardBuilder.getCardsHtml({items:result.Items,showUnplayedIndicator:!1,shape:getSquareShape(),showTitle:!0,showParentTitle:!0,action:"instantmix",lazy:!0,centerText:!supportsImageAnalysis,overlayMoreButton:!supportsImageAnalysis,allowBottomPadding:!enableScrollX(),cardLayout:supportsImageAnalysis,vibrant:supportsImageAnalysis}),imageLoader.lazyChildren(itemsContainer)})}function loadFrequentlyPlayed(page,parentId){var options={SortBy:"PlayCount",SortOrder:"Descending",IncludeItemTypes:"Audio",Limit:itemsPerRow(),Recursive:!0,Fields:"PrimaryImageAspectRatio,AudioInfo",Filters:"IsPlayed",ParentId:parentId,ImageTypeLimit:1,EnableImageTypes:"Primary,Backdrop,Banner,Thumb",EnableTotalRecordCount:!1};ApiClient.getItems(Dashboard.getCurrentUserId(),options).then(function(result){var elem=page.querySelector("#topPlayed");result.Items.length?elem.classList.remove("hide"):elem.classList.add("hide");var itemsContainer=elem.querySelector(".itemsContainer"),supportsImageAnalysis=appHost.supports("imageanalysis");itemsContainer.innerHTML=cardBuilder.getCardsHtml({items:result.Items,showUnplayedIndicator:!1,shape:getSquareShape(),showTitle:!0,showParentTitle:!0,action:"instantmix",lazy:!0,centerText:!supportsImageAnalysis,overlayMoreButton:!supportsImageAnalysis,allowBottomPadding:!enableScrollX(),cardLayout:supportsImageAnalysis,vibrant:supportsImageAnalysis}),imageLoader.lazyChildren(itemsContainer)})}function loadPlaylists(page,parentId){var options={SortBy:"SortName",SortOrder:"Ascending",IncludeItemTypes:"Playlist",Recursive:!0,Fields:"PrimaryImageAspectRatio,SortName,CumulativeRunTimeTicks,CanDelete",StartIndex:0,Limit:itemsPerRow(),EnableTotalRecordCount:!1};ApiClient.getItems(Dashboard.getCurrentUserId(),options).then(function(result){var elem=page.querySelector("#playlists");result.Items.length?elem.classList.remove("hide"):elem.classList.add("hide");var itemsContainer=elem.querySelector(".itemsContainer"),supportsImageAnalysis=appHost.supports("imageanalysis");itemsContainer.innerHTML=cardBuilder.getCardsHtml({items:result.Items,shape:getSquareShape(),showTitle:!0,lazy:!0,coverImage:!0,centerText:!supportsImageAnalysis,overlayPlayButton:!supportsImageAnalysis,allowBottomPadding:!enableScrollX(),cardLayout:supportsImageAnalysis,vibrant:supportsImageAnalysis}),imageLoader.lazyChildren(itemsContainer)})}function loadSuggestionsTab(page,tabContent,parentId){console.log("loadSuggestionsTab"),loadLatest(tabContent,parentId),loadPlaylists(tabContent,parentId),loadRecentlyPlayed(tabContent,parentId),loadFrequentlyPlayed(tabContent,parentId),require(["components/favoriteitems"],function(favoriteItems){favoriteItems.render(tabContent,Dashboard.getCurrentUserId(),parentId,["favoriteArtists","favoriteAlbums","favoriteSongs"])})}function getTabs(){return[{name:Globalize.translate("TabSuggestions")},{name:Globalize.translate("TabAlbums")},{name:Globalize.translate("TabAlbumArtists")},{name:Globalize.translate("TabArtists")},{name:Globalize.translate("TabSongs")},{name:Globalize.translate("TabGenres")},{name:Globalize.translate("TabFolders")}]}return function(view,params){function reload(){loading.show();var tabContent=view.querySelector(".pageTabContent[data-index='0']");loadSuggestionsTab(view,tabContent,params.topParentId)}function enableScrollX(){return browserInfo.mobile}function onBeforeTabChange(e){preLoadTab(view,parseInt(e.detail.selectedTabIndex))}function onTabChange(e){loadTab(view,parseInt(e.detail.selectedTabIndex))}function initTabs(){var tabsReplaced=mainTabsManager.setTabs(view,currentTabIndex,getTabs);if(tabsReplaced){var viewTabs=document.querySelector(".tabs-viewmenubar");viewTabs.addEventListener("beforetabchange",onBeforeTabChange),viewTabs.addEventListener("tabchange",onTabChange),libraryBrowser.configurePaperLibraryTabs(view,viewTabs,view.querySelectorAll(".pageTabContent"),[0,4,5,6]),viewTabs.triggerBeforeTabChange||viewTabs.addEventListener("ready",function(){viewTabs.triggerBeforeTabChange()})}}function getTabController(page,index,callback){var depends=[];switch(index){case 0:break;case 1:depends.push("scripts/musicalbums");break;case 2:depends.push("scripts/musicartists");break;case 3:depends.push("scripts/musicartists");break;case 4:depends.push("scripts/songs");break;case 5:depends.push("scripts/musicgenres");break;case 6:depends.push("scripts/musicfolders")}require(depends,function(controllerFactory){var tabContent;0==index&&(tabContent=view.querySelector(".pageTabContent[data-index='"+index+"']"),self.tabContent=tabContent);var controller=tabControllers[index];controller||(tabContent=view.querySelector(".pageTabContent[data-index='"+index+"']"),controller=index?new controllerFactory(view,params,tabContent):self,2==index?controller.mode="albumartists":3==index&&(controller.mode="artists"),tabControllers[index]=controller,controller.initTab&&controller.initTab()),callback(controller)})}function preLoadTab(page,index){getTabController(page,index,function(controller){renderedTabs.indexOf(index)==-1&&controller.preRender&&controller.preRender()})}function loadTab(page,index){currentTabIndex=index,getTabController(page,index,function(controller){renderedTabs.indexOf(index)==-1&&(renderedTabs.push(index),controller.renderTab())})}var self=this,currentTabIndex=parseInt(params.tab||"0");self.initTab=function(){for(var tabContent=view.querySelector(".pageTabContent[data-index='0']"),containers=tabContent.querySelectorAll(".itemsContainer"),i=0,length=containers.length;i",currentHtml+=""+i.Name+"",currentHtml+=""}).join(""),folderHtml+="",page.querySelector(".folderGroupList").innerHTML=folderHtml}function renderLatestItems(page,user,result){var folderHtml="";folderHtml+='
';var excludeViewTypes=["playlists","livetv","boxsets","channels"],excludeItemTypes=["Channel"];folderHtml+=result.Items.map(function(i){if(excludeViewTypes.indexOf(i.CollectionType||[])!==-1)return"";if(excludeItemTypes.indexOf(i.Type)!==-1)return"";var currentHtml="",id="chkIncludeInLatest"+i.Id,isChecked=user.Configuration.LatestItemsExcludes.indexOf(i.Id)==-1,checkedHtml=isChecked?' checked="checked"':"";return currentHtml+=""}).join(""),folderHtml+="
",page.querySelector(".latestItemsList").innerHTML=folderHtml}function renderViewOrder(page,user,result){var html="",index=0;html+=result.Items.map(function(view){var currentHtml="";return currentHtml+='
',currentHtml+='',currentHtml+='
',currentHtml+="
",currentHtml+=view.Name,currentHtml+="
",currentHtml+="
",index>0?currentHtml+='':result.Items.length>1&&(currentHtml+=''),currentHtml+="
",index++,currentHtml}).join(""),page.querySelector(".viewOrderList").innerHTML=html}function loadForm(page,user,userSettings){page.querySelector(".chkHidePlayedFromLatest").checked=user.Configuration.HidePlayedInLatest||!1,page.querySelector("#selectHomeSection1").value=userSettings.get("homesection0")||"",page.querySelector("#selectHomeSection2").value=userSettings.get("homesection1")||"",page.querySelector("#selectHomeSection3").value=userSettings.get("homesection2")||"",page.querySelector("#selectHomeSection4").value=userSettings.get("homesection3")||"",page.querySelector("#selectHomeSection5").value=userSettings.get("homesection4")||"",page.querySelector("#selectHomeSection6").value=userSettings.get("homesection5")||"";var promise1=ApiClient.getUserViews({},user.Id),promise2=ApiClient.getJSON(ApiClient.getUrl("Users/"+user.Id+"/GroupingOptions"));Promise.all([promise1,promise2]).then(function(responses){renderViews(page,user,responses[1]),renderLatestItems(page,user,responses[0]),renderViewOrder(page,user,responses[0]),Dashboard.hideLoadingMsg()})}function getCheckboxItems(selector,page,isChecked){for(var inputs=page.querySelectorAll(selector),list=[],i=0,length=inputs.length;i",currentHtml+=""+i.Name+"",currentHtml+=""}).join(""),folderHtml+="",page.querySelector(".folderGroupList").innerHTML=folderHtml}function renderLatestItems(page,user,result){var folderHtml="";folderHtml+='
';var excludeViewTypes=["playlists","livetv","boxsets","channels"],excludeItemTypes=["Channel"];folderHtml+=result.Items.map(function(i){if(excludeViewTypes.indexOf(i.CollectionType||[])!==-1)return"";if(excludeItemTypes.indexOf(i.Type)!==-1)return"";var currentHtml="",id="chkIncludeInLatest"+i.Id,isChecked=user.Configuration.LatestItemsExcludes.indexOf(i.Id)==-1,checkedHtml=isChecked?' checked="checked"':"";return currentHtml+=""}).join(""),folderHtml+="
",page.querySelector(".latestItemsList").innerHTML=folderHtml}function renderViewOrder(page,user,result){var html="",index=0;html+=result.Items.map(function(view){var currentHtml="";return currentHtml+='
',currentHtml+='',currentHtml+='
',currentHtml+="
",currentHtml+=view.Name,currentHtml+="
",currentHtml+="
",index>0?currentHtml+='':result.Items.length>1&&(currentHtml+=''),currentHtml+="
",index++,currentHtml}).join(""),page.querySelector(".viewOrderList").innerHTML=html}function loadForm(page,user,userSettings){page.querySelector(".chkHidePlayedFromLatest").checked=user.Configuration.HidePlayedInLatest||!1,page.querySelector("#selectHomeSection1").value=userSettings.get("homesection0")||"",page.querySelector("#selectHomeSection2").value=userSettings.get("homesection1")||"",page.querySelector("#selectHomeSection3").value=userSettings.get("homesection2")||"",page.querySelector("#selectHomeSection4").value=userSettings.get("homesection3")||"",page.querySelector("#selectHomeSection5").value=userSettings.get("homesection4")||"",page.querySelector("#selectHomeSection6").value=userSettings.get("homesection5")||"";var promise1=ApiClient.getUserViews({},user.Id),promise2=ApiClient.getJSON(ApiClient.getUrl("Users/"+user.Id+"/GroupingOptions"));Promise.all([promise1,promise2]).then(function(responses){renderViews(page,user,responses[1]),renderLatestItems(page,user,responses[0]),renderViewOrder(page,user,responses[0]),loading.hide()})}function getCheckboxItems(selector,page,isChecked){for(var inputs=page.querySelectorAll(selector),list=[],i=0,length=inputs.length;i"+culture.DisplayName+""}select.innerHTML=html}return function(view,params){function loadForm(page,user,loggedInUser,allCulturesPromise){userSettingsInstance.setUserInfo(userId,ApiClient).then(function(){userSettingsLoaded=!0,allCulturesPromise.then(function(allCultures){populateLanguages(page.querySelector("#selectAudioLanguage"),allCultures),populateLanguages(page.querySelector("#selectSubtitleLanguage"),allCultures),page.querySelector("#selectAudioLanguage",page).value=user.Configuration.AudioLanguagePreference||"",page.querySelector("#selectSubtitleLanguage",page).value=user.Configuration.SubtitleLanguagePreference||"",page.querySelector(".chkEpisodeAutoPlay").checked=user.Configuration.EnableNextEpisodeAutoPlay||!1}),page.querySelector("#selectSubtitlePlaybackMode").value=user.Configuration.SubtitleMode||"",page.querySelector(".chkPlayDefaultAudioTrack").checked=user.Configuration.PlayDefaultAudioTrack||!1,page.querySelector(".chkEnableCinemaMode").checked=userSettingsInstance.enableCinemaMode(),page.querySelector(".chkExternalVideoPlayer").checked=appSettings.enableExternalPlayers(),require(["qualityoptions"],function(qualityoptions){var bitrateOptions=qualityoptions.getVideoQualityOptions({currentMaxBitrate:appSettings.maxStreamingBitrate(),isAutomaticBitrateEnabled:appSettings.enableAutomaticBitrateDetection(),enableAuto:!0}).map(function(i){return'"}).join("");page.querySelector("#selectMaxBitrate").innerHTML=bitrateOptions,page.querySelector("#selectMaxChromecastBitrate").innerHTML=bitrateOptions,appSettings.enableAutomaticBitrateDetection()?page.querySelector("#selectMaxBitrate").value="":page.querySelector("#selectMaxBitrate").value=appSettings.maxStreamingBitrate(),page.querySelector("#selectMaxChromecastBitrate").value=appSettings.maxChromecastBitrate()||"",Dashboard.hideLoadingMsg()})})}function loadPage(page){Dashboard.showLoadingMsg();var promise1=ApiClient.getUser(userId),promise2=Dashboard.getCurrentUser(),allCulturesPromise=ApiClient.getCultures();Promise.all([promise1,promise2]).then(function(responses){loadForm(page,responses[1],responses[0],allCulturesPromise)}),ApiClient.getNamedConfiguration("cinemamode").then(function(cinemaConfig){cinemaConfig.EnableIntrosForMovies||cinemaConfig.EnableIntrosForEpisodes?page.querySelector(".cinemaModeOptions").classList.remove("hide"):page.querySelector(".cinemaModeOptions").classList.add("hide")})}function refreshGlobalUserSettings(){require(["userSettings"],function(userSettings){userSettings.importFrom(userSettingsInstance)})}function saveUser(page,user){return user.Configuration.AudioLanguagePreference=page.querySelector("#selectAudioLanguage").value,user.Configuration.SubtitleLanguagePreference=page.querySelector("#selectSubtitleLanguage").value,user.Configuration.SubtitleMode=page.querySelector("#selectSubtitlePlaybackMode").value,user.Configuration.PlayDefaultAudioTrack=page.querySelector(".chkPlayDefaultAudioTrack").checked,user.Configuration.EnableNextEpisodeAutoPlay=page.querySelector(".chkEpisodeAutoPlay").checked,userSettingsLoaded&&(userSettingsInstance.enableCinemaMode(page.querySelector(".chkEnableCinemaMode").checked),userId===Dashboard.getCurrentUserId()&&refreshGlobalUserSettings()),ApiClient.updateUserConfiguration(user.Id,user.Configuration)}function save(page){appSettings.enableExternalPlayers(page.querySelector(".chkExternalVideoPlayer").checked),page.querySelector("#selectMaxBitrate").value?(appSettings.maxStreamingBitrate(page.querySelector("#selectMaxBitrate").value),appSettings.enableAutomaticBitrateDetection(!1)):appSettings.enableAutomaticBitrateDetection(!0),appSettings.maxChromecastBitrate(page.querySelector("#selectMaxChromecastBitrate").value),AppInfo.enableAutoSave||Dashboard.showLoadingMsg(),ApiClient.getUser(userId).then(function(result){saveUser(page,result).then(function(){Dashboard.hideLoadingMsg(),AppInfo.enableAutoSave||require(["toast"],function(toast){toast(Globalize.translate("SettingsSaved"))})},function(){Dashboard.hideLoadingMsg()})})}var userSettingsLoaded,userId=params.userId||Dashboard.getCurrentUserId(),userSettingsInstance=new userSettingsBuilder;view.querySelector("#selectSubtitlePlaybackMode").addEventListener("change",function(){for(var subtitlesHelp=view.querySelectorAll(".subtitlesHelp"),i=0,length=subtitlesHelp.length;i"+culture.DisplayName+""}select.innerHTML=html}return function(view,params){function loadForm(page,user,loggedInUser,allCulturesPromise){userSettingsInstance.setUserInfo(userId,ApiClient).then(function(){userSettingsLoaded=!0,allCulturesPromise.then(function(allCultures){populateLanguages(page.querySelector("#selectAudioLanguage"),allCultures),populateLanguages(page.querySelector("#selectSubtitleLanguage"),allCultures),page.querySelector("#selectAudioLanguage",page).value=user.Configuration.AudioLanguagePreference||"",page.querySelector("#selectSubtitleLanguage",page).value=user.Configuration.SubtitleLanguagePreference||"",page.querySelector(".chkEpisodeAutoPlay").checked=user.Configuration.EnableNextEpisodeAutoPlay||!1}),page.querySelector("#selectSubtitlePlaybackMode").value=user.Configuration.SubtitleMode||"",page.querySelector(".chkPlayDefaultAudioTrack").checked=user.Configuration.PlayDefaultAudioTrack||!1,page.querySelector(".chkEnableCinemaMode").checked=userSettingsInstance.enableCinemaMode(),page.querySelector(".chkExternalVideoPlayer").checked=appSettings.enableExternalPlayers(),require(["qualityoptions"],function(qualityoptions){var bitrateOptions=qualityoptions.getVideoQualityOptions({currentMaxBitrate:appSettings.maxStreamingBitrate(),isAutomaticBitrateEnabled:appSettings.enableAutomaticBitrateDetection(),enableAuto:!0}).map(function(i){return'"}).join("");page.querySelector("#selectMaxBitrate").innerHTML=bitrateOptions,page.querySelector("#selectMaxChromecastBitrate").innerHTML=bitrateOptions,appSettings.enableAutomaticBitrateDetection()?page.querySelector("#selectMaxBitrate").value="":page.querySelector("#selectMaxBitrate").value=appSettings.maxStreamingBitrate(),page.querySelector("#selectMaxChromecastBitrate").value=appSettings.maxChromecastBitrate()||"",loading.hide()})})}function loadPage(page){loading.show();var promise1=ApiClient.getUser(userId),promise2=Dashboard.getCurrentUser(),allCulturesPromise=ApiClient.getCultures();Promise.all([promise1,promise2]).then(function(responses){loadForm(page,responses[1],responses[0],allCulturesPromise)}),ApiClient.getNamedConfiguration("cinemamode").then(function(cinemaConfig){cinemaConfig.EnableIntrosForMovies||cinemaConfig.EnableIntrosForEpisodes?page.querySelector(".cinemaModeOptions").classList.remove("hide"):page.querySelector(".cinemaModeOptions").classList.add("hide")})}function refreshGlobalUserSettings(){require(["userSettings"],function(userSettings){userSettings.importFrom(userSettingsInstance)})}function saveUser(page,user){return user.Configuration.AudioLanguagePreference=page.querySelector("#selectAudioLanguage").value,user.Configuration.SubtitleLanguagePreference=page.querySelector("#selectSubtitleLanguage").value,user.Configuration.SubtitleMode=page.querySelector("#selectSubtitlePlaybackMode").value,user.Configuration.PlayDefaultAudioTrack=page.querySelector(".chkPlayDefaultAudioTrack").checked,user.Configuration.EnableNextEpisodeAutoPlay=page.querySelector(".chkEpisodeAutoPlay").checked,userSettingsLoaded&&(userSettingsInstance.enableCinemaMode(page.querySelector(".chkEnableCinemaMode").checked),userId===Dashboard.getCurrentUserId()&&refreshGlobalUserSettings()),ApiClient.updateUserConfiguration(user.Id,user.Configuration)}function save(page){appSettings.enableExternalPlayers(page.querySelector(".chkExternalVideoPlayer").checked),page.querySelector("#selectMaxBitrate").value?(appSettings.maxStreamingBitrate(page.querySelector("#selectMaxBitrate").value),appSettings.enableAutomaticBitrateDetection(!1)):appSettings.enableAutomaticBitrateDetection(!0),appSettings.maxChromecastBitrate(page.querySelector("#selectMaxChromecastBitrate").value),AppInfo.enableAutoSave||loading.show(),ApiClient.getUser(userId).then(function(result){saveUser(page,result).then(function(){loading.hide(),AppInfo.enableAutoSave||require(["toast"],function(toast){toast(Globalize.translate("SettingsSaved"))})},function(){loading.hide()})})}var userSettingsLoaded,userId=params.userId||Dashboard.getCurrentUserId(),userSettingsInstance=new userSettingsBuilder;view.querySelector("#selectSubtitlePlaybackMode").addEventListener("change",function(){for(var subtitlesHelp=view.querySelectorAll(".subtitlesHelp"),i=0,length=subtitlesHelp.length;i";var showImageEditing=!1;"Guest"==user.ConnectLinkType?page.querySelector(".connectMessage").classList.remove("hide"):user.PrimaryImageTag?(showImageEditing=!0,page.querySelector(".connectMessage").classList.add("hide")):(showImageEditing=!0,page.querySelector(".connectMessage").classList.add("hide")),Dashboard.getCurrentUser().then(function(loggedInUser){showImageEditing&&AppInfo.supportsFileInput&&(loggedInUser.Policy.IsAdministrator||user.Policy.EnableUserPreferenceAccess)?(page.querySelector(".newImageForm").classList.remove("hide"),page.querySelector("#btnDeleteImage").classList.remove("hide")):(page.querySelector(".newImageForm").classList.add("hide"),page.querySelector("#btnDeleteImage").classList.add("hide"))}),Dashboard.hideLoadingMsg()})}function onFileReaderError(evt){switch(Dashboard.hideLoadingMsg(),evt.target.error.code){case evt.target.error.NOT_FOUND_ERR:require(["toast"],function(toast){toast(Globalize.translate("FileNotFound"))});break;case evt.target.error.NOT_READABLE_ERR:require(["toast"],function(toast){toast(Globalize.translate("FileReadError"))});break;case evt.target.error.ABORT_ERR:break;default:require(["toast"],function(toast){toast(Globalize.translate("FileReadError"))})}}function onFileReaderAbort(evt){Dashboard.hideLoadingMsg(),require(["toast"],function(toast){toast(Globalize.translate("FileReadCancelled"))})}function setFiles(page,files){var file=files[0];if(!file||!file.type.match("image.*"))return page.querySelector("#userImageOutput").innerHTML="",page.querySelector("#fldUpload").classList.add("hide"),void(currentFile=null);currentFile=file;var reader=new FileReader;reader.onerror=onFileReaderError,reader.onloadstart=function(){page.querySelector("#fldUpload").classList.add("hide")},reader.onabort=onFileReaderAbort,reader.onload=function(e){var html=[''].join("");page.querySelector("#userImageOutput").innerHTML=html,page.querySelector("#fldUpload").classList.remove("hide")},reader.readAsDataURL(file)}function onImageDragOver(e){return e.preventDefault(),e.originalEvent.dataTransfer.dropEffect="Copy",!1}var currentFile;return function(view,params){reloadUser(view);var userImageDropZone=(new Userpasswordpage(view,params),view.querySelector("#userImageDropZone"));userImageDropZone.addEventListener("dragOver",onImageDragOver),userImageDropZone.addEventListener("drop",function(e){return e.preventDefault(),setFiles(view,e.originalEvent.dataTransfer.files),!1}),view.querySelector("#btnDeleteImage").addEventListener("click",function(){require(["confirm"],function(confirm){confirm(Globalize.translate("DeleteImageConfirmation"),Globalize.translate("DeleteImage")).then(function(){Dashboard.showLoadingMsg();var userId=getParameterByName("userId");ApiClient.deleteUserImage(userId,"primary").then(function(){Dashboard.hideLoadingMsg(),reloadUser(view)})})})}),view.querySelector(".newImageForm").addEventListener("submit",function(e){var file=currentFile;if(!file)return!1;if("image/png"!=file.type&&"image/jpeg"!=file.type&&"image/jpeg"!=file.type)return!1;Dashboard.showLoadingMsg();var userId=getParameterByName("userId");return ApiClient.uploadUserImage(userId,"Primary",file).then(function(){Dashboard.hideLoadingMsg(),reloadUser(view)}),e.preventDefault(),!1}),view.querySelector("#uploadUserImage").addEventListener("change",function(e){setFiles(view,e.target.files)})}}); \ No newline at end of file +define(["scripts/userpasswordpage","loading"],function(Userpasswordpage,loading){"use strict";function reloadUser(page){var userId=getParameterByName("userId");loading.show(),ApiClient.getUser(userId).then(function(user){page.querySelector(".username").innerHTML=user.Name;var uploadUserImage=page.querySelector("#uploadUserImage");uploadUserImage.value="",uploadUserImage.dispatchEvent(new CustomEvent("change",{})),LibraryMenu.setTitle(user.Name);var imageUrl,fldImage=page.querySelector("#fldImage");imageUrl=user.PrimaryImageTag?ApiClient.getUserImageUrl(user.Id,{height:200,tag:user.PrimaryImageTag,type:"Primary"}):"css/images/logindefault.png",fldImage.classList.remove("hide"),fldImage.innerHTML="";var showImageEditing=!1;"Guest"==user.ConnectLinkType?page.querySelector(".connectMessage").classList.remove("hide"):user.PrimaryImageTag?(showImageEditing=!0,page.querySelector(".connectMessage").classList.add("hide")):(showImageEditing=!0,page.querySelector(".connectMessage").classList.add("hide")),Dashboard.getCurrentUser().then(function(loggedInUser){showImageEditing&&AppInfo.supportsFileInput&&(loggedInUser.Policy.IsAdministrator||user.Policy.EnableUserPreferenceAccess)?(page.querySelector(".newImageForm").classList.remove("hide"),page.querySelector("#btnDeleteImage").classList.remove("hide")):(page.querySelector(".newImageForm").classList.add("hide"),page.querySelector("#btnDeleteImage").classList.add("hide"))}),loading.hide()})}function onFileReaderError(evt){switch(loading.hide(),evt.target.error.code){case evt.target.error.NOT_FOUND_ERR:require(["toast"],function(toast){toast(Globalize.translate("FileNotFound"))});break;case evt.target.error.NOT_READABLE_ERR:require(["toast"],function(toast){toast(Globalize.translate("FileReadError"))});break;case evt.target.error.ABORT_ERR:break;default:require(["toast"],function(toast){toast(Globalize.translate("FileReadError"))})}}function onFileReaderAbort(evt){loading.hide(),require(["toast"],function(toast){toast(Globalize.translate("FileReadCancelled"))})}function setFiles(page,files){var file=files[0];if(!file||!file.type.match("image.*"))return page.querySelector("#userImageOutput").innerHTML="",page.querySelector("#fldUpload").classList.add("hide"),void(currentFile=null);currentFile=file;var reader=new FileReader;reader.onerror=onFileReaderError,reader.onloadstart=function(){page.querySelector("#fldUpload").classList.add("hide")},reader.onabort=onFileReaderAbort,reader.onload=function(e){var html=[''].join("");page.querySelector("#userImageOutput").innerHTML=html,page.querySelector("#fldUpload").classList.remove("hide")},reader.readAsDataURL(file)}function onImageDragOver(e){return e.preventDefault(),e.originalEvent.dataTransfer.dropEffect="Copy",!1}var currentFile;return function(view,params){reloadUser(view);var userImageDropZone=(new Userpasswordpage(view,params),view.querySelector("#userImageDropZone"));userImageDropZone.addEventListener("dragOver",onImageDragOver),userImageDropZone.addEventListener("drop",function(e){return e.preventDefault(),setFiles(view,e.originalEvent.dataTransfer.files),!1}),view.querySelector("#btnDeleteImage").addEventListener("click",function(){require(["confirm"],function(confirm){confirm(Globalize.translate("DeleteImageConfirmation"),Globalize.translate("DeleteImage")).then(function(){loading.show();var userId=getParameterByName("userId");ApiClient.deleteUserImage(userId,"primary").then(function(){loading.hide(),reloadUser(view)})})})}),view.querySelector(".newImageForm").addEventListener("submit",function(e){var file=currentFile;if(!file)return!1;if("image/png"!=file.type&&"image/jpeg"!=file.type&&"image/jpeg"!=file.type)return!1;loading.show();var userId=getParameterByName("userId");return ApiClient.uploadUserImage(userId,"Primary",file).then(function(){loading.hide(),reloadUser(view)}),e.preventDefault(),!1}),view.querySelector("#uploadUserImage").addEventListener("change",function(e){setFiles(view,e.target.files)})}}); \ No newline at end of file diff --git a/dashboard-ui/scripts/notificationsettings.js b/dashboard-ui/scripts/notificationsettings.js index b3897bd360..6d511f5ffb 100644 --- a/dashboard-ui/scripts/notificationsettings.js +++ b/dashboard-ui/scripts/notificationsettings.js @@ -1 +1 @@ -define(["jQuery","listViewStyle"],function($){"use strict";function reload(page){Dashboard.showLoadingMsg(),ApiClient.getJSON(ApiClient.getUrl("Notifications/Types")).then(function(list){var html="",lastCategory="";html+=list.map(function(i){var itemHtml="";return i.Category!=lastCategory&&(lastCategory=i.Category,lastCategory&&(itemHtml+=""),itemHtml+="

",itemHtml+=i.Category,itemHtml+="

",itemHtml+='"),$(".notificationList",page).html(html).trigger("create"),Dashboard.hideLoadingMsg()})}function getTabs(){return[{href:"notificationsettings.html",name:Globalize.translate("TabNotifications")},{href:"appservices.html?context=notifications",name:Globalize.translate("TabServices")}]}return function(view,params){view.addEventListener("viewshow",function(){LibraryMenu.setTabs("notifications",0,getTabs),reload(view)})}}); \ No newline at end of file +define(["jQuery","loading","listViewStyle"],function($,loading){"use strict";function reload(page){loading.show(),ApiClient.getJSON(ApiClient.getUrl("Notifications/Types")).then(function(list){var html="",lastCategory="";html+=list.map(function(i){var itemHtml="";return i.Category!=lastCategory&&(lastCategory=i.Category,lastCategory&&(itemHtml+=""),itemHtml+="

",itemHtml+=i.Category,itemHtml+="

",itemHtml+='"),$(".notificationList",page).html(html).trigger("create"),loading.hide()})}function getTabs(){return[{href:"notificationsettings.html",name:Globalize.translate("TabNotifications")},{href:"appservices.html?context=notifications",name:Globalize.translate("TabServices")}]}return function(view,params){view.addEventListener("viewshow",function(){LibraryMenu.setTabs("notifications",0,getTabs),reload(view)})}}); \ No newline at end of file diff --git a/dashboard-ui/scripts/photos.js b/dashboard-ui/scripts/photos.js index f504f53f71..b8d2ed22b7 100644 --- a/dashboard-ui/scripts/photos.js +++ b/dashboard-ui/scripts/photos.js @@ -1 +1 @@ -define(["jQuery","cardBuilder","imageLoader","emby-itemscontainer"],function($,cardBuilder,imageLoader){"use strict";function getQuery(){var key=getSavedQueryKey(),pageData=data[key];return pageData||(pageData=data[key]={query:{SortBy:"IsFolder,SortName",SortOrder:"Ascending",Fields:"PrimaryImageAspectRatio,SortName",ImageTypeLimit:1,EnableImageTypes:"Primary",StartIndex:0,Limit:LibraryBrowser.getDefaultPageSize()}},pageData.query.Recursive=!1,pageData.query.MediaTypes=null,pageData.query.ParentId=getParameterByName("parentId")||LibraryMenu.getTopParentId(),LibraryBrowser.loadSavedQueryValues(key,pageData.query)),pageData.query}function getSavedQueryKey(){return LibraryBrowser.getSavedQueryKey("v1")}function reloadItems(page){Dashboard.showLoadingMsg();var query=getQuery();ApiClient.getItems(Dashboard.getCurrentUserId(),query).then(function(result){window.scrollTo(0,0);var html="",pagingHtml=LibraryBrowser.getQueryPagingHtml({startIndex:query.StartIndex,limit:query.Limit,totalRecordCount:result.TotalRecordCount,viewButton:!1,showLimit:!1});page.querySelector(".listTopPaging").innerHTML=pagingHtml,"Poster"==view&&(html=cardBuilder.getCardsHtml({items:result.Items,shape:"square",context:getParameterByName("context")||"photos",overlayText:!0,lazy:!0,coverImage:!0,showTitle:!1,centerText:!0}));var elem=page.querySelector(".itemsContainer");elem.innerHTML=html+pagingHtml,imageLoader.lazyChildren(elem),$(".btnNextPage",page).on("click",function(){query.StartIndex+=query.Limit,reloadItems(page)}),$(".btnPreviousPage",page).on("click",function(){query.StartIndex-=query.Limit,reloadItems(page)}),LibraryBrowser.saveQueryValues(getSavedQueryKey(),query),Dashboard.hideLoadingMsg()})}function startSlideshow(page,itemQuery,startItemId){var userId=Dashboard.getCurrentUserId(),localQuery=$.extend({},itemQuery);localQuery.StartIndex=0,localQuery.Limit=null,localQuery.MediaTypes="Photo",localQuery.Recursive=!0,localQuery.Filters="IsNotFolder",ApiClient.getItems(userId,localQuery).then(function(result){showSlideshow(page,result.Items,startItemId)})}function showSlideshow(page,items,startItemId){var index=items.map(function(i){return i.Id}).indexOf(startItemId);index==-1&&(index=0),require(["slideshow"],function(slideshow){var newSlideShow=new slideshow({showTitle:!1,cover:!1,items:items,startIndex:index,interval:7e3,interactive:!0});newSlideShow.show()})}function onListItemClick(e){var page=$(this).parents(".page")[0],info=LibraryBrowser.getListItemInfo(this);if("Photo"==info.mediaType){var query=getQuery();return Photos.startSlideshow(page,query,info.id),!1}}var view="Poster",data={};pageIdOn("pageinit","photosPage",function(){var page=this;reloadItems(page,0),$(page).on("click",".mediaItem",onListItemClick)}),window.Photos={startSlideshow:startSlideshow}}); \ No newline at end of file +define(["jQuery","cardBuilder","imageLoader","loading","emby-itemscontainer"],function($,cardBuilder,imageLoader,loading){"use strict";function getQuery(){var key=getSavedQueryKey(),pageData=data[key];return pageData||(pageData=data[key]={query:{SortBy:"IsFolder,SortName",SortOrder:"Ascending",Fields:"PrimaryImageAspectRatio,SortName",ImageTypeLimit:1,EnableImageTypes:"Primary",StartIndex:0,Limit:LibraryBrowser.getDefaultPageSize()}},pageData.query.Recursive=!1,pageData.query.MediaTypes=null,pageData.query.ParentId=getParameterByName("parentId")||LibraryMenu.getTopParentId(),LibraryBrowser.loadSavedQueryValues(key,pageData.query)),pageData.query}function getSavedQueryKey(){return LibraryBrowser.getSavedQueryKey("v1")}function reloadItems(page){loading.show();var query=getQuery();ApiClient.getItems(Dashboard.getCurrentUserId(),query).then(function(result){window.scrollTo(0,0);var html="",pagingHtml=LibraryBrowser.getQueryPagingHtml({startIndex:query.StartIndex,limit:query.Limit,totalRecordCount:result.TotalRecordCount,viewButton:!1,showLimit:!1});page.querySelector(".listTopPaging").innerHTML=pagingHtml,"Poster"==view&&(html=cardBuilder.getCardsHtml({items:result.Items,shape:"square",context:getParameterByName("context")||"photos",overlayText:!0,lazy:!0,coverImage:!0,showTitle:!1,centerText:!0}));var elem=page.querySelector(".itemsContainer");elem.innerHTML=html+pagingHtml,imageLoader.lazyChildren(elem),$(".btnNextPage",page).on("click",function(){query.StartIndex+=query.Limit,reloadItems(page)}),$(".btnPreviousPage",page).on("click",function(){query.StartIndex-=query.Limit,reloadItems(page)}),LibraryBrowser.saveQueryValues(getSavedQueryKey(),query),loading.hide()})}function startSlideshow(page,itemQuery,startItemId){var userId=Dashboard.getCurrentUserId(),localQuery=$.extend({},itemQuery);localQuery.StartIndex=0,localQuery.Limit=null,localQuery.MediaTypes="Photo",localQuery.Recursive=!0,localQuery.Filters="IsNotFolder",ApiClient.getItems(userId,localQuery).then(function(result){showSlideshow(page,result.Items,startItemId)})}function showSlideshow(page,items,startItemId){var index=items.map(function(i){return i.Id}).indexOf(startItemId);index==-1&&(index=0),require(["slideshow"],function(slideshow){var newSlideShow=new slideshow({showTitle:!1,cover:!1,items:items,startIndex:index,interval:7e3,interactive:!0});newSlideShow.show()})}function onListItemClick(e){var page=$(this).parents(".page")[0],info=LibraryBrowser.getListItemInfo(this);if("Photo"==info.mediaType){var query=getQuery();return Photos.startSlideshow(page,query,info.id),!1}}var view="Poster",data={};pageIdOn("pageinit","photosPage",function(){var page=this;reloadItems(page,0),$(page).on("click",".mediaItem",onListItemClick)}),window.Photos={startSlideshow:startSlideshow}}); \ No newline at end of file diff --git a/dashboard-ui/scripts/playbackconfiguration.js b/dashboard-ui/scripts/playbackconfiguration.js index d568442a28..03361533b1 100644 --- a/dashboard-ui/scripts/playbackconfiguration.js +++ b/dashboard-ui/scripts/playbackconfiguration.js @@ -1 +1 @@ -define(["jQuery"],function($){"use strict";function loadPage(page,config){$("#txtMinResumePct",page).val(config.MinResumePct),$("#txtMaxResumePct",page).val(config.MaxResumePct),$("#txtMinResumeDuration",page).val(config.MinResumeDurationSeconds),Dashboard.hideLoadingMsg()}function onSubmit(){Dashboard.showLoadingMsg();var form=this;return ApiClient.getServerConfiguration().then(function(config){config.MinResumePct=$("#txtMinResumePct",form).val(),config.MaxResumePct=$("#txtMaxResumePct",form).val(),config.MinResumeDurationSeconds=$("#txtMinResumeDuration",form).val(),ApiClient.updateServerConfiguration(config).then(Dashboard.processServerConfigurationUpdateResult)}),!1}function getTabs(){return[{href:"cinemamodeconfiguration.html",name:Globalize.translate("TabCinemaMode")},{href:"playbackconfiguration.html",name:Globalize.translate("TabResumeSettings")},{href:"streamingsettings.html",name:Globalize.translate("TabStreaming")}]}$(document).on("pageinit","#playbackConfigurationPage",function(){$(".playbackConfigurationForm").off("submit",onSubmit).on("submit",onSubmit)}).on("pageshow","#playbackConfigurationPage",function(){LibraryMenu.setTabs("playback",1,getTabs),Dashboard.showLoadingMsg();var page=this;ApiClient.getServerConfiguration().then(function(config){loadPage(page,config)})})}); \ No newline at end of file +define(["jQuery","loading"],function($,loading){"use strict";function loadPage(page,config){$("#txtMinResumePct",page).val(config.MinResumePct),$("#txtMaxResumePct",page).val(config.MaxResumePct),$("#txtMinResumeDuration",page).val(config.MinResumeDurationSeconds),loading.hide()}function onSubmit(){loading.show();var form=this;return ApiClient.getServerConfiguration().then(function(config){config.MinResumePct=$("#txtMinResumePct",form).val(),config.MaxResumePct=$("#txtMaxResumePct",form).val(),config.MinResumeDurationSeconds=$("#txtMinResumeDuration",form).val(),ApiClient.updateServerConfiguration(config).then(Dashboard.processServerConfigurationUpdateResult)}),!1}function getTabs(){return[{href:"cinemamodeconfiguration.html",name:Globalize.translate("TabCinemaMode")},{href:"playbackconfiguration.html",name:Globalize.translate("TabResumeSettings")},{href:"streamingsettings.html",name:Globalize.translate("TabStreaming")}]}$(document).on("pageinit","#playbackConfigurationPage",function(){$(".playbackConfigurationForm").off("submit",onSubmit).on("submit",onSubmit)}).on("pageshow","#playbackConfigurationPage",function(){LibraryMenu.setTabs("playback",1,getTabs),loading.show();var page=this;ApiClient.getServerConfiguration().then(function(config){loadPage(page,config)})})}); \ No newline at end of file diff --git a/dashboard-ui/scripts/playlistedit.js b/dashboard-ui/scripts/playlistedit.js index e9a721700c..edc8ad1367 100644 --- a/dashboard-ui/scripts/playlistedit.js +++ b/dashboard-ui/scripts/playlistedit.js @@ -1 +1 @@ -define(["jQuery","listView","imageLoader"],function($,listView,imageLoader){"use strict";function getPageData(){var key=getSavedQueryKey(),pageData=data[key];return pageData||(pageData=data[key]={query:{Fields:"PrimaryImageAspectRatio",EnableImageTypes:"Primary,Backdrop,Banner,Thumb",StartIndex:0,Limit:200},view:LibraryBrowser.getSavedView(key)||"List"},pageData.query.ParentId=LibraryMenu.getTopParentId(),LibraryBrowser.loadSavedQueryValues(key,pageData.query)),pageData}function getQuery(){return getPageData().query}function getSavedQueryKey(){return LibraryBrowser.getSavedQueryKey()}function reloadItems(page,item){Dashboard.showLoadingMsg();var query=getQuery();query.UserId=Dashboard.getCurrentUserId(),ApiClient.getJSON(ApiClient.getUrl("Playlists/"+item.Id+"/Items",query)).then(function(result){window.scrollTo(0,0);var html="";html+=LibraryBrowser.getQueryPagingHtml({startIndex:query.StartIndex,limit:query.Limit,totalRecordCount:result.TotalRecordCount,showLimit:!1,updatePageSizeSetting:!1}),html+=listView.getListViewHtml({items:result.Items,sortBy:query.SortBy,showIndex:!1,showRemoveFromPlaylist:!0,playFromHere:!0,action:"playallfromhere",smallIcon:!0,dragHandle:!0,playlistId:item.Id});var elem=page.querySelector("#childrenContent .itemsContainer");elem.classList.add("vertical-list"),elem.classList.remove("vertical-wrap"),elem.innerHTML=html,imageLoader.lazyChildren(elem),$(".btnNextPage",elem).on("click",function(){query.StartIndex+=query.Limit,reloadItems(page,item)}),$(".btnPreviousPage",elem).on("click",function(){query.StartIndex-=query.Limit,reloadItems(page,item)}),Dashboard.hideLoadingMsg()})}function init(page,item){var elem=page.querySelector("#childrenContent .itemsContainer");elem.enableDragReordering(!0),elem.addEventListener("needsrefresh",function(){reloadItems(page,item)})}var data={};window.PlaylistViewer={render:function(page,item){page.playlistInit||(page.playlistInit=!0,init(page,item)),reloadItems(page,item)}}}); \ No newline at end of file +define(["jQuery","loading","listView","imageLoader"],function($,loading,listView,imageLoader){"use strict";function getPageData(){var key=getSavedQueryKey(),pageData=data[key];return pageData||(pageData=data[key]={query:{Fields:"PrimaryImageAspectRatio",EnableImageTypes:"Primary,Backdrop,Banner,Thumb",StartIndex:0,Limit:200},view:LibraryBrowser.getSavedView(key)||"List"},pageData.query.ParentId=LibraryMenu.getTopParentId(),LibraryBrowser.loadSavedQueryValues(key,pageData.query)),pageData}function getQuery(){return getPageData().query}function getSavedQueryKey(){return LibraryBrowser.getSavedQueryKey()}function reloadItems(page,item){loading.show();var query=getQuery();query.UserId=Dashboard.getCurrentUserId(),ApiClient.getJSON(ApiClient.getUrl("Playlists/"+item.Id+"/Items",query)).then(function(result){window.scrollTo(0,0);var html="";html+=LibraryBrowser.getQueryPagingHtml({startIndex:query.StartIndex,limit:query.Limit,totalRecordCount:result.TotalRecordCount,showLimit:!1,updatePageSizeSetting:!1}),html+=listView.getListViewHtml({items:result.Items,sortBy:query.SortBy,showIndex:!1,showRemoveFromPlaylist:!0,playFromHere:!0,action:"playallfromhere",smallIcon:!0,dragHandle:!0,playlistId:item.Id});var elem=page.querySelector("#childrenContent .itemsContainer");elem.classList.add("vertical-list"),elem.classList.remove("vertical-wrap"),elem.innerHTML=html,imageLoader.lazyChildren(elem),$(".btnNextPage",elem).on("click",function(){query.StartIndex+=query.Limit,reloadItems(page,item)}),$(".btnPreviousPage",elem).on("click",function(){query.StartIndex-=query.Limit,reloadItems(page,item)}),loading.hide()})}function init(page,item){var elem=page.querySelector("#childrenContent .itemsContainer");elem.enableDragReordering(!0),elem.addEventListener("needsrefresh",function(){reloadItems(page,item)})}var data={};window.PlaylistViewer={render:function(page,item){page.playlistInit||(page.playlistInit=!0,init(page,item)),reloadItems(page,item)}}}); \ No newline at end of file diff --git a/dashboard-ui/scripts/playlists.js b/dashboard-ui/scripts/playlists.js index 953b657653..d2f04f3430 100644 --- a/dashboard-ui/scripts/playlists.js +++ b/dashboard-ui/scripts/playlists.js @@ -1 +1 @@ -define(["listView","cardBuilder","libraryBrowser","apphost","imageLoader","emby-itemscontainer"],function(listView,cardBuilder,libraryBrowser,appHost,imageLoader){"use strict";return function(view,params){function getPageData(context){var key=getSavedQueryKey(context),pageData=data[key];return pageData||(pageData=data[key]={query:{SortBy:"SortName",SortOrder:"Ascending",IncludeItemTypes:"Playlist",Recursive:!0,Fields:"PrimaryImageAspectRatio,SortName,CumulativeRunTimeTicks,CanDelete",StartIndex:0,Limit:LibraryBrowser.getDefaultPageSize()},view:LibraryBrowser.getSavedView(key)||"Poster"},pageData.query.ParentId=LibraryMenu.getTopParentId(),LibraryBrowser.loadSavedQueryValues(key,pageData.query)),pageData}function getQuery(context){return getPageData(context).query}function getSavedQueryKey(context){return context.savedQueryKey||(context.savedQueryKey=libraryBrowser.getSavedQueryKey()),context.savedQueryKey}function showLoadingMessage(){Dashboard.showLoadingMsg()}function hideLoadingMessage(){Dashboard.hideLoadingMsg()}function onViewStyleChange(){var viewStyle=getPageData(view).view,itemsContainer=view.querySelector(".itemsContainer");"List"==viewStyle?(itemsContainer.classList.add("vertical-list"),itemsContainer.classList.remove("vertical-wrap")):(itemsContainer.classList.remove("vertical-list"),itemsContainer.classList.add("vertical-wrap")),itemsContainer.innerHTML=""}function reloadItems(){showLoadingMessage();var query=getQuery(view),promise1=ApiClient.getItems(Dashboard.getCurrentUserId(),query),promise2=Dashboard.getCurrentUser();Promise.all([promise1,promise2]).then(function(responses){var result=responses[0];responses[1];window.scrollTo(0,0);var html="",viewStyle=getPageData(view).view;view.querySelector(".listTopPaging").innerHTML=LibraryBrowser.getQueryPagingHtml({startIndex:query.StartIndex,limit:query.Limit,totalRecordCount:result.TotalRecordCount,viewButton:!1,showLimit:!1,updatePageSizeSetting:!1,addLayoutButton:!0,layouts:"List,Poster,PosterCard,Thumb,ThumbCard",currentLayout:viewStyle}),result.TotalRecordCount?(html="List"==viewStyle?listView.getListViewHtml({items:result.Items,sortBy:query.SortBy}):"PosterCard"==viewStyle?cardBuilder.getCardsHtml({items:result.Items,shape:"square",coverImage:!0,showTitle:!0,cardLayout:!0,vibrant:!0}):"Thumb"==viewStyle?cardBuilder.getCardsHtml({items:result.Items,shape:"backdrop",showTitle:!0,centerText:!0,preferThumb:!0,overlayPlayButton:!0}):"ThumbCard"==viewStyle?cardBuilder.getCardsHtml({items:result.Items,shape:"backdrop",showTitle:!0,preferThumb:!0,cardLayout:!0,vibrant:!0}):cardBuilder.getCardsHtml({items:result.Items,shape:"square",showTitle:!0,coverImage:!0,centerText:!0,overlayPlayButton:!0}),view.querySelector(".noItemsMessage").classList.add("hide")):view.querySelector(".noItemsMessage").classList.remove("hide");var elem=view.querySelector(".itemsContainer");elem.innerHTML=html,imageLoader.lazyChildren(elem);var btnNextPage=view.querySelector(".btnNextPage");btnNextPage&&btnNextPage.addEventListener("click",function(){query.StartIndex+=query.Limit,reloadItems()});var btnPreviousPage=view.querySelector(".btnPreviousPage");btnPreviousPage&&btnPreviousPage.addEventListener("click",function(){query.StartIndex-=query.Limit,reloadItems()});var btnChangeLayout=view.querySelector(".btnChangeLayout");btnChangeLayout&&btnChangeLayout.addEventListener("layoutchange",function(e){var layout=e.detail.viewStyle;getPageData(view).view=layout,LibraryBrowser.saveViewSetting(getSavedQueryKey(view),layout),onViewStyleChange(),reloadItems()}),LibraryBrowser.saveQueryValues(getSavedQueryKey(view),query),hideLoadingMessage()})}var data={};view.addEventListener("viewbeforeshow",function(){reloadItems()}),view.querySelector(".btnNewPlaylist").addEventListener("click",function(){require(["playlistEditor"],function(playlistEditor){var serverId=ApiClient.serverInfo().Id;(new playlistEditor).show({items:[],serverId:serverId})})}),onViewStyleChange()}}); \ No newline at end of file +define(["loading","listView","cardBuilder","libraryBrowser","apphost","imageLoader","emby-itemscontainer"],function(loading,listView,cardBuilder,libraryBrowser,appHost,imageLoader){"use strict";return function(view,params){function getPageData(context){var key=getSavedQueryKey(context),pageData=data[key];return pageData||(pageData=data[key]={query:{SortBy:"SortName",SortOrder:"Ascending",IncludeItemTypes:"Playlist",Recursive:!0,Fields:"PrimaryImageAspectRatio,SortName,CumulativeRunTimeTicks,CanDelete",StartIndex:0,Limit:LibraryBrowser.getDefaultPageSize()},view:LibraryBrowser.getSavedView(key)||"Poster"},pageData.query.ParentId=LibraryMenu.getTopParentId(),LibraryBrowser.loadSavedQueryValues(key,pageData.query)),pageData}function getQuery(context){return getPageData(context).query}function getSavedQueryKey(context){return context.savedQueryKey||(context.savedQueryKey=libraryBrowser.getSavedQueryKey()),context.savedQueryKey}function showLoadingMessage(){loading.show()}function hideLoadingMessage(){loading.hide()}function onViewStyleChange(){var viewStyle=getPageData(view).view,itemsContainer=view.querySelector(".itemsContainer");"List"==viewStyle?(itemsContainer.classList.add("vertical-list"),itemsContainer.classList.remove("vertical-wrap")):(itemsContainer.classList.remove("vertical-list"),itemsContainer.classList.add("vertical-wrap")),itemsContainer.innerHTML=""}function reloadItems(){showLoadingMessage();var query=getQuery(view),promise1=ApiClient.getItems(Dashboard.getCurrentUserId(),query),promise2=Dashboard.getCurrentUser();Promise.all([promise1,promise2]).then(function(responses){var result=responses[0];responses[1];window.scrollTo(0,0);var html="",viewStyle=getPageData(view).view;view.querySelector(".listTopPaging").innerHTML=LibraryBrowser.getQueryPagingHtml({startIndex:query.StartIndex,limit:query.Limit,totalRecordCount:result.TotalRecordCount,viewButton:!1,showLimit:!1,updatePageSizeSetting:!1,addLayoutButton:!0,layouts:"List,Poster,PosterCard,Thumb,ThumbCard",currentLayout:viewStyle}),result.TotalRecordCount?(html="List"==viewStyle?listView.getListViewHtml({items:result.Items,sortBy:query.SortBy}):"PosterCard"==viewStyle?cardBuilder.getCardsHtml({items:result.Items,shape:"square",coverImage:!0,showTitle:!0,cardLayout:!0,vibrant:!0}):"Thumb"==viewStyle?cardBuilder.getCardsHtml({items:result.Items,shape:"backdrop",showTitle:!0,centerText:!0,preferThumb:!0,overlayPlayButton:!0}):"ThumbCard"==viewStyle?cardBuilder.getCardsHtml({items:result.Items,shape:"backdrop",showTitle:!0,preferThumb:!0,cardLayout:!0,vibrant:!0}):cardBuilder.getCardsHtml({items:result.Items,shape:"square",showTitle:!0,coverImage:!0,centerText:!0,overlayPlayButton:!0}),view.querySelector(".noItemsMessage").classList.add("hide")):view.querySelector(".noItemsMessage").classList.remove("hide");var elem=view.querySelector(".itemsContainer");elem.innerHTML=html,imageLoader.lazyChildren(elem);var btnNextPage=view.querySelector(".btnNextPage");btnNextPage&&btnNextPage.addEventListener("click",function(){query.StartIndex+=query.Limit,reloadItems()});var btnPreviousPage=view.querySelector(".btnPreviousPage");btnPreviousPage&&btnPreviousPage.addEventListener("click",function(){query.StartIndex-=query.Limit,reloadItems()});var btnChangeLayout=view.querySelector(".btnChangeLayout");btnChangeLayout&&btnChangeLayout.addEventListener("layoutchange",function(e){var layout=e.detail.viewStyle;getPageData(view).view=layout,LibraryBrowser.saveViewSetting(getSavedQueryKey(view),layout),onViewStyleChange(),reloadItems()}),LibraryBrowser.saveQueryValues(getSavedQueryKey(view),query),hideLoadingMessage()})}var data={};view.addEventListener("viewbeforeshow",function(){reloadItems()}),view.querySelector(".btnNewPlaylist").addEventListener("click",function(){require(["playlistEditor"],function(playlistEditor){var serverId=ApiClient.serverInfo().Id;(new playlistEditor).show({items:[],serverId:serverId})})}),onViewStyleChange()}}); \ No newline at end of file diff --git a/dashboard-ui/scripts/plugincatalogpage.js b/dashboard-ui/scripts/plugincatalogpage.js index 56775490e7..fafcb18d6b 100644 --- a/dashboard-ui/scripts/plugincatalogpage.js +++ b/dashboard-ui/scripts/plugincatalogpage.js @@ -1 +1 @@ -define(["jQuery","cardStyle"],function($){"use strict";function reloadList(page){Dashboard.showLoadingMsg(),AppInfo.enableAppStorePolicy?$(".optionAdultContainer",page).hide():$(".optionAdultContainer",page).show(),query.IsAppStoreSafe=!0;var promise1=ApiClient.getAvailablePlugins(query),promise2=ApiClient.getInstalledPlugins();Promise.all([promise1,promise2]).then(function(responses){populateList({catalogElement:$("#pluginTiles",page),noItemsElement:$("#noPlugins",page),availablePlugins:responses[0],installedPlugins:responses[1]})})}function populateList(options){populateListInternal(options)}function populateListInternal(options){var availablePlugins=options.availablePlugins,installedPlugins=options.installedPlugins,allPlugins=availablePlugins.filter(function(p){return p.category=p.category||"General",p.categoryDisplayName=Globalize.translate("PluginCategory"+p.category.replace(" ","")),(!options.categories||options.categories.indexOf(p.category)!=-1)&&((!options.targetSystem||p.targetSystem==options.targetSystem)&&"UserInstalled"==p.type)});availablePlugins=allPlugins.sort(function(a,b){var aName=a.category,bName=b.category;return aName>bName?1:bName>aName?-1:(aName=a.name,bName=b.name,aName>bName?1:bName>aName?-1:0)});var i,length,plugin,currentCategory,html="";if(!options.categories){currentCategory=Globalize.translate("HeaderTopPlugins"),html+='

'+currentCategory+"

";var topPlugins=allPlugins.slice(0).sort(function(a,b){if(a.installs>b.installs)return-1;if(b.installs>a.installs)return 1;var aName=a.name,bName=b.name;return aName>bName?1:bName>aName?-1:0});html+='
';var limit=screen.availWidth>=1920?15:12;for(i=0,length=Math.min(topPlugins.length,limit);i",html+="
",html+="
"}var hasOpenTag=!1;for(currentCategory=null,options.showCategory===!1&&(html+='
',hasOpenTag=!0),i=0,length=availablePlugins.length;i",html+="
",html+="
"),html+='

'+category+"

",html+='
',hasOpenTag=!0),currentCategory=category),html+=getPluginHtml(plugin,options,installedPlugins)}hasOpenTag&&(html+="
"),!availablePlugins.length&&options.noItemsElement&&$(options.noItemsElement).hide(),$(options.catalogElement).html(html),Dashboard.hideLoadingMsg()}function getPluginHtml(plugin,options,installedPlugins){var html="",href=plugin.externalUrl?plugin.externalUrl:"addplugin.html?name="+encodeURIComponent(plugin.name)+"&guid="+plugin.guid;options.context&&(href+="&context="+options.context);var target=plugin.externalUrl?' target="_blank"':"";html+="
",html+='
',html+='
',html+='
',html+='",html+=plugin.thumbImage?'",html+='
',html+="
",html+=plugin.name,html+="
";var installedPlugin=plugin.isApp?null:installedPlugins.filter(function(ip){return ip.Id==plugin.guid})[0];return html+="
",html+=installedPlugin?Globalize.translate("LabelVersionInstalled").replace("{0}",installedPlugin.Version):" ",html+="
",html+="
",html+="
",html+="
"}function getTabs(){return[{href:"plugins.html",name:Globalize.translate("TabMyPlugins")},{href:"plugincatalog.html",name:Globalize.translate("TabCatalog")}]}var query={TargetSystems:"Server",IsAdult:!1};$(document).on("pageinit","#pluginCatalogPage",function(){var page=this;$("#selectSystem",page).on("change",function(){query.TargetSystems=this.value,reloadList(page)}),$("#chkAdult",page).on("change",function(){query.IsAdult=!!this.checked&&null,reloadList(page)})}).on("pageshow","#pluginCatalogPage",function(){LibraryMenu.setTabs("plugins",1,getTabs);var page=this;reloadList(page)}),window.PluginCatalog={renderCatalog:populateList}}); \ No newline at end of file +define(["jQuery","loading","cardStyle"],function($,loading){"use strict";function reloadList(page){loading.show(),AppInfo.enableAppStorePolicy?$(".optionAdultContainer",page).hide():$(".optionAdultContainer",page).show(),query.IsAppStoreSafe=!0;var promise1=ApiClient.getAvailablePlugins(query),promise2=ApiClient.getInstalledPlugins();Promise.all([promise1,promise2]).then(function(responses){populateList({catalogElement:$("#pluginTiles",page),noItemsElement:$("#noPlugins",page),availablePlugins:responses[0],installedPlugins:responses[1]})})}function populateList(options){populateListInternal(options)}function populateListInternal(options){var availablePlugins=options.availablePlugins,installedPlugins=options.installedPlugins,allPlugins=availablePlugins.filter(function(p){return p.category=p.category||"General",p.categoryDisplayName=Globalize.translate("PluginCategory"+p.category.replace(" ","")),(!options.categories||options.categories.indexOf(p.category)!=-1)&&((!options.targetSystem||p.targetSystem==options.targetSystem)&&"UserInstalled"==p.type)});availablePlugins=allPlugins.sort(function(a,b){var aName=a.category,bName=b.category;return aName>bName?1:bName>aName?-1:(aName=a.name,bName=b.name,aName>bName?1:bName>aName?-1:0)});var i,length,plugin,currentCategory,html="";if(!options.categories){currentCategory=Globalize.translate("HeaderTopPlugins"),html+='

'+currentCategory+"

";var topPlugins=allPlugins.slice(0).sort(function(a,b){if(a.installs>b.installs)return-1;if(b.installs>a.installs)return 1;var aName=a.name,bName=b.name;return aName>bName?1:bName>aName?-1:0});html+='
';var limit=screen.availWidth>=1920?15:12;for(i=0,length=Math.min(topPlugins.length,limit);i",html+="
",html+="
"}var hasOpenTag=!1;for(currentCategory=null,options.showCategory===!1&&(html+='
',hasOpenTag=!0),i=0,length=availablePlugins.length;i",html+="
",html+="
"),html+='

'+category+"

",html+='
',hasOpenTag=!0),currentCategory=category),html+=getPluginHtml(plugin,options,installedPlugins)}hasOpenTag&&(html+="
"),!availablePlugins.length&&options.noItemsElement&&$(options.noItemsElement).hide(),$(options.catalogElement).html(html),loading.hide()}function getPluginHtml(plugin,options,installedPlugins){var html="",href=plugin.externalUrl?plugin.externalUrl:"addplugin.html?name="+encodeURIComponent(plugin.name)+"&guid="+plugin.guid;options.context&&(href+="&context="+options.context);var target=plugin.externalUrl?' target="_blank"':"";html+="
",html+='
',html+='
',html+='
',html+='",html+=plugin.thumbImage?'",html+='
',html+="
",html+=plugin.name,html+="
";var installedPlugin=plugin.isApp?null:installedPlugins.filter(function(ip){return ip.Id==plugin.guid})[0];return html+="
",html+=installedPlugin?Globalize.translate("LabelVersionInstalled").replace("{0}",installedPlugin.Version):" ",html+="
",html+="
",html+="
",html+="
"}function getTabs(){return[{href:"plugins.html",name:Globalize.translate("TabMyPlugins")},{href:"plugincatalog.html",name:Globalize.translate("TabCatalog")}]}var query={TargetSystems:"Server",IsAdult:!1};$(document).on("pageinit","#pluginCatalogPage",function(){var page=this;$("#selectSystem",page).on("change",function(){query.TargetSystems=this.value,reloadList(page)}),$("#chkAdult",page).on("change",function(){query.IsAdult=!!this.checked&&null,reloadList(page)})}).on("pageshow","#pluginCatalogPage",function(){LibraryMenu.setTabs("plugins",1,getTabs);var page=this;reloadList(page)}),window.PluginCatalog={renderCatalog:populateList}}); \ No newline at end of file diff --git a/dashboard-ui/scripts/pluginspage.js b/dashboard-ui/scripts/pluginspage.js index 028ed56013..6db35217b5 100644 --- a/dashboard-ui/scripts/pluginspage.js +++ b/dashboard-ui/scripts/pluginspage.js @@ -1 +1 @@ -define(["jQuery","cardStyle"],function($){"use strict";function deletePlugin(page,uniqueid,name){var msg=Globalize.translate("UninstallPluginConfirmation").replace("{0}",name);require(["confirm"],function(confirm){confirm(msg,Globalize.translate("UninstallPluginHeader")).then(function(){Dashboard.showLoadingMsg(),ApiClient.uninstallPlugin(uniqueid).then(function(){reloadList(page)})})})}function showNoConfigurationMessage(){Dashboard.alert({message:Globalize.translate("NoPluginConfigurationMessage")})}function showConnectMessage(){Dashboard.alert({message:Globalize.translate("MessagePluginConfigurationRequiresLocalAccess")})}function getPluginCardHtml(plugin,pluginConfigurationPages){var configPage=$.grep(pluginConfigurationPages,function(pluginConfigurationPage){return pluginConfigurationPage.PluginId==plugin.Id})[0],html="",isConnectMode=Dashboard.isConnectMode(),configPageUrl=configPage?Dashboard.getConfigurationPageUrl(configPage.Name):null,href=configPage&&!isConnectMode?configPageUrl:null;return html+="
",html+='
',html+='
',html+='
',html+=href?'':configPageUrl?isConnectMode?'
':'
':'",html+='
',html+='
',html+='',html+="
",html+="
",html+=plugin.Name,html+="
",html+="
",html+=plugin.Version,html+="
",html+="
",html+="
",html+="
"}function renderPlugins(page,plugins,showNoPluginsMessage){ApiClient.getJSON(ApiClient.getUrl("web/configurationpages")+"?pageType=PluginConfiguration").then(function(configPages){populateList(page,plugins,configPages,showNoPluginsMessage)})}function populateList(page,plugins,pluginConfigurationPages,showNoPluginsMessage){plugins=plugins.sort(function(plugin1,plugin2){return plugin1.Name>plugin2.Name?1:-1});var html=plugins.map(function(p){return getPluginCardHtml(p,pluginConfigurationPages)}).join("");if(plugins.length){var elem=$(".installedPlugins",page).addClass("itemsContainer").addClass("vertical-wrap").html(html);$(".noConfigPluginCard",elem).on("click",function(){showNoConfigurationMessage()}),$(".connectModePluginCard",elem).on("click",function(){showConnectMessage()}),$(".btnCardMenu",elem).on("click",function(){showPluginMenu(page,this)})}else showNoPluginsMessage&&(html+='
',AppInfo.enableAppStorePolicy?html+="

"+Globalize.translate("MessageNoPluginsDueToAppStore")+"

":(html+="

"+Globalize.translate("MessageNoPluginsInstalled")+"

",html+='

',html+=Globalize.translate("BrowsePluginCatalogMessage"),html+="

"),html+="
"),$(".installedPlugins",page).html(html);Dashboard.hideLoadingMsg()}function showPluginMenu(page,elem){var card=$(elem).parents(".card"),id=card.attr("data-id"),name=card.attr("data-name"),configHref=$(".cardContent",card).attr("href"),menuItems=[];configHref&&menuItems.push({name:Globalize.translate("ButtonSettings"),id:"open",ironIcon:"mode-edit"}),menuItems.push({name:Globalize.translate("ButtonUninstall"),id:"delete",ironIcon:"delete"}),require(["actionsheet"],function(actionsheet){actionsheet.show({items:menuItems,positionTo:elem,callback:function(resultId){switch(resultId){case"open":Dashboard.navigate(configHref);break;case"delete":deletePlugin(page,id,name)}}})})}function reloadList(page){Dashboard.showLoadingMsg(),ApiClient.getInstalledPlugins().then(function(plugins){renderPlugins(page,plugins,!0)})}function getTabs(){return[{href:"plugins.html",name:Globalize.translate("TabMyPlugins")},{href:"plugincatalog.html",name:Globalize.translate("TabCatalog")}]}$(document).on("pageshow","#pluginsPage",function(){LibraryMenu.setTabs("plugins",0,getTabs),reloadList(this)}),window.PluginsPage={renderPlugins:renderPlugins}}); \ No newline at end of file +define(["jQuery","loading","cardStyle"],function($,loading){"use strict";function deletePlugin(page,uniqueid,name){var msg=Globalize.translate("UninstallPluginConfirmation").replace("{0}",name);require(["confirm"],function(confirm){confirm(msg,Globalize.translate("UninstallPluginHeader")).then(function(){loading.show(),ApiClient.uninstallPlugin(uniqueid).then(function(){reloadList(page)})})})}function showNoConfigurationMessage(){Dashboard.alert({message:Globalize.translate("NoPluginConfigurationMessage")})}function showConnectMessage(){Dashboard.alert({message:Globalize.translate("MessagePluginConfigurationRequiresLocalAccess")})}function getPluginCardHtml(plugin,pluginConfigurationPages){var configPage=$.grep(pluginConfigurationPages,function(pluginConfigurationPage){return pluginConfigurationPage.PluginId==plugin.Id})[0],html="",isConnectMode=Dashboard.isConnectMode(),configPageUrl=configPage?Dashboard.getConfigurationPageUrl(configPage.Name):null,href=configPage&&!isConnectMode?configPageUrl:null;return html+="
",html+='
',html+='
',html+='
',html+=href?'':configPageUrl?isConnectMode?'
':'
':'",html+='
',html+='
',html+='',html+="
",html+="
",html+=plugin.Name,html+="
",html+="
",html+=plugin.Version,html+="
",html+="
",html+="
",html+="
"}function renderPlugins(page,plugins,showNoPluginsMessage){ApiClient.getJSON(ApiClient.getUrl("web/configurationpages")+"?pageType=PluginConfiguration").then(function(configPages){populateList(page,plugins,configPages,showNoPluginsMessage)})}function populateList(page,plugins,pluginConfigurationPages,showNoPluginsMessage){plugins=plugins.sort(function(plugin1,plugin2){return plugin1.Name>plugin2.Name?1:-1});var html=plugins.map(function(p){return getPluginCardHtml(p,pluginConfigurationPages)}).join("");if(plugins.length){var elem=$(".installedPlugins",page).addClass("itemsContainer").addClass("vertical-wrap").html(html);$(".noConfigPluginCard",elem).on("click",function(){showNoConfigurationMessage()}),$(".connectModePluginCard",elem).on("click",function(){showConnectMessage()}),$(".btnCardMenu",elem).on("click",function(){showPluginMenu(page,this)})}else showNoPluginsMessage&&(html+='
',AppInfo.enableAppStorePolicy?html+="

"+Globalize.translate("MessageNoPluginsDueToAppStore")+"

":(html+="

"+Globalize.translate("MessageNoPluginsInstalled")+"

",html+='

',html+=Globalize.translate("BrowsePluginCatalogMessage"),html+="

"),html+="
"),$(".installedPlugins",page).html(html);loading.hide()}function showPluginMenu(page,elem){var card=$(elem).parents(".card"),id=card.attr("data-id"),name=card.attr("data-name"),configHref=$(".cardContent",card).attr("href"),menuItems=[];configHref&&menuItems.push({name:Globalize.translate("ButtonSettings"),id:"open",ironIcon:"mode-edit"}),menuItems.push({name:Globalize.translate("ButtonUninstall"),id:"delete",ironIcon:"delete"}),require(["actionsheet"],function(actionsheet){actionsheet.show({items:menuItems,positionTo:elem,callback:function(resultId){switch(resultId){case"open":Dashboard.navigate(configHref);break;case"delete":deletePlugin(page,id,name)}}})})}function reloadList(page){loading.show(),ApiClient.getInstalledPlugins().then(function(plugins){renderPlugins(page,plugins,!0)})}function getTabs(){return[{href:"plugins.html",name:Globalize.translate("TabMyPlugins")},{href:"plugincatalog.html",name:Globalize.translate("TabCatalog")}]}$(document).on("pageshow","#pluginsPage",function(){LibraryMenu.setTabs("plugins",0,getTabs),reloadList(this)}),window.PluginsPage={renderPlugins:renderPlugins}}); \ No newline at end of file diff --git a/dashboard-ui/scripts/reports.js b/dashboard-ui/scripts/reports.js index a5b94bdb08..04d757574f 100644 --- a/dashboard-ui/scripts/reports.js +++ b/dashboard-ui/scripts/reports.js @@ -1 +1 @@ -define(["jQuery","libraryBrowser","fnchecked"],function($,libraryBrowser){"use strict";function getTable(result){var html="";return html+='',html+="",result.Headers.map(function(header){var cellHtml='",html+=cellHtml}),html+="",html+="",result.IsGrouped===!1?result.Rows.map(function(row){html+=getRow(result.Headers,row)}):result.Groups.map(function(group){html+='',html+='",html+="",group.Rows.map(function(row){html+=getRow(result.Headers,row)}),html+="",html+='',html+=""}),html+="",html+="
';header.ShowHeaderLabel&&(header.SortField&&(cellHtml+=''),cellHtml+=header.Name||" ",header.SortField&&(cellHtml+="",header.SortField===defaultSortBy&&(cellHtml+="Descending"===query.SortOrder?'':''))),cellHtml+="
'+(group.Name||" ")+"
 
"}function getRow(rHeaders,rRow){var html="";html+="";for(var j=0;j'+rItem.Name+"";break;case"Edit":html+=''+rItem.Name+"";break;case"List":html+=''+rItem.Name+"";break;case"ItemByNameDetails":html+=''+rItem.Name+"";break;case"EmbeddedImage":rRow.HasEmbeddedImage&&(html+='
');break;case"SubtitleImage":rRow.HasSubtitles&&(html+='
');break;case"TrailersImage":rRow.HasLocalTrailer&&(html+='
');break;case"SpecialsImage":rRow.HasSpecials&&(html+='
');break;case"LockDataImage":rRow.HasLockData&&(html+='lock');break;case"TagsPrimaryImage":rRow.HasImageTagsPrimary||(html+='');break;case"TagsBackdropImage":rRow.HasImageTagsBackdrop||"Episode"!==rRow.RowType&&"Season"!==rRow.RowType&&"Audio"!==rRow.MediaType&&"TvChannel"!==rRow.RowType&&"MusicAlbum"!==rRow.RowType&&(html+='');break;case"TagsLogoImage":rRow.HasImageTagsLogo||"Movie"!==rRow.RowType&&"Trailer"!==rRow.RowType&&"Series"!==rRow.RowType&&"MusicArtist"!==rRow.RowType&&"BoxSet"!==rRow.RowType||(html+='');break;case"UserPrimaryImage":if(rRow.UserId){var userImage=ApiClient.getUserImageUrl(rRow.UserId,{height:24,type:"Primary"});html+=userImage?'':""}break;case"StatusImage":rRow.HasLockData&&(html+='lock'),rRow.HasLocalTrailer||"Movie"!==rRow.RowType||(html+='videocam'),rRow.HasImageTagsPrimary||(html+=''),rRow.HasImageTagsBackdrop||"Episode"!==rRow.RowType&&"Season"!==rRow.RowType&&"Audio"!==rRow.MediaType&&"TvChannel"!==rRow.RowType&&"MusicAlbum"!==rRow.RowType&&(html+=''),rRow.HasImageTagsLogo||"Movie"!==rRow.RowType&&"Trailer"!==rRow.RowType&&"Series"!==rRow.RowType&&"MusicArtist"!==rRow.RowType&&"BoxSet"!==rRow.RowType||(html+='');break;default:html+=rItem.Name}return html+=""}function ExportReport(page,e){query.UserId=Dashboard.getCurrentUserId(),query.HasQueryLimit=!1;var url=ApiClient.getUrl("Reports/Items/Download",query);url&&(window.location.href=url)}function loadGroupByFilters(page){query.UserId=Dashboard.getCurrentUserId();var url="";url=ApiClient.getUrl("Reports/Headers",query),ApiClient.getJSON(url).then(function(result){var selected="None";$("#selectReportGroup",page).find("option").remove().end(),$("#selectReportGroup",page).append(''),result.map(function(header){if(("Screen"===header.DisplayType||"ScreenExport"===header.DisplayType)&&header.CanGroup&&header.FieldName.length>0){var option='";$("#selectReportGroup",page).append(option),query.GroupBy===header.FieldName&&(selected=header.FieldName)}}),$("#selectPageSize",page).val(selected)})}function renderItems(page,result){window.scrollTo(0,0);var html="";"ReportData"===query.ReportView?($("#selectIncludeItemTypesBox",page).show(),$("#tabFilter",page).show()):($("#selectIncludeItemTypesBox",page).hide(),$("#tabFilterBox",page).hide(),$("#tabFilter",page).hide());var pagingHtml=libraryBrowser.getQueryPagingHtml({startIndex:query.StartIndex,limit:query.Limit,totalRecordCount:result.TotalRecordCount,updatePageSizeSetting:!1,viewButton:!0,showLimit:!1});switch("ReportData"!==query.ReportView&&"ReportActivities"!==query.ReportView||($(".listTopPaging",page).html(pagingHtml).trigger("create"),$(".listTopPaging",page).show(),$(".listBottomPaging",page).html(pagingHtml).trigger("create"),$(".listBottomPaging",page).show(),$(".btnNextPage",page).on("click",function(){query.StartIndex+=query.Limit,reloadItems(page)}),$(".btnNextPage",page).show(),$(".btnPreviousPage",page).on("click",function(){query.StartIndex-=query.Limit,reloadItems(page)}),$(".btnPreviousPage",page).show(),$("#btnReportExport",page).show(),$("#selectPageSizeBox",page).show(),$("#selectReportGroupingBox",page).show(),$("#grpReportsColumns",page).show(),html+=getTable(result),$(".reporContainer",page).html(html).trigger("create"),$(".lnkColumnSort",page).on("click",function(){var order=this.getAttribute("data-sortfield");query.SortBy===order?"Descending"===query.SortOrder?(query.SortOrder="Ascending",query.SortBy=defaultSortBy):(query.SortOrder="Descending",query.SortBy=order):(query.SortOrder="Ascending",query.SortBy=order),query.StartIndex=0,reloadItems(page)})),$("#GroupStatus",page).hide(),$("#GroupAirDays",page).hide(),$("#GroupEpisodes",page).hide(),query.IncludeItemTypes){case"Series":case"Season":$("#GroupStatus",page).show(),$("#GroupAirDays",page).show();break;case"Episode":$("#GroupStatus",page).show(),$("#GroupAirDays",page).show(),$("#GroupEpisodes",page).show()}$(".viewPanel",page).refresh}function reloadItems(page){Dashboard.showLoadingMsg(),query.UserId=Dashboard.getCurrentUserId();var url="";switch(query.ReportView){case"ReportData":query.HasQueryLimit=!0,url=ApiClient.getUrl("Reports/Items",query);break;case"ReportActivities":query.HasQueryLimit=!0,url=ApiClient.getUrl("Reports/Activities",query)}ApiClient.getJSON(url).then(function(result){updateFilterControls(page),renderItems(page,result)}),Dashboard.hideLoadingMsg()}function updateFilterControls(page){$(".chkStandardFilter",page).each(function(){var filters=","+(query.Filters||""),filterName=this.getAttribute("data-filter");this.checked=filters.indexOf(","+filterName)!=-1}),$(".chkVideoTypeFilter",page).each(function(){var filters=","+(query.VideoTypes||""),filterName=this.getAttribute("data-filter");this.checked=filters.indexOf(","+filterName)!=-1}),$(".chkStatus",page).each(function(){var filters=","+(query.SeriesStatus||""),filterName=this.getAttribute("data-filter");this.checked=filters.indexOf(","+filterName)!=-1}),$(".chkAirDays",page).each(function(){var filters=","+(query.AirDays||""),filterName=this.getAttribute("data-filter");this.checked=filters.indexOf(","+filterName)!=-1}),$("#chk3D",page).checked(1==query.Is3D),$("#chkHD",page).checked(1==query.IsHD),$("#chkSD",page).checked(0==query.IsHD),$("#chkSubtitle",page).checked(1==query.HasSubtitles),$("#chkTrailer",page).checked(1==query.HasTrailer),$("#chkMissingTrailer",page).checked(0==query.HasTrailer),$("#chkSpecialFeature",page).checked(1==query.HasSpecialFeature),$("#chkThemeSong",page).checked(1==query.HasThemeSong),$("#chkThemeVideo",page).checked(1==query.HasThemeVideo),$("#selectPageSize",page).val(query.Limit),$("#chkMissingRating",page).checked(0==query.HasOfficialRating),$("#chkMissingOverview",page).checked(0==query.HasOverview),$("#chkIsLocked",page).checked(1==query.IsLocked),$("#chkMissingImdbId",page).checked(0==query.HasImdbId),$("#chkMissingTmdbId",page).checked(0==query.HasTmdbId),$("#chkMissingTvdbId",page).checked(0==query.HasTvdbId),$("#chkSpecialEpisode",page).checked(0==query.ParentIndexNumber),$("#chkMissingEpisode",page).checked(1==query.IsMissing),$("#chkFutureEpisode",page).checked(1==query.IsUnaired),$("#selectIncludeItemTypes").val(query.IncludeItemTypes),1==query.IsFavorite?$("#isFavorite").val("true"):0==query.IsFavorite?$("#isFavorite").val("false"):$("#isFavorite").val("-")}function reloadFiltersIfNeeded(page){filtersLoaded||(filtersLoaded=!0,QueryReportFilters.loadFilters(page,Dashboard.getCurrentUserId(),query,function(){reloadItems(page)}),QueryReportColumns.loadColumns(page,Dashboard.getCurrentUserId(),query,function(){reloadItems(page)}))}function renderOptions(page,selector,cssClass,items){var elem;elem=items.length?$(selector,page).show():$(selector,page).hide();var html="";html+='
';var index=0,idPrefix="chk"+selector.substring(1);html+=items.map(function(filter){var itemHtml="",id=idPrefix+index,label=filter,value=filter,checked=!1;return filter.FieldName&&(label=filter.Name,value=filter.FieldName,checked=filter.Visible),itemHtml+='",itemHtml+=''),cellHtml+=header.Name||" ",header.SortField&&(cellHtml+="",header.SortField===defaultSortBy&&(cellHtml+="Descending"===query.SortOrder?'':''))),cellHtml+="",html+=cellHtml}),html+="",html+="",result.IsGrouped===!1?result.Rows.map(function(row){html+=getRow(result.Headers,row)}):result.Groups.map(function(group){html+='',html+=''+(group.Name||" ")+"",html+="",group.Rows.map(function(row){html+=getRow(result.Headers,row)}),html+="",html+=' ',html+=""}),html+="",html+=""}function getRow(rHeaders,rRow){var html="";html+="";for(var j=0;j'+rItem.Name+"";break;case"Edit":html+=''+rItem.Name+"";break;case"List":html+=''+rItem.Name+"";break;case"ItemByNameDetails":html+=''+rItem.Name+"";break;case"EmbeddedImage":rRow.HasEmbeddedImage&&(html+='
');break;case"SubtitleImage":rRow.HasSubtitles&&(html+='
');break;case"TrailersImage":rRow.HasLocalTrailer&&(html+='
');break;case"SpecialsImage":rRow.HasSpecials&&(html+='
');break;case"LockDataImage":rRow.HasLockData&&(html+='lock');break;case"TagsPrimaryImage":rRow.HasImageTagsPrimary||(html+='');break;case"TagsBackdropImage":rRow.HasImageTagsBackdrop||"Episode"!==rRow.RowType&&"Season"!==rRow.RowType&&"Audio"!==rRow.MediaType&&"TvChannel"!==rRow.RowType&&"MusicAlbum"!==rRow.RowType&&(html+='');break;case"TagsLogoImage":rRow.HasImageTagsLogo||"Movie"!==rRow.RowType&&"Trailer"!==rRow.RowType&&"Series"!==rRow.RowType&&"MusicArtist"!==rRow.RowType&&"BoxSet"!==rRow.RowType||(html+='');break;case"UserPrimaryImage":if(rRow.UserId){var userImage=ApiClient.getUserImageUrl(rRow.UserId,{height:24,type:"Primary"});html+=userImage?'':""}break;case"StatusImage":rRow.HasLockData&&(html+='lock'),rRow.HasLocalTrailer||"Movie"!==rRow.RowType||(html+='videocam'),rRow.HasImageTagsPrimary||(html+=''),rRow.HasImageTagsBackdrop||"Episode"!==rRow.RowType&&"Season"!==rRow.RowType&&"Audio"!==rRow.MediaType&&"TvChannel"!==rRow.RowType&&"MusicAlbum"!==rRow.RowType&&(html+=''),rRow.HasImageTagsLogo||"Movie"!==rRow.RowType&&"Trailer"!==rRow.RowType&&"Series"!==rRow.RowType&&"MusicArtist"!==rRow.RowType&&"BoxSet"!==rRow.RowType||(html+='');break;default:html+=rItem.Name}return html+=""}function ExportReport(page,e){query.UserId=Dashboard.getCurrentUserId(),query.HasQueryLimit=!1;var url=ApiClient.getUrl("Reports/Items/Download",query);url&&(window.location.href=url)}function loadGroupByFilters(page){query.UserId=Dashboard.getCurrentUserId();var url="";url=ApiClient.getUrl("Reports/Headers",query),ApiClient.getJSON(url).then(function(result){var selected="None";$("#selectReportGroup",page).find("option").remove().end(),$("#selectReportGroup",page).append(''),result.map(function(header){if(("Screen"===header.DisplayType||"ScreenExport"===header.DisplayType)&&header.CanGroup&&header.FieldName.length>0){var option='";$("#selectReportGroup",page).append(option),query.GroupBy===header.FieldName&&(selected=header.FieldName)}}),$("#selectPageSize",page).val(selected)})}function renderItems(page,result){window.scrollTo(0,0);var html="";"ReportData"===query.ReportView?($("#selectIncludeItemTypesBox",page).show(),$("#tabFilter",page).show()):($("#selectIncludeItemTypesBox",page).hide(),$("#tabFilterBox",page).hide(),$("#tabFilter",page).hide());var pagingHtml=libraryBrowser.getQueryPagingHtml({startIndex:query.StartIndex,limit:query.Limit,totalRecordCount:result.TotalRecordCount,updatePageSizeSetting:!1,viewButton:!0,showLimit:!1});switch("ReportData"!==query.ReportView&&"ReportActivities"!==query.ReportView||($(".listTopPaging",page).html(pagingHtml).trigger("create"),$(".listTopPaging",page).show(),$(".listBottomPaging",page).html(pagingHtml).trigger("create"),$(".listBottomPaging",page).show(),$(".btnNextPage",page).on("click",function(){query.StartIndex+=query.Limit,reloadItems(page)}),$(".btnNextPage",page).show(),$(".btnPreviousPage",page).on("click",function(){query.StartIndex-=query.Limit,reloadItems(page)}),$(".btnPreviousPage",page).show(),$("#btnReportExport",page).show(),$("#selectPageSizeBox",page).show(),$("#selectReportGroupingBox",page).show(),$("#grpReportsColumns",page).show(),html+=getTable(result),$(".reporContainer",page).html(html).trigger("create"),$(".lnkColumnSort",page).on("click",function(){var order=this.getAttribute("data-sortfield");query.SortBy===order?"Descending"===query.SortOrder?(query.SortOrder="Ascending",query.SortBy=defaultSortBy):(query.SortOrder="Descending",query.SortBy=order):(query.SortOrder="Ascending",query.SortBy=order),query.StartIndex=0,reloadItems(page)})),$("#GroupStatus",page).hide(),$("#GroupAirDays",page).hide(),$("#GroupEpisodes",page).hide(),query.IncludeItemTypes){case"Series":case"Season":$("#GroupStatus",page).show(),$("#GroupAirDays",page).show();break;case"Episode":$("#GroupStatus",page).show(),$("#GroupAirDays",page).show(),$("#GroupEpisodes",page).show()}$(".viewPanel",page).refresh}function reloadItems(page){loading.show(),query.UserId=Dashboard.getCurrentUserId();var url="";switch(query.ReportView){case"ReportData":query.HasQueryLimit=!0,url=ApiClient.getUrl("Reports/Items",query);break;case"ReportActivities":query.HasQueryLimit=!0,url=ApiClient.getUrl("Reports/Activities",query)}ApiClient.getJSON(url).then(function(result){updateFilterControls(page),renderItems(page,result)}),loading.hide()}function updateFilterControls(page){$(".chkStandardFilter",page).each(function(){var filters=","+(query.Filters||""),filterName=this.getAttribute("data-filter");this.checked=filters.indexOf(","+filterName)!=-1}),$(".chkVideoTypeFilter",page).each(function(){var filters=","+(query.VideoTypes||""),filterName=this.getAttribute("data-filter");this.checked=filters.indexOf(","+filterName)!=-1}),$(".chkStatus",page).each(function(){var filters=","+(query.SeriesStatus||""),filterName=this.getAttribute("data-filter");this.checked=filters.indexOf(","+filterName)!=-1}),$(".chkAirDays",page).each(function(){var filters=","+(query.AirDays||""),filterName=this.getAttribute("data-filter");this.checked=filters.indexOf(","+filterName)!=-1}),$("#chk3D",page).checked(1==query.Is3D),$("#chkHD",page).checked(1==query.IsHD),$("#chkSD",page).checked(0==query.IsHD),$("#chkSubtitle",page).checked(1==query.HasSubtitles),$("#chkTrailer",page).checked(1==query.HasTrailer),$("#chkMissingTrailer",page).checked(0==query.HasTrailer),$("#chkSpecialFeature",page).checked(1==query.HasSpecialFeature),$("#chkThemeSong",page).checked(1==query.HasThemeSong),$("#chkThemeVideo",page).checked(1==query.HasThemeVideo),$("#selectPageSize",page).val(query.Limit),$("#chkMissingRating",page).checked(0==query.HasOfficialRating),$("#chkMissingOverview",page).checked(0==query.HasOverview),$("#chkIsLocked",page).checked(1==query.IsLocked),$("#chkMissingImdbId",page).checked(0==query.HasImdbId),$("#chkMissingTmdbId",page).checked(0==query.HasTmdbId),$("#chkMissingTvdbId",page).checked(0==query.HasTvdbId),$("#chkSpecialEpisode",page).checked(0==query.ParentIndexNumber),$("#chkMissingEpisode",page).checked(1==query.IsMissing),$("#chkFutureEpisode",page).checked(1==query.IsUnaired),$("#selectIncludeItemTypes").val(query.IncludeItemTypes),1==query.IsFavorite?$("#isFavorite").val("true"):0==query.IsFavorite?$("#isFavorite").val("false"):$("#isFavorite").val("-")}function reloadFiltersIfNeeded(page){filtersLoaded||(filtersLoaded=!0,QueryReportFilters.loadFilters(page,Dashboard.getCurrentUserId(),query,function(){reloadItems(page)}),QueryReportColumns.loadColumns(page,Dashboard.getCurrentUserId(),query,function(){reloadItems(page)}))}function renderOptions(page,selector,cssClass,items){var elem;elem=items.length?$(selector,page).show():$(selector,page).hide();var html="";html+='
';var index=0,idPrefix="chk"+selector.substring(1);html+=items.map(function(filter){var itemHtml="",id=idPrefix+index,label=filter,value=filter,checked=!1;return filter.FieldName&&(label=filter.Name,value=filter.FieldName,checked=filter.Visible),itemHtml+='",itemHtml+='',html+='schedule',html+=trigger.MaxRuntimeMs?'
':'
',html+="
"+ScheduledTaskPage.getTriggerFriendlyName(trigger)+"
",trigger.MaxRuntimeMs){html+='
';var hours=trigger.MaxRuntimeMs/36e5;html+=1==hours?Globalize.translate("ValueTimeLimitSingleHour"):Globalize.translate("ValueTimeLimitMultiHour",hours),html+="
"}html+="
",html+='',html+="
"}html+="
",context.querySelector(".taskTriggers").innerHTML=html},getTriggerFriendlyName:function(trigger){if("DailyTrigger"==trigger.Type)return"Daily at "+ScheduledTaskPage.getDisplayTime(trigger.TimeOfDayTicks);if("WeeklyTrigger"==trigger.Type)return trigger.DayOfWeek+"s at "+ScheduledTaskPage.getDisplayTime(trigger.TimeOfDayTicks);if("SystemEventTrigger"==trigger.Type&&"WakeFromSleep"==trigger.SystemEvent)return"On wake from sleep";if("IntervalTrigger"==trigger.Type){var hours=trigger.IntervalTicks/36e9;return.25==hours?"Every 15 minutes":.5==hours?"Every 30 minutes":.75==hours?"Every 45 minutes":1==hours?"Every hour":"Every "+hours+" hours"}return"StartupTrigger"==trigger.Type?"On application startup":trigger.Type},getDisplayTime:function(ticks){var hours=ticks/36e9;hours<1&&(hours=0),hours=Math.floor(hours),ticks-=36e9*hours;var minutes=Math.floor(ticks/6e8),suffix="am";return hours>11&&(suffix="pm"),hours%=12,0==hours&&(hours=12),minutes<10&&(minutes="0"+minutes),hours+":"+minutes+" "+suffix},showAddTriggerPopup:function(){var page=$.mobile.activePage;$("#selectTriggerType",page).val("DailyTrigger").trigger("change"),$("#popupAddTrigger",page).on("popupafteropen",function(){$("#addTriggerForm input:first",this).focus()}).popup("open").on("popupafterclose",function(){$("#addTriggerForm",page).off("submit"),$(this).off("popupafterclose")})},confirmDeleteTrigger:function(index){require(["confirm"],function(confirm){confirm(Globalize.translate("MessageDeleteTaskTrigger"),Globalize.translate("HeaderDeleteTaskTrigger")).then(function(){ScheduledTaskPage.deleteTrigger(index)})})},deleteTrigger:function(index){Dashboard.showLoadingMsg();var id=getParameterByName("id");ApiClient.getScheduledTask(id).then(function(task){task.Triggers.remove(index),ApiClient.updateScheduledTaskTriggers(task.Id,task.Triggers).then(function(){ScheduledTaskPage.refreshScheduledTask()})})},refreshTriggerFields:function(triggerType){var page=$.mobile.activePage;"DailyTrigger"==triggerType?($("#fldTimeOfDay",page).show(),$("#fldDayOfWeek",page).hide(),$("#fldSelectSystemEvent",page).hide(),$("#fldSelectInterval",page).hide(),$("#txtTimeOfDay",page).attr("required","required")):"WeeklyTrigger"==triggerType?($("#fldTimeOfDay",page).show(),$("#fldDayOfWeek",page).show(),$("#fldSelectSystemEvent",page).hide(),$("#fldSelectInterval",page).hide(),$("#txtTimeOfDay",page).attr("required","required")):"SystemEventTrigger"==triggerType?($("#fldTimeOfDay",page).hide(),$("#fldDayOfWeek",page).hide(),$("#fldSelectSystemEvent",page).show(),$("#fldSelectInterval",page).hide(),$("#txtTimeOfDay",page).removeAttr("required")):"IntervalTrigger"==triggerType?($("#fldTimeOfDay",page).hide(),$("#fldDayOfWeek",page).hide(),$("#fldSelectSystemEvent",page).hide(),$("#fldSelectInterval",page).show(),$("#txtTimeOfDay",page).removeAttr("required")):"StartupTrigger"==triggerType&&($("#fldTimeOfDay",page).hide(),$("#fldDayOfWeek",page).hide(),$("#fldSelectSystemEvent",page).hide(),$("#fldSelectInterval",page).hide(),$("#txtTimeOfDay",page).removeAttr("required"))},getTriggerToAdd:function(){var page=$.mobile.activePage,trigger={Type:$("#selectTriggerType",page).val()};"DailyTrigger"==trigger.Type?trigger.TimeOfDayTicks=ScheduledTaskPage.getTimeOfDayTicks($("#txtTimeOfDay",page).val()):"WeeklyTrigger"==trigger.Type?(trigger.DayOfWeek=$("#selectDayOfWeek",page).val(),trigger.TimeOfDayTicks=ScheduledTaskPage.getTimeOfDayTicks($("#txtTimeOfDay",page).val())):"SystemEventTrigger"==trigger.Type?trigger.SystemEvent=$("#selectSystemEvent",page).val():"IntervalTrigger"==trigger.Type&&(trigger.IntervalTicks=$("#selectInterval",page).val());var timeLimit=$("#txtTimeLimit",page).val()||"0";return timeLimit=36e5*parseFloat(timeLimit),trigger.MaxRuntimeMs=timeLimit||null,trigger},getTimeOfDayTicks:function(val){var vals=val.split(":"),hours=vals[0],minutes=vals[1].split(" ")[0],ticks=60*hours*60*1e3*1e4;return ticks+=60*minutes*1e3*1e4}},function(){function onSubmit(){Dashboard.showLoadingMsg();var id=getParameterByName("id");return ApiClient.getScheduledTask(id).then(function(task){task.Triggers.push(ScheduledTaskPage.getTriggerToAdd()),ApiClient.updateScheduledTaskTriggers(task.Id,task.Triggers).then(function(){$("#popupAddTrigger").popup("close"),ScheduledTaskPage.refreshScheduledTask()})}),!1}$(document).on("pageinit","#scheduledTaskPage",function(){var page=this;$(".addTriggerForm").off("submit",onSubmit).on("submit",onSubmit),page.querySelector(".timeFieldExample").innerHTML=Globalize.translate("ValueExample","1:00 PM")}).on("pageshow","#scheduledTaskPage",function(){ScheduledTaskPage.refreshScheduledTask()})}()}); \ No newline at end of file +define(["jQuery","loading"],function($,loading){"use strict";Array.prototype.remove=function(from,to){var rest=this.slice((to||from)+1||this.length);return this.length=from<0?this.length+from:from,this.push.apply(this,rest)},window.ScheduledTaskPage={refreshScheduledTask:function(){loading.show();var id=getParameterByName("id");ApiClient.getScheduledTask(id).then(ScheduledTaskPage.loadScheduledTask)},loadScheduledTask:function(task){var page=$($.mobile.activePage)[0];$(".taskName",page).html(task.Name),$("#pTaskDescription",page).html(task.Description),require(["listViewStyle"],function(){ScheduledTaskPage.loadTaskTriggers(page,task)}),loading.hide()},loadTaskTriggers:function(context,task){var html="";html+='
';for(var i=0,length=task.Triggers.length;i',html+='schedule',html+=trigger.MaxRuntimeMs?'
':'
',html+="
"+ScheduledTaskPage.getTriggerFriendlyName(trigger)+"
",trigger.MaxRuntimeMs){html+='
';var hours=trigger.MaxRuntimeMs/36e5;html+=1==hours?Globalize.translate("ValueTimeLimitSingleHour"):Globalize.translate("ValueTimeLimitMultiHour",hours),html+="
"}html+="
",html+='',html+="
"}html+="
",context.querySelector(".taskTriggers").innerHTML=html},getTriggerFriendlyName:function(trigger){if("DailyTrigger"==trigger.Type)return"Daily at "+ScheduledTaskPage.getDisplayTime(trigger.TimeOfDayTicks);if("WeeklyTrigger"==trigger.Type)return trigger.DayOfWeek+"s at "+ScheduledTaskPage.getDisplayTime(trigger.TimeOfDayTicks);if("SystemEventTrigger"==trigger.Type&&"WakeFromSleep"==trigger.SystemEvent)return"On wake from sleep";if("IntervalTrigger"==trigger.Type){var hours=trigger.IntervalTicks/36e9;return.25==hours?"Every 15 minutes":.5==hours?"Every 30 minutes":.75==hours?"Every 45 minutes":1==hours?"Every hour":"Every "+hours+" hours"}return"StartupTrigger"==trigger.Type?"On application startup":trigger.Type},getDisplayTime:function(ticks){var hours=ticks/36e9;hours<1&&(hours=0),hours=Math.floor(hours),ticks-=36e9*hours;var minutes=Math.floor(ticks/6e8),suffix="am";return hours>11&&(suffix="pm"),hours%=12,0==hours&&(hours=12),minutes<10&&(minutes="0"+minutes),hours+":"+minutes+" "+suffix},showAddTriggerPopup:function(){var page=$.mobile.activePage;$("#selectTriggerType",page).val("DailyTrigger").trigger("change"),$("#popupAddTrigger",page).on("popupafteropen",function(){$("#addTriggerForm input:first",this).focus()}).popup("open").on("popupafterclose",function(){$("#addTriggerForm",page).off("submit"),$(this).off("popupafterclose")})},confirmDeleteTrigger:function(index){require(["confirm"],function(confirm){confirm(Globalize.translate("MessageDeleteTaskTrigger"),Globalize.translate("HeaderDeleteTaskTrigger")).then(function(){ScheduledTaskPage.deleteTrigger(index)})})},deleteTrigger:function(index){loading.show();var id=getParameterByName("id");ApiClient.getScheduledTask(id).then(function(task){task.Triggers.remove(index),ApiClient.updateScheduledTaskTriggers(task.Id,task.Triggers).then(function(){ScheduledTaskPage.refreshScheduledTask()})})},refreshTriggerFields:function(triggerType){var page=$.mobile.activePage;"DailyTrigger"==triggerType?($("#fldTimeOfDay",page).show(),$("#fldDayOfWeek",page).hide(),$("#fldSelectSystemEvent",page).hide(),$("#fldSelectInterval",page).hide(),$("#txtTimeOfDay",page).attr("required","required")):"WeeklyTrigger"==triggerType?($("#fldTimeOfDay",page).show(),$("#fldDayOfWeek",page).show(),$("#fldSelectSystemEvent",page).hide(),$("#fldSelectInterval",page).hide(),$("#txtTimeOfDay",page).attr("required","required")):"SystemEventTrigger"==triggerType?($("#fldTimeOfDay",page).hide(),$("#fldDayOfWeek",page).hide(),$("#fldSelectSystemEvent",page).show(),$("#fldSelectInterval",page).hide(),$("#txtTimeOfDay",page).removeAttr("required")):"IntervalTrigger"==triggerType?($("#fldTimeOfDay",page).hide(),$("#fldDayOfWeek",page).hide(),$("#fldSelectSystemEvent",page).hide(),$("#fldSelectInterval",page).show(),$("#txtTimeOfDay",page).removeAttr("required")):"StartupTrigger"==triggerType&&($("#fldTimeOfDay",page).hide(),$("#fldDayOfWeek",page).hide(),$("#fldSelectSystemEvent",page).hide(),$("#fldSelectInterval",page).hide(),$("#txtTimeOfDay",page).removeAttr("required"))},getTriggerToAdd:function(){var page=$.mobile.activePage,trigger={Type:$("#selectTriggerType",page).val()};"DailyTrigger"==trigger.Type?trigger.TimeOfDayTicks=ScheduledTaskPage.getTimeOfDayTicks($("#txtTimeOfDay",page).val()):"WeeklyTrigger"==trigger.Type?(trigger.DayOfWeek=$("#selectDayOfWeek",page).val(),trigger.TimeOfDayTicks=ScheduledTaskPage.getTimeOfDayTicks($("#txtTimeOfDay",page).val())):"SystemEventTrigger"==trigger.Type?trigger.SystemEvent=$("#selectSystemEvent",page).val():"IntervalTrigger"==trigger.Type&&(trigger.IntervalTicks=$("#selectInterval",page).val());var timeLimit=$("#txtTimeLimit",page).val()||"0";return timeLimit=36e5*parseFloat(timeLimit),trigger.MaxRuntimeMs=timeLimit||null,trigger},getTimeOfDayTicks:function(val){var vals=val.split(":"),hours=vals[0],minutes=vals[1].split(" ")[0],ticks=60*hours*60*1e3*1e4;return ticks+=60*minutes*1e3*1e4}},function(){function onSubmit(){loading.show();var id=getParameterByName("id");return ApiClient.getScheduledTask(id).then(function(task){task.Triggers.push(ScheduledTaskPage.getTriggerToAdd()),ApiClient.updateScheduledTaskTriggers(task.Id,task.Triggers).then(function(){$("#popupAddTrigger").popup("close"),ScheduledTaskPage.refreshScheduledTask()})}),!1}$(document).on("pageinit","#scheduledTaskPage",function(){var page=this;$(".addTriggerForm").off("submit",onSubmit).on("submit",onSubmit),page.querySelector(".timeFieldExample").innerHTML=Globalize.translate("ValueExample","1:00 PM")}).on("pageshow","#scheduledTaskPage",function(){ScheduledTaskPage.refreshScheduledTask()})}()}); \ No newline at end of file diff --git a/dashboard-ui/scripts/scheduledtaskspage.js b/dashboard-ui/scripts/scheduledtaskspage.js index 632058698b..2ea022363c 100644 --- a/dashboard-ui/scripts/scheduledtaskspage.js +++ b/dashboard-ui/scripts/scheduledtaskspage.js @@ -1 +1 @@ -define(["jQuery","humanedate","listViewStyle"],function($){"use strict";function reloadList(page){ApiClient.getScheduledTasks({isHidden:!1}).then(function(tasks){populateList(page,tasks),Dashboard.hideLoadingMsg()})}function populateList(page,tasks){tasks=tasks.sort(function(a,b){return a=a.Category+" "+a.Name,b=b.Category+" "+b.Name,a==b?0:a",html+="
"),html+='
',html+="

",html+=currentCategory,html+="

",html+='
'),html+='
',html+="",html+='schedule',html+="",html+='",html+="Idle"==task.State?'':"Running"==task.State?'':'',html+="
"}tasks.length&&(html+="
",html+="
");var divScheduledTasks=page.querySelector(".divScheduledTasks");divScheduledTasks.innerHTML=html}function humane_elapsed(firstDateStr,secondDateStr){var dt1=new Date(firstDateStr),dt2=new Date(secondDateStr),seconds=(dt2.getTime()-dt1.getTime())/1e3,numdays=Math.floor(seconds%31536e3/86400),numhours=Math.floor(seconds%31536e3%86400/3600),numminutes=Math.floor(seconds%31536e3%86400%3600/60),numseconds=Math.round(seconds%31536e3%86400%3600%60),elapsedStr="";return elapsedStr+=1==numdays?numdays+" day ":"",elapsedStr+=numdays>1?numdays+" days ":"",elapsedStr+=1==numhours?numhours+" hour ":"",elapsedStr+=numhours>1?numhours+" hours ":"",elapsedStr+=1==numminutes?numminutes+" minute ":"",elapsedStr+=numminutes>1?numminutes+" minutes ":"",elapsedStr+=elapsedStr.length>0?"and ":"",elapsedStr+=1==numseconds?numseconds+" second":"",elapsedStr+=0==numseconds||numseconds>1?numseconds+" seconds":""}function getTaskProgressHtml(task){var html="";if("Idle"==task.State)task.LastExecutionResult&&(html+=Globalize.translate("LabelScheduledTaskLastRan").replace("{0}",humane_date(task.LastExecutionResult.EndTimeUtc)).replace("{1}",humane_elapsed(task.LastExecutionResult.StartTimeUtc,task.LastExecutionResult.EndTimeUtc)),"Failed"==task.LastExecutionResult.Status?html+=" ("+Globalize.translate("LabelFailed")+")":"Cancelled"==task.LastExecutionResult.Status?html+=" ("+Globalize.translate("LabelCancelled")+")":"Aborted"==task.LastExecutionResult.Status&&(html+=" "+Globalize.translate("LabelAbortedByServerShutdown")+""));else if("Running"==task.State){var progress=(task.CurrentProgressPercentage||0).toFixed(1);html+='
',html+='
',html+='
',html+="
",html+="
",html+=""+progress+"%",html+="
"}else html+=""+Globalize.translate("LabelStopping")+"";return html}function onWebSocketMessage(e,msg){if("ScheduledTasksInfo"==msg.MessageType){var tasks=msg.Data,page=$($.mobile.activePage)[0];updateTasks(page,tasks)}}function updateTasks(page,tasks){for(var i=0,length=tasks.length;i",html+="
"),html+='
',html+="

",html+=currentCategory,html+="

",html+='
'),html+='
',html+="",html+='schedule',html+="",html+='",html+="Idle"==task.State?'':"Running"==task.State?'':'',html+="
"}tasks.length&&(html+="
",html+="
");var divScheduledTasks=page.querySelector(".divScheduledTasks");divScheduledTasks.innerHTML=html}function humane_elapsed(firstDateStr,secondDateStr){var dt1=new Date(firstDateStr),dt2=new Date(secondDateStr),seconds=(dt2.getTime()-dt1.getTime())/1e3,numdays=Math.floor(seconds%31536e3/86400),numhours=Math.floor(seconds%31536e3%86400/3600),numminutes=Math.floor(seconds%31536e3%86400%3600/60),numseconds=Math.round(seconds%31536e3%86400%3600%60),elapsedStr="";return elapsedStr+=1==numdays?numdays+" day ":"",elapsedStr+=numdays>1?numdays+" days ":"",elapsedStr+=1==numhours?numhours+" hour ":"",elapsedStr+=numhours>1?numhours+" hours ":"",elapsedStr+=1==numminutes?numminutes+" minute ":"",elapsedStr+=numminutes>1?numminutes+" minutes ":"",elapsedStr+=elapsedStr.length>0?"and ":"",elapsedStr+=1==numseconds?numseconds+" second":"",elapsedStr+=0==numseconds||numseconds>1?numseconds+" seconds":""}function getTaskProgressHtml(task){var html="";if("Idle"==task.State)task.LastExecutionResult&&(html+=Globalize.translate("LabelScheduledTaskLastRan").replace("{0}",humane_date(task.LastExecutionResult.EndTimeUtc)).replace("{1}",humane_elapsed(task.LastExecutionResult.StartTimeUtc,task.LastExecutionResult.EndTimeUtc)),"Failed"==task.LastExecutionResult.Status?html+=" ("+Globalize.translate("LabelFailed")+")":"Cancelled"==task.LastExecutionResult.Status?html+=" ("+Globalize.translate("LabelCancelled")+")":"Aborted"==task.LastExecutionResult.Status&&(html+=" "+Globalize.translate("LabelAbortedByServerShutdown")+""));else if("Running"==task.State){var progress=(task.CurrentProgressPercentage||0).toFixed(1);html+='
',html+='
',html+='
',html+="
",html+="
",html+=""+progress+"%",html+="
"}else html+=""+Globalize.translate("LabelStopping")+"";return html}function onWebSocketMessage(e,msg){if("ScheduledTasksInfo"==msg.MessageType){var tasks=msg.Data,page=$($.mobile.activePage)[0];updateTasks(page,tasks)}}function updateTasks(page,tasks){for(var i=0,length=tasks.length;i';return itemHtml+=i.Name,itemHtml+="
"}).join("");page.querySelector(".searchSuggestions").innerHTML=html})}return function(view,params){function clearSearchHintTimeout(){searchHintTimeout&&(clearTimeout(searchHintTimeout),searchHintTimeout=null)}function showTextSuggestions(){textSuggestions.classList.remove("hide")}function getAdditionalTextLines(hint){return"Audio"==hint.Type?[[hint.AlbumArtist,hint.Album].join(" - ")]:"MusicAlbum"==hint.Type?[hint.AlbumArtist]:"MusicArtist"==hint.Type?[Globalize.translate("LabelArtist")]:"Movie"==hint.Type?[Globalize.translate("LabelMovie")]:"MusicVideo"==hint.Type?[Globalize.translate("LabelMusicVideo")]:"Episode"==hint.Type?[Globalize.translate("LabelEpisode")]:"Series"==hint.Type?[Globalize.translate("Series")]:"BoxSet"==hint.Type?[Globalize.translate("LabelCollection")]:hint.ChannelName?[hint.ChannelName]:[hint.Type]}function renderSearchResultsInOverlay(hints){hints=hints.map(function(i){return i.Id=i.ItemId,i.ImageTags={},i.UserData={},i.PrimaryImageTag&&(i.ImageTags.Primary=i.PrimaryImageTag),i});var html=cardBuilder.getCardsHtml({items:hints,shape:"auto",overlayText:!1,showTitle:!0,centerImage:!0,centerText:!0,textLines:getAdditionalTextLines,overlayMoreButton:!0,serverId:ApiClient.serverInfo().Id});hints.length||(html='

'+Globalize.translate("NoResultsFound")+"

");var itemsContainer=searchResults;itemsContainer.innerHTML=html,searchResults.classList.remove("hide"),textSuggestions.classList.add("hide"),imageLoader.lazyChildren(itemsContainer)}function requestSearchHintsForOverlay(searchTerm){var currentTimeout=searchHintTimeout;Dashboard.showLoadingMsg(),ApiClient.getSearchHints({userId:Dashboard.getCurrentUserId(),searchTerm:(searchTerm||"").trim(),limit:30}).then(function(result){currentTimeout==searchHintTimeout&&renderSearchResultsInOverlay(result.SearchHints),Dashboard.hideLoadingMsg()},function(){Dashboard.hideLoadingMsg()})}function onSearchChange(val){return val?(clearSearchHintTimeout(),void(searchHintTimeout=setTimeout(function(){requestSearchHintsForOverlay(val)},300))):(clearSearchHintTimeout(),searchResults.classList.add("hide"),searchResults.innerHTML="",void showTextSuggestions())}var searchHintTimeout,textSuggestions=view.querySelector(".textSuggestions"),searchResults=view.querySelector(".searchResults");showTextSuggestions(),loadSuggestions(view),view.querySelector(".txtSearch").addEventListener("input",function(){onSearchChange(this.value)}),view.querySelector(".btnBack").addEventListener("click",function(){embyRouter.back()}),view.addEventListener("viewbeforeshow",function(e){document.body.classList.add("hiddenViewMenuBar")}),view.addEventListener("viewbeforehide",function(e){document.body.classList.remove("hiddenViewMenuBar")})}}); \ No newline at end of file +define(["loading","libraryBrowser","focusManager","embyRouter","cardBuilder","imageLoader","emby-input","paper-icon-button-light","material-icons","emby-itemscontainer"],function(loading,libraryBrowser,focusManager,embyRouter,cardBuilder,imageLoader){"use strict";function loadSuggestions(page){var options={SortBy:"IsFavoriteOrLiked,Random",IncludeItemTypes:"Movie,Series,MusicArtist",Limit:20,Recursive:!0,ImageTypeLimit:0,EnableImages:!1};ApiClient.getItems(Dashboard.getCurrentUserId(),options).then(function(result){var html=result.Items.map(function(i){var href=LibraryBrowser.getHref(i),itemHtml='"}).join("");page.querySelector(".searchSuggestions").innerHTML=html})}return function(view,params){function clearSearchHintTimeout(){searchHintTimeout&&(clearTimeout(searchHintTimeout),searchHintTimeout=null)}function showTextSuggestions(){textSuggestions.classList.remove("hide")}function getAdditionalTextLines(hint){return"Audio"==hint.Type?[[hint.AlbumArtist,hint.Album].join(" - ")]:"MusicAlbum"==hint.Type?[hint.AlbumArtist]:"MusicArtist"==hint.Type?[Globalize.translate("LabelArtist")]:"Movie"==hint.Type?[Globalize.translate("LabelMovie")]:"MusicVideo"==hint.Type?[Globalize.translate("LabelMusicVideo")]:"Episode"==hint.Type?[Globalize.translate("LabelEpisode")]:"Series"==hint.Type?[Globalize.translate("Series")]:"BoxSet"==hint.Type?[Globalize.translate("LabelCollection")]:hint.ChannelName?[hint.ChannelName]:[hint.Type]}function renderSearchResultsInOverlay(hints){hints=hints.map(function(i){return i.Id=i.ItemId,i.ImageTags={},i.UserData={},i.PrimaryImageTag&&(i.ImageTags.Primary=i.PrimaryImageTag),i});var html=cardBuilder.getCardsHtml({items:hints,shape:"auto",overlayText:!1,showTitle:!0,centerImage:!0,centerText:!0,textLines:getAdditionalTextLines,overlayMoreButton:!0,serverId:ApiClient.serverInfo().Id});hints.length||(html='

'+Globalize.translate("NoResultsFound")+"

");var itemsContainer=searchResults;itemsContainer.innerHTML=html,searchResults.classList.remove("hide"),textSuggestions.classList.add("hide"),imageLoader.lazyChildren(itemsContainer)}function requestSearchHintsForOverlay(searchTerm){var currentTimeout=searchHintTimeout;loading.show(),ApiClient.getSearchHints({userId:Dashboard.getCurrentUserId(),searchTerm:(searchTerm||"").trim(),limit:30}).then(function(result){currentTimeout==searchHintTimeout&&renderSearchResultsInOverlay(result.SearchHints),loading.hide()},function(){loading.hide()})}function onSearchChange(val){return val?(clearSearchHintTimeout(),void(searchHintTimeout=setTimeout(function(){requestSearchHintsForOverlay(val)},300))):(clearSearchHintTimeout(),searchResults.classList.add("hide"),searchResults.innerHTML="",void showTextSuggestions())}var searchHintTimeout,textSuggestions=view.querySelector(".textSuggestions"),searchResults=view.querySelector(".searchResults");showTextSuggestions(),loadSuggestions(view),view.querySelector(".txtSearch").addEventListener("input",function(){onSearchChange(this.value)}),view.querySelector(".btnBack").addEventListener("click",function(){embyRouter.back()}),view.addEventListener("viewbeforeshow",function(e){document.body.classList.add("hiddenViewMenuBar")}),view.addEventListener("viewbeforehide",function(e){document.body.classList.remove("hiddenViewMenuBar")})}}); \ No newline at end of file diff --git a/dashboard-ui/scripts/secondaryitems.js b/dashboard-ui/scripts/secondaryitems.js index 23636b3b37..e9f37376ab 100644 --- a/dashboard-ui/scripts/secondaryitems.js +++ b/dashboard-ui/scripts/secondaryitems.js @@ -1 +1 @@ -define(["libraryBrowser","listView","cardBuilder","imageLoader","apphost","globalize","emby-itemscontainer"],function(libraryBrowser,listView,cardBuilder,imageLoader,appHost,globalize){"use strict";return function(view,params){function addCurrentItemToQuery(query,item){params.parentId&&(query.ParentId=params.parentId),"Person"==item.Type?query.PersonIds=item.Id:"Genre"==item.Type?query.Genres=item.Name:"MusicGenre"==item.Type?query.Genres=item.Name:"GameGenre"==item.Type?query.Genres=item.Name:"Studio"==item.Type?query.StudioIds=item.Id:"MusicArtist"==item.Type?query.ArtistIds=item.Id:query.ParentId=item.Id}function getQuery(parentItem){var key=getSavedQueryKey(),pageData=data[key];if(!pageData){pageData=data[key]={query:{SortBy:"SortName",SortOrder:"Ascending",Recursive:"false"!==params.recursive,Fields:"PrimaryImageAspectRatio,SortName,BasicSyncInfo",ImageTypeLimit:1,EnableImageTypes:"Primary,Backdrop,Banner,Thumb",StartIndex:0,Limit:libraryBrowser.getDefaultPageSize()}};var type=params.type;type&&(pageData.query.IncludeItemTypes=type,"Audio"==type&&(pageData.query.SortBy="Album,SortName"));var filters=params.filters;type&&(pageData.query.Filters=filters),parentItem&&addCurrentItemToQuery(pageData.query,parentItem),libraryBrowser.loadSavedQueryValues(key,pageData.query)}return pageData.query}function getSavedQueryKey(){return libraryBrowser.getSavedQueryKey()}function parentWithClass(elem,className){for(;!elem.classList||!elem.classList.contains(className);)if(elem=elem.parentNode,!elem)return null;return elem}function onListItemClick(e){var mediaItem=parentWithClass(e.target,"mediaItem");if(mediaItem){var info=libraryBrowser.getListItemInfo(mediaItem);if("Photo"==info.mediaType){var query=getQuery();return require(["scripts/photos"],function(){Photos.startSlideshow(view,query,info.id)}),!1}}}function onViewStyleChange(parentItem){var query=getQuery(parentItem),itemsContainer=view.querySelector("#items");"Audio"==query.IncludeItemTypes?(itemsContainer.classList.add("vertical-list"),itemsContainer.classList.remove("vertical-wrap")):(itemsContainer.classList.remove("vertical-list"),itemsContainer.classList.add("vertical-wrap"))}function getPromise(parentItem){var apiClient=ApiClient,query=getQuery(parentItem);return"nextup"===params.type?apiClient.getNextUpEpisodes({Limit:query.Limit,Fields:"PrimaryImageAspectRatio,SeriesInfo,DateCreated,BasicSyncInfo",UserId:apiClient.getCurrentUserId(),ImageTypeLimit:1,EnableImageTypes:"Primary,Backdrop,Thumb",EnableTotalRecordCount:!1}):apiClient.getItems(apiClient.getCurrentUserId(),query)}function reloadItems(parentItem){Dashboard.showLoadingMsg(),getPromise(parentItem).then(function(result){function onNextPageClick(){query.StartIndex+=query.Limit,reloadItems(view)}function onPreviousPageClick(){query.StartIndex-=query.Limit,reloadItems(view)}window.scrollTo(0,0);var i,length,elems,query=getQuery(parentItem),html="",pagingHtml=libraryBrowser.getQueryPagingHtml({startIndex:query.StartIndex,limit:query.Limit,totalRecordCount:result.TotalRecordCount,showLimit:!1});for(elems=view.querySelectorAll(".paging"),i=0,length=elems.length;i'+item.icon+"":'
';var cardBoxCssClass="cardBox";layoutManager.tv&&(cardBoxCssClass+=" cardBox-focustransform");var tagName="button",innerOpening='
',innerClosing="
";return"<"+tagName+' raised class="card overflowSquareCard loginSquareCard scalableCard overflowSquareCard-scalable" style="display:inline-block;" data-id="'+item.id+'" data-url="'+(item.url||"")+'" data-cardtype="'+item.cardType+'">'+innerOpening+'
'+cardImageContainer+'
'+item.name+"
"+innerClosing+""}).join(""),itemsContainer=view.querySelector(".servers");items.length||(html="

"+globalize.translate("sharedcomponents#MessageNoServersAvailableToConnect")+"

"),itemsContainer.innerHTML=html,loading.hide()}function updatePageStyle(view,params){"1"==params.showuser?(view.classList.add("libraryPage"),view.classList.remove("standalonePage"),view.classList.add("noSecondaryNavPage")):(view.classList.add("standalonePage"),view.classList.remove("libraryPage"),view.classList.remove("noSecondaryNavPage"))}function showGeneralError(){loading.hide(),alertText(globalize.translate("sharedcomponents#DefaultErrorMessage"))}function alertTextWithOptions(options){require(["alert"],function(alert){alert(options)})}function showServerConnectionFailure(){alertText(globalize.translate("MessageUnableToConnectToServer"),globalize.translate("HeaderConnectionFailure"))}return function(view,params){function connectToServer(server){loading.show(),connectionManager.connectToServer(server,{enableAutoLogin:appSettings.enableAutoLogin()}).then(function(result){loading.hide();var apiClient=result.ApiClient;switch(result.State){case MediaBrowser.ConnectionState.SignedIn:Dashboard.onServerChanged(apiClient.getCurrentUserId(),apiClient.accessToken(),apiClient),Dashboard.navigate("home.html");break;case MediaBrowser.ConnectionState.ServerSignIn:Dashboard.onServerChanged(null,null,apiClient),Dashboard.navigate("login.html?serverid="+result.Servers[0].Id);break;case MediaBrowser.ConnectionState.ServerUpdateNeeded:alertTextWithOptions({text:globalize.translate("core#ServerUpdateNeeded","https://emby.media"),html:globalize.translate("core#ServerUpdateNeeded",'https://emby.media')});break;default:showServerConnectionFailure()}})}function deleteServer(server){loading.show(),connectionManager.deleteServer(server.Id).then(function(){loading.hide(),loadServers()},function(){loading.hide(),loadServers()})}function acceptInvitation(id){loading.show(),connectionManager.acceptServer(id).then(function(){loading.hide(),loadServers(),loadInvitations()},showGeneralError)}function rejectInvitation(id){loading.show(),connectionManager.rejectServer(id).then(function(){loading.hide(),loadServers(),loadInvitations()},showGeneralError)}function showPendingInviteMenu(elem){var card=dom.parentWithClass(elem,"inviteItem"),invitationId=card.getAttribute("data-id"),menuItems=[];menuItems.push({name:globalize.translate("sharedcomponents#Accept"),id:"accept"}),menuItems.push({name:globalize.translate("sharedcomponents#Reject"),id:"reject"}),require(["actionsheet"],function(actionsheet){actionsheet.show({items:menuItems,positionTo:elem,callback:function(id){switch(id){case"accept":acceptInvitation(invitationId);break;case"reject":rejectInvitation(invitationId)}}})})}function getPendingInviteHtml(item){var cardImageContainer='',cardBoxCssClass="cardBox";layoutManager.tv&&(cardBoxCssClass+=" cardBox-focustransform");var tagName="button",innerOpening='
',innerClosing="
";return"<"+tagName+' raised class="card overflowSquareCard loginSquareCard scalableCard overflowSquareCard-scalable btnInviteMenu inviteItem" style="display:inline-block;" data-id="'+item.Id+'">'+innerOpening+'
'+cardImageContainer+'
'+item.Name+"
"+innerClosing+""}function renderInvitations(list){list.length?view.querySelector(".invitationSection").classList.remove("hide"):view.querySelector(".invitationSection").classList.add("hide");var html=list.map(getPendingInviteHtml).join("");view.querySelector(".invitations").innerHTML=html}function loadInvitations(){connectionManager.isLoggedIntoConnect()?connectionManager.getUserInvitations().then(renderInvitations):renderInvitations([])}function onServerClick(server){var menuItems=[];menuItems.push({name:globalize.translate("sharedcomponents#Connect"),id:"connect"}),menuItems.push({name:globalize.translate("sharedcomponents#Delete"),id:"delete"}),actionSheet.show({items:menuItems,title:server.Name}).then(function(id){switch(id){case"connect":connectToServer(server);break;case"delete":deleteServer(server)}})}function onServersRetrieved(result){servers=result,renderSelectServerItems(view,result),layoutManager.tv&&focusManager.autoFocus(view)}function loadServers(){loading.show(),connectionManager.getAvailableServers().then(onServersRetrieved,function(result){onServersRetrieved([])})}function initContent(){updatePageStyle(view,params),view.querySelector(".btnOfflineText").innerHTML=globalize.translate("sharedcomponents#HeaderDownloadedMedia"),appHost.supports("sync")&&view.querySelector(".btnOffline").classList.remove("hide")}var servers,scrollX=!layoutManager.desktop;scrollX=!1,initContent();var backdropUrl=staticBackdrops.getRandomImageUrl();view.addEventListener("viewshow",function(e){var isRestored=e.detail.isRestored;Emby.Page.setTitle(null),backdrop.setBackdrop(backdropUrl),isRestored||(loadServers(),loadInvitations())}),view.querySelector(".btnAddServer").addEventListener("click",function(e){Emby.Page.show("/connectlogin.html?mode=manualserver")}),view.querySelector(".btnConnect").addEventListener("click",function(e){Emby.Page.show("/connectlogin.html?mode=connect")}),view.querySelector(".btnOffline").addEventListener("click",function(e){Emby.Page.show("/offline/offline.html")}),view.querySelector(".servers").addEventListener("click",function(e){var card=dom.parentWithClass(e.target,"card");if(card){var url=card.getAttribute("data-url");if(url)Emby.Page.show(url);else{var id=card.getAttribute("data-id"),server=servers.filter(function(s){return s.Id===id})[0];onServerClick(server)}}}),view.querySelector(".invitations").addEventListener("click",function(e){var btnInviteMenu=dom.parentWithClass(e.target,"btnInviteMenu");btnInviteMenu&&showPendingInviteMenu(btnInviteMenu)})}}); \ No newline at end of file +define(["loading","embyRouter","layoutManager","appSettings","apphost","focusManager","connectionManager","backdrop","globalize","staticBackdrops","actionsheet","dom","material-icons","flexStyles","emby-scroller","emby-itemscontainer","cardStyle","emby-button"],function(loading,embyRouter,layoutManager,appSettings,appHost,focusManager,connectionManager,backdrop,globalize,staticBackdrops,actionSheet,dom){"use strict";function renderSelectServerItems(view,servers){var items=servers.map(function(server){return{name:server.Name,showIcon:!0,icon:"",cardType:"",id:server.Id,server:server}}),html=items.map(function(item){var cardImageContainer;cardImageContainer=item.showIcon?''+item.icon+"":'
';var cardBoxCssClass="cardBox";layoutManager.tv&&(cardBoxCssClass+=" cardBox-focustransform");var tagName="button",innerOpening='
',innerClosing="
";return"<"+tagName+' raised class="card overflowSquareCard loginSquareCard scalableCard overflowSquareCard-scalable" style="display:inline-block;" data-id="'+item.id+'" data-url="'+(item.url||"")+'" data-cardtype="'+item.cardType+'">'+innerOpening+'
'+cardImageContainer+'
'+item.name+"
"+innerClosing+""}).join(""),itemsContainer=view.querySelector(".servers");items.length||(html="

"+globalize.translate("sharedcomponents#MessageNoServersAvailableToConnect")+"

"),itemsContainer.innerHTML=html,loading.hide()}function updatePageStyle(view,params){"1"==params.showuser?(view.classList.add("libraryPage"),view.classList.remove("standalonePage"),view.classList.add("noSecondaryNavPage")):(view.classList.add("standalonePage"),view.classList.remove("libraryPage"),view.classList.remove("noSecondaryNavPage"))}function showGeneralError(){loading.hide(),alertText(globalize.translate("sharedcomponents#DefaultErrorMessage"))}function alertTextWithOptions(options){require(["alert"],function(alert){alert(options)})}function showServerConnectionFailure(){alertText(globalize.translate("MessageUnableToConnectToServer"),globalize.translate("HeaderConnectionFailure"))}return function(view,params){function connectToServer(server){loading.show(),connectionManager.connectToServer(server,{enableAutoLogin:appSettings.enableAutoLogin()}).then(function(result){loading.hide();var apiClient=result.ApiClient;switch(result.State){case MediaBrowser.ConnectionState.SignedIn:Dashboard.onServerChanged(apiClient.getCurrentUserId(),apiClient.accessToken(),apiClient),Dashboard.navigate("home.html");break;case MediaBrowser.ConnectionState.ServerSignIn:Dashboard.onServerChanged(null,null,apiClient),Dashboard.navigate("login.html?serverid="+result.Servers[0].Id);break;case MediaBrowser.ConnectionState.ServerUpdateNeeded:alertTextWithOptions({text:globalize.translate("core#ServerUpdateNeeded","https://emby.media"),html:globalize.translate("core#ServerUpdateNeeded",'https://emby.media')});break;default:showServerConnectionFailure()}})}function deleteServer(server){loading.show(),connectionManager.deleteServer(server.Id).then(function(){loading.hide(),loadServers()},function(){loading.hide(),loadServers()})}function acceptInvitation(id){loading.show(),connectionManager.acceptServer(id).then(function(){loading.hide(),loadServers(),loadInvitations()},showGeneralError)}function rejectInvitation(id){loading.show(),connectionManager.rejectServer(id).then(function(){loading.hide(),loadServers(),loadInvitations()},showGeneralError)}function showPendingInviteMenu(elem){var card=dom.parentWithClass(elem,"inviteItem"),invitationId=card.getAttribute("data-id"),menuItems=[];menuItems.push({name:globalize.translate("sharedcomponents#Accept"),id:"accept"}),menuItems.push({name:globalize.translate("sharedcomponents#Reject"),id:"reject"}),require(["actionsheet"],function(actionsheet){actionsheet.show({items:menuItems,positionTo:elem,callback:function(id){switch(id){case"accept":acceptInvitation(invitationId);break;case"reject":rejectInvitation(invitationId)}}})})}function getPendingInviteHtml(item){var cardImageContainer='',cardBoxCssClass="cardBox";layoutManager.tv&&(cardBoxCssClass+=" cardBox-focustransform");var tagName="button",innerOpening='
',innerClosing="
";return"<"+tagName+' raised class="card overflowSquareCard loginSquareCard scalableCard overflowSquareCard-scalable btnInviteMenu inviteItem" style="display:inline-block;" data-id="'+item.Id+'">'+innerOpening+'
'+cardImageContainer+'
'+item.Name+"
"+innerClosing+""}function renderInvitations(list){list.length?view.querySelector(".invitationSection").classList.remove("hide"):view.querySelector(".invitationSection").classList.add("hide");var html=list.map(getPendingInviteHtml).join("");view.querySelector(".invitations").innerHTML=html}function loadInvitations(){connectionManager.isLoggedIntoConnect()?connectionManager.getUserInvitations().then(renderInvitations):renderInvitations([])}function onServerClick(server){var menuItems=[];menuItems.push({name:globalize.translate("sharedcomponents#Connect"),id:"connect"}),menuItems.push({name:globalize.translate("sharedcomponents#Delete"),id:"delete"}),actionSheet.show({items:menuItems,title:server.Name}).then(function(id){switch(id){case"connect":connectToServer(server);break;case"delete":deleteServer(server)}})}function onServersRetrieved(result){servers=result,renderSelectServerItems(view,result),layoutManager.tv&&focusManager.autoFocus(view)}function loadServers(){loading.show(),connectionManager.getAvailableServers().then(onServersRetrieved,function(result){onServersRetrieved([])})}function initContent(){updatePageStyle(view,params),view.querySelector(".btnOfflineText").innerHTML=globalize.translate("sharedcomponents#HeaderDownloadedMedia"),appHost.supports("sync")&&view.querySelector(".btnOffline").classList.remove("hide")}var servers,scrollX=!layoutManager.desktop;scrollX=!1,initContent();var backdropUrl=staticBackdrops.getRandomImageUrl();view.addEventListener("viewshow",function(e){var isRestored=e.detail.isRestored;embyRouter.setTitle(null),backdrop.setBackdrop(backdropUrl),isRestored||(loadServers(),loadInvitations())}),view.querySelector(".btnAddServer").addEventListener("click",function(e){embyRouter.show("/connectlogin.html?mode=manualserver")}),view.querySelector(".btnConnect").addEventListener("click",function(e){embyRouter.show("/connectlogin.html?mode=connect")}),view.querySelector(".btnOffline").addEventListener("click",function(e){embyRouter.show("/offline/offline.html")}),view.querySelector(".servers").addEventListener("click",function(e){var card=dom.parentWithClass(e.target,"card");if(card){var url=card.getAttribute("data-url");if(url)embyRouter.show(url);else{var id=card.getAttribute("data-id"),server=servers.filter(function(s){return s.Id===id})[0];onServerClick(server)}}}),view.querySelector(".invitations").addEventListener("click",function(e){var btnInviteMenu=dom.parentWithClass(e.target,"btnInviteMenu");btnInviteMenu&&showPendingInviteMenu(btnInviteMenu)})}}); \ No newline at end of file diff --git a/dashboard-ui/scripts/serversecurity.js b/dashboard-ui/scripts/serversecurity.js index d0cc2a1ddc..43229daa6d 100644 --- a/dashboard-ui/scripts/serversecurity.js +++ b/dashboard-ui/scripts/serversecurity.js @@ -1 +1 @@ -define(["datetime","jQuery"],function(datetime,$){"use strict";function revoke(page,key){require(["confirm"],function(confirm){confirm(Globalize.translate("MessageConfirmRevokeApiKey"),Globalize.translate("HeaderConfirmRevokeApiKey")).then(function(){Dashboard.showLoadingMsg(),ApiClient.ajax({type:"DELETE",url:ApiClient.getUrl("Auth/Keys/"+key)}).then(function(){loadData(page)})})})}function renderKeys(page,keys,users){var rows=keys.map(function(item){var html="";html+="",html+="",html+='",html+="",html+='',html+=item.AccessToken,html+="",html+='',html+=item.AppName||"",html+="",html+='',html+=item.DeviceName||"",html+="",html+='';var user=users.filter(function(u){return u.Id==item.UserId})[0];user&&(html+=user.Name),html+="",html+='';var date=datetime.parseISO8601Date(item.DateCreated,!0);return html+=datetime.toLocaleDateString(date)+" "+datetime.getDisplayTime(date),html+="",html+=""}).join(""),elem=$(".resultBody",page).html(rows).parents(".tblApiKeys").table("refresh").trigger("create");$(".btnRevoke",elem).on("click",function(){revoke(page,this.getAttribute("data-token"))}),Dashboard.hideLoadingMsg()}function loadData(page){Dashboard.showLoadingMsg(),ApiClient.getUsers().then(function(users){ApiClient.getJSON(ApiClient.getUrl("Auth/Keys")).then(function(result){renderKeys(page,result.Items,users)})})}function showNewKeyPrompt(page){require(["prompt"],function(prompt){prompt({title:Globalize.translate("HeaderNewApiKey"),label:Globalize.translate("LabelAppName"),description:Globalize.translate("LabelAppNameExample")}).then(function(value){ApiClient.ajax({type:"POST",url:ApiClient.getUrl("Auth/Keys",{App:value})}).then(function(){loadData(page)})})})}function getTabs(){return[{href:"dashboardhosting.html",name:Globalize.translate("TabHosting")},{href:"serversecurity.html",name:Globalize.translate("TabSecurity")}]}pageIdOn("pageinit","serverSecurityPage",function(){var page=this;$(".btnNewKey",page).on("click",function(){showNewKeyPrompt(page)})}),pageIdOn("pagebeforeshow","serverSecurityPage",function(){LibraryMenu.setTabs("adminadvanced",1,getTabs);var page=this;loadData(page)})}); \ No newline at end of file +define(["datetime","jQuery","loading"],function(datetime,$,loading){"use strict";function revoke(page,key){require(["confirm"],function(confirm){confirm(Globalize.translate("MessageConfirmRevokeApiKey"),Globalize.translate("HeaderConfirmRevokeApiKey")).then(function(){loading.show(),ApiClient.ajax({type:"DELETE",url:ApiClient.getUrl("Auth/Keys/"+key)}).then(function(){loadData(page)})})})}function renderKeys(page,keys,users){var rows=keys.map(function(item){var html="";html+="",html+="",html+='",html+="",html+='',html+=item.AccessToken,html+="",html+='',html+=item.AppName||"",html+="",html+='',html+=item.DeviceName||"",html+="",html+='';var user=users.filter(function(u){return u.Id==item.UserId})[0];user&&(html+=user.Name),html+="",html+='';var date=datetime.parseISO8601Date(item.DateCreated,!0);return html+=datetime.toLocaleDateString(date)+" "+datetime.getDisplayTime(date),html+="",html+=""}).join(""),elem=$(".resultBody",page).html(rows).parents(".tblApiKeys").table("refresh").trigger("create");$(".btnRevoke",elem).on("click",function(){revoke(page,this.getAttribute("data-token"))}),loading.hide()}function loadData(page){loading.show(),ApiClient.getUsers().then(function(users){ApiClient.getJSON(ApiClient.getUrl("Auth/Keys")).then(function(result){renderKeys(page,result.Items,users)})})}function showNewKeyPrompt(page){require(["prompt"],function(prompt){prompt({title:Globalize.translate("HeaderNewApiKey"),label:Globalize.translate("LabelAppName"),description:Globalize.translate("LabelAppNameExample")}).then(function(value){ApiClient.ajax({type:"POST",url:ApiClient.getUrl("Auth/Keys",{App:value})}).then(function(){loadData(page)})})})}function getTabs(){return[{href:"dashboardhosting.html",name:Globalize.translate("TabHosting")},{href:"serversecurity.html",name:Globalize.translate("TabSecurity")}]}pageIdOn("pageinit","serverSecurityPage",function(){var page=this;$(".btnNewKey",page).on("click",function(){showNewKeyPrompt(page)})}),pageIdOn("pagebeforeshow","serverSecurityPage",function(){LibraryMenu.setTabs("adminadvanced",1,getTabs);var page=this;loadData(page)})}); \ No newline at end of file diff --git a/dashboard-ui/scripts/shared.js b/dashboard-ui/scripts/shared.js index e5e1afdce1..6a70faa932 100644 --- a/dashboard-ui/scripts/shared.js +++ b/dashboard-ui/scripts/shared.js @@ -1 +1 @@ -define(["jQuery","libraryBrowser","imageLoader","indicators"],function($,libraryBrowser,imageLoader,indicators){"use strict";function reload(page){var id=getParameterByName("id");Dashboard.showLoadingMsg(),ApiClient.getJSON(ApiClient.getUrl("Social/Shares/Public/"+id+"/Item")).then(function(item){reloadFromItem(page,item)})}function reloadFromItem(page,item){currentItem=item,libraryBrowser.renderName(item,$(".itemName",page)[0],!1),libraryBrowser.renderParentName(item,$(".parentName",page)[0]),libraryBrowser.renderDetailPageBackdrop(page,item,imageLoader),renderImage(page,item),setInitialCollapsibleState(page,item),ItemDetailPage.renderDetails(page,item,null,!0),Dashboard.hideLoadingMsg()}function setInitialCollapsibleState(page,item){$(".collectionItems",page).empty(),item.MediaSources&&item.MediaSources.length&&ItemDetailPage.renderMediaSources(page,null,item);var chapters=item.Chapters||[];chapters.length?($("#scenesCollapsible",page).show(),ItemDetailPage.renderScenes(page,item,null,3,!0)):$("#scenesCollapsible",page).hide(),item.People&&item.People.length?($("#castCollapsible",page).show(),ItemDetailPage.renderCast(page,item,null,6,!0)):$("#castCollapsible",page).hide(),ItemDetailPage.renderCriticReviews(page,item,1)}function renderImage(page,item){libraryBrowser.renderDetailImage(page.querySelector(".detailImageContainer"),item,!1,null,imageLoader,indicators)}var currentItem;$(document).on("pageinit","#publicSharedItemPage",function(){var page=this;$(page).on("click",".moreScenes",function(){ItemDetailPage.renderScenes(page,currentItem,null,null,!0)}).on("click",".morePeople",function(){ItemDetailPage.renderCast(page,currentItem,null,null,!0)}).on("click",".moreCriticReviews",function(){ItemDetailPage.renderCriticReviews(page,currentItem)})}).on("pageshow","#publicSharedItemPage",function(){var page=this;reload(page)})}); \ No newline at end of file +define(["jQuery","libraryBrowser","imageLoader","indicators","loading"],function($,libraryBrowser,imageLoader,indicators,loading){"use strict";function reload(page){var id=getParameterByName("id");loading.show(),ApiClient.getJSON(ApiClient.getUrl("Social/Shares/Public/"+id+"/Item")).then(function(item){reloadFromItem(page,item)})}function reloadFromItem(page,item){currentItem=item,libraryBrowser.renderName(item,$(".itemName",page)[0],!1),libraryBrowser.renderParentName(item,$(".parentName",page)[0]),libraryBrowser.renderDetailPageBackdrop(page,item,imageLoader),renderImage(page,item),setInitialCollapsibleState(page,item),ItemDetailPage.renderDetails(page,item,null,!0),loading.hide()}function setInitialCollapsibleState(page,item){$(".collectionItems",page).empty(),item.MediaSources&&item.MediaSources.length&&ItemDetailPage.renderMediaSources(page,null,item);var chapters=item.Chapters||[];chapters.length?($("#scenesCollapsible",page).show(),ItemDetailPage.renderScenes(page,item,null,3,!0)):$("#scenesCollapsible",page).hide(),item.People&&item.People.length?($("#castCollapsible",page).show(),ItemDetailPage.renderCast(page,item,null,6,!0)):$("#castCollapsible",page).hide(),ItemDetailPage.renderCriticReviews(page,item,1)}function renderImage(page,item){libraryBrowser.renderDetailImage(page.querySelector(".detailImageContainer"),item,!1,null,imageLoader,indicators)}var currentItem;$(document).on("pageinit","#publicSharedItemPage",function(){var page=this;$(page).on("click",".moreScenes",function(){ItemDetailPage.renderScenes(page,currentItem,null,null,!0)}).on("click",".morePeople",function(){ItemDetailPage.renderCast(page,currentItem,null,null,!0)}).on("click",".moreCriticReviews",function(){ItemDetailPage.renderCriticReviews(page,currentItem)})}).on("pageshow","#publicSharedItemPage",function(){var page=this;reload(page)})}); \ No newline at end of file diff --git a/dashboard-ui/scripts/site.js b/dashboard-ui/scripts/site.js index 90251670c0..ee584c18bf 100644 --- a/dashboard-ui/scripts/site.js +++ b/dashboard-ui/scripts/site.js @@ -1,2 +1,2 @@ -function getWindowLocationSearch(win){"use strict";var search=(win||window).location.search;if(!search){var index=window.location.href.indexOf("?");index!=-1&&(search=window.location.href.substring(index))}return search||""}function getParameterByName(name,url){"use strict";name=name.replace(/[\[]/,"\\[").replace(/[\]]/,"\\]");var regexS="[\\?&]"+name+"=([^&#]*)",regex=new RegExp(regexS,"i"),results=regex.exec(url||getWindowLocationSearch());return null==results?"":decodeURIComponent(results[1].replace(/\+/g," "))}function pageClassOn(eventName,className,fn){"use strict";document.addEventListener(eventName,function(e){var target=e.target;target.classList.contains(className)&&fn.call(target,e)})}function pageIdOn(eventName,id,fn){"use strict";document.addEventListener(eventName,function(e){var target=e.target;target.id==id&&fn.call(target,e)})}var Dashboard={isConnectMode:function(){if(AppInfo.isNativeApp)return!0;var url=window.location.href.toLowerCase();return url.indexOf("mediabrowser.tv")!=-1||url.indexOf("emby.media")!=-1},isRunningInCordova:function(){return"cordova"==window.appMode},onRequestFail:function(e,data){if(401==data.status&&"ParentalControl"==data.errorCode){var currentView=ViewManager.currentView();currentView&&!currentView.classList.contains(".standalonePage")&&Dashboard.alert({message:Globalize.translate("MessageLoggedOutParentalControl"),callback:function(){Dashboard.logout(!1)}})}},getCurrentUser:function(){return window.ApiClient.getCurrentUser()},serverAddress:function(){if(Dashboard.isConnectMode()){var apiClient=window.ApiClient;return apiClient?apiClient.serverAddress():null}var urlLower=window.location.href.toLowerCase(),index=urlLower.lastIndexOf("/web");if(index!=-1)return urlLower.substring(0,index);var loc=window.location,address=loc.protocol+"//"+loc.hostname;return loc.port&&(address+=":"+loc.port),address},getCurrentUserId:function(){var apiClient=window.ApiClient;return apiClient?apiClient.getCurrentUserId():null},onServerChanged:function(userId,accessToken,apiClient){apiClient=apiClient||window.ApiClient,window.ApiClient=apiClient},logout:function(logoutWithServer){function onLogoutDone(){var loginPage;Dashboard.isConnectMode()?(loginPage="connectlogin.html",window.ApiClient=null):loginPage="login.html",Dashboard.navigate(loginPage)}logoutWithServer===!1?onLogoutDone():ConnectionManager.logout().then(onLogoutDone)},getConfigurationPageUrl:function(name){return"configurationpage?name="+encodeURIComponent(name)},navigate:function(url,preserveQueryString){if(!url)throw new Error("url cannot be null or empty");var queryString=getWindowLocationSearch();return preserveQueryString&&queryString&&(url+=queryString),Emby.Page.show(url)},showLoadingMsg:function(){Dashboard.loadingVisible=!0,require(["loading"],function(loading){Dashboard.loadingVisible?loading.show():loading.hide()})},hideLoadingMsg:function(){Dashboard.loadingVisible=!1,require(["loading"],function(loading){Dashboard.loadingVisible?loading.show():loading.hide()})},processPluginConfigurationUpdateResult:function(){Dashboard.hideLoadingMsg(),require(["toast"],function(toast){toast(Globalize.translate("MessageSettingsSaved"))})},processServerConfigurationUpdateResult:function(result){Dashboard.hideLoadingMsg(),require(["toast"],function(toast){toast(Globalize.translate("MessageSettingsSaved"))})},processErrorResponse:function(response){Dashboard.hideLoadingMsg();var status=""+response.status;response.statusText&&(status=response.statusText),Dashboard.alert({title:status,message:response.headers?response.headers.get("X-Application-Error-Code"):null})},alert:function(options){return"string"==typeof options?void require(["toast"],function(toast){toast({text:options})}):void require(["alert"],function(alert){alert({title:options.title||Globalize.translate("HeaderAlert"),text:options.message}).then(options.callback||function(){})})},restartServer:function(){var apiClient=window.ApiClient;apiClient&&(Dashboard.suppressAjaxErrors=!0,Dashboard.showLoadingMsg(),apiClient.restartServer().then(function(){setTimeout(function(){Dashboard.reloadPageWhenServerAvailable()},250)},function(){Dashboard.suppressAjaxErrors=!1}))},reloadPageWhenServerAvailable:function(retryCount){var apiClient=window.ApiClient;apiClient&&apiClient.getJSON(apiClient.getUrl("System/Info")).then(function(info){info.HasPendingRestart?Dashboard.retryReload(retryCount):window.location.reload(!0)},function(){Dashboard.retryReload(retryCount)})},retryReload:function(retryCount){setTimeout(function(){retryCount=retryCount||0,retryCount++,retryCount<10?Dashboard.reloadPageWhenServerAvailable(retryCount):Dashboard.suppressAjaxErrors=!1},500)},showUserFlyout:function(){Dashboard.navigate("mypreferencesmenu.html")},getPluginSecurityInfo:function(){var apiClient=window.ApiClient;if(!apiClient)return Promise.reject();var cachedInfo=Dashboard.pluginSecurityInfo;return cachedInfo?Promise.resolve(cachedInfo):apiClient.ajax({type:"GET",url:apiClient.getUrl("Plugins/SecurityInfo"),dataType:"json",error:function(){}}).then(function(result){return Dashboard.pluginSecurityInfo=result,result})},resetPluginSecurityInfo:function(){Dashboard.pluginSecurityInfo=null},ensureHeader:function(page){page.classList.contains("standalonePage")&&!page.classList.contains("noHeaderPage")&&Dashboard.renderHeader(page)},renderHeader:function(page){var header=page.querySelector(".header");if(!header){var headerHtml="";headerHtml+='",page.insertAdjacentHTML("afterbegin",headerHtml)}},getToolsLinkHtml:function(item){var menuHtml="",pageIds=item.pageIds?item.pageIds.join(","):"";return pageIds=pageIds?' data-pageids="'+pageIds+'"':"",menuHtml+='",item.icon&&(menuHtml+=''+item.icon+""),menuHtml+='',menuHtml+=item.name,menuHtml+="",menuHtml+=""},getToolsMenuHtml:function(page){var i,length,item,items=Dashboard.getToolsMenuLinks(page),menuHtml="";for(menuHtml+='
',i=0,length=items.length;i
"),item.href?menuHtml+=Dashboard.getToolsLinkHtml(item):(menuHtml+='
',menuHtml+=item.name,menuHtml+="
");return menuHtml+="
"},getToolsMenuLinks:function(){return[{name:Globalize.translate("TabServer")},{name:Globalize.translate("TabDashboard"),href:"dashboard.html",pageIds:["dashboardPage"],icon:"dashboard"},{name:Globalize.translate("TabSettings"),href:"dashboardgeneral.html",pageIds:["dashboardGeneralPage"],icon:"settings"},{name:Globalize.translate("TabDevices"),href:"devices.html",pageIds:["devicesPage","devicePage","devicesUploadPage"],icon:"tablet"},{name:Globalize.translate("TabUsers"),href:"userprofiles.html",pageIds:["userProfilesPage","newUserPage","editUserPage","userLibraryAccessPage","userParentalControlPage","userPasswordPage"],icon:"people"},{name:"Emby Premiere",href:"supporterkey.html",pageIds:["supporterKeyPage"],icon:"star"},{divider:!0,name:Globalize.translate("TabLibrary"),href:"library.html",pageIds:["mediaLibraryPage","librarySettingsPage","libraryDisplayPage","metadataImagesConfigurationPage","metadataNfoPage"],icon:"folder",color:"#38c"},{name:Globalize.translate("TabSubtitles"),href:"metadatasubtitles.html",pageIds:["metadataSubtitlesPage"],icon:"closed_caption"},{name:Globalize.translate("TabPlayback"),icon:"play_circle_filled",color:"#E5342E",href:"cinemamodeconfiguration.html",pageIds:["cinemaModeConfigurationPage","playbackConfigurationPage","streamingSettingsPage"]},{name:Globalize.translate("TabSync"),icon:"sync",href:"syncactivity.html",pageIds:["syncActivityPage","syncJobPage","syncSettingsPage"],color:"#009688"},{name:Globalize.translate("TabTranscoding"),icon:"transform",href:"encodingsettings.html",pageIds:["encodingSettingsPage"]},{divider:!0,name:Globalize.translate("TabExtras")},{name:Globalize.translate("TabAutoOrganize"),color:"#01C0DD",href:"autoorganizelog.html",pageIds:["libraryFileOrganizerPage","libraryFileOrganizerSmartMatchPage","libraryFileOrganizerLogPage"],icon:"folder"},{name:Globalize.translate("DLNA"),href:"dlnasettings.html",pageIds:["dlnaSettingsPage","dlnaProfilesPage","dlnaProfilePage"],icon:"settings"},{name:Globalize.translate("TabLiveTV"),href:"livetvstatus.html",pageIds:["liveTvStatusPage","liveTvSettingsPage","liveTvTunerPage"],icon:"dvr"},{name:Globalize.translate("TabNotifications"),icon:"notifications",color:"brown",href:"notificationsettings.html",pageIds:["notificationSettingsPage","notificationSettingPage"]},{name:Globalize.translate("TabPlugins"),icon:"add_shopping_cart",color:"#9D22B1",href:"plugins.html",pageIds:["pluginsPage","pluginCatalogPage"]},{divider:!0,name:Globalize.translate("TabExpert")},{name:Globalize.translate("TabAdvanced"),icon:"settings",href:"dashboardhosting.html",color:"#F16834",pageIds:["dashboardHostingPage","serverSecurityPage"]},{name:Globalize.translate("TabLogs"),href:"log.html",pageIds:["logPage"],icon:"folder_open"},{name:Globalize.translate("TabScheduledTasks"),href:"scheduledtasks.html",pageIds:["scheduledTasksPage","scheduledTaskPage"],icon:"schedule"},{name:Globalize.translate("MetadataManager"),href:"edititemmetadata.html",pageIds:[],icon:"mode_edit"},{name:Globalize.translate("ButtonReports"),href:"reports.html",pageIds:[],icon:"insert_chart"}]},getSupportedRemoteCommands:function(){return["GoHome","GoToSettings","VolumeUp","VolumeDown","Mute","Unmute","ToggleMute","SetVolume","SetAudioStreamIndex","SetSubtitleStreamIndex","DisplayContent","GoToSearch","DisplayMessage","SetRepeatMode"]},capabilities:function(){var caps={PlayableMediaTypes:["Audio","Video"],SupportedCommands:Dashboard.getSupportedRemoteCommands(),SupportsPersistentIdentifier:Dashboard.isRunningInCordova(),SupportsMediaControl:!0,SupportedLiveMediaTypes:["Audio","Video"]};return Dashboard.isRunningInCordova()&&!browserInfo.safari&&(caps.SupportsSync=!0,caps.SupportsContentUploading=!0),caps},normalizeImageOptions:function(options){var setQuality;if(options.maxWidth&&(setQuality=!0),options.width&&(setQuality=!0),options.maxHeight&&(setQuality=!0),options.height&&(setQuality=!0),setQuality){var quality=90,isBackdrop="backdrop"==(options.type||"").toLowerCase();isBackdrop&&(quality-=10),browserInfo.slow&&(quality-=40),AppInfo.hasLowImageBandwidth&&!isBackdrop&&(quality-=10),options.quality=quality}}},AppInfo={};!function(){"use strict";function setAppInfo(){var isCordova=Dashboard.isRunningInCordova();AppInfo.enableAutoSave=browserInfo.touch,AppInfo.enableAppStorePolicy=isCordova,browserInfo.iOS&&(AppInfo.hasLowImageBandwidth=!0),isCordova?(AppInfo.isNativeApp=!0,browserInfo.android&&(AppInfo.supportsExternalPlayers=!0)):AppInfo.enableSupporterMembership=!0,AppInfo.supportsFileInput=!(AppInfo.isNativeApp&&browserInfo.android),AppInfo.supportsUserDisplayLanguageSetting=Dashboard.isConnectMode()}function initializeApiClient(apiClient){AppInfo.enableAppStorePolicy&&(apiClient.getAvailablePlugins=function(){return Promise.resolve([])},apiClient.getInstalledPlugins=function(){return Promise.resolve([])}),apiClient.normalizeImageOptions=Dashboard.normalizeImageOptions,Events.off(apiClient,"requestfail",Dashboard.onRequestFail),Events.on(apiClient,"requestfail",Dashboard.onRequestFail)}function onApiClientCreated(e,newApiClient){initializeApiClient(newApiClient),window.$&&($.ajax=newApiClient.ajax),require(["globalize"],function(globalize){newApiClient.downloadsTitleText=globalize.translate("sharedcomponents#Downloads")})}function defineConnectionManager(connectionManager){window.ConnectionManager=connectionManager,define("connectionManager",[],function(){return connectionManager})}function bindConnectionManagerEvents(connectionManager,events,userSettings){window.Events=events,events.on(ConnectionManager,"apiclientcreated",onApiClientCreated),connectionManager.currentApiClient=function(){if(!localApiClient){var server=connectionManager.getLastUsedServer();server&&(localApiClient=connectionManager.getApiClient(server.Id))}return localApiClient},connectionManager.onLocalUserSignedIn=function(user){return localApiClient=connectionManager.getApiClient(user.ServerId),window.ApiClient=localApiClient,userSettings.setUserInfo(user.Id,localApiClient)},events.on(connectionManager,"localusersignedout",function(){userSettings.setUserInfo(null,null)})}function createConnectionManager(){return new Promise(function(resolve,reject){require(["connectionManagerFactory","apphost","credentialprovider","events","userSettings"],function(connectionManagerExports,apphost,credentialProvider,events,userSettings){window.MediaBrowser=Object.assign(window.MediaBrowser||{},connectionManagerExports);var credentialProviderInstance=new credentialProvider,promises=[apphost.getSyncProfile(),apphost.appInfo()];Promise.all(promises).then(function(responses){var deviceProfile=responses[0],appInfo=responses[1],capabilities=Dashboard.capabilities();capabilities.DeviceProfile=deviceProfile;var connectionManager=new MediaBrowser.ConnectionManager(credentialProviderInstance,appInfo.appName,appInfo.appVersion,appInfo.deviceName,appInfo.deviceId,capabilities,window.devicePixelRatio);return defineConnectionManager(connectionManager),bindConnectionManagerEvents(connectionManager,events,userSettings),Dashboard.isConnectMode()?void resolve():(console.log("loading ApiClient singleton"),getRequirePromise(["apiclient"]).then(function(apiClientFactory){console.log("creating ApiClient singleton");var apiClient=new apiClientFactory(Dashboard.serverAddress(),appInfo.appName,appInfo.appVersion,appInfo.deviceName,appInfo.deviceId,window.devicePixelRatio);apiClient.enableAutomaticNetworking=!1,connectionManager.addApiClient(apiClient),require(["css!"+apiClient.getUrl("Branding/Css")]),window.ApiClient=apiClient,localApiClient=apiClient,console.log("loaded ApiClient singleton"),resolve()}))})})})}function setDocumentClasses(browser){var elem=document.documentElement;AppInfo.enableSupporterMembership||elem.classList.add("supporterMembershipDisabled")}function loadTheme(){var name=getParameterByName("theme");if(name)return void require(["themes/"+name+"/theme"]);if(!AppInfo.isNativeApp){var date=new Date,month=date.getMonth(),day=date.getDate();return 9==month&&day>=30?void require(["themes/halloween/theme"]):void 0}}function returnFirstDependency(obj){return obj}function getBowerPath(){return"bower_components"}function getLayoutManager(layoutManager,appHost){return appHost.getDefaultLayout&&(layoutManager.defaultLayout=appHost.getDefaultLayout()),layoutManager.init(),layoutManager}function getAppStorage(basePath){try{return localStorage.setItem("_test","0"),localStorage.removeItem("_test"),basePath+"/appstorage-localstorage"}catch(e){return basePath+"/appstorage-memory"}}function createWindowHeadroom(){var headroom=new Headroom([],{tolerance:{down:0,up:0},classes:{}});return headroom.init(),headroom}function getCastSenderApiLoader(){var ccLoaded=!1;return{load:function(){return ccLoaded?Promise.resolve():new Promise(function(resolve,reject){var fileref=document.createElement("script");fileref.setAttribute("type","text/javascript"),fileref.onload=function(){ccLoaded=!0,resolve()},fileref.setAttribute("src","https://www.gstatic.com/cv/js/sender/v1/cast_sender.js"),document.querySelector("head").appendChild(fileref)})}}}function getDummyCastSenderApiLoader(){return{load:function(){return window.chrome=window.chrome||{},Promise.resolve()}}}function createSharedAppFooter(appFooter){var footer=new appFooter({});return footer}function initRequire(){var urlArgs="v="+(window.dashboardVersion||(new Date).getDate()),bowerPath=getBowerPath(),apiClientBowerPath=bowerPath+"/emby-apiclient",embyWebComponentsBowerPath=bowerPath+"/emby-webcomponents",paths={velocity:bowerPath+"/velocity/velocity.min",vibrant:bowerPath+"/vibrant/dist/vibrant",staticBackdrops:embyWebComponentsBowerPath+"/staticbackdrops",ironCardList:"components/ironcardlist/ironcardlist",scrollThreshold:"components/scrollthreshold",playlisteditor:"components/playlisteditor/playlisteditor",medialibrarycreator:"components/medialibrarycreator/medialibrarycreator",medialibraryeditor:"components/medialibraryeditor/medialibraryeditor",howler:bowerPath+"/howlerjs/howler.min",sortable:bowerPath+"/Sortable/Sortable.min",isMobile:bowerPath+"/isMobile/isMobile.min",headroom:bowerPath+"/headroomjs/dist/headroom",masonry:bowerPath+"/masonry/dist/masonry.pkgd.min",humanedate:"components/humanedate",libraryBrowser:"scripts/librarybrowser",chromecasthelpers:"components/chromecasthelpers",events:apiClientBowerPath+"/events",credentialprovider:apiClientBowerPath+"/credentials",connectionManagerFactory:bowerPath+"/emby-apiclient/connectionmanager",visibleinviewport:embyWebComponentsBowerPath+"/visibleinviewport",browserdeviceprofile:embyWebComponentsBowerPath+"/browserdeviceprofile",browser:embyWebComponentsBowerPath+"/browser",inputManager:embyWebComponentsBowerPath+"/inputmanager",qualityoptions:embyWebComponentsBowerPath+"/qualityoptions",hammer:bowerPath+"/hammerjs/hammer.min",pageJs:embyWebComponentsBowerPath+"/pagejs/page",focusManager:embyWebComponentsBowerPath+"/focusmanager",datetime:embyWebComponentsBowerPath+"/datetime",globalize:embyWebComponentsBowerPath+"/globalize",itemHelper:embyWebComponentsBowerPath+"/itemhelper",itemShortcuts:embyWebComponentsBowerPath+"/shortcuts",serverNotifications:embyWebComponentsBowerPath+"/servernotifications",playbackManager:embyWebComponentsBowerPath+"/playback/playbackmanager",autoPlayDetect:embyWebComponentsBowerPath+"/playback/autoplaydetect",nowPlayingHelper:embyWebComponentsBowerPath+"/playback/nowplayinghelper",pluginManager:embyWebComponentsBowerPath+"/pluginmanager",packageManager:embyWebComponentsBowerPath+"/packagemanager"};paths.hlsjs=bowerPath+"/hlsjs/dist/hls.min",define("mediaSession",[embyWebComponentsBowerPath+"/playback/mediasession"]),define("webActionSheet",[embyWebComponentsBowerPath+"/actionsheet/actionsheet"],returnFirstDependency),Dashboard.isRunningInCordova()?paths.sharingMenu="cordova/sharingwidget":define("sharingMenu",[embyWebComponentsBowerPath+"/sharing/sharingmenu"],returnFirstDependency),paths.wakeonlan=apiClientBowerPath+"/wakeonlan",define("libjass",[bowerPath+"/libjass/libjass.min","css!"+bowerPath+"/libjass/libjass"],returnFirstDependency),window.IntersectionObserver?define("lazyLoader",[embyWebComponentsBowerPath+"/lazyloader/lazyloader-intersectionobserver"],returnFirstDependency):define("lazyLoader",[embyWebComponentsBowerPath+"/lazyloader/lazyloader-scroll"],returnFirstDependency),define("tunerPicker",["components/tunerpicker"],returnFirstDependency),define("mainTabsManager",["components/maintabsmanager"],returnFirstDependency),define("imageLoader",[embyWebComponentsBowerPath+"/images/imagehelper"],returnFirstDependency),define("appfooter",["components/appfooter/appfooter"],returnFirstDependency),define("dockedtabs",["components/dockedtabs/dockedtabs"],returnFirstDependency),define("directorybrowser",["components/directorybrowser/directorybrowser"],returnFirstDependency),define("metadataEditor",[embyWebComponentsBowerPath+"/metadataeditor/metadataeditor"],returnFirstDependency),define("personEditor",[embyWebComponentsBowerPath+"/metadataeditor/personeditor"],returnFirstDependency),define("playerSelectionMenu",[embyWebComponentsBowerPath+"/playback/playerselection"],returnFirstDependency),define("playerSettingsMenu",[embyWebComponentsBowerPath+"/playback/playersettingsmenu"],returnFirstDependency),define("brightnessOsd",[embyWebComponentsBowerPath+"/playback/brightnessosd"],returnFirstDependency),define("libraryMenu",["scripts/librarymenu"],returnFirstDependency),define("emby-collapse",[embyWebComponentsBowerPath+"/emby-collapse/emby-collapse"],returnFirstDependency),define("emby-button",[embyWebComponentsBowerPath+"/emby-button/emby-button"],returnFirstDependency),define("emby-itemscontainer",[embyWebComponentsBowerPath+"/emby-itemscontainer/emby-itemscontainer"],returnFirstDependency),define("emby-scroller",[embyWebComponentsBowerPath+"/emby-scroller/emby-scroller"],returnFirstDependency),define("emby-tabs",[embyWebComponentsBowerPath+"/emby-tabs/emby-tabs"],returnFirstDependency),define("itemHoverMenu",[embyWebComponentsBowerPath+"/itemhovermenu/itemhovermenu"],returnFirstDependency),define("multiSelect",[embyWebComponentsBowerPath+"/multiselect/multiselect"],returnFirstDependency),define("alphaPicker",[embyWebComponentsBowerPath+"/alphapicker/alphapicker"],returnFirstDependency),define("paper-icon-button-light",[embyWebComponentsBowerPath+"/emby-button/paper-icon-button-light"]),define("connectHelper",[embyWebComponentsBowerPath+"/emby-connect/connecthelper"],returnFirstDependency),define("emby-input",[embyWebComponentsBowerPath+"/emby-input/emby-input"],returnFirstDependency),define("emby-select",[embyWebComponentsBowerPath+"/emby-select/emby-select"],returnFirstDependency),define("emby-slider",[embyWebComponentsBowerPath+"/emby-slider/emby-slider"],returnFirstDependency),define("emby-checkbox",[embyWebComponentsBowerPath+"/emby-checkbox/emby-checkbox"],returnFirstDependency),define("emby-toggle",[embyWebComponentsBowerPath+"/emby-toggle/emby-toggle"],returnFirstDependency),define("emby-radio",[embyWebComponentsBowerPath+"/emby-radio/emby-radio"],returnFirstDependency),define("emby-textarea",[embyWebComponentsBowerPath+"/emby-textarea/emby-textarea"],returnFirstDependency),define("collectionEditor",[embyWebComponentsBowerPath+"/collectioneditor/collectioneditor"],returnFirstDependency),define("playlistEditor",[embyWebComponentsBowerPath+"/playlisteditor/playlisteditor"],returnFirstDependency),define("recordingCreator",[embyWebComponentsBowerPath+"/recordingcreator/recordingcreator"],returnFirstDependency),define("recordingEditor",[embyWebComponentsBowerPath+"/recordingcreator/recordingeditor"],returnFirstDependency),define("seriesRecordingEditor",[embyWebComponentsBowerPath+"/recordingcreator/seriesrecordingeditor"],returnFirstDependency),define("recordingFields",[embyWebComponentsBowerPath+"/recordingcreator/recordingfields"],returnFirstDependency),define("recordingButton",[embyWebComponentsBowerPath+"/recordingcreator/recordingbutton"],returnFirstDependency),define("recordingHelper",[embyWebComponentsBowerPath+"/recordingcreator/recordinghelper"],returnFirstDependency),define("subtitleEditor",[embyWebComponentsBowerPath+"/subtitleeditor/subtitleeditor"],returnFirstDependency),define("itemIdentifier",[embyWebComponentsBowerPath+"/itemidentifier/itemidentifier"],returnFirstDependency),define("mediaInfo",[embyWebComponentsBowerPath+"/mediainfo/mediainfo"],returnFirstDependency),define("itemContextMenu",[embyWebComponentsBowerPath+"/itemcontextmenu"],returnFirstDependency),define("imageEditor",[embyWebComponentsBowerPath+"/imageeditor/imageeditor"],returnFirstDependency),define("dom",[embyWebComponentsBowerPath+"/dom"],returnFirstDependency),define("fullscreen-doubleclick",[embyWebComponentsBowerPath+"/fullscreen/fullscreen-doubleclick"],returnFirstDependency),define("fullscreenManager",[embyWebComponentsBowerPath+"/fullscreen/fullscreenmanager","events"],returnFirstDependency),define("layoutManager",[embyWebComponentsBowerPath+"/layoutmanager","apphost"],getLayoutManager),define("playMenu",[embyWebComponentsBowerPath+"/playmenu"],returnFirstDependency),define("refreshDialog",[embyWebComponentsBowerPath+"/refreshdialog/refreshdialog"],returnFirstDependency),define("backdrop",[embyWebComponentsBowerPath+"/backdrop/backdrop"],returnFirstDependency),define("fetchHelper",[embyWebComponentsBowerPath+"/fetchhelper"],returnFirstDependency),define("roundCardStyle",["cardStyle","css!"+embyWebComponentsBowerPath+"/cardbuilder/roundcard"],returnFirstDependency),define("cardStyle",["css!"+embyWebComponentsBowerPath+"/cardbuilder/card"],returnFirstDependency),define("cardBuilder",[embyWebComponentsBowerPath+"/cardbuilder/cardbuilder"],returnFirstDependency),define("peoplecardbuilder",[embyWebComponentsBowerPath+"/cardbuilder/peoplecardbuilder"],returnFirstDependency),define("chaptercardbuilder",[embyWebComponentsBowerPath+"/cardbuilder/chaptercardbuilder"],returnFirstDependency),define("mouseManager",[embyWebComponentsBowerPath+"/input/mouse"],returnFirstDependency),define("flexStyles",["css!"+embyWebComponentsBowerPath+"/flexstyles"],returnFirstDependency),define("deleteHelper",[embyWebComponentsBowerPath+"/deletehelper"],returnFirstDependency),define("tvguide",[embyWebComponentsBowerPath+"/guide/guide"],returnFirstDependency),define("programStyles",["css!"+embyWebComponentsBowerPath+"/guide/programs"],returnFirstDependency),define("guide-settings-dialog",[embyWebComponentsBowerPath+"/guide/guide-settings"],returnFirstDependency),define("syncDialog",[embyWebComponentsBowerPath+"/sync/sync"],returnFirstDependency),define("syncToggle",[embyWebComponentsBowerPath+"/sync/synctoggle"],returnFirstDependency),define("syncJobEditor",[embyWebComponentsBowerPath+"/sync/syncjobeditor"],returnFirstDependency),define("syncJobList",[embyWebComponentsBowerPath+"/sync/syncjoblist"],returnFirstDependency),define("voiceDialog",[embyWebComponentsBowerPath+"/voice/voicedialog"],returnFirstDependency),define("voiceReceiver",[embyWebComponentsBowerPath+"/voice/voicereceiver"],returnFirstDependency),define("voiceProcessor",[embyWebComponentsBowerPath+"/voice/voiceprocessor"],returnFirstDependency),define("viewManager",[embyWebComponentsBowerPath+"/viewmanager/viewmanager"],function(viewManager){return window.ViewManager=viewManager,viewManager.dispatchPageEvents(!0),viewManager}),Dashboard.isRunningInCordova()&&window.MainActivity?define("shell",["cordova/shell"],returnFirstDependency):define("shell",[embyWebComponentsBowerPath+"/shell"],returnFirstDependency),define("sharingmanager",[embyWebComponentsBowerPath+"/sharing/sharingmanager"],returnFirstDependency),Dashboard.isRunningInCordova()?paths.apphost="cordova/apphost":paths.apphost="components/apphost",Dashboard.isRunningInCordova()&&window.MainActivity?(paths.appStorage="cordova/appstorage",paths.filesystem="cordova/filesystem"):(paths.appStorage=getAppStorage(apiClientBowerPath),paths.filesystem=embyWebComponentsBowerPath+"/filesystem");var sha1Path=bowerPath+"/cryptojslib/components/sha1-min",md5Path=bowerPath+"/cryptojslib/components/md5-min",shim={};shim[sha1Path]={deps:[bowerPath+"/cryptojslib/components/core-min"]},shim[md5Path]={deps:[bowerPath+"/cryptojslib/components/core-min"]},requirejs.config({waitSeconds:0,map:{"*":{css:bowerPath+"/emby-webcomponents/require/requirecss",html:bowerPath+"/emby-webcomponents/require/requirehtml",text:bowerPath+"/emby-webcomponents/require/requiretext"}},urlArgs:urlArgs,paths:paths,shim:shim}),define("cryptojs-sha1",[sha1Path]),define("cryptojs-md5",[md5Path]),define("jstree",[bowerPath+"/jstree/dist/jstree","css!thirdparty/jstree/themes/default/style.min.css"]),define("dashboardcss",["css!css/dashboard"]),define("jqmtable",["thirdparty/jquerymobile-1.4.5/jqm.table","css!thirdparty/jquerymobile-1.4.5/jqm.table.css"]),define("jqmwidget",["thirdparty/jquerymobile-1.4.5/jqm.widget"]),define("jqmslider",["thirdparty/jquerymobile-1.4.5/jqm.slider","css!thirdparty/jquerymobile-1.4.5/jqm.slider.css"]),define("jqmpopup",["thirdparty/jquerymobile-1.4.5/jqm.popup","css!thirdparty/jquerymobile-1.4.5/jqm.popup.css"]),define("jqmlistview",["css!thirdparty/jquerymobile-1.4.5/jqm.listview.css"]),define("jqmpanel",["thirdparty/jquerymobile-1.4.5/jqm.panel","css!thirdparty/jquerymobile-1.4.5/jqm.panel.css"]),define("slideshow",[embyWebComponentsBowerPath+"/slideshow/slideshow"],returnFirstDependency),define("fetch",[bowerPath+"/fetch/fetch"]),define("raf",[embyWebComponentsBowerPath+"/polyfills/raf"]),define("functionbind",[embyWebComponentsBowerPath+"/polyfills/bind"]),define("arraypolyfills",[embyWebComponentsBowerPath+"/polyfills/array"]),define("objectassign",[embyWebComponentsBowerPath+"/polyfills/objectassign"]),define("clearButtonStyle",["css!"+embyWebComponentsBowerPath+"/clearbutton"]),define("userdataButtons",[embyWebComponentsBowerPath+"/userdatabuttons/userdatabuttons"],returnFirstDependency),define("listView",[embyWebComponentsBowerPath+"/listview/listview"],returnFirstDependency),define("listViewStyle",["css!"+embyWebComponentsBowerPath+"/listview/listview"],returnFirstDependency),define("formDialogStyle",["css!"+embyWebComponentsBowerPath+"/formdialog"],returnFirstDependency),define("indicators",[embyWebComponentsBowerPath+"/indicators/indicators"],returnFirstDependency),define("registrationServices",[embyWebComponentsBowerPath+"/registrationservices/registrationservices"],returnFirstDependency),Dashboard.isRunningInCordova()?(define("iapManager",["cordova/iap"],returnFirstDependency),define("fileupload",["cordova/fileupload"],returnFirstDependency)):(define("iapManager",["components/iap"],returnFirstDependency),define("fileupload",[apiClientBowerPath+"/fileupload"],returnFirstDependency)),define("connectionmanager",[apiClientBowerPath+"/connectionmanager"]),define("cameraRoll",[apiClientBowerPath+"/cameraroll"],returnFirstDependency),define("contentuploader",[apiClientBowerPath+"/sync/contentuploader"],returnFirstDependency),define("serversync",[apiClientBowerPath+"/sync/serversync"],returnFirstDependency),define("multiserversync",[apiClientBowerPath+"/sync/multiserversync"],returnFirstDependency),define("mediasync",[apiClientBowerPath+"/sync/mediasync"],returnFirstDependency),define("localsync",[apiClientBowerPath+"/sync/localsync"],returnFirstDependency),define("idb",[embyWebComponentsBowerPath+"/idb"],returnFirstDependency),define("itemrepository",[apiClientBowerPath+"/sync/itemrepository"],returnFirstDependency),define("useractionrepository",[apiClientBowerPath+"/sync/useractionrepository"],returnFirstDependency),self.Windows?(define("bgtaskregister",["environments/windows-uwp/bgtaskregister"],returnFirstDependency),define("transfermanager",["environments/windows-uwp/transfermanager"],returnFirstDependency),define("filerepository",["environments/windows-uwp/filerepository"],returnFirstDependency)):(define("transfermanager",[apiClientBowerPath+"/sync/transfermanager"],returnFirstDependency),define("filerepository",[apiClientBowerPath+"/sync/filerepository"],returnFirstDependency)),define("swiper",[bowerPath+"/Swiper/dist/js/swiper.min","css!"+bowerPath+"/Swiper/dist/css/swiper.min"],returnFirstDependency),define("scroller",[embyWebComponentsBowerPath+"/scroller/smoothscroller"],returnFirstDependency),define("toast",[embyWebComponentsBowerPath+"/toast/toast"],returnFirstDependency),define("scrollHelper",[embyWebComponentsBowerPath+"/scrollhelper"],returnFirstDependency),define("touchHelper",[embyWebComponentsBowerPath+"/touchhelper"],returnFirstDependency),define("appSettings",[embyWebComponentsBowerPath+"/appsettings"],updateAppSettings),define("userSettings",[embyWebComponentsBowerPath+"/usersettings/usersettings"],returnFirstDependency),define("userSettingsBuilder",[embyWebComponentsBowerPath+"/usersettings/usersettingsbuilder"],returnFirstDependency),define("material-icons",["css!"+embyWebComponentsBowerPath+"/fonts/material-icons/style"]),define("robotoFont",["css!"+embyWebComponentsBowerPath+"/fonts/roboto/style"]),define("scrollStyles",["css!"+embyWebComponentsBowerPath+"/scrollstyles"]),define("navdrawer",["components/navdrawer/navdrawer"],returnFirstDependency),define("viewcontainer",["components/viewcontainer-lite","css!"+embyWebComponentsBowerPath+"/viewmanager/viewcontainer-lite"],returnFirstDependency),define("queryString",[bowerPath+"/query-string/index"],function(){ -return queryString}),define("jQuery",[bowerPath+"/jquery/dist/jquery.slim.min"],function(){return window.ApiClient&&(jQuery.ajax=ApiClient.ajax),jQuery}),define("fnchecked",["legacy/fnchecked"]),define("dialogHelper",[embyWebComponentsBowerPath+"/dialoghelper/dialoghelper"],function(dialoghelper){return dialoghelper.setOnOpen(onDialogOpen),dialoghelper}),define("inputmanager",["inputManager"],returnFirstDependency),define("historyManager",["embyRouter"],returnFirstDependency),define("headroom-window",["headroom"],createWindowHeadroom),define("appfooter-shared",["appfooter"],createSharedAppFooter),define("skinManager",[],function(){return{loadUserSkin:function(){Emby.Page.show("/home.html")}}}),define("connectionManager",[],function(){return ConnectionManager}),define("apiClientResolver",[],function(){return function(){return window.ApiClient}}),define("embyRouter",[embyWebComponentsBowerPath+"/router"],function(embyRouter){function showItem(item,serverId,options){if("string"==typeof item)require(["connectionManager"],function(connectionManager){var apiClient=connectionManager.currentApiClient();apiClient.getItem(apiClient.getCurrentUserId(),item).then(function(item){embyRouter.showItem(item,options)})});else{2==arguments.length&&(options=arguments[1]);var context=options?options.context:null;Emby.Page.show("/"+LibraryBrowser.getHref(item,context),{item:item})}}return embyRouter.showLocalLogin=function(apiClient,serverId,manualLogin){Dashboard.navigate("login.html?serverid="+serverId)},embyRouter.showVideoOsd=function(){return Dashboard.navigate("videoosd.html")},embyRouter.showSelectServer=function(){Dashboard.isConnectMode()?Dashboard.navigate("selectserver.html"):Dashboard.navigate("login.html")},embyRouter.showWelcome=function(){Dashboard.isConnectMode()?Dashboard.navigate("connectlogin.html?mode=welcome"):Dashboard.navigate("login.html")},embyRouter.showSettings=function(){Dashboard.navigate("mypreferencesmenu.html")},embyRouter.showGuide=function(){Dashboard.navigate("livetv.html?tab=1")},embyRouter.goHome=function(){Dashboard.navigate("home.html")},embyRouter.showSearch=function(){Dashboard.navigate("search.html")},embyRouter.showLiveTV=function(){Dashboard.navigate("livetv.html")},embyRouter.showRecordedTV=function(){Dashboard.navigate("livetv.html?tab=3")},embyRouter.showFavorites=function(){Dashboard.navigate("home.html?tab=1")},embyRouter.showSettings=function(){Dashboard.navigate("mypreferencesmenu.html")},embyRouter.setTitle=function(){},embyRouter.showItem=showItem,embyRouter})}function updateAppSettings(appSettings){return appSettings.enableExternalPlayers=function(val){return null!=val&&appSettings.set("externalplayers",val.toString()),"true"===appSettings.get("externalplayers")},appSettings}function onDialogOpen(dlg){dlg.classList.contains("background-theme-a")||dlg.classList.contains("actionSheet")||(dlg.classList.add("background-theme-b"),dlg.classList.add("ui-body-b"))}function initRequireWithBrowser(browser){var bowerPath=getBowerPath(),apiClientBowerPath=bowerPath+"/emby-apiclient",embyWebComponentsBowerPath=bowerPath+"/emby-webcomponents";Dashboard.isRunningInCordova()&&browser.android?define("apiclient",["bower_components/emby-apiclient/apiclient"],returnFirstDependency):define("apiclient",["bower_components/emby-apiclient/apiclient"],returnFirstDependency),Dashboard.isRunningInCordova()&&browser.safari?define("actionsheet",["cordova/actionsheet"],returnFirstDependency):define("actionsheet",["webActionSheet"],returnFirstDependency),"registerElement"in document?define("registerElement",[]):browser.msie?define("registerElement",[bowerPath+"/webcomponentsjs/webcomponents-lite.min.js"]):define("registerElement",[bowerPath+"/document-register-element/build/document-register-element"]),window.chrome&&window.chrome.sockets?define("serverdiscovery",[apiClientBowerPath+"/serverdiscovery-chrome"],returnFirstDependency):Dashboard.isRunningInCordova()&&browser.android?define("serverdiscovery",["cordova/serverdiscovery"],returnFirstDependency):Dashboard.isRunningInCordova()&&browser.safari?define("serverdiscovery",[apiClientBowerPath+"/serverdiscovery-chrome"],returnFirstDependency):define("serverdiscovery",[apiClientBowerPath+"/serverdiscovery"],returnFirstDependency),Dashboard.isRunningInCordova()&&browser.safari?define("imageFetcher",["cordova/imagestore"],returnFirstDependency):define("imageFetcher",[embyWebComponentsBowerPath+"/images/basicimagefetcher"],returnFirstDependency);var preferNativeAlerts=browser.tv;preferNativeAlerts&&window.alert?define("alert",[embyWebComponentsBowerPath+"/alert/nativealert"],returnFirstDependency):define("alert",[embyWebComponentsBowerPath+"/alert/alert"],returnFirstDependency),define("dialog",[embyWebComponentsBowerPath+"/dialog/dialog"],returnFirstDependency),preferNativeAlerts&&window.confirm?define("confirm",[embyWebComponentsBowerPath+"/confirm/nativeconfirm"],returnFirstDependency):define("confirm",[embyWebComponentsBowerPath+"/confirm/confirm"],returnFirstDependency);var preferNativePrompt=preferNativeAlerts||browser.xboxOne;preferNativePrompt&&window.confirm?define("prompt",[embyWebComponentsBowerPath+"/prompt/nativeprompt"],returnFirstDependency):define("prompt",[embyWebComponentsBowerPath+"/prompt/prompt"],returnFirstDependency),browser.tizen||browser.operaTv?define("loading",[embyWebComponentsBowerPath+"/loading/loading-legacy"],returnFirstDependency):define("loading",[embyWebComponentsBowerPath+"/loading/loading-lite"],returnFirstDependency),define("multi-download",[embyWebComponentsBowerPath+"/multidownload"],returnFirstDependency),Dashboard.isRunningInCordova()&&browser.android?(define("fileDownloader",["cordova/filedownloader"],returnFirstDependency),define("localassetmanager",["cordova/localassetmanager"],returnFirstDependency)):(define("fileDownloader",[embyWebComponentsBowerPath+"/filedownloader"],returnFirstDependency),define("localassetmanager",[apiClientBowerPath+"/localassetmanager"],returnFirstDependency)),define("screenLock",[embyWebComponentsBowerPath+"/resourcelocks/nullresourcelock"],returnFirstDependency),Dashboard.isRunningInCordova()&&browser.android?(define("resourceLockManager",[embyWebComponentsBowerPath+"/resourcelocks/resourcelockmanager"],returnFirstDependency),define("wakeLock",["cordova/wakelock"],returnFirstDependency),define("networkLock",["cordova/networklock"],returnFirstDependency)):(define("resourceLockManager",[embyWebComponentsBowerPath+"/resourcelocks/resourcelockmanager"],returnFirstDependency),define("wakeLock",[embyWebComponentsBowerPath+"/resourcelocks/nullresourcelock"],returnFirstDependency),define("networkLock",[embyWebComponentsBowerPath+"/resourcelocks/nullresourcelock"],returnFirstDependency)),Dashboard.isRunningInCordova()?define("castSenderApiLoader",[],getDummyCastSenderApiLoader):define("castSenderApiLoader",[],getCastSenderApiLoader)}function init(){Dashboard.isRunningInCordova()&&browserInfo.android&&define("nativedirectorychooser",["cordova/nativedirectorychooser"]),Dashboard.isRunningInCordova()&&browserInfo.android?define("localsync",["cordova/localsync"],returnFirstDependency):define("localsync",["scripts/localsync"],returnFirstDependency),define("livetvcss",["css!css/livetv.css"]),define("detailtablecss",["css!css/detailtable.css"]),define("autoorganizetablecss",["css!css/autoorganizetable.css"]),define("buttonenabled",["legacy/buttonenabled"]),initAfterDependencies()}function getRequirePromise(deps){return new Promise(function(resolve,reject){require(deps,resolve)})}function initAfterDependencies(){var list=[];window.fetch||list.push("fetch"),"function"!=typeof Object.assign&&list.push("objectassign"),Array.prototype.filter||list.push("arraypolyfills"),Function.prototype.bind||list.push("functionbind"),window.requestAnimationFrame||list.push("raf"),require(list,function(){createConnectionManager().then(function(){console.log("initAfterDependencies promises resolved"),require(["globalize"],function(globalize){window.Globalize=globalize,Promise.all([loadCoreDictionary(globalize),loadSharedComponentsDictionary(globalize)]).then(onGlobalizeInit)})})})}function loadSharedComponentsDictionary(globalize){var baseUrl="bower_components/emby-webcomponents/strings/",languages=["ar","bg-bg","ca","cs","da","de","el","en-gb","en-us","es-ar","es-mx","es","fi","fr","gsw","he","hr","hu","id","it","kk","ko","ms","nb","nl","pl","pt-br","pt-pt","ro","ru","sk","sl-si","sv","tr","uk","vi","zh-cn","zh-hk","zh-tw"],translations=languages.map(function(i){return{lang:i,path:baseUrl+i+".json"}});globalize.loadStrings({name:"sharedcomponents",translations:translations})}function loadCoreDictionary(globalize){var baseUrl="strings/",languages=["ar","bg-bg","ca","cs","da","de","el","en-gb","en-us","es-ar","es-mx","es","fa","fi","fr","gsw","he","hr","hu","id","it","kk","ko","ms","nb","nl","pl","pt-br","pt-pt","ro","ru","sl-si","sv","tr","uk","vi","zh-cn","zh-hk","zh-tw"],translations=languages.map(function(i){return{lang:i,path:baseUrl+i+".json"}});return globalize.defaultModule("core"),globalize.loadStrings({name:"core",translations:translations})}function onGlobalizeInit(){document.title=Globalize.translateDocument(document.title,"core"),require(["apphost"],function(appHost){loadPlugins([],appHost,browserInfo).then(onAppReady)})}function defineRoute(newRoute,dictionary){var baseRoute=Emby.Page.baseUrl(),path=newRoute.path;path=path.replace(baseRoute,""),console.log("Defining route: "+path),newRoute.dictionary=newRoute.dictionary||dictionary||"core",Emby.Page.addRoute(path,newRoute)}function defineCoreRoutes(appHost){console.log("Defining core routes"),defineRoute({path:"/addplugin.html",dependencies:[],autoFocus:!1,roles:"admin",controller:"scripts/addpluginpage"}),defineRoute({path:"/appservices.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/autoorganizelog.html",dependencies:["scripts/taskbutton","autoorganizetablecss"],controller:"dashboard/autoorganizelog",roles:"admin"}),defineRoute({path:"/autoorganizesmart.html",dependencies:["emby-button"],controller:"dashboard/autoorganizesmart",autoFocus:!1,roles:"admin"}),defineRoute({path:"/autoorganizetv.html",dependencies:["emby-checkbox","emby-input","emby-button","emby-select","emby-collapse"],controller:"dashboard/autoorganizetv",autoFocus:!1,roles:"admin"}),defineRoute({path:"/channelitems.html",dependencies:[],autoFocus:!1,transition:"fade"}),defineRoute({path:"/channels.html",dependencies:[],autoFocus:!1,transition:"fade",controller:"scripts/channels"}),defineRoute({path:"/channelsettings.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/cinemamodeconfiguration.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/connectlogin.html",dependencies:["emby-button","emby-input"],autoFocus:!1,anonymous:!0,startup:!0,controller:"scripts/connectlogin"}),defineRoute({path:"/dashboard.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/dashboardgeneral.html",controller:"dashboard/dashboardgeneral",autoFocus:!1,roles:"admin"}),defineRoute({path:"/dashboardhosting.html",dependencies:["emby-input","emby-button"],autoFocus:!1,roles:"admin",controller:"dashboard/dashboardhosting"}),defineRoute({path:"/device.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/devices.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/devicesupload.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/dlnaprofile.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/dlnaprofiles.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/dlnaserversettings.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/dlnasettings.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/edititemmetadata.html",dependencies:[],controller:"scripts/edititemmetadata",autoFocus:!1}),defineRoute({path:"/encodingsettings.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/forgotpassword.html",dependencies:["emby-input","emby-button"],anonymous:!0,startup:!0,controller:"scripts/forgotpassword"}),defineRoute({path:"/forgotpasswordpin.html",dependencies:["emby-input","emby-button"],autoFocus:!1,anonymous:!0,startup:!0,controller:"scripts/forgotpasswordpin"}),defineRoute({path:"/gamegenres.html",dependencies:[],autoFocus:!1}),defineRoute({path:"/games.html",dependencies:[],autoFocus:!1}),defineRoute({path:"/gamesrecommended.html",dependencies:[],autoFocus:!1}),defineRoute({path:"/gamestudios.html",dependencies:[],autoFocus:!1}),defineRoute({path:"/gamesystems.html",dependencies:[],autoFocus:!1}),defineRoute({path:"/home.html",dependencies:[],autoFocus:!1,controller:"scripts/indexpage",transition:"fade",type:"home"}),defineRoute({path:"/index.html",dependencies:[],autoFocus:!1,isDefaultRoute:!0}),defineRoute({path:"/itemdetails.html",dependencies:["emby-button","scripts/livetvcomponents","paper-icon-button-light","emby-itemscontainer"],controller:"scripts/itemdetailpage",autoFocus:!1,transition:"fade"}),defineRoute({path:"/itemlist.html",dependencies:[],autoFocus:!1,controller:"scripts/itemlistpage",transition:"fade"}),defineRoute({path:"/kids.html",dependencies:[],autoFocus:!1}),defineRoute({path:"/library.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/librarydisplay.html",dependencies:[],autoFocus:!1,roles:"admin",controller:"dashboard/librarydisplay"}),defineRoute({path:"/librarysettings.html",dependencies:["emby-collapse","emby-input","emby-button","emby-select"],autoFocus:!1,roles:"admin",controller:"dashboard/librarysettings"}),defineRoute({path:"/livetv.html",dependencies:["emby-button","livetvcss"],controller:"scripts/livetvsuggested",autoFocus:!1,transition:"fade"}),defineRoute({path:"/livetvguideprovider.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/livetvitems.html",dependencies:[],autoFocus:!1,controller:"scripts/livetvitems"}),defineRoute({path:"/livetvseriestimer.html",dependencies:["emby-checkbox","emby-input","emby-button","emby-collapse","scripts/livetvcomponents","scripts/livetvseriestimer","livetvcss"],autoFocus:!1,controller:"scripts/livetvseriestimer"}),defineRoute({path:"/livetvsettings.html",dependencies:[],autoFocus:!1}),defineRoute({path:"/livetvstatus.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/livetvtuner.html",dependencies:[],autoFocus:!1,roles:"admin",controller:"dashboard/livetvtuner"}),defineRoute({path:"/log.html",dependencies:["emby-checkbox"],roles:"admin",controller:"dashboard/logpage"}),defineRoute({path:"/login.html",dependencies:["emby-button","emby-input"],autoFocus:!1,anonymous:!0,startup:!0,controller:"scripts/loginpage"}),defineRoute({path:"/metadataadvanced.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/metadataimages.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/metadatanfo.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/metadatasubtitles.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/movies.html",dependencies:["emby-button"],autoFocus:!1,controller:"scripts/moviesrecommended",transition:"fade"}),defineRoute({path:"/music.html",dependencies:[],controller:"scripts/musicrecommended",autoFocus:!1,transition:"fade"}),defineRoute({path:"/mypreferencesdisplay.html",dependencies:["emby-checkbox","emby-button","emby-select"],autoFocus:!1,transition:"fade",controller:"scripts/mypreferencesdisplay"}),defineRoute({path:"/mypreferenceshome.html",dependencies:["emby-checkbox","emby-button","emby-select"],autoFocus:!1,transition:"fade",controller:"scripts/mypreferenceshome"}),defineRoute({path:"/mypreferenceslanguages.html",dependencies:["emby-button","emby-checkbox","emby-select"],autoFocus:!1,transition:"fade",controller:"scripts/mypreferenceslanguages"}),defineRoute({path:"/mypreferencesmenu.html",dependencies:["emby-button"],autoFocus:!1,transition:"fade",controller:"scripts/mypreferencescommon"}),defineRoute({path:"/myprofile.html",dependencies:["emby-button","emby-collapse","emby-checkbox","emby-input"],autoFocus:!1,transition:"fade",controller:"scripts/myprofile"}),appHost.supports("sync")&&defineRoute({path:"/offline/offline.html",transition:"false",controller:"offline/offline",dependencies:[],anonymous:!0,startup:!1}),defineRoute({path:"/mysync.html",dependencies:[],autoFocus:!1,transition:"fade",controller:"scripts/mysync"}),defineRoute({path:"/camerauploadsettings.html",dependencies:[],autoFocus:!1,transition:"fade",controller:"scripts/camerauploadsettings"}),defineRoute({path:"/mysyncjob.html",dependencies:[],autoFocus:!1,transition:"fade",controller:"scripts/syncjob"}),defineRoute({path:"/mysyncsettings.html",dependencies:["emby-checkbox","emby-input","emby-button","paper-icon-button-light"],autoFocus:!1,transition:"fade",controller:"scripts/mysyncsettings"}),defineRoute({path:"/notificationlist.html",dependencies:[],autoFocus:!1}),defineRoute({path:"/notificationsetting.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/notificationsettings.html",controller:"scripts/notificationsettings",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/nowplaying.html",dependencies:["paper-icon-button-light","emby-slider","emby-button","emby-input","emby-itemscontainer"],controller:"scripts/nowplayingpage",autoFocus:!1,transition:"fade",fullscreen:!0,supportsThemeMedia:!0}),defineRoute({path:"/photos.html",dependencies:[],autoFocus:!1,transition:"fade"}),defineRoute({path:"/playbackconfiguration.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/playlists.html",dependencies:[],autoFocus:!1,transition:"fade",controller:"scripts/playlists"}),defineRoute({path:"/plugincatalog.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/plugins.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/reports.html",dependencies:[],autoFocus:!1}),defineRoute({path:"/scheduledtask.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/scheduledtasks.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/search.html",dependencies:[],controller:"scripts/searchpage"}),defineRoute({path:"/secondaryitems.html",dependencies:[],autoFocus:!1,controller:"scripts/secondaryitems"}),defineRoute({path:"/selectserver.html",dependencies:["listViewStyle","emby-button"],autoFocus:!1,anonymous:!0,startup:!0,controller:"scripts/selectserver"}),defineRoute({path:"/serversecurity.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/shared.html",dependencies:[],autoFocus:!1,anonymous:!0}),defineRoute({path:"/streamingsettings.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/support.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/supporterkey.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/syncactivity.html",dependencies:[],autoFocus:!1,controller:"scripts/syncactivity"}),defineRoute({path:"/syncsettings.html",dependencies:[],autoFocus:!1}),defineRoute({path:"/tv.html",dependencies:["paper-icon-button-light","emby-button"],autoFocus:!1,controller:"scripts/tvrecommended",transition:"fade"}),defineRoute({path:"/useredit.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/userlibraryaccess.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/usernew.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/userparentalcontrol.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/userpassword.html",dependencies:["emby-input","emby-button","emby-checkbox"],autoFocus:!1,controller:"scripts/userpasswordpage"}),defineRoute({path:"/userprofiles.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/wizardagreement.html",dependencies:["dashboardcss"],autoFocus:!1,anonymous:!0}),defineRoute({path:"/wizardcomponents.html",dependencies:["dashboardcss","emby-button","emby-input","emby-select"],autoFocus:!1,anonymous:!0,controller:"dashboard/wizardcomponents"}),defineRoute({path:"/wizardfinish.html",dependencies:["emby-button","dashboardcss"],autoFocus:!1,anonymous:!0,controller:"dashboard/wizardfinishpage"}),defineRoute({path:"/wizardlibrary.html",dependencies:["dashboardcss"],autoFocus:!1,anonymous:!0}),defineRoute({path:"/wizardsettings.html",dependencies:["dashboardcss"],autoFocus:!1,anonymous:!0}),defineRoute({path:"/wizardstart.html",dependencies:["dashboardcss"],autoFocus:!1,anonymous:!0}),defineRoute({path:"/wizarduser.html",dependencies:["dashboardcss","emby-input"],autoFocus:!1,anonymous:!0}),defineRoute({path:"/videoosd.html",dependencies:[],transition:"fade",controller:"scripts/videoosd",autoFocus:!1,type:"video-osd",supportsThemeMedia:!0,fullscreen:!0}),defineRoute({path:"/configurationpage",dependencies:["jQuery"],autoFocus:!1,enableCache:!1,enableContentQueryString:!0,roles:"admin"}),defineRoute({path:"/",isDefaultRoute:!0,autoFocus:!1,dependencies:[]})}function loadPlugins(externalPlugins,appHost,browser,shell){console.log("Loading installed plugins");var list=["bower_components/emby-webcomponents/playback/playbackvalidation","bower_components/emby-webcomponents/playback/playaccessvalidation"];Dashboard.isRunningInCordova()&&browser.android?(document.createElement("audio").canPlayType("audio/flac").replace(/no/,"")&&document.createElement("audio").canPlayType('audio/ogg; codecs="opus"').replace(/no/,"")?window.VlcAudio=!0:window.VlcAudio=!0,list.push("cordova/vlcplayer")):Dashboard.isRunningInCordova()&&browser.safari&&list.push("cordova/audioplayer"),list.push("bower_components/emby-webcomponents/htmlaudioplayer/plugin"),Dashboard.isRunningInCordova()&&browser.safari&&list.push("cordova/chromecast"),Dashboard.isRunningInCordova()&&browser.android&&list.push("cordova/externalplayer"),list.push("bower_components/emby-webcomponents/htmlvideoplayer/plugin"),appHost.supports("remotecontrol")&&(list.push("bower_components/emby-webcomponents/sessionplayer"),browser.chrome&&list.push("bower_components/emby-webcomponents/chromecastplayer")),list.push("bower_components/emby-webcomponents/youtubeplayer/plugin");for(var i=0,length=externalPlugins.length;i':''),headerHtml+="",headerHtml+="
",page.insertAdjacentHTML("afterbegin",headerHtml)}},getToolsLinkHtml:function(item){var menuHtml="",pageIds=item.pageIds?item.pageIds.join(","):"";return pageIds=pageIds?' data-pageids="'+pageIds+'"':"",menuHtml+='",item.icon&&(menuHtml+=''+item.icon+""),menuHtml+='',menuHtml+=item.name,menuHtml+="",menuHtml+=""},getToolsMenuHtml:function(page){var i,length,item,items=Dashboard.getToolsMenuLinks(page),menuHtml="";for(menuHtml+='
',i=0,length=items.length;i
"),item.href?menuHtml+=Dashboard.getToolsLinkHtml(item):(menuHtml+='
',menuHtml+=item.name,menuHtml+="
");return menuHtml+="
"},getToolsMenuLinks:function(){return[{name:Globalize.translate("TabServer")},{name:Globalize.translate("TabDashboard"),href:"dashboard.html",pageIds:["dashboardPage"],icon:"dashboard"},{name:Globalize.translate("TabSettings"),href:"dashboardgeneral.html",pageIds:["dashboardGeneralPage"],icon:"settings"},{name:Globalize.translate("TabDevices"),href:"devices.html",pageIds:["devicesPage","devicePage","devicesUploadPage"],icon:"tablet"},{name:Globalize.translate("TabUsers"),href:"userprofiles.html",pageIds:["userProfilesPage","newUserPage","editUserPage","userLibraryAccessPage","userParentalControlPage","userPasswordPage"],icon:"people"},{name:"Emby Premiere",href:"supporterkey.html",pageIds:["supporterKeyPage"],icon:"star"},{divider:!0,name:Globalize.translate("TabLibrary"),href:"library.html",pageIds:["mediaLibraryPage","librarySettingsPage","libraryDisplayPage","metadataImagesConfigurationPage","metadataNfoPage"],icon:"folder",color:"#38c"},{name:Globalize.translate("TabSubtitles"),href:"metadatasubtitles.html",pageIds:["metadataSubtitlesPage"],icon:"closed_caption"},{name:Globalize.translate("TabPlayback"),icon:"play_circle_filled",color:"#E5342E",href:"cinemamodeconfiguration.html",pageIds:["cinemaModeConfigurationPage","playbackConfigurationPage","streamingSettingsPage"]},{name:Globalize.translate("TabSync"),icon:"sync",href:"syncactivity.html",pageIds:["syncActivityPage","syncJobPage","syncSettingsPage"],color:"#009688"},{name:Globalize.translate("TabTranscoding"),icon:"transform",href:"encodingsettings.html",pageIds:["encodingSettingsPage"]},{divider:!0,name:Globalize.translate("TabExtras")},{name:Globalize.translate("TabAutoOrganize"),color:"#01C0DD",href:"autoorganizelog.html",pageIds:["libraryFileOrganizerPage","libraryFileOrganizerSmartMatchPage","libraryFileOrganizerLogPage"],icon:"folder"},{name:Globalize.translate("DLNA"),href:"dlnasettings.html",pageIds:["dlnaSettingsPage","dlnaProfilesPage","dlnaProfilePage"],icon:"settings"},{name:Globalize.translate("TabLiveTV"),href:"livetvstatus.html",pageIds:["liveTvStatusPage","liveTvSettingsPage","liveTvTunerPage"],icon:"dvr"},{name:Globalize.translate("TabNotifications"),icon:"notifications",color:"brown",href:"notificationsettings.html",pageIds:["notificationSettingsPage","notificationSettingPage"]},{name:Globalize.translate("TabPlugins"),icon:"add_shopping_cart",color:"#9D22B1",href:"plugins.html",pageIds:["pluginsPage","pluginCatalogPage"]},{divider:!0,name:Globalize.translate("TabExpert")},{name:Globalize.translate("TabAdvanced"),icon:"settings",href:"dashboardhosting.html",color:"#F16834",pageIds:["dashboardHostingPage","serverSecurityPage"]},{name:Globalize.translate("TabLogs"),href:"log.html",pageIds:["logPage"],icon:"folder_open"},{name:Globalize.translate("TabScheduledTasks"),href:"scheduledtasks.html",pageIds:["scheduledTasksPage","scheduledTaskPage"],icon:"schedule"},{name:Globalize.translate("MetadataManager"),href:"edititemmetadata.html",pageIds:[],icon:"mode_edit"},{name:Globalize.translate("ButtonReports"),href:"reports.html",pageIds:[],icon:"insert_chart"}]},getSupportedRemoteCommands:function(){return["GoHome","GoToSettings","VolumeUp","VolumeDown","Mute","Unmute","ToggleMute","SetVolume","SetAudioStreamIndex","SetSubtitleStreamIndex","DisplayContent","GoToSearch","DisplayMessage","SetRepeatMode"]},capabilities:function(){var caps={PlayableMediaTypes:["Audio","Video"],SupportedCommands:Dashboard.getSupportedRemoteCommands(),SupportsPersistentIdentifier:Dashboard.isRunningInCordova(),SupportsMediaControl:!0,SupportedLiveMediaTypes:["Audio","Video"]};return Dashboard.isRunningInCordova()&&!browserInfo.safari&&(caps.SupportsSync=!0,caps.SupportsContentUploading=!0),caps},normalizeImageOptions:function(options){var setQuality;if(options.maxWidth&&(setQuality=!0),options.width&&(setQuality=!0),options.maxHeight&&(setQuality=!0),options.height&&(setQuality=!0),setQuality){var quality=90,isBackdrop="backdrop"==(options.type||"").toLowerCase();isBackdrop&&(quality-=10),browserInfo.slow&&(quality-=40),AppInfo.hasLowImageBandwidth&&!isBackdrop&&(quality-=10),options.quality=quality}}},AppInfo={};!function(){"use strict";function setAppInfo(){var isCordova=Dashboard.isRunningInCordova();AppInfo.enableAutoSave=browserInfo.touch,AppInfo.enableAppStorePolicy=isCordova,browserInfo.iOS&&(AppInfo.hasLowImageBandwidth=!0),isCordova?(AppInfo.isNativeApp=!0,browserInfo.android&&(AppInfo.supportsExternalPlayers=!0)):AppInfo.enableSupporterMembership=!0,AppInfo.supportsFileInput=!(AppInfo.isNativeApp&&browserInfo.android),AppInfo.supportsUserDisplayLanguageSetting=Dashboard.isConnectMode()}function initializeApiClient(apiClient){AppInfo.enableAppStorePolicy&&(apiClient.getAvailablePlugins=function(){return Promise.resolve([])},apiClient.getInstalledPlugins=function(){return Promise.resolve([])}),apiClient.normalizeImageOptions=Dashboard.normalizeImageOptions,Events.off(apiClient,"requestfail",Dashboard.onRequestFail),Events.on(apiClient,"requestfail",Dashboard.onRequestFail)}function onApiClientCreated(e,newApiClient){initializeApiClient(newApiClient),window.$&&($.ajax=newApiClient.ajax),require(["globalize"],function(globalize){newApiClient.downloadsTitleText=globalize.translate("sharedcomponents#Downloads")})}function defineConnectionManager(connectionManager){window.ConnectionManager=connectionManager,define("connectionManager",[],function(){return connectionManager})}function bindConnectionManagerEvents(connectionManager,events,userSettings){window.Events=events,events.on(ConnectionManager,"apiclientcreated",onApiClientCreated),connectionManager.currentApiClient=function(){if(!localApiClient){var server=connectionManager.getLastUsedServer();server&&(localApiClient=connectionManager.getApiClient(server.Id))}return localApiClient},connectionManager.onLocalUserSignedIn=function(user){return localApiClient=connectionManager.getApiClient(user.ServerId),window.ApiClient=localApiClient,userSettings.setUserInfo(user.Id,localApiClient)},events.on(connectionManager,"localusersignedout",function(){userSettings.setUserInfo(null,null)})}function createConnectionManager(){return new Promise(function(resolve,reject){require(["connectionManagerFactory","apphost","credentialprovider","events","userSettings"],function(connectionManagerExports,apphost,credentialProvider,events,userSettings){window.MediaBrowser=Object.assign(window.MediaBrowser||{},connectionManagerExports);var credentialProviderInstance=new credentialProvider,promises=[apphost.getSyncProfile(),apphost.appInfo()];Promise.all(promises).then(function(responses){var deviceProfile=responses[0],appInfo=responses[1],capabilities=Dashboard.capabilities();capabilities.DeviceProfile=deviceProfile;var connectionManager=new MediaBrowser.ConnectionManager(credentialProviderInstance,appInfo.appName,appInfo.appVersion,appInfo.deviceName,appInfo.deviceId,capabilities,window.devicePixelRatio);return defineConnectionManager(connectionManager),bindConnectionManagerEvents(connectionManager,events,userSettings),Dashboard.isConnectMode()?void resolve():(console.log("loading ApiClient singleton"),getRequirePromise(["apiclient"]).then(function(apiClientFactory){console.log("creating ApiClient singleton");var apiClient=new apiClientFactory(Dashboard.serverAddress(),appInfo.appName,appInfo.appVersion,appInfo.deviceName,appInfo.deviceId,window.devicePixelRatio);apiClient.enableAutomaticNetworking=!1,connectionManager.addApiClient(apiClient),require(["css!"+apiClient.getUrl("Branding/Css")]),window.ApiClient=apiClient,localApiClient=apiClient,console.log("loaded ApiClient singleton"),resolve()}))})})})}function setDocumentClasses(browser){var elem=document.documentElement;AppInfo.enableSupporterMembership||elem.classList.add("supporterMembershipDisabled")}function loadTheme(){var name=getParameterByName("theme");if(name)return void require(["themes/"+name+"/theme"]);if(!AppInfo.isNativeApp){var date=new Date,month=date.getMonth(),day=date.getDate();return 9==month&&day>=30?void require(["themes/halloween/theme"]):void 0}}function returnFirstDependency(obj){return obj}function getBowerPath(){return"bower_components"}function getLayoutManager(layoutManager,appHost){return appHost.getDefaultLayout&&(layoutManager.defaultLayout=appHost.getDefaultLayout()),layoutManager.init(),layoutManager}function getAppStorage(basePath){try{return localStorage.setItem("_test","0"),localStorage.removeItem("_test"),basePath+"/appstorage-localstorage"}catch(e){return basePath+"/appstorage-memory"}}function createWindowHeadroom(){var headroom=new Headroom([],{tolerance:{down:0,up:0},classes:{}});return headroom.init(),headroom}function getCastSenderApiLoader(){var ccLoaded=!1;return{load:function(){return ccLoaded?Promise.resolve():new Promise(function(resolve,reject){var fileref=document.createElement("script");fileref.setAttribute("type","text/javascript"),fileref.onload=function(){ccLoaded=!0,resolve()},fileref.setAttribute("src","https://www.gstatic.com/cv/js/sender/v1/cast_sender.js"),document.querySelector("head").appendChild(fileref)})}}}function getDummyCastSenderApiLoader(){return{load:function(){return window.chrome=window.chrome||{},Promise.resolve()}}}function createSharedAppFooter(appFooter){var footer=new appFooter({});return footer}function initRequire(){var urlArgs="v="+(window.dashboardVersion||(new Date).getDate()),bowerPath=getBowerPath(),apiClientBowerPath=bowerPath+"/emby-apiclient",embyWebComponentsBowerPath=bowerPath+"/emby-webcomponents",paths={velocity:bowerPath+"/velocity/velocity.min",vibrant:bowerPath+"/vibrant/dist/vibrant",staticBackdrops:embyWebComponentsBowerPath+"/staticbackdrops",ironCardList:"components/ironcardlist/ironcardlist",scrollThreshold:"components/scrollthreshold",playlisteditor:"components/playlisteditor/playlisteditor",medialibrarycreator:"components/medialibrarycreator/medialibrarycreator",medialibraryeditor:"components/medialibraryeditor/medialibraryeditor",howler:bowerPath+"/howlerjs/howler.min",sortable:bowerPath+"/Sortable/Sortable.min",isMobile:bowerPath+"/isMobile/isMobile.min",headroom:bowerPath+"/headroomjs/dist/headroom",masonry:bowerPath+"/masonry/dist/masonry.pkgd.min",humanedate:"components/humanedate",libraryBrowser:"scripts/librarybrowser",chromecasthelpers:"components/chromecasthelpers",events:apiClientBowerPath+"/events",credentialprovider:apiClientBowerPath+"/credentials",connectionManagerFactory:bowerPath+"/emby-apiclient/connectionmanager",visibleinviewport:embyWebComponentsBowerPath+"/visibleinviewport",browserdeviceprofile:embyWebComponentsBowerPath+"/browserdeviceprofile",browser:embyWebComponentsBowerPath+"/browser",inputManager:embyWebComponentsBowerPath+"/inputmanager",qualityoptions:embyWebComponentsBowerPath+"/qualityoptions",hammer:bowerPath+"/hammerjs/hammer.min",pageJs:embyWebComponentsBowerPath+"/pagejs/page",focusManager:embyWebComponentsBowerPath+"/focusmanager",datetime:embyWebComponentsBowerPath+"/datetime",globalize:embyWebComponentsBowerPath+"/globalize",itemHelper:embyWebComponentsBowerPath+"/itemhelper",itemShortcuts:embyWebComponentsBowerPath+"/shortcuts",serverNotifications:embyWebComponentsBowerPath+"/servernotifications",playbackManager:embyWebComponentsBowerPath+"/playback/playbackmanager",autoPlayDetect:embyWebComponentsBowerPath+"/playback/autoplaydetect",nowPlayingHelper:embyWebComponentsBowerPath+"/playback/nowplayinghelper",pluginManager:embyWebComponentsBowerPath+"/pluginmanager",packageManager:embyWebComponentsBowerPath+"/packagemanager"};paths.hlsjs=bowerPath+"/hlsjs/dist/hls.min",define("mediaSession",[embyWebComponentsBowerPath+"/playback/mediasession"]),define("webActionSheet",[embyWebComponentsBowerPath+"/actionsheet/actionsheet"],returnFirstDependency),Dashboard.isRunningInCordova()?paths.sharingMenu="cordova/sharingwidget":define("sharingMenu",[embyWebComponentsBowerPath+"/sharing/sharingmenu"],returnFirstDependency),paths.wakeonlan=apiClientBowerPath+"/wakeonlan",define("libjass",[bowerPath+"/libjass/libjass.min","css!"+bowerPath+"/libjass/libjass"],returnFirstDependency),window.IntersectionObserver?define("lazyLoader",[embyWebComponentsBowerPath+"/lazyloader/lazyloader-intersectionobserver"],returnFirstDependency):define("lazyLoader",[embyWebComponentsBowerPath+"/lazyloader/lazyloader-scroll"],returnFirstDependency),define("tunerPicker",["components/tunerpicker"],returnFirstDependency),define("mainTabsManager",["components/maintabsmanager"],returnFirstDependency),define("imageLoader",[embyWebComponentsBowerPath+"/images/imagehelper"],returnFirstDependency),define("appfooter",["components/appfooter/appfooter"],returnFirstDependency),define("dockedtabs",["components/dockedtabs/dockedtabs"],returnFirstDependency),define("directorybrowser",["components/directorybrowser/directorybrowser"],returnFirstDependency),define("metadataEditor",[embyWebComponentsBowerPath+"/metadataeditor/metadataeditor"],returnFirstDependency),define("personEditor",[embyWebComponentsBowerPath+"/metadataeditor/personeditor"],returnFirstDependency),define("playerSelectionMenu",[embyWebComponentsBowerPath+"/playback/playerselection"],returnFirstDependency),define("playerSettingsMenu",[embyWebComponentsBowerPath+"/playback/playersettingsmenu"],returnFirstDependency),define("brightnessOsd",[embyWebComponentsBowerPath+"/playback/brightnessosd"],returnFirstDependency),define("libraryMenu",["scripts/librarymenu"],returnFirstDependency),define("emby-collapse",[embyWebComponentsBowerPath+"/emby-collapse/emby-collapse"],returnFirstDependency),define("emby-button",[embyWebComponentsBowerPath+"/emby-button/emby-button"],returnFirstDependency),define("emby-itemscontainer",[embyWebComponentsBowerPath+"/emby-itemscontainer/emby-itemscontainer"],returnFirstDependency),define("emby-scroller",[embyWebComponentsBowerPath+"/emby-scroller/emby-scroller"],returnFirstDependency),define("emby-tabs",[embyWebComponentsBowerPath+"/emby-tabs/emby-tabs"],returnFirstDependency),define("itemHoverMenu",[embyWebComponentsBowerPath+"/itemhovermenu/itemhovermenu"],returnFirstDependency),define("multiSelect",[embyWebComponentsBowerPath+"/multiselect/multiselect"],returnFirstDependency),define("alphaPicker",[embyWebComponentsBowerPath+"/alphapicker/alphapicker"],returnFirstDependency),define("paper-icon-button-light",[embyWebComponentsBowerPath+"/emby-button/paper-icon-button-light"]),define("connectHelper",[embyWebComponentsBowerPath+"/emby-connect/connecthelper"],returnFirstDependency),define("emby-input",[embyWebComponentsBowerPath+"/emby-input/emby-input"],returnFirstDependency),define("emby-select",[embyWebComponentsBowerPath+"/emby-select/emby-select"],returnFirstDependency),define("emby-slider",[embyWebComponentsBowerPath+"/emby-slider/emby-slider"],returnFirstDependency),define("emby-checkbox",[embyWebComponentsBowerPath+"/emby-checkbox/emby-checkbox"],returnFirstDependency),define("emby-toggle",[embyWebComponentsBowerPath+"/emby-toggle/emby-toggle"],returnFirstDependency),define("emby-radio",[embyWebComponentsBowerPath+"/emby-radio/emby-radio"],returnFirstDependency),define("emby-textarea",[embyWebComponentsBowerPath+"/emby-textarea/emby-textarea"],returnFirstDependency),define("collectionEditor",[embyWebComponentsBowerPath+"/collectioneditor/collectioneditor"],returnFirstDependency),define("playlistEditor",[embyWebComponentsBowerPath+"/playlisteditor/playlisteditor"],returnFirstDependency),define("recordingCreator",[embyWebComponentsBowerPath+"/recordingcreator/recordingcreator"],returnFirstDependency),define("recordingEditor",[embyWebComponentsBowerPath+"/recordingcreator/recordingeditor"],returnFirstDependency),define("seriesRecordingEditor",[embyWebComponentsBowerPath+"/recordingcreator/seriesrecordingeditor"],returnFirstDependency),define("recordingFields",[embyWebComponentsBowerPath+"/recordingcreator/recordingfields"],returnFirstDependency),define("recordingButton",[embyWebComponentsBowerPath+"/recordingcreator/recordingbutton"],returnFirstDependency),define("recordingHelper",[embyWebComponentsBowerPath+"/recordingcreator/recordinghelper"],returnFirstDependency),define("subtitleEditor",[embyWebComponentsBowerPath+"/subtitleeditor/subtitleeditor"],returnFirstDependency),define("itemIdentifier",[embyWebComponentsBowerPath+"/itemidentifier/itemidentifier"],returnFirstDependency),define("mediaInfo",[embyWebComponentsBowerPath+"/mediainfo/mediainfo"],returnFirstDependency),define("itemContextMenu",[embyWebComponentsBowerPath+"/itemcontextmenu"],returnFirstDependency),define("imageEditor",[embyWebComponentsBowerPath+"/imageeditor/imageeditor"],returnFirstDependency),define("dom",[embyWebComponentsBowerPath+"/dom"],returnFirstDependency),define("fullscreen-doubleclick",[embyWebComponentsBowerPath+"/fullscreen/fullscreen-doubleclick"],returnFirstDependency),define("fullscreenManager",[embyWebComponentsBowerPath+"/fullscreen/fullscreenmanager","events"],returnFirstDependency),define("layoutManager",[embyWebComponentsBowerPath+"/layoutmanager","apphost"],getLayoutManager),define("playMenu",[embyWebComponentsBowerPath+"/playmenu"],returnFirstDependency),define("refreshDialog",[embyWebComponentsBowerPath+"/refreshdialog/refreshdialog"],returnFirstDependency),define("backdrop",[embyWebComponentsBowerPath+"/backdrop/backdrop"],returnFirstDependency),define("fetchHelper",[embyWebComponentsBowerPath+"/fetchhelper"],returnFirstDependency),define("roundCardStyle",["cardStyle","css!"+embyWebComponentsBowerPath+"/cardbuilder/roundcard"],returnFirstDependency),define("cardStyle",["css!"+embyWebComponentsBowerPath+"/cardbuilder/card"],returnFirstDependency),define("cardBuilder",[embyWebComponentsBowerPath+"/cardbuilder/cardbuilder"],returnFirstDependency),define("peoplecardbuilder",[embyWebComponentsBowerPath+"/cardbuilder/peoplecardbuilder"],returnFirstDependency),define("chaptercardbuilder",[embyWebComponentsBowerPath+"/cardbuilder/chaptercardbuilder"],returnFirstDependency),define("mouseManager",[embyWebComponentsBowerPath+"/input/mouse"],returnFirstDependency),define("flexStyles",["css!"+embyWebComponentsBowerPath+"/flexstyles"],returnFirstDependency),define("deleteHelper",[embyWebComponentsBowerPath+"/deletehelper"],returnFirstDependency),define("tvguide",[embyWebComponentsBowerPath+"/guide/guide"],returnFirstDependency),define("programStyles",["css!"+embyWebComponentsBowerPath+"/guide/programs"],returnFirstDependency),define("guide-settings-dialog",[embyWebComponentsBowerPath+"/guide/guide-settings"],returnFirstDependency),define("syncDialog",[embyWebComponentsBowerPath+"/sync/sync"],returnFirstDependency),define("syncToggle",[embyWebComponentsBowerPath+"/sync/synctoggle"],returnFirstDependency),define("syncJobEditor",[embyWebComponentsBowerPath+"/sync/syncjobeditor"],returnFirstDependency),define("syncJobList",[embyWebComponentsBowerPath+"/sync/syncjoblist"],returnFirstDependency),define("voiceDialog",[embyWebComponentsBowerPath+"/voice/voicedialog"],returnFirstDependency),define("voiceReceiver",[embyWebComponentsBowerPath+"/voice/voicereceiver"],returnFirstDependency),define("voiceProcessor",[embyWebComponentsBowerPath+"/voice/voiceprocessor"],returnFirstDependency),define("viewManager",[embyWebComponentsBowerPath+"/viewmanager/viewmanager"],function(viewManager){return window.ViewManager=viewManager,viewManager.dispatchPageEvents(!0),viewManager}),Dashboard.isRunningInCordova()&&window.MainActivity?define("shell",["cordova/shell"],returnFirstDependency):define("shell",[embyWebComponentsBowerPath+"/shell"],returnFirstDependency),define("sharingmanager",[embyWebComponentsBowerPath+"/sharing/sharingmanager"],returnFirstDependency),Dashboard.isRunningInCordova()?paths.apphost="cordova/apphost":paths.apphost="components/apphost",Dashboard.isRunningInCordova()&&window.MainActivity?(paths.appStorage="cordova/appstorage",paths.filesystem="cordova/filesystem"):(paths.appStorage=getAppStorage(apiClientBowerPath),paths.filesystem=embyWebComponentsBowerPath+"/filesystem");var sha1Path=bowerPath+"/cryptojslib/components/sha1-min",md5Path=bowerPath+"/cryptojslib/components/md5-min",shim={};shim[sha1Path]={deps:[bowerPath+"/cryptojslib/components/core-min"]},shim[md5Path]={deps:[bowerPath+"/cryptojslib/components/core-min"]},requirejs.config({waitSeconds:0,map:{"*":{css:bowerPath+"/emby-webcomponents/require/requirecss",html:bowerPath+"/emby-webcomponents/require/requirehtml",text:bowerPath+"/emby-webcomponents/require/requiretext"}},urlArgs:urlArgs,paths:paths,shim:shim}),define("cryptojs-sha1",[sha1Path]),define("cryptojs-md5",[md5Path]),define("jstree",[bowerPath+"/jstree/dist/jstree","css!thirdparty/jstree/themes/default/style.min.css"]),define("dashboardcss",["css!css/dashboard"]),define("jqmtable",["thirdparty/jquerymobile-1.4.5/jqm.table","css!thirdparty/jquerymobile-1.4.5/jqm.table.css"]),define("jqmwidget",["thirdparty/jquerymobile-1.4.5/jqm.widget"]),define("jqmslider",["thirdparty/jquerymobile-1.4.5/jqm.slider","css!thirdparty/jquerymobile-1.4.5/jqm.slider.css"]),define("jqmpopup",["thirdparty/jquerymobile-1.4.5/jqm.popup","css!thirdparty/jquerymobile-1.4.5/jqm.popup.css"]),define("jqmlistview",["css!thirdparty/jquerymobile-1.4.5/jqm.listview.css"]),define("jqmpanel",["thirdparty/jquerymobile-1.4.5/jqm.panel","css!thirdparty/jquerymobile-1.4.5/jqm.panel.css"]),define("slideshow",[embyWebComponentsBowerPath+"/slideshow/slideshow"],returnFirstDependency),define("fetch",[bowerPath+"/fetch/fetch"]),define("raf",[embyWebComponentsBowerPath+"/polyfills/raf"]),define("functionbind",[embyWebComponentsBowerPath+"/polyfills/bind"]),define("arraypolyfills",[embyWebComponentsBowerPath+"/polyfills/array"]),define("objectassign",[embyWebComponentsBowerPath+"/polyfills/objectassign"]),define("clearButtonStyle",["css!"+embyWebComponentsBowerPath+"/clearbutton"]),define("userdataButtons",[embyWebComponentsBowerPath+"/userdatabuttons/userdatabuttons"],returnFirstDependency),define("listView",[embyWebComponentsBowerPath+"/listview/listview"],returnFirstDependency),define("listViewStyle",["css!"+embyWebComponentsBowerPath+"/listview/listview"],returnFirstDependency),define("formDialogStyle",["css!"+embyWebComponentsBowerPath+"/formdialog"],returnFirstDependency),define("indicators",[embyWebComponentsBowerPath+"/indicators/indicators"],returnFirstDependency),define("registrationServices",[embyWebComponentsBowerPath+"/registrationservices/registrationservices"],returnFirstDependency),Dashboard.isRunningInCordova()?(define("iapManager",["cordova/iap"],returnFirstDependency),define("fileupload",["cordova/fileupload"],returnFirstDependency)):(define("iapManager",["components/iap"],returnFirstDependency),define("fileupload",[apiClientBowerPath+"/fileupload"],returnFirstDependency)),define("connectionmanager",[apiClientBowerPath+"/connectionmanager"]),define("cameraRoll",[apiClientBowerPath+"/cameraroll"],returnFirstDependency),define("contentuploader",[apiClientBowerPath+"/sync/contentuploader"],returnFirstDependency),define("serversync",[apiClientBowerPath+"/sync/serversync"],returnFirstDependency),define("multiserversync",[apiClientBowerPath+"/sync/multiserversync"],returnFirstDependency),define("mediasync",[apiClientBowerPath+"/sync/mediasync"],returnFirstDependency),define("localsync",[apiClientBowerPath+"/sync/localsync"],returnFirstDependency),define("idb",[embyWebComponentsBowerPath+"/idb"],returnFirstDependency),define("itemrepository",[apiClientBowerPath+"/sync/itemrepository"],returnFirstDependency),define("useractionrepository",[apiClientBowerPath+"/sync/useractionrepository"],returnFirstDependency),self.Windows?(define("bgtaskregister",["environments/windows-uwp/bgtaskregister"],returnFirstDependency),define("transfermanager",["environments/windows-uwp/transfermanager"],returnFirstDependency),define("filerepository",["environments/windows-uwp/filerepository"],returnFirstDependency)):(define("transfermanager",[apiClientBowerPath+"/sync/transfermanager"],returnFirstDependency),define("filerepository",[apiClientBowerPath+"/sync/filerepository"],returnFirstDependency)),define("swiper",[bowerPath+"/Swiper/dist/js/swiper.min","css!"+bowerPath+"/Swiper/dist/css/swiper.min"],returnFirstDependency),define("scroller",[embyWebComponentsBowerPath+"/scroller/smoothscroller"],returnFirstDependency),define("toast",[embyWebComponentsBowerPath+"/toast/toast"],returnFirstDependency),define("scrollHelper",[embyWebComponentsBowerPath+"/scrollhelper"],returnFirstDependency),define("touchHelper",[embyWebComponentsBowerPath+"/touchhelper"],returnFirstDependency),define("appSettings",[embyWebComponentsBowerPath+"/appsettings"],updateAppSettings),define("userSettings",[embyWebComponentsBowerPath+"/usersettings/usersettings"],returnFirstDependency),define("userSettingsBuilder",[embyWebComponentsBowerPath+"/usersettings/usersettingsbuilder"],returnFirstDependency),define("material-icons",["css!"+embyWebComponentsBowerPath+"/fonts/material-icons/style"]),define("robotoFont",["css!"+embyWebComponentsBowerPath+"/fonts/roboto/style"]),define("scrollStyles",["css!"+embyWebComponentsBowerPath+"/scrollstyles"]),define("navdrawer",["components/navdrawer/navdrawer"],returnFirstDependency),define("viewcontainer",["components/viewcontainer-lite","css!"+embyWebComponentsBowerPath+"/viewmanager/viewcontainer-lite"],returnFirstDependency),define("queryString",[bowerPath+"/query-string/index"],function(){ +return queryString}),define("jQuery",[bowerPath+"/jquery/dist/jquery.slim.min"],function(){return window.ApiClient&&(jQuery.ajax=ApiClient.ajax),jQuery}),define("fnchecked",["legacy/fnchecked"]),define("dialogHelper",[embyWebComponentsBowerPath+"/dialoghelper/dialoghelper"],function(dialoghelper){return dialoghelper.setOnOpen(onDialogOpen),dialoghelper}),define("inputmanager",["inputManager"],returnFirstDependency),define("historyManager",["embyRouter"],returnFirstDependency),define("headroom-window",["headroom"],createWindowHeadroom),define("appfooter-shared",["appfooter"],createSharedAppFooter),define("skinManager",[],function(){return{loadUserSkin:function(){require(["embyRouter"],function(embyRouter){embyRouter.goHome()})}}}),define("connectionManager",[],function(){return ConnectionManager}),define("apiClientResolver",[],function(){return function(){return window.ApiClient}}),define("embyRouter",[embyWebComponentsBowerPath+"/router"],function(embyRouter){function showItem(item,serverId,options){if("string"==typeof item)require(["connectionManager"],function(connectionManager){var apiClient=connectionManager.currentApiClient();apiClient.getItem(apiClient.getCurrentUserId(),item).then(function(item){embyRouter.showItem(item,options)})});else{2==arguments.length&&(options=arguments[1]);var context=options?options.context:null;embyRouter.show("/"+LibraryBrowser.getHref(item,context),{item:item})}}return embyRouter.showLocalLogin=function(apiClient,serverId,manualLogin){Dashboard.navigate("login.html?serverid="+serverId)},embyRouter.showVideoOsd=function(){return Dashboard.navigate("videoosd.html")},embyRouter.showSelectServer=function(){Dashboard.isConnectMode()?Dashboard.navigate("selectserver.html"):Dashboard.navigate("login.html")},embyRouter.showWelcome=function(){Dashboard.isConnectMode()?Dashboard.navigate("connectlogin.html?mode=welcome"):Dashboard.navigate("login.html")},embyRouter.showSettings=function(){Dashboard.navigate("mypreferencesmenu.html")},embyRouter.showGuide=function(){Dashboard.navigate("livetv.html?tab=1")},embyRouter.goHome=function(){Dashboard.navigate("home.html")},embyRouter.showSearch=function(){Dashboard.navigate("search.html")},embyRouter.showLiveTV=function(){Dashboard.navigate("livetv.html")},embyRouter.showRecordedTV=function(){Dashboard.navigate("livetv.html?tab=3")},embyRouter.showFavorites=function(){Dashboard.navigate("home.html?tab=1")},embyRouter.showSettings=function(){Dashboard.navigate("mypreferencesmenu.html")},embyRouter.setTitle=function(){},embyRouter.showItem=showItem,embyRouter})}function updateAppSettings(appSettings){return appSettings.enableExternalPlayers=function(val){return null!=val&&appSettings.set("externalplayers",val.toString()),"true"===appSettings.get("externalplayers")},appSettings}function onDialogOpen(dlg){dlg.classList.contains("background-theme-a")||dlg.classList.contains("actionSheet")||(dlg.classList.add("background-theme-b"),dlg.classList.add("ui-body-b"))}function initRequireWithBrowser(browser){var bowerPath=getBowerPath(),apiClientBowerPath=bowerPath+"/emby-apiclient",embyWebComponentsBowerPath=bowerPath+"/emby-webcomponents";Dashboard.isRunningInCordova()&&browser.android?define("apiclient",["bower_components/emby-apiclient/apiclient"],returnFirstDependency):define("apiclient",["bower_components/emby-apiclient/apiclient"],returnFirstDependency),Dashboard.isRunningInCordova()&&browser.safari?define("actionsheet",["cordova/actionsheet"],returnFirstDependency):define("actionsheet",["webActionSheet"],returnFirstDependency),"registerElement"in document?define("registerElement",[]):browser.msie?define("registerElement",[bowerPath+"/webcomponentsjs/webcomponents-lite.min.js"]):define("registerElement",[bowerPath+"/document-register-element/build/document-register-element"]),window.chrome&&window.chrome.sockets?define("serverdiscovery",[apiClientBowerPath+"/serverdiscovery-chrome"],returnFirstDependency):Dashboard.isRunningInCordova()&&browser.android?define("serverdiscovery",["cordova/serverdiscovery"],returnFirstDependency):Dashboard.isRunningInCordova()&&browser.safari?define("serverdiscovery",[apiClientBowerPath+"/serverdiscovery-chrome"],returnFirstDependency):define("serverdiscovery",[apiClientBowerPath+"/serverdiscovery"],returnFirstDependency),Dashboard.isRunningInCordova()&&browser.safari?define("imageFetcher",["cordova/imagestore"],returnFirstDependency):define("imageFetcher",[embyWebComponentsBowerPath+"/images/basicimagefetcher"],returnFirstDependency);var preferNativeAlerts=browser.tv;preferNativeAlerts&&window.alert?define("alert",[embyWebComponentsBowerPath+"/alert/nativealert"],returnFirstDependency):define("alert",[embyWebComponentsBowerPath+"/alert/alert"],returnFirstDependency),define("dialog",[embyWebComponentsBowerPath+"/dialog/dialog"],returnFirstDependency),preferNativeAlerts&&window.confirm?define("confirm",[embyWebComponentsBowerPath+"/confirm/nativeconfirm"],returnFirstDependency):define("confirm",[embyWebComponentsBowerPath+"/confirm/confirm"],returnFirstDependency);var preferNativePrompt=preferNativeAlerts||browser.xboxOne;preferNativePrompt&&window.confirm?define("prompt",[embyWebComponentsBowerPath+"/prompt/nativeprompt"],returnFirstDependency):define("prompt",[embyWebComponentsBowerPath+"/prompt/prompt"],returnFirstDependency),browser.tizen||browser.operaTv?define("loading",[embyWebComponentsBowerPath+"/loading/loading-legacy"],returnFirstDependency):define("loading",[embyWebComponentsBowerPath+"/loading/loading-lite"],returnFirstDependency),define("multi-download",[embyWebComponentsBowerPath+"/multidownload"],returnFirstDependency),Dashboard.isRunningInCordova()&&browser.android?(define("fileDownloader",["cordova/filedownloader"],returnFirstDependency),define("localassetmanager",["cordova/localassetmanager"],returnFirstDependency)):(define("fileDownloader",[embyWebComponentsBowerPath+"/filedownloader"],returnFirstDependency),define("localassetmanager",[apiClientBowerPath+"/localassetmanager"],returnFirstDependency)),define("screenLock",[embyWebComponentsBowerPath+"/resourcelocks/nullresourcelock"],returnFirstDependency),Dashboard.isRunningInCordova()&&browser.android?(define("resourceLockManager",[embyWebComponentsBowerPath+"/resourcelocks/resourcelockmanager"],returnFirstDependency),define("wakeLock",["cordova/wakelock"],returnFirstDependency),define("networkLock",["cordova/networklock"],returnFirstDependency)):(define("resourceLockManager",[embyWebComponentsBowerPath+"/resourcelocks/resourcelockmanager"],returnFirstDependency),define("wakeLock",[embyWebComponentsBowerPath+"/resourcelocks/nullresourcelock"],returnFirstDependency),define("networkLock",[embyWebComponentsBowerPath+"/resourcelocks/nullresourcelock"],returnFirstDependency)),Dashboard.isRunningInCordova()?define("castSenderApiLoader",[],getDummyCastSenderApiLoader):define("castSenderApiLoader",[],getCastSenderApiLoader)}function init(){Dashboard.isRunningInCordova()&&browserInfo.android&&define("nativedirectorychooser",["cordova/nativedirectorychooser"]),Dashboard.isRunningInCordova()&&browserInfo.android?define("localsync",["cordova/localsync"],returnFirstDependency):define("localsync",["scripts/localsync"],returnFirstDependency),define("livetvcss",["css!css/livetv.css"]),define("detailtablecss",["css!css/detailtable.css"]),define("autoorganizetablecss",["css!css/autoorganizetable.css"]),define("buttonenabled",["legacy/buttonenabled"]),initAfterDependencies()}function getRequirePromise(deps){return new Promise(function(resolve,reject){require(deps,resolve)})}function initAfterDependencies(){var list=[];window.fetch||list.push("fetch"),"function"!=typeof Object.assign&&list.push("objectassign"),Array.prototype.filter||list.push("arraypolyfills"),Function.prototype.bind||list.push("functionbind"),window.requestAnimationFrame||list.push("raf"),require(list,function(){createConnectionManager().then(function(){console.log("initAfterDependencies promises resolved"),require(["globalize"],function(globalize){window.Globalize=globalize,Promise.all([loadCoreDictionary(globalize),loadSharedComponentsDictionary(globalize)]).then(onGlobalizeInit)})})})}function loadSharedComponentsDictionary(globalize){var baseUrl="bower_components/emby-webcomponents/strings/",languages=["ar","bg-bg","ca","cs","da","de","el","en-gb","en-us","es-ar","es-mx","es","fi","fr","gsw","he","hr","hu","id","it","kk","ko","ms","nb","nl","pl","pt-br","pt-pt","ro","ru","sk","sl-si","sv","tr","uk","vi","zh-cn","zh-hk","zh-tw"],translations=languages.map(function(i){return{lang:i,path:baseUrl+i+".json"}});globalize.loadStrings({name:"sharedcomponents",translations:translations})}function loadCoreDictionary(globalize){var baseUrl="strings/",languages=["ar","bg-bg","ca","cs","da","de","el","en-gb","en-us","es-ar","es-mx","es","fa","fi","fr","gsw","he","hr","hu","id","it","kk","ko","ms","nb","nl","pl","pt-br","pt-pt","ro","ru","sl-si","sv","tr","uk","vi","zh-cn","zh-hk","zh-tw"],translations=languages.map(function(i){return{lang:i,path:baseUrl+i+".json"}});return globalize.defaultModule("core"),globalize.loadStrings({name:"core",translations:translations})}function onGlobalizeInit(){document.title=Globalize.translateDocument(document.title,"core"),require(["apphost"],function(appHost){loadPlugins([],appHost,browserInfo).then(onAppReady)})}function defineRoute(newRoute,dictionary){var baseRoute=Emby.Page.baseUrl(),path=newRoute.path;path=path.replace(baseRoute,""),console.log("Defining route: "+path),newRoute.dictionary=newRoute.dictionary||dictionary||"core",Emby.Page.addRoute(path,newRoute)}function defineCoreRoutes(appHost){console.log("Defining core routes"),defineRoute({path:"/addplugin.html",dependencies:[],autoFocus:!1,roles:"admin",controller:"scripts/addpluginpage"}),defineRoute({path:"/appservices.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/autoorganizelog.html",dependencies:["scripts/taskbutton","autoorganizetablecss"],controller:"dashboard/autoorganizelog",roles:"admin"}),defineRoute({path:"/autoorganizesmart.html",dependencies:["emby-button"],controller:"dashboard/autoorganizesmart",autoFocus:!1,roles:"admin"}),defineRoute({path:"/autoorganizetv.html",dependencies:["emby-checkbox","emby-input","emby-button","emby-select","emby-collapse"],controller:"dashboard/autoorganizetv",autoFocus:!1,roles:"admin"}),defineRoute({path:"/channelitems.html",dependencies:[],autoFocus:!1,transition:"fade"}),defineRoute({path:"/channels.html",dependencies:[],autoFocus:!1,transition:"fade",controller:"scripts/channels"}),defineRoute({path:"/channelsettings.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/cinemamodeconfiguration.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/connectlogin.html",dependencies:["emby-button","emby-input"],autoFocus:!1,anonymous:!0,startup:!0,controller:"scripts/connectlogin"}),defineRoute({path:"/dashboard.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/dashboardgeneral.html",controller:"dashboard/dashboardgeneral",autoFocus:!1,roles:"admin"}),defineRoute({path:"/dashboardhosting.html",dependencies:["emby-input","emby-button"],autoFocus:!1,roles:"admin",controller:"dashboard/dashboardhosting"}),defineRoute({path:"/device.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/devices.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/devicesupload.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/dlnaprofile.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/dlnaprofiles.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/dlnaserversettings.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/dlnasettings.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/edititemmetadata.html",dependencies:[],controller:"scripts/edititemmetadata",autoFocus:!1}),defineRoute({path:"/encodingsettings.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/forgotpassword.html",dependencies:["emby-input","emby-button"],anonymous:!0,startup:!0,controller:"scripts/forgotpassword"}),defineRoute({path:"/forgotpasswordpin.html",dependencies:["emby-input","emby-button"],autoFocus:!1,anonymous:!0,startup:!0,controller:"scripts/forgotpasswordpin"}),defineRoute({path:"/gamegenres.html",dependencies:[],autoFocus:!1}),defineRoute({path:"/games.html",dependencies:[],autoFocus:!1}),defineRoute({path:"/gamesrecommended.html",dependencies:[],autoFocus:!1}),defineRoute({path:"/gamestudios.html",dependencies:[],autoFocus:!1}),defineRoute({path:"/gamesystems.html",dependencies:[],autoFocus:!1}),defineRoute({path:"/home.html",dependencies:[],autoFocus:!1,controller:"scripts/indexpage",transition:"fade",type:"home"}),defineRoute({path:"/index.html",dependencies:[],autoFocus:!1,isDefaultRoute:!0}),defineRoute({path:"/itemdetails.html",dependencies:["emby-button","scripts/livetvcomponents","paper-icon-button-light","emby-itemscontainer"],controller:"scripts/itemdetailpage",autoFocus:!1,transition:"fade"}),defineRoute({path:"/itemlist.html",dependencies:[],autoFocus:!1,controller:"scripts/itemlistpage",transition:"fade"}),defineRoute({path:"/kids.html",dependencies:[],autoFocus:!1}),defineRoute({path:"/library.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/librarydisplay.html",dependencies:[],autoFocus:!1,roles:"admin",controller:"dashboard/librarydisplay"}),defineRoute({path:"/librarysettings.html",dependencies:["emby-collapse","emby-input","emby-button","emby-select"],autoFocus:!1,roles:"admin",controller:"dashboard/librarysettings"}),defineRoute({path:"/livetv.html",dependencies:["emby-button","livetvcss"],controller:"scripts/livetvsuggested",autoFocus:!1,transition:"fade"}),defineRoute({path:"/livetvguideprovider.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/livetvitems.html",dependencies:[],autoFocus:!1,controller:"scripts/livetvitems"}),defineRoute({path:"/livetvseriestimer.html",dependencies:["emby-checkbox","emby-input","emby-button","emby-collapse","scripts/livetvcomponents","scripts/livetvseriestimer","livetvcss"],autoFocus:!1,controller:"scripts/livetvseriestimer"}),defineRoute({path:"/livetvsettings.html",dependencies:[],autoFocus:!1}),defineRoute({path:"/livetvstatus.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/livetvtuner.html",dependencies:[],autoFocus:!1,roles:"admin",controller:"dashboard/livetvtuner"}),defineRoute({path:"/log.html",dependencies:["emby-checkbox"],roles:"admin",controller:"dashboard/logpage"}),defineRoute({path:"/login.html",dependencies:["emby-button","emby-input"],autoFocus:!1,anonymous:!0,startup:!0,controller:"scripts/loginpage"}),defineRoute({path:"/metadataadvanced.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/metadataimages.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/metadatanfo.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/metadatasubtitles.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/movies.html",dependencies:["emby-button"],autoFocus:!1,controller:"scripts/moviesrecommended",transition:"fade"}),defineRoute({path:"/music.html",dependencies:[],controller:"scripts/musicrecommended",autoFocus:!1,transition:"fade"}),defineRoute({path:"/mypreferencesdisplay.html",dependencies:["emby-checkbox","emby-button","emby-select"],autoFocus:!1,transition:"fade",controller:"scripts/mypreferencesdisplay"}),defineRoute({path:"/mypreferenceshome.html",dependencies:["emby-checkbox","emby-button","emby-select"],autoFocus:!1,transition:"fade",controller:"scripts/mypreferenceshome"}),defineRoute({path:"/mypreferenceslanguages.html",dependencies:["emby-button","emby-checkbox","emby-select"],autoFocus:!1,transition:"fade",controller:"scripts/mypreferenceslanguages"}),defineRoute({path:"/mypreferencesmenu.html",dependencies:["emby-button"],autoFocus:!1,transition:"fade",controller:"scripts/mypreferencescommon"}),defineRoute({path:"/myprofile.html",dependencies:["emby-button","emby-collapse","emby-checkbox","emby-input"],autoFocus:!1,transition:"fade",controller:"scripts/myprofile"}),appHost.supports("sync")&&defineRoute({path:"/offline/offline.html",transition:"false",controller:"offline/offline",dependencies:[],anonymous:!0,startup:!1}),defineRoute({path:"/mysync.html",dependencies:[],autoFocus:!1,transition:"fade",controller:"scripts/mysync"}),defineRoute({path:"/camerauploadsettings.html",dependencies:[],autoFocus:!1,transition:"fade",controller:"scripts/camerauploadsettings"}),defineRoute({path:"/mysyncjob.html",dependencies:[],autoFocus:!1,transition:"fade",controller:"scripts/syncjob"}),defineRoute({path:"/mysyncsettings.html",dependencies:["emby-checkbox","emby-input","emby-button","paper-icon-button-light"],autoFocus:!1,transition:"fade",controller:"scripts/mysyncsettings"}),defineRoute({path:"/notificationlist.html",dependencies:[],autoFocus:!1}),defineRoute({path:"/notificationsetting.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/notificationsettings.html",controller:"scripts/notificationsettings",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/nowplaying.html",dependencies:["paper-icon-button-light","emby-slider","emby-button","emby-input","emby-itemscontainer"],controller:"scripts/nowplayingpage",autoFocus:!1,transition:"fade",fullscreen:!0,supportsThemeMedia:!0}),defineRoute({path:"/photos.html",dependencies:[],autoFocus:!1,transition:"fade"}),defineRoute({path:"/playbackconfiguration.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/playlists.html",dependencies:[],autoFocus:!1,transition:"fade",controller:"scripts/playlists"}),defineRoute({path:"/plugincatalog.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/plugins.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/reports.html",dependencies:[],autoFocus:!1}),defineRoute({path:"/scheduledtask.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/scheduledtasks.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/search.html",dependencies:[],controller:"scripts/searchpage"}),defineRoute({path:"/secondaryitems.html",dependencies:[],autoFocus:!1,controller:"scripts/secondaryitems"}),defineRoute({path:"/selectserver.html",dependencies:["listViewStyle","emby-button"],autoFocus:!1,anonymous:!0,startup:!0,controller:"scripts/selectserver"}),defineRoute({path:"/serversecurity.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/shared.html",dependencies:[],autoFocus:!1,anonymous:!0}),defineRoute({path:"/streamingsettings.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/support.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/supporterkey.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/syncactivity.html",dependencies:[],autoFocus:!1,controller:"scripts/syncactivity"}),defineRoute({path:"/syncsettings.html",dependencies:[],autoFocus:!1}),defineRoute({path:"/tv.html",dependencies:["paper-icon-button-light","emby-button"],autoFocus:!1,controller:"scripts/tvrecommended",transition:"fade"}),defineRoute({path:"/useredit.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/userlibraryaccess.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/usernew.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/userparentalcontrol.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/userpassword.html",dependencies:["emby-input","emby-button","emby-checkbox"],autoFocus:!1,controller:"scripts/userpasswordpage"}),defineRoute({path:"/userprofiles.html",dependencies:[],autoFocus:!1,roles:"admin"}),defineRoute({path:"/wizardagreement.html",dependencies:["dashboardcss"],autoFocus:!1,anonymous:!0}),defineRoute({path:"/wizardcomponents.html",dependencies:["dashboardcss","emby-button","emby-input","emby-select"],autoFocus:!1,anonymous:!0,controller:"dashboard/wizardcomponents"}),defineRoute({path:"/wizardfinish.html",dependencies:["emby-button","dashboardcss"],autoFocus:!1,anonymous:!0,controller:"dashboard/wizardfinishpage"}),defineRoute({path:"/wizardlibrary.html",dependencies:["dashboardcss"],autoFocus:!1,anonymous:!0}),defineRoute({path:"/wizardsettings.html",dependencies:["dashboardcss"],autoFocus:!1,anonymous:!0}),defineRoute({path:"/wizardstart.html",dependencies:["dashboardcss"],autoFocus:!1,anonymous:!0}),defineRoute({path:"/wizarduser.html",dependencies:["dashboardcss","emby-input"],autoFocus:!1,anonymous:!0}),defineRoute({path:"/videoosd.html",dependencies:[],transition:"fade",controller:"scripts/videoosd",autoFocus:!1,type:"video-osd",supportsThemeMedia:!0,fullscreen:!0}),defineRoute({path:"/configurationpage",dependencies:["jQuery"],autoFocus:!1,enableCache:!1,enableContentQueryString:!0,roles:"admin"}),defineRoute({path:"/",isDefaultRoute:!0,autoFocus:!1,dependencies:[]})}function loadPlugins(externalPlugins,appHost,browser,shell){console.log("Loading installed plugins");var list=["bower_components/emby-webcomponents/playback/playbackvalidation","bower_components/emby-webcomponents/playback/playaccessvalidation"];Dashboard.isRunningInCordova()&&browser.android?(document.createElement("audio").canPlayType("audio/flac").replace(/no/,"")&&document.createElement("audio").canPlayType('audio/ogg; codecs="opus"').replace(/no/,"")?window.VlcAudio=!0:window.VlcAudio=!0,list.push("cordova/vlcplayer")):Dashboard.isRunningInCordova()&&browser.safari&&list.push("cordova/audioplayer"),list.push("bower_components/emby-webcomponents/htmlaudioplayer/plugin"),Dashboard.isRunningInCordova()&&browser.safari&&list.push("cordova/chromecast"),Dashboard.isRunningInCordova()&&browser.android&&list.push("cordova/externalplayer"),list.push("bower_components/emby-webcomponents/htmlvideoplayer/plugin"),appHost.supports("remotecontrol")&&(list.push("bower_components/emby-webcomponents/sessionplayer"),browser.chrome&&list.push("bower_components/emby-webcomponents/chromecastplayer")),list.push("bower_components/emby-webcomponents/youtubeplayer/plugin");for(var i=0,length=externalPlugins.length;i',""),page.querySelector(".lnkPremiere").addEventListener("click",onSupporterLinkClick)}).on("pageshow","#supporterKeyPage",function(){var page=this;loadUserInfo(page),load(page)})}); \ No newline at end of file +define(["fetchHelper","jQuery","registrationServices","loading"],function(fetchHelper,$,registrationServices,loading){"use strict";function load(page){loading.show(),ApiClient.getPluginSecurityInfo().then(function(info){$("#txtSupporterKey",page).val(info.SupporterKey),info.SupporterKey&&!info.IsMBSupporter?(page.querySelector("#txtSupporterKey").classList.add("invalidEntry"),$(".notSupporter",page).show()):(page.querySelector("#txtSupporterKey").classList.remove("invalidEntry"),$(".notSupporter",page).hide()),loading.hide()})}function loadUserInfo(page){Dashboard.getPluginSecurityInfo().then(function(info){info.IsMBSupporter?$(".supporterContainer",page).addClass("hide"):$(".supporterContainer",page).removeClass("hide")})}function retrieveSupporterKey(){loading.show();var form=this,email=$("#txtEmail",form).val(),url="https://mb3admin.com/admin/service/supporter/retrievekey?email="+email;return console.log(url),fetchHelper.ajax({url:url,type:"POST",dataType:"json"}).then(function(result){loading.hide(),result.Success?require(["toast"],function(toast){toast(Globalize.translate("MessageKeyEmailedTo").replace("{0}",email))}):require(["toast"],function(toast){toast(result.ErrorMessage)}),console.log(result)}),!1}function onSupporterLinkClick(e){registrationServices.showPremiereInfo(),e.preventDefault(),e.stopPropagation()}var SupporterKeyPage={updateSupporterKey:function(){loading.show();var form=this,key=$("#txtSupporterKey",form).val(),info={SupporterKey:key};return ApiClient.updatePluginSecurityInfo(info).then(function(){Dashboard.resetPluginSecurityInfo(),loading.hide(),key?Dashboard.alert({message:Globalize.translate("MessageKeyUpdated"),title:Globalize.translate("HeaderConfirmation")}):Dashboard.alert({message:Globalize.translate("MessageKeyRemoved"),title:Globalize.translate("HeaderConfirmation")});var page=$(form).parents(".page")[0];load(page)}),!1},linkSupporterKeys:function(){loading.show();var form=this,email=$("#txtNewEmail",form).val(),newkey=$("#txtNewKey",form).val(),oldkey=$("#txtOldKey",form).val(),url="https://mb3admin.com/admin/service/supporter/linkKeys";return console.log(url),fetchHelper.ajax({url:url,type:"POST",dataType:"json",query:{email:email,newkey:newkey,oldkey:oldkey}}).then(function(result){loading.hide(),result.Success?require(["toast"],function(toast){toast(Globalize.translate("MessageKeysLinked"))}):require(["toast"],function(toast){toast(result.ErrorMessage)}),console.log(result)}),!1}};$(document).on("pageinit","#supporterKeyPage",function(){var page=this;$("#supporterKeyForm",this).on("submit",SupporterKeyPage.updateSupporterKey),$("#lostKeyForm",this).on("submit",retrieveSupporterKey),$("#linkKeysForm",this).on("submit",SupporterKeyPage.linkSupporterKeys),page.querySelector(".benefits").innerHTML=Globalize.translate("HeaderSupporterBenefit",'',""),page.querySelector(".lnkPremiere").addEventListener("click",onSupporterLinkClick)}).on("pageshow","#supporterKeyPage",function(){var page=this;loadUserInfo(page),load(page)})}); \ No newline at end of file diff --git a/dashboard-ui/scripts/syncsettings.js b/dashboard-ui/scripts/syncsettings.js index 207d865cfc..032bb80c9f 100644 --- a/dashboard-ui/scripts/syncsettings.js +++ b/dashboard-ui/scripts/syncsettings.js @@ -1 +1 @@ -define(["jQuery","fnchecked"],function($){"use strict";function loadPage(page,config){$("#txtSyncTempPath",page).val(config.TemporaryPath||""),$("#txtUploadSpeedLimit",page).val(config.UploadSpeedLimitBytes/1e6||""),$("#txtCpuCoreLimit",page).val(config.TranscodingCpuCoreLimit),$("#chkEnableFullSpeedConversion",page).checked(config.EnableFullSpeedTranscoding),Dashboard.hideLoadingMsg()}function onSubmit(){Dashboard.showLoadingMsg();var form=this;return ApiClient.getNamedConfiguration("sync").then(function(config){config.TemporaryPath=$("#txtSyncTempPath",form).val(),config.UploadSpeedLimitBytes=parseInt(1e6*parseFloat($("#txtUploadSpeedLimit",form).val()||"0")),config.TranscodingCpuCoreLimit=parseInt($("#txtCpuCoreLimit",form).val()),config.EnableFullSpeedTranscoding=$("#chkEnableFullSpeedConversion",form).checked(),ApiClient.updateNamedConfiguration("sync",config).then(Dashboard.processServerConfigurationUpdateResult)}),!1}function getTabs(){return[{href:"syncactivity.html",name:Globalize.translate("TabSyncJobs")},{href:"appservices.html?context=sync",name:Globalize.translate("TabServices")},{href:"syncsettings.html",name:Globalize.translate("TabSettings")}]}$(document).on("pageinit","#syncSettingsPage",function(){var page=this;$("#btnSelectSyncTempPath",page).on("click.selectDirectory",function(){require(["directorybrowser"],function(directoryBrowser){var picker=new directoryBrowser;picker.show({callback:function(path){path&&$("#txtSyncTempPath",page).val(path),picker.close()}})})}),$(".syncSettingsForm").off("submit",onSubmit).on("submit",onSubmit)}).on("pageshow","#syncSettingsPage",function(){Dashboard.showLoadingMsg(),LibraryMenu.setTabs("syncadmin",2,getTabs);var page=this;ApiClient.getNamedConfiguration("sync").then(function(config){loadPage(page,config)})})}); \ No newline at end of file +define(["jQuery","loading","fnchecked"],function($,loading){"use strict";function loadPage(page,config){$("#txtSyncTempPath",page).val(config.TemporaryPath||""),$("#txtUploadSpeedLimit",page).val(config.UploadSpeedLimitBytes/1e6||""),$("#txtCpuCoreLimit",page).val(config.TranscodingCpuCoreLimit),$("#chkEnableFullSpeedConversion",page).checked(config.EnableFullSpeedTranscoding),loading.hide()}function onSubmit(){loading.show();var form=this;return ApiClient.getNamedConfiguration("sync").then(function(config){config.TemporaryPath=$("#txtSyncTempPath",form).val(),config.UploadSpeedLimitBytes=parseInt(1e6*parseFloat($("#txtUploadSpeedLimit",form).val()||"0")),config.TranscodingCpuCoreLimit=parseInt($("#txtCpuCoreLimit",form).val()),config.EnableFullSpeedTranscoding=$("#chkEnableFullSpeedConversion",form).checked(),ApiClient.updateNamedConfiguration("sync",config).then(Dashboard.processServerConfigurationUpdateResult)}),!1}function getTabs(){return[{href:"syncactivity.html",name:Globalize.translate("TabSyncJobs")},{href:"appservices.html?context=sync",name:Globalize.translate("TabServices")},{href:"syncsettings.html",name:Globalize.translate("TabSettings")}]}$(document).on("pageinit","#syncSettingsPage",function(){var page=this;$("#btnSelectSyncTempPath",page).on("click.selectDirectory",function(){require(["directorybrowser"],function(directoryBrowser){var picker=new directoryBrowser;picker.show({callback:function(path){path&&$("#txtSyncTempPath",page).val(path),picker.close()}})})}),$(".syncSettingsForm").off("submit",onSubmit).on("submit",onSubmit)}).on("pageshow","#syncSettingsPage",function(){loading.show(),LibraryMenu.setTabs("syncadmin",2,getTabs);var page=this;ApiClient.getNamedConfiguration("sync").then(function(config){loadPage(page,config)})})}); \ No newline at end of file diff --git a/dashboard-ui/scripts/tvgenres.js b/dashboard-ui/scripts/tvgenres.js index e7e32e6270..7591f95d20 100644 --- a/dashboard-ui/scripts/tvgenres.js +++ b/dashboard-ui/scripts/tvgenres.js @@ -1 +1 @@ -define(["libraryBrowser","cardBuilder","lazyLoader","apphost","globalize","dom"],function(libraryBrowser,cardBuilder,lazyLoader,appHost,globalize,dom){"use strict";return function(view,params,tabContent){function getPageData(){var key=getSavedQueryKey(),pageData=data[key];return pageData||(pageData=data[key]={query:{SortBy:"SortName",SortOrder:"Ascending",IncludeItemTypes:"Series",Recursive:!0,EnableTotalRecordCount:!1},view:"Poster"},pageData.query.ParentId=params.topParentId,libraryBrowser.loadSavedQueryValues(key,pageData.query)),pageData}function getQuery(){return getPageData().query}function getSavedQueryKey(){return libraryBrowser.getSavedQueryKey("seriesgenres")}function getPromise(){Dashboard.showLoadingMsg();var query=getQuery();return ApiClient.getGenres(Dashboard.getCurrentUserId(),query)}function enableScrollX(){return browserInfo.mobile}function getThumbShape(){return enableScrollX()?"overflowBackdrop":"backdrop"}function getPortraitShape(){return enableScrollX()?"overflowPortrait":"portrait"}function getMoreItemsHref(itemId,type){return"secondaryitems.html?type="+type+"&genreId="+itemId+"&parentId="+params.topParentId}function fillItemsContainer(elem){var id=elem.getAttribute("data-id"),viewStyle=self.getCurrentViewStyle(),limit="Thumb"==viewStyle||"ThumbCard"==viewStyle?5:8;enableScrollX()&&(limit=10);var enableImageTypes="Thumb"==viewStyle||"ThumbCard"==viewStyle?"Primary,Backdrop,Thumb":"Primary",query={SortBy:"SortName",SortOrder:"Ascending",IncludeItemTypes:"Series",Recursive:!0,Fields:"PrimaryImageAspectRatio,MediaSourceCount,BasicSyncInfo",ImageTypeLimit:1,EnableImageTypes:enableImageTypes,Limit:limit,GenreIds:id,EnableTotalRecordCount:!1,ParentId:params.topParentId};ApiClient.getItems(Dashboard.getCurrentUserId(),query).then(function(result){var supportsImageAnalysis=appHost.supports("imageanalysis");"Thumb"==viewStyle?cardBuilder.buildCards(result.Items,{itemsContainer:elem,shape:getThumbShape(),preferThumb:!0,showTitle:!0,scalable:!0,centerText:!0,overlayMoreButton:!0,allowBottomPadding:!1}):"ThumbCard"==viewStyle?cardBuilder.buildCards(result.Items,{itemsContainer:elem,shape:getThumbShape(),preferThumb:!0,showTitle:!0,scalable:!0,centerText:!1,cardLayout:!0,vibrant:supportsImageAnalysis,showSeriesYear:!0}):"PosterCard"==viewStyle?cardBuilder.buildCards(result.Items,{itemsContainer:elem,shape:getPortraitShape(),showTitle:!0,scalable:!0,centerText:!1,cardLayout:!0,vibrant:supportsImageAnalysis,showSeriesYear:!0}):"Poster"==viewStyle&&cardBuilder.buildCards(result.Items,{itemsContainer:elem,shape:getPortraitShape(),scalable:!0,overlayMoreButton:!0,allowBottomPadding:!1}),result.Items.length>=query.Limit&&tabContent.querySelector(".btnMoreFromGenre"+id).classList.remove("hide")})}function reloadItems(context,promise){var query=getQuery();promise.then(function(result){for(var elem=context.querySelector("#items"),html="",items=result.Items,i=0,length=items.length;i',html+='
',html+='

',html+=item.Name,html+="

",html+='",html+="
",html+=enableScrollX()?'
':'
',html+="
",html+="
"}elem.innerHTML=html,lazyLoader.lazyChildren(elem,fillItemsContainer),libraryBrowser.saveQueryValues(getSavedQueryKey(),query),Dashboard.hideLoadingMsg()})}function fullyReload(){self.preRender(),self.renderTab()}var self=this,data={};dom.addEventListener(tabContent,"click",function(e){var btnMoreFromGenre=dom.parentWithClass(e.target,"btnMoreFromGenre");if(btnMoreFromGenre){var id=btnMoreFromGenre.getAttribute("data-id");Dashboard.navigate(getMoreItemsHref(id,"Series"))}},{passive:!0}),self.getViewStyles=function(){return"Poster,PosterCard,Thumb,ThumbCard".split(",")},self.getCurrentViewStyle=function(){return getPageData(tabContent).view},self.setCurrentViewStyle=function(viewStyle){getPageData(tabContent).view=viewStyle,libraryBrowser.saveViewSetting(getSavedQueryKey(tabContent),viewStyle),fullyReload()},self.enableViewSelection=!0;var promise;self.preRender=function(){promise=getPromise()},self.renderTab=function(){reloadItems(tabContent,promise)}}}); \ No newline at end of file +define(["loading","libraryBrowser","cardBuilder","lazyLoader","apphost","globalize","dom"],function(loading,libraryBrowser,cardBuilder,lazyLoader,appHost,globalize,dom){"use strict";return function(view,params,tabContent){function getPageData(){var key=getSavedQueryKey(),pageData=data[key];return pageData||(pageData=data[key]={query:{SortBy:"SortName",SortOrder:"Ascending",IncludeItemTypes:"Series",Recursive:!0,EnableTotalRecordCount:!1},view:"Poster"},pageData.query.ParentId=params.topParentId,libraryBrowser.loadSavedQueryValues(key,pageData.query)),pageData}function getQuery(){return getPageData().query}function getSavedQueryKey(){return libraryBrowser.getSavedQueryKey("seriesgenres")}function getPromise(){loading.show();var query=getQuery();return ApiClient.getGenres(Dashboard.getCurrentUserId(),query)}function enableScrollX(){return browserInfo.mobile}function getThumbShape(){return enableScrollX()?"overflowBackdrop":"backdrop"}function getPortraitShape(){return enableScrollX()?"overflowPortrait":"portrait"}function getMoreItemsHref(itemId,type){return"secondaryitems.html?type="+type+"&genreId="+itemId+"&parentId="+params.topParentId}function fillItemsContainer(elem){var id=elem.getAttribute("data-id"),viewStyle=self.getCurrentViewStyle(),limit="Thumb"==viewStyle||"ThumbCard"==viewStyle?5:8;enableScrollX()&&(limit=10);var enableImageTypes="Thumb"==viewStyle||"ThumbCard"==viewStyle?"Primary,Backdrop,Thumb":"Primary",query={SortBy:"SortName",SortOrder:"Ascending",IncludeItemTypes:"Series",Recursive:!0,Fields:"PrimaryImageAspectRatio,MediaSourceCount,BasicSyncInfo",ImageTypeLimit:1,EnableImageTypes:enableImageTypes,Limit:limit,GenreIds:id,EnableTotalRecordCount:!1,ParentId:params.topParentId};ApiClient.getItems(Dashboard.getCurrentUserId(),query).then(function(result){var supportsImageAnalysis=appHost.supports("imageanalysis");"Thumb"==viewStyle?cardBuilder.buildCards(result.Items,{itemsContainer:elem,shape:getThumbShape(),preferThumb:!0,showTitle:!0,scalable:!0,centerText:!0,overlayMoreButton:!0,allowBottomPadding:!1}):"ThumbCard"==viewStyle?cardBuilder.buildCards(result.Items,{itemsContainer:elem,shape:getThumbShape(),preferThumb:!0,showTitle:!0,scalable:!0,centerText:!1,cardLayout:!0,vibrant:supportsImageAnalysis,showSeriesYear:!0}):"PosterCard"==viewStyle?cardBuilder.buildCards(result.Items,{itemsContainer:elem,shape:getPortraitShape(),showTitle:!0,scalable:!0,centerText:!1,cardLayout:!0,vibrant:supportsImageAnalysis,showSeriesYear:!0}):"Poster"==viewStyle&&cardBuilder.buildCards(result.Items,{itemsContainer:elem,shape:getPortraitShape(),scalable:!0,overlayMoreButton:!0,allowBottomPadding:!1}),result.Items.length>=query.Limit&&tabContent.querySelector(".btnMoreFromGenre"+id).classList.remove("hide")})}function reloadItems(context,promise){var query=getQuery();promise.then(function(result){for(var elem=context.querySelector("#items"),html="",items=result.Items,i=0,length=items.length;i',html+='
',html+='

',html+=item.Name,html+="

",html+='",html+="
",html+=enableScrollX()?'
':'
',html+="
",html+="
"}elem.innerHTML=html,lazyLoader.lazyChildren(elem,fillItemsContainer),libraryBrowser.saveQueryValues(getSavedQueryKey(),query),loading.hide()})}function fullyReload(){self.preRender(),self.renderTab()}var self=this,data={};dom.addEventListener(tabContent,"click",function(e){var btnMoreFromGenre=dom.parentWithClass(e.target,"btnMoreFromGenre");if(btnMoreFromGenre){var id=btnMoreFromGenre.getAttribute("data-id");Dashboard.navigate(getMoreItemsHref(id,"Series"))}},{passive:!0}),self.getViewStyles=function(){return"Poster,PosterCard,Thumb,ThumbCard".split(",")},self.getCurrentViewStyle=function(){return getPageData(tabContent).view},self.setCurrentViewStyle=function(viewStyle){getPageData(tabContent).view=viewStyle,libraryBrowser.saveViewSetting(getSavedQueryKey(tabContent),viewStyle),fullyReload()},self.enableViewSelection=!0;var promise;self.preRender=function(){promise=getPromise()},self.renderTab=function(){reloadItems(tabContent,promise)}}}); \ No newline at end of file diff --git a/dashboard-ui/scripts/tvlatest.js b/dashboard-ui/scripts/tvlatest.js index 09442f3f76..35bd502bc2 100644 --- a/dashboard-ui/scripts/tvlatest.js +++ b/dashboard-ui/scripts/tvlatest.js @@ -1 +1 @@ -define(["components/categorysyncbuttons","components/groupedcards","cardBuilder","apphost","imageLoader"],function(categorysyncbuttons,groupedcards,cardBuilder,appHost,imageLoader){"use strict";function getLatestPromise(context,params){Dashboard.showLoadingMsg();var userId=Dashboard.getCurrentUserId(),parentId=params.topParentId,options={IncludeItemTypes:"Episode",Limit:30,Fields:"PrimaryImageAspectRatio,BasicSyncInfo",ParentId:parentId,ImageTypeLimit:1,EnableImageTypes:"Primary,Backdrop,Thumb"};return ApiClient.getJSON(ApiClient.getUrl("Users/"+userId+"/Items/Latest",options))}function loadLatest(context,params,promise){promise.then(function(items){var html="",supportsImageAnalysis=appHost.supports("imageanalysis"),cardLayout=supportsImageAnalysis;html+=cardBuilder.getCardsHtml({items:items,shape:"backdrop",preferThumb:!0,showTitle:!0,showSeriesYear:!0,showParentTitle:!0,overlayText:!1,cardLayout:cardLayout,showUnplayedIndicator:!1,showChildCountIndicator:!0,centerText:!cardLayout,lazy:!0,overlayPlayButton:!0,vibrant:supportsImageAnalysis,lines:2});var elem=context.querySelector("#latestEpisodes");elem.innerHTML=html,imageLoader.lazyChildren(elem),Dashboard.hideLoadingMsg()})}return function(view,params,tabContent){var self=this;categorysyncbuttons.init(tabContent);var latestPromise;self.preRender=function(){latestPromise=getLatestPromise(view,params)},self.renderTab=function(){loadLatest(tabContent,params,latestPromise)},tabContent.querySelector("#latestEpisodes").addEventListener("click",groupedcards.onItemsContainerClick)}}); \ No newline at end of file +define(["loading","components/categorysyncbuttons","components/groupedcards","cardBuilder","apphost","imageLoader"],function(loading,categorysyncbuttons,groupedcards,cardBuilder,appHost,imageLoader){"use strict";function getLatestPromise(context,params){loading.show();var userId=Dashboard.getCurrentUserId(),parentId=params.topParentId,options={IncludeItemTypes:"Episode",Limit:30,Fields:"PrimaryImageAspectRatio,BasicSyncInfo",ParentId:parentId,ImageTypeLimit:1,EnableImageTypes:"Primary,Backdrop,Thumb"};return ApiClient.getJSON(ApiClient.getUrl("Users/"+userId+"/Items/Latest",options))}function loadLatest(context,params,promise){promise.then(function(items){var html="",supportsImageAnalysis=appHost.supports("imageanalysis"),cardLayout=supportsImageAnalysis;html+=cardBuilder.getCardsHtml({items:items,shape:"backdrop",preferThumb:!0,showTitle:!0,showSeriesYear:!0,showParentTitle:!0,overlayText:!1,cardLayout:cardLayout,showUnplayedIndicator:!1,showChildCountIndicator:!0,centerText:!cardLayout,lazy:!0,overlayPlayButton:!0,vibrant:supportsImageAnalysis,lines:2});var elem=context.querySelector("#latestEpisodes");elem.innerHTML=html,imageLoader.lazyChildren(elem),loading.hide()})}return function(view,params,tabContent){var self=this;categorysyncbuttons.init(tabContent);var latestPromise;self.preRender=function(){latestPromise=getLatestPromise(view,params)},self.renderTab=function(){loadLatest(tabContent,params,latestPromise)},tabContent.querySelector("#latestEpisodes").addEventListener("click",groupedcards.onItemsContainerClick)}}); \ No newline at end of file diff --git a/dashboard-ui/scripts/tvrecommended.js b/dashboard-ui/scripts/tvrecommended.js index c6373d71a2..b322649cc9 100644 --- a/dashboard-ui/scripts/tvrecommended.js +++ b/dashboard-ui/scripts/tvrecommended.js @@ -1 +1 @@ -define(["libraryBrowser","dom","components/categorysyncbuttons","cardBuilder","apphost","playbackManager","mainTabsManager","scrollStyles","emby-itemscontainer","emby-button"],function(libraryBrowser,dom,categorysyncbuttons,cardBuilder,appHost,playbackManager,mainTabsManager){"use strict";function getTabs(){return[{name:Globalize.translate("TabSuggestions")},{name:Globalize.translate("TabLatest")},{name:Globalize.translate("TabShows")},{name:Globalize.translate("TabUpcoming")},{name:Globalize.translate("TabGenres")},{name:Globalize.translate("TabNetworks")},{name:Globalize.translate("TabEpisodes")}]}return function(view,params){function reload(){Dashboard.showLoadingMsg(),loadResume(),loadNextUp()}function loadNextUp(){var query={Limit:24,Fields:"PrimaryImageAspectRatio,SeriesInfo,DateCreated,BasicSyncInfo",UserId:Dashboard.getCurrentUserId(),ImageTypeLimit:1,EnableImageTypes:"Primary,Backdrop,Thumb",EnableTotalRecordCount:!1};query.ParentId=LibraryMenu.getTopParentId(),ApiClient.getNextUpEpisodes(query).then(function(result){result.Items.length?view.querySelector(".noNextUpItems").classList.add("hide"):view.querySelector(".noNextUpItems").classList.remove("hide");var container=view.querySelector("#nextUpItems"),supportsImageAnalysis=appHost.supports("imageanalysis");cardBuilder.buildCards(result.Items,{itemsContainer:container,preferThumb:!0,shape:"backdrop",scalable:!0,showTitle:!0,showParentTitle:!0,overlayText:!1,centerText:!supportsImageAnalysis,overlayPlayButton:!0,cardLayout:supportsImageAnalysis,vibrant:supportsImageAnalysis}),Dashboard.hideLoadingMsg()})}function enableScrollX(){return browserInfo.mobile}function getThumbShape(){return enableScrollX()?"overflowBackdrop":"backdrop"}function loadResume(){var parentId=LibraryMenu.getTopParentId(),screenWidth=dom.getWindowSize().innerWidth,limit=screenWidth>=1600?5:6,options={SortBy:"DatePlayed",SortOrder:"Descending",IncludeItemTypes:"Episode",Filters:"IsResumable",Limit:limit,Recursive:!0,Fields:"PrimaryImageAspectRatio,SeriesInfo,UserData,BasicSyncInfo",ExcludeLocationTypes:"Virtual",ParentId:parentId,ImageTypeLimit:1,EnableImageTypes:"Primary,Backdrop,Thumb",EnableTotalRecordCount:!1};ApiClient.getItems(Dashboard.getCurrentUserId(),options).then(function(result){result.Items.length?view.querySelector("#resumableSection").classList.remove("hide"):view.querySelector("#resumableSection").classList.add("hide");var allowBottomPadding=!enableScrollX(),container=view.querySelector("#resumableItems"),supportsImageAnalysis=appHost.supports("imageanalysis"),cardLayout=supportsImageAnalysis;cardBuilder.buildCards(result.Items,{itemsContainer:container,preferThumb:!0,shape:getThumbShape(),scalable:!0,showTitle:!0,showParentTitle:!0,overlayText:!1,centerText:!cardLayout,overlayPlayButton:!0,allowBottomPadding:allowBottomPadding,cardLayout:cardLayout,vibrant:supportsImageAnalysis})})}function onBeforeTabChange(e){preLoadTab(view,parseInt(e.detail.selectedTabIndex))}function onTabChange(e){loadTab(view,parseInt(e.detail.selectedTabIndex))}function initTabs(){var tabsReplaced=mainTabsManager.setTabs(view,currentTabIndex,getTabs);if(tabsReplaced){var viewTabs=document.querySelector(".tabs-viewmenubar");viewTabs.addEventListener("beforetabchange",onBeforeTabChange),viewTabs.addEventListener("tabchange",onTabChange),libraryBrowser.configurePaperLibraryTabs(view,viewTabs,view.querySelectorAll(".pageTabContent"),[0,1,2,4,5,6]),viewTabs.triggerBeforeTabChange||viewTabs.addEventListener("ready",function(){viewTabs.triggerBeforeTabChange()})}}function getTabController(page,index,callback){var depends=[];switch(index){case 0:break;case 1:depends.push("scripts/tvlatest");break;case 2:depends.push("scripts/tvshows");break;case 3:depends.push("scripts/tvupcoming");break;case 4:depends.push("scripts/tvgenres");break;case 5:depends.push("scripts/tvstudios");break;case 6:depends.push("scripts/episodes")}require(depends,function(controllerFactory){var tabContent;0==index&&(tabContent=view.querySelector(".pageTabContent[data-index='"+index+"']"),self.tabContent=tabContent);var controller=tabControllers[index];controller||(tabContent=view.querySelector(".pageTabContent[data-index='"+index+"']"),controller=index?new controllerFactory(view,params,tabContent):self,tabControllers[index]=controller,controller.initTab&&controller.initTab()),callback(controller)})}function preLoadTab(page,index){getTabController(page,index,function(controller){renderedTabs.indexOf(index)==-1&&controller.preRender&&controller.preRender()})}function loadTab(page,index){currentTabIndex=index,getTabController(page,index,function(controller){renderedTabs.indexOf(index)==-1&&(renderedTabs.push(index),controller.renderTab())})}function onPlaybackStop(e,state){state.NowPlayingItem&&"Video"==state.NowPlayingItem.MediaType&&(renderedTabs=[],mainTabsManager.getTabsElement().triggerTabChange())}function onWebSocketMessage(e,data){var msg=data;"UserDataChanged"===msg.MessageType&&msg.Data.UserId==Dashboard.getCurrentUserId()&&(renderedTabs=[])}var self=this,currentTabIndex=parseInt(params.tab||"0");self.initTab=function(){var tabContent=self.tabContent,resumableItemsContainer=tabContent.querySelector("#resumableItems");enableScrollX()?(resumableItemsContainer.classList.add("hiddenScrollX"),resumableItemsContainer.classList.remove("vertical-wrap")):(resumableItemsContainer.classList.remove("hiddenScrollX"),resumableItemsContainer.classList.add("vertical-wrap")),categorysyncbuttons.init(tabContent)},self.renderTab=function(){reload()};var tabControllers=[],renderedTabs=[];enableScrollX()?view.querySelector("#resumableItems").classList.add("hiddenScrollX"):view.querySelector("#resumableItems").classList.remove("hiddenScrollX"),view.addEventListener("viewbeforeshow",function(e){if(initTabs(),!view.getAttribute("data-title")){var parentId=params.topParentId;parentId?ApiClient.getItem(Dashboard.getCurrentUserId(),parentId).then(function(item){view.setAttribute("data-title",item.Name),LibraryMenu.setTitle(item.Name)}):(view.setAttribute("data-title",Globalize.translate("TabShows")),LibraryMenu.setTitle(Globalize.translate("TabShows")))}var tabs=mainTabsManager.getTabsElement();tabs.triggerBeforeTabChange&&tabs.triggerBeforeTabChange(),Events.on(playbackManager,"playbackstop",onPlaybackStop),Events.on(ApiClient,"websocketmessage",onWebSocketMessage)}),view.addEventListener("viewshow",function(e){mainTabsManager.getTabsElement().triggerTabChange()}),view.addEventListener("viewbeforehide",function(e){Events.off(playbackManager,"playbackstop",onPlaybackStop),Events.off(ApiClient,"websocketmessage",onWebSocketMessage)}),view.addEventListener("viewdestroy",function(e){tabControllers.forEach(function(t){t.destroy&&t.destroy()})})}}); \ No newline at end of file +define(["loading","libraryBrowser","dom","components/categorysyncbuttons","cardBuilder","apphost","playbackManager","mainTabsManager","scrollStyles","emby-itemscontainer","emby-button"],function(loading,libraryBrowser,dom,categorysyncbuttons,cardBuilder,appHost,playbackManager,mainTabsManager){"use strict";function getTabs(){return[{name:Globalize.translate("TabSuggestions")},{name:Globalize.translate("TabLatest")},{name:Globalize.translate("TabShows")},{name:Globalize.translate("TabUpcoming")},{name:Globalize.translate("TabGenres")},{name:Globalize.translate("TabNetworks")},{name:Globalize.translate("TabEpisodes")}]}return function(view,params){function reload(){loading.show(),loadResume(),loadNextUp()}function loadNextUp(){var query={Limit:24,Fields:"PrimaryImageAspectRatio,SeriesInfo,DateCreated,BasicSyncInfo",UserId:Dashboard.getCurrentUserId(),ImageTypeLimit:1,EnableImageTypes:"Primary,Backdrop,Thumb",EnableTotalRecordCount:!1};query.ParentId=LibraryMenu.getTopParentId(),ApiClient.getNextUpEpisodes(query).then(function(result){result.Items.length?view.querySelector(".noNextUpItems").classList.add("hide"):view.querySelector(".noNextUpItems").classList.remove("hide");var container=view.querySelector("#nextUpItems"),supportsImageAnalysis=appHost.supports("imageanalysis");cardBuilder.buildCards(result.Items,{itemsContainer:container,preferThumb:!0,shape:"backdrop",scalable:!0,showTitle:!0,showParentTitle:!0,overlayText:!1,centerText:!supportsImageAnalysis,overlayPlayButton:!0,cardLayout:supportsImageAnalysis,vibrant:supportsImageAnalysis}),loading.hide()})}function enableScrollX(){return browserInfo.mobile}function getThumbShape(){return enableScrollX()?"overflowBackdrop":"backdrop"}function loadResume(){var parentId=LibraryMenu.getTopParentId(),screenWidth=dom.getWindowSize().innerWidth,limit=screenWidth>=1600?5:6,options={SortBy:"DatePlayed",SortOrder:"Descending",IncludeItemTypes:"Episode",Filters:"IsResumable",Limit:limit,Recursive:!0,Fields:"PrimaryImageAspectRatio,SeriesInfo,UserData,BasicSyncInfo",ExcludeLocationTypes:"Virtual",ParentId:parentId,ImageTypeLimit:1,EnableImageTypes:"Primary,Backdrop,Thumb",EnableTotalRecordCount:!1};ApiClient.getItems(Dashboard.getCurrentUserId(),options).then(function(result){result.Items.length?view.querySelector("#resumableSection").classList.remove("hide"):view.querySelector("#resumableSection").classList.add("hide");var allowBottomPadding=!enableScrollX(),container=view.querySelector("#resumableItems"),supportsImageAnalysis=appHost.supports("imageanalysis"),cardLayout=supportsImageAnalysis;cardBuilder.buildCards(result.Items,{itemsContainer:container,preferThumb:!0,shape:getThumbShape(),scalable:!0,showTitle:!0,showParentTitle:!0,overlayText:!1,centerText:!cardLayout,overlayPlayButton:!0,allowBottomPadding:allowBottomPadding,cardLayout:cardLayout,vibrant:supportsImageAnalysis})})}function onBeforeTabChange(e){preLoadTab(view,parseInt(e.detail.selectedTabIndex))}function onTabChange(e){loadTab(view,parseInt(e.detail.selectedTabIndex))}function initTabs(){var tabsReplaced=mainTabsManager.setTabs(view,currentTabIndex,getTabs);if(tabsReplaced){var viewTabs=document.querySelector(".tabs-viewmenubar");viewTabs.addEventListener("beforetabchange",onBeforeTabChange),viewTabs.addEventListener("tabchange",onTabChange),libraryBrowser.configurePaperLibraryTabs(view,viewTabs,view.querySelectorAll(".pageTabContent"),[0,1,2,4,5,6]),viewTabs.triggerBeforeTabChange||viewTabs.addEventListener("ready",function(){viewTabs.triggerBeforeTabChange()})}}function getTabController(page,index,callback){var depends=[];switch(index){case 0:break;case 1:depends.push("scripts/tvlatest");break;case 2:depends.push("scripts/tvshows");break;case 3:depends.push("scripts/tvupcoming");break;case 4:depends.push("scripts/tvgenres");break;case 5:depends.push("scripts/tvstudios");break;case 6:depends.push("scripts/episodes")}require(depends,function(controllerFactory){var tabContent;0==index&&(tabContent=view.querySelector(".pageTabContent[data-index='"+index+"']"),self.tabContent=tabContent);var controller=tabControllers[index];controller||(tabContent=view.querySelector(".pageTabContent[data-index='"+index+"']"),controller=index?new controllerFactory(view,params,tabContent):self,tabControllers[index]=controller,controller.initTab&&controller.initTab()),callback(controller)})}function preLoadTab(page,index){getTabController(page,index,function(controller){renderedTabs.indexOf(index)==-1&&controller.preRender&&controller.preRender()})}function loadTab(page,index){currentTabIndex=index,getTabController(page,index,function(controller){renderedTabs.indexOf(index)==-1&&(renderedTabs.push(index),controller.renderTab())})}function onPlaybackStop(e,state){state.NowPlayingItem&&"Video"==state.NowPlayingItem.MediaType&&(renderedTabs=[],mainTabsManager.getTabsElement().triggerTabChange())}function onWebSocketMessage(e,data){var msg=data;"UserDataChanged"===msg.MessageType&&msg.Data.UserId==Dashboard.getCurrentUserId()&&(renderedTabs=[])}var self=this,currentTabIndex=parseInt(params.tab||"0");self.initTab=function(){var tabContent=self.tabContent,resumableItemsContainer=tabContent.querySelector("#resumableItems");enableScrollX()?(resumableItemsContainer.classList.add("hiddenScrollX"),resumableItemsContainer.classList.remove("vertical-wrap")):(resumableItemsContainer.classList.remove("hiddenScrollX"),resumableItemsContainer.classList.add("vertical-wrap")),categorysyncbuttons.init(tabContent)},self.renderTab=function(){reload()};var tabControllers=[],renderedTabs=[];enableScrollX()?view.querySelector("#resumableItems").classList.add("hiddenScrollX"):view.querySelector("#resumableItems").classList.remove("hiddenScrollX"),view.addEventListener("viewbeforeshow",function(e){if(initTabs(),!view.getAttribute("data-title")){var parentId=params.topParentId;parentId?ApiClient.getItem(Dashboard.getCurrentUserId(),parentId).then(function(item){view.setAttribute("data-title",item.Name),LibraryMenu.setTitle(item.Name)}):(view.setAttribute("data-title",Globalize.translate("TabShows")),LibraryMenu.setTitle(Globalize.translate("TabShows")))}var tabs=mainTabsManager.getTabsElement();tabs.triggerBeforeTabChange&&tabs.triggerBeforeTabChange(),Events.on(playbackManager,"playbackstop",onPlaybackStop),Events.on(ApiClient,"websocketmessage",onWebSocketMessage)}),view.addEventListener("viewshow",function(e){mainTabsManager.getTabsElement().triggerTabChange()}),view.addEventListener("viewbeforehide",function(e){Events.off(playbackManager,"playbackstop",onPlaybackStop),Events.off(ApiClient,"websocketmessage",onWebSocketMessage)}),view.addEventListener("viewdestroy",function(e){tabControllers.forEach(function(t){t.destroy&&t.destroy()})})}}); \ No newline at end of file diff --git a/dashboard-ui/scripts/tvshows.js b/dashboard-ui/scripts/tvshows.js index f5301d7ae7..51ee081580 100644 --- a/dashboard-ui/scripts/tvshows.js +++ b/dashboard-ui/scripts/tvshows.js @@ -1 +1 @@ -define(["events","libraryBrowser","imageLoader","listView","cardBuilder","apphost","alphaPicker","emby-itemscontainer"],function(events,libraryBrowser,imageLoader,listView,cardBuilder,appHost,alphaPicker){"use strict";return function(view,params,tabContent){function getPageData(context){var key=getSavedQueryKey(context),pageData=data[key];return pageData||(pageData=data[key]={query:{SortBy:"SortName",SortOrder:"Ascending",IncludeItemTypes:"Series",Recursive:!0,Fields:"PrimaryImageAspectRatio,BasicSyncInfo",ImageTypeLimit:1,EnableImageTypes:"Primary,Backdrop,Banner,Thumb",StartIndex:0,Limit:pageSize},view:libraryBrowser.getSavedView(key)||"Poster"},pageData.query.ParentId=params.topParentId,libraryBrowser.loadSavedQueryValues(key,pageData.query)),pageData}function getQuery(context){return getPageData(context).query}function getSavedQueryKey(context){return context.savedQueryKey||(context.savedQueryKey=libraryBrowser.getSavedQueryKey("series")),context.savedQueryKey}function onViewStyleChange(){var viewStyle=self.getCurrentViewStyle(),itemsContainer=tabContent.querySelector(".itemsContainer");"List"==viewStyle?(itemsContainer.classList.add("vertical-list"),itemsContainer.classList.remove("vertical-wrap")):(itemsContainer.classList.remove("vertical-list"),itemsContainer.classList.add("vertical-wrap")),itemsContainer.innerHTML=""}function reloadItems(page){Dashboard.showLoadingMsg();var query=getQuery(page);ApiClient.getItems(Dashboard.getCurrentUserId(),query).then(function(result){function onNextPageClick(){query.StartIndex+=query.Limit,reloadItems(tabContent)}function onPreviousPageClick(){query.StartIndex-=query.Limit,reloadItems(tabContent)}window.scrollTo(0,0),updateFilterControls(page);var html,pagingHtml=LibraryBrowser.getQueryPagingHtml({startIndex:query.StartIndex,limit:query.Limit,totalRecordCount:result.TotalRecordCount,showLimit:!1,updatePageSizeSetting:!1,addLayoutButton:!1,sortButton:!1,filterButton:!1}),viewStyle=self.getCurrentViewStyle(),supportsImageAnalysis=appHost.supports("imageanalysis");html="Thumb"==viewStyle?cardBuilder.getCardsHtml({items:result.Items,shape:"backdrop",preferThumb:!0,context:"tvshows",lazy:!0,overlayMoreButton:!0}):"ThumbCard"==viewStyle?cardBuilder.getCardsHtml({items:result.Items,shape:"backdrop",preferThumb:!0,context:"tvshows",lazy:!0,cardLayout:!0,showTitle:!0,showSeriesYear:!0,vibrant:supportsImageAnalysis}):"Banner"==viewStyle?cardBuilder.getCardsHtml({items:result.Items,shape:"banner",preferBanner:!0,context:"tvshows",lazy:!0}):"List"==viewStyle?listView.getListViewHtml({items:result.Items,context:"tvshows",sortBy:query.SortBy}):"PosterCard"==viewStyle?cardBuilder.getCardsHtml({items:result.Items,shape:"portrait",context:"tvshows",showTitle:!0,showSeriesYear:!0,lazy:!0,cardLayout:!0,vibrant:supportsImageAnalysis}):cardBuilder.getCardsHtml({items:result.Items,shape:"portrait",context:"tvshows",centerText:!0,lazy:!0,overlayMoreButton:!0});var i,length,elems=tabContent.querySelectorAll(".paging");for(i=0,length=elems.length;i',html+='

'+group.name+"

";var allowBottomPadding=!0;enableScrollX()?(allowBottomPadding=!1,html+='
'):html+='
';var supportsImageAnalysis=appHost.supports("imageanalysis");html+=cardBuilder.getCardsHtml({items:group.items,showLocationTypeIndicator:!1,shape:getThumbShape(),showTitle:!0,preferThumb:!0,lazy:!0,showDetailsMenu:!0,centerText:!supportsImageAnalysis,showParentTitle:!0,overlayText:!1,allowBottomPadding:allowBottomPadding,cardLayout:supportsImageAnalysis,vibrant:supportsImageAnalysis}),html+="
",html+="
"}elem.innerHTML=html,imageLoader.lazyChildren(elem)}return function(view,params,tabContent){var upcomingPromise,self=this;self.preRender=function(){upcomingPromise=getUpcomingPromise(view,params)},self.renderTab=function(){loadUpcoming(tabContent,params,upcomingPromise)}}}); \ No newline at end of file +define(["loading","datetime","libraryBrowser","cardBuilder","apphost","imageLoader","scrollStyles","emby-itemscontainer"],function(loading,datetime,libraryBrowser,cardBuilder,appHost,imageLoader){"use strict";function getUpcomingPromise(context,params){loading.show();var query={Limit:40,Fields:"AirTime,UserData",UserId:Dashboard.getCurrentUserId(),ImageTypeLimit:1,EnableImageTypes:"Primary,Backdrop,Banner,Thumb",EnableTotalRecordCount:!1};return query.ParentId=params.topParentId,ApiClient.getJSON(ApiClient.getUrl("Shows/Upcoming",query))}function loadUpcoming(context,params,promise){promise.then(function(result){var items=result.Items;items.length?context.querySelector(".noItemsMessage").style.display="none":context.querySelector(".noItemsMessage").style.display="block";var elem=context.querySelector("#upcomingItems");renderUpcoming(elem,items),loading.hide()})}function enableScrollX(){return browserInfo.mobile}function getThumbShape(){return enableScrollX()?"overflowBackdrop":"backdrop"}function renderUpcoming(elem,items){var i,length,groups=[],currentGroupName="",currentGroup=[];for(i=0,length=items.length;i',html+='

'+group.name+"

";var allowBottomPadding=!0;enableScrollX()?(allowBottomPadding=!1,html+='
'):html+='
';var supportsImageAnalysis=appHost.supports("imageanalysis");html+=cardBuilder.getCardsHtml({items:group.items,showLocationTypeIndicator:!1,shape:getThumbShape(),showTitle:!0,preferThumb:!0,lazy:!0,showDetailsMenu:!0,centerText:!supportsImageAnalysis,showParentTitle:!0,overlayText:!1,allowBottomPadding:allowBottomPadding,cardLayout:supportsImageAnalysis,vibrant:supportsImageAnalysis}),html+="
",html+="
"}elem.innerHTML=html,imageLoader.lazyChildren(elem)}return function(view,params,tabContent){var upcomingPromise,self=this;self.preRender=function(){upcomingPromise=getUpcomingPromise(view,params)},self.renderTab=function(){loadUpcoming(tabContent,params,upcomingPromise)}}}); \ No newline at end of file diff --git a/dashboard-ui/scripts/useredit.js b/dashboard-ui/scripts/useredit.js index e53d4dfd1c..e63b3ee6bf 100644 --- a/dashboard-ui/scripts/useredit.js +++ b/dashboard-ui/scripts/useredit.js @@ -1 +1 @@ -define(["jQuery","fnchecked"],function($){"use strict";function loadUser(page,user){currentUser=user,user.Policy.IsDisabled?$(".disabledUserBanner",page).show():$(".disabledUserBanner",page).hide(),"Guest"==user.ConnectLinkType?($("#fldConnectInfo",page).hide(),$("#txtUserName",page).prop("disabled","disabled")):($("#txtUserName",page).prop("disabled","").removeAttr("disabled"),$("#fldConnectInfo",page).show()),$(".lnkEditUserPreferences",page).attr("href","mypreferencesmenu.html?userId="+user.Id),LibraryMenu.setTitle(user.Name),$("#txtUserName",page).val(user.Name),$("#txtConnectUserName",page).val(currentUser.ConnectUserName),$("#chkIsAdmin",page).checked(user.Policy.IsAdministrator),$("#chkDisabled",page).checked(user.Policy.IsDisabled),$("#chkIsHidden",page).checked(user.Policy.IsHidden),$("#chkRemoteControlSharedDevices",page).checked(user.Policy.EnableSharedDeviceControl),$("#chkEnableRemoteControlOtherUsers",page).checked(user.Policy.EnableRemoteControlOfOtherUsers),$("#chkEnableDownloading",page).checked(user.Policy.EnableContentDownloading),$("#chkManageLiveTv",page).checked(user.Policy.EnableLiveTvManagement),$("#chkEnableLiveTvAccess",page).checked(user.Policy.EnableLiveTvAccess),$("#chkEnableContentDeletion",page).checked(user.Policy.EnableContentDeletion),$("#chkDisableUserPreferences",page).checked(!user.Policy.EnableUserPreferenceAccess),$("#chkEnableMediaPlayback",page).checked(user.Policy.EnableMediaPlayback),$("#chkEnableAudioPlaybackTranscoding",page).checked(user.Policy.EnableAudioPlaybackTranscoding),$("#chkEnableVideoPlaybackTranscoding",page).checked(user.Policy.EnableVideoPlaybackTranscoding),$("#chkEnableVideoPlaybackRemuxing",page).checked(user.Policy.EnablePlaybackRemuxing),$("#chkEnableSync",page).checked(user.Policy.EnableSync),$("#chkEnableSyncTranscoding",page).checked(user.Policy.EnableSyncTranscoding),$("#chkEnableSharing",page).checked(user.Policy.EnablePublicSharing),Dashboard.hideLoadingMsg()}function onSaveComplete(page,user){Dashboard.hideLoadingMsg();var currentConnectUsername=currentUser.ConnectUserName||"",enteredConnectUsername=$("#txtConnectUserName",page).val();currentConnectUsername==enteredConnectUsername?require(["toast"],function(toast){toast(Globalize.translate("SettingsSaved"))}):require(["connectHelper"],function(connectHelper){connectHelper.updateUserLink(ApiClient,user,$("#txtConnectUserName",page).val()).then(function(){loadData(page)})})}function saveUser(user,page){user.Name=$("#txtUserName",page).val(),user.Policy.IsAdministrator=$("#chkIsAdmin",page).checked(),user.Policy.IsHidden=$("#chkIsHidden",page).checked(),user.Policy.IsDisabled=$("#chkDisabled",page).checked(),user.Policy.EnableRemoteControlOfOtherUsers=$("#chkEnableRemoteControlOtherUsers",page).checked(),user.Policy.EnableLiveTvManagement=$("#chkManageLiveTv",page).checked(),user.Policy.EnableLiveTvAccess=$("#chkEnableLiveTvAccess",page).checked(),user.Policy.EnableContentDeletion=$("#chkEnableContentDeletion",page).checked(),user.Policy.EnableUserPreferenceAccess=!$("#chkDisableUserPreferences",page).checked(),user.Policy.EnableSharedDeviceControl=$("#chkRemoteControlSharedDevices",page).checked(),user.Policy.EnableMediaPlayback=$("#chkEnableMediaPlayback",page).checked(),user.Policy.EnableAudioPlaybackTranscoding=$("#chkEnableAudioPlaybackTranscoding",page).checked(),user.Policy.EnableVideoPlaybackTranscoding=$("#chkEnableVideoPlaybackTranscoding",page).checked(),user.Policy.EnablePlaybackRemuxing=$("#chkEnableVideoPlaybackRemuxing",page).checked(),user.Policy.EnableContentDownloading=$("#chkEnableDownloading",page).checked(),user.Policy.EnableSync=$("#chkEnableSync",page).checked(),user.Policy.EnableSyncTranscoding=$("#chkEnableSyncTranscoding",page).checked(),user.Policy.EnablePublicSharing=$("#chkEnableSharing",page).checked(),ApiClient.updateUser(user).then(function(){ApiClient.updateUserPolicy(user.Id,user.Policy).then(function(){onSaveComplete(page,user)})})}function onSubmit(){var page=$(this).parents(".page");return Dashboard.showLoadingMsg(),getUser().then(function(result){saveUser(result,page)}),!1}function getUser(){var userId=getParameterByName("userId");return ApiClient.getUser(userId)}function loadData(page){Dashboard.showLoadingMsg(),getUser().then(function(user){loadUser(page,user)})}var currentUser;$(document).on("pageinit","#editUserPage",function(){$(".editUserProfileForm").off("submit",onSubmit).on("submit",onSubmit),this.querySelector(".sharingHelp").innerHTML=Globalize.translate("OptionAllowLinkSharingHelp",30)}).on("pagebeforeshow","#editUserPage",function(){var page=this;loadData(page)})}); \ No newline at end of file +define(["jQuery","loading","fnchecked"],function($,loading){"use strict";function loadUser(page,user){currentUser=user,user.Policy.IsDisabled?$(".disabledUserBanner",page).show():$(".disabledUserBanner",page).hide(),"Guest"==user.ConnectLinkType?($("#fldConnectInfo",page).hide(),$("#txtUserName",page).prop("disabled","disabled")):($("#txtUserName",page).prop("disabled","").removeAttr("disabled"),$("#fldConnectInfo",page).show()),$(".lnkEditUserPreferences",page).attr("href","mypreferencesmenu.html?userId="+user.Id),LibraryMenu.setTitle(user.Name),$("#txtUserName",page).val(user.Name),$("#txtConnectUserName",page).val(currentUser.ConnectUserName),$("#chkIsAdmin",page).checked(user.Policy.IsAdministrator),$("#chkDisabled",page).checked(user.Policy.IsDisabled),$("#chkIsHidden",page).checked(user.Policy.IsHidden),$("#chkRemoteControlSharedDevices",page).checked(user.Policy.EnableSharedDeviceControl),$("#chkEnableRemoteControlOtherUsers",page).checked(user.Policy.EnableRemoteControlOfOtherUsers),$("#chkEnableDownloading",page).checked(user.Policy.EnableContentDownloading),$("#chkManageLiveTv",page).checked(user.Policy.EnableLiveTvManagement),$("#chkEnableLiveTvAccess",page).checked(user.Policy.EnableLiveTvAccess),$("#chkEnableContentDeletion",page).checked(user.Policy.EnableContentDeletion),$("#chkDisableUserPreferences",page).checked(!user.Policy.EnableUserPreferenceAccess),$("#chkEnableMediaPlayback",page).checked(user.Policy.EnableMediaPlayback),$("#chkEnableAudioPlaybackTranscoding",page).checked(user.Policy.EnableAudioPlaybackTranscoding),$("#chkEnableVideoPlaybackTranscoding",page).checked(user.Policy.EnableVideoPlaybackTranscoding),$("#chkEnableVideoPlaybackRemuxing",page).checked(user.Policy.EnablePlaybackRemuxing),$("#chkEnableSync",page).checked(user.Policy.EnableSync),$("#chkEnableSyncTranscoding",page).checked(user.Policy.EnableSyncTranscoding),$("#chkEnableSharing",page).checked(user.Policy.EnablePublicSharing),loading.hide()}function onSaveComplete(page,user){loading.hide();var currentConnectUsername=currentUser.ConnectUserName||"",enteredConnectUsername=$("#txtConnectUserName",page).val();currentConnectUsername==enteredConnectUsername?require(["toast"],function(toast){toast(Globalize.translate("SettingsSaved"))}):require(["connectHelper"],function(connectHelper){connectHelper.updateUserLink(ApiClient,user,$("#txtConnectUserName",page).val()).then(function(){loadData(page)})})}function saveUser(user,page){user.Name=$("#txtUserName",page).val(),user.Policy.IsAdministrator=$("#chkIsAdmin",page).checked(),user.Policy.IsHidden=$("#chkIsHidden",page).checked(),user.Policy.IsDisabled=$("#chkDisabled",page).checked(),user.Policy.EnableRemoteControlOfOtherUsers=$("#chkEnableRemoteControlOtherUsers",page).checked(),user.Policy.EnableLiveTvManagement=$("#chkManageLiveTv",page).checked(),user.Policy.EnableLiveTvAccess=$("#chkEnableLiveTvAccess",page).checked(),user.Policy.EnableContentDeletion=$("#chkEnableContentDeletion",page).checked(),user.Policy.EnableUserPreferenceAccess=!$("#chkDisableUserPreferences",page).checked(),user.Policy.EnableSharedDeviceControl=$("#chkRemoteControlSharedDevices",page).checked(),user.Policy.EnableMediaPlayback=$("#chkEnableMediaPlayback",page).checked(),user.Policy.EnableAudioPlaybackTranscoding=$("#chkEnableAudioPlaybackTranscoding",page).checked(),user.Policy.EnableVideoPlaybackTranscoding=$("#chkEnableVideoPlaybackTranscoding",page).checked(),user.Policy.EnablePlaybackRemuxing=$("#chkEnableVideoPlaybackRemuxing",page).checked(),user.Policy.EnableContentDownloading=$("#chkEnableDownloading",page).checked(),user.Policy.EnableSync=$("#chkEnableSync",page).checked(),user.Policy.EnableSyncTranscoding=$("#chkEnableSyncTranscoding",page).checked(),user.Policy.EnablePublicSharing=$("#chkEnableSharing",page).checked(),ApiClient.updateUser(user).then(function(){ApiClient.updateUserPolicy(user.Id,user.Policy).then(function(){onSaveComplete(page,user)})})}function onSubmit(){var page=$(this).parents(".page");return loading.show(),getUser().then(function(result){saveUser(result,page)}),!1}function getUser(){var userId=getParameterByName("userId");return ApiClient.getUser(userId)}function loadData(page){loading.show(),getUser().then(function(user){loadUser(page,user)})}var currentUser;$(document).on("pageinit","#editUserPage",function(){$(".editUserProfileForm").off("submit",onSubmit).on("submit",onSubmit),this.querySelector(".sharingHelp").innerHTML=Globalize.translate("OptionAllowLinkSharingHelp",30)}).on("pagebeforeshow","#editUserPage",function(){var page=this;loadData(page)})}); \ No newline at end of file diff --git a/dashboard-ui/scripts/userlibraryaccess.js b/dashboard-ui/scripts/userlibraryaccess.js index 9415eacb93..f7bc623fbe 100644 --- a/dashboard-ui/scripts/userlibraryaccess.js +++ b/dashboard-ui/scripts/userlibraryaccess.js @@ -1 +1 @@ -define(["jQuery","fnchecked"],function($){"use strict";function loadMediaFolders(page,user,mediaFolders){var html="";html+='

'+Globalize.translate("HeaderLibraries")+"

",html+='
';for(var i=0,length=mediaFolders.length;i"+folder.Name+""}html+="
",$(".folderAccess",page).html(html).trigger("create"),$("#chkEnableAllFolders",page).checked(user.Policy.EnableAllFolders).trigger("change")}function loadChannels(page,user,channels){var html="";html+='

'+Globalize.translate("HeaderChannels")+"

",html+='
';for(var i=0,length=channels.length;i"+folder.Name+""}html+="
",$(".channelAccess",page).show().html(html).trigger("create"),channels.length?$(".channelAccessContainer",page).show():$(".channelAccessContainer",page).hide(),$("#chkEnableAllChannels",page).checked(user.Policy.EnableAllChannels).trigger("change")}function loadDevices(page,user,devices){var html="";html+='

'+Globalize.translate("HeaderDevices")+"

",html+='
';for(var i=0,length=devices.length;i"+device.Name+" - "+device.AppName+""}html+="
",$(".deviceAccess",page).show().html(html).trigger("create"),$("#chkEnableAllDevices",page).checked(user.Policy.EnableAllDevices).trigger("change"),user.Policy.IsAdministrator?page.querySelector(".deviceAccessContainer").classList.add("hide"):page.querySelector(".deviceAccessContainer").classList.remove("hide")}function loadUser(page,user,loggedInUser,mediaFolders,channels,devices){$(page).trigger("userloaded",[user]),LibraryMenu.setTitle(user.Name),loadChannels(page,user,channels),loadMediaFolders(page,user,mediaFolders),loadDevices(page,user,devices),Dashboard.hideLoadingMsg()}function onSaveComplete(page){Dashboard.hideLoadingMsg(),require(["toast"],function(toast){toast(Globalize.translate("SettingsSaved"))})}function saveUser(user,page){user.Policy.EnableAllFolders=$("#chkEnableAllFolders",page).checked(),user.Policy.EnabledFolders=user.Policy.EnableAllFolders?[]:$(".chkFolder",page).get().filter(function(c){return c.checked}).map(function(c){return c.getAttribute("data-id")}),user.Policy.EnableAllChannels=$("#chkEnableAllChannels",page).checked(),user.Policy.EnabledChannels=user.Policy.EnableAllChannels?[]:$(".chkChannel",page).get().filter(function(c){return c.checked}).map(function(c){return c.getAttribute("data-id")}),user.Policy.EnableAllDevices=$("#chkEnableAllDevices",page).checked(),user.Policy.EnabledDevices=user.Policy.EnableAllDevices?[]:$(".chkDevice",page).get().filter(function(c){return c.checked}).map(function(c){return c.getAttribute("data-id")}),user.Policy.BlockedChannels=null,user.Policy.BlockedMediaFolders=null,ApiClient.updateUserPolicy(user.Id,user.Policy).then(function(){onSaveComplete(page)})}function onSubmit(){var page=$(this).parents(".page");Dashboard.showLoadingMsg();var userId=getParameterByName("userId");return ApiClient.getUser(userId).then(function(result){saveUser(result,page)}),!1}$(document).on("pageinit","#userLibraryAccessPage",function(){var page=this;$("#chkEnableAllDevices",page).on("change",function(){this.checked?$(".deviceAccessListContainer",page).hide():$(".deviceAccessListContainer",page).show()}),$("#chkEnableAllChannels",page).on("change",function(){this.checked?$(".channelAccessListContainer",page).hide():$(".channelAccessListContainer",page).show()}),$("#chkEnableAllFolders",page).on("change",function(){this.checked?$(".folderAccessListContainer",page).hide():$(".folderAccessListContainer",page).show()}),$(".userLibraryAccessForm").off("submit",onSubmit).on("submit",onSubmit)}).on("pageshow","#userLibraryAccessPage",function(){var page=this;Dashboard.showLoadingMsg();var promise1,userId=getParameterByName("userId");if(userId)promise1=ApiClient.getUser(userId);else{var deferred=$.Deferred();deferred.resolveWith(null,[{Configuration:{}}]),promise1=deferred.promise()}var promise2=Dashboard.getCurrentUser(),promise4=ApiClient.getJSON(ApiClient.getUrl("Library/MediaFolders",{IsHidden:!1})),promise5=ApiClient.getJSON(ApiClient.getUrl("Channels")),promise6=ApiClient.getJSON(ApiClient.getUrl("Devices",{SupportsPersistentIdentifier:!0}));Promise.all([promise1,promise2,promise4,promise5,promise6]).then(function(responses){loadUser(page,responses[0],responses[1],responses[2].Items,responses[3].Items,responses[4].Items)})})}); \ No newline at end of file +define(["jQuery","loading","fnchecked"],function($,loading){"use strict";function loadMediaFolders(page,user,mediaFolders){var html="";html+='

'+Globalize.translate("HeaderLibraries")+"

",html+='
';for(var i=0,length=mediaFolders.length;i"+folder.Name+""}html+="
",$(".folderAccess",page).html(html).trigger("create"),$("#chkEnableAllFolders",page).checked(user.Policy.EnableAllFolders).trigger("change")}function loadChannels(page,user,channels){var html="";html+='

'+Globalize.translate("HeaderChannels")+"

",html+='
';for(var i=0,length=channels.length;i"+folder.Name+""}html+="
",$(".channelAccess",page).show().html(html).trigger("create"),channels.length?$(".channelAccessContainer",page).show():$(".channelAccessContainer",page).hide(),$("#chkEnableAllChannels",page).checked(user.Policy.EnableAllChannels).trigger("change")}function loadDevices(page,user,devices){var html="";html+='

'+Globalize.translate("HeaderDevices")+"

",html+='
';for(var i=0,length=devices.length;i"+device.Name+" - "+device.AppName+""}html+="
",$(".deviceAccess",page).show().html(html).trigger("create"),$("#chkEnableAllDevices",page).checked(user.Policy.EnableAllDevices).trigger("change"),user.Policy.IsAdministrator?page.querySelector(".deviceAccessContainer").classList.add("hide"):page.querySelector(".deviceAccessContainer").classList.remove("hide")}function loadUser(page,user,loggedInUser,mediaFolders,channels,devices){$(page).trigger("userloaded",[user]),LibraryMenu.setTitle(user.Name),loadChannels(page,user,channels),loadMediaFolders(page,user,mediaFolders),loadDevices(page,user,devices),loading.hide()}function onSaveComplete(page){loading.hide(),require(["toast"],function(toast){toast(Globalize.translate("SettingsSaved"))})}function saveUser(user,page){user.Policy.EnableAllFolders=$("#chkEnableAllFolders",page).checked(),user.Policy.EnabledFolders=user.Policy.EnableAllFolders?[]:$(".chkFolder",page).get().filter(function(c){return c.checked}).map(function(c){return c.getAttribute("data-id")}),user.Policy.EnableAllChannels=$("#chkEnableAllChannels",page).checked(),user.Policy.EnabledChannels=user.Policy.EnableAllChannels?[]:$(".chkChannel",page).get().filter(function(c){return c.checked}).map(function(c){return c.getAttribute("data-id")}),user.Policy.EnableAllDevices=$("#chkEnableAllDevices",page).checked(),user.Policy.EnabledDevices=user.Policy.EnableAllDevices?[]:$(".chkDevice",page).get().filter(function(c){return c.checked}).map(function(c){return c.getAttribute("data-id")}),user.Policy.BlockedChannels=null,user.Policy.BlockedMediaFolders=null,ApiClient.updateUserPolicy(user.Id,user.Policy).then(function(){onSaveComplete(page)})}function onSubmit(){var page=$(this).parents(".page");loading.show();var userId=getParameterByName("userId");return ApiClient.getUser(userId).then(function(result){saveUser(result,page)}),!1}$(document).on("pageinit","#userLibraryAccessPage",function(){var page=this;$("#chkEnableAllDevices",page).on("change",function(){this.checked?$(".deviceAccessListContainer",page).hide():$(".deviceAccessListContainer",page).show()}),$("#chkEnableAllChannels",page).on("change",function(){this.checked?$(".channelAccessListContainer",page).hide():$(".channelAccessListContainer",page).show()}),$("#chkEnableAllFolders",page).on("change",function(){this.checked?$(".folderAccessListContainer",page).hide():$(".folderAccessListContainer",page).show()}),$(".userLibraryAccessForm").off("submit",onSubmit).on("submit",onSubmit)}).on("pageshow","#userLibraryAccessPage",function(){var page=this;loading.show();var promise1,userId=getParameterByName("userId");if(userId)promise1=ApiClient.getUser(userId);else{var deferred=$.Deferred();deferred.resolveWith(null,[{Configuration:{}}]),promise1=deferred.promise()}var promise2=Dashboard.getCurrentUser(),promise4=ApiClient.getJSON(ApiClient.getUrl("Library/MediaFolders",{IsHidden:!1})),promise5=ApiClient.getJSON(ApiClient.getUrl("Channels")),promise6=ApiClient.getJSON(ApiClient.getUrl("Devices",{SupportsPersistentIdentifier:!0}));Promise.all([promise1,promise2,promise4,promise5,promise6]).then(function(responses){loadUser(page,responses[0],responses[1],responses[2].Items,responses[3].Items,responses[4].Items)})})}); \ No newline at end of file diff --git a/dashboard-ui/scripts/usernew.js b/dashboard-ui/scripts/usernew.js index 80c072ad6c..fce9f31300 100644 --- a/dashboard-ui/scripts/usernew.js +++ b/dashboard-ui/scripts/usernew.js @@ -1 +1 @@ -define(["jQuery","fnchecked","emby-checkbox"],function($){"use strict";function loadMediaFolders(page,mediaFolders){var html="";html+='

'+Globalize.translate("HeaderLibraries")+"

",html+='
';for(var i=0,length=mediaFolders.length;i"+folder.Name+""}html+="
",$(".folderAccess",page).html(html).trigger("create"),$("#chkEnableAllFolders",page).checked(!0).trigger("change")}function loadChannels(page,channels){var html="";html+='

'+Globalize.translate("HeaderChannels")+"

",html+='
';for(var i=0,length=channels.length;i"+folder.Name+""}html+="
",$(".channelAccess",page).show().html(html).trigger("create"),channels.length?$(".channelAccessContainer",page).show():$(".channelAccessContainer",page).hide(),$("#chkEnableAllChannels",page).checked(!0).trigger("change")}function loadUser(page){$("#txtUserName",page).val(""),Dashboard.showLoadingMsg();var promise4=ApiClient.getJSON(ApiClient.getUrl("Library/MediaFolders",{IsHidden:!1})),promise5=ApiClient.getJSON(ApiClient.getUrl("Channels"));Promise.all([promise4,promise5]).then(function(responses){loadMediaFolders(page,responses[0].Items),loadChannels(page,responses[1].Items),Dashboard.hideLoadingMsg()})}function saveUser(page){var name=$("#txtUserName",page).val();ApiClient.createUser(name).then(function(user){user.Policy.EnableAllFolders=$("#chkEnableAllFolders",page).checked(),user.Policy.EnabledFolders=user.Policy.EnableAllFolders?[]:$(".chkFolder",page).get().filter(function(i){return i.checked}).map(function(i){return i.getAttribute("data-id")}),user.Policy.EnableAllChannels=$("#chkEnableAllChannels",page).checked(),user.Policy.EnabledChannels=user.Policy.EnableAllChannels?[]:$(".chkChannel",page).get().filter(function(i){return i.checked}).map(function(i){return i.getAttribute("data-id")}),ApiClient.updateUserPolicy(user.Id,user.Policy).then(function(){Dashboard.navigate("useredit.html?userId="+user.Id)})},function(response){400==response.status?Dashboard.alert({message:page.querySelector(".labelNewUserNameHelp").innerHTML}):require(["toast"],function(toast){toast(Globalize.translate("DefaultErrorMessage"))}),Dashboard.hideLoadingMsg()})}function onSubmit(){var page=$(this).parents(".page")[0];return Dashboard.showLoadingMsg(),saveUser(page),!1}function loadData(page){loadUser(page)}$(document).on("pageinit","#newUserPage",function(){var page=this;$("#chkEnableAllChannels",page).on("change",function(){this.checked?$(".channelAccessListContainer",page).hide():$(".channelAccessListContainer",page).show()}),$("#chkEnableAllFolders",page).on("change",function(){this.checked?$(".folderAccessListContainer",page).hide():$(".folderAccessListContainer",page).show()}),$(".newUserProfileForm").off("submit",onSubmit).on("submit",onSubmit)}).on("pageshow","#newUserPage",function(){var page=this;loadData(page)})}); \ No newline at end of file +define(["jQuery","loading","fnchecked","emby-checkbox"],function($,loading){"use strict";function loadMediaFolders(page,mediaFolders){var html="";html+='

'+Globalize.translate("HeaderLibraries")+"

",html+='
';for(var i=0,length=mediaFolders.length;i"+folder.Name+""}html+="
",$(".folderAccess",page).html(html).trigger("create"),$("#chkEnableAllFolders",page).checked(!0).trigger("change")}function loadChannels(page,channels){var html="";html+='

'+Globalize.translate("HeaderChannels")+"

",html+='
';for(var i=0,length=channels.length;i"+folder.Name+""}html+="
",$(".channelAccess",page).show().html(html).trigger("create"),channels.length?$(".channelAccessContainer",page).show():$(".channelAccessContainer",page).hide(),$("#chkEnableAllChannels",page).checked(!0).trigger("change")}function loadUser(page){$("#txtUserName",page).val(""),loading.show();var promise4=ApiClient.getJSON(ApiClient.getUrl("Library/MediaFolders",{IsHidden:!1})),promise5=ApiClient.getJSON(ApiClient.getUrl("Channels"));Promise.all([promise4,promise5]).then(function(responses){loadMediaFolders(page,responses[0].Items),loadChannels(page,responses[1].Items),loading.hide()})}function saveUser(page){var name=$("#txtUserName",page).val();ApiClient.createUser(name).then(function(user){user.Policy.EnableAllFolders=$("#chkEnableAllFolders",page).checked(),user.Policy.EnabledFolders=user.Policy.EnableAllFolders?[]:$(".chkFolder",page).get().filter(function(i){return i.checked}).map(function(i){return i.getAttribute("data-id")}),user.Policy.EnableAllChannels=$("#chkEnableAllChannels",page).checked(),user.Policy.EnabledChannels=user.Policy.EnableAllChannels?[]:$(".chkChannel",page).get().filter(function(i){return i.checked}).map(function(i){return i.getAttribute("data-id")}),ApiClient.updateUserPolicy(user.Id,user.Policy).then(function(){Dashboard.navigate("useredit.html?userId="+user.Id)})},function(response){400==response.status?Dashboard.alert({message:page.querySelector(".labelNewUserNameHelp").innerHTML}):require(["toast"],function(toast){toast(Globalize.translate("DefaultErrorMessage"))}),loading.hide()})}function onSubmit(){var page=$(this).parents(".page")[0];return loading.show(),saveUser(page),!1}function loadData(page){loadUser(page)}$(document).on("pageinit","#newUserPage",function(){var page=this;$("#chkEnableAllChannels",page).on("change",function(){this.checked?$(".channelAccessListContainer",page).hide():$(".channelAccessListContainer",page).show()}),$("#chkEnableAllFolders",page).on("change",function(){this.checked?$(".folderAccessListContainer",page).hide():$(".folderAccessListContainer",page).show()}),$(".newUserProfileForm").off("submit",onSubmit).on("submit",onSubmit)}).on("pageshow","#newUserPage",function(){var page=this;loadData(page)})}); \ No newline at end of file diff --git a/dashboard-ui/scripts/userparentalcontrol.js b/dashboard-ui/scripts/userparentalcontrol.js index 3099a0cff7..bead04174f 100644 --- a/dashboard-ui/scripts/userparentalcontrol.js +++ b/dashboard-ui/scripts/userparentalcontrol.js @@ -1 +1 @@ -define(["jQuery","datetime","listViewStyle","paper-icon-button-light"],function($,datetime){"use strict";function populateRatings(allParentalRatings,page){var html="";html+="";var i,length,rating,ratings=[];for(i=0,length=allParentalRatings.length;i"+rating.Name+"";$("#selectMaxParentalRating",page).html(html)}function loadUnratedItems(page,user){var items=[{name:Globalize.translate("OptionBlockBooks"),value:"Book"},{name:Globalize.translate("OptionBlockGames"),value:"Game"},{name:Globalize.translate("OptionBlockChannelContent"),value:"ChannelContent"},{name:Globalize.translate("OptionBlockLiveTvChannels"),value:"LiveTvChannel"},{name:Globalize.translate("OptionBlockMovies"),value:"Movie"},{name:Globalize.translate("OptionBlockMusic"),value:"Music"},{name:Globalize.translate("OptionBlockTrailers"),value:"Trailer"},{name:Globalize.translate("OptionBlockTvShows"),value:"Series"},{name:Globalize.translate("OptionBlockOthers"),value:"Other"}],html="";html+='

'+Globalize.translate("HeaderBlockItemsWithNoRating")+"

",html+='
';for(var i=0,length=items.length;i"+item.name+""}html+="
",$(".blockUnratedItems",page).html(html).trigger("create")}function loadUser(page,user,allParentalRatings){LibraryMenu.setTitle(user.Name),loadUnratedItems(page,user),loadBlockedTags(page,user.Policy.BlockedTags),populateRatings(allParentalRatings,page);var ratingValue="";if(user.Policy.MaxParentalRating)for(var i=0,length=allParentalRatings.length;i=rating.Value&&(ratingValue=rating.Value)}$("#selectMaxParentalRating",page).val(ratingValue),user.Policy.IsAdministrator?$(".accessScheduleSection",page).hide():$(".accessScheduleSection",page).show(),renderAccessSchedule(page,user.Policy.AccessSchedules||[]),Dashboard.hideLoadingMsg()}function loadBlockedTags(page,tags){var html=tags.map(function(h){var li='
';return li+='
',li+='

',li+=h,li+="

",li+="
",li+='',li+="
"}).join("");html&&(html='
'+html+"
");var elem=$(".blockedTags",page).html(html).trigger("create");$(".btnDeleteTag",elem).on("click",function(){var tag=this.getAttribute("data-tag"),newTags=tags.filter(function(t){return t!=tag});loadBlockedTags(page,newTags)})}function deleteAccessSchedule(page,schedules,index){schedules.splice(index,1),renderAccessSchedule(page,schedules)}function renderAccessSchedule(page,schedules){var html="",index=0;html+=schedules.map(function(a){var itemHtml="";return itemHtml+='
',itemHtml+='
',itemHtml+='

',itemHtml+=Globalize.translate("Option"+a.DayOfWeek),itemHtml+="

",itemHtml+='
'+getDisplayTime(a.StartHour)+" - "+getDisplayTime(a.EndHour)+"
",itemHtml+="
",itemHtml+='',itemHtml+="
",index++,itemHtml}).join("");var accessScheduleList=page.querySelector(".accessScheduleList");accessScheduleList.innerHTML=html,$(".btnDelete",accessScheduleList).on("click",function(){deleteAccessSchedule(page,schedules,parseInt(this.getAttribute("data-index")))})}function onSaveComplete(page){Dashboard.hideLoadingMsg(),require(["toast"],function(toast){toast(Globalize.translate("SettingsSaved"))})}function saveUser(user,page){user.Policy.MaxParentalRating=$("#selectMaxParentalRating",page).val()||null,user.Policy.BlockUnratedItems=$(".chkUnratedItem",page).get().filter(function(i){return i.checked}).map(function(i){return i.getAttribute("data-itemtype")}),user.Policy.AccessSchedules=getSchedulesFromPage(page),user.Policy.BlockedTags=getBlockedTagsFromPage(page),ApiClient.updateUserPolicy(user.Id,user.Policy).then(function(){onSaveComplete(page)})}function getDisplayTime(hours){var minutes=0,pct=hours%1;return pct&&(minutes=parseInt(60*pct)),datetime.getDisplayTime(new Date(2e3,1,1,hours,minutes,0,0))}function showSchedulePopup(page,schedule,index){schedule=schedule||{},require(["components/accessschedule/accessschedule"],function(accessschedule){accessschedule.show({schedule:schedule}).then(function(updatedSchedule){var schedules=getSchedulesFromPage(page);index==-1&&(index=schedules.length),schedules[index]=updatedSchedule,renderAccessSchedule(page,schedules)})})}function getSchedulesFromPage(page){return $(".liSchedule",page).map(function(){return{DayOfWeek:this.getAttribute("data-day"),StartHour:this.getAttribute("data-start"),EndHour:this.getAttribute("data-end")}}).get()}function getBlockedTagsFromPage(page){return $(".blockedTag",page).map(function(){return this.getAttribute("data-tag")}).get()}function showBlockedTagPopup(page){require(["prompt"],function(prompt){prompt({label:Globalize.translate("LabelTag")}).then(function(value){var tags=getBlockedTagsFromPage(page);tags.indexOf(value)==-1&&(tags.push(value),loadBlockedTags(page,tags))})})}window.UserParentalControlPage={onSubmit:function(){var page=$(this).parents(".page");Dashboard.showLoadingMsg();var userId=getParameterByName("userId");return ApiClient.getUser(userId).then(function(result){saveUser(result,page)}),!1}},$(document).on("pageinit","#userParentalControlPage",function(){var page=this;$(".btnAddSchedule",page).on("click",function(){showSchedulePopup(page,{},-1)}),$(".btnAddBlockedTag",page).on("click",function(){showBlockedTagPopup(page)}),$(".userParentalControlForm").off("submit",UserParentalControlPage.onSubmit).on("submit",UserParentalControlPage.onSubmit)}).on("pageshow","#userParentalControlPage",function(){var page=this;Dashboard.showLoadingMsg();var userId=getParameterByName("userId"),promise1=ApiClient.getUser(userId),promise2=ApiClient.getParentalRatings();Promise.all([promise1,promise2]).then(function(responses){loadUser(page,responses[0],responses[1])})})}); \ No newline at end of file +define(["jQuery","datetime","loading","listViewStyle","paper-icon-button-light"],function($,datetime,loading){"use strict";function populateRatings(allParentalRatings,page){var html="";html+="";var i,length,rating,ratings=[];for(i=0,length=allParentalRatings.length;i"+rating.Name+"";$("#selectMaxParentalRating",page).html(html)}function loadUnratedItems(page,user){var items=[{name:Globalize.translate("OptionBlockBooks"),value:"Book"},{name:Globalize.translate("OptionBlockGames"),value:"Game"},{name:Globalize.translate("OptionBlockChannelContent"),value:"ChannelContent"},{name:Globalize.translate("OptionBlockLiveTvChannels"),value:"LiveTvChannel"},{name:Globalize.translate("OptionBlockMovies"),value:"Movie"},{name:Globalize.translate("OptionBlockMusic"),value:"Music"},{name:Globalize.translate("OptionBlockTrailers"),value:"Trailer"},{name:Globalize.translate("OptionBlockTvShows"),value:"Series"},{name:Globalize.translate("OptionBlockOthers"),value:"Other"}],html="";html+='

'+Globalize.translate("HeaderBlockItemsWithNoRating")+"

",html+='
';for(var i=0,length=items.length;i"+item.name+""}html+="
",$(".blockUnratedItems",page).html(html).trigger("create")}function loadUser(page,user,allParentalRatings){LibraryMenu.setTitle(user.Name),loadUnratedItems(page,user),loadBlockedTags(page,user.Policy.BlockedTags),populateRatings(allParentalRatings,page);var ratingValue="";if(user.Policy.MaxParentalRating)for(var i=0,length=allParentalRatings.length;i=rating.Value&&(ratingValue=rating.Value)}$("#selectMaxParentalRating",page).val(ratingValue),user.Policy.IsAdministrator?$(".accessScheduleSection",page).hide():$(".accessScheduleSection",page).show(),renderAccessSchedule(page,user.Policy.AccessSchedules||[]),loading.hide()}function loadBlockedTags(page,tags){var html=tags.map(function(h){var li='
';return li+='
',li+='

',li+=h,li+="

",li+="
",li+='',li+="
"}).join("");html&&(html='
'+html+"
");var elem=$(".blockedTags",page).html(html).trigger("create");$(".btnDeleteTag",elem).on("click",function(){var tag=this.getAttribute("data-tag"),newTags=tags.filter(function(t){return t!=tag});loadBlockedTags(page,newTags)})}function deleteAccessSchedule(page,schedules,index){schedules.splice(index,1),renderAccessSchedule(page,schedules)}function renderAccessSchedule(page,schedules){var html="",index=0;html+=schedules.map(function(a){var itemHtml="";return itemHtml+='
',itemHtml+='
',itemHtml+='

',itemHtml+=Globalize.translate("Option"+a.DayOfWeek),itemHtml+="

",itemHtml+='
'+getDisplayTime(a.StartHour)+" - "+getDisplayTime(a.EndHour)+"
",itemHtml+="
",itemHtml+='',itemHtml+="
",index++,itemHtml}).join("");var accessScheduleList=page.querySelector(".accessScheduleList");accessScheduleList.innerHTML=html,$(".btnDelete",accessScheduleList).on("click",function(){deleteAccessSchedule(page,schedules,parseInt(this.getAttribute("data-index")))})}function onSaveComplete(page){loading.hide(),require(["toast"],function(toast){toast(Globalize.translate("SettingsSaved"))})}function saveUser(user,page){user.Policy.MaxParentalRating=$("#selectMaxParentalRating",page).val()||null,user.Policy.BlockUnratedItems=$(".chkUnratedItem",page).get().filter(function(i){return i.checked}).map(function(i){return i.getAttribute("data-itemtype")}),user.Policy.AccessSchedules=getSchedulesFromPage(page),user.Policy.BlockedTags=getBlockedTagsFromPage(page),ApiClient.updateUserPolicy(user.Id,user.Policy).then(function(){onSaveComplete(page)})}function getDisplayTime(hours){var minutes=0,pct=hours%1;return pct&&(minutes=parseInt(60*pct)),datetime.getDisplayTime(new Date(2e3,1,1,hours,minutes,0,0))}function showSchedulePopup(page,schedule,index){schedule=schedule||{},require(["components/accessschedule/accessschedule"],function(accessschedule){accessschedule.show({schedule:schedule}).then(function(updatedSchedule){var schedules=getSchedulesFromPage(page);index==-1&&(index=schedules.length),schedules[index]=updatedSchedule,renderAccessSchedule(page,schedules)})})}function getSchedulesFromPage(page){return $(".liSchedule",page).map(function(){return{DayOfWeek:this.getAttribute("data-day"),StartHour:this.getAttribute("data-start"),EndHour:this.getAttribute("data-end")}}).get()}function getBlockedTagsFromPage(page){return $(".blockedTag",page).map(function(){return this.getAttribute("data-tag")}).get()}function showBlockedTagPopup(page){require(["prompt"],function(prompt){prompt({label:Globalize.translate("LabelTag")}).then(function(value){var tags=getBlockedTagsFromPage(page);tags.indexOf(value)==-1&&(tags.push(value),loadBlockedTags(page,tags))})})}window.UserParentalControlPage={onSubmit:function(){var page=$(this).parents(".page");loading.show();var userId=getParameterByName("userId");return ApiClient.getUser(userId).then(function(result){saveUser(result,page)}),!1}},$(document).on("pageinit","#userParentalControlPage",function(){var page=this;$(".btnAddSchedule",page).on("click",function(){showSchedulePopup(page,{},-1)}),$(".btnAddBlockedTag",page).on("click",function(){showBlockedTagPopup(page)}),$(".userParentalControlForm").off("submit",UserParentalControlPage.onSubmit).on("submit",UserParentalControlPage.onSubmit)}).on("pageshow","#userParentalControlPage",function(){var page=this;loading.show();var userId=getParameterByName("userId"),promise1=ApiClient.getUser(userId),promise2=ApiClient.getParentalRatings();Promise.all([promise1,promise2]).then(function(responses){loadUser(page,responses[0],responses[1])})})}); \ No newline at end of file diff --git a/dashboard-ui/scripts/userpassword.js b/dashboard-ui/scripts/userpassword.js index 70c2b590a8..f1fe1d4354 100644 --- a/dashboard-ui/scripts/userpassword.js +++ b/dashboard-ui/scripts/userpassword.js @@ -1 +1 @@ -define(["jQuery"],function($){"use strict";function loadUser(page,user){LibraryMenu.setTitle(user.Name),"Guest"==user.ConnectLinkType?$(".connectMessage",page).show():$(".connectMessage",page).hide(),Dashboard.hideLoadingMsg()}function loadData(page){Dashboard.showLoadingMsg();var userId=getParameterByName("userId");ApiClient.getUser(userId).then(function(user){loadUser(page,user)})}$(document).on("pageinit","#userPasswordPage",function(){$(".adminUpdatePasswordForm").off("submit",UpdatePasswordPage.onSubmit).on("submit",UpdatePasswordPage.onSubmit),$(".adminLocalAccessForm").off("submit",UpdatePasswordPage.onLocalAccessSubmit).on("submit",UpdatePasswordPage.onLocalAccessSubmit)}).on("pagebeforeshow","#userPasswordPage",function(){var page=this;loadData(page)})}); \ No newline at end of file +define(["jQuery","loading"],function($,loading){"use strict";function loadUser(page,user){LibraryMenu.setTitle(user.Name),"Guest"==user.ConnectLinkType?$(".connectMessage",page).show():$(".connectMessage",page).hide(),loading.hide()}function loadData(page){loading.show();var userId=getParameterByName("userId");ApiClient.getUser(userId).then(function(user){loadUser(page,user)})}$(document).on("pageinit","#userPasswordPage",function(){$(".adminUpdatePasswordForm").off("submit",UpdatePasswordPage.onSubmit).on("submit",UpdatePasswordPage.onSubmit),$(".adminLocalAccessForm").off("submit",UpdatePasswordPage.onLocalAccessSubmit).on("submit",UpdatePasswordPage.onLocalAccessSubmit)}).on("pagebeforeshow","#userPasswordPage",function(){var page=this;loadData(page)})}); \ No newline at end of file diff --git a/dashboard-ui/scripts/userpasswordpage.js b/dashboard-ui/scripts/userpasswordpage.js index 8f75aaeefb..fd7e7fc813 100644 --- a/dashboard-ui/scripts/userpasswordpage.js +++ b/dashboard-ui/scripts/userpasswordpage.js @@ -1 +1 @@ -define([],function(){"use strict";function loadUser(page,params){var userid=params.userId;ApiClient.getUser(userid).then(function(user){Dashboard.getCurrentUser().then(function(loggedInUser){LibraryMenu.setTitle(user.Name);var showPasswordSection=!0,showLocalAccessSection=!1;"Guest"==user.ConnectLinkType?(page.querySelector(".localAccessSection").classList.add("hide"),showPasswordSection=!1):user.HasConfiguredPassword?(page.querySelector("#btnResetPassword").classList.remove("hide"),page.querySelector("#fldCurrentPassword").classList.remove("hide"),showLocalAccessSection=!0):(page.querySelector("#btnResetPassword").classList.add("hide"),page.querySelector("#fldCurrentPassword").classList.add("hide")),showPasswordSection&&(loggedInUser.Policy.IsAdministrator||user.Policy.EnableUserPreferenceAccess)?page.querySelector(".passwordSection").classList.remove("hide"):page.querySelector(".passwordSection").classList.add("hide"),showLocalAccessSection&&(loggedInUser.Policy.IsAdministrator||user.Policy.EnableUserPreferenceAccess)?page.querySelector(".localAccessSection").classList.remove("hide"):page.querySelector(".localAccessSection").classList.add("hide");var txtEasyPassword=page.querySelector("#txtEasyPassword");txtEasyPassword.value="",user.HasConfiguredEasyPassword?(txtEasyPassword.placeholder="******",page.querySelector("#btnResetEasyPassword").classList.remove("hide")):(txtEasyPassword.removeAttribute("placeholder"),txtEasyPassword.placeholder="",page.querySelector("#btnResetEasyPassword").classList.add("hide")),page.querySelector(".chkEnableLocalEasyPassword").checked=user.Configuration.EnableLocalPassword})}),page.querySelector("#txtCurrentPassword").value="",page.querySelector("#txtNewPassword").value="",page.querySelector("#txtNewPasswordConfirm").value=""}return function(view,params){function saveEasyPassword(){var userId=params.userId,easyPassword=view.querySelector("#txtEasyPassword").value;easyPassword?ApiClient.updateEasyPassword(userId,easyPassword).then(function(){onEasyPasswordSaved(userId)}):onEasyPasswordSaved(userId)}function onEasyPasswordSaved(userId){ApiClient.getUser(userId).then(function(user){user.Configuration.EnableLocalPassword=view.querySelector(".chkEnableLocalEasyPassword").checked,ApiClient.updateUserConfiguration(user.Id,user.Configuration).then(function(){Dashboard.hideLoadingMsg(),require(["toast"],function(toast){toast(Globalize.translate("MessageSettingsSaved"))}),loadUser(view,params)})})}function savePassword(){var userId=params.userId,currentPassword=view.querySelector("#txtCurrentPassword").value,newPassword=view.querySelector("#txtNewPassword").value;ApiClient.updateUserPassword(userId,currentPassword,newPassword).then(function(){Dashboard.hideLoadingMsg(),require(["toast"],function(toast){toast(Globalize.translate("PasswordSaved"))}),loadUser(view,params)},function(){Dashboard.hideLoadingMsg(),Dashboard.alert({title:Globalize.translate("HeaderLoginFailure"),message:Globalize.translate("MessageInvalidUser")})})}function onSubmit(e){var form=this;return form.querySelector("#txtNewPassword").value!=form.querySelector("#txtNewPasswordConfirm").value?require(["toast"],function(toast){toast(Globalize.translate("PasswordMatchError"))}):(Dashboard.showLoadingMsg(),savePassword()),e.preventDefault(),!1}function onLocalAccessSubmit(e){return Dashboard.showLoadingMsg(),saveEasyPassword(),e.preventDefault(),!1}function resetPassword(){var msg=Globalize.translate("PasswordResetConfirmation");require(["confirm"],function(confirm){confirm(msg,Globalize.translate("PasswordResetHeader")).then(function(){var userId=params.userId;Dashboard.showLoadingMsg(),ApiClient.resetUserPassword(userId).then(function(){Dashboard.hideLoadingMsg(),Dashboard.alert({message:Globalize.translate("PasswordResetComplete"),title:Globalize.translate("PasswordResetHeader")}),loadUser(view,params)})})})}function resetEasyPassword(){var msg=Globalize.translate("PinCodeResetConfirmation");require(["confirm"],function(confirm){confirm(msg,Globalize.translate("HeaderPinCodeReset")).then(function(){var userId=params.userId;Dashboard.showLoadingMsg(),ApiClient.resetEasyPassword(userId).then(function(){Dashboard.hideLoadingMsg(),Dashboard.alert({message:Globalize.translate("PinCodeResetComplete"),title:Globalize.translate("HeaderPinCodeReset")}),loadUser(view,params)})})})}view.querySelector(".updatePasswordForm").addEventListener("submit",onSubmit),view.querySelector(".localAccessForm").addEventListener("submit",onLocalAccessSubmit),view.querySelector("#btnResetEasyPassword").addEventListener("click",resetEasyPassword),view.querySelector("#btnResetPassword").addEventListener("click",resetPassword),view.addEventListener("viewshow",function(){loadUser(view,params)})}}); \ No newline at end of file +define(["loading"],function(loading){"use strict";function loadUser(page,params){var userid=params.userId;ApiClient.getUser(userid).then(function(user){Dashboard.getCurrentUser().then(function(loggedInUser){LibraryMenu.setTitle(user.Name);var showPasswordSection=!0,showLocalAccessSection=!1;"Guest"==user.ConnectLinkType?(page.querySelector(".localAccessSection").classList.add("hide"),showPasswordSection=!1):user.HasConfiguredPassword?(page.querySelector("#btnResetPassword").classList.remove("hide"),page.querySelector("#fldCurrentPassword").classList.remove("hide"),showLocalAccessSection=!0):(page.querySelector("#btnResetPassword").classList.add("hide"),page.querySelector("#fldCurrentPassword").classList.add("hide")),showPasswordSection&&(loggedInUser.Policy.IsAdministrator||user.Policy.EnableUserPreferenceAccess)?page.querySelector(".passwordSection").classList.remove("hide"):page.querySelector(".passwordSection").classList.add("hide"),showLocalAccessSection&&(loggedInUser.Policy.IsAdministrator||user.Policy.EnableUserPreferenceAccess)?page.querySelector(".localAccessSection").classList.remove("hide"):page.querySelector(".localAccessSection").classList.add("hide");var txtEasyPassword=page.querySelector("#txtEasyPassword");txtEasyPassword.value="",user.HasConfiguredEasyPassword?(txtEasyPassword.placeholder="******",page.querySelector("#btnResetEasyPassword").classList.remove("hide")):(txtEasyPassword.removeAttribute("placeholder"),txtEasyPassword.placeholder="",page.querySelector("#btnResetEasyPassword").classList.add("hide")),page.querySelector(".chkEnableLocalEasyPassword").checked=user.Configuration.EnableLocalPassword})}),page.querySelector("#txtCurrentPassword").value="",page.querySelector("#txtNewPassword").value="",page.querySelector("#txtNewPasswordConfirm").value=""}return function(view,params){function saveEasyPassword(){var userId=params.userId,easyPassword=view.querySelector("#txtEasyPassword").value;easyPassword?ApiClient.updateEasyPassword(userId,easyPassword).then(function(){onEasyPasswordSaved(userId)}):onEasyPasswordSaved(userId)}function onEasyPasswordSaved(userId){ApiClient.getUser(userId).then(function(user){user.Configuration.EnableLocalPassword=view.querySelector(".chkEnableLocalEasyPassword").checked,ApiClient.updateUserConfiguration(user.Id,user.Configuration).then(function(){loading.hide(),require(["toast"],function(toast){toast(Globalize.translate("MessageSettingsSaved"))}),loadUser(view,params)})})}function savePassword(){var userId=params.userId,currentPassword=view.querySelector("#txtCurrentPassword").value,newPassword=view.querySelector("#txtNewPassword").value;ApiClient.updateUserPassword(userId,currentPassword,newPassword).then(function(){loading.hide(),require(["toast"],function(toast){toast(Globalize.translate("PasswordSaved"))}),loadUser(view,params)},function(){loading.hide(),Dashboard.alert({title:Globalize.translate("HeaderLoginFailure"),message:Globalize.translate("MessageInvalidUser")})})}function onSubmit(e){var form=this;return form.querySelector("#txtNewPassword").value!=form.querySelector("#txtNewPasswordConfirm").value?require(["toast"],function(toast){toast(Globalize.translate("PasswordMatchError"))}):(loading.show(),savePassword()),e.preventDefault(),!1}function onLocalAccessSubmit(e){return loading.show(),saveEasyPassword(),e.preventDefault(),!1}function resetPassword(){var msg=Globalize.translate("PasswordResetConfirmation");require(["confirm"],function(confirm){confirm(msg,Globalize.translate("PasswordResetHeader")).then(function(){var userId=params.userId;loading.show(),ApiClient.resetUserPassword(userId).then(function(){loading.hide(),Dashboard.alert({message:Globalize.translate("PasswordResetComplete"),title:Globalize.translate("PasswordResetHeader")}),loadUser(view,params)})})})}function resetEasyPassword(){var msg=Globalize.translate("PinCodeResetConfirmation");require(["confirm"],function(confirm){confirm(msg,Globalize.translate("HeaderPinCodeReset")).then(function(){var userId=params.userId;loading.show(),ApiClient.resetEasyPassword(userId).then(function(){loading.hide(),Dashboard.alert({message:Globalize.translate("PinCodeResetComplete"),title:Globalize.translate("HeaderPinCodeReset")}),loadUser(view,params)})})})}view.querySelector(".updatePasswordForm").addEventListener("submit",onSubmit),view.querySelector(".localAccessForm").addEventListener("submit",onLocalAccessSubmit),view.querySelector("#btnResetEasyPassword").addEventListener("click",resetEasyPassword),view.querySelector("#btnResetPassword").addEventListener("click",resetPassword),view.addEventListener("viewshow",function(){loadUser(view,params)})}}); \ No newline at end of file diff --git a/dashboard-ui/scripts/userprofilespage.js b/dashboard-ui/scripts/userprofilespage.js index 19c2a9db48..6593abf2f9 100644 --- a/dashboard-ui/scripts/userprofilespage.js +++ b/dashboard-ui/scripts/userprofilespage.js @@ -1 +1 @@ -define(["jQuery","humanedate","paper-icon-button-light","cardStyle"],function($){"use strict";function deleteUser(page,id){var msg=Globalize.translate("DeleteUserConfirmation");require(["confirm"],function(confirm){confirm({title:Globalize.translate("DeleteUser"),text:msg,confirmText:Globalize.translate("ButtonDelete"),primary:"cancel"}).then(function(){Dashboard.showLoadingMsg(),ApiClient.deleteUser(id).then(function(){loadData(page)})})})}function showUserMenu(elem){var card=$(elem).parents(".card")[0],page=$(card).parents(".page")[0],userId=card.getAttribute("data-userid"),menuItems=[];menuItems.push({name:Globalize.translate("ButtonOpen"),id:"open",ironIcon:"mode-edit"}),menuItems.push({name:Globalize.translate("ButtonLibraryAccess"),id:"access",ironIcon:"lock"}),menuItems.push({name:Globalize.translate("ButtonParentalControl"),id:"parentalcontrol",ironIcon:"person"}),menuItems.push({name:Globalize.translate("ButtonDelete"),id:"delete",ironIcon:"delete"}),require(["actionsheet"],function(actionsheet){actionsheet.show({items:menuItems,positionTo:card,callback:function(id){switch(id){case"open":Dashboard.navigate("useredit.html?userId="+userId);break;case"access":Dashboard.navigate("userlibraryaccess.html?userId="+userId);break;case"parentalcontrol":Dashboard.navigate("userparentalcontrol.html?userId="+userId);break;case"delete":deleteUser(page,userId)}}})})}function getUserHtml(user,addConnectIndicator){var html="",cssClass="card squareCard scalableCard squareCard-scalable";user.Policy.IsDisabled&&(cssClass+=" grayscale"),html+="
",html+='
',html+='",html+='
',html+='
',html+='',html+="
",html+='
',html+=user.Name,html+="
",html+='
';var lastSeen=getLastSeenText(user.LastActivityDate);return html+=""!=lastSeen?lastSeen:" ",html+="
",html+="
",html+="
",html+="
"}function getLastSeenText(lastActivityDate){return lastActivityDate?"Last seen "+humane_date(lastActivityDate):""}function getUserSectionHtml(users,addConnectIndicator){var html="";return html+=users.map(function(u){return getUserHtml(u,addConnectIndicator)}).join("")}function renderUsersIntoElement(elem,users,addConnectIndicator){var html=getUserSectionHtml(users,addConnectIndicator);elem.html(html),$(".btnUserMenu",elem).on("click",function(){showUserMenu(this)})}function renderUsers(page,users){renderUsersIntoElement($(".localUsers",page),users.filter(function(u){return"Guest"!=u.ConnectLinkType}),!0),renderUsersIntoElement($(".connectUsers",page),users.filter(function(u){return"Guest"==u.ConnectLinkType}))}function showPendingUserMenu(elem){var menuItems=[];menuItems.push({name:Globalize.translate("ButtonCancel"),id:"delete",ironIcon:"delete"}),require(["actionsheet"],function(actionsheet){var card=$(elem).parents(".card")[0],page=$(elem).parents(".page")[0],id=card.getAttribute("data-id");actionsheet.show({items:menuItems,positionTo:card,callback:function(menuItemId){switch(menuItemId){case"delete":cancelAuthorization(page,id)}}})})}function getPendingUserHtml(user){var html="",cssClass="card squareCard";html+="
",html+='
',html+='",html+='
',html+='
',html+='',html+="
",html+='
',html+=user.UserName,html+="
",html+="
",html+="
",html+="
"}function renderPendingGuests(page,users){users.length?$(".sectionPendingGuests",page).show():$(".sectionPendingGuests",page).hide();var html=users.map(getPendingUserHtml).join(""),elem=$(".pending",page).html(html);$(".btnUserMenu",elem).on("click",function(){showPendingUserMenu(this)})}function cancelAuthorization(page,id){Dashboard.showLoadingMsg(),ApiClient.ajax({type:"DELETE",url:ApiClient.getUrl("Connect/Pending",{Id:id})}).then(function(){loadData(page)})}function loadData(page){Dashboard.showLoadingMsg(),ApiClient.getUsers().then(function(users){renderUsers(page,users),Dashboard.hideLoadingMsg()}),ApiClient.getJSON(ApiClient.getUrl("Connect/Pending")).then(function(pending){renderPendingGuests(page,pending)})}function showLinkUser(page,userId){require(["components/guestinviter/connectlink"],function(connectlink){connectlink.show().then(function(){loadData(page)})})}function showInvitePopup(page){Dashboard.getCurrentUser().then(function(user){return user.ConnectUserId?void require(["components/guestinviter/guestinviter"],function(guestinviter){guestinviter.show().then(function(){loadData(page)})}):void showLinkUser(page,user.Id)})}$(document).on("pageinit","#userProfilesPage",function(){var page=this;$(".btnInvite",page).on("click",function(){showInvitePopup(page)}),$(".btnAddUser",page).on("click",function(){Dashboard.navigate("usernew.html")})}).on("pagebeforeshow","#userProfilesPage",function(){var page=this;loadData(page)})}); \ No newline at end of file +define(["jQuery","loading","humanedate","paper-icon-button-light","cardStyle"],function($,loading){"use strict";function deleteUser(page,id){var msg=Globalize.translate("DeleteUserConfirmation");require(["confirm"],function(confirm){confirm({title:Globalize.translate("DeleteUser"),text:msg,confirmText:Globalize.translate("ButtonDelete"),primary:"cancel"}).then(function(){loading.show(),ApiClient.deleteUser(id).then(function(){loadData(page)})})})}function showUserMenu(elem){var card=$(elem).parents(".card")[0],page=$(card).parents(".page")[0],userId=card.getAttribute("data-userid"),menuItems=[];menuItems.push({name:Globalize.translate("ButtonOpen"),id:"open",ironIcon:"mode-edit"}),menuItems.push({name:Globalize.translate("ButtonLibraryAccess"),id:"access",ironIcon:"lock"}),menuItems.push({name:Globalize.translate("ButtonParentalControl"),id:"parentalcontrol",ironIcon:"person"}),menuItems.push({name:Globalize.translate("ButtonDelete"),id:"delete",ironIcon:"delete"}),require(["actionsheet"],function(actionsheet){actionsheet.show({items:menuItems,positionTo:card,callback:function(id){switch(id){case"open":Dashboard.navigate("useredit.html?userId="+userId);break;case"access":Dashboard.navigate("userlibraryaccess.html?userId="+userId);break;case"parentalcontrol":Dashboard.navigate("userparentalcontrol.html?userId="+userId);break;case"delete":deleteUser(page,userId)}}})})}function getUserHtml(user,addConnectIndicator){var html="",cssClass="card squareCard scalableCard squareCard-scalable";user.Policy.IsDisabled&&(cssClass+=" grayscale"),html+="
",html+='
',html+='",html+='
',html+='
',html+='',html+="
",html+='
',html+=user.Name,html+="
",html+='
';var lastSeen=getLastSeenText(user.LastActivityDate);return html+=""!=lastSeen?lastSeen:" ",html+="
",html+="
",html+="
",html+="
"}function getLastSeenText(lastActivityDate){return lastActivityDate?"Last seen "+humane_date(lastActivityDate):""}function getUserSectionHtml(users,addConnectIndicator){var html="";return html+=users.map(function(u){return getUserHtml(u,addConnectIndicator)}).join("")}function renderUsersIntoElement(elem,users,addConnectIndicator){var html=getUserSectionHtml(users,addConnectIndicator);elem.html(html),$(".btnUserMenu",elem).on("click",function(){showUserMenu(this)})}function renderUsers(page,users){renderUsersIntoElement($(".localUsers",page),users.filter(function(u){return"Guest"!=u.ConnectLinkType}),!0),renderUsersIntoElement($(".connectUsers",page),users.filter(function(u){return"Guest"==u.ConnectLinkType}))}function showPendingUserMenu(elem){var menuItems=[];menuItems.push({name:Globalize.translate("ButtonCancel"),id:"delete",ironIcon:"delete"}),require(["actionsheet"],function(actionsheet){var card=$(elem).parents(".card")[0],page=$(elem).parents(".page")[0],id=card.getAttribute("data-id");actionsheet.show({items:menuItems,positionTo:card,callback:function(menuItemId){switch(menuItemId){case"delete":cancelAuthorization(page,id)}}})})}function getPendingUserHtml(user){var html="",cssClass="card squareCard";html+="
",html+='
',html+='",html+='
',html+='
',html+='',html+="
",html+='
',html+=user.UserName,html+="
",html+="
",html+="
",html+="
"}function renderPendingGuests(page,users){users.length?$(".sectionPendingGuests",page).show():$(".sectionPendingGuests",page).hide();var html=users.map(getPendingUserHtml).join(""),elem=$(".pending",page).html(html);$(".btnUserMenu",elem).on("click",function(){showPendingUserMenu(this)})}function cancelAuthorization(page,id){loading.show(),ApiClient.ajax({type:"DELETE",url:ApiClient.getUrl("Connect/Pending",{Id:id})}).then(function(){loadData(page)})}function loadData(page){loading.show(),ApiClient.getUsers().then(function(users){renderUsers(page,users),loading.hide()}),ApiClient.getJSON(ApiClient.getUrl("Connect/Pending")).then(function(pending){renderPendingGuests(page,pending)})}function showLinkUser(page,userId){require(["components/guestinviter/connectlink"],function(connectlink){connectlink.show().then(function(){loadData(page)})})}function showInvitePopup(page){Dashboard.getCurrentUser().then(function(user){return user.ConnectUserId?void require(["components/guestinviter/guestinviter"],function(guestinviter){guestinviter.show().then(function(){loadData(page)})}):void showLinkUser(page,user.Id)})}$(document).on("pageinit","#userProfilesPage",function(){var page=this;$(".btnInvite",page).on("click",function(){showInvitePopup(page)}),$(".btnAddUser",page).on("click",function(){Dashboard.navigate("usernew.html")})}).on("pagebeforeshow","#userProfilesPage",function(){var page=this;loadData(page)})}); \ No newline at end of file diff --git a/dashboard-ui/scripts/wizardsettings.js b/dashboard-ui/scripts/wizardsettings.js index 9dbb1a390d..43218f2e65 100644 --- a/dashboard-ui/scripts/wizardsettings.js +++ b/dashboard-ui/scripts/wizardsettings.js @@ -1 +1 @@ -define(["jQuery"],function($){"use strict";function save(page){Dashboard.showLoadingMsg();var apiClient=ApiClient;apiClient.getJSON(apiClient.getUrl("Startup/Configuration")).then(function(config){config.PreferredMetadataLanguage=$("#selectLanguage",page).val(),config.MetadataCountryCode=$("#selectCountry",page).val(),apiClient.ajax({type:"POST",data:config,url:apiClient.getUrl("Startup/Configuration")}).then(function(){Dashboard.hideLoadingMsg(),navigateToNextPage()})})}function populateLanguages(select,languages){var html="";html+="";for(var i=0,length=languages.length;i"+culture.DisplayName+""}select.innerHTML=html}function populateCountries(select,allCountries){var html="";html+="";for(var i=0,length=allCountries.length;i"+culture.DisplayName+""}select.innerHTML=html}function reloadData(page,config,cultures,countries){populateLanguages(page.querySelector("#selectLanguage"),cultures),populateCountries(page.querySelector("#selectCountry"),countries),$("#selectLanguage",page).val(config.PreferredMetadataLanguage),$("#selectCountry",page).val(config.MetadataCountryCode),Dashboard.hideLoadingMsg()}function reload(page){Dashboard.showLoadingMsg();var apiClient=ApiClient,promise1=apiClient.getJSON(apiClient.getUrl("Startup/Configuration")),promise2=apiClient.getCultures(),promise3=apiClient.getCountries();Promise.all([promise1,promise2,promise3]).then(function(responses){reloadData(page,responses[0],responses[1],responses[2])})}function navigateToNextPage(){require(["scripts/wizardcontroller"],function(wizardcontroller){wizardcontroller.navigateToComponents()})}function onSubmit(){var form=this;return save(form),!1}$(document).on("pageinit","#wizardSettingsPage",function(){var page=this;$(".wizardSettingsForm",page).off("submit",onSubmit).on("submit",onSubmit)}).on("pageshow","#wizardSettingsPage",function(){var page=this;reload(page)})}); \ No newline at end of file +define(["jQuery","loading"],function($,loading){"use strict";function save(page){loading.show();var apiClient=ApiClient;apiClient.getJSON(apiClient.getUrl("Startup/Configuration")).then(function(config){config.PreferredMetadataLanguage=$("#selectLanguage",page).val(),config.MetadataCountryCode=$("#selectCountry",page).val(),apiClient.ajax({type:"POST",data:config,url:apiClient.getUrl("Startup/Configuration")}).then(function(){loading.hide(),navigateToNextPage()})})}function populateLanguages(select,languages){var html="";html+="";for(var i=0,length=languages.length;i"+culture.DisplayName+""}select.innerHTML=html}function populateCountries(select,allCountries){var html="";html+="";for(var i=0,length=allCountries.length;i"+culture.DisplayName+""}select.innerHTML=html}function reloadData(page,config,cultures,countries){populateLanguages(page.querySelector("#selectLanguage"),cultures),populateCountries(page.querySelector("#selectCountry"),countries),$("#selectLanguage",page).val(config.PreferredMetadataLanguage),$("#selectCountry",page).val(config.MetadataCountryCode),loading.hide()}function reload(page){loading.show();var apiClient=ApiClient,promise1=apiClient.getJSON(apiClient.getUrl("Startup/Configuration")),promise2=apiClient.getCultures(),promise3=apiClient.getCountries();Promise.all([promise1,promise2,promise3]).then(function(responses){reloadData(page,responses[0],responses[1],responses[2])})}function navigateToNextPage(){require(["scripts/wizardcontroller"],function(wizardcontroller){wizardcontroller.navigateToComponents()})}function onSubmit(){var form=this;return save(form),!1}$(document).on("pageinit","#wizardSettingsPage",function(){var page=this;$(".wizardSettingsForm",page).off("submit",onSubmit).on("submit",onSubmit)}).on("pageshow","#wizardSettingsPage",function(){var page=this;reload(page)})}); \ No newline at end of file diff --git a/dashboard-ui/scripts/wizardstartpage.js b/dashboard-ui/scripts/wizardstartpage.js index c5e7081dbf..c5a96ae70a 100644 --- a/dashboard-ui/scripts/wizardstartpage.js +++ b/dashboard-ui/scripts/wizardstartpage.js @@ -1 +1 @@ -define(["jQuery"],function($){"use strict";function loadPage(page,config,languageOptions){$("#selectLocalizationLanguage",page).html(languageOptions.map(function(l){return'"})).val(config.UICulture),Dashboard.hideLoadingMsg()}function save(page){Dashboard.showLoadingMsg();var apiClient=ApiClient;apiClient.getJSON(apiClient.getUrl("Startup/Configuration")).then(function(config){config.UICulture=$("#selectLocalizationLanguage",page).val(),apiClient.ajax({type:"POST",data:config,url:apiClient.getUrl("Startup/Configuration")}).then(function(){Dashboard.navigate("wizarduser.html")})})}function onSubmit(){return save($(this).parents(".page")),!1}$(document).on("pageinit","#wizardStartPage",function(){$(".wizardStartForm").off("submit",onSubmit).on("submit",onSubmit),window.ConnectionManager.clearData()}).on("pageshow","#wizardStartPage",function(){Dashboard.showLoadingMsg();var page=this,apiClient=ApiClient,promise1=apiClient.getJSON(apiClient.getUrl("Startup/Configuration")),promise2=apiClient.getJSON(apiClient.getUrl("Localization/Options"));Promise.all([promise1,promise2]).then(function(responses){loadPage(page,responses[0],responses[1])})})}); \ No newline at end of file +define(["jQuery","loading"],function($,loading){"use strict";function loadPage(page,config,languageOptions){$("#selectLocalizationLanguage",page).html(languageOptions.map(function(l){return'"})).val(config.UICulture),loading.hide()}function save(page){loading.show();var apiClient=ApiClient;apiClient.getJSON(apiClient.getUrl("Startup/Configuration")).then(function(config){config.UICulture=$("#selectLocalizationLanguage",page).val(),apiClient.ajax({type:"POST",data:config,url:apiClient.getUrl("Startup/Configuration")}).then(function(){Dashboard.navigate("wizarduser.html")})})}function onSubmit(){return save($(this).parents(".page")),!1}$(document).on("pageinit","#wizardStartPage",function(){$(".wizardStartForm").off("submit",onSubmit).on("submit",onSubmit),window.ConnectionManager.clearData()}).on("pageshow","#wizardStartPage",function(){loading.show();var page=this,apiClient=ApiClient,promise1=apiClient.getJSON(apiClient.getUrl("Startup/Configuration")),promise2=apiClient.getJSON(apiClient.getUrl("Localization/Options"));Promise.all([promise1,promise2]).then(function(responses){loadPage(page,responses[0],responses[1])})})}); \ No newline at end of file diff --git a/dashboard-ui/scripts/wizarduserpage.js b/dashboard-ui/scripts/wizarduserpage.js index 0c8facfb52..670bd194b1 100644 --- a/dashboard-ui/scripts/wizarduserpage.js +++ b/dashboard-ui/scripts/wizarduserpage.js @@ -1 +1 @@ -define(["jQuery"],function($){"use strict";function getApiClient(){return ApiClient}function onUpdateUserComplete(result){if(Dashboard.hideLoadingMsg(),result.UserLinkResult){var msgKey=result.UserLinkResult.IsPending?"MessagePendingEmbyAccountAdded":"MessageEmbyAccountAdded";Dashboard.alert({message:Globalize.translate(msgKey),title:Globalize.translate("HeaderEmbyAccountAdded"),callback:function(){Dashboard.navigate("wizardlibrary.html")}})}else Dashboard.navigate("wizardlibrary.html")}function submit(form){Dashboard.showLoadingMsg();var apiClient=getApiClient();apiClient.ajax({type:"POST",data:{Name:form.querySelector("#txtUsername").value,ConnectUserName:form.querySelector("#txtConnectUserName").value},url:apiClient.getUrl("Startup/User"),dataType:"json"}).then(onUpdateUserComplete,function(){showEmbyConnectErrorMessage(form.querySelector("#txtConnectUserName").value)})}function showEmbyConnectErrorMessage(username){var msg;username?(msg=Globalize.translate("ErrorAddingEmbyConnectAccount1",'https://emby.media/connect'),msg+="

"+Globalize.translate("ErrorAddingEmbyConnectAccount2","apps@emby.media")):msg=Globalize.translate("DefaultErrorMessage"),Dashboard.alert({message:msg})}function onSubmit(){var form=this;return submit(form),!1}$(document).on("pageinit","#wizardUserPage",function(){$(".wizardUserForm").off("submit",onSubmit).on("submit",onSubmit)}).on("pageshow","#wizardUserPage",function(){Dashboard.showLoadingMsg();var page=this,apiClient=getApiClient();apiClient.getJSON(apiClient.getUrl("Startup/User")).then(function(user){page.querySelector("#txtUsername").value=user.Name||"",page.querySelector("#txtConnectUserName").value=user.ConnectUserName||"",Dashboard.hideLoadingMsg()})})}); \ No newline at end of file +define(["jQuery","loading"],function($,loading){"use strict";function getApiClient(){return ApiClient}function onUpdateUserComplete(result){if(loading.hide(),result.UserLinkResult){var msgKey=result.UserLinkResult.IsPending?"MessagePendingEmbyAccountAdded":"MessageEmbyAccountAdded";Dashboard.alert({message:Globalize.translate(msgKey),title:Globalize.translate("HeaderEmbyAccountAdded"),callback:function(){Dashboard.navigate("wizardlibrary.html")}})}else Dashboard.navigate("wizardlibrary.html")}function submit(form){loading.show();var apiClient=getApiClient();apiClient.ajax({type:"POST",data:{Name:form.querySelector("#txtUsername").value,ConnectUserName:form.querySelector("#txtConnectUserName").value},url:apiClient.getUrl("Startup/User"),dataType:"json"}).then(onUpdateUserComplete,function(){showEmbyConnectErrorMessage(form.querySelector("#txtConnectUserName").value)})}function showEmbyConnectErrorMessage(username){var msg;username?(msg=Globalize.translate("ErrorAddingEmbyConnectAccount1",'https://emby.media/connect'),msg+="

"+Globalize.translate("ErrorAddingEmbyConnectAccount2","apps@emby.media")):msg=Globalize.translate("DefaultErrorMessage"),Dashboard.alert({message:msg})}function onSubmit(){var form=this;return submit(form),!1}$(document).on("pageinit","#wizardUserPage",function(){$(".wizardUserForm").off("submit",onSubmit).on("submit",onSubmit)}).on("pageshow","#wizardUserPage",function(){loading.show();var page=this,apiClient=getApiClient();apiClient.getJSON(apiClient.getUrl("Startup/User")).then(function(user){page.querySelector("#txtUsername").value=user.Name||"",page.querySelector("#txtConnectUserName").value=user.ConnectUserName||"",loading.hide()})})}); \ No newline at end of file diff --git a/dashboard-ui/strings/ar.json b/dashboard-ui/strings/ar.json index 0b4ef3c758..81379b09ec 100644 --- a/dashboard-ui/strings/ar.json +++ b/dashboard-ui/strings/ar.json @@ -96,6 +96,7 @@ "LabelDisplayMissingEpisodesWithinSeasonsHelp": "\u064a\u0646\u0628\u063a\u064a \u062a\u0641\u0639\u064a\u0644 \u0647\u0630\u0647 \u0627\u0644\u062e\u0627\u0635\u064a\u0629 \u0644\u0645\u0643\u062a\u0628\u0627\u062a \u0627\u0644\u062a\u0644\u0641\u0632\u0629 \u0641\u064a \u0625\u0639\u062f\u0627\u062f\u0627\u062a \u062e\u0627\u062f\u0645 \u0623\u0645\u0628\u064a", "LabelUnairedMissingEpisodesWithinSeasons": "\u0627\u0639\u0631\u0636 \u0627\u0644\u062d\u0644\u0642\u0627\u062a \u0627\u0644\u062a\u064a \u0644\u0645 \u062a\u0628\u062b \u0641\u064a \u0645\u062c\u0644\u062f\u0627\u062a \u0627\u0644\u0645\u0648\u0627\u0633\u0645", "ImportMissingEpisodesHelp": "\u0639\u0646\u062f \u0627\u0644\u062a\u0645\u0643\u064a\u0646\u060c \u0627\u0644\u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0627\u0644\u0646\u0627\u0642\u0635\u0629 \u0644\u0644\u062d\u0644\u0642\u0627\u062a \u0633\u062a\u0648\u0631\u0651\u062f \u0625\u0644\u0649 \u0642\u0627\u0639\u062f\u0629 \u0628\u064a\u0627\u0646\u0627\u062a \u0623\u0645\u0628\u064a \u0648\u0633\u062a\u0639\u0631\u0636 \u062f\u0627\u062e\u0644 \u0627\u0644\u0645\u0648\u0627\u0633\u0645 \u0648\u0627\u0644\u0645\u0633\u0644\u0633\u0644\u0627\u062a. \u0642\u062f \u062a\u062a\u0633\u0628\u0628 \u0647\u0630\u0647 \u0628\u0623\u0648\u0642\u0627\u062a \u0623\u0637\u0648\u0644 \u0628\u0643\u062b\u064a\u0631 \u0639\u0646\u062f \u062a\u0645\u0634\u064a\u0637 \u0627\u0644\u0645\u0643\u0646\u0628\u0627\u062a.", + "MessageEnablingOptionLongerScans": "Enabling this option may result in significantly longer library scans.", "HeaderVideoPlaybackSettings": "\u0627\u0639\u062f\u0627\u062f\u0627\u062a \u062a\u0634\u063a\u064a\u0644 \u0627\u0644\u0641\u064a\u062f\u064a\u0648", "OptionDownloadInternetMetadataTvPrograms": "\u062a\u0646\u0632\u064a\u0644 \u0648\u0627\u0635\u0641\u0627\u062a \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0645\u0646 \u0627\u0644\u0625\u0646\u062a\u0631\u0646\u062a \u0644\u0644\u0628\u0631\u0627\u0645\u062c \u0627\u0644\u0645\u0630\u0643\u0648\u0631\u0629 \u0641\u064a \u0647\u0630\u0627 \u0627\u0644\u062f\u0644\u064a\u0644", "HeaderPlaybackSettings": "\u0625\u0639\u062f\u0627\u062f\u0627\u062a \u0627\u0644\u062a\u0634\u063a\u064a\u0644", @@ -1787,7 +1788,7 @@ "ButtonServer": "\u0627\u0644\u062e\u0627\u062f\u0645", "HeaderLibrary": "\u0627\u0644\u0645\u0643\u062a\u0628\u0629", "HeaderMedia": "\u0627\u0644\u0648\u0633\u0627\u0626\u0637", - "NoNewDevicesFound": "No new devices found.", + "NoNewDevicesFound": "No new devices found. To add a new tuner, close this dialog and enter the device information manually.", "NoResultsFound": "\u0644\u0645 \u064a\u062a\u0645 \u0627\u0644\u0639\u062b\u0648\u0631 \u0639\u0644\u0649 \u0623\u064a\u0629 \u0646\u062a\u0627\u0626\u062c.", "ButtonManageServer": "\u0625\u062f\u0627\u0631\u0629 \u0627\u0644\u062e\u0627\u062f\u0645", "ButtonPreferences": "\u0627\u0644\u062a\u0641\u0636\u064a\u0644\u0627\u062a", diff --git a/dashboard-ui/strings/be-by.json b/dashboard-ui/strings/be-by.json index a22138757a..f426a898ae 100644 --- a/dashboard-ui/strings/be-by.json +++ b/dashboard-ui/strings/be-by.json @@ -96,6 +96,7 @@ "LabelDisplayMissingEpisodesWithinSeasonsHelp": "This must also be enabled for TV libraries in Emby Server setup.", "LabelUnairedMissingEpisodesWithinSeasons": "Display unaired episodes within seasons", "ImportMissingEpisodesHelp": "If enabled, information about missing episodes will be imported into your Emby database and displayed within seasons and series. This may cause significantly longer library scans.", + "MessageEnablingOptionLongerScans": "Enabling this option may result in significantly longer library scans.", "HeaderVideoPlaybackSettings": "Video Playback Settings", "OptionDownloadInternetMetadataTvPrograms": "Download internet metadata for programs listed in the guide", "HeaderPlaybackSettings": "Playback Settings", @@ -1787,7 +1788,7 @@ "ButtonServer": "Server", "HeaderLibrary": "Library", "HeaderMedia": "Media", - "NoNewDevicesFound": "No new devices found.", + "NoNewDevicesFound": "No new devices found. To add a new tuner, close this dialog and enter the device information manually.", "NoResultsFound": "No results found.", "ButtonManageServer": "Manage Server", "ButtonPreferences": "Preferences", @@ -1823,7 +1824,7 @@ "HeaderSortOrder": "Sort Order", "ButtonDisconnect": "Disconnect", "ButtonMenu": "Menu", - "ForAdditionalLiveTvOptions": "For additional Live TV providers, click on the External Services tab to see the available options.", + "ForAdditionalLiveTvOptions": "For additional Live TV providers, click on the Services tab to see the available options.", "ButtonGuide": "Guide", "ConfirmEndPlayerSession": "Would you like to close Emby on the device?", "ButtonYes": "Yes", diff --git a/dashboard-ui/strings/bg-bg.json b/dashboard-ui/strings/bg-bg.json index 0b6a784253..ca492f4b54 100644 --- a/dashboard-ui/strings/bg-bg.json +++ b/dashboard-ui/strings/bg-bg.json @@ -96,6 +96,7 @@ "LabelDisplayMissingEpisodesWithinSeasonsHelp": "\u0417\u0430 TV \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0442\u0430 \u043d\u0430 Emby Server, \u0442\u043e\u0432\u0430 \u0441\u044a\u0449\u043e \u0442\u0440\u044f\u0431\u0432\u0430 \u0434\u0430 \u0435 \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u0430\u043d\u043e.", "LabelUnairedMissingEpisodesWithinSeasons": "\u041f\u043e\u043a\u0430\u0437\u0432\u0430\u0439 \u043d\u0435\u0438\u0437\u043b\u044a\u0447\u0435\u043d\u0438 \u0435\u043f\u0438\u0437\u043e\u0434\u0438 \u0432 \u0441\u0435\u0437\u043e\u043d\u0438\u0442\u0435", "ImportMissingEpisodesHelp": "\u0410\u043a\u043e \u0435 \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u0430\u043d\u043e, \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0437\u0430 \u043b\u0438\u043f\u0441\u0432\u0430\u0449\u0438 \u0435\u043f\u0438\u0437\u043e\u0434\u0438 \u0449\u0435 \u0431\u044a\u0434\u0435 \u0434\u043e\u0431\u0430\u0432\u0435\u043d\u0430 \u0432 \u0431\u0430\u0437\u0430\u0442\u0430 \u0434\u0430\u043d\u043d\u0438 \u043d\u0430 Emby \u0438 \u0449\u0435 \u0431\u044a\u0434\u0435 \u043f\u043e\u043a\u0430\u0437\u0432\u0430\u043d\u0430 \u0437\u0430\u0435\u0434\u043d\u043e \u0441\u044a\u0441 \u0441\u0435\u0437\u043e\u043d\u0438 \u0438 \u0441\u0435\u0440\u0438\u0438. \u0422\u043e\u0432\u0430 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0434\u043e\u0432\u0435\u0434\u0435 \u0434\u043e \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u043d\u043e \u043f\u043e-\u0434\u044a\u043b\u0433\u043e \u0441\u043a\u0430\u043d\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430\u0442\u0430.", + "MessageEnablingOptionLongerScans": "Enabling this option may result in significantly longer library scans.", "HeaderVideoPlaybackSettings": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043d\u0430 \u0432\u044a\u0437\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0436\u0434\u0430\u043d\u0435\u0442\u043e \u043d\u0430 \u0432\u0438\u0434\u0435\u043e", "OptionDownloadInternetMetadataTvPrograms": "\u0421\u0432\u0430\u043b\u044f\u0439 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u0438 \u0437\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u0438\u0442\u0435 \u0432 \u0440\u044a\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e\u0442\u043e", "HeaderPlaybackSettings": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043d\u0430 \u0432\u044a\u0437\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0436\u0434\u0430\u043d\u0435\u0442\u043e", @@ -1787,7 +1788,7 @@ "ButtonServer": "Server", "HeaderLibrary": "Library", "HeaderMedia": "Media", - "NoNewDevicesFound": "No new devices found.", + "NoNewDevicesFound": "No new devices found. To add a new tuner, close this dialog and enter the device information manually.", "NoResultsFound": "No results found.", "ButtonManageServer": "Manage Server", "ButtonPreferences": "Preferences", @@ -1823,7 +1824,7 @@ "HeaderSortOrder": "Sort Order", "ButtonDisconnect": "Disconnect", "ButtonMenu": "Menu", - "ForAdditionalLiveTvOptions": "For additional Live TV providers, click on the External Services tab to see the available options.", + "ForAdditionalLiveTvOptions": "For additional Live TV providers, click on the Services tab to see the available options.", "ButtonGuide": "Guide", "ConfirmEndPlayerSession": "Would you like to close Emby on the device?", "ButtonYes": "Yes", diff --git a/dashboard-ui/strings/ca.json b/dashboard-ui/strings/ca.json index 2b5300e0ac..282a9cefea 100644 --- a/dashboard-ui/strings/ca.json +++ b/dashboard-ui/strings/ca.json @@ -96,6 +96,7 @@ "LabelDisplayMissingEpisodesWithinSeasonsHelp": "This must also be enabled for TV libraries in Emby Server setup.", "LabelUnairedMissingEpisodesWithinSeasons": "Mostra els episodis que no han estat emesos dins les temporades", "ImportMissingEpisodesHelp": "If enabled, information about missing episodes will be imported into your Emby database and displayed within seasons and series. This may cause significantly longer library scans.", + "MessageEnablingOptionLongerScans": "Enabling this option may result in significantly longer library scans.", "HeaderVideoPlaybackSettings": "Opcions de Reproducci\u00f3 de V\u00eddeo", "OptionDownloadInternetMetadataTvPrograms": "Download internet metadata for programs listed in the guide", "HeaderPlaybackSettings": "Opcions de Reproducci\u00f3", @@ -1787,7 +1788,7 @@ "ButtonServer": "Servidor", "HeaderLibrary": "Biblioteca", "HeaderMedia": "Media", - "NoNewDevicesFound": "No new devices found.", + "NoNewDevicesFound": "No new devices found. To add a new tuner, close this dialog and enter the device information manually.", "NoResultsFound": "No results found.", "ButtonManageServer": "Gestionar Servidor", "ButtonPreferences": "Prefer\u00e8ncies", @@ -1823,7 +1824,7 @@ "HeaderSortOrder": "Ordre de Classificaci\u00f3", "ButtonDisconnect": "Desconnecta", "ButtonMenu": "Men\u00fa", - "ForAdditionalLiveTvOptions": "For additional Live TV providers, click on the External Services tab to see the available options.", + "ForAdditionalLiveTvOptions": "For additional Live TV providers, click on the Services tab to see the available options.", "ButtonGuide": "Guia", "ConfirmEndPlayerSession": "Vols apagar l'emby al dispositiu?", "ButtonYes": "S\u00ed", diff --git a/dashboard-ui/strings/cs.json b/dashboard-ui/strings/cs.json index 80aab3981b..16cdd24fc1 100644 --- a/dashboard-ui/strings/cs.json +++ b/dashboard-ui/strings/cs.json @@ -96,6 +96,7 @@ "LabelDisplayMissingEpisodesWithinSeasonsHelp": "Mus\u00ed b\u00fdt zapnuto pro knihovny TV v nastaven\u00ed Emby Server", "LabelUnairedMissingEpisodesWithinSeasons": "Zobrazit neodvys\u00edlan\u00e9 epizody v r\u00e1mci sez\u00f3n", "ImportMissingEpisodesHelp": "Pokud je povoleno, budou informace o chyb\u011bj\u00edc\u00edch epizod\u00e1ch importov\u00e1ny do datab\u00e1ze Emby a zobraz\u00ed se v sez\u00f3n\u00e1ch seri\u00e1lu. To m\u016f\u017ee zp\u016fsobit podstatn\u011b del\u0161\u00ed skenov\u00e1n\u00ed knihovny.", + "MessageEnablingOptionLongerScans": "Enabling this option may result in significantly longer library scans.", "HeaderVideoPlaybackSettings": "Nastaven\u00ed p\u0159ehr\u00e1v\u00e1n\u00ed videa", "OptionDownloadInternetMetadataTvPrograms": "Stahovat metadata z internetu pro programov\u00e1n\u00ed uveden\u00e9 v pr\u016fvodci", "HeaderPlaybackSettings": "Nastaven\u00ed p\u0159ehr\u00e1v\u00e1n\u00ed", @@ -1787,7 +1788,7 @@ "ButtonServer": "Server", "HeaderLibrary": "Knihovna", "HeaderMedia": "M\u00e9dia", - "NoNewDevicesFound": "No new devices found.", + "NoNewDevicesFound": "No new devices found. To add a new tuner, close this dialog and enter the device information manually.", "NoResultsFound": "\u017d\u00e1dn\u00e9 v\u00fdsledky.", "ButtonManageServer": "Spr\u00e1vce serveru", "ButtonPreferences": "P\u0159edvolby", diff --git a/dashboard-ui/strings/da.json b/dashboard-ui/strings/da.json index 69d692067f..159e88ad83 100644 --- a/dashboard-ui/strings/da.json +++ b/dashboard-ui/strings/da.json @@ -96,6 +96,7 @@ "LabelDisplayMissingEpisodesWithinSeasonsHelp": "Dette skal ogs\u00e5 aktiveres for TV-biblioteker i Emby Serversetup.", "LabelUnairedMissingEpisodesWithinSeasons": "Vis endnu ikke sendte episoder i s\u00e6soner", "ImportMissingEpisodesHelp": "hvis aktiveret, vil information omkring manglende episoder bliver importeret ind i din Emby-database og blive vist i s\u00e6soner og serier. Dette medf\u00f8rer muligvis l\u00e6ngere biblioteksscanninger.", + "MessageEnablingOptionLongerScans": "Enabling this option may result in significantly longer library scans.", "HeaderVideoPlaybackSettings": "Indstillinger for videoafspilning", "OptionDownloadInternetMetadataTvPrograms": "Donwload internet metadata for programmer vist i guiden", "HeaderPlaybackSettings": "Indstillinger for afspilning", diff --git a/dashboard-ui/strings/de-de.json b/dashboard-ui/strings/de-de.json index c56b4fdd0b..5583c53686 100644 --- a/dashboard-ui/strings/de-de.json +++ b/dashboard-ui/strings/de-de.json @@ -96,6 +96,7 @@ "LabelDisplayMissingEpisodesWithinSeasonsHelp": "This must also be enabled for TV libraries in Emby Server setup.", "LabelUnairedMissingEpisodesWithinSeasons": "Display unaired episodes within seasons", "ImportMissingEpisodesHelp": "If enabled, information about missing episodes will be imported into your Emby database and displayed within seasons and series. This may cause significantly longer library scans.", + "MessageEnablingOptionLongerScans": "Enabling this option may result in significantly longer library scans.", "HeaderVideoPlaybackSettings": "Video Playback Settings", "OptionDownloadInternetMetadataTvPrograms": "Download internet metadata for programs listed in the guide", "HeaderPlaybackSettings": "Playback Settings", @@ -1787,7 +1788,7 @@ "ButtonServer": "Server", "HeaderLibrary": "Library", "HeaderMedia": "Media", - "NoNewDevicesFound": "No new devices found.", + "NoNewDevicesFound": "No new devices found. To add a new tuner, close this dialog and enter the device information manually.", "NoResultsFound": "No results found.", "ButtonManageServer": "Manage Server", "ButtonPreferences": "Preferences", @@ -1823,7 +1824,7 @@ "HeaderSortOrder": "Sort Order", "ButtonDisconnect": "Disconnect", "ButtonMenu": "Men\u00fc", - "ForAdditionalLiveTvOptions": "For additional Live TV providers, click on the External Services tab to see the available options.", + "ForAdditionalLiveTvOptions": "For additional Live TV providers, click on the Services tab to see the available options.", "ButtonGuide": "Guide", "ConfirmEndPlayerSession": "Would you like to close Emby on the device?", "ButtonYes": "Ja", diff --git a/dashboard-ui/strings/de.json b/dashboard-ui/strings/de.json index be09a306cf..80cf68c5cd 100644 --- a/dashboard-ui/strings/de.json +++ b/dashboard-ui/strings/de.json @@ -96,6 +96,7 @@ "LabelDisplayMissingEpisodesWithinSeasonsHelp": "Dies sollte f\u00fcr Serien in der Bibliothek in den Emby Einstellungen aktiviert sein.", "LabelUnairedMissingEpisodesWithinSeasons": "Zeige noch nicht ausgestahlte Episoden innerhalb von Staffeln", "ImportMissingEpisodesHelp": "Wenn aktiviert, werden Informationen \u00fcber fehlende Episoden in Deine Emby Datenbank importiert und innerhalb von Staffeln angezeigt. Dies kann zu deutlich l\u00e4ngeren Bibliothek Scans f\u00fchren.", + "MessageEnablingOptionLongerScans": "Enabling this option may result in significantly longer library scans.", "HeaderVideoPlaybackSettings": "Videowiedergabe Einstellungen", "OptionDownloadInternetMetadataTvPrograms": "Lade Metadaten f\u00fcr Programme im TV Guide herunter", "HeaderPlaybackSettings": "Wiedergabe Einstellungen", diff --git a/dashboard-ui/strings/el.json b/dashboard-ui/strings/el.json index e7e30cd2d9..6451b50ee5 100644 --- a/dashboard-ui/strings/el.json +++ b/dashboard-ui/strings/el.json @@ -96,6 +96,7 @@ "LabelDisplayMissingEpisodesWithinSeasonsHelp": "This must also be enabled for TV libraries in Emby Server setup.", "LabelUnairedMissingEpisodesWithinSeasons": "\u0395\u03bc\u03c6\u03ac\u03bd\u03b9\u03c3\u03b7 \u03ac\u03c0\u03b1\u03b9\u03c7\u03c4\u03c9\u03bd \u03b5\u03c0\u03b5\u03b9\u03c3\u03bf\u03b4\u03af\u03c9\u03bd \u03b1\u03c0\u03cc \u03c4\u03b7\u03bd \u03c3\u03b1\u03b9\u03b6\u03cc\u03bd", "ImportMissingEpisodesHelp": "If enabled, information about missing episodes will be imported into your Emby database and displayed within seasons and series. This may cause significantly longer library scans.", + "MessageEnablingOptionLongerScans": "Enabling this option may result in significantly longer library scans.", "HeaderVideoPlaybackSettings": "\u03a1\u03c5\u03b8\u03bc\u03af\u03c3\u03b5\u03b9\u03c2 \u0391\u03bd\u03b1\u03c0\u03b1\u03c1\u03b1\u03b3\u03c9\u03b3\u03ae\u03c2 \u0392\u03af\u03bd\u03c4\u03b5\u03bf", "OptionDownloadInternetMetadataTvPrograms": "Download internet metadata for programs listed in the guide", "HeaderPlaybackSettings": "\u03a1\u03c5\u03b8\u03bc\u03af\u03c3\u03b5\u03b9\u03c2 \u0391\u03bd\u03b1\u03c0\u03b1\u03c1\u03b1\u03b3\u03c9\u03b3\u03ae\u03c2", @@ -1787,7 +1788,7 @@ "ButtonServer": "Server", "HeaderLibrary": "Library", "HeaderMedia": "Media", - "NoNewDevicesFound": "No new devices found.", + "NoNewDevicesFound": "No new devices found. To add a new tuner, close this dialog and enter the device information manually.", "NoResultsFound": "No results found.", "ButtonManageServer": "Manage Server", "ButtonPreferences": "Preferences", @@ -1823,7 +1824,7 @@ "HeaderSortOrder": "Sort Order", "ButtonDisconnect": "Disconnect", "ButtonMenu": "Menu", - "ForAdditionalLiveTvOptions": "For additional Live TV providers, click on the External Services tab to see the available options.", + "ForAdditionalLiveTvOptions": "For additional Live TV providers, click on the Services tab to see the available options.", "ButtonGuide": "Guide", "ConfirmEndPlayerSession": "Would you like to close Emby on the device?", "ButtonYes": "Yes", diff --git a/dashboard-ui/strings/en-gb.json b/dashboard-ui/strings/en-gb.json index 61316d2b5c..de92695cb6 100644 --- a/dashboard-ui/strings/en-gb.json +++ b/dashboard-ui/strings/en-gb.json @@ -96,6 +96,7 @@ "LabelDisplayMissingEpisodesWithinSeasonsHelp": "This must also be enabled for TV libraries in Emby Server setup.", "LabelUnairedMissingEpisodesWithinSeasons": "Display unaired episodes within series", "ImportMissingEpisodesHelp": "If enabled, information about missing episodes will be imported into your Emby database and displayed within seasons and series. This may cause significantly longer library scans.", + "MessageEnablingOptionLongerScans": "Enabling this option may result in significantly longer library scans.", "HeaderVideoPlaybackSettings": "Video Playback Settings", "OptionDownloadInternetMetadataTvPrograms": "Download internet metadata for programmes listed in the guide", "HeaderPlaybackSettings": "Playback Settings", @@ -1117,7 +1118,7 @@ "LabelConversionCpuCoreLimit": "CPU core limit:", "LabelConversionCpuCoreLimitHelp": "Limit the number of CPU cores that will be used during sync conversion.", "OptionEnableFullSpeedConversion": "Enable full speed conversion", - "OptionEnableFullSpeedConversionHelp": "By default, sync conversion is performed at a low speed to minimize resource consumption.", + "OptionEnableFullSpeedConversionHelp": "By default, sync conversion is performed at a low speed to minimise resource consumption.", "HeaderPlaylists": "Playlists", "HeaderViewStyles": "View Styles", "TabPhotos": "Photos", @@ -1787,7 +1788,7 @@ "ButtonServer": "Server", "HeaderLibrary": "Library", "HeaderMedia": "Media", - "NoNewDevicesFound": "No new devices found.", + "NoNewDevicesFound": "No new devices found. To add a new tuner, close this dialogue and enter the device information manually.", "NoResultsFound": "No results found.", "ButtonManageServer": "Manage Server", "ButtonPreferences": "Preferences", @@ -1823,7 +1824,7 @@ "HeaderSortOrder": "Sort Order", "ButtonDisconnect": "Disconnect", "ButtonMenu": "Menu", - "ForAdditionalLiveTvOptions": "For additional Live TV providers, click on the External Services tab to see the available options.", + "ForAdditionalLiveTvOptions": "For additional Live TV providers, click on the Services tab to see the available options.", "ButtonGuide": "Guide", "ConfirmEndPlayerSession": "Would you like to close Emby on the device?", "ButtonYes": "Yes", diff --git a/dashboard-ui/strings/en-us.json b/dashboard-ui/strings/en-us.json index d6d022d947..74df6a810f 100644 --- a/dashboard-ui/strings/en-us.json +++ b/dashboard-ui/strings/en-us.json @@ -1788,7 +1788,7 @@ "ButtonServer": "Server", "HeaderLibrary": "Library", "HeaderMedia": "Media", - "NoNewDevicesFound": "No new devices found.", + "NoNewDevicesFound": "No new devices found. To add a new tuner, close this dialog and enter the device information manually.", "NoResultsFound": "No results found.", "ButtonManageServer": "Manage Server", "ButtonPreferences": "Preferences", @@ -1824,7 +1824,7 @@ "HeaderSortOrder": "Sort Order", "ButtonDisconnect": "Disconnect", "ButtonMenu": "Menu", - "ForAdditionalLiveTvOptions": "For additional Live TV providers, click on the External Services tab to see the available options.", + "ForAdditionalLiveTvOptions": "For additional Live TV providers, click on the Services tab to see the available options.", "ButtonGuide": "Guide", "ConfirmEndPlayerSession": "Would you like to close Emby on the device?", "ButtonYes": "Yes", diff --git a/dashboard-ui/strings/es-ar.json b/dashboard-ui/strings/es-ar.json index 7ddbdf1ac9..eb8efbc9a8 100644 --- a/dashboard-ui/strings/es-ar.json +++ b/dashboard-ui/strings/es-ar.json @@ -96,6 +96,7 @@ "LabelDisplayMissingEpisodesWithinSeasonsHelp": "This must also be enabled for TV libraries in Emby Server setup.", "LabelUnairedMissingEpisodesWithinSeasons": "Display unaired episodes within seasons", "ImportMissingEpisodesHelp": "If enabled, information about missing episodes will be imported into your Emby database and displayed within seasons and series. This may cause significantly longer library scans.", + "MessageEnablingOptionLongerScans": "Enabling this option may result in significantly longer library scans.", "HeaderVideoPlaybackSettings": "Video Playback Settings", "OptionDownloadInternetMetadataTvPrograms": "Download internet metadata for programs listed in the guide", "HeaderPlaybackSettings": "Playback Settings", @@ -1787,7 +1788,7 @@ "ButtonServer": "Server", "HeaderLibrary": "Library", "HeaderMedia": "Media", - "NoNewDevicesFound": "No new devices found.", + "NoNewDevicesFound": "No new devices found. To add a new tuner, close this dialog and enter the device information manually.", "NoResultsFound": "No results found.", "ButtonManageServer": "Manage Server", "ButtonPreferences": "Preferences", @@ -1823,7 +1824,7 @@ "HeaderSortOrder": "Sort Order", "ButtonDisconnect": "Disconnect", "ButtonMenu": "Menu", - "ForAdditionalLiveTvOptions": "For additional Live TV providers, click on the External Services tab to see the available options.", + "ForAdditionalLiveTvOptions": "For additional Live TV providers, click on the Services tab to see the available options.", "ButtonGuide": "Guide", "ConfirmEndPlayerSession": "Would you like to close Emby on the device?", "ButtonYes": "Yes", diff --git a/dashboard-ui/strings/es-es.json b/dashboard-ui/strings/es-es.json index 20d0967f4e..740a575c23 100644 --- a/dashboard-ui/strings/es-es.json +++ b/dashboard-ui/strings/es-es.json @@ -96,6 +96,7 @@ "LabelDisplayMissingEpisodesWithinSeasonsHelp": "This must also be enabled for TV libraries in Emby Server setup.", "LabelUnairedMissingEpisodesWithinSeasons": "Display unaired episodes within seasons", "ImportMissingEpisodesHelp": "If enabled, information about missing episodes will be imported into your Emby database and displayed within seasons and series. This may cause significantly longer library scans.", + "MessageEnablingOptionLongerScans": "Enabling this option may result in significantly longer library scans.", "HeaderVideoPlaybackSettings": "Video Playback Settings", "OptionDownloadInternetMetadataTvPrograms": "Download internet metadata for programs listed in the guide", "HeaderPlaybackSettings": "Playback Settings", @@ -1787,7 +1788,7 @@ "ButtonServer": "Server", "HeaderLibrary": "Library", "HeaderMedia": "Media", - "NoNewDevicesFound": "No new devices found.", + "NoNewDevicesFound": "No new devices found. To add a new tuner, close this dialog and enter the device information manually.", "NoResultsFound": "No results found.", "ButtonManageServer": "Manage Server", "ButtonPreferences": "Preferences", @@ -1823,7 +1824,7 @@ "HeaderSortOrder": "Sort Order", "ButtonDisconnect": "Disconnect", "ButtonMenu": "Menu", - "ForAdditionalLiveTvOptions": "For additional Live TV providers, click on the External Services tab to see the available options.", + "ForAdditionalLiveTvOptions": "For additional Live TV providers, click on the Services tab to see the available options.", "ButtonGuide": "Guide", "ConfirmEndPlayerSession": "Would you like to close Emby on the device?", "ButtonYes": "Yes", diff --git a/dashboard-ui/strings/es-mx.json b/dashboard-ui/strings/es-mx.json index a424261045..66a54b1271 100644 --- a/dashboard-ui/strings/es-mx.json +++ b/dashboard-ui/strings/es-mx.json @@ -96,6 +96,7 @@ "LabelDisplayMissingEpisodesWithinSeasonsHelp": "Esta opci\u00f3n tambi\u00e9n debe de estar habilitada en la configuraci\u00f3n del servidor Emby para bibliotecas de TV.", "LabelUnairedMissingEpisodesWithinSeasons": "Mostrar episodios a\u00fan no emitidos en las temporadas", "ImportMissingEpisodesHelp": "Si se habilita, se importara a su base de datos de Emby informaci\u00f3n sobre episodios faltantes y se mostrara dentro de las temporadas y series. Esto podr\u00eda ocasionar escaneos de biblioteca significativamente mas largos.", + "MessageEnablingOptionLongerScans": "Habilitar esta opci\u00f3n podr\u00eda resultar en escaneos de bibliotecas significativamente mas largos.", "HeaderVideoPlaybackSettings": "Configuraci\u00f3n de Reproducci\u00f3n de Video", "OptionDownloadInternetMetadataTvPrograms": "Descargar metadatos de internet para programas listados en la gu\u00eda", "HeaderPlaybackSettings": "Configuraci\u00f3n de Reproducci\u00f3n", diff --git a/dashboard-ui/strings/es.json b/dashboard-ui/strings/es.json index 2a8292e472..b597d60f0c 100644 --- a/dashboard-ui/strings/es.json +++ b/dashboard-ui/strings/es.json @@ -96,6 +96,7 @@ "LabelDisplayMissingEpisodesWithinSeasonsHelp": "Tambi\u00e9n debe habilitarse para bibliotecas de TV en la configuraci\u00f3n de Emby Server.", "LabelUnairedMissingEpisodesWithinSeasons": "Mostrar episodios a\u00fan no emitidos en temporadas", "ImportMissingEpisodesHelp": "Si est\u00e1 activada, la informaci\u00f3n sobre los episodios que faltan se importar\u00e1 en su base de datos Emby y se mostrar\u00e1 en temporadas y series. Esto puede causar exploraciones de bibliotecas significativamente m\u00e1s largas.", + "MessageEnablingOptionLongerScans": "Enabling this option may result in significantly longer library scans.", "HeaderVideoPlaybackSettings": "Ajustes de Reproducci\u00f3n de Video", "OptionDownloadInternetMetadataTvPrograms": "Descargar los metadatos de Internet para los programas que aparecen en la gu\u00eda", "HeaderPlaybackSettings": "Ajustes de reproducci\u00f3n", @@ -1787,7 +1788,7 @@ "ButtonServer": "Servidor", "HeaderLibrary": "Biblioteca", "HeaderMedia": "Medios", - "NoNewDevicesFound": "No new devices found.", + "NoNewDevicesFound": "No new devices found. To add a new tuner, close this dialog and enter the device information manually.", "NoResultsFound": "No se han encontrado resultados.", "ButtonManageServer": "Administrar servidor", "ButtonPreferences": "Preferencias", diff --git a/dashboard-ui/strings/fa.json b/dashboard-ui/strings/fa.json index 448d788922..7a4816f40c 100644 --- a/dashboard-ui/strings/fa.json +++ b/dashboard-ui/strings/fa.json @@ -96,6 +96,7 @@ "LabelDisplayMissingEpisodesWithinSeasonsHelp": "This must also be enabled for TV libraries in Emby Server setup.", "LabelUnairedMissingEpisodesWithinSeasons": "Display unaired episodes within seasons", "ImportMissingEpisodesHelp": "If enabled, information about missing episodes will be imported into your Emby database and displayed within seasons and series. This may cause significantly longer library scans.", + "MessageEnablingOptionLongerScans": "Enabling this option may result in significantly longer library scans.", "HeaderVideoPlaybackSettings": "Video Playback Settings", "OptionDownloadInternetMetadataTvPrograms": "Download internet metadata for programs listed in the guide", "HeaderPlaybackSettings": "Playback Settings", @@ -1787,7 +1788,7 @@ "ButtonServer": "Server", "HeaderLibrary": "Library", "HeaderMedia": "Media", - "NoNewDevicesFound": "No new devices found.", + "NoNewDevicesFound": "No new devices found. To add a new tuner, close this dialog and enter the device information manually.", "NoResultsFound": "No results found.", "ButtonManageServer": "Manage Server", "ButtonPreferences": "Preferences", @@ -1823,7 +1824,7 @@ "HeaderSortOrder": "Sort Order", "ButtonDisconnect": "Disconnect", "ButtonMenu": "Menu", - "ForAdditionalLiveTvOptions": "For additional Live TV providers, click on the External Services tab to see the available options.", + "ForAdditionalLiveTvOptions": "For additional Live TV providers, click on the Services tab to see the available options.", "ButtonGuide": "Guide", "ConfirmEndPlayerSession": "Would you like to close Emby on the device?", "ButtonYes": "Yes", diff --git a/dashboard-ui/strings/fi.json b/dashboard-ui/strings/fi.json index 902507786e..7af410553a 100644 --- a/dashboard-ui/strings/fi.json +++ b/dashboard-ui/strings/fi.json @@ -96,6 +96,7 @@ "LabelDisplayMissingEpisodesWithinSeasonsHelp": "This must also be enabled for TV libraries in Emby Server setup.", "LabelUnairedMissingEpisodesWithinSeasons": "N\u00e4yt\u00e4 julkaisemattomat jaksot tuotantokausissa", "ImportMissingEpisodesHelp": "If enabled, information about missing episodes will be imported into your Emby database and displayed within seasons and series. This may cause significantly longer library scans.", + "MessageEnablingOptionLongerScans": "Enabling this option may result in significantly longer library scans.", "HeaderVideoPlaybackSettings": "Videon Toistamisen Asetukset", "OptionDownloadInternetMetadataTvPrograms": "Download internet metadata for programs listed in the guide", "HeaderPlaybackSettings": "Playback Settings", @@ -1787,7 +1788,7 @@ "ButtonServer": "Server", "HeaderLibrary": "Library", "HeaderMedia": "Media", - "NoNewDevicesFound": "No new devices found.", + "NoNewDevicesFound": "No new devices found. To add a new tuner, close this dialog and enter the device information manually.", "NoResultsFound": "No results found.", "ButtonManageServer": "Manage Server", "ButtonPreferences": "Preferences", @@ -1823,7 +1824,7 @@ "HeaderSortOrder": "Sort Order", "ButtonDisconnect": "Disconnect", "ButtonMenu": "Menu", - "ForAdditionalLiveTvOptions": "For additional Live TV providers, click on the External Services tab to see the available options.", + "ForAdditionalLiveTvOptions": "For additional Live TV providers, click on the Services tab to see the available options.", "ButtonGuide": "Guide", "ConfirmEndPlayerSession": "Would you like to close Emby on the device?", "ButtonYes": "Yes", diff --git a/dashboard-ui/strings/fr-ca.json b/dashboard-ui/strings/fr-ca.json index a2ae31806e..2ac55bf1e8 100644 --- a/dashboard-ui/strings/fr-ca.json +++ b/dashboard-ui/strings/fr-ca.json @@ -96,6 +96,7 @@ "LabelDisplayMissingEpisodesWithinSeasonsHelp": "This must also be enabled for TV libraries in Emby Server setup.", "LabelUnairedMissingEpisodesWithinSeasons": "Display unaired episodes within seasons", "ImportMissingEpisodesHelp": "If enabled, information about missing episodes will be imported into your Emby database and displayed within seasons and series. This may cause significantly longer library scans.", + "MessageEnablingOptionLongerScans": "Enabling this option may result in significantly longer library scans.", "HeaderVideoPlaybackSettings": "Video Playback Settings", "OptionDownloadInternetMetadataTvPrograms": "Download internet metadata for programs listed in the guide", "HeaderPlaybackSettings": "Playback Settings", @@ -1787,7 +1788,7 @@ "ButtonServer": "Server", "HeaderLibrary": "Library", "HeaderMedia": "Media", - "NoNewDevicesFound": "No new devices found.", + "NoNewDevicesFound": "No new devices found. To add a new tuner, close this dialog and enter the device information manually.", "NoResultsFound": "No results found.", "ButtonManageServer": "Manage Server", "ButtonPreferences": "Preferences", @@ -1823,7 +1824,7 @@ "HeaderSortOrder": "Sort Order", "ButtonDisconnect": "Disconnect", "ButtonMenu": "Menu", - "ForAdditionalLiveTvOptions": "For additional Live TV providers, click on the External Services tab to see the available options.", + "ForAdditionalLiveTvOptions": "For additional Live TV providers, click on the Services tab to see the available options.", "ButtonGuide": "Guide", "ConfirmEndPlayerSession": "Would you like to close Emby on the device?", "ButtonYes": "Yes", diff --git a/dashboard-ui/strings/fr-fr.json b/dashboard-ui/strings/fr-fr.json index cd4615b2a1..598b7e5485 100644 --- a/dashboard-ui/strings/fr-fr.json +++ b/dashboard-ui/strings/fr-fr.json @@ -96,6 +96,7 @@ "LabelDisplayMissingEpisodesWithinSeasonsHelp": "Cela doit aussi \u00eatre autoris\u00e9 pour les m\u00e9diath\u00e8ques TV dans la configuration du serveur Emby.", "LabelUnairedMissingEpisodesWithinSeasons": "Afficher les \u00e9pisodes non diffus\u00e9s dans les saisons", "ImportMissingEpisodesHelp": "Les informations \u00e0 propos de \u00e9pisodes manquants seront import\u00e9es dans votre base de donn\u00e9es Emby et affich\u00e9es dans les saisons et les s\u00e9ries. Cela peut allonger significativement la dur\u00e9e n\u00e9cessaire pour scanner la m\u00e9diath\u00e8que.", + "MessageEnablingOptionLongerScans": "Enabling this option may result in significantly longer library scans.", "HeaderVideoPlaybackSettings": "Param\u00e8tres de lecture de vid\u00e9o", "OptionDownloadInternetMetadataTvPrograms": "T\u00e9l\u00e9charger les m\u00e9tadonn\u00e9es depuis internet pour les programmes figurants dans le guide", "HeaderPlaybackSettings": "Param\u00e8tres de lecture", @@ -1787,7 +1788,7 @@ "ButtonServer": "Server", "HeaderLibrary": "Library", "HeaderMedia": "Media", - "NoNewDevicesFound": "No new devices found.", + "NoNewDevicesFound": "No new devices found. To add a new tuner, close this dialog and enter the device information manually.", "NoResultsFound": "Aucun r\u00e9sultat trouv\u00e9", "ButtonManageServer": "Manage Server", "ButtonPreferences": "Preferences", diff --git a/dashboard-ui/strings/fr.json b/dashboard-ui/strings/fr.json index fd0ff381ff..77d3114316 100644 --- a/dashboard-ui/strings/fr.json +++ b/dashboard-ui/strings/fr.json @@ -96,6 +96,7 @@ "LabelDisplayMissingEpisodesWithinSeasonsHelp": "Ceci doit \u00e9galement \u00eatre activ\u00e9 pour les m\u00e9diath\u00e8ques TV dans la configuration du serveur Emby.", "LabelUnairedMissingEpisodesWithinSeasons": "Afficher les \u00e9pisodes non diffus\u00e9s dans les saisons", "ImportMissingEpisodesHelp": "Les informations \u00e0 propos des \u00e9pisodes manquants seront import\u00e9es dans votre base de donn\u00e9e Emby et affich\u00e9es dans les saisons et s\u00e9ries. Cela peut allonger significativement la dur\u00e9e de balayage de la m\u00e9diath\u00e8que.", + "MessageEnablingOptionLongerScans": "Enabling this option may result in significantly longer library scans.", "HeaderVideoPlaybackSettings": "Param\u00e8tres de lecture vid\u00e9o", "OptionDownloadInternetMetadataTvPrograms": "T\u00e9l\u00e9charger les m\u00e9tadonn\u00e9es depuis Internet pour les programmes figurants dans le guide", "HeaderPlaybackSettings": "Param\u00e8tres de lecture", diff --git a/dashboard-ui/strings/gsw.json b/dashboard-ui/strings/gsw.json index b5465ef3ed..09cf6d383f 100644 --- a/dashboard-ui/strings/gsw.json +++ b/dashboard-ui/strings/gsw.json @@ -96,6 +96,7 @@ "LabelDisplayMissingEpisodesWithinSeasonsHelp": "This must also be enabled for TV libraries in Emby Server setup.", "LabelUnairedMissingEpisodesWithinSeasons": "Zeig ned usgstrahlti Episode innerhalb vo de einzelne Staffle", "ImportMissingEpisodesHelp": "If enabled, information about missing episodes will be imported into your Emby database and displayed within seasons and series. This may cause significantly longer library scans.", + "MessageEnablingOptionLongerScans": "Enabling this option may result in significantly longer library scans.", "HeaderVideoPlaybackSettings": "Video Abspell iistellige", "OptionDownloadInternetMetadataTvPrograms": "Download internet metadata for programs listed in the guide", "HeaderPlaybackSettings": "Abspell iistellige", @@ -1787,7 +1788,7 @@ "ButtonServer": "Server", "HeaderLibrary": "Library", "HeaderMedia": "Media", - "NoNewDevicesFound": "No new devices found.", + "NoNewDevicesFound": "No new devices found. To add a new tuner, close this dialog and enter the device information manually.", "NoResultsFound": "No results found.", "ButtonManageServer": "Manage Server", "ButtonPreferences": "Preferences", @@ -1823,7 +1824,7 @@ "HeaderSortOrder": "Sort Order", "ButtonDisconnect": "Disconnect", "ButtonMenu": "Menu", - "ForAdditionalLiveTvOptions": "For additional Live TV providers, click on the External Services tab to see the available options.", + "ForAdditionalLiveTvOptions": "For additional Live TV providers, click on the Services tab to see the available options.", "ButtonGuide": "Guide", "ConfirmEndPlayerSession": "Would you like to close Emby on the device?", "ButtonYes": "Yes", diff --git a/dashboard-ui/strings/he.json b/dashboard-ui/strings/he.json index b0ce08471b..17d2e0d19a 100644 --- a/dashboard-ui/strings/he.json +++ b/dashboard-ui/strings/he.json @@ -96,6 +96,7 @@ "LabelDisplayMissingEpisodesWithinSeasonsHelp": "This must also be enabled for TV libraries in Emby Server setup.", "LabelUnairedMissingEpisodesWithinSeasons": "\u05d4\u05e6\u05d2 \u05e4\u05e8\u05e7\u05d9\u05dd \u05e9\u05e2\u05d3\u05d9\u05df \u05d0\u05dc \u05e9\u05d5\u05d3\u05e8\u05d5 \u05d1\u05ea\u05d5\u05da \u05d4\u05e2\u05d5\u05e0\u05d5\u05ea", "ImportMissingEpisodesHelp": "If enabled, information about missing episodes will be imported into your Emby database and displayed within seasons and series. This may cause significantly longer library scans.", + "MessageEnablingOptionLongerScans": "Enabling this option may result in significantly longer library scans.", "HeaderVideoPlaybackSettings": "\u05d4\u05d2\u05d3\u05e8\u05d5\u05ea \u05e0\u05d9\u05d2\u05d5\u05df", "OptionDownloadInternetMetadataTvPrograms": "Download internet metadata for programs listed in the guide", "HeaderPlaybackSettings": "\u05d0\u05e4\u05e9\u05e8\u05d5\u05d9\u05d5\u05ea \u05e0\u05d9\u05d2\u05d5\u05df", @@ -1787,7 +1788,7 @@ "ButtonServer": "Server", "HeaderLibrary": "Library", "HeaderMedia": "Media", - "NoNewDevicesFound": "No new devices found.", + "NoNewDevicesFound": "No new devices found. To add a new tuner, close this dialog and enter the device information manually.", "NoResultsFound": "No results found.", "ButtonManageServer": "\u05e0\u05d4\u05dc \u05e9\u05e8\u05ea", "ButtonPreferences": "Preferences", @@ -1823,7 +1824,7 @@ "HeaderSortOrder": "Sort Order", "ButtonDisconnect": "Disconnect", "ButtonMenu": "Menu", - "ForAdditionalLiveTvOptions": "For additional Live TV providers, click on the External Services tab to see the available options.", + "ForAdditionalLiveTvOptions": "For additional Live TV providers, click on the Services tab to see the available options.", "ButtonGuide": "Guide", "ConfirmEndPlayerSession": "Would you like to close Emby on the device?", "ButtonYes": "\u05db\u05df", diff --git a/dashboard-ui/strings/hr.json b/dashboard-ui/strings/hr.json index a7fe78ad61..1198a46e5a 100644 --- a/dashboard-ui/strings/hr.json +++ b/dashboard-ui/strings/hr.json @@ -96,6 +96,7 @@ "LabelDisplayMissingEpisodesWithinSeasonsHelp": "This must also be enabled for TV libraries in Emby Server setup.", "LabelUnairedMissingEpisodesWithinSeasons": "Prika\u017ei epizode koje nisu emitirane unutar sezone", "ImportMissingEpisodesHelp": "If enabled, information about missing episodes will be imported into your Emby database and displayed within seasons and series. This may cause significantly longer library scans.", + "MessageEnablingOptionLongerScans": "Enabling this option may result in significantly longer library scans.", "HeaderVideoPlaybackSettings": "Postavke video reprodukcije", "OptionDownloadInternetMetadataTvPrograms": "Download internet metadata for programs listed in the guide", "HeaderPlaybackSettings": "Postavke reprodukcije", @@ -1787,7 +1788,7 @@ "ButtonServer": "Server", "HeaderLibrary": "Biblioteka", "HeaderMedia": "Medij", - "NoNewDevicesFound": "No new devices found.", + "NoNewDevicesFound": "No new devices found. To add a new tuner, close this dialog and enter the device information manually.", "NoResultsFound": "Nije ni\u0161ta prona\u0111eno.", "ButtonManageServer": "Upravljanje Serverom", "ButtonPreferences": "Postavke", diff --git a/dashboard-ui/strings/hu.json b/dashboard-ui/strings/hu.json index db2d614976..d770ba0715 100644 --- a/dashboard-ui/strings/hu.json +++ b/dashboard-ui/strings/hu.json @@ -96,6 +96,7 @@ "LabelDisplayMissingEpisodesWithinSeasonsHelp": "This must also be enabled for TV libraries in Emby Server setup.", "LabelUnairedMissingEpisodesWithinSeasons": "Nem vet\u00edtett \u00e9vad epiz\u00f3dok megjelen\u00edt\u00e9se", "ImportMissingEpisodesHelp": "If enabled, information about missing episodes will be imported into your Emby database and displayed within seasons and series. This may cause significantly longer library scans.", + "MessageEnablingOptionLongerScans": "Enabling this option may result in significantly longer library scans.", "HeaderVideoPlaybackSettings": "Vide\u00f3 lej\u00e1tsz\u00e1s be\u00e1ll\u00edt\u00e1sok", "OptionDownloadInternetMetadataTvPrograms": "Download internet metadata for programs listed in the guide", "HeaderPlaybackSettings": "Lej\u00e1tsz\u00e1si be\u00e1ll\u00edt\u00e1sok", @@ -1787,7 +1788,7 @@ "ButtonServer": "Szerver", "HeaderLibrary": "M\u00e9diat\u00e1r", "HeaderMedia": "Media", - "NoNewDevicesFound": "No new devices found.", + "NoNewDevicesFound": "No new devices found. To add a new tuner, close this dialog and enter the device information manually.", "NoResultsFound": "No results found.", "ButtonManageServer": "Szerver Kezel\u00e9s", "ButtonPreferences": "Preferences", @@ -1823,7 +1824,7 @@ "HeaderSortOrder": "Sort Order", "ButtonDisconnect": "Disconnect", "ButtonMenu": "Menu", - "ForAdditionalLiveTvOptions": "For additional Live TV providers, click on the External Services tab to see the available options.", + "ForAdditionalLiveTvOptions": "For additional Live TV providers, click on the Services tab to see the available options.", "ButtonGuide": "Guide", "ConfirmEndPlayerSession": "Would you like to close Emby on the device?", "ButtonYes": "Yes", diff --git a/dashboard-ui/strings/id.json b/dashboard-ui/strings/id.json index d089a09968..1a8883ae72 100644 --- a/dashboard-ui/strings/id.json +++ b/dashboard-ui/strings/id.json @@ -96,6 +96,7 @@ "LabelDisplayMissingEpisodesWithinSeasonsHelp": "This must also be enabled for TV libraries in Emby Server setup.", "LabelUnairedMissingEpisodesWithinSeasons": "Display unaired episodes within seasons", "ImportMissingEpisodesHelp": "If enabled, information about missing episodes will be imported into your Emby database and displayed within seasons and series. This may cause significantly longer library scans.", + "MessageEnablingOptionLongerScans": "Enabling this option may result in significantly longer library scans.", "HeaderVideoPlaybackSettings": "Video Playback Settings", "OptionDownloadInternetMetadataTvPrograms": "Download internet metadata for programs listed in the guide", "HeaderPlaybackSettings": "Playback Settings", @@ -1787,7 +1788,7 @@ "ButtonServer": "Server", "HeaderLibrary": "Library", "HeaderMedia": "Media", - "NoNewDevicesFound": "No new devices found.", + "NoNewDevicesFound": "No new devices found. To add a new tuner, close this dialog and enter the device information manually.", "NoResultsFound": "No results found.", "ButtonManageServer": "Manage Server", "ButtonPreferences": "Preferences", @@ -1823,7 +1824,7 @@ "HeaderSortOrder": "Sort Order", "ButtonDisconnect": "Disconnect", "ButtonMenu": "Menu", - "ForAdditionalLiveTvOptions": "For additional Live TV providers, click on the External Services tab to see the available options.", + "ForAdditionalLiveTvOptions": "For additional Live TV providers, click on the Services tab to see the available options.", "ButtonGuide": "Guide", "ConfirmEndPlayerSession": "Would you like to close Emby on the device?", "ButtonYes": "Yes", diff --git a/dashboard-ui/strings/it.json b/dashboard-ui/strings/it.json index 602ebf6a57..d6119aede6 100644 --- a/dashboard-ui/strings/it.json +++ b/dashboard-ui/strings/it.json @@ -96,6 +96,7 @@ "LabelDisplayMissingEpisodesWithinSeasonsHelp": "Questo deve anche essere abilitato per le librerie TV nella configurazione del Server Emby.", "LabelUnairedMissingEpisodesWithinSeasons": "Visualizza episodi mai andati in onda nelle stagioni", "ImportMissingEpisodesHelp": "Se abilitato, le informazioni relative agli episodi mancanti saranno importate nel database di Emby e mostrate all'interno di Serie e Stagioni. Questo pu\u00f2 causare scansioni della libreria pi\u00f9 lente.", + "MessageEnablingOptionLongerScans": "Enabling this option may result in significantly longer library scans.", "HeaderVideoPlaybackSettings": "Impostazioni di riproduzione video", "OptionDownloadInternetMetadataTvPrograms": "Scarica metadati da Internet per i programmi elencati nella guida", "HeaderPlaybackSettings": "Impostazioni di riproduzione", @@ -1787,7 +1788,7 @@ "ButtonServer": "Server", "HeaderLibrary": "Libreria", "HeaderMedia": "Media", - "NoNewDevicesFound": "No new devices found.", + "NoNewDevicesFound": "No new devices found. To add a new tuner, close this dialog and enter the device information manually.", "NoResultsFound": "Nessun risultato.", "ButtonManageServer": "Gestisci Server", "ButtonPreferences": "Preferenze", diff --git a/dashboard-ui/strings/kk.json b/dashboard-ui/strings/kk.json index be3e9b943a..e7674c6f70 100644 --- a/dashboard-ui/strings/kk.json +++ b/dashboard-ui/strings/kk.json @@ -96,6 +96,7 @@ "LabelDisplayMissingEpisodesWithinSeasonsHelp": "\u0411\u04b1\u043b \u0441\u043e\u043d\u0434\u0430\u0439-\u0430\u049b Emby Server \u043e\u0440\u043d\u0430\u0442\u0443\u044b\u043d\u0434\u0430\u0493\u044b \u0422\u0414 \u0442\u0430\u0441\u044b\u0493\u044b\u0448\u0445\u0430\u043d\u0430\u043b\u0430\u0440\u044b \u04af\u0448\u0456\u043d \u049b\u043e\u0441\u0443\u043b\u044b \u0431\u043e\u043b\u0443\u044b \u043a\u0435\u0440\u0435\u043a.", "LabelUnairedMissingEpisodesWithinSeasons": "\u041a\u04e9\u0440\u0441\u0435\u0442\u0456\u043b\u043c\u0435\u0433\u0435\u043d \u0431\u04e9\u043b\u0456\u043c\u0434\u0435\u0440\u0434\u0456 \u043c\u0430\u0443\u0441\u044b\u043c \u0456\u0448\u0456\u043d\u0434\u0435 \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u0443", "ImportMissingEpisodesHelp": "\u049a\u043e\u0441\u044b\u043b\u0493\u0430\u043d\u0434\u0430, \u0436\u043e\u049b \u044d\u043f\u0438\u0437\u043e\u0434\u0442\u0430\u0440 \u0442\u0443\u0440\u0430\u043b\u044b \u0430\u049b\u043f\u0430\u0440\u0430\u0442 \u0441\u0456\u0437\u0434\u0456\u04a3 Emby \u0434\u0435\u0440\u0435\u043a\u049b\u043e\u0440\u0493\u0430 \u04d9\u043a\u0435\u043b\u0456\u043d\u0435\u0434\u0456 \u0436\u04d9\u043d\u0435 \u043c\u0430\u0443\u0441\u044b\u043c\u0434\u0430\u0440 \u043c\u0435\u043d \u0442\u0435\u043b\u0435\u0445\u0438\u043a\u0430\u044f\u043b\u0430\u0440 \u0430\u044f\u0441\u044b\u043d\u0434\u0430 \u043f\u0430\u0439\u0434\u0430 \u0431\u043e\u043b\u0430\u0434\u044b. \u0422\u0430\u0441\u044b\u0493\u044b\u0448\u0445\u0430\u043d\u0430 \u0441\u043a\u0430\u043d\u0435\u0440\u043b\u0435\u0443\u0434\u0435 \u0431\u04b1\u043b \u0430\u0439\u0442\u0430\u0440\u043b\u044b\u049b\u0442\u0430\u0439 \u04b1\u0437\u0430\u049b \u0443\u0430\u049b\u044b\u0442 \u0430\u043b\u0443\u044b \u043c\u04af\u043c\u043a\u0456\u043d.", + "MessageEnablingOptionLongerScans": "\u041e\u0441\u044b \u043e\u043f\u0446\u0438\u044f \u049b\u043e\u0439\u044b\u043b\u0441\u0430, \u0442\u0430\u0441\u044b\u0493\u044b\u0448\u0445\u0430\u043d\u0430 \u0441\u043a\u0430\u043d\u0435\u0440\u043b\u0435\u0443\u043b\u0435\u0440\u0456 \u0435\u0434\u04d9\u0443\u0456\u0440 \u04b1\u0437\u044b\u043d \u0431\u043e\u043b\u0443\u044b \u043c\u04af\u043c\u043a\u0456\u043d.", "HeaderVideoPlaybackSettings": "\u0411\u0435\u0439\u043d\u0435 \u043e\u0439\u043d\u0430\u0442\u0443 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043b\u0435\u0440\u0456", "OptionDownloadInternetMetadataTvPrograms": "\u0422\u0435\u043b\u0435\u0433\u0438\u0434\u0442\u0435\u0433\u0456 \u0442\u0456\u0437\u0456\u043c\u0434\u0435\u043b\u0433\u0435\u043d \u0431\u0435\u0440\u0456\u043b\u0456\u043c\u0434\u0435\u0440 \u04af\u0448\u0456\u043d \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0442\u0435\u043d \u043c\u0435\u0442\u0430\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440\u0434\u0456 \u0436\u04af\u043a\u0442\u0435\u043f \u0430\u043b\u0443", "HeaderPlaybackSettings": "\u041e\u0439\u043d\u0430\u0442\u0443 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043b\u0435\u0440\u0456", @@ -1787,7 +1788,7 @@ "ButtonServer": "\u0421\u0435\u0440\u0432\u0435\u0440", "HeaderLibrary": "\u0422\u0430\u0441\u044b\u0493\u044b\u0448\u0445\u0430\u043d\u0430", "HeaderMedia": "\u0422\u0430\u0441\u044b\u0493\u044b\u0448\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440", - "NoNewDevicesFound": "\u0416\u0430\u04a3\u0430 \u049b\u04b1\u0440\u044b\u043b\u0493\u044b\u043b\u0430\u0440 \u0442\u0430\u0431\u044b\u043b\u043c\u0430\u0434\u044b.", + "NoNewDevicesFound": "\u0416\u0430\u04a3\u0430 \u049b\u04b1\u0440\u044b\u043b\u0493\u044b\u043b\u0430\u0440 \u0442\u0430\u0431\u044b\u043b\u043c\u0430\u0434\u044b. \u0416\u0430\u04a3\u0430 \u0442\u044e\u043d\u0435\u0440\u0434\u0456 \u04af\u0441\u0442\u0435\u0443 \u04af\u0448\u0456\u043d, \u043e\u0441\u044b \u0442\u0456\u043b\u049b\u0430\u0442\u044b\u0441\u0443 \u0442\u0435\u0440\u0435\u0437\u0435\u0441\u0456\u043d \u0436\u0430\u0443\u044b\u043f, \u049b\u04b1\u0440\u044b\u043b\u0493\u044b \u0430\u049b\u043f\u0430\u0440\u0430\u0442\u044b\u043d \u049b\u043e\u043b\u043c\u0435\u043d \u0435\u043d\u0433\u0456\u0437\u0456\u04a3\u0456\u0437.", "NoResultsFound": "\u0415\u0448\u049b\u0430\u043d\u0434\u0430\u0439 \u043d\u04d9\u0442\u0438\u0436\u0435\u043b\u0435\u0440 \u0442\u0430\u0431\u044b\u043b\u043c\u0430\u0434\u044b.", "ButtonManageServer": "\u0421\u0435\u0440\u0432\u0435\u0440\u0434\u0456 \u0431\u0430\u0441\u049b\u0430\u0440\u0443", "ButtonPreferences": "\u0422\u0435\u04a3\u0448\u0435\u043b\u0456\u043c\u0434\u0435\u0440", @@ -1823,7 +1824,7 @@ "HeaderSortOrder": "\u0421\u04b1\u0440\u044b\u043f\u0442\u0430\u0443 \u0440\u0435\u0442\u0456", "ButtonDisconnect": "\u0410\u0436\u044b\u0440\u0430\u0442\u0443", "ButtonMenu": "\u041c\u04d9\u0437\u0456\u0440", - "ForAdditionalLiveTvOptions": "\u049a\u043e\u0441\u044b\u043c\u0448\u0430 \u044d\u0444\u0438\u0440\u043b\u0456\u043a \u0422\u0414 \u0436\u0435\u0442\u043a\u0456\u0437\u0443\u0448\u0456\u043b\u0435\u0440 \u04af\u0448\u0456\u043d, \u0421\u044b\u0440\u0442\u049b\u044b \u049b\u044b\u0437\u043c\u0435\u0442\u0442\u0435\u0440 \u049b\u043e\u0439\u044b\u043d\u0434\u044b\u0441\u044b\u043d \u043d\u04b1\u049b\u044b\u043f, \u049b\u043e\u043b\u0436\u0435\u0442\u0456\u043c\u0434\u0456 \u043e\u043f\u0446\u0438\u044f\u043b\u0430\u0440\u0431\u0435\u043d \u0442\u0430\u043d\u044b\u0441\u044b\u04a3\u044b\u0437.", + "ForAdditionalLiveTvOptions": "\u049a\u043e\u0441\u044b\u043c\u0448\u0430 \u044d\u0444\u0438\u0440\u043b\u0456\u043a \u0422\u0414 \u0436\u0435\u0442\u043a\u0456\u0437\u0443\u0448\u0456\u043b\u0435\u0440 \u04af\u0448\u0456\u043d, \u049a\u044b\u0437\u043c\u0435\u0442\u0442\u0435\u0440 \u049b\u043e\u0439\u044b\u043d\u0434\u044b\u0441\u044b\u043d \u043d\u04b1\u049b\u044b\u043f, \u049b\u043e\u043b\u0436\u0435\u0442\u0456\u043c\u0434\u0456 \u043e\u043f\u0446\u0438\u044f\u043b\u0430\u0440\u0431\u0435\u043d \u0442\u0430\u043d\u044b\u0441\u044b\u04a3\u044b\u0437.", "ButtonGuide": "\u0422\u0435\u043b\u0435\u0433\u0438\u0434", "ConfirmEndPlayerSession": "\u049a\u04b1\u0440\u044b\u043b\u0493\u044b\u0434\u0430 Emby \u0436\u0430\u0431\u0443\u044b\u043d \u049b\u0430\u043b\u0430\u0439\u0441\u044b\u0437 \u0431\u0430?", "ButtonYes": "\u0418\u04d9", diff --git a/dashboard-ui/strings/ko.json b/dashboard-ui/strings/ko.json index ef0509d306..ca5045abbb 100644 --- a/dashboard-ui/strings/ko.json +++ b/dashboard-ui/strings/ko.json @@ -96,6 +96,7 @@ "LabelDisplayMissingEpisodesWithinSeasonsHelp": "This must also be enabled for TV libraries in Emby Server setup.", "LabelUnairedMissingEpisodesWithinSeasons": "\uac01 \uc2dc\uc98c\uc758 \ubc29\uc1a1\ub418\uc9c0 \uc54a\uc740 \uc5d0\ud53c\uc18c\ub4dc \ud45c\uc2dc", "ImportMissingEpisodesHelp": "If enabled, information about missing episodes will be imported into your Emby database and displayed within seasons and series. This may cause significantly longer library scans.", + "MessageEnablingOptionLongerScans": "Enabling this option may result in significantly longer library scans.", "HeaderVideoPlaybackSettings": "\ube44\ub514\uc624 \uc7ac\uc0dd \uc124\uc815", "OptionDownloadInternetMetadataTvPrograms": "Download internet metadata for programs listed in the guide", "HeaderPlaybackSettings": "\uc7ac\uc0dd \uc124\uc815", @@ -1787,7 +1788,7 @@ "ButtonServer": "\uc11c\ubc84", "HeaderLibrary": "\ub77c\uc774\ube0c\ub7ec\ub9ac", "HeaderMedia": "\ubbf8\ub514\uc5b4", - "NoNewDevicesFound": "No new devices found.", + "NoNewDevicesFound": "No new devices found. To add a new tuner, close this dialog and enter the device information manually.", "NoResultsFound": "No results found.", "ButtonManageServer": "\uc11c\ubc84 \uad00\ub9ac", "ButtonPreferences": "\ud658\uacbd \uc124\uc815", @@ -1823,7 +1824,7 @@ "HeaderSortOrder": "Sort Order", "ButtonDisconnect": "\uc5f0\uacb0 \ud574\uc81c", "ButtonMenu": "\uba54\ub274", - "ForAdditionalLiveTvOptions": "For additional Live TV providers, click on the External Services tab to see the available options.", + "ForAdditionalLiveTvOptions": "For additional Live TV providers, click on the Services tab to see the available options.", "ButtonGuide": "\uac00\uc774\ub4dc", "ConfirmEndPlayerSession": "Would you like to close Emby on the device?", "ButtonYes": "\uc608", diff --git a/dashboard-ui/strings/lt-lt.json b/dashboard-ui/strings/lt-lt.json index 34072a2318..4b0d521904 100644 --- a/dashboard-ui/strings/lt-lt.json +++ b/dashboard-ui/strings/lt-lt.json @@ -96,6 +96,7 @@ "LabelDisplayMissingEpisodesWithinSeasonsHelp": "This must also be enabled for TV libraries in Emby Server setup.", "LabelUnairedMissingEpisodesWithinSeasons": "Rodyti sezonuose dar netransliuotas serijas", "ImportMissingEpisodesHelp": "If enabled, information about missing episodes will be imported into your Emby database and displayed within seasons and series. This may cause significantly longer library scans.", + "MessageEnablingOptionLongerScans": "Enabling this option may result in significantly longer library scans.", "HeaderVideoPlaybackSettings": "Video atk\u016brimo nustatymai", "OptionDownloadInternetMetadataTvPrograms": "Download internet metadata for programs listed in the guide", "HeaderPlaybackSettings": "Atk\u016brimo nustatymai", @@ -1787,7 +1788,7 @@ "ButtonServer": "Server", "HeaderLibrary": "Library", "HeaderMedia": "Media", - "NoNewDevicesFound": "No new devices found.", + "NoNewDevicesFound": "No new devices found. To add a new tuner, close this dialog and enter the device information manually.", "NoResultsFound": "No results found.", "ButtonManageServer": "Manage Server", "ButtonPreferences": "Preferences", @@ -1823,7 +1824,7 @@ "HeaderSortOrder": "Sort Order", "ButtonDisconnect": "Disconnect", "ButtonMenu": "Menu", - "ForAdditionalLiveTvOptions": "For additional Live TV providers, click on the External Services tab to see the available options.", + "ForAdditionalLiveTvOptions": "For additional Live TV providers, click on the Services tab to see the available options.", "ButtonGuide": "Guide", "ConfirmEndPlayerSession": "Would you like to close Emby on the device?", "ButtonYes": "Yes", diff --git a/dashboard-ui/strings/ms.json b/dashboard-ui/strings/ms.json index 3331c0eda5..4c536ba903 100644 --- a/dashboard-ui/strings/ms.json +++ b/dashboard-ui/strings/ms.json @@ -96,6 +96,7 @@ "LabelDisplayMissingEpisodesWithinSeasonsHelp": "This must also be enabled for TV libraries in Emby Server setup.", "LabelUnairedMissingEpisodesWithinSeasons": "Display unaired episodes within seasons", "ImportMissingEpisodesHelp": "If enabled, information about missing episodes will be imported into your Emby database and displayed within seasons and series. This may cause significantly longer library scans.", + "MessageEnablingOptionLongerScans": "Enabling this option may result in significantly longer library scans.", "HeaderVideoPlaybackSettings": "Video Playback Settings", "OptionDownloadInternetMetadataTvPrograms": "Download internet metadata for programs listed in the guide", "HeaderPlaybackSettings": "Playback Settings", @@ -1787,7 +1788,7 @@ "ButtonServer": "Server", "HeaderLibrary": "Library", "HeaderMedia": "Media", - "NoNewDevicesFound": "No new devices found.", + "NoNewDevicesFound": "No new devices found. To add a new tuner, close this dialog and enter the device information manually.", "NoResultsFound": "No results found.", "ButtonManageServer": "Manage Server", "ButtonPreferences": "Preferences", @@ -1823,7 +1824,7 @@ "HeaderSortOrder": "Sort Order", "ButtonDisconnect": "Disconnect", "ButtonMenu": "Menu", - "ForAdditionalLiveTvOptions": "For additional Live TV providers, click on the External Services tab to see the available options.", + "ForAdditionalLiveTvOptions": "For additional Live TV providers, click on the Services tab to see the available options.", "ButtonGuide": "Guide", "ConfirmEndPlayerSession": "Would you like to close Emby on the device?", "ButtonYes": "Yes", diff --git a/dashboard-ui/strings/nb.json b/dashboard-ui/strings/nb.json index 7476c135fb..06c6d7432a 100644 --- a/dashboard-ui/strings/nb.json +++ b/dashboard-ui/strings/nb.json @@ -96,6 +96,7 @@ "LabelDisplayMissingEpisodesWithinSeasonsHelp": "Denne m\u00e5 ogs\u00e5 v\u00e6re aktivert for TV biblioteker i Emby Server oppsett.", "LabelUnairedMissingEpisodesWithinSeasons": "Vis episoder som enn\u00e5 ikke har blitt sendt", "ImportMissingEpisodesHelp": "Hvis aktivert, vil informasjon om manglende episoder importeres inn i databasen og Emby vises i \u00e5rstider og serier. Dette kan f\u00f8re til betydelig lengre bibliotek skanninger.", + "MessageEnablingOptionLongerScans": "Enabling this option may result in significantly longer library scans.", "HeaderVideoPlaybackSettings": "Innstillinger for video-avspilling", "OptionDownloadInternetMetadataTvPrograms": "Last ned internett metadata for programmer i guiden.", "HeaderPlaybackSettings": "Avspillingsinnstillinger", @@ -1787,7 +1788,7 @@ "ButtonServer": "Server", "HeaderLibrary": "Bibliotek", "HeaderMedia": "Media", - "NoNewDevicesFound": "No new devices found.", + "NoNewDevicesFound": "No new devices found. To add a new tuner, close this dialog and enter the device information manually.", "NoResultsFound": "Ingen resulterer funnet.", "ButtonManageServer": "Administrer Server", "ButtonPreferences": "Innstillinger", diff --git a/dashboard-ui/strings/nl.json b/dashboard-ui/strings/nl.json index 864071ea1d..5b3eb513aa 100644 --- a/dashboard-ui/strings/nl.json +++ b/dashboard-ui/strings/nl.json @@ -96,6 +96,7 @@ "LabelDisplayMissingEpisodesWithinSeasonsHelp": "Dit moet ook worden ingeschakeld voor TV bibliotheken in Emby Server setup.", "LabelUnairedMissingEpisodesWithinSeasons": "Toon komende afleveringen binnen een seizoen", "ImportMissingEpisodesHelp": "Indien ingeschakeld, wordt informatie over ontbrekende afleveringen in uw Emby de database ge\u00efmporteerd en weergegeven in de seizoenen en series. Dit kan aanzienlijk langere bibliotheekscans veroorzaken.", + "MessageEnablingOptionLongerScans": "Enabling this option may result in significantly longer library scans.", "HeaderVideoPlaybackSettings": "Video afspeel instellingen", "OptionDownloadInternetMetadataTvPrograms": "Download internet metadata voor de programma's in de gids", "HeaderPlaybackSettings": "Afspeel instellingen", @@ -1787,7 +1788,7 @@ "ButtonServer": "Server", "HeaderLibrary": "Bibliotheek", "HeaderMedia": "Media", - "NoNewDevicesFound": "No new devices found.", + "NoNewDevicesFound": "No new devices found. To add a new tuner, close this dialog and enter the device information manually.", "NoResultsFound": "Geen resultaten gevonden.", "ButtonManageServer": "Beheer server", "ButtonPreferences": "Voorkeuren", diff --git a/dashboard-ui/strings/pl.json b/dashboard-ui/strings/pl.json index dbf2237d46..7612b3fb67 100644 --- a/dashboard-ui/strings/pl.json +++ b/dashboard-ui/strings/pl.json @@ -96,6 +96,7 @@ "LabelDisplayMissingEpisodesWithinSeasonsHelp": "This must also be enabled for TV libraries in Emby Server setup.", "LabelUnairedMissingEpisodesWithinSeasons": "Wy\u015bwietl nie wydanie odcinki w sezonach", "ImportMissingEpisodesHelp": "If enabled, information about missing episodes will be imported into your Emby database and displayed within seasons and series. This may cause significantly longer library scans.", + "MessageEnablingOptionLongerScans": "Enabling this option may result in significantly longer library scans.", "HeaderVideoPlaybackSettings": "Ustawienia odtwarzacza wideo", "OptionDownloadInternetMetadataTvPrograms": "Download internet metadata for programs listed in the guide", "HeaderPlaybackSettings": "Ustawienia odtwarzania", @@ -1787,7 +1788,7 @@ "ButtonServer": "Serwer", "HeaderLibrary": "Biblioteka", "HeaderMedia": "Media", - "NoNewDevicesFound": "No new devices found.", + "NoNewDevicesFound": "No new devices found. To add a new tuner, close this dialog and enter the device information manually.", "NoResultsFound": "Nic nie znaleziono.", "ButtonManageServer": "Zarz\u0105dzaj Serwerem", "ButtonPreferences": "Preferencje", diff --git a/dashboard-ui/strings/pt-br.json b/dashboard-ui/strings/pt-br.json index 4ea5debc9d..ab35ee7189 100644 --- a/dashboard-ui/strings/pt-br.json +++ b/dashboard-ui/strings/pt-br.json @@ -96,6 +96,7 @@ "LabelDisplayMissingEpisodesWithinSeasonsHelp": "Isto tamb\u00e9m deve ser ativado para as bibliotecas de TV na configura\u00e7\u00e3o do Servidor Emby.", "LabelUnairedMissingEpisodesWithinSeasons": "Exibir epis\u00f3dios por estrear dentro das temporadas", "ImportMissingEpisodesHelp": "Se ativo, as informa\u00e7\u00f5es dos epis\u00f3dios que faltam ser\u00e3o importadas para sua base de dados do Emby e exibida dentro das temporadas e s\u00e9ries. Isto pode fazer com que o rastreamento da biblioteca seja mais longo.", + "MessageEnablingOptionLongerScans": "Ativar esta op\u00e7\u00e3o pode resultar em rastreamentos de biblioteca significativamente mais demorados.", "HeaderVideoPlaybackSettings": "Ajustes da Reprodu\u00e7\u00e3o de V\u00eddeo", "OptionDownloadInternetMetadataTvPrograms": "Baixar metadados da internet para os programas listados no guia", "HeaderPlaybackSettings": "Ajustes de Reprodu\u00e7\u00e3o", diff --git a/dashboard-ui/strings/pt-pt.json b/dashboard-ui/strings/pt-pt.json index bbb2aab286..cd838d6aee 100644 --- a/dashboard-ui/strings/pt-pt.json +++ b/dashboard-ui/strings/pt-pt.json @@ -96,6 +96,7 @@ "LabelDisplayMissingEpisodesWithinSeasonsHelp": "This must also be enabled for TV libraries in Emby Server setup.", "LabelUnairedMissingEpisodesWithinSeasons": "Mostrar epis\u00f3dios por estrear dentro das temporadas", "ImportMissingEpisodesHelp": "If enabled, information about missing episodes will be imported into your Emby database and displayed within seasons and series. This may cause significantly longer library scans.", + "MessageEnablingOptionLongerScans": "Enabling this option may result in significantly longer library scans.", "HeaderVideoPlaybackSettings": "Configura\u00e7\u00f5es de Reprodu\u00e7\u00e3o de V\u00eddeo", "OptionDownloadInternetMetadataTvPrograms": "Download internet metadata for programs listed in the guide", "HeaderPlaybackSettings": "Op\u00e7\u00f5es de Reprodu\u00e7\u00e3o", @@ -1787,7 +1788,7 @@ "ButtonServer": "Server", "HeaderLibrary": "Library", "HeaderMedia": "Multim\u00e9dia", - "NoNewDevicesFound": "No new devices found.", + "NoNewDevicesFound": "No new devices found. To add a new tuner, close this dialog and enter the device information manually.", "NoResultsFound": "No results found.", "ButtonManageServer": "Manage Server", "ButtonPreferences": "Preferences", @@ -1823,7 +1824,7 @@ "HeaderSortOrder": "Sort Order", "ButtonDisconnect": "Disconnect", "ButtonMenu": "Menu", - "ForAdditionalLiveTvOptions": "For additional Live TV providers, click on the External Services tab to see the available options.", + "ForAdditionalLiveTvOptions": "For additional Live TV providers, click on the Services tab to see the available options.", "ButtonGuide": "Guide", "ConfirmEndPlayerSession": "Would you like to close Emby on the device?", "ButtonYes": "Yes", diff --git a/dashboard-ui/strings/ro.json b/dashboard-ui/strings/ro.json index ae1e625583..ba7cd70c2f 100644 --- a/dashboard-ui/strings/ro.json +++ b/dashboard-ui/strings/ro.json @@ -96,6 +96,7 @@ "LabelDisplayMissingEpisodesWithinSeasonsHelp": "This must also be enabled for TV libraries in Emby Server setup.", "LabelUnairedMissingEpisodesWithinSeasons": "Afiseaza episoadele nedifuzate din sezoane", "ImportMissingEpisodesHelp": "If enabled, information about missing episodes will be imported into your Emby database and displayed within seasons and series. This may cause significantly longer library scans.", + "MessageEnablingOptionLongerScans": "Enabling this option may result in significantly longer library scans.", "HeaderVideoPlaybackSettings": "Setari Playback Video", "OptionDownloadInternetMetadataTvPrograms": "Download internet metadata for programs listed in the guide", "HeaderPlaybackSettings": "Setari Playback", @@ -1787,7 +1788,7 @@ "ButtonServer": "Server", "HeaderLibrary": "Library", "HeaderMedia": "Media", - "NoNewDevicesFound": "No new devices found.", + "NoNewDevicesFound": "No new devices found. To add a new tuner, close this dialog and enter the device information manually.", "NoResultsFound": "No results found.", "ButtonManageServer": "Manage Server", "ButtonPreferences": "Preferences", @@ -1823,7 +1824,7 @@ "HeaderSortOrder": "Sort Order", "ButtonDisconnect": "Disconnect", "ButtonMenu": "Menu", - "ForAdditionalLiveTvOptions": "For additional Live TV providers, click on the External Services tab to see the available options.", + "ForAdditionalLiveTvOptions": "For additional Live TV providers, click on the Services tab to see the available options.", "ButtonGuide": "Guide", "ConfirmEndPlayerSession": "Would you like to close Emby on the device?", "ButtonYes": "Yes", diff --git a/dashboard-ui/strings/ru.json b/dashboard-ui/strings/ru.json index 799ea77bd9..2cf26e61bd 100644 --- a/dashboard-ui/strings/ru.json +++ b/dashboard-ui/strings/ru.json @@ -96,6 +96,7 @@ "LabelDisplayMissingEpisodesWithinSeasonsHelp": "\u042d\u0442\u043e \u0442\u0430\u043a\u0436\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043e \u0434\u043b\u044f \u0422\u0412-\u043c\u0435\u0434\u0438\u0430\u0442\u0435\u043a \u043f\u0440\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 Emby Server.", "LabelUnairedMissingEpisodesWithinSeasons": "\u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u043e\u0436\u0438\u0434\u0430\u0435\u043c\u044b\u0435 \u044d\u043f\u0438\u0437\u043e\u0434\u044b \u0432 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u0445 \u0441\u0435\u0437\u043e\u043d\u043e\u0432", "ImportMissingEpisodesHelp": "\u041f\u0440\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438, \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e\u0431 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0438\u0445 \u044d\u043f\u0438\u0437\u043e\u0434\u0430\u0445 \u0431\u0443\u0434\u0435\u0442 \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u0432 \u0432\u0430\u0448\u0443 \u0431\u0430\u0437\u0443 \u0434\u0430\u043d\u043d\u044b\u0445 Emby \u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f \u0432 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u0445 \u0441\u0435\u0437\u043e\u043d\u043e\u0432 \u0438 \u0441\u0435\u0440\u0438\u0430\u043b\u043e\u0432. \u042d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043a \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f\u043c \u043c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0438.", + "MessageEnablingOptionLongerScans": "\u0412\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u044d\u0442\u043e\u0439 \u043e\u043f\u0446\u0438\u0438 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043a \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u043c\u0443 \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u044e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0438.", "HeaderVideoPlaybackSettings": "\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0432\u0438\u0434\u0435\u043e", "OptionDownloadInternetMetadataTvPrograms": "\u0417\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0445 \u0432 \u0442\u0435\u043b\u0435\u0433\u0438\u0434\u0435", "HeaderPlaybackSettings": "\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f", @@ -1787,7 +1788,7 @@ "ButtonServer": "\u0421\u0435\u0440\u0432\u0435\u0440...", "HeaderLibrary": "\u041c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0430", "HeaderMedia": "\u041c\u0435\u0434\u0438\u0430\u0434\u0430\u043d\u043d\u044b\u0435", - "NoNewDevicesFound": "\u041d\u043e\u0432\u044b\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 \u043d\u0435 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u043e", + "NoNewDevicesFound": "\u041d\u043e\u0432\u044b\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 \u043d\u0435 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u043e. \u0427\u0442\u043e\u0431\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u0442\u044e\u043d\u0435\u0440, \u0437\u0430\u043a\u0440\u043e\u0439\u0442\u0435 \u0434\u0430\u043d\u043d\u044b\u0439 \u0434\u0438\u0430\u043b\u043e\u0433 \u0438 \u0432\u0432\u0435\u0434\u0438\u0442\u0435 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043e\u0431 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435 \u0432\u0440\u0443\u0447\u043d\u0443\u044e.", "NoResultsFound": "\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u043e.", "ButtonManageServer": "\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c", "ButtonPreferences": "\u041d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c", @@ -1823,7 +1824,7 @@ "HeaderSortOrder": "\u041f\u043e\u0440\u044f\u0434\u043e\u043a \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0438", "ButtonDisconnect": "\u0420\u0430\u0437\u044a\u0435\u0434\u0438\u043d\u0438\u0442\u044c\u0441\u044f", "ButtonMenu": "\u041c\u0435\u043d\u044e", - "ForAdditionalLiveTvOptions": "\u0414\u043b\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043f\u043e\u0441\u0442\u0430\u0432\u0449\u0438\u043a\u043e\u0432 \u044d\u0444\u0438\u0440\u0430, \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u044c\u0442\u0435\u0441\u044c \u0441 \u0438\u043c\u0435\u044e\u0449\u0438\u043c\u0438\u0441\u044f \u043e\u043f\u0446\u0438\u044f\u043c\u0438, \u0449\u0451\u043b\u043a\u043d\u0443\u0432 \u043f\u043e \u0432\u043a\u043b\u0430\u0434\u043a\u0435 \u0412\u043d\u0435\u0448\u043d\u0438\u0435 \u0443\u0441\u043b\u0443\u0433\u0438.", + "ForAdditionalLiveTvOptions": "\u0414\u043b\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043f\u043e\u0441\u0442\u0430\u0432\u0449\u0438\u043a\u043e\u0432 \u044d\u0444\u0438\u0440\u0430, \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u044c\u0442\u0435\u0441\u044c \u0441 \u0438\u043c\u0435\u044e\u0449\u0438\u043c\u0438\u0441\u044f \u043e\u043f\u0446\u0438\u044f\u043c\u0438, \u0449\u0451\u043b\u043a\u043d\u0443\u0432 \u043f\u043e \u0432\u043a\u043b\u0430\u0434\u043a\u0435 \u0423\u0441\u043b\u0443\u0433\u0438.", "ButtonGuide": "\u0422\u0435\u043b\u0435\u0433\u0438\u0434", "ConfirmEndPlayerSession": "\u0412\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0437\u0430\u043a\u0440\u044b\u0442\u044c Emby \u043d\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435?", "ButtonYes": "\u0414\u0430", diff --git a/dashboard-ui/strings/sk.json b/dashboard-ui/strings/sk.json index b3b638217f..4c5c7f171a 100644 --- a/dashboard-ui/strings/sk.json +++ b/dashboard-ui/strings/sk.json @@ -96,6 +96,7 @@ "LabelDisplayMissingEpisodesWithinSeasonsHelp": "This must also be enabled for TV libraries in Emby Server setup.", "LabelUnairedMissingEpisodesWithinSeasons": "Display unaired episodes within seasons", "ImportMissingEpisodesHelp": "If enabled, information about missing episodes will be imported into your Emby database and displayed within seasons and series. This may cause significantly longer library scans.", + "MessageEnablingOptionLongerScans": "Enabling this option may result in significantly longer library scans.", "HeaderVideoPlaybackSettings": "Video Playback Settings", "OptionDownloadInternetMetadataTvPrograms": "Download internet metadata for programs listed in the guide", "HeaderPlaybackSettings": "Playback Settings", @@ -1787,7 +1788,7 @@ "ButtonServer": "Server", "HeaderLibrary": "Library", "HeaderMedia": "Media", - "NoNewDevicesFound": "No new devices found.", + "NoNewDevicesFound": "No new devices found. To add a new tuner, close this dialog and enter the device information manually.", "NoResultsFound": "No results found.", "ButtonManageServer": "Manage Server", "ButtonPreferences": "Preferences", @@ -1823,7 +1824,7 @@ "HeaderSortOrder": "Sort Order", "ButtonDisconnect": "Disconnect", "ButtonMenu": "Menu", - "ForAdditionalLiveTvOptions": "For additional Live TV providers, click on the External Services tab to see the available options.", + "ForAdditionalLiveTvOptions": "For additional Live TV providers, click on the Services tab to see the available options.", "ButtonGuide": "Guide", "ConfirmEndPlayerSession": "Would you like to close Emby on the device?", "ButtonYes": "Yes", diff --git a/dashboard-ui/strings/sl-si.json b/dashboard-ui/strings/sl-si.json index 00bb6dc2f0..dc4a95e374 100644 --- a/dashboard-ui/strings/sl-si.json +++ b/dashboard-ui/strings/sl-si.json @@ -96,6 +96,7 @@ "LabelDisplayMissingEpisodesWithinSeasonsHelp": "This must also be enabled for TV libraries in Emby Server setup.", "LabelUnairedMissingEpisodesWithinSeasons": "Display unaired episodes within seasons", "ImportMissingEpisodesHelp": "If enabled, information about missing episodes will be imported into your Emby database and displayed within seasons and series. This may cause significantly longer library scans.", + "MessageEnablingOptionLongerScans": "Enabling this option may result in significantly longer library scans.", "HeaderVideoPlaybackSettings": "Nastavitve Video Predvajanja", "OptionDownloadInternetMetadataTvPrograms": "Download internet metadata for programs listed in the guide", "HeaderPlaybackSettings": "Nastavitve Predvajanja", @@ -1787,7 +1788,7 @@ "ButtonServer": "Server", "HeaderLibrary": "Library", "HeaderMedia": "Media", - "NoNewDevicesFound": "No new devices found.", + "NoNewDevicesFound": "No new devices found. To add a new tuner, close this dialog and enter the device information manually.", "NoResultsFound": "No results found.", "ButtonManageServer": "Manage Server", "ButtonPreferences": "Preferences", @@ -1823,7 +1824,7 @@ "HeaderSortOrder": "Sort Order", "ButtonDisconnect": "Disconnect", "ButtonMenu": "Menu", - "ForAdditionalLiveTvOptions": "For additional Live TV providers, click on the External Services tab to see the available options.", + "ForAdditionalLiveTvOptions": "For additional Live TV providers, click on the Services tab to see the available options.", "ButtonGuide": "Guide", "ConfirmEndPlayerSession": "Would you like to close Emby on the device?", "ButtonYes": "Yes", diff --git a/dashboard-ui/strings/sv.json b/dashboard-ui/strings/sv.json index ed0f72977e..2dc798669c 100644 --- a/dashboard-ui/strings/sv.json +++ b/dashboard-ui/strings/sv.json @@ -96,6 +96,7 @@ "LabelDisplayMissingEpisodesWithinSeasonsHelp": "Detta m\u00e5ste ocks\u00e5 vara aktiverat f\u00f6r TV-bibliotek p\u00e5 Embyservern.", "LabelUnairedMissingEpisodesWithinSeasons": "Visa \u00e4nnu ej s\u00e4nda avsnitt i s\u00e4songer", "ImportMissingEpisodesHelp": "If enabled, information about missing episodes will be imported into your Emby database and displayed within seasons and series. This may cause significantly longer library scans.", + "MessageEnablingOptionLongerScans": "Enabling this option may result in significantly longer library scans.", "HeaderVideoPlaybackSettings": "Inst\u00e4llningar f\u00f6r videouppspelning", "OptionDownloadInternetMetadataTvPrograms": "Ladda ner internetmetadata f\u00f6r program som listas i guiden", "HeaderPlaybackSettings": "Uppspelningsinst\u00e4llningar", @@ -1787,7 +1788,7 @@ "ButtonServer": "Server", "HeaderLibrary": "Bibliotek", "HeaderMedia": "Media", - "NoNewDevicesFound": "No new devices found.", + "NoNewDevicesFound": "No new devices found. To add a new tuner, close this dialog and enter the device information manually.", "NoResultsFound": "Inga resultat hittades.", "ButtonManageServer": "Hantera server", "ButtonPreferences": "Inst\u00e4llningar", diff --git a/dashboard-ui/strings/tr.json b/dashboard-ui/strings/tr.json index ca11c66aaf..7c9660c23e 100644 --- a/dashboard-ui/strings/tr.json +++ b/dashboard-ui/strings/tr.json @@ -96,6 +96,7 @@ "LabelDisplayMissingEpisodesWithinSeasonsHelp": "This must also be enabled for TV libraries in Emby Server setup.", "LabelUnairedMissingEpisodesWithinSeasons": "Display unaired episodes within seasons", "ImportMissingEpisodesHelp": "If enabled, information about missing episodes will be imported into your Emby database and displayed within seasons and series. This may cause significantly longer library scans.", + "MessageEnablingOptionLongerScans": "Enabling this option may result in significantly longer library scans.", "HeaderVideoPlaybackSettings": "Video Oynatma Ayarlar\u0131", "OptionDownloadInternetMetadataTvPrograms": "Download internet metadata for programs listed in the guide", "HeaderPlaybackSettings": "Playback Settings", @@ -1787,7 +1788,7 @@ "ButtonServer": "Server", "HeaderLibrary": "Library", "HeaderMedia": "Media", - "NoNewDevicesFound": "No new devices found.", + "NoNewDevicesFound": "No new devices found. To add a new tuner, close this dialog and enter the device information manually.", "NoResultsFound": "No results found.", "ButtonManageServer": "Manage Server", "ButtonPreferences": "Preferences", @@ -1823,7 +1824,7 @@ "HeaderSortOrder": "Sort Order", "ButtonDisconnect": "Disconnect", "ButtonMenu": "Menu", - "ForAdditionalLiveTvOptions": "For additional Live TV providers, click on the External Services tab to see the available options.", + "ForAdditionalLiveTvOptions": "For additional Live TV providers, click on the Services tab to see the available options.", "ButtonGuide": "Guide", "ConfirmEndPlayerSession": "Would you like to close Emby on the device?", "ButtonYes": "Yes", diff --git a/dashboard-ui/strings/uk.json b/dashboard-ui/strings/uk.json index 912f5a0192..59d3001b32 100644 --- a/dashboard-ui/strings/uk.json +++ b/dashboard-ui/strings/uk.json @@ -96,6 +96,7 @@ "LabelDisplayMissingEpisodesWithinSeasonsHelp": "This must also be enabled for TV libraries in Emby Server setup.", "LabelUnairedMissingEpisodesWithinSeasons": "Display unaired episodes within seasons", "ImportMissingEpisodesHelp": "If enabled, information about missing episodes will be imported into your Emby database and displayed within seasons and series. This may cause significantly longer library scans.", + "MessageEnablingOptionLongerScans": "Enabling this option may result in significantly longer library scans.", "HeaderVideoPlaybackSettings": "Video Playback Settings", "OptionDownloadInternetMetadataTvPrograms": "Download internet metadata for programs listed in the guide", "HeaderPlaybackSettings": "Playback Settings", @@ -1787,7 +1788,7 @@ "ButtonServer": "Server", "HeaderLibrary": "Library", "HeaderMedia": "Media", - "NoNewDevicesFound": "No new devices found.", + "NoNewDevicesFound": "No new devices found. To add a new tuner, close this dialog and enter the device information manually.", "NoResultsFound": "No results found.", "ButtonManageServer": "Manage Server", "ButtonPreferences": "Preferences", @@ -1823,7 +1824,7 @@ "HeaderSortOrder": "Sort Order", "ButtonDisconnect": "Disconnect", "ButtonMenu": "Menu", - "ForAdditionalLiveTvOptions": "For additional Live TV providers, click on the External Services tab to see the available options.", + "ForAdditionalLiveTvOptions": "For additional Live TV providers, click on the Services tab to see the available options.", "ButtonGuide": "Guide", "ConfirmEndPlayerSession": "Would you like to close Emby on the device?", "ButtonYes": "Yes", diff --git a/dashboard-ui/strings/vi.json b/dashboard-ui/strings/vi.json index ca16c49a80..91922581e3 100644 --- a/dashboard-ui/strings/vi.json +++ b/dashboard-ui/strings/vi.json @@ -96,6 +96,7 @@ "LabelDisplayMissingEpisodesWithinSeasonsHelp": "This must also be enabled for TV libraries in Emby Server setup.", "LabelUnairedMissingEpisodesWithinSeasons": "Display unaired episodes within seasons", "ImportMissingEpisodesHelp": "If enabled, information about missing episodes will be imported into your Emby database and displayed within seasons and series. This may cause significantly longer library scans.", + "MessageEnablingOptionLongerScans": "Enabling this option may result in significantly longer library scans.", "HeaderVideoPlaybackSettings": "C\u00e1c c\u00e0i \u0111\u1eb7t ph\u00e1t Video", "OptionDownloadInternetMetadataTvPrograms": "Download internet metadata for programs listed in the guide", "HeaderPlaybackSettings": "Playback Settings", @@ -1787,7 +1788,7 @@ "ButtonServer": "Server", "HeaderLibrary": "Library", "HeaderMedia": "Media", - "NoNewDevicesFound": "No new devices found.", + "NoNewDevicesFound": "No new devices found. To add a new tuner, close this dialog and enter the device information manually.", "NoResultsFound": "No results found.", "ButtonManageServer": "Manage Server", "ButtonPreferences": "Preferences", @@ -1823,7 +1824,7 @@ "HeaderSortOrder": "Sort Order", "ButtonDisconnect": "Disconnect", "ButtonMenu": "Menu", - "ForAdditionalLiveTvOptions": "For additional Live TV providers, click on the External Services tab to see the available options.", + "ForAdditionalLiveTvOptions": "For additional Live TV providers, click on the Services tab to see the available options.", "ButtonGuide": "Guide", "ConfirmEndPlayerSession": "Would you like to close Emby on the device?", "ButtonYes": "Yes", diff --git a/dashboard-ui/strings/zh-cn.json b/dashboard-ui/strings/zh-cn.json index 31a1fd0612..f251c08d1d 100644 --- a/dashboard-ui/strings/zh-cn.json +++ b/dashboard-ui/strings/zh-cn.json @@ -96,6 +96,7 @@ "LabelDisplayMissingEpisodesWithinSeasonsHelp": "This must also be enabled for TV libraries in Emby Server setup.", "LabelUnairedMissingEpisodesWithinSeasons": "\u663e\u793a\u6bcf\u5b63\u91cc\u672a\u53d1\u5e03\u7684\u5267\u96c6", "ImportMissingEpisodesHelp": "If enabled, information about missing episodes will be imported into your Emby database and displayed within seasons and series. This may cause significantly longer library scans.", + "MessageEnablingOptionLongerScans": "Enabling this option may result in significantly longer library scans.", "HeaderVideoPlaybackSettings": "\u89c6\u9891\u56de\u653e\u8bbe\u7f6e", "OptionDownloadInternetMetadataTvPrograms": "Download internet metadata for programs listed in the guide", "HeaderPlaybackSettings": "\u64ad\u653e\u8bbe\u7f6e", @@ -1787,7 +1788,7 @@ "ButtonServer": "\u670d\u52a1\u5668", "HeaderLibrary": "\u5a92\u4f53\u5e93", "HeaderMedia": "\u5a92\u4f53", - "NoNewDevicesFound": "No new devices found.", + "NoNewDevicesFound": "No new devices found. To add a new tuner, close this dialog and enter the device information manually.", "NoResultsFound": "\u672a\u627e\u5230\u7ed3\u679c\u3002", "ButtonManageServer": "\u7ba1\u7406\u670d\u52a1\u5668", "ButtonPreferences": "\u504f\u597d", @@ -1823,7 +1824,7 @@ "HeaderSortOrder": "\u6392\u5e8f\u987a\u5e8f", "ButtonDisconnect": "\u65ad\u5f00", "ButtonMenu": "\u76ee\u5f55", - "ForAdditionalLiveTvOptions": "For additional Live TV providers, click on the External Services tab to see the available options.", + "ForAdditionalLiveTvOptions": "For additional Live TV providers, click on the Services tab to see the available options.", "ButtonGuide": "\u6307\u5357", "ConfirmEndPlayerSession": "\u60a8\u60f3\u5173\u95ed\u6b64\u8bbe\u5907\u4e0a\u7684 Emby \u5417\uff1f", "ButtonYes": "\u662f", diff --git a/dashboard-ui/strings/zh-hk.json b/dashboard-ui/strings/zh-hk.json index d5db295522..de8317e5f9 100644 --- a/dashboard-ui/strings/zh-hk.json +++ b/dashboard-ui/strings/zh-hk.json @@ -96,6 +96,7 @@ "LabelDisplayMissingEpisodesWithinSeasonsHelp": "This must also be enabled for TV libraries in Emby Server setup.", "LabelUnairedMissingEpisodesWithinSeasons": "\u986f\u793a\u6bcf\u5b63\u5c1a\u672a\u64ad\u653e\u7684\u5287\u96c6\u8cc7\u6599", "ImportMissingEpisodesHelp": "If enabled, information about missing episodes will be imported into your Emby database and displayed within seasons and series. This may cause significantly longer library scans.", + "MessageEnablingOptionLongerScans": "Enabling this option may result in significantly longer library scans.", "HeaderVideoPlaybackSettings": "\u5f71\u7247\u64ad\u653e\u8a2d\u7f6e", "OptionDownloadInternetMetadataTvPrograms": "Download internet metadata for programs listed in the guide", "HeaderPlaybackSettings": "\u64ad\u653e\u8a2d\u7f6e", @@ -1787,7 +1788,7 @@ "ButtonServer": "Server", "HeaderLibrary": "\u5a92\u9ad4\u5eab", "HeaderMedia": "Media", - "NoNewDevicesFound": "No new devices found.", + "NoNewDevicesFound": "No new devices found. To add a new tuner, close this dialog and enter the device information manually.", "NoResultsFound": "No results found.", "ButtonManageServer": "Manage Server", "ButtonPreferences": "Preferences", @@ -1823,7 +1824,7 @@ "HeaderSortOrder": "Sort Order", "ButtonDisconnect": "Disconnect", "ButtonMenu": "Menu", - "ForAdditionalLiveTvOptions": "For additional Live TV providers, click on the External Services tab to see the available options.", + "ForAdditionalLiveTvOptions": "For additional Live TV providers, click on the Services tab to see the available options.", "ButtonGuide": "Guide", "ConfirmEndPlayerSession": "Would you like to close Emby on the device?", "ButtonYes": "\u662f", diff --git a/dashboard-ui/strings/zh-tw.json b/dashboard-ui/strings/zh-tw.json index 08a42d4eec..3d959e57bf 100644 --- a/dashboard-ui/strings/zh-tw.json +++ b/dashboard-ui/strings/zh-tw.json @@ -96,6 +96,7 @@ "LabelDisplayMissingEpisodesWithinSeasonsHelp": "This must also be enabled for TV libraries in Emby Server setup.", "LabelUnairedMissingEpisodesWithinSeasons": "\u5728\u7bc0\u76ee\u5b63\u5ea6\u5167\u986f\u793a\u9084\u672a\u767c\u4f48\u7684\u55ae\u5143", "ImportMissingEpisodesHelp": "If enabled, information about missing episodes will be imported into your Emby database and displayed within seasons and series. This may cause significantly longer library scans.", + "MessageEnablingOptionLongerScans": "Enabling this option may result in significantly longer library scans.", "HeaderVideoPlaybackSettings": "\u8996\u983b\u56de\u653e\u8a2d\u7f6e", "OptionDownloadInternetMetadataTvPrograms": "Download internet metadata for programs listed in the guide", "HeaderPlaybackSettings": "Playback Settings", @@ -1787,7 +1788,7 @@ "ButtonServer": "Server", "HeaderLibrary": "Library", "HeaderMedia": "Media", - "NoNewDevicesFound": "No new devices found.", + "NoNewDevicesFound": "No new devices found. To add a new tuner, close this dialog and enter the device information manually.", "NoResultsFound": "No results found.", "ButtonManageServer": "\u7ba1\u7406\u4f3a\u670d\u5668", "ButtonPreferences": "Preferences", @@ -1823,7 +1824,7 @@ "HeaderSortOrder": "Sort Order", "ButtonDisconnect": "Disconnect", "ButtonMenu": "Menu", - "ForAdditionalLiveTvOptions": "For additional Live TV providers, click on the External Services tab to see the available options.", + "ForAdditionalLiveTvOptions": "For additional Live TV providers, click on the Services tab to see the available options.", "ButtonGuide": "\u7bc0\u76ee\u8868", "ConfirmEndPlayerSession": "Would you like to close Emby on the device?", "ButtonYes": "Yes",