]> git.proxmox.com Git - pve-manager.git/blame - www/manager6/window/Backup.js
ui: eslint: fix various spacing related issues
[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
56c8ef92
DM
27 var storagesel = Ext.create('PVE.form.StorageSelector', {
28 nodename: me.nodename,
29 name: 'storage',
56c8ef92
DM
30 fieldLabel: gettext('Storage'),
31 storageContent: 'backup',
62ce8928
TL
32 allowBlank: false,
33 listeners: {
34 change: function(f, v) {
35 let store = f.getStore();
8267aa63 36 let rec = store.findRecord('storage', v, 0, false, true, true);
62ce8928
TL
37
38 if (rec && rec.data && rec.data.type === 'pbs') {
39 compressionSelector.setValue('zstd');
40 compressionSelector.setDisabled(true);
41 } else if (!compressionSelector.getEditable()) {
42 compressionSelector.setDisabled(false);
43 }
f6710aac 44 },
62ce8928 45 },
56c8ef92 46 });
9fd52dd2 47 storagesel.setValue(me.storage);
56c8ef92
DM
48
49 me.formPanel = Ext.create('Ext.form.Panel', {
50 bodyPadding: 10,
51 border: false,
52 fieldDefaults: {
53 labelWidth: 100,
f6710aac 54 anchor: '100%',
56c8ef92
DM
55 },
56 items: [
57 storagesel,
58 {
59 xtype: 'pveBackupModeSelector',
60 fieldLabel: gettext('Mode'),
61 value: 'snapshot',
f6710aac 62 name: 'mode',
56c8ef92 63 },
62ce8928 64 compressionSelector,
8b8a4583
DC
65 {
66 xtype: 'textfield',
67 fieldLabel: gettext('Send email to'),
68 name: 'mailto',
f6710aac
TL
69 emptyText: Proxmox.Utils.noneText,
70 },
71 ],
56c8ef92
DM
72 });
73
74 var form = me.formPanel.getForm();
75
76 var submitBtn = Ext.create('Ext.Button', {
77 text: gettext('Backup'),
8058410f 78 handler: function() {
56c8ef92
DM
79 var storage = storagesel.getValue();
80 var values = form.getValues();
81 var params = {
82 storage: storage,
83 vmid: me.vmid,
84 mode: values.mode,
f6710aac 85 remove: 0,
56c8ef92 86 };
8b8a4583 87
8058410f 88 if (values.mailto) {
8b8a4583
DC
89 params.mailto = values.mailto;
90 }
91
56c8ef92
DM
92 if (values.compress) {
93 params.compress = values.compress;
94 }
95
e7ade592 96 Proxmox.Utils.API2Request({
56c8ef92
DM
97 url: '/nodes/' + me.nodename + '/vzdump',
98 params: params,
99 method: 'POST',
8058410f 100 failure: function(response, opts) {
f6710aac 101 Ext.Msg.alert('Error', response.htmlStatus);
56c8ef92
DM
102 },
103 success: function(response, options) {
e83e60bf
EK
104 // close later so we reload the grid
105 // after the task has completed
106 me.hide();
107
56c8ef92 108 var upid = response.result.data;
2a4971d8 109
8cbc11a7 110 var win = Ext.create('Proxmox.window.TaskViewer', {
e83e60bf
EK
111 upid: upid,
112 listeners: {
113 close: function() {
114 me.close();
f6710aac
TL
115 },
116 },
56c8ef92
DM
117 });
118 win.show();
f6710aac 119 },
56c8ef92 120 });
f6710aac 121 },
56c8ef92
DM
122 });
123
672a6270 124 var helpBtn = Ext.create('Proxmox.button.Help', {
0de33b54
EK
125 onlineHelp: 'chapter_vzdump',
126 listenToGlobalEvent: false,
f6710aac 127 hidden: false,
0de33b54
EK
128 });
129
2a4971d8 130 var title = gettext('Backup') + " " +
c817f7da 131 ((me.vmtype === 'lxc') ? "CT" : "VM") +
56c8ef92
DM
132 " " + me.vmid;
133
134 Ext.apply(me, {
135 title: title,
136 width: 350,
137 modal: true,
138 layout: 'auto',
139 border: false,
8058410f
TL
140 items: [me.formPanel],
141 buttons: [helpBtn, '->', submitBtn],
56c8ef92
DM
142 });
143
144 me.callParent();
f6710aac 145 },
56c8ef92 146});