/* Copyright (c) 2023 Synology Inc. All rights reserved. */ Ext.define("SYNO.SDS.StorageManager.Wizard.CacheSetting",{extend:"SYNO.SDS.ModalWindow",constructor:function(e){var t,i=this,s=[],a=function(e,t){return"
"+e+'
'+t+"
"};if(i.appWin=e.appWin,i.owner=e.owner,i.skipSeqIO=e.skipSeqIO,i.maxDegradeFlush=e.maxDegradeFlush,i.metadataCache=e.metadataCache,i.ssdPath=e.ssdPath,i.mountSpaceId=e.mountSpaceId,i.configureOpts=e.configureOpts,i.metadataCacheAndAdvisorShowMsg=e.metadataCacheAndAdvisorShowMsg,i.configureOpts.includes("skipSeqIo")&&s.push({xtype:"syno_checkbox",name:"skip_seq_io",htmlEncode:!1,boxLabel:a(_T("volume","cache_skip_seq_io"),_T("volume","cache_skip_seq_io_desc")),value:0}),i.configureOpts.includes("maxDegradeFlush")&&s.push({xtype:"syno_checkbox",name:"max_degrade_flush",htmlEncode:!1,boxLabel:a(_T("volume","cache_max_degrade_flush"),_T("volume","cache_max_degrade_flush_desc")),value:0}),i.configureOpts.includes("metadataCache")){var n=SYNO.SDS.StorageUtils.GetSizeUnit(e.volume.metadata_cache_hard_lower_bound_byte);s.push({xtype:"syno_checkbox",name:"metadata_cache",htmlEncode:!1,disabled:!e.metadataCache&&e.totalSize0?i.metadataCacheAndAdvisorShowMsg(i,s,"setting").then(function(e){e&&i.__onSave(!1)}):(this.isDataChanged=!0,this.skipCheckDirty=!0,this.close()):SYNO.SDS.StorageUtils.ReportWebapiFailure(this,s)},scope:this})):this.close()},onSave:function(){this.__onSave()},onCancel:function(){this.close()},onBeforeCancel:function(){var e=this;return!(!this.skipCheckDirty&&this.getForm().isDirty())||(this.confirmLostChangePromise({save:function(){e.onSave()},dontSave:function(){e.getForm().reset(),e.close()},cancel:Ext.emptyFn},e),!1)}}),Ext.namespace("SYNO.SDS.TaskScheduler.SMART"),Ext.namespace("SYNO.SDS.StorageManager.Disk"),SYNO.SDS.StorageManager.Disk.UTILIZATION_THRESHOLD=5,SYNO.SDS.StorageManager.Disk.COMPARE_WARN_THRESHOLD=5,SYNO.SDS.StorageManager.Disk.DISK_PERF_NUM_THRESHOLD=3,SYNO.SDS.StorageManager.Disk.ERR_DISK_IN_USE=403,SYNO.SDS.StorageManager.Disk.ERR_PERFORMANCE_TEST=404,SYNO.SDS.StorageManager.Disk.ERR_TESTING=406,SYNO.SDS.StorageManager.Disk.ERR_PERF_TESTING=407,SYNO.SDS.StorageManager.Disk.ERR_SECURITY_ERASING=408,SYNO.SDS.StorageManager.Disk.ERR_FW_UPGRADING=409,SYNO.SDS.StorageManager.Disk.ERR_DISK_NUM_INSUFFICIENT=410,SYNO.SDS.StorageManager.Disk.HISTORY_DAY_INTERVAL=1,SYNO.SDS.StorageManager.Disk.HISTORY_MONTH_INTERVAL=31,SYNO.SDS.StorageManager.Disk.HISTORY_SEASON_INTERVAL=92,SYNO.SDS.StorageManager.Disk.HISTORY_DAY_SKIP=0,SYNO.SDS.StorageManager.Disk.HISTORY_MONTH_SKIP=0,SYNO.SDS.StorageManager.Disk.HISTORY_YEAR_SKIP=0,SYNO.SDS.StorageManager.Disk.HISTORY_SEASON_SKIP=0,SYNO.SDS.TaskScheduler.SMART.LastTriggerTimeGet=function(e){var t=null;return e?(e.forEach(function(e){var i;e.next_trigger_time&&(i=Date.parseDate(e.next_trigger_time,"Y-m-d H:i"))&&(!t||t.getTime()>i.getTime())&&(t=i)}),null===t?null:SYNO.SDS.DateTimeFormatter(t)):null},Ext.define("SYNO.SDS.StorageManager.Wizard.SmartTest",{extend:"SYNO.SDS.ModalWindow",constructor:function(e){this.panel=new SYNO.SDS.StorageManager.SmartTestView(Ext.apply({appWin:this,parentWin:this,style:"padding: 16px 20px 0px;"},e));var t=Ext.apply({title:_T("smart","smart_toolbar_smart_test"),width:650,height:475,minHeight:380,minWidth:560,layout:"fit",dsmStyle:"v5",items:[{xtype:"syno_panel",autoFlexcroll:!0,items:this.panel}],buttons:[{text:_T("common","alt_close"),handler:this.close,scope:this}]},e);this.callParent([t])},onActivate:function(){this.panel.onActivate()}}),Ext.define("SYNO.SDS.StorageManager.SmartTestView",{extend:"SYNO.ux.Panel",constructor:function(e){var t,i=this;if(i.isPassiveDisk=e.isPassiveDisk,i.owner=e.owner,i.appWin=e.appWin,i.device=e.device,i.parent=e.parent,i.parentWin=e.parentWin,i.isHaPanel=e.isHaPanel,i.needRefresh=!1,i.needSchedule=!0!==e.isHaPanel&&e.needSchedule,i.adv_support=!1,!1===i.isHaPanel&&e.disks)for(var s=0;s{1}',a.color,a.text),""!==e.test_time&&(s+=String.format(" ({0})",SYNO.SDS.DateTimeFormatter(Date.parseDate(e.test_time,"Y/m/d H:i:s"),{type:"datetimesec"}))),Ext.getCmp(t.testResultId).setRawValue(s),i=""===a.code?a.tooltip:"unknown"===a.code?e.test_code+". "+a.tooltip:a.code+". "+a.tooltip,Ext.getCmp(t.testOutputId).setRawValue(i),e.disk_code){case"ironwolf":Ext.getCmp(t.noteId).setValue(_T("disk_info","disk_ironwolf_link_note"));break;case"ironwolf_pro":Ext.getCmp(t.noteId).setValue(_T("disk_info","disk_ironwolf_pro_link_note"));break;default:Ext.getCmp(t.noteId).setValue(""),Ext.getCmp(t.noteId).setVisible(!1)}t.testing=e.testing,t.testing?(SYNO.SDS.StorageUtils.setUpdateTimeAnimate(!0,Ext.getCmp(t.testingStatusId),_T("background_task","task_processing")),Ext.getCmp(t.testingStatusId).setVisible(!0),Ext.getCmp(t.testBtnId).setText(_T("smart","smart_test_button_stop")),t.needRefresh=!0):(Ext.getCmp(t.testingStatusId).setRawValue(""),Ext.getCmp(t.testingStatusId).setVisible(!1),Ext.getCmp(t.testBtnId).setText(_T("smart","smart_test_button_start")),t.needRefresh&&(t.appWin.healthOverviewPanel&&t.appWin.healthOverviewPanel.onHealthInfoRefresh({device:t.device,ignoreBusyMask:!0}),t.needRefresh=!1)),_S("demo_mode")?(Ext.getCmp(this.testBtnId).setDisabled(!0),Ext.getCmp(this.testBtnId).setTooltip(_JSLIBSTR("uicommon","error_demo"))):t.testing||!e.perf_testing&&!e.smart_testing?(Ext.getCmp(this.testBtnId).setDisabled(!1),Ext.getCmp(this.testBtnId).setTooltip("")):(Ext.getCmp(this.testBtnId).setDisabled(!0),Ext.getCmp(this.testBtnId).setTooltip(_T("disk_info","other_is_testing"))),t.doLayout()},onApply:function(){var e="";this.testing?(e="stop",this.sendTestRequest(e)):(e="start",this.confirmTestRequest(e))},confirmTestRequest:function(e){var t=this;t.appWin.getMsgBox().confirm("",_T("disk_info","disk_ironwolf_test_processing"),function(i){"yes"===i&&t.sendTestRequest(e)},t)},sendTestRequest:function(e){var t=this;t.appWin.setStatusBusy({text:_T("common","saving")}),t.appWin.sendWebAPI(SYNO.SDS.StorageUtils.ReplaceWebapiSHA(this.isPassiveDisk,{api:"SYNO.Core.Storage.Disk",version:1,method:"do_adv_test",params:{device:t.device,type:e},callback:function(e,i,s,a){if(!e)return t.appWin.clearStatusBusy(),t.appWin.getMsgBox().alert("",_T("error","error_error_system")),void t.pollingTaskStop();t.cleanMask=!0,t.appWin.sendWebAPI(SYNO.SDS.StorageUtils.ReplaceWebapiSHA(this.isPassiveDisk,{api:"SYNO.Core.Storage.Disk",version:1,method:"get_adv_test_log",params:{device:t.device},callback:function(e,i,s,a){if(t.cleanMask&&(t.appWin.clearStatusBusy(),t.cleanMask=!1),!e)return t.appWin.getMsgBox().alert("",_T("common","error_system")),void t.pollingTaskStop();t.needRefresh=!0,t.fillData(i)},scope:t}))},scope:t}))},onRenderScheduleStatus:function(){var e,t=this,i=t.getComponent("form").getComponent("test_field");!0===t.needSchedule&&t.appWin.healthInfo&&t.appWin.healthInfo.overview&&!0===t.appWin.healthInfo.overview.adv_scheduled?e=SYNO.SDS.TaskScheduler.SMART.LastTriggerTimeGet(t.appWin.healthInfo.overview.ihm_schedule_list):!0===t.needSchedule&&(e=_T("disk_info","health_info_ironwolf_sched_guide")),i.getComponent("scheduleStatus").setRawValue(Ext.isEmpty(e)?"-":e)}}),Ext.define("SYNO.SDS.StorageManager.WddaView",{extend:"SYNO.ux.Panel",constructor:function(e){var t,i=this;i.owner=e.owner,i.appWin=e.appWin,i.device=e.device,i.parent=e.parent,i.cleanMask=!1,t=Ext.apply({title:_T("disk_info","disk_wdda_title"),layout:"fit",items:[i.configForm({itemId:"form"})],listeners:{scope:i,beforedestroy:i.pollingTaskStop}},e),i.TestLogPollingConf=i.getPollingConf(i.device),i.callParent([t])},onActivate:function(){this.pollingTaskStart()},configForm:function(e){return Ext.apply({xtype:"syno_formpanel",border:!1,padding:0,items:[{xtype:"syno_fieldset",collapsible:!1,title:_T("disk_info","disk_wdda_full_title"),htmlEncode:!1,itemId:"testField",synodefaults:{width:200},items:[{xtype:"syno_displayfield",value:_T("disk_info","disk_wdda_description")},{xtype:"syno_displayfield",itemId:"status",fieldLabel:_T("common","status")},{xtype:"syno_displayfield",itemId:"result",htmlEncode:!1,fieldLabel:_T("smart","smart_test_result_sentence")},{xtype:"syno_displayfield",itemId:"recommend",htmlEncode:!1,fieldLabel:_T("smart","smart_test_recommend")}]}]},e)},getPollingConf:function(e){var t=this;if(!e)throw Error("param error: device is not set");return{interval:5,immediate:!0,webapi:SYNO.SDS.StorageUtils.ReplaceWebapiSHA(this.isPassiveDisk,{api:"SYNO.Core.Storage.Disk",version:1,method:"get_wdda_test_result",params:{device:t.device}}),status_callback:function(e,i,s,a){if(t.cleanMask&&(t.appWin.clearStatusBusy(),t.cleanMask=!1),!e)return t.appWin.getMsgBox().alert("",_T("status","status_not_available")),void t.pollingTaskStop();t.fillData(i)},scope:t}},pollingTaskStart:function(){void 0===this.TestLogPollingID&&(this.TestLogPollingID=this.pollReg(this.TestLogPollingConf))},pollingTaskStop:function(){void 0!==this.TestLogPollingID&&(this.pollUnreg(this.TestLogPollingID),this.TestLogPollingID=void 0)},fillData:function(e){var t,i="",s=SYNO.SDS.StorageUtils.DiskWddaRender(e.test_result),a=this.getComponent("form").getComponent("testField");a&&s&&(a.getComponent("status").setValue(e.is_wdda_enabled?_T("common","enabled"):_T("common","disabled")),i=String.format('{1}',s.color,s.result),""!==e.test_time&&(i+=String.format(" ({0})",SYNO.SDS.DateTimeFormatter(Date.parseDate(e.test_time,"Y/m/d H:i:s"),{type:"datetimesec"}))),a.getComponent("result").setValue(e.is_wdda_enabled?i:"-"),t=s.recommend,a.getComponent("recommend").setValue(e.is_wdda_enabled&&!Ext.isEmpty(t)?t:"-"),this.doLayout())}}),Ext.define("SYNO.SDS.StorageManager.Wizard.HealthInfo",{extend:"SYNO.SDS.ModalWindow",constructor:function(e){var t=[];this.cfg=e,this.cfg.appWin=this,this.cfg.isPassiveDisk=e.isPassiveDisk||e.is_target_ha_passive,this.healthOverviewPanel=new SYNO.SDS.StorageManager.HealthOverview(Ext.apply({id:this.healthOverviewId=Ext.id()},this.cfg)),this.smartPanel=new SYNO.SDS.StorageManager.SmartPanel(Ext.apply({id:this.smartPanelId=Ext.id()},this.cfg)),this.smartInfoPanel=new SYNO.SDS.StorageManager.SmartInfo(Ext.apply({id:this.smartInfoId=Ext.id(),isNvme:!1},this.cfg)),this.smartInfoNVMePanel=new SYNO.SDS.StorageManager.SmartInfo(Ext.apply({id:this.smartInfoNVMeId=Ext.id(),isNvme:!0},this.cfg)),this.advPanel=new SYNO.SDS.StorageManager.AdvTestView(Ext.apply({id:this.advTestViewId=Ext.id(),needSchedule:!0},this.cfg)),this.wddaPanel=new SYNO.SDS.StorageManager.WddaView(Ext.apply({id:this.wddaViewId=Ext.id()},this.cfg)),t.push(this.healthOverviewPanel),t.push(this.smartInfoPanel),t.push(this.smartInfoNVMePanel),t.push(this.advPanel),t.push(this.wddaPanel),t.push(this.smartPanel),t.push(new SYNO.SDS.StorageManager.HealthHistory(Ext.apply({id:this.healthHistoryId=Ext.id()},this.cfg)));var i=new SYNO.SDS.Utils.TabPanel({id:this.tabPanelId=Ext.id(),activeTab:0,items:t}),s="";SYNO.SDS.StorageUtils.isSHA&&(s=" - "+(this.cfg.isPassiveDisk?_T("ui","passive"):_T("ui","active")));var a=Ext.apply({title:_T("disk_info","disk_health_info")+" - "+e.name+s,modal:!1,width:820,height:580,minWidth:820,minHeight:580,layout:"fit",items:i,buttons:[{text:_T("common","alt_close"),handler:this.close,scope:this}]},e);this.callParent([a]),Ext.getCmp(this.tabPanelId).hideTabStripItem(this.advTestViewId),Ext.getCmp(this.tabPanelId).hideTabStripItem(this.wddaViewId),Ext.getCmp(this.tabPanelId).hideTabStripItem(this.smartInfoId),Ext.getCmp(this.tabPanelId).hideTabStripItem(this.smartInfoNVMeId),Ext.getCmp(this.tabPanelId).hideTabStripItem(this.smartPanelId),Ext.getCmp(this.tabPanelId).hideTabStripItem(this.healthHistoryId)},removeTab:function(e){var t=0;void 0!==e&&(t+=40,t+=7*Ext.getCmp(this.healthOverviewId).title.length+40,"yes"===_D("support_ihm")&&"not_support"!==e.adv_status?(Ext.getCmp(this.tabPanelId).unhideTabStripItem(this.advTestViewId),t+=7*Ext.getCmp(this.advTestViewId).title.length+40):"yes"===_D("support_wdda")&&"not_support"!==e.wdda_status&&(Ext.getCmp(this.tabPanelId).unhideTabStripItem(this.wddaViewId),t+=7*Ext.getCmp(this.wddaViewId).title.length+40),this.supportSmartTest?(Ext.getCmp(this.tabPanelId).unhideTabStripItem(this.smartPanelId),t+=7*Ext.getCmp(this.smartPanelId).title.length+40,this.smartPanel.removePanel(e.smartInfo_support)):e.smartInfo_support&&(e.isNVMeDisk?(Ext.getCmp(this.tabPanelId).unhideTabStripItem(this.smartInfoNVMeId),t+=7*Ext.getCmp(this.smartInfoNVMeId).title.length+40):(Ext.getCmp(this.tabPanelId).unhideTabStripItem(this.smartInfoId),t+=7*Ext.getCmp(this.smartInfoId).title.length+40)),this.supportSmartTest&&(Ext.getCmp(this.tabPanelId).unhideTabStripItem(this.healthHistoryId),t+=7*Ext.getCmp(this.healthHistoryId).title.length+40),this.getWidth()','
','
','
','
',"
",'
','
{text}
','
{desc}
',"
',"
","
",""),store:this.healthStore=new Ext.data.JsonStore({autoDestroy:!0,fields:["status","text","desc","iconCls","statusIconCls"]})}),this.adv_support=!1,!1===this.isHaPanel)for(var t=0;t{1}',e,t),String.format(i,s)},i="",s="",a="",n="",o="";switch(e.overview_status){case"normal":i="normal",s=_T("disk_info","disk_status_healthy"),a=_T("disk_info","disk_smart_ok_desc"),o="normal","life_below_thr"===e.smart_info?(a=_T("disk_info","disk_status_remain_life_desc"),o="life_below_thr"):!0===e.sb_days_left_warning&&(a=_T("disk_info","ssd_bundle_useful_time_desc"),o="sb_days_left_warning");break;case"warning":i="warning",s=_T("disk_info","disk_status_warning"),n=_T("disk_info","disk_status_warning_action"),!0===e.smart_fail_repeat?(a=t(this.gotoSmartInfoPanelLinkId,_T("smart","smart_toolbar_smart_info"),_T("disk_info","disk_status_smart_repeat_fail_main_desc")),o="smart_info_repeat"):!0===e.smart_fail_past?(a=t(this.gotoSmartInfoPanelLinkId,_T("smart","smart_toolbar_smart_info"),_T("disk_info","disk_status_smart_info_normal_past_main_desc")),o="smart_info_past"):"normal_past"===e.smart_test?(a=t(this.gotoSmartTestPanelLinkId,_T("smart","smart_toolbar_smart_test"),_T("disk_info","disk_status_smart_test_normal_past_main_desc")),o="smart_test_past"):"warning"===e.adv_status?(a=t(this.gotoIronWolfPanelLinkId,_T("disk_info","disk_ironwolf_test")+": ","{0}"+_T(e.adv_section,e.adv_key)),o="ihm_test_warning",n=""):"warning"===e.wdda_status?(a=t(this.gotoWddaPanelLinkId,_T("disk_info","disk_wdda_title"),_T("disk_info","disk_status_wdda_warning_main_desc")),o="wdda_warning",n=_T("disk_info","disk_status_wdda_warning_action")):e.isNVMeDisk&&e.nvme_perc_used_full?(a=_T("disk_info","nvme_percentage_used_full"),o="nvme_warning_perctage_used_full"):e.isNVMeDisk&&e.critial_warning.temp_over_thr&&(a=_T("notification_event","DiskTemperatureAbnormal"),o="nvme_warning_temp",n=_T("disk_info","disk_status_temperature_warning_action"));break;case"critical":i="critical",s=_T("disk_info","disk_status_critical"),n=_T("disk_info","disk_status_critical_action"),"yes"===_S("support_synodrive_ability")&&("fail"===e.smart_test?(a=t(this.gotoSmartTestPanelLinkId,_T("smart","smart_toolbar_smart_test"),_T("disk_info","disk_status_critical_smart_fail_main_desc")),o="smart_test_fail"):"failing"===e.adv_status?(a=t(this.gotoIronWolfPanelLinkId,_T("disk_info","disk_ironwolf_test")+": ","{0}"+_T(e.adv_section,e.adv_key)),o="ihm_test_fail",n=""):e.isNVMeDisk&&e.critial_warning.read_only&&(a=_T("disk_info","nvme_critical_warning_read_only_mode"),o="nvme_fail")),"life_danger"===e.smart_info?(a=_T("disk_info","disk_status_remain_life_severe_main_desc"),o="life_danger"):!0===e.sb_days_left_critical?(a=_T("disk_info","ssd_bundle_useful_time_severe_desc"),o="sb_days_left_critical"):!0===e.smart_fail_critical?(a=t(this.gotoSmartInfoPanelLinkId,_T("smart","smart_toolbar_smart_info"),_T("disk_info","disk_status_smart_critical_fail_main_desc")),o="smart_info_critical"):"critical"===e.health_prediction?(a=this.preparePredictDesc(e.health_prediction_factor),n="",o="health_prediction_critical"):"critical"===e.adv_status?(a=t(this.gotoIronWolfPanelLinkId,_T("disk_info","disk_ironwolf_test")+": ","{0}"+_T(e.adv_section,e.adv_key)),o="ihm_test_critical",n=""):!0===e.isNVMeDisk?e.critial_warning.spare_below_thr?(a=String.format(_T("disk_info","nvme_critical_warning_reach_vendor_threshold"),e.remain_life,e.remain_life_thr),o="nvme_critical_below_vender_thr"):e.critial_warning.degraded?(a=_T("disk_info","nvme_critical_warning_media_error"),o="nvme_critical_degraded"):e.critial_warning.vm_backup_fail&&(a=_T("disk_info","nvme_critical_warning_volatile_memory_backup_device_fail"),o="nvme_critical_vm_backup_fail"):"critical"===e.disk_error_unc_status?(a=_T("disk_info","disk_status_unc_critical_main_desc_guide"),n="",o="disk_error_critical_unc"):"critical"===e.disk_error_timeout_status?(a=_T("disk_info","disk_status_timeout_critical_main_desc_guide"),n="",o="disk_error_critical_timeout"):"critical"===e.disk_error_reset_fail_status&&(a=_T("disk_info","disk_status_reset_fail_critical_main_desc_guide"),n="",o="disk_error_critical_reset_fail");break;case"failing":i="failing",s=_T("disk_info","disk_status_failing"),n=_T("disk_info","disk_status_failing_action"),"fail"===e.smart_test?(a=t(this.gotoSmartTestPanelLinkId,_T("smart","smart_toolbar_smart_test"),_T("disk_info","disk_status_critical_smart_fail_main_desc")),o="smart_test_fail"):"failing"===e.adv_status?(a=t(this.gotoIronWolfPanelLinkId,_T("disk_info","disk_ironwolf_test")+": ","{0}"+_T(e.adv_section,e.adv_key)),o="ihm_test_fail",n=""):e.isNVMeDisk&&e.critial_warning.read_only&&(a=_T("disk_info","nvme_critical_warning_read_only_mode"),o="nvme_fail");break;case"not_support":i="critical",s=_T("disk_info","disk_compatibility_incompatible"),n=_T("disk_info","disk_status_forbidden_action"),a=_T("disk_info","disk_compatibility_incompatible_status");break;case"not_in_support":i="critical",s=_T("disk_info","disk_compatibility_unverified"),n=_T("disk_info","disk_status_unverified_action"),a=_T("disk_info","disk_compatibility_unverified_status");break;case"fw_upgrade_required":i="critical",s=_T("disk_info","disk_compatibility_fwupgrade_required"),n=_T("disk_info","disk_status_fwupgrade_action"),a=_T("disk_info","disk_compatibility_fwupgrade_required_status");break;default:SYNO.Debug.error("no such status",e.overview_status),i=""}return Ext.isEmpty(n)||(a+="
"+n),{diskStatus:i,text:s,desc:a,mainStatus:o}},onLoadSuccess:function(e){var t,i={},s=[],a=SYNO.SDS.StorageUtils,n="",o=this.getComponent("statisticsFieldSet"),r=o.getComponent("tempDisplayField"),l=o.getComponent("poweronDisplayField"),d=o.getComponent("retryDisplayField"),_=o.getComponent("idnfDisplayField"),p=o.getComponent("remainLifeDisplayField"),c=o.getComponent("SBMonthLeftDisplayField");let u=a.DiskCompIssueCheck(e.compatibility);const m=a.DiskCanShowInfo(e.compatibility);r.setValue(a.DiskTemperatureRender(this.temp)),(e.isSataDisk||e.isNVMeDisk)&&l.setValue(String.format("{0} {1}",e.poweron,1===parseInt(e.poweron,10)?_T("common","time_hour"):_T("common","time_hours"))),e.isSataDisk&&(d.setValue(e.retry),_.setValue(e.idnf)),l.setVisible(e.isSataDisk||e.isNVMeDisk),d.setVisible(e.isSataDisk),_.setVisible(e.isSataDisk),this.appWin.removeTab(e),-1!==e.remain_life&&m?(p.setVisible(!0),p.setValue(a.RemainLifeRenderOld(e.remain_life,e.below_remain_life_show_thr,e.remain_life_danger)),SYNO.ux.AddWhiteTipWithMsg(p,String.format(_T("disk_info","disk_remain_life_info"),e.remain_life_attr))):p.setVisible(!1),e.sb_days_left_warning&&m?(c.setVisible(!0),c.setValue(a.SBTimeStringFormatRender(e.sb_days_left,e.sb_days_left_critical)),SYNO.ux.AddWhiteTipWithMsg(c,_T("disk_info","ssd_bundle_option_info"))):c.setVisible(!1),m||(r.setValue("-"),l.setValue("-"),d.setValue("-"),_.setValue("-"),p.setValue("-"),c.setValue("-")),o.show(),i.iconCls="sm-overview-health-mini-icon",i.statusIconCls="sm-overview-health-mini-status-icon",u&&(e.overview_status=e.compatibility);var h=this.renderOverviewStatus(e);i.status=h.diskStatus,i.text=h.text,i.desc=h.desc,t=h.mainStatus,""!==i.status&&(s.push(i),this.healthStore.loadData(s),this.onRenderButton(e),0!==e.retry&&m&&SYNO.ux.AddWhiteTipWithMsg(d,String.format(_T("disk_info","disk_retry_info_guide"))),0!==e.idnf&&m&&SYNO.ux.AddWhiteTipWithMsg(_,String.format(_T("disk_info","disk_identify_failed_info_guide"))),n+=this.addBottomDescFailing(e,t),n+=this.addBottomDescCritical(e,t),n+=this.addBottomDescWarning(e,t),n+=this.addBottomDescInfo(e,t),u&&(n=""),""===n?(Ext.getCmp(this.system_long_desc_id).hide(),Ext.getCmp(this.description_field_id).hide()):(Ext.getCmp(this.system_long_desc_id).setValue(n),Ext.getCmp(this.system_long_desc_id).show(),Ext.getCmp(this.description_field_id).show()),this.doLayout())},onLoadFail:function(){var e={},t=[];this.appWin.removeTab(),e.status="access_error",e.text=_T("disk_info","disk_status_access_err"),e.desc=_T("disk_info","disk_status_access_err_desc"),"yes"===_S("support_synodrive_ability")&&(e.status="critical",e.text=_T("disk_info","disk_status_critical")),e.iconCls="sm-overview-health-mini-icon",e.statusIconCls="sm-overview-health-mini-status-icon",t.push(e),this.healthStore.loadData(t),Ext.getCmp(this.system_long_desc_id).hide(),Ext.getCmp(this.description_field_id).hide(),this.doLayout()},addBottomDescFailing:function(e,t){var i="";return"smart_test_fail"!==t&&(i+="fail"===e.smart_test?_T("disk_info","disk_status_critical_smart_fail_desc")+"

":""),"ihm_test_fail"!==t&&(i+="failing"===e.adv_status?_T(e.adv_section,e.adv_key)+"

":""),"nvme_fail"!==t&&(i+=e.isNVMeDisk&&e.critial_warning.read_only?_T("disk_info","nvme_critical_warning_read_only_mode")+"

":""),i},addBottomDescCritical:function(e,t){var i="",s=0;for("life_danger"!==t&&"nvme_fail"!=t&&(i+="life_danger"===e.smart_info?_T("disk_info","disk_status_remain_life_severe_main_desc")+"

":""),"sb_days_left_critical"===t||"life_danger"===e.smart_info||e.isNVMeDisk&&e.critial_warning.read_only||(i+=!0===e.sb_days_left_critical?_T("disk_info","ssd_bundle_useful_time_severe_desc")+"

":""),s=0;s
":String.format(_T("disk_info","disk_status_smart_critical_fail_bottom_desc"),e.smart_fail[s].id,e.smart_fail[s].name)+"

");return"health_prediction_critical"!==t&&(i+="critical"===e.health_prediction?this.preparePredictDesc(e.health_prediction_factor)+"

":""),"ihm_test_critical"!==t&&(i+="critical"===e.adv_status?_T(e.adv_section,e.adv_key)+"
":""),i+=!0===e.read_only?_T("disk_info","disk_ro_protect_bad_block_thr_desc")+"
":"",!0===e.isNVMeDisk&&("nvme_critical_below_vender_thr"!==t&&(i+=e.critial_warning.spare_below_thr?String.format(_T("disk_info","nvme_critical_warning_reach_vendor_threshold"),e.remain_life,e.remain_life_thr)+"

":""),"nvme_critical_degraded"!==t&&(i+=e.critial_warning.degraded?_T("disk_info","nvme_critical_warning_media_error")+"

":""),"nvme_critical_vm_backup_fail"!==t&&(i+=e.critial_warning.vm_backup_fail?_T("disk_info","nvme_critical_warning_volatile_memory_backup_device_fail")+"

":"")),"disk_error_critical_unc"!==t&&(i+="critical"===e.disk_error_unc_status?_T("disk_info","disk_status_unc_critical_main_desc_guide")+"

":""),"disk_error_critical_timeout"!==t&&(i+="critical"===e.disk_error_timeout_status?_T("disk_info","disk_status_timeout_critical_main_desc_guide")+"

":""),"disk_error_critical_reset_fail"!==t&&(i+="critical"===e.disk_error_reset_fail_status?_T("disk_info","disk_status_reset_fail_critical_main_desc_guide")+"

":""),i},addBottomDescWarning:function(e,t){var i="",s=0;for(s=0;s
":String.format(_T("disk_info","disk_status_smart_repeat_fail_bottom_desc"),e.smart_fail[s].id,e.smart_fail[s].name)+"

":"past"===e.smart_fail[s].type&&(i+=String.format(_T("disk_info","disk_status_smart_info_normal_past_bottom_desc"),e.smart_fail[s].id,e.smart_fail[s].name)+"

");return"smart_test_past"!==t&&"normal_past"===e.smart_test&&(i+=String.format(_T("disk_info","disk_status_smart_test_normal_past_main_desc"),_T("smart","smart_toolbar_smart_test"))+"

"),"ihm_test_warning"!==t&&(i+="warning"===e.adv_status?_T(e.adv_section,e.adv_key)+"

":""),"wdda_warning"!==t&&"warning"===e.wdda_status&&(i+=String.format(_T("disk_info","disk_status_wdda_warning_main_desc"),_T("disk_info","disk_wdda_title"))+"

"),"nvme_warning_perctage_used_full"!==t&&(i+=e.isNVMeDisk&&e.nvme_perc_used_full?_T("disk_info","nvme_percentage_used_full")+"

":""),"nvme_warning_temp"!==t&&(i+=e.isNVMeDisk&&e.critial_warning.temp_over_thr?_T("notification_event","DiskTemperatureAbnormal")+"

":""),i},addBottomDescInfo:function(e,t){var i,s="",a=[],n=[];Ext.isEmpty(e.low_performance_in_raid_disk_list)||(n=e.low_performance_in_raid_disk_list.split(",")),"life_below_thr"!==t&&"nvme_fail"!=t&&"life_danger"!==t&&"nvme_critical_below_vender_thr"!==t&&!0===e.below_remain_life_thr&&(s+=_T("disk_info","disk_status_remain_life_desc")+"

"),"sb_days_left_warning"===t||"life_danger"===e.smart_info||e.isNVMeDisk&&e.critial_warning.read_only||!0===e.sb_days_left_warning&&!1===e.sb_days_left_critical&&(s+=_T("disk_info","ssd_bundle_status_useful_time_desc")+"

"),"low"===e.seq_status?s+=_T("disk_info","disk_low_seq_perf_desc")+"

":"past"===e.seq_status&&(s+=_T("disk_info","disk_past_seq_perf_desc")+"

");for(var o=0;o
"),("normal_disable"===e.smart_info||"normal"===e.smart_test&&0
"),s},preparePredictDesc:function(e){var t=String.format('',this.predictLinkId),i="",s="";return Ext.isEmpty(e)?s=String.format(_T("disk_info","disk_status_health_prediction_critical_main_desc"),t,""):(i=SYNO.SDS.StorageUtils.DiskPredictionMainFactorRender(e,this.appWin.healthInfo.smartInfo),s=String.format(_T("disk_info","disk_status_health_prediction_critical_main_desc_with_cause"),t,"",i)),s},openHelper:function(){SYNO.SDS.AppLaunch("SYNO.SDS.HelpBrowser.Application",{topic:"SYNO.SDS.StorageManager.Instance:StorageManager/disk.html"})}}),Ext.define("SYNO.SDS.StorageManager.SmartPanel",{extend:"SYNO.ux.Panel",constructor:function(e){var t,i=this,s=[];i.owner=e.owner,i.appWin=e.appWin,i.device=e.device,i.parent=e.parent,i.disks=e.disks,i.isHaPanel=e.isHaPanel,i.isPassiveDisk=e.isPassiveDisk,i.smartTestPanel=new SYNO.SDS.StorageManager.SmartTestView({needSchedule:!0,noTitle:!0,parentWin:i,owner:i.owner,appWin:i.appWin,parent:i.parent,device:i.device,disks:i.disks,smartSchedulerTable:e.smartSchedulerTable,isHaPanel:i.isHaPanel,isPassiveDisk:i.isPassiveDisk}),s.push({xtype:"syno_fieldset",title:_T("smart","smart_toolbar_smart_test"),id:i.smartTestId=Ext.id(),items:i.smartTestPanel}),i.smartInfoPanel=new SYNO.SDS.StorageManager.SmartInfoPanel({owner:i.owner,appWin:i.appWin,device:i.device,isHaPanel:i.isHaPanel,height:100,isPassiveDisk:i.isPassiveDisk}),s.push({xtype:"syno_fieldset",style:{marginTop:"16px"},title:_T("smart","smart_toolbar_smart_info"),id:i.smartInfoId=Ext.id(),items:i.smartInfoPanel}),t=Ext.apply({autoFlexcroll:!0,title:_T("smart","smart_name"),dsmStyle:"v5",items:s,listeners:{activate:i.onActivate,scope:i}},e),i.callParent([t]),i.mon(i,"resize",function(e,t){e.smartTestPanel.setWidth(t-16),e.smartInfoPanel.setWidth(t-16),e.doLayout()},i)},removePanel:function(e){e?Ext.getCmp(this.smartInfoId).setVisible(!0):Ext.getCmp(this.smartInfoId).setVisible(!1)},onActivate:function(){var e,t=this;t.appWin.healthInfo&&t.appWin.healthInfo.overview?(e=t.appWin.healthInfo.overview.smartInfo_support,t.removePanel(e),t.smartTestPanel.onActivate()):SYNO.Debug.error("Failed to read disk overview status",t.appWin)}}),SYNO.SDS.StorageManager.monthOffset=0,SYNO.SDS.StorageManager.convertToMonth=function(e){return[_JSLIBSTR("extlang","jan").substr(0,3),_JSLIBSTR("extlang","feb").substr(0,3),_JSLIBSTR("extlang","mar").substr(0,3),_JSLIBSTR("extlang","apr").substr(0,3),_JSLIBSTR("extlang","may").substr(0,3),_JSLIBSTR("extlang","jun").substr(0,3),_JSLIBSTR("extlang","jul").substr(0,3),_JSLIBSTR("extlang","aug").substr(0,3),_JSLIBSTR("extlang","sep").substr(0,3),_JSLIBSTR("extlang","oct").substr(0,3),_JSLIBSTR("extlang","nov").substr(0,3),_JSLIBSTR("extlang","dec").substr(0,3)][(e+SYNO.SDS.StorageManager.monthOffset)%12]},SYNO.SDS.StorageManager.getMonth=function(e){return["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"][e%12]},Ext.define("SYNO.SDS.StorageManager.HealthHistory",{extend:"SYNO.ux.Panel",constructor:function(e){var t,i=this,s=[];i.owner=e.owner,i.appWin=e.appWin,i.device=e.device,i.isHaPanel=e.isHaPanel,i.isPassiveDisk=e.isPassiveDisk,i.healthTestHistoryPanel=new SYNO.SDS.StorageManager.HealthTestHistory({appWin:i.appWin,device:i.device,isHaPanel:i.isHaPanel,isPassiveDisk:i.isPassiveDisk}),s.push({xtype:"syno_fieldset",title:_T("disk_info","disk_health_test_history_title"),bwrapCfg:{cls:"sm-health-history-field-wrap"},cls:"sm-health-history-fieldset",collapsible:!0,collapsed:!1,id:i.healthTestHistoryId=Ext.id(),items:i.healthTestHistoryPanel}),i.smartInfoHistoryPanel=new SYNO.SDS.StorageManager.SmartInfoHistory({appWin:i.appWin,showLifetimeChart:e.showLifetimeChart}),s.push({xtype:"syno_fieldset",title:_T("disk_info","disk_smart_info_history_title"),cls:"sm-health-history-fieldset",collapsible:!0,collapsed:!0,id:i.smartInfoHistoryId=Ext.id(),items:i.smartInfoHistoryPanel}),t=Ext.apply({title:_T("disk_info","disk_history_title"),dsmStyle:"v5",autoFlexcroll:!0,items:s,listeners:{activate:i.onActivate,scope:i}},e),i.callParent([t]),i.mon(i,"resize",function(e,t){var i=t-20;e.healthTestHistoryPanel.setWidth(i),e.smartInfoHistoryPanel.setWidth(i),e.smartInfoHistoryPanel.chartResize(t-16)},i),i.mon(Ext.getCmp(i.healthTestHistoryId),"expand",function(){i.smartInfoHistoryPanel.setVisible(!1),Ext.getCmp(i.smartInfoHistoryId).collapse()}),i.mon(Ext.getCmp(i.smartInfoHistoryId),"expand",function(){i.smartInfoHistoryPanel.setVisible(!0),i.smartInfoHistoryPanel.drawChart(),Ext.getCmp(i.healthTestHistoryId).collapse()},i),i.mon(Ext.getCmp(i.smartInfoHistoryId),"collapse",function(){i.smartInfoHistoryPanel.setVisible(!1)},i)},onActivate:function(){var e=this;e.healthTestHistoryPanel.onActivate(),e.smartInfoSupport=!SYNO.SDS.StorageUtils.IsOnlySupportSas()&&e.appWin.healthInfo.overview.isSataDisk,e.smartInfoSupport?(Ext.getCmp(e.smartInfoHistoryId).setVisible(!0),e.smartInfoHistoryPanel.onActivate()):Ext.getCmp(e.smartInfoHistoryId).setVisible(!1)}}),Ext.define("SYNO.SDS.StorageManager.HealthPredictionHistory",{extend:"SYNO.ux.Panel",constructor:function(e){this.chartData=null,this.historyData=null,this.appWin=e.appWin,this.device=e.device,this.needRefresh=!0,this.threshold=0,this.HistoryChartInstance=null,this.validDataIndex=0,this.chartLeft=28;var t=SYNO.SDS.StorageManager.Disk.HISTORY_DAY_INTERVAL,i=SYNO.SDS.StorageManager.Disk.HISTORY_MONTH_INTERVAL,s=SYNO.SDS.StorageManager.Disk.HISTORY_SEASON_INTERVAL,a=SYNO.SDS.StorageManager.Disk.HISTORY_DAY_SKIP,n=SYNO.SDS.StorageManager.Disk.HISTORY_MONTH_SKIP,o=SYNO.SDS.StorageManager.Disk.HISTORY_YEAR_SKIP,r=SYNO.SDS.StorageManager.Disk.HISTORY_SEASON_SKIP,l=15*(t+1)+a+1,d=6*(i+1)+n+1,_=12*(i+1)+o+1,p=12*(s+1)+r+1;this.modeConfig={one_month:{limit:l,interval:t,skip:a,type:"date"},six_month:{limit:d,interval:i,skip:n,type:"month"},one_year:{limit:_,interval:i,skip:o,type:"month"},three_year:{limit:p,interval:s,skip:r,type:"season"}};this.historyPanel=new Ext.Panel({width:644,height:197,border:!1,resizable:!0}),this.ModeLabel=new SYNO.ux.DisplayField({margins:{top:0,right:0,bottom:0,left:20},cls:"sm-disk-health-combo-label",value:_T("rsrcmonitor","time_range")+_T("common","colon")}),this.ModeCombo=new SYNO.ux.ComboBox({displayField:"display",valueField:"value",value:this.modeConfig.one_month,width:150,listWidth:150,store:new Ext.data.ArrayStore({fields:["value","display"],data:[[this.modeConfig.one_month,_T("time","past_time_one_month")],[this.modeConfig.six_month,_T("time","past_time_six_month")],[this.modeConfig.one_year,_T("time","past_time_one_year")],[this.modeConfig.three_year,_T("time","past_time_three_year")]]}),listeners:{select:{scope:this,fn:this.modeChange}}});var c=Ext.apply({tbar:{style:{padding:"0px","margin-bottom":"6px"},items:["->",this.ModeLabel,this.ModeCombo]},items:[this.historyPanel,{xtype:"syno_displayfield",htmlEncode:!1,height:59,value:''+_T("common","note")+_T("common","colon")+" "+_T("disk_info","disk_health_prediction_history_note")}]},e);this.callParent([c])},genHistoryData:function(e,t,i){function s(e,t,s){var a="";switch(t){case"year":a=e.getFullYear();break;case"month":a=SYNO.SDS.StorageManager.getMonth(e.getMonth());break;case"day":a=e.getDate();break;default:SYNO.Debug.error("Invalid mode type at xais data",i.type),a=""}return{value:a,textStyle:{fontSize:12,fontWeight:s?"bold":"normal"}}}var a,n,o,r,l,d=i.limit,_=[],p=0,c=new Date,u=i.interval+1;c.setDate(c.getDate()-d),a="date"===i.type?c.getMonth():c.getFullYear();for(var m=0;m9?"":"0")+r,(l>9?"":"0")+l].join("-"),g.ui_score=-100,g.observe=0,h in e){var f=e[h];g.ui_score=f.ui_score,g.observe=f.observe,g.factor=Ext.isEmpty(f.factor)?null:SYNO.SDS.StorageUtils.DiskPredictionMainFactorRender(f.factor,this.appWin.healthInfo.smartInfo),g.fail=g.ui_score>=t?1:0,p=m}if(i.skip<=m&&0==(m-i.skip)%u){var S;switch(i.type){case"date":S=(n=c.getMonth())!==a?s(c,"month",!0):s(c,"day",!1),a=n;break;case"month":case"season":S=(n=c.getFullYear())!==a?s(c,"year",!0):s(c,"month",!1),a=n;break;default:SYNO.Debug.error("Invalid mode type at gen history data",i.type)}g.xData=S}else g.xData="";g.time=h,_.push(g)}return{data:_,index:p}},loadHistoryData:function(e){this.appWin.setStatusBusy(),this.appWin.sendWebAPI({api:"SYNO.Core.Storage.Disk",method:"disk_health_prediction_log_get",version:1,params:{device:e.device,limit:e.mode.limit},scope:this,callback:function(t,i){if(this.appWin.clearStatusBusy(),t){this.needRefresh=!1;var s=this.genHistoryData(i.prediction_log,i.threshold,e.mode);this.historyData=s.data,this.validDataIndex=s.index,this.threshold=i.threshold,this.drawChart()}else SYNO.Debug.error("Failed to get history data",i)}})},onActivate:function(e){var t=this.ModeCombo.value;this.needRefresh&&this.loadHistoryData({device:this.device,mode:t}),this.setDefaultTip()},modeChange:function(){this.loadHistoryData({device:this.device,mode:this.ModeCombo.value})},setDefaultTip:function(){null!==this.HistoryChartInstance&&this.HistoryChartInstance.dispatchAction({type:"showTip",seriesIndex:0,dataIndex:this.validDataIndex})},drawChart:function(){var e;this.HistoryChartInstance=echarts.init(this.historyPanel.body.dom),null!==this.historyData&&!1!==this.isVisible()&&null!==this.HistoryChartInstance&&(e=this.getChartOpt({title:_T("disk_info","disk_health_prediction_history_yaxis"),chartData:this.historyData,threshold:this.threshold,mode:this.ModeCombo.value}),this.HistoryChartInstance.setOption(e),this.HistoryChartInstance.setOption(this.adjustChartConfig(this.threshold)),this.doLayout(),this.appWin.doLayout(),this.setDefaultTip())},chartResize:function(e){var t=this;null!==t.HistoryChartInstance&&(t.isDestroyed||(t.setWidth(e),t.historyPanel.setWidth(e),t.HistoryChartInstance.setOption(t.adjustChartConfig(t.threshold)),t.doLayout(),t.HistoryChartInstance.resize()))},adjustChartConfig:function(e){var t=this,i=t.historyPanel.getWidth()-1;return{series:[{markLine:{data:[{name:"danger_threshold",yAxis:e,x:t.chartLeft},{yAxis:e,x:i}]},markArea:{data:[[{x:t.chartLeft+1},{x:i-1}]]}},{markLine:{data:[{yAxis:100,x:t.chartLeft},{yAxis:100,x:i},{yAxis:0,x:t.chartLeft},{yAxis:0,x:i}]}}]}},getChartOpt:function(e){var t=e.chartData,i=this.chartLeft+15,s=this.chartLeft,a=this.chartLeft+9;return{grid:{top:20,right:17,left:i,bottom:22},xAxis:{type:"category",data:t.map(function(e){return e.xData}),boundaryGap:!1,splitLine:{show:!1},axisLabel:{interval:0,color:"#323C46",showMinLabel:!0,showMaxLabel:!0,margin:6},axisLine:{show:!1},axisTick:{show:!1}},yAxis:[{type:"value",offset:15,min:0,max:100,splitLine:{show:!0,lineStyle:{color:"#C6D4E0",width:1}},axisLabel:{color:"#323C46",margin:6},axisLine:{lineStyle:{color:"#C6D4E0",opacity:.7,width:1}},axisTick:{inside:!0,length:15,lineStyle:{color:"#C6D4E0",width:1}}},{type:"value",offset:15,position:"right",min:0,max:100,axisLine:{lineStyle:{color:"#C6D4E0",opacity:.7,width:1}},axisLabel:{show:!1},splitLine:{show:!1},axisTick:{inside:!0,length:15,lineStyle:{color:"#C6D4E0",width:1}}}],tooltip:{trigger:"axis",position:[a,28],transitionDuration:0,backgroundColor:"rgba(255,255,255,0.85)",borderColor:"rgba(198,212,224,0.70)",borderWidth:1,triggerOn:"mousemove|click",axisPointer:{type:"line",snap:!0,lineStyle:{color:"#315FCC"}},padding:0,formatter:function(e,i,s){if(null!==e){var a=t[e[0].dataIndex],n=a.time.replace(new RegExp("-","g"),"/"),o='
',r='

{1}

';return o+=String.format(r,"sm-disk-health-tooltip-date sm-font-bold",_T("time","time_date")+_T("common","colon")+" "+n),0>a.ui_score?0===a.observe?o+=String.format(r,"sm-disk-health-tooltip-desc",_T("disk_info","disk_prediction_main_factor_no_record")):o+=String.format(r,"sm-disk-health-tooltip-desc",_T("disk_info","disk_prediction_main_factor_observe")):(o+=String.format(r,(1===a.fail?"sm-disk-health-tooltip-score-critical":"sm-disk-health-tooltip-score-normal")+" sm-font-medium",_T("status","header_value")+_T("common","colon")+" "+Math.round(a.ui_score)),Ext.isEmpty(a.factor)||1!==a.fail||(o+='
',o+=String.format(r,"sm-disk-health-tooltip-desc",a.factor))),o+="
"}SYNO.Debug.error("Invalid argument")}},series:[{data:t.map(function(e){return 0<=e.ui_score?e.ui_score:"-"}),type:"line",symbol:"none",lineStyle:{width:1},animation:!1,markLine:{silent:!0,animation:!1,symbol:"none",label:{show:!1},lineStyle:{type:"solid",color:"#FC9B98",width:1}},markArea:{silent:!0,animation:!1,itemStyle:{color:"#FAFCFF",opacity:.6}}},{type:"line",markLine:{silent:!0,animation:!1,symbol:"none",label:{show:!1},lineStyle:{type:"solid",color:"#C6D4E0",width:1}}}],visualMap:{show:!1,pieces:[{gt:0,lte:e.threshold,color:"#009FD5"}],outOfRange:{color:"#F94B4B"}},title:{text:e.title,top:0,left:s,padding:0,textStyle:{color:"#323C46",fontSize:12,verticalAlign:"middle",align:"left",lineHeight:20}}}}}),Ext.define("SYNO.SDS.StorageManager.SmartInfoHistory",{extend:"SYNO.ux.Panel",constructor:function(e){this.chartData=null,this.appWin=e.appWin,this.showLifetimeChart=e.showLifetimeChart;var t={width:644,height:158,border:!1,resizable:!0,style:{marginBottom:"18px"}};this.RemainLifePanel=new Ext.Panel(Ext.apply({id:this.remain_life_panel_id=Ext.id(),hidden:!0},t)),this.UncPanel=new Ext.Panel(Ext.apply({id:this.unc_panel_id=Ext.id(),hidden:!0},t)),this.RetryPanel=new Ext.Panel(t),this.IdnfPanel=new Ext.Panel(t),this.RemainLifeChartInstance=null,this.UncChartInstance=null,this.RetryChartInstance=null,this.IdnfChartInstance=null,this.ModeCombo=new SYNO.ux.ComboBox({displayField:"display",valueField:"value",value:"single",width:150,listWidth:150,store:new Ext.data.ArrayStore({fields:["value","display"],data:[["single",_T("disk_info","disk_history_mode_sigle")],["incremental",_T("disk_info","disk_history_mode_incremental")]]}),listeners:{select:{scope:this,fn:this.modeChange}}});var i=Ext.apply({tbar:{style:{padding:"0px","margin-bottom":"6px","border-style":"none"},items:["->",this.ModeCombo]},items:[this.RemainLifePanel,this.UncPanel,this.RetryPanel,this.IdnfPanel]},e);this.callParent([i])},onActivate:function(e){var t=this.ModeCombo.value;this.appWin.healthInfo&&this.appWin.healthInfo.history?(this.chartData=this.appWin.healthInfo.history,this.displayData="incremental"===t?this.chartData.incremental:this.chartData.single,SYNO.SDS.StorageManager.monthOffset=this.displayData.offset,this.drawChart()):this.appWin.getMsgBox().alert("",_T("status","status_not_available"))},modeChange:function(){var e=this.ModeCombo.value;this.displayData="incremental"===e?this.chartData.incremental:this.chartData.single,this.drawChart()},showRemainLifePanel:function(){!1!==this.showLifetimeChart&&-1!==this.appWin.healthInfo.overview.remain_life&&"incremental"==this.ModeCombo.value?Ext.getCmp(this.remain_life_panel_id).show():Ext.getCmp(this.remain_life_panel_id).hide()},showUncPanel:function(){var e=!this.appWin.healthInfo.overview.isSsd;Ext.getCmp(this.unc_panel_id).setVisible(e)},genTicks:function(){var e=[],t=0;for(t=0;t<12;t++)e.push(SYNO.SDS.StorageManager.convertToMonth(t));return e},genMouseTrack:function(e){var t=SYNO.SDS.StorageManager.convertToMonth(e.x-1)+": "+e.y;return e.y<0&&(t+="
"+_T("disk_info","disk_history_unc_tooltip")),t},chartResize:function(e){var t=this;t.isDestroyed||(t.setWidth(e),t.RemainLifePanel.setWidth(e),t.UncPanel.setWidth(e),t.RetryPanel.setWidth(e),t.IdnfPanel.setWidth(e),t.doLayout(),null!==t.RemainLifeChartInstance&&t.RemainLifeChartInstance.resize(),null!==t.UncChartInstance&&t.UncChartInstance.resize(),null!==t.RetryChartInstance&&t.RetryChartInstance.resize(),null!==t.IdnfChartInstance&&t.IdnfChartInstance.resize())},getChartOpt:function(e,t,i){for(var s=28+8*(i.toString().length-3),a=s,n=s+9,o=0,r=[],l=0;l9?"":"0")+_].join("/");r.push([t[l][1],p]),o+=void 0!==t[l][1]?1:0}return{grid:{top:20,left:s,bottom:20,right:2,backgroundColor:"#FAFCFF",show:!0},xAxis:{type:"category",data:this.genTicks(),splitNumber:12,axisLine:{show:!1},axisLabel:{margin:6},axisTick:{show:!1}},yAxis:{type:"value",splitNumber:5,max:function(e){return Math.max(e.max,100)},min:0},tooltip:{trigger:"axis",position:[n,28],transitionDuration:0,backgroundColor:"rgba(255,255,255,0.85)",borderColor:"rgba(198,212,224,0.70)",borderWidth:1,triggerOn:"mousemove|click",axisPointer:{type:"line",lineStyle:{color:"#E64040",width:1}},padding:0,formatter:function(e,t,i){if(null!==e){var s=r[e[0].dataIndex],a=s[1],n=s[0],o='
',l='

{1}

';if(s[0]||0==s[0])return o+=String.format(l,"sm-disk-health-tooltip-date sm-font-bold",_T("time","time_date")+_T("common","colon")+" "+a),o+=String.format(l,"sm-disk-health-tooltip-score-normal sm-font-medium",_T("status","header_value")+_T("common","colon")+" "+Math.round(n)),o+="
"}else SYNO.Debug.error("Invalid argument")}},series:{data:r.map(function(e){return e[0]}),type:"line",animation:!1,symbol:1e[1]||0),...this.displayData.unc.map(e=>e[1]||0),...this.displayData.retry.map(e=>e[1]||0),...this.displayData.idnf.map(e=>e[1]||0)),null!==this.chartData&&!1!==this.isVisible()&&null!==this.RetryChartInstance&&null!==this.IdnfChartInstance){for(var a=0;a",t.ModeCombo]},items:[t.gridPanel],bbar:t.paging},e);t.callParent([s])},createStore:function(e){var t,i=this,s=i.isPassiveDisk?"SYNO.SHA.Util":"SYNO.Core.Storage.Disk",a=i.isPassiveDisk?"send_remote_webapi":"disk_test_log_get";return t=i.isPassiveDisk?{remote_api:"SYNO.Core.Storage.Disk",remote_method:"disk_test_log_get",remote_version:"1",remote_params:{device:i.device,offset:0,limit:i.pageSize,sort_by:"time",sort_direction:"DESC"}}:{device:i.device,offset:0,limit:i.pageSize,sort_by:"time",sort_direction:"DESC"},new SYNO.API.JsonStore({api:s,method:a,version:"1",autoDestroy:!0,remoteSort:!0,appWindow:e.appWin,baseParams:t,totalProperty:"total",root:"testLog",fields:["id","time","type","test_type","result",{name:"displayType",convert:function(e,t){return i.onRenderTestType(t.type,t.test_type)}},{name:"displayResult",convert:function(e,t){var i=SYNO.SDS.StorageUtils.DiskTestLogRender(t.result);return i?""===i.code?String.format('{1}',i.color,i.text):"unknown"===i.code?String.format('{1}. {2}',i.color,t.test_code,i.text):String.format('{1}. {2}',i.color,i.code,i.text):""}},{name:"tooltip",convert:function(e,t){var i=SYNO.SDS.StorageUtils.DiskTestLogRender(t.result);return i?i.tooltip:""}}],listeners:{scope:i,exception:i.onException}})},onException:function(e,t,i,s,a){this.appWin.clearStatusBusy(),"LogFailed"===a.errors.reason?this.appWin.setStatusError({text:_T("metadata","metadata_err_enable"),clear:!0}):"SerialFailed"===a.errors.reason?this.appWin.setStatusError({text:_T("disk_info","disk_log_event_retrieve_fail"),clear:!0}):this.appWin.setStatusError({text:_T("error","error_error_system"),clear:!0})},onActivate:function(){var e=this,t=[];t.push(["all",_T("common","show_all")],["smart",_T("smart","smart_toolbar_smart_test")]),"not_support"!==e.appWin.healthInfo.overview.adv_status&&t.push(["ihm",_T("disk_info","disk_ironwolf_test")]),e.ModeCombo.store.loadData(t),e.mon(e.healthTestHistoryStore,"load",e.onAfterStoreLoad,e),e.mon(e.healthTestHistoryStore,"beforeload",e.onBeforeStoreLoad,e),e.isPassiveDisk?Ext.apply(e.healthTestHistoryStore.baseParams.remote_params,{type:e.ModeCombo.value}):Ext.apply(e.healthTestHistoryStore.baseParams,{type:e.ModeCombo.value}),e.healthTestHistoryStore.load()},modeChange:function(){var e=this;e.isPassiveDisk?Ext.apply(e.healthTestHistoryStore.baseParams.remote_params,{type:e.ModeCombo.value}):Ext.apply(e.healthTestHistoryStore.baseParams,{type:e.ModeCombo.value}),e.healthTestHistoryStore.load()},onAfterStoreLoad:function(e,t,i){this.appWin.clearStatusBusy(),0'+e+" "}},{header:_T("smart","smart_current"),dataIndex:"current",width:75,sortable:!1},{header:_T("smart","smart_worst"),dataIndex:"worst",width:75,sortable:!1},{header:_T("smart","smart_threshold"),dataIndex:"threshold",width:75,sortable:!1},{header:_T("smart","smart_raw"),dataIndex:"raw",width:150,sortable:!1}],viewConfig:{forceFit:!0},enableHdMenu:!1,autoExpandColumn:"name",sm:new Ext.grid.RowSelectionModel,store:new Ext.data.JsonStore({root:"smartInfo",fields:["id","name","current","worst","threshold","raw"]}),id:this.smartInfoGridId=Ext.id()},e)},configGridNvme:function(e){return Ext.apply({layout:"fit",border:!1,xtype:"syno_gridpanel",style:{marginTop:"8px"},columns:[{id:"name",header:_T("smart","smart_attribute"),dataIndex:"name",width:150,sortable:!1},{header:_T("smart","smart_current"),dataIndex:"current",width:75,sortable:!1},{header:_T("volume","volume_diskstatus"),dataIndex:"status",width:75,sortable:!1,renderer:function(e,t,i){return"Airflow_Temperature_Cel"===i.get("name")&&"In_the_past"===i.get("status")?e:"OK"===i.get("status")?e:' '+e+" "}}],viewConfig:{forceFit:!0},enableHdMenu:!1,autoExpandColumn:"name",sm:new Ext.grid.RowSelectionModel,store:new Ext.data.JsonStore({root:"smartInfo",fields:["name","current","status"]}),id:this.smartInfoGridId=Ext.id()},e)},onActivate:function(){var e=this.getComponent("grid");this.appWin.healthInfo&&this.appWin.healthInfo.smartInfo&&this.appWin.healthInfo.overview?(e.getStore().loadData(this.appWin.healthInfo),e.view.updateScroller(),this.onAdjustGridHeight()):this.appWin.getMsgBox().alert("",_T("status","status_not_available"))},onAdjustGridHeight:function(){var e;e=this.getHeight()-this.getComponent("smartInfodesc").getHeight()-30,Ext.getCmp(this.smartInfoGridId).setHeight(e)}}),Ext.define("SYNO.SDS.StorageManager.Wizard.TaskPanel",{extend:"SYNO.ux.EditorGridPanel",btnEdit:null,btnDel:null,btnRun:null,constructor:function(e){var t=this.fillConfig(e);this.callParent([Ext.apply(t,e)]),this.mon(this.getSelectionModel(),"selectionchange",this.onSelectionChange,this),this.btnEdit=this.getTopToolbar().getComponent("edit"),this.btnDel=this.getTopToolbar().getComponent("delete"),this.btnRun=this.getTopToolbar().getComponent("run"),this.loadData()},fillConfig:function(e){this.appWin=e.appWin,this.adv_support=!1;for(var t=0;t'+t+""},sortable:!0},{header:_T("common","action"),dataIndex:"action",renderer:function(e){return e.replace(/#(.*?):(.*?)#/g,function(e,t,i){return _T(t,i)})}},{header:_T("schedule","next_trigger_time"),dataIndex:"next_trigger_time",renderer:function(e){return SYNO.SDS.DateTimeFormatter(Date.parseDate(e,"Y-m-d H:i"))},align:"center",sortable:!0}]),this.taskStore=new SYNO.API.Store({api:"SYNO.Storage.CGI.Smart.Scheduler",method:"list",version:1,appWindow:this.appWin,reader:new Ext.data.JsonReader({root:"items",totalProperty:"total"},["enabled","id","can_run","task_name","app_name","simple_edit_form","edit_form","edit_app","action","next_trigger_time"]),sortInfo:{field:"id",direction:"ASC"},remoteSort:!1,pruneModifiedRecords:!0}),this.toolbar=new Ext.Toolbar({defaultType:"syno_button"}),this.toolbar.add({text:_T("common","create"),itemId:"create",btnStyle:"blue",handler:this.onCreate,scope:this},{text:_T("common","alt_edit"),itemId:"edit",disabled:!0,handler:this.onEdit,scope:this},{text:_T("common","delete"),itemId:"delete",disabled:!0,handler:this.onDelete,scope:this},{text:_T("common","run"),itemId:"run",disabled:!0,handler:this.onRun,scope:this});var i={title:_T("schedule","task_scheduler"),header:!1,cm:this.columnModel,ds:this.taskStore,height:225,tbar:this.toolbar,cls:"sm-test-schedule-tctab",style:{paddingTop:"0px"},bwrapCssClass:"sm-grid-no-border",autoScroll:!0,selModel:new Ext.grid.RowSelectionModel,plugins:[this.enableColumn]};return Ext.apply(i,e),i},isDirty:function(){return this.getStore().getModifiedRecords().length>0},onSelectionChange:function(){var e=this.getSelectionModel().getCount();0"+i.join(", "),function(t){if("yes"===t){var i={tasks:s};e.owner.setStatusBusy(),e.sendWebAPI({api:"SYNO.Storage.CGI.Smart.Scheduler",method:"delete",version:1,params:i,scope:e,callback:function(){e.loadData(),e.owner.clearStatusBusy()}})}})},onRun:function(){for(var e=this.getSelectionModel().getSelections(),t=":",i=0;i','
','
','
','
','
','
{text}
',SYNO.SDS.StorageUtils.isSHA?'
':'
','
{diskServerLoc}
',"
","
",'
',"{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='
{title}
{value}
{comparison}
';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