add new infoWidget component

this adds a new component, which is 2 labels
(left the title and right the text) with a
small progressbar

it has a method updateValue, where it takes a string and
a value from 0 to 1 and updates the right label
and the progressbar

the progressbar gets a different css class at >60% and
>90% (i added some css classes to make it yellow and red
respectively)

the warning and critical thresholds are customizable

this will be used in a new version of the statusview

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
This commit is contained in:
Dominik Csapak 2016-08-19 10:47:47 +02:00 committed by Fabian Grünbichler
parent ce532dac59
commit 2df2d90027
2 changed files with 94 additions and 0 deletions

View File

@ -375,3 +375,20 @@
.pve-help-button .x-btn-inner {
color: black;
}
/* for info widget */
div.left-aligned {
float: left;
}
div.right-aligned {
float: right;
}
.x-progress.critical .x-progress-bar{
background-color: #FF8888;
}
.x-progress.warning .x-progress-bar{
background-color: #FFCC00;
}

View File

@ -0,0 +1,77 @@
Ext.define('PVE.widget.Info',{
extend: 'Ext.container.Container',
alias: 'widget.pveInfoWidget',
layout: {
type: 'vbox',
align: 'stretch'
},
value: 0,
maximum: 1,
printBar: true,
items: [
{
xtype: 'component',
itemId: 'label',
data: {
title: '',
usage: ''
},
tpl: '<div class="left-aligned">{title}</div><div class="right-aligned">{usage}</div>'
},
{
height: 2,
border: 0
},
{
xtype: 'progressbar',
itemId: 'progress',
height: 5,
value: 0,
animate: true
}
],
warningThreshold: 0.6,
criticalThreshold: 0.9,
updateValue: function(text, usage) {
var me = this;
var label = me.getComponent('label');
label.update(Ext.apply(label.data, {title: me.title, usage:text}));
if (usage !== undefined &&
me.printBar &&
Ext.isNumeric(usage) &&
usage >= 0) {
var progressBar = me.getComponent('progress');
progressBar.updateProgress(usage, '');
if (usage > me.criticalThreshold) {
progressBar.removeCls('warning');
progressBar.addCls('critical');
} else if (usage > me.warningThreshold) {
progressBar.removeCls('critical');
progressBar.addCls('warning');
} else {
progressBar.removeCls('warning');
progressBar.removeCls('critical');
}
}
},
initComponent: function() {
var me = this;
if (!me.title) {
throw "no title defined";
}
me.callParent();
me.getComponent('progress').setVisible(me.printBar);
me.updateValue(me.text, me.value);
}
});