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,105 @@
<div is="emby-scroller" data-horizontal="false" data-focusscroll="true" data-navcommands="card" data-forcescrollbar="true" class="scrollFrameY flex flex-grow" data-bindheader="true">
<div class="scrollSlider flex-grow padded-top-page padded-left padded-right">
<div class="readOnlyContent auto-center padded-top">
<form class="liveTvSettingsForm">
<div class="selectContainer">
<select is="emby-select" class="selectGuideDays" label="${LabelNumberOfGuideDays}">
<option value="">${Auto}</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
<option value="13">13</option>
<option value="14">14</option>
</select>
<div class="fieldDescription">${LabelNumberOfGuideDaysHelp}</div>
</div>
<div class="checkboxContainer checkboxContainer-withDescription fldWakeServer hide">
<label>
<input type="checkbox" is="emby-checkbox" class="chkWakeServer" />
<span>${LabelAutomaticallyWakeServerForRecordings}</span>
</label>
<div class="fieldDescription checkboxFieldDescription">${LabelAutomaticallyWakeServerForRecordingsHelp}</div>
</div>
<div class="inputContainer">
<div class="flex align-items-center">
<div class="flex-grow">
<input is="emby-input" class="txtRecordingPath" label="${LabelRecordingPath}" autocomplete="off" />
</div>
<button type="button" is="paper-icon-button-light" title="${ButtonSelectDirectory}" aria-label="${ButtonSelectDirectory}" class="btnSelectRecordingPath emby-input-iconbutton"><i class="md-icon">search</i></button>
</div>
<div class="fieldDescription">${LabelRecordingPathHelp}</div>
</div>
<div class="inputContainer">
<div class="flex align-items-center">
<div class="flex-grow">
<input is="emby-input" class="txtMovieRecordingPath" label="${LabelMovieRecordingPath}" autocomplete="off" />
</div>
<button type="button" is="paper-icon-button-light" title="${ButtonSelectDirectory}" aria-label="${ButtonSelectDirectory}" class="btnSelectMovieRecordingPath emby-input-iconbutton"><i class="md-icon">search</i></button>
</div>
</div>
<div class="inputContainer">
<div class="flex align-items-center">
<div class="flex-grow">
<input is="emby-input" class="txtSeriesRecordingPath" label="${LabelSeriesRecordingPath}" autocomplete="off" />
</div>
<button type="button" is="paper-icon-button-light" title="${ButtonSelectDirectory}" aria-label="${ButtonSelectDirectory}" class="btnSelectSeriesRecordingPath emby-input-iconbutton"><i class="md-icon">search</i></button>
</div>
</div>
<div class="verticalSection">
<h2 class="sectionTitle">${HeaderDefaultRecordingSettings}</h2>
<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>
<div class="verticalSection">
<h2 class="sectionTitle">${HeaderRecordingPostProcessing}</h2>
<div class="inputContainer">
<div class="flex align-items-center">
<div class="flex-grow">
<input is="emby-input" type="text" class="txtPostProcessor" label="${LabelPostProcessor}" />
</div>
<button type="button" is="paper-icon-button-light" class="btnSelectPostProcessorPath emby-input-iconbutton"><i class="md-icon">search</i></button>
</div>
</div>
<div class="inputContainer">
<input is="emby-input" type="text" class="txtPostProcessorArguments" label="${LabelPostProcessorArguments}" />
<div class="fieldDescription">${PostProcessorArgumentsHelp}</div>
<div class="fieldDescription postProcessorArgument">${DvrPostProcessorPathArgument}</div>
<div class="fieldDescription extraPostProcessingArgs hide"></div>
</div>
</div>
<br />
<div>
<button is="emby-button" type="submit" class="raised button-submit block"><span>${Save}</span></button>
</div>
</form>
</div>
</div>
</div>

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
define(["exports","./../modules/tabbedview/itemstab.js","./../modules/emby-elements/emby-input/emby-input.js","./../modules/emby-elements/emby-button/emby-button.js","./../modules/emby-elements/emby-checkbox/emby-checkbox.js","./../modules/emby-elements/emby-select/emby-select.js","./../modules/layoutmanager.js","./../modules/commandprocessor.js"],function(_exports,_itemstab,_embyInput,_embyButton,_embyCheckbox,_embySelect,_layoutmanager,_commandprocessor){function LiveTVSetupView(view,params){params.serverId=ApiClient.serverId(),this.supportsViewSettings=!1,this.enableTotalRecordCountDisplay=!1,_itemstab.default.apply(this,arguments)}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,Object.assign(LiveTVSetupView.prototype,_itemstab.default.prototype),LiveTVSetupView.prototype.onResume=function(options){_itemstab.default.prototype.onResume.apply(this,arguments)},LiveTVSetupView.prototype.onPause=function(){_itemstab.default.prototype.onPause.apply(this,arguments)},LiveTVSetupView.prototype.getApiClientQueryMethodName=function(){return"getLiveTvChannelsForManagement"},LiveTVSetupView.prototype.getBaseListRendererOptions=function(){var options=_itemstab.default.prototype.getBaseListRendererOptions.apply(this,arguments);return options.multiSelect=!1,options},LiveTVSetupView.prototype.getBaseListRendererOptions=function(){var options=_itemstab.default.prototype.getBaseListRendererOptions.apply(this,arguments);return options.action=_layoutmanager.default.tv?"menu":"custom",options},LiveTVSetupView.prototype.getListViewOptions=function(items,settings){var options=_itemstab.default.prototype.getListViewOptions.apply(this,arguments),enableDragReordering=!this.getQueryInfo().hasFilters;return Object.assign(options,{fields:["Name","ItemCheckbox","MappedChannelInfo"],draggable:enableDragReordering,dragHandle:enableDragReordering,image:!0,roundCheckbox:!0,checkboxAction:"togglechanneldisabled"})},LiveTVSetupView.prototype.getCardOptions=function(items,settings){var options=_itemstab.default.prototype.getCardOptions.apply(this,arguments);return Object.assign(options,{draggable:!1,fields:["Name"]})},LiveTVSetupView.prototype.getSettingsKey=function(){return"managechannels"},LiveTVSetupView.prototype.getSortMenuOptions=function(){return[]},LiveTVSetupView.prototype.getDefaultSorting=function(){return{sortBy:"DefaultChannelOrder",sortOrder:"Ascending"}},LiveTVSetupView.prototype.getVisibleFilters=function(){return["ChannelMappingStatus"]},LiveTVSetupView.prototype.getItemTypes=function(){return["ChannelManagementInfo"]},LiveTVSetupView.prototype.setTitle=function(){},LiveTVSetupView.prototype.getViewSettingDefaults=function(){var viewSettings=_itemstab.default.prototype.getViewSettingDefaults.apply(this,arguments);return viewSettings.imageType="list",viewSettings},LiveTVSetupView.prototype.loadTemplate=function(){return this.loadItemsTemplate()},LiveTVSetupView.prototype.onTemplateLoaded=function(){_itemstab.default.prototype.onTemplateLoaded.apply(this,arguments);var itemsContainer=this.itemsContainer;itemsContainer.setAttribute("data-monitor","ChannelManagementInfoUpdated"),itemsContainer.addEventListener("action-null",function(e){var item=e.detail.item;item.Disabled||_commandprocessor.default.executeCommand("edit",[item],{}).then(function(){e.target.closest(".itemsContainer").notifyRefreshNeeded(!0)})}.bind(this))},_exports.default=LiveTVSetupView});

