lpmp 1.0.0

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 (636) hide show
  1. data/LICENSE +3 -0
  2. data/README +3 -0
  3. data/Rakefile +45 -0
  4. data/bin/lpmp +107 -0
  5. data/config/help.yaml +1 -0
  6. data/config/hosts.yaml +2 -0
  7. data/config/log.yaml +1 -0
  8. data/config/memcache.yaml +5 -0
  9. data/erb/index.erb +62 -0
  10. data/lib/bg_pull/caichen.rb +199 -0
  11. data/lib/bg_pull/lpmp.rb +45 -0
  12. data/lib/exception.rb +8 -0
  13. data/lib/lpmp.rb +53 -0
  14. data/lib/pull/lpmp.rb +355 -0
  15. data/lib/remote_lmp.rb +129 -0
  16. data/lib/utils.rb +14 -0
  17. data/lib/xq_push/caichen.rb +174 -0
  18. data/lib/xq_push/lpmp.rb +96 -0
  19. data/log/lpmp1st.log +1 -0
  20. data/public/css/ext-portal.css +40 -0
  21. data/public/css/lpmp.css +6 -0
  22. data/public/designer/caichen.epj +1 -0
  23. data/public/designer/hostmonitor.epj +1 -0
  24. data/public/ext-3.0.0/INCLUDE_ORDER.txt +35 -0
  25. data/public/ext-3.0.0/adapter/ext/ext-base-debug.js +3589 -0
  26. data/public/ext-3.0.0/adapter/ext/ext-base.js +7 -0
  27. data/public/ext-3.0.0/adapter/jquery/ext-jquery-adapter-debug.js +2292 -0
  28. data/public/ext-3.0.0/adapter/jquery/ext-jquery-adapter.js +7 -0
  29. data/public/ext-3.0.0/adapter/prototype/ext-prototype-adapter-debug.js +2346 -0
  30. data/public/ext-3.0.0/adapter/prototype/ext-prototype-adapter.js +7 -0
  31. data/public/ext-3.0.0/adapter/yui/ext-yui-adapter-debug.js +2136 -0
  32. data/public/ext-3.0.0/adapter/yui/ext-yui-adapter.js +7 -0
  33. data/public/ext-3.0.0/ext-all-debug.js +65610 -0
  34. data/public/ext-3.0.0/ext-all.js +11 -0
  35. data/public/ext-3.0.0/license.txt +42 -0
  36. data/public/ext-3.0.0/pkgs/cmp-foundation-debug.js +11287 -0
  37. data/public/ext-3.0.0/pkgs/cmp-foundation.js +7 -0
  38. data/public/ext-3.0.0/pkgs/data-foundation-debug.js +3853 -0
  39. data/public/ext-3.0.0/pkgs/data-foundation.js +7 -0
  40. data/public/ext-3.0.0/pkgs/data-grouping-debug.js +139 -0
  41. data/public/ext-3.0.0/pkgs/data-grouping.js +7 -0
  42. data/public/ext-3.0.0/pkgs/data-json-debug.js +582 -0
  43. data/public/ext-3.0.0/pkgs/data-json.js +7 -0
  44. data/public/ext-3.0.0/pkgs/data-list-views-debug.js +1278 -0
  45. data/public/ext-3.0.0/pkgs/data-list-views.js +7 -0
  46. data/public/ext-3.0.0/pkgs/data-xml-debug.js +234 -0
  47. data/public/ext-3.0.0/pkgs/data-xml.js +7 -0
  48. data/public/ext-3.0.0/pkgs/direct-debug.js +1121 -0
  49. data/public/ext-3.0.0/pkgs/direct.js +7 -0
  50. data/public/ext-3.0.0/pkgs/ext-dd-debug.js +4567 -0
  51. data/public/ext-3.0.0/pkgs/ext-dd.js +7 -0
  52. data/public/ext-3.0.0/pkgs/ext-foundation-debug.js +13417 -0
  53. data/public/ext-3.0.0/pkgs/ext-foundation.js +7 -0
  54. data/public/ext-3.0.0/pkgs/pkg-buttons-debug.js +1060 -0
  55. data/public/ext-3.0.0/pkgs/pkg-buttons.js +7 -0
  56. data/public/ext-3.0.0/pkgs/pkg-charts-debug.js +1621 -0
  57. data/public/ext-3.0.0/pkgs/pkg-charts.js +10 -0
  58. data/public/ext-3.0.0/pkgs/pkg-forms-debug.js +7661 -0
  59. data/public/ext-3.0.0/pkgs/pkg-forms.js +7 -0
  60. data/public/ext-3.0.0/pkgs/pkg-grid-editor-debug.js +560 -0
  61. data/public/ext-3.0.0/pkgs/pkg-grid-editor.js +7 -0
  62. data/public/ext-3.0.0/pkgs/pkg-grid-foundation-debug.js +4765 -0
  63. data/public/ext-3.0.0/pkgs/pkg-grid-foundation.js +7 -0
  64. data/public/ext-3.0.0/pkgs/pkg-grid-grouping-debug.js +517 -0
  65. data/public/ext-3.0.0/pkgs/pkg-grid-grouping.js +7 -0
  66. data/public/ext-3.0.0/pkgs/pkg-grid-property-debug.js +370 -0
  67. data/public/ext-3.0.0/pkgs/pkg-grid-property.js +7 -0
  68. data/public/ext-3.0.0/pkgs/pkg-history-debug.js +203 -0
  69. data/public/ext-3.0.0/pkgs/pkg-history.js +7 -0
  70. data/public/ext-3.0.0/pkgs/pkg-menu-debug.js +1628 -0
  71. data/public/ext-3.0.0/pkgs/pkg-menu.js +7 -0
  72. data/public/ext-3.0.0/pkgs/pkg-tabs-debug.js +1100 -0
  73. data/public/ext-3.0.0/pkgs/pkg-tabs.js +7 -0
  74. data/public/ext-3.0.0/pkgs/pkg-tips-debug.js +994 -0
  75. data/public/ext-3.0.0/pkgs/pkg-tips.js +7 -0
  76. data/public/ext-3.0.0/pkgs/pkg-toolbars-debug.js +1374 -0
  77. data/public/ext-3.0.0/pkgs/pkg-toolbars.js +7 -0
  78. data/public/ext-3.0.0/pkgs/pkg-tree-debug.js +4522 -0
  79. data/public/ext-3.0.0/pkgs/pkg-tree.js +7 -0
  80. data/public/ext-3.0.0/pkgs/resizable-debug.js +760 -0
  81. data/public/ext-3.0.0/pkgs/resizable.js +7 -0
  82. data/public/ext-3.0.0/pkgs/state-debug.js +274 -0
  83. data/public/ext-3.0.0/pkgs/state.js +7 -0
  84. data/public/ext-3.0.0/pkgs/window-debug.js +1888 -0
  85. data/public/ext-3.0.0/pkgs/window.js +7 -0
  86. data/public/ext-3.0.0/resources/charts.swf +0 -0
  87. data/public/ext-3.0.0/resources/css/README.txt +3 -0
  88. data/public/ext-3.0.0/resources/css/ext-all-notheme.css +5345 -0
  89. data/public/ext-3.0.0/resources/css/ext-all.css +6990 -0
  90. data/public/ext-3.0.0/resources/css/reset-min.css +7 -0
  91. data/public/ext-3.0.0/resources/css/structure/borders.css +54 -0
  92. data/public/ext-3.0.0/resources/css/structure/box.css +80 -0
  93. data/public/ext-3.0.0/resources/css/structure/button.css +440 -0
  94. data/public/ext-3.0.0/resources/css/structure/combo.css +45 -0
  95. data/public/ext-3.0.0/resources/css/structure/core.css +326 -0
  96. data/public/ext-3.0.0/resources/css/structure/date-picker.css +265 -0
  97. data/public/ext-3.0.0/resources/css/structure/dd.css +61 -0
  98. data/public/ext-3.0.0/resources/css/structure/debug.css +26 -0
  99. data/public/ext-3.0.0/resources/css/structure/dialog.css +62 -0
  100. data/public/ext-3.0.0/resources/css/structure/editor.css +92 -0
  101. data/public/ext-3.0.0/resources/css/structure/form.css +562 -0
  102. data/public/ext-3.0.0/resources/css/structure/grid.css +552 -0
  103. data/public/ext-3.0.0/resources/css/structure/layout.css +296 -0
  104. data/public/ext-3.0.0/resources/css/structure/list-view.css +85 -0
  105. data/public/ext-3.0.0/resources/css/structure/menu.css +205 -0
  106. data/public/ext-3.0.0/resources/css/structure/panel-reset.css +130 -0
  107. data/public/ext-3.0.0/resources/css/structure/panel.css +468 -0
  108. data/public/ext-3.0.0/resources/css/structure/progress.css +42 -0
  109. data/public/ext-3.0.0/resources/css/structure/qtips.css +153 -0
  110. data/public/ext-3.0.0/resources/css/structure/reset.css +7 -0
  111. data/public/ext-3.0.0/resources/css/structure/resizable.css +149 -0
  112. data/public/ext-3.0.0/resources/css/structure/slider.css +103 -0
  113. data/public/ext-3.0.0/resources/css/structure/tabs.css +372 -0
  114. data/public/ext-3.0.0/resources/css/structure/toolbar.css +259 -0
  115. data/public/ext-3.0.0/resources/css/structure/tree.css +203 -0
  116. data/public/ext-3.0.0/resources/css/structure/window.css +222 -0
  117. data/public/ext-3.0.0/resources/css/visual/borders.css +25 -0
  118. data/public/ext-3.0.0/resources/css/visual/box.css +74 -0
  119. data/public/ext-3.0.0/resources/css/visual/button.css +94 -0
  120. data/public/ext-3.0.0/resources/css/visual/combo.css +43 -0
  121. data/public/ext-3.0.0/resources/css/visual/core.css +76 -0
  122. data/public/ext-3.0.0/resources/css/visual/date-picker.css +143 -0
  123. data/public/ext-3.0.0/resources/css/visual/dd.css +29 -0
  124. data/public/ext-3.0.0/resources/css/visual/debug.css +24 -0
  125. data/public/ext-3.0.0/resources/css/visual/dialog.css +34 -0
  126. data/public/ext-3.0.0/resources/css/visual/editor.css +13 -0
  127. data/public/ext-3.0.0/resources/css/visual/form.css +117 -0
  128. data/public/ext-3.0.0/resources/css/visual/grid.css +272 -0
  129. data/public/ext-3.0.0/resources/css/visual/layout.css +53 -0
  130. data/public/ext-3.0.0/resources/css/visual/list-view.css +37 -0
  131. data/public/ext-3.0.0/resources/css/visual/menu.css +82 -0
  132. data/public/ext-3.0.0/resources/css/visual/panel.css +87 -0
  133. data/public/ext-3.0.0/resources/css/visual/progress.css +32 -0
  134. data/public/ext-3.0.0/resources/css/visual/qtips.css +44 -0
  135. data/public/ext-3.0.0/resources/css/visual/resizable.css +43 -0
  136. data/public/ext-3.0.0/resources/css/visual/slider.css +21 -0
  137. data/public/ext-3.0.0/resources/css/visual/tabs.css +119 -0
  138. data/public/ext-3.0.0/resources/css/visual/toolbar.css +103 -0
  139. data/public/ext-3.0.0/resources/css/visual/tree.css +157 -0
  140. data/public/ext-3.0.0/resources/css/visual/window.css +86 -0
  141. data/public/ext-3.0.0/resources/css/xtheme-blue.css +1652 -0
  142. data/public/ext-3.0.0/resources/expressinstall.swf +0 -0
  143. data/public/ext-3.0.0/resources/images/default/box/corners-blue.gif +0 -0
  144. data/public/ext-3.0.0/resources/images/default/box/corners.gif +0 -0
  145. data/public/ext-3.0.0/resources/images/default/box/l-blue.gif +0 -0
  146. data/public/ext-3.0.0/resources/images/default/box/l.gif +0 -0
  147. data/public/ext-3.0.0/resources/images/default/box/r-blue.gif +0 -0
  148. data/public/ext-3.0.0/resources/images/default/box/r.gif +0 -0
  149. data/public/ext-3.0.0/resources/images/default/box/tb-blue.gif +0 -0
  150. data/public/ext-3.0.0/resources/images/default/box/tb.gif +0 -0
  151. data/public/ext-3.0.0/resources/images/default/button/arrow.gif +0 -0
  152. data/public/ext-3.0.0/resources/images/default/button/btn.gif +0 -0
  153. data/public/ext-3.0.0/resources/images/default/button/group-cs.gif +0 -0
  154. data/public/ext-3.0.0/resources/images/default/button/group-lr.gif +0 -0
  155. data/public/ext-3.0.0/resources/images/default/button/group-tb.gif +0 -0
  156. data/public/ext-3.0.0/resources/images/default/button/s-arrow-b-noline.gif +0 -0
  157. data/public/ext-3.0.0/resources/images/default/button/s-arrow-b.gif +0 -0
  158. data/public/ext-3.0.0/resources/images/default/button/s-arrow-bo.gif +0 -0
  159. data/public/ext-3.0.0/resources/images/default/button/s-arrow-noline.gif +0 -0
  160. data/public/ext-3.0.0/resources/images/default/button/s-arrow-o.gif +0 -0
  161. data/public/ext-3.0.0/resources/images/default/button/s-arrow.gif +0 -0
  162. data/public/ext-3.0.0/resources/images/default/dd/drop-add.gif +0 -0
  163. data/public/ext-3.0.0/resources/images/default/dd/drop-no.gif +0 -0
  164. data/public/ext-3.0.0/resources/images/default/dd/drop-yes.gif +0 -0
  165. data/public/ext-3.0.0/resources/images/default/editor/tb-sprite.gif +0 -0
  166. data/public/ext-3.0.0/resources/images/default/form/checkbox.gif +0 -0
  167. data/public/ext-3.0.0/resources/images/default/form/clear-trigger.gif +0 -0
  168. data/public/ext-3.0.0/resources/images/default/form/clear-trigger.psd +0 -0
  169. data/public/ext-3.0.0/resources/images/default/form/date-trigger.gif +0 -0
  170. data/public/ext-3.0.0/resources/images/default/form/date-trigger.psd +0 -0
  171. data/public/ext-3.0.0/resources/images/default/form/error-tip-corners.gif +0 -0
  172. data/public/ext-3.0.0/resources/images/default/form/exclamation.gif +0 -0
  173. data/public/ext-3.0.0/resources/images/default/form/radio.gif +0 -0
  174. data/public/ext-3.0.0/resources/images/default/form/search-trigger.gif +0 -0
  175. data/public/ext-3.0.0/resources/images/default/form/search-trigger.psd +0 -0
  176. data/public/ext-3.0.0/resources/images/default/form/text-bg.gif +0 -0
  177. data/public/ext-3.0.0/resources/images/default/form/trigger-tpl.gif +0 -0
  178. data/public/ext-3.0.0/resources/images/default/form/trigger.gif +0 -0
  179. data/public/ext-3.0.0/resources/images/default/form/trigger.psd +0 -0
  180. data/public/ext-3.0.0/resources/images/default/gradient-bg.gif +0 -0
  181. data/public/ext-3.0.0/resources/images/default/grid/arrow-left-white.gif +0 -0
  182. data/public/ext-3.0.0/resources/images/default/grid/arrow-right-white.gif +0 -0
  183. data/public/ext-3.0.0/resources/images/default/grid/col-move-bottom.gif +0 -0
  184. data/public/ext-3.0.0/resources/images/default/grid/col-move-top.gif +0 -0
  185. data/public/ext-3.0.0/resources/images/default/grid/columns.gif +0 -0
  186. data/public/ext-3.0.0/resources/images/default/grid/dirty.gif +0 -0
  187. data/public/ext-3.0.0/resources/images/default/grid/done.gif +0 -0
  188. data/public/ext-3.0.0/resources/images/default/grid/drop-no.gif +0 -0
  189. data/public/ext-3.0.0/resources/images/default/grid/drop-yes.gif +0 -0
  190. data/public/ext-3.0.0/resources/images/default/grid/footer-bg.gif +0 -0
  191. data/public/ext-3.0.0/resources/images/default/grid/grid-blue-hd.gif +0 -0
  192. data/public/ext-3.0.0/resources/images/default/grid/grid-blue-split.gif +0 -0
  193. data/public/ext-3.0.0/resources/images/default/grid/grid-hrow.gif +0 -0
  194. data/public/ext-3.0.0/resources/images/default/grid/grid-loading.gif +0 -0
  195. data/public/ext-3.0.0/resources/images/default/grid/grid-split.gif +0 -0
  196. data/public/ext-3.0.0/resources/images/default/grid/grid-vista-hd.gif +0 -0
  197. data/public/ext-3.0.0/resources/images/default/grid/grid3-hd-btn.gif +0 -0
  198. data/public/ext-3.0.0/resources/images/default/grid/grid3-hrow-over.gif +0 -0
  199. data/public/ext-3.0.0/resources/images/default/grid/grid3-hrow.gif +0 -0
  200. data/public/ext-3.0.0/resources/images/default/grid/grid3-special-col-bg.gif +0 -0
  201. data/public/ext-3.0.0/resources/images/default/grid/grid3-special-col-sel-bg.gif +0 -0
  202. data/public/ext-3.0.0/resources/images/default/grid/group-by.gif +0 -0
  203. data/public/ext-3.0.0/resources/images/default/grid/group-collapse.gif +0 -0
  204. data/public/ext-3.0.0/resources/images/default/grid/group-expand-sprite.gif +0 -0
  205. data/public/ext-3.0.0/resources/images/default/grid/group-expand.gif +0 -0
  206. data/public/ext-3.0.0/resources/images/default/grid/hd-pop.gif +0 -0
  207. data/public/ext-3.0.0/resources/images/default/grid/hmenu-asc.gif +0 -0
  208. data/public/ext-3.0.0/resources/images/default/grid/hmenu-desc.gif +0 -0
  209. data/public/ext-3.0.0/resources/images/default/grid/hmenu-lock.gif +0 -0
  210. data/public/ext-3.0.0/resources/images/default/grid/hmenu-lock.png +0 -0
  211. data/public/ext-3.0.0/resources/images/default/grid/hmenu-unlock.gif +0 -0
  212. data/public/ext-3.0.0/resources/images/default/grid/hmenu-unlock.png +0 -0
  213. data/public/ext-3.0.0/resources/images/default/grid/invalid_line.gif +0 -0
  214. data/public/ext-3.0.0/resources/images/default/grid/loading.gif +0 -0
  215. data/public/ext-3.0.0/resources/images/default/grid/mso-hd.gif +0 -0
  216. data/public/ext-3.0.0/resources/images/default/grid/nowait.gif +0 -0
  217. data/public/ext-3.0.0/resources/images/default/grid/page-first-disabled.gif +0 -0
  218. data/public/ext-3.0.0/resources/images/default/grid/page-first.gif +0 -0
  219. data/public/ext-3.0.0/resources/images/default/grid/page-last-disabled.gif +0 -0
  220. data/public/ext-3.0.0/resources/images/default/grid/page-last.gif +0 -0
  221. data/public/ext-3.0.0/resources/images/default/grid/page-next-disabled.gif +0 -0
  222. data/public/ext-3.0.0/resources/images/default/grid/page-next.gif +0 -0
  223. data/public/ext-3.0.0/resources/images/default/grid/page-prev-disabled.gif +0 -0
  224. data/public/ext-3.0.0/resources/images/default/grid/page-prev.gif +0 -0
  225. data/public/ext-3.0.0/resources/images/default/grid/pick-button.gif +0 -0
  226. data/public/ext-3.0.0/resources/images/default/grid/refresh.gif +0 -0
  227. data/public/ext-3.0.0/resources/images/default/grid/row-check-sprite.gif +0 -0
  228. data/public/ext-3.0.0/resources/images/default/grid/row-expand-sprite.gif +0 -0
  229. data/public/ext-3.0.0/resources/images/default/grid/row-over.gif +0 -0
  230. data/public/ext-3.0.0/resources/images/default/grid/row-sel.gif +0 -0
  231. data/public/ext-3.0.0/resources/images/default/grid/sort-hd.gif +0 -0
  232. data/public/ext-3.0.0/resources/images/default/grid/sort_asc.gif +0 -0
  233. data/public/ext-3.0.0/resources/images/default/grid/sort_desc.gif +0 -0
  234. data/public/ext-3.0.0/resources/images/default/grid/wait.gif +0 -0
  235. data/public/ext-3.0.0/resources/images/default/layout/collapse.gif +0 -0
  236. data/public/ext-3.0.0/resources/images/default/layout/expand.gif +0 -0
  237. data/public/ext-3.0.0/resources/images/default/layout/gradient-bg.gif +0 -0
  238. data/public/ext-3.0.0/resources/images/default/layout/mini-bottom.gif +0 -0
  239. data/public/ext-3.0.0/resources/images/default/layout/mini-left.gif +0 -0
  240. data/public/ext-3.0.0/resources/images/default/layout/mini-right.gif +0 -0
  241. data/public/ext-3.0.0/resources/images/default/layout/mini-top.gif +0 -0
  242. data/public/ext-3.0.0/resources/images/default/layout/ns-collapse.gif +0 -0
  243. data/public/ext-3.0.0/resources/images/default/layout/ns-expand.gif +0 -0
  244. data/public/ext-3.0.0/resources/images/default/layout/panel-close.gif +0 -0
  245. data/public/ext-3.0.0/resources/images/default/layout/panel-title-bg.gif +0 -0
  246. data/public/ext-3.0.0/resources/images/default/layout/panel-title-light-bg.gif +0 -0
  247. data/public/ext-3.0.0/resources/images/default/layout/stick.gif +0 -0
  248. data/public/ext-3.0.0/resources/images/default/layout/stuck.gif +0 -0
  249. data/public/ext-3.0.0/resources/images/default/layout/tab-close-on.gif +0 -0
  250. data/public/ext-3.0.0/resources/images/default/layout/tab-close.gif +0 -0
  251. data/public/ext-3.0.0/resources/images/default/menu/checked.gif +0 -0
  252. data/public/ext-3.0.0/resources/images/default/menu/group-checked.gif +0 -0
  253. data/public/ext-3.0.0/resources/images/default/menu/item-over.gif +0 -0
  254. data/public/ext-3.0.0/resources/images/default/menu/menu-parent.gif +0 -0
  255. data/public/ext-3.0.0/resources/images/default/menu/menu.gif +0 -0
  256. data/public/ext-3.0.0/resources/images/default/menu/unchecked.gif +0 -0
  257. data/public/ext-3.0.0/resources/images/default/panel/corners-sprite.gif +0 -0
  258. data/public/ext-3.0.0/resources/images/default/panel/left-right.gif +0 -0
  259. data/public/ext-3.0.0/resources/images/default/panel/light-hd.gif +0 -0
  260. data/public/ext-3.0.0/resources/images/default/panel/tool-sprite-tpl.gif +0 -0
  261. data/public/ext-3.0.0/resources/images/default/panel/tool-sprites.gif +0 -0
  262. data/public/ext-3.0.0/resources/images/default/panel/tools-sprites-trans.gif +0 -0
  263. data/public/ext-3.0.0/resources/images/default/panel/top-bottom.gif +0 -0
  264. data/public/ext-3.0.0/resources/images/default/panel/top-bottom.png +0 -0
  265. data/public/ext-3.0.0/resources/images/default/panel/white-corners-sprite.gif +0 -0
  266. data/public/ext-3.0.0/resources/images/default/panel/white-left-right.gif +0 -0
  267. data/public/ext-3.0.0/resources/images/default/panel/white-top-bottom.gif +0 -0
  268. data/public/ext-3.0.0/resources/images/default/progress/progress-bg.gif +0 -0
  269. data/public/ext-3.0.0/resources/images/default/qtip/bg.gif +0 -0
  270. data/public/ext-3.0.0/resources/images/default/qtip/close.gif +0 -0
  271. data/public/ext-3.0.0/resources/images/default/qtip/tip-anchor-sprite.gif +0 -0
  272. data/public/ext-3.0.0/resources/images/default/qtip/tip-sprite.gif +0 -0
  273. data/public/ext-3.0.0/resources/images/default/s.gif +0 -0
  274. data/public/ext-3.0.0/resources/images/default/shadow-c.png +0 -0
  275. data/public/ext-3.0.0/resources/images/default/shadow-lr.png +0 -0
  276. data/public/ext-3.0.0/resources/images/default/shadow.png +0 -0
  277. data/public/ext-3.0.0/resources/images/default/shared/blue-loading.gif +0 -0
  278. data/public/ext-3.0.0/resources/images/default/shared/calendar.gif +0 -0
  279. data/public/ext-3.0.0/resources/images/default/shared/glass-bg.gif +0 -0
  280. data/public/ext-3.0.0/resources/images/default/shared/hd-sprite.gif +0 -0
  281. data/public/ext-3.0.0/resources/images/default/shared/large-loading.gif +0 -0
  282. data/public/ext-3.0.0/resources/images/default/shared/left-btn.gif +0 -0
  283. data/public/ext-3.0.0/resources/images/default/shared/loading-balls.gif +0 -0
  284. data/public/ext-3.0.0/resources/images/default/shared/right-btn.gif +0 -0
  285. data/public/ext-3.0.0/resources/images/default/shared/warning.gif +0 -0
  286. data/public/ext-3.0.0/resources/images/default/sizer/e-handle-dark.gif +0 -0
  287. data/public/ext-3.0.0/resources/images/default/sizer/e-handle.gif +0 -0
  288. data/public/ext-3.0.0/resources/images/default/sizer/ne-handle-dark.gif +0 -0
  289. data/public/ext-3.0.0/resources/images/default/sizer/ne-handle.gif +0 -0
  290. data/public/ext-3.0.0/resources/images/default/sizer/nw-handle-dark.gif +0 -0
  291. data/public/ext-3.0.0/resources/images/default/sizer/nw-handle.gif +0 -0
  292. data/public/ext-3.0.0/resources/images/default/sizer/s-handle-dark.gif +0 -0
  293. data/public/ext-3.0.0/resources/images/default/sizer/s-handle.gif +0 -0
  294. data/public/ext-3.0.0/resources/images/default/sizer/se-handle-dark.gif +0 -0
  295. data/public/ext-3.0.0/resources/images/default/sizer/se-handle.gif +0 -0
  296. data/public/ext-3.0.0/resources/images/default/sizer/square.gif +0 -0
  297. data/public/ext-3.0.0/resources/images/default/sizer/sw-handle-dark.gif +0 -0
  298. data/public/ext-3.0.0/resources/images/default/sizer/sw-handle.gif +0 -0
  299. data/public/ext-3.0.0/resources/images/default/slider/slider-bg.png +0 -0
  300. data/public/ext-3.0.0/resources/images/default/slider/slider-thumb.png +0 -0
  301. data/public/ext-3.0.0/resources/images/default/slider/slider-v-bg.png +0 -0
  302. data/public/ext-3.0.0/resources/images/default/slider/slider-v-thumb.png +0 -0
  303. data/public/ext-3.0.0/resources/images/default/tabs/scroll-left.gif +0 -0
  304. data/public/ext-3.0.0/resources/images/default/tabs/scroll-right.gif +0 -0
  305. data/public/ext-3.0.0/resources/images/default/tabs/scroller-bg.gif +0 -0
  306. data/public/ext-3.0.0/resources/images/default/tabs/tab-btm-inactive-left-bg.gif +0 -0
  307. data/public/ext-3.0.0/resources/images/default/tabs/tab-btm-inactive-right-bg.gif +0 -0
  308. data/public/ext-3.0.0/resources/images/default/tabs/tab-btm-left-bg.gif +0 -0
  309. data/public/ext-3.0.0/resources/images/default/tabs/tab-btm-right-bg.gif +0 -0
  310. data/public/ext-3.0.0/resources/images/default/tabs/tab-close.gif +0 -0
  311. data/public/ext-3.0.0/resources/images/default/tabs/tab-strip-bg.gif +0 -0
  312. data/public/ext-3.0.0/resources/images/default/tabs/tab-strip-bg.png +0 -0
  313. data/public/ext-3.0.0/resources/images/default/tabs/tab-strip-btm-bg.gif +0 -0
  314. data/public/ext-3.0.0/resources/images/default/tabs/tabs-sprite.gif +0 -0
  315. data/public/ext-3.0.0/resources/images/default/toolbar/bg.gif +0 -0
  316. data/public/ext-3.0.0/resources/images/default/toolbar/btn-arrow-light.gif +0 -0
  317. data/public/ext-3.0.0/resources/images/default/toolbar/btn-arrow.gif +0 -0
  318. data/public/ext-3.0.0/resources/images/default/toolbar/btn-over-bg.gif +0 -0
  319. data/public/ext-3.0.0/resources/images/default/toolbar/gray-bg.gif +0 -0
  320. data/public/ext-3.0.0/resources/images/default/toolbar/more.gif +0 -0
  321. data/public/ext-3.0.0/resources/images/default/toolbar/tb-bg.gif +0 -0
  322. data/public/ext-3.0.0/resources/images/default/toolbar/tb-btn-sprite.gif +0 -0
  323. data/public/ext-3.0.0/resources/images/default/toolbar/tb-xl-btn-sprite.gif +0 -0
  324. data/public/ext-3.0.0/resources/images/default/toolbar/tb-xl-sep.gif +0 -0
  325. data/public/ext-3.0.0/resources/images/default/tree/arrows.gif +0 -0
  326. data/public/ext-3.0.0/resources/images/default/tree/drop-add.gif +0 -0
  327. data/public/ext-3.0.0/resources/images/default/tree/drop-between.gif +0 -0
  328. data/public/ext-3.0.0/resources/images/default/tree/drop-no.gif +0 -0
  329. data/public/ext-3.0.0/resources/images/default/tree/drop-over.gif +0 -0
  330. data/public/ext-3.0.0/resources/images/default/tree/drop-under.gif +0 -0
  331. data/public/ext-3.0.0/resources/images/default/tree/drop-yes.gif +0 -0
  332. data/public/ext-3.0.0/resources/images/default/tree/elbow-end-minus-nl.gif +0 -0
  333. data/public/ext-3.0.0/resources/images/default/tree/elbow-end-minus.gif +0 -0
  334. data/public/ext-3.0.0/resources/images/default/tree/elbow-end-plus-nl.gif +0 -0
  335. data/public/ext-3.0.0/resources/images/default/tree/elbow-end-plus.gif +0 -0
  336. data/public/ext-3.0.0/resources/images/default/tree/elbow-end.gif +0 -0
  337. data/public/ext-3.0.0/resources/images/default/tree/elbow-line.gif +0 -0
  338. data/public/ext-3.0.0/resources/images/default/tree/elbow-minus-nl.gif +0 -0
  339. data/public/ext-3.0.0/resources/images/default/tree/elbow-minus.gif +0 -0
  340. data/public/ext-3.0.0/resources/images/default/tree/elbow-plus-nl.gif +0 -0
  341. data/public/ext-3.0.0/resources/images/default/tree/elbow-plus.gif +0 -0
  342. data/public/ext-3.0.0/resources/images/default/tree/elbow.gif +0 -0
  343. data/public/ext-3.0.0/resources/images/default/tree/folder-open.gif +0 -0
  344. data/public/ext-3.0.0/resources/images/default/tree/folder.gif +0 -0
  345. data/public/ext-3.0.0/resources/images/default/tree/leaf.gif +0 -0
  346. data/public/ext-3.0.0/resources/images/default/tree/loading.gif +0 -0
  347. data/public/ext-3.0.0/resources/images/default/tree/s.gif +0 -0
  348. data/public/ext-3.0.0/resources/images/default/window/icon-error.gif +0 -0
  349. data/public/ext-3.0.0/resources/images/default/window/icon-info.gif +0 -0
  350. data/public/ext-3.0.0/resources/images/default/window/icon-question.gif +0 -0
  351. data/public/ext-3.0.0/resources/images/default/window/icon-warning.gif +0 -0
  352. data/public/ext-3.0.0/resources/images/default/window/left-corners.png +0 -0
  353. data/public/ext-3.0.0/resources/images/default/window/left-corners.psd +0 -0
  354. data/public/ext-3.0.0/resources/images/default/window/left-right.png +0 -0
  355. data/public/ext-3.0.0/resources/images/default/window/left-right.psd +0 -0
  356. data/public/ext-3.0.0/resources/images/default/window/right-corners.png +0 -0
  357. data/public/ext-3.0.0/resources/images/default/window/right-corners.psd +0 -0
  358. data/public/ext-3.0.0/resources/images/default/window/top-bottom.png +0 -0
  359. data/public/ext-3.0.0/resources/images/default/window/top-bottom.psd +0 -0
  360. data/public/ext-3.0.0/resources/images/icon/chart.gif +0 -0
  361. data/public/ext-3.0.0/src/adapter/core/ext-base-ajax.js +371 -0
  362. data/public/ext-3.0.0/src/adapter/core/ext-base-anim-extra.js +301 -0
  363. data/public/ext-3.0.0/src/adapter/core/ext-base-anim.js +477 -0
  364. data/public/ext-3.0.0/src/adapter/core/ext-base-begin.js +18 -0
  365. data/public/ext-3.0.0/src/adapter/core/ext-base-dom.js +157 -0
  366. data/public/ext-3.0.0/src/adapter/core/ext-base-end.js +21 -0
  367. data/public/ext-3.0.0/src/adapter/core/ext-base-event.js +453 -0
  368. data/public/ext-3.0.0/src/adapter/core/ext-base-point.js +17 -0
  369. data/public/ext-3.0.0/src/adapter/core/ext-base-region.js +81 -0
  370. data/public/ext-3.0.0/src/adapter/ext-base-dom-more.js +9 -0
  371. data/public/ext-3.0.0/src/adapter/jquery-bridge.js +546 -0
  372. data/public/ext-3.0.0/src/adapter/prototype-bridge.js +600 -0
  373. data/public/ext-3.0.0/src/adapter/yui-bridge.js +390 -0
  374. data/public/ext-3.0.0/src/core/CompositeElement.js +136 -0
  375. data/public/ext-3.0.0/src/core/CompositeElementLite-more.js +102 -0
  376. data/public/ext-3.0.0/src/core/DomHelper-more.js +179 -0
  377. data/public/ext-3.0.0/src/core/Element-more.js +192 -0
  378. data/public/ext-3.0.0/src/core/Element.alignment.js +370 -0
  379. data/public/ext-3.0.0/src/core/Element.dd.js +46 -0
  380. data/public/ext-3.0.0/src/core/Element.fx-more.js +152 -0
  381. data/public/ext-3.0.0/src/core/Element.insertion-more.js +52 -0
  382. data/public/ext-3.0.0/src/core/Element.keys.js +48 -0
  383. data/public/ext-3.0.0/src/core/Element.legacy.js +42 -0
  384. data/public/ext-3.0.0/src/core/Element.position-more.js +165 -0
  385. data/public/ext-3.0.0/src/core/Element.scroll-more.js +110 -0
  386. data/public/ext-3.0.0/src/core/Element.style-more.js +318 -0
  387. data/public/ext-3.0.0/src/core/Error.js +81 -0
  388. data/public/ext-3.0.0/src/core/EventManager-more.js +334 -0
  389. data/public/ext-3.0.0/src/core/Ext-more.js +669 -0
  390. data/public/ext-3.0.0/src/core/Template-more.js +115 -0
  391. data/public/ext-3.0.0/src/core/core/CompositeElementLite.js +197 -0
  392. data/public/ext-3.0.0/src/core/core/DomHelper.js +378 -0
  393. data/public/ext-3.0.0/src/core/core/DomQuery.js +826 -0
  394. data/public/ext-3.0.0/src/core/core/Element.fx.js +324 -0
  395. data/public/ext-3.0.0/src/core/core/Element.insertion.js +147 -0
  396. data/public/ext-3.0.0/src/core/core/Element.js +945 -0
  397. data/public/ext-3.0.0/src/core/core/Element.position.js +303 -0
  398. data/public/ext-3.0.0/src/core/core/Element.scroll.js +58 -0
  399. data/public/ext-3.0.0/src/core/core/Element.style.js +439 -0
  400. data/public/ext-3.0.0/src/core/core/Element.traversal.js +176 -0
  401. data/public/ext-3.0.0/src/core/core/EventManager.js +623 -0
  402. data/public/ext-3.0.0/src/core/core/Ext.js +922 -0
  403. data/public/ext-3.0.0/src/core/core/Fx.js +1115 -0
  404. data/public/ext-3.0.0/src/core/core/Template.js +185 -0
  405. data/public/ext-3.0.0/src/data/Api.js +210 -0
  406. data/public/ext-3.0.0/src/data/ArrayReader.js +102 -0
  407. data/public/ext-3.0.0/src/data/ArrayStore.js +70 -0
  408. data/public/ext-3.0.0/src/data/DataField.js +249 -0
  409. data/public/ext-3.0.0/src/data/DataProxy.js +427 -0
  410. data/public/ext-3.0.0/src/data/DataReader.js +160 -0
  411. data/public/ext-3.0.0/src/data/DataWriter.js +201 -0
  412. data/public/ext-3.0.0/src/data/DirectProxy.js +141 -0
  413. data/public/ext-3.0.0/src/data/DirectStore.js +52 -0
  414. data/public/ext-3.0.0/src/data/GroupingStore.js +139 -0
  415. data/public/ext-3.0.0/src/data/HttpProxy.js +276 -0
  416. data/public/ext-3.0.0/src/data/JsonReader.js +311 -0
  417. data/public/ext-3.0.0/src/data/JsonStore.js +49 -0
  418. data/public/ext-3.0.0/src/data/JsonWriter.js +77 -0
  419. data/public/ext-3.0.0/src/data/MemoryProxy.js +69 -0
  420. data/public/ext-3.0.0/src/data/Record.js +400 -0
  421. data/public/ext-3.0.0/src/data/ScriptTagProxy.js +279 -0
  422. data/public/ext-3.0.0/src/data/SortTypes.js +91 -0
  423. data/public/ext-3.0.0/src/data/Store.js +1492 -0
  424. data/public/ext-3.0.0/src/data/StoreMgr.js +72 -0
  425. data/public/ext-3.0.0/src/data/Tree.js +785 -0
  426. data/public/ext-3.0.0/src/data/XmlReader.js +128 -0
  427. data/public/ext-3.0.0/src/data/XmlStore.js +75 -0
  428. data/public/ext-3.0.0/src/data/XmlWriter.js +45 -0
  429. data/public/ext-3.0.0/src/data/core/Connection.js +575 -0
  430. data/public/ext-3.0.0/src/dd/DDCore.js +2992 -0
  431. data/public/ext-3.0.0/src/dd/DragSource.js +365 -0
  432. data/public/ext-3.0.0/src/dd/DragTracker.js +217 -0
  433. data/public/ext-3.0.0/src/dd/DragZone.js +133 -0
  434. data/public/ext-3.0.0/src/dd/DropTarget.js +115 -0
  435. data/public/ext-3.0.0/src/dd/DropZone.js +262 -0
  436. data/public/ext-3.0.0/src/dd/Registry.js +127 -0
  437. data/public/ext-3.0.0/src/dd/ScrollManager.js +201 -0
  438. data/public/ext-3.0.0/src/dd/StatusProxy.js +171 -0
  439. data/public/ext-3.0.0/src/debug.js +906 -0
  440. data/public/ext-3.0.0/src/direct/Direct.js +235 -0
  441. data/public/ext-3.0.0/src/direct/Event.js +34 -0
  442. data/public/ext-3.0.0/src/direct/JsonProvider.js +45 -0
  443. data/public/ext-3.0.0/src/direct/PollingProvider.js +151 -0
  444. data/public/ext-3.0.0/src/direct/Provider.js +110 -0
  445. data/public/ext-3.0.0/src/direct/RemotingProvider.js +373 -0
  446. data/public/ext-3.0.0/src/direct/Transaction.js +32 -0
  447. data/public/ext-3.0.0/src/locale/ext-lang-af.js +184 -0
  448. data/public/ext-3.0.0/src/locale/ext-lang-bg.js +278 -0
  449. data/public/ext-3.0.0/src/locale/ext-lang-ca.js +315 -0
  450. data/public/ext-3.0.0/src/locale/ext-lang-cs.js +293 -0
  451. data/public/ext-3.0.0/src/locale/ext-lang-da.js +296 -0
  452. data/public/ext-3.0.0/src/locale/ext-lang-de.js +326 -0
  453. data/public/ext-3.0.0/src/locale/ext-lang-el_GR.js +309 -0
  454. data/public/ext-3.0.0/src/locale/ext-lang-en.js +335 -0
  455. data/public/ext-3.0.0/src/locale/ext-lang-en_GB.js +315 -0
  456. data/public/ext-3.0.0/src/locale/ext-lang-es.js +318 -0
  457. data/public/ext-3.0.0/src/locale/ext-lang-fa.js +272 -0
  458. data/public/ext-3.0.0/src/locale/ext-lang-fi.js +302 -0
  459. data/public/ext-3.0.0/src/locale/ext-lang-fr.js +335 -0
  460. data/public/ext-3.0.0/src/locale/ext-lang-fr_CA.js +218 -0
  461. data/public/ext-3.0.0/src/locale/ext-lang-gr.js +175 -0
  462. data/public/ext-3.0.0/src/locale/ext-lang-he.js +292 -0
  463. data/public/ext-3.0.0/src/locale/ext-lang-hr.js +295 -0
  464. data/public/ext-3.0.0/src/locale/ext-lang-hu.js +296 -0
  465. data/public/ext-3.0.0/src/locale/ext-lang-id.js +302 -0
  466. data/public/ext-3.0.0/src/locale/ext-lang-it.js +295 -0
  467. data/public/ext-3.0.0/src/locale/ext-lang-ja.js +318 -0
  468. data/public/ext-3.0.0/src/locale/ext-lang-ko.js +267 -0
  469. data/public/ext-3.0.0/src/locale/ext-lang-lt.js +333 -0
  470. data/public/ext-3.0.0/src/locale/ext-lang-lv.js +176 -0
  471. data/public/ext-3.0.0/src/locale/ext-lang-mk.js +176 -0
  472. data/public/ext-3.0.0/src/locale/ext-lang-nl.js +323 -0
  473. data/public/ext-3.0.0/src/locale/ext-lang-no_NB.js +294 -0
  474. data/public/ext-3.0.0/src/locale/ext-lang-no_NN.js +294 -0
  475. data/public/ext-3.0.0/src/locale/ext-lang-pl.js +304 -0
  476. data/public/ext-3.0.0/src/locale/ext-lang-pt.js +260 -0
  477. data/public/ext-3.0.0/src/locale/ext-lang-pt_BR.js +302 -0
  478. data/public/ext-3.0.0/src/locale/ext-lang-pt_PT.js +298 -0
  479. data/public/ext-3.0.0/src/locale/ext-lang-ro.js +295 -0
  480. data/public/ext-3.0.0/src/locale/ext-lang-ru.js +319 -0
  481. data/public/ext-3.0.0/src/locale/ext-lang-sk.js +182 -0
  482. data/public/ext-3.0.0/src/locale/ext-lang-sl.js +176 -0
  483. data/public/ext-3.0.0/src/locale/ext-lang-sr.js +179 -0
  484. data/public/ext-3.0.0/src/locale/ext-lang-sr_RS.js +178 -0
  485. data/public/ext-3.0.0/src/locale/ext-lang-sv_SE.js +178 -0
  486. data/public/ext-3.0.0/src/locale/ext-lang-th.js +294 -0
  487. data/public/ext-3.0.0/src/locale/ext-lang-tr.js +306 -0
  488. data/public/ext-3.0.0/src/locale/ext-lang-ukr.js +258 -0
  489. data/public/ext-3.0.0/src/locale/ext-lang-vn.js +181 -0
  490. data/public/ext-3.0.0/src/locale/ext-lang-zh_CN.js +174 -0
  491. data/public/ext-3.0.0/src/locale/ext-lang-zh_TW.js +178 -0
  492. data/public/ext-3.0.0/src/state/CookieProvider.js +91 -0
  493. data/public/ext-3.0.0/src/state/Provider.js +127 -0
  494. data/public/ext-3.0.0/src/state/StateManager.js +69 -0
  495. data/public/ext-3.0.0/src/util/CSS.js +161 -0
  496. data/public/ext-3.0.0/src/util/ClickRepeater.js +200 -0
  497. data/public/ext-3.0.0/src/util/Cookies.js +96 -0
  498. data/public/ext-3.0.0/src/util/Date.js +1317 -0
  499. data/public/ext-3.0.0/src/util/Format.js +356 -0
  500. data/public/ext-3.0.0/src/util/History.js +203 -0
  501. data/public/ext-3.0.0/src/util/KeyMap.js +242 -0
  502. data/public/ext-3.0.0/src/util/KeyNav.js +161 -0
  503. data/public/ext-3.0.0/src/util/MixedCollection.js +576 -0
  504. data/public/ext-3.0.0/src/util/Observable-more.js +178 -0
  505. data/public/ext-3.0.0/src/util/TextMetrics.js +131 -0
  506. data/public/ext-3.0.0/src/util/UpdateManager.js +536 -0
  507. data/public/ext-3.0.0/src/util/XTemplate.js +379 -0
  508. data/public/ext-3.0.0/src/util/core/DelayedTask.js +68 -0
  509. data/public/ext-3.0.0/src/util/core/JSON.js +174 -0
  510. data/public/ext-3.0.0/src/util/core/Observable.js +483 -0
  511. data/public/ext-3.0.0/src/util/core/TaskMgr.js +174 -0
  512. data/public/ext-3.0.0/src/widgets/Action.js +252 -0
  513. data/public/ext-3.0.0/src/widgets/BoxComponent.js +519 -0
  514. data/public/ext-3.0.0/src/widgets/Button.js +762 -0
  515. data/public/ext-3.0.0/src/widgets/ButtonGroup.js +103 -0
  516. data/public/ext-3.0.0/src/widgets/ColorPalette.js +148 -0
  517. data/public/ext-3.0.0/src/widgets/Component.js +1540 -0
  518. data/public/ext-3.0.0/src/widgets/ComponentMgr.js +159 -0
  519. data/public/ext-3.0.0/src/widgets/Container.js +894 -0
  520. data/public/ext-3.0.0/src/widgets/CycleButton.js +188 -0
  521. data/public/ext-3.0.0/src/widgets/DataView.js +749 -0
  522. data/public/ext-3.0.0/src/widgets/DatePicker.js +771 -0
  523. data/public/ext-3.0.0/src/widgets/Editor.js +385 -0
  524. data/public/ext-3.0.0/src/widgets/Layer.js +466 -0
  525. data/public/ext-3.0.0/src/widgets/LoadMask.js +123 -0
  526. data/public/ext-3.0.0/src/widgets/MessageBox.js +626 -0
  527. data/public/ext-3.0.0/src/widgets/PagingToolbar.js +502 -0
  528. data/public/ext-3.0.0/src/widgets/Panel.js +1772 -0
  529. data/public/ext-3.0.0/src/widgets/PanelDD.js +154 -0
  530. data/public/ext-3.0.0/src/widgets/ProgressBar.js +289 -0
  531. data/public/ext-3.0.0/src/widgets/Resizable.js +760 -0
  532. data/public/ext-3.0.0/src/widgets/Shadow.js +192 -0
  533. data/public/ext-3.0.0/src/widgets/Slider.js +426 -0
  534. data/public/ext-3.0.0/src/widgets/SplitBar.js +436 -0
  535. data/public/ext-3.0.0/src/widgets/SplitButton.js +124 -0
  536. data/public/ext-3.0.0/src/widgets/TabPanel.js +1100 -0
  537. data/public/ext-3.0.0/src/widgets/Toolbar.js +781 -0
  538. data/public/ext-3.0.0/src/widgets/Viewport.js +124 -0
  539. data/public/ext-3.0.0/src/widgets/Window.js +941 -0
  540. data/public/ext-3.0.0/src/widgets/WindowManager.js +187 -0
  541. data/public/ext-3.0.0/src/widgets/chart/Chart.js +721 -0
  542. data/public/ext-3.0.0/src/widgets/chart/EventProxy.js +20 -0
  543. data/public/ext-3.0.0/src/widgets/chart/FlashComponent.js +117 -0
  544. data/public/ext-3.0.0/src/widgets/chart/swfobject.js +783 -0
  545. data/public/ext-3.0.0/src/widgets/form/Action.js +626 -0
  546. data/public/ext-3.0.0/src/widgets/form/BasicForm.js +735 -0
  547. data/public/ext-3.0.0/src/widgets/form/Checkbox.js +177 -0
  548. data/public/ext-3.0.0/src/widgets/form/CheckboxGroup.js +419 -0
  549. data/public/ext-3.0.0/src/widgets/form/Combo.js +1232 -0
  550. data/public/ext-3.0.0/src/widgets/form/DateField.js +389 -0
  551. data/public/ext-3.0.0/src/widgets/form/DisplayField.js +98 -0
  552. data/public/ext-3.0.0/src/widgets/form/Field.js +640 -0
  553. data/public/ext-3.0.0/src/widgets/form/FieldSet.js +305 -0
  554. data/public/ext-3.0.0/src/widgets/form/Form.js +335 -0
  555. data/public/ext-3.0.0/src/widgets/form/Hidden.js +39 -0
  556. data/public/ext-3.0.0/src/widgets/form/HtmlEditor.js +1179 -0
  557. data/public/ext-3.0.0/src/widgets/form/Label.js +64 -0
  558. data/public/ext-3.0.0/src/widgets/form/NumberField.js +139 -0
  559. data/public/ext-3.0.0/src/widgets/form/Radio.js +81 -0
  560. data/public/ext-3.0.0/src/widgets/form/RadioGroup.js +116 -0
  561. data/public/ext-3.0.0/src/widgets/form/TextArea.js +117 -0
  562. data/public/ext-3.0.0/src/widgets/form/TextField.js +491 -0
  563. data/public/ext-3.0.0/src/widgets/form/TimeField.js +146 -0
  564. data/public/ext-3.0.0/src/widgets/form/TriggerField.js +328 -0
  565. data/public/ext-3.0.0/src/widgets/form/VTypes.js +135 -0
  566. data/public/ext-3.0.0/src/widgets/grid/AbstractSelectionModel.js +57 -0
  567. data/public/ext-3.0.0/src/widgets/grid/CellSelectionModel.js +262 -0
  568. data/public/ext-3.0.0/src/widgets/grid/CheckboxSelectionModel.js +103 -0
  569. data/public/ext-3.0.0/src/widgets/grid/Column.js +406 -0
  570. data/public/ext-3.0.0/src/widgets/grid/ColumnDD.js +199 -0
  571. data/public/ext-3.0.0/src/widgets/grid/ColumnModel.js +592 -0
  572. data/public/ext-3.0.0/src/widgets/grid/ColumnSplitDD.js +62 -0
  573. data/public/ext-3.0.0/src/widgets/grid/EditorGrid.js +291 -0
  574. data/public/ext-3.0.0/src/widgets/grid/GridDD.js +95 -0
  575. data/public/ext-3.0.0/src/widgets/grid/GridEditor.js +21 -0
  576. data/public/ext-3.0.0/src/widgets/grid/GridPanel.js +952 -0
  577. data/public/ext-3.0.0/src/widgets/grid/GridView.js +1776 -0
  578. data/public/ext-3.0.0/src/widgets/grid/GroupingView.js +517 -0
  579. data/public/ext-3.0.0/src/widgets/grid/PropertyGrid.js +370 -0
  580. data/public/ext-3.0.0/src/widgets/grid/RowNumberer.js +61 -0
  581. data/public/ext-3.0.0/src/widgets/grid/RowSelectionModel.js +530 -0
  582. data/public/ext-3.0.0/src/widgets/layout/AbsoluteLayout.js +82 -0
  583. data/public/ext-3.0.0/src/widgets/layout/AccordionLayout.js +177 -0
  584. data/public/ext-3.0.0/src/widgets/layout/AnchorLayout.js +200 -0
  585. data/public/ext-3.0.0/src/widgets/layout/BorderLayout.js +1108 -0
  586. data/public/ext-3.0.0/src/widgets/layout/BoxLayout.js +417 -0
  587. data/public/ext-3.0.0/src/widgets/layout/CardLayout.js +127 -0
  588. data/public/ext-3.0.0/src/widgets/layout/ColumnLayout.js +130 -0
  589. data/public/ext-3.0.0/src/widgets/layout/ContainerLayout.js +215 -0
  590. data/public/ext-3.0.0/src/widgets/layout/FitLayout.js +48 -0
  591. data/public/ext-3.0.0/src/widgets/layout/FormLayout.js +266 -0
  592. data/public/ext-3.0.0/src/widgets/layout/TableLayout.js +194 -0
  593. data/public/ext-3.0.0/src/widgets/list/ColumnResizer.js +123 -0
  594. data/public/ext-3.0.0/src/widgets/list/ListView.js +357 -0
  595. data/public/ext-3.0.0/src/widgets/list/Sorter.js +70 -0
  596. data/public/ext-3.0.0/src/widgets/menu/BaseItem.js +160 -0
  597. data/public/ext-3.0.0/src/widgets/menu/CheckItem.js +114 -0
  598. data/public/ext-3.0.0/src/widgets/menu/ColorMenu.js +72 -0
  599. data/public/ext-3.0.0/src/widgets/menu/DateMenu.js +90 -0
  600. data/public/ext-3.0.0/src/widgets/menu/Item.js +211 -0
  601. data/public/ext-3.0.0/src/widgets/menu/Menu.js +733 -0
  602. data/public/ext-3.0.0/src/widgets/menu/MenuMgr.js +211 -0
  603. data/public/ext-3.0.0/src/widgets/menu/Separator.js +46 -0
  604. data/public/ext-3.0.0/src/widgets/menu/TextItem.js +46 -0
  605. data/public/ext-3.0.0/src/widgets/tips/QuickTip.js +207 -0
  606. data/public/ext-3.0.0/src/widgets/tips/QuickTips.js +159 -0
  607. data/public/ext-3.0.0/src/widgets/tips/Tip.js +157 -0
  608. data/public/ext-3.0.0/src/widgets/tips/ToolTip.js +492 -0
  609. data/public/ext-3.0.0/src/widgets/tree/AsyncTreeNode.js +114 -0
  610. data/public/ext-3.0.0/src/widgets/tree/TreeDragZone.js +82 -0
  611. data/public/ext-3.0.0/src/widgets/tree/TreeDropZone.js +321 -0
  612. data/public/ext-3.0.0/src/widgets/tree/TreeEditor.js +160 -0
  613. data/public/ext-3.0.0/src/widgets/tree/TreeEventModel.js +169 -0
  614. data/public/ext-3.0.0/src/widgets/tree/TreeFilter.js +114 -0
  615. data/public/ext-3.0.0/src/widgets/tree/TreeLoader.js +342 -0
  616. data/public/ext-3.0.0/src/widgets/tree/TreeNode.js +546 -0
  617. data/public/ext-3.0.0/src/widgets/tree/TreeNodeUI.js +633 -0
  618. data/public/ext-3.0.0/src/widgets/tree/TreePanel.js +918 -0
  619. data/public/ext-3.0.0/src/widgets/tree/TreeSelectionModel.js +315 -0
  620. data/public/ext-3.0.0/src/widgets/tree/TreeSorter.js +106 -0
  621. data/public/js/ext-portal.js +235 -0
  622. data/public/js/global.js +7 -0
  623. data/public/js/outerframe.js +47 -0
  624. data/public/js/portal.js +713 -0
  625. data/public/js/test_chart.js +152 -0
  626. data/test/config.rb +62 -0
  627. data/test/config/hosts.yaml +5 -0
  628. data/test/config/log.yaml +1 -0
  629. data/test/config/memcache.yaml +5 -0
  630. data/test/exception.rb +39 -0
  631. data/test/method_missing.rb +14 -0
  632. data/test/module.rb +39 -0
  633. data/test/remote_lmp.rb +126 -0
  634. data/test/sinatra.rb +29 -0
  635. data/test/sinatra_base.rb +16 -0
  636. metadata +690 -0
