old_sql 1.16.0 → 1.17.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (273) hide show
  1. data/README.md +24 -13
  2. data/app/controllers/old_sql/report_controller.rb +3 -17
  3. data/app/views/layouts/old_sql/chart.html.erb +11 -0
  4. data/app/views/old_sql/report/chart.html.erb +8 -25
  5. data/lib/generators/old_sql/templates/user_design_template.csv +2 -3
  6. data/lib/generators/old_sql/templates/user_old_sql_demo_chart_design.yml +18 -9
  7. data/lib/old_sql/report_design/chart.rb +2 -2
  8. data/lib/old_sql/report_design/chart_item.rb +4 -4
  9. data/lib/old_sql/report_design/chart_parser.rb +2 -2
  10. data/public/javascripts/old_sql/chart.js +33 -0
  11. metadata +5 -265
  12. data/public/javascripts/old_sql/MochiKit-1.4.2/Changes +0 -362
  13. data/public/javascripts/old_sql/MochiKit-1.4.2/LICENSE.txt +0 -69
  14. data/public/javascripts/old_sql/MochiKit-1.4.2/MANIFEST +0 -179
  15. data/public/javascripts/old_sql/MochiKit-1.4.2/META.json +0 -17
  16. data/public/javascripts/old_sql/MochiKit-1.4.2/doc/html/MochiKit/Async.html +0 -814
  17. data/public/javascripts/old_sql/MochiKit-1.4.2/doc/html/MochiKit/Base.html +0 -1703
  18. data/public/javascripts/old_sql/MochiKit-1.4.2/doc/html/MochiKit/Color.html +0 -755
  19. data/public/javascripts/old_sql/MochiKit-1.4.2/doc/html/MochiKit/DOM.html +0 -1197
  20. data/public/javascripts/old_sql/MochiKit-1.4.2/doc/html/MochiKit/DateTime.html +0 -168
  21. data/public/javascripts/old_sql/MochiKit-1.4.2/doc/html/MochiKit/DragAndDrop.html +0 -187
  22. data/public/javascripts/old_sql/MochiKit-1.4.2/doc/html/MochiKit/Format.html +0 -300
  23. data/public/javascripts/old_sql/MochiKit-1.4.2/doc/html/MochiKit/Iter.html +0 -524
  24. data/public/javascripts/old_sql/MochiKit-1.4.2/doc/html/MochiKit/Logging.html +0 -420
  25. data/public/javascripts/old_sql/MochiKit-1.4.2/doc/html/MochiKit/LoggingPane.html +0 -142
  26. data/public/javascripts/old_sql/MochiKit-1.4.2/doc/html/MochiKit/Position.html +0 -38
  27. data/public/javascripts/old_sql/MochiKit-1.4.2/doc/html/MochiKit/Selector.html +0 -240
  28. data/public/javascripts/old_sql/MochiKit-1.4.2/doc/html/MochiKit/Signal.html +0 -508
  29. data/public/javascripts/old_sql/MochiKit-1.4.2/doc/html/MochiKit/Sortable.html +0 -244
  30. data/public/javascripts/old_sql/MochiKit-1.4.2/doc/html/MochiKit/Style.html +0 -385
  31. data/public/javascripts/old_sql/MochiKit-1.4.2/doc/html/MochiKit/VersionHistory.html +0 -384
  32. data/public/javascripts/old_sql/MochiKit-1.4.2/doc/html/MochiKit/Visual.html +0 -1161
  33. data/public/javascripts/old_sql/MochiKit-1.4.2/doc/html/MochiKit/index.html +0 -447
  34. data/public/javascripts/old_sql/MochiKit-1.4.2/doc/js/toc.js +0 -113
  35. data/public/javascripts/old_sql/MochiKit-1.4.2/doc/rst/MochiKit/Async.rst +0 -767
  36. data/public/javascripts/old_sql/MochiKit-1.4.2/doc/rst/MochiKit/Base.rst +0 -1445
  37. data/public/javascripts/old_sql/MochiKit-1.4.2/doc/rst/MochiKit/Color.rst +0 -651
  38. data/public/javascripts/old_sql/MochiKit-1.4.2/doc/rst/MochiKit/DOM.rst +0 -1143
  39. data/public/javascripts/old_sql/MochiKit-1.4.2/doc/rst/MochiKit/DateTime.rst +0 -145
  40. data/public/javascripts/old_sql/MochiKit-1.4.2/doc/rst/MochiKit/DragAndDrop.rst +0 -197
  41. data/public/javascripts/old_sql/MochiKit-1.4.2/doc/rst/MochiKit/Format.rst +0 -258
  42. data/public/javascripts/old_sql/MochiKit-1.4.2/doc/rst/MochiKit/Iter.rst +0 -454
  43. data/public/javascripts/old_sql/MochiKit-1.4.2/doc/rst/MochiKit/Logging.rst +0 -348
  44. data/public/javascripts/old_sql/MochiKit-1.4.2/doc/rst/MochiKit/LoggingPane.rst +0 -128
  45. data/public/javascripts/old_sql/MochiKit-1.4.2/doc/rst/MochiKit/Position.rst +0 -26
  46. data/public/javascripts/old_sql/MochiKit-1.4.2/doc/rst/MochiKit/Selector.rst +0 -203
  47. data/public/javascripts/old_sql/MochiKit-1.4.2/doc/rst/MochiKit/Signal.rst +0 -498
  48. data/public/javascripts/old_sql/MochiKit-1.4.2/doc/rst/MochiKit/Sortable.rst +0 -186
  49. data/public/javascripts/old_sql/MochiKit-1.4.2/doc/rst/MochiKit/Style.rst +0 -353
  50. data/public/javascripts/old_sql/MochiKit-1.4.2/doc/rst/MochiKit/VersionHistory.rst +0 -362
  51. data/public/javascripts/old_sql/MochiKit-1.4.2/doc/rst/MochiKit/Visual.rst +0 -895
  52. data/public/javascripts/old_sql/MochiKit-1.4.2/doc/rst/MochiKit/index.rst +0 -83
  53. data/public/javascripts/old_sql/MochiKit-1.4.2/examples/ajax_tables/ajax_tables.css +0 -69
  54. data/public/javascripts/old_sql/MochiKit-1.4.2/examples/ajax_tables/ajax_tables.js +0 -401
  55. data/public/javascripts/old_sql/MochiKit-1.4.2/examples/ajax_tables/domains.json +0 -10
  56. data/public/javascripts/old_sql/MochiKit-1.4.2/examples/ajax_tables/domains.xml +0 -40
  57. data/public/javascripts/old_sql/MochiKit-1.4.2/examples/ajax_tables/index.html +0 -96
  58. data/public/javascripts/old_sql/MochiKit-1.4.2/examples/color_wheel/color_wheel.css +0 -4
  59. data/public/javascripts/old_sql/MochiKit-1.4.2/examples/color_wheel/color_wheel.js +0 -95
  60. data/public/javascripts/old_sql/MochiKit-1.4.2/examples/color_wheel/index.html +0 -31
  61. data/public/javascripts/old_sql/MochiKit-1.4.2/examples/dnd_sortable/dnd_sortable.css +0 -23
  62. data/public/javascripts/old_sql/MochiKit-1.4.2/examples/dnd_sortable/dropmarker.png +0 -0
  63. data/public/javascripts/old_sql/MochiKit-1.4.2/examples/dnd_sortable/icon.png +0 -0
  64. data/public/javascripts/old_sql/MochiKit-1.4.2/examples/dnd_sortable/index.html +0 -54
  65. data/public/javascripts/old_sql/MochiKit-1.4.2/examples/dnd_sortable/sortable2_test.html +0 -150
  66. data/public/javascripts/old_sql/MochiKit-1.4.2/examples/dnd_sortable/sortable3_test.html +0 -42
  67. data/public/javascripts/old_sql/MochiKit-1.4.2/examples/dnd_sortable/sortable4_test.html +0 -90
  68. data/public/javascripts/old_sql/MochiKit-1.4.2/examples/dnd_sortable/sortable5_test.html +0 -29
  69. data/public/javascripts/old_sql/MochiKit-1.4.2/examples/dnd_sortable/sortable_test.html +0 -38
  70. data/public/javascripts/old_sql/MochiKit-1.4.2/examples/dnd_sortable/sortable_tree_test.html +0 -189
  71. data/public/javascripts/old_sql/MochiKit-1.4.2/examples/draggable/draggable.css +0 -28
  72. data/public/javascripts/old_sql/MochiKit-1.4.2/examples/draggable/draggable.js +0 -73
  73. data/public/javascripts/old_sql/MochiKit-1.4.2/examples/draggable/index.html +0 -38
  74. data/public/javascripts/old_sql/MochiKit-1.4.2/examples/effects/effects_bigslide.html +0 -36
  75. data/public/javascripts/old_sql/MochiKit-1.4.2/examples/effects/effects_blind.html +0 -65
  76. data/public/javascripts/old_sql/MochiKit-1.4.2/examples/effects/effects_blindslide.html +0 -31
  77. data/public/javascripts/old_sql/MochiKit-1.4.2/examples/effects/effects_combi.css +0 -18
  78. data/public/javascripts/old_sql/MochiKit-1.4.2/examples/effects/effects_fadeappear.html +0 -61
  79. data/public/javascripts/old_sql/MochiKit-1.4.2/examples/effects/effects_grow_shrink.html +0 -38
  80. data/public/javascripts/old_sql/MochiKit-1.4.2/examples/effects/effects_onload.html +0 -67
  81. data/public/javascripts/old_sql/MochiKit-1.4.2/examples/effects/effects_queue.html +0 -67
  82. data/public/javascripts/old_sql/MochiKit-1.4.2/examples/effects/effects_queue_limit.html +0 -30
  83. data/public/javascripts/old_sql/MochiKit-1.4.2/examples/effects/effects_scroll.html +0 -483
  84. data/public/javascripts/old_sql/MochiKit-1.4.2/examples/effects/effects_slide.html +0 -62
  85. data/public/javascripts/old_sql/MochiKit-1.4.2/examples/effects/full.html +0 -71
  86. data/public/javascripts/old_sql/MochiKit-1.4.2/examples/effects/icon.png +0 -0
  87. data/public/javascripts/old_sql/MochiKit-1.4.2/examples/effects/index.html +0 -150
  88. data/public/javascripts/old_sql/MochiKit-1.4.2/examples/interpreter/index.html +0 -88
  89. data/public/javascripts/old_sql/MochiKit-1.4.2/examples/interpreter/interpreter.css +0 -54
  90. data/public/javascripts/old_sql/MochiKit-1.4.2/examples/interpreter/interpreter.js +0 -373
  91. data/public/javascripts/old_sql/MochiKit-1.4.2/examples/key_events/index.html +0 -78
  92. data/public/javascripts/old_sql/MochiKit-1.4.2/examples/key_events/key_events.css +0 -5
  93. data/public/javascripts/old_sql/MochiKit-1.4.2/examples/key_events/key_events.js +0 -85
  94. data/public/javascripts/old_sql/MochiKit-1.4.2/examples/logging_pane/index.html +0 -46
  95. data/public/javascripts/old_sql/MochiKit-1.4.2/examples/logging_pane/logging_pane.css +0 -78
  96. data/public/javascripts/old_sql/MochiKit-1.4.2/examples/logging_pane/logging_pane.js +0 -11
  97. data/public/javascripts/old_sql/MochiKit-1.4.2/examples/mochiregexp/index.html +0 -74
  98. data/public/javascripts/old_sql/MochiKit-1.4.2/examples/mochiregexp/mochiregexp.css +0 -73
  99. data/public/javascripts/old_sql/MochiKit-1.4.2/examples/mochiregexp/mochiregexp.js +0 -125
  100. data/public/javascripts/old_sql/MochiKit-1.4.2/examples/mouse_events/index.html +0 -88
  101. data/public/javascripts/old_sql/MochiKit-1.4.2/examples/mouse_events/mouse_events.css +0 -17
  102. data/public/javascripts/old_sql/MochiKit-1.4.2/examples/mouse_events/mouse_events.js +0 -59
  103. data/public/javascripts/old_sql/MochiKit-1.4.2/examples/rounded_corners/index.html +0 -28
  104. data/public/javascripts/old_sql/MochiKit-1.4.2/examples/rounded_corners/rounded_corners.css +0 -3
  105. data/public/javascripts/old_sql/MochiKit-1.4.2/examples/rounded_corners/rounded_corners.js +0 -19
  106. data/public/javascripts/old_sql/MochiKit-1.4.2/examples/simple_dnd/dnd_boxes.html +0 -45
  107. data/public/javascripts/old_sql/MochiKit-1.4.2/examples/simple_dnd/dnd_full.html +0 -119
  108. data/public/javascripts/old_sql/MochiKit-1.4.2/examples/simple_dnd/dnd_ghost.html +0 -40
  109. data/public/javascripts/old_sql/MochiKit-1.4.2/examples/simple_dnd/dnd_hoverclass.html +0 -43
  110. data/public/javascripts/old_sql/MochiKit-1.4.2/examples/simple_dnd/dnd_scroll.html +0 -91
  111. data/public/javascripts/old_sql/MochiKit-1.4.2/examples/simple_dnd/dnd_snap.html +0 -54
  112. data/public/javascripts/old_sql/MochiKit-1.4.2/examples/simple_dnd/index.html +0 -93
  113. data/public/javascripts/old_sql/MochiKit-1.4.2/examples/simple_dnd/simple_dnd.css +0 -64
  114. data/public/javascripts/old_sql/MochiKit-1.4.2/examples/sortable_tables/index.html +0 -71
  115. data/public/javascripts/old_sql/MochiKit-1.4.2/examples/sortable_tables/sortable_tables.css +0 -66
  116. data/public/javascripts/old_sql/MochiKit-1.4.2/examples/sortable_tables/sortable_tables.js +0 -203
  117. data/public/javascripts/old_sql/MochiKit-1.4.2/examples/view-source/lib/SyntaxHighlighter/SyntaxHighlighter.css +0 -177
  118. data/public/javascripts/old_sql/MochiKit-1.4.2/examples/view-source/lib/SyntaxHighlighter/Tests.html +0 -339
  119. data/public/javascripts/old_sql/MochiKit-1.4.2/examples/view-source/lib/SyntaxHighlighter/shBrushCSharp.js +0 -30
  120. data/public/javascripts/old_sql/MochiKit-1.4.2/examples/view-source/lib/SyntaxHighlighter/shBrushDelphi.js +0 -31
  121. data/public/javascripts/old_sql/MochiKit-1.4.2/examples/view-source/lib/SyntaxHighlighter/shBrushJScript.js +0 -22
  122. data/public/javascripts/old_sql/MochiKit-1.4.2/examples/view-source/lib/SyntaxHighlighter/shBrushPhp.js +0 -23
  123. data/public/javascripts/old_sql/MochiKit-1.4.2/examples/view-source/lib/SyntaxHighlighter/shBrushPython.js +0 -71
  124. data/public/javascripts/old_sql/MochiKit-1.4.2/examples/view-source/lib/SyntaxHighlighter/shBrushSql.js +0 -40
  125. data/public/javascripts/old_sql/MochiKit-1.4.2/examples/view-source/lib/SyntaxHighlighter/shBrushVb.js +0 -29
  126. data/public/javascripts/old_sql/MochiKit-1.4.2/examples/view-source/lib/SyntaxHighlighter/shBrushXml.js +0 -61
  127. data/public/javascripts/old_sql/MochiKit-1.4.2/examples/view-source/lib/SyntaxHighlighter/shCore.js +0 -622
  128. data/public/javascripts/old_sql/MochiKit-1.4.2/examples/view-source/view-source.css +0 -1
  129. data/public/javascripts/old_sql/MochiKit-1.4.2/examples/view-source/view-source.html +0 -19
  130. data/public/javascripts/old_sql/MochiKit-1.4.2/examples/view-source/view-source.js +0 -70
  131. data/public/javascripts/old_sql/MochiKit-1.4.2/include/_img/bg_docheader.gif +0 -0
  132. data/public/javascripts/old_sql/MochiKit-1.4.2/include/_img/g_bullet.gif +0 -0
  133. data/public/javascripts/old_sql/MochiKit-1.4.2/include/_img/g_logo_doc.gif +0 -0
  134. data/public/javascripts/old_sql/MochiKit-1.4.2/include/css/documentation.css +0 -130
  135. data/public/javascripts/old_sql/MochiKit-1.4.2/include/css/general.css +0 -48
  136. data/public/javascripts/old_sql/MochiKit-1.4.2/lib/MochiKit/Async.js +0 -682
  137. data/public/javascripts/old_sql/MochiKit-1.4.2/lib/MochiKit/Base.js +0 -1489
  138. data/public/javascripts/old_sql/MochiKit-1.4.2/lib/MochiKit/Color.js +0 -863
  139. data/public/javascripts/old_sql/MochiKit-1.4.2/lib/MochiKit/DOM.js +0 -1256
  140. data/public/javascripts/old_sql/MochiKit-1.4.2/lib/MochiKit/DateTime.js +0 -222
  141. data/public/javascripts/old_sql/MochiKit-1.4.2/lib/MochiKit/DragAndDrop.js +0 -793
  142. data/public/javascripts/old_sql/MochiKit-1.4.2/lib/MochiKit/Format.js +0 -304
  143. data/public/javascripts/old_sql/MochiKit-1.4.2/lib/MochiKit/Iter.js +0 -844
  144. data/public/javascripts/old_sql/MochiKit-1.4.2/lib/MochiKit/Logging.js +0 -315
  145. data/public/javascripts/old_sql/MochiKit-1.4.2/lib/MochiKit/LoggingPane.js +0 -353
  146. data/public/javascripts/old_sql/MochiKit-1.4.2/lib/MochiKit/MochiKit.js +0 -188
  147. data/public/javascripts/old_sql/MochiKit-1.4.2/lib/MochiKit/MockDOM.js +0 -115
  148. data/public/javascripts/old_sql/MochiKit-1.4.2/lib/MochiKit/Position.js +0 -236
  149. data/public/javascripts/old_sql/MochiKit-1.4.2/lib/MochiKit/Selector.js +0 -415
  150. data/public/javascripts/old_sql/MochiKit-1.4.2/lib/MochiKit/Signal.js +0 -897
  151. data/public/javascripts/old_sql/MochiKit-1.4.2/lib/MochiKit/Sortable.js +0 -589
  152. data/public/javascripts/old_sql/MochiKit-1.4.2/lib/MochiKit/Style.js +0 -594
  153. data/public/javascripts/old_sql/MochiKit-1.4.2/lib/MochiKit/Test.js +0 -162
  154. data/public/javascripts/old_sql/MochiKit-1.4.2/lib/MochiKit/Visual.js +0 -2026
  155. data/public/javascripts/old_sql/MochiKit-1.4.2/lib/MochiKit/__package__.js +0 -18
  156. data/public/javascripts/old_sql/MochiKit-1.4.2/packed/MochiKit/MochiKit.js +0 -7829
  157. data/public/javascripts/old_sql/MochiKit-1.4.2/packed/MochiKit/__package__.js +0 -6
  158. data/public/javascripts/old_sql/MochiKit-1.4.2/packed/MochiKit/customize.html +0 -251
  159. data/public/javascripts/old_sql/MochiKit-1.4.2/tests/FakeJSAN.js +0 -40
  160. data/public/javascripts/old_sql/MochiKit-1.4.2/tests/SimpleTest/SimpleTest.js +0 -381
  161. data/public/javascripts/old_sql/MochiKit-1.4.2/tests/SimpleTest/TestRunner.js +0 -159
  162. data/public/javascripts/old_sql/MochiKit-1.4.2/tests/SimpleTest/test.css +0 -28
  163. data/public/javascripts/old_sql/MochiKit-1.4.2/tests/cli.js +0 -6
  164. data/public/javascripts/old_sql/MochiKit-1.4.2/tests/index.html +0 -25
  165. data/public/javascripts/old_sql/MochiKit-1.4.2/tests/standalone.js +0 -16
  166. data/public/javascripts/old_sql/MochiKit-1.4.2/tests/test_Base.js +0 -577
  167. data/public/javascripts/old_sql/MochiKit-1.4.2/tests/test_Color.js +0 -137
  168. data/public/javascripts/old_sql/MochiKit-1.4.2/tests/test_DateTime.js +0 -52
  169. data/public/javascripts/old_sql/MochiKit-1.4.2/tests/test_DragAndDrop.js +0 -30
  170. data/public/javascripts/old_sql/MochiKit-1.4.2/tests/test_Format.js +0 -89
  171. data/public/javascripts/old_sql/MochiKit-1.4.2/tests/test_Iter.js +0 -186
  172. data/public/javascripts/old_sql/MochiKit-1.4.2/tests/test_Logging.js +0 -88
  173. data/public/javascripts/old_sql/MochiKit-1.4.2/tests/test_MochiKit-Async.html +0 -408
  174. data/public/javascripts/old_sql/MochiKit-1.4.2/tests/test_MochiKit-Async.json +0 -1
  175. data/public/javascripts/old_sql/MochiKit-1.4.2/tests/test_MochiKit-Base.html +0 -34
  176. data/public/javascripts/old_sql/MochiKit-1.4.2/tests/test_MochiKit-Color.html +0 -84
  177. data/public/javascripts/old_sql/MochiKit-1.4.2/tests/test_MochiKit-DOM-Safari.html +0 -48
  178. data/public/javascripts/old_sql/MochiKit-1.4.2/tests/test_MochiKit-DOM.html +0 -363
  179. data/public/javascripts/old_sql/MochiKit-1.4.2/tests/test_MochiKit-DateTime.html +0 -39
  180. data/public/javascripts/old_sql/MochiKit-1.4.2/tests/test_MochiKit-DragAndDrop.html +0 -54
  181. data/public/javascripts/old_sql/MochiKit-1.4.2/tests/test_MochiKit-Format.html +0 -39
  182. data/public/javascripts/old_sql/MochiKit-1.4.2/tests/test_MochiKit-Iter.html +0 -38
  183. data/public/javascripts/old_sql/MochiKit-1.4.2/tests/test_MochiKit-JSAN.html +0 -32
  184. data/public/javascripts/old_sql/MochiKit-1.4.2/tests/test_MochiKit-Logging.html +0 -40
  185. data/public/javascripts/old_sql/MochiKit-1.4.2/tests/test_MochiKit-MochiKit.html +0 -18
  186. data/public/javascripts/old_sql/MochiKit-1.4.2/tests/test_MochiKit-Selector.html +0 -295
  187. data/public/javascripts/old_sql/MochiKit-1.4.2/tests/test_MochiKit-Signal.html +0 -43
  188. data/public/javascripts/old_sql/MochiKit-1.4.2/tests/test_MochiKit-Style.html +0 -223
  189. data/public/javascripts/old_sql/MochiKit-1.4.2/tests/test_MochiKit-Visual.html +0 -197
  190. data/public/javascripts/old_sql/MochiKit-1.4.2/tests/test_Signal.js +0 -481
  191. data/public/javascripts/old_sql/plotkit-0.9.1/COPYING +0 -28
  192. data/public/javascripts/old_sql/plotkit-0.9.1/PlotKit/Base.js +0 -406
  193. data/public/javascripts/old_sql/plotkit-0.9.1/PlotKit/Canvas.js +0 -683
  194. data/public/javascripts/old_sql/plotkit-0.9.1/PlotKit/EasyPlot.js +0 -161
  195. data/public/javascripts/old_sql/plotkit-0.9.1/PlotKit/Layout.js +0 -756
  196. data/public/javascripts/old_sql/plotkit-0.9.1/PlotKit/PlotKit.js +0 -151
  197. data/public/javascripts/old_sql/plotkit-0.9.1/PlotKit/PlotKit_Packed.js +0 -2177
  198. data/public/javascripts/old_sql/plotkit-0.9.1/PlotKit/SVG.js +0 -705
  199. data/public/javascripts/old_sql/plotkit-0.9.1/PlotKit/SweetCanvas.js +0 -348
  200. data/public/javascripts/old_sql/plotkit-0.9.1/PlotKit/SweetSVG.js +0 -247
  201. data/public/javascripts/old_sql/plotkit-0.9.1/PlotKit/dummy.svg +0 -9
  202. data/public/javascripts/old_sql/plotkit-0.9.1/PlotKit/excanvas.js +0 -723
  203. data/public/javascripts/old_sql/plotkit-0.9.1/README +0 -1
  204. data/public/javascripts/old_sql/plotkit-0.9.1/doc/MochiKitAdditions.html +0 -2
  205. data/public/javascripts/old_sql/plotkit-0.9.1/doc/MochiKitAdditions.txt +0 -2
  206. data/public/javascripts/old_sql/plotkit-0.9.1/doc/PlotKit.Base.html +0 -302
  207. data/public/javascripts/old_sql/plotkit-0.9.1/doc/PlotKit.Base.txt +0 -139
  208. data/public/javascripts/old_sql/plotkit-0.9.1/doc/PlotKit.Canvas.html +0 -172
  209. data/public/javascripts/old_sql/plotkit-0.9.1/doc/PlotKit.Canvas.txt +0 -81
  210. data/public/javascripts/old_sql/plotkit-0.9.1/doc/PlotKit.EasyPlot.html +0 -155
  211. data/public/javascripts/old_sql/plotkit-0.9.1/doc/PlotKit.EasyPlot.txt +0 -50
  212. data/public/javascripts/old_sql/plotkit-0.9.1/doc/PlotKit.Layout.html +0 -428
  213. data/public/javascripts/old_sql/plotkit-0.9.1/doc/PlotKit.Layout.txt +0 -330
  214. data/public/javascripts/old_sql/plotkit-0.9.1/doc/PlotKit.QuickStart.html +0 -368
  215. data/public/javascripts/old_sql/plotkit-0.9.1/doc/PlotKit.QuickStart.txt +0 -256
  216. data/public/javascripts/old_sql/plotkit-0.9.1/doc/PlotKit.Renderer.html +0 -436
  217. data/public/javascripts/old_sql/plotkit-0.9.1/doc/PlotKit.Renderer.txt +0 -299
  218. data/public/javascripts/old_sql/plotkit-0.9.1/doc/PlotKit.SVG.html +0 -159
  219. data/public/javascripts/old_sql/plotkit-0.9.1/doc/PlotKit.SVG.txt +0 -64
  220. data/public/javascripts/old_sql/plotkit-0.9.1/doc/PlotKit.SweetCanvas.html +0 -131
  221. data/public/javascripts/old_sql/plotkit-0.9.1/doc/PlotKit.SweetCanvas.txt +0 -34
  222. data/public/javascripts/old_sql/plotkit-0.9.1/doc/PlotKit.SweetSVG.html +0 -131
  223. data/public/javascripts/old_sql/plotkit-0.9.1/doc/PlotKit.SweetSVG.txt +0 -34
  224. data/public/javascripts/old_sql/plotkit-0.9.1/doc/PlotKit.html +0 -334
  225. data/public/javascripts/old_sql/plotkit-0.9.1/doc/PlotKit.txt +0 -151
  226. data/public/javascripts/old_sql/plotkit-0.9.1/doc/SVGCanvasCompat.html +0 -304
  227. data/public/javascripts/old_sql/plotkit-0.9.1/doc/SVGCanvasCompat.txt +0 -144
  228. data/public/javascripts/old_sql/plotkit-0.9.1/doc/barsample.png +0 -0
  229. data/public/javascripts/old_sql/plotkit-0.9.1/doc/black.png +0 -0
  230. data/public/javascripts/old_sql/plotkit-0.9.1/doc/blue.png +0 -0
  231. data/public/javascripts/old_sql/plotkit-0.9.1/doc/cyan.png +0 -0
  232. data/public/javascripts/old_sql/plotkit-0.9.1/doc/doc.css +0 -62
  233. data/public/javascripts/old_sql/plotkit-0.9.1/doc/generate.py +0 -37
  234. data/public/javascripts/old_sql/plotkit-0.9.1/doc/green.png +0 -0
  235. data/public/javascripts/old_sql/plotkit-0.9.1/doc/orange.png +0 -0
  236. data/public/javascripts/old_sql/plotkit-0.9.1/doc/piesample.png +0 -0
  237. data/public/javascripts/old_sql/plotkit-0.9.1/doc/purple.png +0 -0
  238. data/public/javascripts/old_sql/plotkit-0.9.1/doc/red.png +0 -0
  239. data/public/javascripts/old_sql/plotkit-0.9.1/scripts/custom_rhino.jar +0 -0
  240. data/public/javascripts/old_sql/plotkit-0.9.1/scripts/pack.py +0 -58
  241. data/public/javascripts/old_sql/plotkit-0.9.1/tests/axis.html +0 -31
  242. data/public/javascripts/old_sql/plotkit-0.9.1/tests/basic.html +0 -25
  243. data/public/javascripts/old_sql/plotkit-0.9.1/tests/basic.js +0 -143
  244. data/public/javascripts/old_sql/plotkit-0.9.1/tests/debug.html +0 -56
  245. data/public/javascripts/old_sql/plotkit-0.9.1/tests/demo-svg.html +0 -58
  246. data/public/javascripts/old_sql/plotkit-0.9.1/tests/demo-svg.js +0 -133
  247. data/public/javascripts/old_sql/plotkit-0.9.1/tests/demo.html +0 -57
  248. data/public/javascripts/old_sql/plotkit-0.9.1/tests/demo.js +0 -136
  249. data/public/javascripts/old_sql/plotkit-0.9.1/tests/dynamic.html +0 -161
  250. data/public/javascripts/old_sql/plotkit-0.9.1/tests/img/firefox.png +0 -0
  251. data/public/javascripts/old_sql/plotkit-0.9.1/tests/img/konqueror.png +0 -0
  252. data/public/javascripts/old_sql/plotkit-0.9.1/tests/img/mozilla.ico +0 -0
  253. data/public/javascripts/old_sql/plotkit-0.9.1/tests/img/msie.gif +0 -0
  254. data/public/javascripts/old_sql/plotkit-0.9.1/tests/img/opera.ico +0 -0
  255. data/public/javascripts/old_sql/plotkit-0.9.1/tests/img/safari.gif +0 -0
  256. data/public/javascripts/old_sql/plotkit-0.9.1/tests/labels-img.html +0 -38
  257. data/public/javascripts/old_sql/plotkit-0.9.1/tests/labels.html +0 -43
  258. data/public/javascripts/old_sql/plotkit-0.9.1/tests/prototype_compat.html +0 -28
  259. data/public/javascripts/old_sql/plotkit-0.9.1/tests/quickstart-easy.html +0 -29
  260. data/public/javascripts/old_sql/plotkit-0.9.1/tests/quickstart-horiz.html +0 -53
  261. data/public/javascripts/old_sql/plotkit-0.9.1/tests/quickstart-neg.html +0 -29
  262. data/public/javascripts/old_sql/plotkit-0.9.1/tests/quickstart-svg.html +0 -61
  263. data/public/javascripts/old_sql/plotkit-0.9.1/tests/quickstart.html +0 -57
  264. data/public/javascripts/old_sql/plotkit-0.9.1/tests/sample.txt +0 -6
  265. data/public/javascripts/old_sql/plotkit-0.9.1/tests/svg-sweet.html +0 -29
  266. data/public/javascripts/old_sql/plotkit-0.9.1/tests/svg-sweet.js +0 -141
  267. data/public/javascripts/old_sql/plotkit-0.9.1/tests/svg.html +0 -26
  268. data/public/javascripts/old_sql/plotkit-0.9.1/tests/svg.js +0 -147
  269. data/public/javascripts/old_sql/plotkit-0.9.1/tests/sweet.html +0 -24
  270. data/public/javascripts/old_sql/plotkit-0.9.1/tests/sweet.js +0 -89
  271. data/public/javascripts/old_sql/plotkit-0.9.1/tests/tests.css +0 -66
  272. data/public/javascripts/old_sql/plotkit-0.9.1/tests/testsvg.html +0 -20
  273. data/public/javascripts/old_sql/plotkit-0.9.1/tests/testsvg.js +0 -31
