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

allow specification of m3u stream limit

This commit is contained in:
Luke Pulverenti 2017-11-17 16:51:53 -05:00
parent 1e253f22c1
commit a353ee8a9f
24 changed files with 34 additions and 27 deletions

File diff suppressed because one or more lines are too long

View file

@ -1 +1 @@
.emby-select{display:block;margin:0;margin-bottom:0!important;font-size:110%;font-family:inherit;font-weight:inherit;padding:.5em 1.9em .5em .5em;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0!important;-webkit-tap-highlight-color:transparent;width:100%}.emby-select[disabled]{background:0 0!important;border-color:transparent!important;color:inherit!important;-webkit-appearance:none;-moz-appearance:none;appearance:none}.selectContainer-inline>.emby-select{padding:.3em 1.9em .3em .5em;font-size:inherit}.selectContainer-inline>.emby-select[disabled]{padding:.4em 0}.emby-select::-moz-focus-inner{border:0}.emby-select-focusscale{-webkit-transition:-webkit-transform 180ms ease-out!important;-o-transition:transform 180ms ease-out!important;transition:transform 180ms ease-out!important;-webkit-transform-origin:center center;transform-origin:center center}.emby-select-focusscale:focus{-webkit-transform:scale(1.1);transform:scale(1.1);z-index:1}.emby-select+.fieldDescription{margin-top:.25em}.selectContainer{margin-bottom:1.8em;position:relative}.selectContainer-inline{display:-webkit-inline-box;display:-webkit-inline-flex;display:inline-flex;margin-bottom:0;-webkit-box-align:center;-webkit-align-items:center;align-items:center}.selectLabel{display:block;margin-bottom:.25em}.selectContainer-inline>.selectLabel{margin-bottom:0;margin-right:.5em}.emby-select-withcolor{-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-border-radius:.2em;border-radius:.2em}.selectArrowContainer{position:absolute;right:.3em;top:.27em;color:inherit;pointer-events:none}.selectContainer-inline>.selectArrowContainer{top:initial;bottom:.24em;font-size:90%}.emby-select[disabled]+.selectArrowContainer{display:none}.selectArrow{margin-top:.35em;font-size:1.7em}.emby-select-iconbutton{-webkit-align-self:flex-end;align-self:flex-end} .emby-select{display:block;margin:0;margin-bottom:0!important;font-size:110%;font-family:inherit;font-weight:inherit;padding:.5em 1.9em .5em .5em;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0!important;-webkit-tap-highlight-color:transparent;width:100%}.emby-select[disabled]{background:0 0!important;border-color:transparent!important;color:inherit!important;-webkit-appearance:none;-moz-appearance:none;appearance:none}.selectContainer-inline>.emby-select{padding:.3em 1.9em .3em .5em;font-size:inherit}.selectContainer-inline>.emby-select[disabled]{padding:.4em 0}.emby-select::-moz-focus-inner{border:0}.emby-select-focusscale{-webkit-transition:-webkit-transform 180ms ease-out!important;-o-transition:transform 180ms ease-out!important;transition:transform 180ms ease-out!important;-webkit-transform-origin:center center;transform-origin:center center}.emby-select-focusscale:focus{-webkit-transform:scale(1.1);transform:scale(1.1);z-index:1}.emby-select+.fieldDescription{margin-top:.25em}.selectContainer{margin-bottom:1.8em;position:relative}.selectContainer-inline{display:-webkit-inline-box;display:-webkit-inline-flex;display:inline-flex;margin-bottom:0;-webkit-box-align:center;-webkit-align-items:center;align-items:center}.selectLabel{display:block;margin-bottom:.25em}.selectContainer-inline>.selectLabel{margin-bottom:0;margin-right:.5em;-webkit-flex-shrink:0;flex-shrink:0}.emby-select-withcolor{-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-border-radius:.2em;border-radius:.2em}.selectArrowContainer{position:absolute;right:.3em;top:.27em;color:inherit;pointer-events:none}.selectContainer-inline>.selectArrowContainer{top:initial;bottom:.24em;font-size:90%}.emby-select[disabled]+.selectArrowContainer{display:none}.selectArrow{margin-top:.35em;font-size:1.7em}.emby-select-iconbutton{-webkit-align-self:flex-end;align-self:flex-end}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -13,7 +13,6 @@
<i class="md-icon btnGuideViewSettingsIcon">&#xE5D3;</i> <i class="md-icon btnGuideViewSettingsIcon">&#xE5D3;</i>
</button> </button>
</div> </div>
<div class="guideSpacer"></div>
<div class="timeslotHeaders smoothScrollX guideScroller" style="scroll-behavior: auto;"></div> <div class="timeslotHeaders smoothScrollX guideScroller" style="scroll-behavior: auto;"></div>
</div> </div>
</div> </div>
@ -25,7 +24,6 @@
<div class="channelList"></div> <div class="channelList"></div>
</div> </div>
<div class="guideSpacer"></div>
<div class="programGrid smoothScrollX guideScroller flex-grow focuscontainer-right" style="scroll-behavior: auto;white-space: nowrap;"> <div class="programGrid smoothScrollX guideScroller flex-grow focuscontainer-right" style="scroll-behavior: auto;white-space: nowrap;">
</div> </div>
</div> </div>

