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/tabbedview/itemstab.js","./../../modules/emby-elements/emby-button/emby-button.js","./../../modules/emby-elements/emby-scroller/emby-scroller.js","./../../modules/layoutmanager.js","./syncjobcontroller.js","./syncjobitemcontroller.js"],function(_exports,_itemstab,_embyButton,_embyScroller,_layoutmanager,_syncjobcontroller,_syncjobitemcontroller){function ActivityTab(view,params){this.supportsViewSettings=!1,this.enableAlphaNumericShortcuts=!1,_itemstab.default.apply(this,arguments)}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,Object.assign(ActivityTab.prototype,_itemstab.default.prototype),ActivityTab.prototype.onTemplateLoaded=function(){_itemstab.default.prototype.onTemplateLoaded.apply(this,arguments),this.itemsContainer.setAttribute("data-monitor","SyncJobs")},ActivityTab.prototype.onResume=function(options){_itemstab.default.prototype.onResume.apply(this,arguments)},ActivityTab.prototype.loadTemplate=function(){return this.loadItemsTemplate()},ActivityTab.prototype.getItems=function(query){var options={},apiClient=this.getApiClient();return this.options.userId&&(options.UserId=this.options.userId),"download"===this.options.mode&&this.options.localDownload?options.TargetId=apiClient.deviceId():"convert"===this.options.mode?options.IncludeProviders="ConvertSyncProvider":options.ExcludeProviders="ConvertSyncProvider",options.mode=this.options.mode,apiClient.getSyncJobs(options)},ActivityTab.prototype.getSettingsKey=function(){return"syncjobs"},ActivityTab.prototype.getViewSettingDefaults=function(){var viewSettings=_itemstab.default.prototype.getViewSettingDefaults.apply(this,arguments);return viewSettings.imageType="list",viewSettings},ActivityTab.prototype.setTitle=function(){},ActivityTab.prototype.getBaseListRendererOptions=function(){var options=_itemstab.default.prototype.getBaseListRendererOptions.apply(this,arguments);return options.draggable=!1,_layoutmanager.default.tv?options.action="menu":options.action="edit",options},ActivityTab.prototype.getListViewOptions=function(items,settings){var options=_itemstab.default.prototype.getListViewOptions.apply(this,arguments);return this.options.userId&&(options.UserId=this.options.userId),"download"===this.options.mode&&this.options.userId||(options.fields=["TargetName","Name"]),options.fields.push("SyncJobItemCount"),options.fields.push("SyncJobProgress"),options},ActivityTab.prototype.getItemTypes=function(){return["SyncJob"]};_exports.default=ActivityTab});

View File

@@ -0,0 +1,29 @@
<div is="emby-scroller" class="view flex flex-direction-column scrollFrameY flex-grow withTabs" 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="syncSettingsForm padded-top auto-center">
<div class="inputContainer">
<div class="flex align-items-center">
<div class="flex-grow">
<input is="emby-input" type="text" class="txtSyncTempPath" label="${LabelSyncTempPath}" />
</div>
<button type="button" is="paper-icon-button-light" title="${ButtonSelectDirectory}" aria-label="${ButtonSelectDirectory}" class="btnSelectSyncTempPath emby-input-iconbutton"><i class="md-icon">search</i></button>
</div>
<div class="fieldDescription">${LabelSyncTempPathHelp}</div>
</div>
<div class="toggleContainer">
<label>
<input type="checkbox" is="emby-toggle" class="chkEnableFullSpeedConversion" />
<span>${OptionEnableFullSpeedConversion}</span>
</label>
<div class="fieldDescription toggleFieldDescription">${OptionEnableFullSpeedConversionHelp}</div>
</div>
<br />
<div>
<button is="emby-button" type="submit" class="raised button-submit block">
<span>${Save}</span>
</button>
</div>
</form>
</div>
</div>

View File

