diff --git a/www/manager6/ha/StatusView.js b/www/manager6/ha/StatusView.js new file mode 100644 index 00000000..f8d4bd67 --- /dev/null +++ b/www/manager6/ha/StatusView.js @@ -0,0 +1,78 @@ +Ext.define('PVE.ha.StatusView', { + extend: 'Ext.grid.GridPanel', + alias: ['widget.pveHAStatusView'], + + sortPriority: { + quorum: 1, + master: 2, + lrm: 3, + service: 4 + }, + + initComponent : function() { + var me = this; + + me.rstore = Ext.create('PVE.data.ObjectStore', { + interval: me.interval, + model: 'pve-ha-status', + storeid: 'pve-store-' + (++Ext.idSeed), + groupField: 'type', + proxy: { + type: 'pve', + url: '/api2/json/cluster/ha/status/current' + } + }); + + PVE.Utils.monStoreErrors(me, me.rstore); + + var store = Ext.create('PVE.data.DiffStore', { + rstore: me.rstore, + sortAfterUpdate: true, + sorters: [{ + sorterFn: function(rec1, rec2) { + var p1 = me.sortPriority[rec1.data.type]; + var p2 = me.sortPriority[rec2.data.type]; + return (p1 !== p2) ? ((p1 > p2) ? 1 : -1) : 0; + } + }] + }); + + Ext.apply(me, { + store: store, + stateful: false, + viewConfig: { + trackOver: false, + }, + columns: [ + { + header: gettext('Type'), + width: 80, + dataIndex: 'type' + }, + { + header: gettext('Status'), + width: 80, + flex: 1, + dataIndex: 'status' + } + ] + }); + + me.callParent(); + + me.on('show', me.rstore.startUpdate); + me.on('hide', me.rstore.stopUpdate); + me.on('destroy', me.rstore.stopUpdate); + + } +}, function() { + + Ext.define('pve-ha-status', { + extend: 'Ext.data.Model', + fields: [ + 'id', 'type', 'node', 'status', 'sid' + ], + idProperty: 'id' + }); + +});