View file

@ -1 +1 @@
define(["dom","layoutManager","browser","css!./headroom"],function(dom,layoutManager,browser){"use strict";function Debouncer(callback){this.callback=callback,this.ticking=!1}function Headroom(elems,options){options=Object.assign(Headroom.options,options||{}),this.lastKnownScrollY=0,this.elems=elems,this.scroller=options.scroller,this.debouncer=onScroll.bind(this),this.offset=options.offset,this.initialised=!1,this.initialClass=options.initialClass,this.unPinnedClass=options.unPinnedClass,this.pinnedClass=options.pinnedClass,this.state="clear"}function onScroll(){requestAnimationFrame(this.rafCallback||(this.rafCallback=this.update.bind(this)))}var requestAnimationFrame=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame;return Debouncer.prototype={constructor:Debouncer,update:function(){this.callback&&this.callback(),this.ticking=!1},handleEvent:function(){this.ticking||(requestAnimationFrame(this.rafCallback||(this.rafCallback=this.update.bind(this))),this.ticking=!0)}},Headroom.prototype={constructor:Headroom,init:function(){if(browser.supportsCssAnimation()){for(var i=0,length=this.elems.length;i<length;i++)this.elems[i].classList.add(this.initialClass);this.attachEvent()}return this},add:function(elem){browser.supportsCssAnimation()&&(elem.classList.add(this.initialClass),this.elems.push(elem))},remove:function(elem){elem.classList.remove(this.unPinnedClass),elem.classList.remove(this.initialClass),elem.classList.remove(this.pinnedClass);var i=this.elems.indexOf(elem);i!==-1&&this.elems.splice(i,1)},destroy:function(){this.initialised=!1;for(var i=0,length=this.elems.length;i<length;i++){var classList=this.elems[i].classList;classList.remove(this.unPinnedClass),classList.remove(this.initialClass),classList.remove(this.pinnedClass)}var scrollEventName=this.scroller.getScrollEventName?this.scroller.getScrollEventName():"scroll";dom.removeEventListener(this.scroller,scrollEventName,this.debouncer,{capture:!1,passive:!0})},attachEvent:function(){if(!this.initialised){this.lastKnownScrollY=this.getScrollY(),this.initialised=!0;var scrollEventName=this.scroller.getScrollEventName?this.scroller.getScrollEventName():"scroll";dom.addEventListener(this.scroller,scrollEventName,this.debouncer,{capture:!1,passive:!0}),this.update()}},clear:function(){if("clear"!==this.state){this.state="clear";for(var unpinnedClass=this.unPinnedClass,i=(this.pinnedClass,0),length=this.elems.length;i<length;i++){var classList=this.elems[i].classList;classList.remove(unpinnedClass)}}},pin:function(){if("pin"!==this.state){this.state="pin";for(var unpinnedClass=this.unPinnedClass,pinnedClass=this.pinnedClass,i=0,length=this.elems.length;i<length;i++){var classList=this.elems[i].classList;classList.remove(unpinnedClass),classList.add(pinnedClass)}}},unpin:function(){if("unpin"!==this.state){this.state="unpin";for(var unpinnedClass=this.unPinnedClass,i=(this.pinnedClass,0),length=this.elems.length;i<length;i++){var classList=this.elems[i].classList;classList.add(unpinnedClass)}}},getScrollY:function(){var scroller=this.scroller;if(scroller.getScrollPosition)return scroller.getScrollPosition();var pageYOffset=scroller.pageYOffset;if(void 0!==pageYOffset)return pageYOffset;var scrollTop=scroller.scrollTop;return void 0!==scrollTop?scrollTop:(document.documentElement||document.body).scrollTop},shouldUnpin:function(currentScrollY){var scrollingDown=currentScrollY>this.lastKnownScrollY,pastOffset=currentScrollY>=this.offset;return scrollingDown&&pastOffset},shouldPin:function(currentScrollY){var scrollingUp=currentScrollY<this.lastKnownScrollY,pastOffset=currentScrollY<=this.offset;return scrollingUp||pastOffset},update:function(){var currentScrollY=this.getScrollY(),minThreshold=layoutManager.tv?70:0,lastKnownScrollY=this.lastKnownScrollY,toleranceExceeded=Math.abs(currentScrollY-lastKnownScrollY)>=10;currentScrollY<=minThreshold?this.clear():this.shouldUnpin(currentScrollY)?this.unpin():toleranceExceeded&&this.shouldPin(currentScrollY)?currentScrollY&&layoutManager.tv?this.unpin():this.clear():layoutManager.tv&&this.clear(),this.lastKnownScrollY=currentScrollY}},Headroom.options={offset:0,scroller:window,initialClass:"headroom",unPinnedClass:"headroom--unpinned",pinnedClass:"headroom--pinned"},Headroom}); define(["dom","layoutManager","browser","css!./headroom"],function(dom,layoutManager,browser){"use strict";function Debouncer(callback){this.callback=callback,this.ticking=!1}function Headroom(elems,options){options=Object.assign(Headroom.options,options||{}),this.lastKnownScrollY=0,this.elems=elems,this.scroller=options.scroller,this.debouncer=onScroll.bind(this),this.offset=options.offset,this.initialised=!1,this.initialClass=options.initialClass,this.unPinnedClass=options.unPinnedClass,this.pinnedClass=options.pinnedClass,this.state="clear"}function onScroll(){requestAnimationFrame(this.rafCallback||(this.rafCallback=this.update.bind(this)))}var requestAnimationFrame=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame;return Debouncer.prototype={constructor:Debouncer,update:function(){this.callback&&this.callback(),this.ticking=!1},handleEvent:function(){this.ticking||(requestAnimationFrame(this.rafCallback||(this.rafCallback=this.update.bind(this))),this.ticking=!0)}},Headroom.prototype={constructor:Headroom,init:function(){if(browser.supportsCssAnimation()){for(var i=0,length=this.elems.length;i<length;i++)this.elems[i].classList.add(this.initialClass);this.attachEvent()}return this},add:function(elem){browser.supportsCssAnimation()&&(elem.classList.add(this.initialClass),this.elems.push(elem))},remove:function(elem){elem.classList.remove(this.unPinnedClass),elem.classList.remove(this.initialClass),elem.classList.remove(this.pinnedClass);var i=this.elems.indexOf(elem);i!==-1&&this.elems.splice(i,1)},destroy:function(){this.initialised=!1;for(var i=0,length=this.elems.length;i<length;i++){var classList=this.elems[i].classList;classList.remove(this.unPinnedClass),classList.remove(this.initialClass),classList.remove(this.pinnedClass)}var scrollEventName=this.scroller.getScrollEventName?this.scroller.getScrollEventName():"scroll";dom.removeEventListener(this.scroller,scrollEventName,this.debouncer,{capture:!1,passive:!0})},attachEvent:function(){if(!this.initialised){this.lastKnownScrollY=this.getScrollY(),this.initialised=!0;var scrollEventName=this.scroller.getScrollEventName?this.scroller.getScrollEventName():"scroll";dom.addEventListener(this.scroller,scrollEventName,this.debouncer,{capture:!1,passive:!0}),this.update()}},clear:function(){if("clear"!==this.state){this.state="clear";for(var unpinnedClass=this.unPinnedClass,i=(this.pinnedClass,0),length=this.elems.length;i<length;i++){var classList=this.elems[i].classList;classList.remove(unpinnedClass)}}},pin:function(){if("pin"!==this.state){this.state="pin";for(var unpinnedClass=this.unPinnedClass,pinnedClass=this.pinnedClass,i=0,length=this.elems.length;i<length;i++){var classList=this.elems[i].classList;classList.remove(unpinnedClass),classList.add(pinnedClass)}}},unpin:function(){if("unpin"!==this.state){this.state="unpin";for(var unpinnedClass=this.unPinnedClass,i=(this.pinnedClass,0),length=this.elems.length;i<length;i++){var classList=this.elems[i].classList;classList.add(unpinnedClass)}}},getScrollY:function(){var scroller=this.scroller;if(scroller.getScrollPosition)return scroller.getScrollPosition();var pageYOffset=scroller.pageYOffset;if(void 0!==pageYOffset)return pageYOffset;var scrollTop=scroller.scrollTop;return void 0!==scrollTop?scrollTop:(document.documentElement||document.body).scrollTop},shouldUnpin:function(currentScrollY){var scrollingDown=currentScrollY>this.lastKnownScrollY,pastOffset=currentScrollY>=this.offset;return scrollingDown&&pastOffset},shouldPin:function(currentScrollY){var scrollingUp=currentScrollY<this.lastKnownScrollY,pastOffset=currentScrollY<=this.offset;return scrollingUp||pastOffset},update:function(){var currentScrollY=this.getScrollY(),lastKnownScrollY=this.lastKnownScrollY,isTv=layoutManager.tv;if(isTv&&currentScrollY<=70)this.clear();else if(this.shouldUnpin(currentScrollY))this.unpin();else if(this.shouldPin(currentScrollY)){var toleranceExceeded=Math.abs(currentScrollY-lastKnownScrollY)>=10;currentScrollY&&isTv?this.unpin():toleranceExceeded&&this.clear()}else isTv&&this.clear();this.lastKnownScrollY=currentScrollY}},Headroom.options={offset:0,scroller:window,initialClass:"headroom",unPinnedClass:"headroom--unpinned",pinnedClass:"headroom--pinned"},Headroom});

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

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

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

