]>
git.proxmox.com Git - pve-manager.git/blob - www/manager6/node/Summary.js
1 Ext
.define('PVE.node.Summary', {
2 extend
: 'Ext.panel.Panel',
3 alias
: 'widget.pveNodeSummary',
8 showVersions: function() {
11 // Note: we use simply text/html here, because ExtJS grid has problems
14 var nodename
= me
.pveSelNode
.data
.node
;
16 var view
= Ext
.createWidget('component', {
21 'background-color': 'white',
23 'font-family': 'monospace',
27 var win
= Ext
.create('Ext.window.Window', {
28 title
: gettext('Package versions'),
37 iconCls
: 'fa fa-clipboard',
38 handler: function(button
) {
39 window
.getSelection().selectAllChildren(
40 document
.getElementById('pkgversions'),
42 document
.execCommand("copy");
44 text
: gettext('Copy'),
49 this.up('window').close();
55 Proxmox
.Utils
.API2Request({
57 url
: `/nodes/${nodename}/apt/versions`,
59 failure: function(response
, opts
) {
61 Ext
.Msg
.alert(gettext('Error'), response
.htmlStatus
);
63 success: function(response
, opts
) {
66 Ext
.Array
.each(response
.result
.data
, function(rec
) {
67 let version
= "not correctly installed";
68 let pkg
= rec
.Package
;
69 if (rec
.OldVersion
&& rec
.CurrentState
=== 'Installed') {
70 version
= rec
.OldVersion
;
72 if (rec
.RunningKernel
) {
73 text
+= `${pkg}: ${version} (running kernel: ${rec.RunningKernel})\n`;
74 } else if (rec
.ManagerVersion
) {
75 text
+= `${pkg}: ${version} (running version: ${rec.ManagerVersion})\n`;
77 text
+= `${pkg}: ${version}\n`;
81 view
.update(Ext
.htmlEncode(text
));
86 initComponent: function() {
89 var nodename
= me
.pveSelNode
.data
.node
;
91 throw "no node name specified";
94 if (!me
.statusStore
) {
95 throw "no status storage specified";
98 var rstore
= me
.statusStore
;
100 var version_btn
= new Ext
.Button({
101 text
: gettext('Package versions'),
102 handler: function() {
103 Proxmox
.Utils
.checked_command(function() { me
.showVersions(); });
107 var rrdstore
= Ext
.create('Proxmox.data.RRDStore', {
108 rrdurl
: "/api2/json/nodes/" + nodename
+ "/rrddata",
109 model
: 'pve-rrd-node',
113 tbar
: [version_btn
, '->', { xtype
: 'proxmoxRRDTypeSelector' }],
117 itemId
: 'itemcontainer',
127 xtype
: 'pveNodeStatus',
130 pveSelNode
: me
.pveSelNode
,
133 xtype
: 'proxmoxRRDChart',
134 title
: gettext('CPU usage'),
135 fields
: ['cpu', 'iowait'],
136 fieldTitles
: [gettext('CPU usage'), gettext('IO delay')],
140 xtype
: 'proxmoxRRDChart',
141 title
: gettext('Server load'),
143 fieldTitles
: [gettext('Load average')],
147 xtype
: 'proxmoxRRDChart',
148 title
: gettext('Memory usage'),
149 fields
: ['memtotal', 'memused'],
150 fieldTitles
: [gettext('Total'), gettext('RAM usage')],
156 xtype
: 'proxmoxRRDChart',
157 title
: gettext('Network traffic'),
158 fields
: ['netin', 'netout'],
163 resize: function(panel
) {
164 PVE
.Utils
.updateColumns(panel
);
170 activate: function() {
171 rstore
.setInterval(1000);
172 rstore
.startUpdate(); // just to be sure
173 rrdstore
.startUpdate();
175 destroy: function() {
176 rstore
.setInterval(5000); // don't stop it, it's not ours!
177 rrdstore
.stopUpdate();
184 let sp
= Ext
.state
.Manager
.getProvider();
185 me
.mon(sp
, 'statechange', function(provider
, key
, value
) {
186 if (key
!== 'summarycolumns') {
189 PVE
.Utils
.updateColumns(me
.getComponent('itemcontainer'));