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.
- data/LICENSE +3 -0
- data/README +3 -0
- data/Rakefile +45 -0
- data/bin/lpmp +107 -0
- data/config/help.yaml +1 -0
- data/config/hosts.yaml +2 -0
- data/config/log.yaml +1 -0
- data/config/memcache.yaml +5 -0
- data/erb/index.erb +62 -0
- data/lib/bg_pull/caichen.rb +199 -0
- data/lib/bg_pull/lpmp.rb +45 -0
- data/lib/exception.rb +8 -0
- data/lib/lpmp.rb +53 -0
- data/lib/pull/lpmp.rb +355 -0
- data/lib/remote_lmp.rb +129 -0
- data/lib/utils.rb +14 -0
- data/lib/xq_push/caichen.rb +174 -0
- data/lib/xq_push/lpmp.rb +96 -0
- data/log/lpmp1st.log +1 -0
- data/public/css/ext-portal.css +40 -0
- data/public/css/lpmp.css +6 -0
- data/public/designer/caichen.epj +1 -0
- data/public/designer/hostmonitor.epj +1 -0
- data/public/ext-3.0.0/INCLUDE_ORDER.txt +35 -0
- data/public/ext-3.0.0/adapter/ext/ext-base-debug.js +3589 -0
- data/public/ext-3.0.0/adapter/ext/ext-base.js +7 -0
- data/public/ext-3.0.0/adapter/jquery/ext-jquery-adapter-debug.js +2292 -0
- data/public/ext-3.0.0/adapter/jquery/ext-jquery-adapter.js +7 -0
- data/public/ext-3.0.0/adapter/prototype/ext-prototype-adapter-debug.js +2346 -0
- data/public/ext-3.0.0/adapter/prototype/ext-prototype-adapter.js +7 -0
- data/public/ext-3.0.0/adapter/yui/ext-yui-adapter-debug.js +2136 -0
- data/public/ext-3.0.0/adapter/yui/ext-yui-adapter.js +7 -0
- data/public/ext-3.0.0/ext-all-debug.js +65610 -0
- data/public/ext-3.0.0/ext-all.js +11 -0
- data/public/ext-3.0.0/license.txt +42 -0
- data/public/ext-3.0.0/pkgs/cmp-foundation-debug.js +11287 -0
- data/public/ext-3.0.0/pkgs/cmp-foundation.js +7 -0
- data/public/ext-3.0.0/pkgs/data-foundation-debug.js +3853 -0
- data/public/ext-3.0.0/pkgs/data-foundation.js +7 -0
- data/public/ext-3.0.0/pkgs/data-grouping-debug.js +139 -0
- data/public/ext-3.0.0/pkgs/data-grouping.js +7 -0
- data/public/ext-3.0.0/pkgs/data-json-debug.js +582 -0
- data/public/ext-3.0.0/pkgs/data-json.js +7 -0
- data/public/ext-3.0.0/pkgs/data-list-views-debug.js +1278 -0
- data/public/ext-3.0.0/pkgs/data-list-views.js +7 -0
- data/public/ext-3.0.0/pkgs/data-xml-debug.js +234 -0
- data/public/ext-3.0.0/pkgs/data-xml.js +7 -0
- data/public/ext-3.0.0/pkgs/direct-debug.js +1121 -0
- data/public/ext-3.0.0/pkgs/direct.js +7 -0
- data/public/ext-3.0.0/pkgs/ext-dd-debug.js +4567 -0
- data/public/ext-3.0.0/pkgs/ext-dd.js +7 -0
- data/public/ext-3.0.0/pkgs/ext-foundation-debug.js +13417 -0
- data/public/ext-3.0.0/pkgs/ext-foundation.js +7 -0
- data/public/ext-3.0.0/pkgs/pkg-buttons-debug.js +1060 -0
- data/public/ext-3.0.0/pkgs/pkg-buttons.js +7 -0
- data/public/ext-3.0.0/pkgs/pkg-charts-debug.js +1621 -0
- data/public/ext-3.0.0/pkgs/pkg-charts.js +10 -0
- data/public/ext-3.0.0/pkgs/pkg-forms-debug.js +7661 -0
- data/public/ext-3.0.0/pkgs/pkg-forms.js +7 -0
- data/public/ext-3.0.0/pkgs/pkg-grid-editor-debug.js +560 -0
- data/public/ext-3.0.0/pkgs/pkg-grid-editor.js +7 -0
- data/public/ext-3.0.0/pkgs/pkg-grid-foundation-debug.js +4765 -0
- data/public/ext-3.0.0/pkgs/pkg-grid-foundation.js +7 -0
- data/public/ext-3.0.0/pkgs/pkg-grid-grouping-debug.js +517 -0
- data/public/ext-3.0.0/pkgs/pkg-grid-grouping.js +7 -0
- data/public/ext-3.0.0/pkgs/pkg-grid-property-debug.js +370 -0
- data/public/ext-3.0.0/pkgs/pkg-grid-property.js +7 -0
- data/public/ext-3.0.0/pkgs/pkg-history-debug.js +203 -0
- data/public/ext-3.0.0/pkgs/pkg-history.js +7 -0
- data/public/ext-3.0.0/pkgs/pkg-menu-debug.js +1628 -0
- data/public/ext-3.0.0/pkgs/pkg-menu.js +7 -0
- data/public/ext-3.0.0/pkgs/pkg-tabs-debug.js +1100 -0
- data/public/ext-3.0.0/pkgs/pkg-tabs.js +7 -0
- data/public/ext-3.0.0/pkgs/pkg-tips-debug.js +994 -0
- data/public/ext-3.0.0/pkgs/pkg-tips.js +7 -0
- data/public/ext-3.0.0/pkgs/pkg-toolbars-debug.js +1374 -0
- data/public/ext-3.0.0/pkgs/pkg-toolbars.js +7 -0
- data/public/ext-3.0.0/pkgs/pkg-tree-debug.js +4522 -0
- data/public/ext-3.0.0/pkgs/pkg-tree.js +7 -0
- data/public/ext-3.0.0/pkgs/resizable-debug.js +760 -0
- data/public/ext-3.0.0/pkgs/resizable.js +7 -0
- data/public/ext-3.0.0/pkgs/state-debug.js +274 -0
- data/public/ext-3.0.0/pkgs/state.js +7 -0
- data/public/ext-3.0.0/pkgs/window-debug.js +1888 -0
- data/public/ext-3.0.0/pkgs/window.js +7 -0
- data/public/ext-3.0.0/resources/charts.swf +0 -0
- data/public/ext-3.0.0/resources/css/README.txt +3 -0
- data/public/ext-3.0.0/resources/css/ext-all-notheme.css +5345 -0
- data/public/ext-3.0.0/resources/css/ext-all.css +6990 -0
- data/public/ext-3.0.0/resources/css/reset-min.css +7 -0
- data/public/ext-3.0.0/resources/css/structure/borders.css +54 -0
- data/public/ext-3.0.0/resources/css/structure/box.css +80 -0
- data/public/ext-3.0.0/resources/css/structure/button.css +440 -0
- data/public/ext-3.0.0/resources/css/structure/combo.css +45 -0
- data/public/ext-3.0.0/resources/css/structure/core.css +326 -0
- data/public/ext-3.0.0/resources/css/structure/date-picker.css +265 -0
- data/public/ext-3.0.0/resources/css/structure/dd.css +61 -0
- data/public/ext-3.0.0/resources/css/structure/debug.css +26 -0
- data/public/ext-3.0.0/resources/css/structure/dialog.css +62 -0
- data/public/ext-3.0.0/resources/css/structure/editor.css +92 -0
- data/public/ext-3.0.0/resources/css/structure/form.css +562 -0
- data/public/ext-3.0.0/resources/css/structure/grid.css +552 -0
- data/public/ext-3.0.0/resources/css/structure/layout.css +296 -0
- data/public/ext-3.0.0/resources/css/structure/list-view.css +85 -0
- data/public/ext-3.0.0/resources/css/structure/menu.css +205 -0
- data/public/ext-3.0.0/resources/css/structure/panel-reset.css +130 -0
- data/public/ext-3.0.0/resources/css/structure/panel.css +468 -0
- data/public/ext-3.0.0/resources/css/structure/progress.css +42 -0
- data/public/ext-3.0.0/resources/css/structure/qtips.css +153 -0
- data/public/ext-3.0.0/resources/css/structure/reset.css +7 -0
- data/public/ext-3.0.0/resources/css/structure/resizable.css +149 -0
- data/public/ext-3.0.0/resources/css/structure/slider.css +103 -0
- data/public/ext-3.0.0/resources/css/structure/tabs.css +372 -0
- data/public/ext-3.0.0/resources/css/structure/toolbar.css +259 -0
- data/public/ext-3.0.0/resources/css/structure/tree.css +203 -0
- data/public/ext-3.0.0/resources/css/structure/window.css +222 -0
- data/public/ext-3.0.0/resources/css/visual/borders.css +25 -0
- data/public/ext-3.0.0/resources/css/visual/box.css +74 -0
- data/public/ext-3.0.0/resources/css/visual/button.css +94 -0
- data/public/ext-3.0.0/resources/css/visual/combo.css +43 -0
- data/public/ext-3.0.0/resources/css/visual/core.css +76 -0
- data/public/ext-3.0.0/resources/css/visual/date-picker.css +143 -0
- data/public/ext-3.0.0/resources/css/visual/dd.css +29 -0
- data/public/ext-3.0.0/resources/css/visual/debug.css +24 -0
- data/public/ext-3.0.0/resources/css/visual/dialog.css +34 -0
- data/public/ext-3.0.0/resources/css/visual/editor.css +13 -0
- data/public/ext-3.0.0/resources/css/visual/form.css +117 -0
- data/public/ext-3.0.0/resources/css/visual/grid.css +272 -0
- data/public/ext-3.0.0/resources/css/visual/layout.css +53 -0
- data/public/ext-3.0.0/resources/css/visual/list-view.css +37 -0
- data/public/ext-3.0.0/resources/css/visual/menu.css +82 -0
- data/public/ext-3.0.0/resources/css/visual/panel.css +87 -0
- data/public/ext-3.0.0/resources/css/visual/progress.css +32 -0
- data/public/ext-3.0.0/resources/css/visual/qtips.css +44 -0
- data/public/ext-3.0.0/resources/css/visual/resizable.css +43 -0
- data/public/ext-3.0.0/resources/css/visual/slider.css +21 -0
- data/public/ext-3.0.0/resources/css/visual/tabs.css +119 -0
- data/public/ext-3.0.0/resources/css/visual/toolbar.css +103 -0
- data/public/ext-3.0.0/resources/css/visual/tree.css +157 -0
- data/public/ext-3.0.0/resources/css/visual/window.css +86 -0
- data/public/ext-3.0.0/resources/css/xtheme-blue.css +1652 -0
- data/public/ext-3.0.0/resources/expressinstall.swf +0 -0
- data/public/ext-3.0.0/resources/images/default/box/corners-blue.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/box/corners.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/box/l-blue.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/box/l.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/box/r-blue.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/box/r.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/box/tb-blue.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/box/tb.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/button/arrow.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/button/btn.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/button/group-cs.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/button/group-lr.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/button/group-tb.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/button/s-arrow-b-noline.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/button/s-arrow-b.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/button/s-arrow-bo.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/button/s-arrow-noline.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/button/s-arrow-o.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/button/s-arrow.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/dd/drop-add.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/dd/drop-no.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/dd/drop-yes.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/editor/tb-sprite.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/form/checkbox.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/form/clear-trigger.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/form/clear-trigger.psd +0 -0
- data/public/ext-3.0.0/resources/images/default/form/date-trigger.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/form/date-trigger.psd +0 -0
- data/public/ext-3.0.0/resources/images/default/form/error-tip-corners.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/form/exclamation.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/form/radio.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/form/search-trigger.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/form/search-trigger.psd +0 -0
- data/public/ext-3.0.0/resources/images/default/form/text-bg.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/form/trigger-tpl.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/form/trigger.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/form/trigger.psd +0 -0
- data/public/ext-3.0.0/resources/images/default/gradient-bg.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/arrow-left-white.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/arrow-right-white.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/col-move-bottom.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/col-move-top.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/columns.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/dirty.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/done.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/drop-no.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/drop-yes.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/footer-bg.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/grid-blue-hd.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/grid-blue-split.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/grid-hrow.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/grid-loading.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/grid-split.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/grid-vista-hd.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/grid3-hd-btn.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/grid3-hrow-over.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/grid3-hrow.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/grid3-special-col-bg.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/grid3-special-col-sel-bg.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/group-by.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/group-collapse.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/group-expand-sprite.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/group-expand.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/hd-pop.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/hmenu-asc.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/hmenu-desc.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/hmenu-lock.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/hmenu-lock.png +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/hmenu-unlock.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/hmenu-unlock.png +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/invalid_line.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/loading.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/mso-hd.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/nowait.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/page-first-disabled.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/page-first.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/page-last-disabled.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/page-last.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/page-next-disabled.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/page-next.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/page-prev-disabled.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/page-prev.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/pick-button.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/refresh.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/row-check-sprite.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/row-expand-sprite.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/row-over.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/row-sel.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/sort-hd.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/sort_asc.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/sort_desc.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/wait.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/layout/collapse.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/layout/expand.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/layout/gradient-bg.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/layout/mini-bottom.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/layout/mini-left.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/layout/mini-right.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/layout/mini-top.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/layout/ns-collapse.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/layout/ns-expand.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/layout/panel-close.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/layout/panel-title-bg.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/layout/panel-title-light-bg.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/layout/stick.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/layout/stuck.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/layout/tab-close-on.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/layout/tab-close.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/menu/checked.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/menu/group-checked.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/menu/item-over.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/menu/menu-parent.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/menu/menu.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/menu/unchecked.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/panel/corners-sprite.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/panel/left-right.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/panel/light-hd.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/panel/tool-sprite-tpl.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/panel/tool-sprites.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/panel/tools-sprites-trans.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/panel/top-bottom.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/panel/top-bottom.png +0 -0
- data/public/ext-3.0.0/resources/images/default/panel/white-corners-sprite.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/panel/white-left-right.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/panel/white-top-bottom.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/progress/progress-bg.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/qtip/bg.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/qtip/close.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/qtip/tip-anchor-sprite.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/qtip/tip-sprite.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/s.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/shadow-c.png +0 -0
- data/public/ext-3.0.0/resources/images/default/shadow-lr.png +0 -0
- data/public/ext-3.0.0/resources/images/default/shadow.png +0 -0
- data/public/ext-3.0.0/resources/images/default/shared/blue-loading.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/shared/calendar.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/shared/glass-bg.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/shared/hd-sprite.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/shared/large-loading.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/shared/left-btn.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/shared/loading-balls.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/shared/right-btn.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/shared/warning.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/sizer/e-handle-dark.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/sizer/e-handle.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/sizer/ne-handle-dark.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/sizer/ne-handle.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/sizer/nw-handle-dark.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/sizer/nw-handle.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/sizer/s-handle-dark.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/sizer/s-handle.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/sizer/se-handle-dark.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/sizer/se-handle.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/sizer/square.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/sizer/sw-handle-dark.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/sizer/sw-handle.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/slider/slider-bg.png +0 -0
- data/public/ext-3.0.0/resources/images/default/slider/slider-thumb.png +0 -0
- data/public/ext-3.0.0/resources/images/default/slider/slider-v-bg.png +0 -0
- data/public/ext-3.0.0/resources/images/default/slider/slider-v-thumb.png +0 -0
- data/public/ext-3.0.0/resources/images/default/tabs/scroll-left.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tabs/scroll-right.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tabs/scroller-bg.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tabs/tab-btm-inactive-left-bg.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tabs/tab-btm-inactive-right-bg.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tabs/tab-btm-left-bg.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tabs/tab-btm-right-bg.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tabs/tab-close.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tabs/tab-strip-bg.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tabs/tab-strip-bg.png +0 -0
- data/public/ext-3.0.0/resources/images/default/tabs/tab-strip-btm-bg.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tabs/tabs-sprite.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/toolbar/bg.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/toolbar/btn-arrow-light.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/toolbar/btn-arrow.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/toolbar/btn-over-bg.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/toolbar/gray-bg.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/toolbar/more.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/toolbar/tb-bg.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/toolbar/tb-btn-sprite.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/toolbar/tb-xl-btn-sprite.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/toolbar/tb-xl-sep.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tree/arrows.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tree/drop-add.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tree/drop-between.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tree/drop-no.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tree/drop-over.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tree/drop-under.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tree/drop-yes.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tree/elbow-end-minus-nl.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tree/elbow-end-minus.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tree/elbow-end-plus-nl.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tree/elbow-end-plus.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tree/elbow-end.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tree/elbow-line.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tree/elbow-minus-nl.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tree/elbow-minus.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tree/elbow-plus-nl.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tree/elbow-plus.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tree/elbow.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tree/folder-open.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tree/folder.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tree/leaf.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tree/loading.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tree/s.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/window/icon-error.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/window/icon-info.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/window/icon-question.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/window/icon-warning.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/window/left-corners.png +0 -0
- data/public/ext-3.0.0/resources/images/default/window/left-corners.psd +0 -0
- data/public/ext-3.0.0/resources/images/default/window/left-right.png +0 -0
- data/public/ext-3.0.0/resources/images/default/window/left-right.psd +0 -0
- data/public/ext-3.0.0/resources/images/default/window/right-corners.png +0 -0
- data/public/ext-3.0.0/resources/images/default/window/right-corners.psd +0 -0
- data/public/ext-3.0.0/resources/images/default/window/top-bottom.png +0 -0
- data/public/ext-3.0.0/resources/images/default/window/top-bottom.psd +0 -0
- data/public/ext-3.0.0/resources/images/icon/chart.gif +0 -0
- data/public/ext-3.0.0/src/adapter/core/ext-base-ajax.js +371 -0
- data/public/ext-3.0.0/src/adapter/core/ext-base-anim-extra.js +301 -0
- data/public/ext-3.0.0/src/adapter/core/ext-base-anim.js +477 -0
- data/public/ext-3.0.0/src/adapter/core/ext-base-begin.js +18 -0
- data/public/ext-3.0.0/src/adapter/core/ext-base-dom.js +157 -0
- data/public/ext-3.0.0/src/adapter/core/ext-base-end.js +21 -0
- data/public/ext-3.0.0/src/adapter/core/ext-base-event.js +453 -0
- data/public/ext-3.0.0/src/adapter/core/ext-base-point.js +17 -0
- data/public/ext-3.0.0/src/adapter/core/ext-base-region.js +81 -0
- data/public/ext-3.0.0/src/adapter/ext-base-dom-more.js +9 -0
- data/public/ext-3.0.0/src/adapter/jquery-bridge.js +546 -0
- data/public/ext-3.0.0/src/adapter/prototype-bridge.js +600 -0
- data/public/ext-3.0.0/src/adapter/yui-bridge.js +390 -0
- data/public/ext-3.0.0/src/core/CompositeElement.js +136 -0
- data/public/ext-3.0.0/src/core/CompositeElementLite-more.js +102 -0
- data/public/ext-3.0.0/src/core/DomHelper-more.js +179 -0
- data/public/ext-3.0.0/src/core/Element-more.js +192 -0
- data/public/ext-3.0.0/src/core/Element.alignment.js +370 -0
- data/public/ext-3.0.0/src/core/Element.dd.js +46 -0
- data/public/ext-3.0.0/src/core/Element.fx-more.js +152 -0
- data/public/ext-3.0.0/src/core/Element.insertion-more.js +52 -0
- data/public/ext-3.0.0/src/core/Element.keys.js +48 -0
- data/public/ext-3.0.0/src/core/Element.legacy.js +42 -0
- data/public/ext-3.0.0/src/core/Element.position-more.js +165 -0
- data/public/ext-3.0.0/src/core/Element.scroll-more.js +110 -0
- data/public/ext-3.0.0/src/core/Element.style-more.js +318 -0
- data/public/ext-3.0.0/src/core/Error.js +81 -0
- data/public/ext-3.0.0/src/core/EventManager-more.js +334 -0
- data/public/ext-3.0.0/src/core/Ext-more.js +669 -0
- data/public/ext-3.0.0/src/core/Template-more.js +115 -0
- data/public/ext-3.0.0/src/core/core/CompositeElementLite.js +197 -0
- data/public/ext-3.0.0/src/core/core/DomHelper.js +378 -0
- data/public/ext-3.0.0/src/core/core/DomQuery.js +826 -0
- data/public/ext-3.0.0/src/core/core/Element.fx.js +324 -0
- data/public/ext-3.0.0/src/core/core/Element.insertion.js +147 -0
- data/public/ext-3.0.0/src/core/core/Element.js +945 -0
- data/public/ext-3.0.0/src/core/core/Element.position.js +303 -0
- data/public/ext-3.0.0/src/core/core/Element.scroll.js +58 -0
- data/public/ext-3.0.0/src/core/core/Element.style.js +439 -0
- data/public/ext-3.0.0/src/core/core/Element.traversal.js +176 -0
- data/public/ext-3.0.0/src/core/core/EventManager.js +623 -0
- data/public/ext-3.0.0/src/core/core/Ext.js +922 -0
- data/public/ext-3.0.0/src/core/core/Fx.js +1115 -0
- data/public/ext-3.0.0/src/core/core/Template.js +185 -0
- data/public/ext-3.0.0/src/data/Api.js +210 -0
- data/public/ext-3.0.0/src/data/ArrayReader.js +102 -0
- data/public/ext-3.0.0/src/data/ArrayStore.js +70 -0
- data/public/ext-3.0.0/src/data/DataField.js +249 -0
- data/public/ext-3.0.0/src/data/DataProxy.js +427 -0
- data/public/ext-3.0.0/src/data/DataReader.js +160 -0
- data/public/ext-3.0.0/src/data/DataWriter.js +201 -0
- data/public/ext-3.0.0/src/data/DirectProxy.js +141 -0
- data/public/ext-3.0.0/src/data/DirectStore.js +52 -0
- data/public/ext-3.0.0/src/data/GroupingStore.js +139 -0
- data/public/ext-3.0.0/src/data/HttpProxy.js +276 -0
- data/public/ext-3.0.0/src/data/JsonReader.js +311 -0
- data/public/ext-3.0.0/src/data/JsonStore.js +49 -0
- data/public/ext-3.0.0/src/data/JsonWriter.js +77 -0
- data/public/ext-3.0.0/src/data/MemoryProxy.js +69 -0
- data/public/ext-3.0.0/src/data/Record.js +400 -0
- data/public/ext-3.0.0/src/data/ScriptTagProxy.js +279 -0
- data/public/ext-3.0.0/src/data/SortTypes.js +91 -0
- data/public/ext-3.0.0/src/data/Store.js +1492 -0
- data/public/ext-3.0.0/src/data/StoreMgr.js +72 -0
- data/public/ext-3.0.0/src/data/Tree.js +785 -0
- data/public/ext-3.0.0/src/data/XmlReader.js +128 -0
- data/public/ext-3.0.0/src/data/XmlStore.js +75 -0
- data/public/ext-3.0.0/src/data/XmlWriter.js +45 -0
- data/public/ext-3.0.0/src/data/core/Connection.js +575 -0
- data/public/ext-3.0.0/src/dd/DDCore.js +2992 -0
- data/public/ext-3.0.0/src/dd/DragSource.js +365 -0
- data/public/ext-3.0.0/src/dd/DragTracker.js +217 -0
- data/public/ext-3.0.0/src/dd/DragZone.js +133 -0
- data/public/ext-3.0.0/src/dd/DropTarget.js +115 -0
- data/public/ext-3.0.0/src/dd/DropZone.js +262 -0
- data/public/ext-3.0.0/src/dd/Registry.js +127 -0
- data/public/ext-3.0.0/src/dd/ScrollManager.js +201 -0
- data/public/ext-3.0.0/src/dd/StatusProxy.js +171 -0
- data/public/ext-3.0.0/src/debug.js +906 -0
- data/public/ext-3.0.0/src/direct/Direct.js +235 -0
- data/public/ext-3.0.0/src/direct/Event.js +34 -0
- data/public/ext-3.0.0/src/direct/JsonProvider.js +45 -0
- data/public/ext-3.0.0/src/direct/PollingProvider.js +151 -0
- data/public/ext-3.0.0/src/direct/Provider.js +110 -0
- data/public/ext-3.0.0/src/direct/RemotingProvider.js +373 -0
- data/public/ext-3.0.0/src/direct/Transaction.js +32 -0
- data/public/ext-3.0.0/src/locale/ext-lang-af.js +184 -0
- data/public/ext-3.0.0/src/locale/ext-lang-bg.js +278 -0
- data/public/ext-3.0.0/src/locale/ext-lang-ca.js +315 -0
- data/public/ext-3.0.0/src/locale/ext-lang-cs.js +293 -0
- data/public/ext-3.0.0/src/locale/ext-lang-da.js +296 -0
- data/public/ext-3.0.0/src/locale/ext-lang-de.js +326 -0
- data/public/ext-3.0.0/src/locale/ext-lang-el_GR.js +309 -0
- data/public/ext-3.0.0/src/locale/ext-lang-en.js +335 -0
- data/public/ext-3.0.0/src/locale/ext-lang-en_GB.js +315 -0
- data/public/ext-3.0.0/src/locale/ext-lang-es.js +318 -0
- data/public/ext-3.0.0/src/locale/ext-lang-fa.js +272 -0
- data/public/ext-3.0.0/src/locale/ext-lang-fi.js +302 -0
- data/public/ext-3.0.0/src/locale/ext-lang-fr.js +335 -0
- data/public/ext-3.0.0/src/locale/ext-lang-fr_CA.js +218 -0
- data/public/ext-3.0.0/src/locale/ext-lang-gr.js +175 -0
- data/public/ext-3.0.0/src/locale/ext-lang-he.js +292 -0
- data/public/ext-3.0.0/src/locale/ext-lang-hr.js +295 -0
- data/public/ext-3.0.0/src/locale/ext-lang-hu.js +296 -0
- data/public/ext-3.0.0/src/locale/ext-lang-id.js +302 -0
- data/public/ext-3.0.0/src/locale/ext-lang-it.js +295 -0
- data/public/ext-3.0.0/src/locale/ext-lang-ja.js +318 -0
- data/public/ext-3.0.0/src/locale/ext-lang-ko.js +267 -0
- data/public/ext-3.0.0/src/locale/ext-lang-lt.js +333 -0
- data/public/ext-3.0.0/src/locale/ext-lang-lv.js +176 -0
- data/public/ext-3.0.0/src/locale/ext-lang-mk.js +176 -0
- data/public/ext-3.0.0/src/locale/ext-lang-nl.js +323 -0
- data/public/ext-3.0.0/src/locale/ext-lang-no_NB.js +294 -0
- data/public/ext-3.0.0/src/locale/ext-lang-no_NN.js +294 -0
- data/public/ext-3.0.0/src/locale/ext-lang-pl.js +304 -0
- data/public/ext-3.0.0/src/locale/ext-lang-pt.js +260 -0
- data/public/ext-3.0.0/src/locale/ext-lang-pt_BR.js +302 -0
- data/public/ext-3.0.0/src/locale/ext-lang-pt_PT.js +298 -0
- data/public/ext-3.0.0/src/locale/ext-lang-ro.js +295 -0
- data/public/ext-3.0.0/src/locale/ext-lang-ru.js +319 -0
- data/public/ext-3.0.0/src/locale/ext-lang-sk.js +182 -0
- data/public/ext-3.0.0/src/locale/ext-lang-sl.js +176 -0
- data/public/ext-3.0.0/src/locale/ext-lang-sr.js +179 -0
- data/public/ext-3.0.0/src/locale/ext-lang-sr_RS.js +178 -0
- data/public/ext-3.0.0/src/locale/ext-lang-sv_SE.js +178 -0
- data/public/ext-3.0.0/src/locale/ext-lang-th.js +294 -0
- data/public/ext-3.0.0/src/locale/ext-lang-tr.js +306 -0
- data/public/ext-3.0.0/src/locale/ext-lang-ukr.js +258 -0
- data/public/ext-3.0.0/src/locale/ext-lang-vn.js +181 -0
- data/public/ext-3.0.0/src/locale/ext-lang-zh_CN.js +174 -0
- data/public/ext-3.0.0/src/locale/ext-lang-zh_TW.js +178 -0
- data/public/ext-3.0.0/src/state/CookieProvider.js +91 -0
- data/public/ext-3.0.0/src/state/Provider.js +127 -0
- data/public/ext-3.0.0/src/state/StateManager.js +69 -0
- data/public/ext-3.0.0/src/util/CSS.js +161 -0
- data/public/ext-3.0.0/src/util/ClickRepeater.js +200 -0
- data/public/ext-3.0.0/src/util/Cookies.js +96 -0
- data/public/ext-3.0.0/src/util/Date.js +1317 -0
- data/public/ext-3.0.0/src/util/Format.js +356 -0
- data/public/ext-3.0.0/src/util/History.js +203 -0
- data/public/ext-3.0.0/src/util/KeyMap.js +242 -0
- data/public/ext-3.0.0/src/util/KeyNav.js +161 -0
- data/public/ext-3.0.0/src/util/MixedCollection.js +576 -0
- data/public/ext-3.0.0/src/util/Observable-more.js +178 -0
- data/public/ext-3.0.0/src/util/TextMetrics.js +131 -0
- data/public/ext-3.0.0/src/util/UpdateManager.js +536 -0
- data/public/ext-3.0.0/src/util/XTemplate.js +379 -0
- data/public/ext-3.0.0/src/util/core/DelayedTask.js +68 -0
- data/public/ext-3.0.0/src/util/core/JSON.js +174 -0
- data/public/ext-3.0.0/src/util/core/Observable.js +483 -0
- data/public/ext-3.0.0/src/util/core/TaskMgr.js +174 -0
- data/public/ext-3.0.0/src/widgets/Action.js +252 -0
- data/public/ext-3.0.0/src/widgets/BoxComponent.js +519 -0
- data/public/ext-3.0.0/src/widgets/Button.js +762 -0
- data/public/ext-3.0.0/src/widgets/ButtonGroup.js +103 -0
- data/public/ext-3.0.0/src/widgets/ColorPalette.js +148 -0
- data/public/ext-3.0.0/src/widgets/Component.js +1540 -0
- data/public/ext-3.0.0/src/widgets/ComponentMgr.js +159 -0
- data/public/ext-3.0.0/src/widgets/Container.js +894 -0
- data/public/ext-3.0.0/src/widgets/CycleButton.js +188 -0
- data/public/ext-3.0.0/src/widgets/DataView.js +749 -0
- data/public/ext-3.0.0/src/widgets/DatePicker.js +771 -0
- data/public/ext-3.0.0/src/widgets/Editor.js +385 -0
- data/public/ext-3.0.0/src/widgets/Layer.js +466 -0
- data/public/ext-3.0.0/src/widgets/LoadMask.js +123 -0
- data/public/ext-3.0.0/src/widgets/MessageBox.js +626 -0
- data/public/ext-3.0.0/src/widgets/PagingToolbar.js +502 -0
- data/public/ext-3.0.0/src/widgets/Panel.js +1772 -0
- data/public/ext-3.0.0/src/widgets/PanelDD.js +154 -0
- data/public/ext-3.0.0/src/widgets/ProgressBar.js +289 -0
- data/public/ext-3.0.0/src/widgets/Resizable.js +760 -0
- data/public/ext-3.0.0/src/widgets/Shadow.js +192 -0
- data/public/ext-3.0.0/src/widgets/Slider.js +426 -0
- data/public/ext-3.0.0/src/widgets/SplitBar.js +436 -0
- data/public/ext-3.0.0/src/widgets/SplitButton.js +124 -0
- data/public/ext-3.0.0/src/widgets/TabPanel.js +1100 -0
- data/public/ext-3.0.0/src/widgets/Toolbar.js +781 -0
- data/public/ext-3.0.0/src/widgets/Viewport.js +124 -0
- data/public/ext-3.0.0/src/widgets/Window.js +941 -0
- data/public/ext-3.0.0/src/widgets/WindowManager.js +187 -0
- data/public/ext-3.0.0/src/widgets/chart/Chart.js +721 -0
- data/public/ext-3.0.0/src/widgets/chart/EventProxy.js +20 -0
- data/public/ext-3.0.0/src/widgets/chart/FlashComponent.js +117 -0
- data/public/ext-3.0.0/src/widgets/chart/swfobject.js +783 -0
- data/public/ext-3.0.0/src/widgets/form/Action.js +626 -0
- data/public/ext-3.0.0/src/widgets/form/BasicForm.js +735 -0
- data/public/ext-3.0.0/src/widgets/form/Checkbox.js +177 -0
- data/public/ext-3.0.0/src/widgets/form/CheckboxGroup.js +419 -0
- data/public/ext-3.0.0/src/widgets/form/Combo.js +1232 -0
- data/public/ext-3.0.0/src/widgets/form/DateField.js +389 -0
- data/public/ext-3.0.0/src/widgets/form/DisplayField.js +98 -0
- data/public/ext-3.0.0/src/widgets/form/Field.js +640 -0
- data/public/ext-3.0.0/src/widgets/form/FieldSet.js +305 -0
- data/public/ext-3.0.0/src/widgets/form/Form.js +335 -0
- data/public/ext-3.0.0/src/widgets/form/Hidden.js +39 -0
- data/public/ext-3.0.0/src/widgets/form/HtmlEditor.js +1179 -0
- data/public/ext-3.0.0/src/widgets/form/Label.js +64 -0
- data/public/ext-3.0.0/src/widgets/form/NumberField.js +139 -0
- data/public/ext-3.0.0/src/widgets/form/Radio.js +81 -0
- data/public/ext-3.0.0/src/widgets/form/RadioGroup.js +116 -0
- data/public/ext-3.0.0/src/widgets/form/TextArea.js +117 -0
- data/public/ext-3.0.0/src/widgets/form/TextField.js +491 -0
- data/public/ext-3.0.0/src/widgets/form/TimeField.js +146 -0
- data/public/ext-3.0.0/src/widgets/form/TriggerField.js +328 -0
- data/public/ext-3.0.0/src/widgets/form/VTypes.js +135 -0
- data/public/ext-3.0.0/src/widgets/grid/AbstractSelectionModel.js +57 -0
- data/public/ext-3.0.0/src/widgets/grid/CellSelectionModel.js +262 -0
- data/public/ext-3.0.0/src/widgets/grid/CheckboxSelectionModel.js +103 -0
- data/public/ext-3.0.0/src/widgets/grid/Column.js +406 -0
- data/public/ext-3.0.0/src/widgets/grid/ColumnDD.js +199 -0
- data/public/ext-3.0.0/src/widgets/grid/ColumnModel.js +592 -0
- data/public/ext-3.0.0/src/widgets/grid/ColumnSplitDD.js +62 -0
- data/public/ext-3.0.0/src/widgets/grid/EditorGrid.js +291 -0
- data/public/ext-3.0.0/src/widgets/grid/GridDD.js +95 -0
- data/public/ext-3.0.0/src/widgets/grid/GridEditor.js +21 -0
- data/public/ext-3.0.0/src/widgets/grid/GridPanel.js +952 -0
- data/public/ext-3.0.0/src/widgets/grid/GridView.js +1776 -0
- data/public/ext-3.0.0/src/widgets/grid/GroupingView.js +517 -0
- data/public/ext-3.0.0/src/widgets/grid/PropertyGrid.js +370 -0
- data/public/ext-3.0.0/src/widgets/grid/RowNumberer.js +61 -0
- data/public/ext-3.0.0/src/widgets/grid/RowSelectionModel.js +530 -0
- data/public/ext-3.0.0/src/widgets/layout/AbsoluteLayout.js +82 -0
- data/public/ext-3.0.0/src/widgets/layout/AccordionLayout.js +177 -0
- data/public/ext-3.0.0/src/widgets/layout/AnchorLayout.js +200 -0
- data/public/ext-3.0.0/src/widgets/layout/BorderLayout.js +1108 -0
- data/public/ext-3.0.0/src/widgets/layout/BoxLayout.js +417 -0
- data/public/ext-3.0.0/src/widgets/layout/CardLayout.js +127 -0
- data/public/ext-3.0.0/src/widgets/layout/ColumnLayout.js +130 -0
- data/public/ext-3.0.0/src/widgets/layout/ContainerLayout.js +215 -0
- data/public/ext-3.0.0/src/widgets/layout/FitLayout.js +48 -0
- data/public/ext-3.0.0/src/widgets/layout/FormLayout.js +266 -0
- data/public/ext-3.0.0/src/widgets/layout/TableLayout.js +194 -0
- data/public/ext-3.0.0/src/widgets/list/ColumnResizer.js +123 -0
- data/public/ext-3.0.0/src/widgets/list/ListView.js +357 -0
- data/public/ext-3.0.0/src/widgets/list/Sorter.js +70 -0
- data/public/ext-3.0.0/src/widgets/menu/BaseItem.js +160 -0
- data/public/ext-3.0.0/src/widgets/menu/CheckItem.js +114 -0
- data/public/ext-3.0.0/src/widgets/menu/ColorMenu.js +72 -0
- data/public/ext-3.0.0/src/widgets/menu/DateMenu.js +90 -0
- data/public/ext-3.0.0/src/widgets/menu/Item.js +211 -0
- data/public/ext-3.0.0/src/widgets/menu/Menu.js +733 -0
- data/public/ext-3.0.0/src/widgets/menu/MenuMgr.js +211 -0
- data/public/ext-3.0.0/src/widgets/menu/Separator.js +46 -0
- data/public/ext-3.0.0/src/widgets/menu/TextItem.js +46 -0
- data/public/ext-3.0.0/src/widgets/tips/QuickTip.js +207 -0
- data/public/ext-3.0.0/src/widgets/tips/QuickTips.js +159 -0
- data/public/ext-3.0.0/src/widgets/tips/Tip.js +157 -0
- data/public/ext-3.0.0/src/widgets/tips/ToolTip.js +492 -0
- data/public/ext-3.0.0/src/widgets/tree/AsyncTreeNode.js +114 -0
- data/public/ext-3.0.0/src/widgets/tree/TreeDragZone.js +82 -0
- data/public/ext-3.0.0/src/widgets/tree/TreeDropZone.js +321 -0
- data/public/ext-3.0.0/src/widgets/tree/TreeEditor.js +160 -0
- data/public/ext-3.0.0/src/widgets/tree/TreeEventModel.js +169 -0
- data/public/ext-3.0.0/src/widgets/tree/TreeFilter.js +114 -0
- data/public/ext-3.0.0/src/widgets/tree/TreeLoader.js +342 -0
- data/public/ext-3.0.0/src/widgets/tree/TreeNode.js +546 -0
- data/public/ext-3.0.0/src/widgets/tree/TreeNodeUI.js +633 -0
- data/public/ext-3.0.0/src/widgets/tree/TreePanel.js +918 -0
- data/public/ext-3.0.0/src/widgets/tree/TreeSelectionModel.js +315 -0
- data/public/ext-3.0.0/src/widgets/tree/TreeSorter.js +106 -0
- data/public/js/ext-portal.js +235 -0
- data/public/js/global.js +7 -0
- data/public/js/outerframe.js +47 -0
- data/public/js/portal.js +713 -0
- data/public/js/test_chart.js +152 -0
- data/test/config.rb +62 -0
- data/test/config/hosts.yaml +5 -0
- data/test/config/log.yaml +1 -0
- data/test/config/memcache.yaml +5 -0
- data/test/exception.rb +39 -0
- data/test/method_missing.rb +14 -0
- data/test/module.rb +39 -0
- data/test/remote_lmp.rb +126 -0
- data/test/sinatra.rb +29 -0
- data/test/sinatra_base.rb +16 -0
- metadata +690 -0
|
@@ -0,0 +1,242 @@
|
|
|
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.KeyMap
|
|
9
|
+
* Handles mapping keys to actions for an element. One key map can be used for multiple actions.
|
|
10
|
+
* The constructor accepts the same config object as defined by {@link #addBinding}.
|
|
11
|
+
* If you bind a callback function to a KeyMap, anytime the KeyMap handles an expected key
|
|
12
|
+
* combination it will call the function with this signature (if the match is a multi-key
|
|
13
|
+
* combination the callback will still be called only once): (String key, Ext.EventObject e)
|
|
14
|
+
* A KeyMap can also handle a string representation of keys.<br />
|
|
15
|
+
* Usage:
|
|
16
|
+
<pre><code>
|
|
17
|
+
// map one key by key code
|
|
18
|
+
var map = new Ext.KeyMap("my-element", {
|
|
19
|
+
key: 13, // or Ext.EventObject.ENTER
|
|
20
|
+
fn: myHandler,
|
|
21
|
+
scope: myObject
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
// map multiple keys to one action by string
|
|
25
|
+
var map = new Ext.KeyMap("my-element", {
|
|
26
|
+
key: "a\r\n\t",
|
|
27
|
+
fn: myHandler,
|
|
28
|
+
scope: myObject
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
// map multiple keys to multiple actions by strings and array of codes
|
|
32
|
+
var map = new Ext.KeyMap("my-element", [
|
|
33
|
+
{
|
|
34
|
+
key: [10,13],
|
|
35
|
+
fn: function(){ alert("Return was pressed"); }
|
|
36
|
+
}, {
|
|
37
|
+
key: "abc",
|
|
38
|
+
fn: function(){ alert('a, b or c was pressed'); }
|
|
39
|
+
}, {
|
|
40
|
+
key: "\t",
|
|
41
|
+
ctrl:true,
|
|
42
|
+
shift:true,
|
|
43
|
+
fn: function(){ alert('Control + shift + tab was pressed.'); }
|
|
44
|
+
}
|
|
45
|
+
]);
|
|
46
|
+
</code></pre>
|
|
47
|
+
* <b>Note: A KeyMap starts enabled</b>
|
|
48
|
+
* @constructor
|
|
49
|
+
* @param {Mixed} el The element to bind to
|
|
50
|
+
* @param {Object} config The config (see {@link #addBinding})
|
|
51
|
+
* @param {String} eventName (optional) The event to bind to (defaults to "keydown")
|
|
52
|
+
*/
|
|
53
|
+
Ext.KeyMap = function(el, config, eventName){
|
|
54
|
+
this.el = Ext.get(el);
|
|
55
|
+
this.eventName = eventName || "keydown";
|
|
56
|
+
this.bindings = [];
|
|
57
|
+
if(config){
|
|
58
|
+
this.addBinding(config);
|
|
59
|
+
}
|
|
60
|
+
this.enable();
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
Ext.KeyMap.prototype = {
|
|
64
|
+
/**
|
|
65
|
+
* True to stop the event from bubbling and prevent the default browser action if the
|
|
66
|
+
* key was handled by the KeyMap (defaults to false)
|
|
67
|
+
* @type Boolean
|
|
68
|
+
*/
|
|
69
|
+
stopEvent : false,
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Add a new binding to this KeyMap. The following config object properties are supported:
|
|
73
|
+
* <pre>
|
|
74
|
+
Property Type Description
|
|
75
|
+
---------- --------------- ----------------------------------------------------------------------
|
|
76
|
+
key String/Array A single keycode or an array of keycodes to handle
|
|
77
|
+
shift Boolean True to handle key only when shift is pressed, False to handle the key only when shift is not pressed (defaults to undefined)
|
|
78
|
+
ctrl Boolean True to handle key only when ctrl is pressed, False to handle the key only when ctrl is not pressed (defaults to undefined)
|
|
79
|
+
alt Boolean True to handle key only when alt is pressed, False to handle the key only when alt is not pressed (defaults to undefined)
|
|
80
|
+
handler Function The function to call when KeyMap finds the expected key combination
|
|
81
|
+
fn Function Alias of handler (for backwards-compatibility)
|
|
82
|
+
scope Object The scope of the callback function
|
|
83
|
+
stopEvent Boolean True to stop the event from bubbling and prevent the default browser action if the key was handled by the KeyMap (defaults to false)
|
|
84
|
+
</pre>
|
|
85
|
+
*
|
|
86
|
+
* Usage:
|
|
87
|
+
* <pre><code>
|
|
88
|
+
// Create a KeyMap
|
|
89
|
+
var map = new Ext.KeyMap(document, {
|
|
90
|
+
key: Ext.EventObject.ENTER,
|
|
91
|
+
fn: handleKey,
|
|
92
|
+
scope: this
|
|
93
|
+
});
|
|
94
|
+
|
|
95
|
+
//Add a new binding to the existing KeyMap later
|
|
96
|
+
map.addBinding({
|
|
97
|
+
key: 'abc',
|
|
98
|
+
shift: true,
|
|
99
|
+
fn: handleKey,
|
|
100
|
+
scope: this
|
|
101
|
+
});
|
|
102
|
+
</code></pre>
|
|
103
|
+
* @param {Object/Array} config A single KeyMap config or an array of configs
|
|
104
|
+
*/
|
|
105
|
+
addBinding : function(config){
|
|
106
|
+
if(Ext.isArray(config)){
|
|
107
|
+
Ext.each(config, function(c){
|
|
108
|
+
this.addBinding(c);
|
|
109
|
+
}, this);
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
var keyCode = config.key,
|
|
113
|
+
fn = config.fn || config.handler,
|
|
114
|
+
scope = config.scope;
|
|
115
|
+
|
|
116
|
+
if (config.stopEvent) {
|
|
117
|
+
this.stopEvent = config.stopEvent;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
if(typeof keyCode == "string"){
|
|
121
|
+
var ks = [];
|
|
122
|
+
var keyString = keyCode.toUpperCase();
|
|
123
|
+
for(var j = 0, len = keyString.length; j < len; j++){
|
|
124
|
+
ks.push(keyString.charCodeAt(j));
|
|
125
|
+
}
|
|
126
|
+
keyCode = ks;
|
|
127
|
+
}
|
|
128
|
+
var keyArray = Ext.isArray(keyCode);
|
|
129
|
+
|
|
130
|
+
var handler = function(e){
|
|
131
|
+
if(this.checkModifiers(config, e)){
|
|
132
|
+
var k = e.getKey();
|
|
133
|
+
if(keyArray){
|
|
134
|
+
for(var i = 0, len = keyCode.length; i < len; i++){
|
|
135
|
+
if(keyCode[i] == k){
|
|
136
|
+
if(this.stopEvent){
|
|
137
|
+
e.stopEvent();
|
|
138
|
+
}
|
|
139
|
+
fn.call(scope || window, k, e);
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}else{
|
|
144
|
+
if(k == keyCode){
|
|
145
|
+
if(this.stopEvent){
|
|
146
|
+
e.stopEvent();
|
|
147
|
+
}
|
|
148
|
+
fn.call(scope || window, k, e);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
};
|
|
153
|
+
this.bindings.push(handler);
|
|
154
|
+
},
|
|
155
|
+
|
|
156
|
+
// private
|
|
157
|
+
checkModifiers: function(config, e){
|
|
158
|
+
var val, key, keys = ['shift', 'ctrl', 'alt'];
|
|
159
|
+
for (var i = 0, len = keys.length; i < len; ++i){
|
|
160
|
+
key = keys[i];
|
|
161
|
+
val = config[key];
|
|
162
|
+
if(!(val === undefined || (val === e[key + 'Key']))){
|
|
163
|
+
return false;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
return true;
|
|
167
|
+
},
|
|
168
|
+
|
|
169
|
+
/**
|
|
170
|
+
* Shorthand for adding a single key listener
|
|
171
|
+
* @param {Number/Array/Object} key Either the numeric key code, array of key codes or an object with the
|
|
172
|
+
* following options:
|
|
173
|
+
* {key: (number or array), shift: (true/false), ctrl: (true/false), alt: (true/false)}
|
|
174
|
+
* @param {Function} fn The function to call
|
|
175
|
+
* @param {Object} scope (optional) The scope of the function
|
|
176
|
+
*/
|
|
177
|
+
on : function(key, fn, scope){
|
|
178
|
+
var keyCode, shift, ctrl, alt;
|
|
179
|
+
if(typeof key == "object" && !Ext.isArray(key)){
|
|
180
|
+
keyCode = key.key;
|
|
181
|
+
shift = key.shift;
|
|
182
|
+
ctrl = key.ctrl;
|
|
183
|
+
alt = key.alt;
|
|
184
|
+
}else{
|
|
185
|
+
keyCode = key;
|
|
186
|
+
}
|
|
187
|
+
this.addBinding({
|
|
188
|
+
key: keyCode,
|
|
189
|
+
shift: shift,
|
|
190
|
+
ctrl: ctrl,
|
|
191
|
+
alt: alt,
|
|
192
|
+
fn: fn,
|
|
193
|
+
scope: scope
|
|
194
|
+
});
|
|
195
|
+
},
|
|
196
|
+
|
|
197
|
+
// private
|
|
198
|
+
handleKeyDown : function(e){
|
|
199
|
+
if(this.enabled){ //just in case
|
|
200
|
+
var b = this.bindings;
|
|
201
|
+
for(var i = 0, len = b.length; i < len; i++){
|
|
202
|
+
b[i].call(this, e);
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
},
|
|
206
|
+
|
|
207
|
+
/**
|
|
208
|
+
* Returns true if this KeyMap is enabled
|
|
209
|
+
* @return {Boolean}
|
|
210
|
+
*/
|
|
211
|
+
isEnabled : function(){
|
|
212
|
+
return this.enabled;
|
|
213
|
+
},
|
|
214
|
+
|
|
215
|
+
/**
|
|
216
|
+
* Enables this KeyMap
|
|
217
|
+
*/
|
|
218
|
+
enable: function(){
|
|
219
|
+
if(!this.enabled){
|
|
220
|
+
this.el.on(this.eventName, this.handleKeyDown, this);
|
|
221
|
+
this.enabled = true;
|
|
222
|
+
}
|
|
223
|
+
},
|
|
224
|
+
|
|
225
|
+
/**
|
|
226
|
+
* Disable this KeyMap
|
|
227
|
+
*/
|
|
228
|
+
disable: function(){
|
|
229
|
+
if(this.enabled){
|
|
230
|
+
this.el.removeListener(this.eventName, this.handleKeyDown, this);
|
|
231
|
+
this.enabled = false;
|
|
232
|
+
}
|
|
233
|
+
},
|
|
234
|
+
|
|
235
|
+
/**
|
|
236
|
+
* Convenience function for setting disabled/enabled by boolean.
|
|
237
|
+
* @param {Boolean} disabled
|
|
238
|
+
*/
|
|
239
|
+
setDisabled : function(disabled){
|
|
240
|
+
this[disabled ? "disable" : "enable"]();
|
|
241
|
+
}
|
|
242
|
+
};
|
|
@@ -0,0 +1,161 @@
|
|
|
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.KeyNav
|
|
9
|
+
* <p>Provides a convenient wrapper for normalized keyboard navigation. KeyNav allows you to bind
|
|
10
|
+
* navigation keys to function calls that will get called when the keys are pressed, providing an easy
|
|
11
|
+
* way to implement custom navigation schemes for any UI component.</p>
|
|
12
|
+
* <p>The following are all of the possible keys that can be implemented: enter, left, right, up, down, tab, esc,
|
|
13
|
+
* pageUp, pageDown, del, home, end. Usage:</p>
|
|
14
|
+
<pre><code>
|
|
15
|
+
var nav = new Ext.KeyNav("my-element", {
|
|
16
|
+
"left" : function(e){
|
|
17
|
+
this.moveLeft(e.ctrlKey);
|
|
18
|
+
},
|
|
19
|
+
"right" : function(e){
|
|
20
|
+
this.moveRight(e.ctrlKey);
|
|
21
|
+
},
|
|
22
|
+
"enter" : function(e){
|
|
23
|
+
this.save();
|
|
24
|
+
},
|
|
25
|
+
scope : this
|
|
26
|
+
});
|
|
27
|
+
</code></pre>
|
|
28
|
+
* @constructor
|
|
29
|
+
* @param {Mixed} el The element to bind to
|
|
30
|
+
* @param {Object} config The config
|
|
31
|
+
*/
|
|
32
|
+
Ext.KeyNav = function(el, config){
|
|
33
|
+
this.el = Ext.get(el);
|
|
34
|
+
Ext.apply(this, config);
|
|
35
|
+
if(!this.disabled){
|
|
36
|
+
this.disabled = true;
|
|
37
|
+
this.enable();
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
Ext.KeyNav.prototype = {
|
|
42
|
+
/**
|
|
43
|
+
* @cfg {Boolean} disabled
|
|
44
|
+
* True to disable this KeyNav instance (defaults to false)
|
|
45
|
+
*/
|
|
46
|
+
disabled : false,
|
|
47
|
+
/**
|
|
48
|
+
* @cfg {String} defaultEventAction
|
|
49
|
+
* The method to call on the {@link Ext.EventObject} after this KeyNav intercepts a key. Valid values are
|
|
50
|
+
* {@link Ext.EventObject#stopEvent}, {@link Ext.EventObject#preventDefault} and
|
|
51
|
+
* {@link Ext.EventObject#stopPropagation} (defaults to 'stopEvent')
|
|
52
|
+
*/
|
|
53
|
+
defaultEventAction: "stopEvent",
|
|
54
|
+
/**
|
|
55
|
+
* @cfg {Boolean} forceKeyDown
|
|
56
|
+
* Handle the keydown event instead of keypress (defaults to false). KeyNav automatically does this for IE since
|
|
57
|
+
* IE does not propagate special keys on keypress, but setting this to true will force other browsers to also
|
|
58
|
+
* handle keydown instead of keypress.
|
|
59
|
+
*/
|
|
60
|
+
forceKeyDown : false,
|
|
61
|
+
|
|
62
|
+
// private
|
|
63
|
+
prepareEvent : function(e){
|
|
64
|
+
var k = e.getKey();
|
|
65
|
+
var h = this.keyToHandler[k];
|
|
66
|
+
if(Ext.isSafari2 && h && k >= 37 && k <= 40){
|
|
67
|
+
e.stopEvent();
|
|
68
|
+
}
|
|
69
|
+
},
|
|
70
|
+
|
|
71
|
+
// private
|
|
72
|
+
relay : function(e){
|
|
73
|
+
var k = e.getKey();
|
|
74
|
+
var h = this.keyToHandler[k];
|
|
75
|
+
if(h && this[h]){
|
|
76
|
+
if(this.doRelay(e, this[h], h) !== true){
|
|
77
|
+
e[this.defaultEventAction]();
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
},
|
|
81
|
+
|
|
82
|
+
// private
|
|
83
|
+
doRelay : function(e, h, hname){
|
|
84
|
+
return h.call(this.scope || this, e);
|
|
85
|
+
},
|
|
86
|
+
|
|
87
|
+
// possible handlers
|
|
88
|
+
enter : false,
|
|
89
|
+
left : false,
|
|
90
|
+
right : false,
|
|
91
|
+
up : false,
|
|
92
|
+
down : false,
|
|
93
|
+
tab : false,
|
|
94
|
+
esc : false,
|
|
95
|
+
pageUp : false,
|
|
96
|
+
pageDown : false,
|
|
97
|
+
del : false,
|
|
98
|
+
home : false,
|
|
99
|
+
end : false,
|
|
100
|
+
|
|
101
|
+
// quick lookup hash
|
|
102
|
+
keyToHandler : {
|
|
103
|
+
37 : "left",
|
|
104
|
+
39 : "right",
|
|
105
|
+
38 : "up",
|
|
106
|
+
40 : "down",
|
|
107
|
+
33 : "pageUp",
|
|
108
|
+
34 : "pageDown",
|
|
109
|
+
46 : "del",
|
|
110
|
+
36 : "home",
|
|
111
|
+
35 : "end",
|
|
112
|
+
13 : "enter",
|
|
113
|
+
27 : "esc",
|
|
114
|
+
9 : "tab"
|
|
115
|
+
},
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* Enable this KeyNav
|
|
119
|
+
*/
|
|
120
|
+
enable: function(){
|
|
121
|
+
if(this.disabled){
|
|
122
|
+
// ie won't do special keys on keypress, no one else will repeat keys with keydown
|
|
123
|
+
// the EventObject will normalize Safari automatically
|
|
124
|
+
if(this.isKeydown()){
|
|
125
|
+
this.el.on("keydown", this.relay, this);
|
|
126
|
+
}else{
|
|
127
|
+
this.el.on("keydown", this.prepareEvent, this);
|
|
128
|
+
this.el.on("keypress", this.relay, this);
|
|
129
|
+
}
|
|
130
|
+
this.disabled = false;
|
|
131
|
+
}
|
|
132
|
+
},
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
* Disable this KeyNav
|
|
136
|
+
*/
|
|
137
|
+
disable: function(){
|
|
138
|
+
if(!this.disabled){
|
|
139
|
+
if(this.isKeydown()){
|
|
140
|
+
this.el.un("keydown", this.relay, this);
|
|
141
|
+
}else{
|
|
142
|
+
this.el.un("keydown", this.prepareEvent, this);
|
|
143
|
+
this.el.un("keypress", this.relay, this);
|
|
144
|
+
}
|
|
145
|
+
this.disabled = true;
|
|
146
|
+
}
|
|
147
|
+
},
|
|
148
|
+
|
|
149
|
+
/**
|
|
150
|
+
* Convenience function for setting disabled/enabled by boolean.
|
|
151
|
+
* @param {Boolean} disabled
|
|
152
|
+
*/
|
|
153
|
+
setDisabled : function(disabled){
|
|
154
|
+
this[disabled ? "disable" : "enable"]();
|
|
155
|
+
},
|
|
156
|
+
|
|
157
|
+
// private
|
|
158
|
+
isKeydown: function(){
|
|
159
|
+
return this.forceKeyDown || Ext.EventManager.useKeydown;
|
|
160
|
+
}
|
|
161
|
+
};
|
|
@@ -0,0 +1,576 @@
|
|
|
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.util.MixedCollection
|
|
9
|
+
* @extends Ext.util.Observable
|
|
10
|
+
* A Collection class that maintains both numeric indexes and keys and exposes events.
|
|
11
|
+
* @constructor
|
|
12
|
+
* @param {Boolean} allowFunctions True if the addAll function should add function references to the
|
|
13
|
+
* collection (defaults to false)
|
|
14
|
+
* @param {Function} keyFn A function that can accept an item of the type(s) stored in this MixedCollection
|
|
15
|
+
* and return the key value for that item. This is used when available to look up the key on items that
|
|
16
|
+
* were passed without an explicit key parameter to a MixedCollection method. Passing this parameter is
|
|
17
|
+
* equivalent to providing an implementation for the {@link #getKey} method.
|
|
18
|
+
*/
|
|
19
|
+
Ext.util.MixedCollection = function(allowFunctions, keyFn){
|
|
20
|
+
this.items = [];
|
|
21
|
+
this.map = {};
|
|
22
|
+
this.keys = [];
|
|
23
|
+
this.length = 0;
|
|
24
|
+
this.addEvents(
|
|
25
|
+
/**
|
|
26
|
+
* @event clear
|
|
27
|
+
* Fires when the collection is cleared.
|
|
28
|
+
*/
|
|
29
|
+
"clear",
|
|
30
|
+
/**
|
|
31
|
+
* @event add
|
|
32
|
+
* Fires when an item is added to the collection.
|
|
33
|
+
* @param {Number} index The index at which the item was added.
|
|
34
|
+
* @param {Object} o The item added.
|
|
35
|
+
* @param {String} key The key associated with the added item.
|
|
36
|
+
*/
|
|
37
|
+
"add",
|
|
38
|
+
/**
|
|
39
|
+
* @event replace
|
|
40
|
+
* Fires when an item is replaced in the collection.
|
|
41
|
+
* @param {String} key he key associated with the new added.
|
|
42
|
+
* @param {Object} old The item being replaced.
|
|
43
|
+
* @param {Object} new The new item.
|
|
44
|
+
*/
|
|
45
|
+
"replace",
|
|
46
|
+
/**
|
|
47
|
+
* @event remove
|
|
48
|
+
* Fires when an item is removed from the collection.
|
|
49
|
+
* @param {Object} o The item being removed.
|
|
50
|
+
* @param {String} key (optional) The key associated with the removed item.
|
|
51
|
+
*/
|
|
52
|
+
"remove",
|
|
53
|
+
"sort"
|
|
54
|
+
);
|
|
55
|
+
this.allowFunctions = allowFunctions === true;
|
|
56
|
+
if(keyFn){
|
|
57
|
+
this.getKey = keyFn;
|
|
58
|
+
}
|
|
59
|
+
Ext.util.MixedCollection.superclass.constructor.call(this);
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
Ext.extend(Ext.util.MixedCollection, Ext.util.Observable, {
|
|
63
|
+
allowFunctions : false,
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Adds an item to the collection. Fires the {@link #add} event when complete.
|
|
67
|
+
* @param {String} key <p>The key to associate with the item, or the new item.</p>
|
|
68
|
+
* <p>If you supplied a {@link #getKey} implementation for this MixedCollection, or if the key
|
|
69
|
+
* of your stored items is in a property called <tt><b>id</b></tt>, then the MixedCollection
|
|
70
|
+
* will be able to <i>derive</i> the key for the new item. In this case just pass the new item in
|
|
71
|
+
* this parameter.</p>
|
|
72
|
+
* @param {Object} o The item to add.
|
|
73
|
+
* @return {Object} The item added.
|
|
74
|
+
*/
|
|
75
|
+
add: function(key, o){
|
|
76
|
+
if(arguments.length == 1){
|
|
77
|
+
o = arguments[0];
|
|
78
|
+
key = this.getKey(o);
|
|
79
|
+
}
|
|
80
|
+
if(typeof key != 'undefined' && key !== null){
|
|
81
|
+
var old = this.map[key];
|
|
82
|
+
if(typeof old != 'undefined'){
|
|
83
|
+
return this.replace(key, o);
|
|
84
|
+
}
|
|
85
|
+
this.map[key] = o;
|
|
86
|
+
}
|
|
87
|
+
this.length++;
|
|
88
|
+
this.items.push(o);
|
|
89
|
+
this.keys.push(key);
|
|
90
|
+
this.fireEvent('add', this.length-1, o, key);
|
|
91
|
+
return o;
|
|
92
|
+
},
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* MixedCollection has a generic way to fetch keys if you implement getKey. The default implementation
|
|
96
|
+
* simply returns <tt style="font-weight:bold;">item.id</tt> but you can provide your own implementation
|
|
97
|
+
* to return a different value as in the following examples:
|
|
98
|
+
<pre><code>
|
|
99
|
+
// normal way
|
|
100
|
+
var mc = new Ext.util.MixedCollection();
|
|
101
|
+
mc.add(someEl.dom.id, someEl);
|
|
102
|
+
mc.add(otherEl.dom.id, otherEl);
|
|
103
|
+
//and so on
|
|
104
|
+
|
|
105
|
+
// using getKey
|
|
106
|
+
var mc = new Ext.util.MixedCollection();
|
|
107
|
+
mc.getKey = function(el){
|
|
108
|
+
return el.dom.id;
|
|
109
|
+
};
|
|
110
|
+
mc.add(someEl);
|
|
111
|
+
mc.add(otherEl);
|
|
112
|
+
|
|
113
|
+
// or via the constructor
|
|
114
|
+
var mc = new Ext.util.MixedCollection(false, function(el){
|
|
115
|
+
return el.dom.id;
|
|
116
|
+
});
|
|
117
|
+
mc.add(someEl);
|
|
118
|
+
mc.add(otherEl);
|
|
119
|
+
</code></pre>
|
|
120
|
+
* @param {Object} item The item for which to find the key.
|
|
121
|
+
* @return {Object} The key for the passed item.
|
|
122
|
+
*/
|
|
123
|
+
getKey : function(o){
|
|
124
|
+
return o.id;
|
|
125
|
+
},
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* Replaces an item in the collection. Fires the {@link #replace} event when complete.
|
|
129
|
+
* @param {String} key <p>The key associated with the item to replace, or the replacement item.</p>
|
|
130
|
+
* <p>If you supplied a {@link #getKey} implementation for this MixedCollection, or if the key
|
|
131
|
+
* of your stored items is in a property called <tt><b>id</b></tt>, then the MixedCollection
|
|
132
|
+
* will be able to <i>derive</i> the key of the replacement item. If you want to replace an item
|
|
133
|
+
* with one having the same key value, then just pass the replacement item in this parameter.</p>
|
|
134
|
+
* @param o {Object} o (optional) If the first parameter passed was a key, the item to associate
|
|
135
|
+
* with that key.
|
|
136
|
+
* @return {Object} The new item.
|
|
137
|
+
*/
|
|
138
|
+
replace : function(key, o){
|
|
139
|
+
if(arguments.length == 1){
|
|
140
|
+
o = arguments[0];
|
|
141
|
+
key = this.getKey(o);
|
|
142
|
+
}
|
|
143
|
+
var old = this.map[key];
|
|
144
|
+
if(typeof key == "undefined" || key === null || typeof old == "undefined"){
|
|
145
|
+
return this.add(key, o);
|
|
146
|
+
}
|
|
147
|
+
var index = this.indexOfKey(key);
|
|
148
|
+
this.items[index] = o;
|
|
149
|
+
this.map[key] = o;
|
|
150
|
+
this.fireEvent("replace", key, old, o);
|
|
151
|
+
return o;
|
|
152
|
+
},
|
|
153
|
+
|
|
154
|
+
/**
|
|
155
|
+
* Adds all elements of an Array or an Object to the collection.
|
|
156
|
+
* @param {Object/Array} objs An Object containing properties which will be added to the collection, or
|
|
157
|
+
* an Array of values, each of which are added to the collection.
|
|
158
|
+
*/
|
|
159
|
+
addAll : function(objs){
|
|
160
|
+
if(arguments.length > 1 || Ext.isArray(objs)){
|
|
161
|
+
var args = arguments.length > 1 ? arguments : objs;
|
|
162
|
+
for(var i = 0, len = args.length; i < len; i++){
|
|
163
|
+
this.add(args[i]);
|
|
164
|
+
}
|
|
165
|
+
}else{
|
|
166
|
+
for(var key in objs){
|
|
167
|
+
if(this.allowFunctions || typeof objs[key] != "function"){
|
|
168
|
+
this.add(key, objs[key]);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
},
|
|
173
|
+
|
|
174
|
+
/**
|
|
175
|
+
* Executes the specified function once for every item in the collection, passing the following arguments:
|
|
176
|
+
* <div class="mdetail-params"><ul>
|
|
177
|
+
* <li><b>item</b> : Mixed<p class="sub-desc">The collection item</p></li>
|
|
178
|
+
* <li><b>index</b> : Number<p class="sub-desc">The item's index</p></li>
|
|
179
|
+
* <li><b>length</b> : Number<p class="sub-desc">The total number of items in the collection</p></li>
|
|
180
|
+
* </ul></div>
|
|
181
|
+
* The function should return a boolean value. Returning false from the function will stop the iteration.
|
|
182
|
+
* @param {Function} fn The function to execute for each item.
|
|
183
|
+
* @param {Object} scope (optional) The scope in which to execute the function.
|
|
184
|
+
*/
|
|
185
|
+
each : function(fn, scope){
|
|
186
|
+
var items = [].concat(this.items); // each safe for removal
|
|
187
|
+
for(var i = 0, len = items.length; i < len; i++){
|
|
188
|
+
if(fn.call(scope || items[i], items[i], i, len) === false){
|
|
189
|
+
break;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
},
|
|
193
|
+
|
|
194
|
+
/**
|
|
195
|
+
* Executes the specified function once for every key in the collection, passing each
|
|
196
|
+
* key, and its associated item as the first two parameters.
|
|
197
|
+
* @param {Function} fn The function to execute for each item.
|
|
198
|
+
* @param {Object} scope (optional) The scope in which to execute the function.
|
|
199
|
+
*/
|
|
200
|
+
eachKey : function(fn, scope){
|
|
201
|
+
for(var i = 0, len = this.keys.length; i < len; i++){
|
|
202
|
+
fn.call(scope || window, this.keys[i], this.items[i], i, len);
|
|
203
|
+
}
|
|
204
|
+
},
|
|
205
|
+
|
|
206
|
+
/**
|
|
207
|
+
* Returns the first item in the collection which elicits a true return value from the
|
|
208
|
+
* passed selection function.
|
|
209
|
+
* @param {Function} fn The selection function to execute for each item.
|
|
210
|
+
* @param {Object} scope (optional) The scope in which to execute the function.
|
|
211
|
+
* @return {Object} The first item in the collection which returned true from the selection function.
|
|
212
|
+
*/
|
|
213
|
+
find : function(fn, scope){
|
|
214
|
+
for(var i = 0, len = this.items.length; i < len; i++){
|
|
215
|
+
if(fn.call(scope || window, this.items[i], this.keys[i])){
|
|
216
|
+
return this.items[i];
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
return null;
|
|
220
|
+
},
|
|
221
|
+
|
|
222
|
+
/**
|
|
223
|
+
* Inserts an item at the specified index in the collection. Fires the {@link #add} event when complete.
|
|
224
|
+
* @param {Number} index The index to insert the item at.
|
|
225
|
+
* @param {String} key The key to associate with the new item, or the item itself.
|
|
226
|
+
* @param {Object} o (optional) If the second parameter was a key, the new item.
|
|
227
|
+
* @return {Object} The item inserted.
|
|
228
|
+
*/
|
|
229
|
+
insert : function(index, key, o){
|
|
230
|
+
if(arguments.length == 2){
|
|
231
|
+
o = arguments[1];
|
|
232
|
+
key = this.getKey(o);
|
|
233
|
+
}
|
|
234
|
+
if(this.containsKey(key)){
|
|
235
|
+
this.suspendEvents();
|
|
236
|
+
this.removeKey(key);
|
|
237
|
+
this.resumeEvents();
|
|
238
|
+
}
|
|
239
|
+
if(index >= this.length){
|
|
240
|
+
return this.add(key, o);
|
|
241
|
+
}
|
|
242
|
+
this.length++;
|
|
243
|
+
this.items.splice(index, 0, o);
|
|
244
|
+
if(typeof key != "undefined" && key !== null){
|
|
245
|
+
this.map[key] = o;
|
|
246
|
+
}
|
|
247
|
+
this.keys.splice(index, 0, key);
|
|
248
|
+
this.fireEvent("add", index, o, key);
|
|
249
|
+
return o;
|
|
250
|
+
},
|
|
251
|
+
|
|
252
|
+
/**
|
|
253
|
+
* Remove an item from the collection.
|
|
254
|
+
* @param {Object} o The item to remove.
|
|
255
|
+
* @return {Object} The item removed or false if no item was removed.
|
|
256
|
+
*/
|
|
257
|
+
remove : function(o){
|
|
258
|
+
return this.removeAt(this.indexOf(o));
|
|
259
|
+
},
|
|
260
|
+
|
|
261
|
+
/**
|
|
262
|
+
* Remove an item from a specified index in the collection. Fires the {@link #remove} event when complete.
|
|
263
|
+
* @param {Number} index The index within the collection of the item to remove.
|
|
264
|
+
* @return {Object} The item removed or false if no item was removed.
|
|
265
|
+
*/
|
|
266
|
+
removeAt : function(index){
|
|
267
|
+
if(index < this.length && index >= 0){
|
|
268
|
+
this.length--;
|
|
269
|
+
var o = this.items[index];
|
|
270
|
+
this.items.splice(index, 1);
|
|
271
|
+
var key = this.keys[index];
|
|
272
|
+
if(typeof key != "undefined"){
|
|
273
|
+
delete this.map[key];
|
|
274
|
+
}
|
|
275
|
+
this.keys.splice(index, 1);
|
|
276
|
+
this.fireEvent("remove", o, key);
|
|
277
|
+
return o;
|
|
278
|
+
}
|
|
279
|
+
return false;
|
|
280
|
+
},
|
|
281
|
+
|
|
282
|
+
/**
|
|
283
|
+
* Removed an item associated with the passed key fom the collection.
|
|
284
|
+
* @param {String} key The key of the item to remove.
|
|
285
|
+
* @return {Object} The item removed or false if no item was removed.
|
|
286
|
+
*/
|
|
287
|
+
removeKey : function(key){
|
|
288
|
+
return this.removeAt(this.indexOfKey(key));
|
|
289
|
+
},
|
|
290
|
+
|
|
291
|
+
/**
|
|
292
|
+
* Returns the number of items in the collection.
|
|
293
|
+
* @return {Number} the number of items in the collection.
|
|
294
|
+
*/
|
|
295
|
+
getCount : function(){
|
|
296
|
+
return this.length;
|
|
297
|
+
},
|
|
298
|
+
|
|
299
|
+
/**
|
|
300
|
+
* Returns index within the collection of the passed Object.
|
|
301
|
+
* @param {Object} o The item to find the index of.
|
|
302
|
+
* @return {Number} index of the item. Returns -1 if not found.
|
|
303
|
+
*/
|
|
304
|
+
indexOf : function(o){
|
|
305
|
+
return this.items.indexOf(o);
|
|
306
|
+
},
|
|
307
|
+
|
|
308
|
+
/**
|
|
309
|
+
* Returns index within the collection of the passed key.
|
|
310
|
+
* @param {String} key The key to find the index of.
|
|
311
|
+
* @return {Number} index of the key.
|
|
312
|
+
*/
|
|
313
|
+
indexOfKey : function(key){
|
|
314
|
+
return this.keys.indexOf(key);
|
|
315
|
+
},
|
|
316
|
+
|
|
317
|
+
/**
|
|
318
|
+
* Returns the item associated with the passed key OR index. Key has priority over index. This is the equivalent
|
|
319
|
+
* of calling {@link #key} first, then if nothing matched calling {@link #itemAt}.
|
|
320
|
+
* @param {String/Number} key The key or index of the item.
|
|
321
|
+
* @return {Object} If the item is found, returns the item. If the item was not found, returns <tt>undefined</tt>.
|
|
322
|
+
* If an item was found, but is a Class, returns <tt>null</tt>.
|
|
323
|
+
*/
|
|
324
|
+
item : function(key){
|
|
325
|
+
var mk = this.map[key],
|
|
326
|
+
item = mk !== undefined ? mk : (typeof key == 'number') ? this.items[key] : undefined;
|
|
327
|
+
return !Ext.isFunction(item) || this.allowFunctions ? item : null; // for prototype!
|
|
328
|
+
},
|
|
329
|
+
|
|
330
|
+
/**
|
|
331
|
+
* Returns the item at the specified index.
|
|
332
|
+
* @param {Number} index The index of the item.
|
|
333
|
+
* @return {Object} The item at the specified index.
|
|
334
|
+
*/
|
|
335
|
+
itemAt : function(index){
|
|
336
|
+
return this.items[index];
|
|
337
|
+
},
|
|
338
|
+
|
|
339
|
+
/**
|
|
340
|
+
* Returns the item associated with the passed key.
|
|
341
|
+
* @param {String/Number} key The key of the item.
|
|
342
|
+
* @return {Object} The item associated with the passed key.
|
|
343
|
+
*/
|
|
344
|
+
key : function(key){
|
|
345
|
+
return this.map[key];
|
|
346
|
+
},
|
|
347
|
+
|
|
348
|
+
/**
|
|
349
|
+
* Returns true if the collection contains the passed Object as an item.
|
|
350
|
+
* @param {Object} o The Object to look for in the collection.
|
|
351
|
+
* @return {Boolean} True if the collection contains the Object as an item.
|
|
352
|
+
*/
|
|
353
|
+
contains : function(o){
|
|
354
|
+
return this.indexOf(o) != -1;
|
|
355
|
+
},
|
|
356
|
+
|
|
357
|
+
/**
|
|
358
|
+
* Returns true if the collection contains the passed Object as a key.
|
|
359
|
+
* @param {String} key The key to look for in the collection.
|
|
360
|
+
* @return {Boolean} True if the collection contains the Object as a key.
|
|
361
|
+
*/
|
|
362
|
+
containsKey : function(key){
|
|
363
|
+
return typeof this.map[key] != "undefined";
|
|
364
|
+
},
|
|
365
|
+
|
|
366
|
+
/**
|
|
367
|
+
* Removes all items from the collection. Fires the {@link #clear} event when complete.
|
|
368
|
+
*/
|
|
369
|
+
clear : function(){
|
|
370
|
+
this.length = 0;
|
|
371
|
+
this.items = [];
|
|
372
|
+
this.keys = [];
|
|
373
|
+
this.map = {};
|
|
374
|
+
this.fireEvent("clear");
|
|
375
|
+
},
|
|
376
|
+
|
|
377
|
+
/**
|
|
378
|
+
* Returns the first item in the collection.
|
|
379
|
+
* @return {Object} the first item in the collection..
|
|
380
|
+
*/
|
|
381
|
+
first : function(){
|
|
382
|
+
return this.items[0];
|
|
383
|
+
},
|
|
384
|
+
|
|
385
|
+
/**
|
|
386
|
+
* Returns the last item in the collection.
|
|
387
|
+
* @return {Object} the last item in the collection..
|
|
388
|
+
*/
|
|
389
|
+
last : function(){
|
|
390
|
+
return this.items[this.length-1];
|
|
391
|
+
},
|
|
392
|
+
|
|
393
|
+
// private
|
|
394
|
+
_sort : function(property, dir, fn){
|
|
395
|
+
var i,
|
|
396
|
+
len,
|
|
397
|
+
dsc = String(dir).toUpperCase() == "DESC" ? -1 : 1,
|
|
398
|
+
c = [], k = this.keys, items = this.items;
|
|
399
|
+
|
|
400
|
+
fn = fn || function(a, b){
|
|
401
|
+
return a-b;
|
|
402
|
+
};
|
|
403
|
+
for(i = 0, len = items.length; i < len; i++){
|
|
404
|
+
c[c.length] = {key: k[i], value: items[i], index: i};
|
|
405
|
+
}
|
|
406
|
+
c.sort(function(a, b){
|
|
407
|
+
var v = fn(a[property], b[property]) * dsc;
|
|
408
|
+
if(v === 0){
|
|
409
|
+
v = (a.index < b.index ? -1 : 1);
|
|
410
|
+
}
|
|
411
|
+
return v;
|
|
412
|
+
});
|
|
413
|
+
for(i = 0, len = c.length; i < len; i++){
|
|
414
|
+
items[i] = c[i].value;
|
|
415
|
+
k[i] = c[i].key;
|
|
416
|
+
}
|
|
417
|
+
this.fireEvent("sort", this);
|
|
418
|
+
},
|
|
419
|
+
|
|
420
|
+
/**
|
|
421
|
+
* Sorts this collection with the passed comparison function
|
|
422
|
+
* @param {String} direction (optional) "ASC" or "DESC"
|
|
423
|
+
* @param {Function} fn (optional) comparison function
|
|
424
|
+
*/
|
|
425
|
+
sort : function(dir, fn){
|
|
426
|
+
this._sort("value", dir, fn);
|
|
427
|
+
},
|
|
428
|
+
|
|
429
|
+
/**
|
|
430
|
+
* Sorts this collection by keys
|
|
431
|
+
* @param {String} direction (optional) "ASC" or "DESC"
|
|
432
|
+
* @param {Function} fn (optional) a comparison function (defaults to case insensitive string)
|
|
433
|
+
*/
|
|
434
|
+
keySort : function(dir, fn){
|
|
435
|
+
this._sort("key", dir, fn || function(a, b){
|
|
436
|
+
var v1 = String(a).toUpperCase(), v2 = String(b).toUpperCase();
|
|
437
|
+
return v1 > v2 ? 1 : (v1 < v2 ? -1 : 0);
|
|
438
|
+
});
|
|
439
|
+
},
|
|
440
|
+
|
|
441
|
+
/**
|
|
442
|
+
* Returns a range of items in this collection
|
|
443
|
+
* @param {Number} startIndex (optional) defaults to 0
|
|
444
|
+
* @param {Number} endIndex (optional) default to the last item
|
|
445
|
+
* @return {Array} An array of items
|
|
446
|
+
*/
|
|
447
|
+
getRange : function(start, end){
|
|
448
|
+
var items = this.items;
|
|
449
|
+
if(items.length < 1){
|
|
450
|
+
return [];
|
|
451
|
+
}
|
|
452
|
+
start = start || 0;
|
|
453
|
+
end = Math.min(typeof end == "undefined" ? this.length-1 : end, this.length-1);
|
|
454
|
+
var i, r = [];
|
|
455
|
+
if(start <= end){
|
|
456
|
+
for(i = start; i <= end; i++) {
|
|
457
|
+
r[r.length] = items[i];
|
|
458
|
+
}
|
|
459
|
+
}else{
|
|
460
|
+
for(i = start; i >= end; i--) {
|
|
461
|
+
r[r.length] = items[i];
|
|
462
|
+
}
|
|
463
|
+
}
|
|
464
|
+
return r;
|
|
465
|
+
},
|
|
466
|
+
|
|
467
|
+
/**
|
|
468
|
+
* Filter the <i>objects</i> in this collection by a specific property.
|
|
469
|
+
* Returns a new collection that has been filtered.
|
|
470
|
+
* @param {String} property A property on your objects
|
|
471
|
+
* @param {String/RegExp} value Either string that the property values
|
|
472
|
+
* should start with or a RegExp to test against the property
|
|
473
|
+
* @param {Boolean} anyMatch (optional) True to match any part of the string, not just the beginning
|
|
474
|
+
* @param {Boolean} caseSensitive (optional) True for case sensitive comparison (defaults to False).
|
|
475
|
+
* @return {MixedCollection} The new filtered collection
|
|
476
|
+
*/
|
|
477
|
+
filter : function(property, value, anyMatch, caseSensitive){
|
|
478
|
+
if(Ext.isEmpty(value, false)){
|
|
479
|
+
return this.clone();
|
|
480
|
+
}
|
|
481
|
+
value = this.createValueMatcher(value, anyMatch, caseSensitive);
|
|
482
|
+
return this.filterBy(function(o){
|
|
483
|
+
return o && value.test(o[property]);
|
|
484
|
+
});
|
|
485
|
+
},
|
|
486
|
+
|
|
487
|
+
/**
|
|
488
|
+
* Filter by a function. Returns a <i>new</i> collection that has been filtered.
|
|
489
|
+
* The passed function will be called with each object in the collection.
|
|
490
|
+
* If the function returns true, the value is included otherwise it is filtered.
|
|
491
|
+
* @param {Function} fn The function to be called, it will receive the args o (the object), k (the key)
|
|
492
|
+
* @param {Object} scope (optional) The scope of the function (defaults to this)
|
|
493
|
+
* @return {MixedCollection} The new filtered collection
|
|
494
|
+
*/
|
|
495
|
+
filterBy : function(fn, scope){
|
|
496
|
+
var r = new Ext.util.MixedCollection();
|
|
497
|
+
r.getKey = this.getKey;
|
|
498
|
+
var k = this.keys, it = this.items;
|
|
499
|
+
for(var i = 0, len = it.length; i < len; i++){
|
|
500
|
+
if(fn.call(scope||this, it[i], k[i])){
|
|
501
|
+
r.add(k[i], it[i]);
|
|
502
|
+
}
|
|
503
|
+
}
|
|
504
|
+
return r;
|
|
505
|
+
},
|
|
506
|
+
|
|
507
|
+
/**
|
|
508
|
+
* Finds the index of the first matching object in this collection by a specific property/value.
|
|
509
|
+
* @param {String} property The name of a property on your objects.
|
|
510
|
+
* @param {String/RegExp} value A string that the property values
|
|
511
|
+
* should start with or a RegExp to test against the property.
|
|
512
|
+
* @param {Number} start (optional) The index to start searching at (defaults to 0).
|
|
513
|
+
* @param {Boolean} anyMatch (optional) True to match any part of the string, not just the beginning.
|
|
514
|
+
* @param {Boolean} caseSensitive (optional) True for case sensitive comparison.
|
|
515
|
+
* @return {Number} The matched index or -1
|
|
516
|
+
*/
|
|
517
|
+
findIndex : function(property, value, start, anyMatch, caseSensitive){
|
|
518
|
+
if(Ext.isEmpty(value, false)){
|
|
519
|
+
return -1;
|
|
520
|
+
}
|
|
521
|
+
value = this.createValueMatcher(value, anyMatch, caseSensitive);
|
|
522
|
+
return this.findIndexBy(function(o){
|
|
523
|
+
return o && value.test(o[property]);
|
|
524
|
+
}, null, start);
|
|
525
|
+
},
|
|
526
|
+
|
|
527
|
+
/**
|
|
528
|
+
* Find the index of the first matching object in this collection by a function.
|
|
529
|
+
* If the function returns <i>true</i> it is considered a match.
|
|
530
|
+
* @param {Function} fn The function to be called, it will receive the args o (the object), k (the key).
|
|
531
|
+
* @param {Object} scope (optional) The scope of the function (defaults to this).
|
|
532
|
+
* @param {Number} start (optional) The index to start searching at (defaults to 0).
|
|
533
|
+
* @return {Number} The matched index or -1
|
|
534
|
+
*/
|
|
535
|
+
findIndexBy : function(fn, scope, start){
|
|
536
|
+
var k = this.keys, it = this.items;
|
|
537
|
+
for(var i = (start||0), len = it.length; i < len; i++){
|
|
538
|
+
if(fn.call(scope||this, it[i], k[i])){
|
|
539
|
+
return i;
|
|
540
|
+
}
|
|
541
|
+
}
|
|
542
|
+
return -1;
|
|
543
|
+
},
|
|
544
|
+
|
|
545
|
+
// private
|
|
546
|
+
createValueMatcher : function(value, anyMatch, caseSensitive){
|
|
547
|
+
if(!value.exec){ // not a regex
|
|
548
|
+
value = String(value);
|
|
549
|
+
value = new RegExp((anyMatch === true ? '' : '^') + Ext.escapeRe(value), caseSensitive ? '' : 'i');
|
|
550
|
+
}
|
|
551
|
+
return value;
|
|
552
|
+
},
|
|
553
|
+
|
|
554
|
+
/**
|
|
555
|
+
* Creates a shallow copy of this collection
|
|
556
|
+
* @return {MixedCollection}
|
|
557
|
+
*/
|
|
558
|
+
clone : function(){
|
|
559
|
+
var r = new Ext.util.MixedCollection();
|
|
560
|
+
var k = this.keys, it = this.items;
|
|
561
|
+
for(var i = 0, len = it.length; i < len; i++){
|
|
562
|
+
r.add(k[i], it[i]);
|
|
563
|
+
}
|
|
564
|
+
r.getKey = this.getKey;
|
|
565
|
+
return r;
|
|
566
|
+
}
|
|
567
|
+
});
|
|
568
|
+
/**
|
|
569
|
+
* This method calls {@link #item item()}.
|
|
570
|
+
* Returns the item associated with the passed key OR index. Key has priority over index. This is the equivalent
|
|
571
|
+
* of calling {@link #key} first, then if nothing matched calling {@link #itemAt}.
|
|
572
|
+
* @param {String/Number} key The key or index of the item.
|
|
573
|
+
* @return {Object} If the item is found, returns the item. If the item was not found, returns <tt>undefined</tt>.
|
|
574
|
+
* If an item was found, but is a Class, returns <tt>null</tt>.
|
|
575
|
+
*/
|
|
576
|
+
Ext.util.MixedCollection.prototype.get = Ext.util.MixedCollection.prototype.item;
|