@ -220,7 +220,7 @@
<h2 class="sectionTitle sectionTitle-cards"></h2> <h2 class="sectionTitle sectionTitle-cards"></h2>
<div is="emby-itemscontainer" class="itemsContainer vertical-wrap focuscontainer-x"></div> <div is="emby-itemscontainer" class="itemsContainer vertical-wrap focuscontainer-x"></div>
</div> </div>
<div id="castCollapsible" class="verticalSection detailVerticalSection hide"> <div id="castCollapsible" class="verticalSection verticalSection-extrabottompadding detailVerticalSection hide">
<h2 id="peopleHeader" class="sectionTitle sectionTitle-cards padded-left"> <h2 id="peopleHeader" class="sectionTitle sectionTitle-cards padded-left">
${HeaderCastCrew} ${HeaderCastCrew}
</h2> </h2>
@ -255,7 +255,7 @@
</h2> </h2>
<div id="musicVideosContent" is="emby-itemscontainer" class="itemsContainer vertical-wrap padded-left padded-right"></div> <div id="musicVideosContent" is="emby-itemscontainer" class="itemsContainer vertical-wrap padded-left padded-right"></div>
</div> </div>
<div id="similarCollapsible" class="verticalSection detailVerticalSection hide"> <div id="similarCollapsible" class="verticalSection verticalSection-extrabottompadding detailVerticalSection hide">
<h2 class="sectionTitle sectionTitle-cards padded-left"> <h2 class="sectionTitle sectionTitle-cards padded-left">
${HeaderMoreLikeThis} ${HeaderMoreLikeThis}
</h2> </h2>
@ -270,7 +270,7 @@
</div> </div>
</div> </div>
<div id="scenesCollapsible" class="verticalSection detailVerticalSection hide"> <div id="scenesCollapsible" class="verticalSection verticalSection-extrabottompadding hide">
<h2 class="sectionTitle sectionTitle-cards padded-left"> <h2 class="sectionTitle sectionTitle-cards padded-left">
${HeaderScenes} ${HeaderScenes}
</h2> </h2>

