|
|
@@ -85,17 +85,17 @@
|
|
|
* @return the calculated layout properties
|
|
|
*/
|
|
|
Gauge.prototype.calculateLayout = function() {
|
|
|
-
|
|
|
+
|
|
|
var canvasWidth = placeholder.width();
|
|
|
var canvasHeight = placeholder.height();
|
|
|
-
|
|
|
-
|
|
|
+
|
|
|
+
|
|
|
|
|
|
// calculate cell size
|
|
|
var columns = Math.min(series.length, gaugeOptions.layout.columns);
|
|
|
var rows = Math.ceil(series.length / columns);
|
|
|
-
|
|
|
-
|
|
|
+
|
|
|
+
|
|
|
|
|
|
var margin = gaugeOptions.layout.margin;
|
|
|
var hMargin = gaugeOptions.layout.hMargin;
|
|
|
@@ -107,8 +107,8 @@
|
|
|
cellWidth = cell;
|
|
|
cellHeight = cell;
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
+
|
|
|
+
|
|
|
|
|
|
// calculate 'auto' values
|
|
|
calculateAutoValues(gaugeOptions, cellWidth);
|
|
|
@@ -155,13 +155,13 @@
|
|
|
var maxRadiusV = outerRadiusV - (thresholdLabelMargin * 2) - thresholdLabelFontSize - thresholdWidth;
|
|
|
|
|
|
var radius = Math.min(maxRadiusH, maxRadiusV);
|
|
|
-
|
|
|
+
|
|
|
|
|
|
var width = gaugeOptions.gauge.width;
|
|
|
if (width >= radius) {
|
|
|
width = Math.max(3, radius / 3);
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
|
|
|
var outerRadius = (thresholdLabelMargin * 2) + thresholdLabelFontSize + thresholdWidth + radius;
|
|
|
var gaugeOuterHeight = Math.max(outerRadius * (1 + heightRatioV), outerRadius + valueMargin + (valueFontSize / 2));
|
|
|
@@ -198,7 +198,7 @@
|
|
|
* @param {Number} cellWidth the width of cell
|
|
|
*/
|
|
|
function calculateAutoValues(gaugeOptionsi, cellWidth) {
|
|
|
-
|
|
|
+
|
|
|
if (gaugeOptionsi.gauge.width === "auto") {
|
|
|
gaugeOptionsi.gauge.width = Math.max(5, cellWidth / 8);
|
|
|
}
|
|
|
@@ -223,7 +223,7 @@
|
|
|
if (gaugeOptionsi.threshold.label.font.size === "auto") {
|
|
|
gaugeOptionsi.threshold.label.font.size = Math.max(5, cellWidth / 15);
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
}
|
|
|
Gauge.prototype.calculateAutoValues = calculateAutoValues;
|
|
|
|
|
|
@@ -237,7 +237,7 @@
|
|
|
* @return the calculated cell layout properties
|
|
|
*/
|
|
|
Gauge.prototype.calculateCellLayout = function(gaugeOptionsi, layout, i) {
|
|
|
-
|
|
|
+
|
|
|
// calculate top, left and center
|
|
|
var c = col(layout.columns, i);
|
|
|
var r = row(layout.columns, i);
|
|
|
@@ -276,7 +276,7 @@
|
|
|
* @param {Object} layout the layout properties
|
|
|
*/
|
|
|
Gauge.prototype.drawBackground = function(layout) {
|
|
|
-
|
|
|
+
|
|
|
if (!gaugeOptions.frame.show) {
|
|
|
return;
|
|
|
}
|
|
|
@@ -299,7 +299,7 @@
|
|
|
* @param {Object} cellLayout the cell layout properties
|
|
|
*/
|
|
|
Gauge.prototype.drawCellBackground = function(gaugeOptionsi, cellLayout) {
|
|
|
-
|
|
|
+
|
|
|
context.save();
|
|
|
if (gaugeOptionsi.cell.border && gaugeOptionsi.cell.border.show && gaugeOptionsi.cell.border.color && gaugeOptionsi.cell.border.width) {
|
|
|
context.strokeStyle = gaugeOptionsi.cell.border.color;
|
|
|
@@ -324,10 +324,10 @@
|
|
|
* @param {Number} data the value of the gauge
|
|
|
*/
|
|
|
Gauge.prototype.drawGauge = function(gaugeOptionsi, layout, cellLayout, label, data) {
|
|
|
-
|
|
|
+
|
|
|
|
|
|
var blur = gaugeOptionsi.gauge.shadow.show ? gaugeOptionsi.gauge.shadow.blur : 0;
|
|
|
-
|
|
|
+
|
|
|
|
|
|
// draw gauge frame
|
|
|
drawArcWithShadow(
|
|
|
@@ -371,7 +371,7 @@
|
|
|
for (var i = 0; i < gaugeOptionsi.threshold.values.length; i++) {
|
|
|
var threshold = gaugeOptionsi.threshold.values[i];
|
|
|
color = threshold.color;
|
|
|
- if (data <= threshold.value) {
|
|
|
+ if (data < threshold.value) {
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
@@ -410,7 +410,7 @@
|
|
|
* @param {Object} cellLayout the cell layout properties
|
|
|
*/
|
|
|
Gauge.prototype.drawThreshold = function(gaugeOptionsi, layout, cellLayout) {
|
|
|
-
|
|
|
+
|
|
|
var a1 = gaugeOptionsi.gauge.startAngle;
|
|
|
for (var i = 0; i < gaugeOptionsi.threshold.values.length; i++) {
|
|
|
var threshold = gaugeOptionsi.threshold.values[i];
|
|
|
@@ -478,7 +478,7 @@
|
|
|
* @param {Object} item the item of the series
|
|
|
*/
|
|
|
Gauge.prototype.drawLable = function(gaugeOptionsi, layout, cellLayout, i, item) {
|
|
|
-
|
|
|
+
|
|
|
drawText(
|
|
|
cellLayout.cx,
|
|
|
cellLayout.y + cellLayout.cellMargin + layout.labelMargin + cellLayout.offsetY,
|
|
|
@@ -498,7 +498,7 @@
|
|
|
* @param {Object} item the item of the series
|
|
|
*/
|
|
|
Gauge.prototype.drawValue = function(gaugeOptionsi, layout, cellLayout, i, item) {
|
|
|
-
|
|
|
+
|
|
|
drawText(
|
|
|
cellLayout.cx,
|
|
|
cellLayout.cy - (gaugeOptionsi.value.font.size / 2),
|
|
|
@@ -517,7 +517,7 @@
|
|
|
* @param {Number} i the index of the series
|
|
|
*/
|
|
|
Gauge.prototype.drawThresholdValues = function(gaugeOptionsi, layout, cellLayout, i) {
|
|
|
-
|
|
|
+
|
|
|
// min, max
|
|
|
drawThresholdValue(gaugeOptionsi, layout, cellLayout, "Min" + i, gaugeOptionsi.gauge.min, gaugeOptionsi.gauge.startAngle);
|
|
|
drawThresholdValue(gaugeOptionsi, layout, cellLayout, "Max" + i, gaugeOptionsi.gauge.max, gaugeOptionsi.gauge.endAngle);
|
|
|
@@ -729,8 +729,8 @@
|
|
|
plot.hooks.processOptions.push(function(plot, options) {
|
|
|
var logger = getLogger(options.series.gauges.debug);
|
|
|
|
|
|
-
|
|
|
-
|
|
|
+
|
|
|
+
|
|
|
|
|
|
// turn 'grid' and 'legend' off
|
|
|
if (options.series.gauges.show) {
|
|
|
@@ -740,7 +740,7 @@
|
|
|
|
|
|
// sort threshold
|
|
|
var thresholds = options.series.gauges.threshold.values;
|
|
|
-
|
|
|
+
|
|
|
thresholds.sort(function(a, b) {
|
|
|
if (a.value < b.value) {
|
|
|
return -1;
|
|
|
@@ -750,9 +750,9 @@
|
|
|
return 0;
|
|
|
}
|
|
|
});
|
|
|
-
|
|
|
|
|
|
-
|
|
|
+
|
|
|
+
|
|
|
});
|
|
|
|
|
|
// add draw hook
|
|
|
@@ -761,14 +761,14 @@
|
|
|
var gaugeOptions = options.series.gauges;
|
|
|
|
|
|
var logger = getLogger(gaugeOptions.debug);
|
|
|
-
|
|
|
+
|
|
|
|
|
|
if (!gaugeOptions.show) {
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
var series = plot.getData();
|
|
|
-
|
|
|
+
|
|
|
if (!series || !series.length) {
|
|
|
return; // if no series were passed
|
|
|
}
|
|
|
@@ -777,10 +777,10 @@
|
|
|
|
|
|
// calculate layout
|
|
|
var layout = gauge.calculateLayout();
|
|
|
-
|
|
|
+
|
|
|
// debug layout
|
|
|
if (gaugeOptions.debug.layout) {
|
|
|
-
|
|
|
+
|
|
|
}
|
|
|
|
|
|
// draw background
|
|
|
@@ -789,21 +789,21 @@
|
|
|
// draw cells (label, gauge, value, threshold)
|
|
|
for (var i = 0; i < series.length; i++) {
|
|
|
var item = series[i];
|
|
|
-
|
|
|
+
|
|
|
var gaugeOptionsi = $.extend({}, gaugeOptions, item.gauges);
|
|
|
if (item.gauges) {
|
|
|
// re-calculate 'auto' values
|
|
|
gauge.calculateAutoValues(gaugeOptionsi, layout.cellWidth);
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
// calculate cell layout
|
|
|
var cellLayout = gauge.calculateCellLayout(gaugeOptionsi, layout, i);
|
|
|
-
|
|
|
+
|
|
|
// draw cell background
|
|
|
gauge.drawCellBackground(gaugeOptionsi, cellLayout)
|
|
|
// debug layout
|
|
|
if (gaugeOptionsi.debug.layout) {
|
|
|
-
|
|
|
+
|
|
|
}
|
|
|
// draw label
|
|
|
if (gaugeOptionsi.label.show) {
|