@@ -0,0 +1 @@
define(["exports","./../../modules/tabbedview/basetab.js","./../../modules/loading/loading.js","./../../modules/emby-elements/emby-input/emby-input.js","./../../modules/emby-elements/emby-button/emby-button.js","./../../modules/emby-elements/emby-toggle/emby-toggle.js","./../../modules/emby-elements/emby-select/emby-select.js","./../../modules/emby-elements/emby-scroller/emby-scroller.js","./../../modules/emby-elements/emby-button/paper-icon-button-light.js","./../../modules/common/responsehelper.js"],function(_exports,_basetab,_loading,_embyInput,_embyButton,_embyToggle,_embySelect,_embyScroller,_paperIconButtonLight,_responsehelper){function View(view,params){_basetab.default.apply(this,arguments)}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,Object.assign(View.prototype,_basetab.default.prototype),View.prototype.loadTemplate=function(){return require(["text!server/sync/settingstab.html"])},View.prototype.onTemplateLoaded=function(){_basetab.default.prototype.onTemplateLoaded.apply(this,arguments);var view=this.view;view.querySelector(".btnSelectSyncTempPath").addEventListener("click",function(){Emby.importModule("./modules/directorybrowser/directorybrowser.js").then(function(directoryBrowser){var picker=new directoryBrowser;picker.show({callback:function(path){path&&(view.querySelector(".txtSyncTempPath").value=path),picker.close()},validateWriteable:!0})})}),view.querySelector("form").addEventListener("submit",function(e){_loading.default.show();var form=e.target.closest("form"),apiClient=this.getApiClient();return apiClient.getNamedConfiguration("sync").then(function(config){config.TemporaryPath=form.querySelector(".txtSyncTempPath").value,config.EnableFullSpeedTranscoding=form.querySelector(".chkEnableFullSpeedConversion").checked,apiClient.updateNamedConfiguration("sync",config).then(_responsehelper.default.handleConfigurationSavedResponse)}),e.preventDefault(),e.stopPropagation(),!1}.bind(this))},View.prototype.onResume=function(options){_basetab.default.prototype.onResume.apply(this,arguments),_loading.default.show();var page=this.view;this.getApiClient().getNamedConfiguration("sync").then(function(config){!function(page,config){page.querySelector(".txtSyncTempPath").value=config.TemporaryPath||"",page.querySelector(".chkEnableFullSpeedConversion").checked=config.EnableFullSpeedTranscoding,_loading.default.hide()}(page,config)})};_exports.default=View});

9
server/sync/sync.html Normal file
View File

@@ -0,0 +1,9 @@
<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>

1
server/sync/sync.js Normal file
View File

@@ -0,0 +1 @@
define(["exports","./../../modules/common/globalize.js","./../../modules/tabbedview/tabbedview.js"],function(_exports,_globalize,_tabbedview){function SyncView(view,params){_tabbedview.default.apply(this,arguments)}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,Object.assign(SyncView.prototype,_tabbedview.default.prototype),SyncView.prototype.getTabs=function(){return[{name:"convert"===this.params.mode?_globalize.default.translate("Conversions"):_globalize.default.translate("Downloads"),id:"activity"},{name:_globalize.default.translate("Settings"),id:"settings"}]},SyncView.prototype.loadTabController=function(id){return Emby.importModule("./server/sync/"+id+"tab.js")},SyncView.prototype.getTabControllerOptions=function(id){var options=_tabbedview.default.prototype.getTabControllerOptions.apply(this,arguments);return options.mode=this.params.mode,options};_exports.default=SyncView});

View File

