]> git.proxmox.com Git - pmg-gui.git/blob - js/ServerStatus.js
utils: fix typo in url
[pmg-gui.git] / js / ServerStatus.js
1 Ext.define('PMG.ServerStatus', {
2 extend: 'Ext.panel.Panel',
3 alias: 'widget.pmgServerStatus',
4
5 title: gettext('Status'),
6
7 border: false,
8
9 scrollable: true,
10
11 bodyPadding: 5,
12 defaults: {
13 width: 700,
14 padding: 5,
15 columnWidth: 1,
16 },
17
18 layout: 'column',
19
20 controller: {
21 xclass: 'Ext.app.ViewController',
22
23 openConsole: function() {
24 Proxmox.Utils.openXtermJsViewer('shell', 0, Proxmox.NodeName);
25 },
26
27 nodeCommand: function(cmd) {
28 Proxmox.Utils.API2Request({
29 params: {
30 command: cmd,
31 },
32 url: `/nodes/${Proxmox.NodeName}/status`,
33 method: 'POST',
34 waitMsgTarget: this.getView(),
35 failure: response => Ext.Msg.alert(gettext('Error'), response.htmlStatus),
36 });
37 },
38
39 nodeShutdown: function() {
40 this.nodeCommand('shutdown');
41 },
42
43 nodeReboot: function() {
44 this.nodeCommand('reboot');
45 },
46 },
47
48 tbar: [
49 {
50 text: gettext('Package versions'),
51 iconCls: 'fa fa-gift',
52 handler: () => Proxmox.Utils.checked_command(() => {
53 Ext.create('Proxmox.window.PackageVersions', {
54 autoShow: true,
55 });
56 }),
57 },
58 {
59 text: gettext("Console"),
60 iconCls: 'fa fa-terminal',
61 handler: 'openConsole',
62 },
63 {
64 xtype: 'proxmoxButton',
65 text: gettext('Restart'),
66 dangerous: true,
67 confirmMsg: `${gettext('Node')} '${Proxmox.NodeName}' - ${gettext('Restart')}`,
68 handler: 'nodeReboot',
69 iconCls: 'fa fa-undo',
70 },
71 {
72 xtype: 'proxmoxButton',
73 text: gettext('Shutdown'),
74 dangerous: true,
75 confirmMsg: `${gettext('Node')} '${Proxmox.NodeName}' - ${gettext('Shutdown')}`,
76 handler: 'nodeShutdown',
77 iconCls: 'fa fa-power-off',
78 },
79 '->',
80 {
81 xtype: 'proxmoxRRDTypeSelector',
82 },
83 ],
84
85 initComponent: function() {
86 let me = this;
87
88 let nodename = Proxmox.NodeName;
89 let rrdstore = Ext.create('Proxmox.data.RRDStore', {
90 rrdurl: `/api2/json/nodes/${nodename}/rrddata`,
91 fields: [
92 { type: 'number', name: 'loadavg' },
93 { type: 'number', name: 'maxcpu' },
94 {
95 type: 'number',
96 name: 'cpu',
97 convert: val => val * 100,
98 },
99 {
100 type: 'number',
101 name: 'iowait',
102 convert: val => val * 100,
103 },
104 { type: 'number', name: 'memtotal' },
105 { type: 'number', name: 'memused' },
106 { type: 'number', name: 'swaptotal' },
107 { type: 'number', name: 'swapused' },
108 { type: 'number', name: 'roottotal' },
109 { type: 'number', name: 'rootused' },
110 { type: 'number', name: 'netin' },
111 { type: 'number', name: 'netout' },
112 { type: 'date', dateFormat: 'timestamp', name: 'time' },
113 ],
114 });
115
116 Ext.apply(me, {
117 items: [
118 {
119 xtype: 'proxmoxRRDChart',
120 title: gettext('CPU usage'),
121 unit: 'percent',
122 fields: ['cpu', 'iowait'],
123 fieldTitles: [gettext('CPU usage'), gettext('IO delay')],
124 store: rrdstore,
125 },
126 {
127 xtype: 'proxmoxRRDChart',
128 title: gettext('Server load'),
129 fields: ['loadavg'],
130 fieldTitles: [gettext('Load average')],
131 store: rrdstore,
132 },
133 {
134 xtype: 'proxmoxRRDChart',
135 title: gettext('Memory usage'),
136 unit: 'bytes',
137 fields: ['memtotal', 'memused'],
138 fieldTitles: [gettext('Total'), gettext('Used')],
139 store: rrdstore,
140 },
141 {
142 xtype: 'proxmoxRRDChart',
143 title: gettext('Swap usage'),
144 unit: 'bytes',
145 fields: ['swaptotal', 'swapused'],
146 fieldTitles: [gettext('Total'), gettext('Used')],
147 store: rrdstore,
148 },
149 {
150 xtype: 'proxmoxRRDChart',
151 title: gettext('Network traffic'),
152 unit: 'bytespersecond',
153 fields: ['netin', 'netout'],
154 fieldTitles: [gettext('Ingress'), gettext('Egress')],
155 store: rrdstore,
156 },
157 {
158 xtype: 'proxmoxRRDChart',
159 title: gettext('Disk usage'),
160 unit: 'bytes',
161 fields: ['roottotal', 'rootused'],
162 fieldTitles: [gettext('Total'), gettext('Used')],
163 store: rrdstore,
164 },
165 ],
166 listeners: {
167 resize: panel => Proxmox.Utils.updateColumnWidth(panel),
168 activate: () => rrdstore.startUpdate(),
169 destroy: () => rrdstore.stopUpdate(),
170 },
171 });
172
173 me.callParent();
174
175 let sp = Ext.state.Manager.getProvider();
176 me.mon(sp, 'statechange', function(provider, key, value) {
177 if (key !== 'summarycolumns') {
178 return;
179 }
180 Proxmox.Utils.updateColumnWidth(me);
181 });
182 },
183 });