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/LogView.js \
|
||||
panel/RRDChart.js \
|
||||
panel/GaugeWidget.js \
|
||||
window/Edit.js \
|
||||
window/PasswordEdit.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…
x
Reference in New Issue
Block a user