first commit
This commit is contained in:
1464
libraries/framework/vendor/plugins/jqueryflot/API.md
vendored
Normal file
1464
libraries/framework/vendor/plugins/jqueryflot/API.md
vendored
Normal file
File diff suppressed because it is too large
Load Diff
99
libraries/framework/vendor/plugins/jqueryflot/CONTRIBUTING.md
vendored
Normal file
99
libraries/framework/vendor/plugins/jqueryflot/CONTRIBUTING.md
vendored
Normal file
@@ -0,0 +1,99 @@
|
||||
## Contributing to Flot ##
|
||||
|
||||
We welcome all contributions, but following these guidelines results in less
|
||||
work for us, and a faster and better response.
|
||||
|
||||
### Issues ###
|
||||
|
||||
Issues are not a way to ask general questions about Flot. If you see unexpected
|
||||
behavior but are not 100% certain that it is a bug, please try posting to the
|
||||
[forum](http://groups.google.com/group/flot-graphs) first, and confirm that
|
||||
what you see is really a Flot problem before creating a new issue for it.
|
||||
|
||||
When reporting a bug, please include a working demonstration of the problem, if
|
||||
possible, or at least a clear description of the options you're using and the
|
||||
environment (browser and version, jQuery version, other libraries) that you're
|
||||
running under.
|
||||
|
||||
If you have suggestions for new features, or changes to existing ones, we'd
|
||||
love to hear them! Please submit each suggestion as a separate new issue.
|
||||
|
||||
If you would like to work on an existing issue, please make sure it is not
|
||||
already assigned to someone else. If an issue is assigned to someone, that
|
||||
person has already started working on it. So, pick unassigned issues to prevent
|
||||
duplicated efforts.
|
||||
|
||||
### Pull Requests ###
|
||||
|
||||
To make merging as easy as possible, please keep these rules in mind:
|
||||
|
||||
1. Divide larger changes into a series of small, logical commits with
|
||||
descriptive messages.
|
||||
|
||||
2. Format your code according to the style guidelines below.
|
||||
|
||||
3. Submit new features or architectural changes to the <version>-work branch
|
||||
for the next major release. Submit bug fixes to the master branch.
|
||||
|
||||
4. Rebase, if necessary, before submitting your pull request, to reduce the
|
||||
work we need to do to merge it.
|
||||
|
||||
### Flot Style Guidelines ###
|
||||
|
||||
Flot follows the [jQuery Core Style Guidelines](http://docs.jquery.com/JQuery_Core_Style_Guidelines),
|
||||
with the following updates and exceptions:
|
||||
|
||||
#### Spacing ####
|
||||
|
||||
Do not add horizontal space around parameter lists, loop definitions, or
|
||||
array/object indices. For example:
|
||||
|
||||
```js
|
||||
for ( var i = 0; i < data.length; i++ ) { // This block is wrong!
|
||||
if ( data[ i ] > 1 ) {
|
||||
data[ i ] = 2;
|
||||
}
|
||||
}
|
||||
|
||||
for (var i = 0; i < data.length; i++) { // This block is correct!
|
||||
if (data[i] > 1) {
|
||||
data[i] = 2;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
#### Comments ####
|
||||
|
||||
Use // for all comments except the header at the top of a file or inline
|
||||
include.
|
||||
|
||||
All // comment blocks should have an empty line above *and* below them. For
|
||||
example:
|
||||
|
||||
```js
|
||||
var a = 5;
|
||||
|
||||
// We're going to loop here
|
||||
// TODO: Make this loop faster, better, stronger!
|
||||
|
||||
for (var x = 0; x < 10; x++) {}
|
||||
```
|
||||
|
||||
#### Wrapping ####
|
||||
|
||||
Block comments should be wrapped at 80 characters.
|
||||
|
||||
Code should attempt to wrap at 80 characters, but may run longer if wrapping
|
||||
would hurt readability more than having to scroll horizontally. This is a
|
||||
judgement call made on a situational basis.
|
||||
|
||||
Statements containing complex logic should not be wrapped arbitrarily if they
|
||||
do not exceed 80 characters. For example:
|
||||
|
||||
```js
|
||||
if (a == 1 && // This block is wrong!
|
||||
b == 2 &&
|
||||
c == 3) {}
|
||||
|
||||
if (a == 1 && b == 2 && c == 3) {} // This block is correct!
|
||||
```
|
||||
75
libraries/framework/vendor/plugins/jqueryflot/FAQ.md
vendored
Normal file
75
libraries/framework/vendor/plugins/jqueryflot/FAQ.md
vendored
Normal file
@@ -0,0 +1,75 @@
|
||||
## Frequently asked questions ##
|
||||
|
||||
#### How much data can Flot cope with? ####
|
||||
|
||||
Flot will happily draw everything you send to it so the answer
|
||||
depends on the browser. The excanvas emulation used for IE (built with
|
||||
VML) makes IE by far the slowest browser so be sure to test with that
|
||||
if IE users are in your target group (for large plots in IE, you can
|
||||
also check out Flashcanvas which may be faster).
|
||||
|
||||
1000 points is not a problem, but as soon as you start having more
|
||||
points than the pixel width, you should probably start thinking about
|
||||
downsampling/aggregation as this is near the resolution limit of the
|
||||
chart anyway. If you downsample server-side, you also save bandwidth.
|
||||
|
||||
|
||||
#### Flot isn't working when I'm using JSON data as source! ####
|
||||
|
||||
Actually, Flot loves JSON data, you just got the format wrong.
|
||||
Double check that you're not inputting strings instead of numbers,
|
||||
like [["0", "-2.13"], ["5", "4.3"]]. This is most common mistake, and
|
||||
the error might not show up immediately because Javascript can do some
|
||||
conversion automatically.
|
||||
|
||||
|
||||
#### Can I export the graph? ####
|
||||
|
||||
You can grab the image rendered by the canvas element used by Flot
|
||||
as a PNG or JPEG (remember to set a background). Note that it won't
|
||||
include anything not drawn in the canvas (such as the legend). And it
|
||||
doesn't work with excanvas which uses VML, but you could try
|
||||
Flashcanvas.
|
||||
|
||||
|
||||
#### The bars are all tiny in time mode? ####
|
||||
|
||||
It's not really possible to determine the bar width automatically.
|
||||
So you have to set the width with the barWidth option which is NOT in
|
||||
pixels, but in the units of the x axis (or the y axis for horizontal
|
||||
bars). For time mode that's milliseconds so the default value of 1
|
||||
makes the bars 1 millisecond wide.
|
||||
|
||||
|
||||
#### Can I use Flot with libraries like Mootools or Prototype? ####
|
||||
|
||||
Yes, Flot supports it out of the box and it's easy! Just use jQuery
|
||||
instead of $, e.g. call jQuery.plot instead of $.plot and use
|
||||
jQuery(something) instead of $(something). As a convenience, you can
|
||||
put in a DOM element for the graph placeholder where the examples and
|
||||
the API documentation are using jQuery objects.
|
||||
|
||||
Depending on how you include jQuery, you may have to add one line of
|
||||
code to prevent jQuery from overwriting functions from the other
|
||||
libraries, see the documentation in jQuery ("Using jQuery with other
|
||||
libraries") for details.
|
||||
|
||||
|
||||
#### Flot doesn't work with [insert name of Javascript UI framework]! ####
|
||||
|
||||
Flot is using standard HTML to make charts. If this is not working,
|
||||
it's probably because the framework you're using is doing something
|
||||
weird with the DOM or with the CSS that is interfering with Flot.
|
||||
|
||||
A common problem is that there's display:none on a container until the
|
||||
user does something. Many tab widgets work this way, and there's
|
||||
nothing wrong with it - you just can't call Flot inside a display:none
|
||||
container as explained in the README so you need to hold off the Flot
|
||||
call until the container is actually displayed (or use
|
||||
visibility:hidden instead of display:none or move the container
|
||||
off-screen).
|
||||
|
||||
If you find there's a specific thing we can do to Flot to help, feel
|
||||
free to submit a bug report. Otherwise, you're welcome to ask for help
|
||||
on the forum/mailing list, but please don't submit a bug report to
|
||||
Flot.
|
||||
22
libraries/framework/vendor/plugins/jqueryflot/LICENSE.txt
vendored
Normal file
22
libraries/framework/vendor/plugins/jqueryflot/LICENSE.txt
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
Copyright (c) 2007-2013 IOLA and Ole Laursen
|
||||
|
||||
Permission is hereby granted, free of charge, to any person
|
||||
obtaining a copy of this software and associated documentation
|
||||
files (the "Software"), to deal in the Software without
|
||||
restriction, including without limitation the rights to use,
|
||||
copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the
|
||||
Software is furnished to do so, subject to the following
|
||||
conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be
|
||||
included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||
OTHER DEALINGS IN THE SOFTWARE.
|
||||
12
libraries/framework/vendor/plugins/jqueryflot/Makefile
vendored
Normal file
12
libraries/framework/vendor/plugins/jqueryflot/Makefile
vendored
Normal file
@@ -0,0 +1,12 @@
|
||||
# Makefile for generating minified files
|
||||
|
||||
.PHONY: all
|
||||
|
||||
# we cheat and process all .js files instead of an exhaustive list
|
||||
all: $(patsubst %.js,%.min.js,$(filter-out %.min.js,$(wildcard *.js)))
|
||||
|
||||
%.min.js: %.js
|
||||
yui-compressor $< -o $@
|
||||
|
||||
test:
|
||||
./node_modules/.bin/jshint *jquery.flot.js
|
||||
893
libraries/framework/vendor/plugins/jqueryflot/NEWS.md
vendored
Normal file
893
libraries/framework/vendor/plugins/jqueryflot/NEWS.md
vendored
Normal file
@@ -0,0 +1,893 @@
|
||||
## Flot 0.8.1 ##
|
||||
|
||||
### Bug fixes ###
|
||||
|
||||
- Fixed a regression in the time plugin, introduced in 0.8, that caused dates
|
||||
to align to the minute rather than to the highest appropriate unit. This
|
||||
caused many x-axes in 0.8 to have different ticks than they did in 0.7.
|
||||
(reported by Tom Sheppard, patch by Daniel Shapiro, issue #1017, pull
|
||||
request #1023)
|
||||
|
||||
- Fixed a regression in text rendering, introduced in 0.8, that caused axis
|
||||
labels with the same text as another label on the same axis to disappear.
|
||||
More generally, it's again possible to have the same text in two locations.
|
||||
(issue #1032)
|
||||
|
||||
- Fixed a regression in text rendering, introduced in 0.8, where axis labels
|
||||
were no longer assigned an explicit width, and their text could not wrap.
|
||||
(reported by sabregreen, issue #1019)
|
||||
|
||||
- Fixed a regression in the pie plugin, introduced in 0.8, that prevented it
|
||||
from accepting data in the format '[[x, y]]'.
|
||||
(patch by Nicolas Morel, pull request #1024)
|
||||
|
||||
- The 'zero' series option and 'autoscale' format option are no longer
|
||||
ignored when the series contains a null value.
|
||||
(reported by Daniel Shapiro, issue #1033)
|
||||
|
||||
- Avoid triggering the time-mode plugin exception when there are zero series.
|
||||
(reported by Daniel Rothig, patch by Mark Raymond, issue #1016)
|
||||
|
||||
- When a custom color palette has fewer colors than the default palette, Flot
|
||||
no longer fills out the colors with the remainder of the default.
|
||||
(patch by goorpy, issue #1031, pull request #1034)
|
||||
|
||||
- Fixed missing update for bar highlights after a zoom or other redraw.
|
||||
(reported by Paolo Valleri, issue #1030)
|
||||
|
||||
- Fixed compatibility with jQuery versions earlier than 1.7.
|
||||
(patch by Lee Willis, issue #1027, pull request #1027)
|
||||
|
||||
- The mouse wheel no longer scrolls the page when using the navigate plugin.
|
||||
(patch by vird, pull request #1020)
|
||||
|
||||
- Fixed missing semicolons in the core library.
|
||||
(reported by Michal Zglinski)
|
||||
|
||||
|
||||
## Flot 0.8.0 ##
|
||||
|
||||
### API changes ###
|
||||
|
||||
Support for time series has been moved into a plugin, jquery.flot.time.js.
|
||||
This results in less code if time series are not used. The functionality
|
||||
remains the same (plus timezone support, as described below); however, the
|
||||
plugin must be included if axis.mode is set to "time".
|
||||
|
||||
When the axis mode is "time", the axis option "timezone" can be set to null,
|
||||
"browser", or a particular timezone (e.g. "America/New_York") to control how
|
||||
the dates are displayed. If null, the dates are displayed as UTC. If
|
||||
"browser", the dates are displayed in the time zone of the user's browser.
|
||||
|
||||
Date/time formatting has changed and now follows a proper subset of the
|
||||
standard strftime specifiers, plus one nonstandard specifier for quarters.
|
||||
Additionally, if a strftime function is found in the Date object's prototype,
|
||||
it will be used instead of the built-in formatter.
|
||||
|
||||
Axis tick labels now use the class 'flot-tick-label' instead of 'tickLabel'.
|
||||
The text containers for each axis now use the classes 'flot-[x|y]-axis' and
|
||||
'flot-[x|y]#-axis' instead of '[x|y]Axis' and '[x|y]#Axis'. For compatibility
|
||||
with Flot 0.7 and earlier text will continue to use the old classes as well,
|
||||
but they are considered deprecated and will be removed in a future version.
|
||||
|
||||
In previous versions the axis 'color' option was used to set the color of tick
|
||||
marks and their label text. It now controls the color of the axis line, which
|
||||
previously could not be changed separately, and continues to act as a default
|
||||
for the tick-mark color. The color of tick label text is now set either by
|
||||
overriding the 'flot-tick-label' CSS rule or via the axis 'font' option.
|
||||
|
||||
A new plugin, jquery.flot.canvas.js, allows axis tick labels to be rendered
|
||||
directly to the canvas, rather than using HTML elements. This feature can be
|
||||
toggled with a simple option, making it easy to create interactive plots in the
|
||||
browser using HTML, then re-render them to canvas for export as an image.
|
||||
|
||||
The plugin tries to remain as faithful as possible to the original HTML render,
|
||||
and goes so far as to automatically extract styles from CSS, to avoid having to
|
||||
provide a separate set of styles when rendering to canvas. Due to limitations
|
||||
of the canvas text API, the plugin cannot reproduce certain features, including
|
||||
HTML markup embedded in labels, and advanced text styles such as 'em' units.
|
||||
|
||||
The plugin requires support for canvas text, which may not be present in some
|
||||
older browsers, even if they support the canvas tag itself. To use the plugin
|
||||
with these browsers try using a shim such as canvas-text or FlashCanvas.
|
||||
|
||||
The base and overlay canvas are now using the CSS classes "flot-base" and
|
||||
"flot-overlay" to prevent accidental clashes (issue 540).
|
||||
|
||||
### Changes ###
|
||||
|
||||
- Addition of nonstandard %q specifier to date/time formatting. (patch
|
||||
by risicle, issue 49)
|
||||
|
||||
- Date/time formatting follows proper subset of strftime specifiers, and
|
||||
support added for Date.prototype.strftime, if found. (patch by Mark Cote,
|
||||
issues 419 and 558)
|
||||
|
||||
- Fixed display of year ticks. (patch by Mark Cote, issue 195)
|
||||
|
||||
- Support for time series moved to plugin. (patch by Mark Cote)
|
||||
|
||||
- Display time series in different time zones. (patch by Knut Forkalsrud,
|
||||
issue 141)
|
||||
|
||||
- Added a canvas plugin to enable rendering axis tick labels to the canvas.
|
||||
(sponsored by YCharts.com, implementation by Ole Laursen and David Schnur)
|
||||
|
||||
- Support for setting the interval between redraws of the overlay canvas with
|
||||
redrawOverlayInterval. (suggested in issue 185)
|
||||
|
||||
- Support for multiple thresholds in thresholds plugin. (patch by Arnaud
|
||||
Bellec, issue 523)
|
||||
|
||||
- Support for plotting categories/textual data directly with new categories
|
||||
plugin.
|
||||
|
||||
- Tick generators now get the whole axis rather than just min/max.
|
||||
|
||||
- Added processOffset and drawBackground hooks. (suggested in issue 639)
|
||||
|
||||
- Added a grid "margin" option to set the space between the canvas edge and
|
||||
the grid.
|
||||
|
||||
- Prevent the pie example page from generating single-slice pies. (patch by
|
||||
Shane Reustle)
|
||||
|
||||
- In addition to "left" and "center", bars now recognize "right" as an
|
||||
alignment option. (patch by Michael Mayer, issue 520)
|
||||
|
||||
- Switched from toFixed to a much faster default tickFormatter. (patch by
|
||||
Clemens Stolle)
|
||||
|
||||
- Added to a more helpful error when using a time-mode axis without including
|
||||
the flot.time plugin. (patch by Yael Elmatad)
|
||||
|
||||
- Added a legend "sorted" option to control sorting of legend entries
|
||||
independent of their series order. (patch by Tom Cleaveland)
|
||||
|
||||
- Added a series "highlightColor" option to control the color of the
|
||||
translucent overlay that identifies the dataset when the mouse hovers over
|
||||
it. (patch by Eric Wendelin and Nate Abele, issues 168 and 299)
|
||||
|
||||
- Added a plugin jquery.flot.errorbars, with an accompanying example, that
|
||||
adds the ability to plot error bars, commonly used in many kinds of
|
||||
statistical data visualizations. (patch by Rui Pereira, issue 215)
|
||||
|
||||
- The legend now omits entries whose labelFormatter returns null. (patch by
|
||||
Tom Cleaveland, Christopher Lambert, and Simon Strandgaard)
|
||||
|
||||
- Added support for high pixel density (retina) displays, resulting in much
|
||||
crisper charts on such devices. (patch by Olivier Guerriat, additional
|
||||
fixes by Julien Thomas, maimairel, and Lau Bech Lauritzen)
|
||||
|
||||
- Added the ability to control pie shadow position and alpha via a new pie
|
||||
'shadow' option. (patch by Julien Thomas, pull request #78)
|
||||
|
||||
- Added the ability to set width and color for individual sides of the grid.
|
||||
(patch by Ara Anjargolian, additional fixes by Karl Swedberg, pull requests #855
|
||||
and #880)
|
||||
|
||||
- The selection plugin's getSelection now returns null when the selection
|
||||
has been cleared. (patch by Nick Campbell, pull request #852)
|
||||
|
||||
- Added a new option called 'zero' to bars and filled lines series, to control
|
||||
whether the y-axis minimum is scaled to fit the data or set to zero.
|
||||
(patch by David Schnur, issues #316, #529, and #856, pull request #911)
|
||||
|
||||
- The plot function is now also a jQuery chainable property.
|
||||
(patch by David Schnur, issues #734 and #816, pull request #953)
|
||||
|
||||
- When only a single pie slice is beneath the combine threshold it is no longer
|
||||
replaced by an 'other' slice. (suggested by Devin Bayer, issue #638)
|
||||
|
||||
- Added lineJoin and minSize options to the selection plugin to control the
|
||||
corner style and minimum size of the selection, respectively.
|
||||
(patch by Ruth Linehan, pull request #963)
|
||||
|
||||
### Bug fixes ###
|
||||
|
||||
- Fix problem with null values and pie plugin. (patch by gcruxifix,
|
||||
issue 500)
|
||||
|
||||
- Fix problem with threshold plugin and bars. (based on patch by
|
||||
kaarlenkaski, issue 348)
|
||||
|
||||
- Fix axis box calculations so the boxes include the outermost part of the
|
||||
labels too.
|
||||
|
||||
- Fix problem with event clicking and hovering in IE 8 by updating Excanvas
|
||||
and removing previous work-around. (test case by Ara Anjargolian)
|
||||
|
||||
- Fix issues with blurry 1px border when some measures aren't integer.
|
||||
(reported by Ara Anjargolian)
|
||||
|
||||
- Fix bug with formats in the data processor. (reported by Peter Hull,
|
||||
issue 534)
|
||||
|
||||
- Prevent i from being declared global in extractRange. (reported by
|
||||
Alexander Obukhov, issue 627)
|
||||
|
||||
- Throw errors in a more cross-browser-compatible manner. (patch by
|
||||
Eddie Kay)
|
||||
|
||||
- Prevent pie slice outlines from being drawn when the stroke width is zero.
|
||||
(reported by Chris Minett, issue 585)
|
||||
|
||||
- Updated the navigate plugin's inline copy of jquery.mousewheel to fix
|
||||
Webkit zoom problems. (reported by Hau Nguyen, issue 685)
|
||||
|
||||
- Axis labels no longer appear as decimals rather than integers in certain
|
||||
cases. (patch by Clemens Stolle, issue 541)
|
||||
|
||||
- Automatic color generation no longer produces only whites and blacks when
|
||||
there are many series. (patch by David Schnur and Tom Cleaveland)
|
||||
|
||||
- Fixed an error when custom tick labels weren't provided as strings. (patch
|
||||
by Shad Downey)
|
||||
|
||||
- Prevented the local insertSteps and fmt variables from becoming global.
|
||||
(first reported by Marc Bennewitz and Szymon Barglowski, patch by Nick
|
||||
Campbell, issues #825 and #831, pull request #851)
|
||||
|
||||
- Prevented several threshold plugin variables from becoming global. (patch
|
||||
by Lasse Dahl Ebert)
|
||||
|
||||
- Fixed various jQuery 1.8 compatibility issues. (issues #814 and #819,
|
||||
pull request #877)
|
||||
|
||||
- Pie charts with a slice equal to or approaching 100% of the pie no longer
|
||||
appear invisible. (patch by David Schnur, issues #444, #658, #726, #824
|
||||
and #850, pull request #879)
|
||||
|
||||
- Prevented several local variables from becoming global. (patch by aaa707)
|
||||
|
||||
- Ensure that the overlay and primary canvases remain aligned. (issue #670,
|
||||
pull request #901)
|
||||
|
||||
- Added support for jQuery 1.9 by removing and replacing uses of $.browser.
|
||||
(analysis and patch by Anthony Ryan, pull request #905)
|
||||
|
||||
- Pie charts no longer disappear when redrawn during a resize or update.
|
||||
(reported by Julien Bec, issue #656, pull request #910)
|
||||
|
||||
- Avoided floating-point precision errors when calculating pie percentages.
|
||||
(patch by James Ward, pull request #918)
|
||||
|
||||
- Fixed compatibility with jQuery 1.2.6, which has no 'mouseleave' shortcut.
|
||||
(reported by Bevan, original pull request #920, replaced by direct patch)
|
||||
|
||||
- Fixed sub-pixel rendering issues with crosshair and selection lines.
|
||||
(patches by alanayoub and Daniel Shapiro, pull requests #17 and #925)
|
||||
|
||||
- Fixed rendering issues when using the threshold plugin with several series.
|
||||
(patch by Ivan Novikov, pull request #934)
|
||||
|
||||
- Pie charts no longer disappear when redrawn after calling setData().
|
||||
(reported by zengge1984 and pareeohnos, issues #810 and #945)
|
||||
|
||||
- Added a work-around for the problem where points with a lineWidth of zero
|
||||
still showed up with a visible line. (reported by SalvoSav, issue #842,
|
||||
patch by Jamie Hamel-Smith, pull request #937)
|
||||
|
||||
- Pie charts now accept values in string form, like other plot types.
|
||||
(reported by laerdal.no, issue #534)
|
||||
|
||||
- Avoid rounding errors in the threshold plugin.
|
||||
(reported by jerikojerk, issue #895)
|
||||
|
||||
- Fixed an error when using the navigate plugin with jQuery 1.9.x or later.
|
||||
(reported by Paolo Valleri, issue #964)
|
||||
|
||||
- Fixed inconsistencies between the highlight and unhighlight functions.
|
||||
(reported by djamshed, issue #987)
|
||||
|
||||
- Fixed recalculation of tickSize and tickDecimals on calls to setupGrid.
|
||||
(patch by thecountofzero, pull request #861, issues #860, #1000)
|
||||
|
||||
|
||||
## Flot 0.7 ##
|
||||
|
||||
### API changes ###
|
||||
|
||||
Multiple axes support. Code using dual axes should be changed from using
|
||||
x2axis/y2axis in the options to using an array (although backwards-
|
||||
compatibility hooks are in place). For instance,
|
||||
|
||||
```js
|
||||
{
|
||||
xaxis: { ... }, x2axis: { ... },
|
||||
yaxis: { ... }, y2axis: { ... }
|
||||
}
|
||||
```
|
||||
|
||||
becomes
|
||||
|
||||
```js
|
||||
{
|
||||
xaxes: [ { ... }, { ... } ],
|
||||
yaxes: [ { ... }, { ... } ]
|
||||
}
|
||||
```
|
||||
|
||||
Note that if you're just using one axis, continue to use the xaxis/yaxis
|
||||
directly (it now sets the default settings for the arrays). Plugins touching
|
||||
the axes must be ported to take the extra axes into account, check the source
|
||||
to see some examples.
|
||||
|
||||
A related change is that the visibility of axes is now auto-detected. So if
|
||||
you were relying on an axis to show up even without any data in the chart, you
|
||||
now need to set the axis "show" option explicitly.
|
||||
|
||||
"tickColor" on the grid options is now deprecated in favour of a corresponding
|
||||
option on the axes, so:
|
||||
|
||||
```js
|
||||
{ grid: { tickColor: "#000" }}
|
||||
```
|
||||
|
||||
becomes
|
||||
|
||||
```js
|
||||
{ xaxis: { tickColor: "#000"}, yaxis: { tickColor: "#000"} }
|
||||
```
|
||||
|
||||
But if you just configure a base color Flot will now autogenerate a tick color
|
||||
by adding transparency. Backwards-compatibility hooks are in place.
|
||||
|
||||
Final note: now that IE 9 is coming out with canvas support, you may want to
|
||||
adapt the excanvas include to skip loading it in IE 9 (the examples have been
|
||||
adapted thanks to Ryley Breiddal). An alternative to excanvas using Flash has
|
||||
also surfaced, if your graphs are slow in IE, you may want to give it a spin:
|
||||
|
||||
http://code.google.com/p/flashcanvas/
|
||||
|
||||
### Changes ###
|
||||
|
||||
- Support for specifying a bottom for each point for line charts when filling
|
||||
them, this means that an arbitrary bottom can be used instead of just the x
|
||||
axis. (based on patches patiently provided by Roman V. Prikhodchenko)
|
||||
|
||||
- New fillbetween plugin that can compute a bottom for a series from another
|
||||
series, useful for filling areas between lines.
|
||||
|
||||
See new example percentiles.html for a use case.
|
||||
|
||||
- More predictable handling of gaps for the stacking plugin, now all
|
||||
undefined ranges are skipped.
|
||||
|
||||
- Stacking plugin can stack horizontal bar charts.
|
||||
|
||||
- Navigate plugin now redraws the plot while panning instead of only after
|
||||
the fact. (raised by lastthemy, issue 235)
|
||||
|
||||
Can be disabled by setting the pan.frameRate option to null.
|
||||
|
||||
- Date formatter now accepts %0m and %0d to get a zero-padded month or day.
|
||||
(issue raised by Maximillian Dornseif)
|
||||
|
||||
- Revamped internals to support an unlimited number of axes, not just dual.
|
||||
(sponsored by Flight Data Services, www.flightdataservices.com)
|
||||
|
||||
- New setting on axes, "tickLength", to control the size of ticks or turn
|
||||
them off without turning off the labels.
|
||||
|
||||
- Axis labels are now put in container divs with classes, for instance labels
|
||||
in the x axes can be reached via ".xAxis .tickLabel".
|
||||
|
||||
- Support for setting the color of an axis. (sponsored by Flight Data
|
||||
Services, www.flightdataservices.com)
|
||||
|
||||
- Tick color is now auto-generated as the base color with some transparency,
|
||||
unless you override it.
|
||||
|
||||
- Support for aligning ticks in the axes with "alignTicksWithAxis" to ensure
|
||||
that they appear next to each other rather than in between, at the expense
|
||||
of possibly awkward tick steps. (sponsored by Flight Data Services,
|
||||
www.flightdataservices.com)
|
||||
|
||||
- Support for customizing the point type through a callback when plotting
|
||||
points and new symbol plugin with some predefined point types. (sponsored
|
||||
by Utility Data Corporation)
|
||||
|
||||
- Resize plugin for automatically redrawing when the placeholder changes
|
||||
size, e.g. on window resizes. (sponsored by Novus Partners)
|
||||
|
||||
A resize() method has been added to plot object facilitate this.
|
||||
|
||||
- Support Infinity/-Infinity for plotting asymptotes by hacking it into
|
||||
+/-Number.MAX_VALUE. (reported by rabaea.mircea)
|
||||
|
||||
- Support for restricting navigate plugin to not pan/zoom an axis. (based on
|
||||
patch by kkaefer)
|
||||
|
||||
- Support for providing the drag cursor for the navigate plugin as an option.
|
||||
(based on patch by Kelly T. Moore)
|
||||
|
||||
- Options for controlling whether an axis is shown or not (suggestion by Timo
|
||||
Tuominen) and whether to reserve space for it even if it isn't shown.
|
||||
|
||||
- New attribute $.plot.version with the Flot version as a string.
|
||||
|
||||
- The version comment is now included in the minified jquery.flot.min.js.
|
||||
|
||||
- New options.grid.minBorderMargin for adjusting the minimum margin provided
|
||||
around the border (based on patch by corani, issue 188).
|
||||
|
||||
- Refactor replot behaviour so Flot tries to reuse the existing canvas,
|
||||
adding shutdown() methods to the plot. (based on patch by Ryley Breiddal,
|
||||
issue 269)
|
||||
|
||||
This prevents a memory leak in Chrome and hopefully makes replotting faster
|
||||
for those who are using $.plot instead of .setData()/.draw(). Also update
|
||||
jQuery to 1.5.1 to prevent IE leaks fixed in jQuery.
|
||||
|
||||
- New real-time line chart example.
|
||||
|
||||
- New hooks: drawSeries, shutdown.
|
||||
|
||||
### Bug fixes ###
|
||||
|
||||
- Fixed problem with findNearbyItem and bars on top of each other. (reported
|
||||
by ragingchikn, issue 242)
|
||||
|
||||
- Fixed problem with ticks and the border. (based on patch from
|
||||
ultimatehustler69, issue 236)
|
||||
|
||||
- Fixed problem with plugins adding options to the series objects.
|
||||
|
||||
- Fixed a problem introduced in 0.6 with specifying a gradient with:
|
||||
|
||||
```{brightness: x, opacity: y }```
|
||||
|
||||
- Don't use $.browser.msie, check for getContext on the created canvas element
|
||||
instead and try to use excanvas if it's not found.
|
||||
|
||||
Fixes IE 9 compatibility.
|
||||
|
||||
- highlight(s, index) was looking up the point in the original s.data instead
|
||||
of in the computed datapoints array, which breaks with plugins that modify
|
||||
the datapoints, such as the stacking plugin. (reported by curlypaul924,
|
||||
issue 316)
|
||||
|
||||
- More robust handling of axis from data passed in from getData(). (reported)
|
||||
by Morgan)
|
||||
|
||||
- Fixed problem with turning off bar outline. (fix by Jordi Castells,
|
||||
issue 253)
|
||||
|
||||
- Check the selection passed into setSelection in the selection
|
||||
plugin, to guard against errors when synchronizing plots (fix by Lau
|
||||
Bech Lauritzen).
|
||||
|
||||
- Fix bug in crosshair code with mouseout resetting the crosshair even
|
||||
if it is locked (fix by Lau Bech Lauritzen and Banko Adam).
|
||||
|
||||
- Fix bug with points plotting using line width from lines rather than
|
||||
points.
|
||||
|
||||
- Fix bug with passing non-array 0 data (for plugins that don't expect
|
||||
arrays, patch by vpapp1).
|
||||
|
||||
- Fix errors in JSON in examples so they work with jQuery 1.4.2
|
||||
(fix reported by honestbleeps, issue 357).
|
||||
|
||||
- Fix bug with tooltip in interacting.html, this makes the tooltip
|
||||
much smoother (fix by bdkahn). Fix related bug inside highlighting
|
||||
handler in Flot.
|
||||
|
||||
- Use closure trick to make inline colorhelpers plugin respect
|
||||
jQuery.noConflict(true), renaming the global jQuery object (reported
|
||||
by Nick Stielau).
|
||||
|
||||
- Listen for mouseleave events and fire a plothover event with empty
|
||||
item when it occurs to drop highlights when the mouse leaves the
|
||||
plot (reported by by outspirit).
|
||||
|
||||
- Fix bug with using aboveData with a background (reported by
|
||||
amitayd).
|
||||
|
||||
- Fix possible excanvas leak (report and suggested fix by tom9729).
|
||||
|
||||
- Fix bug with backwards compatibility for shadowSize = 0 (report and
|
||||
suggested fix by aspinak).
|
||||
|
||||
- Adapt examples to skip loading excanvas (fix by Ryley Breiddal).
|
||||
|
||||
- Fix bug that prevent a simple f(x) = -x transform from working
|
||||
correctly (fix by Mike, issue 263).
|
||||
|
||||
- Fix bug in restoring cursor in navigate plugin (reported by Matteo
|
||||
Gattanini, issue 395).
|
||||
|
||||
- Fix bug in picking items when transform/inverseTransform is in use
|
||||
(reported by Ofri Raviv, and patches and analysis by Jan and Tom
|
||||
Paton, issue 334 and 467).
|
||||
|
||||
- Fix problem with unaligned ticks and hover/click events caused by
|
||||
padding on the placeholder by hardcoding the placeholder padding to
|
||||
0 (reported by adityadineshsaxena, Matt Sommer, Daniel Atos and some
|
||||
other people, issue 301).
|
||||
|
||||
- Update colorhelpers plugin to avoid dying when trying to parse an
|
||||
invalid string (reported by cadavor, issue 483).
|
||||
|
||||
|
||||
|
||||
## Flot 0.6 ##
|
||||
|
||||
### API changes ###
|
||||
|
||||
Selection support has been moved to a plugin. Thus if you're passing
|
||||
selection: { mode: something }, you MUST include the file
|
||||
jquery.flot.selection.js after jquery.flot.js. This reduces the size of
|
||||
base Flot and makes it easier to customize the selection as well as
|
||||
improving code clarity. The change is based on a patch from andershol.
|
||||
|
||||
In the global options specified in the $.plot command, "lines", "points",
|
||||
"bars" and "shadowSize" have been moved to a sub-object called "series":
|
||||
|
||||
```js
|
||||
$.plot(placeholder, data, { lines: { show: true }})
|
||||
```
|
||||
|
||||
should be changed to
|
||||
|
||||
```js
|
||||
$.plot(placeholder, data, { series: { lines: { show: true }}})
|
||||
```
|
||||
|
||||
All future series-specific options will go into this sub-object to
|
||||
simplify plugin writing. Backward-compatibility code is in place, so
|
||||
old code should not break.
|
||||
|
||||
"plothover" no longer provides the original data point, but instead a
|
||||
normalized one, since there may be no corresponding original point.
|
||||
|
||||
Due to a bug in previous versions of jQuery, you now need at least
|
||||
jQuery 1.2.6. But if you can, try jQuery 1.3.2 as it got some improvements
|
||||
in event handling speed.
|
||||
|
||||
## Changes ##
|
||||
|
||||
- Added support for disabling interactivity for specific data series.
|
||||
(request from Ronald Schouten and Steve Upton)
|
||||
|
||||
- Flot now calls $() on the placeholder and optional legend container passed
|
||||
in so you can specify DOM elements or CSS expressions to make it easier to
|
||||
use Flot with libraries like Prototype or Mootools or through raw JSON from
|
||||
Ajax responses.
|
||||
|
||||
- A new "plotselecting" event is now emitted while the user is making a
|
||||
selection.
|
||||
|
||||
- The "plothover" event is now emitted immediately instead of at most 10
|
||||
times per second, you'll have to put in a setTimeout yourself if you're
|
||||
doing something really expensive on this event.
|
||||
|
||||
- The built-in date formatter can now be accessed as $.plot.formatDate(...)
|
||||
(suggestion by Matt Manela) and even replaced.
|
||||
|
||||
- Added "borderColor" option to the grid. (patches from Amaury Chamayou and
|
||||
Mike R. Williamson)
|
||||
|
||||
- Added support for gradient backgrounds for the grid. (based on patch from
|
||||
Amaury Chamayou, issue 90)
|
||||
|
||||
The "setting options" example provides a demonstration.
|
||||
|
||||
- Gradient bars. (suggestion by stefpet)
|
||||
|
||||
- Added a "plotunselected" event which is triggered when the selection is
|
||||
removed, see "selection" example. (suggestion by Meda Ugo)
|
||||
|
||||
- The option legend.margin can now specify horizontal and vertical margins
|
||||
independently. (suggestion by someone who's annoyed)
|
||||
|
||||
- Data passed into Flot is now copied to a new canonical format to enable
|
||||
further processing before it hits the drawing routines. As a side-effect,
|
||||
this should make Flot more robust in the face of bad data. (issue 112)
|
||||
|
||||
- Step-wise charting: line charts have a new option "steps" that when set to
|
||||
true connects the points with horizontal/vertical steps instead of diagonal
|
||||
lines.
|
||||
|
||||
- The legend labelFormatter now passes the series in addition to just the
|
||||
label. (suggestion by Vincent Lemeltier)
|
||||
|
||||
- Horizontal bars (based on patch by Jason LeBrun).
|
||||
|
||||
- Support for partial bars by specifying a third coordinate, i.e. they don't
|
||||
have to start from the axis. This can be used to make stacked bars.
|
||||
|
||||
- New option to disable the (grid.show).
|
||||
|
||||
- Added pointOffset method for converting a point in data space to an offset
|
||||
within the placeholder.
|
||||
|
||||
- Plugin system: register an init method in the $.flot.plugins array to get
|
||||
started, see PLUGINS.txt for details on how to write plugins (it's easy).
|
||||
There are also some extra methods to enable access to internal state.
|
||||
|
||||
- Hooks: you can register functions that are called while Flot is crunching
|
||||
the data and doing the plot. This can be used to modify Flot without
|
||||
changing the source, useful for writing plugins. Some hooks are defined,
|
||||
more are likely to come.
|
||||
|
||||
- Threshold plugin: you can set a threshold and a color, and the data points
|
||||
below that threshold will then get the color. Useful for marking data
|
||||
below 0, for instance.
|
||||
|
||||
- Stack plugin: you can specify a stack key for each series to have them
|
||||
summed. This is useful for drawing additive/cumulative graphs with bars and
|
||||
(currently unfilled) lines.
|
||||
|
||||
- Crosshairs plugin: trace the mouse position on the axes, enable with
|
||||
crosshair: { mode: "x"} (see the new tracking example for a use).
|
||||
|
||||
- Image plugin: plot prerendered images.
|
||||
|
||||
- Navigation plugin for panning and zooming a plot.
|
||||
|
||||
- More configurable grid.
|
||||
|
||||
- Axis transformation support, useful for non-linear plots, e.g. log axes and
|
||||
compressed time axes (like omitting weekends).
|
||||
|
||||
- Support for twelve-hour date formatting (patch by Forrest Aldridge).
|
||||
|
||||
- The color parsing code in Flot has been cleaned up and split out so it's
|
||||
now available as a separate jQuery plugin. It's included inline in the Flot
|
||||
source to make dependency managing easier. This also makes it really easy
|
||||
to use the color helpers in Flot plugins.
|
||||
|
||||
## Bug fixes ##
|
||||
|
||||
- Fixed two corner-case bugs when drawing filled curves. (report and analysis
|
||||
by Joshua Varner)
|
||||
|
||||
- Fix auto-adjustment code when setting min to 0 for an axis where the
|
||||
dataset is completely flat on that axis. (report by chovy)
|
||||
|
||||
- Fixed a bug with passing in data from getData to setData when the secondary
|
||||
axes are used. (reported by nperelman, issue 65)
|
||||
|
||||
- Fixed so that it is possible to turn lines off when no other chart type is
|
||||
shown (based on problem reported by Glenn Vanderburg), and fixed so that
|
||||
setting lineWidth to 0 also hides the shadow. (based on problem reported by
|
||||
Sergio Nunes)
|
||||
|
||||
- Updated mousemove position expression to the latest from jQuery. (reported
|
||||
by meyuchas)
|
||||
|
||||
- Use CSS borders instead of background in legend. (issues 25 and 45)
|
||||
|
||||
- Explicitly convert axis min/max to numbers.
|
||||
|
||||
- Fixed a bug with drawing marking lines with different colors. (reported by
|
||||
Khurram)
|
||||
|
||||
- Fixed a bug with returning y2 values in the selection event. (fix by
|
||||
exists, issue 75)
|
||||
|
||||
- Only set position relative on placeholder if it hasn't already a position
|
||||
different from static. (reported by kyberneticist, issue 95)
|
||||
|
||||
- Don't round markings to prevent sub-pixel problems. (reported by
|
||||
Dan Lipsitt)
|
||||
|
||||
- Make the grid border act similarly to a regular CSS border, i.e. prevent
|
||||
it from overlapping the plot itself. This also fixes a problem with anti-
|
||||
aliasing when the width is 1 pixel. (reported by Anthony Ettinger)
|
||||
|
||||
- Imported version 3 of excanvas and fixed two issues with the newer version.
|
||||
Hopefully, this will make Flot work with IE8. (nudge by Fabien Menager,
|
||||
further analysis by Booink, issue 133)
|
||||
|
||||
- Changed the shadow code for lines to hopefully look a bit better with
|
||||
vertical lines.
|
||||
|
||||
- Round tick positions to avoid possible problems with fractions. (suggestion
|
||||
by Fred, issue 130)
|
||||
|
||||
- Made the heuristic for determining how many ticks to aim for a bit smarter.
|
||||
|
||||
- Fix for uneven axis margins (report and patch by Paul Kienzle) and snapping
|
||||
to ticks. (report and patch by lifthrasiir)
|
||||
|
||||
- Fixed bug with slicing in findNearbyItems. (patch by zollman)
|
||||
|
||||
- Make heuristic for x axis label widths more dynamic. (patch by
|
||||
rickinhethuis)
|
||||
|
||||
- Make sure points on top take precedence when finding nearby points when
|
||||
hovering. (reported by didroe, issue 224)
|
||||
|
||||
|
||||
|
||||
## Flot 0.5 ##
|
||||
|
||||
Timestamps are now in UTC. Also "selected" event -> becomes "plotselected"
|
||||
with new data, the parameters for setSelection are now different (but
|
||||
backwards compatibility hooks are in place), coloredAreas becomes markings
|
||||
with a new interface (but backwards compatibility hooks are in place).
|
||||
|
||||
### API changes ###
|
||||
|
||||
Timestamps in time mode are now displayed according to UTC instead of the time
|
||||
zone of the visitor. This affects the way the timestamps should be input;
|
||||
you'll probably have to offset the timestamps according to your local time
|
||||
zone. It also affects any custom date handling code (which basically now
|
||||
should use the equivalent UTC date mehods, e.g. .setUTCMonth() instead of
|
||||
.setMonth().
|
||||
|
||||
Markings, previously coloredAreas, are now specified as ranges on the axes,
|
||||
like ```{ xaxis: { from: 0, to: 10 }}```. Furthermore with markings you can
|
||||
now draw horizontal/vertical lines by setting from and to to the same
|
||||
coordinate. (idea from line support patch by by Ryan Funduk)
|
||||
|
||||
Interactivity: added a new "plothover" event and this and the "plotclick"
|
||||
event now returns the closest data item (based on patch by /david, patch by
|
||||
Mark Byers for bar support). See the revamped "interacting with the data"
|
||||
example for some hints on what you can do.
|
||||
|
||||
Highlighting: you can now highlight points and datapoints are autohighlighted
|
||||
when you hover over them (if hovering is turned on).
|
||||
|
||||
Support for dual axis has been added (based on patch by someone who's annoyed
|
||||
and /david). For each data series you can specify which axes it belongs to,
|
||||
and there are two more axes, x2axis and y2axis, to customize. This affects the
|
||||
"selected" event which has been renamed to "plotselected" and spews out
|
||||
```{ xaxis: { from: -10, to: 20 } ... },``` setSelection in which the
|
||||
parameters are on a new form (backwards compatible hooks are in place so old
|
||||
code shouldn't break) and markings (formerly coloredAreas).
|
||||
|
||||
## Changes ##
|
||||
|
||||
- Added support for specifying the size of tick labels (axis.labelWidth,
|
||||
axis.labelHeight). Useful for specifying a max label size to keep multiple
|
||||
plots aligned.
|
||||
|
||||
- The "fill" option can now be a number that specifies the opacity of the
|
||||
fill.
|
||||
|
||||
- You can now specify a coordinate as null (like [2, null]) and Flot will
|
||||
take the other coordinate into account when scaling the axes. (based on
|
||||
patch by joebno)
|
||||
|
||||
- New option for bars "align". Set it to "center" to center the bars on the
|
||||
value they represent.
|
||||
|
||||
- setSelection now takes a second parameter which you can use to prevent the
|
||||
method from firing the "plotselected" handler.
|
||||
|
||||
- Improved the handling of axis auto-scaling with bars.
|
||||
|
||||
## Bug fixes ##
|
||||
|
||||
- Fixed a bug in calculating spacing around the plot. (reported by
|
||||
timothytoe)
|
||||
|
||||
- Fixed a bug in finding max values for all-negative data sets.
|
||||
|
||||
- Prevent the possibility of eternal looping in tick calculations.
|
||||
|
||||
- Fixed a bug when borderWidth is set to 0. (reported by Rob/sanchothefat)
|
||||
|
||||
- Fixed a bug with drawing bars extending below 0. (reported by James Hewitt,
|
||||
patch by Ryan Funduk).
|
||||
|
||||
- Fixed a bug with line widths of bars. (reported by MikeM)
|
||||
|
||||
- Fixed a bug with 'nw' and 'sw' legend positions.
|
||||
|
||||
- Fixed a bug with multi-line x-axis tick labels. (reported by Luca Ciano,
|
||||
IE-fix help by Savage Zhang)
|
||||
|
||||
- Using the "container" option in legend now overwrites the container element
|
||||
instead of just appending to it, fixing the infinite legend bug. (reported
|
||||
by several people, fix by Brad Dewey)
|
||||
|
||||
|
||||
|
||||
## Flot 0.4 ##
|
||||
|
||||
### API changes ###
|
||||
|
||||
Deprecated axis.noTicks in favor of just specifying the number as axis.ticks.
|
||||
So ```xaxis: { noTicks: 10 }``` becomes ```xaxis: { ticks: 10 }```.
|
||||
|
||||
Time series support. Specify axis.mode: "time", put in Javascript timestamps
|
||||
as data, and Flot will automatically spit out sensible ticks. Take a look at
|
||||
the two new examples. The format can be customized with axis.timeformat and
|
||||
axis.monthNames, or if that fails with axis.tickFormatter.
|
||||
|
||||
Support for colored background areas via grid.coloredAreas. Specify an array
|
||||
of { x1, y1, x2, y2 } objects or a function that returns these given
|
||||
{ xmin, xmax, ymin, ymax }.
|
||||
|
||||
More members on the plot object (report by Chris Davies and others).
|
||||
"getData" for inspecting the assigned settings on data series (e.g. color) and
|
||||
"setData", "setupGrid" and "draw" for updating the contents without a total
|
||||
replot.
|
||||
|
||||
The default number of ticks to aim for is now dependent on the size of the
|
||||
plot in pixels. Support for customizing tick interval sizes directly with
|
||||
axis.minTickSize and axis.tickSize.
|
||||
|
||||
Cleaned up the automatic axis scaling algorithm and fixed how it interacts
|
||||
with ticks. Also fixed a couple of tick-related corner case bugs (one reported
|
||||
by mainstreetmark, another reported by timothytoe).
|
||||
|
||||
The option axis.tickFormatter now takes a function with two parameters, the
|
||||
second parameter is an optional object with information about the axis. It has
|
||||
min, max, tickDecimals, tickSize.
|
||||
|
||||
## Changes ##
|
||||
|
||||
- Added support for segmented lines. (based on patch from Michael MacDonald)
|
||||
|
||||
- Added support for ignoring null and bad values. (suggestion from Nick
|
||||
Konidaris and joshwaihi)
|
||||
|
||||
- Added support for changing the border width. (thanks to joebno and safoo)
|
||||
|
||||
- Label colors can be changed via CSS by selecting the tickLabel class.
|
||||
|
||||
## Bug fixes ##
|
||||
|
||||
- Fixed a bug in handling single-item bar series. (reported by Emil Filipov)
|
||||
|
||||
- Fixed erratic behaviour when interacting with the plot with IE 7. (reported
|
||||
by Lau Bech Lauritzen).
|
||||
|
||||
- Prevent IE/Safari text selection when selecting stuff on the canvas.
|
||||
|
||||
|
||||
|
||||
## Flot 0.3 ##
|
||||
|
||||
This is mostly a quick-fix release because jquery.js wasn't included in the
|
||||
previous zip/tarball.
|
||||
|
||||
## Changes ##
|
||||
|
||||
- Include jquery.js in the zip/tarball.
|
||||
|
||||
- Support clicking on the plot. Turn it on with grid: { clickable: true },
|
||||
then you get a "plotclick" event on the graph placeholder with the position
|
||||
in units of the plot.
|
||||
|
||||
## Bug fixes ##
|
||||
|
||||
- Fixed a bug in dealing with data where min = max. (thanks to Michael
|
||||
Messinides)
|
||||
|
||||
|
||||
|
||||
## Flot 0.2 ##
|
||||
|
||||
The API should now be fully documented.
|
||||
|
||||
### API changes ###
|
||||
|
||||
Moved labelMargin option to grid from x/yaxis.
|
||||
|
||||
## Changes ##
|
||||
|
||||
- Added support for putting a background behind the default legend. The
|
||||
default is the partly transparent background color. Added backgroundColor
|
||||
and backgroundOpacity to the legend options to control this.
|
||||
|
||||
- The ticks options can now be a callback function that takes one parameter,
|
||||
an object with the attributes min and max. The function should return a
|
||||
ticks array.
|
||||
|
||||
- Added labelFormatter option in legend, useful for turning the legend
|
||||
labels into links.
|
||||
|
||||
- Reduced the size of the code. (patch by Guy Fraser)
|
||||
|
||||
|
||||
|
||||
## Flot 0.1 ##
|
||||
|
||||
First public release.
|
||||
143
libraries/framework/vendor/plugins/jqueryflot/PLUGINS.md
vendored
Normal file
143
libraries/framework/vendor/plugins/jqueryflot/PLUGINS.md
vendored
Normal file
@@ -0,0 +1,143 @@
|
||||
## 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.
|
||||
110
libraries/framework/vendor/plugins/jqueryflot/README.md
vendored
Normal file
110
libraries/framework/vendor/plugins/jqueryflot/README.md
vendored
Normal file
@@ -0,0 +1,110 @@
|
||||
# Flot [](https://travis-ci.org/flot/flot)
|
||||
|
||||
## About ##
|
||||
|
||||
Flot is a Javascript plotting library for jQuery.
|
||||
Read more at the website: <http://www.flotcharts.org/>
|
||||
|
||||
Take a look at the the examples in examples/index.html; they should give a good
|
||||
impression of what Flot can do, and the source code of the examples is probably
|
||||
the fastest way to learn how to use Flot.
|
||||
|
||||
|
||||
## Installation ##
|
||||
|
||||
Just include the Javascript file after you've included jQuery.
|
||||
|
||||
Generally, all browsers that support the HTML5 canvas tag are
|
||||
supported.
|
||||
|
||||
For support for Internet Explorer < 9, you can use [Excanvas]
|
||||
[excanvas], a canvas emulator; this is used in the examples bundled
|
||||
with Flot. You just include the excanvas script like this:
|
||||
|
||||
```html
|
||||
<!--[if lte IE 8]><script language="javascript" type="text/javascript" src="excanvas.min.js"></script><![endif]-->
|
||||
```
|
||||
|
||||
If it's not working on your development IE 6.0, check that it has
|
||||
support for VML which Excanvas is relying on. It appears that some
|
||||
stripped down versions used for test environments on virtual machines
|
||||
lack the VML support.
|
||||
|
||||
You can also try using [Flashcanvas][flashcanvas], which uses Flash to
|
||||
do the emulation. Although Flash can be a bit slower to load than VML,
|
||||
if you've got a lot of points, the Flash version can be much faster
|
||||
overall. Flot contains some wrapper code for activating Excanvas which
|
||||
Flashcanvas is compatible with.
|
||||
|
||||
You need at least jQuery 1.2.6, but try at least 1.3.2 for interactive
|
||||
charts because of performance improvements in event handling.
|
||||
|
||||
|
||||
## Basic usage ##
|
||||
|
||||
Create a placeholder div to put the graph in:
|
||||
|
||||
```html
|
||||
<div id="placeholder"></div>
|
||||
```
|
||||
|
||||
You need to set the width and height of this div, otherwise the plot
|
||||
library doesn't know how to scale the graph. You can do it inline like
|
||||
this:
|
||||
|
||||
```html
|
||||
<div id="placeholder" style="width:600px;height:300px"></div>
|
||||
```
|
||||
|
||||
You can also do it with an external stylesheet. Make sure that the
|
||||
placeholder isn't within something with a display:none CSS property -
|
||||
in that case, Flot has trouble measuring label dimensions which
|
||||
results in garbled looks and might have trouble measuring the
|
||||
placeholder dimensions which is fatal (it'll throw an exception).
|
||||
|
||||
Then when the div is ready in the DOM, which is usually on document
|
||||
ready, run the plot function:
|
||||
|
||||
```js
|
||||
$.plot($("#placeholder"), data, options);
|
||||
```
|
||||
|
||||
Here, data is an array of data series and options is an object with
|
||||
settings if you want to customize the plot. Take a look at the
|
||||
examples for some ideas of what to put in or look at the
|
||||
[API reference](API.md). Here's a quick example that'll draw a line
|
||||
from (0, 0) to (1, 1):
|
||||
|
||||
```js
|
||||
$.plot($("#placeholder"), [ [[0, 0], [1, 1]] ], { yaxis: { max: 1 } });
|
||||
```
|
||||
|
||||
The plot function immediately draws the chart and then returns a plot
|
||||
object with a couple of methods.
|
||||
|
||||
|
||||
## What's with the name? ##
|
||||
|
||||
First: it's pronounced with a short o, like "plot". Not like "flawed".
|
||||
|
||||
So "Flot" rhymes with "plot".
|
||||
|
||||
And if you look up "flot" in a Danish-to-English dictionary, some of
|
||||
the words that come up are "good-looking", "attractive", "stylish",
|
||||
"smart", "impressive", "extravagant". One of the main goals with Flot
|
||||
is pretty looks.
|
||||
|
||||
|
||||
## Notes about the examples ##
|
||||
|
||||
In order to have a useful, functional example of time-series plots using time
|
||||
zones, date.js from [timezone-js][timezone-js] (released under the Apache 2.0
|
||||
license) and the [Olson][olson] time zone database (released to the public
|
||||
domain) have been included in the examples directory. They are used in
|
||||
examples/axes-time-zones/index.html.
|
||||
|
||||
|
||||
[excanvas]: http://code.google.com/p/explorercanvas/
|
||||
[flashcanvas]: http://code.google.com/p/flashcanvas/
|
||||
[timezone-js]: https://github.com/mde/timezone-js
|
||||
[olson]: ftp://ftp.iana.org/tz/
|
||||
0
libraries/framework/vendor/plugins/jqueryflot/build.log
vendored
Normal file
0
libraries/framework/vendor/plugins/jqueryflot/build.log
vendored
Normal file
1428
libraries/framework/vendor/plugins/jqueryflot/excanvas.js
vendored
Normal file
1428
libraries/framework/vendor/plugins/jqueryflot/excanvas.js
vendored
Normal file
File diff suppressed because it is too large
Load Diff
1
libraries/framework/vendor/plugins/jqueryflot/excanvas.min.js
vendored
Normal file
1
libraries/framework/vendor/plugins/jqueryflot/excanvas.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
21
libraries/framework/vendor/plugins/jqueryflot/jquery.colorhelpers.min.js
vendored
Normal file
21
libraries/framework/vendor/plugins/jqueryflot/jquery.colorhelpers.min.js
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
/* Plugin for jQuery for working with colors.
|
||||
*
|
||||
* Version 1.1.
|
||||
*
|
||||
* Inspiration from jQuery color animation plugin by John Resig.
|
||||
*
|
||||
* Released under the MIT license by Ole Laursen, October 2009.
|
||||
*
|
||||
* Examples:
|
||||
*
|
||||
* $.color.parse("#fff").scale('rgb', 0.25).add('a', -0.5).toString()
|
||||
* var c = $.color.extract($("#mydiv"), 'background-color');
|
||||
* console.log(c.r, c.g, c.b, c.a);
|
||||
* $.color.make(100, 50, 25, 0.4).toString() // returns "rgba(100,50,25,0.4)"
|
||||
*
|
||||
* Note that .scale() and .add() return the same modified object
|
||||
* instead of making a new one.
|
||||
*
|
||||
* V. 1.1: Fix error handling so e.g. parsing an empty string does
|
||||
* produce a color rather than just crashing.
|
||||
*/(function(e){e.color={},e.color.make=function(t,n,r,i){var s={};return s.r=t||0,s.g=n||0,s.b=r||0,s.a=i!=null?i:1,s.add=function(e,t){for(var n=0;n<e.length;++n)s[e.charAt(n)]+=t;return s.normalize()},s.scale=function(e,t){for(var n=0;n<e.length;++n)s[e.charAt(n)]*=t;return s.normalize()},s.toString=function(){return s.a>=1?"rgb("+[s.r,s.g,s.b].join(",")+")":"rgba("+[s.r,s.g,s.b,s.a].join(",")+")"},s.normalize=function(){function e(e,t,n){return t<e?e:t>n?n:t}return s.r=e(0,parseInt(s.r),255),s.g=e(0,parseInt(s.g),255),s.b=e(0,parseInt(s.b),255),s.a=e(0,s.a,1),s},s.clone=function(){return e.color.make(s.r,s.b,s.g,s.a)},s.normalize()},e.color.extract=function(t,n){var r;do{r=t.css(n).toLowerCase();if(r!=""&&r!="transparent")break;t=t.parent()}while(!e.nodeName(t.get(0),"body"));return r=="rgba(0, 0, 0, 0)"&&(r="transparent"),e.color.parse(r)},e.color.parse=function(n){var r,i=e.color.make;if(r=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(n))return i(parseInt(r[1],10),parseInt(r[2],10),parseInt(r[3],10));if(r=/rgba\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(n))return i(parseInt(r[1],10),parseInt(r[2],10),parseInt(r[3],10),parseFloat(r[4]));if(r=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(n))return i(parseFloat(r[1])*2.55,parseFloat(r[2])*2.55,parseFloat(r[3])*2.55);if(r=/rgba\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(n))return i(parseFloat(r[1])*2.55,parseFloat(r[2])*2.55,parseFloat(r[3])*2.55,parseFloat(r[4]));if(r=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(n))return i(parseInt(r[1],16),parseInt(r[2],16),parseInt(r[3],16));if(r=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(n))return i(parseInt(r[1]+r[1],16),parseInt(r[2]+r[2],16),parseInt(r[3]+r[3],16));var s=e.trim(n).toLowerCase();return s=="transparent"?i(255,255,255,0):(r=t[s]||[0,0,0],i(r[0],r[1],r[2]))};var t={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0]}})(jQuery);
|
||||
28
libraries/framework/vendor/plugins/jqueryflot/jquery.flot.canvas.min.js
vendored
Normal file
28
libraries/framework/vendor/plugins/jqueryflot/jquery.flot.canvas.min.js
vendored
Normal file
@@ -0,0 +1,28 @@
|
||||
/* Flot plugin for drawing all elements of a plot on the canvas.
|
||||
|
||||
Copyright (c) 2007-2013 IOLA and Ole Laursen.
|
||||
Licensed under the MIT license.
|
||||
|
||||
Flot normally produces certain elements, like axis labels and the legend, using
|
||||
HTML elements. This permits greater interactivity and customization, and often
|
||||
looks better, due to cross-browser canvas text inconsistencies and limitations.
|
||||
|
||||
It can also be desirable to render the plot entirely in canvas, particularly
|
||||
if the goal is to save it as an image, or if Flot is being used in a context
|
||||
where the HTML DOM does not exist, as is the case within Node.js. This plugin
|
||||
switches out Flot's standard drawing operations for canvas-only replacements.
|
||||
|
||||
Currently the plugin supports only axis labels, but it will eventually allow
|
||||
every element of the plot to be rendered directly to canvas.
|
||||
|
||||
The plugin supports these options:
|
||||
|
||||
{
|
||||
canvas: boolean
|
||||
}
|
||||
|
||||
The "canvas" option controls whether full canvas drawing is enabled, making it
|
||||
possible to toggle on and off. This is useful when a plot uses HTML text in the
|
||||
browser, but needs to redraw with canvas text when exporting as an image.
|
||||
|
||||
*/(function(e){function o(t,o){var u=o.Canvas;n==null&&(r=u.prototype.getTextInfo,i=u.prototype.addText,n=u.prototype.render),u.prototype.render=function(){if(!t.getOptions().canvas)return n.call(this);var e=this.context,r=this._textCache;e.save(),e.textBaseline="middle";for(var i in r)if(s.call(r,i)){var o=r[i];for(var u in o)if(s.call(o,u)){var a=o[u],f=!0;for(var l in a)if(s.call(a,l)){var c=a[l],h=c.positions,p=c.lines;f&&(e.fillStyle=c.font.color,e.font=c.font.definition,f=!1);for(var d=0,v;v=h[d];d++)if(v.active)for(var m=0,g;g=v.lines[m];m++)e.fillText(p[m].text,g[0],g[1]);else h.splice(d--,1);h.length==0&&delete a[l]}}}e.restore()},u.prototype.getTextInfo=function(n,i,s,o,u){if(!t.getOptions().canvas)return r.call(this,n,i,s,o,u);var a,f,l,c;i=""+i,typeof s=="object"?a=s.style+" "+s.variant+" "+s.weight+" "+s.size+"px "+s.family:a=s,f=this._textCache[n],f==null&&(f=this._textCache[n]={}),l=f[a],l==null&&(l=f[a]={}),c=l[i];if(c==null){var h=this.context;if(typeof s!="object"){var p=e("<div> </div>").css("position","absolute").addClass(typeof s=="string"?s:null).appendTo(this.getTextLayer(n));s={lineHeight:p.height(),style:p.css("font-style"),variant:p.css("font-variant"),weight:p.css("font-weight"),family:p.css("font-family"),color:p.css("color")},s.size=p.css("line-height",1).height(),p.remove()}a=s.style+" "+s.variant+" "+s.weight+" "+s.size+"px "+s.family,c=l[i]={width:0,height:0,positions:[],lines:[],font:{definition:a,color:s.color}},h.save(),h.font=a;var d=(i+"").replace(/<br ?\/?>|\r\n|\r/g,"\n").split("\n");for(var v=0;v<d.length;++v){var m=d[v],g=h.measureText(m);c.width=Math.max(g.width,c.width),c.height+=s.lineHeight,c.lines.push({text:m,width:g.width,height:s.lineHeight})}h.restore()}return c},u.prototype.addText=function(e,n,r,s,o,u,a,f,l){if(!t.getOptions().canvas)return i.call(this,e,n,r,s,o,u,a,f,l);var c=this.getTextInfo(e,s,o,u,a),h=c.positions,p=c.lines;r+=c.height/p.length/2,l=="middle"?r=Math.round(r-c.height/2):l=="bottom"?r=Math.round(r-c.height):r=Math.round(r),!(window.opera&&window.opera.version().split(".")[0]<12)||(r-=2);for(var d=0,v;v=h[d];d++)if(v.x==n&&v.y==r){v.active=!0;return}v={active:!0,lines:[],x:n,y:r},h.push(v);for(var d=0,m;m=p[d];d++)f=="center"?v.lines.push([Math.round(n-m.width/2),r]):f=="right"?v.lines.push([Math.round(n-m.width),r]):v.lines.push([Math.round(n),r]),r+=m.height}}var t={canvas:!0},n,r,i,s=Object.prototype.hasOwnProperty;e.plot.plugins.push({init:o,options:t,name:"canvas",version:"1.0"})})(jQuery);
|
||||
44
libraries/framework/vendor/plugins/jqueryflot/jquery.flot.categories.min.js
vendored
Normal file
44
libraries/framework/vendor/plugins/jqueryflot/jquery.flot.categories.min.js
vendored
Normal file
@@ -0,0 +1,44 @@
|
||||
/* Flot plugin for plotting textual data or categories.
|
||||
|
||||
Copyright (c) 2007-2013 IOLA and Ole Laursen.
|
||||
Licensed under the MIT license.
|
||||
|
||||
Consider a dataset like [["February", 34], ["March", 20], ...]. This plugin
|
||||
allows you to plot such a dataset directly.
|
||||
|
||||
To enable it, you must specify mode: "categories" on the axis with the textual
|
||||
labels, e.g.
|
||||
|
||||
$.plot("#placeholder", data, { xaxis: { mode: "categories" } });
|
||||
|
||||
By default, the labels are ordered as they are met in the data series. If you
|
||||
need a different ordering, you can specify "categories" on the axis options
|
||||
and list the categories there:
|
||||
|
||||
xaxis: {
|
||||
mode: "categories",
|
||||
categories: ["February", "March", "April"]
|
||||
}
|
||||
|
||||
If you need to customize the distances between the categories, you can specify
|
||||
"categories" as an object mapping labels to values
|
||||
|
||||
xaxis: {
|
||||
mode: "categories",
|
||||
categories: { "February": 1, "March": 3, "April": 4 }
|
||||
}
|
||||
|
||||
If you don't specify all categories, the remaining categories will be numbered
|
||||
from the max value plus 1 (with a spacing of 1 between each).
|
||||
|
||||
Internally, the plugin works by transforming the input data through an auto-
|
||||
generated mapping where the first category becomes 0, the second 1, etc.
|
||||
Hence, a point like ["February", 34] becomes [0, 34] internally in Flot (this
|
||||
is visible in hover and click events that return numbers rather than the
|
||||
category labels). The plugin also overrides the tick generator to spit out the
|
||||
categories as ticks instead of the values.
|
||||
|
||||
If you need to map a value back to its label, the mapping is always accessible
|
||||
as "categories" on the axis object, e.g. plot.getAxes().xaxis.categories.
|
||||
|
||||
*/(function(e){function n(e,t,n,r){var i=t.xaxis.options.mode=="categories",s=t.yaxis.options.mode=="categories";if(!i&&!s)return;var o=r.format;if(!o){var u=t;o=[],o.push({x:!0,number:!0,required:!0}),o.push({y:!0,number:!0,required:!0});if(u.bars.show||u.lines.show&&u.lines.fill){var a=!!(u.bars.show&&u.bars.zero||u.lines.show&&u.lines.zero);o.push({y:!0,number:!0,required:!1,defaultValue:0,autoscale:a}),u.bars.horizontal&&(delete o[o.length-1].y,o[o.length-1].x=!0)}r.format=o}for(var f=0;f<o.length;++f)o[f].x&&i&&(o[f].number=!1),o[f].y&&s&&(o[f].number=!1)}function r(e){var t=-1;for(var n in e)e[n]>t&&(t=e[n]);return t+1}function i(e){var t=[];for(var n in e.categories){var r=e.categories[n];r>=e.min&&r<=e.max&&t.push([r,n])}return t.sort(function(e,t){return e[0]-t[0]}),t}function s(t,n,r){if(t[n].options.mode!="categories")return;if(!t[n].categories){var s={},u=t[n].options.categories||{};if(e.isArray(u))for(var a=0;a<u.length;++a)s[u[a]]=a;else for(var f in u)s[f]=u[f];t[n].categories=s}t[n].options.ticks||(t[n].options.ticks=i),o(r,n,t[n].categories)}function o(e,t,n){var i=e.points,s=e.pointsize,o=e.format,u=t.charAt(0),a=r(n);for(var f=0;f<i.length;f+=s){if(i[f]==null)continue;for(var l=0;l<s;++l){var c=i[f+l];if(c==null||!o[l][u])continue;c in n||(n[c]=a,++a),i[f+l]=n[c]}}}function u(e,t,n){s(t,"xaxis",n),s(t,"yaxis",n)}function a(e){e.hooks.processRawData.push(n),e.hooks.processDatapoints.push(u)}var t={xaxis:{categories:null},yaxis:{categories:null}};e.plot.plugins.push({init:a,options:t,name:"categories",version:"1.0"})})(jQuery);
|
||||
59
libraries/framework/vendor/plugins/jqueryflot/jquery.flot.crosshair.min.js
vendored
Normal file
59
libraries/framework/vendor/plugins/jqueryflot/jquery.flot.crosshair.min.js
vendored
Normal file
@@ -0,0 +1,59 @@
|
||||
/* Flot plugin for showing crosshairs when the mouse hovers over the plot.
|
||||
|
||||
Copyright (c) 2007-2013 IOLA and Ole Laursen.
|
||||
Licensed under the MIT license.
|
||||
|
||||
The plugin supports these options:
|
||||
|
||||
crosshair: {
|
||||
mode: null or "x" or "y" or "xy"
|
||||
color: color
|
||||
lineWidth: number
|
||||
}
|
||||
|
||||
Set the mode to one of "x", "y" or "xy". The "x" mode enables a vertical
|
||||
crosshair that lets you trace the values on the x axis, "y" enables a
|
||||
horizontal crosshair and "xy" enables them both. "color" is the color of the
|
||||
crosshair (default is "rgba(170, 0, 0, 0.80)"), "lineWidth" is the width of
|
||||
the drawn lines (default is 1).
|
||||
|
||||
The plugin also adds four public methods:
|
||||
|
||||
- setCrosshair( pos )
|
||||
|
||||
Set the position of the crosshair. Note that this is cleared if the user
|
||||
moves the mouse. "pos" is in coordinates of the plot and should be on the
|
||||
form { x: xpos, y: ypos } (you can use x2/x3/... if you're using multiple
|
||||
axes), which is coincidentally the same format as what you get from a
|
||||
"plothover" event. If "pos" is null, the crosshair is cleared.
|
||||
|
||||
- clearCrosshair()
|
||||
|
||||
Clear the crosshair.
|
||||
|
||||
- lockCrosshair(pos)
|
||||
|
||||
Cause the crosshair to lock to the current location, no longer updating if
|
||||
the user moves the mouse. Optionally supply a position (passed on to
|
||||
setCrosshair()) to move it to.
|
||||
|
||||
Example usage:
|
||||
|
||||
var myFlot = $.plot( $("#graph"), ..., { crosshair: { mode: "x" } } };
|
||||
$("#graph").bind( "plothover", function ( evt, position, item ) {
|
||||
if ( item ) {
|
||||
// Lock the crosshair to the data point being hovered
|
||||
myFlot.lockCrosshair({
|
||||
x: item.datapoint[ 0 ],
|
||||
y: item.datapoint[ 1 ]
|
||||
});
|
||||
} else {
|
||||
// Return normal crosshair operation
|
||||
myFlot.unlockCrosshair();
|
||||
}
|
||||
});
|
||||
|
||||
- unlockCrosshair()
|
||||
|
||||
Free the crosshair to move again after locking it.
|
||||
*/(function(e){function n(e){function n(n){if(t.locked)return;t.x!=-1&&(t.x=-1,e.triggerRedrawOverlay())}function r(n){if(t.locked)return;if(e.getSelection&&e.getSelection()){t.x=-1;return}var r=e.offset();t.x=Math.max(0,Math.min(n.pageX-r.left,e.width())),t.y=Math.max(0,Math.min(n.pageY-r.top,e.height())),e.triggerRedrawOverlay()}var t={x:-1,y:-1,locked:!1};e.setCrosshair=function(r){if(!r)t.x=-1;else{var i=e.p2c(r);t.x=Math.max(0,Math.min(i.left,e.width())),t.y=Math.max(0,Math.min(i.top,e.height()))}e.triggerRedrawOverlay()},e.clearCrosshair=e.setCrosshair,e.lockCrosshair=function(r){r&&e.setCrosshair(r),t.locked=!0},e.unlockCrosshair=function(){t.locked=!1},e.hooks.bindEvents.push(function(e,t){if(!e.getOptions().crosshair.mode)return;t.mouseout(n),t.mousemove(r)}),e.hooks.drawOverlay.push(function(e,n){var r=e.getOptions().crosshair;if(!r.mode)return;var i=e.getPlotOffset();n.save(),n.translate(i.left,i.top);if(t.x!=-1){var s=e.getOptions().crosshair.lineWidth%2===0?0:.5;n.strokeStyle=r.color,n.lineWidth=r.lineWidth,n.lineJoin="round",n.beginPath();if(r.mode.indexOf("x")!=-1){var o=Math.round(t.x)+s;n.moveTo(o,0),n.lineTo(o,e.height())}if(r.mode.indexOf("y")!=-1){var u=Math.round(t.y)+s;n.moveTo(0,u),n.lineTo(e.width(),u)}n.stroke()}n.restore()}),e.hooks.shutdown.push(function(e,t){t.unbind("mouseout",n),t.unbind("mousemove",r)})}var t={crosshair:{mode:null,color:"rgba(170, 0, 0, 0.80)",lineWidth:1}};e.plot.plugins.push({init:n,options:t,name:"crosshair",version:"1.0"})})(jQuery);
|
||||
63
libraries/framework/vendor/plugins/jqueryflot/jquery.flot.errorbars.min.js
vendored
Normal file
63
libraries/framework/vendor/plugins/jqueryflot/jquery.flot.errorbars.min.js
vendored
Normal file
@@ -0,0 +1,63 @@
|
||||
/* Flot plugin for plotting error bars.
|
||||
|
||||
Copyright (c) 2007-2013 IOLA and Ole Laursen.
|
||||
Licensed under the MIT license.
|
||||
|
||||
Error bars are used to show standard deviation and other statistical
|
||||
properties in a plot.
|
||||
|
||||
* Created by Rui Pereira - rui (dot) pereira (at) gmail (dot) com
|
||||
|
||||
This plugin allows you to plot error-bars over points. Set "errorbars" inside
|
||||
the points series to the axis name over which there will be error values in
|
||||
your data array (*even* if you do not intend to plot them later, by setting
|
||||
"show: null" on xerr/yerr).
|
||||
|
||||
The plugin supports these options:
|
||||
|
||||
series: {
|
||||
points: {
|
||||
errorbars: "x" or "y" or "xy",
|
||||
xerr: {
|
||||
show: null/false or true,
|
||||
asymmetric: null/false or true,
|
||||
upperCap: null or "-" or function,
|
||||
lowerCap: null or "-" or function,
|
||||
color: null or color,
|
||||
radius: null or number
|
||||
},
|
||||
yerr: { same options as xerr }
|
||||
}
|
||||
}
|
||||
|
||||
Each data point array is expected to be of the type:
|
||||
|
||||
"x" [ x, y, xerr ]
|
||||
"y" [ x, y, yerr ]
|
||||
"xy" [ x, y, xerr, yerr ]
|
||||
|
||||
Where xerr becomes xerr_lower,xerr_upper for the asymmetric error case, and
|
||||
equivalently for yerr. Eg., a datapoint for the "xy" case with symmetric
|
||||
error-bars on X and asymmetric on Y would be:
|
||||
|
||||
[ x, y, xerr, yerr_lower, yerr_upper ]
|
||||
|
||||
By default no end caps are drawn. Setting upperCap and/or lowerCap to "-" will
|
||||
draw a small cap perpendicular to the error bar. They can also be set to a
|
||||
user-defined drawing function, with (ctx, x, y, radius) as parameters, as eg.
|
||||
|
||||
function drawSemiCircle( ctx, x, y, radius ) {
|
||||
ctx.beginPath();
|
||||
ctx.arc( x, y, radius, 0, Math.PI, false );
|
||||
ctx.moveTo( x - radius, y );
|
||||
ctx.lineTo( x + radius, y );
|
||||
ctx.stroke();
|
||||
}
|
||||
|
||||
Color and radius both default to the same ones of the points series if not
|
||||
set. The independent radius parameter on xerr/yerr is useful for the case when
|
||||
we may want to add error-bars to a line, without showing the interconnecting
|
||||
points (with radius: 0), and still showing end caps on the error-bars.
|
||||
shadowSize and lineWidth are derived as well from the points series.
|
||||
|
||||
*/(function(e){function n(e,t,n,r){if(!t.points.errorbars)return;var i=[{x:!0,number:!0,required:!0},{y:!0,number:!0,required:!0}],s=t.points.errorbars;if(s=="x"||s=="xy")t.points.xerr.asymmetric?(i.push({x:!0,number:!0,required:!0}),i.push({x:!0,number:!0,required:!0})):i.push({x:!0,number:!0,required:!0});if(s=="y"||s=="xy")t.points.yerr.asymmetric?(i.push({y:!0,number:!0,required:!0}),i.push({y:!0,number:!0,required:!0})):i.push({y:!0,number:!0,required:!0});r.format=i}function r(e,t){var n=e.datapoints.points,r=null,i=null,s=null,o=null,u=e.points.xerr,a=e.points.yerr,f=e.points.errorbars;f=="x"||f=="xy"?u.asymmetric?(r=n[t+2],i=n[t+3],f=="xy"&&(a.asymmetric?(s=n[t+4],o=n[t+5]):s=n[t+4])):(r=n[t+2],f=="xy"&&(a.asymmetric?(s=n[t+3],o=n[t+4]):s=n[t+3])):f=="y"&&(a.asymmetric?(s=n[t+2],o=n[t+3]):s=n[t+2]),i==null&&(i=r),o==null&&(o=s);var l=[r,i,s,o];return u.show||(l[0]=null,l[1]=null),a.show||(l[2]=null,l[3]=null),l}function i(e,t,n){var i=n.datapoints.points,o=n.datapoints.pointsize,u=[n.xaxis,n.yaxis],a=n.points.radius,f=[n.points.xerr,n.points.yerr],l=!1;if(u[0].p2c(u[0].max)<u[0].p2c(u[0].min)){l=!0;var c=f[0].lowerCap;f[0].lowerCap=f[0].upperCap,f[0].upperCap=c}var h=!1;if(u[1].p2c(u[1].min)<u[1].p2c(u[1].max)){h=!0;var c=f[1].lowerCap;f[1].lowerCap=f[1].upperCap,f[1].upperCap=c}for(var p=0;p<n.datapoints.points.length;p+=o){var d=r(n,p);for(var v=0;v<f.length;v++){var m=[u[v].min,u[v].max];if(d[v*f.length]){var g=i[p],y=i[p+1],b=[g,y][v]+d[v*f.length+1],w=[g,y][v]-d[v*f.length];if(f[v].err=="x")if(y>u[1].max||y<u[1].min||b<u[0].min||w>u[0].max)continue;if(f[v].err=="y")if(g>u[0].max||g<u[0].min||b<u[1].min||w>u[1].max)continue;var E=!0,S=!0;b>m[1]&&(E=!1,b=m[1]),w<m[0]&&(S=!1,w=m[0]);if(f[v].err=="x"&&l||f[v].err=="y"&&h){var c=w;w=b,b=c,c=S,S=E,E=c,c=m[0],m[0]=m[1],m[1]=c}g=u[0].p2c(g),y=u[1].p2c(y),b=u[v].p2c(b),w=u[v].p2c(w),m[0]=u[v].p2c(m[0]),m[1]=u[v].p2c(m[1]);var x=f[v].lineWidth?f[v].lineWidth:n.points.lineWidth,T=n.points.shadowSize!=null?n.points.shadowSize:n.shadowSize;if(x>0&&T>0){var N=T/2;t.lineWidth=N,t.strokeStyle="rgba(0,0,0,0.1)",s(t,f[v],g,y,b,w,E,S,a,N+N/2,m),t.strokeStyle="rgba(0,0,0,0.2)",s(t,f[v],g,y,b,w,E,S,a,N/2,m)}t.strokeStyle=f[v].color?f[v].color:n.color,t.lineWidth=x,s(t,f[v],g,y,b,w,E,S,a,0,m)}}}}function s(t,n,r,i,s,u,a,f,l,c,h){i+=c,s+=c,u+=c,n.err=="x"?(s>r+l?o(t,[[s,i],[Math.max(r+l,h[0]),i]]):a=!1,u<r-l?o(t,[[Math.min(r-l,h[1]),i],[u,i]]):f=!1):(s<i-l?o(t,[[r,s],[r,Math.min(i-l,h[0])]]):a=!1,u>i+l?o(t,[[r,Math.max(i+l,h[1])],[r,u]]):f=!1),l=n.radius!=null?n.radius:l,a&&(n.upperCap=="-"?n.err=="x"?o(t,[[s,i-l],[s,i+l]]):o(t,[[r-l,s],[r+l,s]]):e.isFunction(n.upperCap)&&(n.err=="x"?n.upperCap(t,s,i,l):n.upperCap(t,r,s,l))),f&&(n.lowerCap=="-"?n.err=="x"?o(t,[[u,i-l],[u,i+l]]):o(t,[[r-l,u],[r+l,u]]):e.isFunction(n.lowerCap)&&(n.err=="x"?n.lowerCap(t,u,i,l):n.lowerCap(t,r,u,l)))}function o(e,t){e.beginPath(),e.moveTo(t[0][0],t[0][1]);for(var n=1;n<t.length;n++)e.lineTo(t[n][0],t[n][1]);e.stroke()}function u(t,n){var r=t.getPlotOffset();n.save(),n.translate(r.left,r.top),e.each(t.getData(),function(e,r){r.points.errorbars&&(r.points.xerr.show||r.points.yerr.show)&&i(t,n,r)}),n.restore()}function a(e){e.hooks.processRawData.push(n),e.hooks.draw.push(u)}var t={series:{points:{errorbars:null,xerr:{err:"x",show:null,asymmetric:null,upperCap:null,lowerCap:null,color:null,radius:null},yerr:{err:"y",show:null,asymmetric:null,upperCap:null,lowerCap:null,color:null,radius:null}}}};e.plot.plugins.push({init:a,options:t,name:"errorbars",version:"1.0"})})(jQuery);
|
||||
30
libraries/framework/vendor/plugins/jqueryflot/jquery.flot.fillbetween.min.js
vendored
Normal file
30
libraries/framework/vendor/plugins/jqueryflot/jquery.flot.fillbetween.min.js
vendored
Normal file
@@ -0,0 +1,30 @@
|
||||
/* Flot plugin for computing bottoms for filled line and bar charts.
|
||||
|
||||
Copyright (c) 2007-2013 IOLA and Ole Laursen.
|
||||
Licensed under the MIT license.
|
||||
|
||||
The case: you've got two series that you want to fill the area between. In Flot
|
||||
terms, you need to use one as the fill bottom of the other. You can specify the
|
||||
bottom of each data point as the third coordinate manually, or you can use this
|
||||
plugin to compute it for you.
|
||||
|
||||
In order to name the other series, you need to give it an id, like this:
|
||||
|
||||
var dataset = [
|
||||
{ data: [ ... ], id: "foo" } , // use default bottom
|
||||
{ data: [ ... ], fillBetween: "foo" }, // use first dataset as bottom
|
||||
];
|
||||
|
||||
$.plot($("#placeholder"), dataset, { lines: { show: true, fill: true }});
|
||||
|
||||
As a convenience, if the id given is a number that doesn't appear as an id in
|
||||
the series, it is interpreted as the index in the array instead (so fillBetween:
|
||||
0 can also mean the first series).
|
||||
|
||||
Internally, the plugin modifies the datapoints in each series. For line series,
|
||||
extra data points might be inserted through interpolation. Note that at points
|
||||
where the bottom line is not defined (due to a null point or start/end of line),
|
||||
the current line will show a gap too. The algorithm comes from the
|
||||
jquery.flot.stack.js plugin, possibly some code could be shared.
|
||||
|
||||
*/(function(e){function n(e){function t(e,t){var n;for(n=0;n<t.length;++n)if(t[n].id===e.fillBetween)return t[n];return typeof e.fillBetween=="number"?e.fillBetween<0||e.fillBetween>=t.length?null:t[e.fillBetween]:null}function n(e,n,r){if(n.fillBetween==null)return;var i=t(n,e.getData());if(!i)return;var s=r.pointsize,o=r.points,u=i.datapoints.pointsize,a=i.datapoints.points,f=[],l,c,h,p,d,v,m=n.lines.show,g=s>2&&r.format[2].y,y=m&&n.lines.steps,b=!0,w=0,E=0,S,x;for(;;){if(w>=o.length)break;S=f.length;if(o[w]==null){for(x=0;x<s;++x)f.push(o[w+x]);w+=s}else if(E>=a.length){if(!m)for(x=0;x<s;++x)f.push(o[w+x]);w+=s}else if(a[E]==null){for(x=0;x<s;++x)f.push(null);b=!0,E+=u}else{l=o[w],c=o[w+1],p=a[E],d=a[E+1],v=0;if(l===p){for(x=0;x<s;++x)f.push(o[w+x]);v=d,w+=s,E+=u}else if(l>p){if(m&&w>0&&o[w-s]!=null){h=c+(o[w-s+1]-c)*(p-l)/(o[w-s]-l),f.push(p),f.push(h);for(x=2;x<s;++x)f.push(o[w+x]);v=d}E+=u}else{if(b&&m){w+=s;continue}for(x=0;x<s;++x)f.push(o[w+x]);m&&E>0&&a[E-u]!=null&&(v=d+(a[E-u+1]-d)*(l-p)/(a[E-u]-p)),w+=s}b=!1,S!==f.length&&g&&(f[S+2]=v)}if(y&&S!==f.length&&S>0&&f[S]!==null&&f[S]!==f[S-s]&&f[S+1]!==f[S-s+1]){for(x=0;x<s;++x)f[S+s+x]=f[S+x];f[S+1]=f[S-s+1]}}r.points=f}e.hooks.processDatapoints.push(n)}var t={series:{fillBetween:null}};e.plot.plugins.push({init:n,options:t,name:"fillbetween",version:"1.0"})})(jQuery);
|
||||
53
libraries/framework/vendor/plugins/jqueryflot/jquery.flot.image.min.js
vendored
Normal file
53
libraries/framework/vendor/plugins/jqueryflot/jquery.flot.image.min.js
vendored
Normal file
@@ -0,0 +1,53 @@
|
||||
/* Flot plugin for plotting images.
|
||||
|
||||
Copyright (c) 2007-2013 IOLA and Ole Laursen.
|
||||
Licensed under the MIT license.
|
||||
|
||||
The data syntax is [ [ image, x1, y1, x2, y2 ], ... ] where (x1, y1) and
|
||||
(x2, y2) are where you intend the two opposite corners of the image to end up
|
||||
in the plot. Image must be a fully loaded Javascript image (you can make one
|
||||
with new Image()). If the image is not complete, it's skipped when plotting.
|
||||
|
||||
There are two helpers included for retrieving images. The easiest work the way
|
||||
that you put in URLs instead of images in the data, like this:
|
||||
|
||||
[ "myimage.png", 0, 0, 10, 10 ]
|
||||
|
||||
Then call $.plot.image.loadData( data, options, callback ) where data and
|
||||
options are the same as you pass in to $.plot. This loads the images, replaces
|
||||
the URLs in the data with the corresponding images and calls "callback" when
|
||||
all images are loaded (or failed loading). In the callback, you can then call
|
||||
$.plot with the data set. See the included example.
|
||||
|
||||
A more low-level helper, $.plot.image.load(urls, callback) is also included.
|
||||
Given a list of URLs, it calls callback with an object mapping from URL to
|
||||
Image object when all images are loaded or have failed loading.
|
||||
|
||||
The plugin supports these options:
|
||||
|
||||
series: {
|
||||
images: {
|
||||
show: boolean
|
||||
anchor: "corner" or "center"
|
||||
alpha: [ 0, 1 ]
|
||||
}
|
||||
}
|
||||
|
||||
They can be specified for a specific series:
|
||||
|
||||
$.plot( $("#placeholder"), [{
|
||||
data: [ ... ],
|
||||
images: { ... }
|
||||
])
|
||||
|
||||
Note that because the data format is different from usual data points, you
|
||||
can't use images with anything else in a specific data series.
|
||||
|
||||
Setting "anchor" to "center" causes the pixels in the image to be anchored at
|
||||
the corner pixel centers inside of at the pixel corners, effectively letting
|
||||
half a pixel stick out to each side in the plot.
|
||||
|
||||
A possible future direction could be support for tiling for large images (like
|
||||
Google Maps).
|
||||
|
||||
*/(function(e){function n(e,t,n){var r=e.getPlotOffset();if(!n.images||!n.images.show)return;var i=n.datapoints.points,s=n.datapoints.pointsize;for(var o=0;o<i.length;o+=s){var u=i[o],a=i[o+1],f=i[o+2],l=i[o+3],c=i[o+4],h=n.xaxis,p=n.yaxis,d;if(!u||u.width<=0||u.height<=0)continue;a>l&&(d=l,l=a,a=d),f>c&&(d=c,c=f,f=d),n.images.anchor=="center"&&(d=.5*(l-a)/(u.width-1),a-=d,l+=d,d=.5*(c-f)/(u.height-1),f-=d,c+=d);if(a==l||f==c||a>=h.max||l<=h.min||f>=p.max||c<=p.min)continue;var v=0,m=0,g=u.width,y=u.height;a<h.min&&(v+=(g-v)*(h.min-a)/(l-a),a=h.min),l>h.max&&(g+=(g-v)*(h.max-l)/(l-a),l=h.max),f<p.min&&(y+=(m-y)*(p.min-f)/(c-f),f=p.min),c>p.max&&(m+=(m-y)*(p.max-c)/(c-f),c=p.max),a=h.p2c(a),l=h.p2c(l),f=p.p2c(f),c=p.p2c(c),a>l&&(d=l,l=a,a=d),f>c&&(d=c,c=f,f=d),d=t.globalAlpha,t.globalAlpha*=n.images.alpha,t.drawImage(u,v,m,g-v,y-m,a+r.left,f+r.top,l-a,c-f),t.globalAlpha=d}}function r(e,t,n,r){if(!t.images.show)return;r.format=[{required:!0},{x:!0,number:!0,required:!0},{y:!0,number:!0,required:!0},{x:!0,number:!0,required:!0},{y:!0,number:!0,required:!0}]}function i(e){e.hooks.processRawData.push(r),e.hooks.drawSeries.push(n)}var t={series:{images:{show:!1,alpha:1,anchor:"corner"}}};e.plot.image={},e.plot.image.loadDataImages=function(t,n,r){var i=[],s=[],o=n.series.images.show;e.each(t,function(t,n){if(!o&&!n.images.show)return;n.data&&(n=n.data),e.each(n,function(e,t){typeof t[0]=="string"&&(i.push(t[0]),s.push(t))})}),e.plot.image.load(i,function(t){e.each(s,function(e,n){var r=n[0];t[r]&&(n[0]=t[r])}),r()})},e.plot.image.load=function(t,n){var r=t.length,i={};r==0&&n({}),e.each(t,function(t,s){var o=function(){--r,i[s]=this,r==0&&n(i)};e("<img />").load(o).error(o).attr("src",s)})},e.plot.plugins.push({init:i,options:t,name:"image",version:"1.1"})})(jQuery);
|
||||
29
libraries/framework/vendor/plugins/jqueryflot/jquery.flot.min.js
vendored
Normal file
29
libraries/framework/vendor/plugins/jqueryflot/jquery.flot.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
86
libraries/framework/vendor/plugins/jqueryflot/jquery.flot.navigate.min.js
vendored
Normal file
86
libraries/framework/vendor/plugins/jqueryflot/jquery.flot.navigate.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
56
libraries/framework/vendor/plugins/jqueryflot/jquery.flot.pie.min.js
vendored
Normal file
56
libraries/framework/vendor/plugins/jqueryflot/jquery.flot.pie.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
19
libraries/framework/vendor/plugins/jqueryflot/jquery.flot.resize.min.js
vendored
Normal file
19
libraries/framework/vendor/plugins/jqueryflot/jquery.flot.resize.min.js
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
/* Flot plugin for automatically redrawing plots as the placeholder resizes.
|
||||
|
||||
Copyright (c) 2007-2013 IOLA and Ole Laursen.
|
||||
Licensed under the MIT license.
|
||||
|
||||
It works by listening for changes on the placeholder div (through the jQuery
|
||||
resize event plugin) - if the size changes, it will redraw the plot.
|
||||
|
||||
There are no options. If you need to disable the plugin for some plots, you
|
||||
can just fix the size of their placeholders.
|
||||
|
||||
*//* Inline dependency:
|
||||
* jQuery resize event - v1.1 - 3/14/2010
|
||||
* http://benalman.com/projects/jquery-resize-plugin/
|
||||
*
|
||||
* Copyright (c) 2010 "Cowboy" Ben Alman
|
||||
* Dual licensed under the MIT and GPL licenses.
|
||||
* http://benalman.com/about/license/
|
||||
*/(function(e,t,n){function c(){s=t[o](function(){r.each(function(){var t=e(this),n=t.width(),r=t.height(),i=e.data(this,a);(n!==i.w||r!==i.h)&&t.trigger(u,[i.w=n,i.h=r])}),c()},i[f])}var r=e([]),i=e.resize=e.extend(e.resize,{}),s,o="setTimeout",u="resize",a=u+"-special-event",f="delay",l="throttleWindow";i[f]=250,i[l]=!0,e.event.special[u]={setup:function(){if(!i[l]&&this[o])return!1;var t=e(this);r=r.add(t),e.data(this,a,{w:t.width(),h:t.height()}),r.length===1&&c()},teardown:function(){if(!i[l]&&this[o])return!1;var t=e(this);r=r.not(t),t.removeData(a),r.length||clearTimeout(s)},add:function(t){function s(t,i,s){var o=e(this),u=e.data(this,a);u.w=i!==n?i:o.width(),u.h=s!==n?s:o.height(),r.apply(this,arguments)}if(!i[l]&&this[o])return!1;var r;if(e.isFunction(t))return r=t,s;r=t.handler,t.handler=s}}})(jQuery,this),function(e){function n(e){function t(){var t=e.getPlaceholder();if(t.width()==0||t.height()==0)return;e.resize(),e.setupGrid(),e.draw()}function n(e,n){e.getPlaceholder().resize(t)}function r(e,n){e.getPlaceholder().unbind("resize",t)}e.hooks.bindEvents.push(n),e.hooks.shutdown.push(r)}var t={};e.plot.plugins.push({init:n,options:t,name:"resize",version:"1.0"})}(jQuery);
|
||||
79
libraries/framework/vendor/plugins/jqueryflot/jquery.flot.selection.min.js
vendored
Normal file
79
libraries/framework/vendor/plugins/jqueryflot/jquery.flot.selection.min.js
vendored
Normal file
@@ -0,0 +1,79 @@
|
||||
/* Flot plugin for selecting regions of a plot.
|
||||
|
||||
Copyright (c) 2007-2013 IOLA and Ole Laursen.
|
||||
Licensed under the MIT license.
|
||||
|
||||
The plugin supports these options:
|
||||
|
||||
selection: {
|
||||
mode: null or "x" or "y" or "xy",
|
||||
color: color,
|
||||
shape: "round" or "miter" or "bevel",
|
||||
minSize: number of pixels
|
||||
}
|
||||
|
||||
Selection support is enabled by setting the mode to one of "x", "y" or "xy".
|
||||
In "x" mode, the user will only be able to specify the x range, similarly for
|
||||
"y" mode. For "xy", the selection becomes a rectangle where both ranges can be
|
||||
specified. "color" is color of the selection (if you need to change the color
|
||||
later on, you can get to it with plot.getOptions().selection.color). "shape"
|
||||
is the shape of the corners of the selection.
|
||||
|
||||
"minSize" is the minimum size a selection can be in pixels. This value can
|
||||
be customized to determine the smallest size a selection can be and still
|
||||
have the selection rectangle be displayed. When customizing this value, the
|
||||
fact that it refers to pixels, not axis units must be taken into account.
|
||||
Thus, for example, if there is a bar graph in time mode with BarWidth set to 1
|
||||
minute, setting "minSize" to 1 will not make the minimum selection size 1
|
||||
minute, but rather 1 pixel. Note also that setting "minSize" to 0 will prevent
|
||||
"plotunselected" events from being fired when the user clicks the mouse without
|
||||
dragging.
|
||||
|
||||
When selection support is enabled, a "plotselected" event will be emitted on
|
||||
the DOM element you passed into the plot function. The event handler gets a
|
||||
parameter with the ranges selected on the axes, like this:
|
||||
|
||||
placeholder.bind( "plotselected", function( event, ranges ) {
|
||||
alert("You selected " + ranges.xaxis.from + " to " + ranges.xaxis.to)
|
||||
// similar for yaxis - with multiple axes, the extra ones are in
|
||||
// x2axis, x3axis, ...
|
||||
});
|
||||
|
||||
The "plotselected" event is only fired when the user has finished making the
|
||||
selection. A "plotselecting" event is fired during the process with the same
|
||||
parameters as the "plotselected" event, in case you want to know what's
|
||||
happening while it's happening,
|
||||
|
||||
A "plotunselected" event with no arguments is emitted when the user clicks the
|
||||
mouse to remove the selection. As stated above, setting "minSize" to 0 will
|
||||
destroy this behavior.
|
||||
|
||||
The plugin allso adds the following methods to the plot object:
|
||||
|
||||
- setSelection( ranges, preventEvent )
|
||||
|
||||
Set the selection rectangle. The passed in ranges is on the same form as
|
||||
returned in the "plotselected" event. If the selection mode is "x", you
|
||||
should put in either an xaxis range, if the mode is "y" you need to put in
|
||||
an yaxis range and both xaxis and yaxis if the selection mode is "xy", like
|
||||
this:
|
||||
|
||||
setSelection({ xaxis: { from: 0, to: 10 }, yaxis: { from: 40, to: 60 } });
|
||||
|
||||
setSelection will trigger the "plotselected" event when called. If you don't
|
||||
want that to happen, e.g. if you're inside a "plotselected" handler, pass
|
||||
true as the second parameter. If you are using multiple axes, you can
|
||||
specify the ranges on any of those, e.g. as x2axis/x3axis/... instead of
|
||||
xaxis, the plugin picks the first one it sees.
|
||||
|
||||
- clearSelection( preventEvent )
|
||||
|
||||
Clear the selection rectangle. Pass in true to avoid getting a
|
||||
"plotunselected" event.
|
||||
|
||||
- getSelection()
|
||||
|
||||
Returns the current selection in the same format as the "plotselected"
|
||||
event. If there's currently no selection, the function returns null.
|
||||
|
||||
*/(function(e){function t(t){function s(e){n.active&&(h(e),t.getPlaceholder().trigger("plotselecting",[a()]))}function o(t){if(t.which!=1)return;document.body.focus(),document.onselectstart!==undefined&&r.onselectstart==null&&(r.onselectstart=document.onselectstart,document.onselectstart=function(){return!1}),document.ondrag!==undefined&&r.ondrag==null&&(r.ondrag=document.ondrag,document.ondrag=function(){return!1}),c(n.first,t),n.active=!0,i=function(e){u(e)},e(document).one("mouseup",i)}function u(e){return i=null,document.onselectstart!==undefined&&(document.onselectstart=r.onselectstart),document.ondrag!==undefined&&(document.ondrag=r.ondrag),n.active=!1,h(e),m()?f():(t.getPlaceholder().trigger("plotunselected",[]),t.getPlaceholder().trigger("plotselecting",[null])),!1}function a(){if(!m())return null;if(!n.show)return null;var r={},i=n.first,s=n.second;return e.each(t.getAxes(),function(e,t){if(t.used){var n=t.c2p(i[t.direction]),o=t.c2p(s[t.direction]);r[e]={from:Math.min(n,o),to:Math.max(n,o)}}}),r}function f(){var e=a();t.getPlaceholder().trigger("plotselected",[e]),e.xaxis&&e.yaxis&&t.getPlaceholder().trigger("selected",[{x1:e.xaxis.from,y1:e.yaxis.from,x2:e.xaxis.to,y2:e.yaxis.to}])}function l(e,t,n){return t<e?e:t>n?n:t}function c(e,r){var i=t.getOptions(),s=t.getPlaceholder().offset(),o=t.getPlotOffset();e.x=l(0,r.pageX-s.left-o.left,t.width()),e.y=l(0,r.pageY-s.top-o.top,t.height()),i.selection.mode=="y"&&(e.x=e==n.first?0:t.width()),i.selection.mode=="x"&&(e.y=e==n.first?0:t.height())}function h(e){if(e.pageX==null)return;c(n.second,e),m()?(n.show=!0,t.triggerRedrawOverlay()):p(!0)}function p(e){n.show&&(n.show=!1,t.triggerRedrawOverlay(),e||t.getPlaceholder().trigger("plotunselected",[]))}function d(e,n){var r,i,s,o,u=t.getAxes();for(var a in u){r=u[a];if(r.direction==n){o=n+r.n+"axis",!e[o]&&r.n==1&&(o=n+"axis");if(e[o]){i=e[o].from,s=e[o].to;break}}}e[o]||(r=n=="x"?t.getXAxes()[0]:t.getYAxes()[0],i=e[n+"1"],s=e[n+"2"]);if(i!=null&&s!=null&&i>s){var f=i;i=s,s=f}return{from:i,to:s,axis:r}}function v(e,r){var i,s,o=t.getOptions();o.selection.mode=="y"?(n.first.x=0,n.second.x=t.width()):(s=d(e,"x"),n.first.x=s.axis.p2c(s.from),n.second.x=s.axis.p2c(s.to)),o.selection.mode=="x"?(n.first.y=0,n.second.y=t.height()):(s=d(e,"y"),n.first.y=s.axis.p2c(s.from),n.second.y=s.axis.p2c(s.to)),n.show=!0,t.triggerRedrawOverlay(),!r&&m()&&f()}function m(){var e=t.getOptions().selection.minSize;return Math.abs(n.second.x-n.first.x)>=e&&Math.abs(n.second.y-n.first.y)>=e}var n={first:{x:-1,y:-1},second:{x:-1,y:-1},show:!1,active:!1},r={},i=null;t.clearSelection=p,t.setSelection=v,t.getSelection=a,t.hooks.bindEvents.push(function(e,t){var n=e.getOptions();n.selection.mode!=null&&(t.mousemove(s),t.mousedown(o))}),t.hooks.drawOverlay.push(function(t,r){if(n.show&&m()){var i=t.getPlotOffset(),s=t.getOptions();r.save(),r.translate(i.left,i.top);var o=e.color.parse(s.selection.color);r.strokeStyle=o.scale("a",.8).toString(),r.lineWidth=1,r.lineJoin=s.selection.shape,r.fillStyle=o.scale("a",.4).toString();var u=Math.min(n.first.x,n.second.x)+.5,a=Math.min(n.first.y,n.second.y)+.5,f=Math.abs(n.second.x-n.first.x)-1,l=Math.abs(n.second.y-n.first.y)-1;r.fillRect(u,a,f,l),r.strokeRect(u,a,f,l),r.restore()}}),t.hooks.shutdown.push(function(t,n){n.unbind("mousemove",s),n.unbind("mousedown",o),i&&e(document).unbind("mouseup",i)})}e.plot.plugins.push({init:t,options:{selection:{mode:null,color:"#e8cfac",shape:"round",minSize:5}},name:"selection",version:"1.1"})})(jQuery);
|
||||
36
libraries/framework/vendor/plugins/jqueryflot/jquery.flot.stack.min.js
vendored
Normal file
36
libraries/framework/vendor/plugins/jqueryflot/jquery.flot.stack.min.js
vendored
Normal file
@@ -0,0 +1,36 @@
|
||||
/* Flot plugin for stacking data sets rather than overlyaing them.
|
||||
|
||||
Copyright (c) 2007-2013 IOLA and Ole Laursen.
|
||||
Licensed under the MIT license.
|
||||
|
||||
The plugin assumes the data is sorted on x (or y if stacking horizontally).
|
||||
For line charts, it is assumed that if a line has an undefined gap (from a
|
||||
null point), then the line above it should have the same gap - insert zeros
|
||||
instead of "null" if you want another behaviour. This also holds for the start
|
||||
and end of the chart. Note that stacking a mix of positive and negative values
|
||||
in most instances doesn't make sense (so it looks weird).
|
||||
|
||||
Two or more series are stacked when their "stack" attribute is set to the same
|
||||
key (which can be any number or string or just "true"). To specify the default
|
||||
stack, you can set the stack option like this:
|
||||
|
||||
series: {
|
||||
stack: null/false, true, or a key (number/string)
|
||||
}
|
||||
|
||||
You can also specify it for a single series, like this:
|
||||
|
||||
$.plot( $("#placeholder"), [{
|
||||
data: [ ... ],
|
||||
stack: true
|
||||
}])
|
||||
|
||||
The stacking order is determined by the order of the data series in the array
|
||||
(later series end up on top of the previous).
|
||||
|
||||
Internally, the plugin modifies the datapoints in each series, adding an
|
||||
offset to the y value. For line series, extra data points are inserted through
|
||||
interpolation. If there's a second y value, it's also adjusted (e.g for bar
|
||||
charts or filled areas).
|
||||
|
||||
*/(function(e){function n(e){function t(e,t){var n=null;for(var r=0;r<t.length;++r){if(e==t[r])break;t[r].stack==e.stack&&(n=t[r])}return n}function n(e,n,r){if(n.stack==null||n.stack===!1)return;var i=t(n,e.getData());if(!i)return;var s=r.pointsize,o=r.points,u=i.datapoints.pointsize,a=i.datapoints.points,f=[],l,c,h,p,d,v,m=n.lines.show,g=n.bars.horizontal,y=s>2&&(g?r.format[2].x:r.format[2].y),b=m&&n.lines.steps,w=!0,E=g?1:0,S=g?0:1,x=0,T=0,N,C;for(;;){if(x>=o.length)break;N=f.length;if(o[x]==null){for(C=0;C<s;++C)f.push(o[x+C]);x+=s}else if(T>=a.length){if(!m)for(C=0;C<s;++C)f.push(o[x+C]);x+=s}else if(a[T]==null){for(C=0;C<s;++C)f.push(null);w=!0,T+=u}else{l=o[x+E],c=o[x+S],p=a[T+E],d=a[T+S],v=0;if(l==p){for(C=0;C<s;++C)f.push(o[x+C]);f[N+S]+=d,v=d,x+=s,T+=u}else if(l>p){if(m&&x>0&&o[x-s]!=null){h=c+(o[x-s+S]-c)*(p-l)/(o[x-s+E]-l),f.push(p),f.push(h+d);for(C=2;C<s;++C)f.push(o[x+C]);v=d}T+=u}else{if(w&&m){x+=s;continue}for(C=0;C<s;++C)f.push(o[x+C]);m&&T>0&&a[T-u]!=null&&(v=d+(a[T-u+S]-d)*(l-p)/(a[T-u+E]-p)),f[N+S]+=v,x+=s}w=!1,N!=f.length&&y&&(f[N+2]+=v)}if(b&&N!=f.length&&N>0&&f[N]!=null&&f[N]!=f[N-s]&&f[N+1]!=f[N-s+1]){for(C=0;C<s;++C)f[N+s+C]=f[N+C];f[N+1]=f[N-s+1]}}r.points=f}e.hooks.processDatapoints.push(n)}var t={series:{stack:null}};e.plot.plugins.push({init:n,options:t,name:"stack",version:"1.2"})})(jQuery);
|
||||
14
libraries/framework/vendor/plugins/jqueryflot/jquery.flot.symbol.min.js
vendored
Normal file
14
libraries/framework/vendor/plugins/jqueryflot/jquery.flot.symbol.min.js
vendored
Normal file
@@ -0,0 +1,14 @@
|
||||
/* Flot plugin that adds some extra symbols for plotting points.
|
||||
|
||||
Copyright (c) 2007-2013 IOLA and Ole Laursen.
|
||||
Licensed under the MIT license.
|
||||
|
||||
The symbols are accessed as strings through the standard symbol options:
|
||||
|
||||
series: {
|
||||
points: {
|
||||
symbol: "square" // or "diamond", "triangle", "cross"
|
||||
}
|
||||
}
|
||||
|
||||
*/(function(e){function t(e,t,n){var r={square:function(e,t,n,r,i){var s=r*Math.sqrt(Math.PI)/2;e.rect(t-s,n-s,s+s,s+s)},diamond:function(e,t,n,r,i){var s=r*Math.sqrt(Math.PI/2);e.moveTo(t-s,n),e.lineTo(t,n-s),e.lineTo(t+s,n),e.lineTo(t,n+s),e.lineTo(t-s,n)},triangle:function(e,t,n,r,i){var s=r*Math.sqrt(2*Math.PI/Math.sin(Math.PI/3)),o=s*Math.sin(Math.PI/3);e.moveTo(t-s/2,n+o/2),e.lineTo(t+s/2,n+o/2),i||(e.lineTo(t,n-o/2),e.lineTo(t-s/2,n+o/2))},cross:function(e,t,n,r,i){var s=r*Math.sqrt(Math.PI)/2;e.moveTo(t-s,n-s),e.lineTo(t+s,n+s),e.moveTo(t-s,n+s),e.lineTo(t+s,n-s)}},i=t.points.symbol;r[i]&&(t.points.symbol=r[i])}function n(e){e.hooks.processDatapoints.push(t)}e.plot.plugins.push({init:n,name:"symbols",version:"1.0"})})(jQuery);
|
||||
43
libraries/framework/vendor/plugins/jqueryflot/jquery.flot.threshold.min.js
vendored
Normal file
43
libraries/framework/vendor/plugins/jqueryflot/jquery.flot.threshold.min.js
vendored
Normal file
@@ -0,0 +1,43 @@
|
||||
/* Flot plugin for thresholding data.
|
||||
|
||||
Copyright (c) 2007-2013 IOLA and Ole Laursen.
|
||||
Licensed under the MIT license.
|
||||
|
||||
The plugin supports these options:
|
||||
|
||||
series: {
|
||||
threshold: {
|
||||
below: number
|
||||
color: colorspec
|
||||
}
|
||||
}
|
||||
|
||||
It can also be applied to a single series, like this:
|
||||
|
||||
$.plot( $("#placeholder"), [{
|
||||
data: [ ... ],
|
||||
threshold: { ... }
|
||||
}])
|
||||
|
||||
An array can be passed for multiple thresholding, like this:
|
||||
|
||||
threshold: [{
|
||||
below: number1
|
||||
color: color1
|
||||
},{
|
||||
below: number2
|
||||
color: color2
|
||||
}]
|
||||
|
||||
These multiple threshold objects can be passed in any order since they are
|
||||
sorted by the processing function.
|
||||
|
||||
The data points below "below" are drawn with the specified color. This makes
|
||||
it easy to mark points below 0, e.g. for budget data.
|
||||
|
||||
Internally, the plugin works by splitting the data into two series, above and
|
||||
below the threshold. The extra series below the threshold will have its label
|
||||
cleared and the special "originSeries" attribute set to the original series.
|
||||
You may need to check for this in hover events.
|
||||
|
||||
*/(function(e){function n(t){function n(t,n,r,i,s){var o=r.pointsize,u,a,f,l,c,h=e.extend({},n);h.datapoints={points:[],pointsize:o,format:r.format},h.label=null,h.color=s,h.threshold=null,h.originSeries=n,h.data=[];var p=r.points,d=n.lines.show,v=[],m=[],g;for(u=0;u<p.length;u+=o){a=p[u],f=p[u+1],c=l,f<i?l=v:l=m;if(d&&c!=l&&a!=null&&u>0&&p[u-o]!=null){var y=a+(i-f)*(a-p[u-o])/(f-p[u-o+1]);c.push(y),c.push(i);for(g=2;g<o;++g)c.push(p[u+g]);l.push(null),l.push(null);for(g=2;g<o;++g)l.push(p[u+g]);l.push(y),l.push(i);for(g=2;g<o;++g)l.push(p[u+g])}l.push(a),l.push(f);for(g=2;g<o;++g)l.push(p[u+g])}r.points=m,h.datapoints.points=v;if(h.datapoints.points.length>0){var b=e.inArray(n,t.getData());t.getData().splice(b+1,0,h)}}function r(t,r,i){if(!r.threshold)return;r.threshold instanceof Array?(r.threshold.sort(function(e,t){return e.below-t.below}),e(r.threshold).each(function(e,o){n(t,r,i,o.below,o.color)})):n(t,r,i,r.threshold.below,r.threshold.color)}t.hooks.processDatapoints.push(r)}var t={series:{threshold:null}};e.plot.plugins.push({init:n,options:t,name:"threshold",version:"1.2"})})(jQuery);
|
||||
9
libraries/framework/vendor/plugins/jqueryflot/jquery.flot.time.min.js
vendored
Normal file
9
libraries/framework/vendor/plugins/jqueryflot/jquery.flot.time.min.js
vendored
Normal file
@@ -0,0 +1,9 @@
|
||||
/* Pretty handling of time axes.
|
||||
|
||||
Copyright (c) 2007-2013 IOLA and Ole Laursen.
|
||||
Licensed under the MIT license.
|
||||
|
||||
Set axis.mode to "time" to enable. See the section "Time series data" in
|
||||
API.txt for details.
|
||||
|
||||
*/(function(e){function n(e,t){return t*Math.floor(e/t)}function r(e,t,n,r){if(typeof e.strftime=="function")return e.strftime(t);var i=function(e,t){return e=""+e,t=""+(t==null?"0":t),e.length==1?t+e:e},s=[],o=!1,u=e.getHours(),a=u<12;n==null&&(n=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]),r==null&&(r=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]);var f;u>12?f=u-12:u==0?f=12:f=u;for(var l=0;l<t.length;++l){var c=t.charAt(l);if(o){switch(c){case"a":c=""+r[e.getDay()];break;case"b":c=""+n[e.getMonth()];break;case"d":c=i(e.getDate());break;case"e":c=i(e.getDate()," ");break;case"h":case"H":c=i(u);break;case"I":c=i(f);break;case"l":c=i(f," ");break;case"m":c=i(e.getMonth()+1);break;case"M":c=i(e.getMinutes());break;case"q":c=""+(Math.floor(e.getMonth()/3)+1);break;case"S":c=i(e.getSeconds());break;case"y":c=i(e.getFullYear()%100);break;case"Y":c=""+e.getFullYear();break;case"p":c=a?"am":"pm";break;case"P":c=a?"AM":"PM";break;case"w":c=""+e.getDay()}s.push(c),o=!1}else c=="%"?o=!0:s.push(c)}return s.join("")}function i(e){function t(e,t,n,r){e[t]=function(){return n[r].apply(n,arguments)}}var n={date:e};e.strftime!=undefined&&t(n,"strftime",e,"strftime"),t(n,"getTime",e,"getTime"),t(n,"setTime",e,"setTime");var r=["Date","Day","FullYear","Hours","Milliseconds","Minutes","Month","Seconds"];for(var i=0;i<r.length;i++)t(n,"get"+r[i],e,"getUTC"+r[i]),t(n,"set"+r[i],e,"setUTC"+r[i]);return n}function s(e,t){if(t.timezone=="browser")return new Date(e);if(!t.timezone||t.timezone=="utc")return i(new Date(e));if(typeof timezoneJS!="undefined"&&typeof timezoneJS.Date!="undefined"){var n=new timezoneJS.Date;return n.setTimezone(t.timezone),n.setTime(e),n}return i(new Date(e))}function l(t){t.hooks.processOptions.push(function(t,i){e.each(t.getAxes(),function(e,t){var i=t.options;i.mode=="time"&&(t.tickGenerator=function(e){var t=[],r=s(e.min,i),u=0,l=i.tickSize&&i.tickSize[1]==="quarter"||i.minTickSize&&i.minTickSize[1]==="quarter"?f:a;i.minTickSize!=null&&(typeof i.tickSize=="number"?u=i.tickSize:u=i.minTickSize[0]*o[i.minTickSize[1]]);for(var c=0;c<l.length-1;++c)if(e.delta<(l[c][0]*o[l[c][1]]+l[c+1][0]*o[l[c+1][1]])/2&&l[c][0]*o[l[c][1]]>=u)break;var h=l[c][0],p=l[c][1];if(p=="year"){if(i.minTickSize!=null&&i.minTickSize[1]=="year")h=Math.floor(i.minTickSize[0]);else{var d=Math.pow(10,Math.floor(Math.log(e.delta/o.year)/Math.LN10)),v=e.delta/o.year/d;v<1.5?h=1:v<3?h=2:v<7.5?h=5:h=10,h*=d}h<1&&(h=1)}e.tickSize=i.tickSize||[h,p];var m=e.tickSize[0];p=e.tickSize[1];var g=m*o[p];p=="second"?r.setSeconds(n(r.getSeconds(),m)):p=="minute"?r.setMinutes(n(r.getMinutes(),m)):p=="hour"?r.setHours(n(r.getHours(),m)):p=="month"?r.setMonth(n(r.getMonth(),m)):p=="quarter"?r.setMonth(3*n(r.getMonth()/3,m)):p=="year"&&r.setFullYear(n(r.getFullYear(),m)),r.setMilliseconds(0),g>=o.minute&&r.setSeconds(0),g>=o.hour&&r.setMinutes(0),g>=o.day&&r.setHours(0),g>=o.day*4&&r.setDate(1),g>=o.month*2&&r.setMonth(n(r.getMonth(),3)),g>=o.quarter*2&&r.setMonth(n(r.getMonth(),6)),g>=o.year&&r.setMonth(0);var y=0,b=Number.NaN,w;do{w=b,b=r.getTime(),t.push(b);if(p=="month"||p=="quarter")if(m<1){r.setDate(1);var E=r.getTime();r.setMonth(r.getMonth()+(p=="quarter"?3:1));var S=r.getTime();r.setTime(b+y*o.hour+(S-E)*m),y=r.getHours(),r.setHours(0)}else r.setMonth(r.getMonth()+m*(p=="quarter"?3:1));else p=="year"?r.setFullYear(r.getFullYear()+m):r.setTime(b+g)}while(b<e.max&&b!=w);return t},t.tickFormatter=function(e,t){var n=s(e,t.options);if(i.timeformat!=null)return r(n,i.timeformat,i.monthNames,i.dayNames);var u=t.options.tickSize&&t.options.tickSize[1]=="quarter"||t.options.minTickSize&&t.options.minTickSize[1]=="quarter",a=t.tickSize[0]*o[t.tickSize[1]],f=t.max-t.min,l=i.twelveHourClock?" %p":"",c=i.twelveHourClock?"%I":"%H",h;a<o.minute?h=c+":%M:%S"+l:a<o.day?f<2*o.day?h=c+":%M"+l:h="%b %d "+c+":%M"+l:a<o.month?h="%b %d":u&&a<o.quarter||!u&&a<o.year?f<o.year?h="%b":h="%b %Y":u&&a<o.year?f<o.year?h="Q%q":h="Q%q %Y":h="%Y";var p=r(n,h,i.monthNames,i.dayNames);return p})})})}var t={xaxis:{timezone:null,timeformat:null,twelveHourClock:!1,monthNames:null}},o={second:1e3,minute:6e4,hour:36e5,day:864e5,month:2592e6,quarter:7776e6,year:525949.2*60*1e3},u=[[1,"second"],[2,"second"],[5,"second"],[10,"second"],[30,"second"],[1,"minute"],[2,"minute"],[5,"minute"],[10,"minute"],[30,"minute"],[1,"hour"],[2,"hour"],[4,"hour"],[8,"hour"],[12,"hour"],[1,"day"],[2,"day"],[3,"day"],[.25,"month"],[.5,"month"],[1,"month"],[2,"month"]],a=u.concat([[3,"month"],[6,"month"],[1,"year"]]),f=u.concat([[1,"quarter"],[2,"quarter"],[1,"year"]]);e.plot.plugins.push({init:l,options:t,name:"time",version:"1.0"}),e.plot.formatDate=r})(jQuery);
|
||||
12
libraries/framework/vendor/plugins/jqueryflot/jquery.flot.tooltip.min.js
vendored
Normal file
12
libraries/framework/vendor/plugins/jqueryflot/jquery.flot.tooltip.min.js
vendored
Normal file
@@ -0,0 +1,12 @@
|
||||
/*
|
||||
* jquery.flot.tooltip
|
||||
*
|
||||
* description: easy-to-use tooltips for Flot charts
|
||||
* version: 0.6.2
|
||||
* author: Krzysztof Urbas @krzysu [myviews.pl]
|
||||
* website: https://github.com/krzysu/flot.tooltip
|
||||
*
|
||||
* build on 2013-11-18
|
||||
* released under MIT License, 2012
|
||||
*/
|
||||
!function(a){var b={tooltip:!1,tooltipOpts:{content:"%s | X: %x | Y: %y",xDateFormat:null,yDateFormat:null,shifts:{x:10,y:20},defaultTheme:!0,onHover:function(){}}},c=function(a){this.tipPosition={x:0,y:0},this.init(a)};c.prototype.init=function(b){function c(a){var b={};b.x=a.pageX,b.y=a.pageY,e.updateTooltipPosition(b)}function d(a,b,c){var d=e.getDomElement();if(c){var f;f=e.stringFormat(e.tooltipOptions.content,c),d.html(f),e.updateTooltipPosition({x:b.pageX,y:b.pageY}),d.css({left:e.tipPosition.x+e.tooltipOptions.shifts.x,top:e.tipPosition.y+e.tooltipOptions.shifts.y}).show(),"function"==typeof e.tooltipOptions.onHover&&e.tooltipOptions.onHover(c,d)}else d.hide().html("")}var e=this;b.hooks.bindEvents.push(function(b,f){if(e.plotOptions=b.getOptions(),e.plotOptions.tooltip!==!1&&"undefined"!=typeof e.plotOptions.tooltip){e.tooltipOptions=e.plotOptions.tooltipOpts;{e.getDomElement()}a(b.getPlaceholder()).bind("plothover",d),a(f).bind("mousemove",c)}}),b.hooks.shutdown.push(function(b,e){a(b.getPlaceholder()).unbind("plothover",d),a(e).unbind("mousemove",c)})},c.prototype.getDomElement=function(){var b;return a("#flotTip").length>0?b=a("#flotTip"):(b=a("<div />").attr("id","flotTip"),b.appendTo("body").hide().css({position:"absolute"}),this.tooltipOptions.defaultTheme&&b.css({background:"#fff","z-index":"100",padding:"0.4em 0.6em","border-radius":"0.5em","font-size":"0.8em",border:"1px solid #111",display:"none","white-space":"nowrap"})),b},c.prototype.updateTooltipPosition=function(b){var c=a("#flotTip").outerWidth()+this.tooltipOptions.shifts.x,d=a("#flotTip").outerHeight()+this.tooltipOptions.shifts.y;b.x-a(window).scrollLeft()>a(window).innerWidth()-c&&(b.x-=c),b.y-a(window).scrollTop()>a(window).innerHeight()-d&&(b.y-=d),this.tipPosition.x=b.x,this.tipPosition.y=b.y},c.prototype.stringFormat=function(a,b){var c=/%p\.{0,1}(\d{0,})/,d=/%s/,e=/%x\.{0,1}(?:\d{0,})/,f=/%y\.{0,1}(?:\d{0,})/,g=b.datapoint[0],h=b.datapoint[1];return"function"==typeof a&&(a=a(b.series.label,g,h,b)),"undefined"!=typeof b.series.percent&&(a=this.adjustValPrecision(c,a,b.series.percent)),"undefined"!=typeof b.series.label&&(a=a.replace(d,b.series.label)),this.isTimeMode("xaxis",b)&&this.isXDateFormat(b)&&(a=a.replace(e,this.timestampToDate(g,this.tooltipOptions.xDateFormat))),this.isTimeMode("yaxis",b)&&this.isYDateFormat(b)&&(a=a.replace(f,this.timestampToDate(h,this.tooltipOptions.yDateFormat))),"number"==typeof g&&(a=this.adjustValPrecision(e,a,g)),"number"==typeof h&&(a=this.adjustValPrecision(f,a,h)),"undefined"!=typeof b.series.xaxis.tickFormatter&&(a=a.replace(e,b.series.xaxis.tickFormatter(g,b.series.xaxis))),"undefined"!=typeof b.series.yaxis.tickFormatter&&(a=a.replace(f,b.series.yaxis.tickFormatter(h,b.series.yaxis))),a},c.prototype.isTimeMode=function(a,b){return"undefined"!=typeof b.series[a].options.mode&&"time"===b.series[a].options.mode},c.prototype.isXDateFormat=function(){return"undefined"!=typeof this.tooltipOptions.xDateFormat&&null!==this.tooltipOptions.xDateFormat},c.prototype.isYDateFormat=function(){return"undefined"!=typeof this.tooltipOptions.yDateFormat&&null!==this.tooltipOptions.yDateFormat},c.prototype.timestampToDate=function(b,c){var d=new Date(b);return a.plot.formatDate(d,c)},c.prototype.adjustValPrecision=function(a,b,c){var d,e=b.match(a);return null!==e&&""!==RegExp.$1&&(d=RegExp.$1,c=c.toFixed(d),b=b.replace(a,c)),b};var d=function(a){new c(a)};a.plot.plugins.push({init:d,options:b,name:"tooltip",version:"0.6.1"})}(jQuery);
|
||||
Reference in New Issue
Block a user