View file

@ -9,6 +9,7 @@
<div class="flex align-items-center" style="margin:1.25em 0;"> <div class="flex align-items-center" style="margin:1.25em 0;">
<h2 style="margin:0;">${HeaderTunerDevices}</h2> <h2 style="margin:0;">${HeaderTunerDevices}</h2>
<button is="emby-button" type="button" class="raised btnAddDevice submit raised-mini" style="margin-left:1em;" title="${ButtonAdd}"> <button is="emby-button" type="button" class="raised btnAddDevice submit raised-mini" style="margin-left:1em;" title="${ButtonAdd}">
<i class="md-icon">&#xE145;</i>
<span>${ButtonAdd}</span> <span>${ButtonAdd}</span>
</button> </button>
</div> </div>
@ -21,6 +22,7 @@
<div class="flex align-items-center" style="margin:1.25em 0;"> <div class="flex align-items-center" style="margin:1.25em 0;">
<h2 style="margin:0;">${HeaderGuideProviders}</h2> <h2 style="margin:0;">${HeaderGuideProviders}</h2>
<button is="emby-button" type="button" class="raised btnAddProvider submit raised-mini" style="margin-left:1em;" title="${ButtonAdd}"> <button is="emby-button" type="button" class="raised btnAddProvider submit raised-mini" style="margin-left:1em;" title="${ButtonAdd}">
<i class="md-icon">&#xE145;</i>
<span>${ButtonAdd}</span> <span>${ButtonAdd}</span>
</button> </button>
</div> </div>

