jellyfin-web/dashboard-ui/bower_components/emby-webcomponents/shortcuts.js
Luke Pulverenti 8a6884abef minify
2017-01-27 18:07:14 -05:00

1 line
8.4 KiB
JavaScript

define(["playbackManager","inputManager","connectionManager","embyRouter","globalize","loading","dom","recordingHelper"],function(playbackManager,inputManager,connectionManager,embyRouter,globalize,loading,dom,recordingHelper){"use strict";function playAllFromHere(card,serverId,queue){for(var parent=card.parentNode,className=card.classList.length?"."+card.classList[0]:"",cards=parent.querySelectorAll(className+"[data-id]"),ids=[],foundCard=!1,i=0,length=cards.length;i<length;i++)cards[i]===card&&(foundCard=!0),foundCard&&ids.push(cards[i].getAttribute("data-id"));ids.length&&(queue?playbackManager.queue({ids:ids,serverId:serverId}):playbackManager.play({ids:ids,serverId:serverId}))}function showSlideshow(startItemId,serverId){var apiClient=connectionManager.getApiClient(serverId),userId=apiClient.getCurrentUserId();return apiClient.getItem(userId,startItemId).then(function(item){return apiClient.getItems(userId,{MediaTypes:"Photo",Filters:"IsNotFolder",ParentId:item.ParentId,SortBy:"SortName"}).then(function(result){var items=result.Items,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:8e3,interactive:!0});newSlideShow.show()})})})}function showItem(item,options){return"Photo"===item.Type?void showSlideshow(item.Id,item.ServerId):void embyRouter.showItem(item,options)}function showProgramDialog(item){require(["recordingCreator"],function(recordingCreator){recordingCreator.show(item.Id,item.ServerId)})}function getItem(button){button=dom.parentWithAttribute(button,"data-id");var serverId=button.getAttribute("data-serverid"),id=button.getAttribute("data-id"),type=button.getAttribute("data-type"),apiClient=connectionManager.getApiClient(serverId);return"Timer"===type?apiClient.getLiveTvTimer(id):"SeriesTimer"===type?apiClient.getLiveTvSeriesTimer(id):apiClient.getItem(apiClient.getCurrentUserId(),id)}function showContextMenu(card,options){getItem(card).then(function(item){var playlistId=card.getAttribute("data-playlistid"),collectionId=card.getAttribute("data-collectionid");if(playlistId){var elem=dom.parentWithAttribute(card,"data-playlistitemid");item.PlaylistItemId=elem?elem.getAttribute("data-playlistitemid"):null}require(["itemContextMenu"],function(itemContextMenu){itemContextMenu.show(Object.assign({item:item,play:!0,queue:!0,playAllFromHere:!item.IsFolder,queueAllFromHere:!item.IsFolder,playlistId:playlistId,collectionId:collectionId},options||{})).then(function(result){var itemsContainer;"playallfromhere"===result.command||"queueallfromhere"===result.command?executeAction(card,options.positionTo,result.command):"removefromplaylist"===result.command||"removefromcollection"===result.command?(itemsContainer=options.itemsContainer||dom.parentWithAttribute(card,"is","emby-itemscontainer"),itemsContainer&&itemsContainer.dispatchEvent(new CustomEvent("needsrefresh",{detail:{},cancelable:!1,bubbles:!0}))):"canceltimer"===result.command&&(itemsContainer=options.itemsContainer||dom.parentWithAttribute(card,"is","emby-itemscontainer"),itemsContainer&&itemsContainer.dispatchEvent(new CustomEvent("timercancelled",{detail:{},cancelable:!1,bubbles:!0})))})})})}function getItemInfoFromCard(card){return{Type:card.getAttribute("data-type"),Id:card.getAttribute("data-id"),TimerId:card.getAttribute("data-timerid"),CollectionType:card.getAttribute("data-collectiontype"),ChannelId:card.getAttribute("data-channelid"),SeriesId:card.getAttribute("data-seriesid"),ServerId:card.getAttribute("data-serverid"),MediaType:card.getAttribute("data-mediatype"),IsFolder:"true"===card.getAttribute("data-isfolder"),UserData:{PlaybackPositionTicks:parseInt(card.getAttribute("data-positionticks")||"0")}}}function showPlayMenu(card,target){var item=getItemInfoFromCard(card);require(["playMenu"],function(playMenu){playMenu.show({item:item,positionTo:target})})}function sendToast(text){require(["toast"],function(toast){toast(text)})}function executeAction(card,target,action){target=target||card;var id=card.getAttribute("data-id");id||(card=dom.parentWithAttribute(card,"data-id"),id=card.getAttribute("data-id"));var item=getItemInfoFromCard(card),serverId=item.ServerId,type=item.Type,playableItemId="Program"===type?item.ChannelId:item.Id;if("link"===action)showItem(item,{context:card.getAttribute("data-context")});else if("programdialog"===action)showProgramDialog(item);else if("instantmix"===action)playbackManager.instantMix({Id:playableItemId,ServerId:serverId});else if("play"===action||"resume"===action){var startPositionTicks=parseInt(card.getAttribute("data-positionticks")||"0");playbackManager.play({ids:[playableItemId],startPositionTicks:startPositionTicks,serverId:serverId})}else if("queue"===action)playbackManager.isPlaying()?(playbackManager.queue({ids:[playableItemId],serverId:serverId}),sendToast(globalize.translate("sharedcomponents#MediaQueued"))):playbackManager.queue({ids:[playableItemId],serverId:serverId});else if("playallfromhere"===action)playAllFromHere(card,serverId);else if("queueallfromhere"===action)playAllFromHere(card,serverId,!0);else if("setplaylistindex"===action)playbackManager.setCurrentPlaylistItem(card.getAttribute("data-playlistitemid"));else if("record"===action)onRecordCommand(serverId,id,type,card.getAttribute("data-timerid"),card.getAttribute("data-seriestimerid"));else if("menu"===action){var options="false"===target.getAttribute("data-playoptions")?{shuffle:!1,instantMix:!1,play:!1,playAllFromHere:!1,queue:!1,queueAllFromHere:!1}:{};options.positionTo=target,showContextMenu(card,options)}else if("playmenu"===action)showPlayMenu(card,target);else if("edit"===action)getItem(target).then(function(item){editItem(item,serverId)});else if("playtrailer"===action)getItem(target).then(playTrailer);else if("addtoplaylist"===action)getItem(target).then(addToPlaylist);else if("custom"===action){var customAction=target.getAttribute("data-customaction");card.dispatchEvent(new CustomEvent("action-"+customAction,{detail:{playlistItemId:card.getAttribute("data-playlistitemid")},cancelable:!1,bubbles:!0}))}}function addToPlaylist(item){require(["playlistEditor"],function(playlistEditor){(new playlistEditor).show({items:[item.Id],serverId:item.ServerId})})}function playTrailer(item){var apiClient=connectionManager.getApiClient(item.ServerId);apiClient.getLocalTrailers(apiClient.getCurrentUserId(),item.Id).then(function(trailers){playbackManager.play({items:trailers})})}function editItem(item,serverId){var apiClient=connectionManager.getApiClient(serverId);return new Promise(function(resolve,reject){var serverId=apiClient.serverInfo().Id;"Timer"===item.Type?item.ProgramId?require(["recordingCreator"],function(recordingCreator){recordingCreator.show(item.ProgramId,serverId).then(resolve,reject)}):require(["recordingEditor"],function(recordingEditor){recordingEditor.show(item.Id,serverId).then(resolve,reject)}):require(["metadataEditor"],function(metadataEditor){metadataEditor.show(item.Id,serverId).then(resolve,reject)})})}function onRecordCommand(serverId,id,type,timerId,seriesTimerId){if("Program"===type||timerId||seriesTimerId){var programId="Program"===type?id:null;recordingHelper.toggle(serverId,programId,timerId,seriesTimerId)}}function onClick(e){var card=dom.parentWithClass(e.target,"itemAction");if(card){var actionElement=card,action=actionElement.getAttribute("data-action");if(action||(actionElement=dom.parentWithAttribute(actionElement,"data-action"),action=actionElement.getAttribute("data-action")),action)return executeAction(card,actionElement,action),e.preventDefault(),e.stopPropagation(),!1}}function onCommand(e){var cmd=e.detail.command;if("play"===cmd||"resume"===cmd||"record"===cmd||"menu"===cmd||"info"===cmd){var card=dom.parentWithClass(e.target,"itemAction");card&&(e.preventDefault(),e.stopPropagation(),executeAction(card,card,cmd))}}function on(context,options){options=options||{},options.click!==!1&&context.addEventListener("click",onClick),options.command!==!1&&inputManager.on(context,onCommand)}function off(context,options){options=options||{},context.removeEventListener("click",onClick),options.command!==!1&&inputManager.off(context,onCommand)}function getShortcutAttributesHtml(item){return'data-id="'+item.Id+'" data-serverid="'+item.ServerId+'" data-type="'+item.Type+'" data-mediatype="'+item.MediaType+'" data-channelid="'+item.ChannelId+'" data-isfolder="'+item.IsFolder+'"'}return{on:on,off:off,onClick:onClick,showContextMenu:showContextMenu,getShortcutAttributesHtml:getShortcutAttributesHtml}});