first commit

This commit is contained in:
2026-02-09 10:48:21 +01:00
commit 15f28c0dd6
848 changed files with 107188 additions and 0 deletions

View File

@@ -0,0 +1 @@
define(["exports","./../../modules/common/globalize.js","./../../modules/dialoghelper/dialoghelper.js","./../../modules/common/datetime.js","./../../modules/emby-elements/emby-button/paper-icon-button-light.js","./../../modules/emby-elements/emby-select/emby-select.js","./../../modules/emby-elements/emby-dialogclosebutton/emby-dialogclosebutton.js"],function(_exports,_globalize,_dialoghelper,_datetime,_paperIconButtonLight,_embySelect,_embyDialogclosebutton){function getDisplayTime(hours){var minutes=0,pct=hours%1;return pct&&(minutes=parseInt(60*pct)),_datetime.default.getDisplayTime(new Date(2e3,1,1,hours,minutes,0,0))}function submitSchedule(context,options){var updatedSchedule={DayOfWeek:context.querySelector(".selectDay").value,StartHour:context.querySelector(".selectStart").value,EndHour:context.querySelector(".selectEnd").value};parseFloat(updatedSchedule.StartHour)>=parseFloat(updatedSchedule.EndHour)?function(options){Emby.importModule("./modules/common/dialogs/alert.js").then(function(alert){return alert(options)})}(_globalize.default.translate("ErrorMessageStartHourGreaterThanEnd")):(context.submitted=!0,options.schedule=Object.assign(options.schedule,updatedSchedule),_dialoghelper.default.close(context))}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,require(["formDialogStyle"]);_exports.default={show:function(options){return new Promise(function(resolve,reject){require(["text!./components/accessschedule/accessschedule.template.html"]).then(function(responses){var responses=responses[0],dlg=_dialoghelper.default.createDialog({removeOnClose:!0,size:"small"}),html=(dlg.classList.add("formDialog"),"");html+=_globalize.default.translateDocument(responses),dlg.innerHTML=html,function(context){for(var html="",i=0;i<24;i++)html+='<option value="'+i+'">'+getDisplayTime(i)+"</option>";html+='<option value="24">'+getDisplayTime(0)+"</option>",context.querySelector(".selectStart").innerHTML=html,context.querySelector(".selectEnd").innerHTML=html}(dlg),responses=dlg,html=options.schedule,responses.querySelector(".selectDay").value=html.DayOfWeek||"Sunday",responses.querySelector(".selectStart").value=html.StartHour||0,responses.querySelector(".selectEnd").value=html.EndHour||0,_dialoghelper.default.open(dlg),dlg.addEventListener("close",function(){dlg.submitted?resolve(options.schedule):reject()}),dlg.querySelector("form").addEventListener("submit",function(e){return submitSchedule(dlg,options),e.preventDefault(),!1})})})}}});

View File

@@ -0,0 +1,36 @@
<div class="formDialogHeader">
<button type="button" is="emby-dialogclosebutton"></button>
<h3 class="formDialogHeaderTitle">
${HeaderAccessSchedule}
</h3>
</div>
<div class="formDialogContent scrollY">
<div class="dialogContentInner dialog-content-centered padded-left padded-right">
<form class="scheduleForm" style="margin:auto;">
<div class="selectContainer">
<select is="emby-select" class="selectDay" label="${LabelDay}">
<option value="Sunday">Sunday</option>
<option value="Monday">Monday</option>
<option value="Tuesday">Tuesday</option>
<option value="Wednesday">Wednesday</option>
<option value="Thursday">Thursday</option>
<option value="Friday">Friday</option>
<option value="Saturday">Saturday</option>
</select>
</div>
<div class="selectContainer">
<select is="emby-select" class="selectHour selectStart" label="${LabelStartTime}"></select>
</div>
<div class="selectContainer">
<select is="emby-select" class="selectHour selectEnd" label="${LabelEndTime}"></select>
</div>
<div class="formDialogFooter">
<button is="emby-button" type="submit" class="raised button-submit block formDialogFooterItem">
<span>${ButtonAdd}</span>
</button>
</div>
</form>
</div>
</div>

View File

