]> git.proxmox.com Git - pve-manager.git/blob - www/manager/ha/Groups.js
28be5f724e2615d55bce4f6547bc127daac873a6
[pve-manager.git] / www / manager / ha / Groups.js
1 Ext.define('PVE.ha.GroupsView', {
2 extend: 'Ext.grid.GridPanel',
3 alias: ['widget.pveHAGroupsView'],
4
5 initComponent : function() {
6 var me = this;
7
8 var caps = Ext.state.Manager.get('GuiCap');
9
10 var store = new Ext.data.Store({
11 model: 'pve-ha-groups',
12 sorters: {
13 property: 'group',
14 order: 'DESC'
15 }
16 });
17
18 var reload = function() {
19 store.load();
20 };
21
22 var sm = Ext.create('Ext.selection.RowModel', {});
23
24 var run_editor = function() {
25 var rec = sm.getSelection()[0];
26
27 var win = Ext.create('PVE.ha.GroupEdit',{
28 groupId: rec.data.group
29 });
30 win.on('destroy', reload);
31 win.show();
32 };
33
34 var remove_btn = new PVE.button.Button({
35 text: gettext('Remove'),
36 disabled: true,
37 selModel: sm,
38 handler: function(btn, event, rec) {
39 var group = rec.data.group;
40
41 PVE.Utils.API2Request({
42 url: '/cluster/ha/groups/' + group,
43 method: 'DELETE',
44 waitMsgTarget: me,
45 callback: function() {
46 reload();
47 },
48 failure: function (response, opts) {
49 Ext.Msg.alert(gettext('Error'), response.htmlStatus);
50 }
51 });
52 }
53 });
54
55 var edit_btn = new PVE.button.Button({
56 text: gettext('Edit'),
57 disabled: true,
58 selModel: sm,
59 handler: run_editor
60 });
61
62 Ext.apply(me, {
63 store: store,
64 selModel: sm,
65 stateful: false,
66 viewConfig: {
67 trackOver: false
68 },
69 tbar: [
70 {
71 text: gettext('Create'),
72 disabled: !caps.nodes['Sys.Console'],
73 handler: function() {
74 var win = Ext.create('PVE.ha.GroupEdit',{});
75 win.on('destroy', reload);
76 win.show();
77 }
78 },
79 edit_btn, remove_btn
80 ],
81 columns: [
82 {
83 header: gettext('Group'),
84 width: 150,
85 sortable: true,
86 dataIndex: 'group'
87 },
88 {
89 header: gettext('restricted'),
90 width: 100,
91 sortable: true,
92 renderer: PVE.Utils.format_boolean,
93 dataIndex: 'restricted'
94 },
95 {
96 header: gettext('nofailback'),
97 width: 100,
98 sortable: true,
99 renderer: PVE.Utils.format_boolean,
100 dataIndex: 'nofailback'
101 },
102 {
103 header: gettext('Nodes'),
104 flex: 1,
105 sortable: false,
106 dataIndex: 'nodes'
107 },
108 {
109 header: gettext('Comment'),
110 flex: 1,
111 dataIndex: 'comment',
112 renderer: Ext.String.htmlEncode
113 }
114 ],
115 listeners: {
116 show: reload,
117 beforeselect: function(grid, record, index, eOpts) {
118 if (!caps.nodes['Sys.Console']) {
119 return false;
120 }
121 },
122 itemdblclick: run_editor
123 }
124 });
125
126 me.callParent();
127 }
128 });