extjs-rails 4.1.0.alpha1

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 (517) hide show
  1. data/.gitignore +18 -0
  2. data/Gemfile +4 -0
  3. data/LICENSE +36 -0
  4. data/README.md +29 -0
  5. data/Rakefile +2 -0
  6. data/app/assets/javascripts/extjs-rails/extjs-rails.js +1 -0
  7. data/app/assets/javascripts/extjs-rails/index.js.erb +9 -0
  8. data/app/assets/javascripts/extjs-rails/sdk.jsb3 +2017 -0
  9. data/app/assets/javascripts/extjs-rails/src/AbstractComponent.js +3290 -0
  10. data/app/assets/javascripts/extjs-rails/src/AbstractManager.js +144 -0
  11. data/app/assets/javascripts/extjs-rails/src/AbstractPlugin.js +72 -0
  12. data/app/assets/javascripts/extjs-rails/src/Action.js +276 -0
  13. data/app/assets/javascripts/extjs-rails/src/Ajax.js +99 -0
  14. data/app/assets/javascripts/extjs-rails/src/Component.js +1344 -0
  15. data/app/assets/javascripts/extjs-rails/src/ComponentLoader.js +202 -0
  16. data/app/assets/javascripts/extjs-rails/src/ComponentManager.js +47 -0
  17. data/app/assets/javascripts/extjs-rails/src/ComponentQuery.js +521 -0
  18. data/app/assets/javascripts/extjs-rails/src/Editor.js +494 -0
  19. data/app/assets/javascripts/extjs-rails/src/ElementLoader.js +404 -0
  20. data/app/assets/javascripts/extjs-rails/src/FocusManager.js +712 -0
  21. data/app/assets/javascripts/extjs-rails/src/Img.js +111 -0
  22. data/app/assets/javascripts/extjs-rails/src/Layer.js +543 -0
  23. data/app/assets/javascripts/extjs-rails/src/LoadMask.js +432 -0
  24. data/app/assets/javascripts/extjs-rails/src/ModelManager.js +186 -0
  25. data/app/assets/javascripts/extjs-rails/src/PluginManager.js +110 -0
  26. data/app/assets/javascripts/extjs-rails/src/ProgressBar.js +336 -0
  27. data/app/assets/javascripts/extjs-rails/src/Shadow.js +233 -0
  28. data/app/assets/javascripts/extjs-rails/src/ShadowPool.js +43 -0
  29. data/app/assets/javascripts/extjs-rails/src/Template.js +331 -0
  30. data/app/assets/javascripts/extjs-rails/src/XTemplate.js +365 -0
  31. data/app/assets/javascripts/extjs-rails/src/XTemplateCompiler.js +450 -0
  32. data/app/assets/javascripts/extjs-rails/src/XTemplateParser.js +249 -0
  33. data/app/assets/javascripts/extjs-rails/src/ZIndexManager.js +519 -0
  34. data/app/assets/javascripts/extjs-rails/src/app/Application.js +271 -0
  35. data/app/assets/javascripts/extjs-rails/src/app/Controller.js +458 -0
  36. data/app/assets/javascripts/extjs-rails/src/app/EventBus.js +112 -0
  37. data/app/assets/javascripts/extjs-rails/src/button/Button.js +1483 -0
  38. data/app/assets/javascripts/extjs-rails/src/button/Cycle.js +215 -0
  39. data/app/assets/javascripts/extjs-rails/src/button/Split.js +99 -0
  40. data/app/assets/javascripts/extjs-rails/src/chart/Callout.js +140 -0
  41. data/app/assets/javascripts/extjs-rails/src/chart/Chart.js +966 -0
  42. data/app/assets/javascripts/extjs-rails/src/chart/Highlight.js +172 -0
  43. data/app/assets/javascripts/extjs-rails/src/chart/Label.js +241 -0
  44. data/app/assets/javascripts/extjs-rails/src/chart/Legend.js +474 -0
  45. data/app/assets/javascripts/extjs-rails/src/chart/LegendItem.js +217 -0
  46. data/app/assets/javascripts/extjs-rails/src/chart/Mask.js +230 -0
  47. data/app/assets/javascripts/extjs-rails/src/chart/MaskLayer.js +48 -0
  48. data/app/assets/javascripts/extjs-rails/src/chart/Navigation.js +79 -0
  49. data/app/assets/javascripts/extjs-rails/src/chart/Shape.js +106 -0
  50. data/app/assets/javascripts/extjs-rails/src/chart/Tip.js +98 -0
  51. data/app/assets/javascripts/extjs-rails/src/chart/TipSurface.js +42 -0
  52. data/app/assets/javascripts/extjs-rails/src/chart/axis/Abstract.js +73 -0
  53. data/app/assets/javascripts/extjs-rails/src/chart/axis/Axis.js +961 -0
  54. data/app/assets/javascripts/extjs-rails/src/chart/axis/Category.js +130 -0
  55. data/app/assets/javascripts/extjs-rails/src/chart/axis/Gauge.js +203 -0
  56. data/app/assets/javascripts/extjs-rails/src/chart/axis/Numeric.js +235 -0
  57. data/app/assets/javascripts/extjs-rails/src/chart/axis/Radial.js +204 -0
  58. data/app/assets/javascripts/extjs-rails/src/chart/axis/Time.js +135 -0
  59. data/app/assets/javascripts/extjs-rails/src/chart/series/Area.js +803 -0
  60. data/app/assets/javascripts/extjs-rails/src/chart/series/Bar.js +853 -0
  61. data/app/assets/javascripts/extjs-rails/src/chart/series/Cartesian.js +328 -0
  62. data/app/assets/javascripts/extjs-rails/src/chart/series/Column.js +104 -0
  63. data/app/assets/javascripts/extjs-rails/src/chart/series/Gauge.js +490 -0
  64. data/app/assets/javascripts/extjs-rails/src/chart/series/Line.js +1104 -0
  65. data/app/assets/javascripts/extjs-rails/src/chart/series/Pie.js +1072 -0
  66. data/app/assets/javascripts/extjs-rails/src/chart/series/Radar.js +440 -0
  67. data/app/assets/javascripts/extjs-rails/src/chart/series/Scatter.js +668 -0
  68. data/app/assets/javascripts/extjs-rails/src/chart/series/Series.js +443 -0
  69. data/app/assets/javascripts/extjs-rails/src/chart/theme/Base.js +175 -0
  70. data/app/assets/javascripts/extjs-rails/src/chart/theme/Theme.js +253 -0
  71. data/app/assets/javascripts/extjs-rails/src/container/AbstractContainer.js +1062 -0
  72. data/app/assets/javascripts/extjs-rails/src/container/ButtonGroup.js +143 -0
  73. data/app/assets/javascripts/extjs-rails/src/container/Container.js +212 -0
  74. data/app/assets/javascripts/extjs-rails/src/container/DockingContainer.js +265 -0
  75. data/app/assets/javascripts/extjs-rails/src/container/Viewport.js +184 -0
  76. data/app/assets/javascripts/extjs-rails/src/core/dom/Element.form.js +50 -0
  77. data/app/assets/javascripts/extjs-rails/src/core/dom/Element.static-more.js +159 -0
  78. data/app/assets/javascripts/extjs-rails/src/core/examples/index.html +321 -0
  79. data/app/assets/javascripts/extjs-rails/src/core/examples/index.js +6 -0
  80. data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/CTO.js +25 -0
  81. data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/CoolGuy.js +20 -0
  82. data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/Developer.js +43 -0
  83. data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/Gun.js +3 -0
  84. data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/HumanResource.js +23 -0
  85. data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/Musician.js +20 -0
  86. data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/Person.js +50 -0
  87. data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/ability/CanComposeSongs.js +9 -0
  88. data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/ability/CanPlayGuitar.js +9 -0
  89. data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/ability/CanSing.js +18 -0
  90. data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/deadlock/A.js +3 -0
  91. data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/deadlock/B.js +3 -0
  92. data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/deadlock/C.js +3 -0
  93. data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/deadlock/D.js +3 -0
  94. data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/deadlock/E.js +3 -0
  95. data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/notdeadlock/A.js +3 -0
  96. data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/notdeadlock/B.js +4 -0
  97. data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/notdeadlock/C.js +3 -0
  98. data/app/assets/javascripts/extjs-rails/src/core/src/EventManager.js +1167 -0
  99. data/app/assets/javascripts/extjs-rails/src/core/src/EventObject.js +883 -0
  100. data/app/assets/javascripts/extjs-rails/src/core/src/Ext-more.js +1283 -0
  101. data/app/assets/javascripts/extjs-rails/src/core/src/Ext.js +736 -0
  102. data/app/assets/javascripts/extjs-rails/src/core/src/Support.js +662 -0
  103. data/app/assets/javascripts/extjs-rails/src/core/src/class/Base.js +1085 -0
  104. data/app/assets/javascripts/extjs-rails/src/core/src/class/Class.js +676 -0
  105. data/app/assets/javascripts/extjs-rails/src/core/src/class/ClassManager.js +1591 -0
  106. data/app/assets/javascripts/extjs-rails/src/core/src/class/Loader.js +1423 -0
  107. data/app/assets/javascripts/extjs-rails/src/core/src/dom/AbstractElement.alignment.js +173 -0
  108. data/app/assets/javascripts/extjs-rails/src/core/src/dom/AbstractElement.insertion.js +193 -0
  109. data/app/assets/javascripts/extjs-rails/src/core/src/dom/AbstractElement.js +681 -0
  110. data/app/assets/javascripts/extjs-rails/src/core/src/dom/AbstractElement.position.js +356 -0
  111. data/app/assets/javascripts/extjs-rails/src/core/src/dom/AbstractElement.static.js +474 -0
  112. data/app/assets/javascripts/extjs-rails/src/core/src/dom/AbstractElement.style.js +851 -0
  113. data/app/assets/javascripts/extjs-rails/src/core/src/dom/AbstractElement.traversal.js +180 -0
  114. data/app/assets/javascripts/extjs-rails/src/core/src/dom/AbstractHelper.js +291 -0
  115. data/app/assets/javascripts/extjs-rails/src/core/src/dom/AbstractQuery.js +72 -0
  116. data/app/assets/javascripts/extjs-rails/src/core/src/dom/CompositeElement.js +75 -0
  117. data/app/assets/javascripts/extjs-rails/src/core/src/dom/CompositeElementLite.js +436 -0
  118. data/app/assets/javascripts/extjs-rails/src/core/src/dom/DomQuery-aria.js +1049 -0
  119. data/app/assets/javascripts/extjs-rails/src/core/src/env/Browser.js +186 -0
  120. data/app/assets/javascripts/extjs-rails/src/core/src/env/FeatureDetector.js +274 -0
  121. data/app/assets/javascripts/extjs-rails/src/core/src/env/OS.js +141 -0
  122. data/app/assets/javascripts/extjs-rails/src/core/src/lang/Array.js +1205 -0
  123. data/app/assets/javascripts/extjs-rails/src/core/src/lang/Date.js +1463 -0
  124. data/app/assets/javascripts/extjs-rails/src/core/src/lang/Error.js +326 -0
  125. data/app/assets/javascripts/extjs-rails/src/core/src/lang/Function.js +485 -0
  126. data/app/assets/javascripts/extjs-rails/src/core/src/lang/Number.js +175 -0
  127. data/app/assets/javascripts/extjs-rails/src/core/src/lang/Object.js +606 -0
  128. data/app/assets/javascripts/extjs-rails/src/core/src/lang/String.js +333 -0
  129. data/app/assets/javascripts/extjs-rails/src/core/src/misc/JSON.js +236 -0
  130. data/app/assets/javascripts/extjs-rails/src/core/src/perf/Accumulator.js +244 -0
  131. data/app/assets/javascripts/extjs-rails/src/core/src/perf/Monitor.js +197 -0
  132. data/app/assets/javascripts/extjs-rails/src/core/src/util/DelayedTask.js +71 -0
  133. data/app/assets/javascripts/extjs-rails/src/core/src/util/Event.js +215 -0
  134. data/app/assets/javascripts/extjs-rails/src/core/src/util/Format.js +551 -0
  135. data/app/assets/javascripts/extjs-rails/src/core/src/util/TaskManager.js +417 -0
  136. data/app/assets/javascripts/extjs-rails/src/core/src/version/Version.js +364 -0
  137. data/app/assets/javascripts/extjs-rails/src/core/test/unit/README.MD +91 -0
  138. data/app/assets/javascripts/extjs-rails/src/core/test/unit/bootstrap.js +39 -0
  139. data/app/assets/javascripts/extjs-rails/src/core/test/unit/build/build-data.js +34 -0
  140. data/app/assets/javascripts/extjs-rails/src/core/test/unit/build/build.sh +2 -0
  141. data/app/assets/javascripts/extjs-rails/src/core/test/unit/data.js +27 -0
  142. data/app/assets/javascripts/extjs-rails/src/core/test/unit/index.html +15 -0
  143. data/app/assets/javascripts/extjs-rails/src/core/test/unit/other_specs/dom.html +40 -0
  144. data/app/assets/javascripts/extjs-rails/src/core/test/unit/other_specs/dom/extjs-api.js +12 -0
  145. data/app/assets/javascripts/extjs-rails/src/core/test/unit/other_specs/dom/platform-api.js +134 -0
  146. data/app/assets/javascripts/extjs-rails/src/core/test/unit/other_specs/dom/sanity.js +4 -0
  147. data/app/assets/javascripts/extjs-rails/src/core/test/unit/other_specs/dom/touch-api-out.js +128 -0
  148. data/app/assets/javascripts/extjs-rails/src/core/test/unit/other_specs/dom/touch-api.js +89 -0
  149. data/app/assets/javascripts/extjs-rails/src/core/test/unit/other_specs/env/Environment.js +357 -0
  150. data/app/assets/javascripts/extjs-rails/src/core/test/unit/resources/APITest.js +37 -0
  151. data/app/assets/javascripts/extjs-rails/src/core/test/unit/resources/jsb3.js +14 -0
  152. data/app/assets/javascripts/extjs-rails/src/core/test/unit/resources/test-setup.js +137 -0
  153. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/EventManager.js +629 -0
  154. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/Ext-mess.backup +198 -0
  155. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/Ext-more.js +520 -0
  156. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/Ext.js +1550 -0
  157. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/Support.js +250 -0
  158. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/class/Base.js +47 -0
  159. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/class/Class.js +561 -0
  160. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/class/ClassManager.js +555 -0
  161. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/dom/CompositeElementLite.js +409 -0
  162. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/dom/DomHelper.js +444 -0
  163. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/dom/Element.insertion.js +342 -0
  164. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/dom/Element.js +731 -0
  165. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/dom/Element.static.js +201 -0
  166. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/dom/Element.style.js +118 -0
  167. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/dom/Element.traversal.js +336 -0
  168. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/lang/Array.js +1229 -0
  169. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/lang/Date.js +697 -0
  170. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/lang/Error.js +277 -0
  171. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/lang/Function.js +536 -0
  172. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/lang/Number.js +323 -0
  173. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/lang/Object.js +591 -0
  174. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/lang/String.js +451 -0
  175. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/misc/JSON.js +252 -0
  176. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/util/Format.js +521 -0
  177. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/version/Version.js +148 -0
  178. data/app/assets/javascripts/extjs-rails/src/core/test/unit/specs.html +19 -0
  179. data/app/assets/javascripts/extjs-rails/src/data/AbstractStore.js +887 -0
  180. data/app/assets/javascripts/extjs-rails/src/data/ArrayStore.js +74 -0
  181. data/app/assets/javascripts/extjs-rails/src/data/Batch.js +236 -0
  182. data/app/assets/javascripts/extjs-rails/src/data/BufferStore.js +13 -0
  183. data/app/assets/javascripts/extjs-rails/src/data/Connection.js +969 -0
  184. data/app/assets/javascripts/extjs-rails/src/data/DirectStore.js +50 -0
  185. data/app/assets/javascripts/extjs-rails/src/data/Errors.js +52 -0
  186. data/app/assets/javascripts/extjs-rails/src/data/Field.js +341 -0
  187. data/app/assets/javascripts/extjs-rails/src/data/IdGenerator.js +198 -0
  188. data/app/assets/javascripts/extjs-rails/src/data/JsonP.js +253 -0
  189. data/app/assets/javascripts/extjs-rails/src/data/JsonPStore.js +51 -0
  190. data/app/assets/javascripts/extjs-rails/src/data/JsonStore.js +60 -0
  191. data/app/assets/javascripts/extjs-rails/src/data/Model.js +1673 -0
  192. data/app/assets/javascripts/extjs-rails/src/data/NodeInterface.js +1294 -0
  193. data/app/assets/javascripts/extjs-rails/src/data/NodeStore.js +254 -0
  194. data/app/assets/javascripts/extjs-rails/src/data/Operation.js +331 -0
  195. data/app/assets/javascripts/extjs-rails/src/data/Request.js +40 -0
  196. data/app/assets/javascripts/extjs-rails/src/data/ResultSet.js +56 -0
  197. data/app/assets/javascripts/extjs-rails/src/data/SequentialIdGenerator.js +61 -0
  198. data/app/assets/javascripts/extjs-rails/src/data/SortTypes.js +125 -0
  199. data/app/assets/javascripts/extjs-rails/src/data/Store.js +2609 -0
  200. data/app/assets/javascripts/extjs-rails/src/data/StoreManager.js +156 -0
  201. data/app/assets/javascripts/extjs-rails/src/data/Tree.js +290 -0
  202. data/app/assets/javascripts/extjs-rails/src/data/TreeStore.js +655 -0
  203. data/app/assets/javascripts/extjs-rails/src/data/Types.js +190 -0
  204. data/app/assets/javascripts/extjs-rails/src/data/UuidGenerator.js +215 -0
  205. data/app/assets/javascripts/extjs-rails/src/data/XmlStore.js +76 -0
  206. data/app/assets/javascripts/extjs-rails/src/data/association/Association.js +243 -0
  207. data/app/assets/javascripts/extjs-rails/src/data/association/BelongsTo.js +291 -0
  208. data/app/assets/javascripts/extjs-rails/src/data/association/HasMany.js +289 -0
  209. data/app/assets/javascripts/extjs-rails/src/data/association/HasOne.js +304 -0
  210. data/app/assets/javascripts/extjs-rails/src/data/proxy/Ajax.js +282 -0
  211. data/app/assets/javascripts/extjs-rails/src/data/proxy/Client.js +21 -0
  212. data/app/assets/javascripts/extjs-rails/src/data/proxy/Direct.js +181 -0
  213. data/app/assets/javascripts/extjs-rails/src/data/proxy/JsonP.js +313 -0
  214. data/app/assets/javascripts/extjs-rails/src/data/proxy/LocalStorage.js +69 -0
  215. data/app/assets/javascripts/extjs-rails/src/data/proxy/Memory.js +156 -0
  216. data/app/assets/javascripts/extjs-rails/src/data/proxy/Proxy.js +433 -0
  217. data/app/assets/javascripts/extjs-rails/src/data/proxy/Rest.js +173 -0
  218. data/app/assets/javascripts/extjs-rails/src/data/proxy/Server.js +460 -0
  219. data/app/assets/javascripts/extjs-rails/src/data/proxy/SessionStorage.js +39 -0
  220. data/app/assets/javascripts/extjs-rails/src/data/proxy/WebStorage.js +546 -0
  221. data/app/assets/javascripts/extjs-rails/src/data/reader/Array.js +68 -0
  222. data/app/assets/javascripts/extjs-rails/src/data/reader/Json.js +383 -0
  223. data/app/assets/javascripts/extjs-rails/src/data/reader/Reader.js +735 -0
  224. data/app/assets/javascripts/extjs-rails/src/data/reader/Xml.js +292 -0
  225. data/app/assets/javascripts/extjs-rails/src/data/validations.js +149 -0
  226. data/app/assets/javascripts/extjs-rails/src/data/writer/Json.js +81 -0
  227. data/app/assets/javascripts/extjs-rails/src/data/writer/Writer.js +147 -0
  228. data/app/assets/javascripts/extjs-rails/src/data/writer/Xml.js +88 -0
  229. data/app/assets/javascripts/extjs-rails/src/dd/DD.js +300 -0
  230. data/app/assets/javascripts/extjs-rails/src/dd/DDProxy.js +204 -0
  231. data/app/assets/javascripts/extjs-rails/src/dd/DDTarget.js +171 -0
  232. data/app/assets/javascripts/extjs-rails/src/dd/DragDrop.js +1101 -0
  233. data/app/assets/javascripts/extjs-rails/src/dd/DragDropManager.js +1264 -0
  234. data/app/assets/javascripts/extjs-rails/src/dd/DragSource.js +392 -0
  235. data/app/assets/javascripts/extjs-rails/src/dd/DragTracker.js +562 -0
  236. data/app/assets/javascripts/extjs-rails/src/dd/DragZone.js +137 -0
  237. data/app/assets/javascripts/extjs-rails/src/dd/DropTarget.js +118 -0
  238. data/app/assets/javascripts/extjs-rails/src/dd/DropZone.js +254 -0
  239. data/app/assets/javascripts/extjs-rails/src/dd/Registry.js +117 -0
  240. data/app/assets/javascripts/extjs-rails/src/dd/ScrollManager.js +218 -0
  241. data/app/assets/javascripts/extjs-rails/src/dd/StatusProxy.js +179 -0
  242. data/app/assets/javascripts/extjs-rails/src/diag/layout/Context.js +523 -0
  243. data/app/assets/javascripts/extjs-rails/src/diag/layout/ContextItem.js +179 -0
  244. data/app/assets/javascripts/extjs-rails/src/direct/Event.js +35 -0
  245. data/app/assets/javascripts/extjs-rails/src/direct/ExceptionEvent.js +16 -0
  246. data/app/assets/javascripts/extjs-rails/src/direct/JsonProvider.js +82 -0
  247. data/app/assets/javascripts/extjs-rails/src/direct/Manager.js +263 -0
  248. data/app/assets/javascripts/extjs-rails/src/direct/PollingProvider.js +156 -0
  249. data/app/assets/javascripts/extjs-rails/src/direct/Provider.js +96 -0
  250. data/app/assets/javascripts/extjs-rails/src/direct/RemotingEvent.js +24 -0
  251. data/app/assets/javascripts/extjs-rails/src/direct/RemotingMethod.js +100 -0
  252. data/app/assets/javascripts/extjs-rails/src/direct/RemotingProvider.js +510 -0
  253. data/app/assets/javascripts/extjs-rails/src/direct/Transaction.js +41 -0
  254. data/app/assets/javascripts/extjs-rails/src/dom/Element.alignment.js +378 -0
  255. data/app/assets/javascripts/extjs-rails/src/dom/Element.anim.js +962 -0
  256. data/app/assets/javascripts/extjs-rails/src/dom/Element.dd.js +40 -0
  257. data/app/assets/javascripts/extjs-rails/src/dom/Element.fx.js +194 -0
  258. data/app/assets/javascripts/extjs-rails/src/dom/Element.js +1407 -0
  259. data/app/assets/javascripts/extjs-rails/src/dom/Element.position.js +501 -0
  260. data/app/assets/javascripts/extjs-rails/src/dom/Element.scroll.js +214 -0
  261. data/app/assets/javascripts/extjs-rails/src/dom/Element.style.js +792 -0
  262. data/app/assets/javascripts/extjs-rails/src/dom/Element.traversal.js +8 -0
  263. data/app/assets/javascripts/extjs-rails/src/dom/Helper.js +466 -0
  264. data/app/assets/javascripts/extjs-rails/src/dom/Query.js +1067 -0
  265. data/app/assets/javascripts/extjs-rails/src/draw/Color.js +303 -0
  266. data/app/assets/javascripts/extjs-rails/src/draw/Component.js +245 -0
  267. data/app/assets/javascripts/extjs-rails/src/draw/CompositeSprite.js +299 -0
  268. data/app/assets/javascripts/extjs-rails/src/draw/Draw.js +1217 -0
  269. data/app/assets/javascripts/extjs-rails/src/draw/Matrix.js +183 -0
  270. data/app/assets/javascripts/extjs-rails/src/draw/Sprite.js +554 -0
  271. data/app/assets/javascripts/extjs-rails/src/draw/SpriteDD.js +87 -0
  272. data/app/assets/javascripts/extjs-rails/src/draw/Surface.js +1001 -0
  273. data/app/assets/javascripts/extjs-rails/src/draw/Text.js +175 -0
  274. data/app/assets/javascripts/extjs-rails/src/draw/engine/ImageExporter.js +106 -0
  275. data/app/assets/javascripts/extjs-rails/src/draw/engine/Svg.js +734 -0
  276. data/app/assets/javascripts/extjs-rails/src/draw/engine/SvgExporter.js +280 -0
  277. data/app/assets/javascripts/extjs-rails/src/draw/engine/Vml.js +916 -0
  278. data/app/assets/javascripts/extjs-rails/src/flash/Component.js +248 -0
  279. data/app/assets/javascripts/extjs-rails/src/form/Basic.js +1018 -0
  280. data/app/assets/javascripts/extjs-rails/src/form/CheckboxGroup.js +441 -0
  281. data/app/assets/javascripts/extjs-rails/src/form/CheckboxManager.js +26 -0
  282. data/app/assets/javascripts/extjs-rails/src/form/FieldAncestor.js +210 -0
  283. data/app/assets/javascripts/extjs-rails/src/form/FieldContainer.js +290 -0
  284. data/app/assets/javascripts/extjs-rails/src/form/FieldSet.js +506 -0
  285. data/app/assets/javascripts/extjs-rails/src/form/Label.js +110 -0
  286. data/app/assets/javascripts/extjs-rails/src/form/Labelable.js +764 -0
  287. data/app/assets/javascripts/extjs-rails/src/form/Panel.js +335 -0
  288. data/app/assets/javascripts/extjs-rails/src/form/RadioGroup.js +124 -0
  289. data/app/assets/javascripts/extjs-rails/src/form/RadioManager.js +26 -0
  290. data/app/assets/javascripts/extjs-rails/src/form/action/Action.js +307 -0
  291. data/app/assets/javascripts/extjs-rails/src/form/action/DirectLoad.js +107 -0
  292. data/app/assets/javascripts/extjs-rails/src/form/action/DirectSubmit.js +119 -0
  293. data/app/assets/javascripts/extjs-rails/src/form/action/Load.js +120 -0
  294. data/app/assets/javascripts/extjs-rails/src/form/action/StandardSubmit.js +34 -0
  295. data/app/assets/javascripts/extjs-rails/src/form/action/Submit.js +257 -0
  296. data/app/assets/javascripts/extjs-rails/src/form/field/Base.js +813 -0
  297. data/app/assets/javascripts/extjs-rails/src/form/field/Checkbox.js +505 -0
  298. data/app/assets/javascripts/extjs-rails/src/form/field/ComboBox.js +1427 -0
  299. data/app/assets/javascripts/extjs-rails/src/form/field/Date.js +578 -0
  300. data/app/assets/javascripts/extjs-rails/src/form/field/Display.js +155 -0
  301. data/app/assets/javascripts/extjs-rails/src/form/field/Field.js +430 -0
  302. data/app/assets/javascripts/extjs-rails/src/form/field/File.js +265 -0
  303. data/app/assets/javascripts/extjs-rails/src/form/field/Hidden.js +75 -0
  304. data/app/assets/javascripts/extjs-rails/src/form/field/HtmlEditor.js +1439 -0
  305. data/app/assets/javascripts/extjs-rails/src/form/field/Number.js +380 -0
  306. data/app/assets/javascripts/extjs-rails/src/form/field/Picker.js +321 -0
  307. data/app/assets/javascripts/extjs-rails/src/form/field/Radio.js +279 -0
  308. data/app/assets/javascripts/extjs-rails/src/form/field/Spinner.js +321 -0
  309. data/app/assets/javascripts/extjs-rails/src/form/field/Text.js +727 -0
  310. data/app/assets/javascripts/extjs-rails/src/form/field/TextArea.js +228 -0
  311. data/app/assets/javascripts/extjs-rails/src/form/field/Time.js +459 -0
  312. data/app/assets/javascripts/extjs-rails/src/form/field/Trigger.js +469 -0
  313. data/app/assets/javascripts/extjs-rails/src/form/field/VTypes.js +172 -0
  314. data/app/assets/javascripts/extjs-rails/src/fx/Anim.js +472 -0
  315. data/app/assets/javascripts/extjs-rails/src/fx/Animator.js +410 -0
  316. data/app/assets/javascripts/extjs-rails/src/fx/CubicBezier.js +77 -0
  317. data/app/assets/javascripts/extjs-rails/src/fx/Easing.js +136 -0
  318. data/app/assets/javascripts/extjs-rails/src/fx/Manager.js +353 -0
  319. data/app/assets/javascripts/extjs-rails/src/fx/PropertyHandler.js +381 -0
  320. data/app/assets/javascripts/extjs-rails/src/fx/Queue.js +123 -0
  321. data/app/assets/javascripts/extjs-rails/src/fx/target/Component.js +118 -0
  322. data/app/assets/javascripts/extjs-rails/src/fx/target/CompositeElement.js +46 -0
  323. data/app/assets/javascripts/extjs-rails/src/fx/target/CompositeElementCSS.js +22 -0
  324. data/app/assets/javascripts/extjs-rails/src/fx/target/CompositeSprite.js +34 -0
  325. data/app/assets/javascripts/extjs-rails/src/fx/target/Element.js +83 -0
  326. data/app/assets/javascripts/extjs-rails/src/fx/target/ElementCSS.js +77 -0
  327. data/app/assets/javascripts/extjs-rails/src/fx/target/Sprite.js +128 -0
  328. data/app/assets/javascripts/extjs-rails/src/fx/target/Target.js +36 -0
  329. data/app/assets/javascripts/extjs-rails/src/grid/CellEditor.js +172 -0
  330. data/app/assets/javascripts/extjs-rails/src/grid/ColumnComponentLayout.js +34 -0
  331. data/app/assets/javascripts/extjs-rails/src/grid/ColumnLayout.js +201 -0
  332. data/app/assets/javascripts/extjs-rails/src/grid/Lockable.js +863 -0
  333. data/app/assets/javascripts/extjs-rails/src/grid/LockingView.js +169 -0
  334. data/app/assets/javascripts/extjs-rails/src/grid/PagingScroller.js +539 -0
  335. data/app/assets/javascripts/extjs-rails/src/grid/Panel.js +393 -0
  336. data/app/assets/javascripts/extjs-rails/src/grid/RowEditor.js +731 -0
  337. data/app/assets/javascripts/extjs-rails/src/grid/RowNumberer.js +76 -0
  338. data/app/assets/javascripts/extjs-rails/src/grid/Scroller.js +5 -0
  339. data/app/assets/javascripts/extjs-rails/src/grid/View.js +44 -0
  340. data/app/assets/javascripts/extjs-rails/src/grid/ViewDropZone.js +41 -0
  341. data/app/assets/javascripts/extjs-rails/src/grid/column/Action.js +318 -0
  342. data/app/assets/javascripts/extjs-rails/src/grid/column/Boolean.js +82 -0
  343. data/app/assets/javascripts/extjs-rails/src/grid/column/Column.js +835 -0
  344. data/app/assets/javascripts/extjs-rails/src/grid/column/Date.js +63 -0
  345. data/app/assets/javascripts/extjs-rails/src/grid/column/Number.js +52 -0
  346. data/app/assets/javascripts/extjs-rails/src/grid/column/Template.js +58 -0
  347. data/app/assets/javascripts/extjs-rails/src/grid/feature/AbstractSummary.js +154 -0
  348. data/app/assets/javascripts/extjs-rails/src/grid/feature/Chunking.js +77 -0
  349. data/app/assets/javascripts/extjs-rails/src/grid/feature/Feature.js +158 -0
  350. data/app/assets/javascripts/extjs-rails/src/grid/feature/Grouping.js +822 -0
  351. data/app/assets/javascripts/extjs-rails/src/grid/feature/GroupingSummary.js +243 -0
  352. data/app/assets/javascripts/extjs-rails/src/grid/feature/RowBody.js +116 -0
  353. data/app/assets/javascripts/extjs-rails/src/grid/feature/RowWrap.js +120 -0
  354. data/app/assets/javascripts/extjs-rails/src/grid/feature/Summary.js +167 -0
  355. data/app/assets/javascripts/extjs-rails/src/grid/header/Container.js +965 -0
  356. data/app/assets/javascripts/extjs-rails/src/grid/header/DragZone.js +69 -0
  357. data/app/assets/javascripts/extjs-rails/src/grid/header/DropZone.js +265 -0
  358. data/app/assets/javascripts/extjs-rails/src/grid/plugin/CellEditing.js +453 -0
  359. data/app/assets/javascripts/extjs-rails/src/grid/plugin/DragDrop.js +254 -0
  360. data/app/assets/javascripts/extjs-rails/src/grid/plugin/Editing.js +561 -0
  361. data/app/assets/javascripts/extjs-rails/src/grid/plugin/HeaderReorderer.js +49 -0
  362. data/app/assets/javascripts/extjs-rails/src/grid/plugin/HeaderResizer.js +292 -0
  363. data/app/assets/javascripts/extjs-rails/src/grid/plugin/RowEditing.js +339 -0
  364. data/app/assets/javascripts/extjs-rails/src/grid/property/Grid.js +351 -0
  365. data/app/assets/javascripts/extjs-rails/src/grid/property/HeaderContainer.js +109 -0
  366. data/app/assets/javascripts/extjs-rails/src/grid/property/Property.js +36 -0
  367. data/app/assets/javascripts/extjs-rails/src/grid/property/Store.js +141 -0
  368. data/app/assets/javascripts/extjs-rails/src/layout/ClassList.js +90 -0
  369. data/app/assets/javascripts/extjs-rails/src/layout/Context.js +1232 -0
  370. data/app/assets/javascripts/extjs-rails/src/layout/ContextItem.js +1470 -0
  371. data/app/assets/javascripts/extjs-rails/src/layout/Layout.js +761 -0
  372. data/app/assets/javascripts/extjs-rails/src/layout/component/Auto.js +220 -0
  373. data/app/assets/javascripts/extjs-rails/src/layout/component/Body.js +80 -0
  374. data/app/assets/javascripts/extjs-rails/src/layout/component/BoundList.js +95 -0
  375. data/app/assets/javascripts/extjs-rails/src/layout/component/Button.js +261 -0
  376. data/app/assets/javascripts/extjs-rails/src/layout/component/Component.js +427 -0
  377. data/app/assets/javascripts/extjs-rails/src/layout/component/Dock.js +1132 -0
  378. data/app/assets/javascripts/extjs-rails/src/layout/component/Draw.js +79 -0
  379. data/app/assets/javascripts/extjs-rails/src/layout/component/FieldSet.js +62 -0
  380. data/app/assets/javascripts/extjs-rails/src/layout/component/ProgressBar.js +54 -0
  381. data/app/assets/javascripts/extjs-rails/src/layout/component/Tab.js +23 -0
  382. data/app/assets/javascripts/extjs-rails/src/layout/component/field/ComboBox.js +52 -0
  383. data/app/assets/javascripts/extjs-rails/src/layout/component/field/Field.js +372 -0
  384. data/app/assets/javascripts/extjs-rails/src/layout/component/field/FieldContainer.js +48 -0
  385. data/app/assets/javascripts/extjs-rails/src/layout/component/field/HtmlEditor.js +54 -0
  386. data/app/assets/javascripts/extjs-rails/src/layout/component/field/Slider.js +58 -0
  387. data/app/assets/javascripts/extjs-rails/src/layout/component/field/Text.js +75 -0
  388. data/app/assets/javascripts/extjs-rails/src/layout/component/field/TextArea.js +51 -0
  389. data/app/assets/javascripts/extjs-rails/src/layout/component/field/Trigger.js +132 -0
  390. data/app/assets/javascripts/extjs-rails/src/layout/container/Absolute.js +121 -0
  391. data/app/assets/javascripts/extjs-rails/src/layout/container/Accordion.js +308 -0
  392. data/app/assets/javascripts/extjs-rails/src/layout/container/Anchor.js +403 -0
  393. data/app/assets/javascripts/extjs-rails/src/layout/container/Auto.js +70 -0
  394. data/app/assets/javascripts/extjs-rails/src/layout/container/Border-old-js +1079 -0
  395. data/app/assets/javascripts/extjs-rails/src/layout/container/Border.js +816 -0
  396. data/app/assets/javascripts/extjs-rails/src/layout/container/Box.js +929 -0
  397. data/app/assets/javascripts/extjs-rails/src/layout/container/Card.js +361 -0
  398. data/app/assets/javascripts/extjs-rails/src/layout/container/CheckboxGroup.js +376 -0
  399. data/app/assets/javascripts/extjs-rails/src/layout/container/Column.js +234 -0
  400. data/app/assets/javascripts/extjs-rails/src/layout/container/Container.js +961 -0
  401. data/app/assets/javascripts/extjs-rails/src/layout/container/Editor.js +74 -0
  402. data/app/assets/javascripts/extjs-rails/src/layout/container/Fit.js +287 -0
  403. data/app/assets/javascripts/extjs-rails/src/layout/container/Form.js +157 -0
  404. data/app/assets/javascripts/extjs-rails/src/layout/container/HBox.js +134 -0
  405. data/app/assets/javascripts/extjs-rails/src/layout/container/Table.js +412 -0
  406. data/app/assets/javascripts/extjs-rails/src/layout/container/VBox.js +139 -0
  407. data/app/assets/javascripts/extjs-rails/src/layout/container/boxOverflow/Menu.js +365 -0
  408. data/app/assets/javascripts/extjs-rails/src/layout/container/boxOverflow/None.js +83 -0
  409. data/app/assets/javascripts/extjs-rails/src/layout/container/boxOverflow/Scroller.js +475 -0
  410. data/app/assets/javascripts/extjs-rails/src/menu/CheckItem.js +169 -0
  411. data/app/assets/javascripts/extjs-rails/src/menu/ColorPicker.js +110 -0
  412. data/app/assets/javascripts/extjs-rails/src/menu/DatePicker.js +100 -0
  413. data/app/assets/javascripts/extjs-rails/src/menu/Item.js +553 -0
  414. data/app/assets/javascripts/extjs-rails/src/menu/KeyNav.js +134 -0
  415. data/app/assets/javascripts/extjs-rails/src/menu/Manager.js +219 -0
  416. data/app/assets/javascripts/extjs-rails/src/menu/Menu.js +579 -0
  417. data/app/assets/javascripts/extjs-rails/src/menu/Separator.js +126 -0
  418. data/app/assets/javascripts/extjs-rails/src/panel/AbstractPanel.js +323 -0
  419. data/app/assets/javascripts/extjs-rails/src/panel/DD.js +99 -0
  420. data/app/assets/javascripts/extjs-rails/src/panel/Header.js +518 -0
  421. data/app/assets/javascripts/extjs-rails/src/panel/Panel.js +2150 -0
  422. data/app/assets/javascripts/extjs-rails/src/panel/Proxy.js +131 -0
  423. data/app/assets/javascripts/extjs-rails/src/panel/Table.js +1018 -0
  424. data/app/assets/javascripts/extjs-rails/src/panel/Tool.js +304 -0
  425. data/app/assets/javascripts/extjs-rails/src/picker/Color.js +219 -0
  426. data/app/assets/javascripts/extjs-rails/src/picker/Date.js +1140 -0
  427. data/app/assets/javascripts/extjs-rails/src/picker/Month.js +490 -0
  428. data/app/assets/javascripts/extjs-rails/src/picker/Time.js +165 -0
  429. data/app/assets/javascripts/extjs-rails/src/resizer/BorderSplitter.js +22 -0
  430. data/app/assets/javascripts/extjs-rails/src/resizer/BorderSplitterTracker.js +210 -0
  431. data/app/assets/javascripts/extjs-rails/src/resizer/Handle.js +29 -0
  432. data/app/assets/javascripts/extjs-rails/src/resizer/ResizeTracker.js +346 -0
  433. data/app/assets/javascripts/extjs-rails/src/resizer/Resizer.js +477 -0
  434. data/app/assets/javascripts/extjs-rails/src/resizer/Splitter.js +242 -0
  435. data/app/assets/javascripts/extjs-rails/src/resizer/SplitterTracker.js +230 -0
  436. data/app/assets/javascripts/extjs-rails/src/selection/CellModel.js +395 -0
  437. data/app/assets/javascripts/extjs-rails/src/selection/CheckboxModel.js +234 -0
  438. data/app/assets/javascripts/extjs-rails/src/selection/DataViewModel.js +160 -0
  439. data/app/assets/javascripts/extjs-rails/src/selection/Model.js +646 -0
  440. data/app/assets/javascripts/extjs-rails/src/selection/RowModel.js +499 -0
  441. data/app/assets/javascripts/extjs-rails/src/selection/TreeModel.js +78 -0
  442. data/app/assets/javascripts/extjs-rails/src/slider/Multi.js +835 -0
  443. data/app/assets/javascripts/extjs-rails/src/slider/Single.js +56 -0
  444. data/app/assets/javascripts/extjs-rails/src/slider/Thumb.js +259 -0
  445. data/app/assets/javascripts/extjs-rails/src/slider/Tip.js +130 -0
  446. data/app/assets/javascripts/extjs-rails/src/state/CookieProvider.js +120 -0
  447. data/app/assets/javascripts/extjs-rails/src/state/LocalStorageProvider.js +72 -0
  448. data/app/assets/javascripts/extjs-rails/src/state/Manager.js +70 -0
  449. data/app/assets/javascripts/extjs-rails/src/state/Provider.js +182 -0
  450. data/app/assets/javascripts/extjs-rails/src/state/Stateful.js +364 -0
  451. data/app/assets/javascripts/extjs-rails/src/tab/Bar.js +258 -0
  452. data/app/assets/javascripts/extjs-rails/src/tab/Panel.js +654 -0
  453. data/app/assets/javascripts/extjs-rails/src/tab/Tab.js +358 -0
  454. data/app/assets/javascripts/extjs-rails/src/tail.js +10 -0
  455. data/app/assets/javascripts/extjs-rails/src/tip/QuickTip.js +335 -0
  456. data/app/assets/javascripts/extjs-rails/src/tip/QuickTipManager.js +239 -0
  457. data/app/assets/javascripts/extjs-rails/src/tip/Tip.js +160 -0
  458. data/app/assets/javascripts/extjs-rails/src/tip/ToolTip.js +691 -0
  459. data/app/assets/javascripts/extjs-rails/src/toolbar/Fill.js +28 -0
  460. data/app/assets/javascripts/extjs-rails/src/toolbar/Item.js +16 -0
  461. data/app/assets/javascripts/extjs-rails/src/toolbar/Paging.js +600 -0
  462. data/app/assets/javascripts/extjs-rails/src/toolbar/Separator.js +23 -0
  463. data/app/assets/javascripts/extjs-rails/src/toolbar/Spacer.js +33 -0
  464. data/app/assets/javascripts/extjs-rails/src/toolbar/TextItem.js +57 -0
  465. data/app/assets/javascripts/extjs-rails/src/toolbar/Toolbar-legacy.js +123 -0
  466. data/app/assets/javascripts/extjs-rails/src/toolbar/Toolbar.js +447 -0
  467. data/app/assets/javascripts/extjs-rails/src/tree/Column.js +90 -0
  468. data/app/assets/javascripts/extjs-rails/src/tree/Panel.js +505 -0
  469. data/app/assets/javascripts/extjs-rails/src/tree/View.js +658 -0
  470. data/app/assets/javascripts/extjs-rails/src/tree/ViewDragZone.js +49 -0
  471. data/app/assets/javascripts/extjs-rails/src/tree/ViewDropZone.js +287 -0
  472. data/app/assets/javascripts/extjs-rails/src/tree/plugin/TreeViewDragDrop.js +244 -0
  473. data/app/assets/javascripts/extjs-rails/src/util/AbstractMixedCollection.js +772 -0
  474. data/app/assets/javascripts/extjs-rails/src/util/Animate.js +426 -0
  475. data/app/assets/javascripts/extjs-rails/src/util/Bindable.js +102 -0
  476. data/app/assets/javascripts/extjs-rails/src/util/CSS.js +185 -0
  477. data/app/assets/javascripts/extjs-rails/src/util/ClickRepeater.js +238 -0
  478. data/app/assets/javascripts/extjs-rails/src/util/ComponentDragger.js +126 -0
  479. data/app/assets/javascripts/extjs-rails/src/util/Cookies.js +91 -0
  480. data/app/assets/javascripts/extjs-rails/src/util/ElementContainer.js +293 -0
  481. data/app/assets/javascripts/extjs-rails/src/util/Filter.js +159 -0
  482. data/app/assets/javascripts/extjs-rails/src/util/Floating.js +321 -0
  483. data/app/assets/javascripts/extjs-rails/src/util/Grouper.js +26 -0
  484. data/app/assets/javascripts/extjs-rails/src/util/HashMap.js +356 -0
  485. data/app/assets/javascripts/extjs-rails/src/util/History.js +285 -0
  486. data/app/assets/javascripts/extjs-rails/src/util/Inflector.js +297 -0
  487. data/app/assets/javascripts/extjs-rails/src/util/KeyMap.js +427 -0
  488. data/app/assets/javascripts/extjs-rails/src/util/KeyNav.js +239 -0
  489. data/app/assets/javascripts/extjs-rails/src/util/LruCache.js +257 -0
  490. data/app/assets/javascripts/extjs-rails/src/util/Memento.js +131 -0
  491. data/app/assets/javascripts/extjs-rails/src/util/MixedCollection.js +239 -0
  492. data/app/assets/javascripts/extjs-rails/src/util/Observable.js +1003 -0
  493. data/app/assets/javascripts/extjs-rails/src/util/Offset.js +60 -0
  494. data/app/assets/javascripts/extjs-rails/src/util/Point.js +93 -0
  495. data/app/assets/javascripts/extjs-rails/src/util/ProtoElement.js +205 -0
  496. data/app/assets/javascripts/extjs-rails/src/util/Queue.js +76 -0
  497. data/app/assets/javascripts/extjs-rails/src/util/Region.js +388 -0
  498. data/app/assets/javascripts/extjs-rails/src/util/Renderable.js +1079 -0
  499. data/app/assets/javascripts/extjs-rails/src/util/Sortable.js +248 -0
  500. data/app/assets/javascripts/extjs-rails/src/util/Sorter.js +179 -0
  501. data/app/assets/javascripts/extjs-rails/src/util/TextMetrics.js +148 -0
  502. data/app/assets/javascripts/extjs-rails/src/view/AbstractView.js +1103 -0
  503. data/app/assets/javascripts/extjs-rails/src/view/BoundList.js +207 -0
  504. data/app/assets/javascripts/extjs-rails/src/view/BoundListKeyNav.js +92 -0
  505. data/app/assets/javascripts/extjs-rails/src/view/DragZone.js +106 -0
  506. data/app/assets/javascripts/extjs-rails/src/view/DropZone.js +240 -0
  507. data/app/assets/javascripts/extjs-rails/src/view/Table.js +1229 -0
  508. data/app/assets/javascripts/extjs-rails/src/view/TableChunker.js +139 -0
  509. data/app/assets/javascripts/extjs-rails/src/view/View.js +636 -0
  510. data/app/assets/javascripts/extjs-rails/src/window/MessageBox.js +880 -0
  511. data/app/assets/javascripts/extjs-rails/src/window/Window-legacy.js +56 -0
  512. data/app/assets/javascripts/extjs-rails/src/window/Window.js +793 -0
  513. data/extjs-rails.gemspec +24 -0
  514. data/lib/extjs-rails.rb +7 -0
  515. data/lib/extjs-rails/engine.rb +7 -0
  516. data/lib/extjs-rails/version.rb +5 -0
  517. metadata +660 -0
