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