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,1140 @@
1
+ /**
2
+ * A date picker. This class is used by the Ext.form.field.Date field to allow browsing and selection of valid
3
+ * dates in a popup next to the field, but may also be used with other components.
4
+ *
5
+ * Typically you will need to implement a handler function to be notified when the user chooses a date from the picker;
6
+ * you can register the handler using the {@link #select} event, or by implementing the {@link #handler} method.
7
+ *
8
+ * By default the user will be allowed to pick any date; this can be changed by using the {@link #minDate},
9
+ * {@link #maxDate}, {@link #disabledDays}, {@link #disabledDatesRE}, and/or {@link #disabledDates} configs.
10
+ *
11
+ * All the string values documented below may be overridden by including an Ext locale file in your page.
12
+ *
13
+ * @example
14
+ * Ext.create('Ext.panel.Panel', {
15
+ * title: 'Choose a future date:',
16
+ * width: 200,
17
+ * bodyPadding: 10,
18
+ * renderTo: Ext.getBody(),
19
+ * items: [{
20
+ * xtype: 'datepicker',
21
+ * minDate: new Date(),
22
+ * handler: function(picker, date) {
23
+ * // do something with the selected date
24
+ * }
25
+ * }]
26
+ * });
27
+ */
28
+ Ext.define('Ext.picker.Date', {
29
+ extend: 'Ext.Component',
30
+ requires: [
31
+ 'Ext.XTemplate',
32
+ 'Ext.button.Button',
33
+ 'Ext.button.Split',
34
+ 'Ext.util.ClickRepeater',
35
+ 'Ext.util.KeyNav',
36
+ 'Ext.EventObject',
37
+ 'Ext.fx.Manager',
38
+ 'Ext.picker.Month'
39
+ ],
40
+ alias: 'widget.datepicker',
41
+ alternateClassName: 'Ext.DatePicker',
42
+
43
+ childEls: [
44
+ 'innerEl', 'eventEl', 'prevEl', 'nextEl', 'middleBtnEl', 'footerEl'
45
+ ],
46
+
47
+ border: true,
48
+
49
+ renderTpl: [
50
+ '<div id="{id}-innerEl" role="grid">',
51
+ '<div role="presentation" class="{baseCls}-header">',
52
+ '<div class="{baseCls}-prev"><a id="{id}-prevEl" href="#" role="button" title="{prevText}"></a></div>',
53
+ '<div class="{baseCls}-month" id="{id}-middleBtnEl">{%this.renderMonthBtn(values, out)%}</div>',
54
+ '<div class="{baseCls}-next"><a id="{id}-nextEl" href="#" role="button" title="{nextText}"></a></div>',
55
+ '</div>',
56
+ '<table id="{id}-eventEl" class="{baseCls}-inner" cellspacing="0" role="presentation">',
57
+ '<thead role="presentation"><tr role="presentation">',
58
+ '<tpl for="dayNames">',
59
+ '<th role="columnheader" title="{.}"><span>{.:this.firstInitial}</span></th>',
60
+ '</tpl>',
61
+ '</tr></thead>',
62
+ '<tbody role="presentation"><tr role="presentation">',
63
+ '<tpl for="days">',
64
+ '{#:this.isEndOfWeek}',
65
+ '<td role="gridcell" id="{[Ext.id()]}">',
66
+ '<a role="presentation" href="#" hidefocus="on" class="{parent.baseCls}-date" tabIndex="1">',
67
+ '<em role="presentation"><span role="presentation"></span></em>',
68
+ '</a>',
69
+ '</td>',
70
+ '</tpl>',
71
+ '</tr></tbody>',
72
+ '</table>',
73
+ '<tpl if="showToday">',
74
+ '<div id="{id}-footerEl" role="presentation" class="{baseCls}-footer">{%this.renderTodayBtn(values, out)%}</div>',
75
+ '</tpl>',
76
+ '</div>',
77
+ {
78
+ firstInitial: function(value) {
79
+ return Ext.picker.Date.prototype.getDayInitial(value);
80
+ },
81
+ isEndOfWeek: function(value) {
82
+ // convert from 1 based index to 0 based
83
+ // by decrementing value once.
84
+ value--;
85
+ var end = value % 7 === 0 && value !== 0;
86
+ return end ? '</tr><tr role="row">' : '';
87
+ },
88
+ renderTodayBtn: function(values, out) {
89
+ Ext.DomHelper.generateMarkup(values.$comp.todayBtn.getRenderTree(), out);
90
+ },
91
+ renderMonthBtn: function(values, out) {
92
+ Ext.DomHelper.generateMarkup(values.$comp.monthBtn.getRenderTree(), out);
93
+ }
94
+ }
95
+ ],
96
+
97
+ /**
98
+ * @cfg {String} todayText
99
+ * The text to display on the button that selects the current date
100
+ */
101
+ //<locale>
102
+ todayText : 'Today',
103
+ //</locale>
104
+
105
+ /**
106
+ * @cfg {String} ariaTitle
107
+ * The text to display for the aria title
108
+ */
109
+ //<locale>
110
+ ariaTitle: 'Date Picker: {0}',
111
+ //</locale>
112
+
113
+ /**
114
+ * @cfg {String} ariaTitleDateFormat
115
+ * The date format to display for the current value in the {@link #ariaTitle}
116
+ */
117
+ //<locale>
118
+ ariaTitleDateFormat: 'F d, Y',
119
+ //</locale>
120
+
121
+ /**
122
+ * @cfg {Function} handler
123
+ * Optional. A function that will handle the select event of this picker. The handler is passed the following
124
+ * parameters:
125
+ *
126
+ * - `picker` : Ext.picker.Date
127
+ *
128
+ * This Date picker.
129
+ *
130
+ * - `date` : Date
131
+ *
132
+ * The selected date.
133
+ */
134
+
135
+ /**
136
+ * @cfg {Object} scope
137
+ * The scope (`this` reference) in which the `{@link #handler}` function will be called.
138
+ *
139
+ * Defaults to this DatePicker instance.
140
+ */
141
+
142
+ /**
143
+ * @cfg {String} todayTip
144
+ * A string used to format the message for displaying in a tooltip over the button that selects the current date.
145
+ * The `{0}` token in string is replaced by today's date.
146
+ */
147
+ //<locale>
148
+ todayTip : '{0} (Spacebar)',
149
+ //</locale>
150
+
151
+ /**
152
+ * @cfg {String} minText
153
+ * The error text to display if the minDate validation fails.
154
+ */
155
+ //<locale>
156
+ minText : 'This date is before the minimum date',
157
+ //</locale>
158
+
159
+ /**
160
+ * @cfg {String} maxText
161
+ * The error text to display if the maxDate validation fails.
162
+ */
163
+ //<locale>
164
+ maxText : 'This date is after the maximum date',
165
+ //</locale>
166
+
167
+ /**
168
+ * @cfg {String} format
169
+ * The default date format string which can be overriden for localization support. The format must be valid
170
+ * according to {@link Ext.Date#parse} (defaults to {@link Ext.Date#defaultFormat}).
171
+ */
172
+
173
+ /**
174
+ * @cfg {String} disabledDaysText
175
+ * The tooltip to display when the date falls on a disabled day.
176
+ */
177
+ //<locale>
178
+ disabledDaysText : 'Disabled',
179
+ //</locale>
180
+
181
+ /**
182
+ * @cfg {String} disabledDatesText
183
+ * The tooltip text to display when the date falls on a disabled date.
184
+ */
185
+ //<locale>
186
+ disabledDatesText : 'Disabled',
187
+ //</locale>
188
+
189
+ /**
190
+ * @cfg {String[]} monthNames
191
+ * An array of textual month names which can be overriden for localization support (defaults to Ext.Date.monthNames)
192
+ */
193
+
194
+ /**
195
+ * @cfg {String[]} dayNames
196
+ * An array of textual day names which can be overriden for localization support (defaults to Ext.Date.dayNames)
197
+ */
198
+
199
+ /**
200
+ * @cfg {String} nextText
201
+ * The next month navigation button tooltip
202
+ */
203
+ //<locale>
204
+ nextText : 'Next Month (Control+Right)',
205
+ //</locale>
206
+
207
+ /**
208
+ * @cfg {String} prevText
209
+ * The previous month navigation button tooltip
210
+ */
211
+ //<locale>
212
+ prevText : 'Previous Month (Control+Left)',
213
+ //</locale>
214
+
215
+ /**
216
+ * @cfg {String} monthYearText
217
+ * The header month selector tooltip
218
+ */
219
+ //<locale>
220
+ monthYearText : 'Choose a month (Control+Up/Down to move years)',
221
+ //</locale>
222
+
223
+ /**
224
+ * @cfg {String} monthYearFormat
225
+ * The date format for the header month
226
+ */
227
+ //<locale>
228
+ monthYearFormat: 'F Y',
229
+ //</locale>
230
+
231
+ /**
232
+ * @cfg {Number} [startDay=undefined]
233
+ * Day index at which the week should begin, 0-based.
234
+ *
235
+ * Defaults to `0` (Sunday).
236
+ */
237
+ //<locale>
238
+ startDay : 0,
239
+ //</locale>
240
+
241
+ /**
242
+ * @cfg {Boolean} showToday
243
+ * False to hide the footer area containing the Today button and disable the keyboard handler for spacebar that
244
+ * selects the current date.
245
+ */
246
+ //<locale>
247
+ showToday : true,
248
+ //</locale>
249
+
250
+ /**
251
+ * @cfg {Date} [minDate=null]
252
+ * Minimum allowable date (JavaScript date object)
253
+ */
254
+
255
+ /**
256
+ * @cfg {Date} [maxDate=null]
257
+ * Maximum allowable date (JavaScript date object)
258
+ */
259
+
260
+ /**
261
+ * @cfg {Number[]} [disabledDays=null]
262
+ * An array of days to disable, 0-based. For example, [0, 6] disables Sunday and Saturday.
263
+ */
264
+
265
+ /**
266
+ * @cfg {RegExp} [disabledDatesRE=null]
267
+ * JavaScript regular expression used to disable a pattern of dates. The {@link #disabledDates}
268
+ * config will generate this regex internally, but if you specify disabledDatesRE it will take precedence over the
269
+ * disabledDates value.
270
+ */
271
+
272
+ /**
273
+ * @cfg {String[]} disabledDates
274
+ * An array of 'dates' to disable, as strings. These strings will be used to build a dynamic regular expression so
275
+ * they are very powerful. Some examples:
276
+ *
277
+ * - ['03/08/2003', '09/16/2003'] would disable those exact dates
278
+ * - ['03/08', '09/16'] would disable those days for every year
279
+ * - ['^03/08'] would only match the beginning (useful if you are using short years)
280
+ * - ['03/../2006'] would disable every day in March 2006
281
+ * - ['^03'] would disable every day in every March
282
+ *
283
+ * Note that the format of the dates included in the array should exactly match the {@link #format} config. In order
284
+ * to support regular expressions, if you are using a date format that has '.' in it, you will have to escape the
285
+ * dot when restricting dates. For example: ['03\\.08\\.03'].
286
+ */
287
+
288
+ /**
289
+ * @cfg {Boolean} disableAnim
290
+ * True to disable animations when showing the month picker.
291
+ */
292
+ disableAnim: false,
293
+
294
+ /**
295
+ * @cfg {String} [baseCls='x-datepicker']
296
+ * The base CSS class to apply to this components element.
297
+ */
298
+ baseCls: Ext.baseCSSPrefix + 'datepicker',
299
+
300
+ /**
301
+ * @cfg {String} [selectedCls='x-datepicker-selected']
302
+ * The class to apply to the selected cell.
303
+ */
304
+
305
+ /**
306
+ * @cfg {String} [disabledCellCls='x-datepicker-disabled']
307
+ * The class to apply to disabled cells.
308
+ */
309
+
310
+ /**
311
+ * @cfg {String} longDayFormat
312
+ * The format for displaying a date in a longer format.
313
+ */
314
+ //<locale>
315
+ longDayFormat: 'F d, Y',
316
+ //</locale>
317
+
318
+ /**
319
+ * @cfg {Object} keyNavConfig
320
+ * Specifies optional custom key event handlers for the {@link Ext.util.KeyNav} attached to this date picker. Must
321
+ * conform to the config format recognized by the {@link Ext.util.KeyNav} constructor. Handlers specified in this
322
+ * object will replace default handlers of the same name.
323
+ */
324
+
325
+ /**
326
+ * @cfg {Boolean} focusOnShow
327
+ * True to automatically focus the picker on show.
328
+ */
329
+ focusOnShow: false,
330
+
331
+ // private
332
+ // Set by other components to stop the picker focus being updated when the value changes.
333
+ focusOnSelect: true,
334
+
335
+ width: 178,
336
+
337
+ // default value used to initialise each date in the DatePicker
338
+ // (note: 12 noon was chosen because it steers well clear of all DST timezone changes)
339
+ initHour: 12, // 24-hour format
340
+
341
+ numDays: 42,
342
+
343
+ // private, inherit docs
344
+ initComponent : function() {
345
+ var me = this,
346
+ clearTime = Ext.Date.clearTime;
347
+
348
+ me.selectedCls = me.baseCls + '-selected';
349
+ me.disabledCellCls = me.baseCls + '-disabled';
350
+ me.prevCls = me.baseCls + '-prevday';
351
+ me.activeCls = me.baseCls + '-active';
352
+ me.nextCls = me.baseCls + '-prevday';
353
+ me.todayCls = me.baseCls + '-today';
354
+ me.dayNames = me.dayNames.slice(me.startDay).concat(me.dayNames.slice(0, me.startDay));
355
+
356
+ me.listeners = Ext.apply(me.listeners||{}, {
357
+ mousewheel: {
358
+ element: 'eventEl',
359
+ fn: me.handleMouseWheel,
360
+ scope: me
361
+ },
362
+ click: {
363
+ element: 'eventEl',
364
+ fn: me.handleDateClick,
365
+ scope: me,
366
+ delegate: 'a.' + me.baseCls + '-date'
367
+ }
368
+ });
369
+ this.callParent();
370
+
371
+ me.value = me.value ?
372
+ clearTime(me.value, true) : clearTime(new Date());
373
+
374
+ me.addEvents(
375
+ /**
376
+ * @event select
377
+ * Fires when a date is selected
378
+ * @param {Ext.picker.Date} this DatePicker
379
+ * @param {Date} date The selected date
380
+ */
381
+ 'select'
382
+ );
383
+
384
+ me.initDisabledDays();
385
+ },
386
+
387
+ beforeRender: function () {
388
+ /*
389
+ * days array for looping through 6 full weeks (6 weeks * 7 days)
390
+ * Note that we explicitly force the size here so the template creates
391
+ * all the appropriate cells.
392
+ */
393
+ var me = this,
394
+ days = new Array(me.numDays),
395
+ today = Ext.Date.format(new Date(), me.format);
396
+
397
+ me.monthBtn = new Ext.button.Split({
398
+ ownerCt: me,
399
+ ownerLayout: me.getComponentLayout(),
400
+ text: '',
401
+ tooltip: me.monthYearText,
402
+ listeners: {
403
+ click: me.showMonthPicker,
404
+ arrowclick: me.showMonthPicker,
405
+ scope: me
406
+ }
407
+ });
408
+
409
+ if (this.showToday) {
410
+ me.todayBtn = new Ext.button.Button({
411
+ ownerCt: me,
412
+ ownerLayout: me.getComponentLayout(),
413
+ text: Ext.String.format(me.todayText, today),
414
+ tooltip: Ext.String.format(me.todayTip, today),
415
+ handler: me.selectToday,
416
+ scope: me
417
+ });
418
+ }
419
+
420
+ me.callParent();
421
+
422
+ Ext.applyIf(me, {
423
+ renderData: {}
424
+ });
425
+
426
+ Ext.apply(me.renderData, {
427
+ dayNames: me.dayNames,
428
+ showToday: me.showToday,
429
+ prevText: me.prevText,
430
+ nextText: me.nextText,
431
+ days: days
432
+ });
433
+ },
434
+
435
+ // Do the job of a container layout at this point even though we are not a Container.
436
+ // TODO: Refactor as a Container.
437
+ finishRenderChildren: function () {
438
+ var me = this;
439
+
440
+ me.callParent();
441
+ me.monthBtn.finishRender();
442
+ if (me.showToday) {
443
+ me.todayBtn.finishRender();
444
+ }
445
+ },
446
+
447
+ // private, inherit docs
448
+ onRender : function(container, position){
449
+ var me = this;
450
+
451
+ me.callParent(arguments);
452
+ me.el.unselectable();
453
+ me.cells = me.eventEl.select('tbody td');
454
+ me.textNodes = me.eventEl.query('tbody td span');
455
+ },
456
+
457
+ // private, inherit docs
458
+ initEvents: function(){
459
+ var me = this,
460
+ eDate = Ext.Date,
461
+ day = eDate.DAY;
462
+
463
+ me.callParent();
464
+
465
+ me.prevRepeater = new Ext.util.ClickRepeater(me.prevEl, {
466
+ handler: me.showPrevMonth,
467
+ scope: me,
468
+ preventDefault: true,
469
+ stopDefault: true
470
+ });
471
+
472
+ me.nextRepeater = new Ext.util.ClickRepeater(me.nextEl, {
473
+ handler: me.showNextMonth,
474
+ scope: me,
475
+ preventDefault:true,
476
+ stopDefault:true
477
+ });
478
+
479
+ me.keyNav = new Ext.util.KeyNav(me.eventEl, Ext.apply({
480
+ scope: me,
481
+ left : function(e){
482
+ if(e.ctrlKey){
483
+ me.showPrevMonth();
484
+ }else{
485
+ me.update(eDate.add(me.activeDate, day, -1));
486
+ }
487
+ },
488
+
489
+ right : function(e){
490
+ if(e.ctrlKey){
491
+ me.showNextMonth();
492
+ }else{
493
+ me.update(eDate.add(me.activeDate, day, 1));
494
+ }
495
+ },
496
+
497
+ up : function(e){
498
+ if(e.ctrlKey){
499
+ me.showNextYear();
500
+ }else{
501
+ me.update(eDate.add(me.activeDate, day, -7));
502
+ }
503
+ },
504
+
505
+ down : function(e){
506
+ if(e.ctrlKey){
507
+ me.showPrevYear();
508
+ }else{
509
+ me.update(eDate.add(me.activeDate, day, 7));
510
+ }
511
+ },
512
+ pageUp : me.showNextMonth,
513
+ pageDown : me.showPrevMonth,
514
+ enter : function(e){
515
+ e.stopPropagation();
516
+ return true;
517
+ }
518
+ }, me.keyNavConfig));
519
+
520
+ if (me.showToday) {
521
+ me.todayKeyListener = me.eventEl.addKeyListener(Ext.EventObject.SPACE, me.selectToday, me);
522
+ }
523
+ me.update(me.value);
524
+ },
525
+
526
+ /**
527
+ * Setup the disabled dates regex based on config options
528
+ * @private
529
+ */
530
+ initDisabledDays : function(){
531
+ var me = this,
532
+ dd = me.disabledDates,
533
+ re = '(?:',
534
+ len,
535
+ d, dLen, dI;
536
+
537
+ if(!me.disabledDatesRE && dd){
538
+ len = dd.length - 1;
539
+
540
+ dLen = dd.length;
541
+
542
+ for (d = 0; d < dLen; d++) {
543
+ dI = dd[d];
544
+
545
+ re += Ext.isDate(dI) ? '^' + Ext.String.escapeRegex(Ext.Date.dateFormat(dI, me.format)) + '$' : dI;
546
+ if (d != len) {
547
+ re += '|';
548
+ }
549
+ }
550
+
551
+ me.disabledDatesRE = new RegExp(re + ')');
552
+ }
553
+ },
554
+
555
+ /**
556
+ * Replaces any existing disabled dates with new values and refreshes the DatePicker.
557
+ * @param {String[]/RegExp} disabledDates An array of date strings (see the {@link #disabledDates} config for
558
+ * details on supported values), or a JavaScript regular expression used to disable a pattern of dates.
559
+ * @return {Ext.picker.Date} this
560
+ */
561
+ setDisabledDates : function(dd){
562
+ var me = this;
563
+
564
+ if(Ext.isArray(dd)){
565
+ me.disabledDates = dd;
566
+ me.disabledDatesRE = null;
567
+ }else{
568
+ me.disabledDatesRE = dd;
569
+ }
570
+ me.initDisabledDays();
571
+ me.update(me.value, true);
572
+ return me;
573
+ },
574
+
575
+ /**
576
+ * Replaces any existing disabled days (by index, 0-6) with new values and refreshes the DatePicker.
577
+ * @param {Number[]} disabledDays An array of disabled day indexes. See the {@link #disabledDays} config for details
578
+ * on supported values.
579
+ * @return {Ext.picker.Date} this
580
+ */
581
+ setDisabledDays : function(dd){
582
+ this.disabledDays = dd;
583
+ return this.update(this.value, true);
584
+ },
585
+
586
+ /**
587
+ * Replaces any existing {@link #minDate} with the new value and refreshes the DatePicker.
588
+ * @param {Date} value The minimum date that can be selected
589
+ * @return {Ext.picker.Date} this
590
+ */
591
+ setMinDate : function(dt){
592
+ this.minDate = dt;
593
+ return this.update(this.value, true);
594
+ },
595
+
596
+ /**
597
+ * Replaces any existing {@link #maxDate} with the new value and refreshes the DatePicker.
598
+ * @param {Date} value The maximum date that can be selected
599
+ * @return {Ext.picker.Date} this
600
+ */
601
+ setMaxDate : function(dt){
602
+ this.maxDate = dt;
603
+ return this.update(this.value, true);
604
+ },
605
+
606
+ /**
607
+ * Sets the value of the date field
608
+ * @param {Date} value The date to set
609
+ * @return {Ext.picker.Date} this
610
+ */
611
+ setValue : function(value){
612
+ this.value = Ext.Date.clearTime(value, true);
613
+ return this.update(this.value);
614
+ },
615
+
616
+ /**
617
+ * Gets the current selected value of the date field
618
+ * @return {Date} The selected date
619
+ */
620
+ getValue : function(){
621
+ return this.value;
622
+ },
623
+
624
+ //<locale type="function">
625
+ /**
626
+ * Gets a single character to represent the day of the week
627
+ * @return {String} The character
628
+ */
629
+ getDayInitial: function(value){
630
+ return value.substr(0,1);
631
+ },
632
+ //</locale>
633
+
634
+ // private
635
+ focus : function(){
636
+ this.update(this.activeDate);
637
+ },
638
+
639
+ // private, inherit docs
640
+ onEnable: function(){
641
+ this.callParent();
642
+ this.setDisabledStatus(false);
643
+ this.update(this.activeDate);
644
+
645
+ },
646
+
647
+ // private, inherit docs
648
+ onDisable : function(){
649
+ this.callParent();
650
+ this.setDisabledStatus(true);
651
+ },
652
+
653
+ /**
654
+ * Set the disabled state of various internal components
655
+ * @private
656
+ * @param {Boolean} disabled
657
+ */
658
+ setDisabledStatus : function(disabled){
659
+ var me = this;
660
+
661
+ me.keyNav.setDisabled(disabled);
662
+ me.prevRepeater.setDisabled(disabled);
663
+ me.nextRepeater.setDisabled(disabled);
664
+ if (me.showToday) {
665
+ me.todayKeyListener.setDisabled(disabled);
666
+ me.todayBtn.setDisabled(disabled);
667
+ }
668
+ },
669
+
670
+ /**
671
+ * Get the current active date.
672
+ * @private
673
+ * @return {Date} The active date
674
+ */
675
+ getActive: function(){
676
+ return this.activeDate || this.value;
677
+ },
678
+
679
+ /**
680
+ * Run any animation required to hide/show the month picker.
681
+ * @private
682
+ * @param {Boolean} isHide True if it's a hide operation
683
+ */
684
+ runAnimation: function(isHide){
685
+ var picker = this.monthPicker,
686
+ options = {
687
+ duration: 200,
688
+ callback: function(){
689
+ if (isHide) {
690
+ picker.hide();
691
+ } else {
692
+ picker.show();
693
+ }
694
+ }
695
+ };
696
+
697
+ if (isHide) {
698
+ picker.el.slideOut('t', options);
699
+ } else {
700
+ picker.el.slideIn('t', options);
701
+ }
702
+ },
703
+
704
+ /**
705
+ * Hides the month picker, if it's visible.
706
+ * @param {Boolean} [animate] Indicates whether to animate this action. If the animate
707
+ * parameter is not specified, the behavior will use {@link #disableAnim} to determine
708
+ * whether to animate or not.
709
+ * @return {Ext.picker.Date} this
710
+ */
711
+ hideMonthPicker : function(animate){
712
+ var me = this,
713
+ picker = me.monthPicker;
714
+
715
+ if (picker) {
716
+ if (me.shouldAnimate(animate)) {
717
+ me.runAnimation(true);
718
+ } else {
719
+ picker.hide();
720
+ }
721
+ }
722
+ return me;
723
+ },
724
+
725
+ /**
726
+ * Show the month picker
727
+ * @param {Boolean} [animate] Indicates whether to animate this action. If the animate
728
+ * parameter is not specified, the behavior will use {@link #disableAnim} to determine
729
+ * whether to animate or not.
730
+ * @return {Ext.picker.Date} this
731
+ */
732
+ showMonthPicker : function(animate){
733
+ var me = this,
734
+ picker;
735
+
736
+ if (me.rendered && !me.disabled) {
737
+ picker = me.createMonthPicker();
738
+ picker.setValue(me.getActive());
739
+ picker.setSize(me.getSize());
740
+ picker.setPosition(-1, -1);
741
+ if (me.shouldAnimate(animate)) {
742
+ me.runAnimation(false);
743
+ } else {
744
+ picker.show();
745
+ }
746
+ }
747
+ return me;
748
+ },
749
+
750
+ /**
751
+ * Checks whether a hide/show action should animate
752
+ * @private
753
+ * @param {Boolean} [animate] A possible animation value
754
+ * @return {Boolean} Whether to animate the action
755
+ */
756
+ shouldAnimate: function(animate){
757
+ return Ext.isDefined(animate) ? animate : !this.disableAnim;
758
+ },
759
+
760
+ /**
761
+ * Create the month picker instance
762
+ * @private
763
+ * @return {Ext.picker.Month} picker
764
+ */
765
+ createMonthPicker: function(){
766
+ var me = this,
767
+ picker = me.monthPicker;
768
+
769
+ if (!picker) {
770
+ me.monthPicker = picker = new Ext.picker.Month({
771
+ renderTo: me.el,
772
+ floating: true,
773
+ shadow: false,
774
+ small: me.showToday === false,
775
+ listeners: {
776
+ scope: me,
777
+ cancelclick: me.onCancelClick,
778
+ okclick: me.onOkClick,
779
+ yeardblclick: me.onOkClick,
780
+ monthdblclick: me.onOkClick
781
+ }
782
+ });
783
+ if (!me.disableAnim) {
784
+ // hide the element if we're animating to prevent an initial flicker
785
+ picker.el.setStyle('display', 'none');
786
+ }
787
+ me.on('beforehide', Ext.Function.bind(me.hideMonthPicker, me, [false]));
788
+ }
789
+ return picker;
790
+ },
791
+
792
+ /**
793
+ * Respond to an ok click on the month picker
794
+ * @private
795
+ */
796
+ onOkClick: function(picker, value){
797
+ var me = this,
798
+ month = value[0],
799
+ year = value[1],
800
+ date = new Date(year, month, me.getActive().getDate());
801
+
802
+ if (date.getMonth() !== month) {
803
+ // 'fix' the JS rolling date conversion if needed
804
+ date = Ext.Date.getLastDateOfMonth(new Date(year, month, 1));
805
+ }
806
+ me.update(date);
807
+ me.hideMonthPicker();
808
+ },
809
+
810
+ /**
811
+ * Respond to a cancel click on the month picker
812
+ * @private
813
+ */
814
+ onCancelClick: function(){
815
+ // update the selected value, also triggers a focus
816
+ this.selectedUpdate(this.activeDate);
817
+ this.hideMonthPicker();
818
+ },
819
+
820
+ /**
821
+ * Show the previous month.
822
+ * @param {Object} e
823
+ * @return {Ext.picker.Date} this
824
+ */
825
+ showPrevMonth : function(e){
826
+ return this.update(Ext.Date.add(this.activeDate, Ext.Date.MONTH, -1));
827
+ },
828
+
829
+ /**
830
+ * Show the next month.
831
+ * @param {Object} e
832
+ * @return {Ext.picker.Date} this
833
+ */
834
+ showNextMonth : function(e){
835
+ return this.update(Ext.Date.add(this.activeDate, Ext.Date.MONTH, 1));
836
+ },
837
+
838
+ /**
839
+ * Show the previous year.
840
+ * @return {Ext.picker.Date} this
841
+ */
842
+ showPrevYear : function(){
843
+ this.update(Ext.Date.add(this.activeDate, Ext.Date.YEAR, -1));
844
+ },
845
+
846
+ /**
847
+ * Show the next year.
848
+ * @return {Ext.picker.Date} this
849
+ */
850
+ showNextYear : function(){
851
+ this.update(Ext.Date.add(this.activeDate, Ext.Date.YEAR, 1));
852
+ },
853
+
854
+ /**
855
+ * Respond to the mouse wheel event
856
+ * @private
857
+ * @param {Ext.EventObject} e
858
+ */
859
+ handleMouseWheel : function(e){
860
+ e.stopEvent();
861
+ if(!this.disabled){
862
+ var delta = e.getWheelDelta();
863
+ if(delta > 0){
864
+ this.showPrevMonth();
865
+ } else if(delta < 0){
866
+ this.showNextMonth();
867
+ }
868
+ }
869
+ },
870
+
871
+ /**
872
+ * Respond to a date being clicked in the picker
873
+ * @private
874
+ * @param {Ext.EventObject} e
875
+ * @param {HTMLElement} t
876
+ */
877
+ handleDateClick : function(e, t){
878
+ var me = this,
879
+ handler = me.handler;
880
+
881
+ e.stopEvent();
882
+ if(!me.disabled && t.dateValue && !Ext.fly(t.parentNode).hasCls(me.disabledCellCls)){
883
+ me.doCancelFocus = me.focusOnSelect === false;
884
+ me.setValue(new Date(t.dateValue));
885
+ delete me.doCancelFocus;
886
+ me.fireEvent('select', me, me.value);
887
+ if (handler) {
888
+ handler.call(me.scope || me, me, me.value);
889
+ }
890
+ // event handling is turned off on hide
891
+ // when we are using the picker in a field
892
+ // therefore onSelect comes AFTER the select
893
+ // event.
894
+ me.onSelect();
895
+ }
896
+ },
897
+
898
+ /**
899
+ * Perform any post-select actions
900
+ * @private
901
+ */
902
+ onSelect: function() {
903
+ if (this.hideOnSelect) {
904
+ this.hide();
905
+ }
906
+ },
907
+
908
+ /**
909
+ * Sets the current value to today.
910
+ * @return {Ext.picker.Date} this
911
+ */
912
+ selectToday : function(){
913
+ var me = this,
914
+ btn = me.todayBtn,
915
+ handler = me.handler;
916
+
917
+ if(btn && !btn.disabled){
918
+ me.setValue(Ext.Date.clearTime(new Date()));
919
+ me.fireEvent('select', me, me.value);
920
+ if (handler) {
921
+ handler.call(me.scope || me, me, me.value);
922
+ }
923
+ me.onSelect();
924
+ }
925
+ return me;
926
+ },
927
+
928
+ /**
929
+ * Update the selected cell
930
+ * @private
931
+ * @param {Date} date The new date
932
+ */
933
+ selectedUpdate: function(date){
934
+ var me = this,
935
+ t = date.getTime(),
936
+ cells = me.cells,
937
+ cls = me.selectedCls,
938
+ cellItems = cells.elements,
939
+ c,
940
+ cLen = cellItems.length,
941
+ cell;
942
+
943
+ cells.removeCls(cls);
944
+
945
+ for (c = 0; c < cLen; c++) {
946
+ cell = Ext.fly(cellItems[c]);
947
+
948
+ if (cell.dom.firstChild.dateValue == t) {
949
+ me.fireEvent('highlightitem', me, cell);
950
+ cell.addCls(cls);
951
+
952
+ if(me.isVisible() && !me.doCancelFocus){
953
+ Ext.fly(cell.dom.firstChild).focus(50);
954
+ }
955
+
956
+ break;
957
+ }
958
+ }
959
+ },
960
+
961
+ /**
962
+ * Update the contents of the picker for a new month
963
+ * @private
964
+ * @param {Date} date The new date
965
+ */
966
+ fullUpdate: function(date){
967
+ var me = this,
968
+ cells = me.cells.elements,
969
+ textNodes = me.textNodes,
970
+ disabledCls = me.disabledCellCls,
971
+ eDate = Ext.Date,
972
+ i = 0,
973
+ extraDays = 0,
974
+ visible = me.isVisible(),
975
+ sel = +eDate.clearTime(date, true),
976
+ today = +eDate.clearTime(new Date()),
977
+ min = me.minDate ? eDate.clearTime(me.minDate, true) : Number.NEGATIVE_INFINITY,
978
+ max = me.maxDate ? eDate.clearTime(me.maxDate, true) : Number.POSITIVE_INFINITY,
979
+ ddMatch = me.disabledDatesRE,
980
+ ddText = me.disabledDatesText,
981
+ ddays = me.disabledDays ? me.disabledDays.join('') : false,
982
+ ddaysText = me.disabledDaysText,
983
+ format = me.format,
984
+ days = eDate.getDaysInMonth(date),
985
+ firstOfMonth = eDate.getFirstDateOfMonth(date),
986
+ startingPos = firstOfMonth.getDay() - me.startDay,
987
+ previousMonth = eDate.add(date, eDate.MONTH, -1),
988
+ longDayFormat = me.longDayFormat,
989
+ prevStart,
990
+ current,
991
+ disableToday,
992
+ tempDate,
993
+ setCellClass,
994
+ html,
995
+ cls,
996
+ formatValue,
997
+ value;
998
+
999
+ if (startingPos < 0) {
1000
+ startingPos += 7;
1001
+ }
1002
+
1003
+ days += startingPos;
1004
+ prevStart = eDate.getDaysInMonth(previousMonth) - startingPos;
1005
+ current = new Date(previousMonth.getFullYear(), previousMonth.getMonth(), prevStart, me.initHour);
1006
+
1007
+ if (me.showToday) {
1008
+ tempDate = eDate.clearTime(new Date());
1009
+ disableToday = (tempDate < min || tempDate > max ||
1010
+ (ddMatch && format && ddMatch.test(eDate.dateFormat(tempDate, format))) ||
1011
+ (ddays && ddays.indexOf(tempDate.getDay()) != -1));
1012
+
1013
+ if (!me.disabled) {
1014
+ me.todayBtn.setDisabled(disableToday);
1015
+ me.todayKeyListener.setDisabled(disableToday);
1016
+ }
1017
+ }
1018
+
1019
+ setCellClass = function(cell){
1020
+ value = +eDate.clearTime(current, true);
1021
+ cell.title = eDate.format(current, longDayFormat);
1022
+ // store dateValue number as an expando
1023
+ cell.firstChild.dateValue = value;
1024
+ if(value == today){
1025
+ cell.className += ' ' + me.todayCls;
1026
+ cell.title = me.todayText;
1027
+ }
1028
+ if(value == sel){
1029
+ cell.className += ' ' + me.selectedCls;
1030
+ me.fireEvent('highlightitem', me, cell);
1031
+ if (visible && me.floating) {
1032
+ Ext.fly(cell.firstChild).focus(50);
1033
+ }
1034
+ }
1035
+ // disabling
1036
+ if(value < min) {
1037
+ cell.className = disabledCls;
1038
+ cell.title = me.minText;
1039
+ return;
1040
+ }
1041
+ if(value > max) {
1042
+ cell.className = disabledCls;
1043
+ cell.title = me.maxText;
1044
+ return;
1045
+ }
1046
+ if(ddays){
1047
+ if(ddays.indexOf(current.getDay()) != -1){
1048
+ cell.title = ddaysText;
1049
+ cell.className = disabledCls;
1050
+ }
1051
+ }
1052
+ if(ddMatch && format){
1053
+ formatValue = eDate.dateFormat(current, format);
1054
+ if(ddMatch.test(formatValue)){
1055
+ cell.title = ddText.replace('%0', formatValue);
1056
+ cell.className = disabledCls;
1057
+ }
1058
+ }
1059
+ };
1060
+
1061
+ for(; i < me.numDays; ++i) {
1062
+ if (i < startingPos) {
1063
+ html = (++prevStart);
1064
+ cls = me.prevCls;
1065
+ } else if (i >= days) {
1066
+ html = (++extraDays);
1067
+ cls = me.nextCls;
1068
+ } else {
1069
+ html = i - startingPos + 1;
1070
+ cls = me.activeCls;
1071
+ }
1072
+ textNodes[i].innerHTML = html;
1073
+ cells[i].className = cls;
1074
+ current.setDate(current.getDate() + 1);
1075
+ setCellClass(cells[i]);
1076
+ }
1077
+
1078
+ me.monthBtn.setText(Ext.Date.format(date, me.monthYearFormat));
1079
+ },
1080
+
1081
+ /**
1082
+ * Update the contents of the picker
1083
+ * @private
1084
+ * @param {Date} date The new date
1085
+ * @param {Boolean} forceRefresh True to force a full refresh
1086
+ */
1087
+ update : function(date, forceRefresh){
1088
+ var me = this,
1089
+ active = me.activeDate;
1090
+
1091
+ if (me.rendered) {
1092
+ me.activeDate = date;
1093
+ if(!forceRefresh && active && me.el && active.getMonth() == date.getMonth() && active.getFullYear() == date.getFullYear()){
1094
+ me.selectedUpdate(date, active);
1095
+ } else {
1096
+ me.fullUpdate(date, active);
1097
+ }
1098
+ me.innerEl.dom.title = Ext.String.format(me.ariaTitle, Ext.Date.format(me.activeDate, me.ariaTitleDateFormat));
1099
+ }
1100
+ return me;
1101
+ },
1102
+
1103
+ // private, inherit docs
1104
+ beforeDestroy : function() {
1105
+ var me = this;
1106
+
1107
+ if (me.rendered) {
1108
+ Ext.destroy(
1109
+ me.todayKeyListener,
1110
+ me.keyNav,
1111
+ me.monthPicker,
1112
+ me.monthBtn,
1113
+ me.nextRepeater,
1114
+ me.prevRepeater,
1115
+ me.todayBtn
1116
+ );
1117
+ delete me.textNodes;
1118
+ delete me.cells.elements;
1119
+ }
1120
+ me.callParent();
1121
+ },
1122
+
1123
+ // private, inherit docs
1124
+ onShow: function() {
1125
+ this.callParent(arguments);
1126
+ if (this.focusOnShow) {
1127
+ this.focus();
1128
+ }
1129
+ }
1130
+ },
1131
+
1132
+ // After dependencies have loaded:
1133
+ function() {
1134
+ var proto = this.prototype,
1135
+ date = Ext.Date;
1136
+
1137
+ proto.monthNames = date.monthNames;
1138
+ proto.dayNames = date.dayNames;
1139
+ proto.format = date.defaultFormat;
1140
+ });