mirror of
https://git.proxmox.com/git/proxmox-widget-toolkit
synced 2025-07-17 14:54:21 +00:00
add GaugeWidget from PVE
and adds the functionality to set a different fontsize Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
This commit is contained in:
parent
917433e621
commit
e7ff021c57
1
Makefile
1
Makefile
@ -37,6 +37,7 @@ JSSRC= \
|
|||||||
panel/InputPanel.js \
|
panel/InputPanel.js \
|
||||||
panel/LogView.js \
|
panel/LogView.js \
|
||||||
panel/RRDChart.js \
|
panel/RRDChart.js \
|
||||||
|
panel/GaugeWidget.js \
|
||||||
window/Edit.js \
|
window/Edit.js \
|
||||||
window/PasswordEdit.js \
|
window/PasswordEdit.js \
|
||||||
window/TaskViewer.js \
|
window/TaskViewer.js \
|
||||||
|
102
panel/GaugeWidget.js
Normal file
102
panel/GaugeWidget.js
Normal file
@ -0,0 +1,102 @@
|
|||||||
|
Ext.define('Proxmox.panel.GaugeWidget', {
|
||||||
|
extend: 'Ext.panel.Panel',
|
||||||
|
alias: 'widget.proxmoxGauge',
|
||||||
|
|
||||||
|
defaults: {
|
||||||
|
style: {
|
||||||
|
'text-align':'center'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
items: [
|
||||||
|
{
|
||||||
|
xtype: 'box',
|
||||||
|
itemId: 'title',
|
||||||
|
data: {
|
||||||
|
title: ''
|
||||||
|
},
|
||||||
|
tpl: '<h3>{title}</h3>'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
xtype: 'polar',
|
||||||
|
height: 120,
|
||||||
|
border: false,
|
||||||
|
itemId: 'chart',
|
||||||
|
series: [{
|
||||||
|
type: 'gauge',
|
||||||
|
value: 0,
|
||||||
|
colors: ['#f5f5f5'],
|
||||||
|
sectors: [0],
|
||||||
|
donut: 90,
|
||||||
|
needleLength: 100,
|
||||||
|
totalAngle: Math.PI
|
||||||
|
}],
|
||||||
|
sprites: [{
|
||||||
|
id: 'valueSprite',
|
||||||
|
type: 'text',
|
||||||
|
text: '',
|
||||||
|
textAlign: 'center',
|
||||||
|
textBaseline: 'bottom',
|
||||||
|
x: 125,
|
||||||
|
y: 110,
|
||||||
|
fontSize: 30
|
||||||
|
}]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
xtype: 'box',
|
||||||
|
itemId: 'text'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
|
||||||
|
header: false,
|
||||||
|
border: false,
|
||||||
|
|
||||||
|
warningThreshold: 0.6,
|
||||||
|
criticalThreshold: 0.9,
|
||||||
|
warningColor: '#fc0',
|
||||||
|
criticalColor: '#FF6C59',
|
||||||
|
defaultColor: '#c2ddf2',
|
||||||
|
backgroundColor: '#f5f5f5',
|
||||||
|
|
||||||
|
initialValue: 0,
|
||||||
|
|
||||||
|
|
||||||
|
updateValue: function(value, text) {
|
||||||
|
var me = this;
|
||||||
|
var color = me.defaultColor;
|
||||||
|
var attr = {};
|
||||||
|
|
||||||
|
if (value >= me.criticalThreshold) {
|
||||||
|
color = me.criticalColor;
|
||||||
|
} else if (value >= me.warningThreshold) {
|
||||||
|
color = me.warningColor;
|
||||||
|
}
|
||||||
|
|
||||||
|
me.chart.series[0].setColors([color, me.backgroundColor]);
|
||||||
|
me.chart.series[0].setValue(value*100);
|
||||||
|
|
||||||
|
me.valueSprite.setText(' '+(value*100).toFixed(0) + '%');
|
||||||
|
attr.x = me.chart.getWidth()/2;
|
||||||
|
attr.y = me.chart.getHeight()-20;
|
||||||
|
if (me.spriteFontSize) {
|
||||||
|
attr.fontSize = me.spriteFontSize;
|
||||||
|
}
|
||||||
|
me.valueSprite.setAttributes(attr, true);
|
||||||
|
|
||||||
|
if (text !== undefined) {
|
||||||
|
me.text.setHtml(text);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
initComponent: function() {
|
||||||
|
var me = this;
|
||||||
|
|
||||||
|
me.callParent();
|
||||||
|
|
||||||
|
if (me.title) {
|
||||||
|
me.getComponent('title').update({title: me.title});
|
||||||
|
}
|
||||||
|
me.text = me.getComponent('text');
|
||||||
|
me.chart = me.getComponent('chart');
|
||||||
|
me.valueSprite = me.chart.getSurface('chart').get('valueSprite');
|
||||||
|
}
|
||||||
|
});
|
Loading…
Reference in New Issue
Block a user