View File

@@ -0,0 +1,22 @@
<div is="emby-scroller" class="view flex flex-direction-column scrollFrameY flex-grow" data-mousewheel="true" data-horizontal="false" data-forcescrollbar="true" data-focusscroll="true" data-bindheader="true">
<div class="scrollSlider flex-grow flex-direction-column padded-left padded-left-page padded-right padded-top-page padded-bottom-page settingsContainer">
<form class="auto-center">
<h2>
${HeaderGuideDataSetup}
</h2>
<div class="selectContainer">
<select is="emby-select" class="selectCountry" data-mini="true" required="required" label="${LabelCountry}"></select>
</div>
<div class="selectContainer fldGuideProvider hide">
<select is="emby-select" class="selectProvider" data-mini="true" required="required" label="${LabelGuideSource}"></select>
</div>
<div class="flex justify-content-flex-end">
<button is="emby-button" type="submit" class="raised button-submit btnSubmit"><span>${Next}</span><i class="md-icon button-icon button-icon-right autortl">&#xe5c8;</i></button>
<button is="emby-button" type="button" class="raised button-cancel btnCancel"><span>${Cancel}</span></button>
</div>
</form>
</div>
</div>

View File

@@ -0,0 +1 @@
define(["exports","./../modules/viewmanager/basesettingsview.js","./../modules/loading/loading.js","./../modules/emby-elements/emby-select/emby-select.js","./../modules/approuter.js"],function(_exports,_basesettingsview,_loading,_embySelect,_approuter){function onCountryChange(){var country=this.value,fldGuideProvider=this.closest("FORM").querySelector(".fldGuideProvider"),selectProvider=(country?fldGuideProvider.classList.remove("hide"):(fldGuideProvider.classList.add("hide"),_loading.default.hide()),fldGuideProvider.querySelector(".selectProvider"));selectProvider.innerHTML="",country&&(_loading.default.show(),ApiClient.getJSON(ApiClient.getUrl("LiveTv/ListingProviders/Available",{Country:country})).then(function(options){!function(select,options){select.innerHTML='<option value=""></option>'+options.map(function(o){return'<option data-url="'+o.SetupUrl+'" value="'+o.Id+'">'+o.Name+"</option>"}).join("")}(selectProvider,options),_loading.default.hide()}))}function cancel(){_approuter.default.back()}function onSubmit(e){var selectProvider=this.querySelector(".selectProvider"),country=this.querySelector(".selectCountry").value,selectProvider=selectProvider.options[selectProvider.selectedIndex].getAttribute("data-url");selectProvider.includes("?")?selectProvider+="&":selectProvider+="?",_approuter.default.show(selectProvider+="country="+country),e.preventDefault(),e.stopPropagation()}function View(view,params){_basesettingsview.default.apply(this,arguments),view.querySelector("form").addEventListener("submit",onSubmit),view.querySelector(".btnCancel").addEventListener("click",cancel),view.querySelector(".selectCountry").addEventListener("change",onCountryChange)}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,Object.assign(View.prototype,_basesettingsview.default.prototype),View.prototype.loadSettingsInternal=function(){var select,selectCountry=this.view.querySelector(".selectCountry");return select=selectCountry,ApiClient.getCountries().then(function(allCountries){var html="";html+="<option value=''></option>";for(var i=0,length=allCountries.length;i<length;i++){var culture=allCountries[i];html+="<option value='"+culture.ThreeLetterISORegionName+"'>"+culture.DisplayName+"</option>"}select.innerHTML=html})},_exports.default=View});

