]>
git.proxmox.com Git - pve-manager.git/blob - www/manager6/panel/RRDChart.js
1 Ext
.define('PVE.widget.RRDChart', {
2 extend
: 'Ext.chart.CartesianChart',
3 alias
: 'widget.pveRRDChart',
16 renderer
: 'leftAxisRenderer',
28 animationend
: 'onAfterAnimation'
57 convertToUnits: function(value
) {
58 var units
= ['', 'k','M','G','T', 'P'];
60 while(value
>= 1000 && si
< (units
.length
-1)){
64 // javascript floating point weirdness
65 value
= Ext
.Number
.correctFloat(value
);
67 // limit to 2 decimal points
68 value
= Ext
.util
.Format
.number(value
, "0.##");
70 return value
.toString() + " " + units
[si
];
73 leftAxisRenderer: function(axis
, label
, layoutContext
) {
75 return me
.convertToUnits(label
);
78 onSeriesTooltipRender: function (tooltip
, record
, item
) {
82 if (me
.percentArr
.indexOf(item
.field
) != -1) {
84 } else if (me
.bytesArr
.indexOf(item
.field
) != -1) {
86 } else if (me
.bytespersArr
.indexOf(item
.field
) != -1) {
90 var prefix
= item
.field
;
91 if (me
.fieldTitles
&& me
.fieldTitles
[me
.fields
.indexOf(item
.field
)]) {
92 prefix
= me
.fieldTitles
[me
.fields
.indexOf(item
.field
)];
94 tooltip
.setHtml(prefix
+ ': ' + this.convertToUnits(record
.get(item
.field
)) + suffix
+
95 '<br>' + new Date(record
.get('time')));
98 onAfterAnimation: function(chart
, eopts
) {
99 // if the undobuton is disabled,
101 var ourUndoZoomButton
= chart
.tools
[0];
102 var undoButton
= chart
.interactions
[0].getUndoButton();
103 ourUndoZoomButton
.setDisabled(undoButton
.isDisabled());
106 initComponent: function() {
110 throw "cannot work without store";
114 throw "cannot work without fields";
119 // add correct label for left axis
121 if (me
.percentArr
.indexOf(me
.fields
[0]) != -1) {
123 } else if (me
.bytesArr
.indexOf(me
.fields
[0]) != -1) {
125 } else if (me
.bytespersArr
.indexOf(me
.fields
[0]) != -1) {
126 axisTitle
= "Bytes/s";
128 me
.axes
[0].setTitle(axisTitle
);
133 tooltip
: gettext('Undo Zoom'),
135 var undoButton
= me
.interactions
[0].getUndoButton();
136 if (undoButton
.handler
) {
137 undoButton
.handler();
142 tooltip
: gettext('Toggle Legend'),
144 me
.legend
.setVisible(!me
.legend
.isVisible());
147 // add a series for each field we get
148 me
.fields
.forEach(function(item
, index
){
150 if (me
.fieldTitles
&& me
.fieldTitles
[index
]) {
151 title
= me
.fieldTitles
[index
];
177 renderer
: 'onSeriesTooltipRender'
182 // enable animation after the store is loaded
183 me
.store
.onAfter('load', function() {
184 me
.setAnimation(true);
185 }, this, {single
: true});