@@ -0,0 +1 @@
define(["exports","./../../modules/common/itemmanager/itemmanager.js","./../../modules/common/itemmanager/baseitemcontroller.js","./../../modules/emby-apiclient/connectionmanager.js","./../../modules/common/globalize.js"],function(_exports,_itemmanager,_baseitemcontroller,_connectionmanager,_globalize){function SyncJobController(){_baseitemcontroller.default.apply(this,arguments)}function getDeleteMessages(item){var title,text,confirmText=_globalize.default.translate("Remove");return"Convert"===item.SyncJobType?item.SyncNewContent||"Completed"!==item.Status?(title=_globalize.default.translate("CancelConversion"),text="ConfirmCancelConversion",confirmText=_globalize.default.translate("CancelConversion")):(title=_globalize.default.translate("RemoveFromHistory"),text="ConfirmRemoveFromHistory"):(title=_globalize.default.translate("RemoveDownload"),text="ConfirmRemoveDownload"),{single:{text:text,title:title,confirmText:confirmText},plural:{text:text,title:title,confirmText:confirmText}}}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,Object.assign(SyncJobController.prototype,_baseitemcontroller.default.prototype),SyncJobController.prototype.getTypeNames=function(){return["SyncJob"]},SyncJobController.prototype.getDisplayName=function(item,options){return item.Name},SyncJobController.prototype.isSingleItemFetchRequired=function(typeName){return!1},SyncJobController.prototype.getDefaultIcon=function(item){return"&#xe627;"},SyncJobController.prototype.canDelete=function(item,user){return!0},SyncJobController.prototype.enableLibraryItemDeleteConfirmation=function(){return!1},SyncJobController.prototype.canRate=function(item){return!1},SyncJobController.prototype.canMarkPlayed=function(item){return!1},SyncJobController.prototype.canAddToPlaylist=function(item){return!1},SyncJobController.prototype.canAddToCollection=function(item,user){return!1},SyncJobController.prototype.canConvert=function(item,user){return!1},SyncJobController.prototype.canEdit=function(items,user){return 1===items.length},SyncJobController.prototype.canEditImages=function(item,user){return!1},SyncJobController.prototype.canEditSubtitles=function(item,user){return!1},SyncJobController.prototype.isDeletePrimaryCommand=function(itemType){return!0},SyncJobController.prototype.getDeleteCommand=function(items){var item=items[0],itemType=item.Type,item=getDeleteMessages(item);return{name:(1<items.length?item.plural:item.single).title,id:"delete",icon:"remove_circle_outline",primaryCommand:this.isDeletePrimaryCommand(itemType)}},SyncJobController.prototype.getDeleteMessages=getDeleteMessages,SyncJobController.prototype.canRefreshMetadata=function(item,user){return!1},SyncJobController.prototype.deleteItemsInternal=function(options){for(var isLocalTarget,apiClient=_connectionmanager.default.getApiClient(options.items[0]),localTargetId=_connectionmanager.default.deviceId(),ids=[],i=0,length=options.items.length;i<length;i++){var item=options.items[i];ids.push(item.Id),item.TargetId===localTargetId&&(isLocalTarget=!0)}return apiClient.cancelSyncJobs(ids).then(function(result){return isLocalTarget&&require(["localsync"],function(localSync){localSync.sync()}),Promise.resolve(result)})},SyncJobController.prototype.getNameSortOption=function(itemType){return null},SyncJobController.prototype.editItems=function(items,options){var item=items[0];return Emby.importModule("./modules/sync/syncjobeditor.js").then(function(syncJobEditor){return syncJobEditor.show({serverId:item.ServerId,jobId:item.Id,mode:"Convert"===item.SyncJobType?"convert":"download"})})},SyncJobController.prototype.resolveField=function(item,field){switch(field){case"SyncJobItemCount":return 1===item.ItemCount?_globalize.default.translate("ValueOneItem"):_globalize.default.translate("ItemCount",item.ItemCount);case"SyncJobProgress":var job=item,status=job.Status;switch(status){case"Completed":status="Convert"===job.SyncJobType?_globalize.default.translate("Converted"):_globalize.default.translate("Downloaded");break;case"Failed":case"Cancelled":status=_globalize.default.translate(status);break;default:status=_globalize.default.translate("SyncJobItemStatus"+status)}var progress,html=status;return"Transferring"!==job.Status&&"Converting"!==job.Status||job.Progress&&(html=(html+=" ")+(progress=0<(progress=job.Progress||0)&&progress<100?progress.toFixed(1):progress)+"%"),html;default:return _baseitemcontroller.default.prototype.resolveField.apply(this,arguments)}};var instance=new SyncJobController;_itemmanager.default.registerItemController(instance),_exports.default=instance});

View File

