1 line
No EOL
13 KiB
JavaScript
1 line
No EOL
13 KiB
JavaScript
import BaseView from"./../modules/viewmanager/basesettingsview.js";import loading from"./../modules/loading/loading.js";import globalize from"./../modules/common/globalize.js";import"./../modules/emby-elements/emby-input/emby-input.js";import"./../modules/emby-elements/emby-button/emby-button.js";import"./../modules/emby-elements/emby-checkbox/emby-checkbox.js";import"./../modules/emby-elements/emby-select/emby-select.js";import"./../modules/emby-elements/emby-scroller/emby-scroller.js";import"./../modules/emby-elements/emby-itemscontainer/emby-itemscontainer.js";import layoutManager from"./../modules/layoutmanager.js";import currentUserSettings from"./../modules/common/usersettings/usersettings.js";import UserSettingsBuilder from"./../modules/common/usersettings/usersettingsbuilder.js";import connectionManager from"./../modules/emby-apiclient/connectionmanager.js";import listView from"./../modules/listview/listview.js";import itemManager from"./../modules/common/itemmanager/itemmanager.js";import"./../modules/common/itemmanager/genericitemcontroller.js";function getLandingScreenOptions(type){var list=[];return"movies"===type?(list.push({name:globalize.translate("Movies"),value:"movies",isDefault:!0}),list.push({name:globalize.translate("Suggestions"),value:"suggestions"}),list.push({name:globalize.translate("Favorites"),value:"favorites"}),list.push({name:globalize.translate("Genres"),value:"genres"}),list.push({name:globalize.translate("Collections"),value:"collections"}),list.push({name:globalize.translate("Tags"),value:"tags"}),list.push({name:globalize.translate("Folders"),value:"folders"})):"musicvideos"===type?(list.push({name:globalize.translate("Videos"),value:"videos",isDefault:!0}),list.push({name:globalize.translate("Artists"),value:"artists"}),list.push({name:globalize.translate("Genres"),value:"genres"}),list.push({name:globalize.translate("Tags"),value:"tags"}),list.push({name:globalize.translate("Folders"),value:"folders"})):"tvshows"===type?(list.push({name:globalize.translate("Shows"),value:"shows",isDefault:!0}),list.push({name:globalize.translate("Suggestions"),value:"suggestions"}),list.push({name:globalize.translate("Favorites"),value:"favorites"}),list.push({name:globalize.translate("Collections"),value:"collections"}),list.push({name:globalize.translate("Genres"),value:"genres"}),list.push({name:globalize.translate("Tags"),value:"tags"}),list.push({name:globalize.translate("Networks"),value:"studios"}),list.push({name:globalize.translate("Folders"),value:"folders"})):"music"===type?(list.push({name:globalize.translate("Suggestions"),value:"suggestions",isDefault:!0}),list.push({name:globalize.translate("Albums"),value:"albums"}),list.push({name:globalize.translate("HeaderAlbumArtists"),value:"albumartists"}),list.push({name:globalize.translate("Artists"),value:"artists"}),list.push({name:globalize.translate("Composers"),value:"composers"}),list.push({name:globalize.translate("Playlists"),value:"playlists"}),list.push({name:globalize.translate("Genres"),value:"genres"}),list.push({name:globalize.translate("Tags"),value:"tags"}),list.push({name:globalize.translate("Songs"),value:"songs"}),list.push({name:globalize.translate("Folders"),value:"folders"})):"audiobooks"===type?(list.push({name:globalize.translate("Suggestions"),value:"suggestions",isDefault:!0}),list.push({name:globalize.translate("Books"),value:"albums"}),list.push({name:globalize.translate("Authors"),value:"artists"}),list.push({name:globalize.translate("Playlists"),value:"playlists"}),list.push({name:globalize.translate("Genres"),value:"genres"}),list.push({name:globalize.translate("Tags"),value:"tags"}),list.push({name:globalize.translate("Folders"),value:"folders"})):"livetv"===type?(list.push({name:globalize.translate("Suggestions"),value:"suggestions",isDefault:!0}),list.push({name:globalize.translate("Guide"),value:"guide"}),list.push({name:globalize.translate("Channels"),value:"channels"}),list.push({name:globalize.translate("Tags"),value:"tags"})):"homevideos"===type&&(list.push({name:globalize.translate("Videos"),value:"videos"}),list.push({name:globalize.translate("Photos"),value:"photos"}),list.push({name:globalize.translate("Tags"),value:"tags"}),list.push({name:globalize.translate("Folders"),value:"folders"})),list}function getLandingScreenOptionsHtml(type){return getLandingScreenOptions(type).map(function(o){return'<option value="'+(o.isDefault?"":o.value)+'">'+o.name+"</option>"}).join("")}function getPerLibrarySettingsHtml(item,user,userSettings,apiClient){let html="",isChecked;var folderId=item.Guid||item.Id;"Channel"!==item.Type&&"boxsets"!==item.CollectionType&&"playlists"!==item.CollectionType||(isChecked=-1===(user.Configuration.MyMediaExcludes||[]).indexOf(folderId),html=(html=(html=(html+="<div><label>")+'<input type="checkbox" is="emby-checkbox" class="chkIncludeInMyMedia" data-folderid="'+folderId+'"'+(isChecked?' checked="checked"':"")+"/>")+"<span>"+globalize.translate("DisplayInMyMedia")+"</span>")+"</label></div>");return-1===["playlists","livetv","boxsets","channels"].indexOf(item.CollectionType||"")&&(isChecked=-1===user.Configuration.LatestItemsExcludes.indexOf(folderId),html=(html=(html+='<label class="fldIncludeInLatest">')+'<input type="checkbox" is="emby-checkbox" class="chkIncludeInLatest" data-folderid="'+folderId+'"'+(isChecked?' checked="checked"':"")+"/>")+"<span>"+globalize.translate("DisplayInOtherHomeScreenSections")+"</span></label>"),html=html&&'<div class="checkboxListContainer">'+html+"</div>","movies"!==item.CollectionType&&"tvshows"!==item.CollectionType&&"musicvideos"!==item.CollectionType&&"music"!==item.CollectionType&&"audiobooks"!==item.CollectionType&&"livetv"!==item.CollectionType&&"homevideos"!==item.CollectionType||(folderId="landing-"+(user="livetv"===item.CollectionType?item.CollectionType:folderId),html=(html=(html=(html+='<div class="selectContainer">')+'<select is="emby-select" class="selectLanding autoSetting autoSave" data-folderid="'+user+'" label="'+globalize.translate("LabelDefaultScreen")+'" data-usersettingsfield="'+folderId+'" data-settingowner="usersettings">')+getLandingScreenOptionsHtml(item.CollectionType))+"</select></div>"),html&&(user=(user='<div class="verticalSection"><h2 class="sectionTitle">')+item.Name+"</h2>",html=user+html,html+="</div>"),html}function renderPerLibrarySettings(context,user,userViews,userSettings,apiClient){context=context.querySelector(".perLibrarySettings");let html="";for(let i=0,length=userViews.length;i<length;i++)html+=getPerLibrarySettingsHtml(userViews[i],user,userSettings,apiClient);context.innerHTML=html}function loadForm(context,user,userSettings,apiClient){var promise1=apiClient.getUserViews({IncludeHidden:!0},user.Id);return Promise.all([promise1]).then(function(responses){renderPerLibrarySettings(context,user,responses[0].Items,userSettings,apiClient),loading.hide()})}function getCheckboxItems(selector,context,isChecked){var inputs=context.querySelectorAll(selector),list=[];for(let i=0,length=inputs.length;i<length;i++)inputs[i].checked===isChecked&&list.push(inputs[i]);return list}function onSubmit(e){return e&&e.preventDefault(),!1}function onChange(e){var fldIncludeInLatest,options=this.options,apiClient=connectionManager.getApiClient(options.serverId),options=options.userId,context=e.target.closest("form"),chkIncludeInMyMedia=e.target.closest(".chkIncludeInMyMedia");if(chkIncludeInMyMedia)(fldIncludeInLatest=chkIncludeInMyMedia.closest(".verticalSection").querySelector(".fldIncludeInLatest"))&&(chkIncludeInMyMedia.checked?fldIncludeInLatest.classList.remove("hide"):fldIncludeInLatest.classList.add("hide")),(chkIncludeInMyMedia={}).MyMediaExcludes=getCheckboxItems(".chkIncludeInMyMedia",context,!1).map(function(i){return i.getAttribute("data-folderid")}),apiClient.updatePartialUserConfiguration(options,chkIncludeInMyMedia);else if(e.target.closest(".chkIncludeInLatest")){let obj={};obj.LatestItemsExcludes=getCheckboxItems(".chkIncludeInLatest",context,!1).map(function(i){return i.getAttribute("data-folderid")}),apiClient.updatePartialUserConfiguration(options,obj)}}function onTVHomeScreenChange(){var fldHomeFocusPreviews=this.closest("form").querySelector(".fldHomeFocusPreviews");layoutManager.tv&&"vertical"===this.value?fldHomeFocusPreviews.classList.remove("hide"):fldHomeFocusPreviews.classList.add("hide")}function embed(options,self){options.element.querySelector("form").addEventListener("submit",onSubmit.bind(self)),options.element.addEventListener("change",onChange.bind(self));self=options.element.querySelector(".selectTVHomeScreenContainer");layoutManager.tv?self.classList.remove("hide"):self.classList.add("hide"),options.element.querySelector(".selectTVHomeScreen").addEventListener("change",onTVHomeScreenChange)}function HomeScreenSettings(options){embed(this.options=options,this)}function setLegacyNextUpOptionsIfNeeded(context,apiClient){var elems=context.querySelectorAll('option[value="nextup"]');for(let i=0,length=elems.length;i<length;i++)elems[i].innerHTML=globalize.translate("HeaderNextUp")+" (Legacy)"}function mapUserViewToLibraryOrderItem(i,index,array){return{ServerId:i.ServerId,Name:i.Name,Id:i.Guid||i.Id,Type:"GenericListItem",Icon:itemManager.getDefaultIcon(i),CanMoveUp:0<index,CanMoveDown:index<10,CanReorder:!0}}function getViewOrderItems(query){return this.getApiClient().getUserViews(Object.assign({IncludeHidden:!0},query),this.settingsOptions.userId).then(function(result){return result.Items=result.Items.map(mapUserViewToLibraryOrderItem),result})}function arraymove(arr,fromIndex,toIndex){var element=arr[fromIndex];arr.splice(fromIndex,1),arr.splice(toIndex,0,element)}function onItemsMovedToNewIndex(instance,movedItems,options){console.log("onItemsMovedToNewIndex");var obj,fromIndex=options.currentIndex,newIndex=options.newIndex;return console.log("onItemsMovedToNewIndex, fromIndex: "+fromIndex+", newIndex: "+newIndex),fromIndex===newIndex?(console.log("fromIndex and newIndex are the same. something probably went wrong"),Promise.resolve()):((obj={}).OrderedViews=options.itemsContainer.getItems().map(function(i){return i.Id}),arraymove(obj.OrderedViews,fromIndex,newIndex),options=instance.getApiClient(),fromIndex=instance.settingsOptions.userId,options.updatePartialUserConfiguration(fromIndex,obj))}function onItemsMoved(items,options){return onItemsMovedToNewIndex(this,items,options)}function getViewOrderListOptions(items){return{renderer:listView,options:{defaultBackground:!1,enableUserDataButtons:!1,moreButton:!1,mediaInfo:!1,action:layoutManager.tv?"menu":"none",hoverPlayButton:!1,multiSelect:!1,imagePlayButton:!1,dragReorder:!0,roundImage:!0,draggable:!0,contextMenu:!0,iconSpacing:!1,itemMarginY:!1,fields:["Name"],commandActions:{moveInOrder:onItemsMoved.bind(this)}}}}function View(view,params){BaseView.apply(this,arguments);var apiClient=connectionManager.getApiClient(params.serverId),params=params.userId||apiClient.getCurrentUserId(),userSettings=params===apiClient.getCurrentUserId()?currentUserSettings:new UserSettingsBuilder,apiClient={serverId:apiClient.serverId(),userId:params,element:view.querySelector(".settingsContainer"),userSettings:userSettings},params=(this.settingsOptions=apiClient,this.settingsInstance=new HomeScreenSettings(this.settingsOptions),view.querySelector(".viewOrderList"));params.fetchData=getViewOrderItems.bind(this),params.getListOptions=getViewOrderListOptions.bind(this)}function getUserConfiguration(options){return Promise.resolve({key:"userconfiguration",value:options.user.Configuration})}HomeScreenSettings.prototype.loadData=function(){let self=this,context=self.options.element,userId=(loading.show(),self.options.userId),apiClient=connectionManager.getApiClient(self.options.serverId),userSettings=self.options.userSettings;return setLegacyNextUpOptionsIfNeeded(context,apiClient),apiClient.getUser(userId).then(function(user){return self.options.user=user,(userId===apiClient.getCurrentUserId()?Promise.resolve():userSettings.setUserInfo(userId,apiClient)).then(function(){return loadForm(context,user,userSettings,apiClient)})})},HomeScreenSettings.prototype.submit=function(){onSubmit.call(this)},HomeScreenSettings.prototype.destroy=function(){this.options=null},Object.assign(View.prototype,BaseView.prototype),View.prototype.loadSettingsInternal=function(){let instance=this;return this.settingsInstance.loadData().then(function(){return instance.loadAutoSettings()})},View.prototype.getAutoSettingsObjectsPromises=function(){var list=BaseView.prototype.getAutoSettingsObjectsPromises.apply(this,arguments);return list.push(getUserConfiguration(this.settingsOptions)),list},View.prototype.getUserConfigurationUserId=function(){return this.settingsOptions.userId},View.prototype.getNamedSettingsOwner=function(owner){switch(owner){case"usersettings":return this.settingsOptions.userSettings;case"userconfiguration":return this.settingsOptions.user.Configuration;default:return BaseView.prototype.getNamedSettingsOwner.apply(this,arguments)}},View.prototype.onResume=function(options){var result=BaseView.prototype.onResume.apply(this,arguments);return this.view.querySelector(".viewOrderList")?.resume(options),result},View.prototype.onPause=function(){this.settingsInstance&&this.settingsInstance.submit(),BaseView.prototype.onPause.apply(this,arguments),this.view.querySelector(".viewOrderList")?.pause()},View.prototype.destroy=function(){BaseView.prototype.destroy.apply(this,arguments),this.settingsInstance&&(this.settingsInstance.destroy(),this.settingsInstance=null),this.settingsOptions=null};export default View; |