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,78 @@
1
+ /**
2
+ * Adds custom behavior for left/right keyboard navigation for use with a tree.
3
+ * Depends on the view having an expand and collapse method which accepts a
4
+ * record.
5
+ *
6
+ * @private
7
+ */
8
+ Ext.define('Ext.selection.TreeModel', {
9
+ extend: 'Ext.selection.RowModel',
10
+ alias: 'selection.treemodel',
11
+
12
+ // typically selection models prune records from the selection
13
+ // model when they are removed, because the TreeView constantly
14
+ // adds/removes records as they are expanded/collapsed
15
+ pruneRemoved: false,
16
+
17
+ onKeyRight: function(e, t) {
18
+ var focused = this.getLastFocused(),
19
+ view = this.view;
20
+
21
+ if (focused) {
22
+ // tree node is already expanded, go down instead
23
+ // this handles both the case where we navigate to firstChild and if
24
+ // there are no children to the nextSibling
25
+ if (focused.isExpanded()) {
26
+ this.onKeyDown(e, t);
27
+ // if its not a leaf node, expand it
28
+ } else if (!focused.isLeaf()) {
29
+ view.expand(focused);
30
+ }
31
+ }
32
+ },
33
+
34
+ onKeyLeft: function(e, t) {
35
+ var focused = this.getLastFocused(),
36
+ view = this.view,
37
+ viewSm = view.getSelectionModel(),
38
+ parentNode, parentRecord;
39
+
40
+ if (focused) {
41
+ parentNode = focused.parentNode;
42
+ // if focused node is already expanded, collapse it
43
+ if (focused.isExpanded()) {
44
+ view.collapse(focused);
45
+ // has a parentNode and its not root
46
+ // TODO: this needs to cover the case where the root isVisible
47
+ } else if (parentNode && !parentNode.isRoot()) {
48
+ // Select a range of records when doing multiple selection.
49
+ if (e.shiftKey) {
50
+ viewSm.selectRange(parentNode, focused, e.ctrlKey, 'up');
51
+ viewSm.setLastFocused(parentNode);
52
+ // just move focus, not selection
53
+ } else if (e.ctrlKey) {
54
+ viewSm.setLastFocused(parentNode);
55
+ // select it
56
+ } else {
57
+ viewSm.select(parentNode);
58
+ }
59
+ }
60
+ }
61
+ },
62
+
63
+ onKeyPress: function(e, t) {
64
+ var key = e.getKey(),
65
+ selected,
66
+ checked;
67
+
68
+ if (key === e.SPACE || key === e.ENTER) {
69
+ e.stopEvent();
70
+ selected = this.getLastSelected();
71
+ if (selected) {
72
+ this.view.onCheckChange(selected);
73
+ }
74
+ } else {
75
+ this.callParent(arguments);
76
+ }
77
+ }
78
+ });
@@ -0,0 +1,835 @@
1
+ /**
2
+ * Slider which supports vertical or horizontal orientation, keyboard adjustments, configurable snapping, axis clicking
3
+ * and animation. Can be added as an item to any container.
4
+ *
5
+ * Sliders can be created with more than one thumb handle by passing an array of values instead of a single one:
6
+ *
7
+ * @example
8
+ * Ext.create('Ext.slider.Multi', {
9
+ * width: 200,
10
+ * values: [25, 50, 75],
11
+ * increment: 5,
12
+ * minValue: 0,
13
+ * maxValue: 100,
14
+ *
15
+ * // this defaults to true, setting to false allows the thumbs to pass each other
16
+ * constrainThumbs: false,
17
+ * renderTo: Ext.getBody()
18
+ * });
19
+ */
20
+ Ext.define('Ext.slider.Multi', {
21
+ extend: 'Ext.form.field.Base',
22
+ alias: 'widget.multislider',
23
+ alternateClassName: 'Ext.slider.MultiSlider',
24
+
25
+ requires: [
26
+ 'Ext.slider.Thumb',
27
+ 'Ext.slider.Tip',
28
+ 'Ext.Number',
29
+ 'Ext.util.Format',
30
+ 'Ext.Template',
31
+ 'Ext.layout.component.field.Slider'
32
+ ],
33
+
34
+ childEls: [
35
+ 'endEl', 'innerEl'
36
+ ],
37
+
38
+ // note: {id} here is really {inputId}, but {cmpId} is available
39
+ fieldSubTpl: [
40
+ '<div id="{id}" class="' + Ext.baseCSSPrefix + 'slider {fieldCls} {vertical}" aria-valuemin="{minValue}" aria-valuemax="{maxValue}" aria-valuenow="{value}" aria-valuetext="{value}">',
41
+ '<div id="{cmpId}-endEl" class="' + Ext.baseCSSPrefix + 'slider-end" role="presentation">',
42
+ '<div id="{cmpId}-innerEl" class="' + Ext.baseCSSPrefix + 'slider-inner" role="presentation">',
43
+ '{%this.renderThumbs(out, values)%}',
44
+ '</div>',
45
+ '</div>',
46
+ '</div>',
47
+ {
48
+ renderThumbs: function(out, values) {
49
+ var me = values.$comp,
50
+ i = 0,
51
+ thumbs = me.thumbs,
52
+ len = thumbs.length,
53
+ thumb,
54
+ thumbConfig;
55
+
56
+ for (; i < len; i++) {
57
+ thumb = thumbs[i];
58
+ thumbConfig = thumb.getElConfig();
59
+ thumbConfig.id = me.id + '-thumb-' + i;
60
+ Ext.DomHelper.generateMarkup(thumbConfig, out);
61
+ }
62
+ },
63
+ disableFormats: true
64
+ }
65
+ ],
66
+
67
+ /**
68
+ * @cfg {Number} value
69
+ * A value with which to initialize the slider. Setting this will only result in the creation
70
+ * of a single slider thumb; if you want multiple thumbs then use the {@link #values} config instead.
71
+ *
72
+ * Defaults to #minValue.
73
+ */
74
+
75
+ /**
76
+ * @cfg {Number[]} values
77
+ * Array of Number values with which to initalize the slider. A separate slider thumb will be created for each value
78
+ * in this array. This will take precedence over the single {@link #value} config.
79
+ */
80
+
81
+ /**
82
+ * @cfg {Boolean} vertical
83
+ * Orient the Slider vertically rather than horizontally.
84
+ */
85
+ vertical: false,
86
+
87
+ /**
88
+ * @cfg {Number} minValue
89
+ * The minimum value for the Slider.
90
+ */
91
+ minValue: 0,
92
+
93
+ /**
94
+ * @cfg {Number} maxValue
95
+ * The maximum value for the Slider.
96
+ */
97
+ maxValue: 100,
98
+
99
+ /**
100
+ * @cfg {Number/Boolean} decimalPrecision The number of decimal places to which to round the Slider's value.
101
+ *
102
+ * To disable rounding, configure as **false**.
103
+ */
104
+ decimalPrecision: 0,
105
+
106
+ /**
107
+ * @cfg {Number} keyIncrement
108
+ * How many units to change the Slider when adjusting with keyboard navigation. If the increment
109
+ * config is larger, it will be used instead.
110
+ */
111
+ keyIncrement: 1,
112
+
113
+ /**
114
+ * @cfg {Number} increment
115
+ * How many units to change the slider when adjusting by drag and drop. Use this option to enable 'snapping'.
116
+ */
117
+ increment: 0,
118
+
119
+ /**
120
+ * @cfg {Boolean} [zeroBasedSnapping=false]
121
+ * Set to `true` to calculate snap points based on {@link #increment}s from zero as opposed to
122
+ * from this Slider's {@link #minValue}.
123
+ *
124
+ * By Default, valid snap points are calculated starting {@link #increment}s from the {@link #minValue}
125
+ */
126
+
127
+ /**
128
+ * @private
129
+ * @property {Number[]} clickRange
130
+ * Determines whether or not a click to the slider component is considered to be a user request to change the value. Specified as an array of [top, bottom],
131
+ * the click event's 'top' property is compared to these numbers and the click only considered a change request if it falls within them. e.g. if the 'top'
132
+ * value of the click event is 4 or 16, the click is not considered a change request as it falls outside of the [5, 15] range
133
+ */
134
+ clickRange: [5,15],
135
+
136
+ /**
137
+ * @cfg {Boolean} clickToChange
138
+ * Determines whether or not clicking on the Slider axis will change the slider.
139
+ */
140
+ clickToChange : true,
141
+
142
+ /**
143
+ * @cfg {Boolean} animate
144
+ * Turn on or off animation.
145
+ */
146
+ animate: true,
147
+
148
+ /**
149
+ * @property {Boolean} dragging
150
+ * True while the thumb is in a drag operation
151
+ */
152
+ dragging: false,
153
+
154
+ /**
155
+ * @cfg {Boolean} constrainThumbs
156
+ * True to disallow thumbs from overlapping one another.
157
+ */
158
+ constrainThumbs: true,
159
+
160
+ componentLayout: 'sliderfield',
161
+
162
+ /**
163
+ * @cfg {Object/Boolean} useTips
164
+ * True to use an {@link Ext.slider.Tip} to display tips for the value. This option may also
165
+ * provide a configuration object for an {@link Ext.slider.Tip}.
166
+ */
167
+ useTips : true,
168
+
169
+ /**
170
+ * @cfg {Function} [tipText=undefined]
171
+ * A function used to display custom text for the slider tip.
172
+ *
173
+ * Defaults to null, which will use the default on the plugin.
174
+ */
175
+ tipText : null,
176
+
177
+ ariaRole: 'slider',
178
+
179
+ // private override
180
+ initValue: function() {
181
+ var me = this,
182
+ extValue = Ext.value,
183
+ // Fallback for initial values: values config -> value config -> minValue config -> 0
184
+ values = extValue(me.values, [extValue(me.value, extValue(me.minValue, 0))]),
185
+ i = 0,
186
+ len = values.length;
187
+
188
+ // Store for use in dirty check
189
+ me.originalValue = values;
190
+
191
+ // Add a thumb for each value
192
+ for (; i < len; i++) {
193
+ me.addThumb(values[i]);
194
+ }
195
+ },
196
+
197
+ // private override
198
+ initComponent : function() {
199
+ var me = this,
200
+ tipPlug,
201
+ hasTip,
202
+ p, pLen, plugins;
203
+
204
+ /**
205
+ * @property {Array} thumbs
206
+ * Array containing references to each thumb
207
+ */
208
+ me.thumbs = [];
209
+
210
+ me.keyIncrement = Math.max(me.increment, me.keyIncrement);
211
+
212
+ me.addEvents(
213
+ /**
214
+ * @event beforechange
215
+ * Fires before the slider value is changed. By returning false from an event handler, you can cancel the
216
+ * event and prevent the slider from changing.
217
+ * @param {Ext.slider.Multi} slider The slider
218
+ * @param {Number} newValue The new value which the slider is being changed to.
219
+ * @param {Number} oldValue The old value which the slider was previously.
220
+ */
221
+ 'beforechange',
222
+
223
+ /**
224
+ * @event change
225
+ * Fires when the slider value is changed.
226
+ * @param {Ext.slider.Multi} slider The slider
227
+ * @param {Number} newValue The new value which the slider has been changed to.
228
+ * @param {Ext.slider.Thumb} thumb The thumb that was changed
229
+ */
230
+ 'change',
231
+
232
+ /**
233
+ * @event changecomplete
234
+ * Fires when the slider value is changed by the user and any drag operations have completed.
235
+ * @param {Ext.slider.Multi} slider The slider
236
+ * @param {Number} newValue The new value which the slider has been changed to.
237
+ * @param {Ext.slider.Thumb} thumb The thumb that was changed
238
+ */
239
+ 'changecomplete',
240
+
241
+ /**
242
+ * @event dragstart
243
+ * Fires after a drag operation has started.
244
+ * @param {Ext.slider.Multi} slider The slider
245
+ * @param {Ext.EventObject} e The event fired from Ext.dd.DragTracker
246
+ */
247
+ 'dragstart',
248
+
249
+ /**
250
+ * @event drag
251
+ * Fires continuously during the drag operation while the mouse is moving.
252
+ * @param {Ext.slider.Multi} slider The slider
253
+ * @param {Ext.EventObject} e The event fired from Ext.dd.DragTracker
254
+ */
255
+ 'drag',
256
+
257
+ /**
258
+ * @event dragend
259
+ * Fires after the drag operation has completed.
260
+ * @param {Ext.slider.Multi} slider The slider
261
+ * @param {Ext.EventObject} e The event fired from Ext.dd.DragTracker
262
+ */
263
+ 'dragend'
264
+ );
265
+
266
+ // Ensure that the maxValue is a snap point, and that the initial value is snapped.
267
+ if (me.increment) {
268
+ me.maxValue = Ext.Number.snapInRange(me.maxValue, me.increment, me.minValue);
269
+ me.value = me.normalizeValue(me.value);
270
+ }
271
+
272
+ me.callParent();
273
+
274
+ // only can use it if it exists.
275
+ if (me.useTips) {
276
+ if (Ext.isObject(me.useTips)) {
277
+ tipPlug = Ext.apply({}, me.useTips);
278
+ } else {
279
+ tipPlug = me.tipText ? {getText: me.tipText} : {};
280
+ }
281
+
282
+ plugins = me.plugins = me.plugins || [];
283
+ pLen = plugins.length;
284
+
285
+ for (p = 0; p < pLen; p++) {
286
+ if (plugins[p].isSliderTip) {
287
+ hasTip = true;
288
+ break;
289
+ }
290
+ }
291
+
292
+ if (!hasTip) {
293
+ me.plugins.push(new Ext.slider.Tip(tipPlug));
294
+ }
295
+ }
296
+ },
297
+
298
+ /**
299
+ * Creates a new thumb and adds it to the slider
300
+ * @param {Number} [value=0] The initial value to set on the thumb.
301
+ * @return {Ext.slider.Thumb} The thumb
302
+ */
303
+ addThumb: function(value) {
304
+ var me = this,
305
+ thumb = new Ext.slider.Thumb({
306
+ ownerCt : me,
307
+ ownerLayout : me.getComponentLayout(),
308
+ value : value,
309
+ slider : me,
310
+ index : me.thumbs.length,
311
+ constrain : me.constrainThumbs
312
+ });
313
+
314
+ me.thumbs.push(thumb);
315
+
316
+ //render the thumb now if needed
317
+ if (me.rendered) {
318
+ thumb.render();
319
+ }
320
+
321
+ return thumb;
322
+ },
323
+
324
+ /**
325
+ * @private
326
+ * Moves the given thumb above all other by increasing its z-index. This is called when as drag
327
+ * any thumb, so that the thumb that was just dragged is always at the highest z-index. This is
328
+ * required when the thumbs are stacked on top of each other at one of the ends of the slider's
329
+ * range, which can result in the user not being able to move any of them.
330
+ * @param {Ext.slider.Thumb} topThumb The thumb to move to the top
331
+ */
332
+ promoteThumb: function(topThumb) {
333
+ var thumbs = this.thumbs,
334
+ ln = thumbs.length,
335
+ zIndex, thumb, i;
336
+
337
+ for (i = 0; i < ln; i++) {
338
+ thumb = thumbs[i];
339
+
340
+ if (thumb == topThumb) {
341
+ thumb.bringToFront();
342
+ } else {
343
+ thumb.sendToBack();
344
+ }
345
+ }
346
+ },
347
+
348
+ // private override
349
+ getSubTplData : function() {
350
+ var me = this;
351
+
352
+ return Ext.apply(me.callParent(), {
353
+ $comp: me,
354
+ vertical: me.vertical ? Ext.baseCSSPrefix + 'slider-vert' : Ext.baseCSSPrefix + 'slider-horz',
355
+ minValue: me.minValue,
356
+ maxValue: me.maxValue,
357
+ value: me.value
358
+ });
359
+ },
360
+
361
+ onRender : function() {
362
+ var me = this,
363
+ thumbs = me.thumbs,
364
+ len = thumbs.length,
365
+ i = 0,
366
+ thumb;
367
+
368
+ me.callParent(arguments);
369
+
370
+ for (i = 0; i < len; i++) {
371
+ thumb = thumbs[i];
372
+ thumb.el = me.el.getById(me.id + '-thumb-' + i);
373
+ thumb.onRender();
374
+ }
375
+ },
376
+
377
+ /**
378
+ * @private
379
+ * Adds keyboard and mouse listeners on this.el. Ignores click events on the internal focus element.
380
+ */
381
+ initEvents : function() {
382
+ var me = this;
383
+ me.mon(me.el, {
384
+ scope : me,
385
+ mousedown: me.onMouseDown,
386
+ keydown : me.onKeyDown
387
+ });
388
+ },
389
+
390
+ /**
391
+ * @private
392
+ * Given an `[x, y]` position within the slider's track (Points outside the slider's track are coerced to either the minimum or maximum value),
393
+ * calculate how many pixels **from the slider origin** (left for horizontal Sliders and bottom for vertical Sliders) that point is.
394
+ *
395
+ * If the point is outside the range of the Slider's track, the return value is `undefined`
396
+ * @param {Number[]} xy The point to calculate the track point for
397
+ */
398
+ getTrackpoint : function(xy) {
399
+ var me = this,
400
+ result,
401
+ positionProperty,
402
+ sliderTrack = me.innerEl,
403
+ trackLength;
404
+
405
+ if (me.vertical) {
406
+ positionProperty = 'top';
407
+ trackLength = sliderTrack.getHeight();
408
+ } else {
409
+ positionProperty = 'left';
410
+ trackLength = sliderTrack.getWidth();
411
+ }
412
+ result = Ext.Number.constrain(sliderTrack.translatePoints(xy)[positionProperty], 0, trackLength);
413
+ return me.vertical ? trackLength - result : result;
414
+ },
415
+
416
+ /**
417
+ * @private
418
+ * Mousedown handler for the slider. If the clickToChange is enabled and the click was not on the draggable 'thumb',
419
+ * this calculates the new value of the slider and tells the implementation (Horizontal or Vertical) to move the thumb
420
+ * @param {Ext.EventObject} e The click event
421
+ */
422
+ onMouseDown : function(e) {
423
+ var me = this,
424
+ thumbClicked = false,
425
+ i = 0,
426
+ thumbs = me.thumbs,
427
+ len = thumbs.length,
428
+ trackPoint;
429
+
430
+ if (me.disabled) {
431
+ return;
432
+ }
433
+
434
+ //see if the click was on any of the thumbs
435
+ for (; i < len; i++) {
436
+ thumbClicked = thumbClicked || e.target == thumbs[i].el.dom;
437
+ }
438
+
439
+ if (me.clickToChange && !thumbClicked) {
440
+ trackPoint = me.getTrackpoint(e.getXY());
441
+ if (trackPoint !== undefined) {
442
+ me.onClickChange(trackPoint);
443
+ }
444
+ }
445
+ me.focus();
446
+ },
447
+
448
+ /**
449
+ * @private
450
+ * Moves the thumb to the indicated position.
451
+ * Only changes the value if the click was within this.clickRange.
452
+ * @param {Number} trackPoint local pixel offset **from the origin** (left for horizontal and bottom for vertical) along the Slider's axis at which the click event occured.
453
+ */
454
+ onClickChange : function(trackPoint) {
455
+ var me = this,
456
+ thumb, index;
457
+
458
+ // How far along the track *from the origin* was the click.
459
+ // If vertical, the origin is the bottom of the slider track.
460
+
461
+ //find the nearest thumb to the click event
462
+ thumb = me.getNearest(trackPoint);
463
+ if (!thumb.disabled) {
464
+ index = thumb.index;
465
+ me.setValue(index, Ext.util.Format.round(me.reversePixelValue(trackPoint), me.decimalPrecision), undefined, true);
466
+ }
467
+ },
468
+
469
+ /**
470
+ * @private
471
+ * Returns the nearest thumb to a click event, along with its distance
472
+ * @param {Number} trackPoint local pixel position along the Slider's axis to find the Thumb for
473
+ * @return {Object} The closest thumb object and its distance from the click event
474
+ */
475
+ getNearest: function(trackPoint) {
476
+ var me = this,
477
+ clickValue = me.reversePixelValue(trackPoint),
478
+ nearestDistance = (me.maxValue - me.minValue) + 5, //add a small fudge for the end of the slider
479
+ nearest = null,
480
+ thumbs = me.thumbs,
481
+ i = 0,
482
+ len = thumbs.length,
483
+ thumb,
484
+ value,
485
+ dist;
486
+
487
+ for (; i < len; i++) {
488
+ thumb = me.thumbs[i];
489
+ value = thumb.value;
490
+ dist = Math.abs(value - clickValue);
491
+
492
+ if (Math.abs(dist <= nearestDistance)) {
493
+ nearest = thumb;
494
+ nearestDistance = dist;
495
+ }
496
+ }
497
+ return nearest;
498
+ },
499
+
500
+ /**
501
+ * @private
502
+ * Handler for any keypresses captured by the slider. If the key is UP or RIGHT, the thumb is moved along to the right
503
+ * by this.keyIncrement. If DOWN or LEFT it is moved left. Pressing CTRL moves the slider to the end in either direction
504
+ * @param {Ext.EventObject} e The Event object
505
+ */
506
+ onKeyDown : function(e) {
507
+ /*
508
+ * The behaviour for keyboard handling with multiple thumbs is currently undefined.
509
+ * There's no real sane default for it, so leave it like this until we come up
510
+ * with a better way of doing it.
511
+ */
512
+ var me = this,
513
+ k,
514
+ val;
515
+
516
+ if(me.disabled || me.thumbs.length !== 1) {
517
+ e.preventDefault();
518
+ return;
519
+ }
520
+ k = e.getKey();
521
+
522
+ switch(k) {
523
+ case e.UP:
524
+ case e.RIGHT:
525
+ e.stopEvent();
526
+ val = e.ctrlKey ? me.maxValue : me.getValue(0) + me.keyIncrement;
527
+ me.setValue(0, val, undefined, true);
528
+ break;
529
+ case e.DOWN:
530
+ case e.LEFT:
531
+ e.stopEvent();
532
+ val = e.ctrlKey ? me.minValue : me.getValue(0) - me.keyIncrement;
533
+ me.setValue(0, val, undefined, true);
534
+ break;
535
+ default:
536
+ e.preventDefault();
537
+ }
538
+ },
539
+
540
+ /**
541
+ * @private
542
+ * Returns a snapped, constrained value when given a desired value
543
+ * @param {Number} value Raw number value
544
+ * @return {Number} The raw value rounded to the correct d.p. and constrained within the set max and min values
545
+ */
546
+ normalizeValue : function(v) {
547
+ var me = this,
548
+ Num = Ext.Number,
549
+ snapFn = Num[me.zeroBasedSnapping ? 'snap' : 'snapInRange'];
550
+
551
+ v = snapFn.call(Num, v, me.increment, me.minValue, me.maxValue);
552
+ v = Ext.util.Format.round(v, me.decimalPrecision);
553
+ v = Ext.Number.constrain(v, me.minValue, me.maxValue);
554
+ return v;
555
+ },
556
+
557
+ /**
558
+ * Sets the minimum value for the slider instance. If the current value is less than the minimum value, the current
559
+ * value will be changed.
560
+ * @param {Number} val The new minimum value
561
+ */
562
+ setMinValue : function(val) {
563
+ var me = this,
564
+ i = 0,
565
+ thumbs = me.thumbs,
566
+ len = thumbs.length,
567
+ t;
568
+
569
+ me.minValue = val;
570
+ if (me.rendered) {
571
+ me.inputEl.dom.setAttribute('aria-valuemin', val);
572
+ }
573
+
574
+ for (; i < len; ++i) {
575
+ t = thumbs[i];
576
+ t.value = t.value < val ? val : t.value;
577
+ }
578
+ me.syncThumbs();
579
+ },
580
+
581
+ /**
582
+ * Sets the maximum value for the slider instance. If the current value is more than the maximum value, the current
583
+ * value will be changed.
584
+ * @param {Number} val The new maximum value
585
+ */
586
+ setMaxValue : function(val) {
587
+ var me = this,
588
+ i = 0,
589
+ thumbs = me.thumbs,
590
+ len = thumbs.length,
591
+ t;
592
+
593
+ me.maxValue = val;
594
+ if (me.rendered) {
595
+ me.inputEl.dom.setAttribute('aria-valuemax', val);
596
+ }
597
+
598
+ for (; i < len; ++i) {
599
+ t = thumbs[i];
600
+ t.value = t.value > val ? val : t.value;
601
+ }
602
+ me.syncThumbs();
603
+ },
604
+
605
+ /**
606
+ * Programmatically sets the value of the Slider. Ensures that the value is constrained within the minValue and
607
+ * maxValue.
608
+ * @param {Number} index Index of the thumb to move
609
+ * @param {Number} value The value to set the slider to. (This will be constrained within minValue and maxValue)
610
+ * @param {Boolean} [animate=true] Turn on or off animation
611
+ */
612
+ setValue : function(index, value, animate, changeComplete) {
613
+ var me = this,
614
+ thumb = me.thumbs[index];
615
+
616
+ // ensures value is contstrained and snapped
617
+ value = me.normalizeValue(value);
618
+
619
+ if (value !== thumb.value && me.fireEvent('beforechange', me, value, thumb.value, thumb) !== false) {
620
+ thumb.value = value;
621
+ if (me.rendered) {
622
+ // TODO this only handles a single value; need a solution for exposing multiple values to aria.
623
+ // Perhaps this should go on each thumb element rather than the outer element.
624
+ me.inputEl.set({
625
+ 'aria-valuenow': value,
626
+ 'aria-valuetext': value
627
+ });
628
+
629
+ thumb.move(me.calculateThumbPosition(value), Ext.isDefined(animate) ? animate !== false : me.animate);
630
+
631
+ me.fireEvent('change', me, value, thumb);
632
+ me.checkDirty();
633
+ if (changeComplete) {
634
+ me.fireEvent('changecomplete', me, value, thumb);
635
+ }
636
+ }
637
+ }
638
+ },
639
+
640
+ /**
641
+ * @private
642
+ * Given a value within this Slider's range, calculates a Thumb's percentage CSS position to map that value.
643
+ */
644
+ calculateThumbPosition : function(v) {
645
+ return (v - this.minValue) / (this.maxValue - this.minValue) * 100;
646
+ },
647
+
648
+ /**
649
+ * @private
650
+ * Returns the ratio of pixels to mapped values. e.g. if the slider is 200px wide and maxValue - minValue is 100,
651
+ * the ratio is 2
652
+ * @return {Number} The ratio of pixels to mapped values
653
+ */
654
+ getRatio : function() {
655
+ var me = this,
656
+ trackLength = this.vertical ? this.innerEl.getHeight() : this.innerEl.getWidth(),
657
+ valueRange = this.maxValue - this.minValue;
658
+ return valueRange === 0 ? trackLength : (trackLength / valueRange);
659
+ },
660
+
661
+ /**
662
+ * @private
663
+ * Given a pixel location along the slider, returns the mapped slider value for that pixel.
664
+ * E.g. if we have a slider 200px wide with minValue = 100 and maxValue = 500, reversePixelValue(50)
665
+ * returns 200
666
+ * @param {Number} pos The position along the slider to return a mapped value for
667
+ * @return {Number} The mapped value for the given position
668
+ */
669
+ reversePixelValue : function(pos) {
670
+ return this.minValue + (pos / this.getRatio());
671
+ },
672
+
673
+ /**
674
+ * @private
675
+ * Given a Thumb's percentage position along the slider, returns the mapped slider value for that pixel.
676
+ * E.g. if we have a slider 200px wide with minValue = 100 and maxValue = 500, reversePercentageValue(25)
677
+ * returns 200
678
+ * @param {Number} pos The percentage along the slider track to return a mapped value for
679
+ * @return {Number} The mapped value for the given position
680
+ */
681
+ reversePercentageValue : function(pos) {
682
+ return this.minValue + (this.maxValue - this.minValue) * (pos / 100);
683
+ },
684
+
685
+ //private
686
+ onDisable: function() {
687
+ var me = this,
688
+ i = 0,
689
+ thumbs = me.thumbs,
690
+ len = thumbs.length,
691
+ thumb,
692
+ el,
693
+ xy;
694
+
695
+ me.callParent();
696
+
697
+ for (; i < len; i++) {
698
+ thumb = thumbs[i];
699
+ el = thumb.el;
700
+
701
+ thumb.disable();
702
+
703
+ if(Ext.isIE) {
704
+ //IE breaks when using overflow visible and opacity other than 1.
705
+ //Create a place holder for the thumb and display it.
706
+ xy = el.getXY();
707
+ el.hide();
708
+
709
+ me.innerEl.addCls(me.disabledCls).dom.disabled = true;
710
+
711
+ if (!me.thumbHolder) {
712
+ me.thumbHolder = me.endEl.createChild({cls: Ext.baseCSSPrefix + 'slider-thumb ' + me.disabledCls});
713
+ }
714
+
715
+ me.thumbHolder.show().setXY(xy);
716
+ }
717
+ }
718
+ },
719
+
720
+ //private
721
+ onEnable: function() {
722
+ var me = this,
723
+ i = 0,
724
+ thumbs = me.thumbs,
725
+ len = thumbs.length,
726
+ thumb,
727
+ el;
728
+
729
+ this.callParent();
730
+
731
+ for (; i < len; i++) {
732
+ thumb = thumbs[i];
733
+ el = thumb.el;
734
+
735
+ thumb.enable();
736
+
737
+ if (Ext.isIE) {
738
+ me.innerEl.removeCls(me.disabledCls).dom.disabled = false;
739
+
740
+ if (me.thumbHolder) {
741
+ me.thumbHolder.hide();
742
+ }
743
+
744
+ el.show();
745
+ me.syncThumbs();
746
+ }
747
+ }
748
+ },
749
+
750
+ /**
751
+ * Synchronizes thumbs position to the proper proportion of the total component width based on the current slider
752
+ * {@link #value}. This will be called automatically when the Slider is resized by a layout, but if it is rendered
753
+ * auto width, this method can be called from another resize handler to sync the Slider if necessary.
754
+ */
755
+ syncThumbs : function() {
756
+ if (this.rendered) {
757
+ var thumbs = this.thumbs,
758
+ length = thumbs.length,
759
+ i = 0;
760
+
761
+ for (; i < length; i++) {
762
+ thumbs[i].move(this.calculateThumbPosition(thumbs[i].value));
763
+ }
764
+ }
765
+ },
766
+
767
+ /**
768
+ * Returns the current value of the slider
769
+ * @param {Number} index The index of the thumb to return a value for
770
+ * @return {Number/Number[]} The current value of the slider at the given index, or an array of all thumb values if
771
+ * no index is given.
772
+ */
773
+ getValue : function(index) {
774
+ return Ext.isNumber(index) ? this.thumbs[index].value : this.getValues();
775
+ },
776
+
777
+ /**
778
+ * Returns an array of values - one for the location of each thumb
779
+ * @return {Number[]} The set of thumb values
780
+ */
781
+ getValues: function() {
782
+ var values = [],
783
+ i = 0,
784
+ thumbs = this.thumbs,
785
+ len = thumbs.length;
786
+
787
+ for (; i < len; i++) {
788
+ values.push(thumbs[i].value);
789
+ }
790
+
791
+ return values;
792
+ },
793
+
794
+ getSubmitValue: function() {
795
+ var me = this;
796
+ return (me.disabled || !me.submitValue) ? null : me.getValue();
797
+ },
798
+
799
+ reset: function() {
800
+ var me = this,
801
+ arr = [].concat(me.originalValue),
802
+ a = 0,
803
+ aLen = arr.length,
804
+ val;
805
+
806
+ for (; a < aLen; a++) {
807
+ val = arr[a];
808
+
809
+ me.setValue(a, val);
810
+ }
811
+
812
+ me.clearInvalid();
813
+ // delete here so we reset back to the original state
814
+ delete me.wasValid;
815
+ },
816
+
817
+ // private
818
+ beforeDestroy : function() {
819
+ var me = this,
820
+ thumbs = me.thumbs,
821
+ t = 0,
822
+ tLen = thumbs.length,
823
+ thumb;
824
+
825
+ Ext.destroy(me.innerEl, me.endEl, me.focusEl);
826
+
827
+ for (; t < tLen; t++) {
828
+ thumb = thumbs[t];
829
+
830
+ Ext.destroy(thumb);
831
+ }
832
+
833
+ me.callParent();
834
+ }
835
+ });