@@ -0,0 +1 @@
define(["exports","./../../modules/common/itemmanager/itemmanager.js","./../../modules/common/itemmanager/baseitemcontroller.js","./../../modules/emby-apiclient/connectionmanager.js","./../../modules/common/globalize.js"],function(_exports,_itemmanager,_baseitemcontroller,_connectionmanager,_globalize){function SyncJobItemController(){_baseitemcontroller.default.apply(this,arguments)}function getDeleteMessages(item){var title,text,confirmText=_globalize.default.translate("Remove");return"Convert"===item.SyncJobType?"Completed"!==item.Status&&"Synced"!==item.Status?(title=_globalize.default.translate("CancelConversion"),text="ConfirmCancelConversion",confirmText=_globalize.default.translate("CancelConversion")):(title=_globalize.default.translate("RemoveFromHistory"),text="ConfirmRemoveFromHistory"):(title=_globalize.default.translate("RemoveDownload"),text="ConfirmRemoveDownload"),{single:{text:text,title:title,confirmText:confirmText},plural:{text:text,title:title,confirmText:confirmText}}}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,Object.assign(SyncJobItemController.prototype,_baseitemcontroller.default.prototype),SyncJobItemController.prototype.getTypeNames=function(){return["SyncJobItem"]},SyncJobItemController.prototype.getDisplayName=function(item,options){return item.ItemName},SyncJobItemController.prototype.isSingleItemFetchRequired=function(typeName){return!1},SyncJobItemController.prototype.getDefaultIcon=function(item){return"&#xe627;"},SyncJobItemController.prototype.canDelete=function(item,user){return!0},SyncJobItemController.prototype.enableLibraryItemDeleteConfirmation=function(){return!1},SyncJobItemController.prototype.canRate=function(item){return!1},SyncJobItemController.prototype.canMarkPlayed=function(item){return!1},SyncJobItemController.prototype.canAddToPlaylist=function(item){return!1},SyncJobItemController.prototype.canAddToCollection=function(item,user){return!1},SyncJobItemController.prototype.canConvert=function(item,user){return!1},SyncJobItemController.prototype.canEdit=function(items,user){return!1},SyncJobItemController.prototype.canEditImages=function(item,user){return!1},SyncJobItemController.prototype.canEditSubtitles=function(item,user){return!1},SyncJobItemController.prototype.isDeletePrimaryCommand=function(itemType){return!0},SyncJobItemController.prototype.getDeleteCommand=function(items){var item=items[0],itemType=item.Type,item=getDeleteMessages(item);return{name:(1<items.length?item.plural:item.single).title,id:"delete",icon:"remove_circle_outline",primaryCommand:this.isDeletePrimaryCommand(itemType)}},SyncJobItemController.prototype.getDeleteMessages=getDeleteMessages,SyncJobItemController.prototype.canRefreshMetadata=function(item,user){return!1},SyncJobItemController.prototype.deleteItemsInternal=function(options){for(var isLocalTarget,apiClient=_connectionmanager.default.getApiClient(options.items[0]),localTargetId=_connectionmanager.default.deviceId(),ids=[],i=0,length=options.items.length;i<length;i++){var item=options.items[i];ids.push(item.Id),item.TargetId===localTargetId&&(isLocalTarget=!0)}return apiClient.cancelSyncJobItems(ids).then(function(result){return isLocalTarget&&require(["localsync"],function(localSync){localSync.sync()}),Promise.resolve(result)})},SyncJobItemController.prototype.getNameSortOption=function(itemType){return null},SyncJobItemController.prototype.editItems=function(items,options){return Promise.reject()},SyncJobItemController.prototype.resolveField=function(item,field){if("SyncJobItemStatus"!==field)return _baseitemcontroller.default.prototype.resolveField.apply(this,arguments);var jobItem=item,status=jobItem.Status;switch(status){case"Completed":case"Synced":status="Convert"===jobItem.SyncJobType?_globalize.default.translate("Converted"):_globalize.default.translate("Downloaded");break;case"Failed":case"Cancelled":status=_globalize.default.translate(status);break;default:status=_globalize.default.translate("SyncJobItemStatus"+status)}var progress,html=status;return"Transferring"!==jobItem.Status&&"Converting"!==jobItem.Status||jobItem.Progress&&(html=(html+=" ")+(progress=0<(progress=jobItem.Progress||0)&&progress<100?progress.toFixed(1):progress)+"%"),html};var instance=new SyncJobItemController;_itemmanager.default.registerItemController(instance),_exports.default=instance});