1
0
Fork 0
mirror of https://github.com/jellyfin/jellyfin-web synced 2025-03-30 19:56:21 +00:00

embed recording button into video player

This commit is contained in:
Luke Pulverenti 2017-03-17 16:23:34 -04:00
parent 1dd1a705e5
commit 21a63e8240
12 changed files with 16 additions and 11 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1 @@
define(["globalize","connectionManager","require","loading","apphost","dom","recordingHelper","events","registrationServices","paper-icon-button-light","emby-button","css!./recordingfields"],function(globalize,connectionManager,require,loading,appHost,dom,recordingHelper,events,registrationServices){"use strict";function onRecordingButtonClick(e){var item=this.item;if(item){var serverId=item.ServerId,programId=item.Id,timerId=item.TimerId,timerStatus=item.Status,seriesTimerId=item.SeriesTimerId,instance=this;recordingHelper.toggleRecording(serverId,programId,timerId,timerStatus,seriesTimerId).then(function(){instance.refresh(serverId,programId)})}}function RecordingButton(options){this.options=options,options.item?this.refreshItem(options.item):options.itemId&&options.serverId&&this.refresh(options.itemId,options.serverId);var button=options.button;button.querySelector("i").innerHTML="";var clickFn=onRecordingButtonClick.bind(this);this.clickFn=clickFn,dom.addEventListener(button,"click",clickFn,{passive:!0})}function getIndicatorIcon(item){var status;if("SeriesTimer"===item.Type)return"";if(item.TimerId||item.SeriesTimerId)status=item.Status||"Cancelled";else{if("Timer"!==item.Type)return"";status=item.Status}return item.SeriesTimerId&&"Cancelled"!==status?"":""}return RecordingButton.prototype.refresh=function(serverId,itemId){var apiClient=connectionManager.getApiClient(serverId),self=this;apiClient.getItem(apiClient.getCurrentUserId(),itemId).then(function(item){self.refreshItem(item)})},RecordingButton.prototype.refreshItem=function(item){var options=this.options,button=options.button;this.item=item,button.querySelector("i").innerHTML=getIndicatorIcon(item),item.TimerId&&"Cancelled"!==(item.Status||"Cancelled")?button.classList.add("recordingIcon-active"):button.classList.remove("recordingIcon-active")},RecordingButton.prototype.destroy=function(){var options=this.options;if(options){var button=options.button,clickFn=this.clickFn;clickFn&&dom.removeEventListener(button,"click",clickFn,{passive:!0})}this.options=null,this.item=null},RecordingButton});

View file

