]>
git.proxmox.com Git - proxmox-widget-toolkit.git/blob - src/window/SafeDestroy.js
87f81b774bbfe3646a22a045088ce970a1757584
1 /* Popup a message window
2 * where the user has to manually enter the resource ID
3 * to enable the destroy button
5 Ext
.define('Proxmox.window.SafeDestroy', {
6 extend
: 'Ext.window.Window',
7 alias
: 'proxmoxSafeDestroy',
9 title
: gettext('Confirm'),
11 buttonAlign
: 'center',
14 layout
: { type
: 'hbox' },
15 defaultFocus
: 'confirmField',
29 getParams: function() {
31 const purgeCheckbox
= me
.lookupReference('purgeCheckbox');
32 if (purgeCheckbox
.checked
) {
35 if (Ext
.Object
.isEmpty(me
.params
)) {
38 return '?' + Ext
.Object
.toQueryString(me
.params
);
43 xclass
: 'Ext.app.ViewController',
46 'field[name=confirm]': {
47 change: function(f
, value
) {
48 const view
= this.getView();
49 const removeButton
= this.lookupReference('removeButton');
50 if (value
=== view
.getItem().id
.toString()) {
51 removeButton
.enable();
53 removeButton
.disable();
56 specialkey: function(field
, event
) {
57 const removeButton
= this.lookupReference('removeButton');
58 if (!removeButton
.isDisabled() && event
.getKey() === event
.ENTER
) {
59 removeButton
.fireEvent('click', removeButton
, event
);
63 'button[reference=removeButton]': {
65 const view
= this.getView();
66 Proxmox
.Utils
.API2Request({
67 url
: view
.getUrl() + view
.getParams(),
70 failure: function(response
, opts
) {
72 Ext
.Msg
.alert('Error', response
.htmlStatus
);
74 success: function(response
, options
) {
75 const hasProgressBar
= !!(view
.showProgress
&&
76 response
.result
.data
);
79 // stay around so we can trigger our close events
80 // when background action is completed
83 const upid
= response
.result
.data
;
84 const win
= Ext
.create('Proxmox.window.TaskProgress', {
106 cls
: [Ext
.baseCSSPrefix
+ 'message-box-icon',
107 Ext
.baseCSSPrefix
+ 'message-box-warning',
108 Ext
.baseCSSPrefix
+ 'dlg-icon'],
120 reference
: 'messageCmp',
123 itemId
: 'confirmField',
124 reference
: 'confirmField',
132 xtype
: 'proxmoxcheckbox',
134 reference
: 'purgeCheckbox',
135 boxLabel
: gettext('Purge'),
139 'data-qtip': gettext('Remove from replication and backup jobs'),
144 reference
: 'noteContainer',
155 reference
: 'noteCmp',
157 style
: 'font-size: smaller; overflow: hidden; white-space: nowrap; text-overflow: ellipsis;',
166 reference
: 'removeButton',
167 text
: gettext('Remove'),
172 initComponent: function() {
177 const item
= me
.getItem();
179 if (!Ext
.isDefined(item
.id
)) {
180 throw "no ID specified";
183 const messageCmp
= me
.lookupReference('messageCmp');
184 const noteCmp
= me
.lookupReference('noteCmp');
187 if (Ext
.isDefined(me
.getNote())) {
188 noteCmp
.setHtml(`<span title="${me.getNote()}">${me.getNote()}</span>`);
189 const noteContainer
= me
.lookupReference('noteContainer');
190 noteContainer
.setHidden(false);
191 noteContainer
.setDisabled(false);
194 if (Ext
.isDefined(me
.getTaskName())) {
195 msg
= Proxmox
.Utils
.format_task_description(me
.getTaskName(), item
.id
);
196 messageCmp
.setHtml(msg
);
198 throw "no task name specified";
201 if (!item
.purgeable
) {
202 const purgeCheckbox
= me
.lookupReference('purgeCheckbox');
203 purgeCheckbox
.setDisabled(true);
204 purgeCheckbox
.setHidden(true);
207 const confirmField
= me
.lookupReference('confirmField');
208 msg
= gettext('Please enter the ID to confirm') +
209 ' (' + item
.id
+ ')';
210 confirmField
.setFieldLabel(msg
);