@@ -1,161 +0,0 @@
1
- /*
2
- PlotKit EasyPlot
3
- ================
4
-
5
- User friendly wrapper around the common plotting functions.
6
-
7
- Copyright
8
- ---------
9
- Copyright 2005,2006 (c) Alastair Tse <alastair^liquidx.net>
10
- For use under the BSD license. <http://www.liquidx.net/plotkit>
11
-
12
- */
13
-
14
- try {
15
- if (typeof(PlotKit.CanvasRenderer) == 'undefined')
16
- {
17
- throw ""
18
- }
19
- }
20
- catch (e) {
21
- throw "PlotKit.EasyPlot depends on all of PlotKit's components";
22
- }
23
-
24
- // --------------------------------------------------------------------
25
- // Start of EasyPlot definition
26
- // --------------------------------------------------------------------
27
-
28
- if (typeof(PlotKit.EasyPlot) == 'undefined') {
29
- PlotKit.EasyPlot = {};
30
- }
31
-
32
- PlotKit.EasyPlot.NAME = "PlotKit.EasyPlot";
33
- PlotKit.EasyPlot.VERSION = PlotKit.VERSION;
34
-
35
- PlotKit.EasyPlot.__repr__ = function() {
36
- return "[" + this.NAME + " " + this.VERSION + "]";
37
- };
38
-
39
- PlotKit.EasyPlot.toString = function() {
40
- return this.__repr__();
41
- }
42
-
43
- // --------------------------------------------------------------------
44
- // Start of EasyPlot definition
45
- // --------------------------------------------------------------------
46
-
47
- PlotKit.EasyPlot = function(style, options, divElem, datasources) {
48
- this.layout = new Layout(style, options);
49
- this.divElem = divElem;
50
- this.width = parseInt(divElem.getAttribute('width'));
51
- this.height = parseInt(divElem.getAttribute('height'));
52
- this.deferredCount = 0;
53
-
54
- // make sure we have non-zero width
55
- if (this.width < 1) {
56
- this.width = this.divElem.width ? this.divElem.width : 300;
57
- }
58
-
59
- if (this.height < 1) {
60
- this.height = this.divElem.height ? this.divElem.height : 300;
61
- }
62
-
63
- // load data sources
64
- if (isArrayLike(datasources)) {
65
- for (var i = 0; i < datasources.length; i++) {
66
- if (typeof(datasources[i]) == "string") {
67
- this.deferredCount++;
68
- // load CSV via ajax
69
- var d = MochiKit.Async.doSimpleXMLHttpRequest(datasources[i]);
70
- d.addCallback(MochiKit.Base.bind(PlotKit.EasyPlot.onDataLoaded, this));
71
- }
72
- else if (isArrayLike(datasources[i])) {
73
- this.layout.addDataset("data-" + i, datasources[i]);
74
- }
75
- }
76
- }
77
- else if (!isUndefinedOrNull(datasources)) {
78
- throw "Passed datasources are not Array like";
79
- }
80
-
81
- // setup canvas to render
82
-
83
- if (CanvasRenderer.isSupported()) {
84
- this.element = CANVAS({"id": this.divElem.getAttribute("id") + "-canvas",
85
- "width": this.width,
86
- "height": this.height}, "");
87
- this.divElem.appendChild(this.element);
88
- this.renderer = new SweetCanvasRenderer(this.element, this.layout, options);
89
- }
90
- else if (SVGRenderer.isSupported()) {
91
- this.element = SVGRenderer.SVG({"id": this.divElem.getAttribute("id") + "-svg",
92
- "width": this.width,
93
- "height": this.height,
94
- "version": "1.1",
95
- "baseProfile": "full"}, "");
96
- this.divElem.appendChild(this.element);
97
- this.renderer = new SweetSVGRenderer(this.element, this.layout, options);
98
- }
99
-
100
- if ((this.deferredCount == 0) && (PlotKit.Base.keys(this.layout.datasets).length > 0)) {
101
- this.layout.evaluate();
102
- this.renderer.clear();
103
- this.renderer.render();
104
- }
105
-
106
- };
107
-
108
- PlotKit.EasyPlot.onDataLoaded = function(request) {
109
-
110
- // very primitive CSV parser, should fix to make it more compliant.
111
- var table = new Array();
112
- var lines = request.responseText.split('\n');
113
- for (var i = 0; i < lines.length; i++) {
114
- var stripped = MochiKit.Format.strip(lines[i]);
115
- if ((stripped.length > 1) && (stripped.charAt(0) != '#')) {
116
- table.push(stripped.split(','));
117
- }
118
- }
119
-
120
- this.layout.addDataset("data-ajax-" + this.deferredCount, table);
121
- this.deferredCount--;
122
-
123
- if ((this.deferredCount == 0) && (PlotKit.Base.keys(this.layout.datasets).length > 0)) {
124
- this.layout.evaluate();
125
- this.renderer.clear();
126
- this.renderer.render();
127
- }
128
- };
129
-
130
- PlotKit.EasyPlot.prototype.reload = function() {
131
- this.layout.evaluate();
132
- this.renderer.clear();
133
- this.renderer.render();
134
- };
135
-
136
- // Namespace Iniitialisation
137
-
138
- PlotKit.EasyPlotModule = {};
139
- PlotKit.EasyPlotModule.EasyPlot = PlotKit.EasyPlot;
140
-
141
- PlotKit.EasyPlotModule.EXPORT = [
142
- "EasyPlot"
143
- ];
144
-
145
- PlotKit.EasyPlotModule.EXPORT_OK = [];
146
-
147
- PlotKit.EasyPlotModule.__new__ = function() {
148
- var m = MochiKit.Base;
149
-
150
- m.nameFunctions(this);
151
-
152
- this.EXPORT_TAGS = {
153
- ":common": this.EXPORT,
154
- ":all": m.concat(this.EXPORT, this.EXPORT_OK)
155
- };
156
- };
157
-
158
- PlotKit.EasyPlotModule.__new__();
159
- MochiKit.Base._exportSymbols(this, PlotKit.EasyPlotModule);
160
-
161
-
@@ -1,756 +0,0 @@
1
- /*
2
- PlotKit Layout
3
- ==============
4
-
5
- Handles laying out data on to a virtual canvas square canvas between 0.0
6
- and 1.0. If you want to add new chart/plot types such as point plots,
7
- you need to add them here.
8
-
9
- Copyright
10
- ---------
11
- Copyright 2005,2006 (c) Alastair Tse <alastair^liquidx.net>
12
- For use under the BSD license. <http://www.liquidx.net/plotkit>
13
-
14
- */
15
-
16
- try {
17
- if (typeof(PlotKit.Base) == 'undefined')
18
- {
19
- throw ""
20
- }
21
- }
22
- catch (e) {
23
- throw "PlotKit.Layout depends on MochiKit.{Base,Color,DOM,Format} and PlotKit.Base"
24
- }
25
-
26
- // --------------------------------------------------------------------
27
- // Start of Layout definition
28
- // --------------------------------------------------------------------
29
-
30
- if (typeof(PlotKit.Layout) == 'undefined') {
31
- PlotKit.Layout = {};
32
- }
33
-
34
- PlotKit.Layout.NAME = "PlotKit.Layout";
35
- PlotKit.Layout.VERSION = PlotKit.VERSION;
36
-
37
- PlotKit.Layout.__repr__ = function() {
38
- return "[" + this.NAME + " " + this.VERSION + "]";
39
- };
40
-
41
- PlotKit.Layout.toString = function() {
42
- return this.__repr__();
43
- }
44
-
45
- PlotKit.Layout.valid_styles = ["bar", "line", "pie", "point"];
46
-
47
- // --------------------------------------------------------------------
48
- // Start of Layout definition
49
- // --------------------------------------------------------------------
50
-
51
- PlotKit.Layout = function(style, options) {
52
-
53
- this.options = {
54
- "barWidthFillFraction": 0.75,
55
- "barOrientation": "vertical",
56
- "xOriginIsZero": true,
57
- "yOriginIsZero": true,
58
- "xAxis": null, // [xmin, xmax]
59
- "yAxis": null, // [ymin, ymax]
60
- "xTicks": null, // [{label: "somelabel", v: value}, ..] (label opt.)
61
- "yTicks": null, // [{label: "somelabel", v: value}, ..] (label opt.)
62
- "xNumberOfTicks": 10,
63
- "yNumberOfTicks": 5,
64
- "xTickPrecision": 1,
65
- "yTickPrecision": 1,
66
- "pieRadius": 0.4
67
- };
68
-
69
- // valid external options : TODO: input verification
70
- this.style = style;
71
- MochiKit.Base.update(this.options, options ? options : {});
72
-
73
- // externally visible states
74
- // overriden if xAxis and yAxis are set in options
75
- if (!MochiKit.Base.isUndefinedOrNull(this.options.xAxis)) {
76
- this.minxval = this.options.xAxis[0];
77
- this.maxxval = this.options.xAxis[1];
78
- this.xscale = this.maxxval - this.minxval;
79
- }
80
- else {
81
- this.minxval = 0;
82
- this.maxxval = null;
83
- this.xscale = null; // val -> pos factor (eg, xval * xscale = xpos)
84
- }
85
-
86
- if (!MochiKit.Base.isUndefinedOrNull(this.options.yAxis)) {
87
- this.minyval = this.options.yAxis[0];
88
- this.maxyval = this.options.yAxis[1];
89
- this.yscale = this.maxyval - this.minyval;
90
- }
91
- else {
92
- this.minyval = 0;
93
- this.maxyval = null;
94
- this.yscale = null;
95
- }
96
-
97
- this.bars = new Array(); // array of bars to plot for bar charts
98
- this.points = new Array(); // array of points to plot for line plots
99
- this.slices = new Array(); // array of slices to draw for pie charts
100
-
101
- this.xticks = new Array();
102
- this.yticks = new Array();
103
-
104
- // internal states
105
- this.datasets = new Array();
106
- this.minxdelta = 0;
107
- this.xrange = 1;
108
- this.yrange = 1;
109
-
110
- this.hitTestCache = {x2maxy: null};
111
-
112
- };
113
-
114
- // --------------------------------------------------------------------
115
- // Dataset Manipulation
116
- // --------------------------------------------------------------------
117
-
118
-
119
- PlotKit.Layout.prototype.addDataset = function(setname, set_xy) {
120
- this.datasets[setname] = set_xy;
121
- };
122
-
123
- PlotKit.Layout.prototype.removeDataset = function(setname, set_xy) {
124
- delete this.datasets[setname];
125
- };
126
-
127
- PlotKit.Layout.prototype.addDatasetFromTable = function(name, tableElement, xcol, ycol, lcol) {
128
- var isNil = MochiKit.Base.isUndefinedOrNull;
129
- var scrapeText = MochiKit.DOM.scrapeText;
130
- var strip = MochiKit.Format.strip;
131
-
132
- if (isNil(xcol))
133
- xcol = 0;
134
- if (isNil(ycol))
135
- ycol = 1;
136
- if (isNil(lcol))
137
- lcol = -1;
138
-
139
- var rows = tableElement.tBodies[0].rows;
140
- var data = new Array();
141
- var labels = new Array();
142
-
143
- if (!isNil(rows)) {
144
- for (var i = 0; i < rows.length; i++) {
145
- data.push([parseFloat(strip(scrapeText(rows[i].cells[xcol]))),
146
- parseFloat(strip(scrapeText(rows[i].cells[ycol])))]);
147
- if (lcol >= 0){
148
- labels.push({v: parseFloat(strip(scrapeText(rows[i].cells[xcol]))),
149
- label: strip(scrapeText(rows[i].cells[lcol]))});
150
- }
151
- }
152
- this.addDataset(name, data);
153
- if (lcol >= 0) {
154
- this.options.xTicks = labels;
155
- }
156
- return true;
157
- }
158
- return false;
159
- };
160
-
161
- // --------------------------------------------------------------------
162
- // Evaluates the layout for the current data and style.
163
- // --------------------------------------------------------------------
164
-
165
- PlotKit.Layout.prototype.evaluate = function() {
166
- this._evaluateLimits();
167
- this._evaluateScales();
168
- if (this.style == "bar") {
169
- if (this.options.barOrientation == "horizontal") {
170
- this._evaluateHorizBarCharts();
171
- }
172
- else {
173
- this._evaluateBarCharts();
174
- }
175
- this._evaluateBarTicks();
176
- }
177
- else if (this.style == "line") {
178
- this._evaluateLineCharts();
179
- this._evaluateLineTicks();
180
- }
181
- else if (this.style == "pie") {
182
- this._evaluatePieCharts();
183
- this._evaluatePieTicks();
184
- }
185
- };
186
-
187
-
188
-
189
- // Given the fractional x, y positions, report the corresponding
190
- // x, y values.
191
- PlotKit.Layout.prototype.hitTest = function(x, y) {
192
- // TODO: make this more efficient with better datastructures
193
- // for this.bars, this.points and this.slices
194
-
195
- var f = MochiKit.Format.twoDigitFloat;
196
-
197
- if ((this.style == "bar") && this.bars && (this.bars.length > 0)) {
198
- for (var i = 0; i < this.bars.length; i++) {
199
- var bar = this.bars[i];
200
- if ((x >= bar.x) && (x <= bar.x + bar.w)
201
- && (y >= bar.y) && (y - bar.y <= bar.h))
202
- return bar;
203
- }
204
- }
205
-
206
- else if (this.style == "line") {
207
- if (this.hitTestCache.x2maxy == null) {
208
- this._regenerateHitTestCache();
209
- }
210
-
211
- // 1. find the xvalues that equal or closest to the give x
212
- var xval = x / this.xscale;
213
- var xvalues = this.hitTestCache.xvalues;
214
- var xbefore = null;
215
- var xafter = null;
216
-
217
- for (var i = 1; i < xvalues.length; i++) {
218
- if (xvalues[i] > xval) {
219
- xbefore = xvalues[i-1];
220
- xafter = xvalues[i];
221
- break;
222
- }
223
- }
224
-
225
- if ((xbefore != null)) {
226
- var ybefore = this.hitTestCache.x2maxy[xbefore];
227
- var yafter = this.hitTestCache.x2maxy[xafter];
228
- var yval = (1.0 - y)/this.yscale;
229
-
230
- // interpolate whether we will fall inside or outside
231
- var gradient = (yafter - ybefore) / (xafter - xbefore);
232
- var projmaxy = ybefore + gradient * (xval - xbefore);
233
- if (projmaxy >= yval) {
234
- // inside the highest curve (roughly)
235
- var obj = {xval: xval, yval: yval,
236
- xafter: xafter, yafter: yafter,
237
- xbefore: xbefore, ybefore: ybefore,
238
- yprojected: projmaxy
239
- };
240
- return obj;
241
- }
242
- }
243
- }
244
-
245
- else if (this.style == "pie") {
246
- var dist = Math.sqrt((y-0.5)*(y-0.5) + (x-0.5)*(x-0.5));
247
- if (dist > this.options.pieRadius)
248
- return null;
249
-
250
- // TODO: actually doesn't work if we don't know how the Canvas
251
- // lays it out, need to fix!
252
- var angle = Math.atan2(y - 0.5, x - 0.5) - Math.PI/2;
253
- for (var i = 0; i < this.slices.length; i++) {
254
- var slice = this.slices[i];
255
- if (slice.startAngle < angle && slice.endAngle >= angle)
256
- return slice;
257
- }
258
- }
259
-
260
- return null;
261
- };
262
-
263
- // Reports valid position rectangle for X value (only valid for bar charts)
264
- PlotKit.Layout.prototype.rectForX = function(x) {
265
- return null;
266
- };
267
-
268
- // Reports valid angles through which X value encloses (only valid for pie charts)
269
- PlotKit.Layout.prototype.angleRangeForX = function(x) {
270
- return null;
271
- };
272
-
273
- // --------------------------------------------------------------------
274
- // START Internal Functions
275
- // --------------------------------------------------------------------
276
-
277
- PlotKit.Layout.prototype._evaluateLimits = function() {
278
- // take all values from all datasets and find max and min
279
- var map = PlotKit.Base.map;
280
- var items = PlotKit.Base.items;
281
- var itemgetter = MochiKit.Base.itemgetter;
282
- var collapse = PlotKit.Base.collapse;
283
- var listMin = MochiKit.Base.listMin;
284
- var listMax = MochiKit.Base.listMax;
285
- var isNil = MochiKit.Base.isUndefinedOrNull;
286
-
287
-
288
- var all = collapse(map(itemgetter(1), items(this.datasets)));
289
- if (isNil(this.options.xAxis)) {
290
- if (this.options.xOriginIsZero)
291
- this.minxval = 0;
292
- else
293
- this.minxval = listMin(map(parseFloat, map(itemgetter(0), all)));
294
-
295
- this.maxxval = listMax(map(parseFloat, map(itemgetter(0), all)));
296
- }
297
- else {
298
- this.minxval = this.options.xAxis[0];
299
- this.maxxval = this.options.xAxis[1];
300
- this.xscale = this.maxval - this.minxval;
301
- }
302
-
303
- if (isNil(this.options.yAxis)) {
304
- if (this.options.yOriginIsZero)
305
- this.minyval = 0;
306
- else
307
- this.minyval = listMin(map(parseFloat, map(itemgetter(1), all)));
308
-
309
- this.maxyval = listMax(map(parseFloat, map(itemgetter(1), all)));
310
- }
311
- else {
312
- this.minyval = this.options.yAxis[0];
313
- this.maxyval = this.options.yAxis[1];
314
- this.yscale = this.maxyval - this.minyval;
315
- }
316
-
317
- };
318
-
319
- PlotKit.Layout.prototype._evaluateScales = function() {
320
- var isNil = MochiKit.Base.isUndefinedOrNull;
321
-
322
- this.xrange = this.maxxval - this.minxval;
323
- if (this.xrange == 0)
324
- this.xscale = 1.0;
325
- else
326
- this.xscale = 1/this.xrange;
327
-
328
- this.yrange = this.maxyval - this.minyval;
329
- if (this.yrange == 0)
330
- this.yscale = 1.0;
331
- else
332
- this.yscale = 1/this.yrange;
333
- };
334
-
335
- PlotKit.Layout.prototype._uniqueXValues = function() {
336
- var collapse = PlotKit.Base.collapse;
337
- var map = PlotKit.Base.map;
338
- var uniq = PlotKit.Base.uniq;
339
- var getter = MochiKit.Base.itemgetter;
340
- var items = PlotKit.Base.items;
341
-
342
- var xvalues = map(parseFloat, map(getter(0), collapse(map(getter(1), items(this.datasets)))));
343
- xvalues.sort(MochiKit.Base.compare);
344
- return uniq(xvalues);
345
- };
346
-
347
- // Create the bars
348
- PlotKit.Layout.prototype._evaluateBarCharts = function() {
349
- var items = PlotKit.Base.items;
350
-
351
- var setCount = items(this.datasets).length;
352
-
353
- // work out how far separated values are
354
- var xdelta = 10000000;
355
- var xvalues = this._uniqueXValues();
356
- for (var i = 1; i < xvalues.length; i++) {
357
- xdelta = Math.min(Math.abs(xvalues[i] - xvalues[i-1]), xdelta);
358
- }
359
-
360
- var barWidth = 0;
361
- var barWidthForSet = 0;
362
- var barMargin = 0;
363
- if (xvalues.length == 1) {
364
- // note we have to do something smarter if we only plot one value
365
- xdelta = 1.0;
366
- this.xscale = 1.0;
367
- this.minxval = xvalues[0];
368
- barWidth = 1.0 * this.options.barWidthFillFraction;
369
- barWidthForSet = barWidth/setCount;
370
- barMargin = (1.0 - this.options.barWidthFillFraction)/2;
371
- }
372
- else {
373
- // readjust xscale to fix with bar charts
374
- if (this.xrange == 1) {
375
- this.xscale = 0.5;
376
- }
377
- else if (this.xrange == 2) {
378
- this.xscale = 1/3.0;
379
- }
380
- else {
381
- this.xscale = (1.0 - xdelta/this.xrange)/this.xrange;
382
- }
383
- barWidth = xdelta * this.xscale * this.options.barWidthFillFraction;
384
- barWidthForSet = barWidth / setCount;
385
- barMargin = xdelta * this.xscale * (1.0 - this.options.barWidthFillFraction)/2;
386
- }
387
-
388
- this.minxdelta = xdelta; // need this for tick positions
389
-
390
- // add all the rects
391
- this.bars = new Array();
392
- var i = 0;
393
- for (var setName in this.datasets) {
394
- var dataset = this.datasets[setName];
395
- if (PlotKit.Base.isFuncLike(dataset)) continue;
396
- for (var j = 0; j < dataset.length; j++) {
397
- var item = dataset[j];
398
- var rect = {
399
- x: ((parseFloat(item[0]) - this.minxval) * this.xscale) + (i * barWidthForSet) + barMargin,
400
- y: 1.0 - ((parseFloat(item[1]) - this.minyval) * this.yscale),
401
- w: barWidthForSet,
402
- h: ((parseFloat(item[1]) - this.minyval) * this.yscale),
403
- xval: parseFloat(item[0]),
404
- yval: parseFloat(item[1]),
405
- name: setName
406
- };
407
- if ((rect.x >= 0.0) && (rect.x <= 1.0) &&
408
- (rect.y >= 0.0) && (rect.y <= 1.0)) {
409
- this.bars.push(rect);
410
- }
411
- }
412
- i++;
413
- }
414
- };
415
-
416
- // Create the horizontal bars
417
- PlotKit.Layout.prototype._evaluateHorizBarCharts = function() {
418
- var items = PlotKit.Base.items;
419
-
420
- var setCount = items(this.datasets).length;
421
-
422
- // work out how far separated values are
423
- var xdelta = 10000000;
424
- var xvalues = this._uniqueXValues();
425
- for (var i = 1; i < xvalues.length; i++) {
426
- xdelta = Math.min(Math.abs(xvalues[i] - xvalues[i-1]), xdelta);
427
- }
428
-
429
- var barWidth = 0;
430
- var barWidthForSet = 0;
431
- var barMargin = 0;
432
-
433
- // work out how far each far each bar is separated
434
- if (xvalues.length == 1) {
435
- // do something smarter if we only plot one value
436
- xdelta = 1.0;
437
- this.xscale = 1.0;
438
- this.minxval = xvalues[0];
439
- barWidth = 1.0 * this.options.barWidthFillFraction;
440
- barWidthForSet = barWidth/setCount;
441
- barMargin = (1.0 - this.options.barWidthFillFraction)/2;
442
- }
443
- else {
444
- // readjust yscale to fix with bar charts
445
- this.xscale = (1.0 - xdelta/this.xrange)/this.xrange;
446
- barWidth = xdelta * this.xscale * this.options.barWidthFillFraction;
447
- barWidthForSet = barWidth / setCount;
448
- barMargin = xdelta * this.xscale * (1.0 - this.options.barWidthFillFraction)/2;
449
- }
450
-
451
- this.minxdelta = xdelta; // need this for tick positions
452
-
453
- // add all the rects
454
- this.bars = new Array();
455
- var i = 0;
456
- for (var setName in this.datasets) {
457
- var dataset = this.datasets[setName];
458
- if (PlotKit.Base.isFuncLike(dataset)) continue;
459
- for (var j = 0; j < dataset.length; j++) {
460
- var item = dataset[j];
461
- var rect = {
462
- y: ((parseFloat(item[0]) - this.minxval) * this.xscale) + (i * barWidthForSet) + barMargin,
463
- x: 0.0,
464
- h: barWidthForSet,
465
- w: ((parseFloat(item[1]) - this.minyval) * this.yscale),
466
- xval: parseFloat(item[0]),
467
- yval: parseFloat(item[1]),
468
- name: setName
469
- };
470
-
471
- // limit the x, y values so they do not overdraw
472
- if (rect.y <= 0.0) {
473
- rect.y = 0.0;
474
- }
475
- if (rect.y >= 1.0) {
476
- rect.y = 1.0;
477
- }
478
- if ((rect.x >= 0.0) && (rect.x <= 1.0)) {
479
- this.bars.push(rect);
480
- }
481
- }
482
- i++;
483
- }
484
- };
485
-
486
-
487
- // Create the line charts
488
- PlotKit.Layout.prototype._evaluateLineCharts = function() {
489
- var items = PlotKit.Base.items;
490
-
491
- var setCount = items(this.datasets).length;
492
-
493
- // add all the rects
494
- this.points = new Array();
495
- var i = 0;
496
- for (var setName in this.datasets) {
497
- var dataset = this.datasets[setName];
498
- if (PlotKit.Base.isFuncLike(dataset)) continue;
499
- dataset.sort(function(a, b) { return compare(parseFloat(a[0]), parseFloat(b[0])); });
500
- for (var j = 0; j < dataset.length; j++) {
501
- var item = dataset[j];
502
- var point = {
503
- x: ((parseFloat(item[0]) - this.minxval) * this.xscale),
504
- y: 1.0 - ((parseFloat(item[1]) - this.minyval) * this.yscale),
505
- xval: parseFloat(item[0]),
506
- yval: parseFloat(item[1]),
507
- name: setName
508
- };
509
-
510
- // limit the x, y values so they do not overdraw
511
- if (point.y <= 0.0) {
512
- point.y = 0.0;
513
- }
514
- if (point.y >= 1.0) {
515
- point.y = 1.0;
516
- }
517
- if ((point.x >= 0.0) && (point.x <= 1.0)) {
518
- this.points.push(point);
519
- }
520
- }
521
- i++;
522
- }
523
- };
524
-
525
- // Create the pie charts
526
- PlotKit.Layout.prototype._evaluatePieCharts = function() {
527
- var items = PlotKit.Base.items;
528
- var sum = MochiKit.Iter.sum;
529
- var getter = MochiKit.Base.itemgetter;
530
-
531
- var setCount = items(this.datasets).length;
532
-
533
- // we plot the y values of the first dataset
534
- var dataset = items(this.datasets)[0][1];
535
- var total = sum(map(getter(1), dataset));
536
-
537
- this.slices = new Array();
538
- var currentAngle = 0.0;
539
- for (var i = 0; i < dataset.length; i++) {
540
- var fraction = dataset[i][1] / total;
541
- var startAngle = currentAngle * Math.PI * 2;
542
- var endAngle = (currentAngle + fraction) * Math.PI * 2;
543
-
544
- var slice = {fraction: fraction,
545
- xval: dataset[i][0],
546
- yval: dataset[i][1],
547
- startAngle: startAngle,
548
- endAngle: endAngle
549
- };
550
- if (dataset[i][1] != 0) {
551
- this.slices.push(slice);
552
- }
553
- currentAngle += fraction;
554
- }
555
- };
556
-
557
- PlotKit.Layout.prototype._evaluateLineTicksForXAxis = function() {
558
- var isNil = MochiKit.Base.isUndefinedOrNull;
559
-
560
- if (this.options.xTicks) {
561
- // we use use specified ticks with optional labels
562
-
563
- this.xticks = new Array();
564
- var makeTicks = function(tick) {
565
- var label = tick.label;
566
- if (isNil(label))
567
- label = tick.v.toString();
568
- var pos = this.xscale * (tick.v - this.minxval);
569
- if ((pos >= 0.0) && (pos <= 1.0)) {
570
- this.xticks.push([pos, label]);
571
- }
572
- };
573
- MochiKit.Iter.forEach(this.options.xTicks, bind(makeTicks, this));
574
- }
575
- else if (this.options.xNumberOfTicks) {
576
- // we use defined number of ticks as hint to auto generate
577
- var xvalues = this._uniqueXValues();
578
- var roughSeparation = this.xrange / this.options.xNumberOfTicks;
579
- var tickCount = 0;
580
-
581
- this.xticks = new Array();
582
- for (var i = 0; i <= xvalues.length; i++) {
583
- if ((xvalues[i] - this.minxval) >= (tickCount * roughSeparation)) {
584
- var pos = this.xscale * (xvalues[i] - this.minxval);
585
- if ((pos > 1.0) || (pos < 0.0))
586
- continue;
587
- this.xticks.push([pos, xvalues[i]]);
588
- tickCount++;
589
- }
590
- if (tickCount > this.options.xNumberOfTicks)
591
- break;
592
- }
593
- }
594
- };
595
-
596
- PlotKit.Layout.prototype._evaluateLineTicksForYAxis = function() {
597
- var isNil = MochiKit.Base.isUndefinedOrNull;
598
-
599
-
600
- if (this.options.yTicks) {
601
- this.yticks = new Array();
602
- var makeTicks = function(tick) {
603
- var label = tick.label;
604
- if (isNil(label))
605
- label = tick.v.toString();
606
- var pos = 1.0 - (this.yscale * (tick.v - this.minyval));
607
- if ((pos >= 0.0) && (pos <= 1.0)) {
608
- this.yticks.push([pos, label]);
609
- }
610
- };
611
- MochiKit.Iter.forEach(this.options.yTicks, bind(makeTicks, this));
612
- }
613
- else if (this.options.yNumberOfTicks) {
614
- // We use the optionally defined number of ticks as a guide
615
- this.yticks = new Array();
616
-
617
- // if we get this separation right, we'll have good looking graphs
618
- var roundInt = PlotKit.Base.roundInterval;
619
- var prec = this.options.yTickPrecision;
620
- var roughSeparation = roundInt(this.yrange,
621
- this.options.yNumberOfTicks, prec);
622
-
623
- // round off each value of the y-axis to the precision
624
- // eg. 1.3333 at precision 1 -> 1.3
625
- for (var i = 0; i <= this.options.yNumberOfTicks; i++) {
626
- var yval = this.minyval + (i * roughSeparation);
627
- var pos = 1.0 - ((yval - this.minyval) * this.yscale);
628
- if ((pos > 1.0) || (pos < 0.0))
629
- continue;
630
- this.yticks.push([pos, MochiKit.Format.roundToFixed(yval, prec)]);
631
- }
632
- }
633
- };
634
-
635
- PlotKit.Layout.prototype._evaluateLineTicks = function() {
636
- this._evaluateLineTicksForXAxis();
637
- this._evaluateLineTicksForYAxis();
638
- };
639
-
640
- PlotKit.Layout.prototype._evaluateBarTicks = function() {
641
- this._evaluateLineTicks();
642
- var centerInBar = function(tick) {
643
- return [tick[0] + (this.minxdelta * this.xscale)/2, tick[1]];
644
- };
645
- this.xticks = MochiKit.Base.map(bind(centerInBar, this), this.xticks);
646
-
647
- if (this.options.barOrientation == "horizontal") {
648
- // swap scales
649
- var tempticks = this.xticks;
650
- this.xticks = this.yticks;
651
- this.yticks = tempticks;
652
-
653
- // we need to invert the "yaxis" (which is now the xaxis when drawn)
654
- var invert = function(tick) {
655
- return [1.0 - tick[0], tick[1]];
656
- }
657
- this.xticks = MochiKit.Base.map(invert, this.xticks);
658
- }
659
- };
660
-
661
- PlotKit.Layout.prototype._evaluatePieTicks = function() {
662
- var isNil = MochiKit.Base.isUndefinedOrNull;
663
- var formatter = MochiKit.Format.numberFormatter("#%");
664
-
665
- this.xticks = new Array();
666
- if (this.options.xTicks) {
667
- // make a lookup dict for x->slice values
668
- var lookup = new Array();
669
- for (var i = 0; i < this.slices.length; i++) {
670
- lookup[this.slices[i].xval] = this.slices[i];
671
- }
672
-
673
- for (var i =0; i < this.options.xTicks.length; i++) {
674
- var tick = this.options.xTicks[i];
675
- var slice = lookup[tick.v];
676
- var label = tick.label;
677
- if (slice) {
678
- if (isNil(label))
679
- label = tick.v.toString();
680
- label += " (" + formatter(slice.fraction) + ")";
681
- this.xticks.push([tick.v, label]);
682
- }
683
- }
684
- }
685
- else {
686
- // we make our own labels from all the slices
687
- for (var i =0; i < this.slices.length; i++) {
688
- var slice = this.slices[i];
689
- var label = slice.xval + " (" + formatter(slice.fraction) + ")";
690
- this.xticks.push([slice.xval, label]);
691
- }
692
- }
693
- };
694
-
695
- PlotKit.Layout.prototype._regenerateHitTestCache = function() {
696
- this.hitTestCache.xvalues = this._uniqueXValues();
697
- this.hitTestCache.xlookup = new Array();
698
- this.hitTestCache.x2maxy = new Array();
699
-
700
- var listMax = MochiKit.Base.listMax;
701
- var itemgetter = MochiKit.Base.itemgetter;
702
- var map = MochiKit.Base.map;
703
-
704
- // generate a lookup table for x values to y values
705
- var setNames = keys(this.datasets);
706
- for (var i = 0; i < setNames.length; i++) {
707
- var dataset = this.datasets[setNames[i]];
708
- for (var j = 0; j < dataset.length; j++) {
709
- var xval = dataset[j][0];
710
- var yval = dataset[j][1];
711
- if (this.hitTestCache.xlookup[xval])
712
- this.hitTestCache.xlookup[xval].push([yval, setNames[i]]);
713
- else
714
- this.hitTestCache.xlookup[xval] = [[yval, setNames[i]]];
715
- }
716
- }
717
-
718
- for (var x in this.hitTestCache.xlookup) {
719
- var yvals = this.hitTestCache.xlookup[x];
720
- this.hitTestCache.x2maxy[x] = listMax(map(itemgetter(0), yvals));
721
- }
722
-
723
-
724
- };
725
-
726
- // --------------------------------------------------------------------
727
- // END Internal Functions
728
- // --------------------------------------------------------------------
729
-
730
-
731
- // Namespace Iniitialisation
732
-
733
- PlotKit.LayoutModule = {};
734
- PlotKit.LayoutModule.Layout = PlotKit.Layout;
735
-
736
- PlotKit.LayoutModule.EXPORT = [
737
- "Layout"
738
- ];
739
-
740
- PlotKit.LayoutModule.EXPORT_OK = [];
741
-
742
- PlotKit.LayoutModule.__new__ = function() {
743
- var m = MochiKit.Base;
744
-
745
- m.nameFunctions(this);
746
-
747
- this.EXPORT_TAGS = {
748
- ":common": this.EXPORT,
749
- ":all": m.concat(this.EXPORT, this.EXPORT_OK)
750
- };
751
- };
752
-
753
- PlotKit.LayoutModule.__new__();
754
- MochiKit.Base._exportSymbols(this, PlotKit.LayoutModule);
755
-
756
-