]> git.proxmox.com Git - pve-manager.git/blame - www/manager6/storage/BackupView.js
ui: guest backup grid: hide file-restore button if not a PBS storage
[pve-manager.git] / www / manager6 / storage / BackupView.js
CommitLineData
1665b840
FE
1Ext.define('PVE.storage.BackupView', {
2 extend: 'PVE.storage.ContentView',
3
4 alias: 'widget.pveStorageBackupView',
5
1665b840
FE
6 initComponent: function() {
7 var me = this;
8
9 var nodename = me.nodename = me.pveSelNode.data.node;
10 if (!nodename) {
11 throw "no node name specified";
12 }
13
14 var storage = me.storage = me.pveSelNode.data.storage;
15 if (!storage) {
16 throw "no storage ID specified";
17 }
18
19 me.content = 'backup';
20
21 var sm = me.sm = Ext.create('Ext.selection.RowModel', {});
22
23 var reload = function() {
24 me.store.load();
25 };
26
e969d187
FE
27 let pruneButton = Ext.create('Proxmox.button.Button', {
28 text: gettext('Prune group'),
29 disabled: true,
30 selModel: sm,
31 setBackupGroup: function(backup) {
32 if (backup) {
33 let name = backup.text;
34 let vmid = backup.vmid;
35 let format = backup.format;
36
37 let vmtype;
38 if (name.startsWith('vzdump-lxc-') || format === "pbs-ct") {
39 vmtype = 'lxc';
40 } else if (name.startsWith('vzdump-qemu-') || format === "pbs-vm") {
41 vmtype = 'qemu';
42 }
43
44 if (vmid && vmtype) {
45 this.setText(gettext('Prune group') + ` ${vmtype}/${vmid}`);
46 this.vmid = vmid;
47 this.vmtype = vmtype;
48 this.setDisabled(false);
49 return;
50 }
51 }
52 this.setText(gettext('Prune group'));
53 this.vmid = null;
54 this.vmtype = null;
55 this.setDisabled(true);
56 },
57 handler: function(b, e, rec) {
58 let win = Ext.create('PVE.window.Prune', {
59 nodename: nodename,
60 storage: storage,
61 backup_id: this.vmid,
62 backup_type: this.vmtype,
63 });
64 win.show();
65 win.on('destroy', reload);
66 },
67 });
68
69 me.on('selectionchange', function(model, srecords, eOpts) {
70 if (srecords.length === 1) {
71 pruneButton.setBackupGroup(srecords[0].data);
72 } else {
73 pruneButton.setBackupGroup(null);
74 }
75 });
76
878bbf0b
SR
77 let isPBS = me.pluginType === 'pbs';
78
1665b840
FE
79 me.tbar = [
80 {
81 xtype: 'proxmoxButton',
82 text: gettext('Restore'),
83 selModel: sm,
84 disabled: true,
1665b840
FE
85 handler: function(b, e, rec) {
86 var vmtype;
87 if (PVE.Utils.volume_is_qemu_backup(rec.data.volid, rec.data.format)) {
88 vmtype = 'qemu';
89 } else if (PVE.Utils.volume_is_lxc_backup(rec.data.volid, rec.data.format)) {
90 vmtype = 'lxc';
91 } else {
92 return;
93 }
94
95 var win = Ext.create('PVE.window.Restore', {
96 nodename: nodename,
97 volid: rec.data.volid,
98 volidText: PVE.Utils.render_storage_content(rec.data.volid, {}, rec),
f6710aac 99 vmtype: vmtype,
878bbf0b 100 isPBS: isPBS,
1665b840
FE
101 });
102 win.show();
103 win.on('destroy', reload);
f6710aac 104 },
1665b840
FE
105 },
106 {
107 xtype: 'proxmoxButton',
108 text: gettext('Show Configuration'),
109 disabled: true,
110 selModel: sm,
f6710aac 111 handler: function(b, e, rec) {
1665b840
FE
112 var win = Ext.create('PVE.window.BackupConfig', {
113 volume: rec.data.volid,
f6710aac 114 pveSelNode: me.pveSelNode,
1665b840
FE
115 });
116
117 win.show();
f6710aac 118 },
1665b840 119 },
e969d187 120 pruneButton,
1665b840
FE
121 ];
122
878bbf0b 123 if (isPBS) {
a4b87129
TL
124 me.extraColumns = {
125 encrypted: {
126 header: gettext('Encrypted'),
127 dataIndex: 'encrypted',
128 renderer: PVE.Utils.render_backup_encryption,
129 },
130 verification: {
131 header: gettext('Verify State'),
132 dataIndex: 'verification',
133 renderer: PVE.Utils.render_backup_verification,
f6710aac 134 },
a4b87129 135 };
84ae9c8a
SR
136
137 me.tbar.push({
138 xtype: 'proxmoxButton',
139 text: gettext('File Restore'),
140 disabled: true,
141 selModel: sm,
142 handler: function(b, e, rec) {
143 Ext.create('Proxmox.window.FileBrowser', {
144 title: gettext('File Restore') + " - " + rec.data.text,
145 listURL: `/api2/json/nodes/localhost/storage/${me.storage}/file-restore/list`,
146 downloadURL: `/api2/json/nodes/localhost/storage/${me.storage}/file-restore/download`,
147 extraParams: {
4c02fcfd 148 volume: rec.data.volid,
84ae9c8a
SR
149 },
150 archive: PVE.Utils.volume_is_qemu_backup(rec.data.volid, rec.data.format) ?
151 'all' : undefined,
152 }).show();
153 },
154 });
a4b87129
TL
155 }
156
1665b840
FE
157 me.callParent();
158 },
159});