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,175 @@
1
+ /**
2
+ * @class Ext.Number
3
+ *
4
+ * A collection of useful static methods to deal with numbers
5
+ * @singleton
6
+ */
7
+
8
+ Ext.Number = new function() {
9
+
10
+ var me = this,
11
+ isToFixedBroken = (0.9).toFixed() !== '1',
12
+ math = Math;
13
+
14
+ Ext.apply(this, {
15
+ /**
16
+ * Checks whether or not the passed number is within a desired range. If the number is already within the
17
+ * range it is returned, otherwise the min or max value is returned depending on which side of the range is
18
+ * exceeded. Note that this method returns the constrained value but does not change the current number.
19
+ * @param {Number} number The number to check
20
+ * @param {Number} min The minimum number in the range
21
+ * @param {Number} max The maximum number in the range
22
+ * @return {Number} The constrained value if outside the range, otherwise the current value
23
+ */
24
+ constrain: function(number, min, max) {
25
+ var x = parseFloat(number);
26
+
27
+ // Watch out for NaN in Chrome 18
28
+ // V8bug: http://code.google.com/p/v8/issues/detail?id=2056
29
+
30
+ // Operators are faster than Math.min/max. See http://jsperf.com/number-constrain
31
+ // ... and (x < Nan) || (x < undefined) == false
32
+ // ... same for (x > NaN) || (x > undefined)
33
+ // so if min or max are undefined or NaN, we never return them... sadly, this
34
+ // is not true of null (but even Math.max(-1,null)==0 and isNaN(null)==false)
35
+ return (x < min) ? min : ((x > max) ? max : x);
36
+ },
37
+
38
+ /**
39
+ * Snaps the passed number between stopping points based upon a passed increment value.
40
+ *
41
+ * The difference between this and {@link #snapInRange} is that {@link #snapInRange} uses the minValue
42
+ * when calculating snap points:
43
+ *
44
+ * r = Ext.Number.snap(56, 2, 55, 65); // Returns 56 - snap points are zero based
45
+ *
46
+ * r = Ext.Number.snapInRange(56, 2, 55, 65); // Returns 57 - snap points are based from minValue
47
+ *
48
+ * @param {Number} value The unsnapped value.
49
+ * @param {Number} increment The increment by which the value must move.
50
+ * @param {Number} minValue The minimum value to which the returned value must be constrained. Overrides the increment.
51
+ * @param {Number} maxValue The maximum value to which the returned value must be constrained. Overrides the increment.
52
+ * @return {Number} The value of the nearest snap target.
53
+ */
54
+ snap : function(value, increment, minValue, maxValue) {
55
+ var m;
56
+
57
+ // If no value passed, or minValue was passed and value is less than minValue (anything < undefined is false)
58
+ // Then use the minValue (or zero if the value was undefined)
59
+ if (value === undefined || value < minValue) {
60
+ return minValue || 0;
61
+ }
62
+
63
+ if (increment) {
64
+ m = value % increment;
65
+ if (m !== 0) {
66
+ value -= m;
67
+ if (m * 2 >= increment) {
68
+ value += increment;
69
+ } else if (m * 2 < -increment) {
70
+ value -= increment;
71
+ }
72
+ }
73
+ }
74
+ return me.constrain(value, minValue, maxValue);
75
+ },
76
+
77
+ /**
78
+ * Snaps the passed number between stopping points based upon a passed increment value.
79
+ *
80
+ * The difference between this and {@link #snap} is that {@link #snap} does not use the minValue
81
+ * when calculating snap points:
82
+ *
83
+ * r = Ext.Number.snap(56, 2, 55, 65); // Returns 56 - snap points are zero based
84
+ *
85
+ * r = Ext.Number.snapInRange(56, 2, 55, 65); // Returns 57 - snap points are based from minValue
86
+ *
87
+ * @param {Number} value The unsnapped value.
88
+ * @param {Number} increment The increment by which the value must move.
89
+ * @param {Number} [minValue=0] The minimum value to which the returned value must be constrained.
90
+ * @param {Number} [maxValue=Infinity] The maximum value to which the returned value must be constrained.
91
+ * @return {Number} The value of the nearest snap target.
92
+ */
93
+ snapInRange : function(value, increment, minValue, maxValue) {
94
+ var tween;
95
+
96
+ // default minValue to zero
97
+ minValue = (minValue || 0);
98
+
99
+ // If value is undefined, or less than minValue, use minValue
100
+ if (value === undefined || value < minValue) {
101
+ return minValue;
102
+ }
103
+
104
+ // Calculate how many snap points from the minValue the passed value is.
105
+ if (increment && (tween = ((value - minValue) % increment))) {
106
+ value -= tween;
107
+ tween *= 2;
108
+ if (tween >= increment) {
109
+ value += increment;
110
+ }
111
+ }
112
+
113
+ // If constraining within a maximum, ensure the maximum is on a snap point
114
+ if (maxValue !== undefined) {
115
+ if (value > (maxValue = me.snapInRange(maxValue, increment, minValue))) {
116
+ value = maxValue;
117
+ }
118
+ }
119
+
120
+ return value;
121
+ },
122
+
123
+ /**
124
+ * Formats a number using fixed-point notation
125
+ * @param {Number} value The number to format
126
+ * @param {Number} precision The number of digits to show after the decimal point
127
+ */
128
+ toFixed: isToFixedBroken ? function(value, precision) {
129
+ precision = precision || 0;
130
+ var pow = math.pow(10, precision);
131
+ return (math.round(value * pow) / pow).toFixed(precision);
132
+ } : function(value, precision) {
133
+ return value.toFixed(precision);
134
+ },
135
+
136
+ /**
137
+ * Validate that a value is numeric and convert it to a number if necessary. Returns the specified default value if
138
+ * it is not.
139
+
140
+ Ext.Number.from('1.23', 1); // returns 1.23
141
+ Ext.Number.from('abc', 1); // returns 1
142
+
143
+ * @param {Object} value
144
+ * @param {Number} defaultValue The value to return if the original value is non-numeric
145
+ * @return {Number} value, if numeric, defaultValue otherwise
146
+ */
147
+ from: function(value, defaultValue) {
148
+ if (isFinite(value)) {
149
+ value = parseFloat(value);
150
+ }
151
+
152
+ return !isNaN(value) ? value : defaultValue;
153
+ },
154
+
155
+ /**
156
+ * Returns a random integer between the specified range (inclusive)
157
+ * @param {Number} from Lowest value to return.
158
+ * @param {Number} to Highst value to return.
159
+ * @return {Number} A random integer within the specified range.
160
+ */
161
+ randomInt: function (from, to) {
162
+ return math.floor(math.random() * (to - from + 1) + from);
163
+ }
164
+ });
165
+
166
+ /**
167
+ * @deprecated 4.0.0 Please use {@link Ext.Number#from} instead.
168
+ * @member Ext
169
+ * @method num
170
+ * @inheritdoc Ext.Number#from
171
+ */
172
+ Ext.num = function() {
173
+ return me.from.apply(this, arguments);
174
+ };
175
+ };
@@ -0,0 +1,606 @@
1
+ /**
2
+ * @author Jacky Nguyen <jacky@sencha.com>
3
+ * @docauthor Jacky Nguyen <jacky@sencha.com>
4
+ * @class Ext.Object
5
+ *
6
+ * A collection of useful static methods to deal with objects.
7
+ *
8
+ * @singleton
9
+ */
10
+
11
+ (function() {
12
+
13
+ // The "constructor" for chain:
14
+ var TemplateClass = function(){},
15
+ ExtObject = Ext.Object = {
16
+
17
+ /**
18
+ * Returns a new object with the given object as the prototype chain.
19
+ * @param {Object} object The prototype chain for the new object.
20
+ */
21
+ chain: function (object) {
22
+ TemplateClass.prototype = object;
23
+ var result = new TemplateClass();
24
+ TemplateClass.prototype = null;
25
+ return result;
26
+ },
27
+
28
+ /**
29
+ * Converts a `name` - `value` pair to an array of objects with support for nested structures. Useful to construct
30
+ * query strings. For example:
31
+ *
32
+ * var objects = Ext.Object.toQueryObjects('hobbies', ['reading', 'cooking', 'swimming']);
33
+ *
34
+ * // objects then equals:
35
+ * [
36
+ * { name: 'hobbies', value: 'reading' },
37
+ * { name: 'hobbies', value: 'cooking' },
38
+ * { name: 'hobbies', value: 'swimming' },
39
+ * ];
40
+ *
41
+ * var objects = Ext.Object.toQueryObjects('dateOfBirth', {
42
+ * day: 3,
43
+ * month: 8,
44
+ * year: 1987,
45
+ * extra: {
46
+ * hour: 4
47
+ * minute: 30
48
+ * }
49
+ * }, true); // Recursive
50
+ *
51
+ * // objects then equals:
52
+ * [
53
+ * { name: 'dateOfBirth[day]', value: 3 },
54
+ * { name: 'dateOfBirth[month]', value: 8 },
55
+ * { name: 'dateOfBirth[year]', value: 1987 },
56
+ * { name: 'dateOfBirth[extra][hour]', value: 4 },
57
+ * { name: 'dateOfBirth[extra][minute]', value: 30 },
58
+ * ];
59
+ *
60
+ * @param {String} name
61
+ * @param {Object/Array} value
62
+ * @param {Boolean} [recursive=false] True to traverse object recursively
63
+ * @return {Array}
64
+ */
65
+ toQueryObjects: function(name, value, recursive) {
66
+ var self = ExtObject.toQueryObjects,
67
+ objects = [],
68
+ i, ln;
69
+
70
+ if (Ext.isArray(value)) {
71
+ for (i = 0, ln = value.length; i < ln; i++) {
72
+ if (recursive) {
73
+ objects = objects.concat(self(name + '[' + i + ']', value[i], true));
74
+ }
75
+ else {
76
+ objects.push({
77
+ name: name,
78
+ value: value[i]
79
+ });
80
+ }
81
+ }
82
+ }
83
+ else if (Ext.isObject(value)) {
84
+ for (i in value) {
85
+ if (value.hasOwnProperty(i)) {
86
+ if (recursive) {
87
+ objects = objects.concat(self(name + '[' + i + ']', value[i], true));
88
+ }
89
+ else {
90
+ objects.push({
91
+ name: name,
92
+ value: value[i]
93
+ });
94
+ }
95
+ }
96
+ }
97
+ }
98
+ else {
99
+ objects.push({
100
+ name: name,
101
+ value: value
102
+ });
103
+ }
104
+
105
+ return objects;
106
+ },
107
+
108
+ /**
109
+ * Takes an object and converts it to an encoded query string.
110
+ *
111
+ * Non-recursive:
112
+ *
113
+ * Ext.Object.toQueryString({foo: 1, bar: 2}); // returns "foo=1&bar=2"
114
+ * Ext.Object.toQueryString({foo: null, bar: 2}); // returns "foo=&bar=2"
115
+ * Ext.Object.toQueryString({'some price': '$300'}); // returns "some%20price=%24300"
116
+ * Ext.Object.toQueryString({date: new Date(2011, 0, 1)}); // returns "date=%222011-01-01T00%3A00%3A00%22"
117
+ * Ext.Object.toQueryString({colors: ['red', 'green', 'blue']}); // returns "colors=red&colors=green&colors=blue"
118
+ *
119
+ * Recursive:
120
+ *
121
+ * Ext.Object.toQueryString({
122
+ * username: 'Jacky',
123
+ * dateOfBirth: {
124
+ * day: 1,
125
+ * month: 2,
126
+ * year: 1911
127
+ * },
128
+ * hobbies: ['coding', 'eating', 'sleeping', ['nested', 'stuff']]
129
+ * }, true); // returns the following string (broken down and url-decoded for ease of reading purpose):
130
+ * // username=Jacky
131
+ * // &dateOfBirth[day]=1&dateOfBirth[month]=2&dateOfBirth[year]=1911
132
+ * // &hobbies[0]=coding&hobbies[1]=eating&hobbies[2]=sleeping&hobbies[3][0]=nested&hobbies[3][1]=stuff
133
+ *
134
+ * @param {Object} object The object to encode
135
+ * @param {Boolean} [recursive=false] Whether or not to interpret the object in recursive format.
136
+ * (PHP / Ruby on Rails servers and similar).
137
+ * @return {String} queryString
138
+ */
139
+ toQueryString: function(object, recursive) {
140
+ var paramObjects = [],
141
+ params = [],
142
+ i, j, ln, paramObject, value;
143
+
144
+ for (i in object) {
145
+ if (object.hasOwnProperty(i)) {
146
+ paramObjects = paramObjects.concat(ExtObject.toQueryObjects(i, object[i], recursive));
147
+ }
148
+ }
149
+
150
+ for (j = 0, ln = paramObjects.length; j < ln; j++) {
151
+ paramObject = paramObjects[j];
152
+ value = paramObject.value;
153
+
154
+ if (Ext.isEmpty(value)) {
155
+ value = '';
156
+ }
157
+ else if (Ext.isDate(value)) {
158
+ value = Ext.Date.toString(value);
159
+ }
160
+
161
+ params.push(encodeURIComponent(paramObject.name) + '=' + encodeURIComponent(String(value)));
162
+ }
163
+
164
+ return params.join('&');
165
+ },
166
+
167
+ /**
168
+ * Converts a query string back into an object.
169
+ *
170
+ * Non-recursive:
171
+ *
172
+ * Ext.Object.fromQueryString("foo=1&bar=2"); // returns {foo: 1, bar: 2}
173
+ * Ext.Object.fromQueryString("foo=&bar=2"); // returns {foo: null, bar: 2}
174
+ * Ext.Object.fromQueryString("some%20price=%24300"); // returns {'some price': '$300'}
175
+ * Ext.Object.fromQueryString("colors=red&colors=green&colors=blue"); // returns {colors: ['red', 'green', 'blue']}
176
+ *
177
+ * Recursive:
178
+ *
179
+ * Ext.Object.fromQueryString(
180
+ * "username=Jacky&"+
181
+ * "dateOfBirth[day]=1&dateOfBirth[month]=2&dateOfBirth[year]=1911&"+
182
+ * "hobbies[0]=coding&hobbies[1]=eating&hobbies[2]=sleeping&"+
183
+ * "hobbies[3][0]=nested&hobbies[3][1]=stuff", true);
184
+ *
185
+ * // returns
186
+ * {
187
+ * username: 'Jacky',
188
+ * dateOfBirth: {
189
+ * day: '1',
190
+ * month: '2',
191
+ * year: '1911'
192
+ * },
193
+ * hobbies: ['coding', 'eating', 'sleeping', ['nested', 'stuff']]
194
+ * }
195
+ *
196
+ * @param {String} queryString The query string to decode
197
+ * @param {Boolean} [recursive=false] Whether or not to recursively decode the string. This format is supported by
198
+ * PHP / Ruby on Rails servers and similar.
199
+ * @return {Object}
200
+ */
201
+ fromQueryString: function(queryString, recursive) {
202
+ var parts = queryString.replace(/^\?/, '').split('&'),
203
+ object = {},
204
+ temp, components, name, value, i, ln,
205
+ part, j, subLn, matchedKeys, matchedName,
206
+ keys, key, nextKey;
207
+
208
+ for (i = 0, ln = parts.length; i < ln; i++) {
209
+ part = parts[i];
210
+
211
+ if (part.length > 0) {
212
+ components = part.split('=');
213
+ name = decodeURIComponent(components[0]);
214
+ value = (components[1] !== undefined) ? decodeURIComponent(components[1]) : '';
215
+
216
+ if (!recursive) {
217
+ if (object.hasOwnProperty(name)) {
218
+ if (!Ext.isArray(object[name])) {
219
+ object[name] = [object[name]];
220
+ }
221
+
222
+ object[name].push(value);
223
+ }
224
+ else {
225
+ object[name] = value;
226
+ }
227
+ }
228
+ else {
229
+ matchedKeys = name.match(/(\[):?([^\]]*)\]/g);
230
+ matchedName = name.match(/^([^\[]+)/);
231
+
232
+ //<debug error>
233
+ if (!matchedName) {
234
+ throw new Error('[Ext.Object.fromQueryString] Malformed query string given, failed parsing name from "' + part + '"');
235
+ }
236
+ //</debug>
237
+
238
+ name = matchedName[0];
239
+ keys = [];
240
+
241
+ if (matchedKeys === null) {
242
+ object[name] = value;
243
+ continue;
244
+ }
245
+
246
+ for (j = 0, subLn = matchedKeys.length; j < subLn; j++) {
247
+ key = matchedKeys[j];
248
+ key = (key.length === 2) ? '' : key.substring(1, key.length - 1);
249
+ keys.push(key);
250
+ }
251
+
252
+ keys.unshift(name);
253
+
254
+ temp = object;
255
+
256
+ for (j = 0, subLn = keys.length; j < subLn; j++) {
257
+ key = keys[j];
258
+
259
+ if (j === subLn - 1) {
260
+ if (Ext.isArray(temp) && key === '') {
261
+ temp.push(value);
262
+ }
263
+ else {
264
+ temp[key] = value;
265
+ }
266
+ }
267
+ else {
268
+ if (temp[key] === undefined || typeof temp[key] === 'string') {
269
+ nextKey = keys[j+1];
270
+
271
+ temp[key] = (Ext.isNumeric(nextKey) || nextKey === '') ? [] : {};
272
+ }
273
+
274
+ temp = temp[key];
275
+ }
276
+ }
277
+ }
278
+ }
279
+ }
280
+
281
+ return object;
282
+ },
283
+
284
+ /**
285
+ * Iterates through an object and invokes the given callback function for each iteration.
286
+ * The iteration can be stopped by returning `false` in the callback function. For example:
287
+ *
288
+ * var person = {
289
+ * name: 'Jacky'
290
+ * hairColor: 'black'
291
+ * loves: ['food', 'sleeping', 'wife']
292
+ * };
293
+ *
294
+ * Ext.Object.each(person, function(key, value, myself) {
295
+ * console.log(key + ":" + value);
296
+ *
297
+ * if (key === 'hairColor') {
298
+ * return false; // stop the iteration
299
+ * }
300
+ * });
301
+ *
302
+ * @param {Object} object The object to iterate
303
+ * @param {Function} fn The callback function.
304
+ * @param {String} fn.key
305
+ * @param {Object} fn.value
306
+ * @param {Object} fn.object The object itself
307
+ * @param {Object} [scope] The execution scope (`this`) of the callback function
308
+ */
309
+ each: function(object, fn, scope) {
310
+ for (var property in object) {
311
+ if (object.hasOwnProperty(property)) {
312
+ if (fn.call(scope || object, property, object[property], object) === false) {
313
+ return;
314
+ }
315
+ }
316
+ }
317
+ },
318
+
319
+ /**
320
+ * Merges any number of objects recursively without referencing them or their children.
321
+ *
322
+ * var extjs = {
323
+ * companyName: 'Ext JS',
324
+ * products: ['Ext JS', 'Ext GWT', 'Ext Designer'],
325
+ * isSuperCool: true,
326
+ * office: {
327
+ * size: 2000,
328
+ * location: 'Palo Alto',
329
+ * isFun: true
330
+ * }
331
+ * };
332
+ *
333
+ * var newStuff = {
334
+ * companyName: 'Sencha Inc.',
335
+ * products: ['Ext JS', 'Ext GWT', 'Ext Designer', 'Sencha Touch', 'Sencha Animator'],
336
+ * office: {
337
+ * size: 40000,
338
+ * location: 'Redwood City'
339
+ * }
340
+ * };
341
+ *
342
+ * var sencha = Ext.Object.merge(extjs, newStuff);
343
+ *
344
+ * // extjs and sencha then equals to
345
+ * {
346
+ * companyName: 'Sencha Inc.',
347
+ * products: ['Ext JS', 'Ext GWT', 'Ext Designer', 'Sencha Touch', 'Sencha Animator'],
348
+ * isSuperCool: true,
349
+ * office: {
350
+ * size: 40000,
351
+ * location: 'Redwood City',
352
+ * isFun: true
353
+ * }
354
+ * }
355
+ *
356
+ * @param {Object} destination The object into which all subsequent objects are merged.
357
+ * @param {Object...} object Any number of objects to merge into the destination.
358
+ * @return {Object} merged The destination object with all passed objects merged in.
359
+ */
360
+ merge: function(destination) {
361
+ var i = 1,
362
+ ln = arguments.length,
363
+ mergeFn = ExtObject.merge,
364
+ cloneFn = Ext.clone,
365
+ object, key, value, sourceKey;
366
+
367
+ for (; i < ln; i++) {
368
+ object = arguments[i];
369
+
370
+ for (key in object) {
371
+ value = object[key];
372
+ if (value && value.constructor === Object) {
373
+ sourceKey = destination[key];
374
+ if (sourceKey && sourceKey.constructor === Object) {
375
+ mergeFn(sourceKey, value);
376
+ }
377
+ else {
378
+ destination[key] = cloneFn(value);
379
+ }
380
+ }
381
+ else {
382
+ destination[key] = value;
383
+ }
384
+ }
385
+ }
386
+
387
+ return destination;
388
+ },
389
+
390
+ /**
391
+ * @private
392
+ * @param destination
393
+ */
394
+ mergeIf: function(destination) {
395
+ var i = 1,
396
+ ln = arguments.length,
397
+ cloneFn = Ext.clone,
398
+ object, key, value;
399
+
400
+ for (; i < ln; i++) {
401
+ object = arguments[i];
402
+
403
+ for (key in object) {
404
+ if (!(key in destination)) {
405
+ value = object[key];
406
+
407
+ if (value && value.constructor === Object) {
408
+ destination[key] = cloneFn(value);
409
+ }
410
+ else {
411
+ destination[key] = value;
412
+ }
413
+ }
414
+ }
415
+ }
416
+
417
+ return destination;
418
+ },
419
+
420
+ /**
421
+ * Returns the first matching key corresponding to the given value.
422
+ * If no matching value is found, null is returned.
423
+ *
424
+ * var person = {
425
+ * name: 'Jacky',
426
+ * loves: 'food'
427
+ * };
428
+ *
429
+ * alert(Ext.Object.getKey(person, 'food')); // alerts 'loves'
430
+ *
431
+ * @param {Object} object
432
+ * @param {Object} value The value to find
433
+ */
434
+ getKey: function(object, value) {
435
+ for (var property in object) {
436
+ if (object.hasOwnProperty(property) && object[property] === value) {
437
+ return property;
438
+ }
439
+ }
440
+
441
+ return null;
442
+ },
443
+
444
+ /**
445
+ * Gets all values of the given object as an array.
446
+ *
447
+ * var values = Ext.Object.getValues({
448
+ * name: 'Jacky',
449
+ * loves: 'food'
450
+ * }); // ['Jacky', 'food']
451
+ *
452
+ * @param {Object} object
453
+ * @return {Array} An array of values from the object
454
+ */
455
+ getValues: function(object) {
456
+ var values = [],
457
+ property;
458
+
459
+ for (property in object) {
460
+ if (object.hasOwnProperty(property)) {
461
+ values.push(object[property]);
462
+ }
463
+ }
464
+
465
+ return values;
466
+ },
467
+
468
+ /**
469
+ * Gets all keys of the given object as an array.
470
+ *
471
+ * var values = Ext.Object.getKeys({
472
+ * name: 'Jacky',
473
+ * loves: 'food'
474
+ * }); // ['name', 'loves']
475
+ *
476
+ * @param {Object} object
477
+ * @return {String[]} An array of keys from the object
478
+ * @method
479
+ */
480
+ getKeys: (typeof Object.keys == 'function')
481
+ ? function(object){
482
+ if (!object) {
483
+ return [];
484
+ }
485
+ return Object.keys(object);
486
+ }
487
+ : function(object) {
488
+ var keys = [],
489
+ property;
490
+
491
+ for (property in object) {
492
+ if (object.hasOwnProperty(property)) {
493
+ keys.push(property);
494
+ }
495
+ }
496
+
497
+ return keys;
498
+ },
499
+
500
+ /**
501
+ * Gets the total number of this object's own properties
502
+ *
503
+ * var size = Ext.Object.getSize({
504
+ * name: 'Jacky',
505
+ * loves: 'food'
506
+ * }); // size equals 2
507
+ *
508
+ * @param {Object} object
509
+ * @return {Number} size
510
+ */
511
+ getSize: function(object) {
512
+ var size = 0,
513
+ property;
514
+
515
+ for (property in object) {
516
+ if (object.hasOwnProperty(property)) {
517
+ size++;
518
+ }
519
+ }
520
+
521
+ return size;
522
+ },
523
+
524
+ /**
525
+ * @private
526
+ */
527
+ classify: function(object) {
528
+ var prototype = object,
529
+ objectProperties = [],
530
+ propertyClassesMap = {},
531
+ objectClass = function() {
532
+ var i = 0,
533
+ ln = objectProperties.length,
534
+ property;
535
+
536
+ for (; i < ln; i++) {
537
+ property = objectProperties[i];
538
+ this[property] = new propertyClassesMap[property]();
539
+ }
540
+ },
541
+ key, value;
542
+
543
+ for (key in object) {
544
+ if (object.hasOwnProperty(key)) {
545
+ value = object[key];
546
+
547
+ if (value && value.constructor === Object) {
548
+ objectProperties.push(key);
549
+ propertyClassesMap[key] = ExtObject.classify(value);
550
+ }
551
+ }
552
+ }
553
+
554
+ objectClass.prototype = prototype;
555
+
556
+ return objectClass;
557
+ }
558
+ };
559
+
560
+ /**
561
+ * A convenient alias method for {@link Ext.Object#merge}.
562
+ *
563
+ * @member Ext
564
+ * @method merge
565
+ * @inheritdoc Ext.Object#merge
566
+ */
567
+ Ext.merge = Ext.Object.merge;
568
+
569
+ /**
570
+ * @private
571
+ */
572
+ Ext.mergeIf = Ext.Object.mergeIf;
573
+
574
+ /**
575
+ *
576
+ * @member Ext
577
+ * @method urlEncode
578
+ * @inheritdoc Ext.Object#toQueryString
579
+ * @deprecated 4.0.0 Use {@link Ext.Object#toQueryString} instead
580
+ */
581
+ Ext.urlEncode = function() {
582
+ var args = Ext.Array.from(arguments),
583
+ prefix = '';
584
+
585
+ // Support for the old `pre` argument
586
+ if ((typeof args[1] === 'string')) {
587
+ prefix = args[1] + '&';
588
+ args[1] = false;
589
+ }
590
+
591
+ return prefix + ExtObject.toQueryString.apply(ExtObject, args);
592
+ };
593
+
594
+ /**
595
+ * Alias for {@link Ext.Object#fromQueryString}.
596
+ *
597
+ * @member Ext
598
+ * @method urlDecode
599
+ * @inheritdoc Ext.Object#fromQueryString
600
+ * @deprecated 4.0.0 Use {@link Ext.Object#fromQueryString} instead
601
+ */
602
+ Ext.urlDecode = function() {
603
+ return ExtObject.fromQueryString.apply(ExtObject, arguments);
604
+ };
605
+
606
+ }());