View File

@@ -0,0 +1,12 @@
<div class="view flex flex-direction-column withTabs">
<div class="tabContent tabContent-positioned flex flex-grow" data-index="0">
</div>
<div class="tabContent tabContent-positioned flex flex-grow" data-index="1">
</div>
<div class="tabContent tabContent-positioned flex flex-grow" data-index="2">
</div>
</div>

View File

@@ -0,0 +1 @@
define(["exports","./../modules/common/globalize.js","./../modules/tabbedview/tabbedview.js"],function(_exports,_globalize,_tabbedview){function LiveTVSetupView(view,params){_tabbedview.default.call(this,view,params),this.apiClient=ApiClient}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,Object.assign(LiveTVSetupView.prototype,_tabbedview.default.prototype),LiveTVSetupView.prototype.getTabs=function(){return[{name:_globalize.default.translate("Setup"),id:"setup"},{name:_globalize.default.translate("Channels"),id:"channels"},{name:_globalize.default.translate("Advanced"),id:"advanced"}]},LiveTVSetupView.prototype.loadTabController=function(id){return Emby.importModule("./livetvsetup/"+id+"tab.js")},LiveTVSetupView.prototype.destroy=function(){_tabbedview.default.prototype.destroy.apply(this,arguments),this.apiClient=null},_exports.default=LiveTVSetupView});

View File

