File: /volume1/@appstore/StorageAnalyzer/ui/storageanalyzer.js
/* Copyright (c) 2023 Synology Inc. All rights reserved. */
Ext.ns("SYNO.SDS.StorageAnalyzer.UsageReport"),SYNO.SDS.StorageAnalyzer.UsageReport.SYNO_SCHEDULE_SUN=0,SYNO.SDS.StorageAnalyzer.UsageReport.SYNO_SCHEDULE_MON=1,SYNO.SDS.StorageAnalyzer.UsageReport.SYNO_SCHEDULE_TUE=2,SYNO.SDS.StorageAnalyzer.UsageReport.SYNO_SCHEDULE_WED=3,SYNO.SDS.StorageAnalyzer.UsageReport.SYNO_SCHEDULE_THU=4,SYNO.SDS.StorageAnalyzer.UsageReport.SYNO_SCHEDULE_FRI=5,SYNO.SDS.StorageAnalyzer.UsageReport.SYNO_SCHEDULE_SAT=6,SYNO.SDS.StorageAnalyzer.UsageReport.WEEK_VALUE=[_T("schedule","schedule_sun"),_T("schedule","schedule_mon"),_T("schedule","schedule_tue"),_T("schedule","schedule_wed"),_T("schedule","schedule_thu"),_T("schedule","schedule_fri"),_T("schedule","schedule_sat")],SYNO.SDS.StorageAnalyzer.UsageReport.WIZARD_MAX_HEIGHT=388,Ext.define("SYNO.SDS.StorageAnalyzer.UsageReport.StepProfile",{extend:"Ext.form.FormPanel",param:{},constructor:function(e){e.profile_name&&(this.profile_name=e.profile_name),this.editMode=e.editMode;var t=new Ext.data.SimpleStore({fields:["mail"]});this.enable_schedule=new SYNO.ux.Checkbox({name:"enable_schedule",boxLabel:SYNO.SDS.StorageAnalyzer._T("report","form_schedule_time"),listeners:{check:{fn:this.updateButton,scope:this}}});var i={cls:"storage-usage-report-wizard",itemId:"profile",nextId:"reportType",headline:SYNO.SDS.StorageAnalyzer._T("report","wizard_profile"),description:SYNO.SDS.StorageAnalyzer._T("report","wizard_profile_desc"),layout:"form",labelWidth:200,defaults:{anchor:"100%"},items:[{name:"profile",fieldLabel:SYNO.SDS.StorageAnalyzer._T("report","task_name"),xtype:"syno_textfield",maxLength:127,allowBlank:!1,vtype:"darProfile"},{name:"email",fieldLabel:SYNO.SDS.StorageAnalyzer._T("report","recipients_email"),xtype:"syno_superboxselect",vtype:"email",store:t,mode:"local",emptyText:"admin@example.com",allowAddNewData:!0,addNewDataOnBlur:!0,renderFieldBtns:!1,htmlEncode:!0,displayField:"mail",valueField:"mail",grow:!0,resizable:!0,itemMaxWidth:200,listeners:{scope:this,newitem:this.onAddNewitem,autosize:()=>this.doLayout()}},{xtype:"syno_displayfield",id:this.notificationLink,cls:"report-usage-note",value:'<span class="syno-ux-note">'+_T("common","note")+_T("common","colon")+" </span>"+String.format(SYNO.SDS.StorageAnalyzer._T("report","msg_check_config"),'<a class="link-font" href="#">',"</a>"),name:"msg_config",hidden:!0,htmlEncode:!1,isDirty:function(){return!1},listeners:{scope:this,single:!0,buffer:80,render:function(e){var t=e.el.child("a");t&&this.mon(t,"click",function(){SYNO.SDS.AppLaunch("SYNO.SDS.AdminCenter.Application",Ext.apply({},{fn:"SYNO.SDS.AdminCenter.Notification.Main"}))},this)}}},this.enable_schedule,{xtype:"syno_compositefield",cls:"profile-schedule-composite-field",hideLabel:!0,indent:1,items:[{xtype:"syno_displayfield",cls:"report-usage-schedule-label",hideLabel:!0,value:SYNO.SDS.StorageAnalyzer._T("report","msg_run_at"),width:130,margins:"0 8px 0 0"},{name:"week_day",xtype:"syno_schedulefield",allowBlank:!1,editable:!1,value:"0,1,2,3,4,5,6",disabled:!0,width:252,margins:"0 12px 0 0"},{name:"hour",xtype:"syno_combobox",store:this.createTimeItemStore("hour"),displayField:"display",valueField:"display",disabled:!0,value:"00",width:60,margins:"0 0 0 0"},{xtype:"syno_displayfield",cls:"profile-schedule-time-seperator",value:":",width:6,margins:"0 5px 0 5px"},{name:"minute",xtype:"syno_combobox",store:this.createTimeItemStore("min"),displayField:"display",valueField:"display",disabled:!0,value:"00",width:60,margins:"0 0 0 0"}]},{xtype:"syno_compositefield",name:"rotation_composite",hideLabel:!0,items:[{xtype:"syno_checkbox",name:"enable_rotation",width:302,boxLabel:SYNO.SDS.StorageAnalyzer._T("report","report_max_number_kept"),value:!1,listeners:{check:{fn:function(e,t){this.getForm().findField("max_reports").setDisabled(!t)},scope:this}}},{xtype:"syno_numberfield",name:"max_reports",width:80,maxlength:4,vtype:"number",allowBlank:!1,maxValue:5e3,value:100,disabled:!0}]}],listeners:{scope:this,afterlayout:{fn:this.addTip,single:!0},afterrender:function(){this.sendWebAPI({api:"SYNO.Core.Notification.Mail.Conf",method:"get",version:1,scope:this,callback:function(e,t,i){e&&!Ext.isEmpty(t)&&this.getForm().findField("msg_config").setVisible(!t.enable_mail),this.doLayout()}})}}};Ext.apply(i,e),this.callParent([i])},onAddNewitem:function(e,t,i){(t=t.trim())&&e.addItem({mail:t})},updateDialog:function(e,t){var i,r=0,a="";if(this.getForm().findField("profile").setValue(e.profile_name),this.getForm().findField("profile").initValue(),e.mail&&(Ext.each(e.mail,function(e){this.getForm().findField("email").addItem({mail:e})},this),this.getForm().findField("email").initValue()),this.getForm().findField("enable_rotation").setValue(!!e.enable_rotation),this.getForm().findField("enable_rotation").initValue(),e.max_reports&&(this.getForm().findField("max_reports").setValue(Math.min(5e3,e.max_reports)),this.getForm().findField("max_reports").initValue()),void 0!==e.week_day){for(i=e.week_day,r=0;r<7;r++)"1"===i.charAt(r)&&(a+=r+",");this.getForm().findField("week_day").setValue(a)}else this.getForm().findField("week_day").setValue("0,1,2,3,4,5,6");e.hour?this.getForm().findField("hour").setValue(String.leftPad(e.hour,2,"0")):this.getForm().findField("hour").setValue("00"),e.minute?this.getForm().findField("minute").setValue(String.leftPad(e.minute,2,"0")):this.getForm().findField("minute").setValue("00"),this.getForm().findField("week_day").initValue(),this.getForm().findField("hour").initValue(),this.getForm().findField("minute").initValue(),e.enable_schedule?(this.getForm().findField("enable_schedule").setValue(!0),this.updateButton("",!0)):this.updateButton("",!1),this.getForm().findField("enable_schedule").initValue(),t&&"function"==typeof t&&t()},createTimeItemStore:function(e){var t=[],i={hour:24,min:60,sec:60};if(e in i){for(var r=0;r<i[e];r++)t.push([r,String.leftPad(String(r),2,"0")]);return new Ext.data.SimpleStore({id:0,fields:["value","display"],data:t})}return null},updateButton:function(e,t){t?(this.getForm().findField("week_day").setDisabled(!1),this.getForm().findField("hour").setDisabled(!1),this.getForm().findField("minute").setDisabled(!1)):(this.getForm().findField("week_day").setDisabled(!0),this.getForm().findField("hour").setDisabled(!0),this.getForm().findField("minute").setDisabled(!0))},summary:function(e){var t,i,r;if(t="",i=this.getForm().findField("week_day").getValue())for(i=i.split(","),r=0;r<i.length;r++)t+=SYNO.SDS.StorageAnalyzer.UsageReport.WEEK_VALUE[i[r]]+" ";this.getForm().findField("enable_schedule").checked?(e.append(SYNO.SDS.StorageAnalyzer._T("report","summary_enable_schedule"),_T("common","yes")),e.append(SYNO.SDS.StorageAnalyzer._T("report","form_schedule_time"),t+" "+this.param.hour+":"+this.param.minute)):e.append(SYNO.SDS.StorageAnalyzer._T("report","summary_enable_schedule"),_T("common","no")),this.param.create_now?e.append(SYNO.SDS.StorageAnalyzer._T("report","summary_enable_create_now"),_T("common","yes")):e.append(SYNO.SDS.StorageAnalyzer._T("report","summary_enable_create_now"),_T("common","no")),e.append(SYNO.SDS.StorageAnalyzer._T("report","title_profile"),this.param.profile_name),0!==this.param.mail.length&&e.append(SYNO.SDS.StorageAnalyzer._T("report","title_mail"),this.param.mail.join(",")),this.param.enable_rotation&&e.append(SYNO.SDS.StorageAnalyzer._T("report","category_report_rotation"),""+this.param.max_reports)},addTip:function(){var e=SYNO.ux.AddTip(this.getForm().findField("max_reports").getEl(),String.format(_JSLIBSTR("extlang","maxnumber"),"5000"),180);Ext.get(e).alignTo(this.getForm().findField("max_reports").getEl(),"r",[0,-10])},checkExistReport:function(){const e=this.getForm().findField("profile").getValue();this.sendWebAPI({api:"SYNO.Core.Report",method:"list",version:1,scope:this,callback:function(t,i,r){if(!t)return void this.owner.setStatusError({text:_T("common","commfail"),clear:!0});Ext.isArray(i.reports)&&i.reports.some(t=>t.profile_name===e)?this.onGetReportExist():this.onGetReportNotExist()}})},onGetReportExist:function(){this.getForm().findField("profile").markInvalid(_T("error","error_file_exist")),this.owner.setStatusError({text:_T("common","forminvalid"),clear:!0})},onGetReportNotExist:function(){this.param.profile_name=this.getForm().findField("profile").getValue(),this.param.mail=this.getForm().findField("email").getValue().split(","),this.owner.goNext(this.nextId)},checkValidate:function(){if(!this.getForm().isValid())return[!1,_T("common","forminvalid"),this.itemId];if(this.getForm().findField("enable_schedule").getValue()){if(this.param.week_day=this.dayToArray(this.getForm().findField("week_day").getValue()),this.param.hour=this.getForm().findField("hour").getValue(),this.param.minute=this.getForm().findField("minute").getValue(),""===this.param.week_day||""===this.param.hour||""===this.param.minute)return[!1,_T("common","forminvalid"),this.itemId];this.param.enable_schedule=!0}else this.param.enable_schedule=!1;return this.getForm().findField("enable_rotation").getValue()?(this.param.enable_rotation=!0,this.param.max_reports=this.getForm().findField("max_reports").getValue()):this.param.enable_rotation=!1,!0===this.editMode?(this.param.profile_name=this.getForm().findField("profile").getValue(),this.param.mail=this.getForm().findField("email").getValue().split(","),[!0,null,null]):[!0,null,null]},getNext:function(){const[e,t]=this.checkValidate();return e?(this.checkExistReport(),!1):(this.owner.setStatusError({text:t,clear:!0}),!1)},dayToArray:function(e){for(var t=e.split(","),i=["0","0","0","0","0","0","0"],r=0;r<t.length;r++)(t[r]<=6||t[r]>=0)&&(i[t[r]]="1");return i.join("")}}),Ext.define("SYNO.SDS.StorageAnalyzer.UsageReport.StepReportType",{extend:"Ext.form.FormPanel",param:{},constructor:function(e){if(this.enableColumn=new SYNO.ux.EnableColumn({name:"report_types",header:_T("common","choose"),dataIndex:"choose",menuDisabled:!0,sortable:!1,width:25,align:"center"}),this.typeStore=new Ext.data.JsonStore({fields:["report","value"],data:[{report:SYNO.SDS.StorageAnalyzer._T("report","report_quota_usage"),value:"quota_usage"},{report:SYNO.SDS.StorageAnalyzer._T("report","report_file_owner"),value:"file_owner"},{report:SYNO.SDS.StorageAnalyzer._T("report","report_volume_usage"),value:"volume_usage"},{report:SYNO.SDS.StorageAnalyzer._T("report","report_share_list"),value:"share_list"},{report:SYNO.SDS.StorageAnalyzer._T("report","report_file_group"),value:"file_group"},{report:SYNO.SDS.StorageAnalyzer._T("report","report_duplicate_file"),value:"duplicate_file"},{report:SYNO.SDS.StorageAnalyzer._T("report","report_large_file"),value:"large_file"},{report:SYNO.SDS.StorageAnalyzer._T("report","report_lrm"),value:"least_modify"},{report:SYNO.SDS.StorageAnalyzer._T("report","report_mrm"),value:"most_modify"}]}),!this.editMode){var t,i=this.typeStore.getTotalCount();for(t=0;t<i;t++){var r=this.typeStore.getAt(t);r.data.choose=!0,r.commit(!0)}}this.cm=new Ext.grid.ColumnModel({columns:[this.enableColumn,{header:SYNO.SDS.StorageAnalyzer._T("report","category_items_in_report"),dataIndex:"report"}]}),this.grid=new SYNO.ux.GridPanel({cls:"profile-report-type-grid",flex:1,enableColumnMove:!1,enableColumnResize:!1,enableHdMenu:!1,store:this.typeStore,colModel:this.cm,plugins:[this.enableColumn],mode:"local"});const a={itemId:"reportType",nextId:"share",headline:SYNO.SDS.StorageAnalyzer._T("report","select_report_items"),description:SYNO.SDS.StorageAnalyzer._T("report","wizard_report_desc"),cls:"profile-report-type",layout:"fit",items:[this.grid]};Ext.apply(a,e),this.callParent([a])},updateDialog:function(e,t){var i=e.report_type,r=0,a=0,s=0;if(i.length>0)for(r=this.typeStore.getTotalCount(),a=0;a<r;a++){var o=this.typeStore.getAt(a);for(o.data.choose=!1,s=0;s<i.length;s++)if(i[s]===o.data.value){o.data.choose=!0;break}o.commit(!0)}this.enableColumn.checkSelectAll(this.typeStore),t&&"function"==typeof t&&t()},summary:function(e){var t=this.getCheckList(!1);t.length>0&&e.append(SYNO.SDS.StorageAnalyzer._T("report","title_report_type"),t.join(","))},checkValidate:function(){var e=this.getCheckList(!0);return 0===e.length?(this.param.report_type=[],[!1,_T("error","error_select_at_least_one"),this.itemId]):(this.param.report_type=e,[!0,null,null])},getNext:function(){const[e,t]=this.checkValidate();return e?this.nextId:(this.owner.setStatusError({text:t,clear:!0}),!1)},getCheckList:function(e){var t,i,r=0,a=[];for(i=this.typeStore.getTotalCount(),t=0;t<i;t++){var s=this.typeStore.getAt(t);s.data.choose&&(a[r]=e?s.data.value:s.data.report,r++)}return a}}),Ext.define("SYNO.SDS.StorageAnalyzer.UsageReport.StepShare",{extend:"SYNO.ux.FormPanel",param:{},constructor:function(e){this.owner=e.owner,this.editMode=e.editMode,this.enableColumn=new SYNO.ux.EnableColumn({name:"share_select",header:_T("common","choose"),dataIndex:"choose",menuDisabled:!0,sortable:!1,width:122,align:"center"}),this.enableColumn.onCellClick=this.enableColumn.onCellClick.createSequence(function(e,t,i){var r=!0===e.store.getAt(t).get("choose");r&&this.allRadio.setValue(!r)},this),this.enableColumn.onSelectAll=this.enableColumn.onSelectAll.createSequence(function(){var e=this.enableColumn,t=e.box_el.hasClass("syno-ux-cb-grayed")||e.box_el.hasClass("syno-ux-cb-checked");t&&this.allRadio.setValue(!t)},this),this.shareStore=new SYNO.API.JsonStore({api:"SYNO.Core.File",method:"list",version:1,baseParams:{folder_path:"/",superuser:!0,filetype:"dir"},appWindow:this,fields:["text"]}),this.shareStoreLoadComplete=!1,this.shareStore.load({scope:this,callback:function(){this.shareStoreLoadComplete=!0;var e=this.shareStore.findExact("text","home");-1!==e&&this.shareStore.removeAt(e);let t=this.shareStore.getRange().filter(e=>e.json.is_c2share);this.shareStore.remove(t)}}),this.cm=new Ext.grid.ColumnModel({columns:[this.enableColumn,{header:SYNO.SDS.StorageAnalyzer._T("report","title_share"),dataIndex:"text",width:415}]}),this.grid=new SYNO.ux.GridPanel({hideLabel:!0,viewConfig:{forceFit:!0},store:this.shareStore,colModel:this.cm,enableHdMenu:!1,plugins:[this.enableColumn],mode:"remote",flex:1,cls:"step-share-grid",indent:1,hidden:!0});var t={itemId:"share",nextId:"option",headline:SYNO.SDS.StorageAnalyzer._T("report","select_sync_share"),description:SYNO.SDS.StorageAnalyzer._T("report","wizard_option_desc"),cls:"step-share",layout:"vbox",layoutConfig:{align:"stretch"},listeners:{activate:{fn:()=>{this.ownerCt.doLayout()}}},items:[this.allRadio=new SYNO.ux.Radio({boxLabel:SYNO.SDS.StorageAnalyzer._T("report","include_future_share"),checked:!this.editMode,listeners:{check:function(e,t){if(!0===t){var i=this.grid.store;i.suspendEvents(!0),i.data.items.forEach(function(e,t){e.get("choose",!0)&&this.enableColumn.toggleRec(i.getAt(t))},this),i.resumeEvents(),this.enableColumn.checkSelectAll(i)}},scope:this},name:"sharefolder",inputValue:"all",height:28,margins:{top:0,right:0,bottom:6,left:0},handler:this.OnSourceRadioClick}),this.manualRadio=new SYNO.ux.Radio({boxLabel:SYNO.SDS.StorageAnalyzer._T("report","select_specific_share"),name:"sharefolder",inputValue:"manual",autoHeight:!0,handler:this.OnSourceRadioClick}),this.grid]};Ext.apply(t,e),this.callParent([t])},OnSourceRadioClick:function(e,t){if(!e.checked)return!1;switch(e.value){case"all":this.ownerCt.grid.hide();break;case"manual":this.ownerCt.grid.show()}this.ownerCt.doLayout()},updateDialog:function(e,t){this.response=e,this.updateDialogCallback=t,this.shareStoreTask=this.addTask({id:Ext.id(),interval:500,run:this.updateTaskCallBack,scope:this}),this.shareStoreTask.start(!1)},updateTaskCallBack:function(){var e,t=0,i=0,r=0,a=this.response.shares,s=0;if(!1!==this.shareStoreLoadComplete){if(this.shareStoreTask.stop(),a.length>0)for(t=this.shareStore.getCount(),i=0;i<t;i++){for((e=this.shareStore.getAt(i)).data.choose=!1,r=0;r<a.length;r++)if(a[r]===e.data.text){e.data.choose=!0,s++;break}e.commit(!1)}0===a.length||0===s?this.allRadio.setValue(!0):this.manualRadio.setValue(!0),this.allRadio.initValue(),this.manualRadio.initValue(),this.enableColumn.checkSelectAll(this.shareStore),this.updateDialogCallback()}},checkValidate:function(e){var t=this.getCheckList();return!0!==this.allRadio.checked&&t.length>0?this.param.shares=t:this.param.shares=[],this.getForm().isValid()?e||0!==this.param.shares.length||!0===this.allRadio.checked?[!0,null,null]:[!1,SYNO.SDS.StorageAnalyzer._T("common","sharefolder_not_selected"),2]:[!1,_T("common","forminvalid"),this.itemId]},getNext:function(e){const[t,i]=this.checkValidate(e);return t?this.nextId:(this.owner.setStatusError({text:i,clear:!0}),!1)},summary:function(e){this.getCheckList().length>0?e.append(SYNO.SDS.StorageAnalyzer._T("report","form_specify_share"),this.param.shares.join(",")):e.append(SYNO.SDS.StorageAnalyzer._T("report","form_specify_share"),SYNO.SDS.StorageAnalyzer._T("report","form_specify_all_share"))},getCheckList:function(){var e,t,i=0,r=[];for(t=this.shareStore.getCount(),e=0;e<t;e++){var a=this.shareStore.getAt(e);a.data.choose&&(r[i]=a.data.text,i++)}return r}}),Ext.define("SYNO.SDS.StorageAnalyzer.UsageReport.StepOption",{extend:"SYNO.ux.FormPanel",param:{},constructor:function(e){this.checkConfig(e),this.owner=e.owner;const t=(()=>this.doLayout()).bind(this),i=this.createOwnersSuperBoxSelect(t),r=this.createOwnersCheckbox();this.owners=i.getId(),this.ownersCheckbox=r.getId();var a={cls:"profile-option",itemId:"option",nextId:"summary",headline:SYNO.SDS.StorageAnalyzer._T("report","advanced_options"),description:SYNO.SDS.StorageAnalyzer._T("report","wizard_option_desc"),layout:"form",listeners:{afterlayout:{single:!0,fn:this.addTip},activate:()=>this.activate()},items:[{xtype:"syno_fieldset",title:SYNO.SDS.StorageAnalyzer._T("report","report_duplicate_file"),items:[{xtype:"syno_checkbox",boxLabel:SYNO.SDS.StorageAnalyzer._T("report","form_find_duplicate_file"),id:this.duplicate_dupfind=Ext.id(),name:"duplicate_dupfind",checked:!0,listeners:{check:function(e,t){Ext.getCmp(this.duplicate_filename).setDisabled(!t),Ext.getCmp(this.duplicate_mtime).setDisabled(!t),Ext.getCmp(this.duplicate_number).setDisabled(!t)},scope:this}},{xtype:"syno_checkbox",boxLabel:SYNO.SDS.StorageAnalyzer._T("report","form_duplicate_compare_filename"),id:this.duplicate_filename=Ext.id(),name:"duplicate_filename",checked:!1,indent:1},{xtype:"syno_checkbox",boxLabel:SYNO.SDS.StorageAnalyzer._T("report","form_specify_duplicate_file_full_mach")+" ("+SYNO.SDS.StorageAnalyzer._T("report","msg_cost_more_time")+")",id:this.duplicate_compare=Ext.id(),name:"duplicate_compare",hidden:!0,checked:!0},{xtype:"syno_checkbox",boxLabel:SYNO.SDS.StorageAnalyzer._T("report","form_duplicate_compare_mtime"),id:this.duplicate_mtime=Ext.id(),name:"duplicate_mtime",checked:!0,indent:1},{name:"duplicate_number",xtype:"syno_numberfield",fieldLabel:SYNO.SDS.StorageAnalyzer._T("report","form_duplicate_limit_number"),labelWidth:400,width:60,id:this.duplicate_number=Ext.id(),maxlength:4,maxValue:5e3,vtype:"number",allowBlank:!1,value:200,indent:1}]},{xtype:"syno_fieldset",title:SYNO.SDS.StorageAnalyzer._T("report","category_file_listing_by_user"),items:[r,i]}]};Ext.apply(a,e),this.callParent([a]),this.on("afterlayout",this.addTip,this,{single:!0})},checkConfig:function(e){if(!Ext.isObject(e))throw TypeError("config is not a object");if(!Ext.isFunction(e.getCurrentParams))throw TypeError("getCurrentParams is not a function")},activate:function(){const{report_type:e}=this.getCurrentParams();this.updateOwnerCheckbox(e)},updateOwnerCheckbox:function(e){const t=Ext.isArray(e)&&SYNO.ux.Utils.checkArrayInclude(e,"file_group");this.enableFileListSection(t)},createOwnersSuperBoxSelect:function(e){const t=e=>{const t={};return t.user=e,t},i=new Ext.data.ArrayStore({fields:["user"]}),r=new SYNO.ux.SuperBoxSelect({name:"owners",indent:1,hideLabel:!0,emptyText:"guest",store:i,mode:"local",allowAddNewData:!0,addNewDataOnBlur:!0,renderFieldBtns:!1,displayField:"user",valueField:"user",grow:!0,resizable:!0,listeners:{newItem:(e,i,r)=>{(i=i.trim())&&e.addItem(t(Ext.util.Format.htmlEncode(i)))},autosize:e}});return Ext.override(r,{getValue:()=>r.getValueEx().map(e=>e.user),setValue:e=>{if(!Ext.isArray(e))return;const i=e.map(t);r.clearValue(),r.addItems(i)}}),r},createOwnersCheckbox:function(){const e=(e,t)=>{const i=SYNO.SDS.StorageAnalyzer.Utils,r=Ext.getCmp(this.owners),a=e.getPositionEl();t?(i.applyQtip(a,SYNO.SDS.StorageAnalyzer._T("report","file_list_info")),r.setDisabled(!0)):(i.removeQtip(a),r.setDisabled(!e.checked))};return new SYNO.ux.Checkbox({boxLabel:SYNO.SDS.StorageAnalyzer._T("report","form_specify_user")+_T("common","colon"),name:"enable_owner",checked:!0,listeners:{check:(e,t)=>{const i=!t;Ext.getCmp(this.owners).setDisabled(i)},disable:t=>e(t,!0),enable:t=>e(t,!1)}})},enableFileListSection:function(e){const t=!e;Ext.getCmp(this.ownersCheckbox).setDisabled(t)},addTip:function(){SYNO.ux.AddWhiteTipWithMsg(Ext.getCmp(this.duplicate_dupfind),SYNO.SDS.StorageAnalyzer._T("report","dup_file_option_desc"),384),SYNO.ux.AddWhiteTipWithMsg(Ext.getCmp(this.duplicate_number),String.format(_JSLIBSTR("extlang","maxnumber"),"5000"),180)},updateDialog:function(e,t){const i=Ext.apply({},{enable_owner:0<e.owners.length,duplicate_number:e.duplicate_number&&Math.min(5e3,e.duplicate_number)},e);Ext.getCmp(this.duplicate_dupfind).setValue(i.duplicate_dupfind),Ext.getCmp(this.duplicate_dupfind).initValue(),Ext.getCmp(this.duplicate_compare).setValue(i.duplicate_compare),Ext.getCmp(this.duplicate_compare).initValue(),Ext.getCmp(this.duplicate_mtime).setValue(i.duplicate_mtime),Ext.getCmp(this.duplicate_mtime).initValue(),Ext.getCmp(this.duplicate_filename).setValue(i.duplicate_filename),Ext.getCmp(this.duplicate_filename).initValue(),i.duplicate_number&&Ext.getCmp(this.duplicate_number).setValue(i.duplicate_number),Ext.getCmp(this.duplicate_number).initValue(),Ext.getCmp(this.ownersCheckbox).setValue(i.enable_owner),Ext.getCmp(this.ownersCheckbox).initValue(),Ext.getCmp(this.owners).setValue(i.owners),Ext.getCmp(this.owners).initValue(),t&&"function"==typeof t&&t()},checkValidate:function(){return this.param.owners=Ext.getCmp(this.owners).getValue(),this.param.duplicate_dupfind=Ext.getCmp(this.duplicate_dupfind).getValue(),this.param.duplicate_compare=Ext.getCmp(this.duplicate_compare).getValue(),this.param.duplicate_mtime=Ext.getCmp(this.duplicate_mtime).getValue(),this.param.duplicate_filename=Ext.getCmp(this.duplicate_filename).getValue(),this.param.duplicate_number=Ext.getCmp(this.duplicate_number).getValue(),this.getForm().isValid()?[!0,null,null]:[!1,_T("common","forminvalid"),this.itemId]},getNext:function(){const[e,t]=this.checkValidate();return e?this.nextId:(this.owner.setStatusError({text:t,clear:!0}),!1)},summary:function(e){const t=this.param.owners;t&&0<t.length&&e.append(SYNO.SDS.StorageAnalyzer._T("report","form_specify_user"),t.join(", ")),this.param.duplicate_compare?e.append(SYNO.SDS.StorageAnalyzer._T("report","form_specify_duplicate_file_full_mach"),_T("common","yes")):e.append(SYNO.SDS.StorageAnalyzer._T("report","form_specify_duplicate_file_full_mach"),_T("common","no")),this.param.duplicate_mtime?e.append(SYNO.SDS.StorageAnalyzer._T("report","form_duplicate_compare_mtime"),_T("common","yes")):e.append(SYNO.SDS.StorageAnalyzer._T("report","form_duplicate_compare_mtime"),_T("common","no")),this.param.duplicate_filename?e.append(SYNO.SDS.StorageAnalyzer._T("report","form_duplicate_compare_filename"),_T("common","yes")):e.append(SYNO.SDS.StorageAnalyzer._T("report","form_duplicate_compare_filename"),_T("common","no")),this.param.duplicate_dupfind?e.append(SYNO.SDS.StorageAnalyzer._T("report","form_find_duplicate_file"),_T("common","yes")):e.append(SYNO.SDS.StorageAnalyzer._T("report","form_find_duplicate_file"),_T("common","no")),e.append(SYNO.SDS.StorageAnalyzer._T("report","form_duplicate_limit_number"),""+this.param.duplicate_number)}}),Ext.define("SYNO.SDS.StorageAnalyzer.UsageReport.StepSummary",{extend:"Ext.form.FormPanel",constructor:function(e){this.checkConfig(e),this.grid=new SYNO.SDS.Wizard.SummaryStep({cls:"wizard-summary-grid",flex:1});const t={xtype:"syno_checkbox",name:"create_now",autoHeight:!0,boxLabel:SYNO.SDS.StorageAnalyzer._T("report","form_create_now")};var i={cls:"wizard-summary",headline:_T("wizcommon","summary"),description:_T("wizcommon","summary_descr"),itemId:"summary",nextId:null,layout:{type:"vbox",align:"stretch"},border:!1,items:[this.grid,t]};Ext.apply(i,e),this.callParent([i])},checkConfig:function(e){if(!Ext.isObject(e))throw TypeError("config is not a object");if(!Ext.isFunction(e.getCurrentParams))throw TypeError("getCurrentParams is not a function")},getNext:function(){const e=this.getForm(),t=Ext.apply({},this.getCurrentParams(),e.getFieldValues());return this.owner.setStatusBusy({text:_T("common","saving")}),this.sendWebAPI({api:"SYNO.Core.Report",method:"create",version:1,scope:this,params:t,callback:function(e,t,i){if(this.owner.clearStatusBusy(),e)this.owner.close(),this.outPanel.addMask(this.outPanel.WAIT_FOR_WEBAPI_RESPONSE);else if(t.errors){var r=SYNO.SDS.StorageAnalyzer.Utils.getErrorString(t.code);4902===t.code&&(r=r+"("+t.errors.user+")"),this.owner.getMsgBox().alert(SYNO.SDS.StorageAnalyzer._T("report","report_name"),r)}}}),!1},activate:function(){var e=this.owner.stepStack,t=null;this.grid.getStore().removeAll(!0);for(var i=0;i<e.length;i++)t=this.owner.getStep(e[i]),Ext.isFunction(t.summary)&&t.summary(this.grid.getStore());this.grid.getView().refresh()}}),Ext.define("SYNO.SDS.StorageAnalyzer.UsageReport.ProfileWizard",{extend:"SYNO.SDS.Wizard.ModalWindow",constructor:function(e){this.outPanel=e.outPanel,this.owner=e.owner;const t=SYNO.SDS.StorageAnalyzer.UsageReport.WIZARD_MAX_HEIGHT;var i=new SYNO.SDS.StorageAnalyzer.UsageReport.StepProfile({editMode:!1,owner:this}),r=new SYNO.SDS.StorageAnalyzer.UsageReport.StepReportType({owner:this,height:t}),a=new SYNO.SDS.StorageAnalyzer.UsageReport.StepShare({owner:this,height:t}),s=new SYNO.SDS.StorageAnalyzer.UsageReport.StepOption({owner:this,getCurrentParams:()=>this.getCurrentParams()}),o=new SYNO.SDS.StorageAnalyzer.UsageReport.StepSummary({outPanel:e.outPanel,owner:this,height:t,getCurrentParams:()=>this.getCurrentParams()});this.callParent([{owner:e.owner,title:SYNO.SDS.StorageAnalyzer._T("report","wizard_title"),cls:"profile-wizard",width:650,height:550,activeStep:0,steps:[i,r,a,s,o]}])},getCurrentParams:function(){return this.stepStack.map(e=>this.getStep(e).param).filter(Ext.isObject).reduce((e,t)=>Ext.apply(e,t),{})}}),Ext.define("SYNO.SDS.StorageAnalyzer.UsageReport.SettingBasic",{extend:"Ext.form.FormPanel",constructor:function(e){this.owner=e.owner.owner,this.enable_schedule=new SYNO.ux.Checkbox({name:"enable_schedule",boxLabel:SYNO.SDS.StorageAnalyzer._T("report","form_schedule_time_volume_history"),listeners:{check:{fn:this.updateButton,scope:this}}});var t={layout:"form",border:!1,labelWidth:150,defaults:{anchor:"90%",allowBlank:!1},items:[{xtype:"syno_compositefield",fieldLabel:SYNO.SDS.StorageAnalyzer._T("report","title_location"),hideLabel:!1,items:[{xtype:"syno_textfield",width:180,name:"report_location",allowBlank:!1,readOnly:!0,tabIndex:2},{xtype:"syno_button",text:_T("common","choose"),scope:this,handler:this.choosedestHandler}]},{xtype:"syno_displayfield",height:10,value:""},this.enable_schedule,{id:this.week_day=Ext.id(),name:"week_day",xtype:"syno_schedulefield",fieldLabel:_T("time","time_day"),allowBlank:!1,editable:!1,width:200,value:"0,1,2,3,4,5,6",disabled:!0,indent:2},{id:this.hour=Ext.id(),name:"hour",xtype:"syno_combobox",fieldLabel:_T("time","time_hour"),store:this.createTimeItemStore("hour"),displayField:"display",valueField:"display",disabled:!0,value:"00",width:200,indent:2},{id:this.minute=Ext.id(),name:"minute",xtype:"syno_combobox",fieldLabel:_T("time","time_minute"),store:this.createTimeItemStore("min"),displayField:"display",valueField:"display",disabled:!0,value:"00",width:200,indent:2}]};Ext.apply(t,e),this.callParent([t])},createTimeItemStore:function(e){var t=[],i={hour:24,min:60,sec:60};if(e in i){for(var r=0;r<i[e];r++)t.push([r,String.leftPad(String(r),2,"0")]);return new Ext.data.SimpleStore({id:0,fields:["value","display"],data:t})}return null},updateButton:function(e,t){t?(Ext.getCmp(this.week_day).setDisabled(!1),Ext.getCmp(this.hour).setDisabled(!1),Ext.getCmp(this.minute).setDisabled(!1)):(Ext.getCmp(this.week_day).setDisabled(!0),Ext.getCmp(this.hour).setDisabled(!0),Ext.getCmp(this.minute).setDisabled(!0))},updateDialogSchedule:function(e){var t,i=0,r="";if(void 0!==e.week_day){for(t=e.week_day,i=0;i<7;i++)"1"===t.charAt(i)&&(r+=i+",");this.getForm().findField("week_day").setValue(r)}else this.getForm().findField("week_day").setValue("0,1,2,3,4,5,6");this.getForm().findField("week_day").initValue(),e.hour?this.getForm().findField("hour").setValue(String.leftPad(e.hour,2,"0")):this.getForm().findField("hour").setValue("00"),this.getForm().findField("hour").initValue(),e.minute?this.getForm().findField("minute").setValue(String.leftPad(e.minute,2,"0")):this.getForm().findField("minute").setValue("00"),this.getForm().findField("minute").initValue(),!1!==e.enable_schedule?(this.getForm().findField("enable_schedule").setValue(!0),this.updateButton("",!0)):this.updateButton("",!1),this.getForm().findField("enable_schedule").initValue()},updateDialog:function(e,t){this.original_report_location=e.report_location,this.getForm().findField("report_location").setValue(e.report_location),this.getForm().findField("report_location").initValue(),this.updateDialogSchedule(e),t&&"function"==typeof t&&t()},dayToArray:function(e){for(var t=e.split(","),i=["0","0","0","0","0","0","0"],r=0;r<t.length;r++)(t[r]<=6||t[r]>=0)&&(i[t[r]]="1");return i.join("")},choosedestHandler:function(e,t){var i=this;new SYNO.SDS.Utils.FileChooser.Chooser({owner:this.owner,usage:{type:"chooseDir"},superuser:!0,treeFilter:function(e,t){return!t||"/home"!==t.spath&&t.spath!=="/"+i.original_report_location+"/synoreport"&&"/surveillance"!==t.spath},title:_T("common","choose"),folderToolbar:!0,superUser:!0,enumCluster:!0,enumColdStorage:!0,listeners:{scope:this,choose:this.onChooserSelect}}).show()},onChooserSelect:function(e,t){var i=t.path.substr(1);const r=this.getForm().findField("report_location").originalValue;Ext.isEmpty(r)||r===i?(this.getForm().findField("report_location").setValue(i),e.close()):this.owner.getMsgBox().alert(SYNO.SDS.StorageAnalyzer._T("report","report_name"),SYNO.SDS.StorageAnalyzer._T("report","report_will_move_description"),()=>{this.getForm().findField("report_location").setValue(i),e.close()})},fillWebAPIParam:function(e){return e.report_location=this.getForm().findField("report_location").getValue(),void 0===e.report_location||""===e.report_location?(this.owner.setStatusError({text:_T("common","forminvalid"),clear:!0}),!1):(this.enable_schedule.getValue()?(e.enable_schedule=!0,e.week_day=this.dayToArray(Ext.getCmp(this.week_day).getValue()),e.hour=Ext.getCmp(this.hour).getValue(),e.minute=Ext.getCmp(this.minute).getValue()):e.enable_schedule=!1,!0)},isReportLocationDirty:function(){return this.getForm().findField("report_location").isDirty()},isScheduleDirty:function(){let e=Ext.getCmp(this.week_day),t=Ext.getCmp(this.hour),i=Ext.getCmp(this.minute);return this.enable_schedule.getValue()&&(e.isDirty()||t.isDirty()||i.isDirty())},isDirty:function(){return this.isReportLocationDirty()||this.enable_schedule.isDirty()||this.isScheduleDirty()}}),Ext.define("SYNO.SDS.StorageAnalyzer.UsageReport.SettingExtName",{extend:"Ext.form.FormPanel",names:["zip","image","video","audio","document","web","iso","exe"],constructor:function(e){this.owner=e.owner.owner;var t=[];Ext.each(this.names,function(e){t.push(this.createItem(e))},this);var i={autoFlexcroll:!0,layout:"form",border:!1,defaults:{allowBlank:!1},items:t};Ext.apply(i,e),this.callParent([i])},ckeckExtName:function(e){var t;if(!new RegExp("^[a-z0-9-]+$").test(e))return t=SYNO.SDS.StorageAnalyzer._T("setting","ext_charset_not_fit"),this.owner.getMsgBox().alert(SYNO.SDS.StorageAnalyzer._T("report","report_name"),t),!1;var i=!0;return Ext.each(this.names,function(r){var a=Ext.getCmp(this["reportUI_file_type_"+r+"_id"]),s=Ext.getCmp(this["default_"+r+"_id"]).getValue().split(/[ ,]+/);return a.hasValue(e)?(i=!1,t=String.format(SYNO.SDS.StorageAnalyzer._T("setting","ext_exist_customized"),e,SYNO.SDS.StorageAnalyzer._T("report","reportUI_file_type_"+r)),void this.owner.getMsgBox().alert(SYNO.SDS.StorageAnalyzer._T("report","report_name"),t)):-1<s.indexOf(e)?(i=!1,t=String.format(SYNO.SDS.StorageAnalyzer._T("setting","ext_exist_system_default"),e,SYNO.SDS.StorageAnalyzer._T("report","reportUI_file_type_"+r)),void this.owner.getMsgBox().alert(SYNO.SDS.StorageAnalyzer._T("report","report_name"),t)):void 0},this),i},onAddNewitem:function(e,t){t=t.trim().toLowerCase(),this.ckeckExtName(t)&&t&&e.addItem({ext:Ext.util.Format.htmlEncode(t)})},onBeforeAddItem:function(e,t){return t=t.trim().toLowerCase(),this.ckeckExtName(t)},createItem:function(e){return this["default_"+e+"_id"]=Ext.id(),this["reportUI_file_type_"+e+"_id"]=Ext.id(),this[e+"Store"]=new Ext.data.ArrayStore({fields:["ext"]}),{xtype:"syno_fieldset",title:SYNO.SDS.StorageAnalyzer._T("report","reportUI_file_type_"+e),width:590,collapsible:!0,collapsed:!0,items:[{xtype:"syno_displayfield",value:"",id:this["default_"+e+"_id"]},{xtype:"syno_displayfield",value:_T("common","customization")+" :"},{xtype:"syno_superboxselect",id:this["reportUI_file_type_"+e+"_id"],hideLabel:!0,store:this[e+"Store"],mode:"local",width:570,allowAddNewData:!0,addNewDataOnBlur:!0,renderFieldBtns:!1,displayField:"ext",valueField:"ext",grow:!0,resizable:!0,listeners:{scope:this,newitem:this.onAddNewitem,beforeadditem:this.onBeforeAddItem}}]}},updateDialog:function(e,t){Ext.each(this.names,function(t){var i="reportUI_file_type_"+t;if(e[i]){var r=e[i].split(","),a=[];Ext.each(r,function(e){""!==e&&a.push({ext:Ext.util.Format.htmlEncode(e)})},this),Ext.getCmp(this[i+"_id"]).setValueEx(a),Ext.getCmp(this[i+"_id"]).originalValue=Ext.getCmp(this[i+"_id"]).getValue()}e[i="default_"+t]&&Ext.getCmp(this[i+"_id"]).setValue(_T("common","default")+" : "+e[i])},this),t&&"function"==typeof t&&t()},fillWebAPIParam:function(e){return Ext.each(this.names,function(t){var i="reportUI_file_type_"+t;e[i]=Ext.getCmp(this[i+"_id"]).getValue()},this),!0},isDirty:function(){return this.names.some(e=>{let t="reportUI_file_type_"+e;return Ext.getCmp(this[t+"_id"]).isDirty()})}}),Ext.define("SYNO.SDS.StorageAnalyzer.UsageReport.SettingDialog",{extend:"SYNO.SDS.ModalWindow",constructor:function(e){this.outPanel=e.outPanel,this.owner=e.owner,this.PanelBasic=new SYNO.SDS.StorageAnalyzer.UsageReport.SettingBasic({owner:this,title:SYNO.SDS.StorageAnalyzer._T("report","edit_tab_basic"),editMode:!0}),this.PanelExtName=new SYNO.SDS.StorageAnalyzer.UsageReport.SettingExtName({owner:this,title:SYNO.SDS.StorageAnalyzer._T("report","reportUI_title_file_type"),editMode:!0}),this.SettingTabPanel=new SYNO.ux.TabPanel({title:SYNO.SDS.StorageAnalyzer._T("report","title_edit"),cls:"usage-report-grid-setting-dialog",flex:1,activeTab:0,plain:!0,items:[this.PanelBasic,this.PanelExtName]});var t={width:650,height:440,layout:"fit",resizable:!1,title:SYNO.SDS.StorageAnalyzer._T("report","title_global_setting"),closable:!0,items:[this.SettingTabPanel],buttons:[{xtype:"syno_button",btnStyle:"grey",text:_T("common","cancel"),itemId:"cancel",handler:this.onCancel,scope:this},{xtype:"syno_button",btnStyle:"blue",text:_T("common","apply"),itemId:"apply",handler:this.onApply,scope:this}],listeners:{scope:this,beforeclose:this.onBeforeClose,afterrender:function(){this.setStatusBusy({text:_T("common","loading")}),this.sendWebAPI({api:"SYNO.Core.Report.Config",method:"get",version:1,scope:this,callback:function(e,t,i){e?this.updateDialog(t):(this.owner.getMsgBox().alert(SYNO.SDS.StorageAnalyzer._T("report","report_name"),_T("error","error_error_system")),this.close())}})}}};Ext.apply(t,e),this.callParent([t])},updateDialog:function(e){var t,i=this.SettingTabPanel.items.getCount();for(this.report_location_org=e.report_location,this.numOfUpdateFinish=0,t=i-1;t>=0;t--)this.SettingTabPanel.getItem(t).show(),this.SettingTabPanel.getItem(t).updateDialog(e,this.updateDialogCallback.bind(this))},updateDialogCallback:function(){this.numOfUpdateFinish=this.numOfUpdateFinish+1,this.numOfUpdateFinish===this.SettingTabPanel.items.getCount()&&this.clearStatusBusy()},setConfig:function(e){this.setStatusBusy({text:_T("common","saving")}),this.sendWebAPI({api:"SYNO.Core.Report.Config",method:"set",version:1,params:e,scope:this,callback:function(e,t,i){if(this.clearStatusBusy(),e)this.doClose(),this.outPanel.addMask(this.outPanel.WAIT_FOR_WEBAPI_RESPONSE);else{var r=SYNO.SDS.StorageAnalyzer.Utils.getErrorString(t.code);this.getMsgBox().alert(SYNO.SDS.StorageAnalyzer._T("report","report_name"),r)}}})},isDirty:function(){return this.PanelBasic.isDirty()||this.PanelExtName.isDirty()},getParams:function(){var e,t={};for(e=this.SettingTabPanel.items.getCount()-1;e>=0;e--){var i={};if(!this.SettingTabPanel.items.get(e).fillWebAPIParam(i))return null;Ext.apply(t,i)}return t},onApply:function(){let e=this.getParams();Ext.isObject(e)&&(Ext.isEmpty(this.report_location_org)||"string"!=typeof this.report_location_org||this.report_location_org===e.report_location||(e.move_report=!0),this.setConfig(e))},onBeforeClose(){const e={save:()=>this.onApply(),dontSave:()=>this.doClose(),cancel:Ext.emptyFn};return!this.isDirty()||(this.confirmLostChangePromise(e,this),!1)},onCancel:function(){this.close()}}),Ext.define("SYNO.SDS.StorageAnalyzer.UsageReport.HistoryDialog",{extend:"SYNO.SDS.ModalWindow",profile_id:null,profile_name:null,param:{},constructor:function(e){this.outPanel=e.outPanel,this.profile_id=e.profile_id,this.profile_name=e.profile_name,this.owner=e.owner,this.reportStore=new SYNO.API.JsonStore({api:"SYNO.Core.Report.History",method:"get",version:1,appWindow:this,baseParams:{id:this.profile_id},root:"histories",idProperty:"",fields:["profile_name","consumed_time","time","link"],sortInfo:{field:"time",direction:"DESC"}}),this.reportList=new SYNO.ux.GridPanel({store:this.reportStore,columns:[{header:SYNO.SDS.StorageAnalyzer._T("report","title_profile"),sortable:!0,dataIndex:"profile_name"},{header:SYNO.SDS.StorageAnalyzer._T("report","consumed_time"),sortable:!0,dataIndex:"consumed_time",scope:this,renderer:this.consumedTimeRender},{header:SYNO.SDS.StorageAnalyzer._T("report","title_report"),sortable:!0,dataIndex:"link",scope:this,renderer:this.getLink}],disableSelection:!0,listeners:{scope:this,rowclick:this.onRowClick}});var t={width:600,height:520,layout:"fit",closable:!0,title:SYNO.SDS.StorageAnalyzer._T("report","button_report_old_get"),items:this.reportList,buttons:[{xtype:"syno_button",btnStyle:"blue",text:_T("common","apply"),itemId:"apply",handler:function(){this.hide()},scope:this}]};Ext.apply(t,e),this.callParent([t]),this.setStatusBusy({text:_T("common","loading")}),this.reportStore.load(),this.clearStatusBusy()},onRowClick:function(e,t,i){var r=SYNO.SDS.StorageAnalyzer.UsageReport.Utils.CheckRelay(e.store.getAt(t).get("link"),this.outPanel);window.open(Ext.urlAppend(r),"_blank")},getLink:function(e){var t=e.split("/")[3].split("_"),i=t[0].replace(/-/g,"/"),r="";t[1]&&(r=t[1].replace(/-/g,":"));var a=String.format("{0} {1}",i,r),s=Date.parseDate(a,"Y/n/j G:i:s"),o=SYNO.SDS.DateTimeFormatter?SYNO.SDS.DateTimeFormatter(s,{type:"datetimesec"}):a;return String.format("<a>{0}</a>",o)},consumedTimeRender:function(e){if(-1===e)return"-";for(var t="",i=0,r=[{val:1,limit:60,str:_T("common","time_less_min")},{val:0,limit:60,str:" "+_T("common","time_minute"),strs:" "+_T("common","time_minutes")},{val:0,str:" "+_T("common","time_hour"),strs:" "+_T("common","time_hours")}],a=0;a<r.length;++a)if(0<e){if(!r[a].limit){r[a].val=e,i=a;break}r[a].val=e%r[a].limit,e/=r[a].limit,e=parseInt(e,10),i=a}if(0===i)t=r[i].str;else for(var s=!0,o=i;o>0;--o)s||(t+=" "),s=!1,r[o].val>1?t+=r[o].val+r[o].strs+" ":t+=r[o].val+r[o].str+" ";return t}}),Ext.define("SYNO.SDS.StorageAnalyzer.UsageReport.EditDialog",{extend:"SYNO.SDS.ModalWindow",PanelProfile:null,PanelReportType:null,PanelShare:null,PanelOption:null,profile_name:null,param:{},constructor:function(e){this.outPanel=e.outPanel,this.profile_name=e.profile_name,this.id=e.id,this.owner=e.owner,this.record=e.record,this.PanelProfile=new SYNO.SDS.StorageAnalyzer.UsageReport.StepProfile({owner:this,title:SYNO.SDS.StorageAnalyzer._T("report","edit_tab_basic"),editMode:!0,profile_name:this.profile_name}),this.PanelReportType=new SYNO.SDS.StorageAnalyzer.UsageReport.StepReportType({owner:this,editMode:!0,title:SYNO.SDS.StorageAnalyzer._T("report","edit_tab_report"),profile_name:this.profile_name}),this.PanelShare=new SYNO.SDS.StorageAnalyzer.UsageReport.StepShare({owner:this,editMode:!0,title:SYNO.SDS.StorageAnalyzer._T("report","title_share"),profile_name:this.profile_name}),this.PanelOption=new SYNO.SDS.StorageAnalyzer.UsageReport.StepOption({owner:this,title:SYNO.SDS.StorageAnalyzer._T("report","edit_tab_options"),editMode:!0,profile_name:this.profile_name,getCurrentParams:()=>this.getCurrentParams()}),this.EditTabPanel=new SYNO.ux.TabPanel({title:SYNO.SDS.StorageAnalyzer._T("report","title_edit"),flex:1,activeTab:0,plain:!0,items:[this.PanelProfile,this.PanelReportType,this.PanelShare,this.PanelOption]});var t={cls:"usage-report-edit-dialog",width:650,height:500,layout:"fit",title:SYNO.SDS.StorageAnalyzer._T("report","button_profile_edit"),closable:!0,items:[this.EditTabPanel],buttons:[{xtype:"syno_button",btnStyle:"grey",text:_T("common","cancel"),itemId:"cancel",handler:this.onCancel,scope:this},{xtype:"syno_button",btnStyle:"blue",text:_T("common","apply"),itemId:"apply",handler:this.onOk,scope:this}],listeners:{scope:this,beforeclose:this.onBeforeClose,afterrender:function(){this.setStatusBusy({text:_T("common","loading")}),this.sendWebAPI({api:"SYNO.Core.Report",method:"get",version:1,scope:this,params:{id:this.id},callback:function(e,t,i){e?this.updateDialog(t):(this.owner.getMsgBox().alert(SYNO.SDS.StorageAnalyzer._T("report","report_name"),_T("error","error_error_system")),this.hide())}})}}};Ext.apply(t,e),this.callParent([t])},updateDialog:function(e){var t,i=this.EditTabPanel.items.getCount();for(this.numOfUpdateFinish=0,t=i-1;t>=0;t--)this.EditTabPanel.getItem(t).show(),this.EditTabPanel.getItem(t).updateDialog(e,this.updateDialogCallback.bind(this))},updateDialogCallback:function(){this.numOfUpdateFinish=this.numOfUpdateFinish+1,this.numOfUpdateFinish===this.EditTabPanel.items.getCount()&&this.clearStatusBusy()},getParamsIfValidAndCheckIsDirty:function(){var e,t,i=this.EditTabPanel.items.getCount();var r=!1;for(t=0;t<i;t++){(e=this.EditTabPanel.items.get(t)).getForm().isDirty()&&(r=!0),e.typeStore&&e.typeStore.getModifiedRecords().length>0&&(r=!0),e.shareStore&&e.shareStore.getModifiedRecords().length>0&&(r=!0),e.allRadio&&!0===e.allRadio.isDirty()&&(r=!0);const[i,s,o]=e.checkValidate(!1);if(!1===i)return{isValid:!1,isDirty:r,reason:s,tabIndex:o};for(var a in e.param)Object.prototype.hasOwnProperty.call(e.param,a)&&(this.param[a]=e.param[a])}return{isValid:!0,isDirty:r,reason:null,tabIndex:null}},setConfig:function(){this.setStatusBusy({text:_T("common","saving")}),this.sendWebAPI({api:"SYNO.Core.Report",method:"set",version:1,scope:this,params:this.param,callback:function(e,t,i){if(this.clearStatusBusy(),e)this.doClose(),this.outPanel.addMask&&this.outPanel.addMask(this.outPanel.WAIT_FOR_WEBAPI_RESPONSE);else if(t.errors){var r=SYNO.SDS.StorageAnalyzer.Utils.getErrorString(t.code);4902===t.code&&(r=r+"("+t.errors.user+")"),4902==t.code?(this.EditTabPanel.setActiveTab("option"),this.PanelOption.getForm().findField("owners").markInvalid(r)):4904===t.code&&(this.EditTabPanel.setActiveTab("profile"),this.PanelProfile.getForm().findField("profile").markInvalid(r)),this.getMsgBox().alert(SYNO.SDS.StorageAnalyzer._T("report","report_name"),r)}}})},errHandlerOrSendWebapi:function(e,t,i,r){if(!e)return this.EditTabPanel.setActiveTab(r),void this.setStatusError({text:i,clear:!0});t?(this.param.id=this.id,this.record&&this.param.id!=this.param.profile_name&&(this.record.id=this.param.profile_name,this.record.set("id",this.record.id)),this.setConfig()):this.setStatusError({text:_T("error","nochange_subject"),clear:!0})},onOk:function(){const{isValid:e,isDirty:t,reason:i,tabIndex:r}=this.getParamsIfValidAndCheckIsDirty();this.errHandlerOrSendWebapi(e,t,i,r)},onBeforeClose(){const{isValid:e,isDirty:t,reason:i,tabIndex:r}=this.getParamsIfValidAndCheckIsDirty(),a={save:()=>{this.errHandlerOrSendWebapi(e,t,i,r)},dontSave:this.doClose,cancel:Ext.emptyFn};return!t||(this.confirmLostChangePromise(a,this),!1)},onCancel:function(){this.close()},getCurrentParams:function(){return this.EditTabPanel.items.items.map(e=>{return e.checkValidate(!0),e.param}).filter(Ext.isObject).reduce((e,t)=>Ext.apply(e,t),{})}}),Ext.define("SYNO.SDS.StorageAnalyzer.UsageReport.CtxMenu",{extend:"SYNO.ux.Menu",constructor:function(e){Ext.apply(this,e||{});var t=e.scope;this.itemEdit=new Ext.menu.Item({text:SYNO.SDS.StorageAnalyzer._T("report","button_profile_edit"),handler:t.onEdit,disabled:_S("demo_mode"),scope:t}),this.itemDelete=new Ext.menu.Item({text:SYNO.SDS.StorageAnalyzer._T("report","button_profile_delete"),handler:t.onDelete,disabled:_S("demo_mode"),scope:t}),this.itemGenerate=new Ext.menu.Item({text:SYNO.SDS.StorageAnalyzer._T("report","button_report_create_now"),handler:t.onGenerateReport,disabled:_S("demo_mode"),scope:t}),this.itemHistory=new Ext.menu.Item({text:SYNO.SDS.StorageAnalyzer._T("report","button_report_old_get"),handler:t.onGetOldReport,scope:t}),this.callParent([Ext.apply(e,{items:[this.itemEdit,this.itemDelete,"-",this.itemGenerate,this.itemHistory]})])},setMenuStatus:function(e){"collect_data"===e?(this.itemEdit.setDisabled(!0),this.itemGenerate.setDisabled(!0)):(this.itemEdit.setDisabled(!1),this.itemGenerate.setDisabled(!1))},setEditMenuDisabled:function(e){this.itemEdit.setDisabled(e)},setGenerateMenuDisabled:function(e){this.itemGenerate.setDisabled(e)}}),Ext.define("SYNO.SDS.StorageAnalyzer.UsageReport.Utils",{statics:{CheckRelay:function(e,t){var i=null,r=0,a=0;if(!Ext.isDefined(t))return e;try{i=t.findAppWindow().openConfig.cms_ds_data}catch(t){return e}return i&&(r=i.http_port,e=0===(a=i.https_port)?"http://"+i.host+":"+r+e:"https://"+i.host+":"+a+e),e}}}),Ext.ns("SYNO.SDS.StorageAnalyzer"),window.SYNO.SDS.StorageAnalyzer._T=function(e,t){try{return _TT("SYNO.SDS.StorageAnalyzer.Application",e,t)||_T(e,t)}catch(i){return _T(e,t)}},window.SYNO.SDS.StorageAnalyzer._T_Formatter=function(e,t,i){if(!Ext.isArray(i))return SYNO.SDS.StorageAnalyzer._T(e,t);const r=i.length;let a,s;1===r?(a="sing",s=!0):r<=5?(a="pl",s=!0):(a="count",s=!1);const o=String.format("{0}_{1}",t,a);let n=String.format(SYNO.SDS.StorageAnalyzer._T(e,o),r);return s&&(n=String.format("{0}<br>{1}",n,Ext.util.Format.htmlEncode(i.join(", ")))),n},window.SYNO.SDS.StorageAnalyzer.ErrorString={4900:_T("error","error_invalid"),4901:_T("error","error_error_system"),4902:_T("user","no_such_user"),4903:SYNO.SDS.StorageAnalyzer._T("report","err_dest_share_not_exist"),4904:_T("error","error_file_exist"),4905:_T("error","error_space_not_enough"),4907:SYNO.SDS.StorageAnalyzer._T("report","err_folder_already_exist")},Ext.define("SYNO.SDS.StorageAnalyzer.Utils",{statics:{getErrorString:function(e){return Ext.isNumber(e)?e<400?SYNO.API.getErrorString(e):e in SYNO.SDS.StorageAnalyzer.ErrorString?SYNO.SDS.StorageAnalyzer.ErrorString[e]:_T("error","error_error"):_T("error","error_error")},OpenGlobalSetting:function(e,t,i){this.OpenDialog(SYNO.SDS.StorageAnalyzer.UsageReport.SettingDialog,e,t,i)},OpenProfileWizard:function(e,t,i){this.OpenDialog(SYNO.SDS.StorageAnalyzer.UsageReport.ProfileWizard,e,t,i)},OpenEditDialog:function(e,t,i){this.OpenDialog(SYNO.SDS.StorageAnalyzer.UsageReport.EditDialog,e,t,i)},OpenHistoryDialog:function(e,t,i){this.OpenDialog(SYNO.SDS.StorageAnalyzer.UsageReport.HistoryDialog,e,t,i)},OpenDialog:function(e,t,i,r){var a=new e(t);Ext.isDefined(i)&&a.on("hide",i,r||this),a.open(),a=null},CreateFileRangeStore:function(e){return new Ext.data.SimpleStore({autoDestroy:!0,fields:["value","display"],data:[["any",SYNO.SDS.StorageAnalyzer._T("report","search_any")],[void 0!==e?e+"_gt":"size_gt",SYNO.SDS.StorageAnalyzer._T("report","size_greater")],[void 0!==e?e+"_lt":"size_lt",SYNO.SDS.StorageAnalyzer._T("report","size_less")]]})},CreateUnitStore:function(){return new Ext.data.SimpleStore({autoDestroy:!0,fields:["value","display"],data:[["MB","MB"],["GB","GB"],["TB","TB"]]})},CreateRangeFilter:function(e){return new SYNO.ux.ComboBox(Ext.apply({editable:!1,mode:"local",store:void 0!==e.filterPrefix?this.CreateFileRangeStore(e.filterPrefix):this.CreateFileRangeStore(),displayField:"display",valueField:"value",triggerAction:"all",value:"any",tpl:'<tpl for="."><div class="x-combo-list-item" ext:qtip="{display}">{display}</div></tpl>',width:190},e))},CreateUnitFilter:function(e){return new SYNO.ux.ComboBox(Ext.apply({width:58,displayField:"display",valueField:"value",value:"MB",store:this.CreateUnitStore(),disabled:!0},e))},ColorArray:["#0086E5","#32B7F9","#FA575D","#FA9200","#FABB00","#1CA600","#99CC00","#B06DF2","#1DBF89","#BF9E7C"],fileSizeRenderer:function(e,t){var i=Ext.util.Format.htmlEncode(Ext.util.Format.fileSize(e));return t.attr='ext:qtip="'+Ext.util.Format.htmlEncode(i)+'"',i},timeRenderer:function(e,t){var i=new Date(1e3*e),r=SYNO.SDS.DateTimeFormatter?SYNO.SDS.DateTimeFormatter(i,{type:"datetimesec"}):i.toLocaleString(),a=Ext.util.Format.htmlEncode(r);return t.attr='ext:qtip="'+Ext.util.Format.htmlEncode(a)+'"',a},applyQtip:function(e,t){Ext.isFunction(e.set)&&e.set({"ext:qtip":t})},removeQtip:function(e){Ext.isElement(e.dom)&&e.dom.removeAttribute("ext:qtip")}}}),Ext.define("SYNO.SDS.StorageAnalyzer.QuickTip",{extend:Ext.QuickTip,tagConfig:{namespace:"",attribute:"synoqtip",width:"qwidth",target:"target",title:"qtitle",hide:"hide",cls:"qclass",align:"qalign",anchor:"anchor"}}),SYNO.SDS.StorageAnalyzer.QuickTips=function(){var e,t=!1;return{init:function(i){if(!e){if(!Ext.isReady)return void Ext.onReady(function(){SYNO.SDS.StorageAnalyzer.QuickTips.init(i)});e=new SYNO.SDS.StorageAnalyzer.QuickTip({elements:"header,body",disabled:t}),!1!==i&&e.render(Ext.getBody())}},ddDisable:function(){e&&!t&&e.disable()},ddEnable:function(){e&&!t&&e.enable()},enable:function(){e&&e.enable(),t=!1},disable:function(){e&&e.disable(),t=!0},isEnabled:function(){return void 0!==e&&!e.disabled},getQuickTip:function(){return e},register:function(){e.register.apply(e,arguments)},unregister:function(){e.unregister.apply(e,arguments)},tips:function(){e.register.apply(e,arguments)}}}(),Ext.define("SYNO.SDS.StorageAnalyzer.Chart",{extend:"Ext.BoxComponent",d3:SYNO.SDS.DataDrivenDocuments.DrawHelper,constructor:function(){var e=this,t=e.svgConfig||{width:e.width,height:e.height};e.svgWidth=Ext.isNumber(t.width)?t.width:"100%",e.svgHeight=Ext.isNumber(t.height)?t.height:"100%",e.svgMargins=e.svgConfig&&e.svgConfig.margin?e.svgConfig.margin:{top:18,bottom:26,left:35,right:20},e.callParent(arguments)},innerFormatValue:function(e){return Ext.isNumber(e)?e:0},onRender:function(e,t){var i=this,r=this.d3;i.callParent(arguments),i.svg=r.select("#"+i.id).append("svg").attr("width",i.svgWidth).attr("height",i.svgHeight),i.svgGraphic=i.svg.append("g").attr("transform","translate("+i.innerFormatValue(i.svgMargins.left)+","+i.innerFormatValue(i.svgMargins.top)+")")},afterRender:function(){this.callParent(arguments),this.loadData()},onResize:function(e,t,i,r){this.callParent(arguments),this.draw()},loadData:Ext.emptyFn,draw:Ext.emptyFn}),Ext.define("SYNO.SDS.StorageAnalyzer.VolumeUsage.BarChart",{extend:"SYNO.SDS.StorageAnalyzer.Chart",paddingX:4,cls:"volume-usage-bar-chart",svgConfig:{margin:{top:18,bottom:26,left:70,right:25}},loadData:function(e){if(Ext.isDefined(e)){this.innerData=e.analyses&&e.analyses.length>0?e.analyses[e.analyses.length-1].volumes:[],this.draw(this.innerData)}},draw:function(e){var t,i=this,r=this.d3,a=i.svgMargins,s=i.getWidth()-i.innerFormatValue(a.left)-i.innerFormatValue(a.right),o=i.getHeight()-i.innerFormatValue(a.top)-i.innerFormatValue(a.bottom);if(e=e||i.innerData){i.svgGraphic&&i.svgGraphic.remove(),i.svgGraphic=i.svg.append("g").attr("transform","translate("+i.innerFormatValue(i.svgMargins.left)+","+i.innerFormatValue(i.svgMargins.top)+")"),t=i.svgGraphic;var n=r.scale.linear().range([0+i.paddingX,s]),l=r.scale.ordinal().rangeRoundBands([0,o],.1),h=r.scale.ordinal().range(["#0086E5","#FABB00","#1CA600","#FA575D","#32B7F9","#FA9200","#99CC00","#B06DF2","#1DBF89","#BF9E7C"]),d=r.max(e,function(e){return e.size_used}),c=1073741824*Math.max(Math.floor(d/1073741824/4),1)||d,p=r.svg.axis().innerTickSize([4]).tickPadding([4]).outerTickSize([0]).tickFormat(function(e,t){return 0===t?"0":Ext.util.Format.fileSize(e)}).scale(n).orient("bottom").tickValues(r.range(0,d,c)),u=r.svg.axis().innerTickSize([0]).outerTickSize([0]).tickPadding([5]).scale(l).orient("left").tickFormat(function(e,t){return SYNO.SDS.Utils.StorageUtils.VolumeNameRenderer(e)});h.domain(e.map(function(e){return e.name})),n.domain([0,r.max(e,function(e){return e.size_used})]),l.domain(e.map(function(e){return e.name})),t.append("g").attr("class","x axis").attr("transform","translate(0,"+o+")").call(p),t.append("g").attr("class","y axis").call(u),i.drawGrid(t,{width:s,height:o,x:n,y:l,maxUsed:d,interval:c}),this.tooltip||(this.tooltip=i.el.createChild({cls:"tooltip"}));var m=this.tooltip,f=Math.min(40,l.rangeBand()),g=(l.rangeBand()-f)/2;t.selectAll(".bar").data(e).enter().append("rect").attr("class","bar").attr("x",i.paddingX).attr("y",function(e){return l(e.name)+g}).attr("height",f).attr("fill",function(e){return h(e.name)}).attr("width",function(e){return Math.abs(n(e.size_used)-n(0))}),t.selectAll(".bar").on("mouseover",function(e){m.update(Ext.util.Format.fileSize(e.size_used)).addClass("show").setStyle({left:i.innerFormatValue(a.left)+8+"px",top:i.innerFormatValue(a.top)+l(e.name)+g+f/2-12+"px"})}).on("mouseout",function(e){m.removeClass("show")}),t.select(".y.axis").selectAll(".tick").data(e).on("mouseover",function(e){m.update(e.description).addClass("show").setStyle({left:i.innerFormatValue(a.left)+8+"px",top:i.innerFormatValue(a.top)+l(e.name)+g+f/2-12+"px"})}).on("mouseout",function(e){m.removeClass("show")})}},drawGrid:function(e,t){var i=this.d3,r=i.svg.axis().scale(t.x).orient("bottom");e.append("g").attr("class","grid").attr("transform","translate(0,"+t.height+")").call(r.innerTickSize([-t.height]).tickPadding([0]).outerTickSize([0]).tickFormat("").tickValues(i.range(0,t.maxUsed,t.interval)))},destroy:function(){this.tooltip&&Ext.destroy(this.tooltip),this.callParent(arguments)}}),Ext.define("SYNO.SDS.StorageAnalyzer.VolumeUsage.InfoPanel",{extend:"Ext.BoxComponent",constructor:function(e){e=Ext.apply(e,{baseCls:"volume-usage-info"}),this.callParent(arguments)},onRender:function(e,t){var i=this,r=new Ext.Template('<div class="{cls}">','<div><span class="color"></span><div class="title selectabletext"></div></div>','<div class="x-clear"></div>','<div class="wrap">','<div class="chart"></div>','<div class="content selectabletext">','<div class="name"></div>','<div class="description"></div>','<div class="used"></div>','<div class="available"></div>','<div class="capacity"></div>',"</div>",'<div class="x-clear"></div>',"</div>","</div>");i.el=t?r.insertBefore(t,{cls:i.baseCls},!0):r.append(e,{cls:i.baseCls},!0),i.id&&(i.el.dom.id=i.id),i.chart=i.el.child("div.chart"),i.chart=new SYNO.SDS.Utils.canvas.ColorCircleGradient(Ext.apply({width:96,height:96,radius:48,gradientWidth:16,canvasConfig:{height:96,width:96}},{renderTo:i.chart,value:0})),i.titleComponent=i.el.child("div.title"),i.colorComponent=i.el.child("span.color"),i.nameComponent=i.el.child("div.name"),i.descComponent=i.el.child("div.description"),i.usedComponent=i.el.child("div.used"),i.availableComponent=i.el.child("div.available"),i.capacityComponent=i.el.child("div.capacity"),i.callParent(arguments)},getTotalSizeDispalyString:function(e){return String.format("{0}{1} {2}",_T("volume","volume_totalsize"),_T("common","colon"),e||0)},getFreeSizeDispalyString:function(e){return String.format("{0}{1} {2}",_T("volume","volume_freesize"),_T("common","colon"),e||0)},getUsedSizeDispalyString:function(e){return String.format("{0}{1} {2}",_T("volume","volume_usedsize"),_T("common","colon"),e||0)},afterRender:function(){var e=this;e.callParent(arguments),e.titleComponent.update("Date"),e.nameComponent.update(""),e.descComponent.update(""),e.usedComponent.update(e.getUsedSizeDispalyString(0)),e.availableComponent.update(e.getFreeSizeDispalyString(0)),e.capacityComponent.update(e.getTotalSizeDispalyString(0))},loadData:function(e){var t=this;t.chart.draw(Ext.isNumber(e.percentage)?e.percentage:parseFloat(e.percentage)),t.colorComponent.setStyle({background:e.color}),t.titleComponent.update(e.date),t.nameComponent.update(e.name||""),t.descComponent.update(e.description||""),t.usedComponent.update(t.getUsedSizeDispalyString(e.used)),t.availableComponent.update(t.getFreeSizeDispalyString(e.available)),t.capacityComponent.update(t.getTotalSizeDispalyString(e.total))},showAt:function(e){var t=this;e=t.el.adjustForConstraints(e),t.el.setXY(e),t.runHideTask&&t.runHideTask.cancel(),t.el.show(),t.el.addClass("show")},hideByOpacity:function(){this.el.removeClass("show"),this.runTask("runHideTask",this.delayedHide,300)},delayedHide:function(){this.el.hide()},destroy:function(){this.removeDelayedTask("runHideTask"),this.callParent(arguments)}}),Ext.define("SYNO.SDS.StorageAnalyzer.VolumeUsage.LineChart",{extend:"SYNO.SDS.StorageAnalyzer.Chart",cls:"volume-usage-line-chart",paddingX:4,pointerOffset:[20,20],svgConfig:{margin:{top:18,bottom:26,left:40,right:25}},loadData:function(e){if(Ext.isDefined(e)){var t=this,i=this.d3.time.format("%Y%m%d%H%M").parse,r="",a=[];t.innerData=e.analyses,Ext.each(t.innerData,function(e){e.date=i(new Date(1e3*e.time).format("YmdHi")),Ext.each(e.volumes,function(t){r=t.name.replace("/",""),e[r]={percentage:(t.size_used/t.size_total).toFixed(5),size_used:t.size_used,size_total:t.size_total,description:t.description},-1===a.indexOf(r)&&a.push(r)},t)},t),t.innerData.volumeNames=a,t.draw(t.innerData)}},getVolumeDataArray:function(e,t){var i=[];return Ext.each(e,function(e){Ext.isDefined(e[t])&&i.push({date:e.date,name:t,description:e[t].description,percentage:e[t].percentage,size_used:e[t].size_used,size_total:e[t].size_total})},this),i},draw:function(e){var t,i=this,r=this.d3,a=i.svgMargins,s=i.getWidth()-i.innerFormatValue(a.left)-i.innerFormatValue(a.right),o=i.getHeight()-i.innerFormatValue(a.top)-i.innerFormatValue(a.bottom);if(e=e||i.innerData){i.svgGraphic&&i.svgGraphic.remove(),i.svgGraphic=i.svg.append("g").attr("transform","translate("+i.innerFormatValue(i.svgMargins.left)+","+i.innerFormatValue(i.svgMargins.top)+")"),t=i.svgGraphic;var n=r.time.scale().range([0+i.paddingX,s]),l=r.scale.linear().range([o,0]),h=SYNO.SDS.StorageAnalyzer.Utils.ColorArray,d=r.scale.ordinal().range(h),c=r.svg.axis().innerTickSize([4]).tickPadding([4]).outerTickSize([0]).tickFormat(function(e,t){const i=new Date(e),r=i.format("m/d");return SYNO.SDS.DateTimeFormatter?SYNO.SDS.DateTimeFormatter(i,{type:"monthdate"}):r}).scale(n).orient("bottom").ticks(r.time.day,1),p=r.svg.line().x(function(e){return n(e.date)}).y(function(e){return l(e.percentage)});d.domain(e.volumeNames);var u=d.domain().map(function(t){return{name:t,values:i.getVolumeDataArray(e,t)}});n.domain(r.extent(e,function(e){return e.date}));var m=r.min(u,function(e){return r.min(e.values,function(e){return e.percentage})}),f=r.max(u,function(e){return r.max(e.values,function(e){return e.percentage})}),g=Math.floor(100*(f-m)/4)/100||5*Math.ceil(100*f/5)/100,S=m===f?0:Math.floor(m/g)*g,_=Math.min(Math.ceil(f/g)*g,1)+1e-5,y=r.svg.axis().innerTickSize([0]).outerTickSize([0]).tickPadding([5]).tickFormat(function(e){return Math.ceil(100*e)+"%"}).scale(l).orient("left").tickValues(r.range(S,_,g));l.domain([S,_]),t.append("g").attr("class","x axis").attr("transform","translate(0,"+o+")").call(c),t.append("g").attr("class","y axis").call(y),i.drawGrid(t,{width:s,height:o,x:n,y:l,minY:S,maxPercentage:_,interval:g}),i.createCircle(t,{volumes:u,color:d});var x=t.selectAll(".volume").data(u).enter().insert("g",".focus").attr("class","volume");x.append("path").attr("class","line").attr("d",function(e){return p(e.values)}).style("stroke",function(e){return d(e.name)}),i.overlay=x.append("rect").attr("class","overlay").attr("transform","translate(-5, -5)").attr("width",s+10).attr("height",o+10).on("mouseover",i.onMouseOver.createDelegate(i)).on("mouseout",i.onMouseOut.createDelegate(i)).on("mousemove",function(){var e=n.invert(r.mouse(this)[0]);i.circles.attr("transform",function(t){var i,r,a,s;return Ext.each(t.values,function(t,s){var o=Math.abs(e-t.date);(!Ext.isDefined(r)||r>=o)&&(i=t.date,r=o,a=s)}),this.volumeData=Ext.isDefined(a)?t.values[a]:{},s=Ext.isDefined(a)?l(t.values[a].percentage):999999,"translate("+n(i)+","+s+")"})})}},createCircle:function(e,t){var i=this,r=i.appWin,a=t.color,s=t.volumes,o=this.getInfoPanel(),n=e.append("g").attr("class","focus"),l=i.pointerOffset;i.focus=n,i.circles=n.selectAll("circle").data(s).enter().append("circle"),i.circles.attr("class","circle").attr("r",4).attr("fill",function(e){return a(e.name)}).on("mouseover",function(){var e=Ext.fly(this).getXY(),t=this.volumeData,i=r.getEl().getZIndex();if(Ext.isObject(t)){var a={percentage:t.percentage,total:Ext.util.Format.fileSize(t.size_total),name:SYNO.SDS.Utils.StorageUtils.VolumeNameRenderer(t.name),description:Ext.util.Format.htmlEncode(t.description),available:Ext.util.Format.fileSize(t.size_total-t.size_used),date:new Date(t.date).format("Y-m-d H:i"),used:Ext.util.Format.fileSize(t.size_used),color:Ext.fly(this).getAttribute("fill")};o.getEl().setStyle("z-index",Ext.isNumber(i)?i+5:2147483647),o.loadData(a),o.showAt([e[0]+l[0],e[1]+l[1]]),this.volumeData=null}}).on("mouseout",i.onMouseOutDot.createDelegate(i))},getInfoPanel:function(){return this.infoPanel||(this.infoPanel=new SYNO.SDS.StorageAnalyzer.VolumeUsage.InfoPanel({renderTo:Ext.getBody()}),this.infoPanel.getEl().hide()),this.infoPanel},drawGrid:function(e,t){var i=this.d3,r=i.svg.axis().scale(t.y).orient("left");e.append("g").attr("class","grid").attr("transform","translate("+this.paddingX+", 0)").call(r.tickSize(-t.width+this.paddingX,0,0).tickFormat("").tickValues(i.range(t.minY,t.maxPercentage,t.interval)))},onMouseOutDot:function(){this.getInfoPanel().hideByOpacity()},onMouseOut:function(){this.focus.classed("show",!1)},onMouseOver:function(){this.focus.classed("show",!0)},destroy:function(){this.infoPanel&&(this.infoPanel.destroy(),this.infoPanel=null),this.callParent(arguments)}}),Ext.define("SYNO.SDS.StorageAnalyzer.UsageReport.VolumeUsage.Grid",{extend:"SYNO.ux.GridPanel",constructor:function(e){this.callParent([this.fillConfig(e)])},fillConfig:function(e){var t={cls:"volume-usage-grid",store:this.createStore(),colModel:this.getCM(),disableSelection:!0,view:new SYNO.ux.FleXcroll.grid.BufferView({trackResetOnLoad:!1,cacheSize:20,scrollDelay:!1}),listeners:{scope:this,activate:{fn:function(){this.getView().updateScroller()}}}};return Ext.apply(t,e),t},createStore:function(){return new Ext.data.Store({proxy:new Ext.data.MemoryProxy([]),reader:new Ext.data.JsonReader({root:"volumes",id:"name"},["name","size_total","size_used","description"]),autoDestroy:!0,remoteSort:!1})},getCM:function(){if(this.cm)return this.cm;var e=new Ext.grid.ColumnModel({columns:[{header:SYNO.SDS.StorageAnalyzer._T("report","reportUI_title_volume"),dataIndex:"name",width:50,align:"left",renderer:this.volumeNameRenderer},{header:_T("share","share_comment"),dataIndex:"description",width:50,align:"left",renderer:this.volumeDescRenderer},{header:_T("status","status_disk_total_size"),dataIndex:"size_total",width:50,renderer:this.fileSizeRender},{header:SYNO.SDS.StorageAnalyzer._T("report","reportUI_title_used"),dataIndex:"size_used",width:50,renderer:this.fileSizeRender},{header:SYNO.SDS.StorageAnalyzer._T("report","reportUI_title_percent"),width:100,renderer:this.percentageRender}],defaults:{sortable:!0,menuDisabled:!0}});return this.cm=e,e},volumeNameRenderer:function(e,t,i,r,a,s){var o=Ext.util.Format.htmlEncode(SYNO.SDS.Utils.StorageUtils.VolumeNameRenderer(e));return t.attr='ext:qtip="'+Ext.util.Format.htmlEncode(o)+'"',o},volumeDescRenderer:function(e,t,i,r,a,s){var o=Ext.util.Format.htmlEncode(e);return t.attr='ext:qtip="'+Ext.util.Format.htmlEncode(o)+'"',o},fileSizeRender:function(e,t,i,r,a,s){var o=Ext.util.Format.htmlEncode(Ext.util.Format.fileSize(e));return t.attr='ext:qtip="'+Ext.util.Format.htmlEncode(o)+'"',o},percentageRender:function(e,t,i,r,a,s){var o=0===i.get("size_total")?"-":(100*Math.min(i.get("size_used")/i.get("size_total"),1)).toFixed(2)+"%",n=Ext.util.Format.htmlEncode(o),l=Ext.util.Format.htmlEncode(n);return t.attr='ext:qtip="'+l+'"',String.format('<div class="percentage-wrapper" ext:qtip="{1}"><div class="percentage-outer" ext:qtip="{1}"><div class="percentage-inner" ext:qtip="{1}" style="width:{0}"></div></div><span class="blue-status" ext:qtip="{1}">{0}</span></div>',n,l)},loadData:function(e){var t=e.analyses||[];this.getStore().loadData(t.length>0?t[0]:{volumes:[]})}}),Ext.ns("SYNO.SDS.StorageAnalyzer"),SYNO.SDS.StorageAnalyzer.PathBar=Ext.extend(Ext.util.Observable,{constructor:function(e){this.init(e.webfm),SYNO.SDS.StorageAnalyzer.PathBar.superclass.constructor.apply(this,arguments),this.addEvents("updatepath")},init:function(e){return this.webfm=e,this.tbPanel=new SYNO.SDS.StorageAnalyzer.PathButtonsPanel({cls:"ux-pathtoolbar",webfm:this.webfm}),this},addPathButton:function(e,t,i,r,a,s){return this.tbPanel.addButton(e,t,i,r,a,s,this.webfm)},updatePathButton:function(e,t,i,r,a){return this.tbPanel.updateButton(e,t,i,r,a)},addPathButtons:function(e){for(var t=Math.max(this.tbPanel.items.length,e.length),i=e.length-1,r=0;r<t;r++)if(r<this.tbPanel.items.length&&r<e.length)this.updatePathButton(r,e[r].text,e[r].tooltip,e[r].path,r===i);else{if(!(r<e.length)){this.removePathButtons(r,t);break}this.addPathButton(this.tbPanel.items.length,e[r].text,e[r].tooltip,e[r].path,0===r,r===i)}this.tbPanel.setActiveButton(this.tbPanel.items[this.tbPanel.items.length-1]),this.fireEvent("updatepath",this)},removePathButtons:function(e,t){this.tbPanel.removeButtons(e,t)}}),SYNO.SDS.StorageAnalyzer.PathButtonsPanel=Ext.extend(Ext.BoxComponent,{activeButton:null,enableScroll:!0,scrollRepeatInterval:400,scrollDuration:.35,buttonWidthSet:!1,allowDomMove:!1,onRender:function(){SYNO.SDS.StorageAnalyzer.PathButtonsPanel.superclass.onRender.call(this,arguments),this.mon(this,"resize",this.delegateUpdates),this.items=[],this.selMenu=new SYNO.ux.Menu({items:[],listeners:{click:{fn:function(e,t){void 0!==t.path&&this.webfm.onGoToPathWithDir(t.path)},scope:this}}}),this.stripWrap=Ext.get(this.el).createChild({cls:"ux-pathbuttons-strip-wrap",cn:{tag:"ul",cls:"ux-pathbuttons-strip"}}),this.stripSpacer=Ext.get(this.el).createChild({cls:"ux-pathbuttons-strip-spacer"}),this.strip=new Ext.Element(this.stripWrap.dom.firstChild),this.edge=this.strip.createChild({tag:"li",cls:"ux-pathbuttons-edge"}),this.strip.createChild({cls:"x-clear"})},addButton:function(e,t,i,r,a,s,o){var n=this.strip.createChild({tag:"li"},this.edge),l=new SYNO.SDS.StorageAnalyzer.PathBar.PathButton(n,e,t,i,r,a,s,o);return this.items.push(l),this.buttonWidthSet||(this.lastButtonWidth=l.container.getWidth()),this.addManagedComponent(l),l},updateButton:function(e,t,i,r,a){this.items[e].updateButton(t,i,r,a)},removeButtons:function(e,t){for(var i,r,a=e;a<t;a++)r=this.items[a],i=document.getElementById(r.container.id),this.removeManagedComponent(r),r.destroy(),i.parentNode.removeChild(i);var s=[];for(a=0;a<e;a++)s.push(this.items[a]);this.items=s,this.delegateUpdates()},setActiveButton:function(e){this.activeButton=e,this.delegateUpdates()},delegateUpdates:function(){this.enableScroll&&this.rendered&&this.autoScroll()},autoScroll:function(){var e=this.items.length,t=this.el.dom.clientWidth,i=this.stripWrap,r=i.dom.offsetWidth,a=this.getScrollPos(),s=this.edge.getOffsetsTo(this.stripWrap)[0]+a;if(!(!this.enableScroll||e<1||r<20)){i.setWidth(t);var o=1==this.items.length;s<=t||o?(i.dom.scrollLeft=0,this.showSelBtn&&(this.showSelBtn=!1,this.el.removeClass("x-pathbuttons-selection-btn-displayed"),this.menuBtn.hide())):(this.showSelBtn||this.el.addClass("x-pathbuttons-selection-btn-displayed"),t-=i.getMargins("lr"),i.setWidth(t>20?t:20),this.showSelBtn||(this.menuBtn?this.menuBtn.show():this.createMenuBtn()),this.showSelBtn=!0,this.updateScrollandSelMenu())}},createMenuBtn:function(){var e=this.el.dom.offsetHeight,t=this.el.insertFirst({cls:"ux-pathbuttons-selection-btn"});t.setHeight(e),t.addClassOnOver("ux-pathbuttons-selection-btn-over"),t.addClassOnClick("ux-pathbuttons-selection-btn-click"),this.leftRepeater=new Ext.util.ClickRepeater(t,{interval:this.scrollRepeatInterval,handler:this.onShowMenu,scope:this}),this.menuBtn=t},onShowMenu:function(){var e=this.menuBtn.getXY();this.selMenu.isVisible()?this.selMenu.hide():this.selMenu.showAt([e[0]+-5,e[1]+28])},getScrollPos:function(){return parseInt(this.stripWrap.dom.scrollLeft,10)||0},updateScrollandSelMenu:function(){for(var e=this.items.length-1,t=0,i=this.stripWrap.getWidth(),r=e;r>=0&&!((t+=this.items[r].el.child(".ux-pathbutton-center").getWidth()+14)>i);r--);r==e&&(r-=1),this.selMenu.removeAll();for(var a=0;a<=r;a++)this.selMenu.addItem({path:this.items[a].path,text:Ext.util.Format.htmlDecode(this.items[a].text),cls:0===a?"storage-report-dataview-first-menu-item":""});var s=this.items[r+1],o=this.stripWrap.dom.scrollLeft,n=s.el.getOffsetsTo(this.stripWrap)[0]+o;this.stripWrap.scrollTo("left",n-14)}}),SYNO.SDS.StorageAnalyzer.PathBar.PathButton=function(e,t,i,r,a,s,o,n){this.webfm=n;var l=s?this.firstBtnCls:"",h=o?this.lastBtnCls:"";SYNO.SDS.StorageAnalyzer.PathBar.PathButton.superclass.constructor.call(this,{text:i,itemId:t,renderTo:e,tooltip:r,clickEvent:"mousedown",tabIndex:-1,listeners:{click:{fn:function(){var e=this.getPath();void 0!==e&&this.webfm.onGoToPathWithDir(e)},scope:this}},template:new Ext.Template('<table cellspacing="0" class="x-btn '+l+" "+h+' {3}"><tbody><tr>','<td class="ux-pathbutton-left"></td>','<td class="ux-pathbutton-center"><em class="{5} unselectable="on">','<button class="x-btn-text {2}" type="{1}" style="height:18px;">{0}</button>',"</em></td>",'<td class="ux-pathbutton-right"></td>',"</tr></tbody></table>")}),this.setPath(a)},Ext.extend(SYNO.SDS.StorageAnalyzer.PathBar.PathButton,Ext.Button,{firstBtnCls:"x-first-btn",lastBtnCls:"x-last-btn",setPath:function(e){this.path=e},getPath:function(){return this.path},updateButton:function(e,t,i,r){this.setPath(i),this.setText(e),this.setTooltip(t),r?this.addClass(this.lastBtnCls):this.removeClass(this.lastBtnCls)}}),Ext.define("SYNO.SDS.StorageAnalyzer.DetailView.Panel",{extend:"SYNO.ux.Panel",constructor:function(e){var t={tbar:this.createTopToolBar(e.tbarConfig),listeners:{activate:this.onActivate,deactivate:this.onDeactivate,afterlayout:function(){this.pathBar&&this.pathBar.tbPanel.getEl().setStyle("overflow","hidden")},scope:this}};Ext.apply(t,e),this.callParent([t])},getTimeVersion:function(e){return this.appWin.detailView.timeVersion[e]},getTimeLine:function(){return this.appWin.detailView.timeLine},getRecord:function(){return this.appWin.detailView.record},createTopToolBar:function(e){if(!e)return null;var t=[];return!0===e.pathBar&&(this.pathBar=new SYNO.SDS.StorageAnalyzer.PathBar({webfm:this}),t.push(this.pathBar.tbPanel)),e.optFilter&&(Ext.isObject(e.optFilter)?t.push(e.optFilter):Ext.isArray(e.optFilter)&&t.concat(e.optFilter)),e.fileSizeFilter&&(Ext.isArray(e.fileSizeFilter)?t.concat(e.fileSizeFilter):Ext.isBoolean(e.fileSizeFilter)&&(this.rangeField=SYNO.SDS.StorageAnalyzer.Utils.CreateRangeFilter({filterPrefix:e.rangeFiltePrefix,listeners:{select:function(e){var t="any"===e.getValue();t&&this.numField.reset(),this.numField.setDisabled(t),this.quotaUnitField.setDisabled(t),this.filterResult()},scope:this}}),this.numField=new SYNO.ux.NumberField({width:45,vtype:"number",enableKeyEvents:!0,disabled:!0,maxValue:Math.pow(2,13),validationEvent:"keyup",listeners:{keyup:{buffer:300,fn:function(){this.numField.getValue()<=this.numField.maxValue&&this.filterResult()},scope:this}}}),this.quotaUnitField=SYNO.SDS.StorageAnalyzer.Utils.CreateUnitFilter({listeners:{select:function(){this.filterResult()},scope:this}}),t.push(this.rangeField),t.push(this.numField),t.push(this.quotaUnitField))),e.shareFilter&&(Ext.isObject(e.shareFilter)?this.shareField=e.shareFilter:Ext.isBoolean(e.shareFilter)&&(this.shareField=new SYNO.ux.ComboBox({width:169,displayField:"display",valueField:"value",value:"all_shares",tpl:'<tpl for="."><div class="x-combo-list-item" ext:qtip="{display}">{display}</div></tpl>',store:new Ext.data.ArrayStore({fields:["value","display","sortable"],data:[["all_shares",_T("common","show_all"),0]]}),listeners:{select:function(){this.filterResult()},scope:this}})),t.push(this.shareField)),!0===e.recycleFilter&&(this.recycleFilter=new Ext.menu.CheckItem({text:SYNO.SDS.StorageAnalyzer._T("report","exclude_recycle"),checked:!1,hideOnClick:!1,getValue:function(){return this.checked},checkHandler:this.filterResult.createDelegate(this)}),this.toolBtn=new SYNO.ux.Button({text:"",cls:"storage-report-toolbtn",menu:new SYNO.ux.Menu({hideOnClick:!1,cls:"syno-ux-groupcheck-menu",items:this.recycleFilter})}),t.push(this.toolBtn)),Ext.isObject(e.customItem)&&t.push(e.customItem),0===t.length?null:{xtype:"syno_toolbar",cls:"toolbar-with-no-border",items:[{xtype:"syno_compositefield",hideLabel:!0,defaultMargins:"0 6 0 0",itemId:"filter_options",items:t}]}},sortShareField:function(){this.shareField.store.multiSort([{field:"sortable",direction:"ASC"},{field:"display",direction:"ASC"}])},adjustToFileSize:function(e){switch(e=e||0,this.quotaUnitField.getValue()){case"MB":e=1024*e*1024;break;case"GB":e=1024*e*1024*1024;break;case"TB":e=1024*e*1024*1024*1024}return e},resetAllFields:function(){var e=this.tbarConfig;e.optFilter&&(Ext.isObject(e.optFilter)?e.optFilter.reset():Ext.isArray(e.optFilter)&&e.optFilter.each(function(e){e.reset()})),e.fileSizeFilter&&(!0===e.fileSizeFilter?(this.rangeField.reset(),this.numField.reset(),this.quotaUnitField.reset(),this.numField.disable(),this.quotaUnitField.disable()):Ext.isArray(e.fileSizeFilter)&&e.fileSizeFilter.each(function(e){e.reset()})),e.shareFilter&&this.shareField.reset(),e.recycleFilter&&(this.recycleFilter.enable(),this.recycleFilter.setChecked(!1))},onActivate:function(){var e=this.getTimeLine(),t=this.getRecord();e&&t.time&&(this.resetAllFields(),this.loadProfile())},refreshData:function(e){this.filterResult()},onDataChanged:function(e){e.data.items.length<=0?this.body.mask(SYNO.SDS.StorageAnalyzer._T("report","no_report_found")):this.body.unmask()},onDeactivate:Ext.emptyFn,loadProfile:Ext.emptyFn,getRecordTime:function(){return this.getRecord().time},getCurFilter:function(){var e,t=this.tbarConfig,i=!0,r=!0,a=!1,s={};return!0===t.shareFilter&&(i="all_shares"!==this.shareField.getValue()),!0===t.fileSizeFilter&&(r="any"!==(e=this.rangeField.getValue())),!0===t.recycleFilter&&(a=!0),i||r||a?(i&&(s[this.shareAttr||"path"]=this.shareField.getValue()),r&&(s[e]=this.adjustToFileSize(this.numField.getValue())),a&&(s.recycle=!0),s):null},filterByWebapi:function(){var e=this.getCurFilter();this.loadProfile({filter:e})},filterByStoreFilter:function(){this.infoGrid.store.filterBy(function(e,t){var i=this.tbarConfig,r=e.get("size"),a=!0,s=!0,o=!0;if(Ext.isObject(i.optFilter)&&i.optFilter.cmpFn&&(o=i.optFilter.cmpFn(e)),!0===i.fileSizeFilter){var n=this.adjustToFileSize(this.numField.getValue());a="size_gt"===this.rangeField.getValue()?r>n:"size_lt"!==this.rangeField.getValue()||r<n}if(!0===i.shareFilter){var l=this.shareAttr||"name";s="all_shares"===this.shareField.getValue()||e.get(l)===this.shareField.getValue()}return o&&a&&s},this)},filterResult:function(){this.numField&&!this.numField.isValid()||!this.infoGrid||(!0!==this.useWebapiFilter?this.filterByStoreFilter():this.filterByWebapi())}}),Ext.define("SYNO.SDS.StorageAnalyzer.DetailView.PieChart",{extend:"SYNO.SDS.StorageAnalyzer.Chart",svgConfig:{width:220,height:220},radius:107,d3:SYNO.SDS.DataDrivenDocuments.DrawHelper,constructor:function(e){this.callParent(arguments)},loadData:function(e){Ext.isDefined(e)&&this.draw(e)},initShadowEffect:function(){var e=this.svg.append("defs");this.shadowId="shadow"+Ext.id();var t=e.append("filter").attr("id",this.shadowId);t.append("feGaussianBlur").attr("in","SourceAlpha").attr("stdDeviation",2).attr("result","blur"),t.append("feOffset").attr("in","blur").attr("dx",0).attr("dy",0).attr("result","offsetBlur");var i=t.append("feMerge");i.append("feMergeNode").attr("in","offsetBlur"),i.append("feMergeNode").attr("in","SourceGraphic"),this.svgShadow=e},filterData:function(e){var t=0,i=[];for(t=0;t<e.length;t++)if(e[t].size>0)return e;for(t=0;t<e.length;t++)Ext.isDefined(e[t].color)&&i.push(Ext.apply(e[t],{size:1}));return i},draw:function(e){if(Ext.isArray(e)&&!(0>e.length)){e=this.filterData(e);var t=this,i=t.d3,r=t.svgConfig.width,a=t.svgConfig.height,s=t.radius;t.svgGraphics&&(t.svgGraphics.remove(),t.svgGraphics=null),t.svgShadow||t.initShadowEffect(),t.svgGraphics=t.svg.data([e]).attr("viewBox",`${r/-2} ${a/-2} ${r} ${a}`).append("svg:g");var o=i.svg.arc().outerRadius(s),n=i.layout.pie().value(function(e){return e.size}),l=t.svgGraphics.selectAll("g.slice").data(n).enter().append("svg:g").attr("class","slice"),h="url(#"+this.shadowId+")";l.append("svg:path").attr("fill",function(t,i){return e[i].color||SYNO.SDS.StorageAnalyzer.Utils.ColorArray[Math.min(i,9)]}).attr("stroke","#FFFFFF").attr("stroke-width","0px").attr("d",o).attr("synoqtip",function(t,i){return e[i].name}).on("mouseover",function(e,t,r){this.parentNode.parentNode.appendChild(this.parentNode),i.select(this).transition().duration(300).attr("stroke-width","2px").attr("filter",h)}).on("mouseout",function(e,t,r){i.select(this).transition().duration(300).attr("stroke-width","0px").attr("filter","")})}}}),Ext.define("SYNO.SDS.StorageAnalyzer.DetailView.PageSelectionModel",{extend:"Ext.grid.RowSelectionModel",constructor:function(e){this.callParent([e]),this.pageSelections=new Ext.util.MixedCollection(!1,function(e){return e.id})},onRefresh:function(){var e,t,i=this.grid.store,r=this.getSelections(),a=0,s=r.length;for(this.fireEvent("beforeselmodelrefresh",this),this.silent=this.silentMode&&!0,this.clearSelections(!0);a<s;a++)t=r[a],-1!=(e=i.indexOfId(t.id))&&(this.selectRow(e,!0),this.selectCallback&&this.selectCallback(e,i));r.length!=this.pageSelections.getCount()&&this.fireEvent("selectionchange",this),this.silent=!1,this.fireEvent("selmodelrefreshed",this)},maskGrid:function(e){e.loadMask&&e.loadMask.show()},unmaskGrid:function(e){e.loadMask&&e.loadMask.hide()},selectAllRow:function(e){if(!this.isLocked()){var t=this.grid,i=this.grid.store,r=this.grid.store.getCount();this.maskGrid(t),this.selections.clear();for(var a=0;a<r;a++)this.selectRow(a,!0);i.getTotalCount()!==i.getCount()?(i.suspendEvents(),i.load({params:{offset:0,limit:i.getTotalCount()},callback:function(){this.pageSelections.clear(),this.pageSelections.addAll(i.data.items),i.resumeEvents(),this.unmaskGrid(t),e.callback&&e.callback.call(e.scope||this)},scope:this})):this.unmaskGrid(t)}},clearSelections:function(e){if(!this.isLocked()){if(!0!==e){var t=this.grid.store,i=this.selections;i.each(function(e){this.deselectRow(t.indexOfId(e.id))},this),i.clear()}else this.selections.clear();this.last=!1}},clearAllSelections:function(e){if(!this.isLocked())if(!0!==e){var t=this.grid.store,i=this.pageSelections;i.each(function(e){this.deselectRow(t.indexOfId(e.id))},this),i.clear()}else this.pageSelections.clear()},selectRow:function(e,t,i){if(!(this.isLocked()||e<0||e>=this.grid.store.getCount()||t&&this.isSelected(e))){var r=this.grid.store.getAt(e);r&&!1!==this.fireEvent("beforerowselect",this,e,t,r)&&(t&&!this.singleSelect||(this.clearSelections(),this.clearAllSelections()),this.selections.add(r),this.pageSelections.add(r),this.last=this.lastActive=e,i||this.grid.getView().onRowSelect(e),this.silent||(this.fireEvent("rowselect",this,e,r),this.fireEvent("selectionchange",this)))}},selectRows:function(e,t){t||(this.clearSelections(),this.clearAllSelections());for(var i=0,r=e.length;i<r;i++)this.selectRow(e[i],!0)},selectRange:function(e,t,i){var r;if(!this.isLocked())if(i||(this.clearSelections(),this.clearAllSelections()),e<=t)for(r=e;r<=t;r++)this.selectRow(r,!0);else for(r=e;r>=t;r--)this.selectRow(r,!0)},deselectRow:function(e,t){if(!this.isLocked()){this.last==e&&(this.last=!1),this.lastActive==e&&(this.lastActive=!1);var i=this.grid.store.getAt(e);i&&(this.selections.remove(i),this.pageSelections.remove(i),t||this.grid.getView().onRowDeselect(e),this.fireEvent("rowdeselect",this,e,i),this.fireEvent("selectionchange",this))}},getSelections:function(){return[].concat(this.pageSelections.items)},hasSelection:function(){return this.pageSelections.items.length>0}}),Ext.define("SYNO.SDS.StorageAnalyzer.DetailView.Type",{extend:"SYNO.SDS.StorageAnalyzer.DetailView.Panel",constructor:function(e){this.callParent([this.fillConfig(e)])},fillConfig:function(e){var t,i=new Ext.data.SimpleStore({autoDestroy:!0,fields:["value","display"],data:[["all_filetype",SYNO.SDS.StorageAnalyzer._T("report","reportUI_title_file_type")]]});this.optField=new SYNO.ux.ComboBox({editable:!1,mode:"local",store:i,displayField:"display",valueField:"value",triggerAction:"all",value:"all_filetype",width:140,tpl:'<tpl for="."><div class="x-combo-list-item" ext:qtip="{display}">{display}</div></tpl>',listeners:{select:function(e,t,i){this.filterResult()},scope:this},cmpFn:function(e){return"all_filetype"===this.optField.getValue()||SYNO.SDS.StorageAnalyzer._T("report",e.get("group_name"))===this.optField.getValue()}.createDelegate(this)}),this.infoGrid=new SYNO.ux.GridPanel({cls:"storage-report-filetype-grid",colModel:this.initColModel(),store:this.createStore(),enableHdMenu:!1,loadMask:!0,region:"center"}),t=[this.infoGrid],Ext.isIE8||(this.infoPie=new SYNO.SDS.StorageAnalyzer.DetailView.PieChart({cls:"storage-report-filetype-piechart",region:"west"}),t.push(this.infoPie));var r={cls:"storage-report-filetype",useWebapiFilter:!0,tbarConfig:{optFilter:this.optField,fileSizeFilter:!1,shareFilter:!0,recycleFilter:!0},layout:"border",items:t};return Ext.apply(r,e),r},initColModel:function(){return new Ext.grid.ColumnModel({defaultSortable:!0,columns:[{id:"group_name",dataIndex:"group_name",header:SYNO.SDS.StorageAnalyzer._T("report","reportUI_title_file_type"),renderer:this.fileTypeRenderer,scope:this},{id:"count",dataIndex:"count",header:SYNO.SDS.StorageAnalyzer._T("report","reportUI_title_file_count"),renderer:this.fileCountRenderer,scope:this,align:"center"},{id:"size",dataIndex:"size",header:_T("common","size"),renderer:this.fileSizeRenderer.createDelegate(this),scope:this,align:"right"}]})},createStore:function(){return new Ext.data.Store({proxy:new Ext.data.MemoryProxy([]),reader:new Ext.data.JsonReader({},["group_name","count","size","path","size","full_path","recycle_count","recycle_size"]),autoDestroy:!0,remoteSort:!1,listeners:{datachanged:this.onDataChanged,scope:this}})},loadProfile:function(e){this.infoGrid.getEl().mask(_T("common","loading"),"x-mask-loading");var t=this.getRecord(),i={},r={};1===this.getTimeVersion(t.time)?(i={id:t.get("id"),source:"share",limit:-1,offset:0,filter:{group_by:"file_type",recycle:!0}},(i=t.time?Ext.apply(i,{time:t.time}):i).filter=e?Ext.apply(i.filter,{folder_id:e.filter.folder_id}):i.filter,r.api="SYNO.Core.Report.Analyzer",r.method="getdata",r.version=1):(i={profile:t.get("id"),filter:e?e.filter:{}},i=t.time?Ext.apply(i,{time:t.time}):i,r.api="SYNO.Core.Report.Analyzer.Share",r.method="file_type",r.version=1),this.sendWebAPI({api:r.api,method:r.method,version:r.version,scope:this,params:i,callback:function(e,t,i){var r;(this.infoGrid.getEl().unmask(),e)?(this.el.unmask(),this.refreshData(t,i)):(r=SYNO.SDS.StorageAnalyzer.Utils.getErrorString(t.code)||_T("common","commfail"),this.appWin.getMsgBox().alert("report",r,function(){this.el.mask()},this))}})},updateShareField:function(){var e=this.getRecord();this.prevFolderId="all_shares",this.el.mask(),this.sendWebAPI({api:"SYNO.Core.Report.Util",method:"list_share",version:1,scope:this,params:{profile_name:e.get("id"),time:e.time},callback:function(e,t,i){if(this.el.unmask(),e){var r=[["all_shares",_T("common","show_all"),0]],a=[];t&&t.analyses&&t.analyses.forEach(function(e){var t;void 0!==e.name&&(t=e.name,a.indexOf(t)<0&&(a.push(t),r.push([e.path_id,t,1])))}),this.shareField.store.loadData(r),this.sortShareField(),this.shareField.collapse()}else{var s;s=SYNO.SDS.StorageAnalyzer.Utils.getErrorString(t.code)||_T("common","commfail"),this.appWin.getMsgBox().alert("report",s,function(){this.el.mask()},this)}}})},getCurFilter:function(){var e=this.optField.getValue(),t=this.shareField.getValue(),i={};return"all_filetype"!==e&&this.prevFolderId===t&&(i.type=e),"all_shares"!==t&&(i.folder_id=t),this.prevFolderId=t,i},updateFileTypStore:function(){var e=[["all_filetype",SYNO.SDS.StorageAnalyzer._T("report","reportUI_title_file_type")]];this.filetypeArr.forEach(function(t){e.push([t,SYNO.SDS.StorageAnalyzer._T("report",t)])}),this.optField.store.loadData(e),this.optField.setValue("all_filetype"),this.optField.collapse()},onDataChanged:function(e){this.callParent(arguments),this.updatePieData(e)},updatePieData:function(e){this.drawData&&(this.drawData=null),this.drawData=[],this.filetypeArr.forEach(function(e){this.drawData.push({name:this.fileTypeOverview?SYNO.SDS.StorageAnalyzer._T("report",e):e,size:0})},this),e.data.each(function(e){var t=e.get("group_name"),i=this.filetypeArr.indexOf(t);this.drawData[i].size+=e.get("size"),this.drawData[i].color||(this.drawData[i].color=SYNO.SDS.StorageAnalyzer.Utils.ColorArray[Math.min(i,9)])},this),Ext.isIE8||this.infoPie.loadData(this.drawData)},fileCountRenderer:function(e,t,i,r,a,s){return!0===this.recycleFilter.getValue()?e-i.get("recycle_count"):e},fileSizeRenderer:function(e,t,i,r){return!0===this.recycleFilter.getValue()?SYNO.SDS.StorageAnalyzer.Utils.fileSizeRenderer(e-i.get("recycle_size"),t):SYNO.SDS.StorageAnalyzer.Utils.fileSizeRenderer(e,t)},fileTypeRenderer:function(e,t,i,r){var a=this.fileTypeOverview?SYNO.SDS.StorageAnalyzer._T("report",e):e,s=Ext.util.Format.htmlEncode(a),o=`<span class="legend-indicator" style="background-color: ${SYNO.SDS.StorageAnalyzer.Utils.ColorArray[Math.min(r,9)]}"></span>${s}`;return t.attr='ext:qtip="'+Ext.util.Format.htmlEncode(s)+'"',o},onActivate:function(){this.callParent(arguments),this.updateShareField()},refreshData:function(e){var t=[];e&&e.analyses&&(e.analyses.sort(function(e,t){return e.size>t.size?-1:e.size<t.size?1:e.count>t.count?-1:e.count<t.count?1:e.recycle_size>t.recycle_size?1:e.recycle_size<t.recycle_size?-1:e.recycle_count>t.recycle_count?1:e.recycle_count<t.recycle_count?-1:e.group_name<t.group_name?-1:e.group_name>t.group_name?1:0}),this.filetypeArr=[],e.analyses.forEach(function(e){void 0!==e.size&&(".empty_ext"===e.group_name&&(e.group_name=SYNO.SDS.StorageAnalyzer._T("report","reportUI_file_type_empty")),t.push(e),-1===this.filetypeArr.indexOf(e.group_name)&&this.filetypeArr.push(e.group_name))},this),e.type_group?(this.fileTypeOverview=!0,this.updateFileTypStore(),1===e.version?this.optField.disable():this.optField.enable()):this.fileTypeOverview=!1,this.infoGrid.store.loadData(t))}}),Ext.define("SYNO.SDS.StorageAnalyzer.DetailView.Usage",{extend:"SYNO.SDS.StorageAnalyzer.DetailView.Panel",pathArray:[],constructor:function(e){this.callParent([this.fillConfig(e)])},initColModel:function(){return new Ext.grid.ColumnModel({defaults:{sortable:!0},columns:[{id:"name",header:_T("common","folder"),renderer:this.shareNameRenderer,dataIndex:"name",scope:this,width:200},{id:"volume",header:_T("volume","volume_share_position"),renderer:this.volumeNameRenderer,dataIndex:"volume",scope:this},{id:"count",header:SYNO.SDS.StorageAnalyzer._T("report","reportUI_title_file_count"),renderer:this.fileCountRenderer,dataIndex:"count",scope:this,align:"right"},{id:"size",header:_T("common","size"),renderer:this.fileSizeRenderer.createDelegate(this),dataIndex:"size",scope:this,align:"right"}]})},createStore:function(){return new Ext.data.Store({proxy:new Ext.data.MemoryProxy([]),reader:new Ext.data.JsonReader({root:"analyses",id:"name"},["name","volume","count","size","path","full_path","recycle_count","recycle_size","path_id","is_share"]),autoDestroy:!0,remoteSort:!1,listeners:{datachanged:{fn:this.onDataChanged,scope:this,buffer:50}}})},fillConfig:function(e){this.usagePieChart=this.createUsagePieChart(),this.infoGrid=this.createInfoGrid();const t=[this.usagePieChart,this.infoGrid];var i={cls:"storage-report-shareusage",layout:"border",tbarConfig:{fileSizeFilter:!0,shareFilter:this.shareField=new SYNO.ux.ComboBox({width:180,displayField:"display",valueField:"value",value:"all_shares",store:new Ext.data.ArrayStore({fields:["value","display"],data:[["all_shares",_T("common","show_all")]]}),listeners:{select:this.getSubFolderResult,scope:this}}),recycleFilter:!0,pathBar:!0},items:t};return Ext.apply(i,e),i},createInfoGrid:function(){return new SYNO.ux.GridPanel({cls:"storage-report-shareusage-grid",colModel:this.initColModel(),store:this.createStore(),region:"center",loadMask:!0,enableHdMenu:!1,enableSort:!0,view:new SYNO.ux.FleXcroll.grid.GridView({forceFit:!0,onHeaderClick:function(e,t){var i=this.grid.store,r=i.getAt(0);".."===r.get("name")&&i.remove(r),SYNO.ux.FleXcroll.grid.GridView.superclass.onHeaderClick.call(this,e,t),".."===r.get("name")&&i.insert(0,r)}})})},createUsagePieChart:function(){return new SYNO.SDS.StorageAnalyzer.DetailView.PieChart({cls:"storage-report-shareusage-piechart",region:"west"})},onRowClick:function(e,t,i){var r=e.store.getAt(t),a=r.get("name"),s=0!==r.get("path_id").length?r.get("path_id"):r.get("full_path");this.pathBar.addPathButtons(this.combinePathObj(a,s)),!0===r.get("is_share")?this.loadProfile():this.loadProfile({filter:{path:s,folder_id:s}})},onActivate:function(){this.callParent(arguments),this.pathBar&&(this.pathArray.length=0,this.pathArray.push({path:-1,text:"All Shares",tooltip:"All Shares"}),this.pathBar.addPathButtons(this.pathArray))},combinePathObj:function(e,t){if(0===e.length)for(;this.pathArray.length>0&&this.pathArray[this.pathArray.length-1].path!=t;)this.pathArray.pop();else".."===e?this.pathArray.pop():this.pathArray.push({path:t,text:Ext.util.Format.htmlEncode(e),tooltip:Ext.util.Format.htmlEncode(e)});return this.pathArray},getSubFolderResult:function(e,t,i){if("all_shares"===t.get("value"))return this.recycleFilter.enable(),void this.loadProfile(!0);this.recycleFilter.disable(),this.loadProfile({filter:{path:t.get("value")}})},fileCountRenderer:function(e,t,i,r,a,s){return".."===i.get("name")?"":!0===this.recycleFilter.getValue()?e-i.get("recycle_count"):e},fileSizeRenderer:function(e,t,i,r){return".."===i.get("name")?"":!0===this.recycleFilter.getValue()?SYNO.SDS.StorageAnalyzer.Utils.fileSizeRenderer(e-i.get("recycle_size"),t):SYNO.SDS.StorageAnalyzer.Utils.fileSizeRenderer(e,t)},shareNameRenderer:function(e,t,i,r,a,s){var o,n=Ext.util.Format.htmlEncode(e),l=s&&s.getAt(0)&&".."===s.getAt(0).get("name")?r-1:r;return o=".."===i.get("name")?n="<b>"+Ext.util.Format.htmlEncode(SYNO.SDS.StorageAnalyzer._T("report","reportUI_go_parent"))+"</b>":`<span class="legend-indicator" style="background-color: ${SYNO.SDS.StorageAnalyzer.Utils.ColorArray[Math.min(l,9)]}"></span>${n}`,t.attr='ext:qtip="'+Ext.util.Format.htmlEncode(n)+'"',o},volumeNameRenderer:function(e,t,i,r,a,s){var o="";return".."===i.get("name")?"":(o=Ext.util.Format.htmlEncode(SYNO.SDS.Utils.StorageUtils.VolumeNameRenderer(e)),t.attr='ext:qtip="'+Ext.util.Format.htmlEncode(o)+'"',o)},onDeactivate:function(){},renderToolBar:function(e){1===e?(this.pathBar.tbPanel.setVisible(!1),this.shareField.setVisible(!0),this.rangeField.setVisible(!0),this.numField.setVisible(!0),this.quotaUnitField.setVisible(!0)):(this.pathBar.tbPanel.setVisible(!0),this.shareField.setVisible(!1),this.rangeField.setVisible(!1),this.numField.setVisible(!1),this.quotaUnitField.setVisible(!1)),this.doLayout()},getFilterSize:function(){var e=this.numField.getValue()||0;switch(this.quotaUnitField.getValue()){case"GB":e*=Math.pow(2,30);break;case"TB":e*=Math.pow(2,40);break;case"MB":default:e*=Math.pow(2,20)}return e},loadProfile:function(e){var t=this.getRecord(),i={},r=this.getTimeVersion(t.time),a={};this.infoGrid.getEl().mask(_T("common","loading"),"x-mask-loading"),this.renderToolBar(r),1===r?(i={id:t.get("id"),source:"share",limit:-1,offset:0},i=t.time?Ext.apply(i,{time:t.time}):i,(i=Ext.isObject(e)?Ext.apply(i,e):i).filter=i.filter||{},i.filter.recycle=!0,a.api="SYNO.Core.Report.Analyzer",a.method="getdata",a.version=1,this.infoGrid.mun(this.infoGrid,"rowclick",this.onRowClick,this),this.infoGrid.removeClass("storage-report-shareusage-pointer-grid")):(i={profile:t.get("id")},i=t.time?Ext.apply(i,{time:t.time}):i,(i=Ext.isObject(e)?Ext.apply(i,e):i).filter=i.filter||{},a.api="SYNO.Core.Report.Analyzer.Share",a.method="usage",a.version=1,this.infoGrid.mon(this.infoGrid,"rowclick",this.onRowClick,this),this.infoGrid.addClass("storage-report-shareusage-pointer-grid")),this.sendWebAPI({api:a.api,method:a.method,version:a.version,scope:this,params:i,callback:function(t,i,r){var a;(this.infoGrid.getEl().unmask(),t)?(this.el.unmask(),this.refreshData(i,e)):(a=SYNO.SDS.StorageAnalyzer.Utils.getErrorString(i.code)||_T("common","commfail"),this.appWin.getMsgBox().alert("report",a,function(){this.el.mask()},this))}})},updateShareField:function(e){var t=[["all_shares",_T("common","show_all")]];e.forEach(function(e){e.count>0&&t.push([e.path_id?e.path_id:e.full_path,e.name])}),this.shareField.store.loadData(t)},onDataBeforeLoad:function(e){return"all_shares"===this.shareField.getValue()||(!(!Ext.isObject(e)||!e.filter||e.filter.path!==this.shareField.getValue())||(this.loadProfile({filter:{path:this.shareField.getValue()}}),!1))},onDataChanged:function(e){this.callParent(arguments),this.updatePieData(e)},updatePieData:function(e){this.drawData&&(this.drawData=null),this.drawData=[],e.data.each(function(e){".."!==e.get("name")&&this.drawData.push({name:e.get("name"),size:e.get("size")})},this),this.usagePieChart.loadData(this.drawData)},refreshData:function(e,t){if(e&&e.analyses){if(0===e.analyses.length)return this.infoGrid.store.loadData(e),void this.callParent(arguments);if(e.analyses.sort(function(e,t){return".."===t.name?1:".."===e.name?-1:t.size-e.size}),t||this.updateShareField(e.analyses),!1===this.onDataBeforeLoad(t))return;var i=e.analyses[0];".."===i.name&&(e.analyses.shift(),e.total=e.total-1),this.infoGrid.store.loadData(e),".."===i.name&&this.infoGrid.store.insert(0,new Ext.data.Record(i,i.name)),this.callParent(arguments)}},onGoToPathWithDir:function(e){this.pathBar.addPathButtons(this.combinePathObj("",e)),-1===e?this.loadProfile():this.loadProfile({filter:{path:e,folder_id:e}})}}),Ext.define("SYNO.SDS.StorageAnalyzer.DetailView.Quota",{extend:"SYNO.SDS.StorageAnalyzer.DetailView.Panel",pageSize:50,constructor:function(e){this.appWin=e.appWin,this.callParent([this.fillConfig(e)])},fillConfig:function(e){var t=new Ext.data.SimpleStore({autoDestroy:!0,fields:["value","display"],data:[["count",SYNO.SDS.StorageAnalyzer._T("report","reportUI_title_file_count")],["size",SYNO.SDS.StorageAnalyzer._T("report","used_size")]]});this.optField=new SYNO.ux.ComboBox({editable:!1,mode:"local",store:t,displayField:"display",valueField:"value",triggerAction:"all",value:"count",width:140,tpl:'<tpl for="."><div class="x-combo-list-item" ext:qtip="{display}">{display}</div></tpl>',listeners:{select:function(e,t,i){this.filterResult(),"count"===e.getValue()?this.quotaUnitField.hide():this.quotaUnitField.show(),this.doLayout()},scope:this}}),this.infoStore=this.createStore(),this.infoGrid=new SYNO.ux.GridPanel({colModel:this.initColModel(),store:this.infoStore,enableHdMenu:!1,loadMask:!0,bbar:new SYNO.ux.PagingToolbar({store:this.infoStore,pageSize:this.pageSize,displayInfo:!0}),view:new SYNO.ux.FleXcroll.grid.BufferView({cacheSize:100})});var i={cls:"storage-report-quota",useWebapiFilter:!0,tbarConfig:{optFilter:this.optField,fileSizeFilter:!0,shareFilter:!0,rangeFiltePrefix:"",recycleFilter:!0},layout:"fit",items:this.infoGrid};return Ext.apply(i,e),i},initColModel:function(){return new Ext.grid.ColumnModel({defaultSortable:!0,columns:[{id:"group_name",dataIndex:"group_name",header:_T("common","username"),renderer:this.userRenderer.createDelegate(this)},{id:"name",dataIndex:"name",header:_T("common","folder"),renderer:this.fieldRenderer.createDelegate(this)},{id:"count",dataIndex:"count",header:SYNO.SDS.StorageAnalyzer._T("report","reportUI_title_file_count"),renderer:this.fieldRenderer.createDelegate(this,this.fileCountRenderer.createDelegate(this),7),align:"right"},{id:"size",dataIndex:"size",header:_T("common","size"),renderer:this.fieldRenderer.createDelegate(this,this.fileSizeRenderer.createDelegate(this),7),align:"right"}]})},getClsByUserType:function(e){var t;switch(e){case"":t="disable-font";break;case"root":t="orange-status";break;default:t="normal-font"}return t},fileCountRenderer:function(e,t,i,r,a,s){return!0===this.recycleFilter.getValue()?e-i.get("recycle_count"):e},fileSizeRenderer:function(e,t,i,r,a,s){return!0===this.recycleFilter.getValue()?SYNO.SDS.StorageAnalyzer.Utils.fileSizeRenderer(e-i.get("recycle_size"),t,i):SYNO.SDS.StorageAnalyzer.Utils.fileSizeRenderer(e,t,i)},fieldRenderer:function(e,t,i,r,a,s,o){var n=i.get("group_name"),l=this.getClsByUserType(n);return o?'<span class="'+l+'">'+o(e,t,i,r,a,s)+"</span>":'<span class="'+l+'">'+Ext.util.Format.htmlEncode(e)+"</span>"},userRenderer:function(e){var t=this.getClsByUserType(e);switch(e){case"":e=SYNO.SDS.StorageAnalyzer._T("common","no_such_user");break;case"root":e=_T("share","share_system_user")}return'<span class="'+t+'">'+Ext.util.Format.htmlEncode(e)+"</span>"},onDataLoaded:function(e,t,i){this.el.unmask(),i.params.filter.path||i.params.filter.folder_id||void 0!==i.params.filter.path||this.updateShareField(t)},onLoadExcenption:function(e,t,i,r,a,s){a.isTimeout?this.appWin.getMsgBox().alert(this.title,_T("error","error_timeout")):(SYNO.Debug("Store exception: options:",e,t,i,r,a,s),this.appWin.getMsgBox().alert(this.title,SYNO.API.Erros.core[a.code]||_T("common","commfail"))),this.el.mask()},createStore:function(){var e=this.getRecord(),t={id:e.get("id"),profile:e.get("id"),source:"share",limit:this.pageSize,offset:0,filter:{group_by:"user",recycle:!0}};return new SYNO.API.JsonStore({autoDestroy:!0,appWindow:this.appWin,api:"SYNO.Core.Report.Analyzer",method:"getdata",version:1,scope:this,root:"analyses",baseParams:t,fields:["group_name","name","count","size","full_path","recycle_count","recycle_size","path_id"],listeners:{beforeload:{fn:this.onBeforeLoad,scope:this},load:{fn:this.onDataLoaded,scope:this},datachanged:{fn:this.onDataChanged,scope:this,buffer:50},exception:{fn:this.onLoadExcenption,scope:this}}})},adjustToFileSize:function(e){if(e=e||0,"count"===this.optField.getValue())return e;switch(this.quotaUnitField.getValue()){case"MB":e=1024*e*1024;break;case"GB":e=1024*e*1024*1024;break;case"TB":e=1024*e*1024*1024*1024}return e},getCurFilter:function(){var e=this.optField.getValue(),t=this.rangeField.getValue(),i=this.shareField.getValue(),r="any"!==t,a="all_shares"!==i,s={};return this.recycleFilter.setDisabled(a),r||a?(r&&(s[e+t]=this.adjustToFileSize(this.numField.getValue())),a&&(s.path=i,"/"!==i[0]&&(s.folder_id=i)),s):null},filterResult:function(){if((!this.numField||this.numField.isValid())&&this.infoGrid){var e=this.getCurFilter();this.loadProfile({filter:e})}},onBeforeLoad:function(e,t){var i=this.getCurFilter();return t.params.time=this.getRecordTime(),null===i||(Ext.apply(i,{group_by:"user",recycle:!0}),Ext.apply(t.params,{filter:i}),!0)},loadProfile:function(e){e||(this.quotaUnitField.hide(),this.doLayout());var t={},i=this.getRecord();1===this.getTimeVersion(i.time)?(Ext.isObject(e)&&e.filter&&(t.filter=e.filter,Ext.apply(t.filter,{group_by:"user",recycle:!0})),i.time&&((t=t||{}).time=i.time),this.infoStore.baseParams.id=i.id,this.infoStore.proxy.api="SYNO.Core.Report.Analyzer",this.infoStore.proxy.method="getdata"):(t.profile=i.get("id"),Ext.isObject(e)&&e.filter&&(t.filter=e.filter),i.time&&(t.time=i.time),this.infoStore.baseParams.profile=t.profile,this.infoStore.proxy.api="SYNO.Core.Report.Analyzer.Share",this.infoStore.proxy.method="user_quota"),t?this.infoGrid.store.load({params:t}):this.infoGrid.store.load()},updateShareField:function(e){var t=[["all_shares",_T("common","show_all"),0]],i=[];e.forEach(function(e){var r=e.get("name");i.indexOf(r)<0&&(i.push(r),t.push([void 0!==e.get("path_id")&&""!==e.get("path_id")?e.get("path_id"):e.get("full_path"),r,1]))}),this.shareField.store.loadData(t),this.sortShareField(),this.shareField.collapse()}}),Ext.define("SYNO.SDS.StorageAnalyzer.DetailView.Duplicate",{extend:"SYNO.SDS.StorageAnalyzer.DetailView.Panel",pageSize:100,constructor:function(e){this.appWin=e.appWin,this.callParent([this.fillConfig(e)]),this.mon(this,"recordupdate",this.adjustGroupLayoutForRow,this,{buffer:20})},fillConfig:function(e){this.infoStore=this.createStore(),this.deleteItem=new Ext.menu.Item({text:SYNO.SDS.StorageAnalyzer._T("report","filetable_delete"),handler:this.onDeleteSelectedFiles,scope:this}),this.matchItem=new Ext.menu.Item({text:SYNO.SDS.StorageAnalyzer._T("report","run_md5"),handler:this.onRunMD5,scope:this}),this.actionBtn=new SYNO.ux.Button({text:_T("common","action"),menu:new SYNO.ux.Menu({items:[this.deleteItem,this.matchItem],listeners:{beforeshow:{fn:this.onBeforeMenuShow,scope:this}}})}),this.infoGrid=new SYNO.ux.GridPanel({cls:"storage-report-duplicatefile-grid without-md5-info without-dirty-red-grid",colModel:this.initColModel(),loadMask:!0,store:this.infoStore,enableHdMenu:!1,autoExpandColumn:"path",selModel:new SYNO.SDS.StorageAnalyzer.DetailView.PageSelectionModel({selectCallback:function(e,t){t.getAt(e).set("choose",!0)}}),view:new SYNO.ux.FleXcroll.grid.BufferView({cacheSize:30,trackResetOnLoad:!1,forceFit:!0}),bbar:new SYNO.ux.PagingToolbar({store:this.infoStore,pageSize:this.pageSize,displayInfo:!0}),plugins:[this.enableColumn]});var t={useWebapiFilter:!0,shareAttr:"share",tbarConfig:{fileSizeFilter:!0,shareFilter:!0,customItem:this.actionBtn},layout:"fit",items:this.infoGrid};return Ext.apply(t,e),t},onBeforeMenuShow:function(){var e=this.getTimeLine();let t=this.infoGrid.selModel.getSelections().some(e=>e.get("exists"));this.deleteItem.setDisabled(!t),this.isMaxDateSelected()&&!0===e.is_analyzer_ready&&!0!==e.is_confirm_duplicate_ready&&e.version>1?this.matchItem.show():this.matchItem.hide()},confirmGroupRenderer:function(e,t,i){const r=["#99CC00","#1DBF89"];return String.format('<div style="margin: 7px 8px 7px 0px; width: 14px; height: 14px; background-color:{0};"></div>',r[e%r.length])},groupRenderer:function(e,t,i){const r=["#32B7F9","#FABB00"];return String.format('<div style="margin: 7px 8px 7px 0px; width: 14px; height: 14px; background-color:{0};"></div>',r[e%r.length])},shareNameRenderer:function(e,t,i){return t.attr='ext:qtip="'+Ext.util.Format.htmlEncode(e)+'"',!1===i.get("exists")?'<span class="disable-font">'+e+"</span>":e},pathRenderer:function(e,t,i){var r=e.substr(0,e.lastIndexOf(i.get("name"))),a=Ext.util.Format.htmlEncode(r);return t.attr='ext:qtip="'+a+'"',!1===i.get("exists")?'<span class="disable-font">'+r+"</span>":'<a style="text-decoration:underline; cursor:pointer;">'+r+"</a>"},deleteRenderer:function(e,t,i){var r,a=i.get("exists");const s=Ext.util.Format.htmlEncode(SYNO.SDS.StorageAnalyzer._T("report","reportUI_file_forbid_delete_tip")),o=Ext.util.Format.htmlEncode(SYNO.SDS.StorageAnalyzer._T("report","reportUI_file_forbid_delete_worm_tip"));switch(a){case!0:r='<div class="delete-icon normal"></div>';break;case"forbid_delete_backup":r=String.format('<div class="delete-icon forbid-delete" ext:wtip="{0}"></div>',s);break;case"forbid_delete_worm":r=String.format('<div class="delete-icon forbid-delete" ext:wtip="{0}"></div>',o);break;case!1:r='<span class="disable-font">'+SYNO.SDS.StorageAnalyzer._T("report","reportUI_file_status_removed")+"</span>";break;case"status-loading":r='<div class="delete-icon loading"></div>';break;default:r='<span class="red-status">'+e+"</span>"}return r},sizeRenderer:function(e,t,i){var r=SYNO.SDS.StorageAnalyzer.Utils.fileSizeRenderer(e,t,i);return!1===i.get("exists")?'<span class="disable-font">'+r+"</span>":r},timeRenderer:function(e,t,i){var r=SYNO.SDS.StorageAnalyzer.Utils.timeRenderer(e,t,i);return!1===i.get("exists")?'<span class="disable-font">'+r+"</span>":r},onFilePathClick:function(e,t,i,r){if("a"===r.target.tagName.toLowerCase()){var a=t.store.getAt(i).get("path");a=Ext.util.Format.htmlDecode(a),SYNO.SDS.AppLaunch("SYNO.SDS.App.FileStation3.Instance",{openfile:a})}},onRunMD5:function(){this.getTimeLine().is_confirm_duplicate_ready=!0,Ext.isEmpty(this.pollTaskId)&&this.sendWebAPI({api:"SYNO.Core.Report.Analyzer",method:"confirmduplicate",version:1,scope:this,params:{id:this.getRecord().get("id")},callback:function(e,t,i){var r;(this.infoGrid.getEl().unmask(),e)?(this.infoGrid.getEl().mask(_T("common","loading"),"x-mask-loading"),this.startPollTask(!1)):(r=SYNO.SDS.StorageAnalyzer.Utils.getErrorString(t.code)||_T("common","commfail"),this.appWin.getMsgBox().alert("report",r))}})},onDeleteCellClick:function(e,t,i,r){Ext.get(r.target).hasClass("delete-icon")&&Ext.get(r.target).hasClass("normal")&&(this._S("demo_mode")?this.appWin.getMsgBox().alert("report",_JSLIBSTR("uicommon","error_demo")):this.appWin.getMsgBox().confirmDelete(SYNO.SDS.StorageAnalyzer._T("report","filetable_delete"),SYNO.SDS.StorageAnalyzer._T("report","filetable_delete_confirm"),function(e){"yes"===e&&this.onDeleteFile(t,i)},this))},sendDeleteFileRequest:function(e,t){const i=(e,t)=>{Ext.isArray(e)&&e.forEach(e=>e.set("exists",t))};i(t,"status-loading"),this.sendWebAPI({api:"SYNO.Core.Report.Util",method:"delete_file",params:{path:e},version:1,scope:this,callback:function(e,r){!1===e?(this.appWin.getMsgBox().alert("report",SYNO.API.Errors.core[r.code]||_T("error","delete_error_rmdir")),i(t,SYNO.SDS.StorageAnalyzer._T("report","status_fail"))):i(t,!1)}})},onDeleteSelectedFiles:function(){const e=this.infoGrid.getSelectionModel().getSelections(),t=e.filter(e=>e.get("exists")),i=t.map(e=>SYNO.API.EscapeStr(e.get("name"))),r=t.map(e=>Ext.util.Format.htmlDecode(e.get("path"))),a=SYNO.SDS.StorageAnalyzer._T_Formatter("common","duplicate_file_delete",i);this.appWin.getMsgBox().confirmDelete(SYNO.SDS.StorageAnalyzer._T("report","filetable_delete"),a,function(t){"yes"===t&&this.sendDeleteFileRequest(r,e)},this)},onDeleteFile:function(e,t){var i=e.store.getAt(t),r=[Ext.util.Format.htmlDecode(i.get("path"))];this.sendDeleteFileRequest(r,[i])},initColModel:function(){return this.enableColumn=new SYNO.ux.EnableColumn({renderer:function(e,t,i){return this.isIgnore(e,i)?this.disableRenderer.apply(this,arguments):SYNO.ux.EnableColumn.prototype.renderer.apply(this,arguments)},isIgnore:(e,t)=>t.get("exists").toString().startsWith("forbid_delete_"),name:"choose",dataIndex:"choose",menuDisabled:!0,sortable:!1,header:"",width:40,align:"center"}),new Ext.grid.ColumnModel({columns:[this.enableColumn,{id:"duplicate_group_id",dataIndex:"duplicate_group_id_order",header:"",width:21,align:"center",renderer:this.groupRenderer.createDelegate(this),scope:this},{id:"confirm_duplicate_group_id",dataIndex:"confirm_duplicate_group_id_order",header:"",width:21,align:"center",renderer:this.confirmGroupRenderer.createDelegate(this),scope:this},{id:"name",dataIndex:"name",header:_WFT("common","file_name"),renderer:this.shareNameRenderer,scope:this,width:100},{id:"path",dataIndex:"path",header:SYNO.SDS.StorageAnalyzer._T("report","file_path"),renderer:this.pathRenderer,listeners:{click:this.onFilePathClick,scope:this},scope:this},{id:"size",dataIndex:"size",header:_T("common","size"),renderer:this.sizeRenderer,scope:this,width:100},{id:"mtime",dataIndex:"mtime",align:"center",header:_WFT("filetable","filetable_mtime"),renderer:this.timeRenderer},{id:"action",dataIndex:"exists",header:_T("common","action"),align:"center",listeners:{click:this.onDeleteCellClick,scope:this},renderer:this.deleteRenderer,scope:this,width:60}]})},updateShareField:function(){var e=this.getRecord();this.el.mask(),this.sendWebAPI({api:"SYNO.Core.Report.Util",method:"list_share",version:1,scope:this,params:{profile_name:e.get("id"),time:e.time},callback:function(e,t,i){if(this.el.unmask(),e){var r=[["all_shares",_T("common","show_all"),0]],a=[],s=this.getTimeVersion(this.getRecord().time);t&&t.analyses&&t.analyses.forEach(function(e){var t;void 0!==e.name&&(t=e.name,a.indexOf(t)<0&&(a.push(t),1===s?r.push([t,t,1]):r.push([e.path_id,t,1])))}),this.shareField.store.loadData(r),this.sortShareField(),this.shareField.collapse()}else{var o;o=SYNO.SDS.StorageAnalyzer.Utils.getErrorString(t.code)||_T("common","commfail"),this.appWin.getMsgBox().alert("report",o,function(){this.el.mask()},this)}}})},adjustGroupLayout:function(e){var t,i={},r=this.infoGrid.getView();for(t in e.forEach(function(e,t){var r=Ext.isNumber(e.get("confirm_duplicate_group_id"))?e.get("confirm_duplicate_group_id")+"-"+e.get("duplicate_group_id"):e.get("duplicate_group_id");i[r]||(i[r]=[]),i[r].push(t)},this),i)if(Object.prototype.hasOwnProperty.call(i,t)){var a=i[t];Ext.get(r.getRow(a[a.length-1])).addClass("group-last-row")}},adjustGroupLayoutForRow:function(e){var t,i,r,a=e+1;a>=this.infoStore.getCount()||(r=this.infoGrid.getView(),t=this.infoStore.getAt(e),i=this.infoStore.getAt(a),t.get("duplicate_group_id")!==i.get("duplicate_group_id")?Ext.get(r.getRow(e)).addClass("group-last-row"):Ext.isNumber(t.get("confirm_duplicate_group_id"))&&t.get("confirm_duplicate_group_id")!==i.get("confirm_duplicate_group_id")&&Ext.get(r.getRow(e)).addClass("group-last-row"))},generateGroupColorID:function(e){let t=e.getRange();const i=(e,t,i)=>i.indexOf(e)===t,r=t.map(e=>e.get("duplicate_group_id")).filter(i),a=t.map(e=>e.get("confirm_duplicate_group_id")).filter(i);t.forEach(e=>{e.set("duplicate_group_id_order",r.indexOf(e.get("duplicate_group_id"))),e.set("confirm_duplicate_group_id_order",a.indexOf(e.get("confirm_duplicate_group_id")))})},determineForbidDeleteStatus:function(e){let t=e.getRange();const i={"@ActiveBackup":"ActiveBackup",ActiveBackupForGSuite:"ActiveBackup-GSuite",ActiveBackupForGoogleWorkspace:"ActiveBackup-GSuite",ActiveBackupForOffice365:"ActiveBackup-Office365",ActiveBackupForMicrosoft365:"ActiveBackup-Office365"},r=[".hbk"];t.forEach(e=>{(e=>{return e.split("/").slice(0,-1).some(e=>e in i||r.some(t=>e.endsWith(t)))})(e.get("path"))?e.set("exists","forbid_delete_backup"):!0===e.get("in_worm_share")&&e.set("exists","forbid_delete_worm")})},onDataLoaded:function(e,t,i){this.generateGroupColorID(e),this.determineForbidDeleteStatus(e),this.el.unmask();this.adjustGroupLayout(t),this.infoGrid.selModel.lock(),t.length>0&&Ext.isNumber(t[0].get("confirm_duplicate_group_id"))?this.infoGrid.removeClass("without-md5-info"):this.infoGrid.addClass("without-md5-info")},onLoadExcenption:function(e,t,i,r,a,s){a.isTimeout?this.appWin.getMsgBox().alert(this.title,_T("error","error_timeout")):(SYNO.Debug("Store exception: options:",e,t,i,r,a,s),this.appWin.getMsgBox().alert(this.title,SYNO.API.Erros.core[a.code]||_T("common","commfail"))),this.el.mask()},onRecordUpdate:function(e,t,i){var r=this.infoGrid.selModel,a=this.infoStore.indexOf(t);this.infoGrid.selModel.unlock(),!0===t.get("choose")?r.selectRow(a,!0):r.deselectRow(a,!0),this.infoGrid.selModel.lock(),this.fireEvent("recordupdate",a)},createStore:function(){var e=this.getRecord();return new SYNO.API.JsonStore({autoDestroy:!0,appWindow:this.appWin,api:"SYNO.Core.Report.Analyzer",method:"getdata",version:1,scope:this,root:"analyses",baseParams:{id:e.get("id"),profile:e.get("id"),source:"file",limit:this.pageSize,offset:0,type:"duplicate"},idProperty:"path",fields:["choose","duplicate_group_id","confirm_duplicate_group_id","name","path","size","mtime","exists","share","full_path","share_id","duplicate_group_id_order","confirm_duplicate_group_id_order","in_worm_share"],listeners:{beforeload:{fn:this.onBeforeLoad,scope:this},load:{fn:this.onDataLoaded,scope:this},datachanged:{fn:this.onDataChanged,scope:this,buffer:50},exception:{fn:this.onLoadExcenption,scope:this},update:{fn:this.onRecordUpdate,scope:this}}})},onBeforeLoad:function(e,t){var i=this.getCurFilter();return(t=t||{}).params=t.params||{},t.params.time=this.getRecordTime(),null===i||(Ext.apply(t.params,{filter:i}),!0)},isMaxDateSelected:function(){var e=this.getRecord(),t=this.getTimeLine();return!e.time||Date.parseDate(e.time,"Y-m-d_H-i-s").format("Y/m/d")===t.maxDate.format("Y/m/d")},onActivate:function(){if(this.resetAllFields(),!this.isMaxDateSelected())return this.stopPollTask(),void this.loadProfile();this.infoGrid.getEl().isMasked()||this.infoGrid.getEl().mask(_T("common","loading"),"x-mask-loading"),this.sendWebAPI({api:"SYNO.Core.Report",method:"get",params:{id:this.getRecord().get("id")},version:1,scope:this,callback:function(e,t,i){var r;(this.infoGrid.getEl().unmask(),e)?(this.loadProfile(),!0===t.is_confirm_duplicate_running&&this.startPollTask(!0)):(r=SYNO.SDS.StorageAnalyzer.Utils.getErrorString(t.code)||_T("common","commfail"),this.appWin.getMsgBox().alert("report",r))}}),this.updateShareField();var e=this.infoGrid.getSelectionModel();e.unlock(),e.clearSelections(),e.lock()},loadProfile:function(e){var t={},i=this.getRecord();1===this.getTimeVersion(i.time)?(Ext.isObject(e)&&e.filter&&((t=t||{}).filter=e.filter),i.time&&((t=t||{}).time=i.time),this.infoStore.baseParams.id=i.id,this.infoStore.proxy.api="SYNO.Core.Report.Analyzer",this.infoStore.proxy.method="getdata"):(t.profile=i.get("id"),Ext.isObject(e)&&e.filter&&(t.filter=e.filter),i.time&&(t.time=i.time),this.infoStore.baseParams.profile=t.profile,this.infoStore.proxy.api="SYNO.Core.Report.Analyzer.File",this.infoStore.proxy.method="duplicate",this.infoStore.proxy.version=2),t?this.infoGrid.store.load({params:t,update:e||null}):this.infoGrid.store.load()},reloadStore:function(){this.infoStore.load(this.infoStore.lastOptions)},startPollTask:function(e){e=e||!1,this.appWin.detailView.pageListPanel.adjustNodeText("SYNO.SDS.StorageAnalyzer.DetailView.Duplicate",SYNO.SDS.StorageAnalyzer._T("storage_report","duplicates")+" ("+_T("common","loading")+")"),this.stopPollTask(),this.infoGrid.getEl().isMasked()||this.infoGrid.getEl().mask(_T("common","loading"),"x-mask-loading"),this.pollTaskId=this.pollReg({interval:10,immediate:e,webapi:{api:"SYNO.Core.Report",method:"get",params:{id:this.getRecord().get("id")},version:1},scope:this,status_callback:function(e,t,i){e?!1===t.is_confirm_duplicate_running&&(this.stopPollTask(),this.reloadStore(),this.appWin.detailView.pageListPanel.adjustNodeText("SYNO.SDS.StorageAnalyzer.DetailView.Duplicate",SYNO.SDS.StorageAnalyzer._T("report","reportUI_duplicate_accurate_list"))):SYNO.Debug("Ajax load failure "+t)}})},stopPollTask:function(){Ext.isEmpty(this.pollTaskId)||(this.infoGrid.getEl().unmask(),this.pollUnreg(this.pollTaskId),this.pollTaskId=null)},onDeactivate:function(){this.stopPollTask()},onDestroy:function(){this.stopPollTask()}}),SYNO.SDS.StorageAnalyzer.DefineFilePanel=function(e,t,i){Ext.define(e,{extend:"SYNO.SDS.StorageAnalyzer.DetailView.Panel",constructor:function(e){this.callParent([this.fillConfig(e)])},fillConfig:function(e){this.infoGrid=new SYNO.ux.GridPanel({colModel:this.initColModel(),store:this.createStore(),enableHdMenu:!1,loadMask:!0,autoExpandColumn:"path",view:new SYNO.ux.FleXcroll.grid.BufferView({cacheSize:100,forceFit:!0})});var t={shareAttr:"share",tbarConfig:{fileSizeFilter:!0,shareFilter:!0},layout:"fit",items:this.infoGrid};return Ext.apply(t,e),t},initColModel:function(){var e=[{id:"share",dataIndex:"share",header:_T("tree","leaf_sharefolder"),renderer:this.shareNameRenderer,scope:this,width:100},{id:"path",dataIndex:"path",header:SYNO.SDS.StorageAnalyzer._T("report","file_path"),renderer:this.pathRenderer,scope:this,listeners:{click:this.onFilePathClick,scope:this}},{id:"size",dataIndex:"size",header:_T("common","size"),renderer:SYNO.SDS.StorageAnalyzer.Utils.fileSizeRenderer,scope:this,width:100}];return i&&e.push(i),new Ext.grid.ColumnModel({columns:e})},createStore:function(){var e=["share","path","size"];return i&&e.push(i.id),new Ext.data.Store({proxy:new Ext.data.MemoryProxy([]),reader:new Ext.data.JsonReader({root:"analyses",id:"path"},e),listeners:{datachanged:{fn:this.onDataChanged,scope:this}},autoDestroy:!0,remoteSort:!1})},loadProfile:function(){this.infoGrid.el.mask(_T("common","loading"),"x-mask-loading");var e=this.getRecord(),i=this.getTimeVersion(e.time),r={};r=1===i?{id:e.get("id"),source:"file",limit:-1,offset:0}:{profile:e.get("id")},r=e.time?Ext.apply(r,{time:e.time}):r,this.sendWebAPI({api:t[i-1].api,method:t[i-1].method,version:t[i-1].version,scope:this,params:Ext.apply(r,t[i-1].filter),callback:function(e,t,i){var r;(this.infoGrid.el.unmask(),e)?(this.el.unmask(),this.refreshData(t,i)):(r=SYNO.SDS.StorageAnalyzer.Utils.getErrorString(t.code)||_T("common","commfail"),this.appWin.getMsgBox().alert("report",r,function(){this.el.mask()},this))}})},onFilePathClick:function(e,t,i,r){if("a"===r.target.tagName.toLowerCase()){var a=t.store.getAt(i).get("path");a=Ext.util.Format.htmlDecode(a),SYNO.SDS.AppLaunch("SYNO.SDS.App.FileStation3.Instance",{openfile:a})}},updateShareField:function(e){var t=[["all_shares",_T("common","show_all"),0]],i=[];e.forEach(function(e){i.indexOf(e.share)<0&&(i.push(e.share),t.push([e.share,e.share,1]))}),this.shareField.store.loadData(t),this.sortShareField()},refreshData:function(e){e&&e.analyses&&(this.infoGrid.store.loadData(e),this.updateShareField(e.analyses),this.callParent(arguments))},pathRenderer:function(e,t,i){return t.attr='ext:qtip="'+Ext.util.Format.htmlEncode(e)+'"','<a style="text-decoration:underline; cursor:pointer;">'+e+"</a>"}})},SYNO.SDS.StorageAnalyzer.DefineFilePanel("SYNO.SDS.StorageAnalyzer.DetailView.Size",[{api:"SYNO.Core.Report.Analyzer",method:"getdata",version:1,filter:{type:"large"}},{api:"SYNO.Core.Report.Analyzer.File",method:"status",version:1,filter:{type:"size"}}]),SYNO.SDS.StorageAnalyzer.DefineFilePanel("SYNO.SDS.StorageAnalyzer.DetailView.MostModifyFile",[{api:"SYNO.Core.Report.Analyzer",method:"getdata",version:1,filter:{type:"modify_time"}},{api:"SYNO.Core.Report.Analyzer.File",method:"status",version:1,filter:{type:"mtime"}}],{id:"mtime",dataIndex:"mtime",header:_WFT("filetable","filetable_mtime"),renderer:SYNO.SDS.StorageAnalyzer.Utils.timeRenderer,scope:this,width:150,align:"center"}),SYNO.SDS.StorageAnalyzer.DefineFilePanel("SYNO.SDS.StorageAnalyzer.DetailView.LeastModifyTime",[{api:"SYNO.Core.Report.Analyzer",method:"getdata",version:1,filter:{type:"access_time"}},{api:"SYNO.Core.Report.Analyzer.File",method:"status",version:1,filter:{type:"atime"}}],{id:"atime",dataIndex:"atime",header:_WFT("filetable","filetable_atime")+'<img src="webman/3rdparty/StorageAnalyzer/images/2x/bt_information_mini.png" width="24px" height="24px" draggable="false" style="vertical-align:bottom; position: relative; padding-bottom: 1px" ext:wtip="'+Ext.util.Format.htmlEncode(SYNO.SDS.StorageAnalyzer._T("report","noatime_hint"))+'"/>',headerHtmlEncode:!1,renderer:SYNO.SDS.StorageAnalyzer.Utils.timeRenderer,scope:this,width:150,align:"center"}),Ext.define("SYNO.SDS.StorageAnalyzer.DetailView.PageListPanel",{extend:"SYNO.SDS.PageListPanel",listeners:{afterlayout:{single:!0,fn:e=>{e.getPageCt().body.setStyle("padding-right","4px"),e.doLayout()}}},getPageList:function(e){var t;if(!this.pageList){const{toolbar:i,viewReportItem:r}=this.createToolbar(e);t={region:"west",cls:"storage-report-dataview-pagelist",width:248,padding:"0px 12px 0px 0px",hideCollapseTool:!0,tbar:i,listItems:[{text:_T("tree","leaf_sharefolder"),itemId:"share_folder",id:"SYNO.SDS.StorageAnalyzer.DetailView.Share",expanded:!0,iconCls:"icon-hide",items:[{text:SYNO.SDS.StorageAnalyzer._T("report","report_usage"),iconCls:"icon-usage",fn:"SYNO.SDS.StorageAnalyzer.DetailView.Usage"},{text:SYNO.SDS.StorageAnalyzer._T("storage_report","user_quota"),iconCls:"icon-quota",fn:"SYNO.SDS.StorageAnalyzer.DetailView.Quota"},{text:SYNO.SDS.StorageAnalyzer._T("report","report_type"),iconCls:"icon-type",fn:"SYNO.SDS.StorageAnalyzer.DetailView.Type"}]},{text:_T("common","file"),itemId:"file",expanded:!0,iconCls:"icon-hide",id:"SYNO.SDS.StorageAnalyzer.DetailView.File",items:[{text:SYNO.SDS.StorageAnalyzer._T("storage_report","duplicates"),iconCls:"icon-duplicate",fn:"SYNO.SDS.StorageAnalyzer.DetailView.Duplicate"},{text:_T("common","size"),iconCls:"icon-size",fn:"SYNO.SDS.StorageAnalyzer.DetailView.Size"},{text:SYNO.SDS.StorageAnalyzer._T("report","report_laf"),iconCls:"icon-mt",fn:"SYNO.SDS.StorageAnalyzer.DetailView.LeastModifyTime"},{text:SYNO.SDS.StorageAnalyzer._T("report","report_mmf"),iconCls:"icon-mt",fn:"SYNO.SDS.StorageAnalyzer.DetailView.MostModifyFile"}]}],listeners:{beforecollapsenode:function(){return!1}}},this.pageList=new SYNO.ux.ModuleList(t),this.pageList.viewReportItem=r,this.pageList.removeClass("syno-ux-modulelist"),this.pageList.addClass("syno-ux-treepanel"),this.getPageCt().addClass("storage-report-dataview-page-container")}return this.pageList},setListItemDisabled:function(e){var t;for(t in e)if(Object.prototype.hasOwnProperty.call(e,t)){var i=this.pageList.getNodeById("SYNO.SDS.StorageAnalyzer.DetailView."+t);e[t]?i.disable():i.enable()}},adjustNodeText:function(e,t){this.appWin.detailView.pageListPanel.pageList.nodeHash[e].setText(t)},createToolbar:function({onHome:e,onEdit:t,onViewReport:i}){const r=SYNO.SDS.StorageAnalyzer._T,a={xtype:"syno_button",cls:"home-bg",width:40,handler:e},s=new Ext.menu.Item({text:r("storage_report","view_complete_report"),itemId:"btn_view_report",handler:i});return{toolbar:{xtype:"syno_toolbar",cls:"storage-report-dataview-toolbar",items:[a,{xtype:"syno_button",itemId:"page_list_panel_action_menu",text:r("report","report_action"),menu:{xtype:"syno_menu",items:[{text:r("report","title_edit"),handler:t},s]}}]},viewReportItem:s}},enableViewReportItem:function(e){const t=!e;this.pageList.viewReportItem.setDisabled(t)}}),
/*! iScroll v5.1.1 ~ (c) 2008-2014 Matteo Spinelli ~ http://cubiq.org/license */
function(e,t,i){var r=e.requestAnimationFrame||e.webkitRequestAnimationFrame||e.mozRequestAnimationFrame||e.oRequestAnimationFrame||e.msRequestAnimationFrame||function(t){e.setTimeout(t,1e3/60)},a=function(){var r={},a=t.createElement("div").style,s=function(){for(var e=["t","webkitT","MozT","msT","OT"],t=0,i=e.length;t<i;t++)if(e[t]+"ransform"in a)return e[t].substr(0,e[t].length-1);return!1}();function o(e){return!1!==s&&(""===s?e:s+e.charAt(0).toUpperCase()+e.substr(1))}r.getTime=Date.now||function(){return(new Date).getTime()},r.extend=function(e,t){for(var i in t)e[i]=t[i]},r.extendEvent=function(e,i){if(e.currentTarget||(e.currentTarget=i),e.target||(e.target=e.srcElement),e.relatedTarget||("mouseover"==e.type&&(e.relatedTarget=e.fromElement),"mouseout"==e.type&&(e.relatedTarget=e.toElement)),null==e.pageX&&null!=e.clientX){var r=t.documentElement,a=t.body;e.pageX=e.clientX+(r.scrollLeft||a&&a.scrollLeft||0),e.pageX-=r.clientLeft||0,e.pageY=e.clientY+(r.scrollTop||a&&a.scrollTop||0),e.pageY-=r.clientTop||0}return!e.which&&e.button&&(1==e.button?e.button2=0:4==e.button?e.button2=1:2==e.button?e.button2=2:e.button2=0,e.which=1&e.button?1:2&e.button?3:4&e.button?2:0),e},r.addEvent=function(i,a,s,o){if("addEventListener"in i)try{i.addEventListener(a,s,!!o)}catch(e){if("object"!=typeof s||!s.handleEvent)throw e;i.addEventListener(a,function(e){s.handleEvent.call(s,e)},!!o)}else"attachEvent"in i&&(i==e&&(i=t),"object"==typeof s&&s.handleEvent?i.attachEvent("on"+a,function(e){e=r.extendEvent(e,i),s.handleEvent.call(s,e)}):i.attachEvent("on"+a,s))},r.removeEvent=function(e,t,i,r){e.removeEventListener(t,i,!!r),null!=typeof e.addEventListener?e.removeEventListener(t,i,!!r):null!=typeof e.attachEvent&&(e.detachEvent("on"+t,e[t+i]),e[t+i]=null,e["e"+t+i]=null)},r.momentum=function(e,t,r,a,s,o){var n,l,h=e-t,d=i.abs(h)/r;return l=d/(o=void 0===o?6e-4:o),(n=e+d*d/(2*o)*(h<0?-1:1))<a?(n=s?a-s/2.5*(d/8):a,l=(h=i.abs(n-e))/d):n>0&&(n=s?s/2.5*(d/8):0,l=(h=i.abs(e)+n)/d),{destination:i.round(n),duration:l}};var n=o("transform");return r.extend(r,{hasTransform:!1!==n,hasPerspective:o("perspective")in a,hasTouch:"ontouchstart"in e,hasPointer:navigator.msPointerEnabled,hasTransition:o("transition")in a}),r.isBadAndroid=/Android /.test(e.navigator.appVersion)&&!/Chrome\/\d/.test(e.navigator.appVersion),r.extend(r.style={},{transform:n,transitionTimingFunction:o("transitionTimingFunction"),transitionDuration:o("transitionDuration"),transitionDelay:o("transitionDelay"),transformOrigin:o("transformOrigin")}),r.hasClass=function(e,t){return new RegExp("(^|\\s)"+t+"(\\s|$)").test(e.className)},r.addClass=function(e,t){if(!r.hasClass(e,t)){var i=e.className.split(" ");i.push(t),e.className=i.join(" ")}},r.removeClass=function(e,t){if(r.hasClass(e,t)){var i=new RegExp("(^|\\s)"+t+"(\\s|$)","g");e.className=e.className.replace(i," ")}},r.offset=function(e){var t=-e.offsetLeft,i=-e.offsetTop;for(e=e.offsetParent;e;)t-=e.offsetLeft,i-=e.offsetTop,e=e.offsetParent;return{left:t,top:i}},r.preventDefaultException=function(e,t){for(var i in t)if(t[i].test(e[i]))return!0;return!1},r.extend(r.eventType={},{touchstart:1,touchmove:1,touchend:1,mousedown:2,mousemove:2,mouseup:2,MSPointerDown:3,MSPointerMove:3,MSPointerUp:3}),r.extend(r.ease={},{quadratic:{style:"cubic-bezier(0.25, 0.46, 0.45, 0.94)",fn:function(e){return e*(2-e)}},circular:{style:"cubic-bezier(0.1, 0.57, 0.1, 1)",fn:function(e){return i.sqrt(1- --e*e)}},back:{style:"cubic-bezier(0.175, 0.885, 0.32, 1.275)",fn:function(e){return(e-=1)*e*(5*e+4)+1}},bounce:{style:"",fn:function(e){return(e/=1)<1/2.75?7.5625*e*e:e<2/2.75?7.5625*(e-=1.5/2.75)*e+.75:e<2.5/2.75?7.5625*(e-=2.25/2.75)*e+.9375:7.5625*(e-=2.625/2.75)*e+.984375}},elastic:{style:"",fn:function(e){return 0===e?0:1==e?1:.4*i.pow(2,-10*e)*i.sin((e-.055)*(2*i.PI)/.22)+1}}}),r.tap=function(e,i){var r=t.createEvent("Event");r.initEvent(i,!0,!0),r.pageX=e.pageX,r.pageY=e.pageY,e.target.dispatchEvent(r)},r.click=function(e){var i,r=e.target;/(SELECT|INPUT|TEXTAREA)/i.test(r.tagName)||((i=t.createEvent("MouseEvents")).initMouseEvent("click",!0,!0,e.view,1,r.screenX,r.screenY,r.clientX,r.clientY,e.ctrlKey,e.altKey,e.shiftKey,e.metaKey,0,null),i._constructed=!0,r.dispatchEvent(i))},r}();function s(e,i){for(var r in this.wrapper="string"==typeof e?t.querySelector(e):e,this.scroller=i.scroller||this.wrapper.children[0],this.scrollerStyle=this.scroller.style,this.options={resizeScrollbars:!0,mouseWheelSpeed:20,snapThreshold:.334,startX:0,startY:0,scrollY:!0,directionLockThreshold:5,momentum:!0,bounce:!0,bounceTime:600,bounceEasing:"",preventDefault:!0,preventDefaultException:{tagName:/^(INPUT|TEXTAREA|BUTTON|SELECT)$/},HWCompositing:!0,useTransition:!0,useTransform:!0},i)this.options[r]=i[r];this.translateZ=this.options.HWCompositing&&a.hasPerspective?" translateZ(0)":"",this.options.useTransition=a.hasTransition&&this.options.useTransition,this.options.useTransform=a.hasTransform&&this.options.useTransform,this.options.eventPassthrough=!0===this.options.eventPassthrough?"vertical":this.options.eventPassthrough,this.options.preventDefault=!this.options.eventPassthrough&&this.options.preventDefault,this.options.scrollY="vertical"!=this.options.eventPassthrough&&this.options.scrollY,this.options.scrollX="horizontal"!=this.options.eventPassthrough&&this.options.scrollX,this.options.freeScroll=this.options.freeScroll&&!this.options.eventPassthrough,this.options.directionLockThreshold=this.options.eventPassthrough?0:this.options.directionLockThreshold,this.options.bounceEasing="string"==typeof this.options.bounceEasing?a.ease[this.options.bounceEasing]||a.ease.circular:this.options.bounceEasing,this.options.resizePolling=void 0===this.options.resizePolling?60:this.options.resizePolling,!0===this.options.tap&&(this.options.tap="tap"),"scale"==this.options.shrinkScrollbars&&(this.options.useTransition=!1),this.options.invertWheelDirection=this.options.invertWheelDirection?-1:1,this.x=0,this.y=0,this.directionX=0,this.directionY=0,this._events={},this._init(),this.refresh(),this.scrollTo(this.options.startX,this.options.startY),this.enable()}function o(e,i,r){var a=t.createElement("div"),s=t.createElement("div");return!0===r&&(a.style.cssText="position:absolute;z-index:9999",s.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;position:absolute;background:rgba(0,0,0,0.5);border:1px solid rgba(255,255,255,0.9);border-radius:3px"),s.className="iScrollIndicator","h"==e?(!0===r&&(a.style.cssText+=";height:7px;left:2px;right:2px;bottom:0",s.style.height="100%"),a.className="iScrollHorizontalScrollbar"):(!0===r&&(a.style.cssText+=";width:7px;bottom:2px;top:2px;right:1px",s.style.width="100%"),a.className="iScrollVerticalScrollbar"),a.style.cssText+=";overflow:hidden",i||(a.style.pointerEvents="none"),a.appendChild(s),a}function n(i,r){for(var s in this.wrapper="string"==typeof r.el?t.querySelector(r.el):r.el,this.wrapperStyle=this.wrapper.style,this.indicator=this.wrapper.children[0],this.indicatorStyle=this.indicator.style,this.scroller=i,this.options={listenX:!0,listenY:!0,interactive:!1,resize:!0,defaultScrollbars:!1,shrink:!1,fade:!1,speedRatioX:0,speedRatioY:0},r)this.options[s]=r[s];this.sizeRatioX=1,this.sizeRatioY=1,this.maxPosX=0,this.maxPosY=0,this.options.interactive&&(this.options.disableTouch||(a.addEvent(this.indicator,"touchstart",this),a.addEvent(e,"touchend",this)),this.options.disablePointer||(a.addEvent(this.indicator,"MSPointerDown",this),a.addEvent(e,"MSPointerUp",this)),this.options.disableMouse||(a.addEvent(this.indicator,"mousedown",this),a.addEvent(e,"mouseup",this))),this.options.fade&&(this.wrapperStyle[a.style.transform]=this.scroller.translateZ,this.wrapperStyle[a.style.transitionDuration]=a.isBadAndroid?"0.001s":"0ms",this.wrapperStyle.opacity="0")}s.prototype={version:"5.1.1",_init:function(){this._initEvents(),(this.options.scrollbars||this.options.indicators)&&this._initIndicators(),this.options.mouseWheel&&this._initWheel(),this.options.snap&&this._initSnap(),this.options.keyBindings&&this._initKeys()},destroy:function(){this._initEvents(!0),this._execEvent("destroy")},_transitionEnd:function(e){e.target==this.scroller&&this.isInTransition&&(this._transitionTime(),this.resetPosition(this.options.bounceTime)||(this.isInTransition=!1,this._execEvent("scrollEnd")))},_start:function(e){var t=null!=e.button2?e.button2:e.button;if((1==a.eventType[e.type]||0===t)&&this.enabled&&(!this.initiated||a.eventType[e.type]===this.initiated)){!this.options.preventDefault||a.isBadAndroid||a.preventDefaultException(e.target,this.options.preventDefaultException)||(e.preventDefault?e.preventDefault():e.returnValue=!1);var r,s=e.touches?e.touches[0]:e;this.initiated=a.eventType[e.type],this.moved=!1,this.distX=0,this.distY=0,this.directionX=0,this.directionY=0,this.directionLocked=0,this._transitionTime(),this.startTime=a.getTime(),this.options.useTransition&&this.isInTransition?(this.isInTransition=!1,r=this.getComputedPosition(),this._translate(i.round(r.x),i.round(r.y)),this._execEvent("scrollEnd")):!this.options.useTransition&&this.isAnimating&&(this.isAnimating=!1,this._execEvent("scrollEnd")),this.startX=this.x,this.startY=this.y,this.absStartX=this.x,this.absStartY=this.y,this.pointX=s.pageX,this.pointY=s.pageY,this._execEvent("beforeScrollStart")}},_move:function(e){if(this.enabled&&a.eventType[e.type]===this.initiated){this.options.preventDefault&&(e.preventDefault?e.preventDefault():e.returnValue=!1);var t,r,s,o,n=e.touches?e.touches[0]:e,l=n.pageX-this.pointX,h=n.pageY-this.pointY,d=a.getTime();if(this.pointX=n.pageX,this.pointY=n.pageY,this.distX+=l,this.distY+=h,s=i.abs(this.distX),o=i.abs(this.distY),!(d-this.endTime>300&&s<10&&o<10)){if(this.directionLocked||this.options.freeScroll||(s>o+this.options.directionLockThreshold?this.directionLocked="h":o>=s+this.options.directionLockThreshold?this.directionLocked="v":this.directionLocked="n"),"h"==this.directionLocked){if("vertical"==this.options.eventPassthrough)e.preventDefault?e.preventDefault():e.returnValue=!1;else if("horizontal"==this.options.eventPassthrough)return void(this.initiated=!1);h=0}else if("v"==this.directionLocked){if("horizontal"==this.options.eventPassthrough)e.preventDefault?e.preventDefault():e.returnValue=!1;else if("vertical"==this.options.eventPassthrough)return void(this.initiated=!1);l=0}l=this.hasHorizontalScroll?l:0,h=this.hasVerticalScroll?h:0,t=this.x+l,r=this.y+h,(t>0||t<this.maxScrollX)&&(t=this.options.bounce?this.x+l/3:t>0?0:this.maxScrollX),(r>0||r<this.maxScrollY)&&(r=this.options.bounce?this.y+h/3:r>0?0:this.maxScrollY),this.directionX=l>0?-1:l<0?1:0,this.directionY=h>0?-1:h<0?1:0,this.moved||this._execEvent("scrollStart"),this.moved=!0,this._translate(t,r),d-this.startTime>300&&(this.startTime=d,this.startX=this.x,this.startY=this.y)}}},_end:function(e){if(this.enabled&&a.eventType[e.type]===this.initiated){this.options.preventDefault&&!a.preventDefaultException(e.target,this.options.preventDefaultException)&&(e.preventDefault?e.preventDefault():e.returnValue=!1);e.changedTouches&&e.changedTouches[0];var t,r,s=a.getTime()-this.startTime,o=i.round(this.x),n=i.round(this.y),l=i.abs(o-this.startX),h=i.abs(n-this.startY),d=0,c="";if(this.isInTransition=0,this.initiated=0,this.endTime=a.getTime(),!this.resetPosition(this.options.bounceTime)){if(this.scrollTo(o,n),!this.moved)return this.options.tap&&a.tap(e,this.options.tap),this.options.click&&a.click(e),void this._execEvent("scrollCancel");if(this._events.flick&&s<200&&l<100&&h<100)this._execEvent("flick");else{if(this.options.momentum&&s<300&&(t=this.hasHorizontalScroll?a.momentum(this.x,this.startX,s,this.maxScrollX,this.options.bounce?this.wrapperWidth:0,this.options.deceleration):{destination:o,duration:0},r=this.hasVerticalScroll?a.momentum(this.y,this.startY,s,this.maxScrollY,this.options.bounce?this.wrapperHeight:0,this.options.deceleration):{destination:n,duration:0},o=t.destination,n=r.destination,d=i.max(t.duration,r.duration),this.isInTransition=1),this.options.snap){var p=this._nearestSnap(o,n);this.currentPage=p,d=this.options.snapSpeed||i.max(i.max(i.min(i.abs(o-p.x),1e3),i.min(i.abs(n-p.y),1e3)),300),o=p.x,n=p.y,this.directionX=0,this.directionY=0,c=this.options.bounceEasing}if(o!=this.x||n!=this.y)return(o>0||o<this.maxScrollX||n>0||n<this.maxScrollY)&&(c=a.ease.quadratic),void this.scrollTo(o,n,d,c);this._execEvent("scrollEnd")}}}},_resize:function(){var e=this;clearTimeout(this.resizeTimeout),this.resizeTimeout=setTimeout(function(){e.refresh()},this.options.resizePolling)},resetPosition:function(e){var t=this.x,i=this.y;return e=e||0,!this.hasHorizontalScroll||this.x>0?t=0:this.x<this.maxScrollX&&(t=this.maxScrollX),!this.hasVerticalScroll||this.y>0?i=0:this.y<this.maxScrollY&&(i=this.maxScrollY),(t!=this.x||i!=this.y)&&(this.scrollTo(t,i,e,this.options.bounceEasing),!0)},disable:function(){this.enabled=!1},enable:function(){this.enabled=!0},refresh:function(){this.wrapper.offsetHeight;this.wrapperWidth=this.wrapper.clientWidth,this.wrapperHeight=this.wrapper.clientHeight,this.scrollerWidth=this.scroller.offsetWidth,this.scrollerHeight=this.scroller.offsetHeight,this.maxScrollX=this.wrapperWidth-this.scrollerWidth,this.maxScrollY=this.wrapperHeight-this.scrollerHeight,this.hasHorizontalScroll=this.options.scrollX&&this.maxScrollX<0,this.hasVerticalScroll=this.options.scrollY&&this.maxScrollY<0,this.hasHorizontalScroll||(this.maxScrollX=0,this.scrollerWidth=this.wrapperWidth),this.hasVerticalScroll||(this.maxScrollY=0,this.scrollerHeight=this.wrapperHeight),this.endTime=0,this.directionX=0,this.directionY=0,this.wrapperOffset=a.offset(this.wrapper),this._execEvent("refresh"),this.resetPosition()},on:function(e,t){this._events[e]||(this._events[e]=[]),this._events[e].push(t)},off:function(e,t){if(this._events[e]){var i=this._events[e].indexOf(t);i>-1&&this._events[e].splice(i,1)}},_execEvent:function(e){if(this._events[e]){var t=0,i=this._events[e].length;if(i)for(;t<i;t++)this._events[e][t].apply(this,[].slice.call(arguments,1))}},scrollBy:function(e,t,i,r){e=this.x+e,t=this.y+t,i=i||0,this.scrollTo(e,t,i,r)},scrollTo:function(e,t,i,r){r=r||a.ease.circular,this.isInTransition=this.options.useTransition&&i>0,!i||this.options.useTransition&&r.style?(this._transitionTimingFunction(r.style),this._transitionTime(i),this._translate(e,t)):this._animate(e,t,i,r.fn)},scrollToElement:function(e,t,r,s,o){if(e=e.nodeType?e:this.scroller.querySelector(e)){var n=a.offset(e);n.left-=this.wrapperOffset.left,n.top-=this.wrapperOffset.top,!0===r&&(r=i.round(e.offsetWidth/2-this.wrapper.offsetWidth/2)),!0===s&&(s=i.round(e.offsetHeight/2-this.wrapper.offsetHeight/2)),n.left-=r||0,n.top-=s||0,n.left=n.left>0?0:n.left<this.maxScrollX?this.maxScrollX:n.left,n.top=n.top>0?0:n.top<this.maxScrollY?this.maxScrollY:n.top,t=null==t||"auto"===t?i.max(i.abs(this.x-n.left),i.abs(this.y-n.top)):t,this.scrollTo(n.left,n.top,t,o)}},_transitionTime:function(e){if(e=e||0,this.scrollerStyle[a.style.transitionDuration]=e+"ms",!e&&a.isBadAndroid&&(this.scrollerStyle[a.style.transitionDuration]="0.001s"),this.indicators)for(var t=this.indicators.length;t--;)this.indicators[t].transitionTime(e)},_transitionTimingFunction:function(e){if(this.scrollerStyle[a.style.transitionTimingFunction]=e,this.indicators)for(var t=this.indicators.length;t--;)this.indicators[t].transitionTimingFunction(e)},_translate:function(e,t){if(this.options.useTransform?this.scrollerStyle[a.style.transform]="translate("+e+"px,"+t+"px)"+this.translateZ:(e=i.round(e),t=i.round(t),this.scrollerStyle.left=e+"px",this.scrollerStyle.top=t+"px"),this.x=e,this.y=t,this.indicators)for(var r=this.indicators.length;r--;)this.indicators[r].updatePosition()},_initEvents:function(t){var i=t?a.removeEvent:a.addEvent,r=this.options.bindToWrapper?this.wrapper:e;i(e,"orientationchange",this),i(e,"resize",this),this.options.click&&i(this.wrapper,"click",this,!0),this.options.disableMouse||(i(this.wrapper,"mousedown",this),i(r,"mousemove",this),i(r,"mousecancel",this),i(r,"mouseup",this)),a.hasPointer&&!this.options.disablePointer&&(i(this.wrapper,"MSPointerDown",this),i(r,"MSPointerMove",this),i(r,"MSPointerCancel",this),i(r,"MSPointerUp",this)),a.hasTouch&&!this.options.disableTouch&&(i(this.wrapper,"touchstart",this),i(r,"touchmove",this),i(r,"touchcancel",this),i(r,"touchend",this)),i(this.scroller,"transitionend",this),i(this.scroller,"webkitTransitionEnd",this),i(this.scroller,"oTransitionEnd",this),i(this.scroller,"MSTransitionEnd",this)},getComputedPosition:function(){var t,i,r=e.getComputedStyle(this.scroller,null);return this.options.useTransform?(t=+((r=r[a.style.transform].split(")")[0].split(", "))[12]||r[4]),i=+(r[13]||r[5])):(t=+r.left.replace(/[^-\d.]/g,""),i=+r.top.replace(/[^-\d.]/g,"")),{x:t,y:i}},_initIndicators:function(){var e,t=this.options.interactiveScrollbars,i="string"!=typeof this.options.scrollbars,r=[],a=this;this.indicators=[],this.options.scrollbars&&(this.options.scrollY&&(e={el:o("v",t,this.options.scrollbars),interactive:t,defaultScrollbars:!0,customStyle:i,resize:this.options.resizeScrollbars,shrink:this.options.shrinkScrollbars,fade:this.options.fadeScrollbars,listenX:!1},this.wrapper.appendChild(e.el),r.push(e)),this.options.scrollX&&(e={el:o("h",t,this.options.scrollbars),interactive:t,defaultScrollbars:!0,customStyle:i,resize:this.options.resizeScrollbars,shrink:this.options.shrinkScrollbars,fade:this.options.fadeScrollbars,listenY:!1},this.wrapper.appendChild(e.el),r.push(e))),this.options.indicators&&(r=r.concat(this.options.indicators));for(var s=r.length;s--;)this.indicators.push(new n(this,r[s]));function l(e){for(var t=a.indicators.length;t--;)e.call(a.indicators[t])}this.options.fadeScrollbars&&(this.on("scrollEnd",function(){l(function(){this.fade()})}),this.on("scrollCancel",function(){l(function(){this.fade()})}),this.on("scrollStart",function(){l(function(){this.fade(1)})}),this.on("beforeScrollStart",function(){l(function(){this.fade(1,!0)})})),this.on("refresh",function(){l(function(){this.refresh()})}),this.on("destroy",function(){l(function(){this.destroy()}),delete this.indicators})},_initWheel:function(){a.addEvent(this.wrapper,"wheel",this),a.addEvent(this.wrapper,"mousewheel",this),a.addEvent(this.wrapper,"DOMMouseScroll",this),this.on("destroy",function(){a.removeEvent(this.wrapper,"wheel",this),a.removeEvent(this.wrapper,"mousewheel",this),a.removeEvent(this.wrapper,"DOMMouseScroll",this)})},_wheel:function(e){if(this.enabled){e.preventDefault?e.preventDefault():e.returnValue=!1,e.stopPropagation();var t,r,a,s,o=this;if(void 0===this.wheelTimeout&&o._execEvent("scrollStart"),clearTimeout(this.wheelTimeout),this.wheelTimeout=setTimeout(function(){o._execEvent("scrollEnd"),o.wheelTimeout=void 0},400),"deltaX"in e)t=-e.deltaX,r=-e.deltaY;else if("wheelDeltaX"in e)t=e.wheelDeltaX/120*this.options.mouseWheelSpeed,r=e.wheelDeltaY/120*this.options.mouseWheelSpeed;else if("wheelDelta"in e)t=r=e.wheelDelta/120*this.options.mouseWheelSpeed;else{if(!("detail"in e))return;t=r=-e.detail/3*this.options.mouseWheelSpeed}if(t*=this.options.invertWheelDirection,r*=this.options.invertWheelDirection,this.hasVerticalScroll||(t=r,r=0),this.options.snap)return a=this.currentPage.pageX,s=this.currentPage.pageY,t>0?a--:t<0&&a++,r>0?s--:r<0&&s++,void this.goToPage(a,s);a=this.x+i.round(this.hasHorizontalScroll?t:0),s=this.y+i.round(this.hasVerticalScroll?r:0),a>0?a=0:a<this.maxScrollX&&(a=this.maxScrollX),s>0?s=0:s<this.maxScrollY&&(s=this.maxScrollY),this.scrollTo(a,s,0)}},_initSnap:function(){this.currentPage={},"string"==typeof this.options.snap&&(this.options.snap=this.scroller.querySelectorAll(this.options.snap)),this.on("refresh",function(){var e,t,r,a,s,o,n=0,l=0,h=0,d=this.options.snapStepX||this.wrapperWidth,c=this.options.snapStepY||this.wrapperHeight;if(this.pages=[],this.wrapperWidth&&this.wrapperHeight&&this.scrollerWidth&&this.scrollerHeight){if(!0===this.options.snap)for(r=i.round(d/2),a=i.round(c/2);h>-this.scrollerWidth;){for(this.pages[n]=[],e=0,s=0;s>-this.scrollerHeight;)this.pages[n][e]={x:i.max(h,this.maxScrollX),y:i.max(s,this.maxScrollY),width:d,height:c,cx:h-r,cy:s-a},s-=c,e++;h-=d,n++}else for(e=(o=this.options.snap).length,t=-1;n<e;n++)(0===n||o[n].offsetLeft<=o[n-1].offsetLeft)&&(l=0,t++),this.pages[l]||(this.pages[l]=[]),h=i.max(-o[n].offsetLeft,this.maxScrollX),s=i.max(-o[n].offsetTop,this.maxScrollY),r=h-i.round(o[n].offsetWidth/2),a=s-i.round(o[n].offsetHeight/2),this.pages[l][t]={x:h,y:s,width:o[n].offsetWidth,height:o[n].offsetHeight,cx:r,cy:a},h>this.maxScrollX&&l++;this.goToPage(this.currentPage.pageX||0,this.currentPage.pageY||0,0),this.options.snapThreshold%1==0?(this.snapThresholdX=this.options.snapThreshold,this.snapThresholdY=this.options.snapThreshold):(this.snapThresholdX=i.round(this.pages[this.currentPage.pageX][this.currentPage.pageY].width*this.options.snapThreshold),this.snapThresholdY=i.round(this.pages[this.currentPage.pageX][this.currentPage.pageY].height*this.options.snapThreshold))}}),this.on("flick",function(){var e=this.options.snapSpeed||i.max(i.max(i.min(i.abs(this.x-this.startX),1e3),i.min(i.abs(this.y-this.startY),1e3)),300);this.goToPage(this.currentPage.pageX+this.directionX,this.currentPage.pageY+this.directionY,e)})},_nearestSnap:function(e,t){if(!this.pages.length)return{x:0,y:0,pageX:0,pageY:0};var r=0,a=this.pages.length,s=0;if(i.abs(e-this.absStartX)<this.snapThresholdX&&i.abs(t-this.absStartY)<this.snapThresholdY)return this.currentPage;for(e>0?e=0:e<this.maxScrollX&&(e=this.maxScrollX),t>0?t=0:t<this.maxScrollY&&(t=this.maxScrollY);r<a;r++)if(e>=this.pages[r][0].cx){e=this.pages[r][0].x;break}for(a=this.pages[r].length;s<a;s++)if(t>=this.pages[0][s].cy){t=this.pages[0][s].y;break}return r==this.currentPage.pageX&&((r+=this.directionX)<0?r=0:r>=this.pages.length&&(r=this.pages.length-1),e=this.pages[r][0].x),s==this.currentPage.pageY&&((s+=this.directionY)<0?s=0:s>=this.pages[0].length&&(s=this.pages[0].length-1),t=this.pages[0][s].y),{x:e,y:t,pageX:r,pageY:s}},goToPage:function(e,t,r,a){a=a||this.options.bounceEasing,e>=this.pages.length?e=this.pages.length-1:e<0&&(e=0),t>=this.pages[e].length?t=this.pages[e].length-1:t<0&&(t=0);var s=this.pages[e][t].x,o=this.pages[e][t].y;r=void 0===r?this.options.snapSpeed||i.max(i.max(i.min(i.abs(s-this.x),1e3),i.min(i.abs(o-this.y),1e3)),300):r,this.currentPage={x:s,y:o,pageX:e,pageY:t},this.scrollTo(s,o,r,a)},next:function(e,t){var i=this.currentPage.pageX,r=this.currentPage.pageY;++i>=this.pages.length&&this.hasVerticalScroll&&(i=0,r++),this.goToPage(i,r,e,t)},prev:function(e,t){var i=this.currentPage.pageX,r=this.currentPage.pageY;--i<0&&this.hasVerticalScroll&&(i=0,r--),this.goToPage(i,r,e,t)},_initKeys:function(t){var i,r={pageUp:33,pageDown:34,end:35,home:36,left:37,up:38,right:39,down:40};if("object"==typeof this.options.keyBindings)for(i in this.options.keyBindings)"string"==typeof this.options.keyBindings[i]&&(this.options.keyBindings[i]=this.options.keyBindings[i].toUpperCase().charCodeAt(0));else this.options.keyBindings={};for(i in r)this.options.keyBindings[i]=this.options.keyBindings[i]||r[i];a.addEvent(e,"keydown",this),this.on("destroy",function(){a.removeEvent(e,"keydown",this)})},_key:function(e){if(this.enabled){var t,r=this.options.snap,s=r?this.currentPage.pageX:this.x,o=r?this.currentPage.pageY:this.y,n=a.getTime(),l=this.keyTime||0;switch(this.options.useTransition&&this.isInTransition&&(t=this.getComputedPosition(),this._translate(i.round(t.x),i.round(t.y)),this.isInTransition=!1),this.keyAcceleration=n-l<200?i.min(this.keyAcceleration+.25,50):0,e.keyCode){case this.options.keyBindings.pageUp:this.hasHorizontalScroll&&!this.hasVerticalScroll?s+=r?1:this.wrapperWidth:o+=r?1:this.wrapperHeight;break;case this.options.keyBindings.pageDown:this.hasHorizontalScroll&&!this.hasVerticalScroll?s-=r?1:this.wrapperWidth:o-=r?1:this.wrapperHeight;break;case this.options.keyBindings.end:s=r?this.pages.length-1:this.maxScrollX,o=r?this.pages[0].length-1:this.maxScrollY;break;case this.options.keyBindings.home:s=0,o=0;break;case this.options.keyBindings.left:s+=r?-1:5+this.keyAcceleration>>0;break;case this.options.keyBindings.up:o+=r?1:5+this.keyAcceleration>>0;break;case this.options.keyBindings.right:s-=r?-1:5+this.keyAcceleration>>0;break;case this.options.keyBindings.down:o-=r?1:5+this.keyAcceleration>>0;break;default:return}r?this.goToPage(s,o):(s>0?(s=0,this.keyAcceleration=0):s<this.maxScrollX&&(s=this.maxScrollX,this.keyAcceleration=0),o>0?(o=0,this.keyAcceleration=0):o<this.maxScrollY&&(o=this.maxScrollY,this.keyAcceleration=0),this.scrollTo(s,o,0),this.keyTime=n)}},_animate:function(e,t,i,s){var o=this,n=this.x,l=this.y,h=a.getTime(),d=h+i;this.isAnimating=!0,function c(){var p,u,m,f=a.getTime();if(f>=d)return o.isAnimating=!1,o._translate(e,t),void(o.resetPosition(o.options.bounceTime)||o._execEvent("scrollEnd"));m=s(f=(f-h)/i),p=(e-n)*m+n,u=(t-l)*m+l,o._translate(p,u),o.isAnimating&&r(c)}()},handleEvent:function(e){switch(e.type){case"touchstart":case"MSPointerDown":case"mousedown":this._start(e);break;case"touchmove":case"MSPointerMove":case"mousemove":this._move(e);break;case"touchend":case"MSPointerUp":case"mouseup":case"touchcancel":case"MSPointerCancel":case"mousecancel":this._end(e);break;case"orientationchange":case"resize":this._resize();break;case"transitionend":case"webkitTransitionEnd":case"oTransitionEnd":case"MSTransitionEnd":this._transitionEnd(e);break;case"wheel":case"DOMMouseScroll":case"mousewheel":this._wheel(e);break;case"keydown":this._key(e);break;case"click":e._constructed||(e.preventDefault?e.preventDefault():e.returnValue=!1,e.stopPropagation())}}},n.prototype={handleEvent:function(e){switch(e.type){case"touchstart":case"MSPointerDown":case"mousedown":this._start(e);break;case"touchmove":case"MSPointerMove":case"mousemove":this._move(e);break;case"touchend":case"MSPointerUp":case"mouseup":case"touchcancel":case"MSPointerCancel":case"mousecancel":this._end(e)}},destroy:function(){this.options.interactive&&(a.removeEvent(this.indicator,"touchstart",this),a.removeEvent(this.indicator,"MSPointerDown",this),a.removeEvent(this.indicator,"mousedown",this),a.removeEvent(e,"touchmove",this),a.removeEvent(e,"MSPointerMove",this),a.removeEvent(e,"mousemove",this),a.removeEvent(e,"touchend",this),a.removeEvent(e,"MSPointerUp",this),a.removeEvent(e,"mouseup",this)),this.options.defaultScrollbars&&this.wrapper.parentNode.removeChild(this.wrapper)},_start:function(t){var i=t.touches?t.touches[0]:t;t.preventDefault?t.preventDefault():t.returnValue=!1,t.stopPropagation(),this.transitionTime(),this.initiated=!0,this.moved=!1,this.lastPointX=i.pageX,this.lastPointY=i.pageY,this.startTime=a.getTime(),this.options.disableTouch||a.addEvent(e,"touchmove",this),this.options.disablePointer||a.addEvent(e,"MSPointerMove",this),this.options.disableMouse||a.addEvent(e,"mousemove",this),this.scroller._execEvent("beforeScrollStart")},_move:function(e){var t,i,r,s,o=e.touches?e.touches[0]:e;a.getTime();this.moved||this.scroller._execEvent("scrollStart"),this.moved=!0,t=o.pageX-this.lastPointX,this.lastPointX=o.pageX,i=o.pageY-this.lastPointY,this.lastPointY=o.pageY,r=this.x+t,s=this.y+i,this._pos(r,s),e.preventDefault?e.preventDefault():e.returnValue=!1,e.stopPropagation()},_end:function(t){if(this.initiated){if(this.initiated=!1,t.preventDefault?t.preventDefault():t.returnValue=!1,t.stopPropagation(),a.removeEvent(e,"touchmove",this),a.removeEvent(e,"MSPointerMove",this),a.removeEvent(e,"mousemove",this),this.scroller.options.snap){var r=this.scroller._nearestSnap(this.scroller.x,this.scroller.y),s=this.options.snapSpeed||i.max(i.max(i.min(i.abs(this.scroller.x-r.x),1e3),i.min(i.abs(this.scroller.y-r.y),1e3)),300);this.scroller.x==r.x&&this.scroller.y==r.y||(this.scroller.directionX=0,this.scroller.directionY=0,this.scroller.currentPage=r,this.scroller.scrollTo(r.x,r.y,s,this.scroller.options.bounceEasing))}this.moved&&this.scroller._execEvent("scrollEnd")}},transitionTime:function(e){e=e||0,this.indicatorStyle[a.style.transitionDuration]=e+"ms",!e&&a.isBadAndroid&&(this.indicatorStyle[a.style.transitionDuration]="0.001s")},transitionTimingFunction:function(e){this.indicatorStyle[a.style.transitionTimingFunction]=e},refresh:function(){this.transitionTime(),this.options.listenX&&!this.options.listenY?this.indicatorStyle.display=this.scroller.hasHorizontalScroll?"block":"none":this.options.listenY&&!this.options.listenX?this.indicatorStyle.display=this.scroller.hasVerticalScroll?"block":"none":this.indicatorStyle.display=this.scroller.hasHorizontalScroll||this.scroller.hasVerticalScroll?"block":"none",this.scroller.hasHorizontalScroll&&this.scroller.hasVerticalScroll?(a.addClass(this.wrapper,"iScrollBothScrollbars"),a.removeClass(this.wrapper,"iScrollLoneScrollbar"),this.options.defaultScrollbars&&this.options.customStyle&&(this.options.listenX?this.wrapper.style.right="8px":this.wrapper.style.bottom="8px")):(a.removeClass(this.wrapper,"iScrollBothScrollbars"),a.addClass(this.wrapper,"iScrollLoneScrollbar"),this.options.defaultScrollbars&&this.options.customStyle&&(this.options.listenX?this.wrapper.style.right="2px":this.wrapper.style.bottom="2px"));this.wrapper.offsetHeight;this.options.listenX&&(this.wrapperWidth=this.wrapper.clientWidth,this.options.resize?(this.indicatorWidth=i.max(i.round(this.wrapperWidth*this.wrapperWidth/(this.scroller.scrollerWidth||this.wrapperWidth||1)),8),this.indicatorStyle.width=this.indicatorWidth+"px"):this.indicatorWidth=this.indicator.clientWidth,this.maxPosX=this.wrapperWidth-this.indicatorWidth,"clip"==this.options.shrink?(this.minBoundaryX=8-this.indicatorWidth,this.maxBoundaryX=this.wrapperWidth-8):(this.minBoundaryX=0,this.maxBoundaryX=this.maxPosX),this.sizeRatioX=this.options.speedRatioX||this.scroller.maxScrollX&&this.maxPosX/this.scroller.maxScrollX),this.options.listenY&&(this.wrapperHeight=this.wrapper.clientHeight,this.options.resize?(this.indicatorHeight=i.max(i.round(this.wrapperHeight*this.wrapperHeight/(this.scroller.scrollerHeight||this.wrapperHeight||1)),8),this.indicatorStyle.height=this.indicatorHeight+"px"):this.indicatorHeight=this.indicator.clientHeight,this.maxPosY=this.wrapperHeight-this.indicatorHeight,"clip"==this.options.shrink?(this.minBoundaryY=8-this.indicatorHeight,this.maxBoundaryY=this.wrapperHeight-8):(this.minBoundaryY=0,this.maxBoundaryY=this.maxPosY),this.maxPosY=this.wrapperHeight-this.indicatorHeight,this.sizeRatioY=this.options.speedRatioY||this.scroller.maxScrollY&&this.maxPosY/this.scroller.maxScrollY),this.updatePosition()},updatePosition:function(){var e=this.options.listenX&&i.round(this.sizeRatioX*this.scroller.x)||0,t=this.options.listenY&&i.round(this.sizeRatioY*this.scroller.y)||0;this.options.ignoreBoundaries||(e<this.minBoundaryX?("scale"==this.options.shrink&&(this.width=i.max(this.indicatorWidth+e,8),this.indicatorStyle.width=this.width+"px"),e=this.minBoundaryX):e>this.maxBoundaryX?"scale"==this.options.shrink?(this.width=i.max(this.indicatorWidth-(e-this.maxPosX),8),this.indicatorStyle.width=this.width+"px",e=this.maxPosX+this.indicatorWidth-this.width):e=this.maxBoundaryX:"scale"==this.options.shrink&&this.width!=this.indicatorWidth&&(this.width=this.indicatorWidth,this.indicatorStyle.width=this.width+"px"),t<this.minBoundaryY?("scale"==this.options.shrink&&(this.height=i.max(this.indicatorHeight+3*t,8),this.indicatorStyle.height=this.height+"px"),t=this.minBoundaryY):t>this.maxBoundaryY?"scale"==this.options.shrink?(this.height=i.max(this.indicatorHeight-3*(t-this.maxPosY),8),this.indicatorStyle.height=this.height+"px",t=this.maxPosY+this.indicatorHeight-this.height):t=this.maxBoundaryY:"scale"==this.options.shrink&&this.height!=this.indicatorHeight&&(this.height=this.indicatorHeight,this.indicatorStyle.height=this.height+"px")),this.x=e,this.y=t,this.scroller.options.useTransform?this.indicatorStyle[a.style.transform]="translate("+e+"px,"+t+"px)"+this.scroller.translateZ:(this.indicatorStyle.left=e+"px",this.indicatorStyle.top=t+"px")},_pos:function(e,t){e<0?e=0:e>this.maxPosX&&(e=this.maxPosX),t<0?t=0:t>this.maxPosY&&(t=this.maxPosY),e=this.options.listenX?i.round(e/this.sizeRatioX):this.scroller.x,t=this.options.listenY?i.round(t/this.sizeRatioY):this.scroller.y,this.scroller.scrollTo(e,t)},fade:function(e,t){if(!t||this.visible){clearTimeout(this.fadeTimeout),this.fadeTimeout=null;var i=e?250:500,r=e?0:300;e=e?"1":"0",this.wrapperStyle[a.style.transitionDuration]=i+"ms",this.fadeTimeout=setTimeout(function(e){this.wrapperStyle.opacity=e,this.visible=+e}.bind(this,e),r)}}},s.utils=a,"undefined"!=typeof module&&module.exports?module.exports=s:SYNO.SDS.StorageAnalyzer.IScroll=s}(window,document,Math),function(){var e=function(e){var t=e.clone();return t.setHours(0),t.setMinutes(0),t.setSeconds(0),t.setMilliseconds(0),t},t=function(e){var t=e.clone();return t.setHours(0),t.setMinutes(0),t.setSeconds(0),t.setMilliseconds(0),t.setDate(1),t},i=function(e,t,i){return new Ext.Template(t,{compiled:!0,disableFormats:!0}).append(e,i||{},!0)},r=function(e){return["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"][e.getMonth()]};Ext.define("SYNO.SDS.StorageAnalyzer.TimeLine",{extend:"Ext.Panel",calendar:null,minDate:null,maxDate:null,selectedDate:null,_elMonth:null,_elTimeline:null,OFF_X_RESERVED_RIGHT:0,CALIBRATION_TPL:'<div class="timeline-calibration-bg"><div class="timeline-calibration {0}"></div></div>',constructor:function(t){var i=new Date;t.selectedDate&&(this._selectedDate=t.selectedDate,delete t.selectedDate),t.markedDate&&(Ext.isArray(t.markedDate)?this._markedDate=t.markedDate:this._markedDate=[t.markedDate],delete t.markedDate);var r=Ext.apply({owner:t.owner,border:!1,frame:!1,cls:"syno-sds-timeline-cmp "+t.cls,minDate:t.minDate||i.add(Date.MONTH,-1),maxDate:t.maxDate||i.add(Date.MONTH,1)},t);return r.minDate=e(r.minDate),r.maxDate=e(r.maxDate),this._elMonth={},this.renderedMon=[],this.markedDate=[],this.callParent([r])},initComponent:function(){this.callParent(arguments),this.addEvents("select"),this.mon(this,"afterrender",this.onAfterRender,this),this.mon(this,"resize",this.onCmpResize,this)},onAfterRender:function(){var e=new Date;this.OFF_X_RESERVED_RIGHT=this.getWidth()/2+15,this.renderTimeLine(),this.setDateInterval(this.minDate,this.maxDate),this.renderMonth(e),this.updateCurrentView(),this.initData()},onCmpResize:function(e,t){t&&(this.OFF_X_RESERVED_RIGHT=t/2+15,this.scroll&&this.resizeScroller(),this.updateMonthEl(),this.selectedDate&&this.scrollToDate(this.selectedDate,0),this.preW=this.getWidth())},initData:function(){var e;if(this._markedDate)for(e=0;e<this._markedDate.length;e++)this.markDate(this._markedDate[e]);this._selectedDate&&this.selectDate(this._selectedDate)},getScrollerWidth:function(){return this._elTimeline.child(".syno-utils-timeline-scroller").getWidth()},setScrollerWidth:function(e){return this._elTimeline.child(".syno-utils-timeline-scroller").setWidth(e)},getDateByOffsetX:function(e,t){void 0===e&&(e=-this.scroll.x);var i=t||this.getWidth(),r=-Math.ceil((this.getScrollerWidth()-i-e)/30);return this.maxDate.add(Date.DAY,r)},getOffsetXByDate:function(t){var i=e(t);return this.getScrollerWidth()-this.OFF_X_RESERVED_RIGHT-(this.maxDate-i)/864e5*30},getOffsetXByMonthDate:function(e){return this.getOffsetXByDate(e.getFirstDateOfMonth())},getMonthEl:function(e){var t=e.getFirstDateOfMonth();return this._elMonth[t.format("Y/m/d")]},setMonthEl:function(e,t){var i=e.getFirstDateOfMonth();this._elMonth[i.format("Y/m/d")]=t},getDomByDate:function(e){return this.getMonthEl(e).dom.childNodes[e.getDate()]},renderTimeLine:function(){var e=this,t=i(e.getEl(),['<div class="{wrapper_cls}">','<div class="{pin_cls}"></div>','<div class="{scroller_cls}"></div>','<button class="{calendar_cls}"></button>',"</div>"],{wrapper_cls:"syno-utils-timeline-wrapper",scroller_cls:"syno-utils-timeline-scroller",calendar_cls:"timeline-calendar",pin_cls:"syno-utils-timeline-pin"});return e.scroll=new SYNO.SDS.StorageAnalyzer.IScroll(t.dom,{scrollX:!0,scrollY:!1,scroller:t.dom.children[1],mouseWheel:!0,deceleration:.01,startX:1.2*this.getWidth()-10980,tap:!Ext.isIE8}),t.on(Ext.isIE8?"click":"tap",function(t,i,r){var a=null,s=Ext.get(i);s.hasClass("timeline-calendar")?e.onCalendarClick(i):s.hasClass("selected-time")||s.hasClass("dot")?(a=i.parentNode.parentNode,e.onDateClick(a)):"B"===i.tagName&&((a=i.parentNode)!==e._lastClickDom?e.onDateClick(a):a=null),e._lastClickDom=a}),e.scroll.on("scrollEnd",function(){e.updateCurrentView()}),e._elTimeline=t,t},updateMonthEl:function(){var e,t,i;for(e in this._elMonth)Object.prototype.hasOwnProperty.call(this._elMonth,e)&&(t=this._elMonth[e],i=this.getOffsetXByMonthDate(new Date(e)),t.dom.style.left=i+"px")},renderMonth:function(e){if(this.getMonthEl(e))return this.getMonthEl(e);var t,a,s=this.CALIBRATION_TPL,o=e.getDaysInMonth(),n=['<ul class="timeline-month" data-mon="{monId}" style="left:{offsetX}px; width:{width}px">','<div class="month-label">{month}</div>'];for(t=1;t<=o;t+=1)t%2==0&&t!==o?n.push('<li data-day="'+t+'">'+s+"<a>"+t+"</a></li>"):n.push('<li data-day="'+t+'">'+s+"</li>");n.push("</ul>");var l,h=this.getMonthId(e);for((a=i(this._elTimeline.child(".syno-utils-timeline-scroller"),n,{offsetX:this.getOffsetXByMonthDate(e),month:r(e),monId:h,width:30*o})).date=e.getFirstDateOfMonth(),this.setMonthEl(e,a),this.renderedMon.push(h),t=1;t<=o;t++)l=h.replace("-","/")+"/"+t,this.isMarked(l)&&this.renderDate(l);return a},scrollToDate:function(e,t){var i=-this.getOffsetXByDate(e)+this.getWidth()-this.OFF_X_RESERVED_RIGHT,r=Ext.isDefined(t)?t:700;this.scroll.scrollTo(i,0,r)},updateMonthOffset:function(){for(var e in this._elMonth)this._elMonth[e]&&this._elMonth[e].setLeft(this.getOffsetXByDate(this._elMonth[e].date))},resizeScroller:function(){var e=30*((this.maxDate.getTime()-this.minDate.getTime())/864e5)+this.getWidth(),t=this.getDateByOffsetX(-this.scroll.x,this.preW);this.setScrollerWidth(e),this.updateMonthOffset(),this.updateMonthEl(),this.scroll.refresh(),this.scrollToDate(t,0)},renderDate:function(e,t){"object"!=typeof e&&(e=new Date(e));var i=this.getDomByDate(e),r=Ext.get(i),a=e.getDate(),s=this.CALIBRATION_TPL;if(r.removeClass("date-marked"),r.removeClass("date-selected"),a%2==0&&a!==e.getDaysInMonth()&&(s+="<a>"+a+"</a>"),t){s=String.format(s,"hidden"),r.addClass("date-selected");const t=e.format("Y-m-d H:i"),a=SYNO.SDS.DateTimeFormatter?SYNO.SDS.DateTimeFormatter(e,{type:"datetime"}):t;i.innerHTML='<div class="selection-tag"><div class="selected-time">'+a+'</div></div><div class="selection-arrow"></div><b><div class="tag-line"></div><div class="dot"></div></b>'+s;var o=this.el.child(".selection-tag"),n=this.el.child(".selection-arrow");o.alignTo(this.getDomByDate(e),"t-t"),n.alignTo(o,"t-b",[0,0])}else this.isMarked(e)?(s=String.format(s,"hidden"),i.innerHTML='<b><div class="dot"></div></b>'+s,r.addClass("date-marked")):i.innerHTML=s;return Array.from(document.querySelectorAll(".date-marked b")).forEach(e=>{e.addEventListener("mousedown",()=>{e.classList.add("active-mark");const t=()=>{e.classList.remove("active-mark"),document.removeEventListener("mouseup",t)};document.addEventListener("mouseup",t)})}),i},inValidRange:function(e){"object"!=typeof e&&(e=new Date(e));var t=e.valueOf(),i=this.minDate.valueOf(),r=this.maxDate.add(Date.DAY,1).valueOf()-1;return!(t<i||t>r)},isSelected:function(e){return!!this.selectedDate&&this.getDateId(e)===this.getDateId(this.selectedDate)},isMarked:function(e){return-1!==this.getMarkedIdx(e)},getMarkedIdx:function(e){var t,i=this.getDateId(e),r=this.markedDate.length;for(t=0;t<r;t++)if(i==this.getDateId(this.markedDate[t]))return t;return-1},isValidDate:function(e){return"object"!=typeof e&&(e=new Date(e)),"[object Date]"===Object.prototype.toString.call(e)&&!isNaN(e.getTime())},selectDate:function(e){"object"!=typeof e&&(e=new Date(e)),this.isValidDate(e)&&this.inValidRange(e)&&(this.selectedDate&&this.renderDate(this.selectedDate,!1),this.monthRendered(e)||this.renderMonth(e),this.renderDate(e,!0),this.scrollToDate(e),this.fireEvent("select",e),this.selectedDate=e)},unselectDate:function(e){"object"!=typeof e&&(e=new Date(e)),this.selectedDate=null,this.renderDate(e,!1)},markDate:function(e){"object"!=typeof e&&(e=new Date(e)),this.isValidDate(e)&&this.inValidRange(e)&&(this.isMarked(e)||(this.markedDate.push(e),this.monthRendered(e)&&this.renderDate(e)))},unmarkDate:function(e){var t=this.getMarkedIdx(e);-1!==t&&(this.markedDate.splice(t,1),this.renderDate(e))},getDateId:function(e){return"object"!=typeof e&&(e=new Date(e)),e.format("Y/m/d")},getMonthId:function(e){return"object"!=typeof e&&(e=new Date(e)),e.format("Y-m")},updateCurrentView:function(){var e=this.getDateByOffsetX(-this.scroll.x),t=this.getPreloadWindow(e,3);t&&this.preloadMonths(t.minDate,t.maxDate)},preloadMonths:function(e,t){for(;t>=e;)this.renderMonth(t),t=t.add(Date.MONTH,-1)},onCalendarClick:function(e){this.calendar=this.calendar||this.createDateTimeMenu(),this.calendar.show(e,"bl-tl?")},createDateTimeMenu:function(){return new SYNO.ux.DateTimeMenu({pickerCfg:{dateFormat:"Y/n/j",minDate:this.minDate,maxDate:this.maxDate,isAllDay:!0,hideClearButton:!0},listeners:{select:(e,t)=>{this.scrollToDate(t),this.calendar.hide()}}})},getMarkedDateById:function(e){var t,i=this.markedDate.length;for(t=0;t<i;t++)if(e===this.getDateId(this.markedDate[t]))return this.markedDate[t];return null},onDateClick:function(e){var t=e.getAttribute("data-day"),i=e.parentNode.getAttribute("data-mon"),r=this.getDateId(new Date(i.replace("-","/")+"/"+t)),a=this.getMarkedDateById(r);this.isSelected(a)||this.selectDate(a)},setDateInterval:function(i,r){return this.minDate=e(i),this.maxDate=e(r),this.minMon=t(i),this.maxMon=t(r),this.calendar&&(this.calendar.picker.setMinDate(this.minDate),this.calendar.picker.setMaxDate(this.maxDate)),this.resizeScroller(),this},getPreloadWindow:function(e,i){var r={},a=t(e),s=!1;if(r.maxDate=a,r.minDate=a,!this.monthRendered(a)||(this.monthRendered(a.add(Date.MONTH,-1))||(r.minDate=a.add(Date.MONTH,-1),s=!0),this.monthRendered(a.add(Date.MONTH,1))||(r.maxDate=a.add(Date.MONTH,1),s=!0),s)){for(var o,n;!0===s;)s=!1,o=r.minDate.add(Date.MONTH,-1),n=r.maxDate.add(Date.MONTH,1),!this.monthRendered(o)&&0<i&&(r.minDate=o,--i,s=!0),!this.monthRendered(n)&&0<i&&(r.maxDate=n,--i,s=!0);return r}},monthRendered:function(e){var t=e.format("Y-m");return-1!==this.renderedMon.indexOf(t)}})}(),Ext.define("SYNO.SDS.StorageAnalyzer.ProfileView",{extend:"SYNO.ux.FleXcroll.DataView",restoreSelectionState:!0,constructor:function(e){var t=this;t.callParent([t.fillConfig(e)]),t.addClass("syno-ux-expandable-listview"),t.mon(t,"click",t.onClickEntry,t)},initComponent:function(){this.callParent(arguments),this.addEvents("enterEntry")},fillConfig:function(e){var t={tpl:this.createTpl(),cls:"profile-view",selectedClass:"item-selected",overClass:"item-over",itemSelector:"div.item-wrap",trackResetOnLoad:!1,prepareData:function(e){return e.title=Ext.util.Format.htmlEncode(e.profile_name),e.simpleProfileStatus=this.getSimpleProfileStatus(e),e.schedule=this.getSchedule(e),e.statusIconCls=this.getStatusIconCls(e,e.status),e.statusCls=this.getStatusCls(e,e.status),e.entryCls=e.is_analyzer_ready?"enabled":"disabled",e}.createDelegate(this)};return Ext.apply(t,e),t},createTpl:function(){return new Ext.XTemplate('<tpl for=".">','<div class="item-wrap {cls}">','<div class="item-summary">','<div class="item-icon {statusIconCls}" ext:qtip="{simpleProfileStatus}"></div>','<div class="item-desc">','<div class="item-title {titleCls}">{title}<span class="{statusCls}"> - {simpleProfileStatus}</span></div>','<div class="item-schedule normal-font" ext:qtip="{schedule:htmlEncode}">{schedule:htmlEncode}</div>',"</div>",'<div class="item-entry {entryCls}"><div class="item-entry-img"></div></div>',"</div>","</div>","</tpl>",'<div class="x-clear"></div>')},getStatusIconCls:function(e,t){var i="profile-ready";return"collect_data"===t?i="profile-running":"success"===t?e.link&&(i="profile-success"):"fail"===t&&(i="profile-error"),i},getStatusCls:function(e,t){var i="normal-font";return"collect_data"===t?i="blue-status":"success"===t?e.link&&(i="green-status"):"fail"===t&&(i="red-status"),i},getSchedule:function(e){var t=0,i=[],r=e.week_day;if(!e.enable_schedule||Ext.isEmpty(r))return"--:--";for(t=0;t<r.length;t++)"1"===r[t]&&i.push(SYNO.SDS.StorageAnalyzer.UsageReport.WEEK_VALUE[t]);return String.format("({0}:{1}) {2}",String.leftPad(e.hour,2,"0"),String.leftPad(e.minute,2,"0"),i.join(", "))},getSimpleProfileStatus:function(e){var t,i=e.status;return t="collect_data"===i?SYNO.SDS.StorageAnalyzer._T("report","status_running"):"success"===i?e.link?SYNO.SDS.StorageAnalyzer._T("report","status_success"):SYNO.SDS.StorageAnalyzer._T("report","status_ready"):"fail"===i?SYNO.SDS.StorageAnalyzer._T("report","status_fail"):SYNO.SDS.StorageAnalyzer._T("report","status_ready"),Ext.util.Format.htmlEncode(t)},onClickEntry:function(e,t,i,r){var a=Ext.fly(i).child(".item-entry");r.within(a)&&this.fireEvent("enterEntry",e,t,i,r)},refreshData:function(e){this.getStore().loadData(e)}}),Ext.define("SYNO.SDS.StorageAnalyzer.UsageReport.ProfileView",{extend:"SYNO.ux.Panel",blLocationCheck:!0,blCreateProfileIfNotExist:!0,locationInvalidReason:void 0,constructor:function(e){this.owner=e.owner,this.tbar=this.initToolBar(),this.ctxMenu=new SYNO.SDS.StorageAnalyzer.UsageReport.CtxMenu({scope:this}),this.reasons=[],Ext.apply(this,{WAIT_FOR_WEBAPI_RESPONSE:{text:_T("common","loading"),id:0},WAIT_FOR_REPORT_DELETE:{text:_T("common","saving"),id:1},WAIT_FOR_REPORT_EXPORT:{text:_T("common","msg_waiting"),id:2},WAIT_FOR_REPORT_MOVE:{text:SYNO.SDS.StorageAnalyzer._T("report","msg_moving_reports"),id:3},GET_REPORT_LIST_FAILED:{text:_T("common","error_system"),id:4},GET_REPORT_CONFIG_FAILED:{text:_T("common","error_system"),id:5}}),this.store=this.createStore(),this.profileView=new SYNO.SDS.StorageAnalyzer.ProfileView({owner:this,singleSelect:!0,store:this.store,listeners:{scope:this,contextmenu:{fn:this.showContextMenu},selectionchange:{fn:this.onSelectionChange},dblclick:{fn:this.onDoubleClickProfile},enterEntry:{fn:this.onClickEntry},mouseenter:{fn:this.onMouseEnter},mouseleave:{fn:this.onMouseLeave}}});var t={cls:"profile-grid",title:SYNO.SDS.StorageAnalyzer._T("report","analyzer_profile")||"Analyzer Profile",layout:"fit",items:[this.profileView]};Ext.apply(e,t),this.callParent([e]),this.addEvents("refreshdata","stopupdate","enterdetailview")},stopPolling:function(){this.stopPollTask()},initToolBar:function(){var e;return this.buttonProfileCreate=new SYNO.ux.Button({itemId:"buttonProfileCreate",text:_T("common","create"),handler:this.onCreate,disabled:_S("demo_mode"),tooltip:_S("demo_mode")?_JSLIBSTR("uicommon","error_demo"):"",scope:this}),this.buttonProfileEdit=new SYNO.ux.Button({itemId:"buttonProfileEdit",text:_T("common","alt_edit"),handler:this.onEdit,disabled:!0,tooltip:_S("demo_mode")?_JSLIBSTR("uicommon","error_demo"):"",scope:this}),this.buttonProfileDelete=new SYNO.ux.Button({itemId:"buttonProfileDelete",text:_T("common","delete"),handler:this.onDelete,disabled:!0,tooltip:_S("demo_mode")?_JSLIBSTR("uicommon","error_demo"):"",scope:this}),this.itemReportHistory=new Ext.menu.Item({itemId:"itemReportHistory",text:SYNO.SDS.StorageAnalyzer._T("report","button_report_old_get"),handler:this.onGetOldReport,disabled:!0,scope:this}),this.itemReportGenerate=new Ext.menu.Item({itemId:"itemReportGenerate",text:SYNO.SDS.StorageAnalyzer._T("report","button_report_create_now"),handler:this.onGenerateReport,scope:this,disabled:!0}),this.menuReport=new SYNO.ux.Button({itemId:"ReportMg",text:SYNO.SDS.StorageAnalyzer._T("report","button_report"),scope:this,menu:{items:[this.itemReportHistory,this.itemReportGenerate]}}),this.buttonSetting=new SYNO.ux.Button({disabled:this._S("demo_mode"),itemId:"Setting",text:SYNO.SDS.StorageAnalyzer._T("report","button_global_setting"),handler:this.onGlobalSetting,tooltip:this._S("demo_mode")?_JSLIBSTR("uicommon","error_demo"):"",scope:this}),(e=new Ext.Toolbar).add(this.buttonProfileCreate,this.buttonProfileEdit,this.buttonProfileDelete,this.menuReport,this.buttonSetting),e},createStore:function(){return new Ext.data.Store({proxy:new Ext.data.MemoryProxy([]),reader:new Ext.data.JsonReader({root:"reports",id:"id"},["id","profile_name","mail","enable_schedule","report_type","shares","status","week_day","hour","minute","link","is_analyzer_ready"]),remoteSort:!1})},startPollTask:function(e){e=!!e,this.stopPollTask(),this.addMask(this.WAIT_FOR_WEBAPI_RESPONSE),this.getPollTaskId=this.pollReg({interval:15,immediate:e,webapi:{api:"SYNO.Core.Report.Config",method:"get",version:1},scope:this,status_callback:function(e,t,i){e?this.checkGlobalSetting(t):(SYNO.Debug("Ajax load failure "+t),this.addMask(this.GET_REPORT_CONFIG_FAILED))}})},stopPollTask:function(){!Ext.isEmpty(this.getPollTaskId)&&this.pollUnreg(this.getPollTaskId)&&(this.getPollTaskId=null)},getTip:function(){var e=this;return e.tooltip?e.tooltip.rendered&&!e.tooltip.anchor&&(e.tooltip.anchor=e.tooltip.el.createChild({cls:"tooltip-anchor-bottom"})):(e.tooltip=new Ext.Tip({constrainPosition:!0,cls:"profile-tooltip",html:SYNO.SDS.StorageAnalyzer._T("report","analyze_profile_now"),showBy:function(e,t,i){this.rendered||this.render(Ext.getBody()),i=i||[0,0],this.showAt(this.el.getAlignToXY(e,t||this.defaultAlign,i))}}),e.tooltip.hide()),e.tooltip},onMouseEnter:function(e,t,i,r){var a=Ext.get(i).child(".item-entry");a.hasClass("disabled")||(this.getTip().show(),this.getTip().showBy(a,"b-t",[0,5]))},onMouseLeave:function(e,t,i,r){this.getTip().hide()},onBeforeAction:function(){return!!this.isLocationValid()||(this.popLocationMsgIfInvalid(),!1)},onDoubleClickProfile:function(e,t,i,r){this.enterDetalView(e.getRecord(i))},onClickEntry:function(e,t,i,r){this.enterDetalView(e.getRecord(i))},enterDetalView:function(e){!0===e.get("is_analyzer_ready")&&this.fireEvent("enterdetailview",this,e)},onSelectionChange:function(e,t){this.updateToolBarBts()},onCreate:function(){var e=this;e.onBeforeAction()&&(e.stopUpdateData(),SYNO.SDS.StorageAnalyzer.Utils.OpenProfileWizard({outPanel:e,owner:e.appWin},e.retriveData,e))},onGlobalSetting:function(){this.stopUpdateData(),SYNO.SDS.StorageAnalyzer.Utils.OpenGlobalSetting({outPanel:this,owner:this.appWin},this.retriveData,this)},onEdit:function(e,t){var i=this;if(i.onBeforeAction()){i.stopUpdateData();var r=i.profileView.getSelectedRecords()[0];Ext.isDefined(r)&&SYNO.SDS.StorageAnalyzer.Utils.OpenEditDialog({outPanel:this,owner:i.appWin,id:r.get("id"),profile_name:r.get("profile_name")},i.retriveData,i)}},onDelete:function(e,t){var i,r,a=this.profileView.getSelectedRecords()[0],s=this;Ext.isDefined(a)&&(r=a.get("id"),s.stopUpdateData(),i={api:"SYNO.Core.Report",method:"delete",version:1,scope:s,params:{id:r},callback:function(e,t,i){e?s.retriveData():s.appWin.getMsgBox().alert(SYNO.SDS.StorageAnalyzer._T("report","report_name"),_T("error","error_error_system")),s.removeMask(this.WAIT_FOR_REPORT_DELETE)}},s.stopUpdateData(),s.appWin.getMsgBox().confirmDelete(SYNO.SDS.StorageAnalyzer._T("report","report_name"),_T("common","remove_cfrmrmv"),function(e){"yes"===e?(s.addMask(this.WAIT_FOR_REPORT_DELETE),s.sendWebAPI(i)):s.retriveData()},s))},onGetOldReport:function(e,t){var i=this.profileView.getSelectedRecords()[0],r="",a="",s=this;Ext.isDefined(i)&&(r=i.get("id"),a=i.get("profile_name")),s.stopUpdateData(),SYNO.SDS.StorageAnalyzer.Utils.OpenHistoryDialog({outPanel:s,cls:"storage-report-history",owner:s.appWin,profile_name:a,profile_id:r},s.retriveData,s)},onGenerateReport:function(e,t){var i=this;if(i.onBeforeAction()){var r,a=i.profileView.getSelectedRecords()[0];if(Ext.isDefined(a))r={api:"SYNO.Core.Report",method:"export",version:1,scope:this,params:{id:a.get("id")},callback:function(e,t,r){e||i.appWin.getMsgBox().alert(SYNO.SDS.StorageAnalyzer._T("report","report_name"),_T("error","error_error_system")),i.retriveData(),i.removeMask(this.WAIT_FOR_REPORT_EXPORT)}},i.stopUpdateData(),i.addMask(this.WAIT_FOR_REPORT_EXPORT),i.sendWebAPI(r)}},showContextMenu:function(e,t,i,r){r.preventDefault();var a=!1;e.isSelected(t)||e.select(t),this.updateToolBarBts(),!0!==_S("demo_mode")&&(a="collect_data"===e.getSelectedRecords()[0].data.status,this.ctxMenu.setEditMenuDisabled(a),this.ctxMenu.setGenerateMenuDisabled(a)),this.ctxMenu.showAt(r.getXY())},updateToolBarBts:function(){var e=this.profileView,t=!1;_S("demo_mode")||(e.getSelectionCount()>0?(this.buttonProfileDelete.setDisabled(!1),this.menuReport.menu.items.get("itemReportHistory").enable(),"collect_data"===e.getSelectedRecords()[0].data.status?(this.menuReport.menu.items.get("itemReportGenerate").disable(),this.buttonProfileEdit.setDisabled(!0)):(this.menuReport.menu.items.get("itemReportGenerate").enable(),this.buttonProfileEdit.setDisabled(!1))):(this.buttonProfileEdit.setDisabled(!0),this.buttonProfileDelete.setDisabled(!0),this.menuReport.menu.items.get("itemReportHistory").disable(),this.menuReport.menu.items.get("itemReportGenerate").disable()),this.store.each(function(e){if("collect_data"===e.data.status)return t=!0,!1},this),this.buttonSetting.setDisabled(t))},checkGlobalSetting:function(e){Ext.isDefined(e.report_moving)?this.addMask(this.WAIT_FOR_REPORT_MOVE):(this.removeMask(this.WAIT_FOR_REPORT_MOVE),this.removeMask(this.WAIT_FOR_WEBAPI_RESPONSE),this.removeMask(this.GET_REPORT_CONFIG_FAILED),this.locationInvalidReason=(()=>!0===e.is_c2_share?SYNO.SDS.StorageAnalyzer._T("report","report_location_c2_error"):void 0===e.report_location?SYNO.SDS.StorageAnalyzer._T("report","report_location_error"):void 0)(),this.blLocationCheck&&this.popLocationMsgIfInvalid())},isLocationValid(){return null==this.locationInvalidReason},popLocationMsgIfInvalid(){this.isLocationValid()||this.appWin.getMsgBox().confirm("",this.locationInvalidReason,function(e,t,i){this.blLocationCheck=!1,"yes"===e&&this.onGlobalSetting()},this)},getStatus:function(e){this.store.loadData(e),this.updateToolBarBts(),this.popCreateProfileIfNeed(e)},popCreateProfileIfNeed:function(e){if(0===e.total&&this.blCreateProfileIfNotExist){var t=this;if(!this.isLocationValid())return;this.blCreateProfileIfNotExist=!1,t.stopUpdateData(),SYNO.SDS.StorageAnalyzer.Utils.OpenProfileWizard({outPanel:t,owner:t.appWin},t.retriveData,t)}},retriveData:function(){this.fireEvent("refreshdata",this)},stopUpdateData:function(){this.fireEvent("stopupdate",this)},refreshData:function(e){this.getStatus(e)},setMask:function(e){this.el.mask(e.text,"x-mask-loading")},addMask:function(e){this.reasons.every(t=>t.id!==e.id)&&(this.reasons=this.reasons.concat(e)),this.determineMask()},removeMask:function(e){this.reasons.some(t=>t.id===e.id)&&(this.reasons=this.reasons.filter(t=>t.id!==e.id)),this.determineMask()},determineMask:function(){0<this.reasons.length?this.setMask(this.reasons[this.reasons.length-1]):this.el.unmask()},removeAllMask:function(){this.el.unmask()},destroy:function(){this.stopUpdateData(),this.tooltip&&Ext.destroy(this.tooltip),this.callParent(arguments)}}),Ext.define("SYNO.SDS.StorageAnalyzer.DetailView.Main",{extend:"SYNO.ux.Panel",timeVersion:{},constructor:function(e){this.callParent([this.fillConfig(e)])},fillConfig:function(e){this.pageListPanel=new SYNO.SDS.StorageAnalyzer.DetailView.PageListPanel({appWin:e.appWin,owner:e.appWin,module:this,region:"center",onHome:()=>this.fireEvent("enteroverview"),onEdit:()=>this.onEdit(),onViewReport:()=>this.onViewReport()});const t={xtype:"container",margins:{top:8,right:0,bottom:0,left:0},cls:"timeline",height:82,ref:"timeLineContainer",region:"south",listeners:{resize:e=>{void 0!==e.items&&e.items.each(e=>{e.fireEvent("resize",e,e.getWidth())})}}};var i={layout:"border",cls:"storage-report-dataview",items:[this.pageListPanel,t],listeners:{scope:this,deactivate:this.onDeactivate}};return Ext.apply(i,e),i},onResize:function(e,t){this.callParent(arguments)},onEdit:function(){SYNO.SDS.StorageAnalyzer.Utils.OpenEditDialog({outPanel:this,owner:this.appWin,id:this.record.get("id"),record:this.record,profile_name:this.record.get("profile_name")},Ext.emptyFn,this)},onViewReport:function(){window.open(Ext.urlAppend("/dar/"+this.record.id+"/"+this.record.time+"/report.html"),"_blank")},getTimeLine:function(){var e=this,t={id:e.record.id};this.pageListPanel.enableViewReportItem(!1),e.timeLine&&e.timeLine.getEl()&&e.timeLine.getEl().mask(_T("common","loading"),"x-mask-loading"),e.sendWebAPI({api:"SYNO.Core.Report.History",method:"get",version:1,scope:this,params:t,callback:function(t,i,r){t?(e.createTimeLine(i,r),this.pageListPanel.enableViewReportItem(this.record.get("link"))):e.timeLine&&e.timeLine.getEl()&&e.timeLine.getEl().mask(_T("common","error_system"),"x-mask-loading")}})},createTimeLine:function(e,t){var i,r,a,s,o=this,n=[],l=e.histories,h={};for(o.timeLine&&o.timeLineContainer.remove(o.timeLine,!0),s=l.length-1;s>=0&&!0===(h=l[s]).is_analyzer_ready;s--)r!==(i=h.time.split("_"))[0].replace(/-/g,"/")&&(r=i[0].replace(/-/g,"/"),a="",i[1]&&(a=i[1].replace(/-/g,":")),n.push(String.format("{0} {1}",r,a)),o.timeVersion[h.time]=h.version);o.timeLine=new SYNO.SDS.StorageAnalyzer.TimeLine({appWin:o.appWin,owner:o.appWin,module:this,selectedDate:new Date(n.length>0?n[0]:""),maxDate:new Date(n.length>0?n[0]:""),minDate:new Date(n.length>0?n[n.length-1]:""),markedDate:n,is_confirm_duplicate_ready:l[l.length-1].is_confirm_duplicate_ready,is_analyzer_ready:l[l.length-1].is_analyzer_ready,duplicate_stat:o.getDuplicateStat(l),version:l[l.length-1].version,listeners:{scope:o,select:{fn:function(e){o.record&&(o.record.time=e.format("Y-m-d_H-i-s"),o.setDuplicatePageList(o.timeLine.duplicate_stat[o.record.time]),o.pageListPanel.activePage.fireEvent("activate"))}}}}),o.timeLineContainer.add(o.timeLine),o.timeLineContainer.doLayout()},getDuplicateStat:function(e){var t={};return e.forEach(function(e,i,r){t[e.time]={visible:e.is_duplicate_visible,full_checked:e.is_confirm_duplicate_ready}}),t},setDuplicatePageList:function(e){var t=this.pageListPanel.getPageList(),i=t.getNodeById("SYNO.SDS.StorageAnalyzer.DetailView.Duplicate");if(!e.visible)return t.getSelectionModel().isSelected(i)&&(t.getSelectionModel().unselect(i,!0),this.pageListPanel.selectPage("SYNO.SDS.StorageAnalyzer.DetailView.Usage")),void this.pageListPanel.setListItemDisabled({Duplicate:!0});this.pageListPanel.setListItemDisabled({Duplicate:!1}),e.full_checked?this.pageListPanel.adjustNodeText("SYNO.SDS.StorageAnalyzer.DetailView.Duplicate",SYNO.SDS.StorageAnalyzer._T("report","reportUI_duplicate_accurate_list")):this.pageListPanel.adjustNodeText("SYNO.SDS.StorageAnalyzer.DetailView.Duplicate",SYNO.SDS.StorageAnalyzer._T("storage_report","duplicates"))},onDeactivate:function(){this.pageListPanel.activePage&&this.pageListPanel.activePage.fireEvent("deactivate"),delete this.timeline,delete this.timeVersion,this.timeVersion={}},setProfile:function(e){var t=!!this.record&&this.record.id===e.id;this.record=e,this.getTimeLine(),this.pageListPanel.activePage&&t?this.pageListPanel.activePage.fireEvent("activate"):this.pageListPanel.selectPage("SYNO.SDS.StorageAnalyzer.DetailView.Usage")}}),Ext.define("SYNO.SDS.StorageAnalyzer.Overview",{extend:"SYNO.ux.Panel",constructor:function(e){Ext.applyIf(this,{owner:e.owner});var t=this.fillConfig(e);this.callParent([t])},initEvents:function(){this.callParent(arguments),this.relayEvents(this.profileView,["enterdetailview"])},fillConfig:function(e){this.profileView=new SYNO.SDS.StorageAnalyzer.UsageReport.ProfileView({appWin:this.owner,owner:this,region:"south",header:!0,height:176,listeners:{scope:this,refreshdata:{fn:function(){this.startPollTask(!0)}},stopupdate:{fn:function(){this.stopPollTask()}}}});var t={cls:"storage-report-overview",layout:"border",items:[this.volumeUsagePanel=new SYNO.SDS.StorageAnalyzer.VolumeUsage.Panel({border:!1,region:"center",owner:e.owner,appWin:e.appWin}),this.profileView],listeners:{activate:{fn:function(){this.startPollTask(!0)},scope:this,buffer:100},deactivate:{fn:this.stopPollTask,scope:this,buffer:100}}};return Ext.apply(t,e)},startPollTask:function(e){this.stopPollTask(),this.volumeUsagePanel.startPollTask(!0),this.profileView.startPollTask(!0),this.listPollTaskId=this.pollReg({interval:15,immediate:!!e,webapi:{api:"SYNO.Core.Report",method:"list",version:1},scope:this,status_callback:function(e,t,i){e?(this.refreshData(t),this.profileView.removeMask(this.profileView.GET_REPORT_LIST_FAILED)):(SYNO.Debug("Ajax load failure "+t),this.profileView.addMask(this.profileView.GET_REPORT_LIST_FAILED))}})},stopPollTask:function(){this.profileView.el.unmask(),Ext.isString(this.listPollTaskId)&&this.pollUnreg(this.listPollTaskId)&&(this.listPollTaskId=null),this.profileView.stopPollTask(),this.volumeUsagePanel.stopPollTask()},refreshData:function(e){this.profileView.refreshData(e)},destroy:function(){this.stopPollTask(),this.callParent(arguments)}}),Ext.define("SYNO.SDS.StorageAnalyzer.VolumeUsage.Panel",{extend:"SYNO.ux.Panel",constructor:function(e){var t=this.fillConfig(e);this.pageBtnArray=[],this.callParent([t])},fillConfig:function(e){var t=[];this.createVolumeUsageChart(e),this.createVolumeUsageGrid(e),Ext.isIE8||t.push(this.volumeUsageChart),t.push(this.volumeUsageGrid);var i={defaults:{hideMode:"visibility"},layout:"card",cls:"volume-usage",activeItem:Ext.isIE8?"volumeUsageGrid":"volumeUsageChart",header:!0,title:SYNO.SDS.StorageAnalyzer._T("report","report_volume_usage"),items:t};return Ext.apply(i,e)},afterRender:function(){var e,t,i=this;i.callParent(arguments),i.pagingContainer=i.header.createChild({cls:"volume-usage-paging-container"}),i.items.each(function(i,r){e=i.itemId,t=this.pagingContainer.createChild({cls:"volume-usage-paging-btn","data-itemID":e,html:r+1}),this.pageBtnArray.push(t)},i),Ext.each(this.pageBtnArray,function(e){e.on("click",this.onClickPageBtn,this)},i),i.mon(i,"afterlayout",function(){this.items.length<2?this.refreshPageBtn():this.getPollChartTask().start(!1)},i,{single:!0})},createVolumeUsageChart:function(e){var t=this;return t.volumeUsageChart?t.volumeUsageChart:(t.volumeUsageChart=new SYNO.SDS.StorageAnalyzer.VolumeUsage.VolumeUsageChart({appWin:e.appWin,owner:t,itemId:"volumeUsageChart"}),t.volumeUsageChart)},createVolumeUsageGrid:function(e){var t=this;return t.volumeUsageGrid?t.volumeUsageGrid:(t.volumeUsageGrid=new SYNO.SDS.StorageAnalyzer.UsageReport.VolumeUsage.Grid({appWin:e.appWin,owner:t,itemId:"volumeUsageGrid"}),t.volumeUsageGrid)},getPollChartTask:function(){var e=this;return e.pollChartTask=e.pollChartTask||e.addTask({id:"polling_banner_task",interval:5e3,run:e.changeChart,scope:e}),e.pollChartTask},startPollTask:function(e){this.stopPollTask(),this.el.mask(_T("common","loading"),"x-mask-loading"),this.listPollTaskId=this.pollReg({interval:60,immediate:!!e,webapi:{api:"SYNO.Core.Report.Analyzer",method:"getdata",version:1,params:{id:"global",source:"volume",filter:{in_days:8}}},scope:this,status_callback:function(e,t,i){e?this.refreshData(t):SYNO.Debug("Ajax load failure "+t)}})},stopPollTask:function(){this.el.unmask(),Ext.isString(this.listPollTaskId)&&this.pollUnreg(this.listPollTaskId)&&(this.listPollTaskId=null)},changeChart:function(){var e=this.getLayout(),t=this.items.indexOf(e.activeItem)||0;e.setActiveItem((t+1)%this.items.length)},refreshPageBtn:function(){Ext.each(this.pageBtnArray,function(e){this.refreshPageBtnStatus(e)},this)},onClickPageBtn:function(e,t,i){this.getPollChartTask().stop(),this.getLayout().setActiveItem(Ext.fly(t).getAttribute("data-itemId")),this.refreshPageBtn()},refreshPageBtnStatus:function(e){this.getLayout().activeItem.itemId===e.getAttribute("data-itemId")?e.addClass("btn-selected"):e.removeClass("btn-selected")},refreshData:function(e){this.el.unmask(),0===e.total&&this.el.mask(_T("volume","volume_no_volumes"),"syno-ux-mask-info"),this.items.each(function(t){t.loadData&&Ext.isFunction(t.loadData)&&t.loadData(e)},this)},destroy:function(){this.pageBtnArray=null,this.stopPollTask(),this.removeDelayedTask("polling_banner_task"),this.callParent(arguments)}}),Ext.define("SYNO.SDS.StorageAnalyzer.VolumeUsage.VolumeUsageChart",{extend:"Ext.Container",constructor:function(e){var t=this.fillConfig(e);this.callParent([t])},fillConfig:function(e){this.createVolumeUsageChart(e),this.createVolumeUsageBarChart(e);var t={defaults:{hideMode:"offsets"},cls:"volumeUsageChart",layout:"card",activeItem:"volumeUsageLineChart",items:[this.volumeUsageChart,this.volumeUsageBarChart]};return Ext.apply(t,e)},createVolumeUsageBarChart:function(e){var t=this;return t.volumeUsageBarChart?t.volumeUsageBarChart:(t.volumeUsageBarChart=new SYNO.SDS.StorageAnalyzer.VolumeUsage.BarChart({appWin:e.appWin,owner:t,itemId:"volumeUsageBarChart"}),t.volumeUsageBarChart)},createVolumeUsageChart:function(e){var t=this;return t.volumeUsageChart?t.volumeUsageChart:(t.volumeUsageChart=new SYNO.SDS.StorageAnalyzer.VolumeUsage.LineChart({appWin:e.appWin,owner:t,itemId:"volumeUsageLineChart"}),t.volumeUsageChart)},loadData:function(e){1===e.analyses.length?this.getLayout().setActiveItem("volumeUsageBarChart"):this.getLayout().setActiveItem("volumeUsageLineChart"),this.items.each(function(t){t.loadData&&Ext.isFunction(t.loadData)&&t.loadData(e)},this)}}),Ext.define("SYNO.SDS.StorageAnalyzer.Application",{extend:"SYNO.SDS.AppInstance",appWindowName:"SYNO.SDS.StorageAnalyzer.MainWindow"}),Ext.define("SYNO.SDS.StorageAnalyzer.MainWindow",{extend:"SYNO.SDS.AppWindow",constructor:function(e){var t=this;t.callParent([t.fillConfig(e)]),t.mon(t.overview,"enterdetailview",t.onEnterDetailView,t),t.mon(t.detailView,"enteroverview",t.onEnterOverView,t),SYNO.SDS.StorageAnalyzer.QuickTips.init()},fillConfig:function(e){var t={cls:"storage-report",defaults:{hideMode:"offsets"},itemId:"mainWin",minWidth:965,minHeight:500,width:965,height:580,layout:"card",activeItem:"overview",items:[this.createOverView(),this.createDetailView()]};return Ext.apply(t,e),t},createOverView:function(){var e=this;return e.overview?e.overview:(e.overview=new SYNO.SDS.StorageAnalyzer.Overview({owner:e,appWin:e,itemId:"overview"}),e.overview)},createDetailView:function(){return this.detailView?this.detailView:(this.detailView=new SYNO.SDS.StorageAnalyzer.DetailView.Main({owner:this,appWin:this,itemId:"detailView"}),this.detailView)},onEnterDetailView:function(e,t){this.getLayout().setActiveItem("detailView"),this.detailView.setProfile(t)},onEnterOverView:function(){this.getLayout().setActiveItem("overview")}});