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,148 @@
|
|
|
1
|
+
describe("Ext.Version", function() {
|
|
2
|
+
var version = new Ext.Version("1.2.3beta");
|
|
3
|
+
|
|
4
|
+
describe("toString", function() {
|
|
5
|
+
it("should cast to string", function() {
|
|
6
|
+
expect(version+"").toBe("1.2.3beta");
|
|
7
|
+
});
|
|
8
|
+
});
|
|
9
|
+
|
|
10
|
+
describe("getMajor", function() {
|
|
11
|
+
it("should return 1", function() {
|
|
12
|
+
expect(version.getMajor()).toBe(1);
|
|
13
|
+
});
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
describe("getMinor", function() {
|
|
17
|
+
it("should return 2", function() {
|
|
18
|
+
expect(version.getMinor()).toBe(2);
|
|
19
|
+
});
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
describe("getPatch", function() {
|
|
23
|
+
it("should return 3", function() {
|
|
24
|
+
expect(version.getPatch()).toBe(3);
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
describe("getBuild", function() {
|
|
29
|
+
it("should return 0", function() {
|
|
30
|
+
expect(version.getBuild()).toBe(0);
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
describe("getRelease", function() {
|
|
35
|
+
it("should return beta", function() {
|
|
36
|
+
expect(version.getRelease()).toBe("beta");
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
describe("getShortVersion", function() {
|
|
41
|
+
it("should return 123", function() {
|
|
42
|
+
expect(version.getShortVersion()).toBe("123");
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
describe("toArray", function() {
|
|
47
|
+
it("should return [1, 2, 3, 0, 'beta']", function() {
|
|
48
|
+
expect(version.toArray()).toEqual([1, 2, 3, 0, 'beta']);
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
describe("isGreaterThan", function() {
|
|
53
|
+
it("should be greater than 1.2.3alpha", function() {
|
|
54
|
+
expect(version.isGreaterThan("1.2.3alpha")).toBeTruthy();
|
|
55
|
+
});
|
|
56
|
+
it("should not be greater than 1.2.3RC", function() {
|
|
57
|
+
expect(version.isGreaterThan("1.2.3RC")).toBeFalsy();
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
describe("isLessThan", function() {
|
|
62
|
+
it("should not be smaller than 1.2.3alpha", function() {
|
|
63
|
+
expect(version.isLessThan("1.2.3alpha")).toBeFalsy();
|
|
64
|
+
});
|
|
65
|
+
it("should be smaller than 1.2.3RC", function() {
|
|
66
|
+
expect(version.isLessThan("1.2.3RC")).toBeTruthy();
|
|
67
|
+
});
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
describe("equals", function() {
|
|
71
|
+
it("should equals 1.2.3beta", function() {
|
|
72
|
+
expect(version.equals("1.2.3beta")).toBeTruthy();
|
|
73
|
+
});
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
describe("match", function() {
|
|
77
|
+
it("should match integer 1", function() {
|
|
78
|
+
expect(version.match(1)).toBeTruthy();
|
|
79
|
+
});
|
|
80
|
+
it("should match float 1.2", function() {
|
|
81
|
+
expect(version.match(1.2)).toBeTruthy();
|
|
82
|
+
});
|
|
83
|
+
it("should match string 1.2.3", function() {
|
|
84
|
+
expect(version.match("1.2.3")).toBeTruthy();
|
|
85
|
+
});
|
|
86
|
+
it("should not match string 1.2.3alpha", function() {
|
|
87
|
+
expect(version.match("1.2.3alpha")).toBeFalsy();
|
|
88
|
+
});
|
|
89
|
+
});
|
|
90
|
+
|
|
91
|
+
describe("setVersion", function() {
|
|
92
|
+
it("should return an instance of Ext.Version", function() {
|
|
93
|
+
Ext.setVersion("test", "1.0.1");
|
|
94
|
+
expect(Ext.getVersion("test") instanceof Ext.Version).toBe(true);
|
|
95
|
+
});
|
|
96
|
+
});
|
|
97
|
+
|
|
98
|
+
describe("statics", function() {
|
|
99
|
+
describe("getComponentValue", function() {
|
|
100
|
+
it("should return 0", function() {
|
|
101
|
+
expect(Ext.Version.getComponentValue(undefined)).toBe(0);
|
|
102
|
+
});
|
|
103
|
+
|
|
104
|
+
it("should return -2", function() {
|
|
105
|
+
expect(Ext.Version.getComponentValue(-2)).toBe(-2);
|
|
106
|
+
});
|
|
107
|
+
|
|
108
|
+
it("should return 2", function() {
|
|
109
|
+
expect(Ext.Version.getComponentValue("2")).toBe(2);
|
|
110
|
+
});
|
|
111
|
+
|
|
112
|
+
it("should return -5", function() {
|
|
113
|
+
expect(Ext.Version.getComponentValue("alpha")).toBe(-5);
|
|
114
|
+
});
|
|
115
|
+
|
|
116
|
+
it("should return unknown", function() {
|
|
117
|
+
expect(Ext.Version.getComponentValue("unknown")).toBe("unknown");
|
|
118
|
+
});
|
|
119
|
+
});
|
|
120
|
+
|
|
121
|
+
describe("compare", function() {
|
|
122
|
+
it("should return 1", function() {
|
|
123
|
+
expect(Ext.Version.compare("1.2.3beta", "1.2.2")).toBe(1);
|
|
124
|
+
expect(Ext.Version.compare("1.2.3beta", 1)).toBe(1);
|
|
125
|
+
expect(Ext.Version.compare("1.2.3beta", "1.2.3dev")).toBe(1);
|
|
126
|
+
expect(Ext.Version.compare("1.2.3beta", "1.2.3alpha")).toBe(1);
|
|
127
|
+
expect(Ext.Version.compare("1.2.3beta", "1.2.3a")).toBe(1);
|
|
128
|
+
expect(Ext.Version.compare("1.2.3beta", "1.2.3alpha")).toBe(1);
|
|
129
|
+
});
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
it("should return -1", function() {
|
|
133
|
+
expect(Ext.Version.compare("1.2.3beta", 2)).toBe(-1);
|
|
134
|
+
expect(Ext.Version.compare("1.2.3beta", "1.2.4")).toBe(-1);
|
|
135
|
+
expect(Ext.Version.compare("1.2.3beta", "1.2.3RC")).toBe(-1);
|
|
136
|
+
expect(Ext.Version.compare("1.2.3beta", "1.2.3rc")).toBe(-1);
|
|
137
|
+
expect(Ext.Version.compare("1.2.3beta", "1.2.3#")).toBe(-1);
|
|
138
|
+
expect(Ext.Version.compare("1.2.3beta", "1.2.3pl")).toBe(-1);
|
|
139
|
+
expect(Ext.Version.compare("1.2.3beta", "1.2.3p")).toBe(-1);
|
|
140
|
+
});
|
|
141
|
+
|
|
142
|
+
it("should return 0", function() {
|
|
143
|
+
expect(Ext.Version.compare("1.2.3beta", "1.2.3b")).toBe(0);
|
|
144
|
+
expect(Ext.Version.compare("1.2.3beta", "1.2.3beta")).toBe(0);
|
|
145
|
+
});
|
|
146
|
+
});
|
|
147
|
+
});
|
|
148
|
+
});
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
|
|
2
|
+
"http://www.w3.org/TR/html4/loose.dtd">
|
|
3
|
+
<html>
|
|
4
|
+
<head>
|
|
5
|
+
<script type="text/javascript" src="bootstrap.js"></script>
|
|
6
|
+
<script type="text/javascript">
|
|
7
|
+
Ext.require('*');
|
|
8
|
+
Ext.onReady(function() {
|
|
9
|
+
TestBootstrap.loadSpecs(function(){
|
|
10
|
+
if (parent && parent.Test) {
|
|
11
|
+
jasmine.getEnv().addReporter(parent.Test.SandBox.reporter);
|
|
12
|
+
}
|
|
13
|
+
jasmine.getEnv().execute();
|
|
14
|
+
});
|
|
15
|
+
});
|
|
16
|
+
</script>
|
|
17
|
+
</head>
|
|
18
|
+
<body></body>
|
|
19
|
+
</html>
|
|
@@ -0,0 +1,887 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @author Ed Spencer
|
|
3
|
+
*
|
|
4
|
+
* AbstractStore is a superclass of {@link Ext.data.Store} and {@link Ext.data.TreeStore}. It's never used directly,
|
|
5
|
+
* but offers a set of methods used by both of those subclasses.
|
|
6
|
+
*
|
|
7
|
+
* We've left it here in the docs for reference purposes, but unless you need to make a whole new type of Store, what
|
|
8
|
+
* you're probably looking for is {@link Ext.data.Store}. If you're still interested, here's a brief description of what
|
|
9
|
+
* AbstractStore is and is not.
|
|
10
|
+
*
|
|
11
|
+
* AbstractStore provides the basic configuration for anything that can be considered a Store. It expects to be
|
|
12
|
+
* given a {@link Ext.data.Model Model} that represents the type of data in the Store. It also expects to be given a
|
|
13
|
+
* {@link Ext.data.proxy.Proxy Proxy} that handles the loading of data into the Store.
|
|
14
|
+
*
|
|
15
|
+
* AbstractStore provides a few helpful methods such as {@link #method-load} and {@link #sync}, which load and save data
|
|
16
|
+
* respectively, passing the requests through the configured {@link #proxy}. Both built-in Store subclasses add extra
|
|
17
|
+
* behavior to each of these functions. Note also that each AbstractStore subclass has its own way of storing data -
|
|
18
|
+
* in {@link Ext.data.Store} the data is saved as a flat {@link Ext.util.MixedCollection MixedCollection}, whereas in
|
|
19
|
+
* {@link Ext.data.TreeStore TreeStore} we use a {@link Ext.data.Tree} to maintain the data's hierarchy.
|
|
20
|
+
*
|
|
21
|
+
* The store provides filtering and sorting support. This sorting/filtering can happen on the client side
|
|
22
|
+
* or can be completed on the server. This is controlled by the {@link Ext.data.Store#remoteSort remoteSort} and
|
|
23
|
+
* {@link Ext.data.Store#remoteFilter remoteFilter} config options. For more information see the {@link #sort} and
|
|
24
|
+
* {@link Ext.data.Store#filter filter} methods.
|
|
25
|
+
*/
|
|
26
|
+
Ext.define('Ext.data.AbstractStore', {
|
|
27
|
+
requires: [
|
|
28
|
+
'Ext.util.MixedCollection',
|
|
29
|
+
'Ext.data.proxy.Proxy',
|
|
30
|
+
'Ext.data.Operation',
|
|
31
|
+
'Ext.util.Filter'
|
|
32
|
+
],
|
|
33
|
+
|
|
34
|
+
mixins: {
|
|
35
|
+
observable: 'Ext.util.Observable',
|
|
36
|
+
sortable: 'Ext.util.Sortable'
|
|
37
|
+
},
|
|
38
|
+
|
|
39
|
+
statics: {
|
|
40
|
+
create: function(store) {
|
|
41
|
+
if (!store.isStore) {
|
|
42
|
+
if (!store.type) {
|
|
43
|
+
store.type = 'store';
|
|
44
|
+
}
|
|
45
|
+
store = Ext.createByAlias('store.' + store.type, store);
|
|
46
|
+
}
|
|
47
|
+
return store;
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
|
|
51
|
+
remoteSort : false,
|
|
52
|
+
remoteFilter: false,
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* @cfg {String/Ext.data.proxy.Proxy/Object} proxy
|
|
56
|
+
* The Proxy to use for this Store. This can be either a string, a config object or a Proxy instance -
|
|
57
|
+
* see {@link #setProxy} for details.
|
|
58
|
+
*/
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* @cfg {Boolean/Object} autoLoad
|
|
62
|
+
* If data is not specified, and if autoLoad is true or an Object, this store's load method is automatically called
|
|
63
|
+
* after creation. If the value of autoLoad is an Object, this Object will be passed to the store's load method.
|
|
64
|
+
* Defaults to false.
|
|
65
|
+
*/
|
|
66
|
+
autoLoad: undefined,
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* @cfg {Boolean} autoSync
|
|
70
|
+
* True to automatically sync the Store with its Proxy after every edit to one of its Records. Defaults to false.
|
|
71
|
+
*/
|
|
72
|
+
autoSync: false,
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* @property {String} batchUpdateMode
|
|
76
|
+
* Sets the updating behavior based on batch synchronization. 'operation' (the default) will update the Store's
|
|
77
|
+
* internal representation of the data after each operation of the batch has completed, 'complete' will wait until
|
|
78
|
+
* the entire batch has been completed before updating the Store's data. 'complete' is a good choice for local
|
|
79
|
+
* storage proxies, 'operation' is better for remote proxies, where there is a comparatively high latency.
|
|
80
|
+
*/
|
|
81
|
+
batchUpdateMode: 'operation',
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* @property {Boolean} filterOnLoad
|
|
85
|
+
* If true, any filters attached to this Store will be run after loading data, before the datachanged event is fired.
|
|
86
|
+
* Defaults to true, ignored if {@link Ext.data.Store#remoteFilter remoteFilter} is true
|
|
87
|
+
*/
|
|
88
|
+
filterOnLoad: true,
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* @property {Boolean} sortOnLoad
|
|
92
|
+
* If true, any sorters attached to this Store will be run after loading data, before the datachanged event is fired.
|
|
93
|
+
* Defaults to true, igored if {@link Ext.data.Store#remoteSort remoteSort} is true
|
|
94
|
+
*/
|
|
95
|
+
sortOnLoad: true,
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* @property {Boolean} implicitModel
|
|
99
|
+
* True if a model was created implicitly for this Store. This happens if a fields array is passed to the Store's
|
|
100
|
+
* constructor instead of a model constructor or name.
|
|
101
|
+
* @private
|
|
102
|
+
*/
|
|
103
|
+
implicitModel: false,
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* @property {String} defaultProxyType
|
|
107
|
+
* The string type of the Proxy to create if none is specified. This defaults to creating a
|
|
108
|
+
* {@link Ext.data.proxy.Memory memory proxy}.
|
|
109
|
+
*/
|
|
110
|
+
defaultProxyType: 'memory',
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* @property {Boolean} isDestroyed
|
|
114
|
+
* True if the Store has already been destroyed. If this is true, the reference to Store should be deleted
|
|
115
|
+
* as it will not function correctly any more.
|
|
116
|
+
*/
|
|
117
|
+
isDestroyed: false,
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* @property {Boolean} isStore
|
|
121
|
+
* `true` in this class to identify an object as an instantiated Store, or subclass thereof.
|
|
122
|
+
*/
|
|
123
|
+
isStore: true,
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* @cfg {String} storeId
|
|
127
|
+
* Unique identifier for this store. If present, this Store will be registered with the {@link Ext.data.StoreManager},
|
|
128
|
+
* making it easy to reuse elsewhere.
|
|
129
|
+
*
|
|
130
|
+
* Note that when store is instatiated by Controller, the storeId will be overridden by the name of the store.
|
|
131
|
+
*/
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* @cfg {Object[]} fields
|
|
135
|
+
* This may be used in place of specifying a {@link #model} configuration. The fields should be a
|
|
136
|
+
* set of {@link Ext.data.Field} configuration objects. The store will automatically create a {@link Ext.data.Model}
|
|
137
|
+
* with these fields. In general this configuration option should be avoided, it exists for the purposes of
|
|
138
|
+
* backwards compatibility. For anything more complicated, such as specifying a particular id property or
|
|
139
|
+
* associations, a {@link Ext.data.Model} should be defined and specified for the {@link #model}
|
|
140
|
+
* config.
|
|
141
|
+
*/
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* @cfg {String} model
|
|
145
|
+
* Name of the {@link Ext.data.Model Model} associated with this store.
|
|
146
|
+
* The string is used as an argument for {@link Ext.ModelManager#getModel}.
|
|
147
|
+
*/
|
|
148
|
+
|
|
149
|
+
/**
|
|
150
|
+
* @cfg {Object[]} filters
|
|
151
|
+
* Array of {@link Ext.util.Filter Filters} for this store.
|
|
152
|
+
*/
|
|
153
|
+
|
|
154
|
+
sortRoot: 'data',
|
|
155
|
+
|
|
156
|
+
//documented above
|
|
157
|
+
constructor: function(config) {
|
|
158
|
+
var me = this,
|
|
159
|
+
filters;
|
|
160
|
+
|
|
161
|
+
/**
|
|
162
|
+
* @event add
|
|
163
|
+
* Fired when a Model instance has been added to this Store
|
|
164
|
+
* @param {Ext.data.Store} store The store
|
|
165
|
+
* @param {Ext.data.Model[]} records The Model instances that were added
|
|
166
|
+
* @param {Number} index The index at which the instances were inserted
|
|
167
|
+
*/
|
|
168
|
+
|
|
169
|
+
/**
|
|
170
|
+
* @event remove
|
|
171
|
+
* Fired when a Model instance has been removed from this Store
|
|
172
|
+
* @param {Ext.data.Store} store The Store object
|
|
173
|
+
* @param {Ext.data.Model} record The record that was removed
|
|
174
|
+
* @param {Number} index The index of the record that was removed
|
|
175
|
+
*/
|
|
176
|
+
|
|
177
|
+
/**
|
|
178
|
+
* @event update
|
|
179
|
+
* Fires when a Model instance has been updated
|
|
180
|
+
* @param {Ext.data.Store} this
|
|
181
|
+
* @param {Ext.data.Model} record The Model instance that was updated
|
|
182
|
+
* @param {String} operation The update operation being performed. Value may be one of:
|
|
183
|
+
*
|
|
184
|
+
* Ext.data.Model.EDIT
|
|
185
|
+
* Ext.data.Model.REJECT
|
|
186
|
+
* Ext.data.Model.COMMIT
|
|
187
|
+
* @param {String[]} modifiedFieldNames Array of field names changed during edit.
|
|
188
|
+
*/
|
|
189
|
+
|
|
190
|
+
/**
|
|
191
|
+
* @event datachanged
|
|
192
|
+
* Fires whenever the records in the Store have changed in some way - this could include adding or removing
|
|
193
|
+
* records, or updating the data in existing records
|
|
194
|
+
* @param {Ext.data.Store} this The data store
|
|
195
|
+
*/
|
|
196
|
+
|
|
197
|
+
/**
|
|
198
|
+
* @event refresh
|
|
199
|
+
* Fires when the data cache has changed in a bulk manner (e.g., it has been sorted, filtered, etc.) and a
|
|
200
|
+
* widget that is using this Store as a Record cache should refresh its view.
|
|
201
|
+
* @param {Ext.data.Store} this The data store
|
|
202
|
+
*/
|
|
203
|
+
|
|
204
|
+
/**
|
|
205
|
+
* @event beforeload
|
|
206
|
+
* Fires before a request is made for a new data object. If the beforeload handler returns false the load
|
|
207
|
+
* action will be canceled.
|
|
208
|
+
* @param {Ext.data.Store} store This Store
|
|
209
|
+
* @param {Ext.data.Operation} operation The Ext.data.Operation object that will be passed to the Proxy to
|
|
210
|
+
* load the Store
|
|
211
|
+
*/
|
|
212
|
+
|
|
213
|
+
/**
|
|
214
|
+
* @event load
|
|
215
|
+
* Fires whenever the store reads data from a remote data source.
|
|
216
|
+
* @param {Ext.data.Store} this
|
|
217
|
+
* @param {Ext.data.Model[]} records An array of records
|
|
218
|
+
* @param {Boolean} successful True if the operation was successful.
|
|
219
|
+
*/
|
|
220
|
+
|
|
221
|
+
/**
|
|
222
|
+
* @event write
|
|
223
|
+
* Fires whenever a successful write has been made via the configured {@link #proxy Proxy}
|
|
224
|
+
* @param {Ext.data.Store} store This Store
|
|
225
|
+
* @param {Ext.data.Operation} operation The {@link Ext.data.Operation Operation} object that was used in
|
|
226
|
+
* the write
|
|
227
|
+
*/
|
|
228
|
+
|
|
229
|
+
/**
|
|
230
|
+
* @event beforesync
|
|
231
|
+
* Fired before a call to {@link #sync} is executed. Return false from any listener to cancel the sync
|
|
232
|
+
* @param {Object} options Hash of all records to be synchronized, broken down into create, update and destroy
|
|
233
|
+
*/
|
|
234
|
+
/**
|
|
235
|
+
* @event clear
|
|
236
|
+
* Fired after the {@link #removeAll} method is called.
|
|
237
|
+
* @param {Ext.data.Store} this
|
|
238
|
+
*/
|
|
239
|
+
/**
|
|
240
|
+
* @event metachange
|
|
241
|
+
* Fires when this store's underlying reader (available via the proxy) provides new metadata.
|
|
242
|
+
* Metadata usually consists of new field definitions, but can include any configuration data
|
|
243
|
+
* required by an application, and can be processed as needed in the event handler.
|
|
244
|
+
* This event is currently only fired for JsonReaders.
|
|
245
|
+
* @param {Ext.data.Store} this
|
|
246
|
+
* @param {Object} meta The JSON metadata
|
|
247
|
+
*/
|
|
248
|
+
|
|
249
|
+
Ext.apply(me, config);
|
|
250
|
+
// don't use *config* anymore from here on... use *me* instead...
|
|
251
|
+
|
|
252
|
+
/**
|
|
253
|
+
* Temporary cache in which removed model instances are kept until successfully synchronised with a Proxy,
|
|
254
|
+
* at which point this is cleared.
|
|
255
|
+
* @protected
|
|
256
|
+
* @property {Ext.data.Model[]} removed
|
|
257
|
+
*/
|
|
258
|
+
me.removed = [];
|
|
259
|
+
|
|
260
|
+
me.mixins.observable.constructor.apply(me, arguments);
|
|
261
|
+
me.model = Ext.ModelManager.getModel(me.model);
|
|
262
|
+
|
|
263
|
+
/**
|
|
264
|
+
* @property {Object} modelDefaults
|
|
265
|
+
* @private
|
|
266
|
+
* A set of default values to be applied to every model instance added via {@link #insert} or created via {@link #create}.
|
|
267
|
+
* This is used internally by associations to set foreign keys and other fields. See the Association classes source code
|
|
268
|
+
* for examples. This should not need to be used by application developers.
|
|
269
|
+
*/
|
|
270
|
+
Ext.applyIf(me, {
|
|
271
|
+
modelDefaults: {}
|
|
272
|
+
});
|
|
273
|
+
|
|
274
|
+
//Supports the 3.x style of simply passing an array of fields to the store, implicitly creating a model
|
|
275
|
+
if (!me.model && me.fields) {
|
|
276
|
+
me.model = Ext.define('Ext.data.Store.ImplicitModel-' + (me.storeId || Ext.id()), {
|
|
277
|
+
extend: 'Ext.data.Model',
|
|
278
|
+
fields: me.fields,
|
|
279
|
+
proxy: me.proxy || me.defaultProxyType
|
|
280
|
+
});
|
|
281
|
+
|
|
282
|
+
delete me.fields;
|
|
283
|
+
|
|
284
|
+
me.implicitModel = true;
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
// <debug>
|
|
288
|
+
if (!me.model && me.useModelWarning !== false) {
|
|
289
|
+
if (Ext.isDefined(Ext.global.console)) {
|
|
290
|
+
Ext.global.console.warn('Store defined with no model. You may have mistyped the model name.');
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
// </debug>
|
|
294
|
+
|
|
295
|
+
//ensures that the Proxy is instantiated correctly
|
|
296
|
+
me.setProxy(me.proxy || me.model.getProxy());
|
|
297
|
+
|
|
298
|
+
me.proxy.on('metachange', me.onMetaChange, me);
|
|
299
|
+
|
|
300
|
+
if (me.id && !me.storeId) {
|
|
301
|
+
me.storeId = me.id;
|
|
302
|
+
delete me.id;
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
if (me.storeId) {
|
|
306
|
+
Ext.data.StoreManager.register(me);
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
me.mixins.sortable.initSortable.call(me);
|
|
310
|
+
|
|
311
|
+
/**
|
|
312
|
+
* @property {Ext.util.MixedCollection} filters
|
|
313
|
+
* The collection of {@link Ext.util.Filter Filters} currently applied to this Store
|
|
314
|
+
*/
|
|
315
|
+
filters = me.decodeFilters(me.filters);
|
|
316
|
+
me.filters = new Ext.util.MixedCollection();
|
|
317
|
+
me.filters.addAll(filters);
|
|
318
|
+
},
|
|
319
|
+
|
|
320
|
+
/**
|
|
321
|
+
* Sets the Store's Proxy by string, config object or Proxy instance
|
|
322
|
+
* @param {String/Object/Ext.data.proxy.Proxy} proxy The new Proxy, which can be either a type string, a configuration object
|
|
323
|
+
* or an Ext.data.proxy.Proxy instance
|
|
324
|
+
* @return {Ext.data.proxy.Proxy} The attached Proxy object
|
|
325
|
+
*/
|
|
326
|
+
setProxy: function(proxy) {
|
|
327
|
+
var me = this;
|
|
328
|
+
|
|
329
|
+
if (proxy instanceof Ext.data.proxy.Proxy) {
|
|
330
|
+
proxy.setModel(me.model);
|
|
331
|
+
} else {
|
|
332
|
+
if (Ext.isString(proxy)) {
|
|
333
|
+
proxy = {
|
|
334
|
+
type: proxy
|
|
335
|
+
};
|
|
336
|
+
}
|
|
337
|
+
Ext.applyIf(proxy, {
|
|
338
|
+
model: me.model
|
|
339
|
+
});
|
|
340
|
+
|
|
341
|
+
proxy = Ext.createByAlias('proxy.' + proxy.type, proxy);
|
|
342
|
+
}
|
|
343
|
+
|
|
344
|
+
me.proxy = proxy;
|
|
345
|
+
|
|
346
|
+
return me.proxy;
|
|
347
|
+
},
|
|
348
|
+
|
|
349
|
+
/**
|
|
350
|
+
* Returns the proxy currently attached to this proxy instance
|
|
351
|
+
* @return {Ext.data.proxy.Proxy} The Proxy instance
|
|
352
|
+
*/
|
|
353
|
+
getProxy: function() {
|
|
354
|
+
return this.proxy;
|
|
355
|
+
},
|
|
356
|
+
|
|
357
|
+
// private
|
|
358
|
+
onMetaChange: function(proxy, meta) {
|
|
359
|
+
this.fireEvent('metachange', this, meta);
|
|
360
|
+
},
|
|
361
|
+
|
|
362
|
+
//saves any phantom records
|
|
363
|
+
create: function(data, options) {
|
|
364
|
+
var me = this,
|
|
365
|
+
instance = Ext.ModelManager.create(Ext.applyIf(data, me.modelDefaults), me.model.modelName),
|
|
366
|
+
operation;
|
|
367
|
+
|
|
368
|
+
options = options || {};
|
|
369
|
+
|
|
370
|
+
Ext.applyIf(options, {
|
|
371
|
+
action : 'create',
|
|
372
|
+
records: [instance]
|
|
373
|
+
});
|
|
374
|
+
|
|
375
|
+
operation = new Ext.data.Operation(options);
|
|
376
|
+
|
|
377
|
+
me.proxy.create(operation, me.onProxyWrite, me);
|
|
378
|
+
|
|
379
|
+
return instance;
|
|
380
|
+
},
|
|
381
|
+
|
|
382
|
+
read: function() {
|
|
383
|
+
return this.load.apply(this, arguments);
|
|
384
|
+
},
|
|
385
|
+
|
|
386
|
+
update: function(options) {
|
|
387
|
+
var me = this,
|
|
388
|
+
operation;
|
|
389
|
+
options = options || {};
|
|
390
|
+
|
|
391
|
+
Ext.applyIf(options, {
|
|
392
|
+
action : 'update',
|
|
393
|
+
records: me.getUpdatedRecords()
|
|
394
|
+
});
|
|
395
|
+
|
|
396
|
+
operation = new Ext.data.Operation(options);
|
|
397
|
+
|
|
398
|
+
return me.proxy.update(operation, me.onProxyWrite, me);
|
|
399
|
+
},
|
|
400
|
+
|
|
401
|
+
/**
|
|
402
|
+
* @private
|
|
403
|
+
* Callback for any write Operation over the Proxy. Updates the Store's MixedCollection to reflect
|
|
404
|
+
* the updates provided by the Proxy
|
|
405
|
+
*/
|
|
406
|
+
onProxyWrite: function(operation) {
|
|
407
|
+
var me = this,
|
|
408
|
+
success = operation.wasSuccessful(),
|
|
409
|
+
records = operation.getRecords();
|
|
410
|
+
|
|
411
|
+
switch (operation.action) {
|
|
412
|
+
case 'create':
|
|
413
|
+
me.onCreateRecords(records, operation, success);
|
|
414
|
+
break;
|
|
415
|
+
case 'update':
|
|
416
|
+
me.onUpdateRecords(records, operation, success);
|
|
417
|
+
break;
|
|
418
|
+
case 'destroy':
|
|
419
|
+
me.onDestroyRecords(records, operation, success);
|
|
420
|
+
break;
|
|
421
|
+
}
|
|
422
|
+
|
|
423
|
+
if (success) {
|
|
424
|
+
me.fireEvent('write', me, operation);
|
|
425
|
+
me.fireEvent('datachanged', me);
|
|
426
|
+
me.fireEvent('refresh', me);
|
|
427
|
+
}
|
|
428
|
+
//this is a callback that would have been passed to the 'create', 'update' or 'destroy' function and is optional
|
|
429
|
+
Ext.callback(operation.callback, operation.scope || me, [records, operation, success]);
|
|
430
|
+
},
|
|
431
|
+
|
|
432
|
+
// may be implemented by store subclasses
|
|
433
|
+
onCreateRecords: Ext.emptyFn,
|
|
434
|
+
|
|
435
|
+
// may be implemented by store subclasses
|
|
436
|
+
onUpdateRecords: Ext.emptyFn,
|
|
437
|
+
|
|
438
|
+
/**
|
|
439
|
+
* Removes any records when a write is returned from the server.
|
|
440
|
+
* @private
|
|
441
|
+
* @param {Ext.data.Model[]} records The array of removed records
|
|
442
|
+
* @param {Ext.data.Operation} operation The operation that just completed
|
|
443
|
+
* @param {Boolean} success True if the operation was successful
|
|
444
|
+
*/
|
|
445
|
+
onDestroyRecords: function(records, operation, success) {
|
|
446
|
+
if (success) {
|
|
447
|
+
this.removed = [];
|
|
448
|
+
}
|
|
449
|
+
},
|
|
450
|
+
|
|
451
|
+
//tells the attached proxy to destroy the given records
|
|
452
|
+
destroy: function(options) {
|
|
453
|
+
var me = this,
|
|
454
|
+
operation;
|
|
455
|
+
|
|
456
|
+
options = options || {};
|
|
457
|
+
|
|
458
|
+
Ext.applyIf(options, {
|
|
459
|
+
action : 'destroy',
|
|
460
|
+
records: me.getRemovedRecords()
|
|
461
|
+
});
|
|
462
|
+
|
|
463
|
+
operation = new Ext.data.Operation(options);
|
|
464
|
+
|
|
465
|
+
return me.proxy.destroy(operation, me.onProxyWrite, me);
|
|
466
|
+
},
|
|
467
|
+
|
|
468
|
+
/**
|
|
469
|
+
* @private
|
|
470
|
+
* Attached as the 'operationcomplete' event listener to a proxy's Batch object. By default just calls through
|
|
471
|
+
* to onProxyWrite.
|
|
472
|
+
*/
|
|
473
|
+
onBatchOperationComplete: function(batch, operation) {
|
|
474
|
+
return this.onProxyWrite(operation);
|
|
475
|
+
},
|
|
476
|
+
|
|
477
|
+
/**
|
|
478
|
+
* @private
|
|
479
|
+
* Attached as the 'complete' event listener to a proxy's Batch object. Iterates over the batch operations
|
|
480
|
+
* and updates the Store's internal data MixedCollection.
|
|
481
|
+
*/
|
|
482
|
+
onBatchComplete: function(batch, operation) {
|
|
483
|
+
var me = this,
|
|
484
|
+
operations = batch.operations,
|
|
485
|
+
length = operations.length,
|
|
486
|
+
i;
|
|
487
|
+
|
|
488
|
+
me.suspendEvents();
|
|
489
|
+
|
|
490
|
+
for (i = 0; i < length; i++) {
|
|
491
|
+
me.onProxyWrite(operations[i]);
|
|
492
|
+
}
|
|
493
|
+
|
|
494
|
+
me.resumeEvents();
|
|
495
|
+
|
|
496
|
+
me.fireEvent('datachanged', me);
|
|
497
|
+
me.fireEvent('refresh', me);
|
|
498
|
+
},
|
|
499
|
+
|
|
500
|
+
onBatchException: function(batch, operation) {
|
|
501
|
+
// //decide what to do... could continue with the next operation
|
|
502
|
+
// batch.start();
|
|
503
|
+
//
|
|
504
|
+
// //or retry the last operation
|
|
505
|
+
// batch.retry();
|
|
506
|
+
},
|
|
507
|
+
|
|
508
|
+
/**
|
|
509
|
+
* @private
|
|
510
|
+
* Filter function for new records.
|
|
511
|
+
*/
|
|
512
|
+
filterNew: function(item) {
|
|
513
|
+
// only want phantom records that are valid
|
|
514
|
+
return item.phantom === true && item.isValid();
|
|
515
|
+
},
|
|
516
|
+
|
|
517
|
+
/**
|
|
518
|
+
* Returns all Model instances that are either currently a phantom (e.g. have no id), or have an ID but have not
|
|
519
|
+
* yet been saved on this Store (this happens when adding a non-phantom record from another Store into this one)
|
|
520
|
+
* @return {Ext.data.Model[]} The Model instances
|
|
521
|
+
*/
|
|
522
|
+
getNewRecords: function() {
|
|
523
|
+
return [];
|
|
524
|
+
},
|
|
525
|
+
|
|
526
|
+
/**
|
|
527
|
+
* Returns all Model instances that have been updated in the Store but not yet synchronized with the Proxy
|
|
528
|
+
* @return {Ext.data.Model[]} The updated Model instances
|
|
529
|
+
*/
|
|
530
|
+
getUpdatedRecords: function() {
|
|
531
|
+
return [];
|
|
532
|
+
},
|
|
533
|
+
|
|
534
|
+
/**
|
|
535
|
+
* Gets all {@link Ext.data.Model records} added or updated since the last commit. Note that the order of records
|
|
536
|
+
* returned is not deterministic and does not indicate the order in which records were modified. Note also that
|
|
537
|
+
* removed records are not included (use {@link #getRemovedRecords} for that).
|
|
538
|
+
* @return {Ext.data.Model[]} The added and updated Model instances
|
|
539
|
+
*/
|
|
540
|
+
getModifiedRecords : function(){
|
|
541
|
+
return [].concat(this.getNewRecords(), this.getUpdatedRecords());
|
|
542
|
+
},
|
|
543
|
+
|
|
544
|
+
/**
|
|
545
|
+
* @private
|
|
546
|
+
* Filter function for updated records.
|
|
547
|
+
*/
|
|
548
|
+
filterUpdated: function(item) {
|
|
549
|
+
// only want dirty records, not phantoms that are valid
|
|
550
|
+
return item.dirty === true && item.phantom !== true && item.isValid();
|
|
551
|
+
},
|
|
552
|
+
|
|
553
|
+
/**
|
|
554
|
+
* Returns any records that have been removed from the store but not yet destroyed on the proxy.
|
|
555
|
+
* @return {Ext.data.Model[]} The removed Model instances
|
|
556
|
+
*/
|
|
557
|
+
getRemovedRecords: function() {
|
|
558
|
+
return this.removed;
|
|
559
|
+
},
|
|
560
|
+
|
|
561
|
+
filter: function(filters, value) {
|
|
562
|
+
|
|
563
|
+
},
|
|
564
|
+
|
|
565
|
+
/**
|
|
566
|
+
* @private
|
|
567
|
+
* Normalizes an array of filter objects, ensuring that they are all Ext.util.Filter instances
|
|
568
|
+
* @param {Object[]} filters The filters array
|
|
569
|
+
* @return {Ext.util.Filter[]} Array of Ext.util.Filter objects
|
|
570
|
+
*/
|
|
571
|
+
decodeFilters: function(filters) {
|
|
572
|
+
if (!Ext.isArray(filters)) {
|
|
573
|
+
if (filters === undefined) {
|
|
574
|
+
filters = [];
|
|
575
|
+
} else {
|
|
576
|
+
filters = [filters];
|
|
577
|
+
}
|
|
578
|
+
}
|
|
579
|
+
|
|
580
|
+
var length = filters.length,
|
|
581
|
+
Filter = Ext.util.Filter,
|
|
582
|
+
config, i;
|
|
583
|
+
|
|
584
|
+
for (i = 0; i < length; i++) {
|
|
585
|
+
config = filters[i];
|
|
586
|
+
|
|
587
|
+
if (!(config instanceof Filter)) {
|
|
588
|
+
Ext.apply(config, {
|
|
589
|
+
root: 'data'
|
|
590
|
+
});
|
|
591
|
+
|
|
592
|
+
//support for 3.x style filters where a function can be defined as 'fn'
|
|
593
|
+
if (config.fn) {
|
|
594
|
+
config.filterFn = config.fn;
|
|
595
|
+
}
|
|
596
|
+
|
|
597
|
+
//support a function to be passed as a filter definition
|
|
598
|
+
if (typeof config == 'function') {
|
|
599
|
+
config = {
|
|
600
|
+
filterFn: config
|
|
601
|
+
};
|
|
602
|
+
}
|
|
603
|
+
|
|
604
|
+
filters[i] = new Filter(config);
|
|
605
|
+
}
|
|
606
|
+
}
|
|
607
|
+
|
|
608
|
+
return filters;
|
|
609
|
+
},
|
|
610
|
+
|
|
611
|
+
clearFilter: function(supressEvent) {
|
|
612
|
+
|
|
613
|
+
},
|
|
614
|
+
|
|
615
|
+
isFiltered: function() {
|
|
616
|
+
|
|
617
|
+
},
|
|
618
|
+
|
|
619
|
+
filterBy: function(fn, scope) {
|
|
620
|
+
|
|
621
|
+
},
|
|
622
|
+
|
|
623
|
+
/**
|
|
624
|
+
* Synchronizes the store with its {@link #proxy}. This asks the proxy to batch together any new, updated
|
|
625
|
+
* and deleted records in the store, updating the store's internal representation of the records
|
|
626
|
+
* as each operation completes.
|
|
627
|
+
*
|
|
628
|
+
* @param {Object} [options] Object containing one or more properties supported by the sync method (these get
|
|
629
|
+
* passed along to the underlying proxy's {@link Ext.data.Proxy#batch batch} method):
|
|
630
|
+
*
|
|
631
|
+
* @param {Ext.data.Batch/Object} [options.batch] A {@link Ext.data.Batch} object (or batch config to apply
|
|
632
|
+
* to the created batch). If unspecified a default batch will be auto-created as needed.
|
|
633
|
+
*
|
|
634
|
+
* @param {Function} [options.callback] The function to be called upon completion of the sync.
|
|
635
|
+
* The callback is called regardless of success or failure and is passed the following parameters:
|
|
636
|
+
* @param {Ext.data.Batch} options.callback.batch The {@link Ext.data.Batch batch} that was processed,
|
|
637
|
+
* containing all operations in their current state after processing
|
|
638
|
+
* @param {Object} options.callback.options The options argument that was originally passed into sync
|
|
639
|
+
*
|
|
640
|
+
* @param {Function} [options.success] The function to be called upon successful completion of the sync. The
|
|
641
|
+
* success function is called only if no exceptions were reported in any operations. If one or more exceptions
|
|
642
|
+
* occurred then the failure function will be called instead. The success function is called
|
|
643
|
+
* with the following parameters:
|
|
644
|
+
* @param {Ext.data.Batch} options.success.batch The {@link Ext.data.Batch batch} that was processed,
|
|
645
|
+
* containing all operations in their current state after processing
|
|
646
|
+
* @param {Object} options.success.options The options argument that was originally passed into sync
|
|
647
|
+
*
|
|
648
|
+
* @param {Function} [options.failure] The function to be called upon unsuccessful completion of the sync. The
|
|
649
|
+
* failure function is called when one or more operations returns an exception during processing (even if some
|
|
650
|
+
* operations were also successful). In this case you can check the batch's {@link Ext.data.Batch#exceptions
|
|
651
|
+
* exceptions} array to see exactly which operations had exceptions. The failure function is called with the
|
|
652
|
+
* following parameters:
|
|
653
|
+
* @param {Ext.data.Batch} options.failure.batch The {@link Ext.data.Batch} that was processed, containing all
|
|
654
|
+
* operations in their current state after processing
|
|
655
|
+
* @param {Object} options.failure.options The options argument that was originally passed into sync
|
|
656
|
+
*
|
|
657
|
+
* @param {Object} [options.scope] The scope in which to execute any callbacks (i.e. the `this` object inside
|
|
658
|
+
* the callback, success and/or failure functions). Defaults to the store's proxy.
|
|
659
|
+
*
|
|
660
|
+
* @return {Ext.data.Store} this
|
|
661
|
+
*/
|
|
662
|
+
sync: function(options) {
|
|
663
|
+
var me = this,
|
|
664
|
+
operations = {},
|
|
665
|
+
toCreate = me.getNewRecords(),
|
|
666
|
+
toUpdate = me.getUpdatedRecords(),
|
|
667
|
+
toDestroy = me.getRemovedRecords(),
|
|
668
|
+
needsSync = false;
|
|
669
|
+
|
|
670
|
+
if (toCreate.length > 0) {
|
|
671
|
+
operations.create = toCreate;
|
|
672
|
+
needsSync = true;
|
|
673
|
+
}
|
|
674
|
+
|
|
675
|
+
if (toUpdate.length > 0) {
|
|
676
|
+
operations.update = toUpdate;
|
|
677
|
+
needsSync = true;
|
|
678
|
+
}
|
|
679
|
+
|
|
680
|
+
if (toDestroy.length > 0) {
|
|
681
|
+
operations.destroy = toDestroy;
|
|
682
|
+
needsSync = true;
|
|
683
|
+
}
|
|
684
|
+
|
|
685
|
+
if (needsSync && me.fireEvent('beforesync', operations) !== false) {
|
|
686
|
+
options = options || {};
|
|
687
|
+
|
|
688
|
+
me.proxy.batch(Ext.apply(options, {
|
|
689
|
+
operations: operations,
|
|
690
|
+
listeners: me.getBatchListeners()
|
|
691
|
+
}));
|
|
692
|
+
}
|
|
693
|
+
|
|
694
|
+
return me;
|
|
695
|
+
},
|
|
696
|
+
|
|
697
|
+
/**
|
|
698
|
+
* @private
|
|
699
|
+
* Returns an object which is passed in as the listeners argument to proxy.batch inside this.sync.
|
|
700
|
+
* This is broken out into a separate function to allow for customisation of the listeners
|
|
701
|
+
* @return {Object} The listeners object
|
|
702
|
+
*/
|
|
703
|
+
getBatchListeners: function() {
|
|
704
|
+
var me = this,
|
|
705
|
+
listeners = {
|
|
706
|
+
scope: me,
|
|
707
|
+
exception: me.onBatchException
|
|
708
|
+
};
|
|
709
|
+
|
|
710
|
+
if (me.batchUpdateMode == 'operation') {
|
|
711
|
+
listeners.operationcomplete = me.onBatchOperationComplete;
|
|
712
|
+
} else {
|
|
713
|
+
listeners.complete = me.onBatchComplete;
|
|
714
|
+
}
|
|
715
|
+
|
|
716
|
+
return listeners;
|
|
717
|
+
},
|
|
718
|
+
|
|
719
|
+
/**
|
|
720
|
+
* Saves all pending changes via the configured {@link #proxy}. Use {@link #sync} instead.
|
|
721
|
+
* @deprecated 4.0.0 Will be removed in the next major version
|
|
722
|
+
*/
|
|
723
|
+
save: function() {
|
|
724
|
+
return this.sync.apply(this, arguments);
|
|
725
|
+
},
|
|
726
|
+
|
|
727
|
+
/**
|
|
728
|
+
* Loads the Store using its configured {@link #proxy}.
|
|
729
|
+
* @param {Object} options (optional) config object. This is passed into the {@link Ext.data.Operation Operation}
|
|
730
|
+
* object that is created and then sent to the proxy's {@link Ext.data.proxy.Proxy#read} function
|
|
731
|
+
*
|
|
732
|
+
* @return {Ext.data.Store} this
|
|
733
|
+
*/
|
|
734
|
+
load: function(options) {
|
|
735
|
+
var me = this,
|
|
736
|
+
operation;
|
|
737
|
+
|
|
738
|
+
options = options || {};
|
|
739
|
+
|
|
740
|
+
options.action = options.action || 'read';
|
|
741
|
+
options.filters = options.filters || me.filters.items;
|
|
742
|
+
options.sorters = options.sorters || me.getSorters();
|
|
743
|
+
|
|
744
|
+
operation = new Ext.data.Operation(options);
|
|
745
|
+
|
|
746
|
+
if (me.fireEvent('beforeload', me, operation) !== false) {
|
|
747
|
+
me.loading = true;
|
|
748
|
+
me.proxy.read(operation, me.onProxyLoad, me);
|
|
749
|
+
}
|
|
750
|
+
|
|
751
|
+
return me;
|
|
752
|
+
},
|
|
753
|
+
|
|
754
|
+
/**
|
|
755
|
+
* @private
|
|
756
|
+
* A model instance should call this method on the Store it has been {@link Ext.data.Model#join joined} to.
|
|
757
|
+
* @param {Ext.data.Model} record The model instance that was edited
|
|
758
|
+
* @param {String[]} modifiedFieldNames Array of field names changed during edit.
|
|
759
|
+
*/
|
|
760
|
+
afterEdit : function(record, modifiedFieldNames) {
|
|
761
|
+
var me = this,
|
|
762
|
+
i, shouldSync;
|
|
763
|
+
|
|
764
|
+
if (me.autoSync && !me.autoSyncSuspended) {
|
|
765
|
+
for(i = modifiedFieldNames.length; i--;) {
|
|
766
|
+
// only sync if persistent fields were modified
|
|
767
|
+
if(record.fields.get(modifiedFieldNames[i]).persist) {
|
|
768
|
+
shouldSync = true;
|
|
769
|
+
break;
|
|
770
|
+
}
|
|
771
|
+
}
|
|
772
|
+
if(shouldSync) {
|
|
773
|
+
me.sync();
|
|
774
|
+
}
|
|
775
|
+
}
|
|
776
|
+
|
|
777
|
+
me.fireEvent('update', me, record, Ext.data.Model.EDIT, modifiedFieldNames);
|
|
778
|
+
},
|
|
779
|
+
|
|
780
|
+
/**
|
|
781
|
+
* @private
|
|
782
|
+
* A model instance should call this method on the Store it has been {@link Ext.data.Model#join joined} to..
|
|
783
|
+
* @param {Ext.data.Model} record The model instance that was edited
|
|
784
|
+
*/
|
|
785
|
+
afterReject : function(record) {
|
|
786
|
+
// Must pass the 5th param (modifiedFieldNames) as null, otherwise the
|
|
787
|
+
// event firing machinery appends the listeners "options" object to the arg list
|
|
788
|
+
// which may get used as the modified fields array by a handler.
|
|
789
|
+
// This array is used for selective grid cell updating by Grid View.
|
|
790
|
+
// Null will be treated as though all cells need updating.
|
|
791
|
+
this.fireEvent('update', this, record, Ext.data.Model.REJECT, null);
|
|
792
|
+
},
|
|
793
|
+
|
|
794
|
+
/**
|
|
795
|
+
* @private
|
|
796
|
+
* A model instance should call this method on the Store it has been {@link Ext.data.Model#join joined} to.
|
|
797
|
+
* @param {Ext.data.Model} record The model instance that was edited
|
|
798
|
+
*/
|
|
799
|
+
afterCommit : function(record) {
|
|
800
|
+
// Must pass the 5th param (modifiedFieldNames) as null, otherwise the
|
|
801
|
+
// event firing machinery appends the listeners "options" object to the arg list
|
|
802
|
+
// which may get used as the modified fields array by a handler.
|
|
803
|
+
// This array is used for selective grid cell updating by Grid View.
|
|
804
|
+
// Null will be treated as though all cells need updating.
|
|
805
|
+
this.fireEvent('update', this, record, Ext.data.Model.COMMIT, null);
|
|
806
|
+
},
|
|
807
|
+
|
|
808
|
+
// private
|
|
809
|
+
destroyStore: function() {
|
|
810
|
+
var me = this;
|
|
811
|
+
|
|
812
|
+
if (!me.isDestroyed) {
|
|
813
|
+
if (me.storeId) {
|
|
814
|
+
Ext.data.StoreManager.unregister(me);
|
|
815
|
+
}
|
|
816
|
+
me.clearData();
|
|
817
|
+
me.data = me.tree = me.sorters = me.filters = me.groupers = null;
|
|
818
|
+
if (me.reader) {
|
|
819
|
+
me.reader.destroyReader();
|
|
820
|
+
}
|
|
821
|
+
me.proxy = me.reader = me.writer = null;
|
|
822
|
+
me.clearListeners();
|
|
823
|
+
me.isDestroyed = true;
|
|
824
|
+
|
|
825
|
+
if (me.implicitModel) {
|
|
826
|
+
Ext.destroy(me.model);
|
|
827
|
+
} else {
|
|
828
|
+
me.model = null;
|
|
829
|
+
}
|
|
830
|
+
}
|
|
831
|
+
},
|
|
832
|
+
|
|
833
|
+
// private
|
|
834
|
+
doSort: function(sorterFn) {
|
|
835
|
+
var me = this;
|
|
836
|
+
if (me.remoteSort) {
|
|
837
|
+
//the load function will pick up the new sorters and request the sorted data from the proxy
|
|
838
|
+
me.load();
|
|
839
|
+
} else {
|
|
840
|
+
me.data.sortBy(sorterFn);
|
|
841
|
+
me.fireEvent('datachanged', me);
|
|
842
|
+
me.fireEvent('refresh', me);
|
|
843
|
+
}
|
|
844
|
+
},
|
|
845
|
+
|
|
846
|
+
// to be implemented by subclasses
|
|
847
|
+
clearData: Ext.emptyFn,
|
|
848
|
+
|
|
849
|
+
// to be implemented by subclasses
|
|
850
|
+
getCount: Ext.emptyFn,
|
|
851
|
+
|
|
852
|
+
// to be implemented by subclasses
|
|
853
|
+
getById: Ext.emptyFn,
|
|
854
|
+
|
|
855
|
+
/**
|
|
856
|
+
* Removes all records from the store. This method does a "fast remove",
|
|
857
|
+
* individual remove events are not called. The {@link #clear} event is
|
|
858
|
+
* fired upon completion.
|
|
859
|
+
* @method
|
|
860
|
+
*/
|
|
861
|
+
removeAll: Ext.emptyFn,
|
|
862
|
+
// individual store subclasses should implement a "fast" remove
|
|
863
|
+
// and fire a clear event afterwards
|
|
864
|
+
|
|
865
|
+
/**
|
|
866
|
+
* Returns true if the Store is currently performing a load operation
|
|
867
|
+
* @return {Boolean} True if the Store is currently loading
|
|
868
|
+
*/
|
|
869
|
+
isLoading: function() {
|
|
870
|
+
return !!this.loading;
|
|
871
|
+
},
|
|
872
|
+
|
|
873
|
+
/**
|
|
874
|
+
* Suspends automatically syncing the Store with its Proxy. Only applicable if {@link #autoSync} is `true`
|
|
875
|
+
*/
|
|
876
|
+
suspendAutoSync: function() {
|
|
877
|
+
this.autoSyncSuspended = true;
|
|
878
|
+
},
|
|
879
|
+
|
|
880
|
+
/**
|
|
881
|
+
* Resumes automatically syncing the Store with its Proxy. Only applicable if {@link #autoSync} is `true`
|
|
882
|
+
*/
|
|
883
|
+
resumeAutoSync: function() {
|
|
884
|
+
this.autoSyncSuspended = false;
|
|
885
|
+
}
|
|
886
|
+
|
|
887
|
+
});
|