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