X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=button%2FButton.js;h=93c773cbbc029201b15fb85e392a518cdbb3e3c0;hb=c898b490c713f8aad9085836e519c76157af55ac;hp=266bb8350d6497c59192947cb8f7a75fbdcbb15b;hpb=2280ae09a947cf50e13035d38efb857bbd4863be;p=proxmox-widget-toolkit.git diff --git a/button/Button.js b/button/Button.js index 266bb83..93c773c 100644 --- a/button/Button.js +++ b/button/Button.js @@ -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(); + }, });