]> git.proxmox.com Git - pve-manager.git/blame - www/manager6/button/Split.js
ui: eslint: fix trailing comma and comma related whitespaces errors
[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
59 var me = this;
60
61 if (me.handler) {
62 me.realHandler = me.handler;
63 me.handler = me.handlerWrapper;
64 }
65
66 if (me.menu && me.menu.items) {
67 me.menu.items.forEach(function(item) {
68 if (item.handler) {
69 item.realHandler = item.handler;
70 item.handler = me.handlerWrapper;
71 }
72
73 if (item.selModel) {
74 me.mon(item.selModel, "selectionchange", function() {
75 var rec = item.selModel.getSelection()[0];
76 if (!rec || (item.enableFn(rec) === false )) {
77 item.setDisabled(true);
78 } else {
79 item.setDisabled(false);
80 }
81 });
82 }
83 });
84 }
85
86 me.callParent();
87
88 if (me.selModel) {
89
90 me.mon(me.selModel, "selectionchange", function() {
91 var rec = me.selModel.getSelection()[0];
92 if (!rec || (me.enableFn(rec) === false)) {
93 me.setDisabled(true);
94 } else {
95 me.setDisabled(false);
96 }
97 });
98 }
f6710aac 99 },
52721af8 100});