/
home
/
techb158
/
workloadmatch.com
/
workloadmatch.com
/
bower_components
/
Flot
/
/home/techb158/workloadmatch.com/workloadmatch.com/bower_components/Flot
mkdir
upload
Name
Size
Mode
Actions
examples/
-
0755
rm
.bower.json
434
0644
edit
dl
rm
.gitignore
40
0644
edit
dl
rm
.travis.yml
35
0644
edit
dl
rm
API.md
53572
0644
edit
dl
rm
component.json
114
0644
edit
dl
rm
CONTRIBUTING.md
3242
0644
edit
dl
rm
excanvas.js
41943
0644
edit
dl
rm
excanvas.min.js
19314
0644
edit
dl
rm
FAQ.md
3237
0644
edit
dl
rm
flot.jquery.json
837
0644
edit
dl
rm
jquery.colorhelpers.js
6151
0644
edit
dl
rm
jquery.flot.canvas.js
9599
0644
edit
dl
rm
jquery.flot.categories.js
6033
0644
edit
dl
rm
jquery.flot.crosshair.js
5419
0644
edit
dl
rm
jquery.flot.errorbars.js
12614
0644
edit
dl
rm
jquery.flot.fillbetween.js
5257
0644
edit
dl
rm
jquery.flot.image.js
7360
0644
edit
dl
rm
jquery.flot.js
122971
0644
edit
dl
rm
jquery.flot.navigate.js
14216
0644
edit
dl
rm
jquery.flot.pie.js
23809
0644
edit
dl
rm
jquery.flot.resize.js
3314
0644
edit
dl
rm
jquery.flot.selection.js
13141
0644
edit
dl
rm
jquery.flot.stack.js
7090
0644
edit
dl
rm
jquery.flot.symbol.js
2505
0644
edit
dl
rm
jquery.flot.threshold.js
4480
0644
edit
dl
rm
jquery.flot.time.js
11768
0644
edit
dl
rm
jquery.js
266057
0644
edit
dl
rm
LICENSE.txt
1069
0644
edit
dl
rm
Makefile
285
0644
edit
dl
rm
NEWS.md
40290
0644
edit
dl
rm
package.json
154
0644
edit
dl
rm
PLUGINS.md
4340
0644
edit
dl
rm
README.md
3782
0644
edit
dl
rm
Edit:
/home/techb158/workloadmatch.com/workloadmatch.com/bower_components/Flot/PLUGINS.md
(4340B)
## Writing plugins ## All you need to do to make a new plugin is creating an init function and a set of options (if needed), stuffing it into an object and putting it in the $.plot.plugins array. For example: ```js function myCoolPluginInit(plot) { plot.coolstring = "Hello!"; }; $.plot.plugins.push({ init: myCoolPluginInit, options: { ... } }); // if $.plot is called, it will return a plot object with the // attribute "coolstring" ``` Now, given that the plugin might run in many different places, it's a good idea to avoid leaking names. The usual trick here is wrap the above lines in an anonymous function which is called immediately, like this: (function () { inner code ... })(). To make it even more robust in case $ is not bound to jQuery but some other Javascript library, we can write it as ```js (function ($) { // plugin definition // ... })(jQuery); ``` There's a complete example below, but you should also check out the plugins bundled with Flot. ## Complete example ## Here is a simple debug plugin which alerts each of the series in the plot. It has a single option that control whether it is enabled and how much info to output: ```js (function ($) { function init(plot) { var debugLevel = 1; function checkDebugEnabled(plot, options) { if (options.debug) { debugLevel = options.debug; plot.hooks.processDatapoints.push(alertSeries); } } function alertSeries(plot, series, datapoints) { var msg = "series " + series.label; if (debugLevel > 1) { msg += " with " + series.data.length + " points"; alert(msg); } } plot.hooks.processOptions.push(checkDebugEnabled); } var options = { debug: 0 }; $.plot.plugins.push({ init: init, options: options, name: "simpledebug", version: "0.1" }); })(jQuery); ``` We also define "name" and "version". It's not used by Flot, but might be helpful for other plugins in resolving dependencies. Put the above in a file named "jquery.flot.debug.js", include it in an HTML page and then it can be used with: ```js $.plot($("#placeholder"), [...], { debug: 2 }); ``` This simple plugin illustrates a couple of points: - It uses the anonymous function trick to avoid name pollution. - It can be enabled/disabled through an option. - Variables in the init function can be used to store plot-specific state between the hooks. The two last points are important because there may be multiple plots on the same page, and you'd want to make sure they are not mixed up. ## Shutting down a plugin ## Each plot object has a shutdown hook which is run when plot.shutdown() is called. This usually mostly happens in case another plot is made on top of an existing one. The purpose of the hook is to give you a chance to unbind any event handlers you've registered and remove any extra DOM things you've inserted. The problem with event handlers is that you can have registered a handler which is run in some point in the future, e.g. with setTimeout(). Meanwhile, the plot may have been shutdown and removed, but because your event handler is still referencing it, it can't be garbage collected yet, and worse, if your handler eventually runs, it may overwrite stuff on a completely different plot. ## Some hints on the options ## Plugins should always support appropriate options to enable/disable them because the plugin user may have several plots on the same page where only one should use the plugin. In most cases it's probably a good idea if the plugin is turned off rather than on per default, just like most of the powerful features in Flot. If the plugin needs options that are specific to each series, like the points or lines options in core Flot, you can put them in "series" in the options object, e.g. ```js var options = { series: { downsample: { algorithm: null, maxpoints: 1000 } } } ``` Then they will be copied by Flot into each series, providing default values in case none are specified. Think hard and long about naming the options. These names are going to be public API, and code is going to depend on them if the plugin is successful.
Save
cmd:
run