]> git.proxmox.com Git - pve-manager.git/blame - www/manager6/node/StatusView.js
acme: ui: handle missing meta field in directory response
[pve-manager.git] / www / manager6 / node / StatusView.js
CommitLineData
a5c093b1 1Ext.define('PVE.node.StatusView', {
e3c4b75d 2 extend: 'Proxmox.panel.StatusView',
cb892fb3 3 alias: 'widget.pveNodeStatus',
a5c093b1 4
1f1d8bf3 5 height: 350,
98f73c48 6 bodyPadding: '15 5 15 5',
a5c093b1 7
701acf20
DC
8 layout: {
9 type: 'table',
10 columns: 2,
11 tableAttrs: {
12 style: {
f6710aac
TL
13 width: '100%',
14 },
15 },
701acf20
DC
16 },
17
cb892fb3 18 defaults: {
c95917c2 19 xtype: 'pmxInfoWidget',
98f73c48 20 padding: '0 10 5 10',
cb892fb3 21 },
a5c093b1 22
cb892fb3 23 items: [
cb892fb3
DC
24 {
25 itemId: 'cpu',
a8ea1b68 26 iconCls: 'fa fa-fw pmx-itype-icon-processor pmx-icon',
cb892fb3
DC
27 title: gettext('CPU usage'),
28 valueField: 'cpu',
29 maxField: 'cpuinfo',
1bd7bcdb 30 renderer: Proxmox.Utils.render_node_cpu_usage,
cb892fb3
DC
31 },
32 {
33 itemId: 'wait',
3ff9bf5a 34 iconCls: 'fa fa-fw fa-clock-o',
cb892fb3 35 title: gettext('IO delay'),
701acf20 36 valueField: 'wait',
f6710aac 37 rowspan: 2,
cb892fb3
DC
38 },
39 {
40 itemId: 'load',
3ff9bf5a 41 iconCls: 'fa fa-fw fa-tasks',
cb892fb3
DC
42 title: gettext('Load average'),
43 printBar: false,
f6710aac 44 textField: 'loadavg',
cb892fb3
DC
45 },
46 {
47 xtype: 'box',
701acf20 48 colspan: 2,
f6710aac 49 padding: '0 0 20 0',
cb892fb3
DC
50 },
51 {
a8ea1b68 52 iconCls: 'fa fa-fw pmx-itype-icon-memory pmx-icon',
cb892fb3
DC
53 itemId: 'memory',
54 title: gettext('RAM usage'),
55 valueField: 'memory',
56 maxField: 'memory',
1bd7bcdb 57 renderer: Proxmox.Utils.render_node_size_usage,
cb892fb3
DC
58 },
59 {
60 itemId: 'ksm',
61 printBar: false,
62 title: gettext('KSM sharing'),
63 textField: 'ksm',
64 renderer: function(record) {
1bd7bcdb 65 return Proxmox.Utils.render_size(record.shared);
cb892fb3 66 },
4b832488 67 padding: '0 10 10 10',
cb892fb3
DC
68 },
69 {
3ff9bf5a 70 iconCls: 'fa fa-fw fa-hdd-o',
cb892fb3 71 itemId: 'rootfs',
2f79184c 72 title: '/ ' + gettext('HD space'),
cb892fb3
DC
73 valueField: 'rootfs',
74 maxField: 'rootfs',
1bd7bcdb 75 renderer: Proxmox.Utils.render_node_size_usage,
cb892fb3
DC
76 },
77 {
3ff9bf5a 78 iconCls: 'fa fa-fw fa-refresh',
cb892fb3
DC
79 itemId: 'swap',
80 printSize: true,
81 title: gettext('SWAP usage'),
82 valueField: 'swap',
83 maxField: 'swap',
1bd7bcdb 84 renderer: Proxmox.Utils.render_node_size_usage,
cb892fb3
DC
85 },
86 {
87 xtype: 'box',
701acf20 88 colspan: 2,
f6710aac 89 padding: '0 0 20 0',
cb892fb3
DC
90 },
91 {
92 itemId: 'cpus',
701acf20 93 colspan: 2,
cb892fb3 94 printBar: false,
4198e16f 95 title: gettext('CPU(s)'),
cb892fb3 96 textField: 'cpuinfo',
1bd7bcdb 97 renderer: Proxmox.Utils.render_cpu_model,
f6710aac 98 value: '',
cb892fb3
DC
99 },
100 {
701acf20 101 colspan: 2,
cb892fb3
DC
102 title: gettext('Kernel Version'),
103 printBar: false,
be04f8ee
TL
104 // TODO: remove with next major and only use newish current-kernel textfield
105 multiField: true,
106 //textField: 'current-kernel',
107 renderer: ({ data }) => {
108 if (!data['current-kernel']) {
109 return data.kversion;
110 }
111 let kernel = data['current-kernel'];
4fb7e9e4 112 let buildDate = kernel.version.match(/\((.+)\)\s*$/)?.[1] ?? 'unknown';
be04f8ee
TL
113 return `${kernel.sysname} ${kernel.release} (${buildDate})`;
114 },
f6710aac 115 value: '',
cb892fb3 116 },
1f1d8bf3
TL
117 {
118 colspan: 2,
119 title: gettext('Boot Mode'),
120 printBar: false,
121 textField: 'boot-info',
122 renderer: boot => {
123 if (boot.mode === 'legacy-bios') {
124 return 'Legacy BIOS';
125 } else if (boot.mode === 'efi') {
126 return `EFI${boot.secureboot ? ' (Secure Boot)' : ''}`;
127 }
128 return Proxmox.Utils.unknownText;
129 },
130 value: '',
131 },
cb892fb3
DC
132 {
133 itemId: 'version',
701acf20 134 colspan: 2,
cb892fb3 135 printBar: false,
fd6fb858 136 title: gettext('Manager Version'),
cb892fb3 137 textField: 'pveversion',
f6710aac
TL
138 value: '',
139 },
cb892fb3 140 ],
a5c093b1 141
cb892fb3
DC
142 updateTitle: function() {
143 var me = this;
e7ade592 144 var uptime = Proxmox.Utils.render_uptime(me.getRecordValue('uptime'));
cb892fb3 145 me.setTitle(me.pveSelNode.data.node + ' (' + gettext('Uptime') + ': ' + uptime + ')');
f6710aac 146 },
cb892fb3 147
b2f17bfd 148 initComponent: function() {
2bb75d1e 149 let me = this;
2bb75d1e 150
b2f17bfd
FE
151 let stateProvider = Ext.state.Manager.getProvider();
152 let repoLink = stateProvider.encodeHToken({
153 view: "server",
154 rid: `node/${me.pveSelNode.data.node}`,
155 ltab: "tasks",
156 nodetab: "aptrepositories",
157 });
2bb75d1e 158
b2f17bfd
FE
159 me.items.push({
160 xtype: 'pmxNodeInfoRepoStatus',
161 itemId: 'repositoryStatus',
162 product: 'Proxmox VE',
163 repoLink: `#${repoLink}`,
164 });
2bb75d1e 165
b2f17bfd 166 me.callParent();
2bb75d1e 167 },
a5c093b1 168});