@@ -0,0 +1,370 @@
1
+ /*!
2
+ * Ext JS Library 3.0.0
3
+ * Copyright(c) 2006-2009 Ext JS, LLC
4
+ * licensing@extjs.com
5
+ * http://www.extjs.com/license
6
+ */
7
+ /**
8
+ * @class Ext.grid.PropertyRecord
9
+ * A specific {@link Ext.data.Record} type that represents a name/value pair and is made to work with the
10
+ * {@link Ext.grid.PropertyGrid}. Typically, PropertyRecords do not need to be created directly as they can be
11
+ * created implicitly by simply using the appropriate data configs either via the {@link Ext.grid.PropertyGrid#source}
12
+ * config property or by calling {@link Ext.grid.PropertyGrid#setSource}. However, if the need arises, these records
13
+ * can also be created explicitly as shwon below. Example usage:
14
+ * <pre><code>
15
+ var rec = new Ext.grid.PropertyRecord({
16
+ name: 'Birthday',
17
+ value: new Date(Date.parse('05/26/1972'))
18
+ });
19
+ // Add record to an already populated grid
20
+ grid.store.addSorted(rec);
21
+ </code></pre>
22
+ * @constructor
23
+ * @param {Object} config A data object in the format: {name: [name], value: [value]}. The specified value's type
24
+ * will be read automatically by the grid to determine the type of editor to use when displaying it.
25
+ */
26
+ Ext.grid.PropertyRecord = Ext.data.Record.create([
27
+ {name:'name',type:'string'}, 'value'
28
+ ]);
29
+
30
+ /**
31
+ * @class Ext.grid.PropertyStore
32
+ * @extends Ext.util.Observable
33
+ * A custom wrapper for the {@link Ext.grid.PropertyGrid}'s {@link Ext.data.Store}. This class handles the mapping
34
+ * between the custom data source objects supported by the grid and the {@link Ext.grid.PropertyRecord} format
35
+ * required for compatibility with the underlying store. Generally this class should not need to be used directly --
36
+ * the grid's data should be accessed from the underlying store via the {@link #store} property.
37
+ * @constructor
38
+ * @param {Ext.grid.Grid} grid The grid this store will be bound to
39
+ * @param {Object} source The source data config object
40
+ */
41
+ Ext.grid.PropertyStore = function(grid, source){
42
+ this.grid = grid;
43
+ this.store = new Ext.data.Store({
44
+ recordType : Ext.grid.PropertyRecord
45
+ });
46
+ this.store.on('update', this.onUpdate, this);
47
+ if(source){
48
+ this.setSource(source);
49
+ }
50
+ Ext.grid.PropertyStore.superclass.constructor.call(this);
51
+ };
52
+ Ext.extend(Ext.grid.PropertyStore, Ext.util.Observable, {
53
+ // protected - should only be called by the grid. Use grid.setSource instead.
54
+ setSource : function(o){
55
+ this.source = o;
56
+ this.store.removeAll();
57
+ var data = [];
58
+ for(var k in o){
59
+ if(this.isEditableValue(o[k])){
60
+ data.push(new Ext.grid.PropertyRecord({name: k, value: o[k]}, k));
61
+ }
62
+ }
63
+ this.store.loadRecords({records: data}, {}, true);
64
+ },
65
+
66
+ // private
67
+ onUpdate : function(ds, record, type){
68
+ if(type == Ext.data.Record.EDIT){
69
+ var v = record.data.value;
70
+ var oldValue = record.modified.value;
71
+ if(this.grid.fireEvent('beforepropertychange', this.source, record.id, v, oldValue) !== false){
72
+ this.source[record.id] = v;
73
+ record.commit();
74
+ this.grid.fireEvent('propertychange', this.source, record.id, v, oldValue);
75
+ }else{
76
+ record.reject();
77
+ }
78
+ }
79
+ },
80
+
81
+ // private
82
+ getProperty : function(row){
83
+ return this.store.getAt(row);
84
+ },
85
+
86
+ // private
87
+ isEditableValue: function(val){
88
+ if(Ext.isDate(val)){
89
+ return true;
90
+ }
91
+ return !(Ext.isObject(val) || Ext.isFunction(val));
92
+ },
93
+
94
+ // private
95
+ setValue : function(prop, value){
96
+ this.source[prop] = value;
97
+ this.store.getById(prop).set('value', value);
98
+ },
99
+
100
+ // protected - should only be called by the grid. Use grid.getSource instead.
101
+ getSource : function(){
102
+ return this.source;
103
+ }
104
+ });
105
+
106
+ /**
107
+ * @class Ext.grid.PropertyColumnModel
108
+ * @extends Ext.grid.ColumnModel
109
+ * A custom column model for the {@link Ext.grid.PropertyGrid}. Generally it should not need to be used directly.
110
+ * @constructor
111
+ * @param {Ext.grid.Grid} grid The grid this store will be bound to
112
+ * @param {Object} source The source data config object
113
+ */
114
+ Ext.grid.PropertyColumnModel = function(grid, store){
115
+ var g = Ext.grid,
116
+ f = Ext.form;
117
+
118
+ this.grid = grid;
119
+ g.PropertyColumnModel.superclass.constructor.call(this, [
120
+ {header: this.nameText, width:50, sortable: true, dataIndex:'name', id: 'name', menuDisabled:true},
121
+ {header: this.valueText, width:50, resizable:false, dataIndex: 'value', id: 'value', menuDisabled:true}
122
+ ]);
123
+ this.store = store;
124
+
125
+ var bfield = new f.Field({
126
+ autoCreate: {tag: 'select', children: [
127
+ {tag: 'option', value: 'true', html: 'true'},
128
+ {tag: 'option', value: 'false', html: 'false'}
129
+ ]},
130
+ getValue : function(){
131
+ return this.el.value == 'true';
132
+ }
133
+ });
134
+ this.editors = {
135
+ 'date' : new g.GridEditor(new f.DateField({selectOnFocus:true})),
136
+ 'string' : new g.GridEditor(new f.TextField({selectOnFocus:true})),
137
+ 'number' : new g.GridEditor(new f.NumberField({selectOnFocus:true, style:'text-align:left;'})),
138
+ 'boolean' : new g.GridEditor(bfield)
139
+ };
140
+ this.renderCellDelegate = this.renderCell.createDelegate(this);
141
+ this.renderPropDelegate = this.renderProp.createDelegate(this);
142
+ };
143
+
144
+ Ext.extend(Ext.grid.PropertyColumnModel, Ext.grid.ColumnModel, {
145
+ // private - strings used for locale support
146
+ nameText : 'Name',
147
+ valueText : 'Value',
148
+ dateFormat : 'm/j/Y',
149
+
150
+ // private
151
+ renderDate : function(dateVal){
152
+ return dateVal.dateFormat(this.dateFormat);
153
+ },
154
+
155
+ // private
156
+ renderBool : function(bVal){
157
+ return bVal ? 'true' : 'false';
158
+ },
159
+
160
+ // private
161
+ isCellEditable : function(colIndex, rowIndex){
162
+ return colIndex == 1;
163
+ },
164
+
165
+ // private
166
+ getRenderer : function(col){
167
+ return col == 1 ?
168
+ this.renderCellDelegate : this.renderPropDelegate;
169
+ },
170
+
171
+ // private
172
+ renderProp : function(v){
173
+ return this.getPropertyName(v);
174
+ },
175
+
176
+ // private
177
+ renderCell : function(val){
178
+ var rv = val;
179
+ if(Ext.isDate(val)){
180
+ rv = this.renderDate(val);
181
+ }else if(typeof val == 'boolean'){
182
+ rv = this.renderBool(val);
183
+ }
184
+ return Ext.util.Format.htmlEncode(rv);
185
+ },
186
+
187
+ // private
188
+ getPropertyName : function(name){
189
+ var pn = this.grid.propertyNames;
190
+ return pn && pn[name] ? pn[name] : name;
191
+ },
192
+
193
+ // private
194
+ getCellEditor : function(colIndex, rowIndex){
195
+ var p = this.store.getProperty(rowIndex),
196
+ n = p.data.name,
197
+ val = p.data.value;
198
+ if(this.grid.customEditors[n]){
199
+ return this.grid.customEditors[n];
200
+ }
201
+ if(Ext.isDate(val)){
202
+ return this.editors.date;
203
+ }else if(typeof val == 'number'){
204
+ return this.editors.number;
205
+ }else if(typeof val == 'boolean'){
206
+ return this.editors['boolean'];
207
+ }else{
208
+ return this.editors.string;
209
+ }
210
+ },
211
+
212
+ // inherit docs
213
+ destroy : function(){
214
+ Ext.grid.PropertyColumnModel.superclass.destroy.call(this);
215
+ for(var ed in this.editors){
216
+ Ext.destroy(ed);
217
+ }
218
+ }
219
+ });
220
+
221
+ /**
222
+ * @class Ext.grid.PropertyGrid
223
+ * @extends Ext.grid.EditorGridPanel
224
+ * A specialized grid implementation intended to mimic the traditional property grid as typically seen in
225
+ * development IDEs. Each row in the grid represents a property of some object, and the data is stored
226
+ * as a set of name/value pairs in {@link Ext.grid.PropertyRecord}s. Example usage:
227
+ * <pre><code>
228
+ var grid = new Ext.grid.PropertyGrid({
229
+ title: 'Properties Grid',
230
+ autoHeight: true,
231
+ width: 300,
232
+ renderTo: 'grid-ct',
233
+ source: {
234
+ "(name)": "My Object",
235
+ "Created": new Date(Date.parse('10/15/2006')),
236
+ "Available": false,
237
+ "Version": .01,
238
+ "Description": "A test object"
239
+ }
240
+ });
241
+ </code></pre>
242
+ * @constructor
243
+ * @param {Object} config The grid config object
244
+ */
245
+ Ext.grid.PropertyGrid = Ext.extend(Ext.grid.EditorGridPanel, {
246
+ /**
247
+ * @cfg {Object} propertyNames An object containing property name/display name pairs.
248
+ * If specified, the display name will be shown in the name column instead of the property name.
249
+ */
250
+ /**
251
+ * @cfg {Object} source A data object to use as the data source of the grid (see {@link #setSource} for details).
252
+ */
253
+ /**
254
+ * @cfg {Object} customEditors An object containing name/value pairs of custom editor type definitions that allow
255
+ * the grid to support additional types of editable fields. By default, the grid supports strongly-typed editing
256
+ * of strings, dates, numbers and booleans using built-in form editors, but any custom type can be supported and
257
+ * associated with a custom input control by specifying a custom editor. The name of the editor
258
+ * type should correspond with the name of the property that will use the editor. Example usage:
259
+ * <pre><code>
260
+ var grid = new Ext.grid.PropertyGrid({
261
+ ...
262
+ customEditors: {
263
+ 'Start Time': new Ext.grid.GridEditor(new Ext.form.TimeField({selectOnFocus:true}))
264
+ },
265
+ source: {
266
+ 'Start Time': '10:00 AM'
267
+ }
268
+ });
269
+ </code></pre>
270
+ */
271
+
272
+ // private config overrides
273
+ enableColumnMove:false,
274
+ stripeRows:false,
275
+ trackMouseOver: false,
276
+ clicksToEdit:1,
277
+ enableHdMenu : false,
278
+ viewConfig : {
279
+ forceFit:true
280
+ },
281
+
282
+ // private
283
+ initComponent : function(){
284
+ this.customEditors = this.customEditors || {};
285
+ this.lastEditRow = null;
286
+ var store = new Ext.grid.PropertyStore(this);
287
+ this.propStore = store;
288
+ var cm = new Ext.grid.PropertyColumnModel(this, store);
289
+ store.store.sort('name', 'ASC');
290
+ this.addEvents(
291
+ /**
292
+ * @event beforepropertychange
293
+ * Fires before a property value changes. Handlers can return false to cancel the property change
294
+ * (this will internally call {@link Ext.data.Record#reject} on the property's record).
295
+ * @param {Object} source The source data object for the grid (corresponds to the same object passed in
296
+ * as the {@link #source} config property).
297
+ * @param {String} recordId The record's id in the data store
298
+ * @param {Mixed} value The current edited property value
299
+ * @param {Mixed} oldValue The original property value prior to editing
300
+ */
301
+ 'beforepropertychange',
302
+ /**
303
+ * @event propertychange
304
+ * Fires after a property value has changed.
305
+ * @param {Object} source The source data object for the grid (corresponds to the same object passed in
306
+ * as the {@link #source} config property).
307
+ * @param {String} recordId The record's id in the data store
308
+ * @param {Mixed} value The current edited property value
309
+ * @param {Mixed} oldValue The original property value prior to editing
310
+ */
311
+ 'propertychange'
312
+ );
313
+ this.cm = cm;
314
+ this.ds = store.store;
315
+ Ext.grid.PropertyGrid.superclass.initComponent.call(this);
316
+
317
+ this.mon(this.selModel, 'beforecellselect', function(sm, rowIndex, colIndex){
318
+ if(colIndex === 0){
319
+ this.startEditing.defer(200, this, [rowIndex, 1]);
320
+ return false;
321
+ }
322
+ }, this);
323
+ },
324
+
325
+ // private
326
+ onRender : function(){
327
+ Ext.grid.PropertyGrid.superclass.onRender.apply(this, arguments);
328
+
329
+ this.getGridEl().addClass('x-props-grid');
330
+ },
331
+
332
+ // private
333
+ afterRender: function(){
334
+ Ext.grid.PropertyGrid.superclass.afterRender.apply(this, arguments);
335
+ if(this.source){
336
+ this.setSource(this.source);
337
+ }
338
+ },
339
+
340
+ /**
341
+ * Sets the source data object containing the property data. The data object can contain one or more name/value
342
+ * pairs representing all of the properties of an object to display in the grid, and this data will automatically
343
+ * be loaded into the grid's {@link #store}. The values should be supplied in the proper data type if needed,
344
+ * otherwise string type will be assumed. If the grid already contains data, this method will replace any
345
+ * existing data. See also the {@link #source} config value. Example usage:
346
+ * <pre><code>
347
+ grid.setSource({
348
+ "(name)": "My Object",
349
+ "Created": new Date(Date.parse('10/15/2006')), // date type
350
+ "Available": false, // boolean type
351
+ "Version": .01, // decimal type
352
+ "Description": "A test object"
353
+ });
354
+ </code></pre>
355
+ * @param {Object} source The data object
356
+ */
357
+ setSource : function(source){
358
+ this.propStore.setSource(source);
359
+ },
360
+
361
+ /**
362
+ * Gets the source data object containing the property data. See {@link #setSource} for details regarding the
363
+ * format of the data object.
364
+ * @return {Object} The data object
365
+ */
366
+ getSource : function(){
367
+ return this.propStore.getSource();
368
+ }
369
+ });
370
+ Ext.reg("propertygrid", Ext.grid.PropertyGrid);
@@ -0,0 +1,61 @@
1
+ /*!
2
+ * Ext JS Library 3.0.0
3
+ * Copyright(c) 2006-2009 Ext JS, LLC
4
+ * licensing@extjs.com
5
+ * http://www.extjs.com/license
6
+ */
7
+ /**
8
+ * @class Ext.grid.RowNumberer
9
+ * This is a utility class that can be passed into a {@link Ext.grid.ColumnModel} as a column config that provides
10
+ * an automatic row numbering column.
11
+ * <br>Usage:<br>
12
+ <pre><code>
13
+ // This is a typical column config with the first column providing row numbers
14
+ var colModel = new Ext.grid.ColumnModel([
15
+ new Ext.grid.RowNumberer(),
16
+ {header: "Name", width: 80, sortable: true},
17
+ {header: "Code", width: 50, sortable: true},
18
+ {header: "Description", width: 200, sortable: true}
19
+ ]);
20
+ </code></pre>
21
+ * @constructor
22
+ * @param {Object} config The configuration options
23
+ */
24
+ Ext.grid.RowNumberer = function(config){
25
+ Ext.apply(this, config);
26
+ if(this.rowspan){
27
+ this.renderer = this.renderer.createDelegate(this);
28
+ }
29
+ };
30
+
31
+ Ext.grid.RowNumberer.prototype = {
32
+ /**
33
+ * @cfg {String} header Any valid text or HTML fragment to display in the header cell for the row
34
+ * number column (defaults to '').
35
+ */
36
+ header: "",
37
+ /**
38
+ * @cfg {Number} width The default width in pixels of the row number column (defaults to 23).
39
+ */
40
+ width: 23,
41
+ /**
42
+ * @cfg {Boolean} sortable True if the row number column is sortable (defaults to false).
43
+ * @hide
44
+ */
45
+ sortable: false,
46
+
47
+ // private
48
+ fixed:true,
49
+ menuDisabled:true,
50
+ dataIndex: '',
51
+ id: 'numberer',
52
+ rowspan: undefined,
53
+
54
+ // private
55
+ renderer : function(v, p, record, rowIndex){
56
+ if(this.rowspan){
57
+ p.cellAttr = 'rowspan="'+this.rowspan+'"';
58
+ }
59
+ return rowIndex+1;
60
+ }
61
+ };
@@ -0,0 +1,530 @@
1
+ /*!
2
+ * Ext JS Library 3.0.0
3
+ * Copyright(c) 2006-2009 Ext JS, LLC
4
+ * licensing@extjs.com
5
+ * http://www.extjs.com/license
6
+ */
7
+ /**
8
+ * @class Ext.grid.RowSelectionModel
9
+ * @extends Ext.grid.AbstractSelectionModel
10
+ * The default SelectionModel used by {@link Ext.grid.GridPanel}.
11
+ * It supports multiple selections and keyboard selection/navigation. The objects stored
12
+ * as selections and returned by {@link #getSelected}, and {@link #getSelections} are
13
+ * the {@link Ext.data.Record Record}s which provide the data for the selected rows.
14
+ * @constructor
15
+ * @param {Object} config
16
+ */
17
+ Ext.grid.RowSelectionModel = function(config){
18
+ Ext.apply(this, config);
19
+ this.selections = new Ext.util.MixedCollection(false, function(o){
20
+ return o.id;
21
+ });
22
+
23
+ this.last = false;
24
+ this.lastActive = false;
25
+
26
+ this.addEvents(
27
+ /**
28
+ * @event selectionchange
29
+ * Fires when the selection changes
30
+ * @param {SelectionModel} this
31
+ */
32
+ "selectionchange",
33
+ /**
34
+ * @event beforerowselect
35
+ * Fires before a row is selected, return false to cancel the selection.
36
+ * @param {SelectionModel} this
37
+ * @param {Number} rowIndex The index to be selected
38
+ * @param {Boolean} keepExisting False if other selections will be cleared
39
+ * @param {Record} record The record to be selected
40
+ */
41
+ "beforerowselect",
42
+ /**
43
+ * @event rowselect
44
+ * Fires when a row is selected.
45
+ * @param {SelectionModel} this
46
+ * @param {Number} rowIndex The selected index
47
+ * @param {Ext.data.Record} r The selected record
48
+ */
49
+ "rowselect",
50
+ /**
51
+ * @event rowdeselect
52
+ * Fires when a row is deselected. To prevent deselection
53
+ * {@link Ext.grid.AbstractSelectionModel#lock lock the selections}.
54
+ * @param {SelectionModel} this
55
+ * @param {Number} rowIndex
56
+ * @param {Record} record
57
+ */
58
+ "rowdeselect"
59
+ );
60
+
61
+ Ext.grid.RowSelectionModel.superclass.constructor.call(this);
62
+ };
63
+
64
+ Ext.extend(Ext.grid.RowSelectionModel, Ext.grid.AbstractSelectionModel, {
65
+ /**
66
+ * @cfg {Boolean} singleSelect
67
+ * <tt>true</tt> to allow selection of only one row at a time (defaults to <tt>false</tt>
68
+ * allowing multiple selections)
69
+ */
70
+ singleSelect : false,
71
+
72
+ /**
73
+ * @cfg {Boolean} moveEditorOnEnter
74
+ * <tt>false</tt> to turn off moving the editor to the next row down when the enter key is pressed
75
+ * or the next row up when shift + enter keys are pressed.
76
+ */
77
+ // private
78
+ initEvents : function(){
79
+
80
+ if(!this.grid.enableDragDrop && !this.grid.enableDrag){
81
+ this.grid.on("rowmousedown", this.handleMouseDown, this);
82
+ }else{ // allow click to work like normal
83
+ this.grid.on("rowclick", function(grid, rowIndex, e) {
84
+ if(e.button === 0 && !e.shiftKey && !e.ctrlKey) {
85
+ this.selectRow(rowIndex, false);
86
+ grid.view.focusRow(rowIndex);
87
+ }
88
+ }, this);
89
+ }
90
+
91
+ this.rowNav = new Ext.KeyNav(this.grid.getGridEl(), {
92
+ "up" : function(e){
93
+ if(!e.shiftKey || this.singleSelect){
94
+ this.selectPrevious(false);
95
+ }else if(this.last !== false && this.lastActive !== false){
96
+ var last = this.last;
97
+ this.selectRange(this.last, this.lastActive-1);
98
+ this.grid.getView().focusRow(this.lastActive);
99
+ if(last !== false){
100
+ this.last = last;
101
+ }
102
+ }else{
103
+ this.selectFirstRow();
104
+ }
105
+ },
106
+ "down" : function(e){
107
+ if(!e.shiftKey || this.singleSelect){
108
+ this.selectNext(false);
109
+ }else if(this.last !== false && this.lastActive !== false){
110
+ var last = this.last;
111
+ this.selectRange(this.last, this.lastActive+1);
112
+ this.grid.getView().focusRow(this.lastActive);
113
+ if(last !== false){
114
+ this.last = last;
115
+ }
116
+ }else{
117
+ this.selectFirstRow();
118
+ }
119
+ },
120
+ scope: this
121
+ });
122
+
123
+ var view = this.grid.view;
124
+ view.on("refresh", this.onRefresh, this);
125
+ view.on("rowupdated", this.onRowUpdated, this);
126
+ view.on("rowremoved", this.onRemove, this);
127
+ },
128
+
129
+ // private
130
+ onRefresh : function(){
131
+ var ds = this.grid.store, index;
132
+ var s = this.getSelections();
133
+ this.clearSelections(true);
134
+ for(var i = 0, len = s.length; i < len; i++){
135
+ var r = s[i];
136
+ if((index = ds.indexOfId(r.id)) != -1){
137
+ this.selectRow(index, true);
138
+ }
139
+ }
140
+ if(s.length != this.selections.getCount()){
141
+ this.fireEvent("selectionchange", this);
142
+ }
143
+ },
144
+
145
+ // private
146
+ onRemove : function(v, index, r){
147
+ if(this.selections.remove(r) !== false){
148
+ this.fireEvent('selectionchange', this);
149
+ }
150
+ },
151
+
152
+ // private
153
+ onRowUpdated : function(v, index, r){
154
+ if(this.isSelected(r)){
155
+ v.onRowSelect(index);
156
+ }
157
+ },
158
+
159
+ /**
160
+ * Select records.
161
+ * @param {Array} records The records to select
162
+ * @param {Boolean} keepExisting (optional) <tt>true</tt> to keep existing selections
163
+ */
164
+ selectRecords : function(records, keepExisting){
165
+ if(!keepExisting){
166
+ this.clearSelections();
167
+ }
168
+ var ds = this.grid.store;
169
+ for(var i = 0, len = records.length; i < len; i++){
170
+ this.selectRow(ds.indexOf(records[i]), true);
171
+ }
172
+ },
173
+
174
+ /**
175
+ * Gets the number of selected rows.
176
+ * @return {Number}
177
+ */
178
+ getCount : function(){
179
+ return this.selections.length;
180
+ },
181
+
182
+ /**
183
+ * Selects the first row in the grid.
184
+ */
185
+ selectFirstRow : function(){
186
+ this.selectRow(0);
187
+ },
188
+
189
+ /**
190
+ * Select the last row.
191
+ * @param {Boolean} keepExisting (optional) <tt>true</tt> to keep existing selections
192
+ */
193
+ selectLastRow : function(keepExisting){
194
+ this.selectRow(this.grid.store.getCount() - 1, keepExisting);
195
+ },
196
+
197
+ /**
198
+ * Selects the row immediately following the last selected row.
199
+ * @param {Boolean} keepExisting (optional) <tt>true</tt> to keep existing selections
200
+ * @return {Boolean} <tt>true</tt> if there is a next row, else <tt>false</tt>
201
+ */
202
+ selectNext : function(keepExisting){
203
+ if(this.hasNext()){
204
+ this.selectRow(this.last+1, keepExisting);
205
+ this.grid.getView().focusRow(this.last);
206
+ return true;
207
+ }
208
+ return false;
209
+ },
210
+
211
+ /**
212
+ * Selects the row that precedes the last selected row.
213
+ * @param {Boolean} keepExisting (optional) <tt>true</tt> to keep existing selections
214
+ * @return {Boolean} <tt>true</tt> if there is a previous row, else <tt>false</tt>
215
+ */
216
+ selectPrevious : function(keepExisting){
217
+ if(this.hasPrevious()){
218
+ this.selectRow(this.last-1, keepExisting);
219
+ this.grid.getView().focusRow(this.last);
220
+ return true;
221
+ }
222
+ return false;
223
+ },
224
+
225
+ /**
226
+ * Returns true if there is a next record to select
227
+ * @return {Boolean}
228
+ */
229
+ hasNext : function(){
230
+ return this.last !== false && (this.last+1) < this.grid.store.getCount();
231
+ },
232
+
233
+ /**
234
+ * Returns true if there is a previous record to select
235
+ * @return {Boolean}
236
+ */
237
+ hasPrevious : function(){
238
+ return !!this.last;
239
+ },
240
+
241
+
242
+ /**
243
+ * Returns the selected records
244
+ * @return {Array} Array of selected records
245
+ */
246
+ getSelections : function(){
247
+ return [].concat(this.selections.items);
248
+ },
249
+
250
+ /**
251
+ * Returns the first selected record.
252
+ * @return {Record}
253
+ */
254
+ getSelected : function(){
255
+ return this.selections.itemAt(0);
256
+ },
257
+
258
+ /**
259
+ * Calls the passed function with each selection. If the function returns
260
+ * <tt>false</tt>, iteration is stopped and this function returns
261
+ * <tt>false</tt>. Otherwise it returns <tt>true</tt>.
262
+ * @param {Function} fn
263
+ * @param {Object} scope (optional)
264
+ * @return {Boolean} true if all selections were iterated
265
+ */
266
+ each : function(fn, scope){
267
+ var s = this.getSelections();
268
+ for(var i = 0, len = s.length; i < len; i++){
269
+ if(fn.call(scope || this, s[i], i) === false){
270
+ return false;
271
+ }
272
+ }
273
+ return true;
274
+ },
275
+
276
+ /**
277
+ * Clears all selections if the selection model
278
+ * {@link Ext.grid.AbstractSelectionModel#isLocked is not locked}.
279
+ * @param {Boolean} fast (optional) <tt>true</tt> to bypass the
280
+ * conditional checks and events described in {@link #deselectRow}.
281
+ */
282
+ clearSelections : function(fast){
283
+ if(this.isLocked()){
284
+ return;
285
+ }
286
+ if(fast !== true){
287
+ var ds = this.grid.store;
288
+ var s = this.selections;
289
+ s.each(function(r){
290
+ this.deselectRow(ds.indexOfId(r.id));
291
+ }, this);
292
+ s.clear();
293
+ }else{
294
+ this.selections.clear();
295
+ }
296
+ this.last = false;
297
+ },
298
+
299
+
300
+ /**
301
+ * Selects all rows if the selection model
302
+ * {@link Ext.grid.AbstractSelectionModel#isLocked is not locked}.
303
+ */
304
+ selectAll : function(){
305
+ if(this.isLocked()){
306
+ return;
307
+ }
308
+ this.selections.clear();
309
+ for(var i = 0, len = this.grid.store.getCount(); i < len; i++){
310
+ this.selectRow(i, true);
311
+ }
312
+ },
313
+
314
+ /**
315
+ * Returns <tt>true</tt> if there is a selection.
316
+ * @return {Boolean}
317
+ */
318
+ hasSelection : function(){
319
+ return this.selections.length > 0;
320
+ },
321
+
322
+ /**
323
+ * Returns <tt>true</tt> if the specified row is selected.
324
+ * @param {Number/Record} index The record or index of the record to check
325
+ * @return {Boolean}
326
+ */
327
+ isSelected : function(index){
328
+ var r = typeof index == "number" ? this.grid.store.getAt(index) : index;
329
+ return (r && this.selections.key(r.id) ? true : false);
330
+ },
331
+
332
+ /**
333
+ * Returns <tt>true</tt> if the specified record id is selected.
334
+ * @param {String} id The id of record to check
335
+ * @return {Boolean}
336
+ */
337
+ isIdSelected : function(id){
338
+ return (this.selections.key(id) ? true : false);
339
+ },
340
+
341
+ // private
342
+ handleMouseDown : function(g, rowIndex, e){
343
+ if(e.button !== 0 || this.isLocked()){
344
+ return;
345
+ }
346
+ var view = this.grid.getView();
347
+ if(e.shiftKey && !this.singleSelect && this.last !== false){
348
+ var last = this.last;
349
+ this.selectRange(last, rowIndex, e.ctrlKey);
350
+ this.last = last; // reset the last
351
+ view.focusRow(rowIndex);
352
+ }else{
353
+ var isSelected = this.isSelected(rowIndex);
354
+ if(e.ctrlKey && isSelected){
355
+ this.deselectRow(rowIndex);
356
+ }else if(!isSelected || this.getCount() > 1){
357
+ this.selectRow(rowIndex, e.ctrlKey || e.shiftKey);
358
+ view.focusRow(rowIndex);
359
+ }
360
+ }
361
+ },
362
+
363
+ /**
364
+ * Selects multiple rows.
365
+ * @param {Array} rows Array of the indexes of the row to select
366
+ * @param {Boolean} keepExisting (optional) <tt>true</tt> to keep
367
+ * existing selections (defaults to <tt>false</tt>)
368
+ */
369
+ selectRows : function(rows, keepExisting){
370
+ if(!keepExisting){
371
+ this.clearSelections();
372
+ }
373
+ for(var i = 0, len = rows.length; i < len; i++){
374
+ this.selectRow(rows[i], true);
375
+ }
376
+ },
377
+
378
+ /**
379
+ * Selects a range of rows if the selection model
380
+ * {@link Ext.grid.AbstractSelectionModel#isLocked is not locked}.
381
+ * All rows in between startRow and endRow are also selected.
382
+ * @param {Number} startRow The index of the first row in the range
383
+ * @param {Number} endRow The index of the last row in the range
384
+ * @param {Boolean} keepExisting (optional) True to retain existing selections
385
+ */
386
+ selectRange : function(startRow, endRow, keepExisting){
387
+ var i;
388
+ if(this.isLocked()){
389
+ return;
390
+ }
391
+ if(!keepExisting){
392
+ this.clearSelections();
393
+ }
394
+ if(startRow <= endRow){
395
+ for(i = startRow; i <= endRow; i++){
396
+ this.selectRow(i, true);
397
+ }
398
+ }else{
399
+ for(i = startRow; i >= endRow; i--){
400
+ this.selectRow(i, true);
401
+ }
402
+ }
403
+ },
404
+
405
+ /**
406
+ * Deselects a range of rows if the selection model
407
+ * {@link Ext.grid.AbstractSelectionModel#isLocked is not locked}.
408
+ * All rows in between startRow and endRow are also deselected.
409
+ * @param {Number} startRow The index of the first row in the range
410
+ * @param {Number} endRow The index of the last row in the range
411
+ */
412
+ deselectRange : function(startRow, endRow, preventViewNotify){
413
+ if(this.isLocked()){
414
+ return;
415
+ }
416
+ for(var i = startRow; i <= endRow; i++){
417
+ this.deselectRow(i, preventViewNotify);
418
+ }
419
+ },
420
+
421
+ /**
422
+ * Selects a row. Before selecting a row, checks if the selection model
423
+ * {@link Ext.grid.AbstractSelectionModel#isLocked is locked} and fires the
424
+ * {@link #beforerowselect} event. If these checks are satisfied the row
425
+ * will be selected and followed up by firing the {@link #rowselect} and
426
+ * {@link #selectionchange} events.
427
+ * @param {Number} row The index of the row to select
428
+ * @param {Boolean} keepExisting (optional) <tt>true</tt> to keep existing selections
429
+ * @param {Boolean} preventViewNotify (optional) Specify <tt>true</tt> to
430
+ * prevent notifying the view (disables updating the selected appearance)
431
+ */
432
+ selectRow : function(index, keepExisting, preventViewNotify){
433
+ if(this.isLocked() || (index < 0 || index >= this.grid.store.getCount()) || (keepExisting && this.isSelected(index))){
434
+ return;
435
+ }
436
+ var r = this.grid.store.getAt(index);
437
+ if(r && this.fireEvent("beforerowselect", this, index, keepExisting, r) !== false){
438
+ if(!keepExisting || this.singleSelect){
439
+ this.clearSelections();
440
+ }
441
+ this.selections.add(r);
442
+ this.last = this.lastActive = index;
443
+ if(!preventViewNotify){
444
+ this.grid.getView().onRowSelect(index);
445
+ }
446
+ this.fireEvent("rowselect", this, index, r);
447
+ this.fireEvent("selectionchange", this);
448
+ }
449
+ },
450
+
451
+ /**
452
+ * Deselects a row. Before deselecting a row, checks if the selection model
453
+ * {@link Ext.grid.AbstractSelectionModel#isLocked is locked}.
454
+ * If this check is satisfied the row will be deselected and followed up by
455
+ * firing the {@link #rowdeselect} and {@link #selectionchange} events.
456
+ * @param {Number} row The index of the row to deselect
457
+ * @param {Boolean} preventViewNotify (optional) Specify <tt>true</tt> to
458
+ * prevent notifying the view (disables updating the selected appearance)
459
+ */
460
+ deselectRow : function(index, preventViewNotify){
461
+ if(this.isLocked()){
462
+ return;
463
+ }
464
+ if(this.last == index){
465
+ this.last = false;
466
+ }
467
+ if(this.lastActive == index){
468
+ this.lastActive = false;
469
+ }
470
+ var r = this.grid.store.getAt(index);
471
+ if(r){
472
+ this.selections.remove(r);
473
+ if(!preventViewNotify){
474
+ this.grid.getView().onRowDeselect(index);
475
+ }
476
+ this.fireEvent("rowdeselect", this, index, r);
477
+ this.fireEvent("selectionchange", this);
478
+ }
479
+ },
480
+
481
+ // private
482
+ restoreLast : function(){
483
+ if(this._last){
484
+ this.last = this._last;
485
+ }
486
+ },
487
+
488
+ // private
489
+ acceptsNav : function(row, col, cm){
490
+ return !cm.isHidden(col) && cm.isCellEditable(col, row);
491
+ },
492
+
493
+ // private
494
+ onEditorKey : function(field, e){
495
+ var k = e.getKey(), newCell, g = this.grid, ed = g.activeEditor;
496
+ var shift = e.shiftKey;
497
+ if(k == e.TAB){
498
+ e.stopEvent();
499
+ ed.completeEdit();
500
+ if(shift){
501
+ newCell = g.walkCells(ed.row, ed.col-1, -1, this.acceptsNav, this);
502
+ }else{
503
+ newCell = g.walkCells(ed.row, ed.col+1, 1, this.acceptsNav, this);
504
+ }
505
+ }else if(k == e.ENTER){
506
+ e.stopEvent();
507
+ ed.completeEdit();
508
+ if(this.moveEditorOnEnter !== false){
509
+ if(shift){
510
+ newCell = g.walkCells(ed.row - 1, ed.col, -1, this.acceptsNav, this);
511
+ }else{
512
+ newCell = g.walkCells(ed.row + 1, ed.col, 1, this.acceptsNav, this);
513
+ }
514
+ }
515
+ }else if(k == e.ESC){
516
+ ed.cancelEdit();
517
+ }
518
+ if(newCell){
519
+ g.startEditing(newCell[0], newCell[1]);
520
+ }
521
+ },
522
+
523
+ destroy: function(){
524
+ if(this.rowNav){
525
+ this.rowNav.disable();
526
+ this.rowNav = null;
527
+ }
528
+ Ext.grid.RowSelectionModel.superclass.destroy.call(this);
529
+ }
530
+ });