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,243 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @author Ed Spencer
|
|
3
|
+
*
|
|
4
|
+
* Associations enable you to express relationships between different {@link Ext.data.Model Models}. Let's say we're
|
|
5
|
+
* writing an ecommerce system where Users can make Orders - there's a relationship between these Models that we can
|
|
6
|
+
* express like this:
|
|
7
|
+
*
|
|
8
|
+
* Ext.define('User', {
|
|
9
|
+
* extend: 'Ext.data.Model',
|
|
10
|
+
* fields: ['id', 'name', 'email'],
|
|
11
|
+
*
|
|
12
|
+
* hasMany: {model: 'Order', name: 'orders'}
|
|
13
|
+
* });
|
|
14
|
+
*
|
|
15
|
+
* Ext.define('Order', {
|
|
16
|
+
* extend: 'Ext.data.Model',
|
|
17
|
+
* fields: ['id', 'user_id', 'status', 'price'],
|
|
18
|
+
*
|
|
19
|
+
* belongsTo: 'User'
|
|
20
|
+
* });
|
|
21
|
+
*
|
|
22
|
+
* We've set up two models - User and Order - and told them about each other. You can set up as many associations on
|
|
23
|
+
* each Model as you need using the two default types - {@link Ext.data.HasManyAssociation hasMany} and {@link
|
|
24
|
+
* Ext.data.BelongsToAssociation belongsTo}. There's much more detail on the usage of each of those inside their
|
|
25
|
+
* documentation pages. If you're not familiar with Models already, {@link Ext.data.Model there is plenty on those too}.
|
|
26
|
+
*
|
|
27
|
+
* **Further Reading**
|
|
28
|
+
*
|
|
29
|
+
* - {@link Ext.data.association.HasMany hasMany associations}
|
|
30
|
+
* - {@link Ext.data.association.BelongsTo belongsTo associations}
|
|
31
|
+
* - {@link Ext.data.association.HasOne hasOne associations}
|
|
32
|
+
* - {@link Ext.data.Model using Models}
|
|
33
|
+
*
|
|
34
|
+
* # Self association models
|
|
35
|
+
*
|
|
36
|
+
* We can also have models that create parent/child associations between the same type. Below is an example, where
|
|
37
|
+
* groups can be nested inside other groups:
|
|
38
|
+
*
|
|
39
|
+
* // Server Data
|
|
40
|
+
* {
|
|
41
|
+
* "groups": {
|
|
42
|
+
* "id": 10,
|
|
43
|
+
* "parent_id": 100,
|
|
44
|
+
* "name": "Main Group",
|
|
45
|
+
* "parent_group": {
|
|
46
|
+
* "id": 100,
|
|
47
|
+
* "parent_id": null,
|
|
48
|
+
* "name": "Parent Group"
|
|
49
|
+
* },
|
|
50
|
+
* "child_groups": [{
|
|
51
|
+
* "id": 2,
|
|
52
|
+
* "parent_id": 10,
|
|
53
|
+
* "name": "Child Group 1"
|
|
54
|
+
* },{
|
|
55
|
+
* "id": 3,
|
|
56
|
+
* "parent_id": 10,
|
|
57
|
+
* "name": "Child Group 2"
|
|
58
|
+
* },{
|
|
59
|
+
* "id": 4,
|
|
60
|
+
* "parent_id": 10,
|
|
61
|
+
* "name": "Child Group 3"
|
|
62
|
+
* }]
|
|
63
|
+
* }
|
|
64
|
+
* }
|
|
65
|
+
*
|
|
66
|
+
* // Client code
|
|
67
|
+
* Ext.define('Group', {
|
|
68
|
+
* extend: 'Ext.data.Model',
|
|
69
|
+
* fields: ['id', 'parent_id', 'name'],
|
|
70
|
+
* proxy: {
|
|
71
|
+
* type: 'ajax',
|
|
72
|
+
* url: 'data.json',
|
|
73
|
+
* reader: {
|
|
74
|
+
* type: 'json',
|
|
75
|
+
* root: 'groups'
|
|
76
|
+
* }
|
|
77
|
+
* },
|
|
78
|
+
* associations: [{
|
|
79
|
+
* type: 'hasMany',
|
|
80
|
+
* model: 'Group',
|
|
81
|
+
* primaryKey: 'id',
|
|
82
|
+
* foreignKey: 'parent_id',
|
|
83
|
+
* autoLoad: true,
|
|
84
|
+
* associationKey: 'child_groups' // read child data from child_groups
|
|
85
|
+
* }, {
|
|
86
|
+
* type: 'belongsTo',
|
|
87
|
+
* model: 'Group',
|
|
88
|
+
* primaryKey: 'id',
|
|
89
|
+
* foreignKey: 'parent_id',
|
|
90
|
+
* associationKey: 'parent_group' // read parent data from parent_group
|
|
91
|
+
* }]
|
|
92
|
+
* });
|
|
93
|
+
*
|
|
94
|
+
* Ext.onReady(function(){
|
|
95
|
+
*
|
|
96
|
+
* Group.load(10, {
|
|
97
|
+
* success: function(group){
|
|
98
|
+
* console.log(group.getGroup().get('name'));
|
|
99
|
+
*
|
|
100
|
+
* group.groups().each(function(rec){
|
|
101
|
+
* console.log(rec.get('name'));
|
|
102
|
+
* });
|
|
103
|
+
* }
|
|
104
|
+
* });
|
|
105
|
+
*
|
|
106
|
+
* });
|
|
107
|
+
*
|
|
108
|
+
*/
|
|
109
|
+
Ext.define('Ext.data.association.Association', {
|
|
110
|
+
alternateClassName: 'Ext.data.Association',
|
|
111
|
+
/**
|
|
112
|
+
* @cfg {String} ownerModel (required)
|
|
113
|
+
* The string name of the model that owns the association.
|
|
114
|
+
*/
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* @cfg {String} associatedModel (required)
|
|
118
|
+
* The string name of the model that is being associated with.
|
|
119
|
+
*/
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* @cfg {String} primaryKey
|
|
123
|
+
* The name of the primary key on the associated model. In general this will be the
|
|
124
|
+
* {@link Ext.data.Model#idProperty} of the Model.
|
|
125
|
+
*/
|
|
126
|
+
primaryKey: 'id',
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* @cfg {Ext.data.reader.Reader} reader
|
|
130
|
+
* A special reader to read associated data
|
|
131
|
+
*/
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* @cfg {String} associationKey
|
|
135
|
+
* The name of the property in the data to read the association from. Defaults to the name of the associated model.
|
|
136
|
+
*/
|
|
137
|
+
|
|
138
|
+
defaultReaderType: 'json',
|
|
139
|
+
|
|
140
|
+
statics: {
|
|
141
|
+
AUTO_ID: 1000,
|
|
142
|
+
|
|
143
|
+
create: function(association){
|
|
144
|
+
if (!association.isAssociation) {
|
|
145
|
+
if (Ext.isString(association)) {
|
|
146
|
+
association = {
|
|
147
|
+
type: association
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
switch (association.type) {
|
|
152
|
+
case 'belongsTo':
|
|
153
|
+
return new Ext.data.association.BelongsTo(association);
|
|
154
|
+
case 'hasMany':
|
|
155
|
+
return new Ext.data.association.HasMany(association);
|
|
156
|
+
case 'hasOne':
|
|
157
|
+
return new Ext.data.association.HasOne(association);
|
|
158
|
+
//TODO Add this back when it's fixed
|
|
159
|
+
// case 'polymorphic':
|
|
160
|
+
// return Ext.create('Ext.data.PolymorphicAssociation', association);
|
|
161
|
+
default:
|
|
162
|
+
//<debug>
|
|
163
|
+
Ext.Error.raise('Unknown Association type: "' + association.type + '"');
|
|
164
|
+
//</debug>
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
return association;
|
|
168
|
+
}
|
|
169
|
+
},
|
|
170
|
+
|
|
171
|
+
/**
|
|
172
|
+
* Creates the Association object.
|
|
173
|
+
* @param {Object} [config] Config object.
|
|
174
|
+
*/
|
|
175
|
+
constructor: function(config) {
|
|
176
|
+
Ext.apply(this, config);
|
|
177
|
+
|
|
178
|
+
var types = Ext.ModelManager.types,
|
|
179
|
+
ownerName = config.ownerModel,
|
|
180
|
+
associatedName = config.associatedModel,
|
|
181
|
+
ownerModel = types[ownerName],
|
|
182
|
+
associatedModel = types[associatedName],
|
|
183
|
+
ownerProto;
|
|
184
|
+
|
|
185
|
+
//<debug>
|
|
186
|
+
if (ownerModel === undefined) {
|
|
187
|
+
Ext.Error.raise("The configured ownerModel was not valid (you tried " + ownerName + ")");
|
|
188
|
+
}
|
|
189
|
+
if (associatedModel === undefined) {
|
|
190
|
+
Ext.Error.raise("The configured associatedModel was not valid (you tried " + associatedName + ")");
|
|
191
|
+
}
|
|
192
|
+
//</debug>
|
|
193
|
+
|
|
194
|
+
this.ownerModel = ownerModel;
|
|
195
|
+
this.associatedModel = associatedModel;
|
|
196
|
+
|
|
197
|
+
/**
|
|
198
|
+
* @property {String} ownerName
|
|
199
|
+
* The name of the model that 'owns' the association
|
|
200
|
+
*/
|
|
201
|
+
|
|
202
|
+
/**
|
|
203
|
+
* @property {String} associatedName
|
|
204
|
+
* The name of the model is on the other end of the association (e.g. if a User model hasMany Orders, this is
|
|
205
|
+
* 'Order')
|
|
206
|
+
*/
|
|
207
|
+
|
|
208
|
+
Ext.applyIf(this, {
|
|
209
|
+
ownerName : ownerName,
|
|
210
|
+
associatedName: associatedName
|
|
211
|
+
});
|
|
212
|
+
|
|
213
|
+
this.associationId = 'association' + (++this.statics().AUTO_ID);
|
|
214
|
+
},
|
|
215
|
+
|
|
216
|
+
/**
|
|
217
|
+
* Get a specialized reader for reading associated data
|
|
218
|
+
* @return {Ext.data.reader.Reader} The reader, null if not supplied
|
|
219
|
+
*/
|
|
220
|
+
getReader: function(){
|
|
221
|
+
var me = this,
|
|
222
|
+
reader = me.reader,
|
|
223
|
+
model = me.associatedModel;
|
|
224
|
+
|
|
225
|
+
if (reader) {
|
|
226
|
+
if (Ext.isString(reader)) {
|
|
227
|
+
reader = {
|
|
228
|
+
type: reader
|
|
229
|
+
};
|
|
230
|
+
}
|
|
231
|
+
if (reader.isReader) {
|
|
232
|
+
reader.setModel(model);
|
|
233
|
+
} else {
|
|
234
|
+
Ext.applyIf(reader, {
|
|
235
|
+
model: model,
|
|
236
|
+
type : me.defaultReaderType
|
|
237
|
+
});
|
|
238
|
+
}
|
|
239
|
+
me.reader = Ext.createByAlias('reader.' + reader.type, reader);
|
|
240
|
+
}
|
|
241
|
+
return me.reader || null;
|
|
242
|
+
}
|
|
243
|
+
});
|
|
@@ -0,0 +1,291 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @author Ed Spencer
|
|
3
|
+
* @class Ext.data.association.BelongsTo
|
|
4
|
+
*
|
|
5
|
+
* Represents a many to one association with another model. The owner model is expected to have
|
|
6
|
+
* a foreign key which references the primary key of the associated model:
|
|
7
|
+
*
|
|
8
|
+
* Ext.define('Category', {
|
|
9
|
+
* extend: 'Ext.data.Model',
|
|
10
|
+
* fields: [
|
|
11
|
+
* { name: 'id', type: 'int' },
|
|
12
|
+
* { name: 'name', type: 'string' }
|
|
13
|
+
* ]
|
|
14
|
+
* });
|
|
15
|
+
*
|
|
16
|
+
* Ext.define('Product', {
|
|
17
|
+
* extend: 'Ext.data.Model',
|
|
18
|
+
* fields: [
|
|
19
|
+
* { name: 'id', type: 'int' },
|
|
20
|
+
* { name: 'category_id', type: 'int' },
|
|
21
|
+
* { name: 'name', type: 'string' }
|
|
22
|
+
* ],
|
|
23
|
+
* // we can use the belongsTo shortcut on the model to create a belongsTo association
|
|
24
|
+
* associations: [
|
|
25
|
+
* { type: 'belongsTo', model: 'Category' }
|
|
26
|
+
* ]
|
|
27
|
+
* });
|
|
28
|
+
*
|
|
29
|
+
* In the example above we have created models for Products and Categories, and linked them together
|
|
30
|
+
* by saying that each Product belongs to a Category. This automatically links each Product to a Category
|
|
31
|
+
* based on the Product's category_id, and provides new functions on the Product model:
|
|
32
|
+
*
|
|
33
|
+
* ## Generated getter function
|
|
34
|
+
*
|
|
35
|
+
* The first function that is added to the owner model is a getter function:
|
|
36
|
+
*
|
|
37
|
+
* var product = new Product({
|
|
38
|
+
* id: 100,
|
|
39
|
+
* category_id: 20,
|
|
40
|
+
* name: 'Sneakers'
|
|
41
|
+
* });
|
|
42
|
+
*
|
|
43
|
+
* product.getCategory(function(category, operation) {
|
|
44
|
+
* // do something with the category object
|
|
45
|
+
* alert(category.get('id')); // alerts 20
|
|
46
|
+
* }, this);
|
|
47
|
+
*
|
|
48
|
+
* The getCategory function was created on the Product model when we defined the association. This uses the
|
|
49
|
+
* Category's configured {@link Ext.data.proxy.Proxy proxy} to load the Category asynchronously, calling the provided
|
|
50
|
+
* callback when it has loaded.
|
|
51
|
+
*
|
|
52
|
+
* The new getCategory function will also accept an object containing success, failure and callback properties
|
|
53
|
+
* - callback will always be called, success will only be called if the associated model was loaded successfully
|
|
54
|
+
* and failure will only be called if the associatied model could not be loaded:
|
|
55
|
+
*
|
|
56
|
+
* product.getCategory({
|
|
57
|
+
* reload: true, // force a reload if the owner model is already cached
|
|
58
|
+
* callback: function(category, operation) {}, // a function that will always be called
|
|
59
|
+
* success : function(category, operation) {}, // a function that will only be called if the load succeeded
|
|
60
|
+
* failure : function(category, operation) {}, // a function that will only be called if the load did not succeed
|
|
61
|
+
* scope : this // optionally pass in a scope object to execute the callbacks in
|
|
62
|
+
* });
|
|
63
|
+
*
|
|
64
|
+
* In each case above the callbacks are called with two arguments - the associated model instance and the
|
|
65
|
+
* {@link Ext.data.Operation operation} object that was executed to load that instance. The Operation object is
|
|
66
|
+
* useful when the instance could not be loaded.
|
|
67
|
+
*
|
|
68
|
+
* Once the getter has been called on the model, it will be cached if the getter is called a second time. To
|
|
69
|
+
* force the model to reload, specify reload: true in the options object.
|
|
70
|
+
*
|
|
71
|
+
* ## Generated setter function
|
|
72
|
+
*
|
|
73
|
+
* The second generated function sets the associated model instance - if only a single argument is passed to
|
|
74
|
+
* the setter then the following two calls are identical:
|
|
75
|
+
*
|
|
76
|
+
* // this call...
|
|
77
|
+
* product.setCategory(10);
|
|
78
|
+
*
|
|
79
|
+
* // is equivalent to this call:
|
|
80
|
+
* product.set('category_id', 10);
|
|
81
|
+
*
|
|
82
|
+
* An instance of the owner model can also be passed as a parameter.
|
|
83
|
+
*
|
|
84
|
+
* If we pass in a second argument, the model will be automatically saved and the second argument passed to
|
|
85
|
+
* the owner model's {@link Ext.data.Model#save save} method:
|
|
86
|
+
*
|
|
87
|
+
* product.setCategory(10, function(product, operation) {
|
|
88
|
+
* // the product has been saved
|
|
89
|
+
* alert(product.get('category_id')); //now alerts 10
|
|
90
|
+
* });
|
|
91
|
+
*
|
|
92
|
+
* //alternative syntax:
|
|
93
|
+
* product.setCategory(10, {
|
|
94
|
+
* callback: function(product, operation), // a function that will always be called
|
|
95
|
+
* success : function(product, operation), // a function that will only be called if the load succeeded
|
|
96
|
+
* failure : function(product, operation), // a function that will only be called if the load did not succeed
|
|
97
|
+
* scope : this //optionally pass in a scope object to execute the callbacks in
|
|
98
|
+
* })
|
|
99
|
+
*
|
|
100
|
+
* ## Customisation
|
|
101
|
+
*
|
|
102
|
+
* Associations reflect on the models they are linking to automatically set up properties such as the
|
|
103
|
+
* {@link #primaryKey} and {@link #foreignKey}. These can alternatively be specified:
|
|
104
|
+
*
|
|
105
|
+
* Ext.define('Product', {
|
|
106
|
+
* fields: [...],
|
|
107
|
+
*
|
|
108
|
+
* associations: [
|
|
109
|
+
* { type: 'belongsTo', model: 'Category', primaryKey: 'unique_id', foreignKey: 'cat_id' }
|
|
110
|
+
* ]
|
|
111
|
+
* });
|
|
112
|
+
*
|
|
113
|
+
* Here we replaced the default primary key (defaults to 'id') and foreign key (calculated as 'category_id')
|
|
114
|
+
* with our own settings. Usually this will not be needed.
|
|
115
|
+
*/
|
|
116
|
+
Ext.define('Ext.data.association.BelongsTo', {
|
|
117
|
+
extend: 'Ext.data.association.Association',
|
|
118
|
+
alternateClassName: 'Ext.data.BelongsToAssociation',
|
|
119
|
+
alias: 'association.belongsto',
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* @cfg {String} foreignKey The name of the foreign key on the owner model that links it to the associated
|
|
123
|
+
* model. Defaults to the lowercased name of the associated model plus "_id", e.g. an association with a
|
|
124
|
+
* model called Product would set up a product_id foreign key.
|
|
125
|
+
*
|
|
126
|
+
* Ext.define('Order', {
|
|
127
|
+
* extend: 'Ext.data.Model',
|
|
128
|
+
* fields: ['id', 'date'],
|
|
129
|
+
* hasMany: 'Product'
|
|
130
|
+
* });
|
|
131
|
+
*
|
|
132
|
+
* Ext.define('Product', {
|
|
133
|
+
* extend: 'Ext.data.Model',
|
|
134
|
+
* fields: ['id', 'name', 'order_id'], // refers to the id of the order that this product belongs to
|
|
135
|
+
* belongsTo: 'Group'
|
|
136
|
+
* });
|
|
137
|
+
* var product = new Product({
|
|
138
|
+
* id: 1,
|
|
139
|
+
* name: 'Product 1',
|
|
140
|
+
* order_id: 22
|
|
141
|
+
* }, 1);
|
|
142
|
+
* product.getOrder(); // Will make a call to the server asking for order_id 22
|
|
143
|
+
*
|
|
144
|
+
*/
|
|
145
|
+
|
|
146
|
+
/**
|
|
147
|
+
* @cfg {String} getterName The name of the getter function that will be added to the local model's prototype.
|
|
148
|
+
* Defaults to 'get' + the name of the foreign model, e.g. getCategory
|
|
149
|
+
*/
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* @cfg {String} setterName The name of the setter function that will be added to the local model's prototype.
|
|
153
|
+
* Defaults to 'set' + the name of the foreign model, e.g. setCategory
|
|
154
|
+
*/
|
|
155
|
+
|
|
156
|
+
/**
|
|
157
|
+
* @cfg {String} type The type configuration can be used when creating associations using a configuration object.
|
|
158
|
+
* Use 'belongsTo' to create a BelongsTo association.
|
|
159
|
+
*
|
|
160
|
+
* associations: [{
|
|
161
|
+
* type: 'belongsTo',
|
|
162
|
+
* model: 'User'
|
|
163
|
+
* }]
|
|
164
|
+
*/
|
|
165
|
+
constructor: function(config) {
|
|
166
|
+
this.callParent(arguments);
|
|
167
|
+
|
|
168
|
+
var me = this,
|
|
169
|
+
ownerProto = me.ownerModel.prototype,
|
|
170
|
+
associatedName = me.associatedName,
|
|
171
|
+
getterName = me.getterName || 'get' + associatedName,
|
|
172
|
+
setterName = me.setterName || 'set' + associatedName;
|
|
173
|
+
|
|
174
|
+
Ext.applyIf(me, {
|
|
175
|
+
name : associatedName,
|
|
176
|
+
foreignKey : associatedName.toLowerCase() + "_id",
|
|
177
|
+
instanceName: associatedName + 'BelongsToInstance',
|
|
178
|
+
associationKey: associatedName.toLowerCase()
|
|
179
|
+
});
|
|
180
|
+
|
|
181
|
+
ownerProto[getterName] = me.createGetter();
|
|
182
|
+
ownerProto[setterName] = me.createSetter();
|
|
183
|
+
},
|
|
184
|
+
|
|
185
|
+
/**
|
|
186
|
+
* @private
|
|
187
|
+
* Returns a setter function to be placed on the owner model's prototype
|
|
188
|
+
* @return {Function} The setter function
|
|
189
|
+
*/
|
|
190
|
+
createSetter: function() {
|
|
191
|
+
var me = this,
|
|
192
|
+
foreignKey = me.foreignKey;
|
|
193
|
+
|
|
194
|
+
//'this' refers to the Model instance inside this function
|
|
195
|
+
return function(value, options, scope) {
|
|
196
|
+
// If we pass in an instance, pull the id out
|
|
197
|
+
if (value && value.isModel) {
|
|
198
|
+
value = value.getId();
|
|
199
|
+
}
|
|
200
|
+
this.set(foreignKey, value);
|
|
201
|
+
|
|
202
|
+
if (Ext.isFunction(options)) {
|
|
203
|
+
options = {
|
|
204
|
+
callback: options,
|
|
205
|
+
scope: scope || this
|
|
206
|
+
};
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
if (Ext.isObject(options)) {
|
|
210
|
+
return this.save(options);
|
|
211
|
+
}
|
|
212
|
+
};
|
|
213
|
+
},
|
|
214
|
+
|
|
215
|
+
/**
|
|
216
|
+
* @private
|
|
217
|
+
* Returns a getter function to be placed on the owner model's prototype. We cache the loaded instance
|
|
218
|
+
* the first time it is loaded so that subsequent calls to the getter always receive the same reference.
|
|
219
|
+
* @return {Function} The getter function
|
|
220
|
+
*/
|
|
221
|
+
createGetter: function() {
|
|
222
|
+
var me = this,
|
|
223
|
+
associatedName = me.associatedName,
|
|
224
|
+
associatedModel = me.associatedModel,
|
|
225
|
+
foreignKey = me.foreignKey,
|
|
226
|
+
primaryKey = me.primaryKey,
|
|
227
|
+
instanceName = me.instanceName;
|
|
228
|
+
|
|
229
|
+
//'this' refers to the Model instance inside this function
|
|
230
|
+
return function(options, scope) {
|
|
231
|
+
options = options || {};
|
|
232
|
+
|
|
233
|
+
var model = this,
|
|
234
|
+
foreignKeyId = model.get(foreignKey),
|
|
235
|
+
success,
|
|
236
|
+
instance,
|
|
237
|
+
args;
|
|
238
|
+
|
|
239
|
+
if (options.reload === true || model[instanceName] === undefined) {
|
|
240
|
+
instance = Ext.ModelManager.create({}, associatedName);
|
|
241
|
+
instance.set(primaryKey, foreignKeyId);
|
|
242
|
+
|
|
243
|
+
if (typeof options == 'function') {
|
|
244
|
+
options = {
|
|
245
|
+
callback: options,
|
|
246
|
+
scope: scope || model
|
|
247
|
+
};
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
// Overwrite the success handler so we can assign the current instance
|
|
251
|
+
success = options.success;
|
|
252
|
+
options.success = function(rec){
|
|
253
|
+
model[instanceName] = rec;
|
|
254
|
+
if (success) {
|
|
255
|
+
success.apply(this, arguments);
|
|
256
|
+
}
|
|
257
|
+
};
|
|
258
|
+
|
|
259
|
+
associatedModel.load(foreignKeyId, options);
|
|
260
|
+
// assign temporarily while we wait for data to return
|
|
261
|
+
model[instanceName] = instance;
|
|
262
|
+
return instance;
|
|
263
|
+
} else {
|
|
264
|
+
instance = model[instanceName];
|
|
265
|
+
args = [instance];
|
|
266
|
+
scope = scope || options.scope || model;
|
|
267
|
+
|
|
268
|
+
//TODO: We're duplicating the callback invokation code that the instance.load() call above
|
|
269
|
+
//makes here - ought to be able to normalize this - perhaps by caching at the Model.load layer
|
|
270
|
+
//instead of the association layer.
|
|
271
|
+
Ext.callback(options, scope, args);
|
|
272
|
+
Ext.callback(options.success, scope, args);
|
|
273
|
+
Ext.callback(options.failure, scope, args);
|
|
274
|
+
Ext.callback(options.callback, scope, args);
|
|
275
|
+
|
|
276
|
+
return instance;
|
|
277
|
+
}
|
|
278
|
+
};
|
|
279
|
+
},
|
|
280
|
+
|
|
281
|
+
/**
|
|
282
|
+
* Read associated data
|
|
283
|
+
* @private
|
|
284
|
+
* @param {Ext.data.Model} record The record we're writing to
|
|
285
|
+
* @param {Ext.data.reader.Reader} reader The reader for the associated model
|
|
286
|
+
* @param {Object} associationData The raw associated data
|
|
287
|
+
*/
|
|
288
|
+
read: function(record, reader, associationData){
|
|
289
|
+
record[this.instanceName] = reader.read([associationData]).records[0];
|
|
290
|
+
}
|
|
291
|
+
});
|