View file

@ -15,12 +15,17 @@
<div class="inputContainer fldPath hide"> <div class="inputContainer fldPath hide">
<div style="display: flex; align-items: center;"> <div style="display: flex; align-items: center;">
<div style="flex-grow: 1;"> <div style="flex-grow: 1;">
<input is="emby-input" class="txtDevicePath" label="${LabelFileOrUrl}" required="required" autocomplete="off"/> <input is="emby-input" type="text" class="txtDevicePath" label="${LabelFileOrUrl}" required="required" autocomplete="off" />
</div> </div>
<button type="button" is="paper-icon-button-light" class="btnSelectPath hide emby-input-iconbutton"><i class="md-icon">search</i></button> <button type="button" is="paper-icon-button-light" class="btnSelectPath hide emby-input-iconbutton"><i class="md-icon">search</i></button>
</div> </div>
</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"> <div class="checkboxContainer checkboxContainer-withDescription fldFavorites hide">
<label> <label>
<input type="checkbox" is="emby-checkbox" class="chkFavorite" /> <input type="checkbox" is="emby-checkbox" class="chkFavorite" />
@ -44,7 +49,7 @@
</div> </div>
<p class="drmMessage hide">${DrmChannelsNotImported}</p> <p class="drmMessage hide">${DrmChannelsNotImported}</p>
<p class="otherOptionsMessage hide" style="margin:2em 0;">${ForAdditionalLiveTvOptions}</p> <p class="otherOptionsMessage hide" style="margin:2em 0;">${ForAdditionalLiveTvOptions}</p>
<br/> <br />
<div> <div>
<button is="emby-button" type="submit" class="raised button-submit block"> <button is="emby-button" type="submit" class="raised button-submit block">
<span>${ButtonSave}</span> <span>${ButtonSave}</span>

View file

@ -1853,5 +1853,7 @@
"CancelSeries": "Cancel series", "CancelSeries": "Cancel series",
"EnableDebugLoggingHelp": "Debug logging should only be enabled as needed for troubleshooting purposes. The increased file system access may prevent the server machine from being able to sleep in some environments.", "EnableDebugLoggingHelp": "Debug logging should only be enabled as needed for troubleshooting purposes. The increased file system access may prevent the server machine from being able to sleep in some environments.",
"SaveSubtitlesInOriginalMediaFolders": "Save subtitles into media folders", "SaveSubtitlesInOriginalMediaFolders": "Save subtitles into media folders",
"SaveSubtitlesInOriginalMediaFoldersHelp": "Saving subtitles into media folders will make them easier to locate and manage." "SaveSubtitlesInOriginalMediaFoldersHelp": "Saving subtitles into media folders will make them easier to locate and manage.",
"LabelSimultaneousConnectionLimit": "Simultaneous stream limit:",
"SimultaneousConnectionLimitHelp": "The maximum number of allowed simultaneous streams. Enter 0 for no limit."
} }