jqplot_rails 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (377) hide show
  1. data/CHANGELOG.rdoc +2 -0
  2. data/LICENSE +0 -0
  3. data/README.rdoc +1 -0
  4. data/files/dist/MIT-LICENSE.txt +21 -0
  5. data/files/dist/README.txt +77 -0
  6. data/files/dist/changes.txt +395 -0
  7. data/files/dist/copyright.txt +56 -0
  8. data/files/dist/docs/files/MIT-LICENSE-txt.html +39 -0
  9. data/files/dist/docs/files/changes-txt.html +39 -0
  10. data/files/dist/docs/files/gpl-2-0-txt.html +39 -0
  11. data/files/dist/docs/files/images/background.jpg +0 -0
  12. data/files/dist/docs/files/images/basicline.png +0 -0
  13. data/files/dist/docs/files/images/basiclogaxis.png +0 -0
  14. data/files/dist/docs/files/images/basiclogoptions.png +0 -0
  15. data/files/dist/docs/files/images/basicoptions.png +0 -0
  16. data/files/dist/docs/files/images/dualaxis.png +0 -0
  17. data/files/dist/docs/files/images/logo.jpg +0 -0
  18. data/files/dist/docs/files/images/navdocs.png +0 -0
  19. data/files/dist/docs/files/images/navdocsover.png +0 -0
  20. data/files/dist/docs/files/images/navdownload.png +0 -0
  21. data/files/dist/docs/files/images/navdownloadover.png +0 -0
  22. data/files/dist/docs/files/images/navexamples.png +0 -0
  23. data/files/dist/docs/files/images/navexamplesover.png +0 -0
  24. data/files/dist/docs/files/images/navhome.png +0 -0
  25. data/files/dist/docs/files/images/navhomeover.png +0 -0
  26. data/files/dist/docs/files/images/new.png +0 -0
  27. data/files/dist/docs/files/images/sample3.png +0 -0
  28. data/files/dist/docs/files/images/samplesm.png +0 -0
  29. data/files/dist/docs/files/jqPlotCssStyling-txt.html +39 -0
  30. data/files/dist/docs/files/jqPlotOptions-txt.html +292 -0
  31. data/files/dist/docs/files/jqplot-axisLabelRenderer-js.html +47 -0
  32. data/files/dist/docs/files/jqplot-axisTickRenderer-js.html +71 -0
  33. data/files/dist/docs/files/jqplot-canvasGridRenderer-js.html +39 -0
  34. data/files/dist/docs/files/jqplot-core-js.html +385 -0
  35. data/files/dist/docs/files/jqplot-divTitleRenderer-js.html +39 -0
  36. data/files/dist/docs/files/jqplot-lineRenderer-js.html +69 -0
  37. data/files/dist/docs/files/jqplot-linearAxisRenderer-js.html +61 -0
  38. data/files/dist/docs/files/jqplot-markerRenderer-js.html +65 -0
  39. data/files/dist/docs/files/jqplot-shadowRenderer-js.html +61 -0
  40. data/files/dist/docs/files/jqplot-shapeRenderer-js.html +65 -0
  41. data/files/dist/docs/files/jqplot-themeEngine-js.html +191 -0
  42. data/files/dist/docs/files/jqplot-toImage-js.html +39 -0
  43. data/files/dist/docs/files/optionsTutorial-txt.html +120 -0
  44. data/files/dist/docs/files/plugins/jqplot-BezierCurveRenderer-js.html +45 -0
  45. data/files/dist/docs/files/plugins/jqplot-barRenderer-js.html +69 -0
  46. data/files/dist/docs/files/plugins/jqplot-blockRenderer-js.html +53 -0
  47. data/files/dist/docs/files/plugins/jqplot-bubbleRenderer-js.html +71 -0
  48. data/files/dist/docs/files/plugins/jqplot-canvasAxisLabelRenderer-js.html +63 -0
  49. data/files/dist/docs/files/plugins/jqplot-canvasAxisTickRenderer-js.html +79 -0
  50. data/files/dist/docs/files/plugins/jqplot-canvasOverlay-js.html +113 -0
  51. data/files/dist/docs/files/plugins/jqplot-categoryAxisRenderer-js.html +46 -0
  52. data/files/dist/docs/files/plugins/jqplot-ciParser-js.html +39 -0
  53. data/files/dist/docs/files/plugins/jqplot-cursor-js.html +93 -0
  54. data/files/dist/docs/files/plugins/jqplot-dateAxisRenderer-js.html +101 -0
  55. data/files/dist/docs/files/plugins/jqplot-donutRenderer-js.html +98 -0
  56. data/files/dist/docs/files/plugins/jqplot-dragable-js.html +45 -0
  57. data/files/dist/docs/files/plugins/jqplot-enhancedLegendRenderer-js.html +49 -0
  58. data/files/dist/docs/files/plugins/jqplot-funnelRenderer-js.html +87 -0
  59. data/files/dist/docs/files/plugins/jqplot-highlighter-js.html +80 -0
  60. data/files/dist/docs/files/plugins/jqplot-logAxisRenderer-js.html +47 -0
  61. data/files/dist/docs/files/plugins/jqplot-mekkoAxisRenderer-js.html +49 -0
  62. data/files/dist/docs/files/plugins/jqplot-mekkoRenderer-js.html +62 -0
  63. data/files/dist/docs/files/plugins/jqplot-meterGaugeRenderer-js.html +103 -0
  64. data/files/dist/docs/files/plugins/jqplot-ohlcRenderer-js.html +65 -0
  65. data/files/dist/docs/files/plugins/jqplot-pieRenderer-js.html +93 -0
  66. data/files/dist/docs/files/plugins/jqplot-pointLabels-js.html +72 -0
  67. data/files/dist/docs/files/plugins/jqplot-pyramidAxisRenderer-js.html +49 -0
  68. data/files/dist/docs/files/plugins/jqplot-pyramidGridRenderer-js.html +39 -0
  69. data/files/dist/docs/files/plugins/jqplot-pyramidRenderer-js.html +53 -0
  70. data/files/dist/docs/files/plugins/jqplot-trendline-js.html +67 -0
  71. data/files/dist/docs/files/usage-txt.html +58 -0
  72. data/files/dist/docs/index/Classes.html +70 -0
  73. data/files/dist/docs/index/Files.html +34 -0
  74. data/files/dist/docs/index/Functions.html +66 -0
  75. data/files/dist/docs/index/General.html +42 -0
  76. data/files/dist/docs/index/General2.html +42 -0
  77. data/files/dist/docs/index/General3.html +42 -0
  78. data/files/dist/docs/index/General4.html +46 -0
  79. data/files/dist/docs/index/General5.html +46 -0
  80. data/files/dist/docs/index/General6.html +34 -0
  81. data/files/dist/docs/index/General7.html +58 -0
  82. data/files/dist/docs/index/Hooks.html +46 -0
  83. data/files/dist/docs/index/Properties.html +42 -0
  84. data/files/dist/docs/index/Properties2.html +42 -0
  85. data/files/dist/docs/index/Properties3.html +46 -0
  86. data/files/dist/docs/index/Properties4.html +50 -0
  87. data/files/dist/docs/index/Properties5.html +34 -0
  88. data/files/dist/docs/index/Properties6.html +58 -0
  89. data/files/dist/docs/index.html +1 -0
  90. data/files/dist/docs/javascript/main.js +836 -0
  91. data/files/dist/docs/javascript/searchdata.js +182 -0
  92. data/files/dist/docs/search/ClassesA.html +20 -0
  93. data/files/dist/docs/search/ClassesD.html +20 -0
  94. data/files/dist/docs/search/ClassesG.html +20 -0
  95. data/files/dist/docs/search/ClassesH.html +20 -0
  96. data/files/dist/docs/search/ClassesJ.html +20 -0
  97. data/files/dist/docs/search/ClassesL.html +20 -0
  98. data/files/dist/docs/search/ClassesS.html +20 -0
  99. data/files/dist/docs/search/ClassesSymbols.html +20 -0
  100. data/files/dist/docs/search/ClassesT.html +20 -0
  101. data/files/dist/docs/search/ClassesV.html +20 -0
  102. data/files/dist/docs/search/FilesJ.html +20 -0
  103. data/files/dist/docs/search/FunctionsC.html +20 -0
  104. data/files/dist/docs/search/FunctionsD.html +20 -0
  105. data/files/dist/docs/search/FunctionsG.html +20 -0
  106. data/files/dist/docs/search/FunctionsI.html +20 -0
  107. data/files/dist/docs/search/FunctionsM.html +20 -0
  108. data/files/dist/docs/search/FunctionsN.html +20 -0
  109. data/files/dist/docs/search/FunctionsR.html +20 -0
  110. data/files/dist/docs/search/FunctionsS.html +20 -0
  111. data/files/dist/docs/search/FunctionsZ.html +20 -0
  112. data/files/dist/docs/search/GeneralA.html +20 -0
  113. data/files/dist/docs/search/GeneralB.html +20 -0
  114. data/files/dist/docs/search/GeneralC.html +20 -0
  115. data/files/dist/docs/search/GeneralD.html +20 -0
  116. data/files/dist/docs/search/GeneralE.html +20 -0
  117. data/files/dist/docs/search/GeneralF.html +20 -0
  118. data/files/dist/docs/search/GeneralG.html +20 -0
  119. data/files/dist/docs/search/GeneralH.html +20 -0
  120. data/files/dist/docs/search/GeneralI.html +20 -0
  121. data/files/dist/docs/search/GeneralJ.html +20 -0
  122. data/files/dist/docs/search/GeneralL.html +20 -0
  123. data/files/dist/docs/search/GeneralM.html +20 -0
  124. data/files/dist/docs/search/GeneralN.html +20 -0
  125. data/files/dist/docs/search/GeneralO.html +20 -0
  126. data/files/dist/docs/search/GeneralP.html +20 -0
  127. data/files/dist/docs/search/GeneralR.html +20 -0
  128. data/files/dist/docs/search/GeneralS.html +20 -0
  129. data/files/dist/docs/search/GeneralSymbols.html +20 -0
  130. data/files/dist/docs/search/GeneralT.html +20 -0
  131. data/files/dist/docs/search/GeneralU.html +20 -0
  132. data/files/dist/docs/search/GeneralV.html +20 -0
  133. data/files/dist/docs/search/GeneralW.html +20 -0
  134. data/files/dist/docs/search/GeneralX.html +20 -0
  135. data/files/dist/docs/search/GeneralY.html +20 -0
  136. data/files/dist/docs/search/GeneralZ.html +20 -0
  137. data/files/dist/docs/search/HooksA.html +20 -0
  138. data/files/dist/docs/search/HooksE.html +20 -0
  139. data/files/dist/docs/search/HooksJ.html +20 -0
  140. data/files/dist/docs/search/HooksP.html +20 -0
  141. data/files/dist/docs/search/NoResults.html +15 -0
  142. data/files/dist/docs/search/PropertiesA.html +20 -0
  143. data/files/dist/docs/search/PropertiesB.html +20 -0
  144. data/files/dist/docs/search/PropertiesC.html +20 -0
  145. data/files/dist/docs/search/PropertiesD.html +20 -0
  146. data/files/dist/docs/search/PropertiesE.html +20 -0
  147. data/files/dist/docs/search/PropertiesF.html +20 -0
  148. data/files/dist/docs/search/PropertiesG.html +20 -0
  149. data/files/dist/docs/search/PropertiesH.html +20 -0
  150. data/files/dist/docs/search/PropertiesI.html +20 -0
  151. data/files/dist/docs/search/PropertiesL.html +20 -0
  152. data/files/dist/docs/search/PropertiesM.html +20 -0
  153. data/files/dist/docs/search/PropertiesN.html +20 -0
  154. data/files/dist/docs/search/PropertiesO.html +20 -0
  155. data/files/dist/docs/search/PropertiesP.html +20 -0
  156. data/files/dist/docs/search/PropertiesR.html +20 -0
  157. data/files/dist/docs/search/PropertiesS.html +20 -0
  158. data/files/dist/docs/search/PropertiesT.html +20 -0
  159. data/files/dist/docs/search/PropertiesU.html +20 -0
  160. data/files/dist/docs/search/PropertiesV.html +20 -0
  161. data/files/dist/docs/search/PropertiesW.html +20 -0
  162. data/files/dist/docs/search/PropertiesX.html +20 -0
  163. data/files/dist/docs/search/PropertiesY.html +20 -0
  164. data/files/dist/docs/search/PropertiesZ.html +20 -0
  165. data/files/dist/docs/styles/1.css +767 -0
  166. data/files/dist/docs/styles/2.css +174 -0
  167. data/files/dist/docs/styles/main.css +2 -0
  168. data/files/dist/examples/KCPsample4.csv +25 -0
  169. data/files/dist/examples/ajax-loader.gif +0 -0
  170. data/files/dist/examples/area.html +139 -0
  171. data/files/dist/examples/axisLabelTests.html +157 -0
  172. data/files/dist/examples/axisLabelsRotatedText.html +229 -0
  173. data/files/dist/examples/axisScalingForceTickAt.html +242 -0
  174. data/files/dist/examples/bandedLine.html +310 -0
  175. data/files/dist/examples/bar-charts.html +219 -0
  176. data/files/dist/examples/barLineAnimated.html +165 -0
  177. data/files/dist/examples/barTest.html +299 -0
  178. data/files/dist/examples/bezierCurve.html +125 -0
  179. data/files/dist/examples/blockPlot.html +197 -0
  180. data/files/dist/examples/bubble-plots.html +213 -0
  181. data/files/dist/examples/bubbleChart.html +264 -0
  182. data/files/dist/examples/candlestick-charts.html +209 -0
  183. data/files/dist/examples/candlestick.html +322 -0
  184. data/files/dist/examples/cursor-highlighter.html +137 -0
  185. data/files/dist/examples/customHighlighterCursorTrendline.html +104 -0
  186. data/files/dist/examples/dashboardWidget.html +212 -0
  187. data/files/dist/examples/dashedLines.html +227 -0
  188. data/files/dist/examples/data-renderers.html +144 -0
  189. data/files/dist/examples/date-axes.html +107 -0
  190. data/files/dist/examples/dateAxisLogAxisZooming.html +105 -0
  191. data/files/dist/examples/dateAxisRenderer.html +292 -0
  192. data/files/dist/examples/example.js +114 -0
  193. data/files/dist/examples/example.min.js +1 -0
  194. data/files/dist/examples/examples.css +135 -0
  195. data/files/dist/examples/examples.min.css +1 -0
  196. data/files/dist/examples/fillBetweenLines.html +134 -0
  197. data/files/dist/examples/hiddenPlotsInTabs.html +225 -0
  198. data/files/dist/examples/images/logo.jpg +0 -0
  199. data/files/dist/examples/index.html +100 -0
  200. data/files/dist/examples/jquery-ui/css/ui-lightness/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  201. data/files/dist/examples/jquery-ui/css/ui-lightness/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  202. data/files/dist/examples/jquery-ui/css/ui-lightness/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  203. data/files/dist/examples/jquery-ui/css/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  204. data/files/dist/examples/jquery-ui/css/ui-lightness/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  205. data/files/dist/examples/jquery-ui/css/ui-lightness/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  206. data/files/dist/examples/jquery-ui/css/ui-lightness/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  207. data/files/dist/examples/jquery-ui/css/ui-lightness/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  208. data/files/dist/examples/jquery-ui/css/ui-lightness/images/ui-icons_222222_256x240.png +0 -0
  209. data/files/dist/examples/jquery-ui/css/ui-lightness/images/ui-icons_2e83ff_256x240.png +0 -0
  210. data/files/dist/examples/jquery-ui/css/ui-lightness/images/ui-icons_454545_256x240.png +0 -0
  211. data/files/dist/examples/jquery-ui/css/ui-lightness/images/ui-icons_888888_256x240.png +0 -0
  212. data/files/dist/examples/jquery-ui/css/ui-lightness/images/ui-icons_cd0a0a_256x240.png +0 -0
  213. data/files/dist/examples/jquery-ui/css/ui-lightness/jquery-ui.css +612 -0
  214. data/files/dist/examples/jquery-ui/css/ui-lightness/jquery-ui.min.css +10 -0
  215. data/files/dist/examples/jquery-ui/js/jquery-ui.min.js +473 -0
  216. data/files/dist/examples/jquery-ui/js/jquery.effects.blind.js +80 -0
  217. data/files/dist/examples/jquery-ui/js/jquery.effects.blind.min.js +14 -0
  218. data/files/dist/examples/jquery-ui/js/jquery.effects.core.js +890 -0
  219. data/files/dist/examples/jquery-ui/js/jquery.effects.core.min.js +32 -0
  220. data/files/dist/examples/jsondata.txt +1 -0
  221. data/files/dist/examples/kcp_area.html +250 -0
  222. data/files/dist/examples/kcp_cdf.html +351 -0
  223. data/files/dist/examples/kcp_engel.html +244 -0
  224. data/files/dist/examples/kcp_lorenz.html +510 -0
  225. data/files/dist/examples/kcp_pdf.html +387 -0
  226. data/files/dist/examples/kcp_pyramid.html +580 -0
  227. data/files/dist/examples/kcp_pyramid2.html +568 -0
  228. data/files/dist/examples/line-charts.html +193 -0
  229. data/files/dist/examples/mekkoCharts.html +269 -0
  230. data/files/dist/examples/meterGauge.html +179 -0
  231. data/files/dist/examples/nav.inc +40 -0
  232. data/files/dist/examples/pie-donut-charts.html +160 -0
  233. data/files/dist/examples/pieTest.html +187 -0
  234. data/files/dist/examples/pieTest2.js +80 -0
  235. data/files/dist/examples/pieTest4.html +258 -0
  236. data/files/dist/examples/point-labels.html +193 -0
  237. data/files/dist/examples/resizablePlot.html +196 -0
  238. data/files/dist/examples/rotated-tick-labels.html +216 -0
  239. data/files/dist/examples/rotatedTickLabelsZoom.html +118 -0
  240. data/files/dist/examples/smoothedLine.html +137 -0
  241. data/files/dist/examples/syntaxhighlighter/LGPL-LICENSE +165 -0
  242. data/files/dist/examples/syntaxhighlighter/MIT-LICENSE +20 -0
  243. data/files/dist/examples/syntaxhighlighter/scripts/shAutoloader.js +17 -0
  244. data/files/dist/examples/syntaxhighlighter/scripts/shAutoloader.min.js +1 -0
  245. data/files/dist/examples/syntaxhighlighter/scripts/shBrushJScript.js +52 -0
  246. data/files/dist/examples/syntaxhighlighter/scripts/shBrushJScript.min.js +1 -0
  247. data/files/dist/examples/syntaxhighlighter/scripts/shBrushXml.js +69 -0
  248. data/files/dist/examples/syntaxhighlighter/scripts/shBrushXml.min.js +1 -0
  249. data/files/dist/examples/syntaxhighlighter/scripts/shCore.js +17 -0
  250. data/files/dist/examples/syntaxhighlighter/scripts/shCore.min.js +1 -0
  251. data/files/dist/examples/syntaxhighlighter/styles/shCore.css +226 -0
  252. data/files/dist/examples/syntaxhighlighter/styles/shCore.min.css +1 -0
  253. data/files/dist/examples/syntaxhighlighter/styles/shCoreDefault.css +328 -0
  254. data/files/dist/examples/syntaxhighlighter/styles/shCoreDefault.min.css +1 -0
  255. data/files/dist/examples/syntaxhighlighter/styles/shThemeDefault.css +117 -0
  256. data/files/dist/examples/syntaxhighlighter/styles/shThemeDefault.min.css +1 -0
  257. data/files/dist/examples/syntaxhighlighter/styles/shThemejqPlot.css +138 -0
  258. data/files/dist/examples/syntaxhighlighter/styles/shThemejqPlot.min.css +1 -0
  259. data/files/dist/examples/theming.html +519 -0
  260. data/files/dist/examples/topbanner.inc +9 -0
  261. data/files/dist/examples/waterfall.html +162 -0
  262. data/files/dist/examples/waterfall2.html +231 -0
  263. data/files/dist/examples/yahooData.js +1807 -0
  264. data/files/dist/examples/yahooData.min.js +1 -0
  265. data/files/dist/examples/zoom1.html +149 -0
  266. data/files/dist/examples/zoomOptions.html +176 -0
  267. data/files/dist/examples/zoomProxy.html +110 -0
  268. data/files/dist/examples/zooming.html +209 -0
  269. data/files/dist/excanvas.js +1438 -0
  270. data/files/dist/excanvas.min.js +57 -0
  271. data/files/dist/gpl-2.0.txt +280 -0
  272. data/files/dist/jqPlotCssStyling.txt +53 -0
  273. data/files/dist/jqPlotOptions.txt +276 -0
  274. data/files/dist/jquery.jqplot.css +259 -0
  275. data/files/dist/jquery.jqplot.js +10901 -0
  276. data/files/dist/jquery.jqplot.min.css +1 -0
  277. data/files/dist/jquery.js +9046 -0
  278. data/files/dist/jquery.min.js +4 -0
  279. data/files/dist/optionsTutorial.txt +240 -0
  280. data/files/dist/plugins/jqplot.BezierCurveRenderer.js +312 -0
  281. data/files/dist/plugins/jqplot.BezierCurveRenderer.min.js +57 -0
  282. data/files/dist/plugins/jqplot.barRenderer.js +747 -0
  283. data/files/dist/plugins/jqplot.barRenderer.min.js +57 -0
  284. data/files/dist/plugins/jqplot.blockRenderer.js +234 -0
  285. data/files/dist/plugins/jqplot.blockRenderer.min.js +57 -0
  286. data/files/dist/plugins/jqplot.bubbleRenderer.js +754 -0
  287. data/files/dist/plugins/jqplot.bubbleRenderer.min.js +57 -0
  288. data/files/dist/plugins/jqplot.canvasAxisLabelRenderer.js +202 -0
  289. data/files/dist/plugins/jqplot.canvasAxisLabelRenderer.min.js +57 -0
  290. data/files/dist/plugins/jqplot.canvasAxisTickRenderer.js +242 -0
  291. data/files/dist/plugins/jqplot.canvasAxisTickRenderer.min.js +57 -0
  292. data/files/dist/plugins/jqplot.canvasOverlay.js +864 -0
  293. data/files/dist/plugins/jqplot.canvasOverlay.min.js +57 -0
  294. data/files/dist/plugins/jqplot.canvasTextRenderer.js +448 -0
  295. data/files/dist/plugins/jqplot.canvasTextRenderer.min.js +57 -0
  296. data/files/dist/plugins/jqplot.categoryAxisRenderer.js +636 -0
  297. data/files/dist/plugins/jqplot.categoryAxisRenderer.min.js +57 -0
  298. data/files/dist/plugins/jqplot.ciParser.js +115 -0
  299. data/files/dist/plugins/jqplot.ciParser.min.js +57 -0
  300. data/files/dist/plugins/jqplot.cursor.js +1093 -0
  301. data/files/dist/plugins/jqplot.cursor.min.js +57 -0
  302. data/files/dist/plugins/jqplot.dateAxisRenderer.js +702 -0
  303. data/files/dist/plugins/jqplot.dateAxisRenderer.min.js +57 -0
  304. data/files/dist/plugins/jqplot.donutRenderer.js +800 -0
  305. data/files/dist/plugins/jqplot.donutRenderer.min.js +57 -0
  306. data/files/dist/plugins/jqplot.dragable.js +224 -0
  307. data/files/dist/plugins/jqplot.dragable.min.js +57 -0
  308. data/files/dist/plugins/jqplot.enhancedLegendRenderer.js +241 -0
  309. data/files/dist/plugins/jqplot.enhancedLegendRenderer.min.js +57 -0
  310. data/files/dist/plugins/jqplot.funnelRenderer.js +938 -0
  311. data/files/dist/plugins/jqplot.funnelRenderer.min.js +57 -0
  312. data/files/dist/plugins/jqplot.highlighter.js +454 -0
  313. data/files/dist/plugins/jqplot.highlighter.min.js +57 -0
  314. data/files/dist/plugins/jqplot.json2.js +475 -0
  315. data/files/dist/plugins/jqplot.json2.min.js +57 -0
  316. data/files/dist/plugins/jqplot.logAxisRenderer.js +528 -0
  317. data/files/dist/plugins/jqplot.logAxisRenderer.min.js +57 -0
  318. data/files/dist/plugins/jqplot.mekkoAxisRenderer.js +610 -0
  319. data/files/dist/plugins/jqplot.mekkoAxisRenderer.min.js +57 -0
  320. data/files/dist/plugins/jqplot.mekkoRenderer.js +436 -0
  321. data/files/dist/plugins/jqplot.mekkoRenderer.min.js +57 -0
  322. data/files/dist/plugins/jqplot.meterGaugeRenderer.js +1029 -0
  323. data/files/dist/plugins/jqplot.meterGaugeRenderer.min.js +57 -0
  324. data/files/dist/plugins/jqplot.ohlcRenderer.js +372 -0
  325. data/files/dist/plugins/jqplot.ohlcRenderer.min.js +57 -0
  326. data/files/dist/plugins/jqplot.pieRenderer.js +899 -0
  327. data/files/dist/plugins/jqplot.pieRenderer.min.js +57 -0
  328. data/files/dist/plugins/jqplot.pointLabels.js +362 -0
  329. data/files/dist/plugins/jqplot.pointLabels.min.js +57 -0
  330. data/files/dist/plugins/jqplot.pyramidAxisRenderer.js +730 -0
  331. data/files/dist/plugins/jqplot.pyramidAxisRenderer.min.js +57 -0
  332. data/files/dist/plugins/jqplot.pyramidGridRenderer.js +423 -0
  333. data/files/dist/plugins/jqplot.pyramidGridRenderer.min.js +57 -0
  334. data/files/dist/plugins/jqplot.pyramidRenderer.js +490 -0
  335. data/files/dist/plugins/jqplot.pyramidRenderer.min.js +57 -0
  336. data/files/dist/plugins/jqplot.trendline.js +222 -0
  337. data/files/dist/plugins/jqplot.trendline.min.js +57 -0
  338. data/files/dist/usage.txt +126 -0
  339. data/files/javascripts/excanvas.min.js +57 -0
  340. data/files/javascripts/jquery.jqplot.min.js +57 -0
  341. data/files/javascripts/plugins/jqplot.BezierCurveRenderer.min.js +57 -0
  342. data/files/javascripts/plugins/jqplot.barRenderer.min.js +57 -0
  343. data/files/javascripts/plugins/jqplot.blockRenderer.min.js +57 -0
  344. data/files/javascripts/plugins/jqplot.bubbleRenderer.min.js +57 -0
  345. data/files/javascripts/plugins/jqplot.canvasAxisLabelRenderer.min.js +57 -0
  346. data/files/javascripts/plugins/jqplot.canvasAxisTickRenderer.min.js +57 -0
  347. data/files/javascripts/plugins/jqplot.canvasOverlay.min.js +57 -0
  348. data/files/javascripts/plugins/jqplot.canvasTextRenderer.min.js +57 -0
  349. data/files/javascripts/plugins/jqplot.categoryAxisRenderer.min.js +57 -0
  350. data/files/javascripts/plugins/jqplot.ciParser.min.js +57 -0
  351. data/files/javascripts/plugins/jqplot.cursor.min.js +57 -0
  352. data/files/javascripts/plugins/jqplot.dateAxisRenderer.min.js +57 -0
  353. data/files/javascripts/plugins/jqplot.donutRenderer.min.js +57 -0
  354. data/files/javascripts/plugins/jqplot.dragable.min.js +57 -0
  355. data/files/javascripts/plugins/jqplot.enhancedLegendRenderer.min.js +57 -0
  356. data/files/javascripts/plugins/jqplot.funnelRenderer.min.js +57 -0
  357. data/files/javascripts/plugins/jqplot.highlighter.min.js +57 -0
  358. data/files/javascripts/plugins/jqplot.json2.min.js +57 -0
  359. data/files/javascripts/plugins/jqplot.logAxisRenderer.min.js +57 -0
  360. data/files/javascripts/plugins/jqplot.mekkoAxisRenderer.min.js +57 -0
  361. data/files/javascripts/plugins/jqplot.mekkoRenderer.min.js +57 -0
  362. data/files/javascripts/plugins/jqplot.meterGaugeRenderer.min.js +57 -0
  363. data/files/javascripts/plugins/jqplot.ohlcRenderer.min.js +57 -0
  364. data/files/javascripts/plugins/jqplot.pieRenderer.min.js +57 -0
  365. data/files/javascripts/plugins/jqplot.pointLabels.min.js +57 -0
  366. data/files/javascripts/plugins/jqplot.pyramidAxisRenderer.min.js +57 -0
  367. data/files/javascripts/plugins/jqplot.pyramidGridRenderer.min.js +57 -0
  368. data/files/javascripts/plugins/jqplot.pyramidRenderer.min.js +57 -0
  369. data/files/javascripts/plugins/jqplot.trendline.min.js +57 -0
  370. data/files/stylesheets/jqplot_rails_overrides.css +3 -0
  371. data/files/stylesheets/jquery.jqplot.min.css +1 -0
  372. data/lib/jqplot_rails/jqplot_action_view.rb +106 -0
  373. data/lib/jqplot_rails/railtie.rb +29 -0
  374. data/lib/jqplot_rails/tasks.rb +58 -0
  375. data/lib/jqplot_rails/version.rb +17 -0
  376. data/lib/jqplot_rails.rb +5 -0
  377. metadata +473 -0
