]> git.proxmox.com Git - pve-manager.git/blame - www/manager6/button/Split.js
ui: eslint: fix various spacing related issues
[pve-manager.git] / www / manager6 / button / Split.js
CommitLineData
52721af8
DC
1/* Button features:
2 * - observe selection changes to enable/disable the button using enableFn()
3 * - pop up confirmation dialog using confirmMsg()
4 *
5 * does this for the button and every menu item
6 */
7Ext.define('PVE.button.Split', {
8 extend: 'Ext.button.Split',
9 alias: 'widget.pveSplitButton',
10
11 // the selection model to observe
12 selModel: undefined,
13
14 // if 'false' handler will not be called (button disabled)
15 enableFn: function(record) { },
16
17 // function(record) or text
18 confirmMsg: false,
19
20 // take special care in confirm box (select no as default).
21 dangerous: false,
22
23 handlerWrapper: function(button, event) {
24 var me = this;
25 var rec, msg;
26 if (me.selModel) {
27 rec = me.selModel.getSelection()[0];
28 if (!rec || (me.enableFn(rec) === false)) {
29 return;
30 }
31 }
32
33 if (me.confirmMsg) {
34 msg = me.confirmMsg;
ec0bd652 35 // confirMsg can be boolean or function
52721af8
DC
36 if (Ext.isFunction(me.confirmMsg)) {
37 msg = me.confirmMsg(rec);
38 }
39 Ext.MessageBox.defaultButton = me.dangerous ? 2 : 1;
40 Ext.Msg.show({
41 title: gettext('Confirm'),
42 icon: me.dangerous ? Ext.Msg.WARNING : Ext.Msg.QUESTION,
43 msg: msg,
44 buttons: Ext.Msg.YESNO,
45 callback: function(btn) {
46 if (btn !== 'yes') {
47 return;
48 }
49 me.realHandler(button, event, rec);
f6710aac 50 },
52721af8
DC
51 });
52 } else {
53 me.realHandler(button, event, rec);
54 }
55 },
56
57 initComponent: function() {
52721af8
DC
58 var me = this;
59
60 if (me.handler) {
61 me.realHandler = me.handler;
62 me.handler = me.handlerWrapper;
63 }
64
65 if (me.menu && me.menu.items) {
66 me.menu.items.forEach(function(item) {
67 if (item.handler) {
68 item.realHandler = item.handler;
69 item.handler = me.handlerWrapper;
70 }
71
72 if (item.selModel) {
73 me.mon(item.selModel, "selectionchange", function() {
74 var rec = item.selModel.getSelection()[0];
8058410f 75 if (!rec || (item.enableFn(rec) === false)) {
52721af8
DC
76 item.setDisabled(true);
77 } else {
78 item.setDisabled(false);
79 }
80 });
81 }
82 });
83 }
84
85 me.callParent();
86
87 if (me.selModel) {
52721af8
DC
88 me.mon(me.selModel, "selectionchange", function() {
89 var rec = me.selModel.getSelection()[0];
90 if (!rec || (me.enableFn(rec) === false)) {
91 me.setDisabled(true);
92 } else {
93 me.setDisabled(false);
94 }
95 });
96 }
f6710aac 97 },
52721af8 98});