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,433 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @author Ed Spencer
|
|
3
|
+
*
|
|
4
|
+
* Proxies are used by {@link Ext.data.Store Stores} to handle the loading and saving of {@link Ext.data.Model Model}
|
|
5
|
+
* data. Usually developers will not need to create or interact with proxies directly.
|
|
6
|
+
*
|
|
7
|
+
* # Types of Proxy
|
|
8
|
+
*
|
|
9
|
+
* There are two main types of Proxy - {@link Ext.data.proxy.Client Client} and {@link Ext.data.proxy.Server Server}.
|
|
10
|
+
* The Client proxies save their data locally and include the following subclasses:
|
|
11
|
+
*
|
|
12
|
+
* - {@link Ext.data.proxy.LocalStorage LocalStorageProxy} - saves its data to localStorage if the browser supports it
|
|
13
|
+
* - {@link Ext.data.proxy.SessionStorage SessionStorageProxy} - saves its data to sessionStorage if the browsers supports it
|
|
14
|
+
* - {@link Ext.data.proxy.Memory MemoryProxy} - holds data in memory only, any data is lost when the page is refreshed
|
|
15
|
+
*
|
|
16
|
+
* The Server proxies save their data by sending requests to some remote server. These proxies include:
|
|
17
|
+
*
|
|
18
|
+
* - {@link Ext.data.proxy.Ajax Ajax} - sends requests to a server on the same domain
|
|
19
|
+
* - {@link Ext.data.proxy.JsonP JsonP} - uses JSON-P to send requests to a server on a different domain
|
|
20
|
+
* - {@link Ext.data.proxy.Direct Direct} - uses {@link Ext.direct.Manager} to send requests
|
|
21
|
+
*
|
|
22
|
+
* Proxies operate on the principle that all operations performed are either Create, Read, Update or Delete. These four
|
|
23
|
+
* operations are mapped to the methods {@link #create}, {@link #read}, {@link #update} and {@link #destroy}
|
|
24
|
+
* respectively. Each Proxy subclass implements these functions.
|
|
25
|
+
*
|
|
26
|
+
* The CRUD methods each expect an {@link Ext.data.Operation Operation} object as the sole argument. The Operation
|
|
27
|
+
* encapsulates information about the action the Store wishes to perform, the {@link Ext.data.Model model} instances
|
|
28
|
+
* that are to be modified, etc. See the {@link Ext.data.Operation Operation} documentation for more details. Each CRUD
|
|
29
|
+
* method also accepts a callback function to be called asynchronously on completion.
|
|
30
|
+
*
|
|
31
|
+
* Proxies also support batching of Operations via a {@link Ext.data.Batch batch} object, invoked by the {@link #batch}
|
|
32
|
+
* method.
|
|
33
|
+
*/
|
|
34
|
+
Ext.define('Ext.data.proxy.Proxy', {
|
|
35
|
+
alias: 'proxy.proxy',
|
|
36
|
+
alternateClassName: ['Ext.data.DataProxy', 'Ext.data.Proxy'],
|
|
37
|
+
|
|
38
|
+
uses: [
|
|
39
|
+
'Ext.data.Batch',
|
|
40
|
+
'Ext.data.Operation',
|
|
41
|
+
'Ext.data.Model'
|
|
42
|
+
],
|
|
43
|
+
|
|
44
|
+
mixins: {
|
|
45
|
+
observable: 'Ext.util.Observable'
|
|
46
|
+
},
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* @cfg {String} batchOrder
|
|
50
|
+
* Comma-separated ordering 'create', 'update' and 'destroy' actions when batching. Override this to set a different
|
|
51
|
+
* order for the batched CRUD actions to be executed in. Defaults to 'create,update,destroy'.
|
|
52
|
+
*/
|
|
53
|
+
batchOrder: 'create,update,destroy',
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* @cfg {Boolean} batchActions
|
|
57
|
+
* True to batch actions of a particular type when synchronizing the store. Defaults to true.
|
|
58
|
+
*/
|
|
59
|
+
batchActions: true,
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* @cfg {String} defaultReaderType
|
|
63
|
+
* The default registered reader type. Defaults to 'json'.
|
|
64
|
+
* @private
|
|
65
|
+
*/
|
|
66
|
+
defaultReaderType: 'json',
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* @cfg {String} defaultWriterType
|
|
70
|
+
* The default registered writer type. Defaults to 'json'.
|
|
71
|
+
* @private
|
|
72
|
+
*/
|
|
73
|
+
defaultWriterType: 'json',
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* @cfg {String/Ext.data.Model} model
|
|
77
|
+
* The name of the Model to tie to this Proxy. Can be either the string name of the Model, or a reference to the
|
|
78
|
+
* Model constructor. Required.
|
|
79
|
+
*/
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* @cfg {Object/String/Ext.data.reader.Reader} reader
|
|
83
|
+
* The Ext.data.reader.Reader to use to decode the server's response or data read from client. This can either be a
|
|
84
|
+
* Reader instance, a config object or just a valid Reader type name (e.g. 'json', 'xml').
|
|
85
|
+
*/
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* @cfg {Object/String/Ext.data.writer.Writer} writer
|
|
89
|
+
* The Ext.data.writer.Writer to use to encode any request sent to the server or saved to client. This can either be
|
|
90
|
+
* a Writer instance, a config object or just a valid Writer type name (e.g. 'json', 'xml').
|
|
91
|
+
*/
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* @property {Boolean} isProxy
|
|
95
|
+
* `true` in this class to identify an object as an instantiated Proxy, or subclass thereof.
|
|
96
|
+
*/
|
|
97
|
+
isProxy: true,
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Creates the Proxy
|
|
101
|
+
* @param {Object} config (optional) Config object.
|
|
102
|
+
*/
|
|
103
|
+
constructor: function(config) {
|
|
104
|
+
config = config || {};
|
|
105
|
+
|
|
106
|
+
if (config.model === undefined) {
|
|
107
|
+
delete config.model;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
Ext.apply(this, config);
|
|
111
|
+
|
|
112
|
+
this.mixins.observable.constructor.call(this);
|
|
113
|
+
|
|
114
|
+
if (this.model !== undefined && !(this.model instanceof Ext.data.Model)) {
|
|
115
|
+
this.setModel(this.model);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* @event metachange
|
|
120
|
+
* Fires when this proxy's reader provides new metadata. Metadata usually consists
|
|
121
|
+
* of new field definitions, but can include any configuration data required by an
|
|
122
|
+
* application, and can be processed as needed in the event handler.
|
|
123
|
+
* This event is currently only fired for JsonReaders. Note that this event is also
|
|
124
|
+
* propagated by {@link Ext.data.Store}, which is typically where it would be handled.
|
|
125
|
+
* @param {Ext.data.proxy.Proxy} this
|
|
126
|
+
* @param {Object} meta The JSON metadata
|
|
127
|
+
*/
|
|
128
|
+
},
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* Sets the model associated with this proxy. This will only usually be called by a Store
|
|
132
|
+
*
|
|
133
|
+
* @param {String/Ext.data.Model} model The new model. Can be either the model name string,
|
|
134
|
+
* or a reference to the model's constructor
|
|
135
|
+
* @param {Boolean} setOnStore Sets the new model on the associated Store, if one is present
|
|
136
|
+
*/
|
|
137
|
+
setModel: function(model, setOnStore) {
|
|
138
|
+
this.model = Ext.ModelManager.getModel(model);
|
|
139
|
+
|
|
140
|
+
var reader = this.reader,
|
|
141
|
+
writer = this.writer;
|
|
142
|
+
|
|
143
|
+
this.setReader(reader);
|
|
144
|
+
this.setWriter(writer);
|
|
145
|
+
|
|
146
|
+
if (setOnStore && this.store) {
|
|
147
|
+
this.store.setModel(this.model);
|
|
148
|
+
}
|
|
149
|
+
},
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* Returns the model attached to this Proxy
|
|
153
|
+
* @return {Ext.data.Model} The model
|
|
154
|
+
*/
|
|
155
|
+
getModel: function() {
|
|
156
|
+
return this.model;
|
|
157
|
+
},
|
|
158
|
+
|
|
159
|
+
/**
|
|
160
|
+
* Sets the Proxy's Reader by string, config object or Reader instance
|
|
161
|
+
*
|
|
162
|
+
* @param {String/Object/Ext.data.reader.Reader} reader The new Reader, which can be either a type string,
|
|
163
|
+
* a configuration object or an Ext.data.reader.Reader instance
|
|
164
|
+
* @return {Ext.data.reader.Reader} The attached Reader object
|
|
165
|
+
*/
|
|
166
|
+
setReader: function(reader) {
|
|
167
|
+
var me = this;
|
|
168
|
+
|
|
169
|
+
if (reader === undefined || typeof reader == 'string') {
|
|
170
|
+
reader = {
|
|
171
|
+
type: reader
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
if (reader.isReader) {
|
|
176
|
+
reader.setModel(me.model);
|
|
177
|
+
} else {
|
|
178
|
+
Ext.applyIf(reader, {
|
|
179
|
+
proxy: me,
|
|
180
|
+
model: me.model,
|
|
181
|
+
type : me.defaultReaderType
|
|
182
|
+
});
|
|
183
|
+
|
|
184
|
+
reader = Ext.createByAlias('reader.' + reader.type, reader);
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
if (reader.onMetaChange) {
|
|
188
|
+
reader.onMetaChange = Ext.Function.createSequence(reader.onMetaChange, this.onMetaChange, this);
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
me.reader = reader;
|
|
192
|
+
return me.reader;
|
|
193
|
+
},
|
|
194
|
+
|
|
195
|
+
/**
|
|
196
|
+
* Returns the reader currently attached to this proxy instance
|
|
197
|
+
* @return {Ext.data.reader.Reader} The Reader instance
|
|
198
|
+
*/
|
|
199
|
+
getReader: function() {
|
|
200
|
+
return this.reader;
|
|
201
|
+
},
|
|
202
|
+
|
|
203
|
+
/**
|
|
204
|
+
* @private
|
|
205
|
+
* Called each time the reader's onMetaChange is called so that the proxy can fire the metachange event
|
|
206
|
+
*/
|
|
207
|
+
onMetaChange: function(meta) {
|
|
208
|
+
this.fireEvent('metachange', this, meta);
|
|
209
|
+
},
|
|
210
|
+
|
|
211
|
+
/**
|
|
212
|
+
* Sets the Proxy's Writer by string, config object or Writer instance
|
|
213
|
+
*
|
|
214
|
+
* @param {String/Object/Ext.data.writer.Writer} writer The new Writer, which can be either a type string,
|
|
215
|
+
* a configuration object or an Ext.data.writer.Writer instance
|
|
216
|
+
* @return {Ext.data.writer.Writer} The attached Writer object
|
|
217
|
+
*/
|
|
218
|
+
setWriter: function(writer) {
|
|
219
|
+
if (writer === undefined || typeof writer == 'string') {
|
|
220
|
+
writer = {
|
|
221
|
+
type: writer
|
|
222
|
+
};
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
if (!writer.isWriter) {
|
|
226
|
+
Ext.applyIf(writer, {
|
|
227
|
+
model: this.model,
|
|
228
|
+
type : this.defaultWriterType
|
|
229
|
+
});
|
|
230
|
+
|
|
231
|
+
writer = Ext.createByAlias('writer.' + writer.type, writer);
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
this.writer = writer;
|
|
235
|
+
|
|
236
|
+
return this.writer;
|
|
237
|
+
},
|
|
238
|
+
|
|
239
|
+
/**
|
|
240
|
+
* Returns the writer currently attached to this proxy instance
|
|
241
|
+
* @return {Ext.data.writer.Writer} The Writer instance
|
|
242
|
+
*/
|
|
243
|
+
getWriter: function() {
|
|
244
|
+
return this.writer;
|
|
245
|
+
},
|
|
246
|
+
|
|
247
|
+
/**
|
|
248
|
+
* Performs the given create operation.
|
|
249
|
+
* @param {Ext.data.Operation} operation The Operation to perform
|
|
250
|
+
* @param {Function} callback Callback function to be called when the Operation has completed (whether
|
|
251
|
+
* successful or not)
|
|
252
|
+
* @param {Object} scope Scope to execute the callback function in
|
|
253
|
+
* @method
|
|
254
|
+
*/
|
|
255
|
+
create: Ext.emptyFn,
|
|
256
|
+
|
|
257
|
+
/**
|
|
258
|
+
* Performs the given read operation.
|
|
259
|
+
* @param {Ext.data.Operation} operation The Operation to perform
|
|
260
|
+
* @param {Function} callback Callback function to be called when the Operation has completed (whether
|
|
261
|
+
* successful or not)
|
|
262
|
+
* @param {Object} scope Scope to execute the callback function in
|
|
263
|
+
* @method
|
|
264
|
+
*/
|
|
265
|
+
read: Ext.emptyFn,
|
|
266
|
+
|
|
267
|
+
/**
|
|
268
|
+
* Performs the given update operation.
|
|
269
|
+
* @param {Ext.data.Operation} operation The Operation to perform
|
|
270
|
+
* @param {Function} callback Callback function to be called when the Operation has completed (whether
|
|
271
|
+
* successful or not)
|
|
272
|
+
* @param {Object} scope Scope to execute the callback function in
|
|
273
|
+
* @method
|
|
274
|
+
*/
|
|
275
|
+
update: Ext.emptyFn,
|
|
276
|
+
|
|
277
|
+
/**
|
|
278
|
+
* Performs the given destroy operation.
|
|
279
|
+
* @param {Ext.data.Operation} operation The Operation to perform
|
|
280
|
+
* @param {Function} callback Callback function to be called when the Operation has completed (whether
|
|
281
|
+
* successful or not)
|
|
282
|
+
* @param {Object} scope Scope to execute the callback function in
|
|
283
|
+
* @method
|
|
284
|
+
*/
|
|
285
|
+
destroy: Ext.emptyFn,
|
|
286
|
+
|
|
287
|
+
/**
|
|
288
|
+
* Performs a batch of {@link Ext.data.Operation Operations}, in the order specified by {@link #batchOrder}. Used
|
|
289
|
+
* internally by {@link Ext.data.Store}'s {@link Ext.data.Store#sync sync} method. Example usage:
|
|
290
|
+
*
|
|
291
|
+
* myProxy.batch({
|
|
292
|
+
* create : [myModel1, myModel2],
|
|
293
|
+
* update : [myModel3],
|
|
294
|
+
* destroy: [myModel4, myModel5]
|
|
295
|
+
* });
|
|
296
|
+
*
|
|
297
|
+
* Where the myModel* above are {@link Ext.data.Model Model} instances - in this case 1 and 2 are new instances and
|
|
298
|
+
* have not been saved before, 3 has been saved previously but needs to be updated, and 4 and 5 have already been
|
|
299
|
+
* saved but should now be destroyed.
|
|
300
|
+
*
|
|
301
|
+
* Note that the previous version of this method took 2 arguments (operations and listeners). While this is still
|
|
302
|
+
* supported for now, the current signature is now a single `options` argument that can contain both operations and
|
|
303
|
+
* listeners, in addition to other options. The multi-argument signature will likely be deprecated in a future release.
|
|
304
|
+
*
|
|
305
|
+
* @param {Object} options Object containing one or more properties supported by the batch method:
|
|
306
|
+
*
|
|
307
|
+
* @param {Object} options.operations Object containing the Model instances to act upon, keyed by action name
|
|
308
|
+
*
|
|
309
|
+
* @param {Object} [options.listeners] Event listeners object passed straight through to the Batch -
|
|
310
|
+
* see {@link Ext.data.Batch} for details
|
|
311
|
+
*
|
|
312
|
+
* @param {Ext.data.Batch/Object} [options.batch] A {@link Ext.data.Batch} object (or batch config to apply
|
|
313
|
+
* to the created batch). If unspecified a default batch will be auto-created.
|
|
314
|
+
*
|
|
315
|
+
* @param {Function} [options.callback] The function to be called upon completion of processing the batch.
|
|
316
|
+
* The callback is called regardless of success or failure and is passed the following parameters:
|
|
317
|
+
* @param {Ext.data.Batch} options.callback.batch The {@link Ext.data.Batch batch} that was processed,
|
|
318
|
+
* containing all operations in their current state after processing
|
|
319
|
+
* @param {Object} options.callback.options The options argument that was originally passed into batch
|
|
320
|
+
*
|
|
321
|
+
* @param {Function} [options.success] The function to be called upon successful completion of the batch. The
|
|
322
|
+
* success function is called only if no exceptions were reported in any operations. If one or more exceptions
|
|
323
|
+
* occurred then the `failure` function will be called instead. The success function is called
|
|
324
|
+
* with the following parameters:
|
|
325
|
+
* @param {Ext.data.Batch} options.success.batch The {@link Ext.data.Batch batch} that was processed,
|
|
326
|
+
* containing all operations in their current state after processing
|
|
327
|
+
* @param {Object} options.success.options The options argument that was originally passed into batch
|
|
328
|
+
*
|
|
329
|
+
* @param {Function} [options.failure] The function to be called upon unsuccessful completion of the batch. The
|
|
330
|
+
* failure function is called when one or more operations returns an exception during processing (even if some
|
|
331
|
+
* operations were also successful). In this case you can check the batch's {@link Ext.data.Batch#exceptions
|
|
332
|
+
* exceptions} array to see exactly which operations had exceptions. The failure function is called with the
|
|
333
|
+
* following parameters:
|
|
334
|
+
* @param {Ext.data.Batch} options.failure.batch The {@link Ext.data.Batch batch} that was processed,
|
|
335
|
+
* containing all operations in their current state after processing
|
|
336
|
+
* @param {Object} options.failure.options The options argument that was originally passed into batch
|
|
337
|
+
*
|
|
338
|
+
* @param {Object} [options.scope] The scope in which to execute any callbacks (i.e. the `this` object inside
|
|
339
|
+
* the callback, success and/or failure functions). Defaults to the proxy.
|
|
340
|
+
*
|
|
341
|
+
* @return {Ext.data.Batch} The newly created Batch
|
|
342
|
+
*/
|
|
343
|
+
batch: function(options, /* deprecated */listeners) {
|
|
344
|
+
var me = this,
|
|
345
|
+
useBatch = me.batchActions,
|
|
346
|
+
batch,
|
|
347
|
+
records,
|
|
348
|
+
actions, aLen, action, a, r, rLen, record;
|
|
349
|
+
|
|
350
|
+
if (options.operations === undefined) {
|
|
351
|
+
// the old-style (operations, listeners) signature was called
|
|
352
|
+
// so convert to the single options argument syntax
|
|
353
|
+
options = {
|
|
354
|
+
operations: options,
|
|
355
|
+
listeners: listeners
|
|
356
|
+
};
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
if (options.batch) {
|
|
360
|
+
if (Ext.isDefined(options.batch.runOperation)) {
|
|
361
|
+
batch = Ext.applyIf(options.batch, {
|
|
362
|
+
proxy: me,
|
|
363
|
+
listeners: {}
|
|
364
|
+
});
|
|
365
|
+
}
|
|
366
|
+
} else {
|
|
367
|
+
options.batch = {
|
|
368
|
+
proxy: me,
|
|
369
|
+
listeners: options.listeners || {}
|
|
370
|
+
};
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
if (!batch) {
|
|
374
|
+
batch = new Ext.data.Batch(options.batch);
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
batch.on('complete', Ext.bind(me.onBatchComplete, me, [options], 0));
|
|
378
|
+
|
|
379
|
+
actions = me.batchOrder.split(',');
|
|
380
|
+
aLen = actions.length;
|
|
381
|
+
|
|
382
|
+
for (a = 0; a < aLen; a++) {
|
|
383
|
+
action = actions[a];
|
|
384
|
+
records = options.operations[action];
|
|
385
|
+
|
|
386
|
+
if (records) {
|
|
387
|
+
if (useBatch) {
|
|
388
|
+
batch.add(new Ext.data.Operation({
|
|
389
|
+
action : action,
|
|
390
|
+
records : records
|
|
391
|
+
}));
|
|
392
|
+
} else {
|
|
393
|
+
rLen = records.length;
|
|
394
|
+
|
|
395
|
+
for (r = 0; r < rLen; r++) {
|
|
396
|
+
record = records[r];
|
|
397
|
+
|
|
398
|
+
batch.add(new Ext.data.Operation({
|
|
399
|
+
action : action,
|
|
400
|
+
records : [record]
|
|
401
|
+
}));
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
|
|
407
|
+
batch.start();
|
|
408
|
+
return batch;
|
|
409
|
+
},
|
|
410
|
+
|
|
411
|
+
/**
|
|
412
|
+
* @private
|
|
413
|
+
* The internal callback that the proxy uses to call any specified user callbacks after completion of a batch
|
|
414
|
+
*/
|
|
415
|
+
onBatchComplete: function(batchOptions, batch) {
|
|
416
|
+
var scope = batchOptions.scope || this;
|
|
417
|
+
|
|
418
|
+
if (batch.hasException) {
|
|
419
|
+
if (Ext.isFunction(batchOptions.failure)) {
|
|
420
|
+
Ext.callback(batchOptions.failure, scope, [batch, batchOptions]);
|
|
421
|
+
}
|
|
422
|
+
} else if (Ext.isFunction(batchOptions.success)) {
|
|
423
|
+
Ext.callback(batchOptions.success, scope, [batch, batchOptions]);
|
|
424
|
+
}
|
|
425
|
+
|
|
426
|
+
if (Ext.isFunction(batchOptions.callback)) {
|
|
427
|
+
Ext.callback(batchOptions.callback, scope, [batch, batchOptions]);
|
|
428
|
+
}
|
|
429
|
+
}
|
|
430
|
+
}, function() {
|
|
431
|
+
//backwards compatibility
|
|
432
|
+
Ext.data.DataProxy = this;
|
|
433
|
+
});
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @author Ed Spencer
|
|
3
|
+
*
|
|
4
|
+
* The Rest proxy is a specialization of the {@link Ext.data.proxy.Ajax AjaxProxy} which simply maps the four actions
|
|
5
|
+
* (create, read, update and destroy) to RESTful HTTP verbs. For example, let's set up a {@link Ext.data.Model Model}
|
|
6
|
+
* with an inline Rest proxy
|
|
7
|
+
*
|
|
8
|
+
* Ext.define('User', {
|
|
9
|
+
* extend: 'Ext.data.Model',
|
|
10
|
+
* fields: ['id', 'name', 'email'],
|
|
11
|
+
*
|
|
12
|
+
* proxy: {
|
|
13
|
+
* type: 'rest',
|
|
14
|
+
* url : '/users'
|
|
15
|
+
* }
|
|
16
|
+
* });
|
|
17
|
+
*
|
|
18
|
+
* Now we can create a new User instance and save it via the Rest proxy. Doing this will cause the Proxy to send a POST
|
|
19
|
+
* request to '/users':
|
|
20
|
+
*
|
|
21
|
+
* var user = Ext.create('User', {name: 'Ed Spencer', email: 'ed@sencha.com'});
|
|
22
|
+
*
|
|
23
|
+
* user.save(); //POST /users
|
|
24
|
+
*
|
|
25
|
+
* Let's expand this a little and provide a callback for the {@link Ext.data.Model#save} call to update the Model once
|
|
26
|
+
* it has been created. We'll assume the creation went successfully and that the server gave this user an ID of 123:
|
|
27
|
+
*
|
|
28
|
+
* user.save({
|
|
29
|
+
* success: function(user) {
|
|
30
|
+
* user.set('name', 'Khan Noonien Singh');
|
|
31
|
+
*
|
|
32
|
+
* user.save(); //PUT /users/123
|
|
33
|
+
* }
|
|
34
|
+
* });
|
|
35
|
+
*
|
|
36
|
+
* Now that we're no longer creating a new Model instance, the request method is changed to an HTTP PUT, targeting the
|
|
37
|
+
* relevant url for that user. Now let's delete this user, which will use the DELETE method:
|
|
38
|
+
*
|
|
39
|
+
* user.destroy(); //DELETE /users/123
|
|
40
|
+
*
|
|
41
|
+
* Finally, when we perform a load of a Model or Store, Rest proxy will use the GET method:
|
|
42
|
+
*
|
|
43
|
+
* //1. Load via Store
|
|
44
|
+
*
|
|
45
|
+
* //the Store automatically picks up the Proxy from the User model
|
|
46
|
+
* var store = Ext.create('Ext.data.Store', {
|
|
47
|
+
* model: 'User'
|
|
48
|
+
* });
|
|
49
|
+
*
|
|
50
|
+
* store.load(); //GET /users
|
|
51
|
+
*
|
|
52
|
+
* //2. Load directly from the Model
|
|
53
|
+
*
|
|
54
|
+
* //GET /users/123
|
|
55
|
+
* Ext.ModelManager.getModel('User').load(123, {
|
|
56
|
+
* success: function(user) {
|
|
57
|
+
* console.log(user.getId()); //outputs 123
|
|
58
|
+
* }
|
|
59
|
+
* });
|
|
60
|
+
*
|
|
61
|
+
* # Url generation
|
|
62
|
+
*
|
|
63
|
+
* The Rest proxy is able to automatically generate the urls above based on two configuration options - {@link #appendId} and
|
|
64
|
+
* {@link #format}. If appendId is true (it is by default) then Rest proxy will automatically append the ID of the Model
|
|
65
|
+
* instance in question to the configured url, resulting in the '/users/123' that we saw above.
|
|
66
|
+
*
|
|
67
|
+
* If the request is not for a specific Model instance (e.g. loading a Store), the url is not appended with an id.
|
|
68
|
+
* The Rest proxy will automatically insert a '/' before the ID if one is not already present.
|
|
69
|
+
*
|
|
70
|
+
* new Ext.data.proxy.Rest({
|
|
71
|
+
* url: '/users',
|
|
72
|
+
* appendId: true //default
|
|
73
|
+
* });
|
|
74
|
+
*
|
|
75
|
+
* // Collection url: /users
|
|
76
|
+
* // Instance url : /users/123
|
|
77
|
+
*
|
|
78
|
+
* The Rest proxy can also optionally append a format string to the end of any generated url:
|
|
79
|
+
*
|
|
80
|
+
* new Ext.data.proxy.Rest({
|
|
81
|
+
* url: '/users',
|
|
82
|
+
* format: 'json'
|
|
83
|
+
* });
|
|
84
|
+
*
|
|
85
|
+
* // Collection url: /users.json
|
|
86
|
+
* // Instance url : /users/123.json
|
|
87
|
+
*
|
|
88
|
+
* If further customization is needed, simply implement the {@link #buildUrl} method and add your custom generated url
|
|
89
|
+
* onto the {@link Ext.data.Request Request} object that is passed to buildUrl. See [Rest proxy's implementation][1] for
|
|
90
|
+
* an example of how to achieve this.
|
|
91
|
+
*
|
|
92
|
+
* Note that Rest proxy inherits from {@link Ext.data.proxy.Ajax AjaxProxy}, which already injects all of the sorter,
|
|
93
|
+
* filter, group and paging options into the generated url. See the {@link Ext.data.proxy.Ajax AjaxProxy docs} for more
|
|
94
|
+
* details.
|
|
95
|
+
*
|
|
96
|
+
* [1]: source/Rest.html#Ext-data-proxy-Rest-method-buildUrl
|
|
97
|
+
*/
|
|
98
|
+
Ext.define('Ext.data.proxy.Rest', {
|
|
99
|
+
extend: 'Ext.data.proxy.Ajax',
|
|
100
|
+
alternateClassName: 'Ext.data.RestProxy',
|
|
101
|
+
alias : 'proxy.rest',
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* @cfg {Boolean} appendId
|
|
105
|
+
* True to automatically append the ID of a Model instance when performing a request based on that single instance.
|
|
106
|
+
* See Rest proxy intro docs for more details. Defaults to true.
|
|
107
|
+
*/
|
|
108
|
+
appendId: true,
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* @cfg {String} format
|
|
112
|
+
* Optional data format to send to the server when making any request (e.g. 'json'). See the Rest proxy intro docs
|
|
113
|
+
* for full details. Defaults to undefined.
|
|
114
|
+
*/
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* @cfg {Boolean} batchActions
|
|
118
|
+
* True to batch actions of a particular type when synchronizing the store. Defaults to false.
|
|
119
|
+
*/
|
|
120
|
+
batchActions: false,
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* Specialized version of buildUrl that incorporates the {@link #appendId} and {@link #format} options into the
|
|
124
|
+
* generated url. Override this to provide further customizations, but remember to call the superclass buildUrl so
|
|
125
|
+
* that additional parameters like the cache buster string are appended.
|
|
126
|
+
* @param {Object} request
|
|
127
|
+
*/
|
|
128
|
+
buildUrl: function(request) {
|
|
129
|
+
var me = this,
|
|
130
|
+
operation = request.operation,
|
|
131
|
+
records = operation.records || [],
|
|
132
|
+
record = records[0],
|
|
133
|
+
format = me.format,
|
|
134
|
+
url = me.getUrl(request),
|
|
135
|
+
id = record ? record.getId() : operation.id;
|
|
136
|
+
|
|
137
|
+
if (me.appendId && id) {
|
|
138
|
+
if (!url.match(/\/$/)) {
|
|
139
|
+
url += '/';
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
url += id;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
if (format) {
|
|
146
|
+
if (!url.match(/\.$/)) {
|
|
147
|
+
url += '.';
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
url += format;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
request.url = url;
|
|
154
|
+
|
|
155
|
+
return me.callParent(arguments);
|
|
156
|
+
}
|
|
157
|
+
}, function() {
|
|
158
|
+
Ext.apply(this.prototype, {
|
|
159
|
+
/**
|
|
160
|
+
* @property {Object} actionMethods
|
|
161
|
+
* Mapping of action name to HTTP request method. These default to RESTful conventions for the 'create', 'read',
|
|
162
|
+
* 'update' and 'destroy' actions (which map to 'POST', 'GET', 'PUT' and 'DELETE' respectively). This object
|
|
163
|
+
* should not be changed except globally via {@link Ext#override Ext.override} - the {@link #getMethod} function
|
|
164
|
+
* can be overridden instead.
|
|
165
|
+
*/
|
|
166
|
+
actionMethods: {
|
|
167
|
+
create : 'POST',
|
|
168
|
+
read : 'GET',
|
|
169
|
+
update : 'PUT',
|
|
170
|
+
destroy: 'DELETE'
|
|
171
|
+
}
|
|
172
|
+
});
|
|
173
|
+
});
|