@ -1 +1 @@
define(["globalize","loading","connectionManager"],function(globalize,loading,connectionManager){"use strict";function changeRecordingToSeries(apiClient,timerId,programId){loading.show(),apiClient.getItem(apiClient.getCurrentUserId(),programId).then(function(item){item.IsSeries?cancelTimer(apiClient,timerId,!1).then(function(){apiClient.getNewLiveTvTimerDefaults({programId:programId}).then(function(timerDefaults){apiClient.createLiveTvSeriesTimer(timerDefaults).then(function(){loading.hide(),sendToast(globalize.translate("sharedcomponents#SeriesRecordingScheduled"))})})}):cancelTimer(apiClient,timerId,!0)})}function cancelTimerWithConfirmation(timerId,serverId){return new Promise(function(resolve,reject){require(["confirm"],function(confirm){confirm({text:globalize.translate("sharedcomponents#MessageConfirmRecordingCancellation"),primary:"cancel",confirmText:globalize.translate("sharedcomponents#HeaderCancelRecording"),cancelText:globalize.translate("sharedcomponents#HeaderKeepRecording")}).then(function(){loading.show();var apiClient=connectionManager.getApiClient(serverId);apiClient.cancelLiveTvTimer(timerId).then(function(){require(["toast"],function(toast){toast(globalize.translate("sharedcomponents#RecordingCancelled"))}),loading.hide(),resolve()},reject)},reject)})})}function cancelSeriesTimerWithConfirmation(timerId,serverId){return new Promise(function(resolve,reject){require(["confirm"],function(confirm){confirm({text:globalize.translate("sharedcomponents#MessageConfirmRecordingCancellation"),primary:"cancel",confirmText:globalize.translate("sharedcomponents#HeaderCancelSeries"),cancelText:globalize.translate("sharedcomponents#HeaderKeepSeries")}).then(function(){loading.show();var apiClient=connectionManager.getApiClient(serverId);apiClient.cancelLiveTvSeriesTimer(timerId).then(function(){require(["toast"],function(toast){toast(globalize.translate("sharedcomponents#SeriesCancelled"))}),loading.hide(),resolve()},reject)},reject)})})}function cancelTimer(apiClient,timerId,hideLoading){return loading.show(),apiClient.cancelLiveTvTimer(timerId).then(function(){hideLoading&&(loading.hide(),sendToast(globalize.translate("sharedcomponents#RecordingCancelled")))})}function createRecording(apiClient,programId,isSeries){return loading.show(),apiClient.getNewLiveTvTimerDefaults({programId:programId}).then(function(item){var promise=isSeries?apiClient.createLiveTvSeriesTimer(item):apiClient.createLiveTvTimer(item);return promise.then(function(){loading.hide(),sendToast(globalize.translate("sharedcomponents#RecordingScheduled"))})})}function sendToast(msg){require(["toast"],function(toast){toast(msg)})}function toggleRecording(serverId,programId,timerId,timerStatus,seriesTimerId){var apiClient=connectionManager.getApiClient(serverId),hasTimer=timerId&&"Cancelled"!==timerStatus;return seriesTimerId&&hasTimer?cancelTimer(apiClient,timerId,!0):hasTimer&&programId?changeRecordingToSeries(apiClient,timerId,programId):programId?createRecording(apiClient,programId):Promise.reject()}return{cancelTimer:cancelTimer,createRecording:createRecording,changeRecordingToSeries:changeRecordingToSeries,toggleRecording:toggleRecording,cancelTimerWithConfirmation:cancelTimerWithConfirmation,cancelSeriesTimerWithConfirmation:cancelSeriesTimerWithConfirmation}});
define(["globalize","loading","connectionManager"],function(globalize,loading,connectionManager){"use strict";function changeRecordingToSeries(apiClient,timerId,programId){return loading.show(),apiClient.getItem(apiClient.getCurrentUserId(),programId).then(function(item){return item.IsSeries?cancelTimer(apiClient,timerId,!1).then(function(){return apiClient.getNewLiveTvTimerDefaults({programId:programId}).then(function(timerDefaults){return apiClient.createLiveTvSeriesTimer(timerDefaults).then(function(){loading.hide(),sendToast(globalize.translate("sharedcomponents#SeriesRecordingScheduled"))})})}):cancelTimer(apiClient,timerId,!0)})}function cancelTimerWithConfirmation(timerId,serverId){return new Promise(function(resolve,reject){require(["confirm"],function(confirm){confirm({text:globalize.translate("sharedcomponents#MessageConfirmRecordingCancellation"),primary:"cancel",confirmText:globalize.translate("sharedcomponents#HeaderCancelRecording"),cancelText:globalize.translate("sharedcomponents#HeaderKeepRecording")}).then(function(){loading.show();var apiClient=connectionManager.getApiClient(serverId);apiClient.cancelLiveTvTimer(timerId).then(function(){require(["toast"],function(toast){toast(globalize.translate("sharedcomponents#RecordingCancelled"))}),loading.hide(),resolve()},reject)},reject)})})}function cancelSeriesTimerWithConfirmation(timerId,serverId){return new Promise(function(resolve,reject){require(["confirm"],function(confirm){confirm({text:globalize.translate("sharedcomponents#MessageConfirmRecordingCancellation"),primary:"cancel",confirmText:globalize.translate("sharedcomponents#HeaderCancelSeries"),cancelText:globalize.translate("sharedcomponents#HeaderKeepSeries")}).then(function(){loading.show();var apiClient=connectionManager.getApiClient(serverId);apiClient.cancelLiveTvSeriesTimer(timerId).then(function(){require(["toast"],function(toast){toast(globalize.translate("sharedcomponents#SeriesCancelled"))}),loading.hide(),resolve()},reject)},reject)})})}function cancelTimer(apiClient,timerId,hideLoading){return loading.show(),apiClient.cancelLiveTvTimer(timerId).then(function(){hideLoading&&(loading.hide(),sendToast(globalize.translate("sharedcomponents#RecordingCancelled")))})}function createRecording(apiClient,programId,isSeries){return loading.show(),apiClient.getNewLiveTvTimerDefaults({programId:programId}).then(function(item){var promise=isSeries?apiClient.createLiveTvSeriesTimer(item):apiClient.createLiveTvTimer(item);return promise.then(function(){loading.hide(),sendToast(globalize.translate("sharedcomponents#RecordingScheduled"))})})}function sendToast(msg){require(["toast"],function(toast){toast(msg)})}function toggleRecording(serverId,programId,timerId,timerStatus,seriesTimerId){var apiClient=connectionManager.getApiClient(serverId),hasTimer=timerId&&"Cancelled"!==timerStatus;return seriesTimerId&&hasTimer?cancelTimer(apiClient,timerId,!0):hasTimer&&programId?changeRecordingToSeries(apiClient,timerId,programId):programId?createRecording(apiClient,programId):Promise.reject()}return{cancelTimer:cancelTimer,createRecording:createRecording,changeRecordingToSeries:changeRecordingToSeries,toggleRecording:toggleRecording,cancelTimerWithConfirmation:cancelTimerWithConfirmation,cancelSeriesTimerWithConfirmation:cancelSeriesTimerWithConfirmation}});

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -9,7 +9,7 @@
<div class="emby-button-foreground">${TabLatest}</div>
</button>
<button is="emby-button" class="emby-tab-button" data-index="2">
<div class="emby-button-foreground">${TabSeries}</div>
<div class="emby-button-foreground">${TabShows}</div>
</button>
<button is="emby-button" class="emby-tab-button" data-index="3">
<div class="emby-button-foreground">${TabUpcoming}</div>

View file

@ -17,6 +17,10 @@
</div>
<div class="buttons">
<button is="paper-icon-button-light" class="btnRecord autoSize hide">
<i class="xlargePaperIconButton md-icon">&#xE061;</i>
</button>
<button is="paper-icon-button-light" class="btnPreviousTrack autoSize hide">
<i class="xlargePaperIconButton md-icon">&#xE045;</i>
</button>