@@ -0,0 +1 @@
define(["exports","./../modules/listview/listview.js","./../modules/common/input/api.js","./../modules/emby-apiclient/events.js","./../modules/emby-apiclient/connectionmanager.js","./../modules/emby-elements/emby-button/emby-button.js"],function(_exports,_listview,_api,_events,_connectionmanager,_embyButton){function getActivityListViewOptions(items){var options={playQueueIndicator:!1,moreButton:!1,action:"none",enableDefaultIcon:!0,overviewButton:!0,roundImage:!0,multiSelect:!1,contextMenu:!1,draggable:!1,draggableXActions:!1,fields:["Name","ShortOverview","Date"]};return _listview.default.setListOptions(items,options),{renderer:_listview.default,options:options,virtualScrollLayout:"vertical-list"}}function ActivityLog(options){var element=(this.options=options).element,options=(element.fetchData=function(){var limit=parseInt(this.getAttribute("data-activitylimit")||"7"),minDate=new Date,hasUserId=(minDate.setTime(minDate.getTime()-6048e5),"false"!==this.getAttribute("data-useractivity"));return ApiClient.getActivityLog({StartIndex:0,Limit:limit,MinDate:minDate.toISOString(),hasUserId:hasUserId,EnableTotalRecordCount:!1})}.bind(element),element.getListOptions=getActivityListViewOptions,element.parentContainer=element.closest(".activityContainer"),element.setAttribute("data-alwaysshowseeall","true"),_connectionmanager.default.getApiClient(options.serverId)),onUpdate=function(e,apiClient,data){var options=this.options;options&&options.serverId===apiClient.serverId()&&options.element.notifyRefreshNeeded()}.bind(this);this.updateFn=onUpdate,_events.default.on(_api.default,"ActivityLogEntry",onUpdate),options.startMessageListener("ActivityLogEntry","0,1500"),element.resume({refresh:!0})}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,ActivityLog.prototype.pause=function(){},ActivityLog.prototype.resume=function(options){},ActivityLog.prototype.destroy=function(){var options=this.options,options=(options&&_connectionmanager.default.getApiClient(options.serverId).stopMessageListener("ActivityLogEntry"),this.updateFn);options&&_events.default.off(_api.default,"ActivityLogEntry",options),this.items=null,this.options=null};_exports.default=ActivityLog});

View File

@@ -0,0 +1 @@
define(["exports","./../../modules/common/globalize.js","./../../modules/dialoghelper/dialoghelper.js","./../../modules/emby-elements/emby-toggle/emby-toggle.js","./../../modules/emby-elements/emby-button/emby-button.js","./../../modules/emby-elements/emby-button/paper-icon-button-light.js","./../../modules/emby-elements/emby-select/emby-select.js","./../../modules/emby-elements/emby-input/emby-input.js","./../../modules/emby-elements/emby-dialogclosebutton/emby-dialogclosebutton.js"],function(_exports,_globalize,_dialoghelper,_embyToggle,_embyButton,_paperIconButtonLight,_embySelect,_embyInput,_embyDialogclosebutton){function findImageOptions(imageOptions,type){return imageOptions.filter(function(i){return i.Type===type})[0]}function getImageConfig(options,availableOptions,imageType){return findImageOptions(options.ImageOptions||[],imageType)||findImageOptions(availableOptions.DefaultImageOptions||[],imageType)||{Type:imageType,MinWidth:0,Limit:"Primary"===imageType?1:0}}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0;_exports.default=function(){this.show=function(itemType,options,availableOptions){return new Promise(function(resolve,reject){var xhr=new XMLHttpRequest;xhr.open("GET","components/imageoptionseditor/imageoptionseditor.template.html",!0),xhr.onload=function(e){var template=this.response,dlg=_dialoghelper.default.createDialog({size:"medium-tall",removeOnClose:!0,scrollY:!1});dlg.classList.add("formDialog"),dlg.innerHTML=_globalize.default.translateDocument(template),dlg.addEventListener("close",function(){!function(context,options){options.ImageOptions=Array.prototype.map.call(context.querySelectorAll(".imageType:not(.hide)"),function(c){return{Type:c.getAttribute("data-imagetype"),Limit:c.checked?1:0,MinWidth:0}}),options.ImageOptions.push({Type:"Backdrop",Limit:context.querySelector(".selectMaxBackdrops").value,MinWidth:context.querySelector(".selectMinBackdropDownloadWidth").value})}(dlg,options)}),function(context,options,availableOptions){var supportedImageTypes=availableOptions.SupportedImageTypes||[],elem=(elem=context.querySelector(".backdropFields"),-1!==supportedImageTypes.indexOf("Backdrop")?(elem.classList.remove("hide"),elem.querySelector("select").setAttribute("required","required")):(elem.classList.add("hide"),elem.querySelector("select").setAttribute("required",""),elem.querySelector("select").removeAttribute("required")),Array.prototype.forEach.call(context.querySelectorAll(".imageType"),function(i){var imageType=i.getAttribute("data-imagetype"),container=i.closest("LABEL");-1===supportedImageTypes.indexOf(imageType)?container.classList.add("hide"):container.classList.remove("hide"),getImageConfig(options,availableOptions,imageType).Limit?i.checked=!0:i.checked=!1}),getImageConfig(options,availableOptions,"Backdrop"));context.querySelector(".selectMaxBackdrops").value=elem.Limit,context.querySelector(".selectMinBackdropDownloadWidth").value=elem.MinWidth}(dlg,options,availableOptions),_dialoghelper.default.open(dlg).then(resolve,resolve)},xhr.send()})}}});

View File

