]>
git.proxmox.com Git - pmg-gui.git/blob - js/BackupRestore.js
1 Ext
.define('pmg-backup-list', {
2 extend
: 'Ext.data.Model',
5 { type
: 'integer', name
: 'size' },
6 { type
: 'date', dateFormat
: 'timestamp', name
: 'timestamp' },
11 url
: "/api2/json/nodes/" + Proxmox
.NodeName
+ "/backup",
13 idProperty
: 'filename',
16 Ext
.define('PMG.RestoreWindow', {
17 extend
: 'Proxmox.window.Edit',
18 xtype
: 'pmgRestoreWindow',
19 onlineHelp
: 'chapter_pmgbackup',
22 title
: gettext('Restore'),
25 submitText
: gettext('Restore'),
30 initComponent: function() {
35 xtype
: 'proxmoxcheckbox',
37 fieldLabel
: gettext('System Configuration'),
40 xtype
: 'proxmoxcheckbox',
44 fieldLabel
: gettext('Rule Database'),
46 change: function(field
, value
) {
47 field
.nextSibling('field[name=statistic]').setDisabled(!value
);
52 xtype
: 'proxmoxcheckbox',
54 fieldLabel
: gettext('Statistic'),
60 restorePath
= `backup/${encodeURIComponent(me.filename)}`;
61 } else if (me
.backup_time
) {
62 restorePath
= `pbs/${me.remote}/snapshot/${me.backup_id}/${me.backup_time}`;
64 throw "neither filename nor snapshot given";
66 me
.url
= `/nodes/${Proxmox.NodeName}/${restorePath}`;
72 Ext
.define('PMG.BackupWindow', {
73 extend
: 'Proxmox.window.Edit',
74 xtype
: 'pmgBackupWindow',
75 onlineHelp
: 'chapter_pmgbackup',
78 title
: gettext('Backup'),
81 submitText
: gettext('Backup'),
88 xtype
: 'proxmoxcheckbox',
92 fieldLabel
: gettext('Include Statistics'),
98 Ext
.define('PMG.BackupRestore', {
99 extend
: 'Ext.grid.GridPanel',
100 xtype
: 'pmgBackupRestore',
102 title
: gettext('Backup') + '/' + gettext('Restore'),
105 xclass
: 'Ext.app.ViewController',
107 createBackup: function() {
108 let view
= this.getView();
109 Ext
.create('PMG.BackupWindow', {
110 url
: "/nodes/" + Proxmox
.NodeName
+ "/backup",
111 taskDone
: () => view
.store
.load(),
115 onRestore: function() {
116 let view
= this.getView();
117 let rec
= view
.getSelection()[0];
119 if (!(rec
&& rec
.data
&& rec
.data
.filename
)) {
123 Ext
.create('PMG.RestoreWindow', {
124 filename
: rec
.data
.filename
,
128 onAfterRemove: function(btn
, res
) {
129 let view
= this.getView();
136 text
: gettext('Backup Now'),
137 handler
: 'createBackup',
141 xtype
: 'proxmoxButton',
142 text
: gettext('Restore'),
143 handler
: 'onRestore',
147 xtype
: 'proxmoxStdRemoveButton',
148 baseurl
: '/nodes/' + Proxmox
.NodeName
+ '/backup',
149 reference
: 'removeBtn',
150 callback
: 'onAfterRemove',
157 model
: 'pmg-backup-list',
160 property
: 'timestamp',
168 header
: gettext('Filename'),
171 renderer
: Ext
.htmlEncode
,
172 dataIndex
: 'filename',
176 header
: gettext('Time'),
180 dataIndex
: 'timestamp',
183 header
: gettext('Size'),
186 renderer
: Proxmox
.Utils
.render_size
,
190 header
: gettext('Download'),
191 renderer: function(filename
) {
192 return "<a class='download' href='" +
193 "/api2/json/nodes/" + Proxmox
.NodeName
+ "/backup/" + encodeURIComponent(filename
) +
194 "'><i class='fa fa-fw fa-download'</i></a>";
196 dataIndex
: 'filename',