@@ -0,0 +1,69 @@
<div is="emby-scroller" class="view flex flex-direction-column scrollFrameY flex-grow" data-mousewheel="true" data-horizontal="false" data-forcescrollbar="true" data-focusscroll="true" data-bindheader="true">
<div class="scrollSlider flex-grow flex-direction-column padded-left padded-left-page padded-right padded-top-page padded-bottom-page settingsContainer">
<form class="auto-center">
<div class="verticalSection">
<div class="padded-bottom">
<h3 class="typeName" style="margin-bottom:0;"></h3>
</div>
<button is="emby-button" type="button" class="raised button-cancel block btnDetect hide" style="margin-bottom:2em;">${HeaderDetectMyDevices}</button>
<div class="inputContainer fldFriendlyName hide">
<input is="emby-input" type="text" class="txtFriendlyName" label="${LabelFriendlyName}" autocomplete="off" />
</div>
<div class="inputContainer fldPath hide">
<div class="flex align-items-center">
<div class="flex-grow">
<input is="emby-input" type="text" class="txtDevicePath" label="${LabelFileOrUrl}" required="required" autocomplete="off" />
</div>
<button type="button" is="paper-icon-button-light" class="btnSelectPath hide emby-input-iconbutton"><i class="md-icon">search</i></button>
</div>
</div>
<div class="inputContainer fldUserAgent">
<input is="emby-input" type="text" class="txtUserAgent" label="${LabelUserAgentHeader}" autocomplete="off" />
<div class="fieldDescription">${SupplyCustomValueIfNeeded}</div>
</div>
<div class="inputContainer fldReferrer">
<input is="emby-input" type="text" class="txtReferrer" label="${LabelReferrerHeader}" autocomplete="off" />
<div class="fieldDescription">${SupplyCustomValueIfNeeded}</div>
</div>
<div class="inputContainer fldTunerCount hide">
<input is="emby-input" type="number" pattern="[0-9]*" required="required" min="0" step="1" class="txtTunerCount" label="${LabelSimultaneousConnectionLimit}" autocomplete="off" value="0" />
<div class="fieldDescription">${SimultaneousConnectionLimitHelp}</div>
</div>
<div class="checkboxContainer checkboxContainer-withDescription fldFavorites hide">
<label>
<input type="checkbox" is="emby-checkbox" class="chkFavorite" />
<span>${LabelImportOnlyFavoriteChannels}</span>
</label>
<div class="fieldDescription checkboxFieldDescription">${ImportFavoriteChannelsHelp}</div>
</div>
<div class="checkboxContainer checkboxContainer-withDescription fldTranscode hide">
<label>
<input type="checkbox" is="emby-checkbox" class="chkTranscode" />
<span>${LabelAllowHWTranscoding}</span>
</label>
<div class="fieldDescription checkboxFieldDescription">${AllowHWTranscodingHelp}</div>
</div>
</div>
<p class="drmMessage hide">${DrmChannelsNotImported}</p>
<div>
<input type="hidden" class="fldDeviceId" />
<button is="emby-button" type="submit" class="raised button-submit block">
<span class="saveButtonText"></span>
</button>
<button is="emby-button" type="button" class="raised button-cancel block btnCancel">
<span>${Cancel}</span>
</button>
</div>
</form>
</div>
</div>

File diff suppressed because one or more lines are too long

41
livetvsetup/setuptab.html Normal file
View File

@@ -0,0 +1,41 @@
<div is="emby-scroller" data-horizontal="false" data-focusscroll="true" data-navcommands="card" data-forcescrollbar="true" class="scrollFrameY flex flex-grow" data-bindheader="true">
<div class="scrollSlider flex-grow padded-top-page padded-left padded-right">
<div class="verticalSection padded-bottom padded-top premiereInfo sectionTitle-cards" style="margin-top:0;">
</div>
<div class="verticalSection">
<div class="sectionTitleContainer sectionTitleContainer-cards">
<h2 class="sectionTitle sectionTitle-cards">
<span>${HeaderTVSources}</span>
</h2>
<button is="emby-button" type="button" class="raised raised-mini btnAddDevice submit sectionTitleButton">
<i class="md-icon button-icon button-icon button-icon-left">&#xE145;</i>
<span>${HeaderAddTvSource}</span>
</button>
<button is="emby-button" type="button" class="raised raised-mini btnRefresh button-cancel sectionTitleButton">
<i class="md-icon button-icon button-icon-left">refresh</i>
<span>${ButtonRefreshGuideData}</span>
</button>
</div>
<div class="devicesList itemsContainer vertical-wrap itemsContainer-defaultCardSize" is="emby-itemscontainer" style="margin-top: .5em;" data-monitor="LiveTVTunerDevices"></div>
</div>
<div class="verticalSection">
<div class="sectionTitleContainer sectionTitleContainer-cards flex align-items-center flex-wrap-wrap">
<h2 class="sectionTitle sectionTitle-cards">${HeaderGuideProviders}</h2>
<button is="emby-button" type="button" class="raised raised-mini btnAddProvider submit sectionTitleButton">
<i class="md-icon button-icon button-icon button-icon-left">&#xE145;</i>
<span>${HeaderAddGuideSource}</span>
</button>
<div class="refreshGuideProgress itemProgressBar itemProgressBarRound hide sectionTitleButton" style="width:10em;height:.4em;"></div>
</div>
<div class="providerList itemsContainer vertical-wrap" is="emby-itemscontainer" style="margin-top: .5em;" data-monitor="LiveTVGuideSources"></div>
</div>
</div>
</div>

1
livetvsetup/setuptab.js Normal file

File diff suppressed because one or more lines are too long