]> git.proxmox.com Git - pve-manager.git/blob - www/manager6/window/SafeDestroy.js
set the default console in the gui when setting the option
[pve-manager.git] / www / manager6 / window / SafeDestroy.js
1 /* Popup a message window
2 * where the user has to manually enter the ressource ID
3 * to enable the destroy button
4 */
5 Ext.define('PVE.window.SafeDestroy', {
6 extend: 'Ext.window.Window',
7 alias: 'widget.pveSafeDestroy',
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 type: undefined
22 },
23 url: undefined,
24 params: {}
25 },
26
27 getParams: function() {
28 var me = this;
29 if (Ext.Object.isEmpty(me.params)) {
30 return '';
31 }
32 return '?' + Ext.Object.toQueryString(me.params);
33 },
34
35 controller: {
36
37 xclass: 'Ext.app.ViewController',
38
39 control: {
40 'field[name=confirm]': {
41 change: function(f, value) {
42 var view = this.getView();
43 var removeButton = this.lookupReference('removeButton');
44 if (value === view.getItem().id.toString()) {
45 removeButton.enable();
46 } else {
47 removeButton.disable();
48 }
49 },
50 specialkey: function (field, event) {
51 var removeButton = this.lookupReference('removeButton');
52 if (!removeButton.isDisabled() && event.getKey() == event.ENTER) {
53 removeButton.fireEvent('click', removeButton, event);
54 }
55 }
56 },
57 'button[reference=removeButton]': {
58 click: function() {
59 var view = this.getView();
60 Proxmox.Utils.API2Request({
61 url: view.getUrl() + view.getParams(),
62 method: 'DELETE',
63 waitMsgTarget: view,
64 failure: function(response, opts) {
65 view.close();
66 Ext.Msg.alert('Error', response.htmlStatus);
67 },
68 success: function(response, options) {
69 var hasProgressBar = view.showProgress &&
70 response.result.data ? true : false;
71
72 if (hasProgressBar) {
73 // stay around so we can trigger our close events
74 // when background action is completed
75 view.hide();
76
77 var upid = response.result.data;
78 var win = Ext.create('Proxmox.window.TaskProgress', {
79 upid: upid,
80 listeners: {
81 destroy: function () {
82 view.close();
83 }
84 }
85 });
86 win.show();
87 } else {
88 view.close();
89 }
90 }
91 });
92 }
93 }
94 }
95 },
96
97 items: [
98 {
99 xtype: 'component',
100 cls: [ Ext.baseCSSPrefix + 'message-box-icon',
101 Ext.baseCSSPrefix + 'message-box-warning',
102 Ext.baseCSSPrefix + 'dlg-icon']
103 },
104 {
105 xtype: 'container',
106 flex: 1,
107 layout: {
108 type: 'vbox',
109 align: 'stretch'
110 },
111 items: [
112 {
113 xtype: 'component',
114 reference: 'messageCmp'
115 },
116 {
117 itemId: 'confirmField',
118 reference: 'confirmField',
119 xtype: 'textfield',
120 name: 'confirm',
121 labelWidth: 300,
122 hideTrigger: true,
123 allowBlank: false
124 }
125 ]
126 }
127 ],
128 buttons: [
129 {
130 reference: 'removeButton',
131 text: gettext('Remove'),
132 disabled: true
133 }
134 ],
135
136 initComponent : function() {
137 var me = this;
138
139 me.callParent();
140
141 var item = me.getItem();
142
143 if (!Ext.isDefined(item.id)) {
144 throw "no ID specified";
145 }
146
147 if (!Ext.isDefined(item.type)) {
148 throw "no VM type specified";
149 }
150
151 var messageCmp = me.lookupReference('messageCmp');
152 var msg;
153
154 if (item.type === 'VM') {
155 msg = Proxmox.Utils.format_task_description('qmdestroy', item.id);
156 } else if (item.type === 'CT') {
157 msg = Proxmox.Utils.format_task_description('vzdestroy', item.id);
158 } else if (item.type === 'CephPool') {
159 msg = Proxmox.Utils.format_task_description('cephdestroypool', item.id);
160 } else {
161 throw "unknown item type specified";
162 }
163
164 messageCmp.setHtml(msg);
165
166 var confirmField = me.lookupReference('confirmField');
167 msg = gettext('Please enter the ID to confirm') +
168 ' (' + item.id + ')';
169 confirmField.setFieldLabel(msg);
170 }
171 });