@@ -0,0 +1,966 @@
1
+ /**
2
+ * Charts provide a flexible way to achieve a wide range of data visualization capablitities.
3
+ * Each Chart gets its data directly from a {@link Ext.data.Store Store}, and automatically
4
+ * updates its display whenever data in the Store changes. In addition, the look and feel
5
+ * of a Chart can be customized using {@link Ext.chart.theme.Theme Theme}s.
6
+ *
7
+ * ## Creating a Simple Chart
8
+ *
9
+ * Every Chart has three key parts - a {@link Ext.data.Store Store} that contains the data,
10
+ * an array of {@link Ext.chart.axis.Axis Axes} which define the boundaries of the Chart,
11
+ * and one or more {@link Ext.chart.series.Series Series} to handle the visual rendering of the data points.
12
+ *
13
+ * ### 1. Creating a Store
14
+ *
15
+ * The first step is to create a {@link Ext.data.Model Model} that represents the type of
16
+ * data that will be displayed in the Chart. For example the data for a chart that displays
17
+ * a weather forecast could be represented as a series of "WeatherPoint" data points with
18
+ * two fields - "temperature", and "date":
19
+ *
20
+ * Ext.define('WeatherPoint', {
21
+ * extend: 'Ext.data.Model',
22
+ * fields: ['temperature', 'date']
23
+ * });
24
+ *
25
+ * Next a {@link Ext.data.Store Store} must be created. The store contains a collection of "WeatherPoint" Model instances.
26
+ * The data could be loaded dynamically, but for sake of ease this example uses inline data:
27
+ *
28
+ * var store = Ext.create('Ext.data.Store', {
29
+ * model: 'WeatherPoint',
30
+ * data: [
31
+ * { temperature: 58, date: new Date(2011, 1, 1, 8) },
32
+ * { temperature: 63, date: new Date(2011, 1, 1, 9) },
33
+ * { temperature: 73, date: new Date(2011, 1, 1, 10) },
34
+ * { temperature: 78, date: new Date(2011, 1, 1, 11) },
35
+ * { temperature: 81, date: new Date(2011, 1, 1, 12) }
36
+ * ]
37
+ * });
38
+ *
39
+ * For additional information on Models and Stores please refer to the [Data Guide](#/guide/data).
40
+ *
41
+ * ### 2. Creating the Chart object
42
+ *
43
+ * Now that a Store has been created it can be used in a Chart:
44
+ *
45
+ * Ext.create('Ext.chart.Chart', {
46
+ * renderTo: Ext.getBody(),
47
+ * width: 400,
48
+ * height: 300,
49
+ * store: store
50
+ * });
51
+ *
52
+ * That's all it takes to create a Chart instance that is backed by a Store.
53
+ * However, if the above code is run in a browser, a blank screen will be displayed.
54
+ * This is because the two pieces that are responsible for the visual display,
55
+ * the Chart's {@link #cfg-axes axes} and {@link #cfg-series series}, have not yet been defined.
56
+ *
57
+ * ### 3. Configuring the Axes
58
+ *
59
+ * {@link Ext.chart.axis.Axis Axes} are the lines that define the boundaries of the data points that a Chart can display.
60
+ * This example uses one of the most common Axes configurations - a horizontal "x" axis, and a vertical "y" axis:
61
+ *
62
+ * Ext.create('Ext.chart.Chart', {
63
+ * ...
64
+ * axes: [
65
+ * {
66
+ * title: 'Temperature',
67
+ * type: 'Numeric',
68
+ * position: 'left',
69
+ * fields: ['temperature'],
70
+ * minimum: 0,
71
+ * maximum: 100
72
+ * },
73
+ * {
74
+ * title: 'Time',
75
+ * type: 'Time',
76
+ * position: 'bottom',
77
+ * fields: ['date'],
78
+ * groupBy: 'hour',
79
+ * dateFormat: 'ga'
80
+ * }
81
+ * ]
82
+ * });
83
+ *
84
+ * The "Temperature" axis is a vertical {@link Ext.chart.axis.Numeric Numeric Axis} and is positioned on the left edge of the Chart.
85
+ * It represents the bounds of the data contained in the "WeatherPoint" Model's "temperature" field that was
86
+ * defined above. The minimum value for this axis is "0", and the maximum is "100".
87
+ *
88
+ * The horizontal axis is a {@link Ext.chart.axis.Time Time Axis} and is positioned on the bottom edge of the Chart.
89
+ * It represents the bounds of the data contained in the "WeatherPoint" Model's "date" field.
90
+ * The {@link Ext.chart.axis.Time#cfg-groupBy groupBy} configuration is used to specify that this axis
91
+ * will group times in one-hour increments, and the {@link Ext.chart.axis.Time#cfg-dateFormat dateFormat}
92
+ * configuration tells the Time Axis how to format it's labels.
93
+ *
94
+ * Here's what the Chart looks like now that it has its Axes configured:
95
+ *
96
+ * {@img Ext.chart.Chart/Ext.chart.Chart1.png Chart Axes}
97
+ *
98
+ * ### 4. Configuring the Series
99
+ *
100
+ * The final step in creating a simple Chart is to configure one or more {@link Ext.chart.series.Series Series}.
101
+ * Series are responsible for the visual representation of the data points contained in the Store.
102
+ * This example only has one Series:
103
+ *
104
+ * Ext.create('Ext.chart.Chart', {
105
+ * ...
106
+ * axes: [
107
+ * ...
108
+ * ],
109
+ * series: [
110
+ * {
111
+ * type: 'line',
112
+ * xField: 'date',
113
+ * yField: 'temperature'
114
+ * }
115
+ * ]
116
+ * });
117
+ *
118
+ * This Series is a {@link Ext.chart.series.Line Line Series}, and it uses the "date" and "temperature" fields
119
+ * from the "WeatherPoint" Models in the Store to plot its data points:
120
+ *
121
+ * {@img Ext.chart.Chart/Ext.chart.Chart2.png Line Series}
122
+ *
123
+ * See the [Simple Chart Example](doc-resources/Ext.chart.Chart/examples/simple_chart/index.html) for a live demo.
124
+ *
125
+ * ## Themes
126
+ *
127
+ * The color scheme for a Chart can be easily changed using the {@link #cfg-theme theme} configuration option:
128
+ *
129
+ * Ext.create('Ext.chart.Chart', {
130
+ * ...
131
+ * theme: 'Green',
132
+ * ...
133
+ * });
134
+ *
135
+ * {@img Ext.chart.Chart/Ext.chart.Chart3.png Green Theme}
136
+ *
137
+ * For more information on Charts please refer to the [Drawing and Charting Guide](#/guide/drawing_and_charting).
138
+ *
139
+ */
140
+ Ext.define('Ext.chart.Chart', {
141
+
142
+ /* Begin Definitions */
143
+
144
+ alias: 'widget.chart',
145
+
146
+ extend: 'Ext.draw.Component',
147
+
148
+ mixins: {
149
+ themeManager: 'Ext.chart.theme.Theme',
150
+ mask: 'Ext.chart.Mask',
151
+ navigation: 'Ext.chart.Navigation',
152
+ bindable: 'Ext.util.Bindable'
153
+ },
154
+
155
+ uses: [
156
+ 'Ext.chart.series.Series'
157
+ ],
158
+
159
+ requires: [
160
+ 'Ext.util.MixedCollection',
161
+ 'Ext.data.StoreManager',
162
+ 'Ext.chart.Legend',
163
+ 'Ext.chart.theme.Base',
164
+ 'Ext.chart.theme.Theme',
165
+ 'Ext.util.DelayedTask'
166
+ ],
167
+
168
+ /* End Definitions */
169
+
170
+ // @private
171
+ viewBox: false,
172
+
173
+ /**
174
+ * @cfg {String} theme
175
+ * The name of the theme to be used. A theme defines the colors and other visual displays of tick marks
176
+ * on axis, text, title text, line colors, marker colors and styles, etc. Possible theme values are 'Base', 'Green',
177
+ * 'Sky', 'Red', 'Purple', 'Blue', 'Yellow' and also six category themes 'Category1' to 'Category6'. Default value
178
+ * is 'Base'.
179
+ */
180
+
181
+ /**
182
+ * @cfg {Boolean/Object} animate
183
+ * True for the default animation (easing: 'ease' and duration: 500) or a standard animation config
184
+ * object to be used for default chart animations. Defaults to false.
185
+ */
186
+ animate: false,
187
+
188
+ /**
189
+ * @cfg {Boolean/Object} legend
190
+ * True for the default legend display or a legend config object. Defaults to false.
191
+ */
192
+ legend: false,
193
+
194
+ /**
195
+ * @cfg {Number} insetPadding
196
+ * The amount of inset padding in pixels for the chart. Defaults to 10.
197
+ */
198
+ insetPadding: 10,
199
+
200
+ /**
201
+ * @cfg {String[]} enginePriority
202
+ * Defines the priority order for which Surface implementation to use. The first one supported by the current
203
+ * environment will be used. Defaults to `['Svg', 'Vml']`.
204
+ */
205
+ enginePriority: ['Svg', 'Vml'],
206
+
207
+ /**
208
+ * @cfg {Object/Boolean} background
209
+ * The chart background. This can be a gradient object, image, or color. Defaults to false for no
210
+ * background. For example, if `background` were to be a color we could set the object as
211
+ *
212
+ * background: {
213
+ * //color string
214
+ * fill: '#ccc'
215
+ * }
216
+ *
217
+ * You can specify an image by using:
218
+ *
219
+ * background: {
220
+ * image: 'http://path.to.image/'
221
+ * }
222
+ *
223
+ * Also you can specify a gradient by using the gradient object syntax:
224
+ *
225
+ * background: {
226
+ * gradient: {
227
+ * id: 'gradientId',
228
+ * angle: 45,
229
+ * stops: {
230
+ * 0: {
231
+ * color: '#555'
232
+ * }
233
+ * 100: {
234
+ * color: '#ddd'
235
+ * }
236
+ * }
237
+ * }
238
+ * }
239
+ */
240
+ background: false,
241
+
242
+ /**
243
+ * @cfg {Object[]} gradients
244
+ * Define a set of gradients that can be used as `fill` property in sprites. The gradients array is an
245
+ * array of objects with the following properties:
246
+ *
247
+ * - **id** - string - The unique name of the gradient.
248
+ * - **angle** - number, optional - The angle of the gradient in degrees.
249
+ * - **stops** - object - An object with numbers as keys (from 0 to 100) and style objects as values
250
+ *
251
+ * For example:
252
+ *
253
+ * gradients: [{
254
+ * id: 'gradientId',
255
+ * angle: 45,
256
+ * stops: {
257
+ * 0: {
258
+ * color: '#555'
259
+ * },
260
+ * 100: {
261
+ * color: '#ddd'
262
+ * }
263
+ * }
264
+ * }, {
265
+ * id: 'gradientId2',
266
+ * angle: 0,
267
+ * stops: {
268
+ * 0: {
269
+ * color: '#590'
270
+ * },
271
+ * 20: {
272
+ * color: '#599'
273
+ * },
274
+ * 100: {
275
+ * color: '#ddd'
276
+ * }
277
+ * }
278
+ * }]
279
+ *
280
+ * Then the sprites can use `gradientId` and `gradientId2` by setting the fill attributes to those ids, for example:
281
+ *
282
+ * sprite.setAttributes({
283
+ * fill: 'url(#gradientId)'
284
+ * }, true);
285
+ */
286
+
287
+ /**
288
+ * @cfg {Ext.data.Store} store
289
+ * The store that supplies data to this chart.
290
+ */
291
+
292
+ /**
293
+ * @cfg {Ext.chart.series.Series[]} series
294
+ * Array of {@link Ext.chart.series.Series Series} instances or config objects. For example:
295
+ *
296
+ * series: [{
297
+ * type: 'column',
298
+ * axis: 'left',
299
+ * listeners: {
300
+ * 'afterrender': function() {
301
+ * console('afterrender');
302
+ * }
303
+ * },
304
+ * xField: 'category',
305
+ * yField: 'data1'
306
+ * }]
307
+ */
308
+
309
+ /**
310
+ * @cfg {Ext.chart.axis.Axis[]} axes
311
+ * Array of {@link Ext.chart.axis.Axis Axis} instances or config objects. For example:
312
+ *
313
+ * axes: [{
314
+ * type: 'Numeric',
315
+ * position: 'left',
316
+ * fields: ['data1'],
317
+ * title: 'Number of Hits',
318
+ * minimum: 0,
319
+ * //one minor tick between two major ticks
320
+ * minorTickSteps: 1
321
+ * }, {
322
+ * type: 'Category',
323
+ * position: 'bottom',
324
+ * fields: ['name'],
325
+ * title: 'Month of the Year'
326
+ * }]
327
+ */
328
+
329
+ constructor: function(config) {
330
+ var me = this,
331
+ defaultAnim;
332
+
333
+ config = Ext.apply({}, config);
334
+ me.initTheme(config.theme || me.theme);
335
+ if (me.gradients) {
336
+ Ext.apply(config, { gradients: me.gradients });
337
+ }
338
+ if (me.background) {
339
+ Ext.apply(config, { background: me.background });
340
+ }
341
+ if (config.animate) {
342
+ defaultAnim = {
343
+ easing: 'ease',
344
+ duration: 500
345
+ };
346
+ if (Ext.isObject(config.animate)) {
347
+ config.animate = Ext.applyIf(config.animate, defaultAnim);
348
+ }
349
+ else {
350
+ config.animate = defaultAnim;
351
+ }
352
+ }
353
+
354
+ if (config.enableMask) {
355
+ me.mixins.mask.constructor.call(me, config);
356
+ }
357
+
358
+ me.mixins.navigation.constructor.call(me, config);
359
+ me.callParent([config]);
360
+ },
361
+
362
+ getChartStore: function(){
363
+ return this.substore || this.store;
364
+ },
365
+
366
+ initComponent: function() {
367
+ var me = this,
368
+ axes,
369
+ series;
370
+ me.callParent();
371
+ me.addEvents(
372
+ 'itemmousedown',
373
+ 'itemmouseup',
374
+ 'itemmouseover',
375
+ 'itemmouseout',
376
+ 'itemclick',
377
+ 'itemdblclick',
378
+ 'itemdragstart',
379
+ 'itemdrag',
380
+ 'itemdragend',
381
+ /**
382
+ * @event beforerefresh
383
+ * Fires before a refresh to the chart data is called. If the beforerefresh handler returns false the
384
+ * {@link #refresh} action will be cancelled.
385
+ * @param {Ext.chart.Chart} this
386
+ */
387
+ 'beforerefresh',
388
+ /**
389
+ * @event refresh
390
+ * Fires after the chart data has been refreshed.
391
+ * @param {Ext.chart.Chart} this
392
+ */
393
+ 'refresh'
394
+ );
395
+ Ext.applyIf(me, {
396
+ zoom: {
397
+ width: 1,
398
+ height: 1,
399
+ x: 0,
400
+ y: 0
401
+ }
402
+ });
403
+ me.maxGutter = [0, 0];
404
+ me.store = Ext.data.StoreManager.lookup(me.store);
405
+ axes = me.axes;
406
+ me.axes = new Ext.util.MixedCollection(false, function(a) { return a.position; });
407
+ if (axes) {
408
+ me.axes.addAll(axes);
409
+ }
410
+ series = me.series;
411
+ me.series = new Ext.util.MixedCollection(false, function(a) { return a.seriesId || (a.seriesId = Ext.id(null, 'ext-chart-series-')); });
412
+ if (series) {
413
+ me.series.addAll(series);
414
+ }
415
+ if (me.legend !== false) {
416
+ me.legend = new Ext.chart.Legend(Ext.applyIf({chart:me}, me.legend));
417
+ }
418
+
419
+ me.on({
420
+ mousemove: me.onMouseMove,
421
+ mouseleave: me.onMouseLeave,
422
+ mousedown: me.onMouseDown,
423
+ mouseup: me.onMouseUp,
424
+ click: me.onClick,
425
+ dblclick: me.onDblClick,
426
+ scope: me
427
+ });
428
+ },
429
+
430
+ // @private overrides the component method to set the correct dimensions to the chart.
431
+ afterComponentLayout: function(width, height) {
432
+ var me = this;
433
+ if (Ext.isNumber(width) && Ext.isNumber(height)) {
434
+ me.curWidth = width;
435
+ me.curHeight = height;
436
+ me.redraw(true);
437
+ }
438
+ this.callParent(arguments);
439
+ },
440
+
441
+ /**
442
+ * Redraws the chart. If animations are set this will animate the chart too.
443
+ * @param {Boolean} resize (optional) flag which changes the default origin points of the chart for animations.
444
+ */
445
+ redraw: function(resize) {
446
+ var me = this,
447
+ seriesItems = me.series.items,
448
+ seriesLen = seriesItems.length,
449
+ axesItems = me.axes.items,
450
+ axesLen = axesItems.length,
451
+ i,
452
+ chartBBox = me.chartBBox = {
453
+ x: 0,
454
+ y: 0,
455
+ height: me.curHeight,
456
+ width: me.curWidth
457
+ },
458
+ legend = me.legend;
459
+ me.surface.setSize(chartBBox.width, chartBBox.height);
460
+ // Instantiate Series and Axes
461
+ for (i = 0; i < seriesLen; i++) {
462
+ me.initializeSeries(seriesItems[i],i);
463
+ }
464
+ for (i = 0; i < axesLen; i++) {
465
+ me.initializeAxis(axesItems[i]);
466
+ }
467
+ //process all views (aggregated data etc) on stores
468
+ //before rendering.
469
+ for (i = 0; i < axesLen; i++) {
470
+ axesItems[i].processView();
471
+ }
472
+ for (i = 0; i < axesLen; i++) {
473
+ axesItems[i].drawAxis(true);
474
+ }
475
+
476
+ // Create legend if not already created
477
+ if (legend !== false && legend.visible) {
478
+ if (legend.update || !legend.created) {
479
+ legend.create();
480
+ }
481
+ }
482
+
483
+ // Place axes properly, including influence from each other
484
+ me.alignAxes();
485
+
486
+ // Reposition legend based on new axis alignment
487
+ if (legend !== false && legend.visible) {
488
+ legend.updatePosition();
489
+ }
490
+
491
+ // Find the max gutter
492
+ me.getMaxGutter();
493
+
494
+ // Draw axes and series
495
+ me.resizing = !!resize;
496
+
497
+ for (i = 0; i < axesLen; i++) {
498
+ axesItems[i].drawAxis();
499
+ }
500
+ for (i = 0; i < seriesLen; i++) {
501
+ me.drawCharts(seriesItems[i]);
502
+ }
503
+ me.resizing = false;
504
+ },
505
+
506
+ // @private set the store after rendering the chart.
507
+ afterRender: function() {
508
+ var ref,
509
+ me = this;
510
+ this.callParent();
511
+
512
+ if (me.categoryNames) {
513
+ me.setCategoryNames(me.categoryNames);
514
+ }
515
+
516
+ if (me.tipRenderer) {
517
+ ref = me.getFunctionRef(me.tipRenderer);
518
+ me.setTipRenderer(ref.fn, ref.scope);
519
+ }
520
+ me.bindStore(me.store, true);
521
+ me.refresh();
522
+ },
523
+
524
+ // @private get x and y position of the mouse cursor.
525
+ getEventXY: function(e) {
526
+ var me = this,
527
+ box = this.surface.getRegion(),
528
+ pageXY = e.getXY(),
529
+ x = pageXY[0] - box.left,
530
+ y = pageXY[1] - box.top;
531
+ return [x, y];
532
+ },
533
+
534
+ onClick: function(e) {
535
+ this.handleClick('itemclick', e);
536
+ },
537
+
538
+ onDblClick: function(e) {
539
+ this.handleClick('itemdblclick', e);
540
+ },
541
+
542
+ // @private wrap the mouse down position to delegate the event to the series.
543
+ handleClick: function(name, e) {
544
+ var me = this,
545
+ position = me.getEventXY(e),
546
+ seriesItems = me.series.items,
547
+ i, ln, series,
548
+ item;
549
+
550
+ // Ask each series if it has an item corresponding to (not necessarily exactly
551
+ // on top of) the current mouse coords. Fire itemclick event.
552
+ for (i = 0, ln = seriesItems.length; i < ln; i++) {
553
+ series = seriesItems[i];
554
+ if (Ext.draw.Draw.withinBox(position[0], position[1], series.bbox)) {
555
+ if (series.getItemForPoint) {
556
+ item = series.getItemForPoint(position[0], position[1]);
557
+ if (item) {
558
+ series.fireEvent(name, item);
559
+ }
560
+ }
561
+ }
562
+ }
563
+ },
564
+
565
+ // @private wrap the mouse down position to delegate the event to the series.
566
+ onMouseDown: function(e) {
567
+ var me = this,
568
+ position = me.getEventXY(e),
569
+ seriesItems = me.series.items,
570
+ i, ln, series,
571
+ item;
572
+
573
+ if (me.enableMask) {
574
+ me.mixins.mask.onMouseDown.call(me, e);
575
+ }
576
+ // Ask each series if it has an item corresponding to (not necessarily exactly
577
+ // on top of) the current mouse coords. Fire itemmousedown event.
578
+ for (i = 0, ln = seriesItems.length; i < ln; i++) {
579
+ series = seriesItems[i];
580
+ if (Ext.draw.Draw.withinBox(position[0], position[1], series.bbox)) {
581
+ if (series.getItemForPoint) {
582
+ item = series.getItemForPoint(position[0], position[1]);
583
+ if (item) {
584
+ series.fireEvent('itemmousedown', item);
585
+ }
586
+ }
587
+ }
588
+ }
589
+ },
590
+
591
+ // @private wrap the mouse up event to delegate it to the series.
592
+ onMouseUp: function(e) {
593
+ var me = this,
594
+ position = me.getEventXY(e),
595
+ seriesItems = me.series.items,
596
+ i, ln, series,
597
+ item;
598
+
599
+ if (me.enableMask) {
600
+ me.mixins.mask.onMouseUp.call(me, e);
601
+ }
602
+ // Ask each series if it has an item corresponding to (not necessarily exactly
603
+ // on top of) the current mouse coords. Fire itemmouseup event.
604
+ for (i = 0, ln = seriesItems.length; i < ln; i++) {
605
+ series = seriesItems[i];
606
+ if (Ext.draw.Draw.withinBox(position[0], position[1], series.bbox)) {
607
+ if (series.getItemForPoint) {
608
+ item = series.getItemForPoint(position[0], position[1]);
609
+ if (item) {
610
+ series.fireEvent('itemmouseup', item);
611
+ }
612
+ }
613
+ }
614
+ }
615
+ },
616
+
617
+ // @private wrap the mouse move event so it can be delegated to the series.
618
+ onMouseMove: function(e) {
619
+ var me = this,
620
+ position = me.getEventXY(e),
621
+ seriesItems = me.series.items,
622
+ i, ln, series,
623
+ item, last, storeItem, storeField;
624
+
625
+
626
+ if (me.enableMask) {
627
+ me.mixins.mask.onMouseMove.call(me, e);
628
+ }
629
+ // Ask each series if it has an item corresponding to (not necessarily exactly
630
+ // on top of) the current mouse coords. Fire itemmouseover/out events.
631
+ for (i = 0, ln = seriesItems.length; i < ln; i++) {
632
+ series = seriesItems[i];
633
+ if (Ext.draw.Draw.withinBox(position[0], position[1], series.bbox)) {
634
+ if (series.getItemForPoint) {
635
+ item = series.getItemForPoint(position[0], position[1]);
636
+ last = series._lastItemForPoint;
637
+ storeItem = series._lastStoreItem;
638
+ storeField = series._lastStoreField;
639
+
640
+
641
+ if (item !== last || item && (item.storeItem != storeItem || item.storeField != storeField)) {
642
+ if (last) {
643
+ series.fireEvent('itemmouseout', last);
644
+ delete series._lastItemForPoint;
645
+ delete series._lastStoreField;
646
+ delete series._lastStoreItem;
647
+ }
648
+ if (item) {
649
+ series.fireEvent('itemmouseover', item);
650
+ series._lastItemForPoint = item;
651
+ series._lastStoreItem = item.storeItem;
652
+ series._lastStoreField = item.storeField;
653
+ }
654
+ }
655
+ }
656
+ } else {
657
+ last = series._lastItemForPoint;
658
+ if (last) {
659
+ series.fireEvent('itemmouseout', last);
660
+ delete series._lastItemForPoint;
661
+ delete series._lastStoreField;
662
+ delete series._lastStoreItem;
663
+ }
664
+ }
665
+ }
666
+ },
667
+
668
+ // @private handle mouse leave event.
669
+ onMouseLeave: function(e) {
670
+ var me = this,
671
+ seriesItems = me.series.items,
672
+ i, ln, series;
673
+
674
+ if (me.enableMask) {
675
+ me.mixins.mask.onMouseLeave.call(me, e);
676
+ }
677
+ for (i = 0, ln = seriesItems.length; i < ln; i++) {
678
+ series = seriesItems[i];
679
+ delete series._lastItemForPoint;
680
+ }
681
+ },
682
+
683
+ // @private buffered refresh for when we update the store
684
+ delayRefresh: function() {
685
+ var me = this;
686
+ if (!me.refreshTask) {
687
+ me.refreshTask = new Ext.util.DelayedTask(me.refresh, me);
688
+ }
689
+ me.refreshTask.delay(me.refreshBuffer);
690
+ },
691
+
692
+ // @private
693
+ refresh: function() {
694
+ var me = this;
695
+ if (me.rendered && me.curWidth !== undefined && me.curHeight !== undefined) {
696
+ if (me.fireEvent('beforerefresh', me) !== false) {
697
+ me.redraw();
698
+ me.fireEvent('refresh', me);
699
+ }
700
+ }
701
+ },
702
+
703
+ bindStore: function(store, initial) {
704
+ var me = this;
705
+ me.mixins.bindable.bindStore.apply(me, arguments);
706
+ if (me.store && !initial) {
707
+ me.refresh();
708
+ }
709
+ },
710
+
711
+ getStoreListeners: function() {
712
+ var refresh = this.refresh,
713
+ delayRefresh = this.delayRefresh;
714
+
715
+ return {
716
+ refresh: refresh,
717
+ add: delayRefresh,
718
+ remove: delayRefresh,
719
+ update: delayRefresh,
720
+ clear: refresh
721
+ };
722
+ },
723
+
724
+ // @private Create Axis
725
+ initializeAxis: function(axis) {
726
+ var me = this,
727
+ chartBBox = me.chartBBox,
728
+ w = chartBBox.width,
729
+ h = chartBBox.height,
730
+ x = chartBBox.x,
731
+ y = chartBBox.y,
732
+ themeAttrs = me.themeAttrs,
733
+ config = {
734
+ chart: me
735
+ };
736
+ if (themeAttrs) {
737
+ config.axisStyle = Ext.apply({}, themeAttrs.axis);
738
+ config.axisLabelLeftStyle = Ext.apply({}, themeAttrs.axisLabelLeft);
739
+ config.axisLabelRightStyle = Ext.apply({}, themeAttrs.axisLabelRight);
740
+ config.axisLabelTopStyle = Ext.apply({}, themeAttrs.axisLabelTop);
741
+ config.axisLabelBottomStyle = Ext.apply({}, themeAttrs.axisLabelBottom);
742
+ config.axisTitleLeftStyle = Ext.apply({}, themeAttrs.axisTitleLeft);
743
+ config.axisTitleRightStyle = Ext.apply({}, themeAttrs.axisTitleRight);
744
+ config.axisTitleTopStyle = Ext.apply({}, themeAttrs.axisTitleTop);
745
+ config.axisTitleBottomStyle = Ext.apply({}, themeAttrs.axisTitleBottom);
746
+ }
747
+ switch (axis.position) {
748
+ case 'top':
749
+ Ext.apply(config, {
750
+ length: w,
751
+ width: h,
752
+ x: x,
753
+ y: y
754
+ });
755
+ break;
756
+ case 'bottom':
757
+ Ext.apply(config, {
758
+ length: w,
759
+ width: h,
760
+ x: x,
761
+ y: h
762
+ });
763
+ break;
764
+ case 'left':
765
+ Ext.apply(config, {
766
+ length: h,
767
+ width: w,
768
+ x: x,
769
+ y: h
770
+ });
771
+ break;
772
+ case 'right':
773
+ Ext.apply(config, {
774
+ length: h,
775
+ width: w,
776
+ x: w,
777
+ y: h
778
+ });
779
+ break;
780
+ }
781
+ if (!axis.chart) {
782
+ Ext.apply(config, axis);
783
+ axis = me.axes.replace(Ext.createByAlias('axis.' + axis.type.toLowerCase(), config));
784
+ }
785
+ else {
786
+ Ext.apply(axis, config);
787
+ }
788
+ },
789
+
790
+
791
+ /**
792
+ * @private Adjust the dimensions and positions of each axis and the chart body area after accounting
793
+ * for the space taken up on each side by the axes and legend.
794
+ */
795
+ alignAxes: function() {
796
+ var me = this,
797
+ axes = me.axes,
798
+ axesItems = axes.items,
799
+ axis,
800
+ legend = me.legend,
801
+ edges = ['top', 'right', 'bottom', 'left'],
802
+ edge,
803
+ i, ln,
804
+ chartBBox,
805
+ insetPadding = me.insetPadding,
806
+ insets = {
807
+ top: insetPadding,
808
+ right: insetPadding,
809
+ bottom: insetPadding,
810
+ left: insetPadding
811
+ },
812
+ isVertical, bbox, pos;
813
+
814
+ function getAxis(edge) {
815
+ var i = axes.findIndex('position', edge);
816
+ return (i < 0) ? null : axes.getAt(i);
817
+ }
818
+
819
+ // Find the space needed by axes and legend as a positive inset from each edge
820
+ for (i = 0, ln = edges.length; i < ln; i++) {
821
+ edge = edges[i];
822
+ isVertical = (edge === 'left' || edge === 'right');
823
+ axis = getAxis(edge);
824
+
825
+ // Add legend size if it's on this edge
826
+ if (legend !== false) {
827
+ if (legend.position === edge) {
828
+ bbox = legend.getBBox();
829
+ insets[edge] += (isVertical ? bbox.width : bbox.height) + insets[edge];
830
+ }
831
+ }
832
+
833
+ // Add axis size if there's one on this edge only if it has been
834
+ //drawn before.
835
+ if (axis && axis.bbox) {
836
+ bbox = axis.bbox;
837
+ insets[edge] += (isVertical ? bbox.width : bbox.height);
838
+ }
839
+ }
840
+ // Build the chart bbox based on the collected inset values
841
+ chartBBox = {
842
+ x: insets.left,
843
+ y: insets.top,
844
+ width: me.curWidth - insets.left - insets.right,
845
+ height: me.curHeight - insets.top - insets.bottom
846
+ };
847
+ me.chartBBox = chartBBox;
848
+
849
+ // Go back through each axis and set its length and position based on the
850
+ // corresponding edge of the chartBBox
851
+ for (i = 0, ln = axesItems.length; i < ln; i++) {
852
+ axis = axesItems[i];
853
+ pos = axis.position;
854
+ isVertical = (pos === 'left' || pos === 'right');
855
+
856
+ axis.x = (pos === 'right' ? chartBBox.x + chartBBox.width : chartBBox.x);
857
+ axis.y = (pos === 'top' ? chartBBox.y : chartBBox.y + chartBBox.height);
858
+ axis.width = (isVertical ? chartBBox.width : chartBBox.height);
859
+ axis.length = (isVertical ? chartBBox.height : chartBBox.width);
860
+ }
861
+ },
862
+
863
+ // @private initialize the series.
864
+ initializeSeries: function(series, idx) {
865
+ var me = this,
866
+ themeAttrs = me.themeAttrs,
867
+ seriesObj, markerObj, seriesThemes, st,
868
+ markerThemes, colorArrayStyle = [],
869
+ i = 0, l,
870
+ config = {
871
+ chart: me,
872
+ seriesId: series.seriesId
873
+ };
874
+ if (themeAttrs) {
875
+ seriesThemes = themeAttrs.seriesThemes;
876
+ markerThemes = themeAttrs.markerThemes;
877
+ seriesObj = Ext.apply({}, themeAttrs.series);
878
+ markerObj = Ext.apply({}, themeAttrs.marker);
879
+ config.seriesStyle = Ext.apply(seriesObj, seriesThemes[idx % seriesThemes.length]);
880
+ config.seriesLabelStyle = Ext.apply({}, themeAttrs.seriesLabel);
881
+ config.markerStyle = Ext.apply(markerObj, markerThemes[idx % markerThemes.length]);
882
+ if (themeAttrs.colors) {
883
+ config.colorArrayStyle = themeAttrs.colors;
884
+ } else {
885
+ colorArrayStyle = [];
886
+ for (l = seriesThemes.length; i < l; i++) {
887
+ st = seriesThemes[i];
888
+ if (st.fill || st.stroke) {
889
+ colorArrayStyle.push(st.fill || st.stroke);
890
+ }
891
+ }
892
+ if (colorArrayStyle.length) {
893
+ config.colorArrayStyle = colorArrayStyle;
894
+ }
895
+ }
896
+ config.seriesIdx = idx;
897
+ }
898
+ if (series instanceof Ext.chart.series.Series) {
899
+ Ext.apply(series, config);
900
+ } else {
901
+ Ext.applyIf(config, series);
902
+ series = me.series.replace(Ext.createByAlias('series.' + series.type.toLowerCase(), config));
903
+ }
904
+ if (series.initialize) {
905
+ series.initialize();
906
+ }
907
+ },
908
+
909
+ // @private
910
+ getMaxGutter: function() {
911
+ var me = this,
912
+ seriesItems = me.series.items,
913
+ i, ln, series,
914
+ maxGutter = [0, 0],
915
+ gutter;
916
+ for (i = 0, ln = seriesItems.length; i < ln; i++) {
917
+ series = seriesItems[i];
918
+ gutter = series.getGutters && series.getGutters() || [0, 0];
919
+ maxGutter[0] = Math.max(maxGutter[0], gutter[0]);
920
+ maxGutter[1] = Math.max(maxGutter[1], gutter[1]);
921
+ }
922
+ me.maxGutter = maxGutter;
923
+ },
924
+
925
+ // @private draw axis.
926
+ drawAxis: function(axis) {
927
+ axis.drawAxis();
928
+ },
929
+
930
+ // @private draw series.
931
+ drawCharts: function(series) {
932
+ series.triggerafterrender = false;
933
+ series.drawSeries();
934
+ if (!this.animate) {
935
+ series.fireEvent('afterrender');
936
+ }
937
+ },
938
+ /**
939
+ * Saves the chart by either triggering a download or returning a string containing the chart data.
940
+ * The action depends on the export type specified in the passed configuration.
941
+ *
942
+ * Possible export types:
943
+ * - "image/png"
944
+ * - "image/svg+xml"
945
+ *
946
+ * Other configuration properties:
947
+ * - width
948
+ *
949
+ * Example usage:
950
+ *
951
+ * chart.save({
952
+ * type: 'image/png'
953
+ * });
954
+ *
955
+ * @param {Object} config (required) Object which contains information about the export-type
956
+ */
957
+ save: function(config){
958
+ return Ext.draw.Surface.save(config, this.surface);
959
+ },
960
+ // @private remove gently.
961
+ destroy: function() {
962
+ Ext.destroy(this.surface);
963
+ this.bindStore(null);
964
+ this.callParent(arguments);
965
+ }
966
+ });