]> git.proxmox.com Git - proxmox-widget-toolkit.git/blobdiff - button/Button.js
use eslint and execute as check target
[proxmox-widget-toolkit.git] / button / Button.js
index 266bb8350d6497c59192947cb8f7a75fbdcbb15b..93c773cbbc029201b15fb85e392a518cdbb3e3c0 100644 (file)
@@ -10,7 +10,9 @@ Ext.define('Proxmox.button.Button', {
     selModel: undefined,
 
     // if 'false' handler will not be called (button disabled)
-    enableFn: function(record) { },
+    enableFn: function(record) {
+       // return undefined by default
+    },
 
     // function(record) or text
     confirmMsg: false,
@@ -18,21 +20,21 @@ Ext.define('Proxmox.button.Button', {
     // take special care in confirm box (select no as default).
     dangerous: false,
 
-    initComponent: function() {
-       /*jslint confusion: true */
+    // is used to get the parent container for its selection model
+    parentXType: 'grid',
 
-        var me = this;
+    initComponent: function() {
+        let me = this;
 
        if (me.handler) {
-
            // Note: me.realHandler may be a string (see named scopes)
-           var realHandler = me.handler;
+           let realHandler = me.handler;
 
            me.handler = function(button, event) {
-               var rec, msg;
+               let rec, msg;
                if (me.selModel) {
                    rec = me.selModel.getSelection()[0];
-                   if (!rec || (me.enableFn(rec) === false)) {
+                   if (!rec || me.enableFn(rec) === false) {
                        return;
                    }
                }
@@ -46,7 +48,7 @@ Ext.define('Proxmox.button.Button', {
                    Ext.Msg.show({
                        title: gettext('Confirm'),
                        icon: me.dangerous ? Ext.Msg.WARNING : Ext.Msg.QUESTION,
-                       msg: msg,
+                       message: msg,
                        buttons: Ext.Msg.YESNO,
                        defaultFocus: me.dangerous ? 'no' : 'yes',
                        callback: function(btn) {
@@ -54,7 +56,7 @@ Ext.define('Proxmox.button.Button', {
                                return;
                            }
                            Ext.callback(realHandler, me.scope, [button, event, rec], 0, me);
-                       }
+                       },
                    });
                } else {
                    Ext.callback(realHandler, me.scope, [button, event, rec], 0, me);
@@ -64,11 +66,11 @@ Ext.define('Proxmox.button.Button', {
 
        me.callParent();
 
-       var grid;
-       if (!me.selModel && me.selModel !== null) {
-           grid = me.up('grid');
-           if (grid && grid.selModel) {
-               me.selModel = grid.selModel;
+       let grid;
+       if (!me.selModel && me.selModel !== null && me.selModel !== false) {
+           let parent = me.up(me.parentXType);
+           if (parent && parent.selModel) {
+               me.selModel = parent.selModel;
            }
        }
 
@@ -80,19 +82,18 @@ Ext.define('Proxmox.button.Button', {
                throw "unable to find waitMsgTarget";
            }
        }
-       
-       if (me.selModel) {
 
+       if (me.selModel) {
            me.mon(me.selModel, "selectionchange", function() {
-               var rec = me.selModel.getSelection()[0];
-               if (!rec || (me.enableFn(rec) === false)) {
+               let rec = me.selModel.getSelection()[0];
+               if (!rec || me.enableFn(rec) === false) {
                    me.setDisabled(true);
-               } else  {
+               } else {
                    me.setDisabled(false);
                }
            });
        }
-    }
+    },
 });
 
 
@@ -108,33 +109,41 @@ Ext.define('Proxmox.button.StdRemoveButton', {
     delay: undefined,
 
     config: {
-       baseurl: undefined
+       baseurl: undefined,
     },
 
     getUrl: function(rec) {
-       var me = this;
-       
-       return me.baseurl + '/' + rec.getId();
+       let me = this;
+
+       if (me.selModel) {
+           return me.baseurl + '/' + rec.getId();
+       } else {
+           return me.baseurl;
+       }
     },
 
     // also works with names scopes
-    callback: function(options, success, response) {},
+    callback: function(options, success, response) {
+       // do nothing by default
+    },
 
-    getRecordName: function(rec) { return rec.getId() },
+    getRecordName: (rec) => rec.getId(),
 
-    confirmMsg: function (rec) {
-       var me = this;
+    confirmMsg: function(rec) {
+       let me = this;
 
-       var name = me.getRecordName(rec);
-       return Ext.String.format(
-           gettext('Are you sure you want to remove entry {0}'),
-           "'" + name + "'");
+       let name = me.getRecordName(rec);
+       return Ext.String.format(gettext('Are you sure you want to remove entry {0}'), `'${name}'`);
     },
 
     handler: function(btn, event, rec) {
-       var me = this;
-       var url = me.getUrl(rec);
-       if (typeof me.delay !== 'undefined') url += "?delay=" + me.delay;
+       let me = this;
+
+       let url = me.getUrl(rec);
+
+       if (typeof me.delay !== 'undefined' && me.delay >= 0) {
+           url += "?delay=" + me.delay;
+       }
 
        Proxmox.Utils.API2Request({
            url: url,
@@ -143,9 +152,20 @@ Ext.define('Proxmox.button.StdRemoveButton', {
            callback: function(options, success, response) {
                Ext.callback(me.callback, me.scope, [options, success, response], 0, me);
            },
-           failure: function (response, opts) {
+           failure: function(response, opts) {
                Ext.Msg.alert(gettext('Error'), response.htmlStatus);
-           }
+           },
        });
-    }
+    },
+    initComponent: function() {
+       let me = this;
+
+       // enable by default if no seleModel is there and disabled not set
+       if (me.initialConfig.disabled === undefined &&
+           (me.selModel === null || me.selModel === false)) {
+           me.disabled = false;
+       }
+
+       me.callParent();
+    },
 });