]> git.proxmox.com Git - pve-manager.git/blame - www/manager6/ha/StatusView.js
update shipped appliance info index
[pve-manager.git] / www / manager6 / ha / StatusView.js
CommitLineData
189d7c6c
DM
1Ext.define('PVE.ha.StatusView', {
2 extend: 'Ext.grid.GridPanel',
3 alias: ['widget.pveHAStatusView'],
4
ba93a9c6
DC
5 onlineHelp: 'chapter_ha_manager',
6
189d7c6c
DM
7 sortPriority: {
8 quorum: 1,
9 master: 2,
10 lrm: 3,
f6710aac 11 service: 4,
189d7c6c 12 },
2a4971d8 13
8058410f 14 initComponent: function() {
189d7c6c
DM
15 var me = this;
16
8a58f554
DC
17 if (!me.rstore) {
18 throw "no rstore given";
19 }
189d7c6c 20
e7ade592 21 Proxmox.Utils.monStoreErrors(me, me.rstore);
189d7c6c 22
eaa018d7 23 var store = Ext.create('Proxmox.data.DiffStore', {
189d7c6c
DM
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];
53e3ea84 30 return p1 !== p2 ? p1 > p2 ? 1 : -1 : 0;
f6710aac 31 },
8a58f554
DC
32 }],
33 filters: {
34 property: 'type',
35 value: 'service',
f6710aac
TL
36 operator: '!=',
37 },
189d7c6c
DM
38 });
39
40 Ext.apply(me, {
41 store: store,
42 stateful: false,
43 viewConfig: {
f6710aac 44 trackOver: false,
189d7c6c
DM
45 },
46 columns: [
47 {
48 header: gettext('Type'),
49 width: 80,
f6710aac 50 dataIndex: 'type',
189d7c6c
DM
51 },
52 {
53 header: gettext('Status'),
54 width: 80,
55 flex: 1,
f6710aac
TL
56 dataIndex: 'status',
57 },
58 ],
189d7c6c
DM
59 });
60
61 me.callParent();
62
065bb064 63 me.on('activate', me.rstore.startUpdate);
2a4971d8 64 me.on('destroy', me.rstore.stopUpdate);
f6710aac 65 },
189d7c6c 66}, function() {
189d7c6c
DM
67 Ext.define('pve-ha-status', {
68 extend: 'Ext.data.Model',
2a4971d8 69 fields: [
e61cbac5
DC
70 'id', 'type', 'node', 'status', 'sid',
71 'state', 'group', 'comment',
72 'max_restart', 'max_relocate', 'type',
105e5756
TL
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 },
189d7c6c 88 ],
f6710aac 89 idProperty: 'id',
189d7c6c 90 });
189d7c6c 91});