HEX
Server: Apache/2.2.34 (Unix) mod_fastcgi/mod_fastcgi-SNAP-0910052141
System: Linux Kou-Etsu-Dou 4.4.59+ #25556 SMP PREEMPT Thu Mar 4 18:03:46 CST 2021 x86_64
User: hosam (1026)
PHP: 7.2.29
Disabled: NONE
Upload Files
File: //volume1/@appstore/HyperBackupVault/ui/backup_server.js
/* Copyright (c) 2022 Synology Inc. All rights reserved. */

Ext.define("SYNO.SDS.BackupServer.OverviewPanel",{extend:"SYNO.ux.Panel",constructor:function(a){this.hasTarget=null;this.emptyPanel=new SYNO.SDS.BackupServer.EmptyPanel({owner:this,appWin:a.appWin,hidden:true});this.infoPanel=new SYNO.SDS.BackupServer.InfoPanel({owner:this,appWin:a.appWin,hiddene:true,layout:"fit"});var b={layout:"fit",cls:"syno-backup-server-overview-panel",items:[this.emptyPanel,this.infoPanel]};Ext.apply(b,a);this.callParent([b])},initEvents:function(){this.callParent(arguments);this.on("activate",function(){if(this.appWin.last_target_list){this.loadTargetList(this.appWin.last_target_list);this.infoPanel.targetView.updateFleXcroll()}});this.on("resize",this.resizePanel)},displayPanel:function(a){if(this.hasTarget===a){return}this.hasTarget=a;if(this.hasTarget){this.infoPanel.show();this.emptyPanel.hide()}else{this.emptyPanel.show();this.infoPanel.hide()}},loadTargetList:function(a){this.infoPanel.loadData(a);this.displayPanel(a.length>0)},stopUpdateData:function(){this.infoPanel.stopUpdateDuration()},resizePanel:function(){this.infoPanel.resizePanel()}});Ext.define("SYNO.SDS.BackupServer.InfoPanel",{extend:"SYNO.ux.Panel",constructor:function(a){this.hasTarget=null;this.spaceContainer=new SYNO.SDS.BackupServer.SpaceContainer({owner:this,appWin:a.appWin});this.spacePanel=new Ext.Panel({owner:this,appWin:a.appWin,title:SYNO.SDS.BackupServer.String("app","target_usage"),autoHeight:true,autoWidth:true,cls:"syno-backup-server-subpanel",items:this.spaceContainer});this.emptyRunningPanel=new SYNO.SDS.BackupServer.EmptyRunningPanel({owner:this,appWin:a.appWin,hidden:true});this.targetView=new SYNO.SDS.BackupServer.TargetView({owner:this,appWin:a.appWin,store:this.getStore(),autoFlexcroll:true,trackResetOnLoad:false,displayProgress:true,hidden:true});this.targetPanel=new Ext.Panel({owner:this,appWin:a.appWin,title:SYNO.SDS.BackupServer.String("app","running_task"),autoHeight:true,autoWidth:true,cls:"syno-backup-server-subpanel",items:[this.emptyRunningPanel,this.targetView]});var b={items:[this.spacePanel,this.targetPanel]};Ext.apply(b,a);this.callParent([b])},getStore:function(){if(!this.store){this.store=new Ext.data.JsonStore({id:"target_id",fields:["target_id","share","target_name","target_path","used_size","computing_size","status","client_ip","start_time","duration","browser_webapi_time","last_backup_start_time","last_backup_duration","is_resumable","is_enc","uni_key","progress"]})}return this.store},loadData:function(b){if(this._lastData===Ext.encode(b)){return}this._lastData=Ext.encode(b);this.spaceContainer.loadData(b);var a=this.getRunningTargetList(b);this.updateStore(a);this.displayPanel(a.length>0)},getRunningTargetList:function(e){var d=[];var c=this.filterAndSortTargetList(e,["backuping","suspending"]);var b=this.filterAndSortTargetList(e,["waiting"]);var a=this.filterAndSortTargetList(e,["version_deleting"]);d=c.concat(b,a);return d},filterAndSortTargetList:function(b,a){var c=[];Ext.each(b,function(d){Ext.each(a,function(e){if(d.status===e){c.push(d)}},this)},this);c=c.sort(function(e,d){return e.start_time-d.start_time});return c},updateStore:function(a){this.target_list=a.slice();if(this.isInAction(a)){this.startUpdateDuration()}else{this.stopUpdateDuration();this.getStore().loadData(a)}},displayPanel:function(a){if(this.hasTarget===a){return}this.hasTarget=a;if(this.hasTarget){this.targetView.show();this.emptyRunningPanel.hide()}else{this.emptyRunningPanel.show();this.targetView.hide()}},getUpdateDurationTask:function(){this.updateTask=this.updateTask||this.addTask({id:"task_update_duration",interval:1*1000,immediate:true,run:this.updateDuration,scope:this});return this.updateTask},startUpdateDuration:function(){if(this.isPolling){return}this.getUpdateDurationTask().start();this.isPolling=true},stopUpdateDuration:function(){if(!this.isPolling){return}this.getUpdateDurationTask().stop();this.isPolling=false;this._lastData=null},updateDuration:function(){this.getStore().loadData(this.target_list)},isInAction:function(b){var a=false;Ext.each(b,function(c){if(c.status==="backuping"||c.status=="version_deleting"){a=true;return false}},this);return a},resizePanel:function(){if(!this.spacePanel.getResizeEl()||!this.targetView.getResizeEl()){return}var b=this.ownerCt.getSize();var a=this.spacePanel.getSize();this.emptyRunningPanel.setSize(b.width-60,b.height-a.height-66);this.targetView.setSize(b.width-60,b.height-a.height-66);this.targetView.updateFleXcroll();this.spaceContainer.setWidth(b.width-40)},onShow:function(){this.callParent(arguments);this.resizePanel()}});Ext.define("SYNO.SDS.BackupServer.EmptyRunningPanel",{extend:"SYNO.ux.Panel",initComponent:function(){this.callParent(arguments);this.addClass("syno-backup-server-empty-running-page");this.emptyMessage=new Ext.Container({width:340,cls:"syno-backup-server-empty-running-page-container",items:[{xtype:"container",height:120,width:120,cls:"syno-backup-server-empty-running-icon"},{xtype:"container",html:SYNO.SDS.BackupServer.String("app","empty_running_task_desc"),cls:"syno-backup-server-empty-running-desc"}]});this.add(this.emptyMessage)}});Ext.define("SYNO.SDS.BackupServer.EmptyPanel",{extend:"SYNO.ux.Panel",initComponent:function(){this.callParent(arguments);this.addClass("syno-backup-server-empty-page");this.emptyMessage=new Ext.Container({width:340,cls:"syno-backup-server-empty-page-container",items:[{xtype:"container",height:120,width:120,cls:"syno-backup-server-empty-icon"},{xtype:"container",html:SYNO.SDS.BackupServer.String("app","empty_desc"),cls:"syno-backup-server-empty-desc"}]});this.add(this.emptyMessage)}});Ext.define("SYNO.SDS.BackupServer.TaskPanel",{extend:"SYNO.ux.Panel",constructor:function(a){this.isFirst=true;this.hasTarget=null;this.emptyPanel=new SYNO.SDS.BackupServer.EmptyPanel({owner:this,appWin:a.appWin,hidden:true});this.targetView=new SYNO.SDS.BackupServer.TargetView({owner:this,appWin:a.appWin,hidden:true,store:this.getStore(),autoFlexcroll:true,trackResetOnLoad:false,displayProgress:false});var b={layout:"fit",cls:"syno-backup-server-task-panel",items:[this.emptyPanel,this.targetView]};Ext.apply(b,a);this.callParent([b])},initEvents:function(){this.callParent(arguments);this.on("activate",function(){if(this.appWin.last_target_list){this.loadTargetList(this.appWin.last_target_list);this.targetView.updateFleXcroll()}});this.on("resize",this.resizePanel)},displayPanel:function(a){if(this.hasTarget===a){return}this.hasTarget=a;if(this.hasTarget){this.targetView.show();this.emptyPanel.hide()}else{this.emptyPanel.show();this.targetView.hide()}},loadTargetList:function(a){this.loadData(a);this.displayPanel(a.length>0)},stopUpdateData:function(){this.stopUpdateDuration()},getStore:function(){if(!this.store){var a=function(c){var b=c.indexOf("/",1);return c.substring(b).toLocaleLowerCase()};this.store=new Ext.data.JsonStore({id:"target_id",fields:["target_id","share","target_name",{name:"target_path",sortType:a},"used_size","computing_size","status","client_ip","start_time","duration","browser_webapi_time","last_backup_start_time","last_backup_duration","is_resumable","is_enc","uni_key","progress"],sortInfo:{field:"target_path",direction:"ASC"}})}return this.store},loadData:function(a){if(this._lastData===Ext.encode(a)){return}this._lastData=Ext.encode(a);this.updateStore(a)},updateStore:function(a){this.target_list=a.slice();if(this.isInAction(a)){this.startUpdateDuration()}else{this.stopUpdateDuration();this.getStore().loadData(a)}},getUpdateDurationTask:function(){this.updateTask=this.updateTask||this.addTask({id:"task_update_duration",interval:1*1000,immediate:true,run:this.updateDuration,scope:this});return this.updateTask},startUpdateDuration:function(){if(this.isPolling){return}this.getUpdateDurationTask().start();this.isPolling=true},stopUpdateDuration:function(){if(!this.isPolling){return}this.getUpdateDurationTask().stop();this.isPolling=false;this._lastData=null},updateDuration:function(){this.getStore().loadData(this.target_list)},isInAction:function(b){var a=false;Ext.each(b,function(c){if(c.status==="backuping"||c.status=="version_deleting"){a=true;return false}},this);return a},resizePanel:function(){var a=this.ownerCt.getSize();this.targetView.setSize(a.width-32,a.height-28);if(this.isFirst){this.isFirst=false}else{this.targetView.updateFleXcroll()}},onShow:function(){this.callParent(arguments);this.resizePanel()}});Ext.define("SYNO.SDS.BackupServer.SettingPanel",{extend:"SYNO.ux.FormPanel",constructor:function(a){var b=Ext.apply({border:false,trackResetOnLoad:true,useDefaultBtn:true,labelWidth:230,cls:"syno-backup-server-setting-panel",items:[{xtype:"syno_displayfield",name:"parallel_setting_description",value:SYNO.SDS.BackupServer.String("app","parallel_task_description")},{xtype:"syno_numberfield",name:"parallel_setting_value",fieldLabel:SYNO.SDS.BackupServer.String("app","parallel_task_key"),allowBlank:false,allowDecimals:false,width:155,minValue:1,maxValue:32,autoCreate:{tag:"input",type:"text",autocomplete:"off",maxlength:"2"}}]},a);return this.callParent([b])},getFormValue:function(a){return this.getForm().findField(a).getValue()},loadSettingData:function(a){this.getForm().findField("parallel_setting_value").setValue(a.parallel_backup_limit)},applyHandler:function(){this.setStatusBusy();this.sendWebAPI({api:"SYNO.Backup.Service.VersionBackup.Config",version:1,method:"set",params:{parallel_backup_limit:this.getFormValue("parallel_setting_value")},scope:this,callback:this.onApplyDone})},onApplyDone:function(c,a,b){if(!c){if(a.code){this.setStatusError({text:SYNO.SDS.BackupServer.GetErrorString(a.code),clear:true})}else{this.setStatusError()}return}this.getForm().setValues([{id:"parallel_setting_value",value:this.getFormValue("parallel_setting_value")}]);this.setStatusOK()}});Ext.define("SYNO.SDS.BackupServer.TargetView",{extend:"SYNO.ux.ExpandableListView",displayProgress:false,constructor:function(a){if(!Ext.isEmpty(a.displayProgress)){this.displayProgress=a.displayProgress}this.callParent(arguments);this.addClass("syno-backup-server-target-listview")},onMouseOver:function(b){var a=b.getTarget(this.itemSelector,this.getTemplateTarget());if(a&&a!==this.lastItem){if(this.forceHoverIndex){Ext.fly(this.getNode(this.forceHoverIndex)).removeClass(this.overClass);this.forceHoverIndex=null}this.lastItem=a;Ext.fly(a).addClass(this.overClass);this.fireEvent("mouseenter",this,this.indexOf(a),a,b)}},createTpl:function(){var a='<div><div class="syno-backup-text info-line filestation-launcher"><span class="filestation-launcher" ext:qtip="{share:htmlEncode}">{share:htmlEncode} /</span></div><div class="syno-backup-text filestation-launcher"><span class="filestation-launcher" ext:qtip="{target_name:htmlEncode}">{target_name:htmlEncode} </span></div></div>';var e='<div class="{status_cls}"><div class="syno-backup-text info-line" ext:qtip="{status_string}">{status_string}</div><div class="syno-backup-text" ext:qtip="{duration_string}">{duration_string}</div></div>';var c='<div class="target-button-layout"><div class="x-btn x-btn-icon target-button-default target-button-tag-statistics" ext:qtip="{statistics_tip}"><div class="target-button-icon target-button-icon-statistics target-button-tag-statistics" ext:qtip="{statistics_tip}"></div></div><div class="x-btn x-btn-icon target-button-default target-button-tag-details" ext:qtip="{details_tip}"><div class="target-button-icon target-button-icon-details target-button-tag-details" ext:qtip="{details_tip}"></div></div><div class="x-btn x-btn-icon target-button-default target-button-tag-version-list" ext:qtip="{version_list_tip}"><div class="target-button-icon target-button-icon-version-list target-button-tag-version-list" ext:qtip="{version_list_tip}"></div></div><div class="x-btn x-btn-icon target-button-default target-button-tag-log" ext:qtip="{log_tip}"><div class="target-button-icon target-button-icon-log target-button-tag-log" ext:qtip="{log_tip}"></div></div></div>';var d='<div class="{status_cls}"><div class="syno-backup-text info-line" ext:qtip="{status_string}">{status_string}</div><tpl if="duration_string.length &gt; 0"><div class="syno-backup-text" ext:qtip="{duration_string}">{duration_string}</div></tpl><tpl if="duration_string.length == 0"><div class="target-statusinfo-progress" style="visibility:{progress_visibility}"><div class="target-statusinfo-bar" style="width:{progress_percentage}"></div></div><div class="syno-backup-text info-line target-statusinfo-bar-text" style="visibility:{progress_visibility}">{progress_percentage}</div></tpl></div>';var f=null;if(this.displayProgress){f='<div class="target-statusinfo">'+d+"</div>"}else{f='<div class="target-statusinfo">'+e+'</div><div class="target-button">'+c+"</div>"}var b=new Ext.XTemplate('<tpl for=".">','<div class="item-wrap {hover_status}">','<div class="item-summary">','<div class="item-icon target-status-icon {status_icon_cls}"></div>','<div class="target-basicinfo">',a,"</div>",'<div class="target-basicinfo-blank">',"</div>",f,'<div class="full-height"></div>',"</div>","</div>","</tpl>",'<div class="x-clear"></div>');return b},prepareData:function(e,c,a){var g=new Date();e.duration=(g.getTime()/1000)-e.browser_webapi_time+e.duration;e.statistics_tip=SYNO.SDS.BackupServer.String("app","storage_statistics");e.details_tip=_T("schedule","task_settings");e.version_list_tip=SYNO.SDS.BackupServer.String("app","version_list");e.log_tip=SYNO.SDS.BackupServer.String("app","log_name");e.progress_visibility="hidden";e.progress_percentage="0%";e.duration_string="";if("backuping"===e.status){e.status_icon_cls="target-status-icon-backuping";e.status_cls="target-statusinfo-running";e.status_string=_T("netbackup","netbkp_backuping");if(this.displayProgress){if(!Ext.isEmpty(e.progress)){var b=this.convertProgressData(e.progress);e.status_string=b.status;e.progress_visibility=b.visible;e.progress_percentage=b.percentage}else{e.duration_string=SYNO.SDS.BackupServer.String("app","elapsed")+": "+this.toDDHHMMSS(e.duration)}}else{e.duration_string=SYNO.SDS.BackupServer.String("app","elapsed")+": "+this.toDDHHMMSS(e.duration)}}else{if("version_deleting"===e.status){e.status_string=SYNO.SDS.BackupServer.String("app","task_status_deleting_version");e.duration_string=SYNO.SDS.BackupServer.String("app","elapsed")+": "+this.toDDHHMMSS(e.duration);e.status_cls="target-statusinfo-running";e.status_icon_cls="target-status-icon-version_deleting"}else{if("suspending"===e.status){e.status_string=SYNO.SDS.BackupServer.String("app","task_status_suspending");e.duration_string=SYNO.SDS.BackupServer.String("app","elapsed")+": "+this.toDDHHMMSS(e.duration);e.status_cls="target-statusinfo-running";e.status_icon_cls="target-status-icon-backuping"}else{if("waiting"===e.status){e.status_string=SYNO.SDS.BackupServer.String("app","task_status_waiting");e.status_cls="target-statusinfo-idle";e.status_icon_cls="target-status-icon-waiting"}else{if("idle"===e.status){var f=new Date(e.last_backup_start_time*1000);e.status_string=SYNO.SDS.BackupServer.String("app","last_backup_time")+": "+SYNO.SDS.Backup.Server.Common.Utils.DateTimeFormatter(f,{type:"datetimesec"});e.duration_string=SYNO.SDS.BackupServer.String("app","duration")+": "+this.toDDHHMMSS(e.last_backup_duration);e.status_cls="target-statusinfo-idle";if(!e.is_resumable){e.status_icon_cls="target-status-icon-idle"}else{e.status_icon_cls="target-status-icon-suspend"}}else{if("init"===e.status){e.status_string=SYNO.SDS.BackupServer.String("app","last_backup_time")+": "+SYNO.SDS.BackupServer.String("app","no_backup");e.duration_string=SYNO.SDS.BackupServer.String("app","duration")+": "+_T("common","none");e.status_cls="target-statusinfo-idle";e.status_icon_cls="target-status-icon-idle"}}}}}}if(this.lastItem&&c===this.indexOf(this.lastItem)){this.forceHoverIndex=c;e.hover_status="item-over"}else{e.hover_status=""}return e},convertProgressData:function(a){var b={status:_T("netbackup","netbkp_backuping"),visibility:"hidden",percentage:"0%"};switch(a.step){case"data_backup":b.status=_T("netbackup","netbkp_backuping");b.visibility="visible";b.percentage=a.progress.toString()+"%";break;case"app_backup":if(Ext.isEmpty(a.current_app)){b.status=_T("backup","bkpstatus_app")}else{b.status=String.format(SYNO.SDS.BackupServer.String("app","backing_up_something"),a.current_app);if(!Ext.isEmpty(a.current_app_stage)){b.status+=": "+a.current_app_stage}}b.visibility="visible";b.percentage=a.current_app_percent.toString()+"%";break}return b},toDDHHMMSS:function(d){var e=Math.floor(d/86400);var a=Math.floor((d-(e*86400))/3600);var b=Math.floor((d-(e*86400)-(a*3600))/60);var c=Math.floor(d-(e*86400)-(a*3600)-(b*60));if(e>0){return e+"day "+a+"hour "+b+"min "+c+"sec"}else{if(a>0){return a+"hour "+b+"min "+c+"sec"}else{if(b>0){return b+"min "+c+"sec"}}}return c+"sec"},onClick:function(d,a,c){this.callParent(arguments);var f=this.getSelectedRecords();if(1!==f.length){return}var b=Ext.fly(a);if(b&&(b.hasClass("target-button-tag-statistics"))){this.onStatisticBrowse(f[0])}else{if(b&&(b.hasClass("target-button-tag-version-list"))){this.onVersionBrowse(f[0])}else{if(b&&(b.hasClass("target-button-tag-log"))){this.onOpenLogWindow(f[0])}else{if(b&&(b.hasClass("target-button-tag-details"))){this.onOpenTargetDetailWindow(f[0])}else{if(b&&(b.hasClass("filestation-launcher"))){this.onOpenFileStation(f[0])}}}}}},onStatisticBrowse:function(c){var b=c.get("target_id");var a=new SYNO.SDS.Backup.Server.Common.Statistic.MainWindow({title:SYNO.SDS.BackupServer.String("statistics","storage_statistics_title"),taskId:b,readOnly:true,appWin:this.appWin,owner:this.appWin,supportTargetStatistic:true});this.appWin.openWindow(a)},onVersionBrowse:function(e){var d=e.get("is_enc");if(d){var g=e.get("target_path");var c=e.get("target_name");var a=g.substring(0,g.length-c.length);var f={target_type:"image",transfer_type:"browse_local",abs_path:a,target_id:c,uni_key:e.get("uni_key")};var b=new SYNO.SDS.Backup.Server.Common.Password.Window({owner:this.appWin,verify_params:f,setter:Ext.createDelegate(this.setSession,this),callback:Ext.createDelegate(function(){this.openVersionWindow(e)},this)});b.open()}else{this.openVersionWindow(e)}},setSession:function(a){this.sess_id=a.sess_id;this.sess_key=a.sess_key},openVersionWindow:function(c){var d=c.get("target_path");var b=c.get("target_name");var a=new SYNO.SDS.Backup.Server.Common.Version.MainWindow({taskId:c.get("target_id"),repoId:d.substring(0,d.length-b.length),targetId:b,targetType:"image",transferType:"image_remote",isDiscard:false,sessId:this.sess_id,sessKey:this.sess_key,taskState:"none",appWin:this.appWin,owner:this.appWin,hideVersionDelete:true,hideVersionLock:false,accountMeta:null});this.appWin.openWindow(a)},onOpenLogWindow:function(c){var b=c.get("target_id");var a=new SYNO.SDS.Backup.Server.Common.Log.LogsWindow({appWin:this.appWin,owner:this.appWin,filterParams:{filter_target_id:b}});this.appWin.openWindow(a)},onOpenTargetDetailWindow:function(c){var b=c.get("target_id");var a=new SYNO.SDS.BackupServer.TargetDetailWindow({appWin:this.appWin,owner:this.appWin,target_id:b});this.appWin.openWindow(a)},onOpenFileStation:function(c){var a=c.get("share");var b=c.get("target_name");SYNO.SDS.AppLaunch("SYNO.SDS.App.FileStation3.Instance",{openfile:"/"+a+"/"+b},true)}});Ext.define("SYNO.SDS.BackupServer.QuickTip",{extend:Ext.QuickTip,tagConfig:{namespace:"",attribute:"synotcqtip",width:"qwidth",target:"target",title:"qtitle",hide:"hide",cls:"qclass",align:"qalign",anchor:"anchor"}});SYNO.SDS.BackupServer.QuickTips=function(){var b,a=false;return{init:function(c){if(!b){if(!Ext.isReady){Ext.onReady(function(){SYNO.SDS.BackupServer.QuickTips.init(c)});return}b=new SYNO.SDS.BackupServer.QuickTip({elements:"header,body",disabled:a});if(c!==false){b.render(Ext.getBody())}}},ddDisable:function(){if(b&&!a){b.disable()}},ddEnable:function(){if(b&&!a){b.enable()}},enable:function(){if(b){b.enable()}a=false},disable:function(){if(b){b.disable()}a=true},isEnabled:function(){return b!==undefined&&!b.disabled},getQuickTip:function(){return b},register:function(){b.register.apply(b,arguments)},unregister:function(){b.unregister.apply(b,arguments)},tips:function(){b.register.apply(b,arguments)}}}();Ext.define("SYNO.SDS.BackupServer.SpaceContainer",{extend:"Ext.Container",constructor:function(a){a=this.fillConfig(a);this.callParent([a])},fillConfig:function(a){this.spaceInfo=new SYNO.SDS.BackupServer.Space.SpaceInfo({owner:this,appWin:a.appWin});return Ext.apply({autoWidth:true,items:[this.spaceInfo]},a)},loadData:function(c){var b=c.slice();b=b.map(function(d){if(d.used_size){d.used_size*=1024}return d});var a=this.getTotalSize(b);this.processData(b,a);b.sort(function(e,d){return d.used_size-e.used_size});this.spaceInfo.loadData(b,a)},getTotalSize:function(b){var a=0;Ext.each(b,function(c){var d=Ext.isNumber(c.used_size)?c.used_size:0;a+=d},this);return a},processData:function(b,a){Ext.each(b,function(e){e.show_name=e.share+" / "+e.target_name;if(undefined===e.computing_size||undefined===e.used_size){e.sizeDisplay=_T("error","error_error");e.sizeTips=_T("error","error_error");e.used_size=0.001}else{if(e.computing_size){e.sizeDisplay=SYNO.SDS.BackupServer.String("app","calculating");e.sizeTips=SYNO.SDS.BackupServer.String("app","calculating")}else{var c=SYNO.SDS.Backup.Server.Common.Utils.getConvertSize(e.used_size);var d=SYNO.SDS.Backup.Server.Common.Utils.getUnit(e.used_size);e.sizeDisplay=SYNO.SDS.Backup.Server.Common.Utils.getPercentage(e.used_size,a);e.sizeTips=String.format("{0} {1}",c,d)}}},this)}});Ext.define("SYNO.SDS.BackupServer.Space.SpaceInfo",{extend:"Ext.BoxComponent",constructor:function(a){Ext.apply(this,a);this.callParent(arguments)},initComponent:function(){this.callParent(arguments);this.pieChart=new SYNO.SDS.BackupServer.Space.PieChart({owner:this,appWin:this.appWin,totalSize:this.totalSize});this.legend=new SYNO.SDS.BackupServer.Space.Legend({owner:this,appWin:this.appWin,totalSize:this.totalSize})},onRender:function(){this.autoEl={cls:"syno-backup-server-space",cn:[{tag:"div",cls:"block pie-chart"},{tag:"div",cls:"block legend"}]};this.callParent(arguments);this.pieChartEl=this.el.select("div.pie-chart").first();this.pieChart.render(this.pieChartEl);this.legendEl=this.el.select("div.legend").first();this.legend.render(this.legendEl)},loadData:function(c,b){var a=this.mergeData(c,b);this.pieChart.loadData(c,a,b);this.legend.loadData(c,(a.length>5)?a.slice(0,5):a,b)},mergeData:function(e,b){if(5>=e.length){return e}var f=[];var a={show_name:"others",used_size:0,computing_size:false,sizeDisplay:"0%",sizeTips:"0 KB"};Ext.each(e,function(h,g){if(g>=5){a.used_size+=h.used_size}else{f.push(h)}},this);var c=SYNO.SDS.Backup.Server.Common.Utils.getConvertSize(a.used_size);var d=SYNO.SDS.Backup.Server.Common.Utils.getUnit(a.used_size);a.sizeDisplay=SYNO.SDS.Backup.Server.Common.Utils.getPercentage(a.used_size,b);a.sizeTips=String.format("{0} {1}",c,d);f.push(a);return f},destroy:function(){if(this.pieChart){this.pieChart.destroy();this.pieChart=null}if(this.legend){this.legend.destroy();this.legend=null}this.callParent(arguments)}});Ext.define("SYNO.SDS.BackupServer.Space.Chart",{extend:"Ext.BoxComponent",constructor:function(a){SYNO.SDS.BackupServer.QuickTips.init();var b=this.svgConfig||{width:this.width,height:this.height};this.cls=a.cls||"chart";this.svgWidth=Ext.isNumber(b.width)?b.width:"100%";this.svgHeight=Ext.isNumber(b.height)?b.height:"100%";this.svgMargins=this.svgConfig&&this.svgConfig.margin?this.svgConfig.margin:{top:0,bottom:0,left:0,right:0};this.callParent(a);this.colorArray=SYNO.SDS.BackupServer.Space.Config.COLORS;this.d3=SYNO.SDS.DataDrivenDocuments.DrawHelper},innerFormatValue:function(a){return Ext.isNumber(a)?a:0},onRender:function(b,a){var c=this.d3;this.callParent(arguments);this.svg=c.select("#"+this.id).attr("class",this.cls).append("svg").attr("width",this.svgWidth).attr("height",this.svgHeight);var e=this.innerFormatValue(this.svgMargins.left);var d=this.innerFormatValue(this.svgMargins.top);this.svgGraphics=this.svg.append("g").attr("transform","translate("+e+","+d+")")},afterRender:function(){this.callParent(arguments);this.loadData()},onResize:function(d,b,a,c){this.callParent(arguments);this.draw()},ladData:Ext.emptyFn,draw:Ext.emptyFn});Ext.define("SYNO.SDS.BackupServer.Space.PieChart",{extend:"SYNO.SDS.BackupServer.Space.Chart",svgConfig:{margin:{top:0,left:0,right:0,bottom:0},border:2,shadow:1,width:166,height:166,radius:80},constructor:function(a){Ext.apply(this,a);this.callParent(arguments);this.data=[]},loadData:function(c,b,a){if(!Ext.isDefined(c)){return}this.data=c;this.totalSize=a;this.draw(b)},initShadowEffect:function(){var b=this.svg;var a=b.append("defs");this.shadowId="shadow"+Ext.id();var c=a.append("filter").attr("id",this.shadowId);c.append("feGaussianBlur").attr("in","SourceAlpha").attr("stdDeviation",2).attr("result","blur");c.append("feOffset").attr("in","blur").attr("dx",0).attr("dy",0).attr("result","offsetBlur");var d=c.append("feMerge");d.append("feMergeNode").attr("in","offsetBlur");d.append("feMergeNode").attr("in","SourceGraphic");this.svgShadow=a},draw:function(v){if(!v){return}var u=this.d3,m=this.svgConfig.width,l=this.svgConfig.height,b=this.svgConfig.radius,n=this.svgConfig.border,h=(b+this.svgConfig.margin.left+this.svgConfig.border+this.svgConfig.shadow),g=(b+this.svgConfig.margin.top+this.svgConfig.border+this.svgConfig.shadow);var o=this.colorArray;if(this.svgGraphics){this.svgGraphics.remove();this.svgGraphics=null}if(!this.svgShadow){this.initShadowEffect()}this.svgEle=this.svg.data([v]).attr("width",m).attr("height",l);this.svgGraphics=this.svgEle.append("svg:g").attr("transform","translate("+h+","+g+")");if(!Ext.isEmpty(v)){var k=SYNO.SDS.Backup.Server.Common.Utils.getConvertSize(this.totalSize);var j=SYNO.SDS.Backup.Server.Common.Utils.getUnit(this.totalSize);var s=SYNO.SDS.BackupServer.String("app","total_usage");var e=this.svgGraphics.append("g");e.append("text").attr("y",function(w){return -18}).attr("text-anchor","middle").classed("svg_space_total",true).text(s);var f=Ext.id();var q=Ext.id();e.append("text").attr("y",function(w){return 11}).attr("id",f).classed("svg_space_number",true).text(k);var c=Ext.getDom(f).getBBox().width;e.append("text").attr("y",function(w){return 11}).attr("id",q).classed("svg_space_unit",true).text(j);var a=Ext.getDom(q).getBBox().width;var t=-Math.round(a/2);e.select("#"+f).attr("transform","translate("+t+" 0)").attr("text-anchor","middle");e.select("#"+q).attr("transform","translate("+(t+Math.round(c/2)+2)+" 0)").attr("text-anchor","start")}var d=u.svg.arc().outerRadius(b).innerRadius(58);var i=u.layout.pie().value(function(w){return w.used_size}).sort(null);var p=this.svgGraphics.selectAll("g.slice").data(i).enter().append("svg:g").attr("class","slice");var r="url(#"+this.shadowId+")";p.append("svg:path").attr("fill",function(x,w){return x.color||o[Math.min(w,9)]}).attr("stroke","#FFFFFF").attr("stroke-width","0px").attr("d",d).attr("synotcqtip",function(y,x){var w=SYNO.SDS.BackupServer.String("app","space_usage")+": "+y.data.sizeTips;return String.format("{0}<br/>{1}",y.data.show_name,w)}).on("mouseover",function(y,x,w){this.parentNode.parentNode.appendChild(this.parentNode);u.select(this).transition().duration(300).attr("stroke-width",n+"px").attr("filter",r)}).on("mouseout",function(y,x,w){u.select(this).transition().duration(300).attr("stroke-width","0px").attr("filter","")})}});Ext.define("SYNO.SDS.BackupServer.Space.ListDiaglog",{extend:"SYNO.SDS.ModalWindow",constructor:function(a){this.data=a.data;this.totalSize=a.totalSize;this.listGrid=new SYNO.SDS.BackupServer.Space.ListGrid({owner:this,appWin:a.appWin,totalSize:this.totalSize});var b={width:640,height:420,layout:"fit",closable:true,useStatusBar:false,onEsc:function(){this.close()},items:[this.listGrid]};Ext.apply(b,a);this.callParent([b])},onShow:function(){var a=this.data.slice();Ext.each(a,function(b){if(undefined===b.computing_size||undefined===b.used_size){b.used_size=-2}else{if(b.computing_size){b.used_size=-1}}},this);this.listGrid.store.loadData(a)}});Ext.define("SYNO.SDS.BackupServer.Space.ListGrid",{extend:"SYNO.ux.GridPanel",constructor:function(a){this.totalSize=a.totalSize;var b={enableColumnMove:false,store:this.createStore(),border:false,colModel:this.createColumn(),sm:this.createSelModel(),loadMask:true,stripeRows:true};Ext.apply(b,a);this.callParent([b])},createStore:function(){var a=new Ext.data.JsonStore({idProperty:"show_name",sortInfo:{field:"used_size",direction:"DESC"},id:"show_name",fields:["show_name","used_size"]});return a},createColumn:function(){var b=[{header:SYNO.SDS.BackupServer.String("app","share_target"),dataIndex:"show_name",id:"show_name",width:140,renderer:function(e,d,c){d.attr+=String.format('ext:qtip="{0}"',e);return e}},{header:SYNO.SDS.BackupServer.String("app","space_usage"),dataIndex:"used_size",id:"used_size",width:120,align:"right",renderer:function(g,f,c){if(!Ext.isNumber(g)){return g}if(-1===g){return SYNO.SDS.BackupServer.String("app","calculating")}else{if(-2===g){return _T("error","error_error")}}var d=SYNO.SDS.Backup.Server.Common.Utils.getConvertSize(g);var e=SYNO.SDS.Backup.Server.Common.Utils.getUnit(g);return d+" "+e}},{header:SYNO.SDS.BackupServer.String("app","space_title_percent"),dataIndex:"used_size",id:"percent",width:100,align:"right",renderer:{scope:this,fn:function(e,d,c){if(-1===e){return SYNO.SDS.BackupServer.String("app","calculating")}else{if(-2===e){return _T("error","error_error")}}return SYNO.SDS.Backup.Server.Common.Utils.getPercentage(e,this.totalSize)}}}];var a=new Ext.grid.ColumnModel({defaults:{sortable:true},columns:b});return a},createSelModel:function(){var a={singleSelect:false,moveEditorOnEnter:false};return new Ext.grid.RowSelectionModel(a)}});Ext.define("SYNO.SDS.BackupServer.Space.Legend",{extend:"Ext.BoxComponent",constructor:function(a){var b={autoFlexcroll:false};Ext.apply(b,a);this.callParent([b])},loadData:function(c,b,a){this.data=c;this.totalSize=a;this.update(b)},onRender:function(){this.callParent(arguments);this.tpl=new Ext.XTemplate("",'<tpl for=".">','<div class="legend-w">','<span class="rect" ',' style="background-color:{[this.getColor(xindex, values)]};"></span>','<span class="syno-backup-text name" ext:qtip="{show_name}">',"{show_name}","</span>",'<span class="syno-backup-text desc" ext:qtip="{sizeTips}">',"{sizeDisplay}","</span>","</div>","</tpl>",'<tpl if="values">','<div class="legend-w view-more-legend">','<span class="syno-backup-text view-more">','{[SYNO.SDS.BackupServer.String("app", "view_more")]}',"</span>","</div>","</tpl>","",{getColor:function(a,b){return SYNO.SDS.BackupServer.Space.Config.COLORS[a-1]||SYNO.SDS.BackupServer.Space.Config.DEFAULT_COLOR}})},afterRender:function(){this.callParent(arguments);this.getEl().on("click",function(){this.showList()},this,{delegate:".view-more"})},showList:function(){var a=new SYNO.SDS.BackupServer.Space.ListDiaglog({owner:this.appWin,totalSize:this.totalSize,title:SYNO.SDS.BackupServer.String("app","all_used_size"),data:this.data});this.appWin.openWindow(a)}});Ext.define("SYNO.SDS.BackupServer.TargetDetailWindow",{extend:"SYNO.SDS.ModalWindow",rotate_customize_retention:[],filter_params:{},constructor:function(b){var a={title:_T("schedule","task_settings"),width:668,height:544,minWidth:668,minHeight:544,padding:"9px 20px 48px 20px",resizable:true,closable:true,useStatusBar:false,items:new Ext.DataView({store:this.detailStore=new Ext.data.JsonStore({autoDestroy:true,fields:["key","keytip","text","tip"],listeners:{scope:this,load:function(){var c=Ext.fly("syno-backup-server-customized-window");if(c){c.on("click",this.openCustomizedRotationWindow,this)}c=Ext.fly("syno-backup-server-filter-setting");if(c){c.on("click",this.openFilterSettingWindow,this)}}}}),itemSelector:"table",tpl:new Ext.XTemplate('<tpl for=".">','<table style="width:100%;border-spacing: 0px 3px;table-layout:fixed;">',"<tr>",'<td style="width:268px; height:28px; font-size:12px; valign:middle"><div ext:qtip="{keytip:htmlEncode}">{key}:</div></td>','<td style="width:16px"></td>','<td style="width:344px; font-size:12px; valign:middle"><div ext:qtip="{tip:htmlEncode}">{text}</div></td>',"</tr>","</table>","</tpl>")})};Ext.apply(b,a);this.target_id=b.target_id;this.callParent(arguments)},onOpen:function(){this.setStatusBusy();this.sendWebAPI({api:"SYNO.Backup.Service.VersionBackup.Target",version:1,method:"detail",params:{target_id:this.target_id},scope:this,callback:this.onOpenDone});return this.callParent(arguments)},onOpenDone:function(c,a,b){if(!c){this.clearStatusBusy();this.owner.getMsgBox().alert(_T("leaf","backup"),SYNO.SDS.BackupServer.GetErrorString(a.code));this.close();return}this.detailStore.loadData(this.parseDetailParam(a.target_detail));this.clearStatusBusy()},parseDetailParam:function(b){var e=[];var a=SYNO.SDS.BackupServer.String("app","on");var c=SYNO.SDS.BackupServer.String("app","off");var d=SYNO.SDS.BackupServer.String("app","unknown");var f=SYNO.SDS.BackupServer.String("app","unknown");if(!Ext.isEmpty(b.task_name)){f=b.task_name}e.push({key:_T("backup","task_name"),text:"<b>"+Ext.util.Format.htmlEncode(f)+"</b>"});f=d;if(!Ext.isEmpty(b.target_name)){f=b.target_name}e.push({key:_T("netbackup","netbkp_target"),text:Ext.util.Format.htmlEncode(f)});f=_T("common","none");if(!Ext.isEmpty(b.backup_volumes)){f=b.backup_volumes.join(", ")}e.push({key:SYNO.SDS.BackupServer.String("app","volume"),text:Ext.util.Format.htmlEncode(f)});f=_T("common","none");if(!Ext.isEmpty(b.backup_folders)){f=b.backup_folders.join(", ")}e.push({key:_T("tree","leaf_sharefolder"),text:Ext.util.Format.htmlEncode(f)});this.addFilterData(b.backup_filter,e);f=_T("common","none");if(!Ext.isEmpty(b.app_name_list)){f=b.app_name_list.join(", ")}e.push({key:SYNO.SDS.BackupServer.String("app","application"),text:Ext.util.Format.htmlEncode(f)});f=SYNO.SDS.BackupServer.String("app","unknown");if(!Ext.isEmpty(b.schedule)){f=SYNO.SDS.Backup.Server.Common.Utils.getScheduleStr(b.schedule)}e.push({key:SYNO.SDS.BackupServer.String("app","backup_schedule_title"),text:Ext.util.Format.htmlEncode(f)});f=d;if(!Ext.isEmpty(b.incheck_schedule)){f=SYNO.SDS.Backup.Server.Common.Utils.getScheduleStr(b.incheck_schedule)}e.push({key:SYNO.SDS.BackupServer.String("app","detect_schedule_title"),text:Ext.util.Format.htmlEncode(f)});f=_T("common","none");if(!Ext.isEmpty(b.enable_data_compress)){f=b.enable_data_compress?a:c}e.push({key:SYNO.SDS.BackupServer.String("app","enable_data_compress"),text:Ext.util.Format.htmlEncode(f)});f=_T("common","none");if(!Ext.isEmpty(b.enable_data_encrypt)){f=b.enable_data_encrypt?a:c}e.push({key:SYNO.SDS.BackupServer.String("app","enable_data_encrypt"),text:Ext.util.Format.htmlEncode(f)});f=d;if(!Ext.isEmpty(b.enable_notify)){f=b.enable_notify?a:c}e.push({key:SYNO.SDS.BackupServer.String("app","enable_notify_option"),text:Ext.util.Format.htmlEncode(f)});f=_T("common","none");if(!Ext.isEmpty(b.rotate_params)){this.addRotationData(b.rotate_params,e)}else{e.push({key:SYNO.SDS.BackupServer.String("app","rotation"),text:Ext.util.Format.htmlEncode(f)})}return e},addFilterData:function(a,b){var c=_T("common","none");if(!Ext.isEmpty(a)){if(0<a.whitelist.length||0<a.exclude_list.length){c=SYNO.SDS.BackupServer.String("app","on")+' <a class="syno-sds-backup-server-hyperlink" id="syno-backup-server-filter-setting">'+SYNO.SDS.BackupServer.String("app","version_detail")+"</a>";this.filter_params=a}else{c=SYNO.SDS.BackupServer.String("app","off")}}b.push({key:SYNO.SDS.BackupServer.String("app","file_filter_title"),text:c})},addRotationData:function(a,c){var b={};b.key=SYNO.SDS.BackupServer.String("app","rotation");if(!a.enable_rotate){b.text=_T("common","disabled");c.push(b);return}switch(a.rotate_option){case"rotate_earliest":b.text=_T("backup","rotate_action_earliest");break;case"rotate_smart_recycle":b.text=_T("backup","rotate_action_smart_recycle");b.tip=_T("backup","rotate_action_smart_recycle_description")+"<br/><br/><b>"+_T("backup","rotate_action_smart_recycle_hourly")+"</b><br/>"+_T("backup","rotate_action_smart_recycle_hourly_hint")+"<br/><br/><b>"+_T("backup","rotate_action_smart_recycle_daily")+"</b><br/>"+_T("backup","rotate_action_smart_recycle_daily_hint")+"<br/><br/><b>"+_T("backup","rotate_action_smart_recycle_weekly")+"</b><br/>"+_T("backup","rotate_action_smart_recycle_weekly_hint")+"<br/>";break;case"rotate_customize_retention":b.text=SYNO.SDS.BackupServer.String("app","customized_retention")+' <a class="syno-sds-backup-server-hyperlink" id="syno-backup-server-customized-window">'+SYNO.SDS.BackupServer.String("app","version_detail")+"</a>";this.rotate_customize_retention=a.rotate_customized_rules;break}c.push(b);var d={};d.key=SYNO.SDS.BackupServer.String("app","rotate_maximum_versions");d.keytip=SYNO.SDS.BackupServer.String("app","rotate_condition_desc");d.text=a.rotate_condition[1];c.push(d);return},openCustomizedRotationWindow:function(c,a,f){var d=[];d=d.concat(this.rotate_customize_retention);var b=new SYNO.SDS.Backup.Server.Common.RetentionSetting.CustomizedWindow({title:SYNO.SDS.BackupServer.String("app","customized_retention_title"),owner:this,appWin:this.appWin,read_only:true,retention_rules:d});b.open()},openFilterSettingWindow:function(c,b,d){var a=new SYNO.SDS.Backup.Server.Common.FilterSettingWindow({owner:this.owner,backupFilter:this.filter_params,disable_modified_source:true});a.open()}});Ext.define("SYNO.SDS.BackupService.Instance",{extend:"SYNO.SDS.AppInstance",appWindowName:"SYNO.SDS.BackupServer.MainWindow"});Ext.define("SYNO.SDS.BackupServer.MainWindow",{extend:"SYNO.SDS.PageListAppWindow",activePage:"SYNO.SDS.BackupServer.OverviewPanel",constructor:function(a){this.isFirst=true;this.pollingID=null;var b=[{iconCls:"icon-overview",text:SYNO.SDS.BackupServer.String("app","page_overview"),fn:"SYNO.SDS.BackupServer.OverviewPanel"},{iconCls:"icon-task",text:SYNO.SDS.BackupServer.String("app","page_task"),fn:"SYNO.SDS.BackupServer.TaskPanel"},{iconCls:"icon-setting",text:SYNO.SDS.BackupServer.String("app","page_setting"),fn:"SYNO.SDS.BackupServer.SettingPanel"}];var c={resizable:true,maximizable:true,minimizable:true,width:1032,height:576,minWidth:1032,minHeight:576,border:true,cls:"syno-backup-server-mainwindow",listItems:b};Ext.apply(c,a);this.callParent([c])},getPageCt:function(){if(!this.pageCt){this.pageCt=new Ext.Panel({layout:"card",padding:"0",border:false,frame:false,hideMode:"offsets",region:"center"})}return this.pageCt},onOpen:function(){this.callParent(arguments);this.setStatusBusy();this.sendWebAPI({compound:{stopwhenerror:false,mode:"parallel",params:[{api:"SYNO.Backup.Service.VersionBackup.Target",version:1,method:"list"},{api:"SYNO.Backup.Service.VersionBackup.Config",version:1,method:"get"}]},scope:this,callback:this.onOpenDone})},initEvents:function(){this.callParent(arguments);this.on("show",function(){if(Ext.isEmpty(this.modalWin)){this.startPolling()}});this.on("hide",this.stopPolling)},onOpenDone:function(e,b,d){if(!e){this.clearStatusBusy();this.getMsgBox().alert(_T("leaf","backup"),_T("common","error_system"),function(){this.close()},this);return}var c=true;Ext.each(b.result,function(f){if(!f.success){this.clearStatusBusy();this.getMsgBox().alert(_T("leaf","backup"),SYNO.SDS.BackupServer.GetErrorString(f.error.code),function(){this.close()},this);c=false;return false}},this);if(!c){return}this.targetListCB(b.result[0].success,b.result[0].data,d);var a=b.result[1].data;this.getSettingPanel().loadSettingData(a);this.clearStatusBusy();this.isFirst=false},startPolling:function(){if(this.pollingID){return}this.pollingID=this.pollReg({webapi:{api:"SYNO.Backup.Service.VersionBackup.Target",version:1,method:"list"},interval:3,immediate:this.isFirst?false:true,scope:this,status_callback:this.targetListCB})},stopPolling:function(){if(!this.pollingID){return}this.pollUnreg(this.pollingID);this.pollingID=null;if(this.getActivePage().stopUpdateData){this.getActivePage().stopUpdateData()}},targetListCB:function(f,a,c){if(!f){return}this.last_target_list=a.target_list;var e=new Date();var b=e.getTime()/1000;Ext.each(this.last_target_list,function(d){d.browser_webapi_time=b},this);if(this.getActivePage().loadTargetList){this.getActivePage().loadTargetList(a.target_list)}},openWindow:function(a){this.stopPolling();a.on("close",this.startPolling,this);a.open()},getSettingPanel:function(){var a=this.getPageCt().getComponent("SYNO.SDS.BackupServer.SettingPanel");if(!a){a=this.createPage("SYNO.SDS.BackupServer.SettingPanel");this.getPageCt().add(a)}return a}});Ext.define("SYNO.SDS.BackupServer.Extension.Instance",{extend:"SYNO.SDS.AppInstance",constructor:function(a){this.callParent(arguments)},initInstance:function(){SYNO.SDS.StatusNotifier.setAppPrivilege("SYNO.SDS.BackupService.Instance",_S("is_admin"));return}});