forked from jordanbyron/mission_of_mercy
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Fix issue #37 - Replace CSS Graph plugin with flot
- Loading branch information
1 parent
b1693b8
commit e319fd7
Showing
7 changed files
with
11,114 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,92 @@ | ||
/** | ||
* Value Labels Plugin for flot. | ||
* http://leonardoeloy.github.com/flot-valuelabels | ||
* http://wiki.github.com/leonardoeloy/flot-valuelabels/ | ||
* | ||
* Using canvas.fillText instead of divs, which is better for printing - by Leonardo Eloy, March 2010. | ||
* Tested with Flot 0.6 and JQuery 1.3.2. | ||
* | ||
* Original homepage: http://sites.google.com/site/petrsstuff/projects/flotvallab | ||
* Released under the MIT license by Petr Blahos, December 2009. | ||
*/ | ||
(function ($) { | ||
var options = { | ||
valueLabels: { | ||
show: false, | ||
showAsHtml: false, // Set to true if you wanna switch back to DIV usage (you need plot.css for this) | ||
showLastValue: false // Use this to show the label only for the last value in the series | ||
} | ||
}; | ||
|
||
function init(plot) { | ||
plot.hooks.draw.push(function (plot, ctx) { | ||
if (!plot.getOptions().valueLabels.show) return; | ||
|
||
var showLastValue = plot.getOptions().valueLabels.showLastValue; | ||
var showAsHtml = plot.getOptions().valueLabels.showAsHtml; | ||
var ctx = plot.getCanvas().getContext("2d"); | ||
$.each(plot.getData(), function(ii, series) { | ||
// Workaround, since Flot doesn't set this value anymore | ||
series.seriesIndex = ii; | ||
if (showAsHtml) plot.getPlaceholder().find("#valueLabels"+ii).remove(); | ||
var html = '<div id="valueLabels' + series.seriesIndex + '" class="valueLabels">'; | ||
|
||
var last_val = null; | ||
var last_x = -1000; | ||
var last_y = -1000; | ||
for (var i = 0; i < series.data.length; ++i) { | ||
if (series.data[i] == null || (showLastValue && i != series.data.length-1)) continue; | ||
|
||
var x = series.data[i][0], y = series.data[i][1]; | ||
if (x < series.xaxis.min || x > series.xaxis.max || y < series.yaxis.min || y > series.yaxis.max) continue; | ||
var val = y; | ||
|
||
if (series.valueLabelFunc) val = series.valueLabelFunc({ series: series, seriesIndex: ii, index: i }); | ||
val = ""+val; | ||
|
||
if (val!=last_val || i==series.data.length-1) { | ||
var xx = series.xaxis.p2c(x)+plot.getPlotOffset().left; | ||
var yy = series.yaxis.p2c(y)-12+plot.getPlotOffset().top; | ||
if (Math.abs(yy-last_y)>20 || last_x<xx) { | ||
last_val = val; | ||
last_x = xx + val.length*8; | ||
last_y = yy; | ||
|
||
if (!showAsHtml) { | ||
// Little 5 px padding here helps the number to get | ||
// closer to points | ||
x_pos = xx; | ||
y_pos = yy+6; | ||
|
||
// If the value is on the top of the canvas, we need | ||
// to push it down a little | ||
if (yy <= 0) y_pos = 18; | ||
// The same happens with the x axis | ||
if (xx >= plot.width()) x_pos = plot.width(); | ||
|
||
ctx.fillText(val, x_pos, y_pos); | ||
} else { | ||
var head = '<div style="left:' + xx + 'px;top:' + yy + 'px;" class="valueLabel'; | ||
var tail = '">' + val + '</div>'; | ||
html+= head + "Light" + tail + head + tail; | ||
} | ||
} | ||
} | ||
} | ||
|
||
if (showAsHtml) { | ||
html+= "</div>"; | ||
plot.getPlaceholder().append(html); | ||
} | ||
}); | ||
}); | ||
} | ||
|
||
$.plot.plugins.push({ | ||
init: init, | ||
options: options, | ||
name: 'valueLabels', | ||
version: '1.1' | ||
}); | ||
})(jQuery); | ||
|
Oops, something went wrong.