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,1103 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @class Ext.view.AbstractView
|
|
3
|
+
* This is an abstract superclass and should not be used directly. Please see {@link Ext.view.View}.
|
|
4
|
+
* @private
|
|
5
|
+
*/
|
|
6
|
+
Ext.define('Ext.view.AbstractView', {
|
|
7
|
+
extend: 'Ext.Component',
|
|
8
|
+
requires: [
|
|
9
|
+
'Ext.LoadMask',
|
|
10
|
+
'Ext.data.StoreManager',
|
|
11
|
+
'Ext.CompositeElementLite',
|
|
12
|
+
'Ext.DomQuery',
|
|
13
|
+
'Ext.selection.DataViewModel'
|
|
14
|
+
],
|
|
15
|
+
mixins: {
|
|
16
|
+
bindable: 'Ext.util.Bindable'
|
|
17
|
+
},
|
|
18
|
+
|
|
19
|
+
inheritableStatics: {
|
|
20
|
+
getRecord: function(node) {
|
|
21
|
+
return this.getBoundView(node).getRecord(node);
|
|
22
|
+
},
|
|
23
|
+
|
|
24
|
+
getBoundView: function(node) {
|
|
25
|
+
return Ext.getCmp(node.boundView);
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* @cfg {String/String[]/Ext.XTemplate} tpl (required)
|
|
31
|
+
* The HTML fragment or an array of fragments that will make up the template used by this DataView. This should
|
|
32
|
+
* be specified in the same format expected by the constructor of {@link Ext.XTemplate}.
|
|
33
|
+
*/
|
|
34
|
+
/**
|
|
35
|
+
* @cfg {Ext.data.Store} store (required)
|
|
36
|
+
* The {@link Ext.data.Store} to bind this DataView to.
|
|
37
|
+
*/
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* @cfg {Boolean} deferInitialRefresh
|
|
41
|
+
* <p>Defaults to <code>true</code> to defer the initial refresh of the view.</p>
|
|
42
|
+
* <p>This allows the View to execute its render and initial layout more quickly because the process will not be encumbered
|
|
43
|
+
* by the expensive update of the view structure.</p>
|
|
44
|
+
* <p><b>Important: </b>Be aware that this will mean that the View's item elements will not be available immediately upon render, so
|
|
45
|
+
* <i>selection</i> may not take place at render time. To access a View's item elements as soon as possible, use the {@link #viewready} event.
|
|
46
|
+
* Or set <code>deferInitialrefresh</code> to false, but this will be at the cost of slower rendering.</p>
|
|
47
|
+
*/
|
|
48
|
+
deferInitialRefresh: true,
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* @cfg {String} itemSelector (required)
|
|
52
|
+
* <b>This is a required setting</b>. A simple CSS selector (e.g. <tt>div.some-class</tt> or
|
|
53
|
+
* <tt>span:first-child</tt>) that will be used to determine what nodes this DataView will be
|
|
54
|
+
* working with. The itemSelector is used to map DOM nodes to records. As such, there should
|
|
55
|
+
* only be one root level element that matches the selector for each record.
|
|
56
|
+
*/
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* @cfg {String} itemCls
|
|
60
|
+
* Specifies the class to be assigned to each element in the view when used in conjunction with the
|
|
61
|
+
* {@link #itemTpl} configuration.
|
|
62
|
+
*/
|
|
63
|
+
itemCls: Ext.baseCSSPrefix + 'dataview-item',
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* @cfg {String/String[]/Ext.XTemplate} itemTpl
|
|
67
|
+
* The inner portion of the item template to be rendered. Follows an XTemplate
|
|
68
|
+
* structure and will be placed inside of a tpl.
|
|
69
|
+
*/
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* @cfg {String} overItemCls
|
|
73
|
+
* A CSS class to apply to each item in the view on mouseover.
|
|
74
|
+
* Ensure {@link #trackOver} is set to `true` to make use of this.
|
|
75
|
+
*/
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* @cfg {String} loadingText
|
|
79
|
+
* A string to display during data load operations. If specified, this text will be
|
|
80
|
+
* displayed in a loading div and the view's contents will be cleared while loading, otherwise the view's
|
|
81
|
+
* contents will continue to display normally until the new data is loaded and the contents are replaced.
|
|
82
|
+
*/
|
|
83
|
+
//<locale>
|
|
84
|
+
loadingText: 'Loading...',
|
|
85
|
+
//</locale>
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* @cfg {Boolean/Object} loadMask
|
|
89
|
+
* False to disable a load mask from displaying will the view is loading. This can also be a
|
|
90
|
+
* {@link Ext.LoadMask} configuration object.
|
|
91
|
+
*/
|
|
92
|
+
loadMask: true,
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* @cfg {String} loadingCls
|
|
96
|
+
* The CSS class to apply to the loading message element. Defaults to Ext.LoadMask.prototype.msgCls "x-mask-loading".
|
|
97
|
+
*/
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* @cfg {Boolean} loadingUseMsg
|
|
101
|
+
* Whether or not to use the loading message.
|
|
102
|
+
* @private
|
|
103
|
+
*/
|
|
104
|
+
loadingUseMsg: true,
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* @cfg {Number} loadingHeight
|
|
109
|
+
* If specified, gives an explicit height for the data view when it is showing the {@link #loadingText},
|
|
110
|
+
* if that is specified. This is useful to prevent the view's height from collapsing to zero when the
|
|
111
|
+
* loading mask is applied and there are no other contents in the data view.
|
|
112
|
+
*/
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* @cfg {String} [selectedItemCls='x-view-selected']
|
|
116
|
+
* A CSS class to apply to each selected item in the view.
|
|
117
|
+
*/
|
|
118
|
+
selectedItemCls: Ext.baseCSSPrefix + 'item-selected',
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* @cfg {String} emptyText
|
|
122
|
+
* The text to display in the view when there is no data to display.
|
|
123
|
+
* Note that when using local data the emptyText will not be displayed unless you set
|
|
124
|
+
* the {@link #deferEmptyText} option to false.
|
|
125
|
+
*/
|
|
126
|
+
//<locale>
|
|
127
|
+
emptyText: "",
|
|
128
|
+
//</locale>
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* @cfg {Boolean} deferEmptyText
|
|
132
|
+
* True to defer emptyText being applied until the store's first load.
|
|
133
|
+
*/
|
|
134
|
+
deferEmptyText: true,
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* @cfg {Boolean} trackOver
|
|
138
|
+
* True to enable mouseenter and mouseleave events
|
|
139
|
+
*/
|
|
140
|
+
trackOver: false,
|
|
141
|
+
|
|
142
|
+
/**
|
|
143
|
+
* @cfg {Boolean} blockRefresh
|
|
144
|
+
* Set this to true to ignore refresh events on the bound store. This is useful if
|
|
145
|
+
* you wish to provide custom transition animations via a plugin
|
|
146
|
+
*/
|
|
147
|
+
blockRefresh: false,
|
|
148
|
+
|
|
149
|
+
/**
|
|
150
|
+
* @cfg {Boolean} disableSelection
|
|
151
|
+
* True to disable selection within the DataView. This configuration will lock the selection model
|
|
152
|
+
* that the DataView uses.
|
|
153
|
+
*/
|
|
154
|
+
|
|
155
|
+
/**
|
|
156
|
+
* @cfg {Boolean} preserveScrollOnRefresh=false
|
|
157
|
+
* True to preserve scroll position across refresh operations.
|
|
158
|
+
*/
|
|
159
|
+
preserveScrollOnRefresh: false,
|
|
160
|
+
|
|
161
|
+
//private
|
|
162
|
+
last: false,
|
|
163
|
+
|
|
164
|
+
triggerEvent: 'itemclick',
|
|
165
|
+
triggerCtEvent: 'containerclick',
|
|
166
|
+
|
|
167
|
+
addCmpEvents: function() {
|
|
168
|
+
|
|
169
|
+
},
|
|
170
|
+
|
|
171
|
+
// private
|
|
172
|
+
initComponent : function(){
|
|
173
|
+
var me = this,
|
|
174
|
+
isDef = Ext.isDefined,
|
|
175
|
+
itemTpl = me.itemTpl,
|
|
176
|
+
memberFn = {};
|
|
177
|
+
|
|
178
|
+
if (itemTpl) {
|
|
179
|
+
if (Ext.isArray(itemTpl)) {
|
|
180
|
+
// string array
|
|
181
|
+
itemTpl = itemTpl.join('');
|
|
182
|
+
} else if (Ext.isObject(itemTpl)) {
|
|
183
|
+
// tpl instance
|
|
184
|
+
memberFn = Ext.apply(memberFn, itemTpl.initialConfig);
|
|
185
|
+
itemTpl = itemTpl.html;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
if (!me.itemSelector) {
|
|
189
|
+
me.itemSelector = '.' + me.itemCls;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
itemTpl = Ext.String.format('<tpl for="."><div class="{0}">{1}</div></tpl>', me.itemCls, itemTpl);
|
|
193
|
+
me.tpl = new Ext.XTemplate(itemTpl, memberFn);
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
//<debug>
|
|
197
|
+
if (!isDef(me.tpl) || !isDef(me.itemSelector)) {
|
|
198
|
+
Ext.Error.raise({
|
|
199
|
+
sourceClass: 'Ext.view.View',
|
|
200
|
+
tpl: me.tpl,
|
|
201
|
+
itemSelector: me.itemSelector,
|
|
202
|
+
msg: "DataView requires both tpl and itemSelector configurations to be defined."
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
//</debug>
|
|
206
|
+
|
|
207
|
+
me.callParent();
|
|
208
|
+
if(Ext.isString(me.tpl) || Ext.isArray(me.tpl)){
|
|
209
|
+
me.tpl = new Ext.XTemplate(me.tpl);
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
//<debug>
|
|
213
|
+
// backwards compat alias for overClass/selectedClass
|
|
214
|
+
// TODO: Consider support for overCls generation Ext.Component config
|
|
215
|
+
if (isDef(me.overCls) || isDef(me.overClass)) {
|
|
216
|
+
if (Ext.isDefined(Ext.global.console)) {
|
|
217
|
+
Ext.global.console.warn('Ext.view.View: Using the deprecated overCls or overClass configuration. Use overItemCls instead.');
|
|
218
|
+
}
|
|
219
|
+
me.overItemCls = me.overCls || me.overClass;
|
|
220
|
+
delete me.overCls;
|
|
221
|
+
delete me.overClass;
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
if (me.overItemCls) {
|
|
225
|
+
me.trackOver = true;
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
if (isDef(me.selectedCls) || isDef(me.selectedClass)) {
|
|
229
|
+
if (Ext.isDefined(Ext.global.console)) {
|
|
230
|
+
Ext.global.console.warn('Ext.view.View: Using the deprecated selectedCls or selectedClass configuration. Use selectedItemCls instead.');
|
|
231
|
+
}
|
|
232
|
+
me.selectedItemCls = me.selectedCls || me.selectedClass;
|
|
233
|
+
delete me.selectedCls;
|
|
234
|
+
delete me.selectedClass;
|
|
235
|
+
}
|
|
236
|
+
//</debug>
|
|
237
|
+
|
|
238
|
+
me.addEvents(
|
|
239
|
+
/**
|
|
240
|
+
* @event beforerefresh
|
|
241
|
+
* Fires before the view is refreshed
|
|
242
|
+
* @param {Ext.view.View} this The DataView object
|
|
243
|
+
*/
|
|
244
|
+
'beforerefresh',
|
|
245
|
+
/**
|
|
246
|
+
* @event refresh
|
|
247
|
+
* Fires when the view is refreshed
|
|
248
|
+
* @param {Ext.view.View} this The DataView object
|
|
249
|
+
*/
|
|
250
|
+
'refresh',
|
|
251
|
+
/**
|
|
252
|
+
* @event viewready
|
|
253
|
+
* Fires when the View's item elements representing Store items has been rendered. If the {@link #deferInitialRefresh} flag
|
|
254
|
+
* was set (and it is <code>true</code> by default), this will be <b>after</b> initial render, and no items will be available
|
|
255
|
+
* for selection until this event fires.
|
|
256
|
+
* @param {Ext.view.View} this
|
|
257
|
+
*/
|
|
258
|
+
'viewready',
|
|
259
|
+
/**
|
|
260
|
+
* @event itemupdate
|
|
261
|
+
* Fires when the node associated with an individual record is updated
|
|
262
|
+
* @param {Ext.data.Model} record The model instance
|
|
263
|
+
* @param {Number} index The index of the record/node
|
|
264
|
+
* @param {HTMLElement} node The node that has just been updated
|
|
265
|
+
*/
|
|
266
|
+
'itemupdate',
|
|
267
|
+
/**
|
|
268
|
+
* @event itemadd
|
|
269
|
+
* Fires when the nodes associated with an recordset have been added to the underlying store
|
|
270
|
+
* @param {Ext.data.Model[]} records The model instance
|
|
271
|
+
* @param {Number} index The index at which the set of record/nodes starts
|
|
272
|
+
* @param {HTMLElement[]} node The node that has just been updated
|
|
273
|
+
*/
|
|
274
|
+
'itemadd',
|
|
275
|
+
/**
|
|
276
|
+
* @event itemremove
|
|
277
|
+
* Fires when the node associated with an individual record is removed
|
|
278
|
+
* @param {Ext.data.Model} record The model instance
|
|
279
|
+
* @param {Number} index The index of the record/node
|
|
280
|
+
*/
|
|
281
|
+
'itemremove'
|
|
282
|
+
);
|
|
283
|
+
|
|
284
|
+
me.addCmpEvents();
|
|
285
|
+
|
|
286
|
+
// Look up the configured Store. If none configured, use the fieldless, empty Store defined in Ext.data.Store.
|
|
287
|
+
me.store = Ext.data.StoreManager.lookup(me.store || 'ext-empty-store');
|
|
288
|
+
me.bindStore(me.store, true);
|
|
289
|
+
me.all = new Ext.CompositeElementLite();
|
|
290
|
+
|
|
291
|
+
// We track the scroll position
|
|
292
|
+
me.scrollState = {
|
|
293
|
+
top: 0,
|
|
294
|
+
left: 0
|
|
295
|
+
};
|
|
296
|
+
me.on({
|
|
297
|
+
scroll: me.onViewScroll,
|
|
298
|
+
element: 'el',
|
|
299
|
+
scope: me
|
|
300
|
+
});
|
|
301
|
+
},
|
|
302
|
+
|
|
303
|
+
onRender: function() {
|
|
304
|
+
var me = this,
|
|
305
|
+
mask = me.loadMask,
|
|
306
|
+
cfg = {
|
|
307
|
+
msg: me.loadingText,
|
|
308
|
+
msgCls: me.loadingCls,
|
|
309
|
+
useMsg: me.loadingUseMsg
|
|
310
|
+
};
|
|
311
|
+
|
|
312
|
+
me.callParent(arguments);
|
|
313
|
+
|
|
314
|
+
if (mask) {
|
|
315
|
+
// either a config object
|
|
316
|
+
if (Ext.isObject(mask)) {
|
|
317
|
+
cfg = Ext.apply(cfg, mask);
|
|
318
|
+
}
|
|
319
|
+
// Attach the LoadMask to a *Component* so that it can be sensitive to resizing during long loads.
|
|
320
|
+
// If this DataView is floating, then mask this DataView.
|
|
321
|
+
// Otherwise, mask its owning Container (or this, if there *is* no owning Container).
|
|
322
|
+
// LoadMask captures the element upon render.
|
|
323
|
+
me.loadMask = new Ext.LoadMask(me, cfg);
|
|
324
|
+
me.loadMask.on({
|
|
325
|
+
scope: me,
|
|
326
|
+
beforeshow: me.onMaskBeforeShow,
|
|
327
|
+
hide: me.onMaskHide
|
|
328
|
+
});
|
|
329
|
+
}
|
|
330
|
+
},
|
|
331
|
+
|
|
332
|
+
onBoxReady: function(){
|
|
333
|
+
var me = this,
|
|
334
|
+
store = me.store;
|
|
335
|
+
|
|
336
|
+
me.callParent(arguments);
|
|
337
|
+
me.doFirstRefresh(me.store);
|
|
338
|
+
},
|
|
339
|
+
|
|
340
|
+
onMaskBeforeShow: function(){
|
|
341
|
+
var me = this,
|
|
342
|
+
loadingHeight = me.loadingHeight;
|
|
343
|
+
|
|
344
|
+
me.getSelectionModel().deselectAll();
|
|
345
|
+
me.all.clear();
|
|
346
|
+
if (loadingHeight && loadingHeight > me.getHeight()) {
|
|
347
|
+
me.hasLoadingHeight = true;
|
|
348
|
+
me.oldMinHeight = me.minHeight;
|
|
349
|
+
me.minHeight = loadingHeight;
|
|
350
|
+
me.updateLayout();
|
|
351
|
+
}
|
|
352
|
+
},
|
|
353
|
+
|
|
354
|
+
onMaskHide: function(){
|
|
355
|
+
var me = this;
|
|
356
|
+
|
|
357
|
+
if (!me.destroying && me.hasLoadingHeight) {
|
|
358
|
+
me.minHeight = me.oldMinHeight;
|
|
359
|
+
me.updateLayout();
|
|
360
|
+
delete me.hasLoadingHeight;
|
|
361
|
+
}
|
|
362
|
+
},
|
|
363
|
+
|
|
364
|
+
afterRender: function() {
|
|
365
|
+
this.callParent(arguments);
|
|
366
|
+
|
|
367
|
+
// Init the SelectionModel after any on('render') listeners have been added.
|
|
368
|
+
// Drag plugins create a DragDrop instance in a render listener, and that needs
|
|
369
|
+
// to see an itemmousedown event first.
|
|
370
|
+
this.getSelectionModel().bindComponent(this);
|
|
371
|
+
},
|
|
372
|
+
|
|
373
|
+
/**
|
|
374
|
+
* Gets the selection model for this view.
|
|
375
|
+
* @return {Ext.selection.Model} The selection model
|
|
376
|
+
*/
|
|
377
|
+
getSelectionModel: function(){
|
|
378
|
+
var me = this,
|
|
379
|
+
mode = 'SINGLE';
|
|
380
|
+
|
|
381
|
+
if (!me.selModel) {
|
|
382
|
+
me.selModel = {};
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
if (me.simpleSelect) {
|
|
386
|
+
mode = 'SIMPLE';
|
|
387
|
+
} else if (me.multiSelect) {
|
|
388
|
+
mode = 'MULTI';
|
|
389
|
+
}
|
|
390
|
+
|
|
391
|
+
Ext.applyIf(me.selModel, {
|
|
392
|
+
allowDeselect: me.allowDeselect,
|
|
393
|
+
mode: mode
|
|
394
|
+
});
|
|
395
|
+
|
|
396
|
+
if (!me.selModel.events) {
|
|
397
|
+
me.selModel = new Ext.selection.DataViewModel(me.selModel);
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
if (!me.selModel.hasRelaySetup) {
|
|
401
|
+
me.relayEvents(me.selModel, [
|
|
402
|
+
'selectionchange', 'beforeselect', 'beforedeselect', 'select', 'deselect', 'focuschange'
|
|
403
|
+
]);
|
|
404
|
+
me.selModel.hasRelaySetup = true;
|
|
405
|
+
}
|
|
406
|
+
|
|
407
|
+
// lock the selection model if user
|
|
408
|
+
// has disabled selection
|
|
409
|
+
if (me.disableSelection) {
|
|
410
|
+
me.selModel.locked = true;
|
|
411
|
+
}
|
|
412
|
+
|
|
413
|
+
return me.selModel;
|
|
414
|
+
},
|
|
415
|
+
|
|
416
|
+
/**
|
|
417
|
+
* Refreshes the view by reloading the data from the store and re-rendering the template.
|
|
418
|
+
*/
|
|
419
|
+
refresh: function() {
|
|
420
|
+
var me = this,
|
|
421
|
+
targetEl,
|
|
422
|
+
targetParent,
|
|
423
|
+
oldDisplay,
|
|
424
|
+
nextSibling,
|
|
425
|
+
dom,
|
|
426
|
+
records;
|
|
427
|
+
|
|
428
|
+
if (!me.rendered || me.isDestroyed) {
|
|
429
|
+
return;
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
if (!me.hasListeners.beforerefresh || me.fireEvent('beforerefresh', me) !== false) {
|
|
433
|
+
targetEl = me.getTargetEl();
|
|
434
|
+
records = me.store.getRange();
|
|
435
|
+
dom = targetEl.dom;
|
|
436
|
+
|
|
437
|
+
// Updating is much quicker if done when the targetEl is detached from the document, and not displayed.
|
|
438
|
+
// But this resets the scroll position, so when preserving scroll position, this cannot be done.
|
|
439
|
+
if (!me.preserveScrollOnRefresh) {
|
|
440
|
+
targetParent = dom.parentNode;
|
|
441
|
+
oldDisplay = dom.style.display;
|
|
442
|
+
dom.style.display = 'none';
|
|
443
|
+
nextSibling = dom.nextSibling;
|
|
444
|
+
targetParent.removeChild(dom);
|
|
445
|
+
}
|
|
446
|
+
|
|
447
|
+
if (me.refreshCounter) {
|
|
448
|
+
me.clearViewEl();
|
|
449
|
+
} else {
|
|
450
|
+
me.fixedNodes = targetEl.dom.childNodes.length;
|
|
451
|
+
me.refreshCounter = 1;
|
|
452
|
+
}
|
|
453
|
+
|
|
454
|
+
// Always attempt to create the required markup after the fixedNodes.
|
|
455
|
+
// Usually, for an empty record set, this would be blank, but when the Template
|
|
456
|
+
// Creates markup outside of the record loop, this must still be honoured even if there are no
|
|
457
|
+
// records.
|
|
458
|
+
me.tpl.append(targetEl, me.collectData(records, 0));
|
|
459
|
+
|
|
460
|
+
// The emptyText is now appended to the View's element
|
|
461
|
+
// after any fixedNodes.
|
|
462
|
+
if (records.length < 1) {
|
|
463
|
+
if (!me.deferEmptyText || me.hasSkippedEmptyText) {
|
|
464
|
+
Ext.core.DomHelper.insertHtml('beforeEnd', targetEl.dom, me.emptyText);
|
|
465
|
+
}
|
|
466
|
+
me.all.clear();
|
|
467
|
+
} else {
|
|
468
|
+
me.all.fill(Ext.query(me.getItemSelector(), targetEl.dom));
|
|
469
|
+
me.updateIndexes(0);
|
|
470
|
+
}
|
|
471
|
+
|
|
472
|
+
me.selModel.refresh();
|
|
473
|
+
me.hasSkippedEmptyText = true;
|
|
474
|
+
|
|
475
|
+
if (!me.preserveScrollOnRefresh) {
|
|
476
|
+
targetParent.insertBefore(dom, nextSibling);
|
|
477
|
+
dom.style.display = oldDisplay;
|
|
478
|
+
}
|
|
479
|
+
|
|
480
|
+
// Ensure layout system knows about new content size
|
|
481
|
+
this.refreshSize();
|
|
482
|
+
|
|
483
|
+
me.fireEvent('refresh', me);
|
|
484
|
+
|
|
485
|
+
// Upon first refresh, fire the viewready event.
|
|
486
|
+
// Reconfiguring the grid "renews" this event.
|
|
487
|
+
if (!me.viewReady) {
|
|
488
|
+
// Fire an event when deferred content becomes available.
|
|
489
|
+
// This supports grid Panel's deferRowRender capability
|
|
490
|
+
me.viewReady = true;
|
|
491
|
+
me.fireEvent('viewready', me);
|
|
492
|
+
}
|
|
493
|
+
}
|
|
494
|
+
},
|
|
495
|
+
|
|
496
|
+
/**
|
|
497
|
+
* @private
|
|
498
|
+
* Called by the framework when the view is refreshed, or when rows are added or deleted.
|
|
499
|
+
*
|
|
500
|
+
* These operations may cause the view's dimensions to change, and if the owning container
|
|
501
|
+
* is shrinkwrapping this view, then the layout must be updated to accommodate these new dimensions.
|
|
502
|
+
*/
|
|
503
|
+
refreshSize: function() {
|
|
504
|
+
var sizeModel = this.getSizeModel();
|
|
505
|
+
if (sizeModel.height.shrinkWrap || sizeModel.width.shrinkWrap) {
|
|
506
|
+
this.updateLayout();
|
|
507
|
+
}
|
|
508
|
+
},
|
|
509
|
+
|
|
510
|
+
clearViewEl: function(){
|
|
511
|
+
// The purpose of this is to allow boilerplate HTML nodes to remain in place inside a View
|
|
512
|
+
// while the transient, templated data can be discarded and recreated.
|
|
513
|
+
// The first time through this code, we take a count of the number of existing child nodes.
|
|
514
|
+
// Subsequent refreshes then do not clear the entire element, but remove all nodes
|
|
515
|
+
// *after* the fixedNodes count.
|
|
516
|
+
// In particular, this is used in infinite grid scrolling: A very tall "stretcher" element is
|
|
517
|
+
// inserted into the View's element to create a scrollbar of the correct proportion.
|
|
518
|
+
|
|
519
|
+
var me = this,
|
|
520
|
+
el = me.getTargetEl();
|
|
521
|
+
|
|
522
|
+
if (me.fixedNodes) {
|
|
523
|
+
while (el.dom.childNodes[me.fixedNodes]) {
|
|
524
|
+
el.dom.removeChild(el.dom.childNodes[me.fixedNodes]);
|
|
525
|
+
}
|
|
526
|
+
} else {
|
|
527
|
+
el.update('');
|
|
528
|
+
}
|
|
529
|
+
me.refreshCounter++;
|
|
530
|
+
},
|
|
531
|
+
|
|
532
|
+
// Private template method to be overridden in subclasses.
|
|
533
|
+
onViewScroll: Ext.emptyFn,
|
|
534
|
+
|
|
535
|
+
/**
|
|
536
|
+
* Saves the scrollState in a private variable. Must be used in conjunction with restoreScrollState.
|
|
537
|
+
* @private
|
|
538
|
+
*/
|
|
539
|
+
saveScrollState: function() {
|
|
540
|
+
if (this.rendered) {
|
|
541
|
+
var dom = this.el.dom,
|
|
542
|
+
state = this.scrollState;
|
|
543
|
+
|
|
544
|
+
state.left = dom.scrollLeft;
|
|
545
|
+
state.top = dom.scrollTop;
|
|
546
|
+
}
|
|
547
|
+
},
|
|
548
|
+
|
|
549
|
+
/**
|
|
550
|
+
* Restores the scrollState.
|
|
551
|
+
* Must be used in conjunction with saveScrollState
|
|
552
|
+
* @private
|
|
553
|
+
*/
|
|
554
|
+
restoreScrollState: function() {
|
|
555
|
+
if (this.rendered) {
|
|
556
|
+
var dom = this.el.dom,
|
|
557
|
+
state = this.scrollState;
|
|
558
|
+
|
|
559
|
+
dom.scrollLeft = state.left;
|
|
560
|
+
dom.scrollTop = state.top;
|
|
561
|
+
}
|
|
562
|
+
},
|
|
563
|
+
|
|
564
|
+
/**
|
|
565
|
+
* Function which can be overridden to provide custom formatting for each Record that is used by this
|
|
566
|
+
* DataView's {@link #tpl template} to render each node.
|
|
567
|
+
* @param {Object/Object[]} data The raw data object that was used to create the Record.
|
|
568
|
+
* @param {Number} recordIndex the index number of the Record being prepared for rendering.
|
|
569
|
+
* @param {Ext.data.Model} record The Record being prepared for rendering.
|
|
570
|
+
* @return {Array/Object} The formatted data in a format expected by the internal {@link #tpl template}'s overwrite() method.
|
|
571
|
+
* (either an array if your params are numeric (i.e. {0}) or an object (i.e. {foo: 'bar'}))
|
|
572
|
+
*/
|
|
573
|
+
prepareData: function(data, index, record) {
|
|
574
|
+
var associatedData, attr;
|
|
575
|
+
if (record) {
|
|
576
|
+
associatedData = record.getAssociatedData();
|
|
577
|
+
for (attr in associatedData) {
|
|
578
|
+
if (associatedData.hasOwnProperty(attr)) {
|
|
579
|
+
data[attr] = associatedData[attr];
|
|
580
|
+
}
|
|
581
|
+
}
|
|
582
|
+
}
|
|
583
|
+
return data;
|
|
584
|
+
},
|
|
585
|
+
|
|
586
|
+
/**
|
|
587
|
+
* <p>Function which can be overridden which returns the data object passed to this
|
|
588
|
+
* DataView's {@link #tpl template} to render the whole DataView.</p>
|
|
589
|
+
* <p>This is usually an Array of data objects, each element of which is processed by an
|
|
590
|
+
* {@link Ext.XTemplate XTemplate} which uses <tt>'<tpl for=".">'</tt> to iterate over its supplied
|
|
591
|
+
* data object as an Array. However, <i>named</i> properties may be placed into the data object to
|
|
592
|
+
* provide non-repeating data such as headings, totals etc.</p>
|
|
593
|
+
* @param {Ext.data.Model[]} records An Array of {@link Ext.data.Model}s to be rendered into the DataView.
|
|
594
|
+
* @param {Number} startIndex the index number of the Record being prepared for rendering.
|
|
595
|
+
* @return {Object[]} An Array of data objects to be processed by a repeating XTemplate. May also
|
|
596
|
+
* contain <i>named</i> properties.
|
|
597
|
+
*/
|
|
598
|
+
collectData : function(records, startIndex){
|
|
599
|
+
var data = [],
|
|
600
|
+
i = 0,
|
|
601
|
+
len = records.length,
|
|
602
|
+
record;
|
|
603
|
+
|
|
604
|
+
for (; i < len; i++) {
|
|
605
|
+
record = records[i];
|
|
606
|
+
data[i] = this.prepareData(record.data, startIndex + i, record);
|
|
607
|
+
}
|
|
608
|
+
return data;
|
|
609
|
+
},
|
|
610
|
+
|
|
611
|
+
// private
|
|
612
|
+
bufferRender : function(records, index){
|
|
613
|
+
var me = this,
|
|
614
|
+
div = me.renderBuffer || (me.renderBuffer = document.createElement('div'));
|
|
615
|
+
|
|
616
|
+
me.tpl.overwrite(div, me.collectData(records, index));
|
|
617
|
+
return Ext.query(me.getItemSelector(), div);
|
|
618
|
+
},
|
|
619
|
+
|
|
620
|
+
// private
|
|
621
|
+
onUpdate : function(ds, record){
|
|
622
|
+
var me = this,
|
|
623
|
+
index,
|
|
624
|
+
node;
|
|
625
|
+
|
|
626
|
+
if (me.rendered) {
|
|
627
|
+
index = me.store.indexOf(record);
|
|
628
|
+
if (index > -1) {
|
|
629
|
+
node = me.bufferRender([record], index)[0];
|
|
630
|
+
// ensure the node actually exists in the DOM
|
|
631
|
+
if (me.getNode(record)) {
|
|
632
|
+
me.all.replaceElement(index, node, true);
|
|
633
|
+
me.updateIndexes(index, index);
|
|
634
|
+
// Maintain selection after update
|
|
635
|
+
// TODO: Move to approriate event handler.
|
|
636
|
+
me.selModel.refresh();
|
|
637
|
+
if (me.hasListeners.itemupdate) {
|
|
638
|
+
me.fireEvent('itemupdate', record, index, node);
|
|
639
|
+
}
|
|
640
|
+
return node;
|
|
641
|
+
}
|
|
642
|
+
}
|
|
643
|
+
}
|
|
644
|
+
|
|
645
|
+
},
|
|
646
|
+
|
|
647
|
+
// private
|
|
648
|
+
onAdd : function(ds, records, index) {
|
|
649
|
+
var me = this,
|
|
650
|
+
nodes;
|
|
651
|
+
|
|
652
|
+
if (me.rendered) {
|
|
653
|
+
// If we are adding into an empty view, we must refresh in order that the *full tpl* is applied
|
|
654
|
+
// which might create boilerplate content *around* the record nodes.
|
|
655
|
+
if (me.all.getCount() === 0) {
|
|
656
|
+
me.refresh();
|
|
657
|
+
return;
|
|
658
|
+
}
|
|
659
|
+
|
|
660
|
+
nodes = me.bufferRender(records, index);
|
|
661
|
+
me.doAdd(nodes, records, index);
|
|
662
|
+
|
|
663
|
+
me.selModel.refresh();
|
|
664
|
+
me.updateIndexes(index);
|
|
665
|
+
|
|
666
|
+
// Ensure layout system knows about new content size
|
|
667
|
+
this.refreshSize();
|
|
668
|
+
|
|
669
|
+
if (me.hasListeners.itemadd) {
|
|
670
|
+
me.fireEvent('itemadd', records, index, nodes);
|
|
671
|
+
}
|
|
672
|
+
}
|
|
673
|
+
|
|
674
|
+
},
|
|
675
|
+
|
|
676
|
+
doAdd: function(nodes, records, index) {
|
|
677
|
+
var all = this.all,
|
|
678
|
+
count = all.getCount();
|
|
679
|
+
|
|
680
|
+
if (count === 0) {
|
|
681
|
+
this.clearViewEl();
|
|
682
|
+
this.getTargetEl().appendChild(nodes);
|
|
683
|
+
} else if (index < count) {
|
|
684
|
+
if (index === 0) {
|
|
685
|
+
all.item(index).insertSibling(nodes, 'before', true);
|
|
686
|
+
} else {
|
|
687
|
+
all.item(index - 1).insertSibling(nodes, 'after', true);
|
|
688
|
+
}
|
|
689
|
+
} else {
|
|
690
|
+
all.last().insertSibling(nodes, 'after', true);
|
|
691
|
+
}
|
|
692
|
+
|
|
693
|
+
Ext.Array.insert(all.elements, index, nodes);
|
|
694
|
+
},
|
|
695
|
+
|
|
696
|
+
// private
|
|
697
|
+
onRemove : function(ds, record, index) {
|
|
698
|
+
var me = this;
|
|
699
|
+
|
|
700
|
+
if (me.rendered) {
|
|
701
|
+
if (me.store.getCount() === 0) {
|
|
702
|
+
// Refresh so emptyText can be applied if necessary
|
|
703
|
+
me.refresh();
|
|
704
|
+
} else {
|
|
705
|
+
// Just remove the element which corresponds to the removed record
|
|
706
|
+
// The tpl's full HTML will still be in place.
|
|
707
|
+
me.doRemove(record, index);
|
|
708
|
+
me.updateIndexes(index);
|
|
709
|
+
}
|
|
710
|
+
|
|
711
|
+
// Ensure layout system knows about new content height
|
|
712
|
+
this.refreshSize();
|
|
713
|
+
|
|
714
|
+
if (me.hasListeners.itemremove) {
|
|
715
|
+
me.fireEvent('itemremove', record, index);
|
|
716
|
+
}
|
|
717
|
+
}
|
|
718
|
+
},
|
|
719
|
+
|
|
720
|
+
doRemove: function(record, index) {
|
|
721
|
+
this.all.removeElement(index, true);
|
|
722
|
+
},
|
|
723
|
+
|
|
724
|
+
/**
|
|
725
|
+
* Refreshes an individual node's data from the store.
|
|
726
|
+
* @param {Number} index The item's data index in the store
|
|
727
|
+
*/
|
|
728
|
+
refreshNode : function(index){
|
|
729
|
+
this.onUpdate(this.store, this.store.getAt(index));
|
|
730
|
+
},
|
|
731
|
+
|
|
732
|
+
// private
|
|
733
|
+
updateIndexes : function(startIndex, endIndex) {
|
|
734
|
+
var ns = this.all.elements,
|
|
735
|
+
records = this.store.getRange(),
|
|
736
|
+
i;
|
|
737
|
+
|
|
738
|
+
startIndex = startIndex || 0;
|
|
739
|
+
endIndex = endIndex || ((endIndex === 0) ? 0 : (ns.length - 1));
|
|
740
|
+
for(i = startIndex; i <= endIndex; i++){
|
|
741
|
+
ns[i].viewIndex = i;
|
|
742
|
+
ns[i].viewRecordId = records[i].internalId;
|
|
743
|
+
if (!ns[i].boundView) {
|
|
744
|
+
ns[i].boundView = this.id;
|
|
745
|
+
}
|
|
746
|
+
}
|
|
747
|
+
},
|
|
748
|
+
|
|
749
|
+
/**
|
|
750
|
+
* Returns the store associated with this DataView.
|
|
751
|
+
* @return {Ext.data.Store} The store
|
|
752
|
+
*/
|
|
753
|
+
getStore : function(){
|
|
754
|
+
return this.store;
|
|
755
|
+
},
|
|
756
|
+
|
|
757
|
+
/**
|
|
758
|
+
* Changes the data store bound to this view and refreshes it.
|
|
759
|
+
* @param {Ext.data.Store} store The store to bind to this view
|
|
760
|
+
*/
|
|
761
|
+
bindStore : function(store, initial) {
|
|
762
|
+
var me = this;
|
|
763
|
+
me.mixins.bindable.bindStore.apply(me, arguments);
|
|
764
|
+
// Bind the store to our selection model
|
|
765
|
+
me.getSelectionModel().bindStore(me.store);
|
|
766
|
+
|
|
767
|
+
// If we have already achieved our first layout, refresh immediately.
|
|
768
|
+
// If we have bound to the Store before the first layout, then onBoxReady will
|
|
769
|
+
// call doFirstRefresh1
|
|
770
|
+
if (me.componentLayoutCounter) {
|
|
771
|
+
me.doFirstRefresh(store);
|
|
772
|
+
}
|
|
773
|
+
},
|
|
774
|
+
|
|
775
|
+
/**
|
|
776
|
+
* @private
|
|
777
|
+
* Perform the first refresh of the View from a newly bound store.
|
|
778
|
+
*
|
|
779
|
+
* This is called when this View has been sized for the first time.
|
|
780
|
+
*/
|
|
781
|
+
doFirstRefresh: function(store) {
|
|
782
|
+
var me = this;
|
|
783
|
+
|
|
784
|
+
// 4.1.0: If we have a store, and the Store is *NOT* already loading (a refresh is on the way), then
|
|
785
|
+
// on first layout, refresh regardless of record count.
|
|
786
|
+
// Template may contain boilerplate HTML outside of record iteration loop.
|
|
787
|
+
// Also, emptyText is appended by the refresh method.
|
|
788
|
+
// We call refresh on a defer if this is the initial call, and we are configured to defer the initial refresh.
|
|
789
|
+
if (store && !store.loading) {
|
|
790
|
+
if (me.deferInitialRefresh) {
|
|
791
|
+
Ext.Function.defer(function () {
|
|
792
|
+
if (!me.isDestroyed) {
|
|
793
|
+
me.refresh();
|
|
794
|
+
}
|
|
795
|
+
}, 1);
|
|
796
|
+
} else {
|
|
797
|
+
me.refresh();
|
|
798
|
+
}
|
|
799
|
+
}
|
|
800
|
+
},
|
|
801
|
+
|
|
802
|
+
onUnbindStore: function(store) {
|
|
803
|
+
this.setMaskBind(null);
|
|
804
|
+
},
|
|
805
|
+
|
|
806
|
+
onBindStore: function(store) {
|
|
807
|
+
this.setMaskBind(store);
|
|
808
|
+
},
|
|
809
|
+
|
|
810
|
+
setMaskBind: function(store) {
|
|
811
|
+
var mask = this.loadMask;
|
|
812
|
+
if (mask && mask.bindStore) {
|
|
813
|
+
mask.bindStore(store);
|
|
814
|
+
}
|
|
815
|
+
},
|
|
816
|
+
|
|
817
|
+
getStoreListeners: function() {
|
|
818
|
+
var me = this;
|
|
819
|
+
return {
|
|
820
|
+
refresh: me.onDataRefresh,
|
|
821
|
+
add: me.onAdd,
|
|
822
|
+
remove: me.onRemove,
|
|
823
|
+
update: me.onUpdate,
|
|
824
|
+
clear: me.refresh
|
|
825
|
+
};
|
|
826
|
+
},
|
|
827
|
+
|
|
828
|
+
/**
|
|
829
|
+
* @private
|
|
830
|
+
* Calls this.refresh if this.blockRefresh is not true
|
|
831
|
+
*/
|
|
832
|
+
onDataRefresh: function() {
|
|
833
|
+
if (this.blockRefresh !== true) {
|
|
834
|
+
this.refresh.apply(this, arguments);
|
|
835
|
+
}
|
|
836
|
+
},
|
|
837
|
+
|
|
838
|
+
/**
|
|
839
|
+
* Returns the template node the passed child belongs to, or null if it doesn't belong to one.
|
|
840
|
+
* @param {HTMLElement} node
|
|
841
|
+
* @return {HTMLElement} The template node
|
|
842
|
+
*/
|
|
843
|
+
findItemByChild: function(node){
|
|
844
|
+
return Ext.fly(node).findParent(this.getItemSelector(), this.getTargetEl());
|
|
845
|
+
},
|
|
846
|
+
|
|
847
|
+
/**
|
|
848
|
+
* Returns the template node by the Ext.EventObject or null if it is not found.
|
|
849
|
+
* @param {Ext.EventObject} e
|
|
850
|
+
*/
|
|
851
|
+
findTargetByEvent: function(e) {
|
|
852
|
+
return e.getTarget(this.getItemSelector(), this.getTargetEl());
|
|
853
|
+
},
|
|
854
|
+
|
|
855
|
+
|
|
856
|
+
/**
|
|
857
|
+
* Gets the currently selected nodes.
|
|
858
|
+
* @return {HTMLElement[]} An array of HTMLElements
|
|
859
|
+
*/
|
|
860
|
+
getSelectedNodes: function(){
|
|
861
|
+
var nodes = [],
|
|
862
|
+
records = this.selModel.getSelection(),
|
|
863
|
+
ln = records.length,
|
|
864
|
+
i = 0;
|
|
865
|
+
|
|
866
|
+
for (; i < ln; i++) {
|
|
867
|
+
nodes.push(this.getNode(records[i]));
|
|
868
|
+
}
|
|
869
|
+
|
|
870
|
+
return nodes;
|
|
871
|
+
},
|
|
872
|
+
|
|
873
|
+
/**
|
|
874
|
+
* Gets an array of the records from an array of nodes
|
|
875
|
+
* @param {HTMLElement[]} nodes The nodes to evaluate
|
|
876
|
+
* @return {Ext.data.Model[]} records The {@link Ext.data.Model} objects
|
|
877
|
+
*/
|
|
878
|
+
getRecords: function(nodes) {
|
|
879
|
+
var records = [],
|
|
880
|
+
i = 0,
|
|
881
|
+
len = nodes.length,
|
|
882
|
+
data = this.store.data;
|
|
883
|
+
|
|
884
|
+
for (; i < len; i++) {
|
|
885
|
+
records[records.length] = data.getByKey(nodes[i].viewRecordId);
|
|
886
|
+
}
|
|
887
|
+
|
|
888
|
+
return records;
|
|
889
|
+
},
|
|
890
|
+
|
|
891
|
+
/**
|
|
892
|
+
* Gets a record from a node
|
|
893
|
+
* @param {Ext.Element/HTMLElement} node The node to evaluate
|
|
894
|
+
*
|
|
895
|
+
* @return {Ext.data.Model} record The {@link Ext.data.Model} object
|
|
896
|
+
*/
|
|
897
|
+
getRecord: function(node){
|
|
898
|
+
return this.store.data.getByKey(Ext.getDom(node).viewRecordId);
|
|
899
|
+
},
|
|
900
|
+
|
|
901
|
+
|
|
902
|
+
/**
|
|
903
|
+
* Returns true if the passed node is selected, else false.
|
|
904
|
+
* @param {HTMLElement/Number/Ext.data.Model} node The node, node index or record to check
|
|
905
|
+
* @return {Boolean} True if selected, else false
|
|
906
|
+
*/
|
|
907
|
+
isSelected : function(node) {
|
|
908
|
+
// TODO: El/Idx/Record
|
|
909
|
+
var r = this.getRecord(node);
|
|
910
|
+
return this.selModel.isSelected(r);
|
|
911
|
+
},
|
|
912
|
+
|
|
913
|
+
/**
|
|
914
|
+
* Selects a record instance by record instance or index.
|
|
915
|
+
* @param {Ext.data.Model[]/Number} records An array of records or an index
|
|
916
|
+
* @param {Boolean} keepExisting
|
|
917
|
+
* @param {Boolean} suppressEvent Set to false to not fire a select event
|
|
918
|
+
*/
|
|
919
|
+
select: function(records, keepExisting, suppressEvent) {
|
|
920
|
+
this.selModel.select(records, keepExisting, suppressEvent);
|
|
921
|
+
},
|
|
922
|
+
|
|
923
|
+
/**
|
|
924
|
+
* Deselects a record instance by record instance or index.
|
|
925
|
+
* @param {Ext.data.Model[]/Number} records An array of records or an index
|
|
926
|
+
* @param {Boolean} suppressEvent Set to false to not fire a deselect event
|
|
927
|
+
*/
|
|
928
|
+
deselect: function(records, suppressEvent) {
|
|
929
|
+
this.selModel.deselect(records, suppressEvent);
|
|
930
|
+
},
|
|
931
|
+
|
|
932
|
+
/**
|
|
933
|
+
* Gets a template node.
|
|
934
|
+
* @param {HTMLElement/String/Number/Ext.data.Model} nodeInfo An HTMLElement template node, index of a template node,
|
|
935
|
+
* the id of a template node or the record associated with the node.
|
|
936
|
+
* @return {HTMLElement} The node or null if it wasn't found
|
|
937
|
+
*/
|
|
938
|
+
getNode : function(nodeInfo) {
|
|
939
|
+
if ((!nodeInfo && nodeInfo !== 0) || !this.rendered) {
|
|
940
|
+
return null;
|
|
941
|
+
}
|
|
942
|
+
|
|
943
|
+
if (Ext.isString(nodeInfo)) {
|
|
944
|
+
return document.getElementById(nodeInfo);
|
|
945
|
+
}
|
|
946
|
+
if (Ext.isNumber(nodeInfo)) {
|
|
947
|
+
return this.all.elements[nodeInfo];
|
|
948
|
+
}
|
|
949
|
+
if (nodeInfo.isModel) {
|
|
950
|
+
return this.getNodeByRecord(nodeInfo);
|
|
951
|
+
}
|
|
952
|
+
return nodeInfo; // already an HTMLElement
|
|
953
|
+
},
|
|
954
|
+
|
|
955
|
+
/**
|
|
956
|
+
* @private
|
|
957
|
+
*/
|
|
958
|
+
getNodeByRecord: function(record) {
|
|
959
|
+
var ns = this.all.elements,
|
|
960
|
+
ln = ns.length,
|
|
961
|
+
i = 0;
|
|
962
|
+
|
|
963
|
+
for (; i < ln; i++) {
|
|
964
|
+
if (ns[i].viewRecordId === record.internalId) {
|
|
965
|
+
return ns[i];
|
|
966
|
+
}
|
|
967
|
+
}
|
|
968
|
+
|
|
969
|
+
return null;
|
|
970
|
+
},
|
|
971
|
+
|
|
972
|
+
/**
|
|
973
|
+
* Gets a range nodes.
|
|
974
|
+
* @param {Number} start (optional) The index of the first node in the range
|
|
975
|
+
* @param {Number} end (optional) The index of the last node in the range
|
|
976
|
+
* @return {HTMLElement[]} An array of nodes
|
|
977
|
+
*/
|
|
978
|
+
getNodes: function(start, end) {
|
|
979
|
+
var ns = this.all.elements,
|
|
980
|
+
nodes = [],
|
|
981
|
+
i;
|
|
982
|
+
|
|
983
|
+
start = start || 0;
|
|
984
|
+
end = !Ext.isDefined(end) ? Math.max(ns.length - 1, 0) : end;
|
|
985
|
+
if (start <= end) {
|
|
986
|
+
for (i = start; i <= end && ns[i]; i++) {
|
|
987
|
+
nodes.push(ns[i]);
|
|
988
|
+
}
|
|
989
|
+
} else {
|
|
990
|
+
for (i = start; i >= end && ns[i]; i--) {
|
|
991
|
+
nodes.push(ns[i]);
|
|
992
|
+
}
|
|
993
|
+
}
|
|
994
|
+
return nodes;
|
|
995
|
+
},
|
|
996
|
+
|
|
997
|
+
/**
|
|
998
|
+
* Finds the index of the passed node.
|
|
999
|
+
* @param {HTMLElement/String/Number/Ext.data.Model} nodeInfo An HTMLElement template node, index of a template node, the id of a template node
|
|
1000
|
+
* or a record associated with a node.
|
|
1001
|
+
* @return {Number} The index of the node or -1
|
|
1002
|
+
*/
|
|
1003
|
+
indexOf: function(node) {
|
|
1004
|
+
node = this.getNode(node);
|
|
1005
|
+
if (Ext.isNumber(node.viewIndex)) {
|
|
1006
|
+
return node.viewIndex;
|
|
1007
|
+
}
|
|
1008
|
+
return this.all.indexOf(node);
|
|
1009
|
+
},
|
|
1010
|
+
|
|
1011
|
+
onDestroy : function() {
|
|
1012
|
+
var me = this;
|
|
1013
|
+
|
|
1014
|
+
me.all.clear();
|
|
1015
|
+
me.callParent();
|
|
1016
|
+
me.bindStore(null);
|
|
1017
|
+
me.selModel.destroy();
|
|
1018
|
+
},
|
|
1019
|
+
|
|
1020
|
+
// invoked by the selection model to maintain visual UI cues
|
|
1021
|
+
onItemSelect: function(record) {
|
|
1022
|
+
var node = this.getNode(record);
|
|
1023
|
+
|
|
1024
|
+
if (node) {
|
|
1025
|
+
Ext.fly(node).addCls(this.selectedItemCls);
|
|
1026
|
+
}
|
|
1027
|
+
},
|
|
1028
|
+
|
|
1029
|
+
// invoked by the selection model to maintain visual UI cues
|
|
1030
|
+
onItemDeselect: function(record) {
|
|
1031
|
+
var node = this.getNode(record);
|
|
1032
|
+
|
|
1033
|
+
if (node) {
|
|
1034
|
+
Ext.fly(node).removeCls(this.selectedItemCls);
|
|
1035
|
+
}
|
|
1036
|
+
},
|
|
1037
|
+
|
|
1038
|
+
getItemSelector: function() {
|
|
1039
|
+
return this.itemSelector;
|
|
1040
|
+
}
|
|
1041
|
+
}, function() {
|
|
1042
|
+
// all of this information is available directly
|
|
1043
|
+
// from the SelectionModel itself, the only added methods
|
|
1044
|
+
// to DataView regarding selection will perform some transformation/lookup
|
|
1045
|
+
// between HTMLElement/Nodes to records and vice versa.
|
|
1046
|
+
Ext.deprecate('extjs', '4.0', function() {
|
|
1047
|
+
Ext.view.AbstractView.override({
|
|
1048
|
+
/**
|
|
1049
|
+
* @cfg {Boolean} [multiSelect=false]
|
|
1050
|
+
* True to allow selection of more than one item at a time, false to allow selection of only a single item
|
|
1051
|
+
* at a time or no selection at all, depending on the value of {@link #singleSelect}.
|
|
1052
|
+
*/
|
|
1053
|
+
/**
|
|
1054
|
+
* @cfg {Boolean} [singleSelect=false]
|
|
1055
|
+
* True to allow selection of exactly one item at a time, false to allow no selection at all.
|
|
1056
|
+
* Note that if {@link #multiSelect} = true, this value will be ignored.
|
|
1057
|
+
*/
|
|
1058
|
+
/**
|
|
1059
|
+
* @cfg {Boolean} [simpleSelect=false]
|
|
1060
|
+
* True to enable multiselection by clicking on multiple items without requiring the user to hold Shift or Ctrl,
|
|
1061
|
+
* false to force the user to hold Ctrl or Shift to select more than on item.
|
|
1062
|
+
*/
|
|
1063
|
+
|
|
1064
|
+
/**
|
|
1065
|
+
* Gets the number of selected nodes.
|
|
1066
|
+
* @return {Number} The node count
|
|
1067
|
+
*/
|
|
1068
|
+
getSelectionCount : function(){
|
|
1069
|
+
if (Ext.global.console) {
|
|
1070
|
+
Ext.global.console.warn("DataView: getSelectionCount will be removed, please interact with the Ext.selection.DataViewModel");
|
|
1071
|
+
}
|
|
1072
|
+
return this.selModel.getSelection().length;
|
|
1073
|
+
},
|
|
1074
|
+
|
|
1075
|
+
/**
|
|
1076
|
+
* Gets an array of the selected records
|
|
1077
|
+
* @return {Ext.data.Model[]} An array of {@link Ext.data.Model} objects
|
|
1078
|
+
*/
|
|
1079
|
+
getSelectedRecords : function(){
|
|
1080
|
+
if (Ext.global.console) {
|
|
1081
|
+
Ext.global.console.warn("DataView: getSelectedRecords will be removed, please interact with the Ext.selection.DataViewModel");
|
|
1082
|
+
}
|
|
1083
|
+
return this.selModel.getSelection();
|
|
1084
|
+
},
|
|
1085
|
+
|
|
1086
|
+
select: function(records, keepExisting, supressEvents) {
|
|
1087
|
+
if (Ext.global.console) {
|
|
1088
|
+
Ext.global.console.warn("DataView: select will be removed, please access select through a DataView's SelectionModel, ie: view.getSelectionModel().select()");
|
|
1089
|
+
}
|
|
1090
|
+
var sm = this.getSelectionModel();
|
|
1091
|
+
return sm.select.apply(sm, arguments);
|
|
1092
|
+
},
|
|
1093
|
+
|
|
1094
|
+
clearSelections: function() {
|
|
1095
|
+
if (Ext.global.console) {
|
|
1096
|
+
Ext.global.console.warn("DataView: clearSelections will be removed, please access deselectAll through DataView's SelectionModel, ie: view.getSelectionModel().deselectAll()");
|
|
1097
|
+
}
|
|
1098
|
+
var sm = this.getSelectionModel();
|
|
1099
|
+
return sm.deselectAll();
|
|
1100
|
+
}
|
|
1101
|
+
});
|
|
1102
|
+
});
|
|
1103
|
+
});
|