]> git.proxmox.com Git - pve-manager.git/blobdiff - www/manager6/window/SafeDestroy.js
drop jslint lines
[pve-manager.git] / www / manager6 / window / SafeDestroy.js
index ec4a2f5e834fa6207c8445e06e491538fbf8eb40..cc32f6e0767e8cf5661ef4b7cedd5d3e160c0827 100644 (file)
@@ -1,42 +1,39 @@
 /* Popup a message window
- * where the user has to manually enter the ressource ID
+ * where the user has to manually enter the resource ID
  * to enable the destroy button
  */
 Ext.define('PVE.window.SafeDestroy', {
     extend: 'Ext.window.Window',
     alias: 'widget.pveSafeDestroy',
 
-    title: gettext('Are you sure?'),
+    title: gettext('Confirm'),
     modal: true,
     buttonAlign: 'center',
     bodyPadding: 10,
     width: 450,
-    layout: 'hbox',
-
-    viewModel: { type: 'default' },
+    layout: { type:'hbox' },
+    defaultFocus: 'confirmField',
+    showProgress: false,
 
     config: {
        item: {
            id: undefined,
            type: undefined
        },
-       url: undefined
+       url: undefined,
+       params: {}
     },
 
-    applyItem: function(item) {
+    getParams: function() {
        var me = this;
-
-       if (!Ext.isDefined(item.id)) {
-           throw "no ID specified";
+       var purgeCheckbox = me.lookupReference('purgeCheckbox');
+       if (purgeCheckbox.checked) {
+           me.params.purge = 1;
        }
-
-       if (!Ext.isDefined(item.type)) {
-           throw "no VM type specified";
+       if (Ext.Object.isEmpty(me.params)) {
+           return '';
        }
-
-       me.getViewModel().set('item', item);
-
-       return item;
+       return '?' + Ext.Object.toQueryString(me.params);
     },
 
     controller: {
@@ -48,25 +45,52 @@ Ext.define('PVE.window.SafeDestroy', {
                change: function(f, value) {
                    var view = this.getView();
                    var removeButton = this.lookupReference('removeButton');
-                   if (value === view.getItem().id) {
+                   if (value === view.getItem().id.toString()) {
                        removeButton.enable();
                    } else {
                        removeButton.disable();
                    }
+               },
+               specialkey: function (field, event) {
+                   var removeButton = this.lookupReference('removeButton');
+                   if (!removeButton.isDisabled() && event.getKey() == event.ENTER) {
+                       removeButton.fireEvent('click', removeButton, event);
+                   }
                }
            },
            'button[reference=removeButton]': {
                click: function() {
                    var view = this.getView();
-                   PVE.Utils.API2Request({
-                       url: view.getUrl(),
+                   Proxmox.Utils.API2Request({
+                       url: view.getUrl() + view.getParams(),
                        method: 'DELETE',
                        waitMsgTarget: view,
                        failure: function(response, opts) {
+                           view.close();
                            Ext.Msg.alert('Error', response.htmlStatus);
                        },
-                       callback: function() {
-                           view.close();
+                       success: function(response, options) {
+                           var hasProgressBar = view.showProgress &&
+                               response.result.data ? true : false;
+
+                           if (hasProgressBar) {
+                               // stay around so we can trigger our close events
+                               // when background action is completed
+                               view.hide();
+
+                               var upid = response.result.data;
+                               var win = Ext.create('Proxmox.window.TaskProgress', {
+                                   upid: upid,
+                                   listeners: {
+                                       destroy: function () {
+                                           view.close();
+                                       }
+                                   }
+                               });
+                               win.show();
+                           } else {
+                               view.close();
+                           }
                        }
                    });
                }
@@ -79,7 +103,7 @@ Ext.define('PVE.window.SafeDestroy', {
            xtype: 'component',
            cls: [ Ext.baseCSSPrefix + 'message-box-icon',
                   Ext.baseCSSPrefix + 'message-box-warning',
-                  Ext.baseCSSPrefix + 'dlg-icon'],
+                  Ext.baseCSSPrefix + 'dlg-icon']
        },
        {
            xtype: 'container',
@@ -91,20 +115,29 @@ Ext.define('PVE.window.SafeDestroy', {
            items: [
                {
                    xtype: 'component',
-                   bind: gettext('Are you sure you want to remove {item.type} {item.id}? This will permanently erase all data.')
+                   reference: 'messageCmp'
                },
                {
+                   itemId: 'confirmField',
                    reference: 'confirmField',
-                   xtype: 'numberfield',
+                   xtype: 'textfield',
                    name: 'confirm',
                    labelWidth: 300,
-                   bind: {
-                       fieldLabel: gettext('Please enter the {item.type} ID to confirm'),
-                   },
                    hideTrigger: true,
                    allowBlank: false
+               },
+               {
+                   xtype: 'proxmoxcheckbox',
+                   name: 'purge',
+                   reference: 'purgeCheckbox',
+                   boxLabel: gettext('Purge'),
+                   checked: false,
+                   autoEl: {
+                       tag: 'div',
+                       'data-qtip': gettext('Remove from replication and backup jobs')
+                   }
                }
-           ],
+           ]
        }
     ],
     buttons: [
@@ -113,5 +146,49 @@ Ext.define('PVE.window.SafeDestroy', {
            text: gettext('Remove'),
            disabled: true
        }
-    ]
+    ],
+
+    initComponent : function() {
+       var me = this;
+
+       me.callParent();
+
+       var item = me.getItem();
+
+       if (!Ext.isDefined(item.id)) {
+           throw "no ID specified";
+       }
+
+       if (!Ext.isDefined(item.type)) {
+           throw "no VM type specified";
+       }
+
+       var messageCmp = me.lookupReference('messageCmp');
+       var msg;
+
+       if (item.type === 'VM') {
+           msg = Proxmox.Utils.format_task_description('qmdestroy', item.id);
+       } else if (item.type === 'CT') {
+           msg = Proxmox.Utils.format_task_description('vzdestroy', item.id);
+       } else if (item.type === 'CephPool') {
+           msg = Proxmox.Utils.format_task_description('cephdestroypool', item.id);
+       } else if (item.type === 'Image') {
+           msg = Proxmox.Utils.format_task_description('unknownimgdel', item.id);
+       } else {
+           throw "unknown item type specified";
+       }
+
+       messageCmp.setHtml(msg);
+
+       if (!(item.type === 'VM' || item.type === 'CT')) {
+           let purgeCheckbox = me.lookupReference('purgeCheckbox');
+           purgeCheckbox.setDisabled(true);
+           purgeCheckbox.setHidden(true);
+       }
+
+       var confirmField = me.lookupReference('confirmField');
+       msg = gettext('Please enter the ID to confirm') +
+           ' (' + item.id + ')';
+       confirmField.setFieldLabel(msg);
+    }
 });