@@ -0,0 +1,102 @@
<div class="formDialogHeader">
<button type="button" is="emby-dialogclosebutton" closetype="done"></button>
<h3 class="formDialogHeaderTitle">
${HeaderImageOptions}
</h3>
</div>
<div is="emby-scroller" data-horizontal="false" data-forcescrollbar="true" data-focusscroll="true" class="formDialogContent">
<div class="scrollSlider">
<form class="dialogContentInner dialog-content-centered padded-left padded-right fieldsets" style="padding-top:0;">
<fieldset>
<legend>${HeaderFetchImages}</legend>
<div class="imageSelections fieldset-fields fieldset-fields-listitems">
<label class="toggleContainer toggleContainer-listItem fieldset-field">
<input type="checkbox" is="emby-toggle" class="imageType" data-imagetype="Primary" />
<span>${Primary}</span>
</label>
<label class="toggleContainer toggleContainer-listItem fieldset-field">
<input type="checkbox" is="emby-toggle" class="imageType" data-imagetype="Art" />
<span>${Art}</span>
</label>
<label class="toggleContainer toggleContainer-listItem fieldset-field">
<input type="checkbox" is="emby-toggle" class="imageType" data-imagetype="Banner" />
<span>${Banner}</span>
</label>
<label class="toggleContainer toggleContainer-listItem fieldset-field">
<input type="checkbox" is="emby-toggle" class="imageType" data-imagetype="Box" />
<span>${Box}</span>
</label>
<label class="toggleContainer toggleContainer-listItem fieldset-field">
<input type="checkbox" is="emby-toggle" class="imageType" data-imagetype="BoxRear" />
<span>${BoxRear}</span>
</label>
<label class="toggleContainer toggleContainer-listItem fieldset-field">
<input type="checkbox" is="emby-toggle" class="imageType" data-imagetype="Disc" />
<span>${Disc}</span>
</label>
<label class="toggleContainer toggleContainer-listItem fieldset-field">
<input type="checkbox" is="emby-toggle" class="imageType" data-imagetype="Logo" />
<span>${Logo}</span>
</label>
<label class="toggleContainer toggleContainer-listItem fieldset-field">
<input type="checkbox" is="emby-toggle" class="imageType" data-imagetype="Menu" />
<span>${Menu}</span>
</label>
<label class="toggleContainer toggleContainer-listItem fieldset-field">
<input type="checkbox" is="emby-toggle" class="imageType" data-imagetype="Thumb" />
<span>${Thumb}</span>
</label>
</div>
</fieldset>
<fieldset class="backdropFields">
<legend class="hide">${HeaderImageOptions}</legend>
<div class="fieldset-fields">
<div class="selectContainer fieldset-field">
<select is="emby-select" class="selectMaxBackdrops" required="required" label="${LabelMaxBackdropsPerItem}">
<option value="0">0</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>
<option value="15">15</option>
<option value="16">16</option>
<option value="17">17</option>
<option value="18">18</option>
<option value="19">19</option>
<option value="20">20</option>
</select>
</div>
<div class="selectContainer fieldset-field">
<select is="emby-select" class="selectMinBackdropDownloadWidth" required="required" label="${LabelMinBackdropDownloadWidth}">
<option value="0">0</option>
<option value="480">480</option>
<option value="720">720</option>
<option value="1280">1280</option>
<option value="1920">1920</option>
</select>
</div>
</div>
</fieldset>
</form>
</div>
</div>

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,460 @@
<fieldset class="additionalFolderOptionsSection hide">
<div class="fieldset-fields">
<div class="selectContainer fieldset-field fldselectMusicFolderStructure">
<select is="emby-select" class="selectMusicFolderStructure" label="${LabelMusicFolderStructure}">
<option value="">${OtherOrUnstructured}</option>
<option class="selectMusicFolderStructure_artist_album_track" value="artist_album_track">${PerfectArtistAlbumTrack}</option>
<option class="selectMusicFolderStructure_album_track" value="album_track">${PerfectAlbumTrack}</option>
</select>
<div class="fieldDescription">${LabelMusicFolderStructureHelp}</div>
</div>
</div>
</fieldset>
<fieldset>
<legend>${HeaderLibrarySettings}</legend>
<div class="fieldset-fields">
<div class="selectContainer fldMetadataLanguage hide fieldset-field">
<select is="emby-select" class="selectLanguage" label="${LabelMetadataDownloadLanguage}"></select>
</div>
<div class="selectContainer fldMetadataCountry hide fieldset-field">
<select is="emby-select" class="selectCountry" label="${LabelCertificationCountry}"></select>
<div class="fieldDescription">${CertificationCountryHelp}</div>
</div>
<div class="selectContainer fldImageLanguage hide fieldset-field">
<select is="emby-select" class="selectImageLanguage" label="${LabelImageDownloadLanguage}"></select>
</div>
<div class="toggleContainer chkEnablePhotosContainer fieldset-field">
<label>
<input type="checkbox" is="emby-toggle" class="chkEnablePhotos" checked />
<span>${EnablePhotos}</span>
</label>
<div class="fieldDescription toggleFieldDescription">${EnablePhotosHelp}</div>
</div>
<div class="toggleContainer fldImportPlaylists fieldset-field">
<label>
<input type="checkbox" is="emby-toggle" class="chkImportPlaylists" checked />
<span>${ImportPlaylists}</span>
</label>
<div class="fieldDescription toggleFieldDescription">${ImportPlaylistsHelp}</div>
</div>
<div class="toggleContainer chkEnableEmbeddedTitlesContainer hide advanced fieldset-field">
<label>
<input is="emby-toggle" type="checkbox" class="chkEnableEmbeddedTitles" />
<span>${PreferEmbeddedTitlesOverFileNames}</span>
</label>
<div class="fieldDescription toggleFieldDescription">${PreferEmbeddedTitlesOverFileNamesHelp}</div>
</div>
<div class="toggleContainer fldRealtimeMonitor hide fieldset-field">
<label>
<input type="checkbox" is="emby-toggle" class="chkEnableRealtimeMonitor" checked />
<span>${LabelEnableRealtimeMonitor}</span>
</label>
<div class="fieldDescription toggleFieldDescription">${LabelEnableRealtimeMonitorHelp}</div>
</div>
<div class="toggleContainer fldExcludeFromSearch hide fieldset-field">
<label>
<input type="checkbox" is="emby-toggle" class="chkExcludeFromSearch" />
<span>${ExcludeFromGlobalSearch}</span>
</label>
</div>
<div class="toggleContainer fieldset-field fldMergeFolders hide">
<label>
<input type="checkbox" is="emby-toggle" class="chkMergeFoldersInFolderView" />
<span>${MergeTopFoldersInFolderView}</span>
</label>
<div class="fieldDescription toggleFieldDescription">${MergeTopFoldersInFolderViewHelp}</div>
</div>
<div class="selectContainer fldFolderScanMode hide fieldset-field">
<select is="emby-select" class="selectFolderScanMode" label="${LabelFolderScanningMode}" data-menu="custom">
<option value="">${Default}</option>
<option value="legacy" data-description="${LegacyFolderScanningModeHelp}">${Legacy}</option>
</select>
<div class="fieldDescription">${FolderScanningModeHelp}</div>
</div>
<div class="toggleContainer hide fieldset-field">
<label>
<input type="checkbox" is="emby-toggle" class="chkEnableAudioResume" />
<span>${LabelEnableRealtimeMonitor}</span>
</label>
</div>
</div>
</fieldset>
<fieldset class="ignoreSection hide">
<legend>${HeaderIgnoreFiles}</legend>
<div class="fieldset-fields">
<div class="inputContainer fldIgnoreSample hide fieldset-field">
<div class="flex align-items-center">
<div class="flex-grow">
<input is="emby-input" type="number" class="txtIgnoreSampleFiles flex-grow" name="txtIgnoreSampleFiles" inputmode="numeric" min="0" value="300" label="${LabelIgnoreSampleFiles}" />
</div>
<div class="align-self-flex-end" style="margin-inline-start:.35em;margin-bottom: .25em;">MB</div>
</div>
</div>
<div class="toggleContainer fldEnablePlexIgnore hide fieldset-field">
<label>
<input type="checkbox" is="emby-toggle" class="chkEnablePlexIgnore" checked />
<span>${EnablePlexIgnoreAlias}</span>
</label>
<div class="fieldDescription toggleFieldDescription">
<a is="emby-linkbutton" class="button-link" href="https://emby.media/support/articles/Excluding-Files-Folders.html" target="_blank">${LearnMore}</a>
</div>
</div>
</div>
</fieldset>
<fieldset class="groupingSection hide">
<legend>${HeaderAutomaticGrouping}</legend>
<div class="fieldset-fields">
<div class="toggleContainer chkAutomaticallyGroupSeriesContainer hide fieldset-field">
<label>
<input type="checkbox" is="emby-toggle" class="chkAutomaticallyGroupSeries" checked />
<span>${OptionAutomaticallyGroupSeries}</span>
</label>
<div class="fieldDescription toggleFieldDescription">${OptionAutomaticallyGroupSeriesHelp}</div>
</div>
<div class="toggleContainer hide fieldset-field fldMultiPart">
<label>
<input type="checkbox" is="emby-toggle" class="chkEnableMultiPart" checked />
<span>${LabelEnableMultiPartItems}</span>
</label>
<div class="fieldDescription toggleFieldDescription">${EnableMultiPartItemsHelp}</div>
<div class="fieldDescription toggleFieldDescription fldMultiPartTVHelp hide">${EnableMultiPartItemsTVHelp}</div>
<div class="fieldDescription toggleFieldDescription">
<a is="emby-linkbutton" class="button-link" href="https://emby.media/support/articles/Movie-Naming.html#split-video-files-file-stacking" target="_blank">${LearnMore}</a>
</div>
</div>
<div class="selectContainer fldMultiVersion hide fieldset-field">
<select is="emby-select" class="selectMultiVersionGrouping" label="${LabelMultiVersionItemsDetection}">
<option value="both" class="hide" selected>${MultiVersionItemsDetectionBoth}</option>
<option value="files">${MultiVersionItemsDetectionFiles}</option>
<option value="metadata" class="hide">${MultiVersionItemsDetectionMetadata}</option>
<option value="none">${None}</option>
</select>
<div class="fieldDescription toggleFieldDescription">${MultiVersionItemsDetectionHelp}</div>
<div class="fieldDescription toggleFieldDescription hide MultiVersionMoviesDetectionHelp">${MultiVersionMoviesDetectionHelp}</div>
<div class="fieldDescription">
<a is="emby-linkbutton" class="button-link" href="https://emby.media/support/articles/Movie-Naming.html#multi-version-movies" target="_blank">${LearnMore}</a>
</div>
</div>
</div>
</fieldset>
<fieldset class="metadataReaders hide">
<legend>${HeaderMetadataReaders}</legend>
<p class="legendDescription">${LabelMetadataReadersHelp}</p>
<div class="fieldset-fields fieldset-fields-fieldmargins itemsContainer metadataReaderItemsContainer" is="emby-itemscontainer">
</div>
</fieldset>
<div class="metadataFetchers hide fieldsets">
</div>
<fieldset class="importCollectionsSection hide">
<legend>${Collections}</legend>
<div class="fieldset-fields">
<div class="toggleContainer fldImportCollections hide fieldset-field">
<label>
<input type="checkbox" is="emby-toggle" class="chkImportCollections" />
<span>${LabelImportCollections}</span>
</label>
<div class="fieldDescription toggleFieldDescription">${LabelImportCollectionsHelp}</div>
</div>
<div class="selectContainer fldMinCollectionSize hide fieldset-field">
<select is="emby-select" class="selectMinCollectionSize" label="${LabelMinCollectionSize}">
<option value="1">1</option>
<option value="2" selected>2</option>
<option value="3">3</option>
<option value="4">4</option>
</select>
<div class="fieldDescription">${MinCollectionSizeHelp}</div>
</div>
</div>
</fieldset>
<fieldset>
<div class="fieldset-fields">
<div class="toggleContainer fldAdult hide fieldset-field">
<label>
<input type="checkbox" is="emby-toggle" class="chkAdult" />
<span>${LabelAllowAdultMetadata}</span>
</label>
<div class="fieldDescription toggleFieldDescription">${LabelAllowAdultMetadataHelp}</div>
</div>
<div class="selectContainer fldAutoRefreshInterval hide fieldset-field">
<select is="emby-select" class="selectAutoRefreshInterval" label="${LabelAutomaticallyRefreshInternetMetadataEvery}"></select>
<div class="fieldDescription">${MessageEnablingOptionLongerScans}</div>
</div>
<div class="selectContainer fldPlaceholderMetadataRefreshInterval hide fieldset-field">
<select is="emby-select" class="selectPlaceholderMetadataRefreshInterval" label="${LabelPlaceholderMetadataRefreshInternetMetadataEvery}"></select>
<div class="fieldDescription">${MessageEnablingOptionLongerScans}</div>
</div>
</div>
</fieldset>
<fieldset class="metadataSavers hide">
<legend>${HeaderMetadataSavers}</legend>
<div class="fieldset-fields fieldset-fields-fieldmargins metadataSaversList">
</div>
<div class="fieldset-fields-fieldDescription fieldDescription">${LabelMetadataSaversHelp}</div>
</fieldset>
<div class="imageFetchers hide fieldsets">
</div>
<fieldset>
<div class="fieldset-fields">
<div class="toggleContainer chkSaveLocalContainer hide fieldset-field">
<label>
<input is="emby-toggle" type="checkbox" class="chkSaveLocal" />
<span>${LabelSaveLocalMetadata}</span>
</label>
<div class="fieldDescription toggleFieldDescription">${LabelSaveLocalMetadataHelp}</div>
</div>
<div class="toggleContainer fldCacheImages hide fieldset-field">
<label>
<input is="emby-toggle" type="checkbox" class="chkCacheImages" />
<span>${CacheImagesInServerData}</span>
</label>
<div class="fieldDescription toggleFieldDescription">${CacheImagesInServerDataHelp}</div>
</div>
<div class="toggleContainer fldSaveMetadataHidden hide advanced fieldset-field">
<label>
<input type="checkbox" is="emby-toggle" class="chkSaveMetadataHidden" />
<span>${OptionSaveMetadataAsHidden}</span>
</label>
<div class="fieldDescription toggleFieldDescription">${OptionSaveMetadataAsHiddenHelp}</div>
</div>
<div class="toggleContainer hide chkDownloadImagesInAdvanceContainer advanced fieldset-field">
<label>
<input is="emby-toggle" type="checkbox" class="chkDownloadImagesInAdvance" />
<span>${OptionDownloadImagesInAdvance}</span>
</label>
<div class="fieldDescription toggleFieldDescription">${OptionDownloadImagesInAdvanceHelp}</div>
</div>
</div>
</fieldset>
<fieldset class="chaptersSection hide">
<legend>${Chapters}</legend>
<div class="fieldset-fields">
<div class="toggleContainer fldGenerateChapters hide fieldset-field">
<label>
<input type="checkbox" is="emby-toggle" class="chkGenerateChapters" checked />
<span>${GenerateChaptersForVideos}</span>
</label>
</div>
<div class="selectContainer fldChapterInterval hide fieldset-field">
<label>
<select is="emby-select" class="selectChapterInterval" label="${GeneratedChapterInterval}"></select>
</label>
</div>
</div>
</fieldset>
<fieldset class="thumbnailSettingsSection hide">
<legend>${HeaderVideoPreviewThumbnails}</legend>
<div class="fieldset-fields">
<div class="selectContainer fieldset-field">
<select is="emby-select" class="selectThumbnailImages" label="${LabelGenerateVideoPreviewThumbnails}">
<option value="">${Never}</option>
<option value="task">${AsAScheduledTask}</option>
<option value="scanandtask">${AsAScheduledTaskAndMediaAdded}</option>
</select>
<div class="fieldDescription">${GenerateVideoPreviewThumbnailsHelp}</div>
</div>
<div class="selectContainer fldThumbnailInterval hide fieldset-field">
<label>
<select is="emby-select" class="selectThumbnailInterval" label="${LabelThumbnailImagesInterval}"></select>
</label>
<div class="fieldDescription">${ThumbnailImagesIntervalHelp}</div>
</div>
<div class="toggleContainer fldSaveThumbnailSetsLocally hide fieldset-field">
<label>
<input type="checkbox" is="emby-toggle" class="chkLocalThumbnailSets" />
<span>${SaveThumbnailImagesIntoMediaFolders}</span>
</label>
</div>
</div>
</fieldset>
<fieldset class="introDetectionSection hide">
<legend>${Markers}</legend>
<div class="fieldset-fields">
<div class="selectContainer fieldset-field">
<select is="emby-select" class="selectIntroDetection" label="${LabelGenerateIntroVideoMarkers}">
<option value="">${Never}</option>
<option value="task">${AsAScheduledTask}</option>
<option value="scanandtask">${AsAScheduledTaskAndMediaAdded}</option>
</select>
<div class="fieldDescription">${GenerateIntroVideoMarkersHelp}</div>
</div>
</div>
</fieldset>
<div class="subtitleDownloadSettings hide fieldsets">
<fieldset>
<legend>
${HeaderSubtitleDownloaders}
</legend>
<p class="legendDescription">${SubtitleDownloadersHelp}</p>
<div class="itemsContainer subtitleFetchersItemsContainer fieldset-fields fieldset-fields-fieldmargins" is="emby-itemscontainer">
</div>
</fieldset>
<fieldset>
<legend>${HeaderAutomaticSubtitleDownloads}</legend>
<div class="fieldset-fields">
<div class="selectContainer fieldset-field">
<label>
<select is="emby-select" class="selectSubtitleLanguages" label="${HeaderDownloadLanguages}" data-autoallany="false" data-empty-is-all="false" multiple></select>
</label>
</div>
<div class="toggleContainer fieldset-field">
<label>
<input is="emby-toggle" type="checkbox" class="chkRequireHashMatch" checked />
<span>${RequireHashMatch}</span>
</label>
<div class="fieldDescription toggleFieldDescription">${RequireHashMatchHelp}</div>
</div>
<div class="toggleContainer fieldset-field">
<label>
<input is="emby-toggle" type="checkbox" class="chkForcedSubtitlesOnly" checked />
<span>${SearchForForcedSubtitlesOnly}</span>
</label>
<div class="fieldDescription toggleFieldDescription">${SearchForForcedSubtitlesOnlyHelp}</div>
</div>
<div class="selectContainer fldSubtitleDownloadMaxAge fieldset-field">
<label>
<select is="emby-select" class="selectSubtitleDownloadMaxAge" label="${LabelSubtitleDownloadMaxAge}"></select>
</label>
<div class="fieldDescription">${SubtitleDownloadMaxAgeHelp}</div>
</div>
<div class="toggleContainer fieldset-field">
<label>
<input is="emby-toggle" type="checkbox" class="chkSkipIfAudioTrackPresent" />
<span>${LabelSkipIfAudioTrackPresent}</span>
</label>
<div class="fieldDescription toggleFieldDescription">${LabelSkipIfAudioTrackPresentHelp}</div>
</div>
<div class="toggleContainer fieldset-field">
<label>
<input is="emby-toggle" type="checkbox" class="chkSkipIfGraphicalSubsPresent" />
<span>${LabelSkipIfGraphicalSubsPresent}</span>
</label>
<div class="fieldDescription toggleFieldDescription">${LabelSkipIfGraphicalSubsPresentHelp}</div>
</div>
<div class="toggleContainer fieldset-field">
<label>
<input type="checkbox" is="emby-toggle" class="chkSaveSubtitlesLocally" checked />
<span>${SaveSubtitlesIntoMediaFolders}</span>
</label>
<div class="fieldDescription toggleFieldDescription">${SaveSubtitlesIntoMediaFoldersHelp}</div>
</div>
</div>
</fieldset>
</div>
<div class="lyricsDownloadSettings hide fieldsets">
<fieldset>
<legend>
${HeaderSubtitleDownloaders}
</legend>
<p class="legendDescription">${SubtitleDownloadersHelp}</p>
<div class="itemsContainer lyricsFetchersItemsContainer fieldset-fields fieldset-fields-fieldmargins" is="emby-itemscontainer">
</div>
</fieldset>
<fieldset>
<legend>${HeaderAutomaticSubtitleDownloads}</legend>
<div class="fieldset-fields">
<div class="selectContainer fieldset-field">
<label>
<select is="emby-select" class="selectLyricsLanguages" label="${HeaderDownloadLanguages}" data-autoallany="false" data-empty-is-all="false" multiple></select>
</label>
</div>
<div class="selectContainer fldLyricsDownloadMaxAge fieldset-field">
<label>
<select is="emby-select" class="selectLyricsDownloadMaxAge" label="${LabelLyricsDownloadMaxAge}"></select>
</label>
<div class="fieldDescription">${LyricsDownloadMaxAgeHelp}</div>
</div>
<div class="toggleContainer fieldset-field">
<label>
<input type="checkbox" is="emby-toggle" class="chkSaveLyricsLocally" checked />
<span>${SaveLyricsIntoMediaFolders}</span>
</label>
<div class="fieldDescription toggleFieldDescription">${SaveLyricsIntoMediaFoldersHelp}</div>
</div>
</div>
</fieldset>
</div>
<fieldset class="playbackSettings hide">
<legend>${Playback}</legend>
<div class="fieldset-fields">
<div class="inputContainer fieldset-field">
<input is="emby-input" type="number" class="txtMinResumePct" name="txtMinResumePct" inputmode="numeric" required min="0" max="100" label="${LabelMinResumePercentage}" value="3" />
<div class="fieldDescription">
${LabelMinResumePercentageHelp}
</div>
</div>
<div class="inputContainer fieldset-field">
<input is="emby-input" type="number" class="txtMaxResumePct" name="txtMaxResumePct" inputmode="numeric" required min="1" max="100" label="${LabelMaxResumePercentage}" value="90" />
<div class="fieldDescription">
${LabelMaxResumePercentageHelp}
</div>
</div>
<div class="inputContainer fieldset-field">
<input is="emby-input" type="number" class="txtMinResumeDuration" name="txtMinResumeDuration" inputmode="numeric" required min="0" label="${LabelMinResumeDuration}" value="120" />
<div class="fieldDescription">
${LabelMinResumeDurationHelp}
</div>
</div>
</div>
</fieldset>

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,47 @@
<div class="formDialogHeader">
<button type="button" is="emby-dialogclosebutton"></button>
<h3 class="formDialogHeaderTitle">
${HeaderNewLibrary}
</h3>
</div>
<div is="emby-scroller" data-horizontal="false" data-forcescrollbar="true" data-focusscroll="true" class="formDialogContent">
<div class="scrollSlider dialogContentInner dialog-content-centered padded-left padded-right">
<form style="margin:auto;" class="fieldsets">
<fieldset>
<div class="fieldset-fields">
<div class="fldCollectionType selectContainer fieldset-field">
<select is="emby-select" class="selectCollectionType" required="required" label="${LabelContentType}"></select>
<div class="collectionTypeFieldDescription fieldDescription">
</div>
</div>
<div class="inputContainer fieldset-field">
<input is="emby-input" type="text" class="txtValue" required="required" label="${LabelDisplayName}" />
</div>
</div>
</fieldset>
<fieldset class="folders">
<legend class="legendWithContent">
<div class="legendText">${Folders}</div>
<div class="legendActions">
<button is="emby-button" type="button" class="raised raised-mini btnAddFolder submit">
<i class="md-icon button-icon button-icon button-icon-left">&#xe145;</i>
<span>${Add}</span>
</button>
</div>
</legend>
<div class="folderList sectionContent itemsContainer vertical-list fieldset-fields fieldset-fields-fieldmargins" style="margin-bottom:1em;" is="emby-itemscontainer"></div>
</fieldset>
<div class="libraryOptions hide"></div>
<div class="formDialogFooter">
<button is="emby-button" type="submit" class="raised button-submit block formDialogFooterItem">
<span>${ButtonOk}</span>
</button>
</div>
</form>
</div>
</div>

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,28 @@
<div class="formDialogHeader">
<button type="button" is="emby-dialogclosebutton" closetype="done"></button>
<h3 class="formDialogHeaderTitle"></h3>
</div>
<div is="emby-scroller" data-horizontal="false" data-forcescrollbar="true" data-focusscroll="true" class="formDialogContent">
<div class="scrollSlider dialogContentInner dialog-content-centered padded-left padded-right fieldsets">
<div class="infoBanner warningBanner fieldsets-item">
${ChangingMetadataImageSettingsNewContent}
</div>
<fieldset class="folders">
<legend class="legendWithContent">
<div class="legendText">${Folders}</div>
<div class="legendActions">
<button is="emby-button" type="button" class="raised raised-mini btnAddFolder submit">
<i class="md-icon button-icon button-icon button-icon-left">&#xe145;</i>
<span>${Add}</span>
</button>
</div>
</legend>
<div class="folderList sectionContent itemsContainer vertical-list fieldset-fields fieldset-fields-fieldmargins" style="margin-bottom:1em;" is="emby-itemscontainer"></div>
</fieldset>
<div class="libraryOptions"></div>
</div>
</div>

