]>
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() { |
ffc94780 TL |
82 | let view = this.up('grid'); |
83 | view.setHeight(Math.max(view.getHeight() - 50, 250)); | |
f6710aac | 84 | }, |
cf8b372a DC |
85 | }, |
86 | { | |
87 | type: 'down', | |
8058410f | 88 | handler: function() { |
ffc94780 TL |
89 | let view = this.up('grid'); |
90 | view.setHeight(view.getHeight() + 50); | |
f6710aac TL |
91 | }, |
92 | }, | |
93 | ], | |
cd81cc2a | 94 | }, function() { |
cd81cc2a DC |
95 | Ext.define('pve-dc-nodes', { |
96 | extend: 'Ext.data.Model', | |
8058410f | 97 | fields: ['id', 'type', 'name', 'nodeid', 'ip', 'level', 'local', 'online'], |
f6710aac | 98 | idProperty: 'id', |
cd81cc2a | 99 | }); |
cd81cc2a DC |
100 | }); |
101 | ||
f6710aac | 102 | Ext.define('PVE.widget.ProgressBar', { |
1f8ff841 DC |
103 | extend: 'Ext.Progress', |
104 | alias: 'widget.pveProgressBar', | |
105 | ||
106 | animate: true, | |
107 | textTpl: [ | |
f6710aac | 108 | '{percent}%', |
1f8ff841 DC |
109 | ], |
110 | ||
8058410f | 111 | setValue: function(value) { |
ffc94780 TL |
112 | let me = this; |
113 | ||
1f8ff841 DC |
114 | me.callParent([value]); |
115 | ||
116 | me.removeCls(['warning', 'critical']); | |
117 | ||
118 | if (value > 0.89) { | |
119 | me.addCls('critical'); | |
2dcb6bb0 | 120 | } else if (value > 0.75) { |
1f8ff841 DC |
121 | me.addCls('warning'); |
122 | } | |
f6710aac | 123 | }, |
1f8ff841 | 124 | }); |