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
+ * This class encapsulates a drawn text item as rendered by the Ext.draw package within a Component which can be
3
+ * then used anywhere in an ExtJS application just like any other Component.
4
+ *
5
+ * ## Example usage
6
+ *
7
+ * @example
8
+ * Ext.create('Ext.panel.Panel', {
9
+ * title: 'Panel with VerticalTextItem',
10
+ * width: 300,
11
+ * height: 200,
12
+ * lbar: {
13
+ * layout: {
14
+ * align: 'center'
15
+ * },
16
+ * items: [{
17
+ * xtype: 'text',
18
+ * text: 'Sample VerticalTextItem',
19
+ * degrees: 90
20
+ * }]
21
+ * },
22
+ * renderTo: Ext.getBody()
23
+ * });
24
+ *
25
+ * @constructor
26
+ * Creates a new Text Component
27
+ * @param {Object} text A config object containing a `text` property, a `degrees` property,
28
+ * and, optionally, a `styleSelector` property which specifies a selector which provides CSS rules to
29
+ * give font family, size and color to the drawn text.
30
+ */
31
+ Ext.define('Ext.draw.Text', {
32
+ extend: 'Ext.draw.Component',
33
+ uses: ['Ext.util.CSS'],
34
+ alias: 'widget.text',
35
+
36
+ /**
37
+ * @cfg {String} text
38
+ * The text to display (html tags are <b>not</b> accepted)
39
+ */
40
+ text: '',
41
+
42
+ /**
43
+ * @cfg {String} styleSelector
44
+ * A CSS selector string which matches a style rule in the document stylesheet from which
45
+ * the text's font properties are read.
46
+ *
47
+ * **Drawn** text is not styled by CSS, but by properties set during its construction, so these styles
48
+ * must be programatically read from a stylesheet rule found via a selector at construction time.
49
+ */
50
+
51
+ /**
52
+ * @cfg {Number} degrees
53
+ * The angle by which to initially rotate the text clockwise. Defaults to zero.
54
+ */
55
+
56
+ focusable: false,
57
+ viewBox: false,
58
+ autoSize: true,
59
+ baseCls: Ext.baseCSSPrefix + 'surface ' + Ext.baseCSSPrefix + 'draw-text',
60
+
61
+ initComponent: function() {
62
+ var me = this;
63
+
64
+ me.textConfig = Ext.apply({
65
+ type: 'text',
66
+ text: me.text,
67
+ rotate: {
68
+ degrees: me.degrees || 0
69
+ }
70
+ }, me.textStyle);
71
+ Ext.apply(me.textConfig, me.getStyles(me.styleSelectors || me.styleSelector));
72
+
73
+ // Surface is created from the *initialConfig*, not the current object state,
74
+ // So the generated items must go into the initialConfig
75
+ me.initialConfig.items = [me.textConfig];
76
+ me.callParent(arguments);
77
+ },
78
+
79
+ /**
80
+ * @private
81
+ * Accumulates a style object based upon the styles specified in document stylesheets
82
+ * by an array of CSS selectors
83
+ */
84
+ getStyles: function(selectors) {
85
+ selectors = Ext.Array.from(selectors);
86
+ var i = 0,
87
+ len = selectors.length,
88
+ rule,
89
+ style,
90
+ prop,
91
+ result = {};
92
+
93
+ for (; i < len; i++) {
94
+ // Get the style rule which exactly matches the selector.
95
+ rule = Ext.util.CSS.getRule(selectors[i]);
96
+ if (rule) {
97
+ style = rule.style;
98
+ if (style) {
99
+ Ext.apply(result, {
100
+ 'font-family': style.fontFamily,
101
+ 'font-weight': style.fontWeight,
102
+ 'line-height': style.lineHeight,
103
+ 'font-size': style.fontSize,
104
+ fill: style.color
105
+ });
106
+ }
107
+ }
108
+ }
109
+ return result;
110
+ },
111
+
112
+ /**
113
+ * Sets the clockwise rotation angle relative to the horizontal axis.
114
+ * @param {Number} degrees The clockwise angle (in degrees) from the horizontal axis
115
+ * by which the text should be rotated.
116
+ */
117
+ setAngle: function(degrees) {
118
+ var me = this,
119
+ surface,
120
+ sprite;
121
+
122
+ if (me.rendered) {
123
+ surface = me.surface;
124
+ sprite = surface.items.items[0];
125
+
126
+ me.degrees = degrees;
127
+ sprite.setAttributes({
128
+ rotate: {
129
+ degrees: degrees
130
+ }
131
+ }, true);
132
+ if (me.autoSize || me.viewBox) {
133
+ me.updateLayout();
134
+ }
135
+ } else {
136
+ me.degrees = degrees;
137
+ }
138
+ },
139
+
140
+ /**
141
+ * Updates this item's text.
142
+ * @param {String} t The text to display (html **not** accepted).
143
+ */
144
+ setText: function(text) {
145
+ var me = this,
146
+ surface,
147
+ sprite;
148
+
149
+ if (me.rendered) {
150
+ surface = me.surface;
151
+ sprite = surface.items.items[0];
152
+
153
+ me.text = text || '';
154
+ surface.remove(sprite);
155
+ me.textConfig.type = 'text';
156
+ me.textConfig.text = me.text;
157
+ sprite = surface.add(me.textConfig);
158
+ sprite.setAttributes({
159
+ rotate: {
160
+ degrees: me.degrees
161
+ }
162
+ }, true);
163
+ if (me.autoSize || me.viewBox) {
164
+ me.updateLayout();
165
+ }
166
+ } else {
167
+ me.on({
168
+ render: function() {
169
+ me.setText(text);
170
+ },
171
+ single: true
172
+ });
173
+ }
174
+ }
175
+ });
@@ -0,0 +1,106 @@
1
+ /**
2
+ * @private
3
+ */
4
+ Ext.define('Ext.draw.engine.ImageExporter', {
5
+ singleton: true,
6
+
7
+ statics: (function(){
8
+ var exportTypes = {
9
+ "image/png": 1,
10
+ "image/jpeg": 1
11
+ },
12
+ init = function(config){
13
+
14
+ if(config.hasOwnProperty('width')){
15
+ width = config['width'];
16
+ }
17
+ if(config.hasOwnProperty('height')){
18
+ height = config['height'];
19
+ }
20
+ if(config.hasOwnProperty('type') && exportTypes[config['type']]){
21
+ type = config['type'];
22
+ }else{
23
+ return false;
24
+ }
25
+
26
+ // if all the elements were set up before
27
+ // we don't need to reset their values and reappend them to the form
28
+ if(formEl && svgEl && typeEl && widthEl && heightEl){
29
+ return true;
30
+ }
31
+
32
+ formEl = formEl || Ext.get(document.createElement('form'));
33
+ formEl.set({
34
+ action: 'http://svg.sencha.io',
35
+ method: 'POST'
36
+ });
37
+
38
+ svgEl = svgEl || Ext.get(document.createElement('input'));
39
+ svgEl.set({
40
+ name: 'svg',
41
+ type: 'hidden'
42
+ });
43
+
44
+ typeEl = typeEl || Ext.get(document.createElement('input'));
45
+ typeEl.set({
46
+ name: 'type',
47
+ type: 'hidden'
48
+ });
49
+ widthEl = widthEl || Ext.get(document.createElement('input'));
50
+ widthEl.set({
51
+ name: 'width',
52
+ type: 'hidden'
53
+ });
54
+ heightEl = heightEl || Ext.get(document.createElement('input'));
55
+ heightEl.set({
56
+ name: 'height',
57
+ type: 'hidden'
58
+ });
59
+
60
+ formEl.appendChild(svgEl);
61
+ formEl.appendChild(typeEl);
62
+ formEl.appendChild(widthEl);
63
+ formEl.appendChild(heightEl);
64
+
65
+ Ext.getBody().appendChild(formEl);
66
+
67
+ return true;
68
+ },
69
+ process = function(surface){
70
+
71
+ var svgString = Ext.draw.engine.SvgExporter.self.generate({}, surface);
72
+
73
+ widthEl.set({
74
+ value: width || surface.width
75
+ });
76
+
77
+ heightEl.set({
78
+ value: height || surface.height
79
+ });
80
+
81
+ if(type){
82
+ typeEl.set({
83
+ value: type
84
+ });
85
+ }
86
+ svgEl.set({
87
+ value: svgString
88
+ });
89
+
90
+ formEl.dom.submit();
91
+
92
+ },
93
+ formEl, typeEl, svgEl, widthEl, heightEl, type, width, height;
94
+
95
+ return {
96
+ generate: function(config, surface){
97
+ if(init(config)){
98
+ process(surface);
99
+ }else{
100
+ return false;
101
+ }
102
+ }
103
+ };
104
+ }())
105
+
106
+ });
@@ -0,0 +1,734 @@
1
+ /**
2
+ * @class Ext.draw.engine.Svg
3
+ * Provides specific methods to draw with SVG.
4
+ */
5
+ Ext.define('Ext.draw.engine.Svg', {
6
+
7
+ /* Begin Definitions */
8
+
9
+ extend: 'Ext.draw.Surface',
10
+
11
+ requires: ['Ext.draw.Draw', 'Ext.draw.Sprite', 'Ext.draw.Matrix', 'Ext.Element'],
12
+
13
+ /* End Definitions */
14
+
15
+ engine: 'Svg',
16
+
17
+ trimRe: /^\s+|\s+$/g,
18
+ spacesRe: /\s+/,
19
+ xlink: "http:/" + "/www.w3.org/1999/xlink",
20
+
21
+ translateAttrs: {
22
+ radius: "r",
23
+ radiusX: "rx",
24
+ radiusY: "ry",
25
+ path: "d",
26
+ lineWidth: "stroke-width",
27
+ fillOpacity: "fill-opacity",
28
+ strokeOpacity: "stroke-opacity",
29
+ strokeLinejoin: "stroke-linejoin"
30
+ },
31
+
32
+ parsers: {},
33
+
34
+ minDefaults: {
35
+ circle: {
36
+ cx: 0,
37
+ cy: 0,
38
+ r: 0,
39
+ fill: "none",
40
+ stroke: null,
41
+ "stroke-width": null,
42
+ opacity: null,
43
+ "fill-opacity": null,
44
+ "stroke-opacity": null
45
+ },
46
+ ellipse: {
47
+ cx: 0,
48
+ cy: 0,
49
+ rx: 0,
50
+ ry: 0,
51
+ fill: "none",
52
+ stroke: null,
53
+ "stroke-width": null,
54
+ opacity: null,
55
+ "fill-opacity": null,
56
+ "stroke-opacity": null
57
+ },
58
+ rect: {
59
+ x: 0,
60
+ y: 0,
61
+ width: 0,
62
+ height: 0,
63
+ rx: 0,
64
+ ry: 0,
65
+ fill: "none",
66
+ stroke: null,
67
+ "stroke-width": null,
68
+ opacity: null,
69
+ "fill-opacity": null,
70
+ "stroke-opacity": null
71
+ },
72
+ text: {
73
+ x: 0,
74
+ y: 0,
75
+ "text-anchor": "start",
76
+ "font-family": null,
77
+ "font-size": null,
78
+ "font-weight": null,
79
+ "font-style": null,
80
+ fill: "#000",
81
+ stroke: null,
82
+ "stroke-width": null,
83
+ opacity: null,
84
+ "fill-opacity": null,
85
+ "stroke-opacity": null
86
+ },
87
+ path: {
88
+ d: "M0,0",
89
+ fill: "none",
90
+ stroke: null,
91
+ "stroke-width": null,
92
+ opacity: null,
93
+ "fill-opacity": null,
94
+ "stroke-opacity": null
95
+ },
96
+ image: {
97
+ x: 0,
98
+ y: 0,
99
+ width: 0,
100
+ height: 0,
101
+ preserveAspectRatio: "none",
102
+ opacity: null
103
+ }
104
+ },
105
+
106
+ createSvgElement: function(type, attrs) {
107
+ var el = this.domRef.createElementNS("http:/" + "/www.w3.org/2000/svg", type),
108
+ key;
109
+ if (attrs) {
110
+ for (key in attrs) {
111
+ el.setAttribute(key, String(attrs[key]));
112
+ }
113
+ }
114
+ return el;
115
+ },
116
+
117
+ createSpriteElement: function(sprite) {
118
+ // Create svg element and append to the DOM.
119
+ var el = this.createSvgElement(sprite.type);
120
+ el.id = sprite.id;
121
+ if (el.style) {
122
+ el.style.webkitTapHighlightColor = "rgba(0,0,0,0)";
123
+ }
124
+ sprite.el = Ext.get(el);
125
+ this.applyZIndex(sprite); //performs the insertion
126
+ sprite.matrix = new Ext.draw.Matrix();
127
+ sprite.bbox = {
128
+ plain: 0,
129
+ transform: 0
130
+ };
131
+ this.applyAttrs(sprite);
132
+ this.applyTransformations(sprite);
133
+ sprite.fireEvent("render", sprite);
134
+ return el;
135
+ },
136
+
137
+ getBBoxText: function (sprite) {
138
+ var bbox = {},
139
+ bb, height, width, i, ln, el;
140
+
141
+ if (sprite && sprite.el) {
142
+ el = sprite.el.dom;
143
+ try {
144
+ bbox = el.getBBox();
145
+ return bbox;
146
+ } catch(e) {
147
+ // Firefox 3.0.x plays badly here
148
+ }
149
+ bbox = {x: bbox.x, y: Infinity, width: 0, height: 0};
150
+ ln = el.getNumberOfChars();
151
+ for (i = 0; i < ln; i++) {
152
+ bb = el.getExtentOfChar(i);
153
+ bbox.y = Math.min(bb.y, bbox.y);
154
+ height = bb.y + bb.height - bbox.y;
155
+ bbox.height = Math.max(bbox.height, height);
156
+ width = bb.x + bb.width - bbox.x;
157
+ bbox.width = Math.max(bbox.width, width);
158
+ }
159
+ return bbox;
160
+ }
161
+ },
162
+
163
+ hide: function() {
164
+ Ext.get(this.el).hide();
165
+ },
166
+
167
+ show: function() {
168
+ Ext.get(this.el).show();
169
+ },
170
+
171
+ hidePrim: function(sprite) {
172
+ this.addCls(sprite, Ext.baseCSSPrefix + 'hide-visibility');
173
+ },
174
+
175
+ showPrim: function(sprite) {
176
+ this.removeCls(sprite, Ext.baseCSSPrefix + 'hide-visibility');
177
+ },
178
+
179
+ getDefs: function() {
180
+ return this._defs || (this._defs = this.createSvgElement("defs"));
181
+ },
182
+
183
+ transform: function(sprite, matrixOnly) {
184
+ var me = this,
185
+ matrix = new Ext.draw.Matrix(),
186
+ transforms = sprite.transformations,
187
+ transformsLength = transforms.length,
188
+ i = 0,
189
+ transform, type;
190
+
191
+ for (; i < transformsLength; i++) {
192
+ transform = transforms[i];
193
+ type = transform.type;
194
+ if (type == "translate") {
195
+ matrix.translate(transform.x, transform.y);
196
+ }
197
+ else if (type == "rotate") {
198
+ matrix.rotate(transform.degrees, transform.x, transform.y);
199
+ }
200
+ else if (type == "scale") {
201
+ matrix.scale(transform.x, transform.y, transform.centerX, transform.centerY);
202
+ }
203
+ }
204
+ sprite.matrix = matrix;
205
+ if (!matrixOnly) {
206
+ sprite.el.set({transform: matrix.toSvg()});
207
+ }
208
+ },
209
+
210
+ setSize: function(width, height) {
211
+ var me = this,
212
+ el = me.el;
213
+
214
+ width = +width || me.width;
215
+ height = +height || me.height;
216
+ me.width = width;
217
+ me.height = height;
218
+
219
+ el.setSize(width, height);
220
+ el.set({
221
+ width: width,
222
+ height: height
223
+ });
224
+ me.callParent([width, height]);
225
+ },
226
+
227
+ /**
228
+ * Get the region for the surface's canvas area
229
+ * @returns {Ext.util.Region}
230
+ */
231
+ getRegion: function() {
232
+ // Mozilla requires using the background rect because the svg element returns an
233
+ // incorrect region. Webkit gives no region for the rect and must use the svg element.
234
+ var svgXY = this.el.getXY(),
235
+ rectXY = this.bgRect.getXY(),
236
+ max = Math.max,
237
+ x = max(svgXY[0], rectXY[0]),
238
+ y = max(svgXY[1], rectXY[1]);
239
+ return {
240
+ left: x,
241
+ top: y,
242
+ right: x + this.width,
243
+ bottom: y + this.height
244
+ };
245
+ },
246
+
247
+ onRemove: function(sprite) {
248
+ if (sprite.el) {
249
+ sprite.el.destroy();
250
+ delete sprite.el;
251
+ }
252
+ this.callParent(arguments);
253
+ },
254
+
255
+ setViewBox: function(x, y, width, height) {
256
+ if (isFinite(x) && isFinite(y) && isFinite(width) && isFinite(height)) {
257
+ this.callParent(arguments);
258
+ this.el.dom.setAttribute("viewBox", [x, y, width, height].join(" "));
259
+ }
260
+ },
261
+
262
+ render: function (container) {
263
+ var me = this,
264
+ width,
265
+ height,
266
+ el,
267
+ defs,
268
+ bgRect,
269
+ webkitRect;
270
+ if (!me.el) {
271
+ width = me.width || 0;
272
+ height = me.height || 0;
273
+ el = me.createSvgElement('svg', {
274
+ xmlns: "http:/" + "/www.w3.org/2000/svg",
275
+ version: 1.1,
276
+ width: width,
277
+ height: height
278
+ });
279
+ defs = me.getDefs();
280
+
281
+ // Create a rect that is always the same size as the svg root; this serves 2 purposes:
282
+ // (1) It allows mouse events to be fired over empty areas in Webkit, and (2) we can
283
+ // use it rather than the svg element for retrieving the correct client rect of the
284
+ // surface in Mozilla (see https://bugzilla.mozilla.org/show_bug.cgi?id=530985)
285
+ bgRect = me.createSvgElement("rect", {
286
+ width: "100%",
287
+ height: "100%",
288
+ fill: "#000",
289
+ stroke: "none",
290
+ opacity: 0
291
+ });
292
+
293
+ if (Ext.isSafari3) {
294
+ // Rect that we will show/hide to fix old WebKit bug with rendering issues.
295
+ webkitRect = me.createSvgElement("rect", {
296
+ x: -10,
297
+ y: -10,
298
+ width: "110%",
299
+ height: "110%",
300
+ fill: "none",
301
+ stroke: "#000"
302
+ });
303
+ }
304
+ el.appendChild(defs);
305
+ if (Ext.isSafari3) {
306
+ el.appendChild(webkitRect);
307
+ }
308
+ el.appendChild(bgRect);
309
+ container.appendChild(el);
310
+ me.el = Ext.get(el);
311
+ me.bgRect = Ext.get(bgRect);
312
+ if (Ext.isSafari3) {
313
+ me.webkitRect = Ext.get(webkitRect);
314
+ me.webkitRect.hide();
315
+ }
316
+ me.el.on({
317
+ scope: me,
318
+ mouseup: me.onMouseUp,
319
+ mousedown: me.onMouseDown,
320
+ mouseover: me.onMouseOver,
321
+ mouseout: me.onMouseOut,
322
+ mousemove: me.onMouseMove,
323
+ mouseenter: me.onMouseEnter,
324
+ mouseleave: me.onMouseLeave,
325
+ click: me.onClick,
326
+ dblclick: me.onDblClick
327
+ });
328
+ }
329
+ me.renderAll();
330
+ },
331
+
332
+ // private
333
+ onMouseEnter: function(e) {
334
+ if (this.el.parent().getRegion().contains(e.getPoint())) {
335
+ this.fireEvent('mouseenter', e);
336
+ }
337
+ },
338
+
339
+ // private
340
+ onMouseLeave: function(e) {
341
+ if (!this.el.parent().getRegion().contains(e.getPoint())) {
342
+ this.fireEvent('mouseleave', e);
343
+ }
344
+ },
345
+ // @private - Normalize a delegated single event from the main container to each sprite and sprite group
346
+ processEvent: function(name, e) {
347
+ var target = e.getTarget(),
348
+ surface = this.surface,
349
+ sprite;
350
+
351
+ this.fireEvent(name, e);
352
+ // We wrap text types in a tspan, sprite is the parent.
353
+ if (target.nodeName == "tspan" && target.parentNode) {
354
+ target = target.parentNode;
355
+ }
356
+ sprite = this.items.get(target.id);
357
+ if (sprite) {
358
+ sprite.fireEvent(name, sprite, e);
359
+ }
360
+ },
361
+
362
+ /* @private - Wrap SVG text inside a tspan to allow for line wrapping. In addition this normallizes
363
+ * the baseline for text the vertical middle of the text to be the same as VML.
364
+ */
365
+ tuneText: function (sprite, attrs) {
366
+ var el = sprite.el.dom,
367
+ tspans = [],
368
+ height, tspan, text, i, ln, texts, factor, x;
369
+
370
+ if (attrs.hasOwnProperty("text")) {
371
+ //only create new tspans for text lines if the text has been
372
+ //updated or if it's the first time we're setting the text
373
+ //into the sprite.
374
+
375
+ //get the actual rendered text.
376
+ text = sprite.tspans && Ext.Array.map(sprite.tspans, function(t) { return t.textContent; }).join('');
377
+
378
+ if (!sprite.tspans || attrs.text != text) {
379
+ tspans = this.setText(sprite, attrs.text);
380
+ sprite.tspans = tspans;
381
+ //for all other cases reuse the tspans previously created.
382
+ } else {
383
+ tspans = sprite.tspans || [];
384
+ }
385
+ }
386
+ // Normalize baseline via a DY shift of first tspan. Shift other rows by height * line height (1.2)
387
+ if (tspans.length) {
388
+ height = this.getBBoxText(sprite).height;
389
+ x = sprite.el.dom.getAttribute("x");
390
+ for (i = 0, ln = tspans.length; i < ln; i++) {
391
+ // The text baseline for FireFox 3.0 and 3.5 is different than other SVG implementations
392
+ // so we are going to normalize that here
393
+ factor = (Ext.isFF3_0 || Ext.isFF3_5) ? 2 : 4;
394
+ tspans[i].setAttribute("x", x);
395
+ tspans[i].setAttribute("dy", i ? height * 1.2 : height / factor);
396
+ }
397
+ sprite.dirty = true;
398
+ }
399
+ },
400
+
401
+ setText: function(sprite, textString) {
402
+ var me = this,
403
+ el = sprite.el.dom,
404
+ tspans = [],
405
+ height, tspan, text, i, ln, texts;
406
+
407
+ while (el.firstChild) {
408
+ el.removeChild(el.firstChild);
409
+ }
410
+ // Wrap each row into tspan to emulate rows
411
+ texts = String(textString).split("\n");
412
+ for (i = 0, ln = texts.length; i < ln; i++) {
413
+ text = texts[i];
414
+ if (text) {
415
+ tspan = me.createSvgElement("tspan");
416
+ tspan.appendChild(document.createTextNode(Ext.htmlDecode(text)));
417
+ el.appendChild(tspan);
418
+ tspans[i] = tspan;
419
+ }
420
+ }
421
+ return tspans;
422
+ },
423
+
424
+ renderAll: function() {
425
+ this.items.each(this.renderItem, this);
426
+ },
427
+
428
+ renderItem: function (sprite) {
429
+ if (!this.el) {
430
+ return;
431
+ }
432
+ if (!sprite.el) {
433
+ this.createSpriteElement(sprite);
434
+ }
435
+ if (sprite.zIndexDirty) {
436
+ this.applyZIndex(sprite);
437
+ }
438
+ if (sprite.dirty) {
439
+ this.applyAttrs(sprite);
440
+ if (sprite.dirtyTransform) {
441
+ this.applyTransformations(sprite);
442
+ }
443
+ }
444
+ },
445
+
446
+ redraw: function(sprite) {
447
+ sprite.dirty = sprite.zIndexDirty = true;
448
+ this.renderItem(sprite);
449
+ },
450
+
451
+ applyAttrs: function (sprite) {
452
+ var me = this,
453
+ el = sprite.el,
454
+ group = sprite.group,
455
+ sattr = sprite.attr,
456
+ parsers = me.parsers,
457
+ //Safari does not handle linear gradients correctly in quirksmode
458
+ //ref: https://bugs.webkit.org/show_bug.cgi?id=41952
459
+ //ref: EXTJSIV-1472
460
+ gradientsMap = me.gradientsMap || {},
461
+ safariFix = Ext.isSafari && !Ext.isStrict,
462
+ groups, i, ln, attrs, font, key, style, name, rect;
463
+
464
+ if (group) {
465
+ groups = [].concat(group);
466
+ ln = groups.length;
467
+ for (i = 0; i < ln; i++) {
468
+ group = groups[i];
469
+ me.getGroup(group).add(sprite);
470
+ }
471
+ delete sprite.group;
472
+ }
473
+ attrs = me.scrubAttrs(sprite) || {};
474
+
475
+ // if (sprite.dirtyPath) {
476
+ sprite.bbox.plain = 0;
477
+ sprite.bbox.transform = 0;
478
+ if (sprite.type == "circle" || sprite.type == "ellipse") {
479
+ attrs.cx = attrs.cx || attrs.x;
480
+ attrs.cy = attrs.cy || attrs.y;
481
+ }
482
+ else if (sprite.type == "rect") {
483
+ attrs.rx = attrs.ry = attrs.r;
484
+ }
485
+ else if (sprite.type == "path" && attrs.d) {
486
+ attrs.d = Ext.draw.Draw.pathToString(Ext.draw.Draw.pathToAbsolute(attrs.d));
487
+ }
488
+ sprite.dirtyPath = false;
489
+ // }
490
+ // else {
491
+ // delete attrs.d;
492
+ // }
493
+
494
+ if (attrs['clip-rect']) {
495
+ me.setClip(sprite, attrs);
496
+ delete attrs['clip-rect'];
497
+ }
498
+ if (sprite.type == 'text' && attrs.font && sprite.dirtyFont) {
499
+ el.set({ style: "font: " + attrs.font});
500
+ }
501
+ if (sprite.type == "image") {
502
+ el.dom.setAttributeNS(me.xlink, "href", attrs.src);
503
+ }
504
+ Ext.applyIf(attrs, me.minDefaults[sprite.type]);
505
+
506
+ if (sprite.dirtyHidden) {
507
+ (sattr.hidden) ? me.hidePrim(sprite) : me.showPrim(sprite);
508
+ sprite.dirtyHidden = false;
509
+ }
510
+ for (key in attrs) {
511
+ if (attrs.hasOwnProperty(key) && attrs[key] != null) {
512
+ //Safari does not handle linear gradients correctly in quirksmode
513
+ //ref: https://bugs.webkit.org/show_bug.cgi?id=41952
514
+ //ref: EXTJSIV-1472
515
+ //if we're Safari in QuirksMode and we're applying some color attribute and the value of that
516
+ //attribute is a reference to a gradient then assign a plain color to that value instead of the gradient.
517
+ if (safariFix && ('color|stroke|fill'.indexOf(key) > -1) && (attrs[key] in gradientsMap)) {
518
+ attrs[key] = gradientsMap[attrs[key]];
519
+ }
520
+ //hidden is not a proper SVG attribute.
521
+ if (key == 'hidden' && sprite.type == 'text') {
522
+ continue;
523
+ }
524
+ if (key in parsers) {
525
+ el.dom.setAttribute(key, parsers[key](attrs[key], sprite, me));
526
+ } else {
527
+ el.dom.setAttribute(key, attrs[key]);
528
+ }
529
+ }
530
+ }
531
+
532
+ if (sprite.type == 'text') {
533
+ me.tuneText(sprite, attrs);
534
+ }
535
+ sprite.dirtyFont = false;
536
+
537
+ //set styles
538
+ style = sattr.style;
539
+ if (style) {
540
+ el.setStyle(style);
541
+ }
542
+
543
+ sprite.dirty = false;
544
+
545
+ if (Ext.isSafari3) {
546
+ // Refreshing the view to fix bug EXTJSIV-1: rendering issue in old Safari 3
547
+ me.webkitRect.show();
548
+ setTimeout(function () {
549
+ me.webkitRect.hide();
550
+ });
551
+ }
552
+ },
553
+
554
+ setClip: function(sprite, params) {
555
+ var me = this,
556
+ rect = params["clip-rect"],
557
+ clipEl, clipPath;
558
+ if (rect) {
559
+ if (sprite.clip) {
560
+ sprite.clip.parentNode.parentNode.removeChild(sprite.clip.parentNode);
561
+ }
562
+ clipEl = me.createSvgElement('clipPath');
563
+ clipPath = me.createSvgElement('rect');
564
+ clipEl.id = Ext.id(null, 'ext-clip-');
565
+ clipPath.setAttribute("x", rect.x);
566
+ clipPath.setAttribute("y", rect.y);
567
+ clipPath.setAttribute("width", rect.width);
568
+ clipPath.setAttribute("height", rect.height);
569
+ clipEl.appendChild(clipPath);
570
+ me.getDefs().appendChild(clipEl);
571
+ sprite.el.dom.setAttribute("clip-path", "url(#" + clipEl.id + ")");
572
+ sprite.clip = clipPath;
573
+ }
574
+ // if (!attrs[key]) {
575
+ // var clip = Ext.getDoc().dom.getElementById(sprite.el.getAttribute("clip-path").replace(/(^url\(#|\)$)/g, ""));
576
+ // clip && clip.parentNode.removeChild(clip);
577
+ // sprite.el.setAttribute("clip-path", "");
578
+ // delete attrss.clip;
579
+ // }
580
+ },
581
+
582
+ /**
583
+ * Insert or move a given sprite's element to the correct place in the DOM list for its zIndex
584
+ * @param {Ext.draw.Sprite} sprite
585
+ */
586
+ applyZIndex: function(sprite) {
587
+ var me = this,
588
+ items = me.items,
589
+ idx = items.indexOf(sprite),
590
+ el = sprite.el,
591
+ prevEl;
592
+ if (me.el.dom.childNodes[idx + 2] !== el.dom) { //shift by 2 to account for defs and bg rect
593
+ if (idx > 0) {
594
+ // Find the first previous sprite which has its DOM element created already
595
+ do {
596
+ prevEl = items.getAt(--idx).el;
597
+ } while (!prevEl && idx > 0);
598
+ }
599
+ el.insertAfter(prevEl || me.bgRect);
600
+ }
601
+ sprite.zIndexDirty = false;
602
+ },
603
+
604
+ createItem: function (config) {
605
+ var sprite = new Ext.draw.Sprite(config);
606
+ sprite.surface = this;
607
+ return sprite;
608
+ },
609
+
610
+ addGradient: function(gradient) {
611
+ gradient = Ext.draw.Draw.parseGradient(gradient);
612
+ var me = this,
613
+ ln = gradient.stops.length,
614
+ vector = gradient.vector,
615
+ //Safari does not handle linear gradients correctly in quirksmode
616
+ //ref: https://bugs.webkit.org/show_bug.cgi?id=41952
617
+ //ref: EXTJSIV-1472
618
+ usePlain = Ext.isSafari && !Ext.isStrict,
619
+ gradientEl, stop, stopEl, i, gradientsMap;
620
+
621
+ gradientsMap = me.gradientsMap || {};
622
+
623
+ if (!usePlain) {
624
+ if (gradient.type == "linear") {
625
+ gradientEl = me.createSvgElement("linearGradient");
626
+ gradientEl.setAttribute("x1", vector[0]);
627
+ gradientEl.setAttribute("y1", vector[1]);
628
+ gradientEl.setAttribute("x2", vector[2]);
629
+ gradientEl.setAttribute("y2", vector[3]);
630
+ }
631
+ else {
632
+ gradientEl = me.createSvgElement("radialGradient");
633
+ gradientEl.setAttribute("cx", gradient.centerX);
634
+ gradientEl.setAttribute("cy", gradient.centerY);
635
+ gradientEl.setAttribute("r", gradient.radius);
636
+ if (Ext.isNumber(gradient.focalX) && Ext.isNumber(gradient.focalY)) {
637
+ gradientEl.setAttribute("fx", gradient.focalX);
638
+ gradientEl.setAttribute("fy", gradient.focalY);
639
+ }
640
+ }
641
+ gradientEl.id = gradient.id;
642
+ me.getDefs().appendChild(gradientEl);
643
+ for (i = 0; i < ln; i++) {
644
+ stop = gradient.stops[i];
645
+ stopEl = me.createSvgElement("stop");
646
+ stopEl.setAttribute("offset", stop.offset + "%");
647
+ stopEl.setAttribute("stop-color", stop.color);
648
+ stopEl.setAttribute("stop-opacity",stop.opacity);
649
+ gradientEl.appendChild(stopEl);
650
+ }
651
+ } else {
652
+ gradientsMap['url(#' + gradient.id + ')'] = gradient.stops[0].color;
653
+ }
654
+ me.gradientsMap = gradientsMap;
655
+ },
656
+
657
+ /**
658
+ * Checks if the specified CSS class exists on this element's DOM node.
659
+ * @param {String} className The CSS class to check for
660
+ * @return {Boolean} True if the class exists, else false
661
+ */
662
+ hasCls: function(sprite, className) {
663
+ return className && (' ' + (sprite.el.dom.getAttribute('class') || '') + ' ').indexOf(' ' + className + ' ') != -1;
664
+ },
665
+
666
+ addCls: function(sprite, className) {
667
+ var el = sprite.el,
668
+ i,
669
+ len,
670
+ v,
671
+ cls = [],
672
+ curCls = el.getAttribute('class') || '';
673
+ // Separate case is for speed
674
+ if (!Ext.isArray(className)) {
675
+ if (typeof className == 'string' && !this.hasCls(sprite, className)) {
676
+ el.set({ 'class': curCls + ' ' + className });
677
+ }
678
+ }
679
+ else {
680
+ for (i = 0, len = className.length; i < len; i++) {
681
+ v = className[i];
682
+ if (typeof v == 'string' && (' ' + curCls + ' ').indexOf(' ' + v + ' ') == -1) {
683
+ cls.push(v);
684
+ }
685
+ }
686
+ if (cls.length) {
687
+ el.set({ 'class': ' ' + cls.join(' ') });
688
+ }
689
+ }
690
+ },
691
+
692
+ removeCls: function(sprite, className) {
693
+ var me = this,
694
+ el = sprite.el,
695
+ curCls = el.getAttribute('class') || '',
696
+ i, idx, len, cls, elClasses;
697
+ if (!Ext.isArray(className)){
698
+ className = [className];
699
+ }
700
+ if (curCls) {
701
+ elClasses = curCls.replace(me.trimRe, ' ').split(me.spacesRe);
702
+ for (i = 0, len = className.length; i < len; i++) {
703
+ cls = className[i];
704
+ if (typeof cls == 'string') {
705
+ cls = cls.replace(me.trimRe, '');
706
+ idx = Ext.Array.indexOf(elClasses, cls);
707
+ if (idx != -1) {
708
+ Ext.Array.erase(elClasses, idx, 1);
709
+ }
710
+ }
711
+ }
712
+ el.set({ 'class': elClasses.join(' ') });
713
+ }
714
+ },
715
+
716
+ destroy: function() {
717
+ var me = this;
718
+
719
+ me.callParent();
720
+ if (me.el) {
721
+ me.el.remove();
722
+ }
723
+ if (me._defs) {
724
+ Ext.get(me._defs).destroy();
725
+ }
726
+ if (me.bgRect) {
727
+ Ext.get(me.bgRect).destroy();
728
+ }
729
+ if (me.webkitRect) {
730
+ Ext.get(me.webkitRect).destroy();
731
+ }
732
+ delete me.el;
733
+ }
734
+ });