]> git.proxmox.com Git - pve-manager.git/blob - www/manager6/ha/StatusView.js
update shipped appliance info index
[pve-manager.git] / www / manager6 / ha / StatusView.js
1 Ext.define('PVE.ha.StatusView', {
2 extend: 'Ext.grid.GridPanel',
3 alias: ['widget.pveHAStatusView'],
4
5 onlineHelp: 'chapter_ha_manager',
6
7 sortPriority: {
8 quorum: 1,
9 master: 2,
10 lrm: 3,
11 service: 4,
12 },
13
14 initComponent: function() {
15 var me = this;
16
17 if (!me.rstore) {
18 throw "no rstore given";
19 }
20
21 Proxmox.Utils.monStoreErrors(me, me.rstore);
22
23 var store = Ext.create('Proxmox.data.DiffStore', {
24 rstore: me.rstore,
25 sortAfterUpdate: true,
26 sorters: [{
27 sorterFn: function(rec1, rec2) {
28 var p1 = me.sortPriority[rec1.data.type];
29 var p2 = me.sortPriority[rec2.data.type];
30 return p1 !== p2 ? p1 > p2 ? 1 : -1 : 0;
31 },
32 }],
33 filters: {
34 property: 'type',
35 value: 'service',
36 operator: '!=',
37 },
38 });
39
40 Ext.apply(me, {
41 store: store,
42 stateful: false,
43 viewConfig: {
44 trackOver: false,
45 },
46 columns: [
47 {
48 header: gettext('Type'),
49 width: 80,
50 dataIndex: 'type',
51 },
52 {
53 header: gettext('Status'),
54 width: 80,
55 flex: 1,
56 dataIndex: 'status',
57 },
58 ],
59 });
60
61 me.callParent();
62
63 me.on('activate', me.rstore.startUpdate);
64 me.on('destroy', me.rstore.stopUpdate);
65 },
66 }, function() {
67 Ext.define('pve-ha-status', {
68 extend: 'Ext.data.Model',
69 fields: [
70 'id', 'type', 'node', 'status', 'sid',
71 'state', 'group', 'comment',
72 'max_restart', 'max_relocate', 'type',
73 'crm_state', 'request_state',
74 {
75 name: 'vname',
76 convert: function(value, record) {
77 let sid = record.data.sid;
78 if (!sid) return '';
79
80 let res = sid.match(/^(\S+):(\S+)$/);
81 if (res[1] !== 'vm' && res[1] !== 'ct') {
82 return '-';
83 }
84 let vmid = res[2];
85 return PVE.data.ResourceStore.guestName(vmid);
86 },
87 },
88 ],
89 idProperty: 'id',
90 });
91 });