This commit is contained in:
root
2023-08-31 15:30:17 +02:00
commit dea16b40a8
833 changed files with 142024 additions and 0 deletions

View File

@@ -0,0 +1,70 @@
<div class="formDialogHeader">
<button is="paper-icon-button-light" class="btnCancel hide-mouse-idle-tv" tabindex="-1"><i class="md-icon autortl">&#xE5C4;</i></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="${LabelChannels}" 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="${LabelKeyword}" />
</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>

File diff suppressed because one or more lines are too long

View 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,clickFn=(options.querySelector("i").innerHTML="&#xE061;",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=clickFn,_dom.default.addEventListener(options,"click",clickFn,{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"&#xE062;";if(item.TimerId||item.SeriesTimerId)status=item.Status||"Cancelled";else{if("Timer"!==item.Type)return"&#xE061;";status=item.Status}return item.SeriesTimerId&&"Cancelled"!==status?"&#xE062;":"&#xE061;"}(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});

View 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}.recordingDetailText{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-flex-wrap:wrap;flex-wrap:wrap}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,56 @@
<div class="formDialogHeader">
<button is="paper-icon-button-light" class="btnCancel hide-mouse-idle-tv" tabindex="-1"><i class="md-icon autortl">&#xE5C4;</i></button>
<h3 class="formDialogHeaderTitle"></h3>
</div>
<div is="emby-scroller" data-horizontal="false" data-focusscroll="true" class="formDialogContent">
<div class="scrollSlider">
<form class="dialogContentInner dialogContentInner-nofixedfooter dialog-content-centered padded-left padded-right">
<div class="recordingDetailsContainer">
<div class="recordingDialog-imageContainer">
</div>
<div class="recordingDetails">
<h1 style="margin-bottom:.5em;" class="programDialog-itemName recordingDialog-itemName dialogContentTitle"></h1>
<div style="margin:.5em 0;" class="itemMiscInfoPrimary mediaInfoItems recordingDetailText"></div>
<div style="margin:.5em 0;" class="itemMiscInfoSecondary mediaInfoItems recordingDetailText secondaryText"></div>
<div style="margin:.5em 0;" class="itemGenres secondaryText"></div>
<div style="margin:1em 0;" class="flex align-items-flex-start flex-wrap-wrap">
<button is="emby-button" type="button" class="btnPlay hide raised">
<i class="md-icon button-icon button-icon-left autortl">&#xE037;</i>
<span>${Play}</span>
</button>
<div class="recordingFields flex align-items-flex-start flex-wrap-wrap hide">
<div class="recordSeriesContainer recordingFields-buttons flex align-items-flex-start hide">
<button is="emby-button" type="button" class="recordingButton seriesRecordingButton raised">
<i class="md-icon button-icon button-icon-left recordingIcon">&#xE062;</i>
<span class="seriesRecordingButtonText">${HeaderRecordSeries}</span>
</button>
<button is="emby-button" type="button" class="manageRecordingButton btnManageSeriesRecording recordingButton hide raised">
<i class="md-icon button-icon button-icon-left recordingIcon">&#xE8B8;</i>
<span>${SeriesSettings}</span>
</button>
</div>
<button is="emby-button" type="button" class="recordingButton singleRecordingButton raised">
<i class="md-icon button-icon button-icon-left recordingIcon">&#xE061;</i>
<span class="singleRecordingButtonText">${Record}</span>
</button>
<button is="emby-button" type="button" class="manageRecordingButton btnManageRecording recordingButton hide raised">
<i class="md-icon button-icon button-icon-left recordingIcon">&#xE8B8;</i>
<span>${Settings}</span>
</button>
</div>
</div>
</div>
</div>
<div style="margin:.5em 0;" class="itemOverview"></div>
</form>
</div>
</div>

View File

@@ -0,0 +1 @@
define(["exports","./../common/globalize.js","./../loading/loading.js","./../emby-apiclient/connectionmanager.js","./../emby-elements/emby-checkbox/emby-checkbox.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,_embyCheckbox,_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});

View 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" pattern="[0-9]*" required="required" min="-15" step="1" label="${LabelStartWhenPossible}" />
</div>
<div class="fieldDescription" style="margin:1.3em .25em 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" pattern="[0-9]*" required="required" min="-15" step="1" label="${LabelStopWhenPossible}" />
</div>
<div class="fieldDescription" style="margin:1.3em .25em 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>

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,88 @@
<form>
<div class="selectContainer">
<select is="emby-select" class="selectShowType" label="${LabelRecord}">
<option value="new">${NewEpisodesOnly}</option>
<option value="all">${AllEpisodes}</option>
</select>
</div>
<div class="checkboxContainer checkboxContainer-withDescription">
<label>
<input type="checkbox" is="emby-checkbox" class="chkSkipEpisodesInLibrary" />
<span>${SkipEpisodesAlreadyInMyLibrary}</span>
</label>
<div class="fieldDescription checkboxFieldDescription">${SkipEpisodesAlreadyInMyLibraryHelp}</div>
</div>
<div class="selectContainer fldChannels">
<select is="emby-select" class="selectChannels" label="${LabelChannels}" 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="${LabelKeyword}" />
</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" pattern="[0-9]*" required="required" min="-15" step="1" label="${LabelStartWhenPossible}" />
</div>
<div class="fieldDescription" style="margin:1.7em .25em 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" pattern="[0-9]*" required="required" min="-15" step="1" label="${LabelStopWhenPossible}" />
</div>
<div class="fieldDescription" style="margin:1.7em .25em 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" pattern="[0-9]*" required="required" min="0" step="1" label="${LabelMaxRecordingLength}" />
</div>
<div class="fieldDescription" style="margin:1.7em .25em 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>