@datagrok/helm 2.3.2 → 2.3.3

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 (323) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/package-test.js +1 -1
  3. package/dist/package-test.js.map +1 -1
  4. package/dist/package.js +1 -1
  5. package/dist/package.js.map +1 -1
  6. package/package.json +4 -4
  7. package/src/cell-renderer.ts +5 -4
  8. package/src/helm-helper.ts +6 -6
  9. package/src/helm-monomer-placer.ts +1 -1
  10. package/src/helm-web-editor.ts +5 -5
  11. package/src/package-test.ts +0 -1
  12. package/src/package-utils.ts +228 -69
  13. package/src/package.ts +7 -69
  14. package/src/tests/findMonomers-tests.ts +2 -1
  15. package/src/tests/get-monomer-tests.ts +1 -49
  16. package/src/utils/get-monomer.ts +49 -1
  17. package/src/utils/helm-grid-cell-renderer.ts +8 -9
  18. package/src/utils/index.ts +2 -3
  19. package/src/widgets/helm-input.ts +4 -4
  20. package/vendor/dojo-1.10.10/dijit/BackgroundIframe.js +63 -0
  21. package/vendor/dojo-1.10.10/dijit/BackgroundIframe.js.uncompressed.js +116 -0
  22. package/vendor/dojo-1.10.10/dijit/Destroyable.js +35 -0
  23. package/vendor/dojo-1.10.10/dijit/Destroyable.js.uncompressed.js +83 -0
  24. package/vendor/dojo-1.10.10/dijit/Tooltip.js +240 -0
  25. package/vendor/dojo-1.10.10/dijit/Tooltip.js.uncompressed.js +612 -0
  26. package/vendor/dojo-1.10.10/dijit/Viewport.js +44 -0
  27. package/vendor/dojo-1.10.10/dijit/Viewport.js.uncompressed.js +87 -0
  28. package/vendor/dojo-1.10.10/dijit/WidgetSet.js +76 -0
  29. package/vendor/dojo-1.10.10/dijit/WidgetSet.js.uncompressed.js +247 -0
  30. package/vendor/dojo-1.10.10/dijit/_AttachMixin.js +94 -0
  31. package/vendor/dojo-1.10.10/dijit/_AttachMixin.js.uncompressed.js +238 -0
  32. package/vendor/dojo-1.10.10/dijit/_Contained.js +17 -0
  33. package/vendor/dojo-1.10.10/dijit/_Contained.js.uncompressed.js +56 -0
  34. package/vendor/dojo-1.10.10/dijit/_Container.js +47 -0
  35. package/vendor/dojo-1.10.10/dijit/_Container.js.uncompressed.js +108 -0
  36. package/vendor/dojo-1.10.10/dijit/_CssStateMixin.js +198 -0
  37. package/vendor/dojo-1.10.10/dijit/_CssStateMixin.js.uncompressed.js +372 -0
  38. package/vendor/dojo-1.10.10/dijit/_FocusMixin.js +11 -0
  39. package/vendor/dojo-1.10.10/dijit/_FocusMixin.js.uncompressed.js +66 -0
  40. package/vendor/dojo-1.10.10/dijit/_HasDropDown.js +188 -0
  41. package/vendor/dojo-1.10.10/dijit/_HasDropDown.js.uncompressed.js +472 -0
  42. package/vendor/dojo-1.10.10/dijit/_OnDijitClickMixin.js +8 -0
  43. package/vendor/dojo-1.10.10/dijit/_OnDijitClickMixin.js.uncompressed.js +31 -0
  44. package/vendor/dojo-1.10.10/dijit/_TemplatedMixin.js +90 -0
  45. package/vendor/dojo-1.10.10/dijit/_TemplatedMixin.js.uncompressed.js +205 -0
  46. package/vendor/dojo-1.10.10/dijit/_Widget.js +66 -0
  47. package/vendor/dojo-1.10.10/dijit/_Widget.js.uncompressed.js +352 -0
  48. package/vendor/dojo-1.10.10/dijit/_WidgetBase.js +353 -0
  49. package/vendor/dojo-1.10.10/dijit/_WidgetBase.js.uncompressed.js +1200 -0
  50. package/vendor/dojo-1.10.10/dijit/_base/focus.js +68 -0
  51. package/vendor/dojo-1.10.10/dijit/_base/focus.js.uncompressed.js +207 -0
  52. package/vendor/dojo-1.10.10/dijit/_base/manager.js +10 -0
  53. package/vendor/dojo-1.10.10/dijit/_base/manager.js.uncompressed.js +35 -0
  54. package/vendor/dojo-1.10.10/dijit/_base/place.js +52 -0
  55. package/vendor/dojo-1.10.10/dijit/_base/place.js.uncompressed.js +131 -0
  56. package/vendor/dojo-1.10.10/dijit/_base/popup.js +23 -0
  57. package/vendor/dojo-1.10.10/dijit/_base/popup.js.uncompressed.js +58 -0
  58. package/vendor/dojo-1.10.10/dijit/_base/scroll.js +6 -0
  59. package/vendor/dojo-1.10.10/dijit/_base/scroll.js.uncompressed.js +22 -0
  60. package/vendor/dojo-1.10.10/dijit/_base/sniff.js +3 -0
  61. package/vendor/dojo-1.10.10/dijit/_base/sniff.js.uncompressed.js +12 -0
  62. package/vendor/dojo-1.10.10/dijit/_base/typematic.js +3 -0
  63. package/vendor/dojo-1.10.10/dijit/_base/typematic.js.uncompressed.js +10 -0
  64. package/vendor/dojo-1.10.10/dijit/_base/wai.js +32 -0
  65. package/vendor/dojo-1.10.10/dijit/_base/wai.js.uncompressed.js +109 -0
  66. package/vendor/dojo-1.10.10/dijit/_base/window.js +6 -0
  67. package/vendor/dojo-1.10.10/dijit/_base/window.js.uncompressed.js +18 -0
  68. package/vendor/dojo-1.10.10/dijit/_base.js +4 -0
  69. package/vendor/dojo-1.10.10/dijit/a11y.js +109 -0
  70. package/vendor/dojo-1.10.10/dijit/a11y.js.uncompressed.js +191 -0
  71. package/vendor/dojo-1.10.10/dijit/a11yclick.js +66 -0
  72. package/vendor/dojo-1.10.10/dijit/a11yclick.js.uncompressed.js +139 -0
  73. package/vendor/dojo-1.10.10/dijit/focus.js +188 -0
  74. package/vendor/dojo-1.10.10/dijit/focus.js.uncompressed.js +371 -0
  75. package/vendor/dojo-1.10.10/dijit/form/Button.js +49 -0
  76. package/vendor/dojo-1.10.10/dijit/form/Button.js.uncompressed.js +130 -0
  77. package/vendor/dojo-1.10.10/dijit/form/ComboBox.js +4 -0
  78. package/vendor/dojo-1.10.10/dijit/form/ComboBox.js.uncompressed.js +27 -0
  79. package/vendor/dojo-1.10.10/dijit/form/ComboButton.js +21 -0
  80. package/vendor/dojo-1.10.10/dijit/form/ComboButton.js.uncompressed.js +86 -0
  81. package/vendor/dojo-1.10.10/dijit/form/DropDownButton.js +38 -0
  82. package/vendor/dojo-1.10.10/dijit/form/DropDownButton.js.uncompressed.js +102 -0
  83. package/vendor/dojo-1.10.10/dijit/form/ToggleButton.js +7 -0
  84. package/vendor/dojo-1.10.10/dijit/form/ToggleButton.js.uncompressed.js +26 -0
  85. package/vendor/dojo-1.10.10/dijit/form/_ButtonMixin.js +50 -0
  86. package/vendor/dojo-1.10.10/dijit/form/_ButtonMixin.js.uncompressed.js +116 -0
  87. package/vendor/dojo-1.10.10/dijit/form/_FormValueMixin.js +26 -0
  88. package/vendor/dojo-1.10.10/dijit/form/_FormValueMixin.js.uncompressed.js +81 -0
  89. package/vendor/dojo-1.10.10/dijit/form/_FormValueWidget.js +24 -0
  90. package/vendor/dojo-1.10.10/dijit/form/_FormValueWidget.js.uncompressed.js +51 -0
  91. package/vendor/dojo-1.10.10/dijit/form/_FormWidget.js +22 -0
  92. package/vendor/dojo-1.10.10/dijit/form/_FormWidget.js.uncompressed.js +67 -0
  93. package/vendor/dojo-1.10.10/dijit/form/_FormWidgetMixin.js +111 -0
  94. package/vendor/dojo-1.10.10/dijit/form/_FormWidgetMixin.js.uncompressed.js +254 -0
  95. package/vendor/dojo-1.10.10/dijit/form/_ToggleButtonMixin.js +32 -0
  96. package/vendor/dojo-1.10.10/dijit/form/_ToggleButtonMixin.js.uncompressed.js +69 -0
  97. package/vendor/dojo-1.10.10/dijit/hccss.js +9 -0
  98. package/vendor/dojo-1.10.10/dijit/hccss.js.uncompressed.js +21 -0
  99. package/vendor/dojo-1.10.10/dijit/layout/AccordionContainer.js +215 -0
  100. package/vendor/dojo-1.10.10/dijit/layout/AccordionContainer.js.uncompressed.js +550 -0
  101. package/vendor/dojo-1.10.10/dijit/layout/AccordionPane.js +7 -0
  102. package/vendor/dojo-1.10.10/dijit/layout/AccordionPane.js.uncompressed.js +25 -0
  103. package/vendor/dojo-1.10.10/dijit/layout/ContentPane.js +235 -0
  104. package/vendor/dojo-1.10.10/dijit/layout/ContentPane.js.uncompressed.js +653 -0
  105. package/vendor/dojo-1.10.10/dijit/layout/StackContainer.js +171 -0
  106. package/vendor/dojo-1.10.10/dijit/layout/StackContainer.js.uncompressed.js +411 -0
  107. package/vendor/dojo-1.10.10/dijit/layout/StackController.js +194 -0
  108. package/vendor/dojo-1.10.10/dijit/layout/StackController.js.uncompressed.js +410 -0
  109. package/vendor/dojo-1.10.10/dijit/layout/_ContentPaneResizeMixin.js +99 -0
  110. package/vendor/dojo-1.10.10/dijit/layout/_ContentPaneResizeMixin.js.uncompressed.js +236 -0
  111. package/vendor/dojo-1.10.10/dijit/layout/_LayoutWidget.js +47 -0
  112. package/vendor/dojo-1.10.10/dijit/layout/_LayoutWidget.js.uncompressed.js +190 -0
  113. package/vendor/dojo-1.10.10/dijit/layout/utils.js +77 -0
  114. package/vendor/dojo-1.10.10/dijit/layout/utils.js.uncompressed.js +151 -0
  115. package/vendor/dojo-1.10.10/dijit/main.js +4 -0
  116. package/vendor/dojo-1.10.10/dijit/main.js.uncompressed.js +16 -0
  117. package/vendor/dojo-1.10.10/dijit/nls/dijit-all_en-us.js +2 -0
  118. package/vendor/dojo-1.10.10/dijit/nls/dijit-all_en-us.js.uncompressed.js +21 -0
  119. package/vendor/dojo-1.10.10/dijit/nls/loading.js +2 -0
  120. package/vendor/dojo-1.10.10/dijit/nls/loading.js.uncompressed.js +47 -0
  121. package/vendor/dojo-1.10.10/dijit/place.js +142 -0
  122. package/vendor/dojo-1.10.10/dijit/place.js.uncompressed.js +407 -0
  123. package/vendor/dojo-1.10.10/dijit/popup.js +162 -0
  124. package/vendor/dojo-1.10.10/dijit/popup.js.uncompressed.js +441 -0
  125. package/vendor/dojo-1.10.10/dijit/registry.js +79 -0
  126. package/vendor/dojo-1.10.10/dijit/registry.js.uncompressed.js +159 -0
  127. package/vendor/dojo-1.10.10/dijit/selection.js +364 -0
  128. package/vendor/dojo-1.10.10/dijit/selection.js.uncompressed.js +525 -0
  129. package/vendor/dojo-1.10.10/dijit/typematic.js +96 -0
  130. package/vendor/dojo-1.10.10/dijit/typematic.js.uncompressed.js +211 -0
  131. package/vendor/dojo-1.10.10/dojo/NodeList-manipulate.js +195 -0
  132. package/vendor/dojo-1.10.10/dojo/NodeList-manipulate.js.uncompressed.js +761 -0
  133. package/vendor/dojo-1.10.10/dojo/Stateful.js +90 -0
  134. package/vendor/dojo-1.10.10/dojo/Stateful.js.uncompressed.js +218 -0
  135. package/vendor/dojo-1.10.10/dojo/_base/url.js +87 -0
  136. package/vendor/dojo-1.10.10/dojo/_base/url.js.uncompressed.js +109 -0
  137. package/vendor/dojo-1.10.10/dojo/cache.js +9 -0
  138. package/vendor/dojo-1.10.10/dojo/cache.js.uncompressed.js +7 -0
  139. package/vendor/dojo-1.10.10/dojo/colors.js +74 -0
  140. package/vendor/dojo-1.10.10/dojo/colors.js.uncompressed.js +232 -0
  141. package/vendor/dojo-1.10.10/dojo/cookie.js +48 -0
  142. package/vendor/dojo-1.10.10/dojo/cookie.js.uncompressed.js +98 -0
  143. package/vendor/dojo-1.10.10/dojo/date/stamp.js +82 -0
  144. package/vendor/dojo-1.10.10/dojo/date/stamp.js.uncompressed.js +144 -0
  145. package/vendor/dojo-1.10.10/dojo/dojo.js +7 -0
  146. package/vendor/dojo-1.10.10/dojo/dojo.js.uncompressed.js +18680 -0
  147. package/vendor/dojo-1.10.10/dojo/fx/Toggler.js +27 -0
  148. package/vendor/dojo-1.10.10/dojo/fx/Toggler.js.uncompressed.js +101 -0
  149. package/vendor/dojo-1.10.10/dojo/fx/easing.js +165 -0
  150. package/vendor/dojo-1.10.10/dojo/fx/easing.js.uncompressed.js +276 -0
  151. package/vendor/dojo-1.10.10/dojo/fx.js +271 -0
  152. package/vendor/dojo-1.10.10/dojo/fx.js.uncompressed.js +443 -0
  153. package/vendor/dojo-1.10.10/dojo/hccss.js +26 -0
  154. package/vendor/dojo-1.10.10/dojo/hccss.js.uncompressed.js +52 -0
  155. package/vendor/dojo-1.10.10/dojo/html.js +161 -0
  156. package/vendor/dojo-1.10.10/dojo/html.js.uncompressed.js +370 -0
  157. package/vendor/dojo-1.10.10/dojo/io/iframe.js +71 -0
  158. package/vendor/dojo-1.10.10/dojo/io/iframe.js.uncompressed.js +190 -0
  159. package/vendor/dojo-1.10.10/dojo/io/script.js +112 -0
  160. package/vendor/dojo-1.10.10/dojo/io/script.js.uncompressed.js +280 -0
  161. package/vendor/dojo-1.10.10/dojo/parser.js +437 -0
  162. package/vendor/dojo-1.10.10/dojo/parser.js.uncompressed.js +915 -0
  163. package/vendor/dojo-1.10.10/dojo/promise/all.js +59 -0
  164. package/vendor/dojo-1.10.10/dojo/promise/all.js.uncompressed.js +77 -0
  165. package/vendor/dojo-1.10.10/dojo/regexp.js +32 -0
  166. package/vendor/dojo-1.10.10/dojo/regexp.js.uncompressed.js +70 -0
  167. package/vendor/dojo-1.10.10/dojo/request/iframe.js +291 -0
  168. package/vendor/dojo-1.10.10/dojo/request/iframe.js.uncompressed.js +438 -0
  169. package/vendor/dojo-1.10.10/dojo/request/script.js +129 -0
  170. package/vendor/dojo-1.10.10/dojo/request/script.js.uncompressed.js +237 -0
  171. package/vendor/dojo-1.10.10/dojo/require.js +11 -0
  172. package/vendor/dojo-1.10.10/dojo/require.js.uncompressed.js +7 -0
  173. package/vendor/dojo-1.10.10/dojo/resources/blank.gif +0 -0
  174. package/vendor/dojo-1.10.10/dojo/string.js +67 -0
  175. package/vendor/dojo-1.10.10/dojo/string.js.uncompressed.js +181 -0
  176. package/vendor/dojo-1.10.10/dojo/touch.js +191 -0
  177. package/vendor/dojo-1.10.10/dojo/touch.js.uncompressed.js +468 -0
  178. package/vendor/dojo-1.10.10/dojo/uacss.js +36 -0
  179. package/vendor/dojo-1.10.10/dojo/uacss.js.uncompressed.js +85 -0
  180. package/vendor/dojo-1.10.10/dojo/window.js +141 -0
  181. package/vendor/dojo-1.10.10/dojo/window.js.uncompressed.js +241 -0
  182. package/vendor/dojo-1.10.10/dojox/charting/Chart.js +626 -0
  183. package/vendor/dojo-1.10.10/dojox/charting/Chart.js.uncompressed.js +1220 -0
  184. package/vendor/dojo-1.10.10/dojox/charting/Chart2D.js +5 -0
  185. package/vendor/dojo-1.10.10/dojox/charting/Chart2D.js.uncompressed.js +16 -0
  186. package/vendor/dojo-1.10.10/dojox/charting/Element.js +247 -0
  187. package/vendor/dojo-1.10.10/dojox/charting/Element.js.uncompressed.js +402 -0
  188. package/vendor/dojo-1.10.10/dojox/charting/Series.js +24 -0
  189. package/vendor/dojo-1.10.10/dojox/charting/Series.js.uncompressed.js +58 -0
  190. package/vendor/dojo-1.10.10/dojox/charting/SimpleTheme.js +191 -0
  191. package/vendor/dojo-1.10.10/dojox/charting/SimpleTheme.js.uncompressed.js +577 -0
  192. package/vendor/dojo-1.10.10/dojox/charting/Theme.js +42 -0
  193. package/vendor/dojo-1.10.10/dojox/charting/Theme.js.uncompressed.js +120 -0
  194. package/vendor/dojo-1.10.10/dojox/charting/action2d/Base.js +11 -0
  195. package/vendor/dojo-1.10.10/dojox/charting/action2d/Base.js.uncompressed.js +36 -0
  196. package/vendor/dojo-1.10.10/dojox/charting/action2d/Highlight.js +77 -0
  197. package/vendor/dojo-1.10.10/dojox/charting/action2d/Highlight.js.uncompressed.js +144 -0
  198. package/vendor/dojo-1.10.10/dojox/charting/action2d/Magnify.js +58 -0
  199. package/vendor/dojo-1.10.10/dojox/charting/action2d/Magnify.js.uncompressed.js +123 -0
  200. package/vendor/dojo-1.10.10/dojox/charting/action2d/MoveSlice.js +54 -0
  201. package/vendor/dojo-1.10.10/dojox/charting/action2d/MoveSlice.js.uncompressed.js +124 -0
  202. package/vendor/dojo-1.10.10/dojox/charting/action2d/PlotAction.js +28 -0
  203. package/vendor/dojo-1.10.10/dojox/charting/action2d/PlotAction.js.uncompressed.js +74 -0
  204. package/vendor/dojo-1.10.10/dojox/charting/action2d/Tooltip.js +116 -0
  205. package/vendor/dojo-1.10.10/dojox/charting/action2d/Tooltip.js.uncompressed.js +178 -0
  206. package/vendor/dojo-1.10.10/dojox/charting/axis2d/Base.js +24 -0
  207. package/vendor/dojo-1.10.10/dojox/charting/axis2d/Base.js.uncompressed.js +83 -0
  208. package/vendor/dojo-1.10.10/dojox/charting/axis2d/Default.js +557 -0
  209. package/vendor/dojo-1.10.10/dojox/charting/axis2d/Default.js.uncompressed.js +980 -0
  210. package/vendor/dojo-1.10.10/dojox/charting/axis2d/Invisible.js +65 -0
  211. package/vendor/dojo-1.10.10/dojox/charting/axis2d/Invisible.js.uncompressed.js +224 -0
  212. package/vendor/dojo-1.10.10/dojox/charting/axis2d/common.js +91 -0
  213. package/vendor/dojo-1.10.10/dojox/charting/axis2d/common.js.uncompressed.js +164 -0
  214. package/vendor/dojo-1.10.10/dojox/charting/plot2d/Areas.js +7 -0
  215. package/vendor/dojo-1.10.10/dojox/charting/plot2d/Areas.js.uncompressed.js +14 -0
  216. package/vendor/dojo-1.10.10/dojox/charting/plot2d/Bars.js +168 -0
  217. package/vendor/dojo-1.10.10/dojox/charting/plot2d/Bars.js.uncompressed.js +311 -0
  218. package/vendor/dojo-1.10.10/dojox/charting/plot2d/Base.js +61 -0
  219. package/vendor/dojo-1.10.10/dojox/charting/plot2d/Base.js.uncompressed.js +161 -0
  220. package/vendor/dojo-1.10.10/dojox/charting/plot2d/Bubble.js +141 -0
  221. package/vendor/dojo-1.10.10/dojox/charting/plot2d/Bubble.js.uncompressed.js +242 -0
  222. package/vendor/dojo-1.10.10/dojox/charting/plot2d/Candlesticks.js +126 -0
  223. package/vendor/dojo-1.10.10/dojox/charting/plot2d/Candlesticks.js.uncompressed.js +243 -0
  224. package/vendor/dojo-1.10.10/dojox/charting/plot2d/CartesianBase.js +108 -0
  225. package/vendor/dojo-1.10.10/dojox/charting/plot2d/CartesianBase.js.uncompressed.js +290 -0
  226. package/vendor/dojo-1.10.10/dojox/charting/plot2d/ClusteredBars.js +13 -0
  227. package/vendor/dojo-1.10.10/dojox/charting/plot2d/ClusteredBars.js.uncompressed.js +14 -0
  228. package/vendor/dojo-1.10.10/dojox/charting/plot2d/ClusteredColumns.js +13 -0
  229. package/vendor/dojo-1.10.10/dojox/charting/plot2d/ClusteredColumns.js.uncompressed.js +14 -0
  230. package/vendor/dojo-1.10.10/dojox/charting/plot2d/Columns.js +153 -0
  231. package/vendor/dojo-1.10.10/dojox/charting/plot2d/Columns.js.uncompressed.js +249 -0
  232. package/vendor/dojo-1.10.10/dojox/charting/plot2d/Default.js +253 -0
  233. package/vendor/dojo-1.10.10/dojox/charting/plot2d/Default.js.uncompressed.js +472 -0
  234. package/vendor/dojo-1.10.10/dojox/charting/plot2d/Grid.js +182 -0
  235. package/vendor/dojo-1.10.10/dojox/charting/plot2d/Grid.js.uncompressed.js +356 -0
  236. package/vendor/dojo-1.10.10/dojox/charting/plot2d/Lines.js +6 -0
  237. package/vendor/dojo-1.10.10/dojox/charting/plot2d/Lines.js.uncompressed.js +12 -0
  238. package/vendor/dojo-1.10.10/dojox/charting/plot2d/Markers.js +6 -0
  239. package/vendor/dojo-1.10.10/dojox/charting/plot2d/Markers.js.uncompressed.js +12 -0
  240. package/vendor/dojo-1.10.10/dojox/charting/plot2d/MarkersOnly.js +7 -0
  241. package/vendor/dojo-1.10.10/dojox/charting/plot2d/MarkersOnly.js.uncompressed.js +13 -0
  242. package/vendor/dojo-1.10.10/dojox/charting/plot2d/OHLC.js +110 -0
  243. package/vendor/dojo-1.10.10/dojox/charting/plot2d/OHLC.js.uncompressed.js +208 -0
  244. package/vendor/dojo-1.10.10/dojox/charting/plot2d/Pie.js +303 -0
  245. package/vendor/dojo-1.10.10/dojox/charting/plot2d/Pie.js.uncompressed.js +547 -0
  246. package/vendor/dojo-1.10.10/dojox/charting/plot2d/Scatter.js +134 -0
  247. package/vendor/dojo-1.10.10/dojox/charting/plot2d/Scatter.js.uncompressed.js +207 -0
  248. package/vendor/dojo-1.10.10/dojox/charting/plot2d/Spider.js +299 -0
  249. package/vendor/dojo-1.10.10/dojox/charting/plot2d/Spider.js.uncompressed.js +537 -0
  250. package/vendor/dojo-1.10.10/dojox/charting/plot2d/Stacked.js +24 -0
  251. package/vendor/dojo-1.10.10/dojox/charting/plot2d/Stacked.js.uncompressed.js +44 -0
  252. package/vendor/dojo-1.10.10/dojox/charting/plot2d/StackedAreas.js +7 -0
  253. package/vendor/dojo-1.10.10/dojox/charting/plot2d/StackedAreas.js.uncompressed.js +14 -0
  254. package/vendor/dojo-1.10.10/dojox/charting/plot2d/StackedBars.js +22 -0
  255. package/vendor/dojo-1.10.10/dojox/charting/plot2d/StackedBars.js.uncompressed.js +33 -0
  256. package/vendor/dojo-1.10.10/dojox/charting/plot2d/StackedColumns.js +20 -0
  257. package/vendor/dojo-1.10.10/dojox/charting/plot2d/StackedColumns.js.uncompressed.js +31 -0
  258. package/vendor/dojo-1.10.10/dojox/charting/plot2d/StackedLines.js +6 -0
  259. package/vendor/dojo-1.10.10/dojox/charting/plot2d/StackedLines.js.uncompressed.js +12 -0
  260. package/vendor/dojo-1.10.10/dojox/charting/plot2d/_PlotEvents.js +68 -0
  261. package/vendor/dojo-1.10.10/dojox/charting/plot2d/_PlotEvents.js.uncompressed.js +120 -0
  262. package/vendor/dojo-1.10.10/dojox/charting/plot2d/common.js +209 -0
  263. package/vendor/dojo-1.10.10/dojox/charting/plot2d/common.js.uncompressed.js +214 -0
  264. package/vendor/dojo-1.10.10/dojox/charting/plot2d/commonStacked.js +76 -0
  265. package/vendor/dojo-1.10.10/dojox/charting/plot2d/commonStacked.js.uncompressed.js +77 -0
  266. package/vendor/dojo-1.10.10/dojox/charting/scaler/common.js +59 -0
  267. package/vendor/dojo-1.10.10/dojox/charting/scaler/common.js.uncompressed.js +70 -0
  268. package/vendor/dojo-1.10.10/dojox/charting/scaler/linear.js +220 -0
  269. package/vendor/dojo-1.10.10/dojox/charting/scaler/linear.js.uncompressed.js +262 -0
  270. package/vendor/dojo-1.10.10/dojox/charting/scaler/primitive.js +23 -0
  271. package/vendor/dojo-1.10.10/dojox/charting/scaler/primitive.js.uncompressed.js +36 -0
  272. package/vendor/dojo-1.10.10/dojox/charting/themes/Claro.js +39 -0
  273. package/vendor/dojo-1.10.10/dojox/charting/themes/Claro.js.uncompressed.js +106 -0
  274. package/vendor/dojo-1.10.10/dojox/charting/themes/Wetland.js +5 -0
  275. package/vendor/dojo-1.10.10/dojox/charting/themes/Wetland.js.uncompressed.js +12 -0
  276. package/vendor/dojo-1.10.10/dojox/charting/themes/common.js +4 -0
  277. package/vendor/dojo-1.10.10/dojox/charting/themes/common.js.uncompressed.js +3 -0
  278. package/vendor/dojo-1.10.10/dojox/charting/widget/Legend.js +102 -0
  279. package/vendor/dojo-1.10.10/dojox/charting/widget/Legend.js.uncompressed.js +165 -0
  280. package/vendor/dojo-1.10.10/dojox/color/Palette.js +163 -0
  281. package/vendor/dojo-1.10.10/dojox/color/Palette.js.uncompressed.js +460 -0
  282. package/vendor/dojo-1.10.10/dojox/color/_base.js +174 -0
  283. package/vendor/dojo-1.10.10/dojox/color/_base.js.uncompressed.js +196 -0
  284. package/vendor/dojo-1.10.10/dojox/gfx/fx.js +297 -0
  285. package/vendor/dojo-1.10.10/dojox/gfx/fx.js.uncompressed.js +350 -0
  286. package/vendor/dojo-1.10.10/dojox/gfx/gradutils.js +63 -0
  287. package/vendor/dojo-1.10.10/dojox/gfx/gradutils.js.uncompressed.js +91 -0
  288. package/vendor/dojo-1.10.10/dojox/gfx/matrix.js +170 -0
  289. package/vendor/dojo-1.10.10/dojox/gfx/matrix.js.uncompressed.js +501 -0
  290. package/vendor/dojo-1.10.10/dojox/gfx/path.js +319 -0
  291. package/vendor/dojo-1.10.10/dojox/gfx/path.js.uncompressed.js +478 -0
  292. package/vendor/dojo-1.10.10/dojox/gfx/shape.js +459 -0
  293. package/vendor/dojo-1.10.10/dojox/gfx/shape.js.uncompressed.js +1091 -0
  294. package/vendor/dojo-1.10.10/dojox/gfx/svg.js +662 -0
  295. package/vendor/dojo-1.10.10/dojox/gfx/svg.js.uncompressed.js +1023 -0
  296. package/vendor/dojo-1.10.10/dojox/gfx/utils.js +199 -0
  297. package/vendor/dojo-1.10.10/dojox/gfx/utils.js.uncompressed.js +322 -0
  298. package/vendor/dojo-1.10.10/dojox/gfx.js +2 -0
  299. package/vendor/dojo-1.10.10/dojox/gfx.js.uncompressed.js +1136 -0
  300. package/vendor/dojo-1.10.10/dojox/lang/functional/array.js +151 -0
  301. package/vendor/dojo-1.10.10/dojox/lang/functional/array.js.uncompressed.js +169 -0
  302. package/vendor/dojo-1.10.10/dojox/lang/functional/fold.js +93 -0
  303. package/vendor/dojo-1.10.10/dojox/lang/functional/fold.js.uncompressed.js +125 -0
  304. package/vendor/dojo-1.10.10/dojox/lang/functional/lambda.js +81 -0
  305. package/vendor/dojo-1.10.10/dojox/lang/functional/lambda.js.uncompressed.js +132 -0
  306. package/vendor/dojo-1.10.10/dojox/lang/functional/object.js +54 -0
  307. package/vendor/dojo-1.10.10/dojox/lang/functional/object.js.uncompressed.js +78 -0
  308. package/vendor/dojo-1.10.10/dojox/lang/functional/reversed.js +61 -0
  309. package/vendor/dojo-1.10.10/dojox/lang/functional/reversed.js.uncompressed.js +77 -0
  310. package/vendor/dojo-1.10.10/dojox/lang/functional/scan.js +87 -0
  311. package/vendor/dojo-1.10.10/dojox/lang/functional/scan.js.uncompressed.js +107 -0
  312. package/vendor/dojo-1.10.10/dojox/lang/functional.js +4 -0
  313. package/vendor/dojo-1.10.10/dojox/lang/functional.js.uncompressed.js +3 -0
  314. package/vendor/dojo-1.10.10/dojox/lang/utils.js +86 -0
  315. package/vendor/dojo-1.10.10/dojox/lang/utils.js.uncompressed.js +121 -0
  316. package/vendor/dojo-1.10.10/dojox/main.js +4 -0
  317. package/vendor/dojo-1.10.10/dojox/main.js.uncompressed.js +14 -0
  318. package/vendor/dojo-1.10.10/dojox/storage/LocalStorageProvider.js +112 -0
  319. package/vendor/dojo-1.10.10/dojox/storage/LocalStorageProvider.js.uncompressed.js +208 -0
  320. package/vendor/dojo-1.10.10/dojox/storage/Provider.js +62 -0
  321. package/vendor/dojo-1.10.10/dojox/storage/Provider.js.uncompressed.js +344 -0
  322. package/vendor/dojo-1.10.10/dojox/storage/manager.js +110 -0
  323. package/vendor/dojo-1.10.10/dojox/storage/manager.js.uncompressed.js +263 -0
