File: /volume1/@appstore/HyperBackup/ui/common.js
/* Copyright (c) 2026 Synology Inc. All rights reserved. */
Ext.ns("SYNO.SDS.Backup.Client.Common.Utils"),Ext.apply(SYNO.SDS.Backup.Client.Common.Utils,{GetErrorString:function(t,e){return SYNO.SDS.Backup.GetErrorString?SYNO.SDS.Backup.GetErrorString(t,e):""},GetString:function(t,e){return SYNO.SDS.Backup.String?SYNO.SDS.Backup.String(t,e):""},GetVersionApi:function(){return"SYNO.Backup.Version"},LaunchExplorer:function(t,e){var i=t.owner.getCurrentTask();SYNO.SDS.AppLaunch("SYNO.SDS.Backup.Client.Explore.AppInstance",{launchInstance:t,taskId:t.taskId,defaultVersion:e,sess_id:i.sess_id,sess_key:i.sess_key,launcher:"BackupAndRestore",backend:"HyperBackup-backend"})}}),Ext.define("SYNO.SDS.Backup.Client.Common.FormPanel",{extend:"SYNO.ux.FormPanel",initEvents:function(){this.callParent(arguments),this.initFieldGroup()},initFieldGroup:function(){var t={},e={};this.getForm().items.each((function(i){i instanceof SYNO.ux.Radio&&Ext.isArray(i.groupFields)&&(t[i.name]=t[i.name]||{},t[i.name][i.inputValue]=i.groupFields),i instanceof SYNO.ux.Checkbox&&Ext.isObject(i.groupFields)&&(e[i.name]=[],e[i.name][0]=i.groupFields.enable,e[i.name][1]=i.groupFields.disable)})),this.mon(this,"afterlayout",(function(){Ext.iterate(t,(function(t,e){new SYNO.ux.Utils.EnableRadioGroup(this.getForm(),t,e)}),this),Ext.iterate(e,(function(t,e){new SYNO.ux.Utils.EnableCheckGroup(this.getForm(),t,e[0],e[1])}),this)}),this,{single:!0})}}),Ext.define("SYNO.SDS.Backup.Client.Common.Tag",{extend:"Ext.Container",cls:"syno-backup-client-common-tag-item-container",constructor:function(t){this.read_only=t.read_only,this.callParent([t])},initComponent:function(){this.callParent(arguments),this.tag=new Ext.Container({cls:"syno-backup-tag-item",style:{"max-width":this.maxWidth?this.maxWidth.toString()+"px":"none",padding:this.read_only?"0px 8px 0px 8px":"0px 26px 0px 8px"},html:this.htmlEncode(this.text),listeners:{afterrender:function(t){var e=t.getEl();e.dom.setAttribute("tabindex","-1"),e.addClassOnOver("hover"),e.on("focus",(function(){t.addClass("focus")})),e.on("blur",(function(){t.removeClass("focus")}))}}});var t=this;this.read_only||(this.tagClose=new Ext.Container({cls:"syno-ux-superboxselect-item-close",listeners:{afterrender:function(e){e.getEl().on("click",(function(){t.destroySelf()}))}}}),this.tag.add(this.tagClose)),this.add(this.tag)},htmlEncode:function(t){return Ext.util.Format.htmlEncode(t).replace(/ /g," ")},destroySelf:function(){Ext.isDefined(this.callback)&&this.callback(this.text),this.destroy()}}),Ext.define("SYNO.SDS.Backup.Client.Common.QuickTip",{extend:Ext.QuickTip,tagConfig:{namespace:"",attribute:"synotcqtip",width:"qwidth",target:"target",title:"qtitle",hide:"hide",cls:"qclass",align:"qalign",anchor:"anchor"}}),SYNO.SDS.Backup.Client.Common.QuickTips=function(){var t,e=!1;return{init:function(i){if(!t){if(!Ext.isReady)return void Ext.onReady((function(){SYNO.SDS.Backup.Client.Common.QuickTips.init(i)}));t=new SYNO.SDS.Backup.Client.Common.QuickTip({elements:"header,body",disabled:e}),!1!==i&&t.render(Ext.getBody())}},ddDisable:function(){t&&!e&&t.disable()},ddEnable:function(){t&&!e&&t.enable()},enable:function(){t&&t.enable(),e=!1},disable:function(){t&&t.disable(),e=!0},isEnabled:function(){return void 0!==t&&!t.disabled},getQuickTip:function(){return t},register:function(){t.register.apply(t,arguments)},unregister:function(){t.unregister.apply(t,arguments)},tips:function(){t.register.apply(t,arguments)}}}(),Ext.define("SYNO.SDS.Backup.Client.Common.Space.Chart",{extend:"Ext.BoxComponent",constructor:function(t){SYNO.SDS.Backup.Client.Common.QuickTips.init();var e=this.svgConfig||{width:this.width,height:this.height};this.cls=t.cls||"chart",this.svgWidth=Ext.isNumber(e.width)?e.width:"100%",this.svgHeight=Ext.isNumber(e.height)?e.height:"100%",this.svgMargins=this.svgConfig&&this.svgConfig.margin?this.svgConfig.margin:{top:0,bottom:0,left:0,right:0},this.callParent(t),this.colorArray=SYNO.SDS.Backup.Client.Common.Utils.Space.Config.COLORS,this.d3=SYNO.SDS.DataDrivenDocuments.DrawHelper},innerFormatValue:function(t){return Ext.isNumber(t)?t:0},onRender:function(t,e){var i=this.d3;this.callParent(arguments),this.svg=i.select("#"+this.id).attr("class",this.cls).append("svg").attr("width",this.svgWidth).attr("height",this.svgHeight);var n=this.innerFormatValue(this.svgMargins.left),s=this.innerFormatValue(this.svgMargins.top);this.svgGraphics=this.svg.append("g").attr("transform","translate("+n+","+s+")")},afterRender:function(){this.callParent(arguments),this.loadData()},onResize:function(t,e,i,n){this.callParent(arguments),this.draw()},loadData:Ext.emptyFn,draw:Ext.emptyFn}),Ext.define("SYNO.SDS.Backup.Client.Common.Space.PieChart",{extend:"SYNO.SDS.Backup.Client.Common.Space.Chart",svgConfig:{margin:{top:0,left:0,right:0,bottom:0},border:2,shadow:1,width:166,height:166,radius:80},constructor:function(t){Ext.apply(this,t),this.callParent(arguments),this.data=[]},loadData:function(t,e,i){Ext.isDefined(t)&&(this.data=t,this.totalSize=i,this.draw(e))},initShadowEffect:function(){var t=this.svg.append("defs");this.shadowId="shadow"+Ext.id();var e=t.append("filter").attr("id",this.shadowId);e.append("feGaussianBlur").attr("in","SourceAlpha").attr("stdDeviation",2).attr("result","blur"),e.append("feOffset").attr("in","blur").attr("dx",0).attr("dy",0).attr("result","offsetBlur");var i=e.append("feMerge");i.append("feMergeNode").attr("in","offsetBlur"),i.append("feMergeNode").attr("in","SourceGraphic"),this.svgShadow=t},draw:function(t){if(t){var e=this.d3,i=this.svgConfig.width,n=this.svgConfig.height,s=this.svgConfig.radius,a=this.svgConfig.border,o=s+this.svgConfig.margin.left+this.svgConfig.border+this.svgConfig.shadow,r=s+this.svgConfig.margin.top+this.svgConfig.border+this.svgConfig.shadow,l=this.colorArray;if(this.svgGraphics&&(this.svgGraphics.remove(),this.svgGraphics=null),this.svgShadow||this.initShadowEffect(),this.svgEle=this.svg.data([t]).attr("width",i).attr("height",n),this.svgGraphics=this.svgEle.append("svg:g").attr("transform","translate("+o+","+r+")"),!Ext.isEmpty(t)){var c=SYNO.SDS.Backup.Client.Common.Utils.getConvertSize(this.totalSize),u=SYNO.SDS.Backup.Client.Common.Utils.getUnit(this.totalSize),d=SYNO.SDS.Backup.Client.Common.Utils.GetString("app","total_usage"),p=this.svgGraphics.append("g");p.append("text").attr("y",(function(t){return-18})).attr("text-anchor","middle").classed("svg_space_total",!0).text(d);var m=Ext.id(),h=Ext.id();p.append("text").attr("y",(function(t){return 11})).attr("id",m).classed("svg_space_number",!0).text(c);var S=Ext.getDom(m).getBBox().width;p.append("text").attr("y",(function(t){return 11})).attr("id",h).classed("svg_space_unit",!0).text(u);var g=Ext.getDom(h).getBBox().width,_=-Math.round(g/2);p.select("#"+m).attr("transform","translate("+_+" 0)").attr("text-anchor","middle"),p.select("#"+h).attr("transform","translate("+(_+Math.round(S/2)+2)+" 0)").attr("text-anchor","start")}var f=e.svg.arc().outerRadius(s).innerRadius(58),C=e.layout.pie().value((function(t){return t.used_size})).sort(null),y=this.svgGraphics.selectAll("g.slice").data(C).enter().append("svg:g").attr("class","slice"),v="url(#"+this.shadowId+")";y.append("svg:path").attr("fill",(function(t,e){return t.color||l[Math.min(e,9)]})).attr("stroke","#FFFFFF").attr("stroke-width","0px").attr("d",f).on("mouseover",(function(t,i,n){this.parentNode.parentNode.appendChild(this.parentNode),e.select(this).transition().duration(300).attr("stroke-width",a+"px").attr("filter",v)})).on("mouseout",(function(t,i,n){e.select(this).transition().duration(300).attr("stroke-width","0px").attr("filter","")}))}}}),Ext.define("SYNO.SDS.Backup.Client.Common.Space.Legend",{extend:"Ext.BoxComponent",constructor:function(t){var e={autoFlexcroll:!1};Ext.apply(e,t),this.callParent([e])},loadData:function(t){this.update(t)},onRender:function(){this.callParent(arguments),this.tpl=new Ext.XTemplate("",'<tpl for=".">','<div class="legend-w">','<span class="rect" ',' style="background-color:{[this.getColor(xindex, values)]};"></span>','<span class="name" ext:qtip="{show_name}">',"{show_name}","</span>",'<span class="desc" ext:qtip="{sizeTips}">'," - {sizeTips}","</span>",'<div class="detail" ext:qtip="{sizeDetail}">',"{sizeDetail}","</div>","</div>","</tpl>","",{getColor:function(t,e){return SYNO.SDS.Backup.Client.Common.Utils.Space.Config.COLORS[t-1]||SYNO.SDS.Backup.Client.Common.Utils.Space.Config.DEFAULT_COLOR}})}}),Ext.define("SYNO.SDS.Backup.Client.Common.ErrorReportWindow",{extend:"SYNO.SDS.ModalWindow",constructor:function(t){this.task_id=t.task_id,this.version_id=t.version_id;var e={width:680,height:390,layout:"fit",useStatusBar:!1,minWidth:680,minHeight:390,title:SYNO.SDS.Backup.Client.Common.Utils.GetString("app","missing_window_title"),items:[{xtype:"syno_gridpanel",store:this.getStore(),loadMask:!0,enableHdMenu:!1,enableColumnMove:!1,enableColumnResize:!0,disableSelection:!0,trackMouseOver:!0,colModel:this.getColumnModel(),bbar:new SYNO.ux.PagingToolbar({store:this.getStore(),displayInfo:!0,pageSize:50,showRefreshBtn:!0})}]};Ext.apply(e,t),this.callParent([e])},getColumnModel:function(){return new Ext.grid.ColumnModel({columns:[{sortable:!0,width:128,header:SYNO.SDS.Backup.Client.Common.Utils.GetString("app","missing_type_field"),dataIndex:"type",align:"left",renderer:function(t,e,i,n,s,a){return SYNO.SDS.Backup.Client.Common.Utils.GetString("app",t)}},{sortable:!0,width:192,header:SYNO.SDS.Backup.Client.Common.Utils.GetString("app","missing_src_field"),dataIndex:"path",align:"left"},{width:320,header:SYNO.SDS.Backup.Client.Common.Utils.GetString("app","missing_cause_field"),dataIndex:"cause",align:"left",renderer:function(t,e,i,n,s,a){var o=Ext.util.Format.htmlEncode(SYNO.SDS.Backup.Client.Common.Utils.convertMissingCauseToStr(t,i.json.cause_arg));return String.format('<div ext:qtip="{0}">{1}</div>',o,o)}}]})},getStore:function(){if(this.store)return this.store;var t={task_id:this.task_id,limit:50,start:0};this.version_id&&(t.version_id=this.version_id);var e=new Ext.data.JsonStore({proxy:new SYNO.API.Proxy({api:SYNO.SDS.Backup.Client.Common.Utils.GetVersionApi(),method:"detail",version:1}),fields:["type","path","cause"],root:"error_cause",autoDestroy:!0,autoLoad:!0,totalProperty:"total",remoteSort:!0,baseParams:t});return this.store=e,this.store}}),Ext.namespace("SYNO.SDS.Backup.Client.Common.Utils"),Ext.ns("SYNO.SDS.Backup.Client.Common.Utils.Space"),Ext.ns("SYNO.SDS.Backup.Client.Common.Utils.Space.Config"),SYNO.SDS.Backup.Client.Common.Utils.htmlEncodeTip=function(t){var e=Ext.util.Format.htmlEncode(t);return Ext.util.Format.htmlEncode(e)},SYNO.SDS.Backup.Client.Common.Utils.SYNO_SCHEDULE_SUN="0",SYNO.SDS.Backup.Client.Common.Utils.SYNO_SCHEDULE_MON="1",SYNO.SDS.Backup.Client.Common.Utils.SYNO_SCHEDULE_TUE="2",SYNO.SDS.Backup.Client.Common.Utils.SYNO_SCHEDULE_WED="3",SYNO.SDS.Backup.Client.Common.Utils.SYNO_SCHEDULE_THU="4",SYNO.SDS.Backup.Client.Common.Utils.SYNO_SCHEDULE_FRI="5",SYNO.SDS.Backup.Client.Common.Utils.SYNO_SCHEDULE_SAT="6",SYNO.SDS.Backup.Client.Common.Utils.SYNO_SCHEDULE_EVERYDAY="0,1,2,3,4,5,6",SYNO.SDS.Backup.Client.Common.Utils.WeekArray=[[SYNO.SDS.Backup.Client.Common.Utils.SYNO_SCHEDULE_SUN,_T("schedule","schedule_sun")],[SYNO.SDS.Backup.Client.Common.Utils.SYNO_SCHEDULE_MON,_T("schedule","schedule_mon")],[SYNO.SDS.Backup.Client.Common.Utils.SYNO_SCHEDULE_TUE,_T("schedule","schedule_tue")],[SYNO.SDS.Backup.Client.Common.Utils.SYNO_SCHEDULE_WED,_T("schedule","schedule_wed")],[SYNO.SDS.Backup.Client.Common.Utils.SYNO_SCHEDULE_THU,_T("schedule","schedule_thu")],[SYNO.SDS.Backup.Client.Common.Utils.SYNO_SCHEDULE_FRI,_T("schedule","schedule_fri")],[SYNO.SDS.Backup.Client.Common.Utils.SYNO_SCHEDULE_SAT,_T("schedule","schedule_sat")],[SYNO.SDS.Backup.Client.Common.Utils.SYNO_SCHEDULE_EVERYDAY,_T("schedule","schedule_daily")]],SYNO.SDS.Backup.Client.Common.Utils.GenWeekString=function(t){var e,i=!0,n="";for(e=0;e<SYNO.SDS.Backup.Client.Common.Utils.WeekArray.length;e++)0<=t.search(SYNO.SDS.Backup.Client.Common.Utils.WeekArray[e][0])&&(!1===i?n+=",":i=!1,n+=SYNO.SDS.Backup.Client.Common.Utils.WeekArray[e][1]);return n},SYNO.SDS.Backup.Client.Common.Utils.DateScheduleToString=function(t){var e="",i=t.week_name;return e+=_T("schedule","schedule_date")+": ",0===t.date_type?i&&(e+="0,1,2,3,4,5,6"===i?_T("schedule","schedule_daily"):"1,2,3,4,5"===i?_T("schedule","schedule_weekdays"):"0,6"===i?_T("schedule","schedule_weekend"):SYNO.SDS.Backup.Client.Common.Utils.GenWeekString(i)):(t.date.getMonth?e+=SYNO.SDS.Backup.Client.Common.Utils.DateTimeFormatter(t.date,{type:"date"}):e+=SYNO.SDS.Backup.Client.Common.Utils.getDSMStyleDateTimeString(t.date,{type:"date"}),e+=" ",1===t.repeat?e+=_T("schedule","repeat_monthly"):2===t.repeat?e+=_T("schedule","repeat_yearly"):3===t.repeat?e+=_T("schedule","repeat_half_year"):5===t.repeat?e+=_T("schedule","repeat_tri_monthly"):e+=_T("schedule","no_repeat")),e},SYNO.SDS.Backup.Client.Common.Utils.TimeScheduleToString=function(t){var e="",i=function(t,e){var i=new Date;return i.setHours(t),i.setMinutes(e),SYNO.SDS.Backup.Client.Common.Utils.DateTimeFormatter(i,{type:"time"})};return e+=_T("schedule","schedule_time")+": ",0===t.repeat_hour?e+=i(t.hour,t.min):(e+=i(t.hour,t.min)+" ~ "+i(t.last_work_hour,t.min),e+=" "+_T("schedule","schedule_every_each")+" "+t.repeat_hour+" "+_T("schedule","schedule_hour")),e},SYNO.SDS.Backup.Client.Common.Utils.getScheduleStr=function(t){return t&&t.schedule_enable?SYNO.SDS.Backup.Client.Common.Utils.TimeScheduleToString(t.schedule)+" "+SYNO.SDS.Backup.Client.Common.Utils.DateScheduleToString(t.schedule):_T("widget","no_backup")},SYNO.SDS.Backup.Client.Common.Utils.getConvertSize=function(t){if(!t)return 0;var e=parseInt(Math.floor(Math.log(t)/Math.log(1024)),10);return 0===e?t/Math.pow(1024,e):parseFloat((t/Math.pow(1024,e)).toFixed(1))},SYNO.SDS.Backup.Client.Common.Utils.getUnit=function(t){if(!t)return"B";return["B","KB","MB","GB","TB","PB","EB","ZB","YB"][parseInt(Math.floor(Math.log(t)/Math.log(1024)),10)]},SYNO.SDS.Backup.Client.Common.Utils.getPercentage=function(t,e){if(!Ext.isNumber(t))return t;var i=0;return 0<e&&(i=t/e*100),i=1<=i?Math.floor(i):.1<=i?i.toFixed(1):.01<=i?i.toFixed(2):"< 0.01",String.format("({0}%)",i)},SYNO.SDS.Backup.Client.Common.Utils.Space.Config={DEFAULT_COLOR:"#bfbfbf",COLORS:["#426FDB","#19A1C0","#FFC214"]},SYNO.SDS.Backup.Client.Common.Utils.AccountMeta={ABILITY_DISABLE:"disable",ABILITY_ENABLE:"enable",SCHEDULE_NONE:"none",SCHEDULE_ONCE_A_DAY:"once_a_day",SCHEDULE_UNLIMITED:"unlimited",ROTATION_NONE:"none",ROTATION_BASIC:"basic",ROTATION_CUSTOM:"custom",STATISTICS_SOURCE:"source",STATISTICS_TARGET:"target",STATISTICS_ALL:"all",SPACE_SOURCE:"source",SPACE_TARGET:"target"},SYNO.SDS.Backup.Client.Common.Utils.createAccountMeta=function(){var t=SYNO.SDS.Backup.Client.Common.Utils.AccountMeta,e=[t.ABILITY_DISABLE,t.ABILITY_ENABLE],i=[t.SCHEDULE_NONE,t.SCHEDULE_ONCE_A_DAY,t.SCHEDULE_UNLIMITED],n=[t.ROTATION_NONE,t.ROTATION_BASIC,t.ROTATION_CUSTOM],s=[t.STATISTICS_SOURCE,t.STATISTICS_TARGET,t.STATISTICS_ALL],a=[t.SPACE_SOURCE,t.SPACE_TARGET];return{scheduleRule:t.SCHEDULE_UNLIMITED,versionDelete:t.ABILITY_ENABLE,versionLock:t.ABILITY_ENABLE,versionRotation:t.ROTATION_CUSTOM,statisticsDisplay:t.STATISTICS_ALL,spaceUsage:t.SPACE_TARGET,quota:0,expireTime:0,planGroup:"",planPeriod:"",account:"",isFresh:!1,setSynoCloudDefault:function(){this.scheduleRule=t.SCHEDULE_ONCE_A_DAY,this.versionDelete=t.ABILITY_DISABLE,this.versionLock=t.ABILITY_DISABLE,this.versionRotation=t.ROTATION_NONE,this.statisticsDisplay=t.STATISTICS_SOURCE,this.spaceUsage=t.SPACE_SOURCE},setSynoCloudData:function(e){if(!Ext.isEmpty(e["x-backup-plan-group"])){var i={};i.plan_group=e["x-backup-plan-group"],Ext.isEmpty(e["x-backup-synoaccount"])||(i.synoaccount=e["x-backup-synoaccount"]),Ext.isEmpty(e["x-backup-plan-period"])||(i.plan_period=e["x-backup-plan-period"]),Ext.isEmpty(e["x-backup-expired-time"])||(i.expire_time=e["x-backup-expired-time"]),Ext.isEmpty(e["x-backup-statistics-display"])||(i.statistics_display=e["x-backup-statistics-display"]),Ext.isEmpty(e["x-backup-schedule-constraint"])||("none"===e["x-backup-schedule-constraint"]?i.schedule_rule=t.SCHEDULE_UNLIMITED:"daily"===e["x-backup-schedule-constraint"]?i.schedule_rule=t.SCHEDULE_ONCE_A_DAY:i.schedule_rule=t.SCHEDULE_NONE),Ext.isEmpty(e["x-backup-version-constraint"])||(i.version_delete=t.ABILITY_DISABLE,i.version_lock=t.ABILITY_DISABLE,i.version_rotation=t.ROTATION_NONE,"none"===e["x-backup-version-constraint"]?(i.version_delete=t.ABILITY_ENABLE,i.version_lock=t.ABILITY_ENABLE,i.version_rotation=t.ROTATION_CUSTOM):"smart"===e["x-backup-version-constraint"]&&(i.version_rotation=t.ROTATION_BASIC)),"business"===i.plan_group?(i.quota=e["x-backup-target-quota"],i.space_usage=t.SPACE_TARGET):(i.quota=e["x-backup-source-quota"],i.space_usage=t.SPACE_SOURCE),this.setData(i)}},setData:function(t){this.setScheduleRule(t.schedule_rule),this.setVersionDelete(t.version_delete),this.setVersionLock(t.version_lock),this.setVersionRotation(t.version_rotation),this.setStatisticsDisplay(t.statistics_display),this.setSpaceUsage(t.space_usage),Ext.isEmpty(t.quota)||(this.quota=t.quota),Ext.isEmpty(t.expire_time)||(this.expireTime=t.expire_time),Ext.isEmpty(t.plan_group)||(this.planGroup=t.plan_group),Ext.isEmpty(t.plan_period)||(this.planPeriod=t.plan_period),Ext.isEmpty(t.synoaccount)||(this.account=t.synoaccount),Ext.isEmpty(t.is_fresh)||(this.isFresh=t.is_fresh)},setScheduleRule:function(t){-1!==i.indexOf(t)?this.scheduleRule=t:SYNO.Debug("Error: setScheduleRule unknown value: ["+t+"]")},setVersionDelete:function(t){-1!==e.indexOf(t)?this.versionDelete=t:SYNO.Debug("Error: setVersionDelete unknown value: ["+t+"]")},setVersionLock:function(t){-1!==e.indexOf(t)?this.versionLock=t:SYNO.Debug("Error: setVersionLock unknown value: ["+t+"]")},setVersionRotation:function(t){-1!==n.indexOf(t)?this.versionRotation=t:SYNO.Debug("Error: setVersionRotation unknown value: ["+t+"]")},setStatisticsDisplay:function(t){-1!==s.indexOf(t)?this.statisticsDisplay=t:SYNO.Debug("Error: setStatisticsDisplay unknown value: ["+t+"]")},setSpaceUsage:function(t){-1!==a.indexOf(t)?this.spaceUsage=t:SYNO.Debug("Error: setSpaceUsage unknown value: ["+t+"]")}}},SYNO.SDS.Backup.Client.Common.Utils.convertMissingCauseToStr=function(t,e){switch(t){case 0:case 1:return SYNO.SDS.Backup.Client.Common.Utils.GetString("error","src_folder_not_exist");case 2:return SYNO.SDS.Backup.Client.Common.Utils.GetString("error","status_source_not_mounted");case 3:return SYNO.SDS.Backup.Client.Common.Utils.GetString("error","status_invalid_source");case 4:return e;case 5:case 6:return SYNO.SDS.Backup.Client.Common.Utils.GetString("error","app_system_error");case 7:return SYNO.SDS.Backup.Client.Common.Utils.GetString("error","app_system_busy");case 8:return SYNO.SDS.Backup.Client.Common.Utils.GetString("error","app_bad_param");case 9:return _T("backup","app_err_install");case 10:return SYNO.SDS.Backup.Client.Common.Utils.GetString("app","broken_app");case 11:return _T("pkgmgr","pkgmgr_pkg_stop_failed");case 12:return _T("pkgmgr","pkgmgr_pkg_start_failed");case 13:return SYNO.SDS.Backup.Client.Common.Utils.GetString("error","app_file_not_found");case 14:return _T("backup","err_connect");case 15:return SYNO.SDS.Backup.Client.Common.Utils.GetString("error","app_network_disconnected");case 16:return _T("backup","err_server_name");case 17:return _T("backup","imgbkp_account_pass_fail");case 18:return _T("netbackup","err_share_perm_denied");case 19:return _TT("SYNO.SDS.Backup.Application","error","err_ip_denied");case 20:return _T("backup","err_serivce_disable");case 21:return SYNO.SDS.Backup.Client.Common.Utils.GetString("error","client_no_space");case 22:return _T("backup","app_err_no_volume");case 23:return SYNO.SDS.Backup.Client.Common.Utils.GetString("error","app_plugin_crash");case 24:return SYNO.SDS.Backup.Client.Common.Utils.GetString("app","app_version_old");case 25:return SYNO.SDS.Backup.Client.Common.Utils.GetString("error","app_depend_no_plugin");case 26:return SYNO.SDS.Backup.String("error","app_err_no_version_found");case 27:return _T("usbbackup","usbbkp_cancel");case 28:return _T("pkgmgr","broken_desc");case 29:return String.format(SYNO.SDS.Backup.Client.Common.Utils.GetString("error","app_share_lost"),e);case 30:return SYNO.SDS.Backup.Client.Common.Utils.GetString("error","app_filesystem_not_support");case 31:return SYNO.SDS.Backup.Client.Common.Utils.GetString("error","app_self_requirement");case 32:return SYNO.SDS.Backup.Client.Common.Utils.GetString("app","restore_version_old");case 33:return String.format(SYNO.SDS.Backup.Client.Common.Utils.GetString("error","app_depend_app_backup_fail"),e);case 34:return SYNO.SDS.Backup.Client.Common.Utils.GetString("app","not_support_new_framework");case 35:return String.format(SYNO.SDS.Backup.Client.Common.Utils.GetString("error","app_depend_app_restore_fail"),e);case 36:return SYNO.SDS.Backup.Client.Common.Utils.GetString("error","app_info_invalid_format");case 37:return String.format(SYNO.SDS.Backup.Client.Common.Utils.GetString("error","app_folder_lost"),e);case 38:return String.format(SYNO.SDS.Backup.Client.Common.Utils.GetString("error","app_share_unmounted"),e);case 39:return String.format(SYNO.SDS.Backup.Client.Common.Utils.GetString("error","app_depend_app_backup_fail_need_enable"),e,e);case 40:return String.format(SYNO.SDS.Backup.Client.Common.Utils.GetString("error","app_depend_on_dest_share"),e);case 41:return String.format(SYNO.SDS.Backup.Client.Common.Utils.GetString("error","c2_share_offline"),e);case 42:return String.format(SYNO.SDS.Backup.Client.Common.Utils.GetString("error","azure_share_end_with_dot"),e);case 43:return String.format(SYNO.SDS.Backup.Client.Common.Utils.GetString("error","app_not_exist"),e);case 44:return String.format(SYNO.SDS.Backup.Client.Common.Utils.GetString("error","app_replaced_by"),e);case 45:return SYNO.SDS.Backup.Client.Common.Utils.GetString("error","status_source_volume_not_mounted")}return e},SYNO.SDS.Backup.Client.Common.Utils.observeEvent=function(t,e){Ext.util.Observable.capture(t,e)},SYNO.SDS.Backup.Client.Common.Utils.getRepoTargetPermissionMsg=function(t,e,i,n){var s="",a="";return"rw"===e?s="permission_read_write":"r"===e&&(s="permission_read"),"repo"===i?a="shared_folder":"target"===i&&(a="directory"),String.format(SYNO.SDS.Backup.Client.Common.Utils.GetString("app","user_no_permission"),t,SYNO.SDS.Backup.Client.Common.Utils.GetString("app",s),SYNO.SDS.Backup.Client.Common.Utils.GetString("app",a),n)},SYNO.SDS.Backup.Client.Common.Utils.DateTimeFormatter=SYNO.SDS.DateTimeFormatter||function(t,e){if(!t||"[object Date]"!==Object.prototype.toString.call(t))return"";var i,n=e&&e.type;return i="date"===n?"Y-m-d":"time"===n?"H:i":"datetimesec"===n?"Y-m-d H:i:s":"datetimesecms"===n?"Y-m-d H:i:s.u":"timesec"===n?"H:i:s":"timesecms"===n?"H:i:s.u":"Y-m-d H:i",t.format(i)},SYNO.SDS.Backup.Client.Common.Utils.getDSMStyleDateTimeString=function(t,e){var i=new Date(t);return isNaN(i)?"":SYNO.SDS.Backup.Client.Common.Utils.DateTimeFormatter(i,e)},SYNO.SDS.Backup.Client.Common.Utils.isABBFuseFolder=function(t){if(Ext.isEmpty(t))return!1;var e=t.split("/");return 3===e.length&&"ActiveBackupData"===e[2]},SYNO.SDS.Backup.Client.Common.Utils.isABBDataFolder=function(t){if(Ext.isEmpty(t))return!1;var e=t.split("/");return 3===e.length&&"@ActiveBackup"===e[2]},SYNO.SDS.Backup.Client.Common.Utils.isThickLunOrNS=function(t){return["BLUN_THICK","THICK_NS"].includes(t)},SYNO.SDS.Backup.Client.Common.Utils.isThinLunOrNS=function(t){return["BLUN","THIN_NS"].includes(t)},Ext.define("SYNO.SDS.Backup.Client.Common.Password.Window",{extend:"SYNO.SDS.ModalWindow",constructor:function(t){this.owner=t.owner;var e=this.fillConfig(t);this.callParent([e]),this.panel=this.getComponent("formpanel"),this.defineBehaviors()},fillConfig:function(t){var e=new SYNO.SDS.Utils.FormPanel({itemId:"formpanel",trackResetOnLoad:!0,fileUpload:!0,autoFlexcroll:!1,webapi:{api:"SYNO.SDS.Backup.Client.Common.Target",method:"private_key_verify",encryption:["pwd","secret"],version:1,scope:this},items:[{xtype:"container",layout:"column",hideLabel:!0,items:[{xtype:"syno_radio",name:"decrypt_method",width:200,inputValue:"manual",boxLabel:SYNO.SDS.Backup.Client.Common.Utils.GetString("app","task_password_input"),checked:!0},{xtype:"syno_textfield",textType:"password",name:"password",minLength:8,maxLength:64,allowBlank:!1},{xtype:"syno_textfield",name:"target_id",hidden:!0},{xtype:"syno_textfield",name:"repo_id",value:-1,hidden:!0},{xtype:"syno_textfield",name:"task_id",value:-1,hidden:!0},{xtype:"syno_textfield",name:"connect_params",hidden:!0},{xtype:"syno_textfield",name:"uni_key",hidden:!0},{xtype:"syno_textfield",name:"is_relink",value:"F",hidden:!0}]},{xtype:"syno_displayfield"},{xtype:"container",layout:"column",hideLabel:!0,items:[{xtype:"syno_radio",name:"decrypt_method",width:200,inputValue:"keyfile",boxLabel:SYNO.SDS.Backup.Client.Common.Utils.GetString("app","task_private_input")},{xtype:"syno_filebutton",allowBlank:!1,name:"private_key",textConfig:{width:192}}]},{xtype:"syno_displayfield"},{xtype:"syno_displayfield",name:"verify_hint"}],onApiSuccess:this.onActionComplete,onApiFailure:this.onFormFailed}),i={width:600,height:230,minWidth:600,minHeight:230,title:SYNO.SDS.Backup.Client.Common.Utils.GetString("app","task_encrypt_input_title"),layout:"fit",items:e,keys:[{key:Ext.EventObject.ENTER,scope:this,handler:this.onSubmit}],buttons:[{itemId:"cancel",text:_T("common","cancel"),scope:this,handler:this.close},{itemId:"apply",btnStyle:"blue",text:_T("common","ok"),scope:this,handler:this.onSubmit}]};return Ext.apply(i,t),i},defineBehaviors:function(){this.mon(this,"afterlayout",(function(t,e){var i=this.panel.getForm();new SYNO.ux.Utils.EnableRadioGroup(i,"decrypt_method",{manual:["password"],keyfile:["private_key","target_id","repo_id","task_id","uni_key","is_relink","connect_params"]})}),this,{single:!0})},onOpen:function(){this.callParent(arguments),this.panel.getForm().findField("password").focus(!1,100),Ext.isEmpty(this.verify_hint)||(this.panel.getForm().findField("verify_hint").setValue(this.verify_hint),this.setHeight(260))},onSubmit:function(){var t=this.panel.getForm();if(t.isValid()){this.setStatusBusy({text:_T("common","msg_waiting")});var e=t.findField("decrypt_method").getGroupValue();if("keyfile"===e){if(!t.findField("private_key").getValue())return;t.findField("target_id").setValue(this.verify_params.target_id),Ext.isEmpty(this.verify_params.repo_id)||t.findField("repo_id").setValue(this.verify_params.repo_id),Ext.isEmpty(this.verify_params.task_id)||t.findField("task_id").setValue(this.verify_params.task_id),t.findField("uni_key").setValue(this.verify_params.uni_key),t.findField("is_relink").setValue(this.verify_params.is_relink?"T":"F"),t.findField("connect_params").setValue(JSON.stringify(this.verify_params)),this.get("formpanel").upload()}else{var i=t.findField("password").getValue();if(!i)return;this.doSubmitEncryption(e,i)}}},doSubmitEncryption:function(t,e){this.sendWebAPI({api:"SYNO.SDS.Backup.Client.Common.Target",version:"1",method:"password_verify",encryption:["password","pwd","secret"],params:Ext.apply(this.panel.getForm().getValues(),this.verify_params),scope:this,callback:function(t,e,i,n){if(!t)return this.clearStatusBusy(),this.setStatusError({text:SYNO.SDS.Backup.Client.Common.Utils.GetErrorString(e.code)}),!1;Ext.isFunction(this.setter)&&this.setter(e);var s=this.callback;this.clearStatusBusy(),this.close(),Ext.isFunction(s)&&s(e)}})},onActionComplete:function(t,e,i){Ext.isFunction(this.ownerCt.setter)&&this.ownerCt.setter(e),Ext.isFunction(this.ownerCt.callback)&&this.ownerCt.callback(e),this.ownerCt.clearStatusBusy(),this.ownerCt.close()},onFormFailed:function(t,e,i){this.ownerCt.clearStatusBusy();var n=SYNO.SDS.Backup.Client.Common.Utils.GetErrorString(e.code);return SYNO.SDS.Backup.Client.Common.Utils.GetString("error","task_password_invalid")===n&&(n=SYNO.SDS.Backup.Client.Common.Utils.GetString("error","task_private_invalid")),this.ownerCt.setStatusError({text:n}),!1}}),Ext.define("SYNO.SDS.Backup.Client.Common.FilterSetting",{extend:"SYNO.ux.FormPanel",constructor:function(t){this.filterLimit=10,this.read_only=t.disable_modified_source;var e={cls:"syno-backup-client-common-filter-setting-panel",bodyStyle:"padding-right: 0px",itemId:"filter_setting_main_page",items:[{xtype:"syno_displayfield",cls:"syno-backup-filter-setting-desc-text",html:this.read_only?SYNO.SDS.Backup.Client.Common.Utils.GetString("app","file_filter_shown_below"):SYNO.SDS.Backup.Client.Common.Utils.GetString("app","file_filter_desc")},{xtype:"syno_displayfield",cls:"syno-backup-filter-setting-mask-text",value:SYNO.SDS.Backup.Client.Common.Utils.GetString("app","include_mask")},{xtype:"syno_compositefield",hideLabel:!0,hidden:this.read_only,items:[{xtype:"syno_textfield",validator:this.validator.bind(this),validationEvent:!1,maxLength:1024,id:this.include_input=Ext.id(),disabled:this.read_only,cls:"syno-backup-filter-setting-textfield"},{xtype:"syno_button",id:this.include_add=Ext.id(),disabled:this.read_only,cls:"syno-backup-filter-setting-create-btn"}]},{xtype:"container",cls:"syno-backup-filter-setting-pool",itemId:"include_pool"},{xtype:"syno_displayfield",cls:"syno-backup-filter-setting-exclude-mask-text syno-backup-filter-setting-mask-text",value:SYNO.SDS.Backup.Client.Common.Utils.GetString("app","exclude_mask")},{xtype:"syno_compositefield",hideLabel:!0,hidden:this.read_only,items:[{xtype:"syno_textfield",validator:this.validator.bind(this),validationEvent:!1,maxLength:1024,id:this.exclued_input=Ext.id(),disabled:this.read_only,cls:"syno-backup-filter-setting-textfield"},{xtype:"syno_button",id:this.exclude_add=Ext.id(),disabled:this.read_only,cls:"syno-backup-filter-setting-create-btn"}]},{xtype:"container",cls:"syno-backup-filter-setting-pool",itemId:"exclude_pool"}]};this.fieldArray=[{fieldName:"whitelist",inputField:this.include_input,button:this.include_add,pool:"include_pool",data:this.getStore()},{fieldName:"exclude_list",inputField:this.exclued_input,button:this.exclude_add,pool:"exclude_pool",data:this.getStore()}],e=Ext.apply(e,t),this.callParent([e])},getStore:function(){return new Ext.data.ArrayStore({autoLoad:!1,fields:["pattern"]})},initComponent:function(){this.callParent(arguments),this.setPreviousTags(this.backupFilter)},initEvents:function(){this.callParent(arguments);var t=function(t){var e;this.fieldToCheck=t,(e=this.checkAndGetInput(t))&&(this.AddTagAndRender(t,e),this.cleanTextField(t))};Ext.each(this.fieldArray,(function(e){Ext.getCmp(e.inputField).on("specialkey",(function(i,n){n.getKey()===n.ENTER&&t.call(this,e)}),this),Ext.getCmp(e.button).on("click",(function(){t.call(this,e)}),this)}),this)},AddTagAndRender:function(t,e){t.data.loadData([[e]],!0),this.getComponent(t.pool).add(new SYNO.SDS.Backup.Client.Common.Tag({text:e,maxWidth:394,read_only:this.read_only,callback:this.closeTagCb.createDelegate(t.data)})),this.doLayout()},checkAndGetInput:function(t){return!!Ext.getCmp(t.inputField).isValid()&&Ext.getCmp(t.inputField).getValue()},cleanTextField:function(t){this.rightAfterAddTag=!0,Ext.getCmp(t.inputField).setValue("")},closeTagCb:function(t){this.removeAt(this.findExact("pattern",t))},isInPool:function(t,e){return-1!==t.findExact("pattern",e)},validator:function(t){if(this.rightAfterAddTag)return this.rightAfterAddTag=!1,!0;if(0===t.length)return SYNO.SDS.Backup.Client.Common.Utils.GetString("app","filter_content_empty_warn");if(-1!==t.indexOf("/"))return SYNO.SDS.Backup.Client.Common.Utils.GetString("app","filter_contain_invalid_character");if(this.filterLimit<=this.fieldToCheck.data.getCount()){var e="whitelist"===this.fieldToCheck.fieldName?"filter_include_reach_limit":"filter_exclude_reach_limit";return String.format(SYNO.SDS.Backup.Client.Common.Utils.GetString("app",e),this.filterLimit)}return!this.isInPool(this.fieldToCheck.data,t)||SYNO.SDS.Backup.Client.Common.Utils.GetString("app","filter_duplicated_warn")},setPreviousTags:function(t){t&&Ext.each(this.fieldArray,(function(e){Ext.each(t[e.fieldName],(function(t){this.AddTagAndRender(e,t)}),this)}),this)},getParams:function(){var t={};return Ext.each(this.fieldArray,(function(e){t[e.fieldName]=[],e.data.each((function(i){t[e.fieldName].push(i.get("pattern"))}))}),this),t}}),Ext.define("SYNO.SDS.Backup.Client.Common.FilterSettingWindow",{extend:"SYNO.SDS.ModalWindow",constructor:function(t){this.read_only=t.disable_modified_source;var e={height:this.read_only?502:570,width:498,bodyCssClass:"syno-backup-client-common-filter-setting-window-body",resizable:!1,layout:"fit",title:SYNO.SDS.Backup.Client.Common.Utils.GetString("app","file_filter_title"),items:[new SYNO.SDS.Backup.Client.Common.FilterSetting(t)],buttons:[{xtype:"syno_button",text:_T("common","cancel"),scope:this,hidden:this.read_only,handler:this.close},{xtype:"syno_button",text:_T("common","ok"),btnStyle:"blue",scope:this,handler:this.passParamsAndClose}]};e=Ext.apply(e,t),this.callParent([e])},initEvents:function(){this.callParent(arguments),this.mon(this,"afterrender",(function(){var t=Ext.select(".syno-backup-client-common-filter-setting-window-body");t&&(t.setStyle("padding-top","0px"),this.doLayout())}),this)},passParamsAndClose:function(){if(!this.read_only){var t=this.getComponent("filter_setting_main_page").getParams();this.fireEvent("savefilterparams",t)}this.close()}}),function(){var t=function(t){switch(t){case"earliest":default:return 0;case"year":return 31536e3;case"month":return 2419200;case"week":return 604800;case"day":return 86400;case"hour":return 3600}},e=function(e){if(0===e)return SYNO.SDS.Backup.Client.Common.Utils.GetString("app","time_from_earliest");var i="";return Ext.each(["year","month","week","day","hour"],(function(n){var s=t(n);if(e%s==0){var a=e/s,o=function(t,e){if(e)switch(t){case"year":return _T("common","time_years");case"month":return _T("common","time_months");case"week":return _T("common","time_weeks");case"day":return _T("common","time_days");case"hour":return _T("common","time_hours")}else switch(t){case"year":return _T("common","time_year");case"month":return _T("common","time_month");case"week":return _T("common","time_week");case"day":return _T("common","time_day");case"hour":return _T("common","time_hour")}}(n,1!==a);return i=String.format("{0} {1}",a,o),!1}})),i},i=[[SYNO.SDS.Backup.Client.Common.Utils.GetString("app","time_from_earliest"),"earliest"],[_T("common","time_year"),"year"],[_T("common","time_month"),"month"],[_T("common","time_week"),"week"],[_T("common","time_day"),"day"],[_T("common","time_hour"),"hour"]];Ext.define("SYNO.SDS.Backup.Client.Common.RetentionSetting.CustomizedWindow",{extend:"SYNO.SDS.ModalWindow",constructor:function(t){var e=this.fillConfig(t);this.callParent([e])},fillConfig:function(t){return this.read_only=!1,Ext.isBoolean(t.read_only)&&t.read_only&&(this.read_only=!0),Ext.apply({cls:"syno-backup-client-common-customized-retention-setting-window",width:680,height:460,resizable:!1,useStatusBar:!0,layout:"fit",items:[new SYNO.SDS.Backup.Client.Common.RetentionSetting.CustomizedPanel({itemId:"customized_retention_setting_panel",owner:this,appWin:t.appWin,read_only:this.read_only,retention_rules:t.retention_rules})],buttons:[{itemId:"cancel",text:_T("common","cancel"),scope:this,handler:this.close,hidden:this.read_only},{itemId:"apply",btnStyle:"blue",text:_T("common","ok"),scope:this,handler:this.onSubmit}]},t)},onSubmit:function(){if(this.read_only)this.close();else{var t=this.getComponent("customized_retention_setting_panel").getParams();0===t.rotate_customize_retention.length?this.owner.getMsgBox().alert(_T("leaf","backup"),SYNO.SDS.Backup.Client.Common.Utils.GetString("error","customized_retention_rule_not_zero")):(this.fireEvent("setCustomizedRetention",t),this.close())}}}),Ext.define("SYNO.SDS.Backup.Client.Common.RetentionSetting.CustomizedPanel",{extend:"SYNO.SDS.Backup.Client.Common.FormPanel",retention_rules:[],constructor:function(t){this.retention_rules=t.retention_rules,this.read_only=t.read_only,this.sortRetentionRules();var e=this.fillConfig(t);this.callParent([e])},initEvents:function(){this.callParent(arguments),this.mon(this.getComponent("customized_retention_grid"),"rowclick",(function(t,e,i){var n=Ext.fly(i.target);if(n){var s=this.gridStore.getAt(e);n.hasClass("syno-backup-customized-retention-delete-btn")&&this.OnRemoveRule(s.get("duration"),s.get("version_interval"),s.get("version_number"))}}),this)},fillConfig:function(t){var e,n=this.read_only?"default":"syno-backup-customized-retention-grid";return Ext.apply({items:[{xtype:"syno_displayfield",cls:"syno-backup-customized-retention-description",hidden:this.read_only,value:SYNO.SDS.Backup.Client.Common.Utils.GetString("app","customized_retention_description")},{xtype:"syno_gridpanel",itemId:"customized_retention_grid",cls:n,enableHdMenu:!1,enableColumnMove:!1,enableColumnResize:!1,trackMouseOver:!0,disableSelection:!0,loadMask:!0,height:224,store:this.getGridStore(),colModel:this.getGridColModel()},{xtype:"container",cls:"syno-backup-customized-retention-add-bar-title-container",layout:"hbox",hidden:this.read_only,items:[{xtype:"syno_displayfield",cls:"syno-backup-customized-retention-add-bar-duration-title",value:SYNO.SDS.Backup.Client.Common.Utils.GetString("app","duration"),width:255},{xtype:"syno_displayfield",cls:"syno-backup-customized-retention-add-bar-version-interval-title",value:SYNO.SDS.Backup.Client.Common.Utils.GetString("app","version_interval"),width:350}]},{xtype:"container",cls:"syno-backup-customized-retention-add-bar",layout:"column",hidden:this.read_only,items:[{xtype:"syno_numberfield",name:"duration_value",cls:"duration-value",allowBlank:!1,disabled:!0,value:1,minValue:1,maxValue:99,autoCreate:{tag:"input",type:"text",autocomplete:"off",maxlength:"2"},width:40,height:30},{xtype:"syno_combobox",name:"duration_scale",displayField:"display",valueField:"value",value:"earliest",store:new Ext.data.ArrayStore({fields:["display","value"],data:i}),width:180,height:28,tpl:'<tpl for="."><div ext:qtip="{[SYNO.SDS.Backup.Client.Common.Utils.htmlEncodeTip(values.display)]}" class="x-combo-list-item syno-backup-enabled-list-item">{display:htmlEncode}</div></tpl>',listeners:{select:function(t,e,i){var n=function(t){return this.getForm().findField(t)}.createDelegate(this);"earliest"===e.get("value")?n("duration_value").setDisabled(!0):n("duration_value").setDisabled(!1)},scope:this}},{xtype:"syno_numberfield",name:"version_interval_value",cls:"version-interval-value",allowBlank:!1,value:1,minValue:1,maxValue:99,autoCreate:{tag:"input",type:"text",autocomplete:"off",maxlength:"2"},width:40,height:30,enableKeyEvents:!0,listeners:{keyup:function(t,e,i){var n=function(t){return this.getForm().findField(t)}.createDelegate(this);n("version_interval_value").clearInvalid(),n("version_interval_scale").clearInvalid()},scope:this}},{xtype:"syno_combobox",name:"version_interval_scale",displayField:"display",valueField:"value",value:"year",store:(e=i.slice(),e.shift(),new Ext.data.ArrayStore({fields:["display","value"],data:e})),width:180,height:28,tpl:'<tpl for="."><div ext:qtip="{[SYNO.SDS.Backup.Client.Common.Utils.htmlEncodeTip(values.display)]}" class="x-combo-list-item syno-backup-enabled-list-item">{display:htmlEncode}</div></tpl>',listeners:{select:function(t,e,i){var n=function(t){return this.getForm().findField(t)}.createDelegate(this);n("version_interval_value").clearInvalid(),n("version_interval_scale").clearInvalid()},scope:this}},{xtype:"syno_button",cls:"add-rule-btn",text:_T("common","add"),handler:this.OnAddRule,scope:this}]}]},t)},getGridStore:function(){return this.gridStore||(this.gridStore=new Ext.data.ArrayStore({fields:["duration","version_interval","version_number"],data:this.retention_rules})),this.gridStore},getGridColModel:function(){var t;return t=this.read_only?function(t,i,n){return new Ext.XTemplate('<div class="{textCls}" ext:qtip="{[SYNO.SDS.Backup.Client.Common.Utils.htmlEncodeTip(values.text)]}">{text:htmlEncode}</div>').apply({text:e(t),textCls:"syno-backup-customized-retention-version-interval-string"})}:function(t,i,n){return new Ext.XTemplate('<div class="{textCls}" ext:qtip="{[SYNO.SDS.Backup.Client.Common.Utils.htmlEncodeTip(values.text)]}">{text:htmlEncode}</div><div class="{deleteCls}" ext:qtip="{deleteQtip}"></div>').apply({text:e(t),textCls:"syno-backup-customized-retention-version-interval-string",deleteCls:"syno-backup-customized-retention-delete-btn",deleteQtip:_T("common","delete")})},new Ext.grid.ColumnModel([{header:SYNO.SDS.Backup.Client.Common.Utils.GetString("app","duration"),dataIndex:"duration",width:250,resizable:!1,align:"left",renderer:function(t,i,n){return new Ext.XTemplate('<span ext:qtip="{[SYNO.SDS.Backup.Client.Common.Utils.htmlEncodeTip(values.text)]}">{text:htmlEncode}</span>').apply({text:e(t)})}},{header:SYNO.SDS.Backup.Client.Common.Utils.GetString("app","version_interval"),dataIndex:"version_interval",width:350,align:"left",renderer:t}])},OnAddRule:function(){var e=function(t){return this.getForm().findField(t).getValue()}.createDelegate(this),i=function(t){return this.getForm().findField(t)}.createDelegate(this),n=[e("duration_value")*t(e("duration_scale")),e("version_interval_value")*t(e("version_interval_scale")),1];if(i("version_interval_value").clearInvalid(),i("version_interval_scale").clearInvalid(),0!==n[0]&&n[0]<n[1])return i("version_interval_value").markInvalid(SYNO.SDS.Backup.Client.Common.Utils.GetString("app","max_version_interval")),void i("version_interval_scale").markInvalid(SYNO.SDS.Backup.Client.Common.Utils.GetString("app","max_version_interval"));var s=!1;Ext.each(this.retention_rules,function(t,e){if(t[0]===n[0]&&t[1]===n[1]&&t[2]===n[2])return s=!0,this.rowFocusAnimation(e),!1}.createDelegate(this)),!1===s&&(this.retention_rules.length<7?(this.retention_rules.push(n),this.updateRetentionResult()):this.owner.getMsgBox().alert(_T("leaf","backup"),SYNO.SDS.Backup.Client.Common.Utils.GetString("error","customized_retention_reach_max_rules")))},rowFocusAnimation:function(t){var e=Ext.get(this.getComponent("customized_retention_grid").getView().getRow(t));e&&e.isVisible()&&Ext.Element.prototype.frame.apply(e,["#000",1,{duration:.35}])},OnRemoveRule:function(t,e,i){Ext.each(this.retention_rules,function(n,s,a){if(n[0]===t&&n[1]===e&&n[2]===i)return this.retention_rules.splice(s,1),!1}.createDelegate(this)),this.updateRetentionResult()},updateRetentionResult:function(){this.sortRetentionRules(),this.gridStore.loadData(this.retention_rules)},sortRetentionRules:function(){this.retention_rules.sort((function(t,e){return t[0]===e[0]?e[1]-t[1]:0===t[0]||0===e[0]?t[0]-e[0]:e[0]-t[0]}))},getParams:function(){var t={};return t.rotate_customize_retention=this.retention_rules,t}})}(),function(){var t=function(t){var e=0,i=1,n=" ";for(Ext.isString(t)&&(t=parseFloat(t));t>=1024&&5!==e;)t/=1024,e++;return t>=100&&(i=0),t>=1e3&&(n=""),0===e?t.toFixed(i)+n+"B":1===e?t.toFixed(i)+n+"KB":2===e?t.toFixed(i)+n+"MB":3===e?t.toFixed(i)+n+"GB":4===e?t.toFixed(i)+n+"TB":t.toFixed(i)+n+"PB"};Ext.define("SYNO.SDS.Backup.Client.Common.Statistic.BaseLineChart",{extend:"Ext.BoxComponent",parseYearData:Ext.emptyFn,parseData:Ext.emptyFn,getXAxisData:Ext.emptyFn,getYAxisData:Ext.emptyFn,getYDomain:Ext.emptyFn,getYTickFormat:Ext.emptyFn,getTooltipHTML:Ext.emptyFn,getInterpolationPoint:Ext.emptyFn,cacheMonthData:null,cacheYearData:null,dateInfo:null,isSetData:!1,constructor:function(t){this.d3=SYNO.SDS.DataDrivenDocuments.DrawHelper,this.svgWidth="100%",this.svgHeight=Ext.isNumber(t.height)?t.height:250,this.svgMargins={top:2,bottom:30,left:58,right:9},this.dataNodePosition=8,this.tooltipXShift=25,this.tooltipAxisShift=10;var e=Ext.apply({cls:"syno-backup-statistic-line-chart"},t);this.callParent([e])},setData:function(t,e){this.dateInfo=e,this.isSetData=!0,"year"===e.timeRange?this.cacheYearData||(this.cacheYearData=this.parseYearData(t)):this.cacheMonthData=this.parseData(t)},getStartDate:function(){return Ext.isObject(this.dateInfo)?this.dateInfo.getStartDate():(SYNO.Debug.error("invalid call no dateInfo"),null)},redraw:function(){this.isSetData?"month"===this.dateInfo.timeRange?this._draw(this.cacheMonthData.dataList,this.cacheMonthData.previousNode,this.cacheMonthData.nextNode):"year"===this.dateInfo.timeRange?this._draw(this.cacheYearData.dataList,this.cacheYearData.previousNode,this.cacheYearData.nextNode):(SYNO.Debug.error("unknown time range"),this._draw([],null,null)):this._draw([],null,null)},_draw:function(t,e,i){var n,s=this.d3,a=this.svgMargins,o=this.getWidth()-a.left-a.right,r=this.getHeight()-a.top-a.bottom,l=this,c=Ext.isObject(this.dateInfo)?this.dateInfo.getSelectMonthDateCount():31;Ext.isObject(this.dateInfo)&&"year"===this.dateInfo.timeRange&&(c=24);var u=null;u="target"===l.lineChart&&l.isSetData&&l.enableTargetLimit?l.getYDomain(t,e,i,l.targetMaxSize):l.getYDomain(t,e,i);var d=[Math.ceil(u[0]+(u[1]-u[0])/4),Math.ceil(u[0]+(u[1]-u[0])/2),Math.ceil(u[0]+(u[1]-u[0])/4*3)],p=[],m=[];if(this.isSetData){for(n=1;n<=c;n+=1)Ext.isObject(l.dateInfo)&&"month"===l.dateInfo.timeRange?n%2==1&&p.push(n):this.xAxisMapping[n]&&p.push(n);m=[u[0],Math.ceil((u[0]+u[1])/2),u[1]]}this.svgGraphic&&this.svgGraphic.remove(),this.svgGraphic=this.svg.append("g").attr("transform","translate("+this.svgMargins.left+","+this.svgMargins.top+")");var h=this.svgGraphic;this.svgGraphicTouchPanel&&this.svgGraphicTouchPanel.remove(),this.svgGraphicTouchPanel=this.touchPanel.append("g").attr("transform","translate("+this.svgMargins.left+","+this.svgMargins.top+")");var S=this.svgGraphicTouchPanel,g=s.scale.linear().range([0,o]).domain([0,c+1]);Ext.isObject(l.dateInfo)&&"month"===l.dateInfo.timeRange&&(g=s.scale.linear().range([0,34,o-34,o]).domain([0,1,c,c+1]));var _=0,f=0,C=0;(l.isValidNode(e)||l.isValidNode(i))&&(Ext.isObject(this.dateInfo)&&"year"===this.dateInfo.timeRange?(_=this.getStartDate().add(Date.MONTH,-1).add(Date.DAY,15).getTime()/1e3,f=this.getStartDate().getTime()/1e3,C=this.getStartDate().add(Date.MONTH,12).getTime()/1e3):(_=this.getStartDate().add(Date.DAY,-1).getTime()/1e3,f=this.getStartDate().getTime()/1e3,C=this.getStartDate().getLastDateOfMonth().add(Date.DAY,1).getTime()/1e3));var y=s.scale.linear().range([r,0]).domain(u),v=null;v=Ext.isObject(this.dateInfo)&&"year"===l.dateInfo.timeRange?function(t){return g(l.getYearIndex(l.getStartDate(),t))}:function(t){return g(l.getMonthIndex(l.getStartDate(),t))};var x=s.svg.axis().scale(g).orient("top").tickValues("").tickSize(0,0),k=s.svg.axis().scale(y).orient("right").tickValues(d).tickFormat("").tickSize(-o,0),b=s.svg.axis().scale(g).orient("bottom").tickValues(p).tickSize(-4,0).tickPadding(10);Ext.isObject(this.dateInfo)&&"year"===this.dateInfo.timeRange?b.tickFormat((function(t){return l.xAxisMapping[t]})):b.tickFormat((function(t){return("0"+t).slice(-2)}));var D=s.svg.axis().scale(y).orient("left").tickValues(m).tickSize(0,0).tickPadding(5).tickFormat(l.getYTickFormat);h.append("rect").attr("x",0).attr("y",0).attr("width",o).attr("height",r).style("fill","#FAFCFF"),h.append("g").attr("class","x axis").attr("transform","translate(0,"+r+")").call(b).selectAll("text").style({"font-size":"12px"}),h.append("g").attr("class","y axis").call(D).selectAll("text").style({"font-size":"12px"}),h.append("g").attr("class","x-top axis").call(x),h.append("g").attr("class","y-right axis").attr("transform","translate("+o+", 0)").call(k),h.select(".y.axis").select("[transform='translate(0,0)']").attr("transform","translate(0,5)");var B=h.append("line").attr("class","data-node-verticle-line").attr("x1",g(1)).attr("y1",0).attr("x2",g(1)).attr("y2",r);Ext.each(l.lineNodeList,(function(n){var a=s.svg.line().x((function(t){return v(t)})).y((function(t){return y(n.fn(t))}));h.append("path").datum(t).attr("class","line "+n.line_css).attr("d",a);var o,r=[];l.isValidNode(e)&&0<t.length&&((o=l.getInterpolationPoint(e,t[0],f)).end_time=_,r=[o,t[0]],h.append("path").datum(r).attr("class","line "+n.line_css).attr("d",a)),l.isValidNode(i)&&0<t.length&&(r=[o=l.getInterpolationPoint(t[t.length-1],i,C),t[t.length-1]],h.append("path").datum(r).attr("class","line "+n.line_css).attr("d",a)),l.isValidNode(i)&&l.isValidNode(e)&&0===t.length&&(r.push(l.getInterpolationPoint(e,i,_)),r.push(l.getInterpolationPoint(e,i,C)),h.append("path").datum(r).attr("class","line "+n.line_css).attr("d",a)),!l.isValidNode(e)&&0<t.length&&h.append("circle").attr("cx",v(t[0])).attr("cy",y(n.fn(t[0]))).attr("r",5).attr("class","endpoint-node "+n.node_css),!l.isValidNode(i)&&0<t.length&&h.append("circle").attr("cx",v(t[t.length-1])).attr("cy",y(n.fn(t[t.length-1]))).attr("r",5).attr("class","endpoint-node "+n.node_css),n.node&&Ext.destroy(n.node),n.node=l.el.createChild({cls:"data-node-base "+n.node_css}),n.node.createChild({cls:"inner-node "+n.node_css})})),this.emptyMessage&&Ext.destroy(this.emptyMessage),0!==t.length||!l.isSetData||l.isValidNode(e)&&l.isValidNode(i)?"target"===l.lineChart&&l.isSetData&&l.enableTargetLimit&&h.append("line").attr("class","line target-limit").attr("x1",0).attr("x2",o).attr("y1",y(l.targetMaxSize)).attr("y2",y(l.targetMaxSize)):(this.emptyMessage=l.el.createChild({cls:"empty-page-position"}).setStyle("top",this.svgMargins.top+"px").setStyle("left",this.svgMargins.left+"px"),this.emptyMessage.createChild({cls:"empty-page-parent"}).setStyle("width",o+"px").setStyle("height",r+"px").createChild({cls:"empty-page-text"}).setStyle("width",o+"px").update(SYNO.SDS.Backup.Client.Common.Utils.GetString("statistics","no_data_desc"))),this.tooltip&&Ext.destroy(this.tooltip),l.tooltip=l.el.createChild({cls:"data-node-tooltip "+l.lineChart});var N,O=l.tooltip.getWidth(),E=l.tooltip.getHeight(),w=this.tooltipXShift,Y=Math.ceil(E/2),T=this.tooltipAxisShift,U=S.append("rect").attr("x",0).attr("y",0).attr("width",o).attr("height",r).attr("opacity",0);if(U.on("mousemove",(function(){var e=function(e,i){for(n=0;n<t.length;n++)if((N=v(t[n]))-i<=e&&e<N+i)return t[n];return null}(s.mouse(this)[0],l.dataNodePosition);if(null!==e){N=v(e),B.attr("x1",N).attr("x2",N).style("display","block");var i=Number.MAX_VALUE;Ext.each(l.lineNodeList,(function(t){var n=y(t.fn(e));t.node.setStyle("visibility","visible").setStyle("top",l.svgMargins.top+n-l.dataNodePosition+"px").setStyle("left",l.svgMargins.left+N-l.dataNodePosition+"px"),n<i&&(i=n)}));var a=N+w,c=i-Y;o-26-N<O+w&&(a=N-O-w),i-Y<0?c=T:r-c<E&&(c=r-E-T),l.tooltip.setStyle("left",a+l.svgMargins.left+"px").setStyle("top",c+l.svgMargins.top+"px").setStyle("visibility","visible"),Ext.isObject(l.dateInfo)&&"year"===l.dateInfo.timeRange?l.tooltip.update(l.getTooltipYearHTML(e,l.tooltip)).setStyle("visibility","visible"):l.tooltip.update(l.getTooltipHTML(e,l.tooltip)).setStyle("visibility","visible")}})),U.on("mouseleave",(function(){l.tooltip.setStyle("visibility","hidden"),B.style("display","none"),Ext.each(l.lineNodeList,(function(t){t.node.setStyle("visibility","hidden")}))})),this.monthBtnNext&&this.monthBtnPrevious&&(Ext.destroy(this.monthBtnNext),Ext.destroy(this.monthBtnPrevious)),Ext.isObject(this.dateInfo)&&"month"===this.dateInfo.timeRange){this.monthBtnNext=l.el.createChild({cls:"month-change-arrow next"}).setStyle("left",this.svgMargins.left+o-48+"px").setStyle("top",this.svgMargins.top+Math.ceil(r/2)-18+"px"),l.isValidNode(i)?this.mon(this.monthBtnNext,"click",(function(){l.fireEvent("click_change_month_btn","next")})):this.monthBtnNext.addClass("disable"),this.monthBtnPrevious=l.el.createChild({cls:"month-change-arrow back"}).setStyle("left",this.svgMargins.left+12+"px").setStyle("top",this.svgMargins.top+Math.ceil(r/2)-18+"px"),l.isValidNode(e)?this.mon(this.monthBtnPrevious,"click",(function(){l.fireEvent("click_change_month_btn","back")})):this.monthBtnPrevious.addClass("disable")}},isValidNode:function(t){return!Ext.isEmpty(t)&&0!==this.getXAxisData(t)},onRender:function(t,e){var i=this.d3;this.callParent(arguments),this.svg=i.select("#"+this.id).append("svg").attr("width",this.svgWidth).attr("height",this.svgHeight).attr("class","syno-backup-statistic-svg syno-backup-statistic-svg-main-panel"),this.touchPanel=i.select("#"+this.id).append("svg").attr("width",this.svgWidth).attr("height",this.svgHeight).attr("class","syno-backup-statistic-svg syno-backup-statistic-svg-touch-panel")},onResize:function(t,e,i,n){this.svgHeight===e&&this.svgHeight===t||(this.svgHeight=e,this.svgWidth=t,this.svg=this.d3.select("#"+this.id+" svg"),this.d3.selectAll("#"+this.id+" svg").attr("width",this.svgWidth).attr("height",this.svgHeight),this.ownerCt.ownerCt.activeTab===this.ownerCt&&this.redraw()),this.callParent(arguments)},genYearXLabel:function(t,e){var i,n,s=[];for(i=1,n=t;i<=e;i++)n.getDate()<16?(s[i]=n.format("m/Y"),n=n.add(Date.DAY,15)):(s[i]=void 0,n=n.add(Date.MONTH,1).getFirstDateOfMonth());return s},genYearTipLabel:function(t,e){var i,n,s=[];for(i=1,n=t;i<=e;i++)n.getDate()<16?(s[i]=n.format("m/d")+" - "+n.add(Date.DAY,14).format("m/d"),n=n.add(Date.DAY,15)):(s[i]=n.format("m/d")+" - "+n.getLastDateOfMonth().format("m/d"),n=n.add(Date.MONTH,1).getFirstDateOfMonth());return s},getYearIndex:function(t,e){function i(t){return 24*t.getYear()+2*t.getMonth()+(t.getDate()>15?1:0)}return 1+i(new Date(1e3*e.end_time))-i(t)},getMonthIndex:function(t,e){var i=new Date(1e3*e.end_time);return 1+Math.floor((i.getTime()-t.getTime())/1e3/86400)},mergeYearData:function(t,e,i,n,s){var a,o=[],r=[];for(Ext.each(t,(function(t){var a=n(e,t);a<=0||a>i||s(o,a,t)})),a=1;a<=i;a++)Ext.isDefined(o[a])&&r.push(o[a]);return r},_parseYearData:function(t,e,i,n){if(Ext.isObject(t)&&Ext.isObject(this.dateInfo)){var s=this.getStartDate();this.xAxisMapping=this.genYearXLabel(s,24),this.tooltipMapping=this.genYearTipLabel(s,24);var a=e(t);if(Ext.isObject(a)&&Ext.isArray(a.dataList))return a.dataList=this.mergeYearData(a.dataList,s,24,i,n),a;SYNO.Debug.error("bad data returned")}else SYNO.Debug.error("invalud input")}}),Ext.define("SYNO.SDS.Backup.Client.Common.Statistic.TargetLineChart",{extend:"SYNO.SDS.Backup.Client.Common.Statistic.BaseLineChart",lineChart:"target",lineNodeList:null,xAxisMapping:null,tooltipMapping:null,enableTargetLimit:null,targetMaxSize:null,constructor:function(t){this.lineNodeList=[{fn:this.getYAxisData,line_css:"target-size",node_css:"blue",node:null}],this.callParent([t])},parseYearData:function(t){return this._parseYearData(t,(function(e){return{dataList:t.target_list,previousNode:t.target_previous_next_list[0],nextNode:t.target_previous_next_list[1]}}),this.getYearIndex,(function(t,e,i){var n=t[e];Ext.isDefined(n)?n.end_time<i.end_time&&(t[e]=i):t[e]=i}))},parseData:function(t){if(Ext.isObject(t))return{dataList:t.target_list,previousNode:t.target_previous_next_list[0],nextNode:t.target_previous_next_list[1]}},getInterpolationPoint:function(t,e,i){return{end_time:i,target_size:this.d3.scale.linear().domain([t.end_time,e.end_time]).range([t.target_size,e.target_size])(i)}},getXAxisData:function(t){return t.end_time},getYAxisData:function(t){return t.target_size},getYDomain:function(t,e,i,n){if(!(0!==t.length||Ext.isEmpty(e)||this.isValidNode(e)||Ext.isEmpty(i)||this.isValidNode(i)))return[0,1073741824];var s=[];s=(s=s.concat(t,[e,i])).filter(function(t){return this.isValidNode(t)}.createDelegate(this));var a=this._getListMaxMinValue(s);Ext.isNumber(n)&&(a.max=Ext.max([n,a.max]),a.min=Ext.min([n,a.min]));var o=Math.ceil(1.18*a.max),r=Math.floor(.9*a.min);return 0===o&&0===r?[0,1048576]:o<100?[0,100]:[r,o]},_getListMaxMinValue:function(t){var e=0,i=Number.MAX_VALUE;return Ext.each(t,(function(t){e=Ext.max([this.getYAxisData(t),e]),i=Ext.min([this.getYAxisData(t),i])}),this),{max:e,min:i}},getYTickFormat:function(e){return 0===e?"":t(1024*e)},getTooltipYearHTML:function(t){var e=this.tooltipMapping[this.getYearIndex(this.getStartDate(),t)],i=Ext.util.Format.fileSize(1024*t.target_size).split(" ");return"<div class='title'>"+e+"</div><hr class='divider'><div class='text-field'><div class='text-item tooltip-text blue'><span class='left'>"+SYNO.SDS.Backup.Client.Common.Utils.GetString("statistics","tooltip_size")+":</span><span class='right'><font class='target-size'>"+i[0]+"</font> "+i[1]+"</span></div></div>"},getTooltipHTML:function(t){var e=new Date(1e3*t.end_time),i=e.getMonth()+1+"/"+e.getDate(),n=Ext.util.Format.fileSize(1024*t.target_size).split(" ");return"<div class='title'><span class='left'>"+i+"</span></div><hr class='divider'><div class='text-field'><div class='text-item tooltip-text blue'><span class='left'>"+SYNO.SDS.Backup.Client.Common.Utils.GetString("statistics","tooltip_size")+":</span><span class='right'><font class='target-size'>"+n[0]+"</font> "+n[1]+"</span></div></div>"},setTargetMaxSize:function(t,e){this.enableTargetLimit=t,this.targetMaxSize=parseFloat(e)}}),Ext.define("SYNO.SDS.Backup.Client.Common.Statistic.SourceLineChart",{extend:"SYNO.SDS.Backup.Client.Common.Statistic.BaseLineChart",lineChart:"source",lineNodeList:null,multiVerLunInfo:{isMultiVerLunBackup:!1,multiVerLunType:null},constructor:function(t){this.multiVerLunInfo=t.mainWindow.multiVerLunInfo,this.lineNodeList=[{fn:this.getYAxisData,line_css:"source-size",node_css:"red",node:null}],this.callParent([t])},parseYearData:function(t){return this._parseYearData(t,(function(e){return{dataList:t.source_list,previousNode:t.source_previous_next_list[0],nextNode:t.source_previous_next_list[1]}}),this.getYearIndex,(function(t,e,i){var n=t[e];Ext.isDefined(n)?n.end_time<i.end_time&&(t[e]=i):t[e]=i}))},parseData:function(t){if(!Ext.isObject(t))return;let e=t.source_list;if(this.multiVerLunInfo.isMultiVerLunBackup){const i=this.multiVerLunInfo.multiVerLunType,n=t.multi_ver_lun_source_list;SYNO.SDS.Backup.Client.Common.Utils.isThickLunOrNS(i)&&(e=n.map((t=>({source_size:t.total_capacity,end_time:t.create_time})))),SYNO.SDS.Backup.Client.Common.Utils.isThinLunOrNS(i)&&(e=n.map((t=>({source_size:t.used_capacity,end_time:t.create_time}))))}return{dataList:e,previousNode:t.source_previous_next_list[0],nextNode:t.source_previous_next_list[1]}},getInterpolationPoint:function(t,e,i){return{end_time:i,source_size:this.d3.scale.linear().domain([t.end_time,e.end_time]).range([t.source_size,e.source_size])(i)}},getXAxisData:function(t){return t.end_time},getYAxisData:function(t){return t.source_size},getYDomain:function(t,e,i){if(!(0!==t.length||Ext.isEmpty(e)||this.isValidNode(e)||Ext.isEmpty(i)||this.isValidNode(i)))return[0,1073741824];var n=[];n=(n=n.concat(t,[e,i])).filter(function(t){return this.isValidNode(t)}.createDelegate(this));var s=this._getListMaxMinValue(n),a=Math.ceil(1.18*s.max),o=Math.floor(.9*s.min);return 0===a&&0===o?[0,1048576]:a<100?[0,100]:[o,a]},_getListMaxMinValue:function(t){var e=0,i=Number.MAX_VALUE;return Ext.each(t,(function(t){e=Ext.max([this.getYAxisData(t),e]),i=Ext.min([this.getYAxisData(t),i])}),this),{max:e,min:i}},getYTickFormat:function(e){return 0===e?"":t(1024*e)},getTooltipYearHTML:function(t){var e=this.tooltipMapping[this.getYearIndex(this.getStartDate(),t)],i=Ext.util.Format.fileSize(1024*t.source_size).split(" ");return"<div class='title'>"+e+"</div><hr class='divider'><div class='text-field'><div class='text-item tooltip-text red'><span class='left'>"+SYNO.SDS.Backup.Client.Common.Utils.GetString("statistics","tooltip_size")+":</span><span class='right'><font class='source-size'>"+i[0]+"</font> "+i[1]+"</span></div></div>"},getTooltipHTML:function(t){var e=new Date(1e3*t.end_time),i=e.getMonth()+1+"/"+e.getDate(),n=Ext.util.Format.fileSize(1024*t.source_size).split(" ");return"<div class='title'><span class='left'>"+i+"</span></div><hr class='divider'><div class='text-field'><div class='text-item tooltip-text red'><span class='left'>"+SYNO.SDS.Backup.Client.Common.Utils.GetString("statistics","tooltip_size")+":</span><span class='right'><font class='source-size'>"+n[0]+"</font> "+n[1]+"</span></div></div>"}}),Ext.define("SYNO.SDS.Backup.Client.Common.Statistic.SourceChangeLineChart",{extend:"SYNO.SDS.Backup.Client.Common.Statistic.BaseLineChart",lineChart:"source-change",lineNodeList:null,constructor:function(t){this.lineNodeList=[{fn:this.getYAxisDataNewCount,line_css:"new-count",node_css:"blue",node:null},{fn:this.getYAxisDataModifyCount,line_css:"modify-count",node_css:"green",node:null,fo:null},{fn:this.getYAxisDataDeleteCount,line_css:"delete-count",node_css:"red",node:null,fo:null}],this.callParent([t])},parseYearData:function(t){return this._parseYearData(t,(function(e){return{dataList:t.source_list,previousNode:t.source_previous_next_list[0],nextNode:t.source_previous_next_list[1]}}),this.getYearIndex,(function(t,e,i){var n=t[e];Ext.isDefined(n)?(Ext.each(["delete_count","modify_count","new_count"],(function(t){n[t]+=i[t]})),n.end_time<i.end_time&&(n.end_time=i.end_time)):t[e]=i}))},parseData:function(t){if(Ext.isObject(t))return{dataList:t.source_list,previousNode:t.source_previous_next_list[0],nextNode:t.source_previous_next_list[1]}},getInterpolationPoint:function(t,e,i){var n={end_time:i},s=this;return Ext.each(["delete_count","modify_count","new_count"],(function(a){var o=s.d3.scale.linear().domain([t.end_time,e.end_time]).range([t[a],e[a]]);n[a]=o(i)})),n},getXAxisData:function(t){return t.end_time},getYAxisDataNewCount:function(t){return t.new_count},getYAxisDataModifyCount:function(t){return t.modify_count},getYAxisDataDeleteCount:function(t){return t.delete_count},getYDomain:function(t,e,i){if(!(0!==t.length||Ext.isEmpty(e)||this.isValidNode(e)||Ext.isEmpty(i)||this.isValidNode(i)))return[0,100];var n=[];n=(n=n.concat(t,[e,i])).filter(function(t){return this.isValidNode(t)}.createDelegate(this));var s=this._getListMaxMinValue(n),a=Math.ceil(1.18*s.max),o=Math.floor(.9*s.min);return 0===a&&0===o?[0,100]:a<20?[0,20]:[o,a]},_getListMaxMinValue:function(t){var e=0,i=Number.MAX_VALUE;return Ext.each(t,(function(t){var n=Ext.max([this.getYAxisDataNewCount(t),this.getYAxisDataModifyCount(t),this.getYAxisDataDeleteCount(t)]),s=Ext.min([this.getYAxisDataNewCount(t),this.getYAxisDataModifyCount(t),this.getYAxisDataDeleteCount(t)]);e=Ext.max([n,e]),i=Ext.min([s,i])}),this),{max:e,min:i}},getYTickFormat:function(t){return 0===t?"":t>=1e6?t.toExponential(1):t},getTooltipYearHTML:function(t,e){var i,n,s,a=this.tooltipMapping[this.getYearIndex(this.getStartDate(),t)];return 1e4<=Ext.max([t.new_count,t.modify_count,t.delete_count])?e.addClass("bigger"):e.removeClass("bigger"),i=t.new_count>=1e8?t.new_count.toExponential(3):t.new_count,n=t.modify_count>=1e8?t.modify_count.toExponential(3):t.modify_count,s=t.delete_count>=1e8?t.delete_count.toExponential(3):t.delete_count,"<div class='title'>"+a+"</div><hr class='divider'><div class='text-field'><div class='text-item tooltip-text blue'><span class='left'>"+SYNO.SDS.Backup.Client.Common.Utils.GetString("statistics","line_file_new")+":</span><span class='right'><font class='new-count'>"+i+"</font> "+SYNO.SDS.Backup.Client.Common.Utils.GetString("statistics","tooltip_files")+"</span></div><div class='text-item tooltip-text green'><span class='left'>"+SYNO.SDS.Backup.Client.Common.Utils.GetString("statistics","line_file_modify")+":</span><span class='right'><font class='modify-count'>"+n+"</font> "+SYNO.SDS.Backup.Client.Common.Utils.GetString("statistics","tooltip_files")+"</span></div><div class='text-item tooltip-text red'><span class='left'>"+SYNO.SDS.Backup.Client.Common.Utils.GetString("statistics","line_file_delete")+":</span><span class='right'><font class='delete-count'>"+s+"</font> "+SYNO.SDS.Backup.Client.Common.Utils.GetString("statistics","tooltip_files")+"</span></div></div>"},getTooltipHTML:function(t,e){var i,n,s,a=new Date(1e3*t.end_time),o=a.getMonth()+1+"/"+a.getDate();return 1e4<=Ext.max([t.new_count,t.modify_count,t.delete_count])?e.addClass("bigger"):e.removeClass("bigger"),i=t.new_count>=1e8?t.new_count.toExponential(3):t.new_count,n=t.modify_count>=1e8?t.modify_count.toExponential(3):t.modify_count,s=t.delete_count>=1e8?t.delete_count.toExponential(3):t.delete_count,"<div class='title'><span class='left'>"+o+"</span></div><hr class='divider'><div class='text-field'><div class='text-item tooltip-text blue'><span class='left'>"+SYNO.SDS.Backup.Client.Common.Utils.GetString("statistics","line_file_new")+":</span><span class='right'><font class='new-count'>"+i+"</font> "+SYNO.SDS.Backup.Client.Common.Utils.GetString("statistics","tooltip_files")+"</span></div><div class='text-item tooltip-text green'><span class='left'>"+SYNO.SDS.Backup.Client.Common.Utils.GetString("statistics","line_file_modify")+":</span><span class='right'><font class='modify-count'>"+n+"</font> "+SYNO.SDS.Backup.Client.Common.Utils.GetString("statistics","tooltip_files")+"</span></div><div class='text-item tooltip-text red'><span class='left'>"+SYNO.SDS.Backup.Client.Common.Utils.GetString("statistics","line_file_delete")+":</span><span class='right'><font class='delete-count'>"+s+"</font> "+SYNO.SDS.Backup.Client.Common.Utils.GetString("statistics","tooltip_files")+"</span></div></div>"}})}(),Ext.define("SYNO.SDS.Backup.Client.Common.Statistic.TargetParamsPanel",{extend:"SYNO.SDS.Backup.Client.Common.FormPanel",isDisableNotify:!1,isAddedTooltip:!1,cacheData:null,readOnly:!1,autoFlexcroll:!1,constructor:function(t){var e,i=this;e=t.readOnly?Ext.apply({items:[{xtype:"syno_displayfield",name:"enable_target_description"},{xtype:"syno_displayfield",name:"enable_target_note",htmlEncode:!1}]},t):Ext.apply({items:[{xtype:"syno_checkbox",boxLabel:SYNO.SDS.Backup.Client.Common.Utils.GetString("statistics","alert_target_size"),name:"enable_target_max_size",groupFields:{enable:["target_max_size","target_max_size_scale"]}},{xtype:"syno_compositefield",hideLabel:!0,indent:1,items:[{xtype:"syno_displayfield",name:"target_max_size_label",value:SYNO.SDS.Backup.Client.Common.Utils.GetString("statistics","limit_target_size")+": "},{xtype:"syno_numberfield",name:"target_max_size",allowBlank:!1,allowDecimals:!0,width:80,value:0,minValue:0,autoCreate:{tag:"input",type:"text",autocomplete:"off",maxlength:"8"},validator:function(t){var e=function(t){return i.getForm().findField(t)};if(Ext.isObject(i.cacheData))return i.sizeValidater(e("target_max_size").getValue(),e("target_max_size_scale").getValue())}},{xtype:"syno_combobox",name:"target_max_size_scale",width:60,valueField:"value",displayField:"display",value:2,store:new Ext.data.SimpleStore({autoDestroy:!0,fields:["value","display"],data:[[0,"KB"],[1,"MB"],[2,"GB"],[3,"TB"],[4,"PB"]]})},{xtype:"syno_displayfield",name:"target_volume_size_label",value:SYNO.SDS.Backup.Client.Common.Utils.GetString("statistics","current_target_size")+": "},{xtype:"syno_displayfield",name:"target_volume_size",value:""}]},{xtype:"syno_checkbox",boxLabel:SYNO.SDS.Backup.Client.Common.Utils.GetString("statistics","alert_target_growth"),name:"enable_target_growth",groupFields:{enable:["target_growth_size","target_growth_size_scale"]}},{xtype:"syno_compositefield",hideLabel:!0,indent:1,items:[{xtype:"syno_displayfield",name:"target_growth_size_label",value:SYNO.SDS.Backup.Client.Common.Utils.GetString("statistics","limit_target_growth")+": "},{xtype:"syno_numberfield",name:"target_growth_size",allowBlank:!1,allowDecimals:!0,width:80,value:500,minValue:0,autoCreate:{tag:"input",type:"text",autocomplete:"off",maxlength:"8"},validator:function(t){var e=function(t){return i.getForm().findField(t)};if(Ext.isObject(i.cacheData))return i.sizeValidater(e("target_growth_size").getValue(),e("target_growth_size_scale").getValue())}},{xtype:"syno_combobox",name:"target_growth_size_scale",width:60,valueField:"value",displayField:"display",value:1,store:new Ext.data.SimpleStore({autoDestroy:!0,fields:["value","display"],data:[[0,"KB"],[1,"MB"],[2,"GB"],[3,"TB"],[4,"PB"]]})}]}]},t),this.callParent([e]),this.mon(this,"activate",(function(){var t,e,i,n=this,s=function(t){return n.getForm().findField(t)};this.readOnly||(s("target_volume_size").hide(),s("target_volume_size_label").hide()),this.isDisableNotify||(t="enable_target_growth",e=SYNO.SDS.Backup.Client.Common.Utils.GetString("statistics","qtip_target_growth"),(i=n.getForm().findField(t))&&i.getEl()&&SYNO.ux.AddTip(i.getEl(),e),this.isAddedTooltip=!0)}),this,{single:!0})},changeTooltip:function(t,e){var i=this.getForm().findField(t).getEl(),n=Ext.getDom(i).parentNode.childNodes,s=n[n.length-1];"A"===s.tagName?((s=s.childNodes[0]).setAttribute("ext:qtip",e),s.setAttribute("alt",e)):SYNO.ux.AddTip(i,e)},disableNotify:function(){var t=this,e=function(e){return t.getForm().findField(e)},i=function(){t.changeTooltip("enable_target_max_size",SYNO.SDS.Backup.Client.Common.Utils.GetString("statistics","qtip_notification_disable")),t.changeTooltip("enable_target_growth",SYNO.SDS.Backup.Client.Common.Utils.GetString("statistics","qtip_notification_disable")),e("enable_target_max_size").setDisabled(!0),e("enable_target_growth").setDisabled(!0),e("target_max_size_label").setDisabled(!0),e("target_max_size").setDisabled(!0),e("target_max_size_scale").setDisabled(!0),e("target_growth_size_label").setDisabled(!0),e("target_growth_size").setDisabled(!0),e("target_growth_size_scale").setDisabled(!0),e("target_volume_size_label").setDisabled(!0),e("target_volume_size").setDisabled(!0)};this.isDisableNotify=!0,this.isAddedTooltip?i():this.mon(this,"activate",(function(){i(),t.isAddedTooltip=!0}),this,{single:!0})},scaleToStr:function(t){switch(t){case 0:return"KB";case 1:return"MB";case 2:return"GB";case 3:return"TB";case 4:return"PB"}return"GB"},loadNotifyData:function(t){var e=this;this.cacheData=t;var i,n,s=0,a=function(t){return e.getForm().findField(t)},o=function(t){for(var e=0;t>=1024&&4!==e;)t/=1024,e++;return 0===t&&(e=2),{value:t,scale:e}},r=function(t,e,i){if(Ext.isNumber(i)){var n=o(i);a(t).setValue(n.value),a(e).setValue(n.scale)}},l=function(t,i){if(Ext.isNumber(i)){var n=o(i);return String.format(t,n.value,e.scaleToStr(n.scale))}return""};if(this.readOnly){var c=[];if(t.enable_target_max_size&&(i=parseFloat(t.target_max_size_value))>=0){var u=l(SYNO.SDS.Backup.Client.Common.Utils.GetString("statistics","target_usage"),i);u&&c.push(u)}if(t.enable_target_growth&&(n=parseFloat(t.target_growth_value))>=0){var d=l(SYNO.SDS.Backup.Client.Common.Utils.GetString("statistics","target_growth"),n);d&&c.push(d)}0<c.length?a("enable_target_description").setValue(String.format(SYNO.SDS.Backup.Client.Common.Utils.GetString("statistics","target_set_description"),c.join(_T("common","comma")))):a("enable_target_description").hide();var p=String.format('<span class="syno-backup-statistic-readonly-note">{0}{1}</span>{2}',_T("common","note"),_T("common","colon"),SYNO.SDS.Backup.Client.Common.Utils.GetString("statistics","note_where_to_set"));a("enable_target_note").setValue(p),this.isAddedTooltip=!0}else t.support_volume_size&&(t.volume_unlimit?a("target_volume_size").setValue(SYNO.SDS.Backup.Client.Common.Utils.GetString("statistics","unlimited")):(a("target_volume_size").setValue(Ext.util.Format.fileSize(t.volume_size)),s=t.volume_size/1024),a("target_volume_size").show(),a("target_volume_size_label").show()),i=parseFloat(t.target_max_size_value),n=parseFloat(t.target_growth_value),i>=0||n>=0?(this.getForm().setValues(t),r("target_max_size","target_max_size_scale",i),r("target_growth_size","target_growth_size_scale",n)):t.support_volume_size&&!t.volume_unlimit?(r("target_max_size","target_max_size_scale",.7*s),r("target_growth_size","target_growth_size_scale",.05*s)):(r("target_max_size","target_max_size_scale",0),r("target_growth_size","target_growth_size_scale",512e3))},getParams:function(){if(this.readOnly)return{};var t,e,i,n=this.getForm(),s=function(t){return n.findField(t).getValue()},a=s("target_max_size"),o=s("target_max_size_scale");for(i=0;i<o;i++)a*=1024;for(t=a,a=s("target_growth_size"),o=s("target_growth_size_scale"),i=0;i<o;i++)a*=1024;return e=a,{enable_target_max_size:s("enable_target_max_size"),enable_target_growth:s("enable_target_growth"),target_max_size_value:t,target_growth_value:e}},isValid:function(){var t=this,e=function(e){return t.getForm().findField(e)};return this.getForm().isValid()&&e("target_max_size").isValid()&&e("target_growth_size").isValid()},sizeValidater:function(t,e){var i;if(i=function(t,e){for(;e>0;)t*=1024,e--;return t}(t,e),this.cacheData.support_volume_size){if(!this.cacheData.volume_unlimit&&i>this.cacheData.volume_size/1024)return String.format(SYNO.SDS.Backup.Client.Common.Utils.GetString("app","maxnumber"),Ext.util.Format.fileSize(this.cacheData.volume_size))}else if(i>0x3e80000000000)return String.format(SYNO.SDS.Backup.Client.Common.Utils.GetString("app","maxnumber"),Ext.util.Format.fileSize(0xfa0000000000000));return!0}}),Ext.define("SYNO.SDS.Backup.Client.Common.Statistic.SourceChangeParamsPanel",{extend:"SYNO.SDS.Backup.Client.Common.FormPanel",isDisableNotify:!1,isAddedTooltip:!1,readOnly:!1,autoFlexcroll:!1,constructor:function(t){var e;e=t.readOnly?Ext.apply({items:[{xtype:"syno_displayfield",name:"enable_count_description"},{xtype:"syno_displayfield",name:"enable_count_note",htmlEncode:!1}]},t):Ext.apply({items:[{xtype:"syno_checkbox",boxLabel:SYNO.SDS.Backup.Client.Common.Utils.GetString("statistics","alert_file_new"),name:"enable_new_count",groupFields:{enable:["new_count_percent"]}},{xtype:"syno_compositefield",hideLabel:!0,indent:1,items:[{xtype:"syno_displayfield",name:"new_count_percent_label",value:SYNO.SDS.Backup.Client.Common.Utils.GetString("statistics","limit_file_new")+": "},{xtype:"syno_numberfield",name:"new_count_percent",allowBlank:!1,allowDecimals:!1,width:50,value:50,minValue:0,maxValue:100,autoCreate:{tag:"input",type:"text",autocomplete:"off",maxlength:"3"}},{xtype:"syno_displayfield",name:"new_percent_label",value:"%"}]},{xtype:"syno_checkbox",boxLabel:SYNO.SDS.Backup.Client.Common.Utils.GetString("statistics","alert_file_modify"),name:"enable_modify_count",groupFields:{enable:["modify_count_percent"]}},{xtype:"syno_compositefield",hideLabel:!0,indent:1,items:[{xtype:"syno_displayfield",name:"modify_count_percent_label",value:SYNO.SDS.Backup.Client.Common.Utils.GetString("statistics","limit_file_modify")+": "},{xtype:"syno_numberfield",name:"modify_count_percent",allowBlank:!1,allowDecimals:!1,width:50,value:50,minValue:0,maxValue:100,autoCreate:{tag:"input",type:"text",autocomplete:"off",maxlength:"3"}},{xtype:"syno_displayfield",name:"modify_percent_label",value:"%"}]},{xtype:"syno_checkbox",boxLabel:SYNO.SDS.Backup.Client.Common.Utils.GetString("statistics","alert_file_delete"),name:"enable_delete_count",groupFields:{enable:["delete_count_percent"]}},{xtype:"syno_compositefield",hideLabel:!0,indent:1,items:[{xtype:"syno_displayfield",name:"delete_count_percent_label",value:SYNO.SDS.Backup.Client.Common.Utils.GetString("statistics","limit_file_delete")+": "},{xtype:"syno_numberfield",name:"delete_count_percent",allowBlank:!1,allowDecimals:!1,width:50,value:50,minValue:0,maxValue:100,autoCreate:{tag:"input",type:"text",autocomplete:"off",maxlength:"3"}},{xtype:"syno_displayfield",name:"delete_percent_label",value:"%"}]}]},t),this.callParent([e]),this.mon(this,"activate",(function(){var t=this,e=function(e,i){var n=t.getForm().findField(e);n&&n.getEl()&&SYNO.ux.AddTip(n.getEl(),i)};this.readOnly&&(this.isAddedTooltip=!0),this.isDisableNotify||(e("enable_new_count",SYNO.SDS.Backup.Client.Common.Utils.GetString("statistics","qtip_new_file_alert_contain_meta")),e("enable_modify_count",SYNO.SDS.Backup.Client.Common.Utils.GetString("statistics","qtip_modify_file_alert_contain_meta")),e("enable_delete_count",SYNO.SDS.Backup.Client.Common.Utils.GetString("statistics","qtip_delete_file_alert_contain_meta")),this.isAddedTooltip=!0)}),this,{single:!0})},changeTooltip:function(t,e){var i=this.getForm().findField(t).getEl(),n=Ext.getDom(i).parentNode.childNodes,s=n[n.length-1];"A"===s.tagName?((s=s.childNodes[0]).setAttribute("ext:qtip",e),s.setAttribute("alt",e)):SYNO.ux.AddTip(i,e)},disableNotify:function(){var t=this,e=function(e){return t.getForm().findField(e)},i=function(){t.changeTooltip("enable_new_count",SYNO.SDS.Backup.Client.Common.Utils.GetString("statistics","qtip_notification_disable")),t.changeTooltip("enable_modify_count",SYNO.SDS.Backup.Client.Common.Utils.GetString("statistics","qtip_notification_disable")),t.changeTooltip("enable_delete_count",SYNO.SDS.Backup.Client.Common.Utils.GetString("statistics","qtip_notification_disable")),e("enable_new_count").setDisabled(!0),e("enable_modify_count").setDisabled(!0),e("enable_delete_count").setDisabled(!0),e("new_count_percent").setValue(0),e("new_count_percent_label").setDisabled(!0),e("new_count_percent").setDisabled(!0),e("new_percent_label").setDisabled(!0),e("modify_count_percent").setValue(0),e("modify_count_percent_label").setDisabled(!0),e("modify_count_percent").setDisabled(!0),e("modify_percent_label").setDisabled(!0),e("delete_count_percent").setValue(0),e("delete_count_percent_label").setDisabled(!0),e("delete_count_percent").setDisabled(!0),e("delete_percent_label").setDisabled(!0)};this.isDisableNotify=!0,this.isAddedTooltip?i():this.mon(this,"activate",(function(){i(),t.isAddedTooltip=!0}),this,{single:!0})},loadNotifyData:function(t){var e=this,i=function(t){return e.getForm().findField(t)};if(this.readOnly){var n=[];t.enable_new_count&&t.new_count_percent>=0&&n.push(String.format(SYNO.SDS.Backup.Client.Common.Utils.GetString("statistics","count_new"),t.new_count_percent)),t.enable_modify_count&&t.modify_count_percent>=0&&n.push(String.format(SYNO.SDS.Backup.Client.Common.Utils.GetString("statistics","count_modify"),t.modify_count_percent)),t.enable_delete_count&&t.delete_count_percent>=0&&n.push(String.format(SYNO.SDS.Backup.Client.Common.Utils.GetString("statistics","count_delete"),t.delete_count_percent)),0<n.length?i("enable_count_description").setValue(String.format(SYNO.SDS.Backup.Client.Common.Utils.GetString("statistics","count_set_description"),n.join(_T("common","comma")))):i("enable_count_description").hide();var s=String.format('<span class="syno-backup-statistic-readonly-note">{0}{1}</span>{2}',_T("common","note"),_T("common","colon"),SYNO.SDS.Backup.Client.Common.Utils.GetString("statistics","note_where_to_set"));i("enable_count_note").setValue(s)}else i("enable_new_count").setValue(t.enable_new_count),i("enable_modify_count").setValue(t.enable_modify_count),i("enable_delete_count").setValue(t.enable_delete_count),t.new_count_percent>=0?i("new_count_percent").setValue(t.new_count_percent):i("new_count_percent").setValue(50),t.modify_count_percent>=0?i("modify_count_percent").setValue(t.modify_count_percent):i("modify_count_percent").setValue(50),t.delete_count_percent>=0?i("delete_count_percent").setValue(t.delete_count_percent):i("delete_count_percent").setValue(50)},getParams:function(){if(this.readOnly)return{};var t=this.getForm(),e=function(e){return t.findField(e).getValue()};return{enable_new_count:e("enable_new_count"),enable_modify_count:e("enable_modify_count"),enable_delete_count:e("enable_delete_count"),new_count_percent:e("new_count_percent"),modify_count_percent:e("modify_count_percent"),delete_count_percent:e("delete_count_percent")}},isValid:function(){return this.getForm().isValid()}}),Ext.define("SYNO.SDS.Backup.Client.Common.Statistic.TopBar",{extend:"Ext.Container",constructor:function(t){var e=[];Ext.each(t.legend,(function(t,i){e.push({xtype:"container",itemId:`legend_item_${i}`,html:this.createLegendHtml(t)})}),this);var i=Ext.apply({itemId:"statistics_panel_topbar",layout:{type:"hbox",flex:"ratio",align:"stretch"},items:[new Ext.Container({cls:"syno-backup-statistic-topbar-left-container",itemId:"statistics_topbar_left",flex:1,items:[{xtype:"syno_displayfield",cls:"syno-backup-statistic-title",itemId:"statistics_graph_title",hidden:!0,hideMode:"visibility",value:"none"},{xtype:"syno_displayfield",cls:"syno-backup-statistic-y-axis-title",itemId:"statistics_y_axis_title",value:""}]}),new Ext.Container({cls:"syno-backup-statistic-topbar-right-container",itemId:"statistics_topbar_right",width:384,layout:{type:"vbox",pack:"start",align:"stretch"},items:[new Ext.Container({cls:"syno-backup-statistic-topbar-right-top-container",itemId:"statistics_topbar_right_top",flex:1,layout:{type:"hbox",pack:"start",align:"top"},items:[{xtype:"syno_displayfield",cls:"syno-backup-statistic-graph-time-range-title",flex:2,height:28,value:SYNO.SDS.Backup.Client.Common.Utils.GetString("statistics","time_range")+":"},{xtype:"syno_combobox",cls:"syno-backup-statistic-graph-time-range-combobox",itemId:"statistics_graph_time_range",flex:1,height:28,width:162,name:"time_range",valueField:"value",displayField:"display",value:"month",store:new Ext.data.SimpleStore({autoDestroy:!0,fields:["value","display"],data:[["month",SYNO.SDS.Backup.Client.Common.Utils.GetString("statistics","time_range_month")],["year",SYNO.SDS.Backup.Client.Common.Utils.GetString("statistics","time_range_year")]]}),listeners:{select:function(t,e,i){this.fireEvent("select_time_range",e.data.value)},scope:this}}]}),new Ext.Container({cls:"syno-backup-statistic-topbar-right-bottom-container",itemId:"statistics_graph_legend",flex:1,layout:{type:"hbox",pack:"end",align:"middle"},items:e})]})]},t);this.callParent([i])},createLegendHtml:function(t){return`\n\t\t\t<div class="statistic-legend-wrapper">\n\t\t\t\t<div class="statistic-legend-circle ${t.legend_rect_css}"></div>\n\t\t\t\t<div class="statistic-legend-text">${t.legend_text}</div>\n\t\t\t</div>`},setStatisticTitle:function(t){this.getComponent("statistics_topbar_left").getComponent("statistics_graph_title").setValue(t),this.getComponent("statistics_topbar_left").getComponent("statistics_graph_title").setVisible(!0)},setYAxisTitle:function(t){this.getComponent("statistics_topbar_left").getComponent("statistics_y_axis_title").setValue(t)},setLegend:function(t){t.map(((t,e)=>{this.getComponent("statistics_topbar_right").getComponent("statistics_graph_legend").getComponent(`legend_item_${e}`).html=this.createLegendHtml(t)}))},setTimeRange:function(t){this.getComponent("statistics_topbar_right").getComponent("statistics_topbar_right_top").getComponent("statistics_graph_time_range").setValue(t)}}),Ext.define("SYNO.SDS.Backup.Client.Common.Statistic.BaseTabPanel",{extend:"SYNO.ux.Panel",autoFlexcroll:!0,constructor:function(t){this.callParent([t])},initEvents:function(){this.callParent(arguments),this.mon(this,"activate",this.onActivate,this),this.mon(this.lineChart,"click_change_month_btn",this.onChangeMonthBtnClick,this),this.mon(this.topBar,"select_time_range",this.onTimeRangeSelect,this)},redraw:function(){this.lineChart.redraw()},loadStatisticsData:function(t,e){"month"===e.timeRange?this.topBar.setStatisticTitle(e.getMonthTitle()):"year"===e.timeRange&&this.topBar.setStatisticTitle(e.getYearTitle()),this.topBar.setTimeRange(e.timeRange),this.lineChart.setData(t,e)},onResize:function(t,e,i,n){var s=this.readOnly?e-252:e-204,a=10;this.lineChart.setSize(t-a,s),this.callParent(arguments)},onActivate:function(){this.lineChart.redraw(),Ext.isEmpty(this.paramsPanel)||this.paramsPanel.fireEvent("activate")},onChangeMonthBtnClick:function(t){this.fireEvent("click_change_month_btn",t)},onTimeRangeSelect:function(t){this.fireEvent("select_time_range",t)}}),Ext.define("SYNO.SDS.Backup.Client.Common.Statistic.TargetPanel",{extend:"SYNO.SDS.Backup.Client.Common.Statistic.BaseTabPanel",topBar:null,lineChart:null,paramsPanel:null,constructor:function(t){this.topBar=new SYNO.SDS.Backup.Client.Common.Statistic.TopBar({cls:"syno-backup-statistic-topbar-container",appWin:t.appWin,mainWindow:t.mainWindow,owner:this,height:60,legend:this.getLegend()}),this.lineChart=new SYNO.SDS.Backup.Client.Common.Statistic.TargetLineChart({appWin:t.appWin,mainWindow:t.mainWindow,owner:this,height:200}),this.paramsPanel=new SYNO.SDS.Backup.Client.Common.Statistic.TargetParamsPanel({cls:"syno-backup-statistic-params-panel",readOnly:t.readOnly,appWin:t.appWin,owner:this});var e=Ext.apply({items:[this.topBar,this.lineChart,this.paramsPanel]},t);this.callParent([e])},afterRender:function(){this.callParent(arguments),this.topBar.setYAxisTitle(SYNO.SDS.Backup.Client.Common.Utils.GetString("statistics","tooltip_size"))},getLegend:function(){return[{legend_text:SYNO.SDS.Backup.Client.Common.Utils.GetString("statistics","line_space"),legend_rect_css:"red"},{legend_text:SYNO.SDS.Backup.Client.Common.Utils.GetString("statistics","line_target"),legend_rect_css:"blue"}]}}),Ext.define("SYNO.SDS.Backup.Client.Common.Statistic.SourcePanel",{extend:"SYNO.SDS.Backup.Client.Common.Statistic.BaseTabPanel",topBar:null,lineChart:null,paramsPanel:null,multiVerLunInfo:{isMultiVerLunBackup:!1,multiVerLunType:null},constructor:function(t){this.multiVerLunInfo=t.mainWindow.multiVerLunInfo,this.topBar=new SYNO.SDS.Backup.Client.Common.Statistic.TopBar({cls:"syno-backup-statistic-topbar-container",appWin:t.appWin,mainWindow:t.mainWindow,owner:this,height:60,legend:this.getLegend()}),this.lineChart=new SYNO.SDS.Backup.Client.Common.Statistic.SourceLineChart({appWin:t.appWin,mainWindow:t.mainWindow,owner:this,height:200});var e=Ext.apply({items:[this.topBar,this.lineChart],bbar:{items:{xtype:"syno_displayfield",htmlEncode:!1,cls:"syno-backup-statistic-source-bbar",value:'<span class="syno-ux-note">'+SYNO.SDS.Backup.Client.Common.Utils.GetString("app","note")+" </span>"+SYNO.SDS.Backup.Client.Common.Utils.GetString("statistics","source_size_contain_metadata")}}},t);this.callParent([e])},afterRender:function(){this.callParent(arguments),this.topBar.setYAxisTitle(SYNO.SDS.Backup.Client.Common.Utils.GetString("statistics","tooltip_size"))},refreshLegend:function(){let t=this.getLegend();this.topBar.setLegend(t)},getLegend:function(){let t=SYNO.SDS.Backup.Client.Common.Utils.GetString("statistics","line_source");if(this.multiVerLunInfo.isMultiVerLunBackup){const e=this.multiVerLunInfo.multiVerLunType;SYNO.SDS.Backup.Client.Common.Utils.isThickLunOrNS(e)&&(t=SYNO.SDS.Backup.Client.Common.Utils.GetString("statistics","line_multi_ver_lun_source_total_capacity")),SYNO.SDS.Backup.Client.Common.Utils.isThinLunOrNS(e)&&(t=SYNO.SDS.Backup.Client.Common.Utils.GetString("statistics","line_multi_ver_lun_source_used_capacity"))}return[{legend_text:t,legend_rect_css:"red"}]}}),Ext.define("SYNO.SDS.Backup.Client.Common.Statistic.SourceChangePanel",{extend:"SYNO.SDS.Backup.Client.Common.Statistic.BaseTabPanel",topBar:null,lineChart:null,paramsPanel:null,constructor:function(t){this.topBar=new SYNO.SDS.Backup.Client.Common.Statistic.TopBar({cls:"syno-backup-statistic-topbar-container",appWin:t.appWin,mainWindow:t.mainWindow,owner:this,height:60,legend:this.getLegend()}),this.lineChart=new SYNO.SDS.Backup.Client.Common.Statistic.SourceChangeLineChart({appWin:t.appWin,mainWindow:t.mainWindow,owner:this,height:200}),this.paramsPanel=new SYNO.SDS.Backup.Client.Common.Statistic.SourceChangeParamsPanel({cls:"syno-backup-statistic-params-panel",readOnly:t.readOnly,appWin:t.appWin,owner:this});var e=Ext.apply({items:[this.topBar,this.lineChart,this.paramsPanel]},t);this.callParent([e])},afterRender:function(){this.callParent(arguments),this.topBar.setYAxisTitle(SYNO.SDS.Backup.Client.Common.Utils.GetString("statistics","scale_file_count"))},getLegend:function(){return[{legend_text:SYNO.SDS.Backup.Client.Common.Utils.GetString("statistics","line_file_new"),legend_rect_css:"blue"},{legend_text:SYNO.SDS.Backup.Client.Common.Utils.GetString("statistics","line_file_modify"),legend_rect_css:"green"},{legend_text:SYNO.SDS.Backup.Client.Common.Utils.GetString("statistics","line_file_delete"),legend_rect_css:"red"}]}}),Ext.define("SYNO.SDS.Backup.Client.Common.Statistic.DateInfo",{_selectedMonth:null,_selectedYear:null,timeRange:null,constructor:function(){this._selectedMonth=new Date,this._selectedYear=new Date,this.timeRange="month"},clone:function(){var t=new SYNO.SDS.Backup.Client.Common.Statistic.DateInfo;return Ext.apply(t,this),t},getSelectMonthDateCount:function(){return this._selectedMonth.getLastDateOfMonth().getDate()},getMonthTitle:function(){return _T("login","mon_"+(this._selectedMonth.getMonth()+1))+" "+this._selectedMonth.getFullYear()},getYearTitle:function(){var t="",e=this.getStartDate(),i=this.getEndDate();return i=i.add(Date.MONTH,-1),t+=e.getFullYear()+"."+_T("login","mon_"+(e.getMonth()+1)),t+=" - ",t+=i.getFullYear()+"."+_T("login","mon_"+(i.getMonth()+1))},move:function(t,e){this._selectedMonth=this._selectedMonth.add(t,e)},getStartDate:function(){if("year"===this.timeRange){var t=this._selectedYear;return t=t.getDate()>15?t.add(Date.MONTH,1).add(Date.YEAR,-1).getFirstDateOfMonth():t.add(Date.YEAR,-1).getFirstDateOfMonth().add(Date.DAY,15)}return"month"===this.timeRange?this._selectedMonth.getFirstDateOfMonth():(SYNO.Debug.error("Unknown time range setting"),new Date(0))},getEndDate:function(){if("year"===this.timeRange){var t=this._selectedYear;return t=t.getDate()>15?t.add(Date.MONTH,1).getFirstDateOfMonth():t.getFirstDateOfMonth().add(Date.DAY,15)}return"month"===this.timeRange?this.getStartDate().add(Date.MONTH,1).getFirstDateOfMonth():(SYNO.Debug.error("Unknown time range setting"),new Date(0))}}),Ext.define("SYNO.SDS.Backup.Client.Common.Statistic.MainWindow",{extend:"SYNO.SDS.ModalWindow",lastParams:null,webapi_data:null,dateInfo:null,supportTargetStatistic:!0,readOnly:!1,isEntireDSMBackup:!1,multiVerLunInfo:{isMultiVerLunBackup:!1,multiVerLunType:null},constructor:function(t){var e=Ext.isNumber(t.width)?t.width:800,i=Ext.isNumber(t.height)?t.height:506;this.componentSize=t.readOnly?92:140,this.dateInfo=new SYNO.SDS.Backup.Client.Common.Statistic.DateInfo;var n=[new SYNO.SDS.Backup.Client.Common.Statistic.TargetPanel({title:SYNO.SDS.Backup.Client.Common.Utils.GetString("statistics","tab_target"),cls:"syno-backup-statistic-panel",itemId:"target_panel",readOnly:t.readOnly,appWin:t.appWin,mainWindow:this,owner:this}),new SYNO.SDS.Backup.Client.Common.Statistic.SourcePanel({title:SYNO.SDS.Backup.Client.Common.Utils.GetString("statistics","tab_source_disk"),cls:"syno-backup-statistic-panel syno-backup-statistic-source-size-panel",itemId:"source_panel",readOnly:t.readOnly,appWin:t.appWin,mainWindow:this,owner:this}),new SYNO.SDS.Backup.Client.Common.Statistic.SourceChangePanel({title:SYNO.SDS.Backup.Client.Common.Utils.GetString("statistics","tab_sourcechange"),cls:"syno-backup-statistic-panel",itemId:"sourcechange_panel",readOnly:t.readOnly,appWin:t.appWin,mainWindow:this,owner:this})],s=Ext.apply({cls:"syno-backup-client-common-statistic-window",width:e,height:i,resizable:!0,minWidth:e,minHeight:i,items:[{xtype:"syno_tabpanel",itemId:"statistics_tab_panel",activeTab:0,items:n}],buttons:[{xtype:"syno_button",btnStyle:"grey",text:_T("common","close"),scope:this,handler:function(){this.close()}},{text:_T("common","commit"),btnStyle:"blue",hidden:t.readOnly,scope:this,handler:this.onApplyClick}]},t);this.callParent([s])},initEvents:function(){this.callParent(arguments),this.mon(this.getTargetPanel(),"click_change_month_btn",this.onChangeMonthBtnClick,this),this.mon(this.getSourcePanel(),"click_change_month_btn",this.onChangeMonthBtnClick,this),this.mon(this.getSourceChangePanel(),"click_change_month_btn",this.onChangeMonthBtnClick,this),this.mon(this.getTargetPanel(),"select_time_range",this.onTimeRangeSelect,this),this.mon(this.getSourcePanel(),"select_time_range",this.onTimeRangeSelect,this),this.mon(this.getSourceChangePanel(),"select_time_range",this.onTimeRangeSelect,this)},loadNotifyData:function(t){this.getTargetPanel().paramsPanel.loadNotifyData(t),this.getTargetPanel().lineChart.setTargetMaxSize(t.enable_target_max_size,t.target_max_size_value),this.getSourceChangePanel().paramsPanel.loadNotifyData(t)},loadStatisticsData:function(t,e){this.getTargetPanel().loadStatisticsData(t,e),this.getSourcePanel().loadStatisticsData(t,e),this.getSourceChangePanel().loadStatisticsData(t,e),(this.isEntireDSMBackup||this.multiVerLunInfo.isMultiVerLunBackup)&&this.getComponent("statistics_tab_panel").hideTabStripItem("sourcechange_panel"),this.getComponent("statistics_tab_panel").getActiveTab().redraw()},getTargetPanel:function(){return this.getComponent("statistics_tab_panel").getComponent("target_panel")},getSourcePanel:function(){return this.getComponent("statistics_tab_panel").getComponent("source_panel")},getSourceChangePanel:function(){return this.getComponent("statistics_tab_panel").getComponent("sourcechange_panel")},getParams:function(){var t={};return Ext.apply(t,this.getTargetPanel().paramsPanel.getParams()),Ext.apply(t,this.getSourceChangePanel().paramsPanel.getParams()),t},moveByMonthAction:function(t,e){return"month"===e.timeRange&&("next"===t?e.move(Date.MONTH,1):"back"===t&&e.move(Date.MONTH,-1)),e},sendStatisticsWebapi:function(t){this.setStatusBusy();var e=this.dateInfo.clone();this.moveByMonthAction(t,e),this.sendWebAPI({api:"SYNO.SDS.Backup.Client.Common.Statistic",version:1,method:"get",params:{task_id:this.taskId,start_time:e.getStartDate().getTime()/1e3,end_time:e.getEndDate().getTime()/1e3},timeout:12e4,callback:this.statisticsWebapiCallback,scope:this,month_args:t})},statisticsWebapiCallback:function(t,e,i,n){if(!t)return this.clearStatusBusy(),void this.getMsgBox().alert(_T("leaf","backup"),_T("error","error_error_system"),(function(){this.close()}),this);this.moveByMonthAction(n.month_args,this.dateInfo),this.loadStatisticsData(e,this.dateInfo),this.clearStatusBusy()},onApplyClick:function(){if(!this.readOnly){var t=this.getParams();Ext.encode(this.lastParams)!==Ext.encode(t)?this.getTargetPanel().paramsPanel.isValid()?this.getSourceChangePanel().paramsPanel.isValid()?(this.setStatusBusy(),this.sendWebAPI({api:"SYNO.SDS.Backup.Client.Common.Statistic",version:1,method:"config_set",params:{task_id:this.taskId,statistic_params:t},timeout:12e4,callback:this.onApplyDone,scope:this})):this.getComponent("statistics_tab_panel").setActiveTab("sourcechange_panel"):this.getComponent("statistics_tab_panel").setActiveTab("target_panel"):this.setStatusError({text:SYNO.SDS.Backup.Client.Common.Utils.GetString("app","edit_no_change")})}},onApplyDone:function(t,e,i,n){if(!t)return this.clearStatusBusy(),void this.getMsgBox().alert(_T("leaf","backup"),_T("error","error_error_system"));var s=this.getParams();if(this.lastParams.enable_target_max_size!==s.enable_target_max_size||this.lastParams.target_max_size_value!==s.target_max_size_value){this.getTargetPanel().lineChart.setTargetMaxSize(s.enable_target_max_size,s.target_max_size_value);var a=this.getComponent("statistics_tab_panel").getActiveTab();"target_panel"===a.itemId&&a.redraw()}this.lastParams=s,this.clearStatusBusy(),this.setStatusOK()},onOpen:function(){this.setStatusBusy(),!1===this.supportTargetStatistic&&(this.getComponent("statistics_tab_panel").setActiveTab("sourcechange_panel"),this.getComponent("statistics_tab_panel").hideTabStripItem("target_panel"));var t=[{api:"SYNO.SDS.Backup.Client.Common.Statistic",version:1,method:"config_get",scope:this,params:{task_id:this.taskId}},{api:"SYNO.SDS.Backup.Client.Common.Statistic",version:1,method:"get",params:{task_id:this.taskId,start_time:this.dateInfo.getStartDate().getTime()/1e3,end_time:this.dateInfo.getEndDate().getTime()/1e3,additional:["volume_size"]}}];this.sendWebAPI({compound:{stopwhenerror:!1,mode:"parallel",params:t},timeout:12e4,scope:this,callback:this.onOpenDone}),this.callParent(arguments)},onOpenDone:function(t,e,i,n){if(!t)return this.clearStatusBusy(),void this.getMsgBox().alert(_T("leaf","backup"),_T("error","error_error_system"),(function(){this.close()}),this);var s=!0;if(Ext.each(e.result,(function(t){if(!t.success)return this.clearStatusBusy(),this.getMsgBox().alert(_T("leaf","backup"),SYNO.SDS.Backup.Client.Common.Utils.GetErrorString(t.error.code),(function(){this.close()}),this),s=!1,!1}),this),s){var a=e.result[0].data.statistic_params,o=e.result[1].data;this.isEntireDSMBackup="entire_dsm"===e.result[0].data.backup_data_type,this.multiVerLunInfo.isMultiVerLunBackup="multi_ver_lun"===e.result[0].data.backup_data_type,e.result[0].data.lun_type&&(this.multiVerLunInfo.multiVerLunType=e.result[0].data.lun_type),Ext.copyTo(a,o,["support_volume_size","volume_unlimit","volume_size"]),this.loadNotifyData(a),this.loadStatisticsData(o,this.dateInfo),this.getSourcePanel().refreshLegend(),this.lastParams=this.getParams(),this.clearStatusBusy()}},onChangeMonthBtnClick:function(t){this.sendStatisticsWebapi(t)},onTimeRangeSelect:function(t){this.dateInfo.timeRange=t,this.sendStatisticsWebapi()},onResize:function(t,e,i,n){this.getTargetPanel().setSize(t-40,e-this.componentSize),this.getSourcePanel().setSize(t-40,e-this.componentSize),this.getSourceChangePanel().setSize(t-40,e-this.componentSize),this.callParent(arguments)}}),Ext.define("SYNO.SDS.Backup.Client.Common.Version.SourceInfoPanel",{extend:"Ext.Container",constructor:function(t){var e={cls:"syno-backup-client-common-source-info-panel",items:[{xtype:"syno_displayfield",cls:"syno-backup-source-info-title",value:SYNO.SDS.Backup.Client.Common.Utils.GetString("app","source_size_detail")},new SYNO.SDS.Backup.Client.Common.Version.SourceSpace({itemId:"source_space"}),{xtype:"syno_displayfield",cls:"syno-backup-source-filter-hint",hidden:!t.source||Ext.isEmpty(t.source.whitelist)&&Ext.isEmpty(t.source.exclude_list),html:"<div>"+SYNO.SDS.Backup.Client.Common.Utils.GetString("app","file_filtered_hint")+' <span class="syno-backup-source-filter-view-more">('+SYNO.SDS.Backup.Client.Common.Utils.GetString("app","view_more")+")</span></div>",listeners:{scope:this,afterrender:function(e){var i=t.source?t.source:{};e.getEl().select("span").on("click",(function(){new SYNO.SDS.Backup.Client.Common.FilterSettingWindow({disable_modified_source:!0,owner:t.owner,backupFilter:Ext.copyTo({},i,"whitelist, exclude_list")}).open()}))}}}]};Ext.apply(e,t),this.callParent([e])},loadData:function(t){this.getComponent("source_space").loadData(t)}}),Ext.define("SYNO.SDS.Backup.Client.Common.Version.SourceSpace",{extend:"Ext.BoxComponent",constructor:function(t){var e={height:166};Ext.apply(e,t),this.callParent([e])},initComponent:function(){this.callParent(arguments),this.pieChart=new SYNO.SDS.Backup.Client.Common.Space.PieChart({owner:this}),this.legend=new SYNO.SDS.Backup.Client.Common.Space.Legend({owner:this})},onRender:function(){this.autoEl={cls:"syno-backup-client-common-source-usage-info",cn:[{tag:"div",cls:"block pie-chart"},{tag:"div",cls:"block legend"}]},this.callParent(arguments),this.pieChartEl=this.el.select("div.pie-chart").first(),this.pieChart.render(this.pieChartEl),this.legendEl=this.el.select("div.legend").first(),this.legend.render(this.legendEl)},loadData:function(t){var e=this.getTotalSize(t);this.processData(t,e),this.pieChart.loadData(t,t,e),this.legend.loadData(t)},getTotalSize:function(t){var e=0;return Ext.each(t,(function(t){var i=Ext.isNumber(t.used_size)?t.used_size:0;e+=i}),this),e},processData:function(t,e){Ext.each(t,(function(t){var i=SYNO.SDS.Backup.Client.Common.Utils.getConvertSize(t.used_size),n=SYNO.SDS.Backup.Client.Common.Utils.getUnit(t.used_size);t.sizeDisplay=SYNO.SDS.Backup.Client.Common.Utils.getPercentage(t.used_size,e),t.sizeTips=String.format("{0} {1}",i,n),t.sizeDetail=t.detail?t.detail.join(", "):""}),this)}}),Ext.define("SYNO.SDS.Backup.Client.Common.Version.VersionInfoPanel",{extend:"SYNO.ux.Panel",constructor:function(t){var e={cls:"syno-backup-version-info-panel",itemId:"version_panel",items:this.getPanelList(t)};Ext.apply(e,t),this.callParent([e])},getMultiVerLunSourceExtItemConfig:function(t){let e={xtype:"syno_displayfield",itemId:"source",fieldLabel:SYNO.SDS.Backup.Client.Common.Utils.GetString("app","source_size"),value:"-"};if(!Ext.isObject(t))return SYNO.Debug("multiVerLunInfo is not object:",t),e;const i=t.lun_type;return SYNO.SDS.Backup.Client.Common.Utils.isThickLunOrNS(i)?{...e,fieldLabel:SYNO.SDS.Backup.Client.Common.Utils.GetString("app","source_size_thick_lun_or_ns"),value:this.getSizeText(t.total_capacity,!0)}:SYNO.SDS.Backup.Client.Common.Utils.isThinLunOrNS(i)?{...e,fieldLabel:SYNO.SDS.Backup.Client.Common.Utils.GetString("app","source_size_thin_lun_or_ns"),value:`${this.getSizeText(t.used_capacity,!0)} / ${this.getSizeText(t.total_capacity,!0)}`}:(SYNO.Debug("Unknown lun type:",i),e)},getPanelList:function(t){var e=[];if(this.summaryPanel=null,!Ext.isEmpty(t.statistics)){const i=t.multiVerLunInfo.isMultiVerLunBackup?this.getMultiVerLunSourceExtItemConfig(t.multiVerLunInfo):{xtype:"syno_displayfield",itemId:"source",fieldLabel:SYNO.SDS.Backup.Client.Common.Utils.GetString("app","source_size"),value:this.getSizeText(this.sumStatisticsAttr(t.statistics,"total_size"),!0)};this.summaryFieldset=new SYNO.ux.FieldSet({title:SYNO.SDS.Backup.Client.Common.Utils.GetString("app","summary"),cls:"syno-backup-version-summary-fieldset",items:[i,{xtype:"syno_displayfield",itemId:"trg_increase",hidden:!t.isShowTrgInc,fieldLabel:SYNO.SDS.Backup.Client.Common.Utils.GetString("app","target_increase_size"),value:this.getSizeText(1024*t.statistics.target_increase_size,!0)},{xtype:"syno_displayfield",hidden:t.isBlockBaseBackup,fieldLabel:SYNO.SDS.Backup.Client.Common.Utils.GetString("app","new_shared_data"),value:String.format("{0} ({1})",t.statistics.summary.share.new_cnt,this.getSizeText(t.statistics.summary.share.new_size,!1))},{xtype:"syno_displayfield",hidden:t.isBlockBaseBackup,fieldLabel:SYNO.SDS.Backup.Client.Common.Utils.GetString("app","mod_shared_data"),value:String.format("{0} ({1})",t.statistics.summary.share.mod_cnt,this.getSizeText(t.statistics.summary.share.mod_size,!1))},{xtype:"syno_displayfield",hidden:t.isBlockBaseBackup,fieldLabel:SYNO.SDS.Backup.Client.Common.Utils.GetString("app","del_shared_data"),value:String.format("{0} ({1})",t.statistics.summary.share.del_cnt,this.getSizeText(t.statistics.summary.share.del_size,!1))},{xtype:"syno_displayfield",itemId:"mod_app_data",hidden:t.isBlockBaseBackup,fieldLabel:SYNO.SDS.Backup.Client.Common.Utils.GetString("app","mod_app_data"),value:this.getSizeText(t.statistics.summary.app.new_size+t.statistics.summary.app.mod_size,!1)},{xtype:"container",layout:"hbox",cls:"syno-backup-version-summary-download",itemId:"summary-download",hidden:t.isBlockBaseBackup,items:[{xtype:"container",cls:"syno-backup-version-summary-download-icon"},{xtype:"syno_displayfield",cls:"syno-backup-version-summary-download-text-disabled",value:SYNO.SDS.Backup.Client.Common.Utils.GetString("app","download_file_change_detail"),itemId:"download-text",disabled:!0}]}]}),this.summaryPanel=new SYNO.ux.FormPanel({owner:this,appWin:t.appWin,height:306,autoWidth:!0,labelWidth:280,cls:"syno-backup-version-summary-panel",items:this.summaryFieldset}),e.push(this.summaryPanel)}var i=new Ext.grid.ColumnModel({columns:[{dataIndex:"action",header:SYNO.SDS.Backup.Client.Common.Utils.GetString("app","backingup_action_menu"),align:"left",renderer:function(t,e,i,n,s,a){return"start"===t?SYNO.SDS.Backup.Client.Common.Utils.GetString("app","start_time"):"suspend"===t?SYNO.SDS.Backup.Client.Common.Utils.GetString("app","suspend_time"):"resume"===t?SYNO.SDS.Backup.Client.Common.Utils.GetString("app","resume_time"):"cancel"===t?_T("common","cancel"):"failed"===t?SYNO.SDS.Backup.Client.Common.Utils.GetString("app","task_status_error"):"complete"===t?SYNO.SDS.Backup.Client.Common.Utils.GetString("app","complete_time"):""}},{header:SYNO.SDS.Backup.Client.Common.Utils.GetString("app","time_info_time"),dataIndex:"timestamp",align:"left",renderer:this.formatTime}]}),n=new Ext.data.JsonStore({proxy:new SYNO.API.Proxy({api:SYNO.SDS.Backup.Client.Common.Utils.GetVersionApi()+".History",method:"get",version:1}),fields:["action","timestamp"],root:"version_history_list",autoDestroy:!0,autoLoad:!0,totalProperty:"total",remoteSort:!0,baseParams:{task_id:t.taskId,version_id:t.versionId,limit:10,start:0}}),s=new SYNO.ux.GridPanel({cls:"syno-backup-version-history-grid-panel",itemId:"version_grid",height:147,loadMask:!0,enableHdMenu:!1,enableColumnMove:!1,enableColumnResize:!1,disableSelection:!0,colModel:i,store:n,bbar:new SYNO.ux.PagingToolbar({store:n,displayInfo:!0,pageSize:10,showRefreshBtn:!0})});return this.historyPanel=new SYNO.ux.Panel({owner:this,appWin:t.appWin,layout:"fit",padding:"8px",cls:"syno-backup-version-history-panel",header:!0,title:SYNO.SDS.Backup.Client.Common.Utils.GetString("app","time_info"),items:s}),e.push(this.historyPanel),e},onResize:function(t,e,i,n){var s=0;this.summaryPanel&&this.summaryPanel.getResizeEl()&&(s=this.summaryPanel.getSize().height,this.summaryFieldset.setWidth(t-16)),this.historyPanel.getResizeEl()&&this.historyPanel.setSize(t,e-s)},formatTime:function(t){var e=new Date(1e3*t);return SYNO.SDS.Backup.Client.Common.Utils.DateTimeFormatter(e,{type:"datetimesec"})},downloadFileLog:function(){var t={support_utf8_name:Ext.isChrome||Ext.isGecko||Ext.isSafari,task_id:this.taskId,version_id:this.versionId,sess_id:this.sessId,sess_key:this.sessKey};this.findAppWindow().downloadWebAPI({webapi:{api:"SYNO.SDS.Backup.Client.Common.Version",version:1,method:"download_file_log",params:t},scope:this,callback:function(t,e,i,n){i||!n||this.findAppWindow().getMsgBox().alert(_T("leaf","backup"),SYNO.SDS.Backup.Client.Common.Utils.GetErrorString(n.code),(function(){}),this)}})},getSizeText:function(t,e){if(t<0)return SYNO.SDS.Backup.Client.Common.Utils.GetString("app","not_available");var i=e?" ":"";return String.format("{0}{1}{2}",SYNO.SDS.Backup.Client.Common.Utils.getConvertSize(t),i,SYNO.SDS.Backup.Client.Common.Utils.getUnit(t))},sumStatisticsAttr:function(t,e){var i=t.summary;return i.app[e]+i.share[e]+i.ea[e]},afterRender:function(){return Ext.isEmpty(this.statistics)||(this.owner.setStatusBusy(),this.sendWebAPI({api:"SYNO.SDS.Backup.Client.Common.Version",version:1,method:"check_file_log",params:{task_id:this.taskId,version_id:this.versionId},callback:this.onCheckFileLogDone,scope:this})),this.callParent(arguments)},onCheckFileLogDone:function(t,e,i){if(!t)return this.owner.clearStatusBusy(),void this.owner.getMsgBox().alert(_T("leaf","backup"),SYNO.SDS.Backup.Client.Common.Utils.GetErrorString(e.code),(function(){this.close()}),this);var n=this.summaryFieldset.getComponent("summary-download").getComponent("download-text");if(e.can_download)n.removeClass("syno-backup-version-summary-download-text-disabled"),n.addClass("syno-backup-version-summary-download-text"),n.setDisabled(!1),n.getEl().on("click",this.downloadFileLog,this);else{var s="version_log_disable";if(!Ext.isEmpty(e.reason))switch(e.reason){case"version_not_complete":s="version_log_version_not_complete";break;case"log_disable":s="version_log_disable"}SYNO.ux.AddTip(n,SYNO.SDS.Backup.Client.Common.Utils.GetString("app",s)),this.doLayout()}this.owner.clearStatusBusy()}}),Ext.define("SYNO.SDS.Backup.Client.Common.Version.VersionInfoWindow",{extend:"SYNO.SDS.ModalWindow",constructor:function(t){var e=Ext.isEmpty(t.statistics)?270:570;this.isShowTrgInc=!!Ext.isEmpty(t.accountMeta)||SYNO.SDS.Backup.Client.Common.Utils.AccountMeta.SPACE_SOURCE!==t.accountMeta.spaceUsage;var i={cls:"syno-backup-client-common-version-info-window",width:580,height:e,resizable:!1,layout:"fit",minWidth:580,minHeight:e,title:_T("backup","version_info"),buttons:[{xtype:"syno_button",btnStyle:"grey",text:_T("common","close"),scope:this,handler:function(){this.close()}}]};Ext.apply(i,t),this.callParent([i])},setSourceTipContent:function(t){var e=new SYNO.SDS.Backup.Client.Common.Version.SourceInfoPanel({owner:this,source:this.source,id:this.sourceInfoPanelId=Ext.id()});this.add(e),this.doLayout(),e.loadData(t),this.remove(e,!1),this.doLayout(),SYNO.ux.AddWhiteTipWithItem(this.getComponent("version_panel").summaryFieldset.getComponent("source"),e,514)},setSourceAndTargetTip:function(t){if(t){var e=function(e,i){this.source[i]=this.source[i].filter((function(i){var n=!1;return Ext.each(t,(function(t){if(e===t.type&&t.path===i)return n=!0,!1})),!n}))};e.call(this,"folder","backup_shares"),e.call(this,"application","backup_apps")}if(!this.isBlockBaseBackup){var i=[{used_size:this.statistics.summary.share.total_size,show_name:SYNO.SDS.Backup.Client.Common.Utils.GetString("app","shared_folder_size"),detail:this.source.backup_shares},{used_size:this.statistics.summary.app.total_size,show_name:SYNO.SDS.Backup.Client.Common.Utils.GetString("app","application_size"),detail:this.source.backup_apps},{used_size:this.statistics.summary.ea.total_size,show_name:SYNO.SDS.Backup.Client.Common.Utils.GetString("app","meta_size")}];this.setSourceTipContent(i)}this.isShowTrgInc&&SYNO.SDS.Utils.AddTip(this.getComponent("version_panel").summaryFieldset.getComponent("trg_increase").getEl(),String.format("{0}: {1}{2}, {3}: {4}",SYNO.SDS.Backup.Client.Common.Utils.GetString("app","dedup_size"),SYNO.SDS.Backup.Client.Common.Utils.getConvertSize(this.statistics.dedup_size),SYNO.SDS.Backup.Client.Common.Utils.getUnit(this.statistics.dedup_size),SYNO.SDS.Backup.Client.Common.Utils.GetString("app","compression_ratio"),this.statistics.compress_ratio.toFixed(2)))},initEvents:function(){this.callParent(arguments),this.mon(this,"activate",(async function(){if(Ext.isEmpty(this.statistics))return void this.doLayout();let t={};if(this.isMultiVerLunBackup)try{t=await synowebapi.promises.request({api:"SYNO.SDS.Backup.Client.Common.MultiVerLun.Version",method:"get",version:1,params:{task_id:this.taskId,version_id:this.versionId}})}catch(t){SYNO.Debug("Failed to get version info",this.versionId,t)}const e={isMultiVerLunBackup:this.isMultiVerLunBackup,...t};var i=new SYNO.SDS.Backup.Client.Common.Version.VersionInfoPanel({owner:this,itemId:"version_panel",taskId:this.taskId,versionId:this.versionId,source:this.source,statistics:this.statistics,accountMeta:this.accountMeta,sessId:this.sessId,sessKey:this.sessKey,isBlockBaseBackup:this.isBlockBaseBackup,multiVerLunInfo:e,isShowTrgInc:this.isShowTrgInc});i.addClass("syno-backup-pre-draw-panel"),this.add(i),this.doLayout();var n=new SYNO.SDS.Backup.Client.Common.Version.SourceInfoPanel({owner:this,source:this.source,id:this.sourceInfoPanelId=Ext.id()});n.addClass("syno-backup-pre-draw-panel"),this.add(n),this.doLayout(),this.isPartial?(this.setStatusBusy(),this.sendWebAPI({api:SYNO.SDS.Backup.Client.Common.Utils.GetVersionApi(),method:"detail",version:1,params:{task_id:this.taskId,version_id:this.versionId,limit:50,start:0},scope:this,callback:function(t,e,i,n){if(!t)return this.clearStatusBusy(),void this.getMsgBox().alert(_T("leaf","backup"),SYNO.SDS.Backup.Client.Common.Utils.GetErrorString(e.code),(function(){this.close()}),this);this.setSourceAndTargetTip(e.error_cause),this.clearStatusBusy()}})):this.setSourceAndTargetTip(),SYNO.SDS.Utils.AddTip(this.getComponent("version_panel").summaryFieldset.getComponent("mod_app_data").getEl(),SYNO.SDS.Backup.Client.Common.Utils.GetString("app","mod_app_data_include_info"))}),this,{single:!0}),this.mon(this,"close",(function(){Ext.isEmpty(this.sourceInfoPanelId)||Ext.getCmp(this.sourceInfoPanelId).destroy()}))}}),Ext.define("SYNO.SDS.Backup.Client.Common.Version.MainWindow",{extend:"SYNO.SDS.ModalWindow",dsmStyle:"v5",pageSize:50,isEntireDSMBackup:!1,isMultiVerLunBackup:!1,constructor:function(t){this.isPolling=!1,this.hideVersionDelete=t.hideVersionDelete,this.hideVersionLock=t.hideVersionLock,this.accountMeta=t.accountMeta,this.sessId=t.sessId,this.sessKey=t.sessKey,this.openVersion=t.openVersion;var e=Ext.apply({title:SYNO.SDS.Backup.Client.Common.Utils.GetString("app","version_list"),cls:"syno-backup-client-common-version-list-window",width:830,height:540,layout:"fit",useStatusBar:!0,minWidth:830,minHeight:540,items:[{xtype:"syno_gridpanel",cls:"syno-backup-version-list-grid-panel",itemId:"version_grid",store:this.getStore(),loadMask:!0,viewConfig:{trackResetOnLoad:!1},autoExpandColumn:"timestamp",enableHdMenu:!1,enableColumnMove:!1,enableColumnResize:!1,disableSelection:!0,trackMouseOver:!0,defaults:{sortable:!1},colModel:this.getColModel(!1),bbar:new SYNO.ux.PagingToolbar({store:this.getStore(),displayInfo:!0,pageSize:this.pageSize,listeners:{beforechange:{fn:this.addGridLoadMask,scope:this}},showRefreshBtn:!0})}],buttons:[{xtype:"syno_button",btnStyle:"grey",text:_T("common","close"),scope:this,handler:function(){this.close()}}],listeners:{close:this.stopPolling,scope:this}},t);this.callParent([e])},getColModel:function(t){return new Ext.grid.ColumnModel([{header:"",dataIndex:"locked",width:40,hidden:t,resizable:!1,align:"center",renderer:this.renderLocked.createDelegate(this)},{header:_T("backup","version_time"),dataIndex:"start_time_local",width:t?254:214,align:"left",renderer:this.formatTimeLocal},{header:SYNO.SDS.Backup.Client.Common.Utils.GetString("app","version_complete_time"),dataIndex:"complete_time_local",width:214,align:"left",renderer:{fn:function(t,e,i,n,s,a){if(0===i.get("complete_time"))return"--";var o=i.get("complete_time_local");return"string"==typeof o&&o.length>0?this.formatTimeLocal(o):"suspend"===i.get("status")?"-":""},scope:this}},{header:_T("backup","version_status"),dataIndex:"status",width:305,resizable:!1,align:"left",renderer:this.statusToStr.createDelegate(this)}])},initEvents:function(){this.callParent(arguments),this.mon(this.getGrid(),"rowclick",(function(t,e,i){var n=Ext.fly(i.target);if(n){var s=this.store.getAt(e);n.hasClass("syno-backup-version-browse")?this.onFileRestore(s.get("timestamp")):n.hasClass("syno-backup-version-delete")?this.onVersionDelete(s.get("version_id"),s.get("start_time_local"),s.get("status")):n.hasClass("syno-backup-version-lock")?this.onVersionUnLock(s.get("version_id")):n.hasClass("syno-backup-version-unlock")?this.lockVersion(s.get("version_id"),!0):n.hasClass("syno-backup-version-detail-link")?this.launchDetailWindow(s.get("version_id")):n.hasClass("syno-backup-version-info")&&this.launchVersionInfoWindow(s.get("version_id"))}}),this),this.mon(this.getGrid(),"rowdblclick",(function(t,e,i){var n=t.getStore().getAt(e),s=Ext.fly(i.target);return!(!s||!(s.hasClass("syno-backup-version-lock")||s.hasClass("syno-backup-version-unlock")||s.hasClass("syno-backup-version-lock-disable")||s.hasClass("syno-backup-version-delete")||s.hasClass("syno-backup-version-delete-disable")||s.hasClass("syno-backup-version-detail-link")||s.hasClass("syno-backup-version-info")))||(!!this.isMultiVerLunBackup||void("success"!==n.get("status")&&"partial"!==n.get("status")||this.onFileRestore(n.get("timestamp"))))}),this)},onShow:function(){this.getGrid().loadMask&&this.getGrid().loadMask.show(),this.setStatusBusy(),this.sendWebAPI({api:SYNO.SDS.Backup.Client.Common.Utils.GetVersionApi(),version:2,method:"list",params:{repo_id:this.repoId,task_id:this.taskId,target_id:this.targetId,offset:0,limit:this.pageSize,additional:["version_operate_property","skip_check_key","source","statistics"],filter_name:"available",account_meta:this.accountMeta},scope:this,callback:function(t,e,i){if(this.getGrid().loadMask&&this.getGrid().loadMask.hide(),this.clearStatusBusy(),t){if(this.supportLock=e.support_lock,this.isEntireDSMBackup="entire_dsm"===e.backup_data_type,this.isMultiVerLunBackup="multi_ver_lun"===e.backup_data_type,this.permitDelete=e.permit_delete.permitted,!e.permit_delete.permitted&&e.permit_delete.error&&(this.permitDeleteError=e.permit_delete.error),this.hideVersionLock&&this.getGrid().reconfigure(this.getStore(),this.getColModel(!0)),this.getStore().loadData(e,!1),void 0!==this.openVersion){var n=!1;this.getStore().each((function(t){if(this.openVersion===t.get("version_id"))return n=!0,this.launchVersionInfoWindow(this.openVersion),!1}),this),n||this.getMsgBox().alert("",SYNO.SDS.Backup.Client.Common.Utils.GetString("app","backup_version_not_exist"))}}else this.getMsgBox().alert(_T("leaf","backup"),SYNO.SDS.Backup.Client.Common.Utils.GetErrorString(e.code),(function(){this.close()}),this)}})},adjustStatusStringWdith:function(){var t=this.getEl().select(".syno-backup-version-status");Ext.each(t.elements,(function(t){var e=Ext.get(t),i=e.select(".syno-backup-version-detail-link");if(0===i.elements.length)return!0;var n=Ext.get(i.elements[0]);Ext.get(e.select(".status-str").elements[0]).setStyle("max-width",e.getWidth()-n.getWidth()+"px")}),this),this.doLayout()},onFileRestore:function(t){SYNO.SDS.Backup.Client.Common.Utils.LaunchExplorer(this,t)},onVersionDelete:function(t,e,i){this.getMsgBox().confirmDelete(this.title,String.format(_T("common","remove_cfrmrmv")+"<br />"+this.formatTimeLocal(e)),(function(e){"yes"===e&&this.deleteVersion(t,i)}),this)},onVersionUnLock:function(t){this.getMsgBox().confirm(this.title,_T("backup","confirm_unlock_version"),(function(e){"yes"===e&&this.lockVersion(t,!1)}),this)},lockVersion:function(t,e){this.setStatusBusy(),this.stopPolling(),this.sendWebAPI({api:SYNO.SDS.Backup.Client.Common.Utils.GetVersionApi(),version:1,method:"lock",params:{task_id:this.taskId,repo_id:this.repoId,target_id:this.targetId,version_id:t,sess_id:this.sessId,lock:e},callback:function(i,n,s){if(!i)return this.startPolling(),this.clearStatusBusy(),void this.getMsgBox().alert(_T("leaf","backup"),SYNO.SDS.Backup.Client.Common.Utils.GetErrorString(n.code),(function(){SYNO.SDS.Backup.ERR_SESSION_EXPIRED===n.code&&(this.owner.clearCurTaskSession(),this.close())}),this);var a=this.store.find("version_id",t);-1<a&&(this.store.data.itemAt(a).data.locked=e,this.getGrid().getView().refreshRow(a)),this.startPolling(),this.clearStatusBusy()},scope:this})},formatTime:function(t){var e=new Date(1e3*t);return SYNO.SDS.Backup.Client.Common.Utils.DateTimeFormatter(e,{type:"datetimesec"})},formatTimeLocal:function(t){if("string"!=typeof t||0===t.length)return"";var e=new Date(t);return SYNO.SDS.Backup.Client.Common.Utils.DateTimeFormatter(e,{type:"datetimesec"})},getStore:function(){return this.store||(this.store=new SYNO.API.Store({api:SYNO.SDS.Backup.Client.Common.Utils.GetVersionApi(),version:2,method:"list",baseParams:{offset:0,limit:this.pageSize,filter_name:"available",additional:["version_operate_property","skip_check_key","source","statistics"]},appWindow:!1,autoLoad:!1,reader:new Ext.data.JsonReader({idProperty:"version_id",root:"version_info_list",totalProperty:"total",fields:["version_id","timestamp","start_time_local","modify","status","locked","complete_time","complete_time_local","has_history","permit_delete","source","statistics"]}),listeners:{scope:this,beforeload:this.onBeforeLoad,loadexception:this.onLoadException,load:this.onLoadDone}})),this.store},getGrid:function(){return this.getComponent("version_grid")},deleteVersion:function(t,e){if(this.setStatusBusy(),this.stopPolling(),"suspend"===e)return this.setStatusBusy(),void this.sendWebAPI({api:"SYNO.Backup.Task",version:1,method:"discard",params:{task_id:this.taskId},scope:this,callback:function(t,e,i){this.clearStatusBusy(),t?this.close():this.getMsgBox().alert(_T("leaf","backup"),SYNO.SDS.Backup.Client.Common.Utils.GetErrorString(e.code))}});this.sendWebAPI({api:SYNO.SDS.Backup.Client.Common.Utils.GetVersionApi(),version:1,method:"delete",params:{task_id:this.taskId,repo_id:this.repoId,target_id:this.targetId,sess_id:this.sessId,version_id_list:[t]},callback:function(e,i,n){if(!e)return this.startPolling(),this.clearStatusBusy(),void this.getMsgBox().alert(_T("leaf","backup"),SYNO.SDS.Backup.Client.Common.Utils.GetErrorString(i.code),(function(){SYNO.SDS.Backup.ERR_SESSION_EXPIRED===i.code&&(this.owner.clearCurTaskSession(),this.close())}),this);var s=this.store.find("version_id",t);-1<s&&(this.store.data.itemAt(s).data.status="deleting",this.getGrid().getView().refreshRow(s)),this.clearStatusBusy(),this.startPolling()},scope:this})},getVersionStatus:function(t){var e="restore_only"===this.taskState||"error_detect"===this.taskState,i='<span class="status-str {0}" ext:qtip="{1}">{1}</span>{2}',n={none:{msg:String.format(i,"blue-status",_T("common","none"),""),deleteCls:"syno-backup-version-delete-hide",browserCls:"syno-backup-version-browse-hide",versionInfoCls:"syno-backup-version-info-hide"},backup:{msg:String.format(i,"blue-status",_T("backup","version_status_backing_up"),""),deleteCls:"syno-backup-version-delete-disable",browserCls:"syno-backup-version-browse-disable",versionInfoCls:t.get("has_history")?"syno-backup-version-info":"syno-backup-version-info-hide"},success:{msg:String.format(i,"green-status",_T("backup","version_status_success"),""),deleteCls:t.get("locked")||e?"syno-backup-version-delete-disable":"syno-backup-version-delete",browserCls:"syno-backup-version-browse",versionInfoCls:t.get("has_history")?"syno-backup-version-info":"syno-backup-version-info-hide"},failed:{msg:String.format(i,"red-status",_T("backup","version_status_failed"),""),deleteCls:e?"syno-backup-version-delete-disable":"syno-backup-version-delete",browserCls:"syno-backup-version-browse-hide",versionInfoCls:t.get("has_history")?"syno-backup-version-info":"syno-backup-version-info-hide"},partial:{msg:String.format(i,"orange-status",SYNO.SDS.Backup.Client.Common.Utils.GetString("app","partial_success"),"<a class='syno-backup-version-detail-link'> ("+SYNO.SDS.Backup.Client.Common.Utils.GetString("app","version_detail")+")</a>"),deleteCls:t.get("locked")||e?"syno-backup-version-delete-disable":"syno-backup-version-delete",browserCls:"syno-backup-version-browse",versionInfoCls:t.get("has_history")?"syno-backup-version-info":"syno-backup-version-info-hide"},cancel:{msg:String.format(i,"red-status",_T("backup","version_status_canceled"),""),deleteCls:e?"syno-backup-version-delete-disable":"syno-backup-version-delete",browserCls:"syno-backup-version-browse-hide",versionInfoCls:t.get("has_history")?"syno-backup-version-info":"syno-backup-version-info-hide"},deleting:{msg:String.format(i,"blue-status",_T("backup","version_deleting"),""),deleteCls:"syno-backup-version-delete-disable",browserCls:"syno-backup-version-browse-hide",versionInfoCls:t.get("has_history")?"syno-backup-version-info":"syno-backup-version-info-hide"},del_fail:{msg:String.format(i,"red-status",SYNO.SDS.Backup.Client.Common.Utils.GetString("app","deletion_fail"),""),deleteCls:e?"syno-backup-version-delete-disable":"syno-backup-version-delete",browserCls:"syno-backup-version-browse-hide",versionInfoCls:t.get("has_history")?"syno-backup-version-info":"syno-backup-version-info-hide"},suspend:{msg:String.format(i,"orange-status",SYNO.SDS.Backup.Client.Common.Utils.GetString("app","suspend_button_title"),""),deleteCls:"syno-backup-version-delete",browserCls:"syno-backup-version-browse-disable",versionInfoCls:t.get("has_history")?"syno-backup-version-info":"syno-backup-version-info-hide"}};return t.get("status")in n?n[t.get("status")]:n.none},statusToStr:function(t,e,i){var n=this.getVersionStatus(i),s="";if(this.hideVersionDelete)s="";else if(this.permitDelete&&i.get("permit_delete"))s='<div class="{deleteCls}" ext:qtip="{deleteQtip}"></div>';else if(this.permitDelete&&!i.get("permit_delete"))s='<div class="syno-backup-version-delete-disable" ext:qtip="'+SYNO.SDS.Backup.Client.Common.Utils.GetString("app","has_suspended_version_to_delete")+'"></div>';else if(!this.permitDelete&&this.permitDeleteError){var a="";switch(s='<div class="syno-backup-version-delete-disable" ',this.permitDeleteError.code){case 0:a=SYNO.SDS.Backup.Client.Common.Utils.GetString("app","unable_delete_version");break;case 1:a=SYNO.SDS.Backup.Client.Common.Utils.GetString("app","unable_delete_version")+" "+SYNO.SDS.Backup.Client.Common.Utils.getRepoTargetPermissionMsg(this.permitDeleteError.params.user,this.permitDeleteError.params.permission,this.permitDeleteError.params.type,this.permitDeleteError.params.dirname);break;case 2:s='<div class="syno-backup-version-delete-disable hidden" '}s=s+'ext:qtip="'+a+'"></div>'}else s="";var o=new Ext.XTemplate('<div class="syno-backup-version-status">{msg}</div>'+s+(this.isMultiVerLunBackup?"":'<div class="{browserCls}" ext:qtip="{browserQtip}"></div>')+'<div class="{versionInfoCls}" ext:qtip="{versionInfoQtip}"></div>');return"syno-backup-version-delete-hide"!==n.deleteCls&&(i.get("locked")?n.deleteQtip=SYNO.SDS.Backup.Client.Common.Utils.GetString("error","version_lock_delete_fail"):n.deleteQtip=_T("common","delete")),"syno-backup-version-browse-hide"!==n.browserCls&&(n.browserQtip=SYNO.SDS.Backup.Client.Common.Utils.GetString("app","backup_explorer")),"syno-backup-version-info-hide"!==n.versionInfoCls&&(n.versionInfoQtip=_T("backup","version_info")),o.apply(n)},renderLocked:function(t,e,i){var n=new Ext.XTemplate('<div class="{lockCls}" ext:qtip="{lockQtip}"></div>'),s="",a="";if(this.hideVersionLock)s="syno-backup-version-lock-hidden";else if(this.supportLock){var o=function(t,e){var i="";switch(e.code){case 0:case 2:i=SYNO.SDS.Backup.Client.Common.Utils.GetString("app",t);break;case 1:i=SYNO.SDS.Backup.Client.Common.Utils.GetString("app",t)+" "+SYNO.SDS.Backup.Client.Common.Utils.getRepoTargetPermissionMsg(e.params.user,e.params.permission,e.params.type,e.params.dirname)}return i};switch(i.get("status")){case"backup":case"success":case"partial":t?this.permitDelete?(s="syno-backup-version-lock",a=_T("backup","backup_lock_qtip")):this.permitDeleteError?(s="syno-backup-version-locked-display-only",a=o("unable_unlock_version",this.permitDeleteError)):s="syno-backup-version-locked-display-only":this.permitDelete?(s="syno-backup-version-unlock",a=_T("backup","backup_unlock_qtip")):this.permitDeleteError?(s="syno-backup-version-lock-disable",a=o("unable_lock_version",this.permitDeleteError)):s="syno-backup-version-lock-hidden";break;case"none":case"failed":case"cancel":case"deleting":case"del_fail":case"suspend":s="syno-backup-version-lock-disable"}}else s="syno-backup-version-lock-disable",a=_T("backup","version_lock_not_support");return n.apply({lockCls:s,lockQtip:a})},onBeforeLoad:function(t){t.setBaseParam("repo_id",this.repoId),t.setBaseParam("task_id",this.taskId),t.setBaseParam("target_id",this.targetId)},addGridLoadMask:function(){this.getGrid().initialConfig.loadMask&&(this.getGrid().loadMask&&this.getGrid().loadMask.destroy(),this.getGrid().loadMask=new Ext.LoadMask(this.getGrid().bwrap,Ext.apply({},{store:this.getStore()},!0)))},onLoadDone:function(t,e,i){this.adjustStatusStringWdith(),this.getGrid()&&this.getGrid().loadMask&&(this.getGrid().loadMask.destroy(),this.getGrid().loadMask=!1),this.isTaskRunning()?this.startPolling():this.stopPolling(),this.isPolling&&i.isPollReload&&setTimeout(function(){this.isTaskRunning()&&t.reload({isPollReload:!0})}.createDelegate(this),3e3)},onLoadException:function(t,e,i){this.getMsgBox().alert(_T("leaf","backup"),SYNO.SDS.Backup.Client.Common.Utils.GetErrorString(i.code),(function(){this.close()}),this)},isTaskRunning:function(){if(void 0===this.getGrid())return!1;var t=!1;return this.getStore().each((function(e){var i=e.get("status");if("deleting"===i||"backup"===i)return t=!0,!1})),t},startPolling:function(){this.isPolling||(this.isPolling=!0,void 0!==this.getGrid()&&(this.getStore().reload({isPollReload:!0}),this.adjustStatusStringWdith()))},stopPolling:function(){this.isPolling&&(this.isPolling=!1)},launchDetailWindow:function(t){new SYNO.SDS.Backup.Client.Common.ErrorReportWindow({task_id:this.taskId,version_id:t,owner:this}).open()},launchVersionInfoWindow:function(t){new SYNO.SDS.Backup.Client.Common.Version.VersionInfoWindow({owner:this,taskId:this.taskId,versionId:t,source:this.getStore().getById(t).get("source"),statistics:this.getStore().getById(t).get("statistics"),isPartial:"partial"===this.getStore().getById(t).get("status"),isBlockBaseBackup:this.isEntireDSMBackup||this.isMultiVerLunBackup,isMultiVerLunBackup:this.isMultiVerLunBackup,accountMeta:this.accountMeta,sessId:this.sessId,sessKey:this.sessKey}).open()}}),Ext.define("SYNO.SDS.Backup.Client.Common.Log.AdvancedSearchField",{extend:"SYNO.ux.SearchField",initEvents:function(){this.callParent(arguments),this.mon(Ext.getDoc(),"mousedown",this.onMouseDown,this),this.mon(this,"keypress",(function(t,e){e.getKey()===Ext.EventObject.ENTER&&(this.searchPanel.setKeyWord(this.getValue()),this.searchPanel.onSearch())}),this)},isInnerComponent:function(t,e){var i=!1;return e.items.each((function(e){if(e instanceof Ext.form.ComboBox){if(e.view&&t.within(e.view.getEl()))return i=!0,!1}else if(e instanceof Ext.form.DateField){if(e.menu&&t.within(e.menu.getEl()))return i=!0,!1}else if(e instanceof Ext.form.CompositeField&&this.isInnerComponent(t,e))return i=!0,!1}),this),i},onMouseDown:function(t){var e=this.searchPanel;!e||!e.isVisible()||e.isDestroyed||e.inEl||t.within(e.getEl())||t.within(this.searchtrigger)||this.isInnerComponent(t,this.searchPanel.getForm())||e.hide()},onSearchTriggerClick:function(){this.searchPanel.isVisible()?this.searchPanel.hide():(this.searchPanel.getEl().alignTo(this.wrap,"tr-br?",[6,0]),this.searchPanel.show(),this.searchPanel.setKeyWord(this.getValue()))},onTriggerClick:function(){this.callParent(),this.searchPanel.onReset(),this.searchPanel.onSearch()}}),Ext.define("SYNO.SDS.Backup.Client.Common.Log.SearchFormPanel",{extend:"SYNO.ux.FormPanel",constructor:function(t){this.dateType={custom:1,today:2,yesterday:4,lastweek:8,lastmonth:16},this.dataRange=[[this.dateType.custom,SYNO.SDS.Backup.Client.Common.Utils.GetString("app","log_date_custom")],[this.dateType.today,SYNO.SDS.Backup.Client.Common.Utils.GetString("app","log_date_today")],[this.dateType.yesterday,SYNO.SDS.Backup.Client.Common.Utils.GetString("app","log_date_yesterday")],[this.dateType.lastweek,SYNO.SDS.Backup.Client.Common.Utils.GetString("app","log_date_lastweek")],[this.dateType.lastmonth,SYNO.SDS.Backup.Client.Common.Utils.GetString("app","log_date_lastmonth")]],this.logLevelType={info:"1",warn:"2",error:"3"},this.logLevel=[[this.logLevelType.info,SYNO.SDS.Backup.Client.Common.Utils.GetString("app","log_info_level")],[this.logLevelType.warn,SYNO.SDS.Backup.Client.Common.Utils.GetString("app","log_warn_level")],[this.logLevelType.error,SYNO.SDS.Backup.Client.Common.Utils.GetString("app","log_error_level")]],this.defaultAnimation=["#000",1,{duration:.35}],Ext.apply(this,t||{});var e=this.fillConfig(t);this.callParent([e]),this.defineBehaviors()},initComponent:function(){this.callParent([this]),this.addEvents("search")},fillConfig:function(t){var e,i,n,s,a=[];return e=this.createKeyword(),i=this.createFriendlyDate(),n=this.createCustDate(),s=this.createLevel(),a.push(e),a.push(i),a.push(n),a.push(s),a.push({xtype:"toolbar",border:!1,itemId:"btns",toolbarCls:"search-panel-fbar-btnPanel",items:[{xtype:"tbfill"},{xtype:"syno_button",minWidth:80,text:_T("common","reset"),handler:this.onReset,scope:this},{xtype:"syno_button",btnStyle:"blue",style:"margin-right: 10px",text:SYNO.SDS.Backup.Client.Common.Utils.GetString("app","log_stop"),itemId:"btn_stop",hidden:!0,handler:this.onStop,scope:this},{xtype:"syno_button",btnStyle:"blue",style:"margin-right: 10px",text:SYNO.SDS.Backup.Client.Common.Utils.GetString("app","log_search"),itemId:"btn_search",handler:this.onSearch,scope:this}]}),{width:368,heigh:480,floating:!0,labelAlign:"left",trackResetOnLoad:!0,waitMsgTarget:!0,border:!0,bodyStyle:"padding: 20px; padding-top: 0px; font-size: 24px;",autoFlexcroll:!1,defaults:{hideLabel:!0,anchor:"100%"},items:a,listeners:{actionfailed:{fn:function(){this.form.reset()},scope:this},beforeshow:{fn:function(){this.doLayout()},single:!0},show:{fn:this.doLayout,single:!0}},keys:[{key:[10,13],fn:function(){this.isVisible()&&(this.btnSearch.hidden||this.btnSearch.disabled?this.btnStop.hidden||this.btnStop.disabled||this.onStop():this.onSearch())},scope:this}]}},setComboBoxValue:function(t,e){this.frameAnimation(t.el,this.defaultAnimation),t.setMultiValue&&t.setMultiValue(e.split(","))},getComboBoxValue:function(t){var e=this.getForm().findField(t);return e.getMultiValue?e.getMultiValue().toString():e.getValue()},multiSelect:function(t,e,i,n,s){if(Ext.applyIf(t,{setMultiValue:function(t){Ext.isArray(t)||(t=[t]),this.multiValue=t},getMultiValue:function(){return this.multiValue&&this.multiValue.length>0?this.multiValue:this.getValue().split(",")}}),"more"===e.get("value"))return this.attriWin=new SYNO.SDS.LogCenter.MultiSelectedDialog({title:n,combo:t,emptyValue:s,anim:this.defaultAnimation,owner:this.owner.appInst}),this.attriWin.showUp(),t.collapse(),!1},createTpl:function(){return new Ext.XTemplate('<tpl for=".">','<div class="x-combo-list-item" ext:qtip="{displayText:htmlEncode}">',"{displayText:htmlEncode}","</div>","</tpl>")},logSelect:function(t,e,i){this.setComboBoxValue(t,t.getValue())},createKeyword:function(){return[{xtype:"syno_displayfield",value:SYNO.SDS.Backup.Client.Common.Utils.GetString("app","log_keyword")+_T("common","colon"),flex:1},{xtype:"syno_textfield",msgTarget:"qtip",validateOnBlur:!0,validationEvent:"blur",name:"keyword",flex:2,vaule:""}]},setDate:function(t,e,i){!0===i&&(this.frameAnimation(this.form.findField("searchdatefrom").el,this.defaultAnimation),this.frameAnimation(this.form.findField("searchdateto").el,this.defaultAnimation)),this.form.findField("searchdatefrom").setMaxValue(e),this.form.findField("searchdateto").setMinValue(t),this.form.findField("searchdatefrom").setValue(t),this.form.findField("searchdateto").setValue(e)},getFromToDate:function(t){var e,i,n=new Date;if(t===this.dateType.today)e=n,i=n;else if(t===this.dateType.yesterday)i=e=n.add(Date.DAY,-1);else if(t===this.dateType.lastweek){var s=n.getDay();i=(e=n.add(Date.DAY,-7-s)).add(Date.DAY,6)}else t===this.dateType.lastmonth&&(e=(n=n.add(Date.MONTH,-1)).getFirstDateOfMonth(),i=n.getLastDateOfMonth());return{from:e,to:i}},friendlyDateSelect:function(t,e,i){var n=e.get("id"),s=this.getFromToDate(n);this.setDate(s.from,s.to,!0)},getFriendlyDateStore:function(){var t=this.dataRange;return new Ext.data.ArrayStore({autoDestroy:!0,fields:["id","displayText"],data:t})},createFriendlyDate:function(){return this.FriendlyDate=new SYNO.ux.ComboBox({mode:"local",editable:!1,name:"dateRange",tpl:this.createTpl(),resizable:!0,store:this.getFriendlyDateStore(),displayField:"displayText",valueField:"id",triggerAction:"all",lazyRender:!0,flex:6,value:this.dateType.custom,listeners:{scope:this,beforequery:function(t){delete t.combo.lastQuery},beforeselect:this.friendlyDateSelect}}),[{xtype:"syno_displayfield",value:SYNO.SDS.Backup.Client.Common.Utils.GetString("app","log_date_range")+_T("common","colon"),flex:1},this.FriendlyDate]},createCustDate:function(){var t={name:"searchdatefrom",editable:!1,emptyText:SYNO.SDS.Backup.Client.Common.Utils.GetString("app","log_date_from"),value:"",listeners:{scope:this,select:function(t,e){this.form.findField("searchdateto").setMinValue(e)}}},e={name:"searchdateto",editable:!1,emptyText:SYNO.SDS.Backup.Client.Common.Utils.GetString("app","log_date_to"),value:"",listeners:{scope:this,select:function(t,e){this.form.findField("searchdatefrom").setMaxValue(e)}}};return SYNO.SDS.DateTimeUtils||(t.format="m/d/Y",e.format="m/d/Y"),this.DateFrom=new SYNO.ux.DateTimeField(t),this.DateTo=new SYNO.ux.DateTimeField(e),[{xtype:"syno_displayfield",value:SYNO.SDS.Backup.Client.Common.Utils.GetString("app","log_time")+_T("common","colon")},{xtype:"syno_compositefield",hideLabel:!0,defaults:{flex:1},defaultMargins:"0 8 0 0",items:[this.DateFrom,this.DateTo]}]},getLogLevelStore:function(){var t=this.logLevel.slice(0,this.logLevel.length);return t.length>1&&t.splice(0,0,["",SYNO.SDS.Backup.Client.Common.Utils.GetString("app","log_all_level")]),new Ext.data.ArrayStore({autoDestroy:!0,fields:["value","displayText"],data:t})},multiLogLevelSelect:function(t,e,i){this.multiSelect(t,e,i,SYNO.SDS.Backup.Client.Common.Utils.GetString("app","log_level_type"),"")},createLevel:function(){return this.LogLevel=new SYNO.ux.ComboBox({xtype:"syno_combobox",mode:"local",editable:!1,name:"logLevel",tpl:this.createTpl(),resizable:!0,store:this.getLogLevelStore(),displayField:"displayText",valueField:"value",triggerAction:"all",lazyRender:!0,flex:3,value:"",listeners:{scope:this,beforequery:function(t){delete t.combo.lastQuery},beforeselect:this.multiLogLevelSelect,select:this.logSelect}}),[{xtype:"syno_displayfield",name:"logLevelLabel",value:SYNO.SDS.Backup.Client.Common.Utils.GetString("app","log_level_type")+_T("common","colon"),flex:1},this.LogLevel]},hideItems:function(t){var e;Ext.isArray(t)||(t=[t]);for(var i=t.length-1;i>=0;i--)(e=this.form.findField(t[i]))&&e.setVisible(!1)},frameAnimation:function(t,e){t&&t.isVisible()&&Ext.Element.prototype.frame.apply(t,e)},defineBehaviors:function(){var t=this.get("btns");this.btnSearch=t.get("btn_search"),this.btnStop=t.get("btn_stop")},setKeyWord:function(t){var e=this.form.findField("keyword");e&&Ext.isString(t)&&e.setValue(t),e.focus("",1)},onShowHideBtn:function(t){t?(this.btnSearch.hide(),this.btnStop.show()):(this.btnSearch.show(),this.btnStop.hide())},onEnableDisableBtn:function(t){t?(this.btnSearch.enable(),this.btnStop.enable()):(this.btnSearch.disable(),this.btnStop.disable())},isOwnerDestroyed:function(){return this.owner&&this.owner.isDestroyed},showMsg:function(t,e){this.isOwnerDestroyed()||this.owner.getMsgBox().alert(t,e)},hideMsg:function(){this.isOwnerDestroyed()||this.owner.getMsgBox().hide()},isFieldDirty:function(t){return this.form.findField(t).isDirty()},validateForm:function(){return!!this.form.isValid()&&(this.isFieldDirty("searchdatefrom")||this.isFieldDirty("searchdateto")||this.isFieldDirty("keyword"))},onSearch:function(t,e){var i,n,s,a,o,r;n=(i=this.getForm()).findField("keyword").getValue(),o=this.getComboBoxValue("logLevel"),s=i.findField("searchdatefrom").getRawValue(),a=i.findField("searchdateto").getRawValue(),r={filter_keyword:n,filter_level:o,filter_date_from:s?new Date(s+" 00:00:00").getTime()/1e3:0,filter_date_to:a?new Date(a+" 23:59:59").getTime()/1e3:0},this.fireEvent("search",this,r)},onReset:function(){this.form.items.each((function(t){t.isDirty()&&this.frameAnimation(t.el,this.defaultAnimation)}),this),this.form.reset(),this.form.findField("searchdatefrom").setMaxValue(null),this.form.findField("searchdateto").setMinValue(null),this.form.findField("logLevel").multiValue=""}}),Ext.define("SYNO.SDS.Backup.Client.Common.Log.BaseLogUI",{extend:"Ext.Panel",itemsPerPage:1e3,title:void 0,itemId:void 0,appWin:void 0,topwin:void 0,store:void 0,columnModel:void 0,constructor:function(t){Ext.copyTo(this,t,["topwin","appWin","title","itemId"]),this.store=t.ds,this.columnModel=t.cm,this.itemsPerPage=t.appWin.appInstance.getUserSettings(this.itemId+"-dsPageLimit")||this.itemsPerPage,Ext.apply(t,this),this.callParent([t]),this.mon(this,"resize",(function(t,e,i){this.updatePagingToolbarItems(e)}),this)},initComponent:function(){this.searchPanel=this.initSearchForm(),this.paging=this.initPagingToolbar(),this.enablePagingToolbarItems(!1),this.grid=new SYNO.ux.GridPanel({view:new SYNO.ux.FleXcroll.grid.BufferView({rowHeight:27,scrollDelay:30,hideSortIcons:!0,borderHeight:1}),cls:"syno-backup-log-gridview",height:455,region:"center",store:this.store,bbar:this.paging,colModel:this.columnModel,loadMask:!0,stripeRows:!0}),Ext.apply(this,{itemId:this.itemId,border:!1,header:!1,layout:"fit",items:[this.grid]}),this.callParent([this])},initSearchForm:function(){return new SYNO.SDS.Backup.Client.Common.Log.SearchFormPanel({cls:"syno-backup-client-common-adv-search-panel",renderTo:Ext.getBody(),shadow:!1,hidden:!0,owner:this})},initPagingToolbar:function(){return new SYNO.ux.PagingToolbar({displayInfo:!0,showRefreshBtn:!0,store:this.store,pageSize:this.itemsPerPage,items:["-",_T("common","items_perpage"),this.initPageComboBox(this.getPageRecordStore()),"-",{xtype:"tbtext",text:"",itemId:"infoLevel"},"-",{xtype:"tbtext",text:"",itemId:"warnLevel"},"-",{xtype:"tbtext",text:"",itemId:"errorLevel"},"-"]})},initPageComboBox:function(t){return new SYNO.ux.ComboBox({name:"page_rec",hiddenName:"page_rec",hiddenId:Ext.id(),store:t,displayField:"display",valueField:"value",triggerAction:"all",value:this.itemsPerPage,editable:!1,width:72,mode:"local",listeners:{select:{fn:this.onChangeDisplayRecord,scope:this}}})},getPageRecordStore:function(){return new Ext.data.SimpleStore({fields:["value","display"],data:[[100,100],[500,500],[1e3,1e3],[3e3,3e3]]})},getPagingToolBarCompoent:function(t){return this.paging.getComponent(t)},updatePagingToolbarItems:function(t){this.isVisible()&&(t>950?this.enablePagingToolbarItems(!0):this.enablePagingToolbarItems(!1))},enablePagingToolbarItems:function(t){var e=this.paging.items.indexOfKey("infoLevel"),i=this.paging.items.indexOfKey("errorLevel");if(!(e<0||i<0))for(var n=e-1;n<=i+1;n++){var s=this.paging.items.get(n);Ext.isEmpty(s)||s.setVisible(t)}}}),Ext.define("SYNO.SDS.Backup.Client.Common.Log.BaseLog",{extend:"SYNO.SDS.Backup.Client.Common.Log.BaseLogUI",searchBuffer:200,constructor:function(t){this.callParent([t]),this.searchBuffer=t.searchBuffer||this.searchBuffer},initEvents:function(){this.mon(this.searchPanel,"search",this.onSearch,this,{buffer:this.searchBuffer}),this.mon(this.grid.getStore(),"load",this.onAfterStoreLoad,this),this.mon(this.grid.getStore(),"beforeload",this.onBeforeStoreLoad,this)},onChangeDisplayRecord:function(t,e,i){var n=this.grid.getStore();this.itemsPerPage!==t.getValue()&&(this.itemsPerPage=t.getValue(),this.paging.pageSize=this.itemsPerPage,n.load({params:{offset:0}}),this.appWin.appInstance.setUserSettings(this.itemId+"-dsPageLimit",this.itemsPerPage))},isTheSame:function(t,e){var i;for(i in e)if(e[i]!==t[i])return!1;return!0},onSearch:function(t,e){var i=this.grid.getStore();this.isTheSame(i.baseParams,e)||(Ext.apply(i.baseParams,e),i.load())},onBeforeStoreLoad:function(t,e){this.grid.getGridEl().unmask(),e.params.limit=this.itemsPerPage},onAfterStoreLoad:function(t,e,i){var n,s;e.length<1?this.grid.getGridEl().mask(SYNO.SDS.Backup.Client.Common.Utils.GetString("app","no_log_available")):this.grid.getGridEl().unmask(),n=t.reader.jsonData,s='<div class="{0}" style="width:40px;" ext:qtip="{1}">{2}</div>',this.setLogLevelText(this.getPagingToolBarCompoent("infoLevel"),s,"syno-log-info",SYNO.SDS.Backup.Client.Common.Utils.GetString("app","log_info_level"),n.info_count),this.setLogLevelText(this.getPagingToolBarCompoent("warnLevel"),s,"syno-log-warn",SYNO.SDS.Backup.Client.Common.Utils.GetString("app","log_warn_level"),n.warn_count),this.setLogLevelText(this.getPagingToolBarCompoent("errorLevel"),s,"syno-log-err",SYNO.SDS.Backup.Client.Common.Utils.GetString("app","log_error_level"),n.error_count),this.setPagingToolbar(t,this.grid,this.paging)},setLogLevelText:function(t,e,i,n,s){t&&(s=s||"0",t.setText(String.format(e,i,n,s)))},setPagingToolbar:function(t,e,i){this.setPagingToolbarVisible(i,t.getTotalCount()>this.itemsPerPage)},setPagingToolbarVisible:function(t,e){var i=0;for(i=0;i<13;i++)9!==i&&10!==i&&11!==i&&t.items.items[i].setVisible(e);t.setButtonsVisible(!0)},onExportCSV:function(){this.onExportLog("csv")},onExportHtml:function(){this.onExportLog("html")},onExportLog:function(t){_S("demo_mode")?this.appWin.getMsgBox().alert(this.appWin.title,_JSLIBSTR("uicommon","error_demo")):this.doExport(t)},doExport:function(t){var e=this.grid.getStore(),i=e.baseParams.filter_level,n=e.baseParams.filter_target_id,s=e.baseParams.filter_keyword,a=e.baseParams.filter_date_from,o=e.baseParams.filter_date_to,r=t;this.appWin.downloadWebAPI({webapi:{api:"SYNO.SDS.Backup.Client.Common.Log",version:1,method:"export",params:{filter_level:i,filter_target_id:n,filter_keyword:s,filter_date_from:a,filter_date_to:o,format:r}}})}}),Ext.define("SYNO.SDS.Backup.Client.Common.Log.LogsWindow",{extend:"SYNO.SDS.ModalWindow",constructor:function(t){var e={title:SYNO.SDS.Backup.Client.Common.Utils.GetString("app","log_name"),cls:"syno-backup-client-common-log-window",width:860,height:530,padding:"8px 20px 0px 20px",resizable:!0,minWidth:860,minHeight:300,maximizable:!0,layout:"fit",items:[new SYNO.SDS.Backup.Client.Common.Log.LogsPage({appWin:t.appWin,owner:t.owner,filterParams:t.filterParams})],buttons:[{xtype:"syno_button",btnStyle:"grey",text:_T("common","close"),scope:this,handler:function(){this.close()}}]};Ext.apply(t,e),this.callParent(arguments)}}),Ext.define("SYNO.SDS.Backup.Client.Common.Log.LogsPage",{extend:"SYNO.ux.Panel",constructor:function(t){Ext.apply(this,t);var e=this.fillConfig(t);this.callParent([e])},fillConfig:function(t){var e=new SYNO.SDS.Backup.Client.Common.Log.GeneralLogBuilder;this.generalLog=e.create({topwin:this,appWin:this.appWin,filterParams:this.filterParams});var i={title:SYNO.SDS.Backup.Client.Common.Utils.GetString("app","log_backup"),border:!1,trackResetOnLoad:!0,tbar:this.initToolbar(),layout:"fit",activeItem:0,items:[this.generalLog]};return Ext.apply(i,t),i},initToolbar:function(){var t=new SYNO.ux.Toolbar;return this.ExportButton=new SYNO.ux.SplitButton({xtype:"syno_splitbutton",text:SYNO.SDS.Backup.Client.Common.Utils.GetString("app","log_export"),handler:this.onExportHtml,scope:this,menu:{items:[{text:SYNO.SDS.Backup.Client.Common.Utils.GetString("app","log_html_type"),handler:this.onExportHtml,scope:this},{text:SYNO.SDS.Backup.Client.Common.Utils.GetString("app","log_csv_type"),handler:this.onExportCSV,scope:this}]}}),this.SearchField=new SYNO.SDS.Backup.Client.Common.Log.AdvancedSearchField({iconStyle:"filter",owner:this}),this.SearchField.searchPanel=this.generalLog.searchPanel,t.add(this.ExportButton),t.add("->"),t.add(this.SearchField),t},onExportHtml:function(){this.generalLog.onExportHtml()},onExportCSV:function(){this.generalLog.onExportCSV()}}),Ext.define("SYNO.SDS.Backup.Client.Common.Log.GeneralLogBuilder",{extend:"Object",create:function(t){var e=SYNO.SDS.Backup.Client.Common.Utils.GetString("app","log_backup"),i=t.filterParams;delete t.filterParams;var n={title:e,itemId:"backup",ds:this.getStore(i),cm:this.getColumnModel()};return Ext.applyIf(t,n),new SYNO.SDS.Backup.Client.Common.Log.BaseLog(t)},getStore:function(t){var e={offset:0,limit:0};return Ext.apply(e,t),new SYNO.API.Store({api:"SYNO.SDS.Backup.Client.Common.Log",version:1,method:"list",baseParams:e,appWindow:!1,autoLoad:!0,remoteSort:!1,reader:new Ext.data.JsonReader({idProperty:"id",root:"log_list",totalProperty:"total",fields:[{name:"level",mapping:"level"},{name:"time",mapping:"time",convert:function(t,e){return SYNO.SDS.Backup.Client.Common.Utils.getDSMStyleDateTimeString(t,{type:"datetimesec"})}},{name:"user",mapping:"user"},{name:"event",mapping:"event"}]})})},getColumnModel:function(){return new Ext.grid.ColumnModel({columns:[{menuText:SYNO.SDS.Backup.Client.Common.Utils.GetString("app","log_level_type"),header:SYNO.SDS.Backup.Client.Common.Utils.GetString("app","log_level_type"),dataIndex:"level",fixed:!0,width:100,renderer:this.logLevelRenderer},{header:SYNO.SDS.Backup.Client.Common.Utils.GetString("app","log_time_date"),dataIndex:"time",fixed:!0,width:200,renderer:this.htmlEncodeRender},{header:SYNO.SDS.Backup.Client.Common.Utils.GetString("app","log_account"),dataIndex:"user",width:100,renderer:this.htmlEncodeRender},{id:"descr",header:SYNO.SDS.Backup.Client.Common.Utils.GetString("app","log_action"),dataIndex:"event",css:"white-space:normal;",width:300,renderer:this.htmlEncodeRender}],defaults:{sortable:!1,menuDisabled:!1}})},logLevelRenderer:function(t){switch(t){case"emerg":case"alert":case"crit":case"err":return"<span class='red-status'>Error</span>";case"warn":case"warning":case"notice":return"<span class='orange-status'>Warning</span>";case"info":case"debug":return"<span class='info-status'>Information</span>";default:return"Undefined"}},htmlEncodeRender:function(t,e){var i="<span>"+Ext.util.Format.htmlEncode(t)+"</span>";return e.attr='ext:qtip="'+Ext.util.Format.htmlEncode(i)+'"',i}});