first commit
This commit is contained in:
160
livetvsetup/advancedtab.html
Normal file
160
livetvsetup/advancedtab.html
Normal file
@@ -0,0 +1,160 @@
|
||||
<div is="emby-scroller" data-horizontal="false" data-focusscroll="true" data-navcommands="card" data-forcescrollbar="true" class="scrollFrameY flex flex-direction-column flex-grow" data-bindheader="true">
|
||||
<div class="scrollSlider flex-grow padded-top-page padded-left padded-right padded-bottom-page">
|
||||
<div class="readOnlyContent auto-center padded-top">
|
||||
|
||||
<form class="liveTvSettingsForm fieldsets">
|
||||
|
||||
<fieldset>
|
||||
<div class="fieldset-fields">
|
||||
<div class="selectContainer fldBufferSize hide fieldset-field">
|
||||
<select is="emby-select" class="selectBufferSize" label="${LiveBufferSizeHours}">
|
||||
<option value="0">${Unlimited}</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>
|
||||
</select>
|
||||
<div class="fieldDescription">${LiveBufferSizeHoursHelp}</div>
|
||||
</div>
|
||||
<div class="selectContainer fieldset-field">
|
||||
<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="toggleContainer fldWakeServer hide fieldset-field">
|
||||
<label>
|
||||
<input type="checkbox" is="emby-toggle" class="chkWakeServer" />
|
||||
<span>${LabelAutomaticallyWakeServerForRecordings}</span>
|
||||
</label>
|
||||
<div class="fieldDescription toggleFieldDescription">${LabelAutomaticallyWakeServerForRecordingsHelp}</div>
|
||||
</div>
|
||||
|
||||
<div class="selectContainer fldRecordingFolder hide fldRecordingFolderById fieldset-field">
|
||||
<label>
|
||||
<select is="emby-select" label="${LabelDefaultRecordingFolder}" class="selectRecordingFolder" data-itemsecondarytext="true" data-virtualscroll="false">
|
||||
</select>
|
||||
</label>
|
||||
<div class="fieldDescription">${RecordingFolderHelp}</div>
|
||||
</div>
|
||||
|
||||
<div class="selectContainer fldMovieRecordingFolder hide fldRecordingFolderById fieldset-field">
|
||||
<label>
|
||||
<select is="emby-select" label="${LabelMovieRecordingFolder}" class="selectMovieRecordingFolder" data-itemsecondarytext="true" data-virtualscroll="false">
|
||||
</select>
|
||||
</label>
|
||||
<div class="fieldDescription">${MovieRecordingFolderHelp}</div>
|
||||
</div>
|
||||
|
||||
<div class="selectContainer fldSeriesRecordingFolder hide fldRecordingFolderById fieldset-field">
|
||||
<label>
|
||||
<select is="emby-select" label="${LabelSeriesRecordingFolder}" class="selectSeriesRecordingFolder" data-itemsecondarytext="true" data-virtualscroll="false">
|
||||
</select>
|
||||
</label>
|
||||
<div class="fieldDescription">${SeriesRecordingFolderHelp}</div>
|
||||
</div>
|
||||
|
||||
<div class="inputContainer hide fldRecordingFolderByPath fieldset-field">
|
||||
<div class="flex align-items-center">
|
||||
<div class="flex-grow">
|
||||
<input is="emby-input" class="txtRecordingPath" label="${LabelDefaultRecordingFolder}" 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">${RecordingFolderHelp}</div>
|
||||
</div>
|
||||
<div class="inputContainer hide fldRecordingFolderByPath fieldset-field">
|
||||
<div class="flex align-items-center">
|
||||
<div class="flex-grow">
|
||||
<input is="emby-input" class="txtMovieRecordingPath" label="${LabelMovieRecordingFolder}" 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 class="fieldDescription">${MovieRecordingFolderHelp}</div>
|
||||
</div>
|
||||
<div class="inputContainer hide fldRecordingFolderByPath fieldset-field">
|
||||
<div class="flex align-items-center">
|
||||
<div class="flex-grow">
|
||||
<input is="emby-input" class="txtSeriesRecordingPath" label="${LabelSeriesRecordingFolder}" 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 class="fieldDescription">${SeriesRecordingFolderHelp}</div>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<legend>${HeaderDefaultRecordingSettings}</legend>
|
||||
<div class="fieldset-fields">
|
||||
<div class="inputContainer fieldset-field">
|
||||
<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 fieldset-field">
|
||||
<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>
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<legend class="sectionTitle">${HeaderRecordingPostProcessing}</legend>
|
||||
|
||||
<div class="fieldset-fields">
|
||||
<div class="inputContainer fieldset-field">
|
||||
<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 fieldset-field">
|
||||
<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>
|
||||
</fieldset>
|
||||
|
||||
<div>
|
||||
<button is="emby-button" type="submit" class="raised button-submit block"><span>${Save}</span></button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
1
livetvsetup/advancedtab.js
Normal file
1
livetvsetup/advancedtab.js
Normal file
File diff suppressed because one or more lines are too long
1
livetvsetup/channelstab.js
Normal file
1
livetvsetup/channelstab.js
Normal 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-select/emby-select.js","./../modules/layoutmanager.js","./../modules/commandprocessor.js","./../modules/loading/loading.js","./../modules/emby-apiclient/connectionmanager.js"],function(_exports,_itemstab,_embyInput,_embyButton,_embySelect,_layoutmanager,_commandprocessor,_loading,_connectionmanager){function LiveTVSetupView(view,params){this.supportsViewSettings=!1,this.enableTotalRecordCountDisplay=!1,_itemstab.default.apply(this,arguments)}function onItemsChecked(options){var items=options.items,options=options.checked,item=items[0],items=_connectionmanager.default.getApiClient(item),disabled=(_loading.default.show(),!options);return items.setChannelDisabled(item,disabled).then(function(updatedChannel){item.Disabled=disabled,_loading.default.hide()})}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.action=_layoutmanager.default.tv?"menu":"custom",options.multiSelect=!1,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","TunerName","MappedChannelInfo"],draggable:enableDragReordering,dragReorder:enableDragReordering,image:!0,roundCheckbox:!0,checkboxAction:onItemsChecked})},LiveTVSetupView.prototype.getCardOptions=function(items,settings){var options=_itemstab.default.prototype.getCardOptions.apply(this,arguments);return Object.assign(options,{draggable:!1,draggableXActions:!1,fields:["Name","TunerName"]})},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.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});
|
||||
22
livetvsetup/guideprovider.html
Normal file
22
livetvsetup/guideprovider.html
Normal 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>
|
||||
${HeaderAddGuideSource}
|
||||
</h2>
|
||||
|
||||
<div class="selectContainer">
|
||||
<select is="emby-select" class="selectCountry" required="required" label="${LabelCountry}"></select>
|
||||
</div>
|
||||
<div class="selectContainer fldGuideProvider hide">
|
||||
<select is="emby-select" class="selectProvider" required="required" label="${GuideDataSource}"></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"></i></button>
|
||||
<button is="emby-button" type="button" class="raised button-cancel btnCancel"><span>${Cancel}</span></button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
1
livetvsetup/guideprovider.js
Normal file
1
livetvsetup/guideprovider.js
Normal 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(e){var e=e.target,country=e.value,e=e.closest("FORM").querySelector(".fldGuideProvider"),selectProvider=(country?e.classList.remove("hide"):(e.classList.add("hide"),_loading.default.hide()),e.querySelector(".selectProvider"));selectProvider.innerHTML="",country&&(_loading.default.show(),(e=this.getApiClient()).getJSON(e.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.bind(this))}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,this.getApiClient().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});
|
||||
12
livetvsetup/livetvsetup.html
Normal file
12
livetvsetup/livetvsetup.html
Normal 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>
|
||||
1
livetvsetup/livetvsetup.js
Normal file
1
livetvsetup/livetvsetup.js
Normal file
@@ -0,0 +1 @@
|
||||
define(["exports","./../modules/common/globalize.js","./../modules/tabbedview/tabbedview.js"],function(_exports,_globalize,_tabbedview){function LiveTVSetupView(view,params){_tabbedview.default.apply(this,arguments)}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")};_exports.default=LiveTVSetupView});
|
||||
70
livetvsetup/livetvtuner.html
Normal file
70
livetvsetup/livetvtuner.html
Normal file
@@ -0,0 +1,70 @@
|
||||
<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 fieldsets padded-top">
|
||||
|
||||
<fieldset>
|
||||
|
||||
<legend class="typeName" style="margin-bottom:0;"></legend>
|
||||
|
||||
<button is="emby-button" type="button" class="raised button-cancel block btnDetect hide" style="margin-bottom:2em;">${HeaderDetectMyDevices}</button>
|
||||
|
||||
<div class="fieldset-fields">
|
||||
<div class="inputContainer fldFriendlyName hide fieldset-field">
|
||||
<input is="emby-input" type="text" class="txtFriendlyName" label="${LabelFriendlyName}" autocomplete="off" />
|
||||
</div>
|
||||
|
||||
<div class="inputContainer fldPath hide fieldset-field">
|
||||
<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 fieldset-field">
|
||||
<input is="emby-input" type="text" class="txtUserAgent" label="${LabelUserAgentHeader}" autocomplete="off" />
|
||||
<div class="fieldDescription">${SupplyCustomValueIfNeeded}</div>
|
||||
</div>
|
||||
|
||||
<div class="inputContainer fldReferrer fieldset-field">
|
||||
<input is="emby-input" type="text" class="txtReferrer" label="${LabelReferrerHeader}" autocomplete="off" />
|
||||
<div class="fieldDescription">${SupplyCustomValueIfNeeded}</div>
|
||||
</div>
|
||||
|
||||
<div class="inputContainer fldTunerCount hide fieldset-field">
|
||||
<input is="emby-input" type="number" inputmode="numeric" required="required" min="0" step="1" class="txtTunerCount" label="${LabelSimultaneousConnectionLimit}" autocomplete="off" value="0" />
|
||||
<div class="fieldDescription">${SimultaneousConnectionLimitHelp}</div>
|
||||
</div>
|
||||
|
||||
<div class="toggleContainer fldFavorites hide fieldset-field">
|
||||
<label>
|
||||
<input type="checkbox" is="emby-toggle" class="chkFavorite" />
|
||||
<span>${LabelImportOnlyFavoriteChannels}</span>
|
||||
</label>
|
||||
<div class="fieldDescription toggleFieldDescription">${ImportFavoriteChannelsHelp}</div>
|
||||
</div>
|
||||
<div class="toggleContainer fldTranscode hide fieldset-field">
|
||||
<label>
|
||||
<input type="checkbox" is="emby-toggle" class="chkTranscode" />
|
||||
<span>${LabelAllowHWTranscoding}</span>
|
||||
</label>
|
||||
<div class="fieldDescription toggleFieldDescription">${AllowHWTranscodingHelp}</div>
|
||||
</div>
|
||||
</div>
|
||||
<p class="drmMessage hide fieldDescription fieldset-fields-fieldDescription">${DrmChannelsNotImported}</p>
|
||||
</fieldset>
|
||||
|
||||
|
||||
<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>
|
||||
1
livetvsetup/livetvtuner.js
Normal file
1
livetvsetup/livetvtuner.js
Normal file
File diff suppressed because one or more lines are too long
40
livetvsetup/setuptab.html
Normal file
40
livetvsetup/setuptab.html
Normal file
@@ -0,0 +1,40 @@
|
||||
<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 verticalSections">
|
||||
|
||||
<div is="emby-premierecontainer" class="verticalSection padded-bottom padded-top premiereInfo sectionTitle-cards" style="margin-top:0;">
|
||||
|
||||
</div>
|
||||
|
||||
<div class="verticalSection">
|
||||
<div class="sectionTitleContainer sectionTitleContainer-cards flex align-items-center flex-wrap-wrap">
|
||||
<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"></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 class="refreshGuideProgress itemProgressBar itemProgressBarRound hide sectionTitleButton" style="width:10em;"></div>
|
||||
|
||||
</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"></i>
|
||||
<span>${HeaderAddGuideSource}</span>
|
||||
</button>
|
||||
</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
1
livetvsetup/setuptab.js
Normal file
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user