@@ -0,0 +1,980 @@
1
+ define("dojox/charting/axis2d/Default", ["dojo/_base/lang", "dojo/_base/array", "dojo/sniff", "dojo/_base/declare",
2
+ "dojo/_base/connect", "dojo/dom-geometry", "./Invisible",
3
+ "../scaler/linear", "./common", "dojox/gfx", "dojox/lang/utils", "dojox/lang/functional",
4
+ "dojo/has!dojo-bidi?../bidi/axis2d/Default"],
5
+ function(lang, arr, has, declare, connect, domGeom, Invisible,
6
+ lin, acommon, g, du, df, BidiDefault){
7
+
8
+ /*=====
9
+ var __AxisCtorArgs = {
10
+ // summary:
11
+ // Optional arguments used in the definition of an axis.
12
+ // vertical: Boolean?
13
+ // A flag that says whether an axis is vertical (i.e. y axis) or horizontal. Default is false (horizontal).
14
+ // fixUpper: String?
15
+ // Align the greatest value on the axis with the specified tick level. Options are "major", "minor", "micro", or "none". Defaults to "none".
16
+ // fixLower: String?
17
+ // Align the smallest value on the axis with the specified tick level. Options are "major", "minor", "micro", or "none". Defaults to "none".
18
+ // natural: Boolean?
19
+ // Ensure tick marks are made on "natural" numbers. Defaults to false.
20
+ // leftBottom: Boolean?
21
+ // Deprecated: use position instead. The position of a vertical axis; if true, will be placed against the left-bottom corner of the chart. Defaults to true.
22
+ // includeZero: Boolean?
23
+ // Include 0 on the axis rendering. Default is false.
24
+ // fixed: Boolean?
25
+ // Force all axis labels to be fixed numbers. Default is true.
26
+ // majorLabels: Boolean?
27
+ // Flag to draw labels at major ticks. Default is true.
28
+ // minorTicks: Boolean?
29
+ // Flag to draw minor ticks on an axis. Default is true.
30
+ // minorLabels: Boolean?
31
+ // Flag to labels on minor ticks when there is enough space. Default is true.
32
+ // microTicks: Boolean?
33
+ // Flag to draw micro ticks on an axis. Default is false.
34
+ // htmlLabels: Boolean?
35
+ // Flag to use HTML (as opposed to the native vector graphics engine) to draw labels. Default is true.
36
+ // min: Number?
37
+ // The smallest value on an axis. Default is 0.
38
+ // max: Number?
39
+ // The largest value on an axis. Default is 1.
40
+ // from: Number?
41
+ // Force the chart to render data visible from this value. Default is 0.
42
+ // to: Number?
43
+ // Force the chart to render data visible to this value. Default is 1.
44
+ // majorTickStep: Number?
45
+ // The amount to skip before a major tick is drawn. When not set the major ticks step is computed from
46
+ // the data range.
47
+ // minorTickStep: Number?
48
+ // The amount to skip before a minor tick is drawn. When not set the minor ticks step is computed from
49
+ // the data range.
50
+ // microTickStep: Number?
51
+ // The amount to skip before a micro tick is drawn. When not set the micro ticks step is computed from
52
+ // labels: Object[]?
53
+ // An array of labels for major ticks, with corresponding numeric values, ordered by value.
54
+ // labelFunc: Function?
55
+ // An optional function to use to compute label text. It takes precedence over
56
+ // the default text when available. The function must be of the following form:
57
+ // | function labelFunc(text, value, precision) {}
58
+ // `text` is the already pre-formatted text. Pre-formatting is done using `dojo/number` is available, `Date.toFixed` otherwise.
59
+ // `value` is the raw axis value.
60
+ // `precision` is the requested precision to be applied.
61
+ // maxLabelSize: Number?
62
+ // The maximum size, in pixels, for a label. To be used with the optional label function.
63
+ // stroke: dojox.gfx.Stroke?
64
+ // An optional stroke to be used for drawing an axis.
65
+ // majorTick: Object?
66
+ // An object containing a dojox.gfx.Stroke, and a length (number) for a major tick.
67
+ // minorTick: Object?
68
+ // An object containing a dojox.gfx.Stroke, and a length (number) for a minor tick.
69
+ // microTick: Object?
70
+ // An object containing a dojox.gfx.Stroke, and a length (number) for a micro tick.
71
+ // tick: Object?
72
+ // An object containing a dojox.gfx.Stroke, and a length (number) for a tick.
73
+ // font: String?
74
+ // An optional font definition (as used in the CSS font property) for labels.
75
+ // fontColor: String|dojo.Color?
76
+ // An optional color to be used in drawing labels.
77
+ // titleGap: Number?
78
+ // An optional grap between axis title and axis label
79
+ // titleFont: String?
80
+ // An optional font definition for axis title
81
+ // titleFontColor: String?
82
+ // An optional axis title color
83
+ // titleOrientation: String?
84
+ // An optional orientation for axis title. "axis" means the title facing the axis, "away" means facing away.
85
+ // If no value is set "axis" is used.
86
+ // enableCache: Boolean?
87
+ // Whether the ticks and labels are cached from one rendering to another. This improves the rendering performance of
88
+ // successive rendering but penalize the first rendering. For labels it is only working with gfx labels
89
+ // not html ones. Default false.
90
+ // dropLabels: Boolean?
91
+ // Whether the axis automatically drops labels at regular interval or not to avoid labels overlapping.
92
+ // This gives better results but require more computations. You can disable it to save computation
93
+ // time when you know your labels won't overlap. Default is true.
94
+ // labelSizeChange: Boolean?
95
+ // Indicates to the axis whether the axis labels are changing their size on zoom. If false this allows to
96
+ // optimize the axis by avoiding recomputing labels maximum size on zoom actions. Default is false.
97
+ // position: String?
98
+ // The position of the axis. Values: "leftOrBottom", "center" or "rightOrTop". Default is "leftOrBottom".
99
+ };
100
+ =====*/
101
+
102
+ var centerAnchorLimit = 45; // in degrees
103
+
104
+ var Default = declare(has("dojo-bidi")? "dojox.charting.axis2d.NonBidiDefault" : "dojox.charting.axis2d.Default", Invisible, {
105
+ // summary:
106
+ // The default axis object used in dojox.charting. See dojox.charting.Chart.addAxis for details.
107
+
108
+ // defaultParams: Object
109
+ // The default parameters used to define any axis.
110
+ // optionalParams: Object
111
+ // Any optional parameters needed to define an axis.
112
+
113
+ /*=====
114
+ // TODO: the documentation tools need these to be pre-defined in order to pick them up
115
+ // correctly, but the code here is partially predicated on whether or not the properties
116
+ // actually exist. For now, we will leave these undocumented but in the code for later. -- TRT
117
+
118
+ // opt: Object
119
+ // The actual options used to define this axis, created at initialization.
120
+ // scaler: Object
121
+ // The calculated helper object to tell charts how to draw an axis and any data.
122
+ // ticks: Object
123
+ // The calculated tick object that helps a chart draw the scaling on an axis.
124
+ // dirty: Boolean
125
+ // The state of the axis (whether it needs to be redrawn or not)
126
+ // scale: Number
127
+ // The current scale of the axis.
128
+ // offset: Number
129
+ // The current offset of the axis.
130
+
131
+ opt: null,
132
+ scaler: null,
133
+ ticks: null,
134
+ dirty: true,
135
+ scale: 1,
136
+ offset: 0,
137
+ =====*/
138
+ defaultParams: {
139
+ vertical: false, // true for vertical axis
140
+ fixUpper: "none", // align the upper on ticks: "major", "minor", "micro", "none"
141
+ fixLower: "none", // align the lower on ticks: "major", "minor", "micro", "none"
142
+ natural: false, // all tick marks should be made on natural numbers
143
+ leftBottom: true, // position of the axis, used with "vertical" - deprecated: use position instead
144
+ includeZero: false, // 0 should be included
145
+ fixed: true, // all labels are fixed numbers
146
+ majorLabels: true, // draw major labels
147
+ minorTicks: true, // draw minor ticks
148
+ minorLabels: true, // draw minor labels
149
+ microTicks: false, // draw micro ticks
150
+ rotation: 0, // label rotation angle in degrees
151
+ htmlLabels: true, // use HTML to draw labels
152
+ enableCache: false, // whether we cache or not
153
+ dropLabels: true, // whether we automatically drop overlapping labels or not
154
+ labelSizeChange: false, // whether the labels size change on zoom
155
+ position: "leftOrBottom" // position of the axis: "leftOrBottom" (default), "center" or "rightOrTop"
156
+ },
157
+ optionalParams: {
158
+ min: 0, // minimal value on this axis
159
+ max: 1, // maximal value on this axis
160
+ from: 0, // visible from this value
161
+ to: 1, // visible to this value
162
+ majorTickStep: 4, // major tick step
163
+ minorTickStep: 2, // minor tick step
164
+ microTickStep: 1, // micro tick step
165
+ labels: [], // array of labels for major ticks
166
+ // with corresponding numeric values
167
+ // ordered by values
168
+ labelFunc: null, // function to compute label values
169
+ maxLabelSize: 0, // size in px. For use with labelFunc
170
+ maxLabelCharCount: 0, // size in word count.
171
+ trailingSymbol: null,
172
+
173
+ // TODO: add support for minRange!
174
+ // minRange: 1, // smallest distance from min allowed on the axis
175
+
176
+ // theme components
177
+ stroke: {}, // stroke for an axis
178
+ majorTick: {}, // stroke + length for a tick
179
+ minorTick: {}, // stroke + length for a tick
180
+ microTick: {}, // stroke + length for a tick
181
+ tick: {}, // stroke + length for a tick
182
+ font: "", // font for labels
183
+ fontColor: "", // color for labels as a string
184
+ title: "", // axis title
185
+ titleGap: 0, // gap between axis title and axis label
186
+ titleFont: "", // axis title font
187
+ titleFontColor: "", // axis title font color
188
+ titleOrientation: "" // "axis" means the title facing the axis, "away" means facing away
189
+ },
190
+
191
+ constructor: function(chart, kwArgs){
192
+ // summary:
193
+ // The constructor for an axis.
194
+ // chart: dojox/charting/Chart
195
+ // The chart the axis belongs to.
196
+ // kwArgs: __AxisCtorArgs?
197
+ // Any optional keyword arguments to be used to define this axis.
198
+ this.opt = lang.clone(this.defaultParams);
199
+ du.updateWithObject(this.opt, kwArgs);
200
+ du.updateWithPattern(this.opt, kwArgs, this.optionalParams);
201
+ if(this.opt.enableCache){
202
+ this._textFreePool = [];
203
+ this._lineFreePool = [];
204
+ this._textUsePool = [];
205
+ this._lineUsePool = [];
206
+ }
207
+ this._invalidMaxLabelSize = true;
208
+ // replace deprecated leftBotton to position
209
+ if(!(kwArgs && ('position' in kwArgs))){
210
+ this.opt.position = this.opt.leftBottom ? "leftOrBottom" : "rightOrTop";
211
+ }
212
+ this.renderingOptions = { "shape-rendering": "crispEdges" };
213
+ },
214
+ setWindow: function(scale, offset){
215
+ // summary:
216
+ // Set the drawing "window" for the axis.
217
+ // scale: Number
218
+ // The new scale for the axis.
219
+ // offset: Number
220
+ // The new offset for the axis.
221
+ // returns: dojox/charting/axis2d/Default
222
+ // The reference to the axis for functional chaining.
223
+ if(scale != this.scale){
224
+ // if scale changed we need to recompute new max label size
225
+ this._invalidMaxLabelSize = true;
226
+ }
227
+ return this.inherited(arguments);
228
+ },
229
+
230
+ _groupLabelWidth: function(labels, font, wcLimit){
231
+ if(!labels.length){
232
+ return 0;
233
+ }
234
+ if(labels.length > 50){
235
+ // let's avoid degenerated cases
236
+ labels.length = 50;
237
+ }
238
+ if(lang.isObject(labels[0])){
239
+ labels = df.map(labels, function(label){ return label.text; });
240
+ }
241
+ if(wcLimit){
242
+ labels = df.map(labels, function(label){
243
+ return lang.trim(label).length == 0 ? "" : label.substring(0, wcLimit) + this.trailingSymbol;
244
+ }, this);
245
+ }
246
+ var s = labels.join("<br>");
247
+ return g._base._getTextBox(s, {font: font}).w || 0;
248
+ },
249
+
250
+ _getMaxLabelSize: function(min, max, span, rotation, font, size){
251
+ if(this._maxLabelSize == null && arguments.length == 6){
252
+ var o = this.opt;
253
+ // everything might have changed, reset the minMinorStep value
254
+ this.scaler.minMinorStep = this._prevMinMinorStep = 0;
255
+ var ob = lang.clone(o);
256
+ delete ob.to;
257
+ delete ob.from;
258
+ // build all the ticks from min, to max not from to to _but_ using the step
259
+ // that would be used if we where just displaying from to to from.
260
+ var sb = lin.buildScaler(min, max, span, ob, o.to - o.from);
261
+ sb.minMinorStep = 0;
262
+ this._majorStart = sb.major.start;
263
+ // we build all the ticks not only the ones we need to draw in order to get
264
+ // a correct drop rate computation that works for any offset of this scale
265
+ var tb = lin.buildTicks(sb, o);
266
+ // if there is not tick at all tb is null
267
+ if(size && tb){
268
+ var majLabelW = 0, minLabelW = 0; // non rotated versions
269
+ // we first collect all labels when needed
270
+ var tickLabelFunc = function(tick){
271
+ if(tick.label){
272
+ this.push(tick.label);
273
+ }
274
+ };
275
+ var labels = [];
276
+ if(this.opt.majorLabels){
277
+ arr.forEach(tb.major, tickLabelFunc, labels);
278
+ majLabelW = this._groupLabelWidth(labels, font, ob.maxLabelCharCount);
279
+ if(ob.maxLabelSize){
280
+ majLabelW = Math.min(ob.maxLabelSize, majLabelW);
281
+ }
282
+ }
283
+ // do the minor labels computation only if dropLabels is set
284
+ labels = [];
285
+ if(this.opt.dropLabels && this.opt.minorLabels){
286
+ arr.forEach(tb.minor, tickLabelFunc, labels);
287
+ minLabelW = this._groupLabelWidth(labels, font, ob.maxLabelCharCount);
288
+ if(ob.maxLabelSize){
289
+ minLabelW = Math.min(ob.maxLabelSize, minLabelW);
290
+ }
291
+ }
292
+ this._maxLabelSize = {
293
+ majLabelW: majLabelW, minLabelW: minLabelW,
294
+ majLabelH: size, minLabelH: size
295
+ };
296
+ }else{
297
+ this._maxLabelSize = null;
298
+ }
299
+ }
300
+ return this._maxLabelSize;
301
+ },
302
+
303
+ calculate: function(min, max, span){
304
+ this.inherited(arguments);
305
+ // when the scale has not changed there is no reason for minMinorStep to change
306
+ this.scaler.minMinorStep = this._prevMinMinorStep;
307
+ // we want to recompute the dropping mechanism only when the scale or the size of the axis is changing
308
+ // not when for example when we scroll (otherwise effect would be weird)
309
+ if((this._invalidMaxLabelSize || span != this._oldSpan) && (min != Infinity && max != -Infinity)){
310
+ this._invalidMaxLabelSize = false;
311
+ if(this.opt.labelSizeChange){
312
+ this._maxLabelSize = null;
313
+ }
314
+ this._oldSpan = span;
315
+ var o = this.opt;
316
+ var ta = this.chart.theme.axis, rotation = o.rotation % 360,
317
+ labelGap = this.chart.theme.axis.tick.labelGap,
318
+ // TODO: we use one font --- of major tick, we need to use major and minor fonts
319
+ font = o.font || (ta.majorTick && ta.majorTick.font) || (ta.tick && ta.tick.font),
320
+ size = font ? g.normalizedLength(g.splitFontString(font).size) : 0,
321
+ // even if we don't drop label we need to compute max size for offsets
322
+ labelW = this._getMaxLabelSize(min, max, span, rotation, font, size);
323
+ if(typeof labelGap != "number"){
324
+ labelGap = 4; // in pixels
325
+ }
326
+ if(labelW && o.dropLabels){
327
+ var cosr = Math.abs(Math.cos(rotation * Math.PI / 180)),
328
+ sinr = Math.abs(Math.sin(rotation * Math.PI / 180));
329
+ var majLabelW, minLabelW;
330
+ if(rotation < 0){
331
+ rotation += 360;
332
+ }
333
+ switch(rotation){
334
+ case 0:
335
+ case 180:
336
+ // trivial cases: horizontal labels
337
+ if(this.vertical){
338
+ majLabelW = minLabelW = size;
339
+ }else{
340
+ majLabelW = labelW.majLabelW;
341
+ minLabelW = labelW.minLabelW;
342
+ }
343
+ break;
344
+ case 90:
345
+ case 270:
346
+ // trivial cases: vertical
347
+ if(this.vertical){
348
+ majLabelW = labelW.majLabelW;
349
+ minLabelW = labelW.minLabelW;
350
+ }else{
351
+ majLabelW = minLabelW = size;
352
+ }
353
+ break;
354
+ default:
355
+ // all major labels are parallel they can't collapse except if the two ticks are
356
+ // closer than the height of the text * cos(90-rotation)
357
+ majLabelW = this.vertical ? Math.min(labelW.majLabelW, size / cosr) : Math.min(labelW.majLabelW, size / sinr);
358
+ // for minor labels we need to rotated them
359
+ var gap1 = Math.sqrt(labelW.minLabelW * labelW.minLabelW + size * size),
360
+ gap2 = this.vertical ? size * cosr + labelW.minLabelW * sinr : labelW.minLabelW * cosr + size * sinr;
361
+ minLabelW = Math.min(gap1, gap2);
362
+ break;
363
+ }
364
+ // we need to check both minor and major labels fit a minor step
365
+ this.scaler.minMinorStep = this._prevMinMinorStep = Math.max(majLabelW, minLabelW) + labelGap;
366
+ var canMinorLabel = this.scaler.minMinorStep <= this.scaler.minor.tick * this.scaler.bounds.scale;
367
+ if(!canMinorLabel){
368
+ // we can't place minor labels, let's see if we can place major ones
369
+ // in a major step and if not which skip interval we must follow
370
+ this._skipInterval = Math.floor((majLabelW + labelGap) / (this.scaler.major.tick * this.scaler.bounds.scale));
371
+ }else{
372
+ // everything fit well
373
+ this._skipInterval = 0;
374
+ }
375
+ }else{
376
+ // drop label disabled
377
+ this._skipInterval = 0;
378
+ }
379
+ }
380
+ // computes the tick subset we need for that scale/offset
381
+ this.ticks = lin.buildTicks(this.scaler, this.opt);
382
+ return this;
383
+ },
384
+
385
+ getOffsets: function(){
386
+ // summary:
387
+ // Get the physical offset values for this axis (used in drawing data series). This method is not
388
+ // supposed to be called by the users but internally.
389
+ // returns: Object
390
+ // The calculated offsets in the form of { l, r, t, b } (left, right, top, bottom).
391
+ var s = this.scaler, offsets = { l: 0, r: 0, t: 0, b: 0 };
392
+ if(!s){
393
+ return offsets;
394
+ }
395
+ var o = this.opt,
396
+ ta = this.chart.theme.axis,
397
+ labelGap = this.chart.theme.axis.tick.labelGap,
398
+ // TODO: we use one font --- of major tick, we need to use major and minor fonts
399
+ taTitleFont = o.titleFont || (ta.title && ta.title.font),
400
+ taTitleGap = (o.titleGap==0) ? 0 : o.titleGap || (ta.title && ta.title.gap),
401
+ taMajorTick = this.chart.theme.getTick("major", o),
402
+ taMinorTick = this.chart.theme.getTick("minor", o),
403
+ tsize = taTitleFont ? g.normalizedLength(g.splitFontString(taTitleFont).size) : 0,
404
+ rotation = o.rotation % 360, position = o.position,
405
+ leftBottom = position !== "rightOrTop",
406
+ cosr = Math.abs(Math.cos(rotation * Math.PI / 180)),
407
+ sinr = Math.abs(Math.sin(rotation * Math.PI / 180));
408
+ this.trailingSymbol = (o.trailingSymbol === undefined || o.trailingSymbol === null) ?
409
+ this.trailingSymbol : o.trailingSymbol;
410
+ if(typeof labelGap != "number"){
411
+ labelGap = 4; // in pixels
412
+ }
413
+ if(rotation < 0){
414
+ rotation += 360;
415
+ }
416
+ var maxLabelSize = this._getMaxLabelSize(); // don't need parameters, calculate has been called before => we use cached value
417
+ if(maxLabelSize){
418
+ var side;
419
+ var labelWidth = Math.ceil(Math.max(maxLabelSize.majLabelW, maxLabelSize.minLabelW)) + 1,
420
+ size = Math.ceil(Math.max(maxLabelSize.majLabelH, maxLabelSize.minLabelH)) + 1;
421
+ if(this.vertical){
422
+ side = leftBottom ? "l" : "r";
423
+ switch(rotation){
424
+ case 0:
425
+ case 180:
426
+ offsets[side] = position === "center" ? 0 : labelWidth;
427
+ offsets.t = offsets.b = size / 2;
428
+ break;
429
+ case 90:
430
+ case 270:
431
+ offsets[side] = size;
432
+ offsets.t = offsets.b = labelWidth / 2;
433
+ break;
434
+ default:
435
+ if(rotation <= centerAnchorLimit || (180 < rotation && rotation <= (180 + centerAnchorLimit))){
436
+ offsets[side] = size * sinr / 2 + labelWidth * cosr;
437
+ offsets[leftBottom ? "t" : "b"] = size * cosr / 2 + labelWidth * sinr;
438
+ offsets[leftBottom ? "b" : "t"] = size * cosr / 2;
439
+ }else if(rotation > (360 - centerAnchorLimit) || (180 > rotation && rotation > (180 - centerAnchorLimit))){
440
+ offsets[side] = size * sinr / 2 + labelWidth * cosr;
441
+ offsets[leftBottom ? "b" : "t"] = size * cosr / 2 + labelWidth * sinr;
442
+ offsets[leftBottom ? "t" : "b"] = size * cosr / 2;
443
+ }else if(rotation < 90 || (180 < rotation && rotation < 270)){
444
+ offsets[side] = size * sinr + labelWidth * cosr;
445
+ offsets[leftBottom ? "t" : "b"] = size * cosr + labelWidth * sinr;
446
+ }else{
447
+ offsets[side] = size * sinr + labelWidth * cosr;
448
+ offsets[leftBottom ? "b" : "t"] = size * cosr + labelWidth * sinr;
449
+ }
450
+ break;
451
+ }
452
+ if(position === "center"){
453
+ offsets[side] = 0;
454
+ }
455
+ else{
456
+ offsets[side] += labelGap + Math.max(taMajorTick.length > 0?taMajorTick.length:0,
457
+ taMinorTick.length > 0?taMinorTick.length:0) + (o.title ? (tsize + taTitleGap) : 0);
458
+ }
459
+ }else{
460
+ side = leftBottom ? "b" : "t";
461
+ switch(rotation){
462
+ case 0:
463
+ case 180:
464
+ offsets[side] = position === "center" ? 0 : size;
465
+ offsets.l = offsets.r = labelWidth / 2;
466
+ break;
467
+ case 90:
468
+ case 270:
469
+ offsets[side] = labelWidth;
470
+ offsets.l = offsets.r = size / 2;
471
+ break;
472
+ default:
473
+ if((90 - centerAnchorLimit) <= rotation && rotation <= 90 || (270 - centerAnchorLimit) <= rotation && rotation <= 270){
474
+ offsets[side] = size * cosr / 2 + labelWidth * sinr;
475
+ offsets[leftBottom ? "r" : "l"] = size * sinr / 2 + labelWidth * cosr;
476
+ offsets[leftBottom ? "l" : "r"] = size * sinr / 2;
477
+ }else if(90 <= rotation && rotation <= (90 + centerAnchorLimit) || 270 <= rotation && rotation <= (270 + centerAnchorLimit)){
478
+ offsets[side] = size * cosr / 2 + labelWidth * sinr;
479
+ offsets[leftBottom ? "l" : "r"] = size * sinr / 2 + labelWidth * cosr;
480
+ offsets[leftBottom ? "r" : "l"] = size * sinr / 2;
481
+ }else if(rotation < centerAnchorLimit || (180 < rotation && rotation < (180 + centerAnchorLimit))){
482
+ offsets[side] = size * cosr + labelWidth * sinr;
483
+ offsets[leftBottom ? "r" : "l"] = size * sinr + labelWidth * cosr;
484
+ }else{
485
+ offsets[side] = size * cosr + labelWidth * sinr;
486
+ offsets[leftBottom ? "l" : "r"] = size * sinr + labelWidth * cosr;
487
+ }
488
+ break;
489
+ }
490
+ if(position === "center"){
491
+ offsets[side] = 0;
492
+ }
493
+ else{
494
+ offsets[side] += labelGap + Math.max(taMajorTick.length > 0?taMajorTick.length:0,
495
+ taMinorTick.length > 0?taMinorTick.length:0) + (o.title ? (tsize + taTitleGap) : 0);
496
+ }
497
+ }
498
+ }
499
+ return offsets; // Object
500
+ },
501
+ cleanGroup: function(creator){
502
+ if(this.opt.enableCache && this.group){
503
+ this._lineFreePool = this._lineFreePool.concat(this._lineUsePool);
504
+ this._lineUsePool = [];
505
+ this._textFreePool = this._textFreePool.concat(this._textUsePool);
506
+ this._textUsePool = [];
507
+ }
508
+ this.inherited(arguments);
509
+ },
510
+ createText: function(labelType, creator, x, y, align, textContent, font, fontColor, labelWidth){
511
+ if(!this.opt.enableCache || labelType=="html"){
512
+ return acommon.createText[labelType](
513
+ this.chart,
514
+ creator,
515
+ x,
516
+ y,
517
+ align,
518
+ textContent,
519
+ font,
520
+ fontColor,
521
+ labelWidth
522
+ );
523
+ }
524
+ var text;
525
+ if(this._textFreePool.length > 0){
526
+ text = this._textFreePool.pop();
527
+ text.setShape({x: x, y: y, text: textContent, align: align});
528
+ // For now all items share the same font, no need to re-set it
529
+ //.setFont(font).setFill(fontColor);
530
+ // was cleared, add it back
531
+ creator.add(text);
532
+ }else{
533
+ text = acommon.createText[labelType](
534
+ this.chart,
535
+ creator,
536
+ x,
537
+ y,
538
+ align,
539
+ textContent,
540
+ font,
541
+ fontColor
542
+ );
543
+ }
544
+ this._textUsePool.push(text);
545
+ return text;
546
+ },
547
+ createLine: function(creator, params){
548
+ var line;
549
+ if(this.opt.enableCache && this._lineFreePool.length > 0){
550
+ line = this._lineFreePool.pop();
551
+ line.setShape(params);
552
+ // was cleared, add it back
553
+ creator.add(line);
554
+ }else{
555
+ line = creator.createLine(params);
556
+ }
557
+ if(this.opt.enableCache){
558
+ this._lineUsePool.push(line);
559
+ }
560
+ return line;
561
+ },
562
+ render: function(dim, offsets){
563
+ // summary:
564
+ // Render/draw the axis.
565
+ // dim: Object
566
+ // An object of the form { width, height}.
567
+ // offsets: Object
568
+ // An object of the form { l, r, t, b }.
569
+ // returns: dojox/charting/axis2d/Default
570
+ // The reference to the axis for functional chaining.
571
+
572
+ var isRtl = this._isRtl(); // chart mirroring
573
+ if(!this.dirty || !this.scaler){
574
+ return this; // dojox/charting/axis2d/Default
575
+ }
576
+ // prepare variable
577
+ var o = this.opt, ta = this.chart.theme.axis, position = o.position,
578
+ leftBottom = position !== "rightOrTop", rotation = o.rotation % 360,
579
+ start, stop, titlePos, titleRotation=0, titleOffset, axisVector, tickVector, anchorOffset, labelOffset, labelAlign,
580
+ labelGap = this.chart.theme.axis.tick.labelGap,
581
+ // TODO: we use one font --- of major tick, we need to use major and minor fonts
582
+ taFont = o.font || (ta.majorTick && ta.majorTick.font) || (ta.tick && ta.tick.font),
583
+ taTitleFont = o.titleFont || (ta.title && ta.title.font),
584
+ // TODO: we use one font color --- we need to use different colors
585
+ taFontColor = o.fontColor || (ta.majorTick && ta.majorTick.fontColor) || (ta.tick && ta.tick.fontColor) || "black",
586
+ taTitleFontColor = o.titleFontColor || (ta.title && ta.title.fontColor) || "black",
587
+ taTitleGap = (o.titleGap==0) ? 0 : o.titleGap || (ta.title && ta.title.gap) || 15,
588
+ taTitleOrientation = o.titleOrientation || (ta.title && ta.title.orientation) || "axis",
589
+ taMajorTick = this.chart.theme.getTick("major", o),
590
+ taMinorTick = this.chart.theme.getTick("minor", o),
591
+ taMicroTick = this.chart.theme.getTick("micro", o),
592
+
593
+ taStroke = "stroke" in o ? o.stroke : ta.stroke,
594
+ size = taFont ? g.normalizedLength(g.splitFontString(taFont).size) : 0,
595
+ cosr = Math.abs(Math.cos(rotation * Math.PI / 180)),
596
+ sinr = Math.abs(Math.sin(rotation * Math.PI / 180)),
597
+ tsize = taTitleFont ? g.normalizedLength(g.splitFontString(taTitleFont).size) : 0;
598
+ if(typeof labelGap != "number"){
599
+ labelGap = 4; // in pixels
600
+ }
601
+ if(rotation < 0){
602
+ rotation += 360;
603
+ }
604
+ var cachedLabelW = this._getMaxLabelSize();
605
+ cachedLabelW = cachedLabelW && cachedLabelW.majLabelW;
606
+ if(this.vertical){
607
+ start = {y: dim.height - offsets.b};
608
+ stop = {y: offsets.t};
609
+ titlePos = {y: (dim.height - offsets.b + offsets.t)/2};
610
+ titleOffset = size * sinr + (cachedLabelW || 0) * cosr + labelGap + Math.max(taMajorTick.length > 0?taMajorTick.length:0,
611
+ taMinorTick.length > 0?taMinorTick.length:0) +
612
+ tsize + taTitleGap;
613
+ axisVector = {x: 0, y: -1};
614
+ labelOffset = {x: 0, y: 0};
615
+ tickVector = {x: 1, y: 0};
616
+ anchorOffset = {x: labelGap, y: 0};
617
+ switch(rotation){
618
+ case 0:
619
+ labelAlign = "end";
620
+ labelOffset.y = size * 0.4;
621
+ break;
622
+ case 90:
623
+ labelAlign = "middle";
624
+ labelOffset.x = -size;
625
+ break;
626
+ case 180:
627
+ labelAlign = "start";
628
+ labelOffset.y = -size * 0.4;
629
+ break;
630
+ case 270:
631
+ labelAlign = "middle";
632
+ break;
633
+ default:
634
+ if(rotation < centerAnchorLimit){
635
+ labelAlign = "end";
636
+ labelOffset.y = size * 0.4;
637
+ }else if(rotation < 90){
638
+ labelAlign = "end";
639
+ labelOffset.y = size * 0.4;
640
+ }else if(rotation < (180 - centerAnchorLimit)){
641
+ labelAlign = "start";
642
+ }else if(rotation < (180 + centerAnchorLimit)){
643
+ labelAlign = "start";
644
+ labelOffset.y = -size * 0.4;
645
+ }else if(rotation < 270){
646
+ labelAlign = "start";
647
+ labelOffset.x = leftBottom ? 0 : size * 0.4;
648
+ }else if(rotation < (360 - centerAnchorLimit)){
649
+ labelAlign = "end";
650
+ labelOffset.x = leftBottom ? 0 : size * 0.4;
651
+ }else{
652
+ labelAlign = "end";
653
+ labelOffset.y = size * 0.4;
654
+ }
655
+ }
656
+ if(leftBottom){
657
+ start.x = stop.x = position === "center" ? dim.width/2 : offsets.l;
658
+ titleRotation = (taTitleOrientation && taTitleOrientation == "away") ? 90 : 270;
659
+ titlePos.x = offsets.l - titleOffset + (titleRotation == 270 ? tsize : 0);
660
+ tickVector.x = -1;
661
+ anchorOffset.x = -anchorOffset.x;
662
+ }else{
663
+ start.x = stop.x = dim.width - offsets.r;
664
+ titleRotation = (taTitleOrientation && taTitleOrientation == "axis") ? 90 : 270;
665
+ titlePos.x = dim.width - offsets.r + titleOffset - (titleRotation == 270 ? 0 : tsize);
666
+ switch(labelAlign){
667
+ case "start":
668
+ labelAlign = "end";
669
+ break;
670
+ case "end":
671
+ labelAlign = "start";
672
+ break;
673
+ case "middle":
674
+ labelOffset.x += size;
675
+ break;
676
+ }
677
+ }
678
+ }else{
679
+ start = {x: offsets.l};
680
+ stop = {x: dim.width - offsets.r};
681
+ titlePos = {x: (dim.width - offsets.r + offsets.l)/2};
682
+ titleOffset = size * cosr + (cachedLabelW || 0) * sinr + labelGap + Math.max(taMajorTick.length > 0?taMajorTick.length:0,
683
+ taMinorTick.length > 0?taMinorTick.length:0) +
684
+ tsize + taTitleGap;
685
+ axisVector = {x: isRtl ? -1 : 1, y: 0}; // chart mirroring
686
+ labelOffset = {x: 0, y: 0};
687
+ tickVector = {x: 0, y: 1};
688
+ anchorOffset = {x: 0, y: labelGap};
689
+ switch(rotation){
690
+ case 0:
691
+ labelAlign = "middle";
692
+ labelOffset.y = size;
693
+ break;
694
+ case 90:
695
+ labelAlign = "start";
696
+ labelOffset.x = -size * 0.4;
697
+ break;
698
+ case 180:
699
+ labelAlign = "middle";
700
+ break;
701
+ case 270:
702
+ labelAlign = "end";
703
+ labelOffset.x = size * 0.4;
704
+ break;
705
+ default:
706
+ if(rotation < (90 - centerAnchorLimit)){
707
+ labelAlign = "start";
708
+ labelOffset.y = leftBottom ? size : 0;
709
+ }else if(rotation < (90 + centerAnchorLimit)){
710
+ labelAlign = "start";
711
+ labelOffset.x = -size * 0.4;
712
+ }else if(rotation < 180){
713
+ labelAlign = "start";
714
+ labelOffset.y = leftBottom ? 0 : -size;
715
+ }else if(rotation < (270 - centerAnchorLimit)){
716
+ labelAlign = "end";
717
+ labelOffset.y = leftBottom ? 0 : -size;
718
+ }else if(rotation < (270 + centerAnchorLimit)){
719
+ labelAlign = "end";
720
+ labelOffset.y = leftBottom ? size * 0.4 : 0;
721
+ }else{
722
+ labelAlign = "end";
723
+ labelOffset.y = leftBottom ? size : 0;
724
+ }
725
+ }
726
+ if(leftBottom){
727
+ start.y = stop.y = position === "center" ? dim.height/2 : dim.height - offsets.b;
728
+ titleRotation = (taTitleOrientation && taTitleOrientation == "axis") ? 180 : 0;
729
+ titlePos.y = dim.height - offsets.b + titleOffset - (titleRotation ? tsize : 0);
730
+ }else{
731
+ start.y = stop.y = offsets.t;
732
+ titleRotation = (taTitleOrientation && taTitleOrientation == "away") ? 180 : 0;
733
+ titlePos.y = offsets.t - titleOffset + (titleRotation ? 0 : tsize);
734
+ tickVector.y = -1;
735
+ anchorOffset.y = -anchorOffset.y;
736
+ switch(labelAlign){
737
+ case "start":
738
+ labelAlign = "end";
739
+ break;
740
+ case "end":
741
+ labelAlign = "start";
742
+ break;
743
+ case "middle":
744
+ labelOffset.y -= size;
745
+ break;
746
+ }
747
+ }
748
+ }
749
+
750
+ // render shapes
751
+
752
+ this.cleanGroup();
753
+
754
+ var s = this.group,
755
+ c = this.scaler,
756
+ t = this.ticks,
757
+ f = lin.getTransformerFromModel(this.scaler),
758
+ // GFX Canvas now supports labels, so let's _not_ fallback to HTML anymore on canvas, just use
759
+ // HTML labels if explicitly asked + no rotation + no IE + no Opera
760
+ labelType = (!o.title || !titleRotation) && !rotation && this.opt.htmlLabels && !has("ie") && !has("opera") ? "html" : "gfx",
761
+ dx = tickVector.x * taMajorTick.length,
762
+ dy = tickVector.y * taMajorTick.length,
763
+ skip = this._skipInterval;
764
+
765
+ s.createLine({
766
+ x1: start.x,
767
+ y1: start.y,
768
+ x2: stop.x,
769
+ y2: stop.y
770
+ }).setStroke(taStroke);
771
+
772
+ //create axis title
773
+ if(o.title){
774
+ var axisTitle = acommon.createText[labelType](
775
+ this.chart,
776
+ s,
777
+ titlePos.x,
778
+ titlePos.y,
779
+ "middle",
780
+ o.title,
781
+ taTitleFont,
782
+ taTitleFontColor
783
+ );
784
+ if(labelType == "html"){
785
+ this.htmlElements.push(axisTitle);
786
+ }else{
787
+ //as soon as rotation is provided, labelType won't be "html"
788
+ //rotate gfx labels
789
+ axisTitle.setTransform(g.matrix.rotategAt(titleRotation, titlePos.x, titlePos.y));
790
+ }
791
+ }
792
+
793
+ // go out nicely instead of try/catch
794
+ if(t == null){
795
+ this.dirty = false;
796
+ return this;
797
+ }
798
+
799
+ var rel = (t.major.length > 0)?(t.major[0].value - this._majorStart) / c.major.tick:0;
800
+ var canLabel = this.opt.majorLabels;
801
+ arr.forEach(t.major, function(tick, i){
802
+ var offset = f(tick.value), elem,
803
+ x = (isRtl ? stop.x : start.x) + axisVector.x * offset, // chart mirroring
804
+ y = start.y + axisVector.y * offset;
805
+ i += rel;
806
+ this.createLine(s, {
807
+ x1: x, y1: y,
808
+ x2: x + dx,
809
+ y2: y + dy
810
+ }).setStroke(taMajorTick);
811
+ if(tick.label && (!skip || (i - (1 + skip)) % (1 + skip) == 0)){
812
+ var label = o.maxLabelCharCount ? this.getTextWithLimitCharCount(tick.label, taFont, o.maxLabelCharCount) : {
813
+ text: tick.label,
814
+ truncated: false
815
+ };
816
+ label = o.maxLabelSize ? this.getTextWithLimitLength(label.text, taFont, o.maxLabelSize, label.truncated) : label;
817
+ elem = this.createText(labelType,
818
+ s,
819
+ x + (taMajorTick.length > 0 ? dx : 0) + anchorOffset.x + (rotation ? 0 : labelOffset.x),
820
+ y + (taMajorTick.length > 0 ? dy : 0) + anchorOffset.y + (rotation ? 0 : labelOffset.y),
821
+ labelAlign,
822
+ label.text,
823
+ taFont,
824
+ taFontColor
825
+ //cachedLabelW
826
+ );
827
+ // if bidi support was required, the textDir is "auto" and truncation
828
+ // took place, we need to update the dir of the element for cases as:
829
+ // Fool label: 111111W (W for bidi character)
830
+ // truncated label: 11...
831
+ // in this case for auto textDir the dir will be "ltr" which is wrong.
832
+ if(label.truncated){
833
+ this.chart.formatTruncatedLabel(elem, tick.label, labelType);
834
+ }
835
+ label.truncated && this.labelTooltip(elem, this.chart, tick.label, label.text, taFont, labelType);
836
+ if(labelType == "html"){
837
+ this.htmlElements.push(elem);
838
+ }else if(rotation){
839
+ elem.setTransform([
840
+ {dx: labelOffset.x, dy: labelOffset.y},
841
+ g.matrix.rotategAt(
842
+ rotation,
843
+ x + (taMajorTick.length > 0 ? dx : 0) + anchorOffset.x,
844
+ y + (taMajorTick.length > 0 ? dy : 0) + anchorOffset.y
845
+ )
846
+ ]);
847
+ }
848
+ }
849
+ }, this);
850
+
851
+ dx = tickVector.x * taMinorTick.length;
852
+ dy = tickVector.y * taMinorTick.length;
853
+ canLabel = this.opt.minorLabels && c.minMinorStep <= c.minor.tick * c.bounds.scale;
854
+ arr.forEach(t.minor, function(tick){
855
+ var offset = f(tick.value), elem,
856
+ x = (isRtl ? stop.x : start.x) + axisVector.x * offset,
857
+ y = start.y + axisVector.y * offset; // chart mirroring
858
+ this.createLine(s, {
859
+ x1: x, y1: y,
860
+ x2: x + dx,
861
+ y2: y + dy
862
+ }).setStroke(taMinorTick);
863
+ if(canLabel && tick.label){
864
+ var label = o.maxLabelCharCount ? this.getTextWithLimitCharCount(tick.label, taFont, o.maxLabelCharCount) : {
865
+ text: tick.label,
866
+ truncated: false
867
+ };
868
+ label = o.maxLabelSize ? this.getTextWithLimitLength(label.text, taFont, o.maxLabelSize, label.truncated) : label;
869
+ elem = this.createText(labelType,
870
+ s,
871
+ x + (taMinorTick.length > 0 ? dx : 0) + anchorOffset.x + (rotation ? 0 : labelOffset.x),
872
+ y + (taMinorTick.length > 0 ? dy : 0) + anchorOffset.y + (rotation ? 0 : labelOffset.y),
873
+ labelAlign,
874
+ label.text,
875
+ taFont,
876
+ taFontColor
877
+ //cachedLabelW
878
+ );
879
+ // if bidi support was required, the textDir is "auto" and truncation
880
+ // took place, we need to update the dir of the element for cases as:
881
+ // Fool label: 111111W (W for bidi character)
882
+ // truncated label: 11...
883
+ // in this case for auto textDir the dir will be "ltr" which is wrong.
884
+ if(label.truncated){
885
+ this.chart.formatTruncatedLabel(elem, tick.label, labelType);
886
+ }
887
+ label.truncated && this.labelTooltip(elem, this.chart, tick.label, label.text, taFont, labelType);
888
+ if(labelType == "html"){
889
+ this.htmlElements.push(elem);
890
+ }else if(rotation){
891
+ elem.setTransform([
892
+ {dx: labelOffset.x, dy: labelOffset.y},
893
+ g.matrix.rotategAt(
894
+ rotation,
895
+ x + (taMinorTick.length > 0 ? dx : 0) + anchorOffset.x,
896
+ y + (taMinorTick.length > 0 ? dy : 0) + anchorOffset.y
897
+ )
898
+ ]);
899
+ }
900
+ }
901
+ }, this);
902
+
903
+ dx = tickVector.x * taMicroTick.length;
904
+ dy = tickVector.y * taMicroTick.length;
905
+ arr.forEach(t.micro, function(tick){
906
+ var offset = f(tick.value),
907
+ x = start.x + axisVector.x * offset,
908
+ y = start.y + axisVector.y * offset;
909
+ this.createLine(s, {
910
+ x1: x, y1: y,
911
+ x2: x + dx,
912
+ y2: y + dy
913
+ }).setStroke(taMicroTick);
914
+ }, this);
915
+
916
+ this.dirty = false;
917
+ return this; // dojox/charting/axis2d/Default
918
+ },
919
+ labelTooltip: function(elem, chart, label, truncatedLabel, font, elemType){
920
+ var modules = ["dijit/Tooltip"];
921
+ var aroundRect = {type: "rect"}, position = ["above", "below"],
922
+ fontWidth = g._base._getTextBox(truncatedLabel, {font: font}).w || 0,
923
+ fontHeight = font ? g.normalizedLength(g.splitFontString(font).size) : 0;
924
+ if(elemType == "html"){
925
+ lang.mixin(aroundRect, domGeom.position(elem.firstChild, true));
926
+ aroundRect.width = Math.ceil(fontWidth);
927
+ aroundRect.height = Math.ceil(fontHeight);
928
+ this._events.push({
929
+ shape: dojo,
930
+ handle: connect.connect(elem.firstChild, "onmouseover", this, function(e){
931
+ require(modules, function(Tooltip){
932
+ Tooltip.show(label, aroundRect, position);
933
+ });
934
+ })
935
+ });
936
+ this._events.push({
937
+ shape: dojo,
938
+ handle: connect.connect(elem.firstChild, "onmouseout", this, function(e){
939
+ require(modules, function(Tooltip){
940
+ Tooltip.hide(aroundRect);
941
+ });
942
+ })
943
+ });
944
+ }else{
945
+ var shp = elem.getShape(),
946
+ lt = chart.getCoords();
947
+ aroundRect = lang.mixin(aroundRect, {
948
+ x: shp.x - fontWidth / 2,
949
+ y: shp.y
950
+ });
951
+ aroundRect.x += lt.x;
952
+ aroundRect.y += lt.y;
953
+ aroundRect.x = Math.round(aroundRect.x);
954
+ aroundRect.y = Math.round(aroundRect.y);
955
+ aroundRect.width = Math.ceil(fontWidth);
956
+ aroundRect.height = Math.ceil(fontHeight);
957
+ this._events.push({
958
+ shape: elem,
959
+ handle: elem.connect("onmouseenter", this, function(e){
960
+ require(modules, function(Tooltip){
961
+ Tooltip.show(label, aroundRect, position);
962
+ });
963
+ })
964
+ });
965
+ this._events.push({
966
+ shape: elem,
967
+ handle: elem.connect("onmouseleave", this, function(e){
968
+ require(modules, function(Tooltip){
969
+ Tooltip.hide(aroundRect);
970
+ });
971
+ })
972
+ });
973
+ }
974
+ },
975
+ _isRtl: function(){
976
+ return false;
977
+ }
978
+ });
979
+ return has("dojo-bidi")? declare("dojox.charting.axis2d.Default", [Default, BidiDefault]) : Default;
980
+ });