extjs-rails 4.1.0.alpha1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +18 -0
- data/Gemfile +4 -0
- data/LICENSE +36 -0
- data/README.md +29 -0
- data/Rakefile +2 -0
- data/app/assets/javascripts/extjs-rails/extjs-rails.js +1 -0
- data/app/assets/javascripts/extjs-rails/index.js.erb +9 -0
- data/app/assets/javascripts/extjs-rails/sdk.jsb3 +2017 -0
- data/app/assets/javascripts/extjs-rails/src/AbstractComponent.js +3290 -0
- data/app/assets/javascripts/extjs-rails/src/AbstractManager.js +144 -0
- data/app/assets/javascripts/extjs-rails/src/AbstractPlugin.js +72 -0
- data/app/assets/javascripts/extjs-rails/src/Action.js +276 -0
- data/app/assets/javascripts/extjs-rails/src/Ajax.js +99 -0
- data/app/assets/javascripts/extjs-rails/src/Component.js +1344 -0
- data/app/assets/javascripts/extjs-rails/src/ComponentLoader.js +202 -0
- data/app/assets/javascripts/extjs-rails/src/ComponentManager.js +47 -0
- data/app/assets/javascripts/extjs-rails/src/ComponentQuery.js +521 -0
- data/app/assets/javascripts/extjs-rails/src/Editor.js +494 -0
- data/app/assets/javascripts/extjs-rails/src/ElementLoader.js +404 -0
- data/app/assets/javascripts/extjs-rails/src/FocusManager.js +712 -0
- data/app/assets/javascripts/extjs-rails/src/Img.js +111 -0
- data/app/assets/javascripts/extjs-rails/src/Layer.js +543 -0
- data/app/assets/javascripts/extjs-rails/src/LoadMask.js +432 -0
- data/app/assets/javascripts/extjs-rails/src/ModelManager.js +186 -0
- data/app/assets/javascripts/extjs-rails/src/PluginManager.js +110 -0
- data/app/assets/javascripts/extjs-rails/src/ProgressBar.js +336 -0
- data/app/assets/javascripts/extjs-rails/src/Shadow.js +233 -0
- data/app/assets/javascripts/extjs-rails/src/ShadowPool.js +43 -0
- data/app/assets/javascripts/extjs-rails/src/Template.js +331 -0
- data/app/assets/javascripts/extjs-rails/src/XTemplate.js +365 -0
- data/app/assets/javascripts/extjs-rails/src/XTemplateCompiler.js +450 -0
- data/app/assets/javascripts/extjs-rails/src/XTemplateParser.js +249 -0
- data/app/assets/javascripts/extjs-rails/src/ZIndexManager.js +519 -0
- data/app/assets/javascripts/extjs-rails/src/app/Application.js +271 -0
- data/app/assets/javascripts/extjs-rails/src/app/Controller.js +458 -0
- data/app/assets/javascripts/extjs-rails/src/app/EventBus.js +112 -0
- data/app/assets/javascripts/extjs-rails/src/button/Button.js +1483 -0
- data/app/assets/javascripts/extjs-rails/src/button/Cycle.js +215 -0
- data/app/assets/javascripts/extjs-rails/src/button/Split.js +99 -0
- data/app/assets/javascripts/extjs-rails/src/chart/Callout.js +140 -0
- data/app/assets/javascripts/extjs-rails/src/chart/Chart.js +966 -0
- data/app/assets/javascripts/extjs-rails/src/chart/Highlight.js +172 -0
- data/app/assets/javascripts/extjs-rails/src/chart/Label.js +241 -0
- data/app/assets/javascripts/extjs-rails/src/chart/Legend.js +474 -0
- data/app/assets/javascripts/extjs-rails/src/chart/LegendItem.js +217 -0
- data/app/assets/javascripts/extjs-rails/src/chart/Mask.js +230 -0
- data/app/assets/javascripts/extjs-rails/src/chart/MaskLayer.js +48 -0
- data/app/assets/javascripts/extjs-rails/src/chart/Navigation.js +79 -0
- data/app/assets/javascripts/extjs-rails/src/chart/Shape.js +106 -0
- data/app/assets/javascripts/extjs-rails/src/chart/Tip.js +98 -0
- data/app/assets/javascripts/extjs-rails/src/chart/TipSurface.js +42 -0
- data/app/assets/javascripts/extjs-rails/src/chart/axis/Abstract.js +73 -0
- data/app/assets/javascripts/extjs-rails/src/chart/axis/Axis.js +961 -0
- data/app/assets/javascripts/extjs-rails/src/chart/axis/Category.js +130 -0
- data/app/assets/javascripts/extjs-rails/src/chart/axis/Gauge.js +203 -0
- data/app/assets/javascripts/extjs-rails/src/chart/axis/Numeric.js +235 -0
- data/app/assets/javascripts/extjs-rails/src/chart/axis/Radial.js +204 -0
- data/app/assets/javascripts/extjs-rails/src/chart/axis/Time.js +135 -0
- data/app/assets/javascripts/extjs-rails/src/chart/series/Area.js +803 -0
- data/app/assets/javascripts/extjs-rails/src/chart/series/Bar.js +853 -0
- data/app/assets/javascripts/extjs-rails/src/chart/series/Cartesian.js +328 -0
- data/app/assets/javascripts/extjs-rails/src/chart/series/Column.js +104 -0
- data/app/assets/javascripts/extjs-rails/src/chart/series/Gauge.js +490 -0
- data/app/assets/javascripts/extjs-rails/src/chart/series/Line.js +1104 -0
- data/app/assets/javascripts/extjs-rails/src/chart/series/Pie.js +1072 -0
- data/app/assets/javascripts/extjs-rails/src/chart/series/Radar.js +440 -0
- data/app/assets/javascripts/extjs-rails/src/chart/series/Scatter.js +668 -0
- data/app/assets/javascripts/extjs-rails/src/chart/series/Series.js +443 -0
- data/app/assets/javascripts/extjs-rails/src/chart/theme/Base.js +175 -0
- data/app/assets/javascripts/extjs-rails/src/chart/theme/Theme.js +253 -0
- data/app/assets/javascripts/extjs-rails/src/container/AbstractContainer.js +1062 -0
- data/app/assets/javascripts/extjs-rails/src/container/ButtonGroup.js +143 -0
- data/app/assets/javascripts/extjs-rails/src/container/Container.js +212 -0
- data/app/assets/javascripts/extjs-rails/src/container/DockingContainer.js +265 -0
- data/app/assets/javascripts/extjs-rails/src/container/Viewport.js +184 -0
- data/app/assets/javascripts/extjs-rails/src/core/dom/Element.form.js +50 -0
- data/app/assets/javascripts/extjs-rails/src/core/dom/Element.static-more.js +159 -0
- data/app/assets/javascripts/extjs-rails/src/core/examples/index.html +321 -0
- data/app/assets/javascripts/extjs-rails/src/core/examples/index.js +6 -0
- data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/CTO.js +25 -0
- data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/CoolGuy.js +20 -0
- data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/Developer.js +43 -0
- data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/Gun.js +3 -0
- data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/HumanResource.js +23 -0
- data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/Musician.js +20 -0
- data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/Person.js +50 -0
- data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/ability/CanComposeSongs.js +9 -0
- data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/ability/CanPlayGuitar.js +9 -0
- data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/ability/CanSing.js +18 -0
- data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/deadlock/A.js +3 -0
- data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/deadlock/B.js +3 -0
- data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/deadlock/C.js +3 -0
- data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/deadlock/D.js +3 -0
- data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/deadlock/E.js +3 -0
- data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/notdeadlock/A.js +3 -0
- data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/notdeadlock/B.js +4 -0
- data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/notdeadlock/C.js +3 -0
- data/app/assets/javascripts/extjs-rails/src/core/src/EventManager.js +1167 -0
- data/app/assets/javascripts/extjs-rails/src/core/src/EventObject.js +883 -0
- data/app/assets/javascripts/extjs-rails/src/core/src/Ext-more.js +1283 -0
- data/app/assets/javascripts/extjs-rails/src/core/src/Ext.js +736 -0
- data/app/assets/javascripts/extjs-rails/src/core/src/Support.js +662 -0
- data/app/assets/javascripts/extjs-rails/src/core/src/class/Base.js +1085 -0
- data/app/assets/javascripts/extjs-rails/src/core/src/class/Class.js +676 -0
- data/app/assets/javascripts/extjs-rails/src/core/src/class/ClassManager.js +1591 -0
- data/app/assets/javascripts/extjs-rails/src/core/src/class/Loader.js +1423 -0
- data/app/assets/javascripts/extjs-rails/src/core/src/dom/AbstractElement.alignment.js +173 -0
- data/app/assets/javascripts/extjs-rails/src/core/src/dom/AbstractElement.insertion.js +193 -0
- data/app/assets/javascripts/extjs-rails/src/core/src/dom/AbstractElement.js +681 -0
- data/app/assets/javascripts/extjs-rails/src/core/src/dom/AbstractElement.position.js +356 -0
- data/app/assets/javascripts/extjs-rails/src/core/src/dom/AbstractElement.static.js +474 -0
- data/app/assets/javascripts/extjs-rails/src/core/src/dom/AbstractElement.style.js +851 -0
- data/app/assets/javascripts/extjs-rails/src/core/src/dom/AbstractElement.traversal.js +180 -0
- data/app/assets/javascripts/extjs-rails/src/core/src/dom/AbstractHelper.js +291 -0
- data/app/assets/javascripts/extjs-rails/src/core/src/dom/AbstractQuery.js +72 -0
- data/app/assets/javascripts/extjs-rails/src/core/src/dom/CompositeElement.js +75 -0
- data/app/assets/javascripts/extjs-rails/src/core/src/dom/CompositeElementLite.js +436 -0
- data/app/assets/javascripts/extjs-rails/src/core/src/dom/DomQuery-aria.js +1049 -0
- data/app/assets/javascripts/extjs-rails/src/core/src/env/Browser.js +186 -0
- data/app/assets/javascripts/extjs-rails/src/core/src/env/FeatureDetector.js +274 -0
- data/app/assets/javascripts/extjs-rails/src/core/src/env/OS.js +141 -0
- data/app/assets/javascripts/extjs-rails/src/core/src/lang/Array.js +1205 -0
- data/app/assets/javascripts/extjs-rails/src/core/src/lang/Date.js +1463 -0
- data/app/assets/javascripts/extjs-rails/src/core/src/lang/Error.js +326 -0
- data/app/assets/javascripts/extjs-rails/src/core/src/lang/Function.js +485 -0
- data/app/assets/javascripts/extjs-rails/src/core/src/lang/Number.js +175 -0
- data/app/assets/javascripts/extjs-rails/src/core/src/lang/Object.js +606 -0
- data/app/assets/javascripts/extjs-rails/src/core/src/lang/String.js +333 -0
- data/app/assets/javascripts/extjs-rails/src/core/src/misc/JSON.js +236 -0
- data/app/assets/javascripts/extjs-rails/src/core/src/perf/Accumulator.js +244 -0
- data/app/assets/javascripts/extjs-rails/src/core/src/perf/Monitor.js +197 -0
- data/app/assets/javascripts/extjs-rails/src/core/src/util/DelayedTask.js +71 -0
- data/app/assets/javascripts/extjs-rails/src/core/src/util/Event.js +215 -0
- data/app/assets/javascripts/extjs-rails/src/core/src/util/Format.js +551 -0
- data/app/assets/javascripts/extjs-rails/src/core/src/util/TaskManager.js +417 -0
- data/app/assets/javascripts/extjs-rails/src/core/src/version/Version.js +364 -0
- data/app/assets/javascripts/extjs-rails/src/core/test/unit/README.MD +91 -0
- data/app/assets/javascripts/extjs-rails/src/core/test/unit/bootstrap.js +39 -0
- data/app/assets/javascripts/extjs-rails/src/core/test/unit/build/build-data.js +34 -0
- data/app/assets/javascripts/extjs-rails/src/core/test/unit/build/build.sh +2 -0
- data/app/assets/javascripts/extjs-rails/src/core/test/unit/data.js +27 -0
- data/app/assets/javascripts/extjs-rails/src/core/test/unit/index.html +15 -0
- data/app/assets/javascripts/extjs-rails/src/core/test/unit/other_specs/dom.html +40 -0
- data/app/assets/javascripts/extjs-rails/src/core/test/unit/other_specs/dom/extjs-api.js +12 -0
- data/app/assets/javascripts/extjs-rails/src/core/test/unit/other_specs/dom/platform-api.js +134 -0
- data/app/assets/javascripts/extjs-rails/src/core/test/unit/other_specs/dom/sanity.js +4 -0
- data/app/assets/javascripts/extjs-rails/src/core/test/unit/other_specs/dom/touch-api-out.js +128 -0
- data/app/assets/javascripts/extjs-rails/src/core/test/unit/other_specs/dom/touch-api.js +89 -0
- data/app/assets/javascripts/extjs-rails/src/core/test/unit/other_specs/env/Environment.js +357 -0
- data/app/assets/javascripts/extjs-rails/src/core/test/unit/resources/APITest.js +37 -0
- data/app/assets/javascripts/extjs-rails/src/core/test/unit/resources/jsb3.js +14 -0
- data/app/assets/javascripts/extjs-rails/src/core/test/unit/resources/test-setup.js +137 -0
- data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/EventManager.js +629 -0
- data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/Ext-mess.backup +198 -0
- data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/Ext-more.js +520 -0
- data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/Ext.js +1550 -0
- data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/Support.js +250 -0
- data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/class/Base.js +47 -0
- data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/class/Class.js +561 -0
- data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/class/ClassManager.js +555 -0
- data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/dom/CompositeElementLite.js +409 -0
- data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/dom/DomHelper.js +444 -0
- data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/dom/Element.insertion.js +342 -0
- data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/dom/Element.js +731 -0
- data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/dom/Element.static.js +201 -0
- data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/dom/Element.style.js +118 -0
- data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/dom/Element.traversal.js +336 -0
- data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/lang/Array.js +1229 -0
- data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/lang/Date.js +697 -0
- data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/lang/Error.js +277 -0
- data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/lang/Function.js +536 -0
- data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/lang/Number.js +323 -0
- data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/lang/Object.js +591 -0
- data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/lang/String.js +451 -0
- data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/misc/JSON.js +252 -0
- data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/util/Format.js +521 -0
- data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/version/Version.js +148 -0
- data/app/assets/javascripts/extjs-rails/src/core/test/unit/specs.html +19 -0
- data/app/assets/javascripts/extjs-rails/src/data/AbstractStore.js +887 -0
- data/app/assets/javascripts/extjs-rails/src/data/ArrayStore.js +74 -0
- data/app/assets/javascripts/extjs-rails/src/data/Batch.js +236 -0
- data/app/assets/javascripts/extjs-rails/src/data/BufferStore.js +13 -0
- data/app/assets/javascripts/extjs-rails/src/data/Connection.js +969 -0
- data/app/assets/javascripts/extjs-rails/src/data/DirectStore.js +50 -0
- data/app/assets/javascripts/extjs-rails/src/data/Errors.js +52 -0
- data/app/assets/javascripts/extjs-rails/src/data/Field.js +341 -0
- data/app/assets/javascripts/extjs-rails/src/data/IdGenerator.js +198 -0
- data/app/assets/javascripts/extjs-rails/src/data/JsonP.js +253 -0
- data/app/assets/javascripts/extjs-rails/src/data/JsonPStore.js +51 -0
- data/app/assets/javascripts/extjs-rails/src/data/JsonStore.js +60 -0
- data/app/assets/javascripts/extjs-rails/src/data/Model.js +1673 -0
- data/app/assets/javascripts/extjs-rails/src/data/NodeInterface.js +1294 -0
- data/app/assets/javascripts/extjs-rails/src/data/NodeStore.js +254 -0
- data/app/assets/javascripts/extjs-rails/src/data/Operation.js +331 -0
- data/app/assets/javascripts/extjs-rails/src/data/Request.js +40 -0
- data/app/assets/javascripts/extjs-rails/src/data/ResultSet.js +56 -0
- data/app/assets/javascripts/extjs-rails/src/data/SequentialIdGenerator.js +61 -0
- data/app/assets/javascripts/extjs-rails/src/data/SortTypes.js +125 -0
- data/app/assets/javascripts/extjs-rails/src/data/Store.js +2609 -0
- data/app/assets/javascripts/extjs-rails/src/data/StoreManager.js +156 -0
- data/app/assets/javascripts/extjs-rails/src/data/Tree.js +290 -0
- data/app/assets/javascripts/extjs-rails/src/data/TreeStore.js +655 -0
- data/app/assets/javascripts/extjs-rails/src/data/Types.js +190 -0
- data/app/assets/javascripts/extjs-rails/src/data/UuidGenerator.js +215 -0
- data/app/assets/javascripts/extjs-rails/src/data/XmlStore.js +76 -0
- data/app/assets/javascripts/extjs-rails/src/data/association/Association.js +243 -0
- data/app/assets/javascripts/extjs-rails/src/data/association/BelongsTo.js +291 -0
- data/app/assets/javascripts/extjs-rails/src/data/association/HasMany.js +289 -0
- data/app/assets/javascripts/extjs-rails/src/data/association/HasOne.js +304 -0
- data/app/assets/javascripts/extjs-rails/src/data/proxy/Ajax.js +282 -0
- data/app/assets/javascripts/extjs-rails/src/data/proxy/Client.js +21 -0
- data/app/assets/javascripts/extjs-rails/src/data/proxy/Direct.js +181 -0
- data/app/assets/javascripts/extjs-rails/src/data/proxy/JsonP.js +313 -0
- data/app/assets/javascripts/extjs-rails/src/data/proxy/LocalStorage.js +69 -0
- data/app/assets/javascripts/extjs-rails/src/data/proxy/Memory.js +156 -0
- data/app/assets/javascripts/extjs-rails/src/data/proxy/Proxy.js +433 -0
- data/app/assets/javascripts/extjs-rails/src/data/proxy/Rest.js +173 -0
- data/app/assets/javascripts/extjs-rails/src/data/proxy/Server.js +460 -0
- data/app/assets/javascripts/extjs-rails/src/data/proxy/SessionStorage.js +39 -0
- data/app/assets/javascripts/extjs-rails/src/data/proxy/WebStorage.js +546 -0
- data/app/assets/javascripts/extjs-rails/src/data/reader/Array.js +68 -0
- data/app/assets/javascripts/extjs-rails/src/data/reader/Json.js +383 -0
- data/app/assets/javascripts/extjs-rails/src/data/reader/Reader.js +735 -0
- data/app/assets/javascripts/extjs-rails/src/data/reader/Xml.js +292 -0
- data/app/assets/javascripts/extjs-rails/src/data/validations.js +149 -0
- data/app/assets/javascripts/extjs-rails/src/data/writer/Json.js +81 -0
- data/app/assets/javascripts/extjs-rails/src/data/writer/Writer.js +147 -0
- data/app/assets/javascripts/extjs-rails/src/data/writer/Xml.js +88 -0
- data/app/assets/javascripts/extjs-rails/src/dd/DD.js +300 -0
- data/app/assets/javascripts/extjs-rails/src/dd/DDProxy.js +204 -0
- data/app/assets/javascripts/extjs-rails/src/dd/DDTarget.js +171 -0
- data/app/assets/javascripts/extjs-rails/src/dd/DragDrop.js +1101 -0
- data/app/assets/javascripts/extjs-rails/src/dd/DragDropManager.js +1264 -0
- data/app/assets/javascripts/extjs-rails/src/dd/DragSource.js +392 -0
- data/app/assets/javascripts/extjs-rails/src/dd/DragTracker.js +562 -0
- data/app/assets/javascripts/extjs-rails/src/dd/DragZone.js +137 -0
- data/app/assets/javascripts/extjs-rails/src/dd/DropTarget.js +118 -0
- data/app/assets/javascripts/extjs-rails/src/dd/DropZone.js +254 -0
- data/app/assets/javascripts/extjs-rails/src/dd/Registry.js +117 -0
- data/app/assets/javascripts/extjs-rails/src/dd/ScrollManager.js +218 -0
- data/app/assets/javascripts/extjs-rails/src/dd/StatusProxy.js +179 -0
- data/app/assets/javascripts/extjs-rails/src/diag/layout/Context.js +523 -0
- data/app/assets/javascripts/extjs-rails/src/diag/layout/ContextItem.js +179 -0
- data/app/assets/javascripts/extjs-rails/src/direct/Event.js +35 -0
- data/app/assets/javascripts/extjs-rails/src/direct/ExceptionEvent.js +16 -0
- data/app/assets/javascripts/extjs-rails/src/direct/JsonProvider.js +82 -0
- data/app/assets/javascripts/extjs-rails/src/direct/Manager.js +263 -0
- data/app/assets/javascripts/extjs-rails/src/direct/PollingProvider.js +156 -0
- data/app/assets/javascripts/extjs-rails/src/direct/Provider.js +96 -0
- data/app/assets/javascripts/extjs-rails/src/direct/RemotingEvent.js +24 -0
- data/app/assets/javascripts/extjs-rails/src/direct/RemotingMethod.js +100 -0
- data/app/assets/javascripts/extjs-rails/src/direct/RemotingProvider.js +510 -0
- data/app/assets/javascripts/extjs-rails/src/direct/Transaction.js +41 -0
- data/app/assets/javascripts/extjs-rails/src/dom/Element.alignment.js +378 -0
- data/app/assets/javascripts/extjs-rails/src/dom/Element.anim.js +962 -0
- data/app/assets/javascripts/extjs-rails/src/dom/Element.dd.js +40 -0
- data/app/assets/javascripts/extjs-rails/src/dom/Element.fx.js +194 -0
- data/app/assets/javascripts/extjs-rails/src/dom/Element.js +1407 -0
- data/app/assets/javascripts/extjs-rails/src/dom/Element.position.js +501 -0
- data/app/assets/javascripts/extjs-rails/src/dom/Element.scroll.js +214 -0
- data/app/assets/javascripts/extjs-rails/src/dom/Element.style.js +792 -0
- data/app/assets/javascripts/extjs-rails/src/dom/Element.traversal.js +8 -0
- data/app/assets/javascripts/extjs-rails/src/dom/Helper.js +466 -0
- data/app/assets/javascripts/extjs-rails/src/dom/Query.js +1067 -0
- data/app/assets/javascripts/extjs-rails/src/draw/Color.js +303 -0
- data/app/assets/javascripts/extjs-rails/src/draw/Component.js +245 -0
- data/app/assets/javascripts/extjs-rails/src/draw/CompositeSprite.js +299 -0
- data/app/assets/javascripts/extjs-rails/src/draw/Draw.js +1217 -0
- data/app/assets/javascripts/extjs-rails/src/draw/Matrix.js +183 -0
- data/app/assets/javascripts/extjs-rails/src/draw/Sprite.js +554 -0
- data/app/assets/javascripts/extjs-rails/src/draw/SpriteDD.js +87 -0
- data/app/assets/javascripts/extjs-rails/src/draw/Surface.js +1001 -0
- data/app/assets/javascripts/extjs-rails/src/draw/Text.js +175 -0
- data/app/assets/javascripts/extjs-rails/src/draw/engine/ImageExporter.js +106 -0
- data/app/assets/javascripts/extjs-rails/src/draw/engine/Svg.js +734 -0
- data/app/assets/javascripts/extjs-rails/src/draw/engine/SvgExporter.js +280 -0
- data/app/assets/javascripts/extjs-rails/src/draw/engine/Vml.js +916 -0
- data/app/assets/javascripts/extjs-rails/src/flash/Component.js +248 -0
- data/app/assets/javascripts/extjs-rails/src/form/Basic.js +1018 -0
- data/app/assets/javascripts/extjs-rails/src/form/CheckboxGroup.js +441 -0
- data/app/assets/javascripts/extjs-rails/src/form/CheckboxManager.js +26 -0
- data/app/assets/javascripts/extjs-rails/src/form/FieldAncestor.js +210 -0
- data/app/assets/javascripts/extjs-rails/src/form/FieldContainer.js +290 -0
- data/app/assets/javascripts/extjs-rails/src/form/FieldSet.js +506 -0
- data/app/assets/javascripts/extjs-rails/src/form/Label.js +110 -0
- data/app/assets/javascripts/extjs-rails/src/form/Labelable.js +764 -0
- data/app/assets/javascripts/extjs-rails/src/form/Panel.js +335 -0
- data/app/assets/javascripts/extjs-rails/src/form/RadioGroup.js +124 -0
- data/app/assets/javascripts/extjs-rails/src/form/RadioManager.js +26 -0
- data/app/assets/javascripts/extjs-rails/src/form/action/Action.js +307 -0
- data/app/assets/javascripts/extjs-rails/src/form/action/DirectLoad.js +107 -0
- data/app/assets/javascripts/extjs-rails/src/form/action/DirectSubmit.js +119 -0
- data/app/assets/javascripts/extjs-rails/src/form/action/Load.js +120 -0
- data/app/assets/javascripts/extjs-rails/src/form/action/StandardSubmit.js +34 -0
- data/app/assets/javascripts/extjs-rails/src/form/action/Submit.js +257 -0
- data/app/assets/javascripts/extjs-rails/src/form/field/Base.js +813 -0
- data/app/assets/javascripts/extjs-rails/src/form/field/Checkbox.js +505 -0
- data/app/assets/javascripts/extjs-rails/src/form/field/ComboBox.js +1427 -0
- data/app/assets/javascripts/extjs-rails/src/form/field/Date.js +578 -0
- data/app/assets/javascripts/extjs-rails/src/form/field/Display.js +155 -0
- data/app/assets/javascripts/extjs-rails/src/form/field/Field.js +430 -0
- data/app/assets/javascripts/extjs-rails/src/form/field/File.js +265 -0
- data/app/assets/javascripts/extjs-rails/src/form/field/Hidden.js +75 -0
- data/app/assets/javascripts/extjs-rails/src/form/field/HtmlEditor.js +1439 -0
- data/app/assets/javascripts/extjs-rails/src/form/field/Number.js +380 -0
- data/app/assets/javascripts/extjs-rails/src/form/field/Picker.js +321 -0
- data/app/assets/javascripts/extjs-rails/src/form/field/Radio.js +279 -0
- data/app/assets/javascripts/extjs-rails/src/form/field/Spinner.js +321 -0
- data/app/assets/javascripts/extjs-rails/src/form/field/Text.js +727 -0
- data/app/assets/javascripts/extjs-rails/src/form/field/TextArea.js +228 -0
- data/app/assets/javascripts/extjs-rails/src/form/field/Time.js +459 -0
- data/app/assets/javascripts/extjs-rails/src/form/field/Trigger.js +469 -0
- data/app/assets/javascripts/extjs-rails/src/form/field/VTypes.js +172 -0
- data/app/assets/javascripts/extjs-rails/src/fx/Anim.js +472 -0
- data/app/assets/javascripts/extjs-rails/src/fx/Animator.js +410 -0
- data/app/assets/javascripts/extjs-rails/src/fx/CubicBezier.js +77 -0
- data/app/assets/javascripts/extjs-rails/src/fx/Easing.js +136 -0
- data/app/assets/javascripts/extjs-rails/src/fx/Manager.js +353 -0
- data/app/assets/javascripts/extjs-rails/src/fx/PropertyHandler.js +381 -0
- data/app/assets/javascripts/extjs-rails/src/fx/Queue.js +123 -0
- data/app/assets/javascripts/extjs-rails/src/fx/target/Component.js +118 -0
- data/app/assets/javascripts/extjs-rails/src/fx/target/CompositeElement.js +46 -0
- data/app/assets/javascripts/extjs-rails/src/fx/target/CompositeElementCSS.js +22 -0
- data/app/assets/javascripts/extjs-rails/src/fx/target/CompositeSprite.js +34 -0
- data/app/assets/javascripts/extjs-rails/src/fx/target/Element.js +83 -0
- data/app/assets/javascripts/extjs-rails/src/fx/target/ElementCSS.js +77 -0
- data/app/assets/javascripts/extjs-rails/src/fx/target/Sprite.js +128 -0
- data/app/assets/javascripts/extjs-rails/src/fx/target/Target.js +36 -0
- data/app/assets/javascripts/extjs-rails/src/grid/CellEditor.js +172 -0
- data/app/assets/javascripts/extjs-rails/src/grid/ColumnComponentLayout.js +34 -0
- data/app/assets/javascripts/extjs-rails/src/grid/ColumnLayout.js +201 -0
- data/app/assets/javascripts/extjs-rails/src/grid/Lockable.js +863 -0
- data/app/assets/javascripts/extjs-rails/src/grid/LockingView.js +169 -0
- data/app/assets/javascripts/extjs-rails/src/grid/PagingScroller.js +539 -0
- data/app/assets/javascripts/extjs-rails/src/grid/Panel.js +393 -0
- data/app/assets/javascripts/extjs-rails/src/grid/RowEditor.js +731 -0
- data/app/assets/javascripts/extjs-rails/src/grid/RowNumberer.js +76 -0
- data/app/assets/javascripts/extjs-rails/src/grid/Scroller.js +5 -0
- data/app/assets/javascripts/extjs-rails/src/grid/View.js +44 -0
- data/app/assets/javascripts/extjs-rails/src/grid/ViewDropZone.js +41 -0
- data/app/assets/javascripts/extjs-rails/src/grid/column/Action.js +318 -0
- data/app/assets/javascripts/extjs-rails/src/grid/column/Boolean.js +82 -0
- data/app/assets/javascripts/extjs-rails/src/grid/column/Column.js +835 -0
- data/app/assets/javascripts/extjs-rails/src/grid/column/Date.js +63 -0
- data/app/assets/javascripts/extjs-rails/src/grid/column/Number.js +52 -0
- data/app/assets/javascripts/extjs-rails/src/grid/column/Template.js +58 -0
- data/app/assets/javascripts/extjs-rails/src/grid/feature/AbstractSummary.js +154 -0
- data/app/assets/javascripts/extjs-rails/src/grid/feature/Chunking.js +77 -0
- data/app/assets/javascripts/extjs-rails/src/grid/feature/Feature.js +158 -0
- data/app/assets/javascripts/extjs-rails/src/grid/feature/Grouping.js +822 -0
- data/app/assets/javascripts/extjs-rails/src/grid/feature/GroupingSummary.js +243 -0
- data/app/assets/javascripts/extjs-rails/src/grid/feature/RowBody.js +116 -0
- data/app/assets/javascripts/extjs-rails/src/grid/feature/RowWrap.js +120 -0
- data/app/assets/javascripts/extjs-rails/src/grid/feature/Summary.js +167 -0
- data/app/assets/javascripts/extjs-rails/src/grid/header/Container.js +965 -0
- data/app/assets/javascripts/extjs-rails/src/grid/header/DragZone.js +69 -0
- data/app/assets/javascripts/extjs-rails/src/grid/header/DropZone.js +265 -0
- data/app/assets/javascripts/extjs-rails/src/grid/plugin/CellEditing.js +453 -0
- data/app/assets/javascripts/extjs-rails/src/grid/plugin/DragDrop.js +254 -0
- data/app/assets/javascripts/extjs-rails/src/grid/plugin/Editing.js +561 -0
- data/app/assets/javascripts/extjs-rails/src/grid/plugin/HeaderReorderer.js +49 -0
- data/app/assets/javascripts/extjs-rails/src/grid/plugin/HeaderResizer.js +292 -0
- data/app/assets/javascripts/extjs-rails/src/grid/plugin/RowEditing.js +339 -0
- data/app/assets/javascripts/extjs-rails/src/grid/property/Grid.js +351 -0
- data/app/assets/javascripts/extjs-rails/src/grid/property/HeaderContainer.js +109 -0
- data/app/assets/javascripts/extjs-rails/src/grid/property/Property.js +36 -0
- data/app/assets/javascripts/extjs-rails/src/grid/property/Store.js +141 -0
- data/app/assets/javascripts/extjs-rails/src/layout/ClassList.js +90 -0
- data/app/assets/javascripts/extjs-rails/src/layout/Context.js +1232 -0
- data/app/assets/javascripts/extjs-rails/src/layout/ContextItem.js +1470 -0
- data/app/assets/javascripts/extjs-rails/src/layout/Layout.js +761 -0
- data/app/assets/javascripts/extjs-rails/src/layout/component/Auto.js +220 -0
- data/app/assets/javascripts/extjs-rails/src/layout/component/Body.js +80 -0
- data/app/assets/javascripts/extjs-rails/src/layout/component/BoundList.js +95 -0
- data/app/assets/javascripts/extjs-rails/src/layout/component/Button.js +261 -0
- data/app/assets/javascripts/extjs-rails/src/layout/component/Component.js +427 -0
- data/app/assets/javascripts/extjs-rails/src/layout/component/Dock.js +1132 -0
- data/app/assets/javascripts/extjs-rails/src/layout/component/Draw.js +79 -0
- data/app/assets/javascripts/extjs-rails/src/layout/component/FieldSet.js +62 -0
- data/app/assets/javascripts/extjs-rails/src/layout/component/ProgressBar.js +54 -0
- data/app/assets/javascripts/extjs-rails/src/layout/component/Tab.js +23 -0
- data/app/assets/javascripts/extjs-rails/src/layout/component/field/ComboBox.js +52 -0
- data/app/assets/javascripts/extjs-rails/src/layout/component/field/Field.js +372 -0
- data/app/assets/javascripts/extjs-rails/src/layout/component/field/FieldContainer.js +48 -0
- data/app/assets/javascripts/extjs-rails/src/layout/component/field/HtmlEditor.js +54 -0
- data/app/assets/javascripts/extjs-rails/src/layout/component/field/Slider.js +58 -0
- data/app/assets/javascripts/extjs-rails/src/layout/component/field/Text.js +75 -0
- data/app/assets/javascripts/extjs-rails/src/layout/component/field/TextArea.js +51 -0
- data/app/assets/javascripts/extjs-rails/src/layout/component/field/Trigger.js +132 -0
- data/app/assets/javascripts/extjs-rails/src/layout/container/Absolute.js +121 -0
- data/app/assets/javascripts/extjs-rails/src/layout/container/Accordion.js +308 -0
- data/app/assets/javascripts/extjs-rails/src/layout/container/Anchor.js +403 -0
- data/app/assets/javascripts/extjs-rails/src/layout/container/Auto.js +70 -0
- data/app/assets/javascripts/extjs-rails/src/layout/container/Border-old-js +1079 -0
- data/app/assets/javascripts/extjs-rails/src/layout/container/Border.js +816 -0
- data/app/assets/javascripts/extjs-rails/src/layout/container/Box.js +929 -0
- data/app/assets/javascripts/extjs-rails/src/layout/container/Card.js +361 -0
- data/app/assets/javascripts/extjs-rails/src/layout/container/CheckboxGroup.js +376 -0
- data/app/assets/javascripts/extjs-rails/src/layout/container/Column.js +234 -0
- data/app/assets/javascripts/extjs-rails/src/layout/container/Container.js +961 -0
- data/app/assets/javascripts/extjs-rails/src/layout/container/Editor.js +74 -0
- data/app/assets/javascripts/extjs-rails/src/layout/container/Fit.js +287 -0
- data/app/assets/javascripts/extjs-rails/src/layout/container/Form.js +157 -0
- data/app/assets/javascripts/extjs-rails/src/layout/container/HBox.js +134 -0
- data/app/assets/javascripts/extjs-rails/src/layout/container/Table.js +412 -0
- data/app/assets/javascripts/extjs-rails/src/layout/container/VBox.js +139 -0
- data/app/assets/javascripts/extjs-rails/src/layout/container/boxOverflow/Menu.js +365 -0
- data/app/assets/javascripts/extjs-rails/src/layout/container/boxOverflow/None.js +83 -0
- data/app/assets/javascripts/extjs-rails/src/layout/container/boxOverflow/Scroller.js +475 -0
- data/app/assets/javascripts/extjs-rails/src/menu/CheckItem.js +169 -0
- data/app/assets/javascripts/extjs-rails/src/menu/ColorPicker.js +110 -0
- data/app/assets/javascripts/extjs-rails/src/menu/DatePicker.js +100 -0
- data/app/assets/javascripts/extjs-rails/src/menu/Item.js +553 -0
- data/app/assets/javascripts/extjs-rails/src/menu/KeyNav.js +134 -0
- data/app/assets/javascripts/extjs-rails/src/menu/Manager.js +219 -0
- data/app/assets/javascripts/extjs-rails/src/menu/Menu.js +579 -0
- data/app/assets/javascripts/extjs-rails/src/menu/Separator.js +126 -0
- data/app/assets/javascripts/extjs-rails/src/panel/AbstractPanel.js +323 -0
- data/app/assets/javascripts/extjs-rails/src/panel/DD.js +99 -0
- data/app/assets/javascripts/extjs-rails/src/panel/Header.js +518 -0
- data/app/assets/javascripts/extjs-rails/src/panel/Panel.js +2150 -0
- data/app/assets/javascripts/extjs-rails/src/panel/Proxy.js +131 -0
- data/app/assets/javascripts/extjs-rails/src/panel/Table.js +1018 -0
- data/app/assets/javascripts/extjs-rails/src/panel/Tool.js +304 -0
- data/app/assets/javascripts/extjs-rails/src/picker/Color.js +219 -0
- data/app/assets/javascripts/extjs-rails/src/picker/Date.js +1140 -0
- data/app/assets/javascripts/extjs-rails/src/picker/Month.js +490 -0
- data/app/assets/javascripts/extjs-rails/src/picker/Time.js +165 -0
- data/app/assets/javascripts/extjs-rails/src/resizer/BorderSplitter.js +22 -0
- data/app/assets/javascripts/extjs-rails/src/resizer/BorderSplitterTracker.js +210 -0
- data/app/assets/javascripts/extjs-rails/src/resizer/Handle.js +29 -0
- data/app/assets/javascripts/extjs-rails/src/resizer/ResizeTracker.js +346 -0
- data/app/assets/javascripts/extjs-rails/src/resizer/Resizer.js +477 -0
- data/app/assets/javascripts/extjs-rails/src/resizer/Splitter.js +242 -0
- data/app/assets/javascripts/extjs-rails/src/resizer/SplitterTracker.js +230 -0
- data/app/assets/javascripts/extjs-rails/src/selection/CellModel.js +395 -0
- data/app/assets/javascripts/extjs-rails/src/selection/CheckboxModel.js +234 -0
- data/app/assets/javascripts/extjs-rails/src/selection/DataViewModel.js +160 -0
- data/app/assets/javascripts/extjs-rails/src/selection/Model.js +646 -0
- data/app/assets/javascripts/extjs-rails/src/selection/RowModel.js +499 -0
- data/app/assets/javascripts/extjs-rails/src/selection/TreeModel.js +78 -0
- data/app/assets/javascripts/extjs-rails/src/slider/Multi.js +835 -0
- data/app/assets/javascripts/extjs-rails/src/slider/Single.js +56 -0
- data/app/assets/javascripts/extjs-rails/src/slider/Thumb.js +259 -0
- data/app/assets/javascripts/extjs-rails/src/slider/Tip.js +130 -0
- data/app/assets/javascripts/extjs-rails/src/state/CookieProvider.js +120 -0
- data/app/assets/javascripts/extjs-rails/src/state/LocalStorageProvider.js +72 -0
- data/app/assets/javascripts/extjs-rails/src/state/Manager.js +70 -0
- data/app/assets/javascripts/extjs-rails/src/state/Provider.js +182 -0
- data/app/assets/javascripts/extjs-rails/src/state/Stateful.js +364 -0
- data/app/assets/javascripts/extjs-rails/src/tab/Bar.js +258 -0
- data/app/assets/javascripts/extjs-rails/src/tab/Panel.js +654 -0
- data/app/assets/javascripts/extjs-rails/src/tab/Tab.js +358 -0
- data/app/assets/javascripts/extjs-rails/src/tail.js +10 -0
- data/app/assets/javascripts/extjs-rails/src/tip/QuickTip.js +335 -0
- data/app/assets/javascripts/extjs-rails/src/tip/QuickTipManager.js +239 -0
- data/app/assets/javascripts/extjs-rails/src/tip/Tip.js +160 -0
- data/app/assets/javascripts/extjs-rails/src/tip/ToolTip.js +691 -0
- data/app/assets/javascripts/extjs-rails/src/toolbar/Fill.js +28 -0
- data/app/assets/javascripts/extjs-rails/src/toolbar/Item.js +16 -0
- data/app/assets/javascripts/extjs-rails/src/toolbar/Paging.js +600 -0
- data/app/assets/javascripts/extjs-rails/src/toolbar/Separator.js +23 -0
- data/app/assets/javascripts/extjs-rails/src/toolbar/Spacer.js +33 -0
- data/app/assets/javascripts/extjs-rails/src/toolbar/TextItem.js +57 -0
- data/app/assets/javascripts/extjs-rails/src/toolbar/Toolbar-legacy.js +123 -0
- data/app/assets/javascripts/extjs-rails/src/toolbar/Toolbar.js +447 -0
- data/app/assets/javascripts/extjs-rails/src/tree/Column.js +90 -0
- data/app/assets/javascripts/extjs-rails/src/tree/Panel.js +505 -0
- data/app/assets/javascripts/extjs-rails/src/tree/View.js +658 -0
- data/app/assets/javascripts/extjs-rails/src/tree/ViewDragZone.js +49 -0
- data/app/assets/javascripts/extjs-rails/src/tree/ViewDropZone.js +287 -0
- data/app/assets/javascripts/extjs-rails/src/tree/plugin/TreeViewDragDrop.js +244 -0
- data/app/assets/javascripts/extjs-rails/src/util/AbstractMixedCollection.js +772 -0
- data/app/assets/javascripts/extjs-rails/src/util/Animate.js +426 -0
- data/app/assets/javascripts/extjs-rails/src/util/Bindable.js +102 -0
- data/app/assets/javascripts/extjs-rails/src/util/CSS.js +185 -0
- data/app/assets/javascripts/extjs-rails/src/util/ClickRepeater.js +238 -0
- data/app/assets/javascripts/extjs-rails/src/util/ComponentDragger.js +126 -0
- data/app/assets/javascripts/extjs-rails/src/util/Cookies.js +91 -0
- data/app/assets/javascripts/extjs-rails/src/util/ElementContainer.js +293 -0
- data/app/assets/javascripts/extjs-rails/src/util/Filter.js +159 -0
- data/app/assets/javascripts/extjs-rails/src/util/Floating.js +321 -0
- data/app/assets/javascripts/extjs-rails/src/util/Grouper.js +26 -0
- data/app/assets/javascripts/extjs-rails/src/util/HashMap.js +356 -0
- data/app/assets/javascripts/extjs-rails/src/util/History.js +285 -0
- data/app/assets/javascripts/extjs-rails/src/util/Inflector.js +297 -0
- data/app/assets/javascripts/extjs-rails/src/util/KeyMap.js +427 -0
- data/app/assets/javascripts/extjs-rails/src/util/KeyNav.js +239 -0
- data/app/assets/javascripts/extjs-rails/src/util/LruCache.js +257 -0
- data/app/assets/javascripts/extjs-rails/src/util/Memento.js +131 -0
- data/app/assets/javascripts/extjs-rails/src/util/MixedCollection.js +239 -0
- data/app/assets/javascripts/extjs-rails/src/util/Observable.js +1003 -0
- data/app/assets/javascripts/extjs-rails/src/util/Offset.js +60 -0
- data/app/assets/javascripts/extjs-rails/src/util/Point.js +93 -0
- data/app/assets/javascripts/extjs-rails/src/util/ProtoElement.js +205 -0
- data/app/assets/javascripts/extjs-rails/src/util/Queue.js +76 -0
- data/app/assets/javascripts/extjs-rails/src/util/Region.js +388 -0
- data/app/assets/javascripts/extjs-rails/src/util/Renderable.js +1079 -0
- data/app/assets/javascripts/extjs-rails/src/util/Sortable.js +248 -0
- data/app/assets/javascripts/extjs-rails/src/util/Sorter.js +179 -0
- data/app/assets/javascripts/extjs-rails/src/util/TextMetrics.js +148 -0
- data/app/assets/javascripts/extjs-rails/src/view/AbstractView.js +1103 -0
- data/app/assets/javascripts/extjs-rails/src/view/BoundList.js +207 -0
- data/app/assets/javascripts/extjs-rails/src/view/BoundListKeyNav.js +92 -0
- data/app/assets/javascripts/extjs-rails/src/view/DragZone.js +106 -0
- data/app/assets/javascripts/extjs-rails/src/view/DropZone.js +240 -0
- data/app/assets/javascripts/extjs-rails/src/view/Table.js +1229 -0
- data/app/assets/javascripts/extjs-rails/src/view/TableChunker.js +139 -0
- data/app/assets/javascripts/extjs-rails/src/view/View.js +636 -0
- data/app/assets/javascripts/extjs-rails/src/window/MessageBox.js +880 -0
- data/app/assets/javascripts/extjs-rails/src/window/Window-legacy.js +56 -0
- data/app/assets/javascripts/extjs-rails/src/window/Window.js +793 -0
- data/extjs-rails.gemspec +24 -0
- data/lib/extjs-rails.rb +7 -0
- data/lib/extjs-rails/engine.rb +7 -0
- data/lib/extjs-rails/version.rb +5 -0
- metadata +660 -0
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A custom drag proxy implementation specific to {@link Ext.panel.Panel}s. This class
|
|
3
|
+
* is primarily used internally for the Panel's drag drop implementation, and
|
|
4
|
+
* should never need to be created directly.
|
|
5
|
+
* @private
|
|
6
|
+
*/
|
|
7
|
+
Ext.define('Ext.panel.Proxy', {
|
|
8
|
+
|
|
9
|
+
alternateClassName: 'Ext.dd.PanelProxy',
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* @cfg {Boolean} [moveOnDrag=true]
|
|
13
|
+
* True to move the panel to the dragged position when dropped
|
|
14
|
+
*/
|
|
15
|
+
moveOnDrag: true,
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Creates new panel proxy.
|
|
19
|
+
* @param {Ext.panel.Panel} panel The {@link Ext.panel.Panel} to proxy for
|
|
20
|
+
* @param {Object} [config] Config object
|
|
21
|
+
*/
|
|
22
|
+
constructor: function(panel, config){
|
|
23
|
+
var me = this;
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* @property panel
|
|
27
|
+
* @type Ext.panel.Panel
|
|
28
|
+
*/
|
|
29
|
+
me.panel = panel;
|
|
30
|
+
me.id = me.panel.id +'-ddproxy';
|
|
31
|
+
Ext.apply(me, config);
|
|
32
|
+
},
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* @cfg {Boolean} insertProxy
|
|
36
|
+
* True to insert a placeholder proxy element while dragging the panel, false to drag with no proxy.
|
|
37
|
+
* Most Panels are not absolute positioned and therefore we need to reserve this space.
|
|
38
|
+
*/
|
|
39
|
+
insertProxy: true,
|
|
40
|
+
|
|
41
|
+
// private overrides
|
|
42
|
+
setStatus: Ext.emptyFn,
|
|
43
|
+
reset: Ext.emptyFn,
|
|
44
|
+
update: Ext.emptyFn,
|
|
45
|
+
stop: Ext.emptyFn,
|
|
46
|
+
sync: Ext.emptyFn,
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Gets the proxy's element
|
|
50
|
+
* @return {Ext.Element} The proxy's element
|
|
51
|
+
*/
|
|
52
|
+
getEl: function(){
|
|
53
|
+
return this.ghost.el;
|
|
54
|
+
},
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Gets the proxy's ghost Panel
|
|
58
|
+
* @return {Ext.panel.Panel} The proxy's ghost Panel
|
|
59
|
+
*/
|
|
60
|
+
getGhost: function(){
|
|
61
|
+
return this.ghost;
|
|
62
|
+
},
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Gets the proxy element. This is the element that represents where the
|
|
66
|
+
* Panel was before we started the drag operation.
|
|
67
|
+
* @return {Ext.Element} The proxy's element
|
|
68
|
+
*/
|
|
69
|
+
getProxy: function(){
|
|
70
|
+
return this.proxy;
|
|
71
|
+
},
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Hides the proxy
|
|
75
|
+
*/
|
|
76
|
+
hide : function(){
|
|
77
|
+
var me = this;
|
|
78
|
+
|
|
79
|
+
if (me.ghost) {
|
|
80
|
+
if (me.proxy) {
|
|
81
|
+
me.proxy.remove();
|
|
82
|
+
delete me.proxy;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
// Unghost the Panel, do not move the Panel to where the ghost was
|
|
86
|
+
me.panel.unghost(null, me.moveOnDrag);
|
|
87
|
+
delete me.ghost;
|
|
88
|
+
}
|
|
89
|
+
},
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Shows the proxy
|
|
93
|
+
*/
|
|
94
|
+
show: function(){
|
|
95
|
+
var me = this,
|
|
96
|
+
panelSize;
|
|
97
|
+
|
|
98
|
+
if (!me.ghost) {
|
|
99
|
+
panelSize = me.panel.getSize();
|
|
100
|
+
me.panel.el.setVisibilityMode(Ext.Element.DISPLAY);
|
|
101
|
+
me.ghost = me.panel.ghost();
|
|
102
|
+
if (me.insertProxy) {
|
|
103
|
+
// bc Panels aren't absolute positioned we need to take up the space
|
|
104
|
+
// of where the panel previously was
|
|
105
|
+
me.proxy = me.panel.el.insertSibling({cls: Ext.baseCSSPrefix + 'panel-dd-spacer'});
|
|
106
|
+
me.proxy.setSize(panelSize);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
},
|
|
110
|
+
|
|
111
|
+
// private
|
|
112
|
+
repair: function(xy, callback, scope) {
|
|
113
|
+
this.hide();
|
|
114
|
+
Ext.callback(callback, scope || this);
|
|
115
|
+
},
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* Moves the proxy to a different position in the DOM. This is typically
|
|
119
|
+
* called while dragging the Panel to keep the proxy sync'd to the Panel's
|
|
120
|
+
* location.
|
|
121
|
+
* @param {HTMLElement} parentNode The proxy's parent DOM node
|
|
122
|
+
* @param {HTMLElement} [before] The sibling node before which the
|
|
123
|
+
* proxy should be inserted. Defaults to the parent's last child if not
|
|
124
|
+
* specified.
|
|
125
|
+
*/
|
|
126
|
+
moveProxy : function(parentNode, before){
|
|
127
|
+
if (this.proxy) {
|
|
128
|
+
parentNode.insertBefore(this.proxy.dom, before);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
});
|
|
@@ -0,0 +1,1018 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @author Nicolas Ferrero
|
|
3
|
+
*
|
|
4
|
+
* TablePanel is the basis of both {@link Ext.tree.Panel TreePanel} and {@link Ext.grid.Panel GridPanel}.
|
|
5
|
+
*
|
|
6
|
+
* TablePanel aggregates:
|
|
7
|
+
*
|
|
8
|
+
* - a Selection Model
|
|
9
|
+
* - a View
|
|
10
|
+
* - a Store
|
|
11
|
+
* - Scrollers
|
|
12
|
+
* - Ext.grid.header.Container
|
|
13
|
+
*/
|
|
14
|
+
Ext.define('Ext.panel.Table', {
|
|
15
|
+
extend: 'Ext.panel.Panel',
|
|
16
|
+
|
|
17
|
+
alias: 'widget.tablepanel',
|
|
18
|
+
|
|
19
|
+
uses: [
|
|
20
|
+
'Ext.selection.RowModel',
|
|
21
|
+
'Ext.grid.PagingScroller',
|
|
22
|
+
'Ext.grid.header.Container',
|
|
23
|
+
'Ext.grid.Lockable'
|
|
24
|
+
],
|
|
25
|
+
|
|
26
|
+
extraBaseCls: Ext.baseCSSPrefix + 'grid',
|
|
27
|
+
extraBodyCls: Ext.baseCSSPrefix + 'grid-body',
|
|
28
|
+
|
|
29
|
+
layout: 'fit',
|
|
30
|
+
/**
|
|
31
|
+
* @property {Boolean} hasView
|
|
32
|
+
* True to indicate that a view has been injected into the panel.
|
|
33
|
+
*/
|
|
34
|
+
hasView: false,
|
|
35
|
+
|
|
36
|
+
// each panel should dictate what viewType and selType to use
|
|
37
|
+
/**
|
|
38
|
+
* @cfg {String} viewType
|
|
39
|
+
* An xtype of view to use. This is automatically set to 'gridview' by {@link Ext.grid.Panel Grid}
|
|
40
|
+
* and to 'treeview' by {@link Ext.tree.Panel Tree}.
|
|
41
|
+
*/
|
|
42
|
+
viewType: null,
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* @cfg {Object} viewConfig
|
|
46
|
+
* A config object that will be applied to the grid's UI view. Any of the config options available for
|
|
47
|
+
* {@link Ext.view.Table} can be specified here. This option is ignored if {@link #view} is specified.
|
|
48
|
+
*/
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* @cfg {Ext.view.Table} view
|
|
52
|
+
* The {@link Ext.view.Table} used by the grid. Use {@link #viewConfig} to just supply some config options to
|
|
53
|
+
* view (instead of creating an entire View instance).
|
|
54
|
+
*/
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* @cfg {String} selType
|
|
58
|
+
* An xtype of selection model to use. Defaults to 'rowmodel'. This is used to create selection model if just
|
|
59
|
+
* a config object or nothing at all given in {@link #selModel} config.
|
|
60
|
+
*/
|
|
61
|
+
selType: 'rowmodel',
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* @cfg {Ext.selection.Model/Object} selModel
|
|
65
|
+
* A {@link Ext.selection.Model selection model} instance or config object. In latter case the {@link #selType}
|
|
66
|
+
* config option determines to which type of selection model this config is applied.
|
|
67
|
+
*/
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* @cfg {Boolean} multiSelect
|
|
71
|
+
* True to enable 'MULTI' selection mode on selection model. See {@link Ext.selection.Model#mode}.
|
|
72
|
+
*/
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* @cfg {Boolean} simpleSelect
|
|
76
|
+
* True to enable 'SIMPLE' selection mode on selection model. See {@link Ext.selection.Model#mode}.
|
|
77
|
+
*/
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* @cfg {Ext.data.Store} store (required)
|
|
81
|
+
* The {@link Ext.data.Store Store} the grid should use as its data source.
|
|
82
|
+
*/
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* @cfg {String/Boolean} scroll
|
|
86
|
+
* Scrollers configuration. Valid values are 'both', 'horizontal' or 'vertical'.
|
|
87
|
+
* True implies 'both'. False implies 'none'.
|
|
88
|
+
*/
|
|
89
|
+
scroll: true,
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* @cfg {Ext.grid.column.Column[]/Object} columns
|
|
93
|
+
* An array of {@link Ext.grid.column.Column column} definition objects which define all columns that appear in this
|
|
94
|
+
* grid. Each column definition provides the header text for the column, and a definition of where the data for that
|
|
95
|
+
* column comes from.
|
|
96
|
+
*
|
|
97
|
+
* This can also be a configuration object for a {Ext.grid.header.Container HeaderContainer} which may override
|
|
98
|
+
* certain default configurations if necessary. For example, the special layout may be overridden to use a simpler
|
|
99
|
+
* layout, or one can set default values shared by all columns:
|
|
100
|
+
*
|
|
101
|
+
* columns: {
|
|
102
|
+
* items: [
|
|
103
|
+
* {
|
|
104
|
+
* text: "Column A"
|
|
105
|
+
* dataIndex: "field_A"
|
|
106
|
+
* },{
|
|
107
|
+
* text: "Column B",
|
|
108
|
+
* dataIndex: "field_B"
|
|
109
|
+
* },
|
|
110
|
+
* ...
|
|
111
|
+
* ],
|
|
112
|
+
* defaults: {
|
|
113
|
+
* flex: 1
|
|
114
|
+
* }
|
|
115
|
+
* }
|
|
116
|
+
*/
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* @cfg {Boolean} forceFit
|
|
120
|
+
* Ttrue to force the columns to fit into the available width. Headers are first sized according to configuration,
|
|
121
|
+
* whether that be a specific width, or flex. Then they are all proportionally changed in width so that the entire
|
|
122
|
+
* content width is used.
|
|
123
|
+
*/
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* @cfg {Ext.grid.feature.Feature[]} features
|
|
127
|
+
* An array of grid Features to be added to this grid. See {@link Ext.grid.feature.Feature} for usage.
|
|
128
|
+
*/
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* @cfg {Boolean} [hideHeaders=false]
|
|
132
|
+
* True to hide column headers.
|
|
133
|
+
*/
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* @cfg {Boolean} deferRowRender
|
|
137
|
+
* Defaults to true to enable deferred row rendering.
|
|
138
|
+
*
|
|
139
|
+
* This allows the View to execute a refresh quickly, with the expensive update of the row structure deferred so
|
|
140
|
+
* that layouts with GridPanels appear, and lay out more quickly.
|
|
141
|
+
*/
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* @cfg {Object} verticalScroller
|
|
145
|
+
* A config object to be used when configuring the {@link Ext.grid.PagingScroller scroll monitor} to control
|
|
146
|
+
* refreshing of data in an "infinite grid".
|
|
147
|
+
*
|
|
148
|
+
* Configurations of this object allow fine tuning of data caching which can improve performance and usability
|
|
149
|
+
* of the infinite grid.
|
|
150
|
+
*/
|
|
151
|
+
|
|
152
|
+
deferRowRender: true,
|
|
153
|
+
|
|
154
|
+
/**
|
|
155
|
+
* @cfg {Boolean} sortableColumns
|
|
156
|
+
* False to disable column sorting via clicking the header and via the Sorting menu items.
|
|
157
|
+
*/
|
|
158
|
+
sortableColumns: true,
|
|
159
|
+
|
|
160
|
+
/**
|
|
161
|
+
* @cfg {Boolean} [enableLocking=false]
|
|
162
|
+
* True to enable locking support for this grid. Alternatively, locking will also be automatically
|
|
163
|
+
* enabled if any of the columns in the column configuration contain the locked config option.
|
|
164
|
+
*/
|
|
165
|
+
enableLocking: false,
|
|
166
|
+
|
|
167
|
+
// private property used to determine where to go down to find views
|
|
168
|
+
// this is here to support locking.
|
|
169
|
+
scrollerOwner: true,
|
|
170
|
+
|
|
171
|
+
/**
|
|
172
|
+
* @cfg {Boolean} [enableColumnMove=true]
|
|
173
|
+
* False to disable column dragging within this grid.
|
|
174
|
+
*/
|
|
175
|
+
enableColumnMove: true,
|
|
176
|
+
|
|
177
|
+
/**
|
|
178
|
+
* @cfg {Boolean} [restrictColumnReorder=false]
|
|
179
|
+
* True to constrain column dragging so that a column cannot be dragged in or out of it's
|
|
180
|
+
* current group. Only relevant while {@link #enableColumnMove} is enabled.
|
|
181
|
+
*/
|
|
182
|
+
restrictColumnReorder: false,
|
|
183
|
+
|
|
184
|
+
/**
|
|
185
|
+
* @cfg {Boolean} [enableColumnResize=true]
|
|
186
|
+
* False to disable column resizing within this grid.
|
|
187
|
+
*/
|
|
188
|
+
enableColumnResize: true,
|
|
189
|
+
|
|
190
|
+
/**
|
|
191
|
+
* @cfg {Boolean} [enableColumnHide=true]
|
|
192
|
+
* False to disable column hiding within this grid.
|
|
193
|
+
*/
|
|
194
|
+
enableColumnHide: true,
|
|
195
|
+
|
|
196
|
+
/**
|
|
197
|
+
* @cfg {Boolean} columnLines Adds column line styling
|
|
198
|
+
*/
|
|
199
|
+
|
|
200
|
+
/**
|
|
201
|
+
* @cfg {Boolean} [rowLines=true] Adds row line styling
|
|
202
|
+
*/
|
|
203
|
+
rowLines: true,
|
|
204
|
+
|
|
205
|
+
/**
|
|
206
|
+
* @cfg {Boolean} [disableSelection=false]
|
|
207
|
+
* True to disable selection model.
|
|
208
|
+
*/
|
|
209
|
+
|
|
210
|
+
/**
|
|
211
|
+
* @cfg {String} emptyText Default text (html tags are accepted) to display in the Panel body when the Store
|
|
212
|
+
* is empty. When specified, and the Store is empty, the text will be rendered inside a DIV with the CSS class "x-grid-empty".
|
|
213
|
+
*/
|
|
214
|
+
|
|
215
|
+
/**
|
|
216
|
+
* @property {Boolean} optimizedColumnMove
|
|
217
|
+
* If you are writing a grid plugin or a {Ext.grid.feature.Feature Feature} which creates a column-based structure which
|
|
218
|
+
* needs a view refresh when columns are moved, then set this property in the grid.
|
|
219
|
+
*
|
|
220
|
+
* An example is the built in {@link Ext.grid.feature.AbstractSummary Summary} Feature. This creates summary rows, and the
|
|
221
|
+
* summary columns must be in the same order as the data columns. This plugin sets the `optimizedColumnMove` to `false.
|
|
222
|
+
*/
|
|
223
|
+
|
|
224
|
+
initComponent: function() {
|
|
225
|
+
//<debug>
|
|
226
|
+
if (!this.viewType) {
|
|
227
|
+
Ext.Error.raise("You must specify a viewType config.");
|
|
228
|
+
}
|
|
229
|
+
if (this.headers) {
|
|
230
|
+
Ext.Error.raise("The headers config is not supported. Please specify columns instead.");
|
|
231
|
+
}
|
|
232
|
+
//</debug>
|
|
233
|
+
|
|
234
|
+
var me = this,
|
|
235
|
+
scroll = me.scroll,
|
|
236
|
+
vertical = false,
|
|
237
|
+
horizontal = false,
|
|
238
|
+
headerCtCfg = me.columns || me.colModel,
|
|
239
|
+
view,
|
|
240
|
+
border = me.border,
|
|
241
|
+
i, len;
|
|
242
|
+
|
|
243
|
+
if (me.columnLines) {
|
|
244
|
+
me.addCls(Ext.baseCSSPrefix + 'grid-with-col-lines');
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
if (me.rowLines) {
|
|
248
|
+
me.addCls(Ext.baseCSSPrefix + 'grid-with-row-lines');
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
// Look up the configured Store. If none configured, use the fieldless, empty Store defined in Ext.data.Store.
|
|
252
|
+
me.store = Ext.data.StoreManager.lookup(me.store || 'ext-empty-store');
|
|
253
|
+
|
|
254
|
+
//<debug>
|
|
255
|
+
if (!headerCtCfg) {
|
|
256
|
+
Ext.Error.raise("A column configuration must be specified");
|
|
257
|
+
}
|
|
258
|
+
//</debug>
|
|
259
|
+
|
|
260
|
+
// The columns/colModel config may be either a fully instantiated HeaderContainer, or an array of Column definitions, or a config object of a HeaderContainer
|
|
261
|
+
// Either way, we extract a columns property referencing an array of Column definitions.
|
|
262
|
+
if (headerCtCfg instanceof Ext.grid.header.Container) {
|
|
263
|
+
me.headerCt = headerCtCfg;
|
|
264
|
+
me.headerCt.border = border;
|
|
265
|
+
me.columns = me.headerCt.items.items;
|
|
266
|
+
} else {
|
|
267
|
+
if (Ext.isArray(headerCtCfg)) {
|
|
268
|
+
headerCtCfg = {
|
|
269
|
+
items: headerCtCfg,
|
|
270
|
+
border: border
|
|
271
|
+
};
|
|
272
|
+
}
|
|
273
|
+
Ext.apply(headerCtCfg, {
|
|
274
|
+
forceFit: me.forceFit,
|
|
275
|
+
sortable: me.sortableColumns,
|
|
276
|
+
enableColumnMove: me.enableColumnMove,
|
|
277
|
+
enableColumnResize: me.enableColumnResize,
|
|
278
|
+
enableColumnHide: me.enableColumnHide,
|
|
279
|
+
border: border,
|
|
280
|
+
restrictReorder: me.restrictColumnReorder
|
|
281
|
+
});
|
|
282
|
+
me.columns = headerCtCfg.items;
|
|
283
|
+
|
|
284
|
+
// If any of the Column objects contain a locked property, and are not processed, this is a lockable TablePanel, a
|
|
285
|
+
// special view will be injected by the Ext.grid.Lockable mixin, so no processing of .
|
|
286
|
+
if (me.enableLocking || Ext.ComponentQuery.query('{locked !== undefined}{processed != true}', me.columns).length) {
|
|
287
|
+
me.self.mixin('lockable', Ext.grid.Lockable);
|
|
288
|
+
me.injectLockable();
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
me.scrollTask = new Ext.util.DelayedTask(me.syncHorizontalScroll, me);
|
|
293
|
+
|
|
294
|
+
me.addEvents(
|
|
295
|
+
// documented on GridPanel
|
|
296
|
+
'reconfigure',
|
|
297
|
+
/**
|
|
298
|
+
* @event viewready
|
|
299
|
+
* Fires when the grid view is available (use this for selecting a default row).
|
|
300
|
+
* @param {Ext.panel.Table} this
|
|
301
|
+
*/
|
|
302
|
+
'viewready'
|
|
303
|
+
);
|
|
304
|
+
|
|
305
|
+
me.bodyCls = me.bodyCls || '';
|
|
306
|
+
me.bodyCls += (' ' + me.extraBodyCls);
|
|
307
|
+
|
|
308
|
+
me.cls = me.cls || '';
|
|
309
|
+
me.cls += (' ' + me.extraBaseCls);
|
|
310
|
+
|
|
311
|
+
// autoScroll is not a valid configuration
|
|
312
|
+
delete me.autoScroll;
|
|
313
|
+
|
|
314
|
+
// If this TablePanel is lockable (Either configured lockable, or any of the defined columns has a 'locked' property)
|
|
315
|
+
// than a special lockable view containing 2 side-by-side grids will have been injected so we do not need to set up any UI.
|
|
316
|
+
if (!me.hasView) {
|
|
317
|
+
|
|
318
|
+
// If we were not configured with a ready-made headerCt (either by direct config with a headerCt property, or by passing
|
|
319
|
+
// a HeaderContainer instance as the 'columns' property, then go ahead and create one from the config object created above.
|
|
320
|
+
if (!me.headerCt) {
|
|
321
|
+
me.headerCt = new Ext.grid.header.Container(headerCtCfg);
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
// Extract the array of Column objects
|
|
325
|
+
me.columns = me.headerCt.items.items;
|
|
326
|
+
|
|
327
|
+
// If the Store is paging blocks of the dataset in, then it can only be sorted remotely.
|
|
328
|
+
if (me.store.buffered && !me.store.remoteSort) {
|
|
329
|
+
for (i = 0, len = me.columns.length; i < len; i++) {
|
|
330
|
+
me.columns[i].sortable = false;
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
if (me.hideHeaders) {
|
|
335
|
+
me.headerCt.height = 0;
|
|
336
|
+
me.headerCt.addCls(Ext.baseCSSPrefix + 'grid-header-ct-hidden');
|
|
337
|
+
me.addCls(Ext.baseCSSPrefix + 'grid-header-hidden');
|
|
338
|
+
// IE Quirks Mode fix
|
|
339
|
+
// If hidden configuration option was used, several layout calculations will be bypassed.
|
|
340
|
+
if (Ext.isIEQuirks) {
|
|
341
|
+
me.headerCt.style = {
|
|
342
|
+
display: 'none'
|
|
343
|
+
};
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
// turn both on.
|
|
348
|
+
if (scroll === true || scroll === 'both') {
|
|
349
|
+
vertical = horizontal = true;
|
|
350
|
+
} else if (scroll === 'horizontal') {
|
|
351
|
+
horizontal = true;
|
|
352
|
+
} else if (scroll === 'vertical') {
|
|
353
|
+
vertical = true;
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
me.relayHeaderCtEvents(me.headerCt);
|
|
357
|
+
me.features = me.features || [];
|
|
358
|
+
if (!Ext.isArray(me.features)) {
|
|
359
|
+
me.features = [me.features];
|
|
360
|
+
}
|
|
361
|
+
me.dockedItems = [].concat(me.dockedItems || []);
|
|
362
|
+
me.dockedItems.unshift(me.headerCt);
|
|
363
|
+
me.viewConfig = me.viewConfig || {};
|
|
364
|
+
|
|
365
|
+
// Buffered scrolling must preserve scroll on refresh
|
|
366
|
+
if (me.store && me.store.buffered) {
|
|
367
|
+
me.viewConfig.preserveScrollOnRefresh = true;
|
|
368
|
+
} else if (me.invalidateScrollerOnRefresh !== undefined) {
|
|
369
|
+
me.viewConfig.preserveScrollOnRefresh = !me.invalidateScrollerOnRefresh;
|
|
370
|
+
}
|
|
371
|
+
|
|
372
|
+
// AbstractDataView will look up a Store configured as an object
|
|
373
|
+
// getView converts viewConfig into a View instance
|
|
374
|
+
view = me.getView();
|
|
375
|
+
|
|
376
|
+
me.items = [view];
|
|
377
|
+
me.hasView = true;
|
|
378
|
+
|
|
379
|
+
if (vertical) {
|
|
380
|
+
// If the Store is buffered, create a PagingScroller to monitor the View's scroll progress,
|
|
381
|
+
// load the Store's prefetch buffer when it detects we are nearing an edge.
|
|
382
|
+
if (me.store.buffered) {
|
|
383
|
+
me.verticalScroller = new Ext.grid.PagingScroller(Ext.apply({
|
|
384
|
+
panel: me,
|
|
385
|
+
store: me.store,
|
|
386
|
+
view: me.view
|
|
387
|
+
}, me.verticalScroller));
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
|
|
391
|
+
if (horizontal) {
|
|
392
|
+
// Add a listener to synchronize the horizontal scroll position of the headers
|
|
393
|
+
// with the table view's element... Unless we are not showing headers!
|
|
394
|
+
if (!me.hideHeaders) {
|
|
395
|
+
view.on({
|
|
396
|
+
scroll: {
|
|
397
|
+
fn: me.onHorizontalScroll,
|
|
398
|
+
element: 'el',
|
|
399
|
+
scope: me
|
|
400
|
+
}
|
|
401
|
+
});
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
|
|
405
|
+
me.mon(view.store, {
|
|
406
|
+
load: me.onStoreLoad,
|
|
407
|
+
scope: me
|
|
408
|
+
});
|
|
409
|
+
me.mon(view, {
|
|
410
|
+
viewready: me.onViewReady,
|
|
411
|
+
refresh: me.onRestoreHorzScroll,
|
|
412
|
+
scope: me
|
|
413
|
+
});
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
// Relay events from the View whether it be a LockingView, or a regular GridView
|
|
417
|
+
this.relayEvents(me.view, [
|
|
418
|
+
/**
|
|
419
|
+
* @event beforeitemmousedown
|
|
420
|
+
* @inheritdoc Ext.view.View#beforeitemmousedown
|
|
421
|
+
*/
|
|
422
|
+
'beforeitemmousedown',
|
|
423
|
+
/**
|
|
424
|
+
* @event beforeitemmouseup
|
|
425
|
+
* @inheritdoc Ext.view.View#beforeitemmouseup
|
|
426
|
+
*/
|
|
427
|
+
'beforeitemmouseup',
|
|
428
|
+
/**
|
|
429
|
+
* @event beforeitemmouseenter
|
|
430
|
+
* @inheritdoc Ext.view.View#beforeitemmouseenter
|
|
431
|
+
*/
|
|
432
|
+
'beforeitemmouseenter',
|
|
433
|
+
/**
|
|
434
|
+
* @event beforeitemmouseleave
|
|
435
|
+
* @inheritdoc Ext.view.View#beforeitemmouseleave
|
|
436
|
+
*/
|
|
437
|
+
'beforeitemmouseleave',
|
|
438
|
+
/**
|
|
439
|
+
* @event beforeitemclick
|
|
440
|
+
* @inheritdoc Ext.view.View#beforeitemclick
|
|
441
|
+
*/
|
|
442
|
+
'beforeitemclick',
|
|
443
|
+
/**
|
|
444
|
+
* @event beforeitemdblclick
|
|
445
|
+
* @inheritdoc Ext.view.View#beforeitemdblclick
|
|
446
|
+
*/
|
|
447
|
+
'beforeitemdblclick',
|
|
448
|
+
/**
|
|
449
|
+
* @event beforeitemcontextmenu
|
|
450
|
+
* @inheritdoc Ext.view.View#beforeitemcontextmenu
|
|
451
|
+
*/
|
|
452
|
+
'beforeitemcontextmenu',
|
|
453
|
+
/**
|
|
454
|
+
* @event itemmousedown
|
|
455
|
+
* @inheritdoc Ext.view.View#itemmousedown
|
|
456
|
+
*/
|
|
457
|
+
'itemmousedown',
|
|
458
|
+
/**
|
|
459
|
+
* @event itemmouseup
|
|
460
|
+
* @inheritdoc Ext.view.View#itemmouseup
|
|
461
|
+
*/
|
|
462
|
+
'itemmouseup',
|
|
463
|
+
/**
|
|
464
|
+
* @event itemmouseenter
|
|
465
|
+
* @inheritdoc Ext.view.View#itemmouseenter
|
|
466
|
+
*/
|
|
467
|
+
'itemmouseenter',
|
|
468
|
+
/**
|
|
469
|
+
* @event itemmouseleave
|
|
470
|
+
* @inheritdoc Ext.view.View#itemmouseleave
|
|
471
|
+
*/
|
|
472
|
+
'itemmouseleave',
|
|
473
|
+
/**
|
|
474
|
+
* @event itemclick
|
|
475
|
+
* @inheritdoc Ext.view.View#itemclick
|
|
476
|
+
*/
|
|
477
|
+
'itemclick',
|
|
478
|
+
/**
|
|
479
|
+
* @event itemdblclick
|
|
480
|
+
* @inheritdoc Ext.view.View#itemdblclick
|
|
481
|
+
*/
|
|
482
|
+
'itemdblclick',
|
|
483
|
+
/**
|
|
484
|
+
* @event itemcontextmenu
|
|
485
|
+
* @inheritdoc Ext.view.View#itemcontextmenu
|
|
486
|
+
*/
|
|
487
|
+
'itemcontextmenu',
|
|
488
|
+
/**
|
|
489
|
+
* @event beforecontainermousedown
|
|
490
|
+
* @inheritdoc Ext.view.View#beforecontainermousedown
|
|
491
|
+
*/
|
|
492
|
+
'beforecontainermousedown',
|
|
493
|
+
/**
|
|
494
|
+
* @event beforecontainermouseup
|
|
495
|
+
* @inheritdoc Ext.view.View#beforecontainermouseup
|
|
496
|
+
*/
|
|
497
|
+
'beforecontainermouseup',
|
|
498
|
+
/**
|
|
499
|
+
* @event beforecontainermouseover
|
|
500
|
+
* @inheritdoc Ext.view.View#beforecontainermouseover
|
|
501
|
+
*/
|
|
502
|
+
'beforecontainermouseover',
|
|
503
|
+
/**
|
|
504
|
+
* @event beforecontainermouseout
|
|
505
|
+
* @inheritdoc Ext.view.View#beforecontainermouseout
|
|
506
|
+
*/
|
|
507
|
+
'beforecontainermouseout',
|
|
508
|
+
/**
|
|
509
|
+
* @event beforecontainerclick
|
|
510
|
+
* @inheritdoc Ext.view.View#beforecontainerclick
|
|
511
|
+
*/
|
|
512
|
+
'beforecontainerclick',
|
|
513
|
+
/**
|
|
514
|
+
* @event beforecontainerdblclick
|
|
515
|
+
* @inheritdoc Ext.view.View#beforecontainerdblclick
|
|
516
|
+
*/
|
|
517
|
+
'beforecontainerdblclick',
|
|
518
|
+
/**
|
|
519
|
+
* @event beforecontainercontextmenu
|
|
520
|
+
* @inheritdoc Ext.view.View#beforecontainercontextmenu
|
|
521
|
+
*/
|
|
522
|
+
'beforecontainercontextmenu',
|
|
523
|
+
/**
|
|
524
|
+
* @event containermouseup
|
|
525
|
+
* @inheritdoc Ext.view.View#containermouseup
|
|
526
|
+
*/
|
|
527
|
+
'containermouseup',
|
|
528
|
+
/**
|
|
529
|
+
* @event containermouseover
|
|
530
|
+
* @inheritdoc Ext.view.View#containermouseover
|
|
531
|
+
*/
|
|
532
|
+
'containermouseover',
|
|
533
|
+
/**
|
|
534
|
+
* @event containermouseout
|
|
535
|
+
* @inheritdoc Ext.view.View#containermouseout
|
|
536
|
+
*/
|
|
537
|
+
'containermouseout',
|
|
538
|
+
/**
|
|
539
|
+
* @event containerclick
|
|
540
|
+
* @inheritdoc Ext.view.View#containerclick
|
|
541
|
+
*/
|
|
542
|
+
'containerclick',
|
|
543
|
+
/**
|
|
544
|
+
* @event containerdblclick
|
|
545
|
+
* @inheritdoc Ext.view.View#containerdblclick
|
|
546
|
+
*/
|
|
547
|
+
'containerdblclick',
|
|
548
|
+
/**
|
|
549
|
+
* @event containercontextmenu
|
|
550
|
+
* @inheritdoc Ext.view.View#containercontextmenu
|
|
551
|
+
*/
|
|
552
|
+
'containercontextmenu',
|
|
553
|
+
/**
|
|
554
|
+
* @event selectionchange
|
|
555
|
+
* @inheritdoc Ext.selection.Model#selectionchange
|
|
556
|
+
*/
|
|
557
|
+
'selectionchange',
|
|
558
|
+
/**
|
|
559
|
+
* @event beforeselect
|
|
560
|
+
* @inheritdoc Ext.selection.RowModel#beforeselect
|
|
561
|
+
*/
|
|
562
|
+
'beforeselect',
|
|
563
|
+
/**
|
|
564
|
+
* @event select
|
|
565
|
+
* @inheritdoc Ext.selection.RowModel#select
|
|
566
|
+
*/
|
|
567
|
+
'select',
|
|
568
|
+
/**
|
|
569
|
+
* @event beforedeselect
|
|
570
|
+
* @inheritdoc Ext.selection.RowModel#beforedeselect
|
|
571
|
+
*/
|
|
572
|
+
'beforedeselect',
|
|
573
|
+
/**
|
|
574
|
+
* @event deselect
|
|
575
|
+
* @inheritdoc Ext.selection.RowModel#deselect
|
|
576
|
+
*/
|
|
577
|
+
'deselect'
|
|
578
|
+
]);
|
|
579
|
+
|
|
580
|
+
me.callParent(arguments);
|
|
581
|
+
me.addStateEvents(['columnresize', 'columnmove', 'columnhide', 'columnshow', 'sortchange']);
|
|
582
|
+
|
|
583
|
+
if (me.headerCt) {
|
|
584
|
+
me.headerCt.on('afterlayout', me.onRestoreHorzScroll, me);
|
|
585
|
+
}
|
|
586
|
+
},
|
|
587
|
+
|
|
588
|
+
relayHeaderCtEvents: function (headerCt) {
|
|
589
|
+
this.relayEvents(headerCt, [
|
|
590
|
+
/**
|
|
591
|
+
* @event columnresize
|
|
592
|
+
* @inheritdoc Ext.grid.header.Container#columnresize
|
|
593
|
+
*/
|
|
594
|
+
'columnresize',
|
|
595
|
+
/**
|
|
596
|
+
* @event columnmove
|
|
597
|
+
* @inheritdoc Ext.grid.header.Container#columnmove
|
|
598
|
+
*/
|
|
599
|
+
'columnmove',
|
|
600
|
+
/**
|
|
601
|
+
* @event columnhide
|
|
602
|
+
* @inheritdoc Ext.grid.header.Container#columnhide
|
|
603
|
+
*/
|
|
604
|
+
'columnhide',
|
|
605
|
+
/**
|
|
606
|
+
* @event columnshow
|
|
607
|
+
* @inheritdoc Ext.grid.header.Container#columnshow
|
|
608
|
+
*/
|
|
609
|
+
'columnshow',
|
|
610
|
+
/**
|
|
611
|
+
* @event sortchange
|
|
612
|
+
* @inheritdoc Ext.grid.header.Container#sortchange
|
|
613
|
+
*/
|
|
614
|
+
'sortchange'
|
|
615
|
+
]);
|
|
616
|
+
},
|
|
617
|
+
|
|
618
|
+
getState: function(){
|
|
619
|
+
var me = this,
|
|
620
|
+
state = me.callParent(),
|
|
621
|
+
sorter = me.store.sorters.first();
|
|
622
|
+
|
|
623
|
+
state = me.addPropertyToState(state, 'columns', (me.headerCt || me).getColumnsState());
|
|
624
|
+
|
|
625
|
+
if (sorter) {
|
|
626
|
+
state = me.addPropertyToState(state, 'sort', {
|
|
627
|
+
property: sorter.property,
|
|
628
|
+
direction: sorter.direction,
|
|
629
|
+
root: sorter.root
|
|
630
|
+
});
|
|
631
|
+
}
|
|
632
|
+
return state;
|
|
633
|
+
},
|
|
634
|
+
|
|
635
|
+
applyState: function(state) {
|
|
636
|
+
var me = this,
|
|
637
|
+
sorter = state.sort,
|
|
638
|
+
store = me.store,
|
|
639
|
+
columns = state.columns;
|
|
640
|
+
|
|
641
|
+
delete state.columns;
|
|
642
|
+
|
|
643
|
+
// Ensure superclass has applied *its* state.
|
|
644
|
+
// AbstractComponent saves dimensions (and anchor/flex) plus collapsed state.
|
|
645
|
+
me.callParent(arguments);
|
|
646
|
+
|
|
647
|
+
if (columns) {
|
|
648
|
+
(me.headerCt || me).applyColumnsState(columns);
|
|
649
|
+
}
|
|
650
|
+
|
|
651
|
+
if (sorter) {
|
|
652
|
+
if (store.remoteSort) {
|
|
653
|
+
// Pass false to prevent a sort from occurring
|
|
654
|
+
store.sort({
|
|
655
|
+
property: sorter.property,
|
|
656
|
+
direction: sorter.direction,
|
|
657
|
+
root: sorter.root
|
|
658
|
+
}, null, false);
|
|
659
|
+
} else {
|
|
660
|
+
store.sort(sorter.property, sorter.direction);
|
|
661
|
+
}
|
|
662
|
+
}
|
|
663
|
+
},
|
|
664
|
+
|
|
665
|
+
/**
|
|
666
|
+
* Returns the store associated with this Panel.
|
|
667
|
+
* @return {Ext.data.Store} The store
|
|
668
|
+
*/
|
|
669
|
+
getStore: function(){
|
|
670
|
+
return this.store;
|
|
671
|
+
},
|
|
672
|
+
|
|
673
|
+
/**
|
|
674
|
+
* Gets the view for this panel.
|
|
675
|
+
* @return {Ext.view.Table}
|
|
676
|
+
*/
|
|
677
|
+
getView: function() {
|
|
678
|
+
var me = this,
|
|
679
|
+
sm;
|
|
680
|
+
|
|
681
|
+
if (!me.view) {
|
|
682
|
+
sm = me.getSelectionModel();
|
|
683
|
+
me.view = Ext.widget(Ext.apply({}, me.viewConfig, {
|
|
684
|
+
|
|
685
|
+
// Features need a reference to the grid, so configure a reference into the View
|
|
686
|
+
grid: me,
|
|
687
|
+
deferInitialRefresh: me.deferRowRender !== false,
|
|
688
|
+
scroll: me.scroll,
|
|
689
|
+
xtype: me.viewType,
|
|
690
|
+
store: me.store,
|
|
691
|
+
headerCt: me.headerCt,
|
|
692
|
+
selModel: sm,
|
|
693
|
+
features: me.features,
|
|
694
|
+
panel: me,
|
|
695
|
+
emptyText : me.emptyText ? '<div class="' + Ext.baseCSSPrefix + 'grid-empty">' + me.emptyText + '</div>' : ''
|
|
696
|
+
}));
|
|
697
|
+
me.mon(me.view, {
|
|
698
|
+
uievent: me.processEvent,
|
|
699
|
+
scope: me
|
|
700
|
+
});
|
|
701
|
+
sm.view = me.view;
|
|
702
|
+
me.headerCt.view = me.view;
|
|
703
|
+
me.relayEvents(me.view, [
|
|
704
|
+
/**
|
|
705
|
+
* @event cellclick
|
|
706
|
+
* Fired when table cell is clicked.
|
|
707
|
+
* @param {Ext.view.Table} this
|
|
708
|
+
* @param {HTMLElement} td The TD element that was clicked.
|
|
709
|
+
* @param {Number} cellIndex
|
|
710
|
+
* @param {Ext.data.Model} record
|
|
711
|
+
* @param {HTMLElement} tr The TR element that was clicked.
|
|
712
|
+
* @param {Number} rowIndex
|
|
713
|
+
* @param {Ext.EventObject} e
|
|
714
|
+
*/
|
|
715
|
+
'cellclick',
|
|
716
|
+
/**
|
|
717
|
+
* @event celldblclick
|
|
718
|
+
* Fired when table cell is double clicked.
|
|
719
|
+
* @param {Ext.view.Table} this
|
|
720
|
+
* @param {HTMLElement} td The TD element that was clicked.
|
|
721
|
+
* @param {Number} cellIndex
|
|
722
|
+
* @param {Ext.data.Model} record
|
|
723
|
+
* @param {HTMLElement} tr The TR element that was clicked.
|
|
724
|
+
* @param {Number} rowIndex
|
|
725
|
+
* @param {Ext.EventObject} e
|
|
726
|
+
*/
|
|
727
|
+
'celldblclick'
|
|
728
|
+
]);
|
|
729
|
+
}
|
|
730
|
+
return me.view;
|
|
731
|
+
},
|
|
732
|
+
|
|
733
|
+
/**
|
|
734
|
+
* @private
|
|
735
|
+
* autoScroll is never valid for all classes which extend TablePanel.
|
|
736
|
+
*/
|
|
737
|
+
setAutoScroll: Ext.emptyFn,
|
|
738
|
+
|
|
739
|
+
/**
|
|
740
|
+
* @private
|
|
741
|
+
* Processes UI events from the view. Propagates them to whatever internal Components need to process them.
|
|
742
|
+
* @param {String} type Event type, eg 'click'
|
|
743
|
+
* @param {Ext.view.Table} view TableView Component
|
|
744
|
+
* @param {HTMLElement} cell Cell HtmlElement the event took place within
|
|
745
|
+
* @param {Number} recordIndex Index of the associated Store Model (-1 if none)
|
|
746
|
+
* @param {Number} cellIndex Cell index within the row
|
|
747
|
+
* @param {Ext.EventObject} e Original event
|
|
748
|
+
*/
|
|
749
|
+
processEvent: function(type, view, cell, recordIndex, cellIndex, e) {
|
|
750
|
+
var me = this,
|
|
751
|
+
header;
|
|
752
|
+
|
|
753
|
+
if (cellIndex !== -1) {
|
|
754
|
+
header = me.headerCt.getGridColumns()[cellIndex];
|
|
755
|
+
return header.processEvent.apply(header, arguments);
|
|
756
|
+
}
|
|
757
|
+
},
|
|
758
|
+
|
|
759
|
+
/**
|
|
760
|
+
* This method is obsolete in 4.1. The closest equivalent in
|
|
761
|
+
* 4.1 is {@link #doLayout}, but it is also possible that no
|
|
762
|
+
* layout is needed.
|
|
763
|
+
* @deprecated 4.1
|
|
764
|
+
*/
|
|
765
|
+
determineScrollbars: function () {
|
|
766
|
+
//<debug>
|
|
767
|
+
Ext.log.warn('Obsolete');
|
|
768
|
+
//</debug>
|
|
769
|
+
},
|
|
770
|
+
|
|
771
|
+
/**
|
|
772
|
+
* This method is obsolete in 4.1. The closest equivalent in 4.1 is
|
|
773
|
+
* {@link Ext.AbstractComponent#updateLayout}, but it is also possible that no layout
|
|
774
|
+
* is needed.
|
|
775
|
+
* @deprecated 4.1
|
|
776
|
+
*/
|
|
777
|
+
invalidateScroller: function () {
|
|
778
|
+
//<debug>
|
|
779
|
+
Ext.log.warn('Obsolete');
|
|
780
|
+
//</debug>
|
|
781
|
+
},
|
|
782
|
+
|
|
783
|
+
scrollByDeltaY: function(yDelta, animate) {
|
|
784
|
+
this.getView().scrollBy(0, yDelta, animate);
|
|
785
|
+
},
|
|
786
|
+
|
|
787
|
+
scrollByDeltaX: function(xDelta, animate) {
|
|
788
|
+
this.getView().scrollBy(xDelta, 0, animate);
|
|
789
|
+
},
|
|
790
|
+
|
|
791
|
+
afterCollapse: function() {
|
|
792
|
+
var me = this;
|
|
793
|
+
me.saveScrollPos();
|
|
794
|
+
me.saveScrollPos();
|
|
795
|
+
me.callParent(arguments);
|
|
796
|
+
},
|
|
797
|
+
|
|
798
|
+
afterExpand: function() {
|
|
799
|
+
var me = this;
|
|
800
|
+
me.callParent(arguments);
|
|
801
|
+
me.restoreScrollPos();
|
|
802
|
+
me.restoreScrollPos();
|
|
803
|
+
},
|
|
804
|
+
|
|
805
|
+
saveScrollPos: Ext.emptyFn,
|
|
806
|
+
|
|
807
|
+
restoreScrollPos: Ext.emptyFn,
|
|
808
|
+
|
|
809
|
+
onHeaderResize: function(){
|
|
810
|
+
this.delayScroll();
|
|
811
|
+
},
|
|
812
|
+
|
|
813
|
+
// Update the view when a header moves
|
|
814
|
+
onHeaderMove: function(headerCt, header, colsToMove, fromIdx, toIdx) {
|
|
815
|
+
var me = this;
|
|
816
|
+
|
|
817
|
+
// If there are Features or Plugins which create DOM which must match column order, they set the optimizedColumnMove flag to false.
|
|
818
|
+
// In this case we must refresh the view on column move.
|
|
819
|
+
if (me.optimizedColumnMove === false) {
|
|
820
|
+
me.view.refresh();
|
|
821
|
+
}
|
|
822
|
+
|
|
823
|
+
// Simplest case for default DOM structure is just to swap the columns round in the view.
|
|
824
|
+
else {
|
|
825
|
+
me.view.moveColumn(fromIdx, toIdx, colsToMove);
|
|
826
|
+
}
|
|
827
|
+
me.delayScroll();
|
|
828
|
+
},
|
|
829
|
+
|
|
830
|
+
// Section onHeaderHide is invoked after view.
|
|
831
|
+
onHeaderHide: function(headerCt, header) {
|
|
832
|
+
this.delayScroll();
|
|
833
|
+
},
|
|
834
|
+
|
|
835
|
+
onHeaderShow: function(headerCt, header) {
|
|
836
|
+
this.delayScroll();
|
|
837
|
+
},
|
|
838
|
+
|
|
839
|
+
delayScroll: function(){
|
|
840
|
+
var target = this.getScrollTarget().el;
|
|
841
|
+
if (target) {
|
|
842
|
+
this.scrollTask.delay(10, null, null, [target.dom.scrollLeft]);
|
|
843
|
+
}
|
|
844
|
+
},
|
|
845
|
+
|
|
846
|
+
/**
|
|
847
|
+
* @private
|
|
848
|
+
* Fires the TablePanel's viewready event when the view declares that its internal DOM is ready
|
|
849
|
+
*/
|
|
850
|
+
onViewReady: function() {
|
|
851
|
+
this.fireEvent('viewready', this);
|
|
852
|
+
},
|
|
853
|
+
|
|
854
|
+
/**
|
|
855
|
+
* @private
|
|
856
|
+
* Tracks when things happen to the view and preserves the horizontal scroll position.
|
|
857
|
+
*/
|
|
858
|
+
onRestoreHorzScroll: function() {
|
|
859
|
+
var left = this.scrollLeftPos;
|
|
860
|
+
if (left) {
|
|
861
|
+
this.syncHorizontalScroll(left);
|
|
862
|
+
}
|
|
863
|
+
},
|
|
864
|
+
|
|
865
|
+
/**
|
|
866
|
+
* Sets the scrollTop of the TablePanel.
|
|
867
|
+
* @param {Number} top
|
|
868
|
+
*/
|
|
869
|
+
setScrollTop: function(top) {
|
|
870
|
+
var me = this,
|
|
871
|
+
rootCmp = me.getScrollerOwner();
|
|
872
|
+
|
|
873
|
+
rootCmp.virtualScrollTop = top;
|
|
874
|
+
},
|
|
875
|
+
|
|
876
|
+
getScrollerOwner: function() {
|
|
877
|
+
var rootCmp = this;
|
|
878
|
+
if (!this.scrollerOwner) {
|
|
879
|
+
rootCmp = this.up('[scrollerOwner]');
|
|
880
|
+
}
|
|
881
|
+
return rootCmp;
|
|
882
|
+
},
|
|
883
|
+
|
|
884
|
+
/**
|
|
885
|
+
* Gets left hand side marker for header resizing.
|
|
886
|
+
* @private
|
|
887
|
+
*/
|
|
888
|
+
getLhsMarker: function() {
|
|
889
|
+
var me = this;
|
|
890
|
+
return me.lhsMarker || (me.lhsMarker = Ext.DomHelper.append(me.el, {
|
|
891
|
+
cls: Ext.baseCSSPrefix + 'grid-resize-marker'
|
|
892
|
+
}, true));
|
|
893
|
+
},
|
|
894
|
+
|
|
895
|
+
/**
|
|
896
|
+
* Gets right hand side marker for header resizing.
|
|
897
|
+
* @private
|
|
898
|
+
*/
|
|
899
|
+
getRhsMarker: function() {
|
|
900
|
+
var me = this;
|
|
901
|
+
|
|
902
|
+
return me.rhsMarker || (me.rhsMarker = Ext.DomHelper.append(me.el, {
|
|
903
|
+
cls: Ext.baseCSSPrefix + 'grid-resize-marker'
|
|
904
|
+
}, true));
|
|
905
|
+
},
|
|
906
|
+
|
|
907
|
+
/**
|
|
908
|
+
* Returns the selection model being used and creates it via the configuration if it has not been created already.
|
|
909
|
+
* @return {Ext.selection.Model} selModel
|
|
910
|
+
*/
|
|
911
|
+
getSelectionModel: function(){
|
|
912
|
+
if (!this.selModel) {
|
|
913
|
+
this.selModel = {};
|
|
914
|
+
}
|
|
915
|
+
|
|
916
|
+
var mode = 'SINGLE',
|
|
917
|
+
type;
|
|
918
|
+
if (this.simpleSelect) {
|
|
919
|
+
mode = 'SIMPLE';
|
|
920
|
+
} else if (this.multiSelect) {
|
|
921
|
+
mode = 'MULTI';
|
|
922
|
+
}
|
|
923
|
+
|
|
924
|
+
Ext.applyIf(this.selModel, {
|
|
925
|
+
allowDeselect: this.allowDeselect,
|
|
926
|
+
mode: mode
|
|
927
|
+
});
|
|
928
|
+
|
|
929
|
+
if (!this.selModel.events) {
|
|
930
|
+
type = this.selModel.selType || this.selType;
|
|
931
|
+
this.selModel = Ext.create('selection.' + type, this.selModel);
|
|
932
|
+
}
|
|
933
|
+
|
|
934
|
+
if (!this.selModel.hasRelaySetup) {
|
|
935
|
+
this.relayEvents(this.selModel, [
|
|
936
|
+
'selectionchange', 'beforeselect', 'beforedeselect', 'select', 'deselect'
|
|
937
|
+
]);
|
|
938
|
+
this.selModel.hasRelaySetup = true;
|
|
939
|
+
}
|
|
940
|
+
|
|
941
|
+
// lock the selection model if user
|
|
942
|
+
// has disabled selection
|
|
943
|
+
if (this.disableSelection) {
|
|
944
|
+
this.selModel.locked = true;
|
|
945
|
+
}
|
|
946
|
+
return this.selModel;
|
|
947
|
+
},
|
|
948
|
+
|
|
949
|
+
getScrollTarget: function(){
|
|
950
|
+
var owner = this.getScrollerOwner(),
|
|
951
|
+
items = owner.query('tableview');
|
|
952
|
+
|
|
953
|
+
return items[1] || items[0];
|
|
954
|
+
},
|
|
955
|
+
|
|
956
|
+
onHorizontalScroll: function(event, target) {
|
|
957
|
+
this.syncHorizontalScroll(target.scrollLeft);
|
|
958
|
+
},
|
|
959
|
+
|
|
960
|
+
syncHorizontalScroll: function(left) {
|
|
961
|
+
var me = this,
|
|
962
|
+
scrollTarget;
|
|
963
|
+
|
|
964
|
+
if (me.rendered) {
|
|
965
|
+
scrollTarget = me.getScrollTarget();
|
|
966
|
+
scrollTarget.el.dom.scrollLeft = left;
|
|
967
|
+
me.headerCt.el.dom.scrollLeft = left;
|
|
968
|
+
me.scrollLeftPos = left;
|
|
969
|
+
}
|
|
970
|
+
},
|
|
971
|
+
|
|
972
|
+
// template method meant to be overriden
|
|
973
|
+
onStoreLoad: Ext.emptyFn,
|
|
974
|
+
|
|
975
|
+
getEditorParent: function() {
|
|
976
|
+
return this.body;
|
|
977
|
+
},
|
|
978
|
+
|
|
979
|
+
bindStore: function(store) {
|
|
980
|
+
var me = this;
|
|
981
|
+
me.store = store;
|
|
982
|
+
me.getView().bindStore(store);
|
|
983
|
+
},
|
|
984
|
+
|
|
985
|
+
beforeDestroy: function(){
|
|
986
|
+
Ext.destroy(this.verticalScroller);
|
|
987
|
+
this.callParent();
|
|
988
|
+
},
|
|
989
|
+
|
|
990
|
+
// documented on GridPanel
|
|
991
|
+
reconfigure: function(store, columns) {
|
|
992
|
+
var me = this,
|
|
993
|
+
headerCt = me.headerCt;
|
|
994
|
+
|
|
995
|
+
if (me.lockable) {
|
|
996
|
+
me.reconfigureLockable(store, columns);
|
|
997
|
+
} else {
|
|
998
|
+
if (columns) {
|
|
999
|
+
// new columns, delete scroll pos
|
|
1000
|
+
delete me.scrollLeftPos;
|
|
1001
|
+
headerCt.suspendLayouts();
|
|
1002
|
+
headerCt.removeAll();
|
|
1003
|
+
headerCt.add(columns);
|
|
1004
|
+
}
|
|
1005
|
+
if (store) {
|
|
1006
|
+
store = Ext.StoreManager.lookup(store);
|
|
1007
|
+
me.bindStore(store);
|
|
1008
|
+
} else {
|
|
1009
|
+
me.getView().refresh();
|
|
1010
|
+
}
|
|
1011
|
+
if (columns) {
|
|
1012
|
+
headerCt.resumeLayouts(true);
|
|
1013
|
+
}
|
|
1014
|
+
headerCt.setSortState();
|
|
1015
|
+
}
|
|
1016
|
+
me.fireEvent('reconfigure', me, store, columns);
|
|
1017
|
+
}
|
|
1018
|
+
});
|