]> git.proxmox.com Git - pve-manager.git/blame - www/manager6/window/Backup.js
ui: parser: make comment single-line
[pve-manager.git] / www / manager6 / window / Backup.js
CommitLineData
56c8ef92
DM
1Ext.define('PVE.window.Backup', {
2 extend: 'Ext.window.Window',
3
4 resizable: false,
5
8058410f 6 initComponent: function() {
56c8ef92
DM
7 var me = this;
8
9 if (!me.nodename) {
10 throw "no node name specified";
11 }
12
13 if (!me.vmid) {
14 throw "no VM ID specified";
15 }
16
17 if (!me.vmtype) {
18 throw "no VM type specified";
19 }
20
62ce8928
TL
21 let compressionSelector = Ext.create('PVE.form.CompressionSelector', {
22 name: 'compress',
23 value: 'zstd',
24 fieldLabel: gettext('Compression'),
25 });
26
fddb0412
FE
27 let modeSelector = Ext.create('PVE.form.BackupModeSelector', {
28 fieldLabel: gettext('Mode'),
29 value: 'snapshot',
30 name: 'mode',
31 });
32
33 let mailtoField = Ext.create('Ext.form.field.Text', {
34 fieldLabel: gettext('Send email to'),
35 name: 'mailto',
36 emptyText: Proxmox.Utils.noneText,
37 });
38
39 let initialDefaults = false;
40
56c8ef92
DM
41 var storagesel = Ext.create('PVE.form.StorageSelector', {
42 nodename: me.nodename,
43 name: 'storage',
56c8ef92
DM
44 fieldLabel: gettext('Storage'),
45 storageContent: 'backup',
62ce8928
TL
46 allowBlank: false,
47 listeners: {
48 change: function(f, v) {
49 let store = f.getStore();
8267aa63 50 let rec = store.findRecord('storage', v, 0, false, true, true);
62ce8928
TL
51
52 if (rec && rec.data && rec.data.type === 'pbs') {
53 compressionSelector.setValue('zstd');
54 compressionSelector.setDisabled(true);
55 } else if (!compressionSelector.getEditable()) {
56 compressionSelector.setDisabled(false);
57 }
fddb0412
FE
58
59 Proxmox.Utils.API2Request({
60 url: `/nodes/${me.nodename}/vzdump/defaults`,
61 method: 'GET',
62 params: {
63 storage: v,
64 },
65 waitMsgTarget: me,
66 success: function(response, opts) {
67 const data = response.result.data;
68
69 if (!initialDefaults && data.mailto !== undefined) {
70 mailtoField.setValue(data.mailto);
71 }
72 if (!initialDefaults && data.mode !== undefined) {
73 modeSelector.setValue(data.mode);
74 }
75
76 initialDefaults = true;
77 },
78 failure: function(response, opts) {
79 Ext.Msg.alert(gettext('Error'), response.htmlStatus);
80 },
81 });
f6710aac 82 },
62ce8928 83 },
56c8ef92 84 });
9fd52dd2 85 storagesel.setValue(me.storage);
56c8ef92
DM
86
87 me.formPanel = Ext.create('Ext.form.Panel', {
88 bodyPadding: 10,
89 border: false,
90 fieldDefaults: {
91 labelWidth: 100,
f6710aac 92 anchor: '100%',
56c8ef92
DM
93 },
94 items: [
95 storagesel,
fddb0412 96 modeSelector,
62ce8928 97 compressionSelector,
fddb0412 98 mailtoField,
aa396ea6 99 ],
56c8ef92
DM
100 });
101
102 var form = me.formPanel.getForm();
103
104 var submitBtn = Ext.create('Ext.Button', {
105 text: gettext('Backup'),
8058410f 106 handler: function() {
56c8ef92
DM
107 var storage = storagesel.getValue();
108 var values = form.getValues();
109 var params = {
110 storage: storage,
111 vmid: me.vmid,
112 mode: values.mode,
aa396ea6 113 remove: 0,
56c8ef92 114 };
8b8a4583 115
8058410f 116 if (values.mailto) {
8b8a4583
DC
117 params.mailto = values.mailto;
118 }
119
56c8ef92
DM
120 if (values.compress) {
121 params.compress = values.compress;
122 }
123
e7ade592 124 Proxmox.Utils.API2Request({
56c8ef92
DM
125 url: '/nodes/' + me.nodename + '/vzdump',
126 params: params,
127 method: 'POST',
8058410f 128 failure: function(response, opts) {
f6710aac 129 Ext.Msg.alert('Error', response.htmlStatus);
56c8ef92
DM
130 },
131 success: function(response, options) {
e83e60bf
EK
132 // close later so we reload the grid
133 // after the task has completed
134 me.hide();
135
56c8ef92 136 var upid = response.result.data;
2a4971d8 137
8cbc11a7 138 var win = Ext.create('Proxmox.window.TaskViewer', {
e83e60bf
EK
139 upid: upid,
140 listeners: {
141 close: function() {
142 me.close();
f6710aac
TL
143 },
144 },
56c8ef92
DM
145 });
146 win.show();
f6710aac 147 },
56c8ef92 148 });
f6710aac 149 },
56c8ef92
DM
150 });
151
672a6270 152 var helpBtn = Ext.create('Proxmox.button.Help', {
0de33b54
EK
153 onlineHelp: 'chapter_vzdump',
154 listenToGlobalEvent: false,
f6710aac 155 hidden: false,
0de33b54
EK
156 });
157
2a4971d8 158 var title = gettext('Backup') + " " +
53e3ea84 159 (me.vmtype === 'lxc' ? "CT" : "VM") +
56c8ef92
DM
160 " " + me.vmid;
161
162 Ext.apply(me, {
163 title: title,
164 width: 350,
165 modal: true,
166 layout: 'auto',
167 border: false,
8058410f
TL
168 items: [me.formPanel],
169 buttons: [helpBtn, '->', submitBtn],
56c8ef92
DM
170 });
171
172 me.callParent();
f6710aac 173 },
56c8ef92 174});