]> git.proxmox.com Git - pve-manager.git/blame - www/manager6/window/SafeDestroy.js
ui: eslint: fix trailing comma and comma related whitespaces errors
[pve-manager.git] / www / manager6 / window / SafeDestroy.js
CommitLineData
32f469f3 1/* Popup a message window
ec505260 2 * where the user has to manually enter the resource ID
32f469f3
EK
3 * to enable the destroy button
4 */
5Ext.define('PVE.window.SafeDestroy', {
6 extend: 'Ext.window.Window',
7 alias: 'widget.pveSafeDestroy',
bcecf280 8
16152937 9 title: gettext('Confirm'),
32f469f3
EK
10 modal: true,
11 buttonAlign: 'center',
bcecf280
DM
12 bodyPadding: 10,
13 width: 450,
ec0bd652 14 layout: { type:'hbox' },
7b572e6d 15 defaultFocus: 'confirmField',
707c28ce 16 showProgress: false,
bcecf280 17
bcecf280
DM
18 config: {
19 item: {
20 id: undefined,
f6710aac 21 type: undefined,
bcecf280 22 },
1f8a29e8 23 url: undefined,
f6710aac 24 params: {},
1f8a29e8
DC
25 },
26
27 getParams: function() {
28 var me = this;
743b391c
CE
29 var purgeCheckbox = me.lookupReference('purgeCheckbox');
30 if (purgeCheckbox.checked) {
31 me.params.purge = 1;
32 }
1f8a29e8
DC
33 if (Ext.Object.isEmpty(me.params)) {
34 return '';
35 }
36 return '?' + Ext.Object.toQueryString(me.params);
bcecf280
DM
37 },
38
bcecf280
DM
39 controller: {
40
41 xclass: 'Ext.app.ViewController',
42
43 control: {
44 'field[name=confirm]': {
45 change: function(f, value) {
46 var view = this.getView();
47 var removeButton = this.lookupReference('removeButton');
beba93b1 48 if (value === view.getItem().id.toString()) {
bcecf280
DM
49 removeButton.enable();
50 } else {
51 removeButton.disable();
52 }
7b572e6d
EK
53 },
54 specialkey: function (field, event) {
55 var removeButton = this.lookupReference('removeButton');
56 if (!removeButton.isDisabled() && event.getKey() == event.ENTER) {
57 removeButton.fireEvent('click', removeButton, event);
58 }
f6710aac 59 },
bcecf280 60 },
7667066d 61 'button[reference=removeButton]': {
bcecf280
DM
62 click: function() {
63 var view = this.getView();
e7ade592 64 Proxmox.Utils.API2Request({
1f8a29e8 65 url: view.getUrl() + view.getParams(),
bcecf280
DM
66 method: 'DELETE',
67 waitMsgTarget: view,
68 failure: function(response, opts) {
707c28ce 69 view.close();
bcecf280
DM
70 Ext.Msg.alert('Error', response.htmlStatus);
71 },
707c28ce
FG
72 success: function(response, options) {
73 var hasProgressBar = view.showProgress &&
74 response.result.data ? true : false;
75
76 if (hasProgressBar) {
77 // stay around so we can trigger our close events
78 // when background action is completed
79 view.hide();
80
81 var upid = response.result.data;
8cbc11a7 82 var win = Ext.create('Proxmox.window.TaskProgress', {
707c28ce
FG
83 upid: upid,
84 listeners: {
85 destroy: function () {
86 view.close();
f6710aac
TL
87 },
88 },
707c28ce
FG
89 });
90 win.show();
91 } else {
92 view.close();
93 }
f6710aac 94 },
bcecf280 95 });
f6710aac
TL
96 },
97 },
98 },
bcecf280 99 },
32f469f3
EK
100
101 items: [
fd8a2eea 102 {
bcecf280
DM
103 xtype: 'component',
104 cls: [ Ext.baseCSSPrefix + 'message-box-icon',
105 Ext.baseCSSPrefix + 'message-box-warning',
f6710aac 106 Ext.baseCSSPrefix + 'dlg-icon'],
bcecf280
DM
107 },
108 {
fd8a2eea 109 xtype: 'container',
bcecf280 110 flex: 1,
fd8a2eea
DM
111 layout: {
112 type: 'vbox',
f6710aac 113 align: 'stretch',
fd8a2eea
DM
114 },
115 items: [
116 {
bcecf280 117 xtype: 'component',
f6710aac 118 reference: 'messageCmp',
fd8a2eea 119 },
32f469f3 120 {
7b572e6d 121 itemId: 'confirmField',
763ec2ec 122 reference: 'confirmField',
2125c18a 123 xtype: 'textfield',
bcecf280
DM
124 name: 'confirm',
125 labelWidth: 300,
bcecf280 126 hideTrigger: true,
f6710aac 127 allowBlank: false,
743b391c
CE
128 },
129 {
130 xtype: 'proxmoxcheckbox',
131 name: 'purge',
132 reference: 'purgeCheckbox',
9afda559 133 boxLabel: gettext('Purge'),
743b391c
CE
134 checked: false,
135 autoEl: {
136 tag: 'div',
f6710aac
TL
137 'data-qtip': gettext('Remove from replication & backup jobs and HA resource configuration.'),
138 },
139 },
140 ],
141 },
fd8a2eea 142 ],
32f469f3
EK
143 buttons: [
144 {
bcecf280 145 reference: 'removeButton',
32f469f3 146 text: gettext('Remove'),
f6710aac
TL
147 disabled: true,
148 },
763ec2ec
DM
149 ],
150
151 initComponent : function() {
152 var me = this;
153
154 me.callParent();
155
156 var item = me.getItem();
157
158 if (!Ext.isDefined(item.id)) {
159 throw "no ID specified";
160 }
161
162 if (!Ext.isDefined(item.type)) {
163 throw "no VM type specified";
164 }
165
166 var messageCmp = me.lookupReference('messageCmp');
167 var msg;
168
169 if (item.type === 'VM') {
e7ade592 170 msg = Proxmox.Utils.format_task_description('qmdestroy', item.id);
763ec2ec 171 } else if (item.type === 'CT') {
e7ade592 172 msg = Proxmox.Utils.format_task_description('vzdestroy', item.id);
2125c18a 173 } else if (item.type === 'CephPool') {
e7ade592 174 msg = Proxmox.Utils.format_task_description('cephdestroypool', item.id);
5cdb2722 175 } else if (item.type === 'Image') {
9a25bf06 176 msg = Proxmox.Utils.format_task_description('unknownimgdel', item.id);
763ec2ec 177 } else {
2125c18a 178 throw "unknown item type specified";
763ec2ec
DM
179 }
180
181 messageCmp.setHtml(msg);
182
743b391c
CE
183 if (!(item.type === 'VM' || item.type === 'CT')) {
184 let purgeCheckbox = me.lookupReference('purgeCheckbox');
185 purgeCheckbox.setDisabled(true);
186 purgeCheckbox.setHidden(true);
187 }
188
763ec2ec
DM
189 var confirmField = me.lookupReference('confirmField');
190 msg = gettext('Please enter the ID to confirm') +
191 ' (' + item.id + ')';
192 confirmField.setFieldLabel(msg);
f6710aac 193 },
fd8a2eea 194});