@@ -0,0 +1,1029 @@
1
+ /**
2
+ * jqPlot
3
+ * Pure JavaScript plotting plugin using jQuery
4
+ *
5
+ * Version: 1.0.0b2_r1012
6
+ *
7
+ * Copyright (c) 2009-2011 Chris Leonello
8
+ * jqPlot is currently available for use in all personal or commercial projects
9
+ * under both the MIT (http://www.opensource.org/licenses/mit-license.php) and GPL
10
+ * version 2.0 (http://www.gnu.org/licenses/gpl-2.0.html) licenses. This means that you can
11
+ * choose the license that best suits your project and use it accordingly.
12
+ *
13
+ * Although not required, the author would appreciate an email letting him
14
+ * know of any substantial use of jqPlot. You can reach the author at:
15
+ * chris at jqplot dot com or see http://www.jqplot.com/info.php .
16
+ *
17
+ * If you are feeling kind and generous, consider supporting the project by
18
+ * making a donation at: http://www.jqplot.com/donate.php .
19
+ *
20
+ * sprintf functions contained in jqplot.sprintf.js by Ash Searle:
21
+ *
22
+ * version 2007.04.27
23
+ * author Ash Searle
24
+ * http://hexmen.com/blog/2007/03/printf-sprintf/
25
+ * http://hexmen.com/js/sprintf.js
26
+ * The author (Ash Searle) has placed this code in the public domain:
27
+ * "This code is unrestricted: you are free to use it however you like."
28
+ *
29
+ */
30
+ (function($) {
31
+ /**
32
+ * Class: $.jqplot.MeterGaugeRenderer
33
+ * Plugin renderer to draw a meter gauge chart.
34
+ *
35
+ * Data consists of a single series with 1 data point to position the gauge needle.
36
+ *
37
+ * To use this renderer, you need to include the
38
+ * meter gauge renderer plugin, for example:
39
+ *
40
+ * > <script type="text/javascript" src="plugins/jqplot.meterGaugeRenderer.js"></script>
41
+ *
42
+ * Properties described here are passed into the $.jqplot function
43
+ * as options on the series renderer. For example:
44
+ *
45
+ * > plot0 = $.jqplot('chart0',[[18]],{
46
+ * > title: 'Network Speed',
47
+ * > seriesDefaults: {
48
+ * > renderer: $.jqplot.MeterGaugeRenderer,
49
+ * > rendererOptions: {
50
+ * > label: 'MB/s'
51
+ * > }
52
+ * > }
53
+ * > });
54
+ *
55
+ * A meterGauge plot does not support events.
56
+ */
57
+ $.jqplot.MeterGaugeRenderer = function(){
58
+ $.jqplot.LineRenderer.call(this);
59
+ };
60
+
61
+ $.jqplot.MeterGaugeRenderer.prototype = new $.jqplot.LineRenderer();
62
+ $.jqplot.MeterGaugeRenderer.prototype.constructor = $.jqplot.MeterGaugeRenderer;
63
+
64
+ // called with scope of a series
65
+ $.jqplot.MeterGaugeRenderer.prototype.init = function(options) {
66
+ // Group: Properties
67
+ //
68
+ // prop: diameter
69
+ // Outer diameter of the meterGauge, auto computed by default
70
+ this.diameter = null;
71
+ // prop: padding
72
+ // padding between the meterGauge and plot edges, auto
73
+ // calculated by default.
74
+ this.padding = null;
75
+ // prop: shadowOffset
76
+ // offset of the shadow from the gauge ring and offset of
77
+ // each succesive stroke of the shadow from the last.
78
+ this.shadowOffset = 2;
79
+ // prop: shadowAlpha
80
+ // transparency of the shadow (0 = transparent, 1 = opaque)
81
+ this.shadowAlpha = 0.07;
82
+ // prop: shadowDepth
83
+ // number of strokes to apply to the shadow,
84
+ // each stroke offset shadowOffset from the last.
85
+ this.shadowDepth = 4;
86
+ // prop: background
87
+ // background color of the inside of the gauge.
88
+ this.background = "#efefef";
89
+ // prop: ringColor
90
+ // color of the outer ring, hub, and needle of the gauge.
91
+ this.ringColor = "#BBC6D0";
92
+ // needle color not implemented yet.
93
+ this.needleColor = "#C3D3E5";
94
+ // prop: tickColor
95
+ // color of the tick marks around the gauge.
96
+ this.tickColor = "989898";
97
+ // prop: ringWidth
98
+ // width of the ring around the gauge. Auto computed by default.
99
+ this.ringWidth = null;
100
+ // prop: min
101
+ // Minimum value on the gauge. Auto computed by default
102
+ this.min;
103
+ // prop: max
104
+ // Maximum value on the gauge. Auto computed by default
105
+ this.max;
106
+ // prop: ticks
107
+ // Array of tick values. Auto computed by default.
108
+ this.ticks = [];
109
+ // prop: showTicks
110
+ // true to show ticks around gauge.
111
+ this.showTicks = true;
112
+ // prop: showTickLabels
113
+ // true to show tick labels next to ticks.
114
+ this.showTickLabels = true;
115
+ // prop: label
116
+ // A gauge label like 'kph' or 'Volts'
117
+ this.label = null;
118
+ // prop: labelHeightAdjust
119
+ // Number of Pixels to offset the label up (-) or down (+) from its default position.
120
+ this.labelHeightAdjust = 0;
121
+ // prop: labelPosition
122
+ // Where to position the label, either 'inside' or 'bottom'.
123
+ this.labelPosition = 'inside';
124
+ // prop: intervals
125
+ // Array of ranges to be drawn around the gauge.
126
+ // Array of form:
127
+ // > [value1, value2, ...]
128
+ // indicating the values for the first, second, ... intervals.
129
+ this.intervals = [];
130
+ // prop: intervalColors
131
+ // Array of colors to use for the intervals.
132
+ this.intervalColors = [ "#4bb2c5", "#EAA228", "#c5b47f", "#579575", "#839557", "#958c12", "#953579", "#4b5de4", "#d8b83f", "#ff5800", "#0085cc", "#c747a3", "#cddf54", "#FBD178", "#26B4E3", "#bd70c7"];
133
+ // prop: intervalInnerRadius
134
+ // Radius of the inner circle of the interval ring.
135
+ this.intervalInnerRadius = null;
136
+ // prop: intervalOuterRadius
137
+ // Radius of the outer circle of the interval ring.
138
+ this.intervalOuterRadius = null;
139
+ this.tickRenderer = $.jqplot.MeterGaugeTickRenderer;
140
+ // ticks spaced every 1, 2, 2.5, 5, 10, 20, .1, .2, .25, .5, etc.
141
+ this.tickPositions = [1, 2, 2.5, 5, 10];
142
+ // prop: tickSpacing
143
+ // Degrees between ticks. This is a target number, if
144
+ // incompatible span and ticks are supplied, a suitable
145
+ // spacing close to this value will be computed.
146
+ this.tickSpacing = 30;
147
+ this.numberMinorTicks = null;
148
+ // prop: hubRadius
149
+ // Radius of the hub at the bottom center of gauge which the needle attaches to.
150
+ // Auto computed by default
151
+ this.hubRadius = null;
152
+ // prop: tickPadding
153
+ // padding of the tick marks to the outer ring and the tick labels to marks.
154
+ // Auto computed by default.
155
+ this.tickPadding = null;
156
+ // prop: needleThickness
157
+ // Maximum thickness the needle. Auto computed by default.
158
+ this.needleThickness = null;
159
+ // prop: needlePad
160
+ // Padding between needle and inner edge of the ring when the needle is at the min or max gauge value.
161
+ this.needlePad = 6;
162
+ // prop: pegNeedle
163
+ // True will stop needle just below/above the min/max values if data is below/above min/max,
164
+ // as if the meter is "pegged".
165
+ this.pegNeedle = true;
166
+ this._type = 'meterGauge';
167
+
168
+ $.extend(true, this, options);
169
+ this.type = null;
170
+ this.numberTicks = null;
171
+ this.tickInterval = null;
172
+ // span, the sweep (in degrees) from min to max. This gauge is
173
+ // a semi-circle.
174
+ this.span = 180;
175
+ // get rid of this nonsense
176
+ // this.innerSpan = this.span;
177
+ if (this.type == 'circular') {
178
+ this.semiCircular = false;
179
+ }
180
+ else if (this.type != 'circular') {
181
+ this.semiCircular = true;
182
+ }
183
+ else {
184
+ this.semiCircular = (this.span <= 180) ? true : false;
185
+ }
186
+ this._tickPoints = [];
187
+ // reference to label element.
188
+ this._labelElem = null;
189
+
190
+ // start the gauge at the beginning of the span
191
+ this.startAngle = (90 + (360 - this.span)/2) * Math.PI/180;
192
+ this.endAngle = (90 - (360 - this.span)/2) * Math.PI/180;
193
+
194
+ this.setmin = !!(this.min == null);
195
+ this.setmax = !!(this.max == null);
196
+
197
+ // if given intervals and is an array of values, create labels and colors.
198
+ if (this.intervals.length) {
199
+ if (this.intervals[0].length == null || this.intervals.length == 1) {
200
+ for (var i=0; i<this.intervals.length; i++) {
201
+ this.intervals[i] = [this.intervals[i], this.intervals[i], this.intervalColors[i]];
202
+ }
203
+ }
204
+ else if (this.intervals[0].length == 2) {
205
+ for (i=0; i<this.intervals.length; i++) {
206
+ this.intervals[i] = [this.intervals[i][0], this.intervals[i][1], this.intervalColors[i]];
207
+ }
208
+ }
209
+ }
210
+
211
+ // compute min, max and ticks if not supplied:
212
+ if (this.ticks.length) {
213
+ if (this.ticks[0].length == null || this.ticks[0].length == 1) {
214
+ for (var i=0; i<this.ticks.length; i++) {
215
+ this.ticks[i] = [this.ticks[i], this.ticks[i]];
216
+ }
217
+ }
218
+ this.min = (this.min == null) ? this.ticks[0][0] : this.min;
219
+ this.max = (this.max == null) ? this.ticks[this.ticks.length-1][0] : this.max;
220
+ this.setmin = false;
221
+ this.setmax = false;
222
+ this.numberTicks = this.ticks.length;
223
+ this.tickInterval = this.ticks[1][0] - this.ticks[0][0];
224
+ this.tickFactor = Math.floor(parseFloat((Math.log(this.tickInterval)/Math.log(10)).toFixed(11)));
225
+ // use the first interal to calculate minor ticks;
226
+ this.numberMinorTicks = getnmt(this.tickPositions, this.tickInterval, this.tickFactor);
227
+ if (!this.numberMinorTicks) {
228
+ this.numberMinorTicks = getnmt(this.tickPositions, this.tickInterval, this.tickFactor-1);
229
+ }
230
+ if (!this.numberMinorTicks) {
231
+ this.numberMinorTicks = 1;
232
+ }
233
+ }
234
+
235
+ else if (this.intervals.length) {
236
+ this.min = (this.min == null) ? 0 : this.min;
237
+ this.setmin = false;
238
+ if (this.max == null) {
239
+ if (this.intervals[this.intervals.length-1][0] >= this.data[0][1]) {
240
+ this.max = this.intervals[this.intervals.length-1][0];
241
+ this.setmax = false;
242
+ }
243
+ }
244
+ else {
245
+ this.setmax = false;
246
+ }
247
+ }
248
+
249
+ else {
250
+ // no ticks and no intervals supplied, put needle in middle
251
+ this.min = (this.min == null) ? 0 : this.min;
252
+ this.setmin = false;
253
+ if (this.max == null) {
254
+ this.max = this.data[0][1] * 1.25;
255
+ this.setmax = true;
256
+ }
257
+ else {
258
+ this.setmax = false;
259
+ }
260
+ }
261
+ };
262
+
263
+ $.jqplot.MeterGaugeRenderer.prototype.setGridData = function(plot) {
264
+ // set gridData property. This will hold angle in radians of each data point.
265
+ var stack = [];
266
+ var td = [];
267
+ var sa = this.startAngle;
268
+ for (var i=0; i<this.data.length; i++){
269
+ stack.push(this.data[i][1]);
270
+ td.push([this.data[i][0]]);
271
+ if (i>0) {
272
+ stack[i] += stack[i-1];
273
+ }
274
+ }
275
+ var fact = Math.PI*2/stack[stack.length - 1];
276
+
277
+ for (var i=0; i<stack.length; i++) {
278
+ td[i][1] = stack[i] * fact;
279
+ }
280
+ this.gridData = td;
281
+ };
282
+
283
+ $.jqplot.MeterGaugeRenderer.prototype.makeGridData = function(data, plot) {
284
+ var stack = [];
285
+ var td = [];
286
+ var sa = this.startAngle;
287
+ for (var i=0; i<data.length; i++){
288
+ stack.push(data[i][1]);
289
+ td.push([data[i][0]]);
290
+ if (i>0) {
291
+ stack[i] += stack[i-1];
292
+ }
293
+ }
294
+ var fact = Math.PI*2/stack[stack.length - 1];
295
+
296
+ for (var i=0; i<stack.length; i++) {
297
+ td[i][1] = stack[i] * fact;
298
+ }
299
+ return td;
300
+ };
301
+
302
+
303
+ function getnmt(pos, interval, fact) {
304
+ var temp;
305
+ for (var i=pos.length-1; i>=0; i--) {
306
+ temp = interval/(pos[i] * Math.pow(10, fact));
307
+ if (temp == 4 || temp == 5) {
308
+ return temp - 1;
309
+ }
310
+ }
311
+ return null;
312
+ }
313
+
314
+ // called with scope of series
315
+ $.jqplot.MeterGaugeRenderer.prototype.draw = function (ctx, gd, options) {
316
+ var i;
317
+ var opts = (options != undefined) ? options : {};
318
+ // offset and direction of offset due to legend placement
319
+ var offx = 0;
320
+ var offy = 0;
321
+ var trans = 1;
322
+ if (options.legendInfo && options.legendInfo.placement == 'inside') {
323
+ var li = options.legendInfo;
324
+ switch (li.location) {
325
+ case 'nw':
326
+ offx = li.width + li.xoffset;
327
+ break;
328
+ case 'w':
329
+ offx = li.width + li.xoffset;
330
+ break;
331
+ case 'sw':
332
+ offx = li.width + li.xoffset;
333
+ break;
334
+ case 'ne':
335
+ offx = li.width + li.xoffset;
336
+ trans = -1;
337
+ break;
338
+ case 'e':
339
+ offx = li.width + li.xoffset;
340
+ trans = -1;
341
+ break;
342
+ case 'se':
343
+ offx = li.width + li.xoffset;
344
+ trans = -1;
345
+ break;
346
+ case 'n':
347
+ offy = li.height + li.yoffset;
348
+ break;
349
+ case 's':
350
+ offy = li.height + li.yoffset;
351
+ trans = -1;
352
+ break;
353
+ default:
354
+ break;
355
+ }
356
+ }
357
+
358
+
359
+
360
+ // pre-draw so can get it's dimensions.
361
+ if (this.label) {
362
+ this._labelElem = $('<div class="jqplot-meterGauge-label" style="position:absolute;">'+this.label+'</div>');
363
+ this.canvas._elem.after(this._labelElem);
364
+ }
365
+
366
+ var shadow = (opts.shadow != undefined) ? opts.shadow : this.shadow;
367
+ var showLine = (opts.showLine != undefined) ? opts.showLine : this.showLine;
368
+ var fill = (opts.fill != undefined) ? opts.fill : this.fill;
369
+ var cw = ctx.canvas.width;
370
+ var ch = ctx.canvas.height;
371
+ if (this.padding == null) {
372
+ this.padding = Math.round(Math.min(cw, ch)/30);
373
+ }
374
+ var w = cw - offx - 2 * this.padding;
375
+ var h = ch - offy - 2 * this.padding;
376
+ if (this.labelPosition == 'bottom' && this.label) {
377
+ h -= this._labelElem.outerHeight(true);
378
+ }
379
+ var mindim = Math.min(w,h);
380
+ var d = mindim;
381
+
382
+ if (!this.diameter) {
383
+ if (this.semiCircular) {
384
+ if ( w >= 2*h) {
385
+ if (!this.ringWidth) {
386
+ this.ringWidth = 2*h/35;
387
+ }
388
+ this.needleThickness = this.needleThickness || 2+Math.pow(this.ringWidth, 0.8);
389
+ this.innerPad = this.ringWidth/2 + this.needleThickness/2 + this.needlePad;
390
+ this.diameter = 2 * (h - 2*this.innerPad);
391
+ }
392
+ else {
393
+ if (!this.ringWidth) {
394
+ this.ringWidth = w/35;
395
+ }
396
+ this.needleThickness = this.needleThickness || 2+Math.pow(this.ringWidth, 0.8);
397
+ this.innerPad = this.ringWidth/2 + this.needleThickness/2 + this.needlePad;
398
+ this.diameter = w - 2*this.innerPad - this.ringWidth - this.padding;
399
+ }
400
+ // center taking into account legend and over draw for gauge bottom below hub.
401
+ // this will be center of hub.
402
+ this._center = [(cw - trans * offx)/2 + trans * offx, (ch + trans*offy - this.padding - this.ringWidth - this.innerPad)];
403
+ }
404
+ else {
405
+ if (!this.ringWidth) {
406
+ this.ringWidth = d/35;
407
+ }
408
+ this.needleThickness = this.needleThickness || 2+Math.pow(this.ringWidth, 0.8);
409
+ this.innerPad = 0;
410
+ this.diameter = d - this.ringWidth;
411
+ // center in middle of canvas taking into account legend.
412
+ // will be center of hub.
413
+ this._center = [(cw-trans*offx)/2 + trans * offx, (ch-trans*offy)/2 + trans * offy];
414
+ }
415
+ }
416
+
417
+
418
+ if (this._labelElem && this.labelPosition == 'bottom') {
419
+ this._center[1] -= this._labelElem.outerHeight(true);
420
+ }
421
+
422
+ this._radius = this.diameter/2;
423
+
424
+ this.tickSpacing = 6000/this.diameter;
425
+
426
+ if (!this.hubRadius) {
427
+ this.hubRadius = this.diameter/18;
428
+ }
429
+
430
+ this.shadowOffset = 0.5 + this.ringWidth/9;
431
+ this.shadowWidth = this.ringWidth*1;
432
+
433
+ this.tickPadding = 3 + Math.pow(this.diameter/20, 0.7);
434
+ this.tickOuterRadius = this._radius - this.ringWidth/2 - this.tickPadding;
435
+ this.tickLength = (this.showTicks) ? this._radius/13 : 0;
436
+
437
+ if (this.ticks.length == 0) {
438
+ // no ticks, lets make some.
439
+ var max = this.max,
440
+ min = this.min,
441
+ setmax = this.setmax,
442
+ setmin = this.setmin,
443
+ ti = (max - min) * this.tickSpacing / this.span;
444
+ var tf = Math.floor(parseFloat((Math.log(ti)/Math.log(10)).toFixed(11)));
445
+ var tp = (ti/Math.pow(10, tf));
446
+ (tp > 2 && tp <= 2.5) ? tp = 2.5 : tp = Math.ceil(tp);
447
+ var t = this.tickPositions;
448
+ var tpindex, nt;
449
+
450
+ for (i=0; i<t.length; i++) {
451
+ if (tp == t[i] || i && t[i-1] < tp && tp < t[i]) {
452
+ ti = t[i]*Math.pow(10, tf);
453
+ tpindex = i;
454
+ }
455
+ }
456
+
457
+ for (i=0; i<t.length; i++) {
458
+ if (tp == t[i] || i && t[i-1] < tp && tp < t[i]) {
459
+ ti = t[i]*Math.pow(10, tf);
460
+ nt = Math.ceil((max - min) / ti);
461
+ }
462
+ }
463
+
464
+ // both max and min are free
465
+ if (setmax && setmin) {
466
+ var tmin = (min > 0) ? min - min % ti : min - min % ti - ti;
467
+ if (!this.forceZero) {
468
+ var diff = Math.min(min - tmin, 0.8*ti);
469
+ var ntp = Math.floor(diff/t[tpindex]);
470
+ if (ntp > 1) {
471
+ tmin = tmin + t[tpindex] * (ntp-1);
472
+ if (parseInt(tmin, 10) != tmin && parseInt(tmin-t[tpindex], 10) == tmin-t[tpindex]) {
473
+ tmin = tmin - t[tpindex];
474
+ }
475
+ }
476
+ }
477
+ if (min == tmin) {
478
+ min -= ti;
479
+ }
480
+ else {
481
+ // tmin should always be lower than dataMin
482
+ if (min - tmin > 0.23*ti) {
483
+ min = tmin;
484
+ }
485
+ else {
486
+ min = tmin -ti;
487
+ nt += 1;
488
+ }
489
+ }
490
+ nt += 1;
491
+ var tmax = min + (nt - 1) * ti;
492
+ if (max >= tmax) {
493
+ tmax += ti;
494
+ nt += 1;
495
+ }
496
+ // now tmax should always be mroe than dataMax
497
+ if (tmax - max < 0.23*ti) {
498
+ tmax += ti;
499
+ nt += 1;
500
+ }
501
+ this.max = max = tmax;
502
+ this.min = min;
503
+
504
+ this.tickInterval = ti;
505
+ this.numberTicks = nt;
506
+ var it;
507
+ for (i=0; i<nt; i++) {
508
+ it = parseFloat((min+i*ti).toFixed(11));
509
+ this.ticks.push([it, it]);
510
+ }
511
+ this.max = this.ticks[nt-1][1];
512
+
513
+ this.tickFactor = tf;
514
+ // determine number of minor ticks
515
+
516
+ this.numberMinorTicks = getnmt(this.tickPositions, this.tickInterval, this.tickFactor);
517
+
518
+ if (!this.numberMinorTicks) {
519
+ this.numberMinorTicks = getnmt(this.tickPositions, this.tickInterval, this.tickFactor-1);
520
+ }
521
+ }
522
+ // max is free, min is fixed
523
+ else if (setmax) {
524
+ var tmax = min + (nt - 1) * ti;
525
+ if (max >= tmax) {
526
+ max = tmax + ti;
527
+ nt += 1;
528
+ }
529
+ else {
530
+ max = tmax;
531
+ }
532
+
533
+ this.tickInterval = this.tickInterval || ti;
534
+ this.numberTicks = this.numberTicks || nt;
535
+ var it;
536
+ for (i=0; i<this.numberTicks; i++) {
537
+ it = parseFloat((min+i*this.tickInterval).toFixed(11));
538
+ this.ticks.push([it, it]);
539
+ }
540
+ this.max = this.ticks[this.numberTicks-1][1];
541
+
542
+ this.tickFactor = tf;
543
+ // determine number of minor ticks
544
+ this.numberMinorTicks = getnmt(this.tickPositions, this.tickInterval, this.tickFactor);
545
+
546
+ if (!this.numberMinorTicks) {
547
+ this.numberMinorTicks = getnmt(this.tickPositions, this.tickInterval, this.tickFactor-1);
548
+ }
549
+ }
550
+
551
+ // not setting max or min
552
+ if (!setmax && !setmin) {
553
+ var range = this.max - this.min;
554
+ tf = Math.floor(parseFloat((Math.log(range)/Math.log(10)).toFixed(11))) - 1;
555
+ var nticks = [5,6,4,7,3,8,9,10,2], res, numticks, nonSigDigits=0, sigRange;
556
+ // check to see how many zeros are at the end of the range
557
+ if (range > 1) {
558
+ var rstr = String(range);
559
+ if (rstr.search(/\./) == -1) {
560
+ var pos = rstr.search(/0+$/);
561
+ nonSigDigits = (pos > 0) ? rstr.length - pos - 1 : 0;
562
+ }
563
+ }
564
+ sigRange = range/Math.pow(10, nonSigDigits);
565
+ for (i=0; i<nticks.length; i++) {
566
+ res = sigRange/(nticks[i]-1);
567
+ if (res == parseInt(res, 10)) {
568
+ this.numberTicks = nticks[i];
569
+ this.tickInterval = range/(this.numberTicks-1);
570
+ this.tickFactor = tf+1;
571
+ break;
572
+ }
573
+ }
574
+ var it;
575
+ for (i=0; i<this.numberTicks; i++) {
576
+ it = parseFloat((this.min+i*this.tickInterval).toFixed(11));
577
+ this.ticks.push([it, it]);
578
+ }
579
+ // determine number of minor ticks
580
+ this.numberMinorTicks = getnmt(this.tickPositions, this.tickInterval, this.tickFactor);
581
+
582
+ if (!this.numberMinorTicks) {
583
+ this.numberMinorTicks = getnmt(this.tickPositions, this.tickInterval, this.tickFactor-1);
584
+ }
585
+
586
+ if (!this.numberMinorTicks) {
587
+ this.numberMinorTicks = 1;
588
+ var nums = [4, 5, 3, 6, 2];
589
+ for (i=0; i<5; i++) {
590
+ var temp = this.tickInterval/nums[i];
591
+ if (temp == parseInt(temp, 10)) {
592
+ this.numberMinorTicks = nums[i]-1;
593
+ break;
594
+ }
595
+ }
596
+ }
597
+ }
598
+ }
599
+
600
+
601
+ var r = this._radius,
602
+ sa = this.startAngle,
603
+ ea = this.endAngle,
604
+ pi = Math.PI,
605
+ hpi = Math.PI/2;
606
+
607
+ if (this.semiCircular) {
608
+ var overAngle = Math.atan(this.innerPad/r),
609
+ outersa = this.outerStartAngle = sa - overAngle,
610
+ outerea = this.outerEndAngle = ea + overAngle,
611
+ hubsa = this.hubStartAngle = sa - Math.atan(this.innerPad/this.hubRadius*2),
612
+ hubea = this.hubEndAngle = ea + Math.atan(this.innerPad/this.hubRadius*2);
613
+
614
+ ctx.save();
615
+
616
+ ctx.translate(this._center[0], this._center[1]);
617
+ ctx.lineJoin = "round";
618
+ ctx.lineCap = "round";
619
+
620
+ // draw the innerbackground
621
+ ctx.save();
622
+ ctx.beginPath();
623
+ ctx.fillStyle = this.background;
624
+ ctx.arc(0, 0, r, outersa, outerea, false);
625
+ ctx.closePath();
626
+ ctx.fill();
627
+ ctx.restore();
628
+
629
+ // draw the shadow
630
+ // the outer ring.
631
+ var shadowColor = 'rgba(0,0,0,'+this.shadowAlpha+')';
632
+ ctx.save();
633
+ for (var i=0; i<this.shadowDepth; i++) {
634
+ ctx.translate(this.shadowOffset*Math.cos(this.shadowAngle/180*Math.PI), this.shadowOffset*Math.sin(this.shadowAngle/180*Math.PI));
635
+ ctx.beginPath();
636
+ ctx.strokeStyle = shadowColor;
637
+ ctx.lineWidth = this.shadowWidth;
638
+ ctx.arc(0 ,0, r, outersa, outerea, false);
639
+ ctx.closePath();
640
+ ctx.stroke();
641
+ }
642
+ ctx.restore();
643
+
644
+ // the inner hub.
645
+ ctx.save();
646
+ var tempd = parseInt((this.shadowDepth+1)/2, 10);
647
+ for (var i=0; i<tempd; i++) {
648
+ ctx.translate(this.shadowOffset*Math.cos(this.shadowAngle/180*Math.PI), this.shadowOffset*Math.sin(this.shadowAngle/180*Math.PI));
649
+ ctx.beginPath();
650
+ ctx.fillStyle = shadowColor;
651
+ ctx.arc(0 ,0, this.hubRadius, hubsa, hubea, false);
652
+ ctx.closePath();
653
+ ctx.fill();
654
+ }
655
+ ctx.restore();
656
+
657
+ // draw the outer ring.
658
+ ctx.save();
659
+ ctx.beginPath();
660
+ ctx.strokeStyle = this.ringColor;
661
+ ctx.lineWidth = this.ringWidth;
662
+ ctx.arc(0 ,0, r, outersa, outerea, false);
663
+ ctx.closePath();
664
+ ctx.stroke();
665
+ ctx.restore();
666
+
667
+ // draw the hub
668
+
669
+ ctx.save();
670
+ ctx.beginPath();
671
+ ctx.fillStyle = this.ringColor;
672
+ ctx.arc(0 ,0, this.hubRadius,hubsa, hubea, false);
673
+ ctx.closePath();
674
+ ctx.fill();
675
+ ctx.restore();
676
+
677
+ // draw the ticks
678
+ if (this.showTicks) {
679
+ ctx.save();
680
+ var orad = this.tickOuterRadius,
681
+ tl = this.tickLength,
682
+ mtl = tl/2,
683
+ nmt = this.numberMinorTicks,
684
+ ts = this.span * Math.PI / 180 / (this.ticks.length-1),
685
+ mts = ts/(nmt + 1);
686
+
687
+ for (i = 0; i<this.ticks.length; i++) {
688
+ ctx.beginPath();
689
+ ctx.lineWidth = 1.5 + this.diameter/360;
690
+ ctx.strokeStyle = this.ringColor;
691
+ var wps = ts*i+sa;
692
+ ctx.moveTo(-orad * Math.cos(ts*i+sa), orad * Math.sin(ts*i+sa));
693
+ ctx.lineTo(-(orad-tl) * Math.cos(ts*i+sa), (orad - tl) * Math.sin(ts*i+sa));
694
+ this._tickPoints.push([(orad-tl) * Math.cos(ts*i+sa) + this._center[0] + this.canvas._offsets.left, (orad - tl) * Math.sin(ts*i+sa) + this._center[1] + this.canvas._offsets.top, ts*i+sa]);
695
+ ctx.stroke();
696
+ ctx.lineWidth = 1.0 + this.diameter/440;
697
+ if (i<this.ticks.length-1) {
698
+ for (var j=1; j<=nmt; j++) {
699
+ ctx.beginPath();
700
+ ctx.moveTo(-orad * Math.cos(ts*i+mts*j+sa), orad * Math.sin(ts*i+mts*j+sa));
701
+ ctx.lineTo(-(orad-mtl) * Math.cos(ts*i+mts*j+sa), (orad-mtl) * Math.sin(ts*i+mts*j+sa));
702
+ ctx.stroke();
703
+ }
704
+ }
705
+ }
706
+ ctx.restore();
707
+ }
708
+
709
+ // draw the tick labels
710
+ if (this.showTickLabels) {
711
+ var elem, l, t, ew, eh, dim, maxdim=0;
712
+ var tp = this.tickPadding * (1 - 1/(this.diameter/80+1));
713
+ for (i=0; i<this.ticks.length; i++) {
714
+ elem = $('<div class="jqplot-meterGauge-tick" style="position:absolute;">'+this.ticks[i][1]+'</div>');
715
+ this.canvas._elem.after(elem);
716
+ ew = elem.outerWidth(true);
717
+ eh = elem.outerHeight(true);
718
+ l = this._tickPoints[i][0] - ew * (this._tickPoints[i][2]-Math.PI)/Math.PI - tp * Math.cos(this._tickPoints[i][2]);
719
+ t = this._tickPoints[i][1] - eh/2 + eh/2 * Math.pow(Math.abs((Math.sin(this._tickPoints[i][2]))), 0.5) + tp/3 * Math.pow(Math.abs((Math.sin(this._tickPoints[i][2]))), 0.5) ;
720
+ // t = this._tickPoints[i][1] - eh/2 - eh/2 * Math.sin(this._tickPoints[i][2]) - tp/2 * Math.sin(this._tickPoints[i][2]);
721
+ elem.css({left:l, top:t});
722
+ dim = ew*Math.cos(this._tickPoints[i][2]) + eh*Math.sin(Math.PI/2+this._tickPoints[i][2]/2);
723
+ maxdim = (dim > maxdim) ? dim : maxdim;
724
+ }
725
+ }
726
+
727
+ // draw the gauge label
728
+ if (this.label && this.labelPosition == 'inside') {
729
+ var l = this._center[0] + this.canvas._offsets.left;
730
+ var tp = this.tickPadding * (1 - 1/(this.diameter/80+1));
731
+ var t = 0.5*(this._center[1] + this.canvas._offsets.top - this.hubRadius) + 0.5*(this._center[1] + this.canvas._offsets.top - this.tickOuterRadius + this.tickLength + tp) + this.labelHeightAdjust;
732
+ // this._labelElem = $('<div class="jqplot-meterGauge-label" style="position:absolute;">'+this.label+'</div>');
733
+ // this.canvas._elem.after(this._labelElem);
734
+ l -= this._labelElem.outerWidth(true)/2;
735
+ t -= this._labelElem.outerHeight(true)/2;
736
+ this._labelElem.css({left:l, top:t});
737
+ }
738
+
739
+ else if (this.label && this.labelPosition == 'bottom') {
740
+ var l = this._center[0] + this.canvas._offsets.left - this._labelElem.outerWidth(true)/2;
741
+ var t = this._center[1] + this.canvas._offsets.top + this.innerPad + + this.ringWidth + this.padding + this.labelHeightAdjust;
742
+ this._labelElem.css({left:l, top:t});
743
+
744
+ }
745
+
746
+ // draw the intervals
747
+
748
+ ctx.save();
749
+ var inner = this.intervalInnerRadius || this.hubRadius * 1.5;
750
+ if (this.intervalOuterRadius == null) {
751
+ if (this.showTickLabels) {
752
+ var outer = (this.tickOuterRadius - this.tickLength - this.tickPadding - this.diameter/8);
753
+ }
754
+ else {
755
+ var outer = (this.tickOuterRadius - this.tickLength - this.diameter/16);
756
+ }
757
+ }
758
+ else {
759
+ var outer = this.intervalOuterRadius;
760
+ }
761
+ var range = this.max - this.min;
762
+ var intrange = this.intervals[this.intervals.length-1] - this.min;
763
+ var start, end, span = this.span*Math.PI/180;
764
+ for (i=0; i<this.intervals.length; i++) {
765
+ start = (i == 0) ? sa : sa + (this.intervals[i-1][0] - this.min)*span/range;
766
+ if (start < 0) {
767
+ start = 0;
768
+ }
769
+ end = sa + (this.intervals[i][0] - this.min)*span/range;
770
+ if (end < 0) {
771
+ end = 0;
772
+ }
773
+ ctx.beginPath();
774
+ ctx.fillStyle = this.intervals[i][2];
775
+ ctx.arc(0, 0, inner, start, end, false);
776
+ ctx.lineTo(outer*Math.cos(end), outer*Math.sin(end));
777
+ ctx.arc(0, 0, outer, end, start, true);
778
+ ctx.lineTo(inner*Math.cos(start), inner*Math.sin(start));
779
+ ctx.closePath();
780
+ ctx.fill();
781
+ }
782
+ ctx.restore();
783
+
784
+ // draw the needle
785
+ var datapoint = this.data[0][1];
786
+ var dataspan = this.max - this.min;
787
+ if (this.pegNeedle) {
788
+ if (this.data[0][1] > this.max + dataspan*3/this.span) {
789
+ datapoint = this.max + dataspan*3/this.span;
790
+ }
791
+ if (this.data[0][1] < this.min - dataspan*3/this.span) {
792
+ datapoint = this.min - dataspan*3/this.span;
793
+ }
794
+ }
795
+ var dataang = (datapoint - this.min)/dataspan * this.span * Math.PI/180 + this.startAngle;
796
+
797
+
798
+ ctx.save();
799
+ ctx.beginPath();
800
+ ctx.fillStyle = this.ringColor;
801
+ ctx.strokeStyle = this.ringColor;
802
+ this.needleLength = (this.tickOuterRadius - this.tickLength) * 0.85;
803
+ this.needleThickness = (this.needleThickness < 2) ? 2 : this.needleThickness;
804
+ var endwidth = this.needleThickness * 0.4;
805
+
806
+
807
+ var dl = this.needleLength/10;
808
+ var dt = (this.needleThickness - endwidth)/10;
809
+ var templ;
810
+ for (var i=0; i<10; i++) {
811
+ templ = this.needleThickness - i*dt;
812
+ ctx.moveTo(dl*i*Math.cos(dataang), dl*i*Math.sin(dataang));
813
+ ctx.lineWidth = templ;
814
+ ctx.lineTo(dl*(i+1)*Math.cos(dataang), dl*(i+1)*Math.sin(dataang));
815
+ ctx.stroke();
816
+ }
817
+
818
+ ctx.restore();
819
+ }
820
+ else {
821
+ this._center = [(cw - trans * offx)/2 + trans * offx, (ch - trans*offy)/2 + trans * offy];
822
+ }
823
+ };
824
+
825
+ $.jqplot.MeterGaugeAxisRenderer = function() {
826
+ $.jqplot.LinearAxisRenderer.call(this);
827
+ };
828
+
829
+ $.jqplot.MeterGaugeAxisRenderer.prototype = new $.jqplot.LinearAxisRenderer();
830
+ $.jqplot.MeterGaugeAxisRenderer.prototype.constructor = $.jqplot.MeterGaugeAxisRenderer;
831
+
832
+
833
+ // There are no traditional axes on a gauge chart. We just need to provide
834
+ // dummy objects with properties so the plot will render.
835
+ // called with scope of axis object.
836
+ $.jqplot.MeterGaugeAxisRenderer.prototype.init = function(options){
837
+ //
838
+ this.tickRenderer = $.jqplot.MeterGaugeTickRenderer;
839
+ $.extend(true, this, options);
840
+ // I don't think I'm going to need _dataBounds here.
841
+ // have to go Axis scaling in a way to fit chart onto plot area
842
+ // and provide u2p and p2u functionality for mouse cursor, etc.
843
+ // for convienence set _dataBounds to 0 and 100 and
844
+ // set min/max to 0 and 100.
845
+ this._dataBounds = {min:0, max:100};
846
+ this.min = 0;
847
+ this.max = 100;
848
+ this.showTicks = false;
849
+ this.ticks = [];
850
+ this.showMark = false;
851
+ this.show = false;
852
+ };
853
+
854
+ $.jqplot.MeterGaugeLegendRenderer = function(){
855
+ $.jqplot.TableLegendRenderer.call(this);
856
+ };
857
+
858
+ $.jqplot.MeterGaugeLegendRenderer.prototype = new $.jqplot.TableLegendRenderer();
859
+ $.jqplot.MeterGaugeLegendRenderer.prototype.constructor = $.jqplot.MeterGaugeLegendRenderer;
860
+
861
+ /**
862
+ * Class: $.jqplot.MeterGaugeLegendRenderer
863
+ *Meter gauges don't typically have a legend, this overrides the default legend renderer.
864
+ */
865
+ $.jqplot.MeterGaugeLegendRenderer.prototype.init = function(options) {
866
+ // Maximum number of rows in the legend. 0 or null for unlimited.
867
+ this.numberRows = null;
868
+ // Maximum number of columns in the legend. 0 or null for unlimited.
869
+ this.numberColumns = null;
870
+ $.extend(true, this, options);
871
+ };
872
+
873
+ // called with context of legend
874
+ $.jqplot.MeterGaugeLegendRenderer.prototype.draw = function() {
875
+ if (this.show) {
876
+ var series = this._series;
877
+ var ss = 'position:absolute;';
878
+ ss += (this.background) ? 'background:'+this.background+';' : '';
879
+ ss += (this.border) ? 'border:'+this.border+';' : '';
880
+ ss += (this.fontSize) ? 'font-size:'+this.fontSize+';' : '';
881
+ ss += (this.fontFamily) ? 'font-family:'+this.fontFamily+';' : '';
882
+ ss += (this.textColor) ? 'color:'+this.textColor+';' : '';
883
+ ss += (this.marginTop != null) ? 'margin-top:'+this.marginTop+';' : '';
884
+ ss += (this.marginBottom != null) ? 'margin-bottom:'+this.marginBottom+';' : '';
885
+ ss += (this.marginLeft != null) ? 'margin-left:'+this.marginLeft+';' : '';
886
+ ss += (this.marginRight != null) ? 'margin-right:'+this.marginRight+';' : '';
887
+ this._elem = $('<table class="jqplot-table-legend" style="'+ss+'"></table>');
888
+ // MeterGauge charts legends don't go by number of series, but by number of data points
889
+ // in the series. Refactor things here for that.
890
+
891
+ var pad = false,
892
+ reverse = false,
893
+ nr, nc;
894
+ var s = series[0];
895
+
896
+ if (s.show) {
897
+ var pd = s.data;
898
+ if (this.numberRows) {
899
+ nr = this.numberRows;
900
+ if (!this.numberColumns){
901
+ nc = Math.ceil(pd.length/nr);
902
+ }
903
+ else{
904
+ nc = this.numberColumns;
905
+ }
906
+ }
907
+ else if (this.numberColumns) {
908
+ nc = this.numberColumns;
909
+ nr = Math.ceil(pd.length/this.numberColumns);
910
+ }
911
+ else {
912
+ nr = pd.length;
913
+ nc = 1;
914
+ }
915
+
916
+ var i, j, tr, td1, td2, lt, rs, color;
917
+ var idx = 0;
918
+
919
+ for (i=0; i<nr; i++) {
920
+ if (reverse){
921
+ tr = $('<tr class="jqplot-table-legend"></tr>').prependTo(this._elem);
922
+ }
923
+ else{
924
+ tr = $('<tr class="jqplot-table-legend"></tr>').appendTo(this._elem);
925
+ }
926
+ for (j=0; j<nc; j++) {
927
+ if (idx < pd.length){
928
+ // debugger
929
+ lt = this.labels[idx] || pd[idx][0].toString();
930
+ color = s.color;
931
+ if (!reverse){
932
+ if (i>0){
933
+ pad = true;
934
+ }
935
+ else{
936
+ pad = false;
937
+ }
938
+ }
939
+ else{
940
+ if (i == nr -1){
941
+ pad = false;
942
+ }
943
+ else{
944
+ pad = true;
945
+ }
946
+ }
947
+ rs = (pad) ? this.rowSpacing : '0';
948
+
949
+ td1 = $('<td class="jqplot-table-legend" style="text-align:center;padding-top:'+rs+';">'+
950
+ '<div><div class="jqplot-table-legend-swatch" style="border-color:'+color+';"></div>'+
951
+ '</div></td>');
952
+ td2 = $('<td class="jqplot-table-legend" style="padding-top:'+rs+';"></td>');
953
+ if (this.escapeHtml){
954
+ td2.text(lt);
955
+ }
956
+ else {
957
+ td2.html(lt);
958
+ }
959
+ if (reverse) {
960
+ td2.prependTo(tr);
961
+ td1.prependTo(tr);
962
+ }
963
+ else {
964
+ td1.appendTo(tr);
965
+ td2.appendTo(tr);
966
+ }
967
+ pad = true;
968
+ }
969
+ idx++;
970
+ }
971
+ }
972
+ }
973
+ }
974
+ return this._elem;
975
+ };
976
+
977
+
978
+ // setup default renderers for axes and legend so user doesn't have to
979
+ // called with scope of plot
980
+ function preInit(target, data, options) {
981
+ // debugger
982
+ options = options || {};
983
+ options.axesDefaults = options.axesDefaults || {};
984
+ options.legend = options.legend || {};
985
+ options.seriesDefaults = options.seriesDefaults || {};
986
+ options.grid = options.grid || {};
987
+
988
+ // only set these if there is a gauge series
989
+ var setopts = false;
990
+ if (options.seriesDefaults.renderer == $.jqplot.MeterGaugeRenderer) {
991
+ setopts = true;
992
+ }
993
+ else if (options.series) {
994
+ for (var i=0; i < options.series.length; i++) {
995
+ if (options.series[i].renderer == $.jqplot.MeterGaugeRenderer) {
996
+ setopts = true;
997
+ }
998
+ }
999
+ }
1000
+
1001
+ if (setopts) {
1002
+ options.axesDefaults.renderer = $.jqplot.MeterGaugeAxisRenderer;
1003
+ options.legend.renderer = $.jqplot.MeterGaugeLegendRenderer;
1004
+ options.legend.preDraw = true;
1005
+ options.grid.background = options.grid.background || 'white';
1006
+ options.grid.drawGridlines = false;
1007
+ options.grid.borderWidth = (options.grid.borderWidth != null) ? options.grid.borderWidth : 0;
1008
+ options.grid.shadow = (options.grid.shadow != null) ? options.grid.shadow : false;
1009
+ }
1010
+ }
1011
+
1012
+ // called with scope of plot
1013
+ function postParseOptions(options) {
1014
+ //
1015
+ }
1016
+
1017
+ $.jqplot.preInitHooks.push(preInit);
1018
+ $.jqplot.postParseOptionsHooks.push(postParseOptions);
1019
+
1020
+ $.jqplot.MeterGaugeTickRenderer = function() {
1021
+ $.jqplot.AxisTickRenderer.call(this);
1022
+ };
1023
+
1024
+ $.jqplot.MeterGaugeTickRenderer.prototype = new $.jqplot.AxisTickRenderer();
1025
+ $.jqplot.MeterGaugeTickRenderer.prototype.constructor = $.jqplot.MeterGaugeTickRenderer;
1026
+
1027
+ })(jQuery);
1028
+
1029
+