HEX
Server: Apache/2.4.63 (Unix)
System: Linux Synopilou92 4.4.302+ #72806 SMP Mon Jul 21 23:16:00 CST 2025 x86_64
User: pilou92 (1026)
PHP: 8.0.30
Disabled: NONE
Upload Files
File: /volume1/@appstore/HyperBackup/ui/backupwidget.js
/* Copyright (c) 2025 Synology Inc. All rights reserved. */

Ext.define("SYNO.SDS.Backup.ScheduleBackupWidget",{extend:"SYNO.SDS._Widget.GridPanel",usewebapi:!0,constructor:function(t){this.NUM_REC_PER_PAGE=2;var e={cls:"sds-widget-gridpanel syno-sds-backupapp-widget-panel"};Ext.apply(e,t),this.callParent([e])},onActivateScheduleDone:function(t,e,n,s){t&&this.ProcessBackupStatus(e.task_list)},loadStoreTask:function(){},onStartPolling:function(){this.pollingID=this.pollReg({webapi:{api:"SYNO.Backup.Task",version:1,method:"list",params:{additional:["schedule","next_bkp_time","last_bkp_time","last_bkp_result:Backupable","is_modified"]}},interval:10,immediate:!0,scope:this,status_callback:this.onActivateScheduleDone})},onStopPolling:function(){Ext.isEmpty(this.pollingID)||(this.pollUnreg(this.pollingID),delete this.pollingID)},onGridCellClick:function(){},onClick:function(t,e,n){this.callParent(arguments);var s=Ext.fly(e);s&&s.hasClass("help_link")&&SYNO.SDS.AppLaunch("SYNO.SDS.Backup.Application",{id:s.getAttribute("task-id")})},getColumnModel:function(){if(this.cmSystemLog)return this.cmSystemLog;var t=new Ext.grid.ColumnModel({columns:[{id:"bkpstatus",width:290,renderer:this.backupTaskRenderer.createDelegate(this)}]});return this.cmSystemLog=t,t},getStore:function(){if(this.dsSystemLog)return this.dsSystemLog;var t=new Ext.data.Store({reader:new Ext.data.ArrayReader({},[{name:"type"},{name:"task"},{name:"tasks"},{name:"status"},{name:"total"},{name:"time"}])});return this.dsSystemLog=t,this.addManagedComponent(t),t},getTime:function(t){var e=parseInt(t,10);return String.format("{0}:{1}",String.leftPad(Math.floor(e/60),2,"0"),String.leftPad(e%60,2,"0"))},moreContentRender:function(t,e){var n=String.format(SYNO.SDS.Backup.String("app",t),e.length);return 1<e.length&&(n+=String.format(" [{0}]",e.map((function(t){return t.name})).join(","))),this.contentRender(n,"")},contentRender:function(t,e,n){var s=String.format('<div class = "syno-sds-backupapp-scedule-task" ext:qtip="{1}">{0}: {2}</div>',_T("localbkp","localbkp_bkpset_name"),SYNO.SDS.Backup.Util.htmlEncodeTip(t),Ext.util.Format.htmlEncode(t));return Ext.isEmpty(e)||(Ext.isEmpty(n)&&(n=e),s+=String.format('<div ext:qtip="{2}">{0}: {1}</div>',_T("widget","backup_status"),e,Ext.util.Format.htmlEncode(n))),s},backupTaskRenderer:function(t,e,n){return new SYNO.SDS.Backup.BackupTaskView(n.json).getDecorator()},getLastBkp:function(t){var e={},n=[],s=[],i=[],a=[],o=[],c=[],l=[];Ext.each(t,(function(t){"success"!==t.last_bkp_result&&"done"!==t.last_bkp_result||!0===t.is_modified?"discard_failed"===t.status||"none"===t.status&&("backingup"===t.last_bkp_result||"resuming"===t.last_bkp_result||"failed"===t.last_bkp_result||"failed_checking"===t.last_bkp_result)?s.push(t):"partial"===t.last_bkp_result&&!0!==t.is_modified?a.push(t):"cancel"===t.last_bkp_result?o.push(t):"suspend"===t.last_bkp_result?c.push(t):"version_delete_failed"===t.last_bkp_result?l.push(t):i.push(t):n.push(t)}),this);var p=function(t,e){return new Date(e.last_bkp_time).getTime()-new Date(t.last_bkp_time).getTime()};n.sort(p),s.sort(p),a.sort(p),o.sort(p),c.sort(p),l.sort(p),e.title=SYNO.SDS.Backup.String("app","widget_backup_title"),e.cls="syno-sds-backupapp-scedule-enable";var r=function(t){return SYNO.SDS.Backup.GetBkpResultStr(t.last_bkp_result,t.is_modified,t.task_id)};if(1===s.length)e.time=s[0].last_bkp_time,e.iconCls="syno-sds-backupapp-scedule-icon failed",e.content=this.contentRender(s[0].name,r(s[0]));else if(s.length>1)e.time="",e.iconCls="syno-sds-backupapp-scedule-icon failed",e.content=this.moreContentRender("more_failed",s);else if(1===l.length)e.time=l[0].last_bkp_time,e.iconCls="syno-sds-backupapp-scedule-icon version-delete-failed",e.content=this.contentRender(l[0].name,r(l[0]));else if(l.length>1)e.time="",e.iconCls="syno-sds-backupapp-scedule-icon version-delete-failed",e.content=this.moreContentRender("more_version_delete_failed",l);else if(1===o.length)e.time=o[0].last_bkp_time,e.iconCls="syno-sds-backupapp-scedule-icon cancel",e.content=this.contentRender(o[0].name,r(o[0]));else if(o.length>1)e.time="",e.iconCls="syno-sds-backupapp-scedule-icon cancel",e.content=this.moreContentRender("more_cancel",o);else if(1===c.length)e.time=c[0].last_bkp_time,e.iconCls="syno-sds-backupapp-scedule-icon suspend",e.content=this.contentRender(c[0].name,r(c[0]));else if(c.length>1)e.time="",e.iconCls="syno-sds-backupapp-scedule-icon suspend",e.content=this.moreContentRender("more_suspend",c);else if(1===a.length){e.time=a[0].last_bkp_time,e.iconCls="syno-sds-backupapp-scedule-icon partial";var u=SYNO.SDS.Backup.GetBkpResultStr(a[0].last_bkp_result,a[0].is_modified);e.content=this.contentRender(a[0].name,r(a[0]),u)}else a.length>1?(e.time="",e.iconCls="syno-sds-backupapp-scedule-icon partial",e.content=this.moreContentRender("more_partial",a)):1===n.length?(e.time=n[0].last_bkp_time,e.iconCls="syno-sds-backupapp-scedule-icon success",e.content=this.contentRender(n[0].name,r(n[0]))):n.length>1?(e.time="",e.iconCls="syno-sds-backupapp-scedule-icon success",e.content=this.moreContentRender("more_success",n)):(e.time=String.format("--{0}--{0}--",_T("common","colon")),e.iconCls="syno-sds-backupapp-scedule-icon no-result",e.content=this.contentRender(SYNO.SDS.Backup.String("app","no_backup"),""));return e},getNextBkp:function(t){var e=[],n={};Ext.each(t,(function(t){t.next_bkp_epoch_time=Date.parseDate(t.next_bkp_time,"Y/m/d H:i"),void 0!==t.next_bkp_epoch_time&&e.push(t)}),this);return e.sort((function(t,e){return t.next_bkp_epoch_time-e.next_bkp_epoch_time})),n.title=SYNO.SDS.Backup.String("app","backup_schedule_title"),n.cls="syno-sds-backupapp-scedule-enable",0!==e.length?(n.iconCls="syno-sds-backupapp-scedule-icon schedule-active",n.time=e[0].next_bkp_time,n.content=this.contentRender(e[0].name,"")):(n.iconCls="syno-sds-backupapp-scedule-icon schedule-inactive",n.time=String.format("--{0}--{0}--",_T("common","colon")),n.content=this.contentRender(SYNO.SDS.Backup.String("app","no_backup_schedule"),"")),n},ProcessBackupStatus:function(t){var e=[];e.push(this.getLastBkp(t)),e.push(this.getNextBkp(t)),this.getStore().loadData(e,!1),this.doLayout()},onActivate:function(){this.onStartPolling()},onDeactivate:function(){this.onStopPolling()}}),SYNO.SDS.Backup.BackupTaskView=function(t){this.cfg=t,this.getDecorator=function(){return String.format('<div class = "{0}">{1}</div>',this.cfg.cls,this.getContent(this.cfg))},this.getContent=function(t){return String.format('<div class = "{0}"></div>',t.iconCls)+'<div class = "syno-sds-backupapp-scedule-content">'+String.format('<div class = "syno-sds-backupapp-scedule-title-bar"><div class = "syno-sds-backupapp-scedule-title" ext:qtip="{0}">{0}</div><div class = "syno-sds-backupapp-scedule-time" ext:qtip="{1}">{1}</div></div>',t.title,t.time)+String.format('<div class = "{0}">{1}</div>',t.contentCls||"",t.content)+"</div>"}};