]>
Commit | Line | Data |
---|---|---|
cd81cc2a DC |
1 | Ext.define('PVE.dc.NodeView', { |
2 | extend: 'Ext.grid.GridPanel', | |
cf8b372a | 3 | alias: 'widget.pveDcNodeView', |
cd81cc2a | 4 | |
cf8b372a DC |
5 | title: gettext('Nodes'), |
6 | disableSelection: true, | |
7 | scrollable: true, | |
cd81cc2a | 8 | |
cf8b372a DC |
9 | columns: [ |
10 | { | |
11 | header: gettext('Name'), | |
12 | flex: 1, | |
13 | sortable: true, | |
f6710aac | 14 | dataIndex: 'name', |
cf8b372a DC |
15 | }, |
16 | { | |
17 | header: 'ID', | |
18 | width: 40, | |
19 | sortable: true, | |
f6710aac | 20 | dataIndex: 'nodeid', |
cf8b372a DC |
21 | }, |
22 | { | |
23 | header: gettext('Online'), | |
24 | width: 60, | |
25 | sortable: true, | |
26 | dataIndex: 'online', | |
27 | renderer: function(value) { | |
53e3ea84 | 28 | var cls = value?'good':'critical'; |
8058410f | 29 | return '<i class="fa ' + PVE.Utils.get_health_icon(cls) + '"><i/>'; |
f6710aac | 30 | }, |
cf8b372a DC |
31 | }, |
32 | { | |
33 | header: gettext('Support'), | |
34 | width: 100, | |
35 | sortable: true, | |
36 | dataIndex: 'level', | |
f6710aac | 37 | renderer: PVE.Utils.render_support_level, |
cf8b372a DC |
38 | }, |
39 | { | |
40 | header: gettext('Server Address'), | |
41 | width: 115, | |
42 | sortable: true, | |
f6710aac | 43 | dataIndex: 'ip', |
cf8b372a | 44 | }, |
1f8ff841 | 45 | { |
4198e16f | 46 | header: gettext('CPU usage'), |
1f8ff841 DC |
47 | sortable: true, |
48 | width: 110, | |
49 | dataIndex: 'cpuusage', | |
50 | tdCls: 'x-progressbar-default-cell', | |
51 | xtype: 'widgetcolumn', | |
52 | widget: { | |
f6710aac TL |
53 | xtype: 'pveProgressBar', |
54 | }, | |
1f8ff841 DC |
55 | }, |
56 | { | |
4198e16f | 57 | header: gettext('Memory usage'), |
1f8ff841 DC |
58 | width: 110, |
59 | sortable: true, | |
60 | tdCls: 'x-progressbar-default-cell', | |
61 | dataIndex: 'memoryusage', | |
62 | xtype: 'widgetcolumn', | |
63 | widget: { | |
f6710aac TL |
64 | xtype: 'pveProgressBar', |
65 | }, | |
1f8ff841 DC |
66 | }, |
67 | { | |
68 | header: gettext('Uptime'), | |
69 | sortable: true, | |
70 | dataIndex: 'uptime', | |
71 | align: 'right', | |
f6710aac TL |
72 | renderer: Proxmox.Utils.render_uptime, |
73 | }, | |
cf8b372a | 74 | ], |
cd81cc2a | 75 | |
cf8b372a DC |
76 | stateful: true, |
77 | stateId: 'grid-cluster-nodes', | |
78 | tools: [ | |
79 | { | |
80 | type: 'up', | |
8058410f | 81 | handler: function() { |
cf8b372a DC |
82 | var me = this.up('grid'); |
83 | var height = Math.max(me.getHeight()-50, 250); | |
84 | me.setHeight(height); | |
f6710aac | 85 | }, |
cf8b372a DC |
86 | }, |
87 | { | |
88 | type: 'down', | |
8058410f | 89 | handler: function() { |
cf8b372a DC |
90 | var me = this.up('grid'); |
91 | var height = me.getHeight()+50; | |
92 | me.setHeight(height); | |
f6710aac TL |
93 | }, |
94 | }, | |
95 | ], | |
cd81cc2a | 96 | }, function() { |
cd81cc2a DC |
97 | Ext.define('pve-dc-nodes', { |
98 | extend: 'Ext.data.Model', | |
8058410f | 99 | fields: ['id', 'type', 'name', 'nodeid', 'ip', 'level', 'local', 'online'], |
f6710aac | 100 | idProperty: 'id', |
cd81cc2a | 101 | }); |
cd81cc2a DC |
102 | }); |
103 | ||
f6710aac | 104 | Ext.define('PVE.widget.ProgressBar', { |
1f8ff841 DC |
105 | extend: 'Ext.Progress', |
106 | alias: 'widget.pveProgressBar', | |
107 | ||
108 | animate: true, | |
109 | textTpl: [ | |
f6710aac | 110 | '{percent}%', |
1f8ff841 DC |
111 | ], |
112 | ||
8058410f | 113 | setValue: function(value) { |
1f8ff841 DC |
114 | var me = this; |
115 | me.callParent([value]); | |
116 | ||
117 | me.removeCls(['warning', 'critical']); | |
118 | ||
119 | if (value > 0.89) { | |
120 | me.addCls('critical'); | |
121 | } else if (value > 0.59) { | |
122 | me.addCls('warning'); | |
123 | } | |
f6710aac | 124 | }, |
1f8ff841 | 125 | }); |