File: /volume1/@appstore/HyperBackup/ui/component.js
/* Copyright (c) 2026 Synology Inc. All rights reserved. */
Ext.define("SYNO.SDS.Backup.ApiHelper",{extend:"Object",owner:null,title:"",defaultErrorSec:"common",defaultErrorKey:"error_system",getDefaultErrorMsg:function(){return _T(this.defaultErrorSec,this.defaultErrorKey)},constructor:function(e){Ext.apply(this,e),this.owner&&!this.title&&(this.title=this.owner.title)},send:function(e,t,i){if("object"!=typeof e)return!1;e instanceof Array?this.sendCompound(e,t,i):this.sendSingle(e,t,i)},sendCompound:function(e,t,i){var n=this;Ext.isFunction(t)||(t=Ext.emptyFn);var s={count:0,callback:t,scope:i,api:[]};function a(e,t,i){var a=function(e){return e.api?"_"+e.api+Ext.encode(e.params):e.compound?"_compound"+Ext.encode(e.compound):e.url?"_"+e.url+Ext.encode(e.params):void 0}(e);if(s[a]={},e.callback&&(s[a].callback=e.callback.createDelegate(e.scope||window)),e.api||e.compound)e.callback=function(e,n,o){s[a].success=e,s[a].response=n,s[a].options=o,s[a].request.callback=null,s.count-=1,t.call(i,s)},delete e.scope;else{if(!e.url)return!1;Ext.isDefined(e.method)||(e.method="POST"),e.callback=function(e,o,c){var l=n.parseAjaxResponse(e,o,c);s[a].success=!(!o||!l.success),s[a].response=l,s[a].options=e,s[a].request.callback=null,s.count-=1,t.call(i,s)},delete e.scope}return s[a].request=e,s.api.push(a),a}Ext.each(e,(function(e){var t,i=Ext.apply({},e);if(!(t=a(i,n.sendCompoundHandler,n)))return!0;if(i.api||i.compound){if(!n.owner.sendWebAPI(i))return s[t].success=!1,s[t].response={success:!1,error:{code:102}},!0}else i.url&&Ext.Ajax.request(i);s.count+=1}))},sendCompoundHandler:function(e){var t=0,i={result:[]};0===e.count&&(Ext.each(e.api,(function(n){var s=e[n],a=s.response;s.callback&&s.callback(s.success,a,s.options),s.success||(t+=1),s.request.api?Ext.copyTo(a,s.request,"api,method,version"):Ext.copyTo(a,s.request,"url,params"),i.result.push(a)})),i.has_fail=t>0,e.callback&&e.callback.call(e.scope||window,t!==e.api.length,i))},sendSingle:function(e,t,i){var n=this,s=Ext.emptyFn;e.callback&&(s=e.callback.createDelegate(e.scope||window)),Ext.isFunction(t)||(t=Ext.emptyFn),e.api||e.compound?(e.callback=function(e,n,a){s(e,n,a),t.call(i,e,n,a)},this.owner.sendWebAPI(e)):(Ext.isDefined(e.method)||(e.method="POST"),e.callback=function(e,a,o){var c=n.parseAjaxResponse(e,a,o),l=a&&c.success;s(l,c,e),t.call(i,l,c,e)},delete e.scope,Ext.Ajax.request(e))},alert:function(e,t,i){var n=this.title,s=this.getDefaultErrorMsg();e&&("string"==typeof e?s=e:"number"==typeof e?s=SYNO.SDS.Backup.GetErrorString(e):e instanceof Array?Ext.each(e,(function(e){if(!e.success)return s=SYNO.SDS.Backup.GetErrorString(e.error.code),!1})):"object"==typeof e&&(s=this.getResponseErrorMsg(e))),this.owner.getMsgBox().alert(n,s,t,i)},getResponseErrorMsg:function(e){var t=this.getDefaultErrorMsg();if(Ext.isDefined(e.code))t=SYNO.SDS.Backup.GetErrorString(e.code);else if(Ext.isDefined(e.result)&&Ext.isDefined(e.has_fail))Ext.each(e.result,(function(e){if(!e.success){if(Ext.isDefined(e.code))t=SYNO.SDS.Backup.GetErrorString(e.error.code);else if(Ext.isDefined(e.errinfo))try{t=_T(e.errinfo.sec,e.errinfo.key)}catch(e){}else if(Ext.isDefined(e.errno))try{t=_T(e.errno.sec,e.errno.key)}catch(e){}return!1}}));else if(Ext.isDefined(e.errors))try{t=_T(e.errors.sec,e.errors.key)}catch(e){}else if(Ext.isDefined(e.errno))try{t=_T(e.errno.sec,e.errno.key)}catch(e){}return t},parseAjaxResponse:function(e,t,i){var n={success:!1,errinfo:{sec:this.defaultErrorSec,key:this.defaultErrorKey}};try{n=Ext.util.JSON.decode(i.responseText)}catch(e){}return n}}),Ext.define("SYNO.SDS.Backup.ExpandableListView",{extend:"SYNO.ux.ExpandableListView",trackResetOnLoad:!1,constructor:function(e){e.innerTpl=e.innerTpl||new Ext.XTemplate("{detail_html}"),this.callParent(arguments)},initComponent:function(){this.callParent(arguments),this.addEvents("beforetoggle","toggle")},needToggleEvent:!0,toggleDetail:function(e,t){this.innerTpl&&e&&(this.needToggleEvent&&!1===this.fireEvent("beforetoggle",this,e)||(this.callParent(arguments),this.needToggleEvent&&this.fireEvent("toggle",this,e)))},restoreUIState:function(){this.needToggleEvent=!1,this.callParent(arguments),this.needToggleEvent=!0},selectAndExpandById:function(e){var t,i,n=this.store.getById(e);n&&(this.select(n),t=this.getNode(n),i=Ext.get(t),this.fleXcrollTo(i),i.child(".item-toggle-expanded")||this.toggleDetail(i,!0))},collapseAll:function(){var e=this.getToggledItemIds();Ext.each(e,(function(e,t,i){var n,s,a=this.getStore().getById(e);a&&(n=this.getNode(a),(s=Ext.fly(n))&&s.child(".item-toggle-expanded")&&this.toggleDetail(s,!1))}),this)}}),Ext.define("SYNO.SDS.Backup.TriTreeNodeUI",{extend:"Ext.tree.TreeNodeUI",renderElements:function(e,t,i,n){this.indentMarkup=e.parentNode?e.parentNode.ui.getChildIndent():"";var s,a='<img alt="" src="'+this.emptyIcon+'" class="syno-backup-tree-node-share-overwrite" ext:qtip="'+_T("confbackup","confbkp_share_overwrite")+'"/>',o='<img alt="" src="'+this.emptyIcon+'" class="syno-backup-tree-node-share-rename" ext:qtip="'+_T("confbackup","confbkp_share_rename")+'"/>',c='<img alt="" src="'+this.emptyIcon+'" class="syno-backup-tree-node-same-volume" ext:qtip="'+_T("backup","warn_backup_same_volume")+'"/>',l='<img alt="" src="'+this.emptyIcon+'" class="syno-backup-tree-node-c2-share" "/>',r='<img alt="" src="'+this.emptyIcon+'" class="syno-backup-tree-node-tiering-share" "/>',h='<img alt="" src="'+this.emptyIcon+'" class="syno-backup-tree-node-tiering-vault" "/>',d='<img alt="" src="'+this.emptyIcon+'" class="syno-backup-tree-node-enc-mount" "/>',u='<img alt="" src="'+this.emptyIcon+'" class="syno-backup-tree-node-enc-umount" "/>',p='<img alt="" src="'+this.emptyIcon+'" class="syno-backup-tree-node-app-share" ext:qtip=""/>',f='<img alt="" src="'+this.emptyIcon+'" class="syno-backup-tree-node-abb-folder" ext:qtip="'+(!0===t.is_restore?SYNO.SDS.Backup.String("app","ABB_must_restore_entire_data"):SYNO.SDS.Backup.String("app_backup","ABB_must_backup_data"))+'"/>',g='<img alt="" src="'+this.emptyIcon+'" class="syno-backup-tree-node-disable-folder syno-ux-whitetip-icon x-item-disabled '+(!0===t.disabled?"syno-backup-show-disable-folder":"")+'" ext:wtip="'+(t.disable_reason?t.disable_reason:"")+'"/>',m=Ext.isBoolean(t.checked)||"gray"===t.checked,b=Ext.util.Format.htmlEncode,k=t.input,x=this.getHref(t.href),y=['<li class="x-tree-node syno-backup-tri-tree-node"><div ext:tree-node-id="',b(e.id),'" class="x-tree-node-el x-tree-node-leaf x-unselectable ',t.cls,'" unselectable="on">','<span class="x-tree-node-indent">',this.indentMarkup,"</span>",'<img alt="" src="',this.emptyIcon,'" class="x-tree-ec-icon x-tree-elbow" />',m?'<img alt="" src="'+this.emptyIcon+'" class="syno-backup-tri-tree-node-cb syno-ux-checkbox-icon" />':"",'<img alt="" src="',t.icon||this.emptyIcon,'" class="x-tree-node-icon',t.icon?" x-tree-node-inline-icon":"",t.iconCls?" "+t.iconCls:"",'" unselectable="on" ',(t.icon||t.iconCls?"":'style="display: none;"')+"/>",'<a hidefocus="on" class="x-tree-node-anchor" href="',x,'" tabIndex="1" ',t.hrefTarget?' target="'+t.hrefTarget+'"':"",'><span unselectable="on">',e.text,"</span></a>",1==t.isTieringShare||t.is_tiering_share?r:"",1==t.isTieringVault||t.is_tiering_vault?h:"",!0===t.isC2Share||t.is_c2?l:"",!0===t.encryptedShare&&t.dataEncrypted||t.is_enc||t.encryptedVolume&&t.lockedVolume?u:"",!0===t.encryptedShare&&!t.dataEncrypted||t.encryptedVolume&&!t.lockedVolume?d:"","rename"===t.shareConflict?o:"","overwrite"===t.shareConflict?a:"",0===e.id.indexOf("fm_root")?c:"",0===e.id.indexOf("/")&&0===e.id.lastIndexOf("/")?p:"",SYNO.SDS.Backup.Client.Common.Utils.isABBDataFolder(e.id)?f:"",0===e.id.indexOf("/")?g:"","</div>",'<ul class="x-tree-node-ct" style="display:none;"></ul>',"</li>"].join("");!0!==n&&e.nextSibling&&(s=e.nextSibling.ui.getEl())?this.wrap=Ext.DomHelper.insertHtml("beforeBegin",s,y):this.wrap=Ext.DomHelper.insertHtml("beforeEnd",i,y),this.elNode=this.wrap.childNodes[0],this.ctNode=this.wrap.childNodes[1];var S=this.elNode.childNodes,_=0;this.indentNode=S[_++],this.ecNode=S[_++],m&&(this.checkbox=S[_++]),this.iconNode=S[_++],this.anchor=S[_++],this.textNode=this.anchor.firstChild,"rename"===t.shareConflict&&(this.renameNode=S[_++]),"overwrite"===t.shareConflict&&(this.overwriteNode=S[_++]),this.volumeWarnNode=S[_++],k&&(this.createInputField(k,t,this.elNode),_++),m&&this.syncCheckCssClass(),e.on("disabledchange",this.onDisabled,this)},onIdChange:function(e){var t=Ext.util.Format.htmlEncode;this.rendered&&this.elNode.setAttribute("ext:tree-node-id",t(e))},createInputField:function(e,t,i){var n=e;switch(Ext.isObject(e)?(this.inputConfig=Ext.apply({},e),n=e.xtype||"textfield",delete e.xtype):this.inputConfig={},Ext.isDefined(t.value)&&(this.inputConfig.value=t.value),this.inputConfig.renderTo=i,n){case"textfield":this.input=new SYNO.ux.TextField(this.inputConfig);break;case"numberfield":this.input=new SYNO.ux.NumberField(this.inputConfig)}},initEvent:function(){var e=this.callParent(arguments);return this.checkbox&&this.initCheckEvent(),e},isChecked:function(){return this.getCheckValue()},isDisabled:function(){return!0===this.node.disabled},toggleCheck:function(){var e=this.checkbox;!0!==this.node.disabled&&e&&this.setCheckValue(!this.getCheckValue(),!0)},onClick:function(e){if(!e.getTarget(".x-form-field"))return e.getTarget(".syno-backup-tri-tree-node-cb")&&this.toggleCheck(),this.callParent(arguments)},onDblClick:function(e){e.preventDefault(),this.disabled||!1!==this.fireEvent("beforedblclick",this.node,e)&&(!this.animating&&this.node.isExpandable()&&this.node.toggle(),this.fireEvent("dblclick",this.node,e))},onDisabled:function(e,t){this.input&&(t?this.input.disable():this.input.enable()),this.checkbox&&(t?this.checkbox.classList.add("syno-ux-cb-disabled"):this.checkbox.classList.remove("syno-ux-cb-disabled"))},onCheckChange:function(e){this.syncCheckCssClass(),this.fireEvent("checkchange",this.node,this.getCheckValue(),e)},isValid:function(){return!!this.node.disabled||!(this.input&&!this.input.isValid())},getInputValue:function(){if(this.input&&!this.disabled)return this.input.getValue()},setInputValue:function(e){this.input&&this.input.setValue(e)},getCheckValue:function(){return this.node.attributes.checked},setCheckValue:function(e,t){this.node.disabled||e!==this.getCheckValue()&&(e="false"!==e&&"off"!==e&&"0"!==e&&("gray"===e?"gray":!!e),!1===t&&!0===this.node.attributes.is_user_modify&&!0===this.node.attributes.checked&&!1===e||(this.node.attributes.checked=e,this.node.attributes.is_user_modify=e&&t),this.onCheckChange(t))},syncCheckCssClass:function(){var e=this.getCheckValue();this.checkbox&&(Ext.each(["checked","grayed","disabled"],(function(e){this.checkbox.classList.remove("syno-ux-cb-"+e)}),this),this.volumeWarnNode&&this.volumeWarnNode.classList.remove("syno-ux-cb-selected"),!0===e?(this.checkbox.classList.add("syno-ux-cb-checked"),this.volumeWarnNode&&this.volumeWarnNode.classList.add("syno-ux-cb-selected")):"gray"===e&&(this.checkbox.classList.add("syno-ux-cb-grayed"),this.volumeWarnNode&&this.volumeWarnNode.classList.add("syno-ux-cb-selected")),this.node.disabled&&this.checkbox.classList.add("syno-ux-cb-disabled"))},initCheckEvent:function(){this.checkbox.addListener("mouseover",this.onCheckMouseover,this),this.checkbox.addListener("mouseout",this.onCheckMouseout,this),this.checkbox.addListener("focus",this.onCheckIconfocus,this),this.checkbox.addListener("blur",this.onCheckIconblur,this)},onCheckMouseover:function(){this.checkbox.classList.add("syno-ux-cb-hover")},onCheckMouseout:function(){this.checkbox.classList.remove("syno-ux-cb-hover")},onCheckIconfocus:function(){this.checkbox.classList.add("syno-ux-cb-focus")},onCheckIconblur:function(){this.checkbox.classList.remove("syno-ux-cb-focus")}}),Ext.define("SYNO.SDS.Backup.TriTreeDisableCheckNodeUI",{extend:"SYNO.SDS.Backup.TriTreeNodeUI",checkShareNode:function(e,t,i){e.dependAppRows&&0!==e.dependAppRows.length&&Ext.each(e.dependAppRows,(function(n){n.get("checked")&&(-1===t.indexOf(e.text)&&t.push(e.text),-1===i.indexOf(n.get("name"))&&(i.push(n.get("name")),this.node.appRowsToBeUnselected.push(n)),this.node.appGrid=e.dependGrid)}),this)},setCheckValue:function(e,t){if(!0!==e&&!this.node.clickConfirmed){this.node.appRowsToBeUnselected=[];var i,n=[],s=[],a=!1;if("fm_root"===this.node.id)Ext.each(this.node.childNodes,(function(e){this.checkShareNode(e,n,s),!0===e.isBackup&&(a=!0)}),this);else{var o=this.node.id.substr(1).split("/",1)[0],c=this.node.getOwnerTree().getNodeById("/"+o);this.checkShareNode(c,n,s),a=c.isBackup}if(0<s.length&&0<n.length)return!0!==t||(i=!0===a?_T("backup","unselect_share_alert_bkp"):_T("backup","unselect_share_alert_restore"),s.sort(),i=String.format(i,n.join(", "),s.join(", ")),this.node.getOwnerTree().owner.getMsgBox().confirm("",i,(function(e){"yes"===e&&(this.node.clickConfirmed=!0,Ext.each(this.node.appRowsToBeUnselected,(function(e){e.set("checked",!1)})),this.node.appRowsToBeUnselected=[],this.node.appGrid&&(this.node.appGrid.syncCheckedStatus(),delete this.node.appGrid),this.setCheckValue(!1,t))}),this)),!1}this.node.clickConfirmed=!1,!e&&this.node.disabled?(this.node.disabled=!1,this.callParent(arguments),this.node.disabled=!0,this.syncCheckCssClass()):this.callParent(arguments)}}),Ext.define("SYNO.SDS.Backup.TreeLoader",{extend:"Ext.tree.TreeLoader",sendWebAPI:void 0,webapi:void 0,nodeUI:void 0,constructor:function(){var e=arguments[0];return e&&e.webapi&&(this.dataUrl="dummy"),this.callParent(arguments)},checkEncryption:function(e){if(Ext.isArray(e.encryption)&&!Ext.isEmpty(e.params))for(var t=e.encryption,i=0,n=t.length;i<n;i++)if(t[i]in e.params)return;delete e.encryption},requestData:function(e,t,i){if(!1!==this.fireEvent("beforeload",this,e,t))if(this.directFn){var n=this.getParams(e);n.push(this.processDirectResponse.createDelegate(this,[{callback:t,node:e,scope:i}],!0)),this.directFn.apply(window,n)}else if(this.nodeData&&-1!==this.owner.fm_root_nodes.indexOf(e.id))this.handleNodeData(e,this.nodeData,t,i);else if(Ext.isFunction(this.sendWebAPI)){var s=Ext.apply({},{params:this.getParams(e),argument:{callback:t,node:e,scope:i},callback:this.handleWebAPIResponse,scope:this},this.webapi);this.checkEncryption(s),this.transId=this.sendWebAPI(s)}else this.transId=Ext.Ajax.request({method:this.requestMethod,url:this.dataUrl||this.url,success:this.handleResponse,failure:this.handleFailure,scope:this,argument:{callback:t,node:e,scope:i},params:this.getParams(e)});else this.runCallback(t,i||e,[])},handleNodeData:function(e,t,i,n){Ext.isFunction(this.parseWebApiResponse)&&(t=this.parseWebApiResponse.call(this,e,t)),e.beginUpdate();for(var s=0,a=t.length;s<a;s++){var o=this.createNode(t[s]);o&&e.appendChild(o)}e.endUpdate(),this.runCallback(i,n||e,[e]),this.fireEvent("load",this,e,t)},handleWebAPIResponse:function(e,t,i,n){var s=n.argument,a=s.node;if(this.transId=!1,e){try{Ext.isFunction(this.parseWebApiResponse)&&(t=this.parseWebApiResponse.call(this,a,t)),a.beginUpdate();for(var o=0,c=t.length;o<c;o++)if(!t[o].recycle){var l=this.createNode(t[o]);l&&a.appendChild(l)}a.endUpdate(),this.runCallback(s.callback,s.scope||a,[a])}catch(e){return SYNO.Debug("tree loadexception"),this.fireEvent("loadexception",this,a,t),void this.runCallback(s.callback,s.scope||a,[a])}this.fireEvent("load",this,a,t)}else this.fireEvent("loadexception",this,a,t),this.runCallback(s.callback,s.scope||a,[a])},createNode:function(e){if(e.uiProvider||(e.uiProvider=this.nodeUI?this.nodeUI:"SYNO.SDS.Backup.TriTreeNodeUI"),e.draggable=!1,e.qtip&&(e.qtip=Ext.util.Format.htmlDecode(e.qtip)),!Ext.isFunction(this.createNodeFn)||!1!==this.createNodeFn.call(this.createNodeScope||this,e)){var t=this.callParent(arguments);return t}}}),Ext.define("SYNO.SDS.Backup.BasicTreePanel",{extend:"SYNO.ux.TreePanel",constructor:function(e){var t=Ext.apply({useArrows:!0,autoScroll:!0,containerScroll:!0,bodyStyle:"overflow-x: hidden;overflow-y:auto; padding-right: 12px;",cls:"syno-backup-basic-tree-panel",enableDD:!1,useGradient:!1},e);return this.callParent([t])},initEvents:function(){var e=this.callParent(arguments);return this.mon(this,"checkchange",this.onCheckChange,this),this.mon(this,"expandnode",this.onExpandNode,this),e},getCheckedSubTreeRoot:function(e){var t=[],i=function(e){e.eachChild((function(e){var n=e.getUI()||{};Ext.isFunction(n.getCheckValue)&&(!0===n.getCheckValue()?t.push(e):"gray"===n.getCheckValue()&&i(e))}))};return i(e||this.root),t},onCheckChange:function(e,t,i){var n,s,a,o=function(e){var t=0,i=0,n=0;return e.eachChild((function(e){var s=e.getUI()||{};!s.checkbox||!Ext.isFunction(s.getCheckValue)||Ext.isFunction(s.isDisabled)&&s.isDisabled()||(!0===s.getCheckValue()?i+=1:!1===s.getCheckValue()&&(n+=1),t+=1)})),0===t?e.getUI().getCheckValue():i===t||n!==t&&"gray"},c=function(e){var t=Ext.apply({},e.attributes.depend);return Ext.applyIf(t,{parent:!1,children:!0})};for(!0===(a=c(e)).children&&(!0===t?e.eachChild((function(e){var t=e.getUI();!t||!Ext.isFunction(t.setCheckValue)||Ext.isFunction(t.isDisabled)&&t.isDisabled()||t.setCheckValue(!0,i)}),this):!1===t&&e.eachChild((function(e){var t=e.getUI();!t||!Ext.isFunction(t.setCheckValue)||Ext.isFunction(t.isDisabled)&&t.isDisabled()||t.setCheckValue(!1,i)}),this)),n=e.parentNode;n;)(s=n.getUI())&&Ext.isFunction(s.getCheckValue)?(!0===a.parent?n.attributes.checked=o(n):!0===t&&!1===n.attributes.checked?n.attributes.checked="gray":!1===t&&(n.attributes.checked=o(n)),s.syncCheckCssClass(),a=c(n),n=n.parentNode):(a=c(n),n=n.parentNode)},onExpandNode:function(e){var t=e.getUI(),i=Ext.apply({},e.attributes.depend);Ext.applyIf(i,{parent:!1,children:!0}),t&&Ext.isFunction(t.getCheckValue)&&!0===i.children&&!0===t.getCheckValue()&&e.eachChild((function(e){(t=e.getUI())&&Ext.isFunction(t.isDisabled)&&!t.isDisabled()&&Ext.isFunction(t.setCheckValue)&&t.setCheckValue(!0,false)}),this)}}),Ext.define("SYNO.SDS.Backup.QuadTreeNodeUI",{extend:"SYNO.SDS.Backup.TriTreeNodeUI",renderElements:function(e,t,i,n){if(this.callParent(arguments),!e.state&&t.state){var s=Ext.getClassByName(t.state);e.state=new s({node:e})}},normalizeValue:function(e){return"false"!==e&&"off"!==e&&"0"!==e&&("gray"===e?"gray":!!e)},toggleCheck:function(){var e=this.checkbox;!0!==this.node.disabled&&e&&(this.node.dirty=!0,this.node.state.toggleCheck())},setCheckValue:function(e,t){this.node.disabled||e!==this.getCheckValue()&&(e=this.normalizeValue(e),!1===t&&!0===this.node.attributes.is_user_modify&&!0===this.node.attributes.checked&&!1===e||(this.node.attributes.checked=e,this.node.attributes.is_user_modify=e&&t),this.syncCheckCssClass())}}),Ext.define("SYNO.SDS.Backup.QuadTreeNodeState",{stateName:"unknown",isUserModify:!0,constructor:function(e){e&&e.node&&this.setNode(e.node)},setNode:function(e){this.node=e},getNode:function(){return this.node},changeNodeState:function(e){this.getNode()&&this.getNode().changeState(e)},toggleCheck:function(){this.getNode()&&(this.setChildStatus(),this.setSelfStatus(),this.setParentStatus())},setDisable:function(){this.getNode()&&(this.getNode().state=new SYNO.SDS.Backup.QuadTreeNodePartialState({node:this.getNode()}),this.getNode().state.toggleCheck(),this.getNode().disable())},setEnable:function(){this.getNode()&&this.getNode().enable()},setChildStatus:function(){},setSelfStatus:function(){},setParentStatus:function(){},cleanSubFolderPattern:function(){if(this.getNode()){var e=this.getNode().ownerTree,t=e._folder_list,i=e._excludeFolderList,n=function(e){var n=t.slice(0),s=i.slice(0);Ext.each(n,(function(i){e!==i&&0!==i.indexOf(String(e+"/"))||t.splice(t.indexOf(i),1)}),this),Ext.each(s,(function(t){String(e+"/")!==t&&0!==t.indexOf(String(e+"/"))||i.splice(i.indexOf(t),1)}),this)};0===this.getNode().attributes.id.indexOf("fm_root")?this.getNode().eachChild((function(e){n(e.attributes.id)})):n(this.getNode().attributes.id)}},setAllChildrenEmptyState:function(){this.getNode().cascade((function(e){return this.getNode().attributes.id===e.attributes.id||!!this.isUIAbleToSetValue(e)&&(e.getUI().setCheckValue(!1,this.isUserModify),void(e.state=new SYNO.SDS.Backup.QuadTreeNodeEmptyState({node:e})))}),this),this.cleanSubFolderPattern()},setAllChildrenFullState:function(){this.getNode().cascade((function(e){return this.getNode().attributes.id===e.attributes.id||!!this.isUIAbleToSetValue(e)&&(e.getUI().setCheckValue(!0,this.isUserModify),void(e.state=new SYNO.SDS.Backup.QuadTreeNodeFullState({node:e})))}),this),this.cleanSubFolderPattern()},checkAndSetParentEmptyState:function(){this.getNode().bubble((function(e){return this.getNode().attributes.id===e.attributes.id||!!this.isUIAbleToSetValue(e)&&void(this.isAllChildrenInEmptyStatus(e)&&"partial"===e.state.getStateName()&&(e.ui.setCheckValue(!1,this.isUserModify),e.state=new SYNO.SDS.Backup.QuadTreeNodeEmptyState({node:e})))}),this)},checkAndSetParentPartialState:function(){this.getNode().bubble((function(e){return this.getNode().attributes.id===e.attributes.id||!!this.isUIAbleToSetValue(e)&&void("empty"===e.state.getStateName()&&(e.getUI().setCheckValue("gray",this.isUserModify),e.state=new SYNO.SDS.Backup.QuadTreeNodePartialState({node:e})))}),this)},updateSelfAndNextLevelChildrenConfig:function(){if(!this.getNode())return!0;var e=this.getNode().id,t=this.getNode().ownerTree,i=-1;if(-1===t.fm_root_nodes.indexOf(e)){-1!==(i=t._folder_list.indexOf(e))&&t._folder_list.splice(i,1);t._excludeFolderList=t._excludeFolderList.filter((function(t){return i=e,!(0===(n=t.substr(0,t.length-1)).indexOf(i+"/")&&i.length===n.lastIndexOf("/"));var i,n}))}else this.getNode().eachChild((function(e){-1!==(i=t._excludeFolderList.indexOf(e.id+"/"))&&t._excludeFolderList.splice(i,1)}))},isAllChildrenInEmptyStatus:function(e){if(!e)return!0;var t=!0;return e.eachChild((function(e){if(!0===e.getUI().getCheckValue()||"gray"===e.getUI().getCheckValue())return t=!1,!1})),t},isUIAbleToSetValue:function(e){if(!e)return!1;var t=e.getUI();return!(!t||!Ext.isFunction(t.setCheckValue)||Ext.isFunction(t.isDisabled)&&t.isDisabled()||!e.state)},getStateName:function(){return this.stateName}}),Ext.define("SYNO.SDS.Backup.QuadTreeNodeFullState",{extend:"SYNO.SDS.Backup.QuadTreeNodeState",stateName:"full",setChildStatus:function(){this.getNode().isExpanded()||this.setAllChildrenEmptyState()},setSelfStatus:function(){var e=this.getNode(),t=e.getUI();this.isUIAbleToSetValue(e)&&(e.isExpanded()?this.isAllChildrenInEmptyStatus(e)?(t.setCheckValue(!1,this.isUserModify),e.state=new SYNO.SDS.Backup.QuadTreeNodeEmptyState({node:this.getNode()})):(t.setCheckValue("gray",this.isUserModify),e.state=new SYNO.SDS.Backup.QuadTreeNodePartialState({node:this.getNode()}),this.updateSelfAndNextLevelChildrenConfig()):(t.setCheckValue(!1,this.isUserModify),e.state=new SYNO.SDS.Backup.QuadTreeNodeEmptyState({node:this.getNode()})))},setParentStatus:function(){this.checkAndSetParentEmptyState()}}),Ext.define("SYNO.SDS.Backup.QuadTreeNodePartialState",{extend:"SYNO.SDS.Backup.QuadTreeNodeState",stateName:"partial",setChildStatus:function(){this.setAllChildrenEmptyState()},setSelfStatus:function(){var e=this.getNode();e.getUI().setCheckValue(!1,this.isUserModify),e.state=new SYNO.SDS.Backup.QuadTreeNodeEmptyState({node:e})},setParentStatus:function(){this.checkAndSetParentEmptyState()}}),Ext.define("SYNO.SDS.Backup.QuadTreeNodeEmptyState",{extend:"SYNO.SDS.Backup.QuadTreeNodeState",stateName:"empty",setChildStatus:function(){this.setAllChildrenFullState()},setSelfStatus:function(){var e=this.getNode();e.getUI().setCheckValue(!0,this.isUserModify),e.state=new SYNO.SDS.Backup.QuadTreeNodeFullState({node:e})},setParentStatus:function(){this.checkAndSetParentPartialState()}}),Ext.define("SYNO.SDS.Backup.FormPanel",{extend:"SYNO.ux.FormPanel",initEvents:function(){this.callParent(arguments),this.initFieldGroup()},initFieldGroup:function(){var e={},t={};this.getForm().items.each((function(i){i instanceof SYNO.ux.Radio&&Ext.isArray(i.groupFields)&&(e[i.name]=e[i.name]||{},e[i.name][i.inputValue]=i.groupFields),i instanceof SYNO.ux.Checkbox&&Ext.isObject(i.groupFields)&&(t[i.name]=[],t[i.name][0]=i.groupFields.enable,t[i.name][1]=i.groupFields.disable)})),this.mon(this,"afterlayout",(function(){Ext.iterate(e,(function(e,t){new SYNO.ux.Utils.EnableRadioGroup(this.getForm(),e,t)}),this),Ext.iterate(t,(function(e,t){new SYNO.ux.Utils.EnableCheckGroup(this.getForm(),e,t[0],t[1])}),this)}),this,{single:!0})}}),Ext.define("SYNO.SDS.Backup.ComboBox",{extend:"SYNO.ux.ComboBox",owner:null,initComponent:function(){this.callParent(arguments),Ext.isObject(this.getParams)&&Ext.isFunction(this.getParams.handler)&&(this.getParams.scope=this.getParams.scope||this,this.getParams=Ext.createDelegate(this.getParams.handler,this.getParams.scope))},initList:function(){this.tpl||(this.tpl='<tpl for="."><tpl if="values.qtip"><div ext:qtip="{[SYNO.SDS.Backup.Util.htmlEncodeTip(values.qtip)]}" class="x-combo-list-item {cls:htmlEncode}"></tpl><tpl if="!values.qtip"><div class="x-combo-list-item {cls:htmlEncode}"></tpl>{'+Ext.util.Format.htmlEncode(this.displayField)+":htmlEncode}</div></tpl>"),this.callParent(arguments),Ext.isFunction(this.prepareData)&&(this.view.prepareData=this.prepareData),this.store&&this.owner&&(this.mon(this.store,"beforeload",(function(){this.busyText?this.owner.setStatusBusy({text:this.busyText}):this.owner.setStatusBusy()}),this),this.mon(this.store,"load",(function(e,t,i){this.owner.clearStatusBusy(),this.cacheAPIParam=this.getParamCache(i.params||i.add)}),this),this.mon(this.store,"exception",(function(e,t,i,n,s){this.owner.clearStatusBusy(),this.owner.reportError(s)}),this)),this.mon(this,"beforeselect",this.onBeforeSelect,this)},getParams:function(){return{}},onTriggerClick:function(){if(!this.readOnly&&!this.disabled){var e=this.getParams();Ext.isFunction(this.clickValidator)&&!this.clickValidator(this,e)||(this.isExpanded()?this.collapse():(this.onFocus({}),this.cacheAPIParam===this.getParamCache(e)?SYNO.ux.ComboBox.prototype.onTriggerClick.call(this,arguments):(this.checkEncryption(e),this.store.load({params:e}))),this.el.focus())}},onBeforeLoad:function(){this.hasFocus&&(this.selectedIndex=-1)},onBeforeSelect:function(e,t,i){return!t.get("disable")},checkEncryption:function(e){if(Ext.isArray(this.store.proxy.encryption))for(var t=this.store.proxy.encryption,i=0,n=t.length;i<n;i++)if(t[i]in e)return;delete this.store.proxy.encryption},getParamCache:function(e){var t=Ext.apply({},e);return delete t[this.name],Ext.encode(t)}}),Ext.define("SYNO.SDS.Backup.ComboBoxAndDisplayField",{extend:"Ext.Container",_transToCombo:!0,_displayField:"",_valueField:"",constructor:function(e){var t="comboBoxAndDisplayField",i=!1;this._displayField=e.displayField,this._valueField=e.valueField,delete e.name,e.itemId&&(t=e.itemId,delete e.itemId),e.hidden&&(i=e.hidden,delete e.hidden),Ext.isDefined(e.tpl)||(e.tpl=['<tpl for="."><div ext:qtip="{[SYNO.SDS.Backup.Util.htmlEncodeTip(values.',this._displayField,')]}" class="x-combo-list-item">{',this._displayField,":htmlEncode}</div></tpl>"].join(""));var n={layout:"form",itemId:t,hidden:i,items:[this._comboBox=new SYNO.ux.ComboBox(e),this._displayText=new SYNO.ux.DisplayField({fieldLabel:e.fieldLabel,value:"",hidden:!0,listeners:{render:function(e){Ext.isEmpty(e.value)||(this._textTip=new Ext.ToolTip({target:e.getEl(),html:e.value}))},scope:this}})]};this._comboBox.on("afterrender",(function(e){this._comboTip||(this._comboTip=new Ext.ToolTip({target:e.getEl(),html:e.lastSelectionText}),this._comboTip.on("show",(function(){this._comboTip.update(this._comboBox.lastSelectionText)}),this))}),this),this._comboBox.on("select",(function(e,t){this.getDisplayField().setValue(t.data[this._displayField])}),this),this.callParent([n])},getComboBox:function(){return this._comboBox},getDisplayField:function(){return this._displayText},getValue:function(){return this.disabled||this.getComboBox().disabled?this.disabled||this.getDisplayField().disabled?void 0:(Ext.each(this.getComboBox().store.getRange(),function(t){t.data[this._displayField]!==this.getDisplayField().getValue()||(e=t.data[this._valueField])}.createDelegate(this)),e):this.getComboBox().getValue();var e},setVisibleAndEnable:function(e){e?this._transToCombo?this.transToComboBox():this.transToText():(this.hide(),this.getComboBox().disable(),this.getComboBox().hide(),this.getDisplayField().disable(),this.getDisplayField().hide())},setValue:function(e){this.getComboBox().setValue(e),Ext.each(this.getComboBox().store.getRange(),function(t){if(t.data[this._valueField]===e)return this.getDisplayField().setValue(t.data[this._displayField]),this._textTip?this._textTip.getContentTarget()&&this._textTip.update(this.getDisplayField().getValue()):this._textTip=new Ext.ToolTip({target:this.getDisplayField().getEl(),html:this.getDisplayField().getValue()}),!1}.createDelegate(this))},transToText:function(){this._transToCombo=!1,this.show(),this.getComboBox().disable(),this.getComboBox().hide(),this.getDisplayField().enable(),this.getDisplayField().show()},transToComboBox:function(){this._transToCombo=!0,this.show(),this.getComboBox().enable(),this.getComboBox().show(),this.getDisplayField().disable(),this.getDisplayField().hide()}}),Ext.define("SYNO.SDS.Backup.HotTiering.ConfirmDialog",{extend:"SYNO.SDS.ModalWindow",constructor:function(e){this.resolveFn=e.resolveFn,this.rejectFn=e.rejectFn;var t=Ext.apply({cls:"x-window-dlg",draggable:!1,elements:"body",header:!1,resizable:!1,width:480,minHeight:120,autoHeight:!0,padding:"24px 30px 0",fbar:[{xtype:"syno_button",text:_T("common","cancel"),scope:this,handler:this.onClickCancel},{xtype:"syno_button",text:_T("common","ok"),itemId:"okBtn",btnStyle:"blue",disabled:!0,scope:this,handler:this.onClickOk}],items:[{xtype:"syno_displayfield",cls:"dialog-msg",value:SYNO.SDS.Backup.String("error","backup_tiering_share_bucket_warning")},{xtype:"syno_checkbox",cls:"dialog-checkbox",boxLabel:SYNO.SDS.Backup.String("app","backup_hot_data_excluded_confirm"),listeners:{check:{fn:function(e,t){this.getFooterToolbar().getComponent("okBtn").setDisabled(!t)},scope:this}}}]},e);SYNO.SDS.Backup.HotTiering.ConfirmDialog.superclass.constructor.call(this,t)},onClickCancel:function(){this.rejectFn(),this.close()},onClickOk:function(){this.resolveFn(),this.close()}}),Ext.define("SYNO.SDS.Backup.EnableColumn",{extend:"SYNO.ux.EnableColumn",constructor:function(e){this.callParent(arguments),Ext.isObject(this.afterCheck)&&Ext.isFunction(this.afterCheck.handler)&&(this.afterCheck.scope=this.afterCheck.scope||this,this.afterCheck=Ext.createDelegate(this.afterCheck.handler,this.afterCheck.scope))},isIgnore:function(e,t){return!!t.get("disabled")},toggleRec:function(e){this.callParent(arguments),Ext.isFunction(this.afterCheck)&&this.afterCheck(e)},renderer:function(e,t,i){var n=i.get("disabled")?"disabled-":"",s="gray"===e?"grayed":e?"checked":"unchecked";return String.format('<div class="syno-ux-grid-enable-column-{0}{1}"> </div>',n,s)}}),Ext.define("SYNO.SDS.Backup.PathBar",{extend:"Ext.Container",cls:"syno-sds-backup-pathbar",path:"",historyManager:null,initComponent:function(){this.callParent(arguments),this.historyManager||(this.historyManager=new SYNO.SDS.Backup.HistoryManager),Ext.isEmpty(this.defaultPath)||this.setPath(this.defaultPath),this.addEvents("updatepath")},setPath:function(e,t){if(e==this.path)return!1;var i=e.trim().split("/").filter((function(e){return!Ext.isEmpty(e)}));this.removeAll(),"@pathRoot"!==i[0]&&i.unshift("@pathRoot");var n="";Ext.each(i,(function(e,t,i){if(Ext.isEmpty(e))return!0;n+="/"+e;var s="syno-sds-backup-pathbutton";if(0===t&&"@pathRoot"==e)return!0;1===t&&(s="syno-sds-backup-pathbutton-first"),this.add(new SYNO.SDS.Backup.PathButton({path:n,cls:s,owner:this,listeners:{click:{fn:function(){this.owner.setPath(this.path)}}}}))}),this),this.path=n,this.doLayout(),t=void 0!==t&&t,this.historyManager&&!t&&this.historyManager.addEvent(this.path),this.fireEvent("updatepath",this)},getPath:function(){return this.path},getRelatedPath:function(){return this.path.substr("/@pathRoot".length+1)},moveToPrevPath:function(){var e=null;return this.historyManager&&(e=this.historyManager.moveToPrevEvent())&&this.setPath(e,!0),e},moveToNextPath:function(){var e=null;return this.historyManager&&(e=this.historyManager.moveToNextEvent())&&this.setPath(e,!0),e},getPrevPath:function(){var e=null;return this.historyManager&&(e=this.historyManager.getPrevEvent()),e},getNextPath:function(){var e=null;return this.historyManager&&(e=this.historyManager.getNextEvent()),e}}),Ext.define("SYNO.SDS.Backup.PathButton",{extend:"SYNO.ux.Button",cls:"syno-sds-backup-pathbutton",iconCls:"syno-sds-backup-pathbutton-text",path:"",initComponent:function(){this.setPath(this.path),this.callParent(arguments)},setPath:function(e){Ext.isEmpty(this.path)||(this.path=e,this.text=this.path.split("/").pop(),this.tooltip=this.text)},getPath:function(){return this.path}}),Ext.define("SYNO.SDS.Backup.HistoryManager",{history:[],historyPoint:-1,historyMaxLength:30,addEvent:function(e){this.history[this.historyPoint]!==e&&(this.history.splice(this.historyPoint+1,this.history.length-(this.historyPoint+1),e),this.history.length>this.historyMaxLength&&this.history.shift(),this.historyPoint=this.history.length-1)},moveToPrevEvent:function(){var e=null;return 0<this.historyPoint&&(this.historyPoint--,e=this.history[this.historyPoint]),e},moveToNextEvent:function(){var e=null;return this.historyPoint+1<this.history.length&&(this.historyPoint++,e=this.history[this.historyPoint]),e},getPrevEvent:function(){var e=null;return 0<this.historyPoint&&(e=this.history[this.historyPoint-1]),e},getNextEvent:function(){var e=null;return this.historyPoint+1<this.history.length&&(e=this.history[this.historyPoint+1]),e}}),Ext.define("SYNO.SDS.Backup.ModuleList",{extend:"SYNO.ux.ModuleList",createLoader:function(e){return new SYNO.SDS.Backup.TreeLoader(e.loaderCfg)}}),Ext.define("SYNO.SDS.Backup.PageListAppWindow",{extend:"SYNO.SDS.AppWindow",layout:"border",border:!1,plain:!0,help:void 0,activePage:null,pageList:null,buttonList:null,listContainer:null,pageContainer:null,initComponent:function(){this.callParent(arguments),this.listContainer||(this.listContainer=new Ext.Container({region:"west",width:240,margins:"0 0 0 0",layout:{type:"vbox",align:"stretch"}})),this.buttonPanel?this.listContainer.add(this.buttonPanel):this.buttonItems&&(this.buttonPanel=new SYNO.ux.Panel({cls:"syno-sds-backup-button-panel",layout:"hbox",align:"stretch",border:!1,items:this.buttonItems}),this.listContainer.add(this.buttonPanel)),this.listPanel||(this.listPanel=new SYNO.ux.ModuleList({layout:"fit",align:"stretch",border:!1,padding:"4px 16px 0 12px",flex:1,listItems:this.listItems})),this.listContainer.add(this.listPanel),this.pageContainer||(this.pageContainer=new Ext.Container({layout:"card",cls:"syno-backup-card-page-container",border:!1,frame:!1,hideMode:"offsets",region:"center"})),this.add(this.listContainer),this.add(this.pageContainer)},initEvents:function(){if(this.callParent(arguments),this.listPanel){var e=this.listPanel.getSelectionModel();this.mon(e,"beforeselect",this.onBeforeSelect,this),this.mon(e,"selectionchange",this.onSelectionChange,this),this.mon(this.listPanel.getLoader(),"load",this.onListPanelLoad,this,{single:!0})}},onListPanelLoad:function(){this.fireEvent("moduleready",this)},selectPage:function(e){var t;e&&this.listPanel&&((t=this.listPanel.getNodeById(e))&&this.listPanel.getSelectionModel().isSelected(t)?this.handleOpenParams():this.listPanel.selectModule(e))},getActivePage:function(){return this.pageContainer.layout.activeItem},getHelpParam:function(){var e,t;return(e=this.getActivePage())?Ext.isFunction(e.getHelpParam)?e.getHelpParam():this.listPanel&&(t=this.listPanel.getNodeById(e.itemId))&&t.attributes&&Ext.isString(t.attributes.help)?t.attributes.help:this.help:this.help},onBeforeSelect:function(e,t,i){var n,s=!0;return this.isSkipDeactivateCheck()?(this.clearSkipDeactivateCheck(),!0):!t.leaf||(t.attributes.fn?(i&&i.leaf&&(n=this.pageContainer.getComponent(i.attributes.id))&&Ext.isFunction(n.onPageDeactivate)&&(s=n.onPageDeactivate()),!1===s&&this.confirmLostChange((function(e){n&&Ext.isFunction(n.onPageConfirm)&&n.onPageConfirm(e),"yes"===e&&(this.setSkipDeactivateCheck(),this.selectPage(t.attributes.fn))}),this),s):(SYNO.Debug.error("Error: not implemented yet!!"),!1))},onSelectionChange:function(e,t){var i,n,s;t&&t.leaf&&(i=t.attributes.id,n=t.attributes.fn,s=t.attributes.pageConfig,i&&n&&this.launchPage(i,n,s))},onClose:function(){var e=this.getActivePage(),t=this.callParent(arguments);return this.isSkipDeactivateCheck()?(this.clearSkipDeactivateCheck(),!0):!1!==t&&(e&&Ext.isFunction(e.onPageDeactivate)&&!1===e.onPageDeactivate()?(this.confirmLostChange((function(t){e&&Ext.isFunction(e.onPageConfirm)&&e.onPageConfirm(t),"yes"===t&&(this.setSkipDeactivateCheck(),this.close())}),this),!1):t)},launchEmptyPage:function(e){return!!(this.emptyPageId&&this.emptyPageFn&&this.launchPage(this.emptyPageId,this.emptyPageFn,e))},launchPage:function(e,t,i){var n=this.pageContainer,s=n.getComponent(e);return s||(s=this.createPage(e,t,i),n.add(s)),!!s&&(n.layout.setActiveItem(e),this.activePage=s,this.selectTab(0),s.onPageActivate&&s.onPageActivate(this.openParams),!0)},handleOpenParams:function(){Ext.isFunction(this.activePage.onPageFocus)&&this.activePage.onPageFocus(this.openParams),this.openParams&&this.openParams.tab&&this.selectTab(this.openParams.tab)},selectTab:function(e){var t=this.getActivePage();t&&t instanceof Ext.TabPanel&&Ext.isFunction(t.setActiveTab)&&t.setActiveTab(e)},createPage:function(e,t,i){var n,s=this.appWin||this,a=s.jsConfig;return(n=new(Ext.getClassByName(t))(Ext.apply({appWin:s,jsConfig:a,owner:this},i))).itemId=e,n},confirmLostChange:function(e,t){this.getMsgBox().confirm("",_T("common","confirm_lostchange"),e,t)},isSkipDeactivateCheck:function(){return!!this.skipDeactivateCheckFlag},setSkipDeactivateCheck:function(){this.skipDeactivateCheckFlag=!0},clearSkipDeactivateCheck:function(){this.skipDeactivateCheckFlag=!1},onOpen:function(e){this.callParent(arguments),this.onLaunchPage(e)},onRequest:function(e){this.callParent(arguments),this.onLaunchPage(e)},onLaunchPage:function(e){if(this.listPanel){var t=this.listPanel.getRootNode();t&&t.childrenRendered&&t.childNodes.length>0?this.launchPageOnOpen(e):this.mon(this,"moduleready",(function(){this.launchPageOnOpen(e)}),this,{single:!0})}},launchPageOnOpen:function(e){var t;this.checkModalOrMask()||(t=e&&e.id?e.id:this.activePage,this.openParams=e,this.selectPage(t),this.openParams=null)}}),Ext.define("SYNO.SDS.Backup.RepoTypeButton",{extend:"Ext.Container",cls:"syno-backup-destination-button",initComponent:function(){this.callParent(arguments),this.selected&&this.addClass("selected"),this.repoIcon=new Ext.Container({cls:"syno-backup-destination-icon-container"});var e=new Ext.Container({cls:"syno-backup-destination-icon"});if(this.iconCls&&(e.addClass(this.iconCls),delete this.iconCls),this.repoIcon.add(e),this.add(this.repoIcon),this.title){var t=" "+SYNO.SDS.Backup.String("app","beta"),i='<span style="color:#0086E5">'+t+"</span>",n=this.options.beta?this.title+t:this.title,s=this.options.beta?this.title+i:this.title;this.repoText=new Ext.Container({html:'<div class="syno-backup-destination-innertext" ext:qtip="'+n+'" >'+s+"</div>",cls:"syno-backup-destination-text"}),delete this.title,this.textCls&&(this.repoText.addClass(this.textCls),delete this.textCls),this.add(this.repoText)}},afterRender:function(){Ext.isFunction(this.clickHandler)&&this.mon(this.el,"click",this.clickHandler),this.callParent(arguments)}}),Ext.define("SYNO.SDS.Backup.SimpleScheduleComponent",{extend:"SYNO.ux.FieldSet",canUnckeckSchedule:!0,owner:void 0,constructor:function(e){var t;t=e.canUnckeckSchedule?{xtype:"syno_checkbox",name:"schedule_enable",id:this.schedule_enable_id=Ext.id(),boxLabel:_T("netbackup","netbkp_set_schedule"),checked:!0}:{xtype:"syno_displayfield",name:"schedule_enable",id:this.schedule_enable_id=Ext.id(),value:SYNO.SDS.Backup.String("app","backup_schedule_title")+_T("common","colon")},this.owner=e.owner;var i=Ext.apply({name:"schedule_fieldset",cls:"syno-backup-simple-schedule-component",collapsible:!1,bwrapStyle:{padding:0},items:[t,{xtype:"container",layout:"hbox",cls:"simple-schedule-runtime-field",items:[{xtype:"spacer",width:28},{xtype:"container",width:210,html:SYNO.SDS.Backup.String("app","detect_schedule_run_time")+":"},{xtype:"spacer",width:8},{xtype:"syno_schedulefield",name:"basic_weekday",id:this.basic_weekday_id=Ext.id(),allowBlank:!1,editable:!1,width:115},{xtype:"spacer",width:6},{xtype:"syno_combobox",store:SYNO.SDS.Backup.createTimeItemStore("hour"),displayField:"display",name:"hour",id:this.hour_id=Ext.id(),valueField:"value",triggerAction:"all",mode:"local",width:70,editable:!1},{xtype:"spacer",html:":",width:14,style:{textAlign:"center",lineHeight:"28px",height:"28px"},cls:"simple-schedule-spacer"},{xtype:"syno_combobox",store:SYNO.SDS.Backup.createTimeItemStore("min"),displayField:"display",name:"minute",id:this.minute_id=Ext.id(),valueField:"value",triggerAction:"all",width:70,mode:"local",editable:!1}]}]},e);this.callParent([i])},initEvents:function(){this.owner&&new SYNO.ux.Utils.EnableCheckGroup(this.owner.getForm(),"schedule_enable",["basic_weekday","hour","minute"],[])},setCheckBoxVisible:function(e){var t=function(e,t){var i=30*t;Ext.getCmp(e).getEl().up("div.x-form-item").down("label").setStyle("margin-left",i+"px")};!0===e?(Ext.getCmp(this.schedule_enable_id).show(),t(this.basic_weekday_id,1),t(this.hour_id,1)):(Ext.getCmp(this.schedule_enable_id).hide(),t(this.basic_weekday_id,0),t(this.hour_id,0))},setData:function(e){Ext.getCmp(this.schedule_enable_id).setValue(e.schedule_enable),Ext.getCmp(this.hour_id).setValue(e.hour),Ext.getCmp(this.minute_id).setValue(e.minute),Ext.getCmp(this.basic_weekday_id).setValue(e.week_day)},getData:function(){var e=Ext.getCmp(this.schedule_enable_id).getValue(),t=Ext.getCmp(this.basic_weekday_id).getValue(),i=Ext.getCmp(this.hour_id).getValue(),n=Ext.getCmp(this.minute_id).getValue();return this.canUnckeckSchedule||(e=!0),{schedule_enable:e,hour:i,min:n,date_type:0,repeat:0,repeat_hour:0,last_work_hour:i,week_name:String(t)}}}),Ext.define("SYNO.SDS.Backup.IntegrityCheckSchedulePanel",{extend:"SYNO.ux.Panel",targetType:void 0,containerLabelWidth:void 0,constructor:function(e){this.FREQUENCY_ID_WEEKLY=1024,this.blSupportTimeLimit=!0;var t=new Ext.data.ArrayStore({fields:["display","value"],data:[[_T("schedule","no_repeat"),0],[SYNO.SDS.Backup.String("app","detect_schedule_weekly"),this.FREQUENCY_ID_WEEKLY],[_T("schedule","repeat_monthly"),1],[_T("schedule","repeat_yearly"),2],[_T("schedule","repeat_half_year"),3]]}),i={xtype:"syno_datetimefield",name:"incheck_date",width:140,allowBlank:!1,editable:!1,value:new Date,maxValue:"2037/12/31",minValue:"2005/1/1"};SYNO.SDS.DateTimeUtils||(i.format="Y/n/j");var n=Ext.apply({name:"incheck_schedule_fieldset",cls:"syno-integrity-check-schedule-component",layout:"form",items:[{xtype:"syno_checkbox",name:"incheck_schedule_enable",boxLabel:SYNO.SDS.Backup.String("app","detect_schedule_enable"),checked:!0},{xtype:"syno_compositefield",fieldLabel:SYNO.SDS.Backup.String("app","detect_schedule_run_time"),itemId:"date_composite",indent:1,items:[i,{xtype:"syno_combobox",store:SYNO.SDS.Backup.createTimeItemStore("hour"),name:"incheck_hour",displayField:"display",valueField:"value",triggerAction:"all",mode:"local",width:70,allowBlank:!1,editable:!1,value:5},{xtype:"syno_displayfield",value:":",width:2,style:{marginLeft:"-2px"}},{xtype:"syno_combobox",store:SYNO.SDS.Backup.createTimeItemStore("min"),name:"incheck_min",displayField:"display",valueField:"value",triggerAction:"all",width:70,mode:"local",allowBlank:!1,editable:!1,value:0}]},{xtype:"syno_combobox",indent:1,name:"incheck_frequency",store:t,fieldLabel:SYNO.SDS.Backup.String("app","detect_schedule_frequency"),displayField:"display",valueField:"value",value:this.FREQUENCY_ID_WEEKLY,allowBlank:!1,editable:!1,width:220},{xtype:"syno_checkbox",indent:1,name:"incheck_data_enable",boxLabel:SYNO.SDS.Backup.String("app","detect_schedule_data"),checked:!0,hidden:"cloud_image"===e.targetType},{xtype:"syno_compositefield",indent:2,itemId:"time_limit_composite",hidden:"cloud_image"===e.targetType,hideLabel:!0,items:[{xtype:"syno_checkbox",name:"incheck_time_limit_enable",boxLabel:SYNO.SDS.Backup.String("app","detect_schedule_limit"),checked:!0,width:e.containerLabelWidth-60},{xtype:"syno_numberfield",name:"incheck_time_limit",width:70,value:30,allowBlank:!0,maxValue:10080,minValue:1},{xtype:"syno_displayfield",value:_T("common","time_minutes"),width:70}]}]},e);this.callParent([n])},initEvents:function(){this.callParent(arguments),new SYNO.ux.Utils.EnableCheckGroup(this.owner.getForm(),"incheck_time_limit_enable",["incheck_time_limit"],[]),new SYNO.ux.Utils.EnableCheckGroup(this.owner.getForm(),"incheck_data_enable",["incheck_time_limit_enable"],[]),new SYNO.ux.Utils.EnableCheckGroup(this.owner.getForm(),"incheck_schedule_enable",["incheck_date","incheck_hour","incheck_min","incheck_frequency","incheck_data_enable"],[])},setData:function(e,t){var i=this.owner.getForm();if(Ext.isEmpty(e))return i.findField("incheck_schedule_enable").setValue(!1),i.findField("incheck_date").setValue(new Date),i.findField("incheck_hour").setValue(5),i.findField("incheck_min").setValue(0),i.findField("incheck_frequency").setValue(this.FREQUENCY_ID_WEEKLY),i.findField("incheck_data_enable").setValue(!0),i.findField("incheck_time_limit_enable").setValue(!0),i.findField("incheck_time_limit").setValue(30),void this.setSupportTimeLimit(t);var n=e.schedule;n&&(i.findField("incheck_hour").setValue(n.hour),i.findField("incheck_min").setValue(n.min),i.findField("incheck_frequency").setValue(1==n.date_type?n.repeat:this.FREQUENCY_ID_WEEKLY));var s=e.info;s&&(i.findField("incheck_date").setValue(Date.parseDate(s.date,"Y/n/j")),i.findField("incheck_data_enable").setValue(s.data_enable),0===s.time_limit?(i.findField("incheck_time_limit_enable").setValue(!1),i.findField("incheck_time_limit").setValue(30)):(i.findField("incheck_time_limit_enable").setValue(!0),i.findField("incheck_time_limit").setValue(s.time_limit))),i.findField("incheck_schedule_enable").setValue(e.schedule_enable),this.setSupportTimeLimit(t)},getData:function(){var e=this.owner.getForm(),t=e.findField("incheck_date").getValue();Ext.isEmpty(t)&&(t=new Date);var i=t.format("Y/n/j"),n=e.findField("incheck_hour").getValue(),s=e.findField("incheck_frequency").getValue()==this.FREQUENCY_ID_WEEKLY?0:1,a="";0===s&&(a=String(t.getDay()));var o=e.findField("incheck_data_enable").getValue(),c=e.findField("incheck_time_limit_enable").getValue(),l=e.findField("incheck_time_limit").getValue();return"cloud_image"===this.targetType?(o=!0,l=0):!1!==c&&this.blSupportTimeLimit||(l=0),{schedule_enable:e.findField("incheck_schedule_enable").getValue(),date_type:s,date:i,hour:n,min:e.findField("incheck_min").getValue(),repeat:1==s?e.findField("incheck_frequency").getValue():0,repeat_hour:0,last_work_hour:n,week_name:a,info:{data_enable:o,time_limit:l,date:i}}},setSupportTimeLimit:function(e){this.blSupportTimeLimit=e,"cloud_image"!==this.targetType&&this.getComponent("time_limit_composite").setVisible(e)},onShow:function(){this.callParent(arguments),this.getComponent("date_composite").setVisible(!0),this.getComponent("time_limit_composite").setVisible("cloud_image"!==this.targetType)}}),Ext.define("SYNO.SDS.Backup.SimpleIntegrityCheckPanel",{extend:"SYNO.ux.Panel",targetType:void 0,containerLabelWidth:void 0,constructor:function(e){this.blSupportTimeLimit=!0;var t=Ext.apply({name:"incheck_schedule_fieldset",cls:"syno-integrity-check-schedule-component",layout:"form",bodyStyle:"padding: 0px;",items:[{xtype:"syno_checkbox",name:"incheck_schedule_enable",boxLabel:SYNO.SDS.Backup.String("app","detect_schedule_enable"),checked:!0},{xtype:"container",layout:"hbox",cls:"integrity-check-runtime-field",name:"incheck_date_composite",itemId:"date_composite",items:[{xtype:"spacer",width:28},{xtype:"container",hideLabel:!0,width:210,html:SYNO.SDS.Backup.String("app","detect_schedule_run_time")+":"},{xtype:"spacer",width:8},{xtype:"syno_combobox",store:this.getWeekdayStore(),displayField:"display",valueField:"value",triggerAction:"all",mode:"local",name:"incheck_basic_weekday",width:115,allowBlank:!1,value:"0",editable:!1},{xtype:"spacer",width:6},{xtype:"syno_combobox",store:SYNO.SDS.Backup.createTimeItemStore("hour"),name:"incheck_weekday_hour",displayField:"display",valueField:"value",triggerAction:"all",mode:"local",width:70,allowBlank:!1,editable:!1,value:5},{xtype:"spacer",width:14,html:":",cls:"integrity-check-spacer"},{xtype:"syno_combobox",store:SYNO.SDS.Backup.createTimeItemStore("min"),name:"incheck_weekday_min",displayField:"display",valueField:"value",triggerAction:"all",width:70,mode:"local",allowBlank:!1,editable:!1,value:0}]},{xtype:"container",layout:"hbox",cls:"integrity-check-data-field",hidden:"cloud_image"===e.targetType,hideLabel:!0,items:[{xtype:"spacer",width:28},{xtype:"syno_checkbox",width:210,name:"incheck_data_enable",checked:!0,boxLabel:SYNO.SDS.Backup.String("app","detect_schedule_data")},{xtype:"spacer",width:8},{xtype:"syno_combobox",name:"incheck_time_policy",width:208,store:this.getTimePolicyStore([10,30,60],!0),displayField:"display",value:30,valueField:"value"}]}]},e);this.callParent([t])},initEvents:function(){this.callParent(arguments),new SYNO.ux.Utils.EnableCheckGroup(this.owner.getForm(),"incheck_data_enable",["incheck_time_policy"],[]),new SYNO.ux.Utils.EnableCheckGroup(this.owner.getForm(),"incheck_schedule_enable",["incheck_weekday_hour","incheck_weekday_min","incheck_data_enable","incheck_basic_weekday"],[])},setData:function(e,t){var i=this.owner.getForm();if(Ext.isEmpty(e))return i.findField("incheck_schedule_enable").setValue(!0),i.findField("incheck_basic_weekday").setValue("0"),i.findField("incheck_data_enable").setValue(!0),i.findField("incheck_time_policy").setValue(30),i.findField("incheck_weekday_hour").setValue(0),void i.findField("incheck_weekday_min").setValue(0);var n=e.schedule;n&&(i.findField("incheck_weekday_hour").setValue(n.hour),i.findField("incheck_weekday_min").setValue(n.min));var s=e.info;s?(s.week_name?i.findField("incheck_basic_weekday").setValue(s.week_name):i.findField("incheck_basic_weekday").setValue("0"),i.findField("incheck_data_enable").setValue(s.data_enable),i.findField("incheck_time_policy").setValue(s.time_limit)):(i.findField("incheck_basic_weekday").setValue("0"),i.findField("incheck_data_enable").setValue(!0),i.findField("incheck_time_policy").setValue(30)),i.findField("incheck_schedule_enable").setValue(e.schedule_enable),this.setSupportTimeLimit(t)},getData:function(){var e=this.owner.getForm(),t=864e5,i=new Date,n=e.findField("incheck_basic_weekday").getValue(),s=e.findField("incheck_weekday_hour").getValue(),a=e.findField("incheck_weekday_min").getValue(),o=(n-i.getDay()==0?i.getHours()===s?i.getMinutes()<a?i:new Date(i.getTime()+6048e5):i.getHours()<s?i:new Date(i.getTime()+6048e5):new Date(i.getTime()+((n-i.getDay())%7+7)%7*t)).format("Y/n/j"),c=e.findField("incheck_data_enable").getValue(),l=e.findField("incheck_time_policy").getValue();return"cloud_image"===this.targetType?(c=!0,l=0):this.blSupportTimeLimit||(l=0),{schedule_enable:e.findField("incheck_schedule_enable").getValue(),date_type:0,date:o,hour:s,min:a,repeat:0,repeat_hour:0,last_work_hour:s,week_name:String(n),info:{data_enable:c,time_limit:l,date:o}}},getWeekdayStore:function(){return new Ext.data.ArrayStore({fields:["display","value"],data:[[SYNO.SDS.Backup.String("app","schedule_sun"),0],[SYNO.SDS.Backup.String("app","schedule_mon"),1],[SYNO.SDS.Backup.String("app","schedule_tue"),2],[SYNO.SDS.Backup.String("app","schedule_wed"),3],[SYNO.SDS.Backup.String("app","schedule_thu"),4],[SYNO.SDS.Backup.String("app","schedule_fri"),5],[SYNO.SDS.Backup.String("app","schedule_sat"),6]]})},getTimePolicyStore:function(e,t){if(!e||0===e.length)return null;var i=[];return!0===t&&i.push([SYNO.SDS.Backup.String("app","no_time_limit"),0]),Ext.each(e,(function(e,t){i.push([String.format(SYNO.SDS.Backup.String("app","less_than_minutes"),e),e])}),this),new Ext.data.ArrayStore({fields:["display","value"],data:i})},setSupportTimeLimit:function(e){this.blSupportTimeLimit=e,"cloud_image"!==this.targetType&&this.owner.getForm().findField("incheck_time_policy").setVisible(e)},onShow:function(){this.callParent(arguments),this.getComponent("date_composite").setVisible(!0),this.owner.getForm().findField("incheck_time_policy").setVisible("cloud_image"!==this.targetType)}}),Ext.define("SYNO.SDS.Backup.NewFeaturePanel",{extend:"SYNO.ux.Panel",constructor:function(e){var t=this,i={cls:"syno-backup-new-feature-panel",items:[{xtype:"container",cls:"syno-backup-new-feature-panel-close-btn",listeners:{afterrender:function(e){e.getEl().on("click",(function(){t.destroy()}))}}},{xtype:"syno_displayfield",cls:"syno-backup-new-feature-panel-title",value:SYNO.SDS.Backup.String("app","new_feature")},{xtype:"syno_displayfield",cls:"syno-backup-new-feature-panel-desc",html:SYNO.SDS.Backup.String("app","file_only_backup_tip")+' <span class="syno-backup-learn-more-text">'+SYNO.SDS.Backup.String("app","learn_more")+"</span>",listeners:{afterrender:function(e){e.getEl().child(".syno-backup-learn-more-text").on("click",t.openHelpCenter.bind(t))}}},{xtype:"container",cls:"syno-backup-new-feature-panel-checkbox-container",itemId:"promptContainer",items:[{xtype:"syno_checkbox",itemId:"prompt",boxLabel:SYNO.SDS.Backup.String("app","do_not_show_again"),listeners:{check:function(e,i){t.updateUserPrompt(i)}}},{xtype:"container"}]}]};Ext.apply(i,e),this.callParent([i])},updateUserPrompt:function(e){this.appInstance.setUserSettings("show_parent_file_only_tip",!e)},openHelpCenter:function(){if(this.appInstance&&this.appInstance.jsConfig){var e=this.subTopic?this.appInstance.jsConfig.jsID+":"+this.subTopic:this.appInstance.jsConfig.jsID;SYNO.SDS.AppLaunch("SYNO.SDS.HelpBrowser.Application",{topic:e},!1)}}});