1 line
10 KiB
JavaScript
1 line
10 KiB
JavaScript
define(["exports","./../emby-apiclient/connectionmanager.js","./../common/globalize.js","./../layoutmanager.js","./../loading/loading.js","./../dialoghelper/dialoghelper.js","./../emby-elements/emby-button/paper-icon-button-light.js","./../emby-elements/emby-button/emby-button.js","./../emby-elements/emby-scroller/emby-scroller.js","./../common/input/api.js","./../emby-apiclient/events.js","./../imageloader/imageloader.js","./../common/servicelocator.js","./../listview/listview.js"],function(_exports,_connectionmanager,_globalize,_layoutmanager,_loading,_dialoghelper,_paperIconButtonLight,_embyButton,_embyScroller,_api,_events,_imageloader,_servicelocator,_listview){function showConfirm(options){return Emby.importModule("./modules/common/dialogs/confirm.js").then(function(confirm){return confirm(options)})}function syncNow(){require(["localsync"],function(localSync){localSync.sync()})}function renderJob(context,job,dialogOptions){require(["syncDialog"],function(syncDialog){syncDialog.renderForm({elem:context.querySelector(".syncJobFormContent"),dialogOptions:dialogOptions,dialogOptionsFn:function(dialogOptions){return function(targetId){return Promise.resolve(dialogOptions)}}(dialogOptions),readOnlySyncTarget:!0}).then(function(){!function(context,job,editOptions){var selectProfile=context.querySelector(".selectProfile");selectProfile&&(selectProfile.value=job.Profile||"",triggerChange(selectProfile));selectProfile=context.querySelector(".selectQuality");selectProfile&&(selectProfile.value=job.Quality||"",triggerChange(selectProfile));selectProfile=context.querySelector(".selectJobContainer");selectProfile&&(selectProfile.value=job.Container||"",triggerChange(selectProfile));selectProfile=context.querySelector(".selectVideoCodec");selectProfile&&(selectProfile.value=job.VideoCodec||"",triggerChange(selectProfile));selectProfile=context.querySelector(".selectAudioCodec");selectProfile&&(selectProfile.value=job.AudioCodec||"",triggerChange(selectProfile));selectProfile=context.querySelector(".chkUnwatchedOnly");selectProfile&&(selectProfile.checked=job.UnwatchedOnly);selectProfile=context.querySelector(".chkSyncNewContent");selectProfile&&(selectProfile.checked=job.SyncNewContent);selectProfile=context.querySelector(".txtItemLimit");selectProfile&&(selectProfile.value=job.ItemLimit);selectProfile=context.querySelector(".txtBitrate");job.Bitrate?selectProfile.value=job.Bitrate/1e6:selectProfile.value="";selectProfile=editOptions.Targets.filter(function(t){return t.Id===job.TargetId})[0],editOptions=selectProfile?selectProfile.Name:"",selectProfile=context.querySelector(".selectSyncTarget");selectProfile&&(selectProfile.value=editOptions)}(context,job,dialogOptions)})})}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0;var supportsNativeLazyLoading="loading"in HTMLImageElement.prototype;function renderJobItems(context,items,apiClient){var html="",items=(html+="<h1>"+_globalize.default.translate("Items")+"</h1>",html=(html+="<div>")+items.map(function(i){return function(jobItem,apiClient){var nextAction,imgUrl,html="",status=("Failed"===(status=jobItem.Status)||"Cancelled"===status?nextAction="retry":"Queued"===status||"Transferring"===status||"Converting"===status||"ReadyToTransfer"===status?nextAction="cancel":"Synced"!==status||jobItem.IsMarkedForRemoval||(nextAction="remove"),"listItem listItem-border"),tagName=(_layoutmanager.default.tv&&nextAction&&(status+=" btnJobItemMenu"),_layoutmanager.default.tv&&(status+=" listItem-button"),_layoutmanager.default.tv?"button":"div");return html+="<"+tagName+' type="button" class="'+status+'" data-itemid="'+jobItem.Id+'" data-status="'+jobItem.Status+'" data-action="'+nextAction+'">',(imgUrl=jobItem.PrimaryImageItemId?apiClient.getImageUrl(jobItem.PrimaryImageItemId.toString(),{type:"Primary",width:80,tag:jobItem.PrimaryImageTag}):imgUrl)?html=(html+='<div class="listItemImageContainer">')+(supportsNativeLazyLoading?'<img class="listItemImage" loading="lazy" src="'+imgUrl+'" />':'<img class="listItemImage lazy" loading="lazy" src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=" data-src="'+imgUrl+'" />')+"</div>":html+='<div class="listItemImageContainer defaultCardBackground"><i class="md-icon listItemIcon">sync</i></div>',html=(html=html+'<div class="listItemBody three-line">'+'<div class="listItemBodyText">')+jobItem.ItemName+"</div>","Failed"===jobItem.Status?html+='<div class="listItemBodyText-secondary listItemBodyText secondaryText" style="color:red;">':html+='<div class="listItemBodyText-secondary listItemBodyText secondaryText">',html+=_globalize.default.translate("SyncJobItemStatus"+jobItem.Status),"Synced"===jobItem.Status&&jobItem.IsMarkedForRemoval&&(html=(html+="<br/>")+_globalize.default.translate("RemovingFromDevice")),html=(html=(html+="</div>")+'<div class="listItemBodyText-secondary listItemBodyText secondaryText" style="padding-top:5px;">'+('<div style="background:#e0e0e0;height:2px;"><div style="background:#52B54B;width:'+(jobItem.Progress||0)+'%;height:100%;"></div></div>'))+"</div>"+"</div>",_layoutmanager.default.tv||("retry"===nextAction?html+='<button type="button" is="paper-icon-button-light" class="btnJobItemMenu" data-action="'+nextAction+'"><i class="md-icon"></i></button>':"cancel"!==nextAction&&"remove"!==nextAction||(html+='<button type="button" is="paper-icon-button-light" class="btnJobItemMenu" data-action="'+nextAction+'"><i class="md-icon"></i></button>')),html+="</"+tagName+">"}(i,apiClient,0)}).join("")+"</div>",context.querySelector(".jobItems"));items.innerHTML=html,_imageloader.default.lazyChildren(items)}function showJobItemMenu(elem,jobId,apiClient){var action=elem.getAttribute("data-action"),context=elem.closest(".formDialog"),elem=elem.closest(".listItem").getAttribute("data-itemid");"retry"===action?function(context,jobId,jobItemId,apiClient){showConfirm({text:_globalize.default.translate("ConfirmRemoveDownload"),confirmText:_globalize.default.translate("RemoveDownload"),cancelText:_globalize.default.translate("KeepDownload"),primary:"cancel"}).then(function(){apiClient.ajax({type:"POST",url:apiClient.getUrl("Sync/JobItems/"+jobItemId+"/Enable")}).then(function(){_servicelocator.appHost.supports("sync")&&syncNow(),loadJob(context,jobId,apiClient)})})}(context,jobId,elem,apiClient):"cancel"!==action&&"remove"!==action||function(context,jobId,jobItemId,apiClient){showConfirm({text:_globalize.default.translate("ConfirmRemoveDownload"),confirmText:_globalize.default.translate("RemoveDownload"),cancelText:_globalize.default.translate("KeepDownload"),primary:"cancel"}).then(function(){_loading.default.show(),apiClient.cancelSyncJobItem(jobItemId).then(function(){_servicelocator.appHost.supports("sync")&&syncNow(),loadJob(context,jobId,apiClient)})})}(context,jobId,elem,apiClient)}function triggerChange(select){select.dispatchEvent(new CustomEvent("change",{bubbles:!0}))}function loadJob(context,id,apiClient){_loading.default.show(),apiClient.getJSON(apiClient.getUrl("Sync/Jobs/"+id)).then(function(job){return apiClient.getJSON(apiClient.getUrl("Sync/Options",{UserId:job.UserId,ItemIds:job.RequestedItemIds&&job.RequestedItemIds.length?job.RequestedItemIds.join(""):null,ParentId:job.ParentId,Category:job.Category,TargetId:job.TargetId})).then(function(options){return apiClient.getJSON(apiClient.getUrl("Sync/JobItems",{JobId:id,AddMetadata:!0})).then(function(result){renderJob(context,job,options),renderJobItems(context,result.Items,apiClient),_loading.default.hide()})})},function(error){_loading.default.hide(),_dialoghelper.default.close(context)})}_exports.default={show:function(options){var apiClient=_connectionmanager.default.getApiClient(options.serverId),id=options.jobId,options={removeOnClose:!0,scrollY:!1,autoFocus:!1},dlg=(_layoutmanager.default.tv?options.size="fullscreen":options.size="medium",_dialoghelper.default.createDialog(options)),options=(dlg.classList.add("formDialog"),"");function onSyncJobMessage(e,apiClient,job){String(job.Id)===id&&apiClient.getJSON(apiClient.getUrl("Sync/JobItems",{JobId:id,AddMetadata:!0})).then(function(result){renderJobItems(dlg,result.Items,apiClient),_loading.default.hide()},function(error){_loading.default.hide()})}return options=(options+='<div class="formDialogHeader"><button is="paper-icon-button-light" class="btnCancel hide-mouse-idle-tv" tabindex="-1"><i class="md-icon autortl"></i></button><h3 class="formDialogHeaderTitle">')+_globalize.default.translate("Sync")+"</h3>",_servicelocator.appHost.supports("externallinks")&&(options+='<a href="https://support.emby.media/support/solutions/articles/44001162174-sync" target="_blank" is="emby-linkbutton" class="button-link lnkHelp" style="margin-top:0;display:inline-block;vertical-align:middle;margin-left:auto;"><i class="md-icon"></i><span>'+_globalize.default.translate("Help")+"</span></a>"),options=(options+='</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 syncJobForm padded-left padded-right"><div class="syncJobFormContent"></div><div class="jobItems"></div><div class="formDialogFooter">')+'<button is="emby-button" type="submit" class="raised button-submit block formDialogFooterItem"><span>'+_globalize.default.translate("Save")+"</span></button>",dlg.innerHTML=options=(options=options+"</div>"+"</form>")+"</div>"+"</div>",dlg.querySelector("form").addEventListener("submit",function(e){return function(context,id,apiClient){_loading.default.show(),apiClient.getJSON(apiClient.getUrl("Sync/Jobs/"+id)).then(function(job){require(["syncDialog"],function(syncDialog){syncDialog.setJobValues(job,context),apiClient.ajax({url:apiClient.getUrl("Sync/Jobs/"+id),type:"POST",data:JSON.stringify(job),contentType:"application/json"}).then(function(){_servicelocator.appHost.supports("sync")&&syncNow(),_loading.default.hide(),_dialoghelper.default.close(context)})})},function(error){_loading.default.hide(),_dialoghelper.default.close(context)})}(dlg,id,apiClient),e.preventDefault(),!1}),dlg.querySelector(".btnCancel").addEventListener("click",function(){_dialoghelper.default.close(dlg)}),loadJob(dlg,id,apiClient),function(context,jobId,apiClient){context.querySelector(".jobItems").addEventListener("click",function(e){e=e.target.closest(".btnJobItemMenu");e&&showJobItemMenu(e,jobId,apiClient)})}(dlg,id,apiClient),options=_dialoghelper.default.open(dlg),_events.default.on(_api.default,"SyncJobUpdated",onSyncJobMessage),options.then(function(){return _events.default.off(_api.default,"SyncJobUpdated",onSyncJobMessage),Promise.reject()})}}}); |