1
components/taskbutton.js Normal file
View File

@@ -0,0 +1 @@
define(["exports","./../modules/emby-apiclient/connectionmanager.js","./../modules/common/globalize.js","./../modules/emby-apiclient/events.js","./../modules/common/input/api.js","./../modules/common/methodtimer.js","./../modules/emby-elements/emby-button/emby-button.js","./../modules/emby-elements/emby-progressbar/emby-progressbar.js"],function(_exports,_connectionmanager,_globalize,_events,_api,_methodtimer,_embyButton,_embyProgressbar){function updateTasks(instance,tasks){var wasRunning,options=instance.options,instance=options.button,tasks=tasks.filter(function(t){return t.Key===options.taskKey})[0];options.panel&&(tasks?options.panel.classList.remove("hide"):options.panel.classList.add("hide")),tasks&&("Idle"===tasks.State?(wasRunning=instance.hasAttribute("disabled"),instance.removeAttribute("disabled"),wasRunning&&options.onStatusChange&&options.onStatusChange()):instance.setAttribute("disabled","disabled"),instance.setAttribute("data-taskid",tasks.Id),wasRunning=(tasks.CurrentProgressPercentage||0).toFixed(1),options.progressElem&&(options.progressElem.innerHTML='<div class="itemProgressBarForeground itemProgressBarForegroundRound" style="width:'+wasRunning+'%;"></div>',"Running"===tasks.State?options.progressElem.classList.remove("hide"):options.progressElem.classList.add("hide")),options.lastResultElem)&&("Failed"===(instance=tasks.LastExecutionResult?tasks.LastExecutionResult.Status:"")?options.lastResultElem.html('<span style="color:#FF0000;">('+_globalize.default.translate("Failed")+")</span>"):"Cancelled"===instance?options.lastResultElem.html('<span style="color:#0026FF;">('+_globalize.default.translate("Cancelled")+")</span>"):"Aborted"===instance?options.lastResultElem.html('<span style="color:#FF0000;">'+_globalize.default.translate("LabelAbortedByServerShutdown")+"</span>"):options.lastResultElem.html(instance))}function pollTasks(instance){_connectionmanager.default.getApiClient(instance.options.serverId).getScheduledTasks({IsEnabled:!0}).then(function(result){updateTasks(instance,result)})}function onButtonClick(e){!function(instance,taskId){_connectionmanager.default.getApiClient(instance.options.serverId).startScheduledTask(taskId).then(function(){return pollTasks(instance)})}(this,e.target.closest("button").getAttribute("data-taskid"))}function stopInterval(instance){var interval=instance.pollInterval;interval&&interval.destroy(),instance.pollInterval=null}function TaskButton(options){var instance=this||new TaskButton(options);(instance.options=options).serverId||(options.serverId=_connectionmanager.default.currentApiClient().serverId()),options.panel&&options.panel.classList.add("hide"),instance.paused=!0,instance.boundOnButtonClick=onButtonClick.bind(instance),instance.boundonScheduledTasksUpdate=function(e,apiClient,info){apiClient.serverId()===this.options.serverId&&updateTasks(this,info)}.bind(instance),instance.boundonPollIntervalFired=function(){_connectionmanager.default.getApiClient(this.options.serverId).isMessageChannelOpen()||pollTasks(this)}.bind(instance),"on"===options.mode?instance.resume({}):"off"===options.mode&&instance.pause()}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,TaskButton.prototype.resume=function(options){var instance,apiClient;this.paused&&(this.paused=!1,this.options.button.addEventListener("click",this.boundOnButtonClick),pollTasks(this),instance=this,apiClient=_connectionmanager.default.getApiClient(instance.options.serverId),stopInterval(instance),apiClient.startMessageListener("ScheduledTasksInfo","1000,1000"),instance.pollInterval=new _methodtimer.default({onInterval:instance.boundonPollIntervalFired,timeoutMs:1e4,type:"interval"}),_events.default.on(_api.default,"ScheduledTasksInfo",this.boundonScheduledTasksUpdate))},TaskButton.prototype.pause=function(){var instance;this.paused=!0,this.boundOnButtonClick&&this.options.button.removeEventListener("click",this.boundOnButtonClick),this.boundonScheduledTasksUpdate&&_events.default.off(_api.default,"ScheduledTasksInfo",this.boundonScheduledTasksUpdate),instance=this,_connectionmanager.default.getApiClient(instance.options.serverId).stopMessageListener("ScheduledTasksInfo"),stopInterval(instance)},TaskButton.prototype.destroy=function(){this.pause(),this.options=null,this.boundOnButtonClick=null,this.boundonScheduledTasksUpdate=null,this.boundonPollIntervalFired=null};_exports.default=TaskButton});

File diff suppressed because one or more lines are too long