first commit
This commit is contained in:
70
modules/recordingcreator/channelrecording.template.html
Normal file
70
modules/recordingcreator/channelrecording.template.html
Normal file
@@ -0,0 +1,70 @@
|
||||
<div class="formDialogHeader">
|
||||
<button type="button" is="emby-dialogclosebutton"></button>
|
||||
<h3 class="formDialogHeaderTitle">
|
||||
${HeaderCreateRecording}
|
||||
</h3>
|
||||
</div>
|
||||
|
||||
<div is="emby-scroller" data-horizontal="false" data-focusscroll="true" class="formDialogContent">
|
||||
<div class="scrollSlider">
|
||||
<form class="dialogContentInner dialog-content-centered padded-left padded-right padded-top">
|
||||
|
||||
<div class="inputContainer">
|
||||
<input is="emby-input" class="txtName" type="text" label="${LabelName}" required />
|
||||
</div>
|
||||
|
||||
<div class="selectContainer fldChannel hide">
|
||||
<select is="emby-select" class="selectChannel" label="${Channels}" multiple>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="selectContainer fldKeywordType hide">
|
||||
<select is="emby-select" class="selectKeywordType" label="${LabelKeywordType}">
|
||||
<option value="Name">${Title}</option>
|
||||
<option value="EpisodeTitle">${EpisodeTitle}</option>
|
||||
<option value="Overview">${Overview}</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="inputContainer fldKeyword hide">
|
||||
<input is="emby-input" class="txtKeyword" type="text" label="${Keyword}" />
|
||||
</div>
|
||||
|
||||
<div class="inputContainer fldStartTime hide">
|
||||
<input is="emby-input" class="txtStartTime" type="datetime-local" label="${LabelStartTime}" step="60" />
|
||||
</div>
|
||||
|
||||
<div class="inputContainer fldEndTime hide">
|
||||
<input is="emby-input" class="txtEndTime" type="datetime-local" label="${LabelEndTime}" step="60" />
|
||||
</div>
|
||||
|
||||
<div class="selectContainer fldFrequency">
|
||||
<select is="emby-select" class="selectFrequency" label="${LabelFrequency}">
|
||||
<option value="once">${Once}</option>
|
||||
<option value="recurring">${Recurring}</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="selectContainer fldAirDays hide">
|
||||
<select is="emby-select" class="selectAirDays" label="${LabelAirDays}" multiple data-virtualscroll="false">
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="previewContainer hide">
|
||||
<div class="flex align-items-baseline" style="margin: 1.5em 0 .75em;">
|
||||
<h2 style="margin: 0;">${Preview}</h2>
|
||||
<div class="secondaryText previewCountText" style="margin:0 1em;"></div>
|
||||
</div>
|
||||
<div is="emby-itemscontainer" class="itemsContainer previewitemsContainer vertical-list">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="formDialogFooter">
|
||||
<button is="emby-button" type="submit" class="raised btnSubmit block formDialogFooterItem button-submit">
|
||||
<span>${HeaderCreateRecording}</span>
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
1
modules/recordingcreator/channelrecordingcreator.js
Normal file
1
modules/recordingcreator/channelrecordingcreator.js
Normal file
File diff suppressed because one or more lines are too long
1
modules/recordingcreator/recordingbutton.js
Normal file
1
modules/recordingcreator/recordingbutton.js
Normal file
@@ -0,0 +1 @@
|
||||
define(["exports","./../dom.js","./../emby-apiclient/connectionmanager.js","./../emby-elements/emby-button/emby-button.js","./../emby-elements/emby-button/paper-icon-button-light.js","./../common/recordinghelper.js"],function(_exports,_dom,_connectionmanager,_embyButton,_paperIconButtonLight,_recordinghelper){function RecordingButton(options){(this.options=options).item?this.refreshItem(options.item):options.itemId&&options.serverId&&this.refresh(options.itemId,options.serverId);var options=options.button,icon=options.querySelector("i"),icon=(icon.innerHTML="",icon.classList.add("md-icon-fill"),function(e){var serverId,programId,timerId,timerStatus,instance,item=this.item;item&&(serverId=item.ServerId,programId=item.Id,timerId=item.TimerId,timerStatus=item.Status,item=item.SeriesTimerId,instance=this,_recordinghelper.default.toggleRecording(serverId,programId,timerId,timerStatus,item).then(function(){instance.refresh(serverId,programId)}))}.bind(this));this.clickFn=icon,_dom.default.addEventListener(options,"click",icon,{passive:!0})}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,RecordingButton.prototype.refresh=function(serverId,itemId){var serverId=_connectionmanager.default.getApiClient(serverId),self=this;serverId.getItem(serverId.getCurrentUserId(),itemId).then(function(item){self.refreshItem(item)})},RecordingButton.prototype.refreshItem=function(item){var button=this.options.button;this.item=item,button.querySelector("i").innerHTML=function(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?"":""}(item),item.TimerId&&"Cancelled"!==(item.Status||"Cancelled")?button.classList.add("recordingIcon-active"):button.classList.remove("recordingIcon-active")},RecordingButton.prototype.destroy=function(){var clickFn,options=this.options;options&&(options=options.button,clickFn=this.clickFn)&&_dom.default.removeEventListener(options,"click",clickFn,{passive:!0}),this.options=null,this.item=null};_exports.default=RecordingButton});
|
||||
1
modules/recordingcreator/recordingcreator.css
Normal file
1
modules/recordingcreator/recordingcreator.css
Normal file
@@ -0,0 +1 @@
|
||||
.recordingDialog-imageContainer{-webkit-flex-shrink:0;flex-shrink:0;padding-top:1em;padding-bottom:1em;-webkit-padding-start:0;padding-inline-start:0;-webkit-padding-end:1em;padding-inline-end:1em;width:25%}.recordingDialog-img{width:100%}.recordingDialog-itemName{margin-top:.7em}.recordingDetailsContainer{display:-webkit-flex;display:flex}.recordingDetails{-webkit-flex-grow:1;flex-grow:1}
|
||||
1
modules/recordingcreator/recordingeditor.js
Normal file
1
modules/recordingcreator/recordingeditor.js
Normal file
@@ -0,0 +1 @@
|
||||
define(["exports","./../common/globalize.js","./../loading/loading.js","./../emby-apiclient/connectionmanager.js","./../emby-elements/emby-button/emby-button.js","./../emby-elements/emby-input/emby-input.js","./../emby-elements/emby-select/emby-select.js","./../common/methodtimer.js"],function(_exports,_globalize,_loading,_connectionmanager,_embyButton,_embyInput,_embySelect,_methodtimer){var currentItemId,currentServerId;function onStartTimeChanged(){var form=this.closest("form"),form=form.querySelector(".txtEndTime"),minTime=this.valueAsNumberUtc||Date.now();form.minDateTimeLocal=minTime+=6e4,(!form.valueAsNumberUtc||form.valueAsNumberUtc<=minTime)&&(minTime+=174e4,form.valueAsNumberUtc=Math.max(form.valueAsNumberUtc||minTime,minTime))}function onMinStartTimeTimer(){var minTime=Date.now(),txtStartTime=this.querySelector(".txtStartTime");txtStartTime!==document.activeElement&&(txtStartTime.minDateTimeLocal=minTime,txtStartTime.valueAsNumberUtc=Math.max(txtStartTime.valueAsNumberUtc||minTime,minTime),onStartTimeChanged.call(txtStartTime))}function renderTimer(context,item){context.querySelector(".txtPrePaddingMinutes").value=item.PrePaddingSeconds/60,context.querySelector(".txtPostPaddingMinutes").value=item.PostPaddingSeconds/60;var txtStartTime=context.querySelector(".txtStartTime"),txtEndTime=context.querySelector(".txtEndTime");"DateTime"===item.TimerType?(context.querySelector(".fldStartTime").classList.remove("hide"),context.querySelector(".fldEndTime").classList.remove("hide"),txtStartTime.setAttribute("required","required"),txtEndTime.setAttribute("required","required"),txtStartTime.valueAsNumberUtc=Date.parse(item.StartDate),txtEndTime.valueAsNumberUtc=Date.parse(item.EndDate)):(context.querySelector(".fldStartTime").classList.add("hide"),context.querySelector(".fldEndTime").classList.add("hide"),txtStartTime.removeAttribute("required"),txtEndTime.removeAttribute("required")),_loading.default.hide()}function onSubmit(e){var form=this,apiClient=_connectionmanager.default.getApiClient(currentServerId);return apiClient.getLiveTvTimer(currentItemId).then(function(item){var _form$querySelector$v;item.PrePaddingSeconds=60*form.querySelector(".txtPrePaddingMinutes").value,item.PostPaddingSeconds=60*form.querySelector(".txtPostPaddingMinutes").value,"DateTime"===item.TimerType&&(item.StartDate=null==(_form$querySelector$v=form.querySelector(".txtStartTime").valueAsDateUtc)?void 0:_form$querySelector$v.toISOString(),item.EndDate=null==(_form$querySelector$v=form.querySelector(".txtEndTime").valueAsDateUtc)?void 0:_form$querySelector$v.toISOString()),apiClient.updateLiveTvTimer(item)}),e.preventDefault(),!1}function init(context){context.querySelector(".txtStartTime").addEventListener("change",onStartTimeChanged),function(context){context.minStartTimeTimer=new _methodtimer.default({onInterval:onMinStartTimeTimer.bind(context),timeoutMs:3e4,type:"interval"})}(context),onMinStartTimeTimer.call(context),context.querySelector("form").addEventListener("submit",onSubmit)}function onFieldChange(e){this.querySelector(".btnSubmit").click()}function RecordingEditor(){}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,require(["css!modules/recordingcreator/recordingcreator.css","material-icons","flexStyles"]),RecordingEditor.prototype.embed=function(itemId,serverId,options){currentServerId=serverId,_loading.default.show(),options=options||{},this.options=options,require(["text!modules/recordingcreator/recordingeditor.template.html"],function(template){var dlg=options.context;dlg.innerHTML=_globalize.default.translateDocument(template,"sharedcomponents"),dlg.removeEventListener("change",onFieldChange),dlg.addEventListener("change",onFieldChange),dlg.classList.remove("hide"),_connectionmanager.default.getApiClient(serverId);init(dlg),function(context,id){var apiClient=_connectionmanager.default.getApiClient(currentServerId);_loading.default.show(),"string"==typeof id?(currentItemId=id,apiClient.getLiveTvTimer(id).then(function(result){renderTimer(context,result),_loading.default.hide()})):id&&(currentItemId=id.Id,renderTimer(context,id),_loading.default.hide())}(dlg,itemId)})},RecordingEditor.prototype.pause=function(){var options=this.options;options&&(options=options.context).minStartTimeTimer&&(options.minStartTimeTimer.destroy(),options.minStartTimeTimer=null)},RecordingEditor.prototype.destroy=function(){this.pause()};_exports.default=RecordingEditor});
|
||||
36
modules/recordingcreator/recordingeditor.template.html
Normal file
36
modules/recordingcreator/recordingeditor.template.html
Normal file
@@ -0,0 +1,36 @@
|
||||
<form>
|
||||
|
||||
<div class="inputContainer fldStartTime hide">
|
||||
<input is="emby-input" class="txtStartTime" type="datetime-local" label="${LabelStartTime}" step="60" />
|
||||
</div>
|
||||
|
||||
<div class="inputContainer fldEndTime hide">
|
||||
<input is="emby-input" class="txtEndTime" type="datetime-local" label="${LabelEndTime}" step="60" />
|
||||
</div>
|
||||
|
||||
<div class="inputContainer">
|
||||
<div class="flex align-items-center">
|
||||
<div class="flex-grow">
|
||||
<input is="emby-input" type="number" class="txtPrePaddingMinutes" inputmode="numeric" required="required" min="-15" step="1" label="${LabelStartWhenPossible}" />
|
||||
</div>
|
||||
<div class="fieldDescription" style="margin:1.7em .5em 0;font-size:90%;">
|
||||
${MinutesBefore}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="inputContainer">
|
||||
<div class="flex align-items-center">
|
||||
<div class="flex-grow">
|
||||
<input is="emby-input" type="number" class="txtPostPaddingMinutes" inputmode="numeric" required="required" min="-15" step="1" label="${LabelStopWhenPossible}" />
|
||||
</div>
|
||||
<div class="fieldDescription" style="margin:1.7em .5em 0;font-size:90%;">
|
||||
${MinutesAfter}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="formDialogFooter hide">
|
||||
<button is="emby-button" type="submit" class="raised btnSubmit block formDialogFooterItem button-submit hide">
|
||||
<span>${Save}</span>
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
1
modules/recordingcreator/recordingfields.js
Normal file
1
modules/recordingcreator/recordingfields.js
Normal file
File diff suppressed because one or more lines are too long
1
modules/recordingcreator/seriesrecordingeditor.js
Normal file
1
modules/recordingcreator/seriesrecordingeditor.js
Normal file
File diff suppressed because one or more lines are too long
95
modules/recordingcreator/seriesrecordingeditor.template.html
Normal file
95
modules/recordingcreator/seriesrecordingeditor.template.html
Normal file
@@ -0,0 +1,95 @@
|
||||
<form>
|
||||
<div class="selectContainer">
|
||||
<select is="emby-select" class="selectShowType" label="${Record}">
|
||||
<option value="new">${NewEpisodesOnly}</option>
|
||||
<option value="all">${AllEpisodes}</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="toggleContainer">
|
||||
<label>
|
||||
<input type="checkbox" is="emby-toggle" class="chkSkipEpisodesInLibrary" />
|
||||
<span>${SkipEpisodesAlreadyInMyLibrary}</span>
|
||||
</label>
|
||||
<div class="fieldDescription toggleFieldDescription">${SkipEpisodesAlreadyInMyLibraryHelp}</div>
|
||||
</div>
|
||||
|
||||
<div class="fldCheckAllLibraries hide toggleContainer">
|
||||
<label>
|
||||
<input type="checkbox" is="emby-toggle" class="chkCheckAllLibraries" />
|
||||
<span>${CheckForExistingEpisodesInAllLibraries}</span>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div class="selectContainer fldChannels">
|
||||
<select is="emby-select" class="selectChannels" label="${Channels}" multiple>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="selectContainer fldKeywordType hide">
|
||||
<select is="emby-select" class="selectKeywordType" label="${LabelKeywordType}">
|
||||
<option value="Name">${Title}</option>
|
||||
<option value="EpisodeTitle">${EpisodeTitle}</option>
|
||||
<option value="Overview">${Overview}</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="inputContainer fldKeyword hide">
|
||||
<input is="emby-input" class="txtKeyword" type="text" label="${Keyword}" />
|
||||
</div>
|
||||
|
||||
<div class="selectContainer fldAirDays">
|
||||
<select is="emby-select" class="selectAirDays" label="${LabelAirDays}" multiple data-virtualscroll="false">
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="selectContainer fldAirTime hide">
|
||||
<select is="emby-select" class="selectAirTime" label="${LabelAirTime}">
|
||||
<option class="optionAroundTime" value="original"></option>
|
||||
<option value="any">${Anytime}</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="selectContainer">
|
||||
<select is="emby-select" class="selectKeepUpTo" label="${LabelKeepUpTo}"></select>
|
||||
<div class="fieldDescription">${KeepUpToHelp}</div>
|
||||
</div>
|
||||
|
||||
<div class="inputContainer">
|
||||
<div class="flex align-items-center">
|
||||
<div class="flex-grow">
|
||||
<input is="emby-input" type="number" class="txtPrePaddingMinutes" inputmode="numeric" required="required" min="-15" step="1" label="${LabelStartWhenPossible}" />
|
||||
</div>
|
||||
<div class="fieldDescription" style="margin:1.7em .5em 0;font-size:90%;">
|
||||
${MinutesBefore}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="inputContainer">
|
||||
<div class="flex align-items-center">
|
||||
<div class="flex-grow">
|
||||
<input is="emby-input" type="number" class="txtPostPaddingMinutes" inputmode="numeric" required="required" min="-15" step="1" label="${LabelStopWhenPossible}" />
|
||||
</div>
|
||||
<div class="fieldDescription" style="margin:1.7em .5em 0;font-size:90%;">
|
||||
${MinutesAfter}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="inputContainer fldMaxRecordingLength">
|
||||
<div class="flex align-items-center">
|
||||
<div class="flex-grow">
|
||||
<input is="emby-input" type="number" class="txtMaxRecordingLength" inputmode="numeric" required="required" min="0" step="1" label="${LabelMaxRecordingLength}" />
|
||||
</div>
|
||||
<div class="fieldDescription" style="margin:1.7em .5em 0;font-size:90%;">
|
||||
${Minutes}
|
||||
</div>
|
||||
</div>
|
||||
<div class="fieldDescription">${MaxRecordingLengthHelp}</div>
|
||||
</div>
|
||||
|
||||
<button is="emby-button" type="submit" class="raised btnSubmit block formDialogFooterItem button-submit hide">
|
||||
<span>${Save}</span>
|
||||
</button>
|
||||
</form>
|
||||
Reference in New Issue
Block a user