','
','
','
','
','
{text}
',SYNO.SDS.StorageUtils.isSHA?'
",'
',"{diskVendor} {diskModel}",'
{latestLabel}:
{latestValue}','
{compareLabel}:
{compareValue}','
{typeLabel}:
{typeValue}',"
",'
',"
",'
',"
",""),store:i.perfStore=new Ext.data.JsonStore({autoDestroy:!0,fields:["text","latestLabel","latestValue","compareLabel","compareValue","typeLabel","typeValue","diskVendor","diskModel","diskServerLoc"]})});var s='
';i.diskPerfResult=new Ext.DataView({tpl:new Ext.XTemplate('
','{readTitle}
','','',s,"","
",'{writeTitle}','',"
",'','',s,"","
",""),store:i.perfResultStore=new Ext.data.JsonStore({autoDestroy:!0,fields:["readTitle","writeTitle","writeInfo","diskReadPerf","diskWritePerf"]})}),t=Ext.apply({title:_T("disk_info","disk_perf_benchmark"),width:660,height:610,minWidth:660,minHeight:610,dsmStyle:"v5",layout:"fit",resizable:!1,items:[{xtype:"syno_formpanel",trackResetOnLoad:!0,border:!1,items:[i.diskPerf,i.diskPerfResult]}],buttons:[{text:_T("common","alt_close"),handler:i.close,scope:i}],listeners:{beforedestroy:i.pollingTaskStop,scope:i}},e),i.callParent([t])},onOpen:function(){for(var e=this,t=0;t
=0;n--)if((s=e.perfHistoryStore.getAt(n)).data.testType===e.latestLog.testType){e.disks[e.selectIdx].compareLog=s.data,e.disks[e.selectIdx].selectCompareLog=!0,e.disks[e.selectIdx].selectIdx=n;break}e.testType=a?e.latestLog.testType:"-","internal"===e.disks[e.selectIdx].diskContainer.type?t.text=e.disks[e.selectIdx].diskName+" ("+e.disks[e.selectIdx].diskContainer.str+")":t.text=e.disks[e.selectIdx].diskName,t.latestLabel=_T("disk_info","disk_perf_latest_test"),t.latestValue=a?SYNO.SDS.DateTimeFormatter(Date.parseDate(e.latestLog.time,"Y/m/d H:i:s"),{type:"datetimesec"}):"-",t.compareLabel=_T("disk_info","disk_perf_compare_with"),e.compareValueId=Ext.id(),t.compareValue=e.disks[e.selectIdx].selectCompareLog?SYNO.SDS.DateTimeFormatter(Date.parseDate(e.disks[e.selectIdx].compareLog.time,"Y/m/d H:i:s"),{type:"datetimesec"})+' ('+_T("common","choose")+")":"-",t.typeLabel=_T("disk_info","disk_perf_test_type"),t.typeValue=e.testType,t.diskVendor=e.disks[e.selectIdx].vendor,t.diskModel=e.disks[e.selectIdx].model,t.diskServerLoc=e.disks[e.selectIdx].isPassiveDisk?_T("ui","passive"):_T("ui","active"),i.push(t),e.perfStore.loadData(i)},onUpdatePerfResultStore:function(){var e=this,t={},i=[];t.readTitle=_T("disk_info","disk_perf_read_performance"),t.writeTitle=_T("disk_info","disk_perf_write_performance"),t.writeInfo=_T("disk_info","disk_perf_write_performance_info"),t.diskReadPerf=[],e.processing?(t.diskReadPerf.push(e.onRenderResultBoxWithoutValue("left",_T("rsrcmonitor","iops"),"processing")),t.diskReadPerf.push(e.onRenderResultBoxWithoutValue("center",_T("rsrcmonitor","throughput"),"processing")),t.diskReadPerf.push(e.onRenderResultBoxWithoutValue("right",_T("rsrcmonitor","latency"),"processing"))):(t.diskReadPerf.push(e.onRenderResultBox("left",_T("rsrcmonitor","iops"),e.latestLog.readIopsValue,e.latestLog.readIopsUnit,e.disks[e.selectIdx].compareLog.readIopsValue,e.disks[e.selectIdx].compareLog.readIopsUnit)),t.diskReadPerf.push(e.onRenderResultBox("center",_T("rsrcmonitor","throughput"),e.latestLog.readBwValue,e.latestLog.readBwUnit,e.disks[e.selectIdx].compareLog.readBwValue,e.disks[e.selectIdx].compareLog.readBwUnit)),t.diskReadPerf.push(e.onRenderResultBox("right",_T("rsrcmonitor","latency"),e.latestLog.readLatencyValue,e.latestLog.readLatencyUnit,e.disks[e.selectIdx].compareLog.readLatencyValue,e.disks[e.selectIdx].compareLog.readLatencyUnit))),t.diskWritePerf=[],e.processing?(t.diskWritePerf.push(e.onRenderResultBoxWithoutValue("left",_T("rsrcmonitor","iops"),"processing")),t.diskWritePerf.push(e.onRenderResultBoxWithoutValue("center",_T("rsrcmonitor","throughput"),"processing")),t.diskWritePerf.push(e.onRenderResultBoxWithoutValue("right",_T("rsrcmonitor","latency"),"processing"))):(t.diskWritePerf.push(e.onRenderResultBox("left",_T("rsrcmonitor","iops"),e.latestLog.writeIopsValue,e.latestLog.writeIopsUnit,e.disks[e.selectIdx].compareLog.writeIopsValue,e.disks[e.selectIdx].compareLog.writeIopsUnit)),t.diskWritePerf.push(e.onRenderResultBox("center",_T("rsrcmonitor","throughput"),e.latestLog.writeBwValue,e.latestLog.writeBwUnit,e.disks[e.selectIdx].compareLog.writeBwValue,e.disks[e.selectIdx].compareLog.writeBwUnit)),t.diskWritePerf.push(e.onRenderResultBox("right",_T("rsrcmonitor","latency"),e.latestLog.writeLatencyValue,e.latestLog.writeLatencyUnit,e.disks[e.selectIdx].compareLog.writeLatencyValue,e.disks[e.selectIdx].compareLog.writeLatencyUnit))),i.push(t),e.perfResultStore.loadData(i)},onRenderResultBoxWithoutValue:function(e,t,i){var s={};switch(i){case"processing":s={position:e,title:t,contentStatus:i,unit:"",value:"",status:"",direction:"",comparison:""};break;case"na":s={position:e,title:t,contentStatus:i,unit:"",value:"N/A",status:"",direction:"",comparison:""};break;case"no":s={position:e,title:t,contentStatus:i,unit:"",value:"--",status:"",direction:"",comparison:""};break;case"notsup":s={position:e,title:t,contentStatus:i,unit:"",value:"Not Supported",status:"",direction:"",comparison:""}}return s},onRenderResultBox:function(e,t,i,s,a,n){var o,r="",l="",d="",_="";return 0>Number(i)?this.onRenderResultBoxWithoutValue(e,t,"notsup"):Number(i)?(s!=n&&("MB/s"===s?(i*=1024,s="KB/s"):"MB/s"===n?(a*=1024,n="KB/s"):"ms"===s?(i*=1e3,s="us"):"ms"===n?(a*=1e3,n="us"):"K"==s?(i*=1e3,s=""):"K"==n&&(a*=1e3,n="")),_="normal",Number(a)?(0>(r=this.onRenderValueToOneDecimal((i-a)/a*100))?(l="down",d=_T("rsrcmonitor","latency")==t?"good":"bad"):0e.selectIdx&&(e.nextBtn=new Ext.Container({cls:"sm-disk-perf-next-btn",id:e.nextBtnId=Ext.id(),renderTo:"next-btn-id"}),Ext.get(e.nextBtnId).addListener("click",function(t,i){e.onChangeDisk(!0)},e)),e.disks[e.selectIdx].selectCompareLog&&Ext.get(e.compareValueId).addListener("click",function(t,i){e.onOpenHistoryWizard()},e),e.runTestBtn=new SYNO.ux.Button({id:e.runTestBtnId=Ext.id(),text:_T("disk_info","disk_perf_run_test_now"),handler:function(){e.onHandleTest()},renderTo:"run-test-btn-id",scope:e}),e.processing?Ext.getCmp(e.runTestBtnId).setText(_T("disk_info","disk_perf_stop_test")):Ext.getCmp(e.runTestBtnId).setText(_T("disk_info","disk_perf_run_test_now"))},onChangeDisk:function(e){var t=this;e&&t.disks.length-1<=t.selectIdx||!e&&0>=t.selectIdx||(e?t.selectIdx++:t.selectIdx--,t.pollingTaskStop(),t.onUpdateStore(),t.pollingTaskStart())},onHandleTest:function(){var e=this,t=e.disks[e.selectIdx];_T("disk_info","disk_perf_run_test_now")===Ext.getCmp(e.runTestBtnId).getText()?(e.setStatusBusy(),e.sendWebAPI(SYNO.SDS.StorageUtils.ReplaceWebapiSHA(t.isPassiveDisk,{api:"SYNO.Core.Storage.Disk",method:"get_performance_test_status",version:1,params:{device:t.device},scope:e,callback:e.checkStatus}))):e.stopPerfTest()},checkStatus:function(e,t){var i=this;i.clearStatusBusy(),e?t.is_erasing?i.getMsgBox().alert("",String.format(_T("volume","disk_secure_erasing"))):t.smart_testing||t.ihm_testing?i.getMsgBox().alert("",String.format(_T("disk_info","other_is_testing"))):t.fw_upgrading?i.getMsgBox().alert("",String.format(_T("disk_info","fwupgrade_result_upgrading_title"))):i.checkUtilization():SYNO.Debug.error("Failed to get disk current status",t)},checkUtilization:function(){var e=this,t=e.disks[e.selectIdx];e.sendWebAPI(SYNO.SDS.StorageUtils.ReplaceWebapiSHA(t.isPassiveDisk,{api:"SYNO.Core.Storage.Disk",method:"get_performance_test_info",version:1,params:{device:t.device,spare:t.spare},scope:e,callback:function(t,i){e.clearStatusBusy(),t?SYNO.SDS.StorageManager.Disk.DISK_PERF_NUM_THRESHOLD<=i.num?e.getMsgBox().alert("",String.format(_T("disk_info","disk_perf_system_busy_warn"),SYNO.SDS.StorageManager.Disk.DISK_PERF_NUM_THRESHOLD)):e.startPerfTest(i.type):SYNO.Debug.error("Failed to get performance num",i)}}))},pollingTaskStart:function(){var e=this;if(!e.pollingId){var t=e.disks[e.selectIdx],i=SYNO.SDS.StorageUtils.ReplaceWebapiSHA(t.isPassiveDisk,{api:"SYNO.Core.Storage.Disk",method:"get_performance_test_status",version:1,params:{device:t.device}});e.pollingId=e.pollReg({webapi:i,interval:60,immediate:!0,scope:e,status_callback:function(t,i){t?("processing"!==i.status?(e.processing=!1,e.pollingTaskStop()):e.processing=!0,e.onUpdateStore()):SYNO.Debug.error("Get performance status error",i)}})}},pollingTaskStop:function(){var e=this;e.pollingId&&(e.pollUnreg(e.pollingId),e.pollingId=void 0,e.processing=!1)},startPerfTest:function(e){var t=this,i=t.disks[t.selectIdx];t.setStatusBusy(),t.sendWebAPI(SYNO.SDS.StorageUtils.ReplaceWebapiSHA(i.isPassiveDisk,{api:"SYNO.Core.System.Utilization",method:"get",version:1,params:{type:"current",resource:["disk"]},scope:t,callback:function(s,a){if(t.clearStatusBusy(),s){var n=i.device.replace("/dev/",""),o={no:{text:_T("disk_info","disk_perf_do_test_continue"),btnStyle:"grey"},yes:{text:Ext.MessageBox.buttonText.no,btnStyle:"blue"}},r=0,l=-1;for(r=0;rl?SYNO.Debug.error("Failed to get utilization of "+i.device):SYNO.SDS.StorageManager.Disk.UTILIZATION_THRESHOLD{0}',_T("disk_info","disk_suppress_disable_warning_desc"))},{xtype:"syno_checkbox",boxLabel:_T("disk_info","disk_suppress_warning_confirm"),listeners:{check:{scope:i,fn:i.onCheckboxCheck}}}),t=Ext.apply({title:_T("disk_info","disk_remove_warning_title"),width:550,height:370,dsmStyle:"v5",layout:"fit",items:[{xtype:"syno_formpanel",id:i.formId=Ext.id(),border:!1,items:s}],buttons:[{text:_T("common","cancel"),scope:i,btnStyle:"gray",handler:i.onClickCancel},{text:_T("common","apply"),id:i.confirmId=Ext.id(),scope:i,disabled:!0,btnStyle:"red",cls:"syno-ux-button-blue",handler:i.onClickConfirm}],listeners:{activate:i.onActivate,scope:i}},e),i.callParent([t])},onActivate:function(){var e,t=this,i=[],s=0;if(t.appWin.healthInfo&&t.appWin.healthInfo.overview){for(e=t.appWin.healthInfo.overview,s=0;s{0}',_T("disk_info","fwupgrade_no_in_use")):t}},{header:_T("disk_info","fwupgrade_current_version"),dataIndex:"current_version",useHtmlEncodeRender:!1},{header:_T("disk_info","fwupgrade_latest_version"),dataIndex:"available_version"},{header:_T("disk_info","fwupgrade_firmware_status"),dataIndex:"status",useHtmlEncodeRender:!1,renderer:function(e){return"required"===e?String.format('{0}',_T("disk_info","fwupgrade_firmware_status_required")):String.format('{0}',_T("disk_info","fwupgrade_firmware_status_optional"))}},{header:_T("disk_info","fwupgrade_firmware_status"),dataIndex:"summary_result",useHtmlEncodeRender:!1,renderer:function(e,t,i){var s,a;return e?(s=String.format(_T("disk_info","fwupgrade_result_firmware_status_successful"),i.data.available_version),a=String.format('{0}
',s)):(s=String.format(_T("disk_info","fwupgrade_result_firmware_status_failed"),i.data.current_version,i.data.available_version),a=String.format('{0}
',s)),t.attr=String.format('ext:qtip="{0}"',s),t.css="sm-fwupgrade-grid-result",a}}]});var s=Ext.apply({enableHdMenu:!0,padding:0,colModel:this.colModel,store:new Ext.data.JsonStore({autoDestroy:!0,fields:["id","serial","location","model","used_by","order","current_version","available_version","status","summary_result"]})},e);return t=new SYNO.ux.GridPanel(s),this.originColCfg=this.colModel.config.map(function(e){return e}),t},setType:function(e){var t=this,i=["location","model","used_by","current_version","available_version","status"],s=[120,120,120,120,120,184];"successful_summary"===e?(i=["location","model","summary_result"],s=[150,150,494]):"failed_summary"===e&&(i=["location","model","used_by","summary_result"],s=[150,150,150,344]),t.colModel.setConfig(t.originColCfg.filter(function(e){return i.some(function(t){return t===e.dataIndex})})),s.forEach(function(e,i){t.grid.colModel.setColumnWidth(i,e)})},setTableTitle:function(e){this.titleCmp.setValue(e)},setTitleVisible:function(e){this.titleCmp.setVisible(e)},setLoadingDesc:function(e){this.loadingDescCmp.el&&this.loadingDescCmp.el.update(e)},setLoadingDescVisible:function(e){this.loadingDescCmp.setVisible(e)},setDesc:function(e){this.descCmp.setValue(e)},setDescVisible:function(e){this.descCmp.setVisible(e)},setGridVisible:function(e){this.grid.setVisible(e)},loadDrivesInfo:function(e){var t=e.map(function(e){var t=Ext.decode(e.ui_json);return{id:e.id,used_by:t.used_by,location:t.location,model:t.model,order:t.order,current_version:e.firmware,available_version:e.available_firmware,summary_result:e.success}}).filter(function(e){return["used_by","location","model","order"].every(function(t){return void 0!==e[t]})});this.updateDrives(t,!0)},updateDrives:function(e,t){if(t=t||!1)e.sort(function(e,t){var i=e.order,s=t.order;return i>s?1:i',e),""+String.format(t,s,"")+""},addLinktoSettingEvent:function(t){var i=Ext.fly(t);e.mon(i,"click",function(){e.onClickClose(),SYNO.SDS.AppLaunch("SYNO.SDS.StorageManager.Instance",{fn:"SYNO.SDS.StorageManager.Disk.Main",tab:"settings-tab"})},e)}}},createButtons:function(e){return[{ref:e+"closeBtnCmp",handler:this.onClickClose,scope:this},{text:_T("disk_info","fwupgrade_upgrade_btn"),btnStyle:"blue",ref:e+"upgradeBtnCmp",hidden:!0,handler:this.onClickUpgrade,scope:this}]},handleParam:function(e){var t=this;e=e||t.param,["single_summary","sha_summary"].includes(e.ui_state)?(t.changeCard(e.ui_state),t.current.showSummary(e.summaryList),!0===e.cancelAutoLaunch&&t.current.sendCancelAutoLaunch()):SYNO.SDS.StorageUtils.isSHA?t.shaCmp.loadDrive():t.singleCmp.loadDrive()},onOpen:function(e){this.changeCard("default"),this.callParent(arguments),this.handleParam(e)},onRequest:function(e){this.callParent(arguments),this.handleParam(e),this.blinkShadow(3)},onClickUpgrade:function(){var e=this,t={yes:_T("disk_info","fwupgrade_upgrade_btn"),no:_T("common","cancel")},i=e.getMsgBox();i.show({title:"",msg:_T("disk_info","fwupgrade_confirm_upgrade"),buttons:t,fn:function(t){"yes"===t&&e.current.upgrade()},scope:e,minWidth:i.minWidth})},onClickClose:function(){this.current.stopPollTask&&this.current.stopPollTask(),this.close()},changeCard:function(e,t){var i=this,s=i.layout;switch(e){case"default":s.setActiveItem("default"),i.current=i.defaultCmp,t=t||!1;break;case"up_to_date":s.setActiveItem("up_to_date"),i.current=i.upToDateCmp,t=t||!1;break;case"no_network":s.setActiveItem("no_network"),i.current=i.noNetworkCmp,t=t||!1;break;case"single":s.setActiveItem("single"),i.current=i.singleCmp,t=t||!0;break;case"sha":s.setActiveItem("sha"),i.current=i.shaCmp,t=t||!0;break;case"single_summary":s.setActiveItem("single_summary"),i.current=i.singleSummaryCmp,t=t||!1;break;case"sha_summary":s.setActiveItem("sha_summary"),i.current=i.shaSummaryCmp,t=t||!1;break;default:return void SYNO.Debug.error("Unknown case: ",e)}i.changeBtnState(t),this.doLayout()},changeBtnState:function(e){this.upgradeBtnCmp.setVisible(e),this.closeBtnCmp.setText(e?_T("common","cancel"):_T("common","close"))}}),Ext.define("SYNO.SDS.StorageManager.Wizard.FWUpgradePanelTemplate",{extend:"SYNO.ux.FormPanel",interval:1e3,timeout:300,constructor:function(e){var t,i=this;i.owner=e.owner,i.headlineCmp=i.createHeadlineCmp(),i.gridsCnt=new Ext.Container({cls:"sm-fwupgrade-grids-panel",items:[]}),t=Ext.apply({height:456,padding:"0px 0px",items:[i.headlineCmp,i.gridsCnt]},e),i.callParent([t])},createHeadlineCmp:function(){var e=this,t=Ext.id();return new Ext.Container({cls:"sm-fwupgrade-desc-panel",items:[{xtype:"syno_displayfield",value:_T("disk_info","fwupgrade_has_new_firmware_title"),cls:"sm-fwupgrade-title",ref:"./titleCmp"},{xtype:"syno_displayfield",value:_T("disk_info","fwupgrade_has_new_firmware_desc"),hidden:!0,htmlEncode:!1,ref:"./descCommonCmp"},{xtype:"syno_displayfield",value:_T("disk_info","fwupgrade_has_new_firmware_desc")+''+_T("common","note")+_T("common","colon")+""+e.owner.utils.formatLinkToSetting(t,_T("disk_info","fwupgrade_no_available_desc")),hidden:!0,htmlEncode:!1,ref:"./descNoNetworkCmp",listeners:{afterrender:function(){e.owner.utils.addLinktoSettingEvent(t)}}}]})},createNewGridPanel:function(e){var t=new SYNO.SDS.StorageManager.Wizard.FirmwareUpgradeGridPanel({owner:this,appWin:this.appWin});return t.setType(e),this.gridsCnt.add(t),this.doLayout(),t},resetGrids:function(){this.gridsCnt.removeAll()},changeTitleAndDescState:function(e,t,i){e?this.owner.changeCard(t?"up_to_date":"no_network"):(this.descCommonCmp.setVisible(t),this.descNoNetworkCmp.setVisible(!t),this.owner.changeCard(i))},getCompoundCfg:function(e,t){return{api:"SYNO.Entry.Request",version:1,method:"request",compound:{mode:"parallel",params:e},callback:t,scope:this}},sendCompound:function(e,t){SYNO.API.Request(this.getCompoundCfg(e,t))},getBasicWebapiCfg:function(e){return{api:"SYNO.Core.Storage.Disk.FWUpgrade",method:e,version:1}},alertError:function(e,t){this.owner.clearStatusBusy(),this.stopPollTask(),this.owner.getEl().unmask(),SYNO.SDS.StorageUtils.ReportWebapiFailure(e,t)},startPollTask:function(){var e=this;e.pollTask=e.pollTask||e.owner.addWebAPITask(Ext.apply(e.getCompoundCfg(e.getPollCfg(),e.stepPoll),{interval:e.interval})),e.timeSpent=0,e.pollTask.start(),e.owner.getEl().mask(_T("disk_info","fwupgrade_upgrading"),"x-mask-loading")},stopPollTask:function(){this.pollTask&&this.pollTask.stop()},genDefDiskInfo:function(e){if(e)return{numId:e.get("num_id"),ctnOrder:parseInt(e.get("container").order,10),ctnType:e.get("container").type,portType:e.get("portType"),pciSlot:e.get("pciSlot"),location:e.get("i18nNamingInfo"),model:e.get("model"),used_by:e.get("used_by")}},loadDrive:function(){this.owner.setStatusBusy(),this.sendCompound(this.getListDriveCfg(),this.stepListDrive)},getBasicListDriveCfg:function(){return this.getBasicWebapiCfg("list_drive")},stepListDrive:function(e,t,i,s){var a=this;a.handleListDrive(e,t,i,s,function(e){"start_polling"===e?(a.owner.clearStatusBusy(),a.startPollTask()):"finish_list_drive"===e?a.owner.clearStatusBusy():"alert_error"===e&&a.alertError(a.owner,t)})},upgrade:function(){this.owner.setStatusBusy(),this.sendCompound(this.getPrepareCfg(),this.stepPrepare)},getBasicPrepareCfg:function(e){return Ext.apply(this.getBasicWebapiCfg("prepare"),{params:{drives:e}})},stepPrepare:function(e,t,i,s){var a=this;a.handlePrepare(e,t,i,s,function(e){var i=a.owner.getMsgBox(),s={alert_drive_busy:"fwupgrade_drive_acting_alert",alert_not_enough_space:"fwupgrade_not_enough_space_alert",alert_lock_failed:"fwupgrade_lock_failed_alert"},n={alert_no_network:"fwupgrade_no_available_alert",alert_cant_get_from_server:"fwupgrade_firmware_not_match_alert"};if("reload_list_drive"===e)a.owner.clearStatusBusy(),i.show({title:"",msg:_T("disk_info","fwupgrade_drive_no_match_alert"),buttons:{yes:_T("common","refresh")},fn:function(){a.loadDrive()},scope:a,minWidth:i.minWidth});else if(s[e])a.owner.clearStatusBusy(),i.alert("",_T("disk_info",s[e]));else if(n[e]){var o=Ext.id(),r=a.owner.utils.formatLinkToSetting(o,_T("disk_info",n[e]));a.owner.clearStatusBusy(),i.alert("",r),a.owner.utils.addLinktoSettingEvent(o)}else if("start_upgrade"===e)a.sendCompound(a.getStartUpgradeCfg(),a.stepStartUpgrade);else if("defer_upgrade"===e){var l={yes:_T("system","reboot_opt"),no:_T("common","cancel")};a.owner.clearStatusBusy(),i.confirm("",a.getRebootConfirmMsg(),function(e){"yes"===e&&a.handleReboot()},a,l)}else"alert_error"===e&&a.alertError(a.owner,t)})},getBasicStartUpgradeCfg:function(){return this.getBasicWebapiCfg("start_upgrade")},stepStartUpgrade:function(e,t,i,s){var a=this;a.handleStartUpgrade(e,t,i,s,function(e){"start_polling"===e?(a.owner.clearStatusBusy(),a.startPollTask()):"alert_error"===e&&a.alertError(a.owner,t)})},getBasicPollCfg:function(){return this.getBasicWebapiCfg("poll")},stepPoll:function(e,t,i,s){var a,n=this;if(n.timeSpent+=n.interval/1e3,n.timeSpent>n.timeout)return n.stopPollTask(),n.owner.getEl().unmask(),void n.alertError(n.owner,t);a=function(e){"show_summary"===e?(n.stopPollTask(),n.sendCompound(n.getWarmUpgradeSummaryCfg(),n.stepWarmUpgradeSummary)):"alert_error"===e&&n.alertError(n.owner,t)},n.handlePoll(e,t,i,s,a)},getBasicSummaryCfg:function(e){return Ext.apply(this.getBasicWebapiCfg("get_summary"),{params:{source:e}})},getBasicWarmUpgradeSummaryCfg:function(){return this.getBasicSummaryCfg("current")},stepWarmUpgradeSummary:function(e,t,i,s){var a=this;a.handleWarmUpgradeSummary(e,t,i,s,function(e){"cancel_auto_launch"===e?(a.sendCancelAutoLaunch(),a.owner.getEl().unmask(),a.owner.clearStatusBusy()):"alert_error"===e&&a.alertError(a.owner,t)})},getBasicCancelAutoLaunchCfg:function(){return this.getBasicWebapiCfg("cancel_auto_launch")},sendCancelAutoLaunch:function(){this.sendCompound(this.owner.current.getCancelAutoLaunchCfg())}}),Ext.define("SYNO.SDS.StorageManager.Wizard.FWUpgradePanel",{extend:"SYNO.SDS.StorageManager.Wizard.FWUpgradePanelTemplate",getListDriveCfg:function(){return[Ext.apply(this.getBasicListDriveCfg(),{}),Ext.apply(this.getBasicPollCfg(),{})]},handleListDrive:function(e,t,i,s,a){var n,o,r=this,l="alert_error";if(e&&t.result[0].success){if(o=t.result[0].data,"upgrading"===t.result[1].data.status)return r.owner.changeCard("default",!0),void a(l="start_polling");r.resetGrids(),r.gridPanel=r.createNewGridPanel(),r.changeTitleAndDescState(0===o.drives.length,o.access_network,"single"),n=o.drives.reduce(function(e,t){var i=r.owner.diskMap[t.id];return void 0!==i&&e.push(Ext.apply({id:t.id,serial:t.serial,current_version:t.current_fw,available_version:t.available_fw,status:t.status},r.genDefDiskInfo(i))),e},[]),r.gridPanel.updateDrives(n),a(l="finish_list_drive")}else a(l)},getPrepareCfg:function(){var e=this.gridPanel.dumpDrivesInfo();return[Ext.apply(this.getBasicPrepareCfg(e),{})]},handlePrepare:function(e,t,i,s,a){var n,o="alert_error";e&&t.result[0].success?("need_reload"===(n=t.result[0].data.status)?o="reload_list_drive":"drive_busy"===n?o="alert_drive_busy":"not_enough_space_download_firmware"===n?o="alert_not_enough_space":"no_available_firmware"===n?o="alert_no_network":"lock_failed"===n?o="alert_lock_failed":"cant_get_from_server"===n?o="alert_cant_get_from_server":"need_reboot"===n?o="defer_upgrade":"normal"===n&&(o="start_upgrade"),a(o)):a(o)},getStartUpgradeCfg:function(){return[Ext.apply(this.getBasicStartUpgradeCfg(),{})]},getRebootConfirmMsg:function(){var e=SYNO.SDS.StorageUtils.isXA?"fwupgrade_confirm_reboot_cluster":"fwupgrade_confirm_reboot";return _T("disk_info",e)},handleStartUpgrade:function(e,t,i,s,a){var n="alert_error";e&&t.result[0].success&&(n="start_polling"),a(n)},handleReboot:function(){SYNO.SDS.System.FirmwareUpgradeReboot()},getPollCfg:function(){return[Ext.apply(this.getBasicPollCfg(),{})]},handlePoll:function(e,t,i,s,a){var n,o="alert_error";e&&t.result[0].success?"upgrading"!==(n=t.result[0].data.status)&&("finished"===n&&(o="show_summary"),a(o)):a(o)},getWarmUpgradeSummaryCfg:function(){return[Ext.apply(this.getBasicWarmUpgradeSummaryCfg(),{})]},handleWarmUpgradeSummary:function(e,t,i,s,a){var n="alert_error";e&&t.result[0].success?(this.owner.singleSummaryCmp.showSummary([t.result[0].data]),this.owner.changeCard("single_summary"),a(n="cancel_auto_launch")):a(n)}}),Ext.define("SYNO.SDS.StorageManager.Wizard.FWUpgradePanelSummaryTemplate",{extend:"SYNO.SDS.StorageManager.Wizard.FWUpgradePanelTemplate",createHeadlineCmp:function(){return new Ext.Container({cls:"sm-fwupgrade-desc-panel",items:[{xtype:"syno_displayfield",cls:"sm-fwupgrade-title",htmlEncode:!1,ref:"../titleCmp"},{xtype:"syno_displayfield",value:_T("disk_info","fwupgrade_has_new_firmware_desc"),ref:"../descCmp"}]})},changeType:function(e){var t,i,s;switch(e){case"success":t="fwupgrade_result_successful_title",i="green-status",s="fwupgrade_result_successful_desc";break;case"fail":t="fwupgrade_result_failed_title",i="red-status",s="fwupgrade_result_failed_desc";break;case"upgrading":t="fwupgrade_result_upgrading_title",i="blue-status",s="fwupgrade_result_upgrading_desc";break;default:return void SYNO.Debug.error("Unknown type: ",e)}this.titleCmp.setValue(String.format('{1}',i,_T("disk_info",t))),this.descCmp.setValue(_T("disk_info",s))}}),Ext.define("SYNO.SDS.StorageManager.Wizard.FWUpgradePanelSummary",{extend:"SYNO.SDS.StorageManager.Wizard.FWUpgradePanelSummaryTemplate",showSummary:function(e){var t,i=e[0];t=i.drives.every(function(e){return!0===e.success}),this.changeType(t?"success":"fail"),this.resetGrids(),this.createNewGridPanel(t?"successful_summary":"failed_summary").loadDrivesInfo(i.drives)},getCancelAutoLaunchCfg:function(){return[Ext.apply(this.getBasicCancelAutoLaunchCfg(),{})]}}),Ext.define("SYNO.SDS.StorageManager.Wizard.SHAFWUpgradePanel",{extend:"SYNO.SDS.StorageManager.Wizard.FWUpgradePanelTemplate",NODES:2,constructor:function(e){var t=this,i=Array.apply(null,{length:t.NODES});t.involve_list=i.map(Function.call,function(){return!1}),t.hostname_list=i.map(Function.call,function(){return""}),t.drive_grid_list=[],t.callParent([e])},getListDiskCfg:function(){return{api:"SYNO.Core.Storage.Disk",method:"list",version:"1",params:{offset:0,limit:-1}}},getRebootConfirmMsg:function(){return _T("disk_info","fwupgrade_confirm_reboot_cluster")},genRemoteWebapi:function(e){return{api:"SYNO.SHA.Util",method:"send_remote_webapi",version:1,params:{remote_api:e.api,remote_method:e.method,remote_version:e.version,remote_params:e.params?e.params:{}}}},updateGridList:function(e,t,i,s){var a=this,n=t.reduce(function(e,t){if(void 0!==i[t.id]){let s=Ext.apply({id:t.id,serial:t.serial,current_version:t.current_fw,available_version:t.available_fw,status:t.status},a.genDefDiskInfo(i[t.id]));e.push(s)}return e},[]);e.updateDrives(n),e.setTitleVisible(!0),e.setTableTitle(s)},groupByNodeNum:function(e){var t=this;return e.reduce(function(e,i,s){return e[s%t.NODES].push(i),e},Array.apply(null,{length:t.NODES}).map(Function.call,function(){return[]}))},genWebapiGroup:function(e){var t=this,i=function(e,i){switch(i){case 0:return e;case 1:return t.genRemoteWebapi(e);default:return{}}};return Array.isArray(e)?e.map(i):Array.apply(null,{length:t.NODES}).map(Function.call,function(){return e}).map(i)},getListDriveCfg:function(){var e=[];return(e=e.concat(this.genWebapiGroup(this.getBasicListDriveCfg()))).push({api:"SYNO.SHA.Firmware.Upgrade",method:"get",version:1}),e.push({api:"SYNO.SHA.Panel.Overview",method:"load",version:1}),e},handleListDrive:function(e,t,i,s,a){var n=this,o=t.result[t.result.length-1],r=t.result[t.result.length-2];if(e&&o.success&&o.data.success&&r.success){if(n.hostname_list=["active"===o.data.lnode.role?o.data.lnode.hostname:o.data.rnode.hostname,"active"===o.data.lnode.role?o.data.rnode.hostname:o.data.lnode.hostname],r.data.summary_data&&r.data.summary_data.ui_json.summaryList.reduce(function(e,t,i){var s=n.involve_list[i]="upgrading"===t.status;return e||s},!1))return n.owner.shaSummaryCmp.showSummary(r.data.summary_data.ui_json.summaryList),n.owner.changeCard("sha_summary"),void n.owner.clearStatusBusy();n.resetGrids(),n.drive_grid_list=Array.apply(null,{length:n.NODES}).map(Function.call,function(){return n.createNewGridPanel()});var l=[n.owner.diskMap,n.owner.passiveDiskMap],d=n.groupByNodeNum(t.result.slice(0,t.result.length-2)).reduce(function(e,t,i){var s=t[0];if(!s.success)return n.drive_grid_list[i].setGridVisible(!1),n.involve_list[i]=!1,e;var a=s.data,o=l[i],r=0===a.drives.length;if(n.drive_grid_list[i].setGridVisible(!r),n.involve_list[i]=!r,!r){var d=String.format('{0} ({1})',n.hostname_list[i],0===i?_TT("SYNO.SDS.HA.Instance","ui","active"):_TT("SYNO.SDS.HA.Instance","ui","passive"));n.updateGridList(n.drive_grid_list[i],a.drives,o,d)}return e.up_to_date=e.up_to_date&&r,e.access_network=e.access_network&&a.access_network,e},{up_to_date:!0,access_network:!0});n.changeTitleAndDescState(d.up_to_date,d.access_network,"sha"),a("finish_list_drive")}else a("alert_error")},getPrepareCfg:function(){var e=this,t=e.drive_grid_list.map(function(t){var i=t.dumpDrivesInfo();return e.getBasicPrepareCfg(i)});return e.genWebapiGroup(t)},handlePrepare:function(e,t,i,s,a){var n=this;if(e){a({error:"alert_error",need_reload:"reload_list_drive",drive_busy:"alert_drive_busy",not_enough_space_download_firmware:"alert_not_enough_space",lock_failed:"alert_lock_failed",cant_get_from_server:"alert_cant_get_from_server",no_available_firmware:"alert_no_network",need_reboot:"defer_upgrade",normal:"start_upgrade"}[t.result.reduce(function(e,t,i){if(n.involve_list[i]&&!t.success)return"error";if("error"===e)return e;var s=n.involve_list[i]?t.data.status:"normal";return"need_reload"===e||"need_reload"===s?"need_reload":"drive_busy"===e||"drive_busy"===s?"drive_busy":"not_enough_space_download_firmware"===e||"not_enough_space_download_firmware"===s?"not_enough_space_download_firmware":"no_available_firmware"===e||"no_available_firmware"===s?"no_available_firmware":"lock_failed"===e||"lock_failed"===s?"lock_failed":"cant_get_from_server"===e||"cant_get_from_server"===s?"cant_get_from_server":"need_reboot"===e||"need_reboot"===s?"need_reboot":"normal"===e&&"normal"===s?"normal":(n.involve_list[i]=function(e){return"defer_upgrade"===e||"start_upgrade"===e}(s),"normal")},"normal")])}else a("alert_error")},getStartUpgradeCfg:function(){return[{api:"SYNO.SHA.Firmware.Upgrade",method:"set",version:1,params:{firmware_upgrade_list:this.involve_list,upgrade_type:"start_upgrade"}}]},handleStartUpgrade:function(e,t,i,s,a){var n="alert_error";e&&(n="start_polling"),a(n)},handleReboot:function(){var e={firmware_upgrade_list:this.involve_list,upgrade_type:"defer_upgrade"};SYNO.SDS.HA.RebootHA(this,e)},getPollCfg:function(){return this.genWebapiGroup(this.getBasicPollCfg())},handlePoll:function(e,t,i,s,a){var n=this;e?t.result.every(function(e,t){return!n.involve_list[t]||(!e.success||"finished"===e.data.status)})&&a("show_summary"):a("alert_error")},getWarmUpgradeSummaryCfg:function(){return this.genWebapiGroup(this.getBasicWarmUpgradeSummaryCfg())},handleWarmUpgradeSummary:function(e,t,i,s,a){var n=this,o="alert_error";if(e){var r=t.result.map(function(e,t){return{involve:n.involve_list[t],drives:e.success?e.data.drives:[],hostname:n.hostname_list[t],status:"finished"}});n.owner.shaSummaryCmp.showSummary(r),n.owner.changeCard("sha_summary"),a(o="cancel_auto_launch")}else a(o)}}),Ext.define("SYNO.SDS.StorageManager.Wizard.SHAFWUpgradePanelSummary",{extend:"SYNO.SDS.StorageManager.Wizard.FWUpgradePanelSummaryTemplate",NODES:2,showSummary:function(e){var t=this;t.resetGrids();var i=e.map(function(e,i){var s=t.createNewGridPanel(),a=e.involve,n="upgrading"===e.status,o=function(){if(a)return n?"upgrading":0===e.drives.length?"error":e.drives.every(function(e){return!0===e.success})?"success":"fail"}(),r=String.format('{0} ({1})',e.hostname,0===i?_TT("SYNO.SDS.HA.Instance","ui","active"):_TT("SYNO.SDS.HA.Instance","ui","passive"));return s.setTitleVisible(a),s.setDescVisible(a&&"error"===o),s.setLoadingDescVisible(a&&"upgrading"===o),s.setGridVisible(a&&("success"===o||"fail"===o)),s.setTableTitle(r),s.setDesc(_T("disk_info","fwupgrade_result_failed_desc")),s.setLoadingDesc(_T("disk_info","fwupgrade_result_upgrading_desc")),a&&("success"!==o&&"fail"!==o||(s.loadDrivesInfo(e.drives),s.setType("success"===o?"successful_summary":"failed_summary"))),o}),s=i.some(function(e){return"upgrading"===e});t.changeType(s?"upgrading":i.every(function(e){return void 0===e||"success"===e})?"success":"fail"),s?t.startPolling():t.stopPolling()},genPollingTask:function(){return{interval:3,immediate:!0,webapi:{api:"SYNO.SHA.Firmware.Upgrade",method:"get",version:1},status_callback:function(e,t,i){e&&this.showSummary(t.summary_data.ui_json.summaryList)},scope:this}},startPolling:function(){this.poll||(this.poll=this.pollReg(this.genPollingTask()))},stopPolling:function(){this.poll&&(this.pollUnreg(this.poll),this.poll=null)},getCancelAutoLaunchCfg:function(){return[{api:"SYNO.SHA.Firmware.Upgrade",method:"cancel_auto_launch",version:1}]}}),Ext.define("SYNO.SDS.StorageManager.Wizard.UploadDBDialog",{extend:"SYNO.SDS.ModalWindow",constructor:function(e){this.owner=e.owner,this.updateLastUpdateTime=e.updateLastUpdateTime;var t=Ext.apply({dsmStyle:"v5",title:_T("disk_info","disk_upload_db_title"),resizable:!1,closable:!0,width:600,height:350,useStatusBar:!0,padding:"16px 20px 0px 20px",items:this.getItems(),layout:{type:"vbox",align:"stretch"},buttons:[{text:_T("common","cancel"),scope:this,handler:function(){this.close()}},{text:_T("disk_info","disk_upload_db_apply_btn"),scope:this,btnStyle:"blue",handler:this.onSubmit}]},e);this.callParent([t])},getItems:function(){var e=[];return e.push(this.createMainUploadForm()),e.push({xtype:"box",flex:1}),e.push({xtype:"syno_displayfield",htmlEncode:!1,margins:{top:0,right:0,bottom:12,left:0},value:_T("disk_info","disk_upload_db_note")}),e},createMainUploadForm:function(){return new SYNO.SDS.Utils.FormPanel({itemId:"upload_main",padding:"0px 0px",fileUpload:!0,trackResetOnLoad:!0,frame:!1,border:!1,webapi:{api:"SYNO.Core.Storage.Disk",method:"upload_offlinekit",version:1},items:[{xtype:"syno_displayfield",htmlEncode:!1,value:_T("disk_info","disk_upload_db_desc")},{xtype:"syno_filebutton",fieldLabel:_T("itunes","itunes_path"),name:"offline_kit_file"}],onApiSuccess:Ext.createDelegate(this.onMainUploadSuccess,this),onApiFailure:Ext.createDelegate(this.onUploadFailed,this)})},onSubmit:function(){var e=this.get("upload_main");this.validFileName(e.getForm().findField("offline_kit_file"))&&(this.setStatusBusy({text:_T("update","update_uploading")}),e.upload())},validFileName:function(e){if(!e)return!1;if(!e.isDirty())return this.getMsgBox().alert("",_T("error","error_nochoosefile")),!1;var t=e.getValue();return".sa"==t.substr(t.length-3,3)||(this.getMsgBox().alert("",_T("disk_info","disk_upload_db_error_verify")),!1)},onMainUploadSuccess:function(e,t,i){this.clearStatusBusy(),this.updateLastUpdateTime(t.db_last_update_time),this.appWin.getToastBox(_T("disk_info","disk_update_db_finish"),!1,null,{delay:3e3}),this.close()},onUploadFailed:function(e,t,i){this.clearStatusBusy(),this.getMsgBox().alert("",SYNO.API.getErrorString(t.code))}}),Ext.define("SYNO.SDS.StorageManager.Wizard.EditPool",{extend:"SYNO.SDS.ModalWindow",constructor:function(e){var t,i=this;i.isDataChanged=!1,i.appWin=e.appWin,i.owner=e.owner,i.pool=e.pool,i.allSsdcaches=e.allSsdcaches,i.isVirtualPool=e.isVirtualPool,this.forceClose=!1;var s={xtype:"syno_fieldset",collapsible:!1,title:_T("common","general"),itemId:"general",name:"general",hidden:i.isVirtualPool,items:[{xtype:"syno_textfield",validateOnBlur:!0,validationEvent:"blur",name:"desc",itemId:"desc",fieldLabel:_T("share","share_comment"),disabled:!0,width:250,maxLength:64}]},a={xtype:"syno_fieldset",collapsible:!1,ref:"../stripeCacheFieldset",title:_T("volume","stripe_cache_size"),hidden:!0,items:[{xtype:"syno_radio",name:"stripe_cache_size",ref:"../../radio_default",boxLabel:_T("volume","stripe_cache_size_default"),inputValue:"default"},{xtype:"syno_displayfield",value:_T("storage_pool","stripe_cache_size_default_scenario"),indent:1},{xtype:"syno_radio",name:"stripe_cache_size",ref:"../../radio_small",boxLabel:_T("volume","stripe_cache_size_small"),inputValue:"small"},{xtype:"syno_displayfield",value:_T("storage_pool","stripe_cache_size_small_scenario"),indent:1},{xtype:"syno_displayfield",htmlEncode:!1,value:String.format('{0}{1} {2}',_T("common","note"),_T("common","colon"),_T("volume","stripe_cache_size_notice"))}]},n={xtype:"syno_fieldset",collapsible:!1,title:_T("volume","ssd_trim_title"),ref:"../ssdTrimFieldset",hidden:!0,items:[{xtype:"syno_displayfield",value:_T("storage_pool","pool_setting_ssd_trim_desc")},{xtype:"syno_checkbox",boxLabel:_T("volume","ssd_trim_en"),handler:i.onEnableSSDTrim,name:"ssd_trim_enable",hideLabel:!0,scope:i},{xtype:"syno_displayfield",fieldLabel:_T("schedule","next_trigger_time"),value:i.nextTriggerTime,ref:"../../triggerTimeDisplayField"},{xtype:"syno_button",ref:"../../setScheduleBtn",text:_T("wireless_ap","ap_set_schedule"),handler:i.onSetSchedule,disabled:!0,scope:i}]};t={title:_T("common","common_settings"),items:[new SYNO.ux.FormPanel({itemId:"settingPanel",border:!1,trackResetOnLoad:!0,labelWidth:130,items:[s,a,n]})],width:700,height:480,resizable:!1,layout:"fit",buttons:[{xtype:"syno_button",text:_T("common","alt_cancel"),scope:i,handler:i.onCancel},{xtype:"syno_button",btnStyle:"blue",disabled:_S("demo_mode"),tooltip:_S("demo_mode")?_JSLIBSTR("uicommon","error_demo"):"",text:_T("common","save"),scope:i,handler:i.onSave}],listeners:{beforeclose:this.onBeforeClose.bind(this)}},i.callParent([Ext.apply(t,e)]),i.fieldDesc=i.getComponent("settingPanel").getComponent("general").getComponent("desc")},onEnableSSDTrim:function(e,t){t?(this.setScheduleBtn.enable(),this.setNextTriggerTime(this.nextTriggerTime)):(this.setScheduleBtn.disable(),this.setNextTriggerTime("-"),this.ssdTrim.schedule.next_trigger_time=null)},setNextTriggerTime:function(e){var t;t="-"===e||"N/A"===e?e:SYNO.SDS.DateTimeFormatter(Date.parseDate(e,"Y-n-j h:i")),this.triggerTimeDisplayField.setValue(t),this.triggerTimeDisplayField.initValue()},updateNextTriggerTime:function(e){var t=this,i={},s=this.ssdTrim.schedule,a=this.schedule;"-"===this.nextTriggerTime||this.isScheduleEdited?(i.schedule=this.isScheduleEdited?this.scheduleToOld(a):s,t.setStatusBusy(),SYNO.API.Request({api:"SYNO.Storage.CGI.Volume",method:"next_trim_time_get",version:1,params:i,callback:function(i,s,a,n){t.clearStatusBusy(),i?(this.nextTriggerTime=s.next_trigger_time,e&&t.setNextTriggerTime(this.nextTriggerTime)):SYNO.SDS.StorageUtils.ReportWebapiFailure(this,s)},scope:this})):e&&t.setNextTriggerTime(this.nextTriggerTime)},onSetSchedule:function(){var e=this,t=e;if(this.supportSSDTrim){var i=new SYNO.SDS.TaskScheduler2.ScheduleDialog({title:_T("schedule","schedule_advance"),height:500,listeners:{close:{scope:e,fn:function(){e.schedule=t.schedule,e.isScheduleEdited=!!e.schedule,e.updateNextTriggerTime(!0)}}},owner:t});e.schedule=t.schedule;var s=this.ssdTrim.schedule,a=this.schedule,n=this.isScheduleEdited?a:s;i.open(this.scheduleToNew(n))}},getFirstVolume:function(){return this.pool.volumes.find(e=>!e.isUnstableSpace())},isSupportSSDTrim:function(e){if("yes"!==_D("support_trim","no"))return!1;if("not support"===e)return!1;if(SYNO.SDS.StorageUtils.supportSsdCache&&this.pool.volumes.every(function(e){return!!e.ssdcache}.bind(this)))return!1;return"disabled by time backup"!==e&&"partial support"!==e},scheduleToNew:function(e){if(e.hasOwnProperty("week_name")&&(e.week_day=e.week_name,delete e.week_name),e.hasOwnProperty("repeat")&&(e.repeat_data=e.repeat,e.repeat_date=e.repeat,delete e.repeat),e.hasOwnProperty("min")&&(e.minute=e.min,delete e.min),!e.hasOwnProperty("date")){var t=new Date;e.date=t.getYear()+1900+"/"+(t.getMonth()+1)+"/"+t.getDate(),e.repeat_date=0}return e},scheduleToOld:function(e){return e.hasOwnProperty("week_day")&&(e.week_name=e.week_day,delete e.week_day),e.hasOwnProperty("repeat_data")&&(e.repeat=e.repeat_data,delete e.repeat_data),e.hasOwnProperty("minute")&&(e.min=e.minute,delete e.minute),e.hasOwnProperty("repeat_date")&&(e.repeat=e.repeat_date,delete e.repeat_date),e},updateValues:function(e){e.desc=this.pool.desc,this.fieldDesc.setDisabled(!1),this.getComponent("settingPanel").getForm().setValues(e),this.stripeCacheFieldset.setVisible(this.supportStripeCacheSize),this.ssdTrimFieldset.setVisible(this.supportSSDTrim),this.supportSSDTrim&&(this.setNextTriggerTime(this.nextTriggerTime),"-"===this.nextTriggerTime&&this.updateNextTriggerTime(!1)),this.getComponent("settingPanel").updateFleXcroll()},onOpen:function(){var e=this,t=[];e.isVirtualPool||(t=t.concat({api:"SYNO.Storage.CGI.Pool",method:"get_setting",version:1,params:{pool_path:this.pool.get("space_path")}}));var i=e.getFirstVolume();i&&(t=t.concat({api:"SYNO.Storage.CGI.Volume",method:"ssd_trim_get",version:1,params:{space_path:i.vol_path}})),e.callParent(arguments),e.setStatusBusy({text:_T("common","loading")}),synowebapi.promises.request({api:"SYNO.Entry.Request",version:1,method:"request",compound:{params:t}}).then(function(t){if(t.has_fail)throw new Error("unknown");var i={},s=e.isVirtualPool?0:1;t.result.map(function(e){if(!e.success)throw new Error(e)});var a=e.isVirtualPool?{stripe_cache_size:"not_support"}:t.result[0].data,n={ssd_trim:{support:"not support"}};(1{0}',e)}}],enableHdMenu:!1,sm:new Ext.grid.RowSelectionModel,store:new Ext.data.JsonStore({autoDestroy:!0,idProperty:"item",fields:["item","value"]})},e);return new SYNO.ux.GridPanel(t)},onOpen:function(){this.callParent(arguments),this.loadData()},loadData:function(){var e=this,t=SYNO.SDS.StorageUtils,i=[],s=[],a=[],n=e.diskMap;i.push({item:_T("storage_pool","pool_previous_location"),value:e.pool.get("hostname")}),Ext.isEmpty(e.pool.get("desc"))||i.push({item:_T("volume","pool_desc"),value:Ext.util.Format.htmlEncode(e.pool.get("desc"))}),i.push({item:_T("volume","volume_raid_type"),value:t.SpaceTypeRender(e.pool.get("device_type"),!1)}),Ext.each(e.pool.get("disks"),function(e){var i=n[e];s.push(t.DiskDisplayNameGet(i))}),i.push({item:_T("volume","volume_disk"),value:s.join(", ")}),Ext.each(e.pool.SSDCacheDisks,function(e){a.push(e.name)}),0{0}
',_T("storage_pool","pool_remove_detected_warn")),i.getMsgBox().confirmDelete("",t,function(t){"yes"===t&&SYNO.SDS.Utils.PasswordConfirmDialog.openDialog(i,i.applySettings,["SYNO.Storage.CGI.DetectedPool","remove",e])},i)},onCancel:function(){this.close()},applySettings:function(e,t,i){var s=this;s.setStatusBusy({text:_T("common","saving")}),s.sendWebAPI({api:e,method:t,version:1,params:i,callback:function(e,t,i,a){var n=function(){s.clearStatusBusy(),s.close()}.createDelegate(s);setTimeout(n,6e3)},scope:s})}}),Ext.define("SYNO.SDS.StorageManager.Wizard.RemoveMissing",{extend:"SYNO.SDS.ModalWindow",constructor:function(e){var t,i=this;i.appWin=e.appWin,i.owner=e.owner,i.parent=e.parent,i.pool=e.pool,t={title:_T("storage_pool","pool_remove_missing_title"),width:640,height:350,resizable:!1,layout:"fit",items:[{itemId:"main",border:!1,style:{padding:"16px 20px 0px 20px"},items:[{xtype:"syno_displayfield",value:_T("storage_pool","pool_delete_summary_desc"),itemId:"desc"},i.gridPanel=i.gridPanelConfig()]}],buttons:[{xtype:"syno_button",text:_T("common","alt_cancel"),scope:i,handler:i.onCancel},{xtype:"syno_button",btnStyle:"red",disabled:_S("demo_mode"),tooltip:_S("demo_mode")?_JSLIBSTR("uicommon","error_demo"):"",text:_T("common","remove"),id:i.applyButtonID=Ext.id(),scope:i,handler:i.onSave}]},i.callParent([Ext.apply(t,e)])},gridPanelConfig:function(e){var t=Ext.apply({border:!1,xtype:"syno_gridpanel",height:220,style:{marginTop:"8px"},columns:[{header:_T("status","header_item"),dataIndex:"item",sortable:!1},{header:_T("status","header_value"),dataIndex:"value",sortable:!1,renderer:function(e,t,i){return t.attr='ext:qtip="'+Ext.util.Format.htmlEncode(e)+'"',String.format('{0}',e)}}],enableHdMenu:!1,sm:new Ext.grid.RowSelectionModel,store:new Ext.data.JsonStore({autoDestroy:!0,idProperty:"item",fields:["item","value"]})},e);return new SYNO.ux.GridPanel(t)},onOpen:function(){this.callParent(arguments),this.loadData()},loadData:function(){var e=this,t=SYNO.SDS.StorageUtils,i=[],s=[],a=[],n=e.diskMap;Ext.isEmpty(e.pool.get("desc"))||i.push({item:_T("volume","pool_desc"),value:Ext.util.Format.htmlEncode(e.pool.get("desc"))}),i.push({item:_T("volume","volume_raid_title"),value:t.SpaceTypeRender(e.pool.get("device_type"),!1)}),Ext.each(e.pool.get("disks"),function(e){var i=n[e];s.push(t.DiskDisplayNameGet(i))}),02. {1}",_T("volume","volume_share_encryption_unmount_warning"),t)),void this.getMsgBox().confirm(this.title,t,function(e){"yes"===e&&this.sendRequestVolume()},this);this.sendRequestVolume()},sendRequestVolume:function(){var e,t={};switch(t.pool_path=this.volume.get("pool_path"),t.space_id=this.volume.id,this.manageAction){case"expand_with_unalloc_size":e="expand_unallocated";break;default:return void SYNO.Debug("unknown add type")}this.getButton("next").disable(),this.setStatusBusy({text:_T("common","saving")}),SYNO.API.Request({api:"SYNO.Storage.CGI.Volume",method:e,version:1,params:t,callback:function(e,t,i,s){if(this.clearStatusBusy(),!e)return SYNO.SDS.StorageUtils.HARemoteCheckErrParsing(t),void SYNO.SDS.StorageUtils.ReportWebapiFailure(this,t);this.getButton("next").enable(),this.getButton("next").setText(_T("common","alt_finish")),this.close()},scope:this})}}),Ext.define("SYNO.SDS.StorageManager.Wizard.CreateVolumeModeStep",{extend:"SYNO.SDS.StorageManager.Wizard.Step",constructor:function(e){var t,i=String.format('{0}{1} {2}',_T("common","note"),_T("common","colon"),"{0}");this.loaded=!1,this.option=e.option||{},this.appWin=e.appWin,this.owner=e.owner,t={headline:_T("volume","volume_add_mode_title"),items:[{xtype:"syno_radio",boxLabel:_T("volume","volume_add_mode_systemdefault"),name:"choose_mode",itemId:"quick",inputValue:"quick",disabled:!0},{xtype:"syno_displayfield",htmlEncode:!1,indent:1,value:_T("volume","volume_add_mode_systemdefault_help")},{xtype:"syno_displayfield",htmlEncode:!1,indent:1,value:String.format(i,_T("volume","volume_type_shr_support_note")),hidden:!SYNO.SDS.StorageUtils.supportHA},{xtype:"syno_displayfield",cls:"sm-empty-line"},{xtype:"syno_radio",boxLabel:_T("volume","volume_add_mode_customized"),name:"choose_mode",itemId:"custom",inputValue:"custom",disabled:!0},{xtype:"syno_displayfield",indent:1,value:_T("volume","volume_add_mode_customized_help")},{xtype:"syno_displayfield",htmlEncode:!1,indent:1,value:String.format(i,_T("volume","volume_add_mode_customized_note"))}]},this.callParent([Ext.apply(t,e)])},isQuickMode:function(){return"quick"===this.getForm().getValues().choose_mode},activate:function(){this.loaded||(this.option.can_create_volume?(_S("ha_running")?(this.getComponent("quick").disable(),this.getComponent("custom").setValue(!0)):(this.getComponent("quick").enable(),this.getComponent("quick").setValue(!0)),this.getComponent("custom").enable()):this.option.can_create_volume_on_existing_pool?(this.getComponent("quick").disable(),this.getComponent("custom").enable(),this.getComponent("custom").setValue(!0)):(this.getComponent("quick").disable(),this.getComponent("custom").disable()),this.loaded=!0)},getNext:function(){return this.nextId[this.getForm().getValues().choose_mode]},updateData:function(e){e.quick_mode=this.isQuickMode()},summary:function(e){e.append(_T("volume","volume_space"),_T("volume","volume"))}}),Ext.define("SYNO.SDS.StorageManager.Wizard.VolumeFsTypeStep",{extend:"SYNO.SDS.StorageManager.Wizard.Step",constructor:function(e){var t;this.loaded=!1,this.option=e.option||{},this.appWin=e.appWin,this.owner=e.owner,t={headline:_T("volume","volume_add_fs_title"),cls:"sm-custom-form",items:[{xtype:"syno_radio",boxLabel:_T("volume","volume_add_fs_btrfs"),name:"choose_fs",itemId:"btrfs",inputValue:"btrfs"},{xtype:"syno_displayfield",indent:1,value:_T("volume","volume_add_fs_btrfs_help")},{xtype:"syno_displayfield",cls:"sm-empty-line"},{xtype:"syno_radio",boxLabel:_T("volume","volume_add_fs_ext4"),name:"choose_fs",itemId:"ext4",inputValue:"ext4"},{xtype:"syno_displayfield",indent:1,value:_T("volume","volume_add_fs_ext4_help")},{xtype:"syno_displayfield",htmlEncode:!1,style:{"text-decoration":"underline",marginTop:"18px"},value:_T("volume","volume_choose_fs_info")}]},this.callParent([Ext.apply(t,e)])},isSkip:function(){return!SYNO.SDS.StorageUtils.supportBtrfs},getFsType:function(){return this.getForm().getValues().choose_fs},activate:function(){this.loaded||(SYNO.SDS.StorageUtils.supportBtrfs&&"btrfs"===_D("defaultfs")?this.getComponent("btrfs").setValue(!0):this.getComponent("ext4").setValue(!0),this.loaded=!0)},updateData:function(e){e.fs_type=this.getFsType()},getNext:function(){return this.nextId},summary:function(e){var t;this.isSkip()||(t="btrfs"===this.getFsType()?_T("volume","volume_add_fs_btrfs_type"):_T("volume","volume_add_fs_ext4_type"),e.append(_T("volume","volume_add_fs_type"),t))}}),Ext.define("SYNO.SDS.StorageManager.Wizard.CreateVolumeSummaryStep",{extend:"SYNO.SDS.StorageManager.Wizard.SummaryStep",constructor:function(e){this.isOneBay=!1;var t={headline:_T("volume","volume_wizard_summary_title")};t=Ext.apply(t,e),this.callParent([t])},estimateSize:function(){var e="multiple"===this.getData("raid_type","single");this.owner.setStatusBusy(),this.owner.getButton("next").disable(),SYNO.API.Request({api:"SYNO.Storage.CGI.Volume",method:"estimate_size",version:1,params:{estimate_for:"create",disk_id:this.owner.getDiskIds(),device_type:this.owner.getRaidLevel()},callback:function(t,i,s,a){if(this.owner.clearStatusBusy(),!t)return SYNO.SDS.StorageUtils.ReportWebapiFailure(this,i),void this.owner.getButton("next").disable();this.getStore().append(_T("volume","volume_totalsize"),_T("volume","volume_add_warningabout")+" "+SYNO.SDS.StorageUtils.SizeRender(i.size)),this.checkSize(e?this.getData("allocate_byte",0):parseInt(i.size,10))},scope:this})},checkSize:function(e){var t=this,i=parseInt(SYNO.SDS.StorageUtils.getMaxVolumeSize(),10),s={};e>i&&(s.text=_T("error","error_volume_oversize"),s.text=String.format(s.text,SYNO.SDS.StorageUtils.SizeRender(i)),SYNO.SDS.StorageUtils.ReportWebapiFailure(this,s,function(){t.owner.getButton("next").disable()}))},activate:function(){var e=this.getData("pool_from","create"),t=this.getData("quick_mode",!1),i=this.getData("allocate_byte",0);this.callParent(arguments),"create"===e||t?this.estimateSize():this.checkSize(i)},getNext:function(){return this.owner.applySettings(),!1}}),Ext.define("SYNO.SDS.StorageManager.Wizard.DeleteVolume",{extend:"SYNO.SDS.ModalWindow",serviceNameMap:{media:_T("tree","leaf_mediaservice"),itunes:_T("tree","leaf_itunes"),audio:_T("tree","leaf_audio"),photo:_T("tree","leaf_photo"),netbkp:_T("tree","leaf_netbkp"),web:_T("tree","leaf_web"),download:_T("tree","node_download"),mysql:_T("tree","leaf_mysql"),surveillance:_T("tree","leaf_surveillance"),userhome:_T("user","user_home")},constructor:function(e){var t,i=this;i.isDataChanged=!1,i.appWin=e.appWin,i.owner=e.owner,i.volumeIds=e.volumeIds||[],i.services=void 0,i.deleteFrom=e.deleteFrom,i.isInternalVolume=e.isInternalVolume,t={title:"virtualPool"===i.deleteFrom?_T("volume","volume_remove_raid_group"):_T("volume","volume_delete_volmgr_title"),width:640,height:350,resizable:!1,layout:"fit",items:[{itemId:"main",border:!1,style:{padding:"16px 20px 0px 20px"},items:[{xtype:"syno_displayfield",value:"",id:i.descID=Ext.id(),itemId:"desc"},i.grid=new SYNO.SDS.Wizard.SummaryStep({layout:"fit",height:200,style:{paddingTop:"8px"}})]}],buttons:[{xtype:"syno_button",text:_T("common","alt_cancel"),scope:i,handler:i.onCancel},{xtype:"syno_button",btnStyle:"red",disabled:_S("demo_mode"),tooltip:_S("demo_mode")?_JSLIBSTR("uicommon","error_demo"):"",text:_T("common","remove"),id:i.applyButtonID=Ext.id(),scope:i,handler:i.onSave}]},i.callParent([Ext.apply(t,e)])},onOpen:function(){var e,t=this,i=SYNO.SDS.StorageUtils;t.callParent(arguments),0!==t.volumeIds.length&&(e=t.grid.getStore(),t.isInternalVolume&&i.isSingleBay()&&e.append(_T("volume","volume_storage_pool"),i.SpaceIDParser("reuse_").str),e.append(_T("volume","volume"),i.getVolumeNames(t.volumeIds)),t.setStatusBusy(),SYNO.API.Request({api:"SYNO.Storage.CGI.Volume",method:"enum_resource",version:1,params:{space_id:t.volumeIds},callback:function(e,i,s,a){t.clearStatusBusy(),e?t.loadData(i,s):SYNO.SDS.StorageUtils.ReportWebapiFailure(this,i)},scope:t}))},onSave:function(){var e,t,i=this;e={space_id:i.volumeIds,force:!0},t='1. '+_T("volume","volume_delete_warning")+"
2. ",t+=_T("volume","volume_all_service_stop"),i.setStatusBusy(),SYNO.API.Request({api:"SYNO.Storage.CGI.Volume",method:"pre_delete_check",version:1,params:{space_id:e.space_id},callback:function(s,a,n,o){i.clearStatusBusy(),s?i.getMsgBox().confirmDelete("",t,function(t){"yes"===t&&SYNO.SDS.Utils.PasswordConfirmDialog.openDialog(i,i.apply,["delete",e])},i):SYNO.SDS.StorageUtils.ReportWebapiFailure(i,a)},scope:i})},onCancel:function(){this.close()},loadData:function(e,t){var i=this,s=i.grid.getStore(),a=SYNO.SDS.StorageUtils,n={},o=[],r=a.CheckFailedMsg(e.check),l=!1;"hard_failed"===r?(l=!0,Ext.getCmp(i.applyButtonID).disable(),Ext.getCmp(i.descID).setValue(_T("volume","del_hard_check_fail")),function(e){var t=!0;e.space_id.forEach(function(e){if("crashed"!==i.volumeMap[e].get("status"))return t=!1,!1}),t&&(Ext.getCmp(i.applyButtonID).enable(),Ext.getCmp(i.descID).setValue(_T("volume","del_soft_check_fail")))}(t)):"soft_failed"===r?Ext.getCmp(i.descID).setValue(_T("volume","del_soft_check_fail")):"virtualPool"===i.deleteFrom?Ext.getCmp(i.descID).setValue(_T("storage_pool","pool_delete_summary_desc")):i.isInternalVolume&&a.isSingleBay()?Ext.getCmp(i.descID).setValue(_T("volume","volume_delete_summary_single_bay_internal_desc")):Ext.getCmp(i.descID).setValue(_T("volume","volume_delete_summary_desc")),a.CheckMsg(e.check,l,"volumes",s),e.services&&e.services.length>0&&s.append(_T("volume","volume_warninglistservice"),a.getServiceNames(e.services)),e.iscsiluns&&e.iscsiluns.length>0&&(s.append(_T("volume","volume_iscsitrg_lun"),a.getNamesString(e.iscsiluns)),a.CheckMsg(e.check,l,"iscsiluns",s)),e.shares&&e.shares.length>0&&(s.append(_T("volume","volume_status_warningdelinfo"),a.getNamesString(e.shares)),a.CheckMsg(e.check,l,"shares",s)),e.pkgs&&e.pkgs.length>0&&s.append(_T("pkgmgr","title_packages"),a.getNamesString(e.pkgs)),i.services=e.services,"yes"===_D("support_ssd_cache","no")&&(Ext.each(i.volumeIds,function(e){n[e]=!0}),Ext.each(i.allSsdcaches,function(e){n[e.get("mountSpaceId")]&&o.push(SYNO.SDS.Utils.StorageUtils.SpaceIDParser(e.get("id")).str)},i),0{SYNO.SDS.SocketInst.unregister(e,t)}},onOpen:function(){var e=this;e.callParent(arguments),e.setStatusBusy();const t=this.socketRegister({api:"SYNO.Storage.CGI.Volume.OfflineOp",version:1,method:"pre_estimate",params:{op_type:e.opType,space_id:e.volumeId}},t=>{t&&t.success&&(t.data&&(e.data=t.data),t.execution_time&&t.volume_id===e.volumeId&&(e.execution_time=t.execution_time),e.clearStatusBusy(),e.loadData(e.data))},!0);this.on("destroy",t)},onDoubleConfirm:function(){var e,t,i=this;e={op_type:i.opType,space_id:i.volumeId},t="1. "+_T("volume","volume_service_stop_warning")+"
",t+="2. "+_T("volume","volume_unmount_warning"),i.getMsgBox().confirm("",t,function(t){"yes"===t&&i.execute(e)},i)},onCancel:function(){this.close()},loadData:function(e){var t=this,i=t.grid.getStore(),s=SYNO.SDS.StorageUtils,a=s.CheckFailedMsg(e.check),n=!1;i.removeAll(!0),i.append(_T("volume","volume"),s.getVolumeNames([t.volumeId])),"hard_failed"===a?(n=!0,Ext.getCmp(t.applyButtonID).disable(),Ext.getCmp(t.descID).setValue(String.format(_T("volume","volume_op_hard_check_fail_desc"),s.SpaceIDParser(t.volumeId).num,_T("volume",t.opType)))):"soft_failed"===a?Ext.getCmp(t.descID).setValue(String.format(_T("volume","volume_op_soft_check_fail_desc"),s.SpaceIDParser(t.volumeId).num,_T("volume",t.opType))):Ext.getCmp(t.descID).setValue(String.format(_T("volume","volume_op_unmount_msg"),_T("volume",t.opType))),s.CheckMsg(e.check,n,"volumes",i),e.services&&e.services.length>0&&i.append(_T("volume","volume_warninglistservice"),s.getServiceNames(e.services)),e.iscsiluns&&e.iscsiluns.length>0&&(i.append(_T("volume","volume_iscsitrg_lun"),s.getNamesString(e.iscsiluns)),s.CheckMsg(e.check,n,"iscsiluns",i)),e.shares&&e.shares.length>0&&(i.append(_T("volume","volume_status_warningdelinfo"),s.getNamesString(e.shares)),s.CheckMsg(e.check,n,"shares",i)),e.pkgs&&e.pkgs.length>0&&i.append(_T("pkgmgr","title_packages"),s.getNamesString(e.pkgs)),t.execution_time?i.append(_T("volume","volume_op_time_estimation_desc"),s.TimeRender(t.execution_time)):i.append(_T("volume","volume_op_time_estimation_desc"),_T("volume","volume_op_time_estimating"))},execute:function(e){var t=this;t.setStatusBusy({text:_T("common","saving")}),SYNO.API.Request({api:"SYNO.Storage.CGI.Volume.OfflineOp",method:"execute",version:1,params:e,callback:function(e,i,s,a){t.clearStatusBusy(),e?(t.isDataChanged=!0,t.close()):SYNO.SDS.StorageUtils.ReportWebapiFailure(this,i)},scope:t})}}),Ext.define("SYNO.SDS.StorageManager.Wizard.PoolChoosingStep",{extend:"SYNO.SDS.StorageManager.Wizard.Step",constructor:function(e){var t;this.appWin=e.appWin,this.loaded=!1,t={headline:_T("volume","volume_choose_raid_title"),items:[{xtype:"syno_message_combobox",fieldLabel:_T("volume","volume_pool"),width:250,name:"pools",itemId:"pools",valueField:"id",displayField:"display",descriptionField:"desc",store:this.poolStore=new Ext.data.JsonStore({autoDestroy:!0,idProperty:"id",fields:["id","display","avail","total","desc","raidLevel","multipleSupport","spacePath"]}),listeners:{select:this.onSelect,scope:this}},{xtype:"syno_displayfield",itemId:"raid_level",fieldLabel:_T("volume","volume_raid_type"),htmlEncode:!1},{xtype:"syno_displayfield",itemId:"multiple_volume_support",fieldLabel:_T("volume","volume_multiple_vol_lun_support")},{xtype:"syno_displayfield",itemId:"total_size",fieldLabel:_T("volume","volume_totalsize")},{xtype:"syno_displayfield",itemId:"free_size",fieldLabel:_T("volume","volume_freesize")}]},this.callParent([Ext.apply(t,e)])},activate:function(){var e,t,i=this,s=SYNO.SDS.StorageUtils,a=[];i.loaded||(e=i.appWin.storagePools.getMatched("isFreeSizeBiggerThan1GB","isWritable"),Ext.each(e,function(e){var t,i,n,o,r;r=e.get("id"),t=e.get("size"),n=parseInt(t.used,10),o=(i=parseInt(t.total,10))-n,a.push({id:r,display:String.format("{0} ({1}: {2})",s.SpaceIDParser(r).str,_T("volume","volume_freesize"),s.SizeRenderWithFloor(o)),desc:e.get("desc"),avail:o,total:i,numId:e.get("num_id"),raidLevel:e.get("device_type"),multipleSupport:e.supportMultiple(),spacePath:e.get("space_path")})}),a.sort(function(e,t){return e.numId>t.numId?1:e.numId===t.numId?0:-1}),i.poolStore.loadData(a),(t=i.poolStore.getAt(0))&&(i.getComponent("pools").setValue(t.get("id")),i.onSelect(i,t,0)),i.loaded=!0)},onSelect:function(e,t,i){var s=SYNO.SDS.StorageUtils,a=this.getComponent("raid_level"),n=this.getComponent("multiple_volume_support"),o=this.getComponent("total_size"),r=this.getComponent("free_size");a.setValue(s.SpaceTypeRender(t.data.raidLevel)),n.setValue(t.data.multipleSupport?_T("common","yes"):_T("common","no")),o.setValue(s.SizeRender(t.data.total)),r.setValue(s.SizeRender(t.data.avail))},updateData:function(e){var t=this.getComponent("pools"),i=t.getValue(),s=t.getStore().getById(i);e.selected_pool_id=i,e.raid_level=s.data.raidLevel,e.raid_type=s.data.multipleSupport?"multiple":"single",e.deploy_space_path=s.data.spacePath},getNext:function(){return this.nextId},summary:function(e){}}),Ext.namespace("SYNO.SDS.StorageManager.Pool"),Ext.define("SYNO.SDS.StorageManager.Pool.Settings.Dialog",{extend:"SYNO.SDS.ModalWindow",constructor:function(e){let t=e.owner,i=e.appWin;this.settingPanel=new SYNO.SDS.StorageManager.Pool.ConfigPanel({appWin:i,owner:t});var s=Ext.apply({width:700,height:580,minWidth:700,minHeight:580,layout:"fit",items:this.settingPanel,buttons:[{xtype:"syno_button",btnStyle:"grey",text:_T("common","cancel"),scope:this,handler:this.cancelHandler},{xtype:"syno_button",btnStyle:"blue",text:_T("common","save"),scope:this,handler:this.applyHandler}],listeners:{activate:()=>{this.settingPanel.fireEvent("initData",this)},beforeclose:this.onBeforeClose}},e);this.callParent([s]),this.addManagedComponent(this.settingPanel)},onBeforeClose:function(){if(!this.skipCheckDirty&&this.settingPanel.getForm().isDirty())return this.confirmLostChangePromise({save:function(){this.applyHandler()},dontSave:function(){this.settingPanel.getForm().reset(),this.close()},cancel:function(){}},this),!1},cancelHandler:function(){this.close()},applyHandler:function(){this.settingPanel.applyForm()},forceClose:function(){this.skipCheckDirty=!0,this.close()}}),Ext.define("SYNO.SDS.StorageManager.Pool.ConfigPanel",{extend:"SYNO.SDS.Utils.FormPanel",constructor:function(e){var t,i=this;this.appWin=e.appWin,this.owner=e.owner,this.getFastRepairConfigApi={api:"SYNO.Storage.CGI.Storage",method:"get_fast_repair_config",version:1,params:{}},this.getAutoRepairConfigApi={api:"SYNO.Storage.CGI.Storage",method:"get_auto_repair_config",version:1,params:{}},this.getResyncSpeedApi={api:"SYNO.Storage.CGI.Storage",method:"get_resync_speed",version:1,params:{}};var s={xtype:"syno_fieldset",itemId:"adv_repair",title:_T("storage_pool","repair_adv_setting_title"),listeners:{},items:[]},a={xtype:"syno_fieldset",itemId:"speed_limit",title:_T("data_scrubbing","speed_limit"),items:[{xtype:"syno_radio",name:"speed_option",itemId:"speed_limit_slow",boxLabel:_T("data_scrubbing","speed_limit_slow"),value:!1,inputValue:"resync_slower"},{xtype:"syno_radio",name:"speed_option",itemId:"speed_limit_fast",boxLabel:_T("data_scrubbing","speed_limit_fast"),value:!1,inputValue:"resync_faster"},{xtype:"syno_radio",name:"speed_option",itemId:"speed_limit_manual",boxLabel:_T("data_scrubbing","manual"),value:!1,inputValue:"resync_manual",listeners:{scope:this,check:function(e,t){t?(this.getField("speed_max_comp").setDisabled(!1),this.getField("speed_min_comp").setDisabled(!1),this.getField("speed_max_comp").show(),this.getField("speed_min_comp").show()):(this.getField("speed_max_comp").hide(),this.getField("speed_min_comp").hide(),this.getField("speed_max_comp").setDisabled(!0),this.getField("speed_min_comp").setDisabled(!0)),i.updateFleXcroll()}}},{xtype:"syno_compositefield",itemId:"speed_max_comp",hidden:!0,hideLabel:!0,items:[{xtype:"syno_displayfield",width:70,indent:1,value:_T("data_scrubbing","speed_limit_max")},{xtype:"syno_numberfield",name:"speed_max",itemId:"speed_max",indent:1,validator:function(){return i.speedChecker()},minValue:0},{xtype:"syno_displayfield",width:10,indent:1,value:""},{xtype:"syno_displayfield",indent:1,value:"MB/s"}]},{xtype:"syno_compositefield",itemId:"speed_min_comp",hidden:!0,hideLabel:!0,items:[{xtype:"syno_displayfield",width:70,indent:1,value:_T("data_scrubbing","speed_limit_min")},{xtype:"syno_numberfield",name:"speed_min",itemId:"speed_min",indent:1,validator:function(){return i.speedChecker()},minValue:0},{xtype:"syno_displayfield",width:10,indent:1,value:""},{xtype:"syno_displayfield",indent:1,value:"MB/s"}]},{xtype:"syno_displayfield",htmlEncode:!1,value:''+_T("common","note")+_T("common","colon")+" "+_T("data_scrubbing","resync_speed_note")}]};this.getConfigApis=[];var n=[];i.getConfigApis.push(i.getResyncSpeedApi),n.push(a),"yes"===_D("support_fast_repair","no")&&(s.items.push({xtype:"syno_displayfield",htmlEncode:!1,value:''+_T("storage_pool","fast_repair")+""},{xtype:"syno_displayfield",htmlEncode:!1,value:_T("storage_pool","fast_repair_tip")},{xtype:"syno_checkbox",name:"fast_repair_enable",itemId:"fast_repair_enable",boxLabel:_T("storage_pool","fast_repair_enable")}),i.getConfigApis.push(i.getFastRepairConfigApi)),"yes"===_D("support_auto_repair","no")&&(s.items.push({xtype:"syno_displayfield",htmlEncode:!1,value:''+_T("storage_pool","auto_repair_title")+""},{xtype:"syno_displayfield",htmlEncode:!1,value:_T("storage_pool","auto_repair_desc")},{xtype:"syno_checkbox",name:"auto_repair_enable",itemId:"auto_repair_enable",boxLabel:_T("storage_pool","auto_repair_enable")}),i.getConfigApis.push(i.getAutoRepairConfigApi)),s.items.length>0&&n.push(s),t={title:_T("volume","configuration"),items:n,useDefaultBtn:!1,itemId:"config_panel"},this.callParent([Ext.apply(t,e)]),this.on("initData",()=>{this.onActivate()},this,{single:!0})},getField:function(e){return this.getForm().findField(e)},speedChecker:function(){return this.getField("speed_min").getValue()>=this.getField("speed_max").getValue()?_T("data_scrubbing","resync_speed_setting_warning"):!(1e4