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,257 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @private
|
|
3
|
+
* @class Ext.util.LruCache
|
|
4
|
+
* @extend Ext.util.HashMap
|
|
5
|
+
* A linked {@link Ext.util.HashMap HashMap} implementation which maintains most recently accessed
|
|
6
|
+
* items at the end of the list, and purges the cache down to the most recently accessed {@link #maxSize} items
|
|
7
|
+
* upon add.
|
|
8
|
+
*/
|
|
9
|
+
Ext.define('Ext.util.LruCache', {
|
|
10
|
+
extend: 'Ext.util.HashMap',
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* @cfg {Number} maxSize The maximum size the cache is allowed to grow to before further additions cause
|
|
14
|
+
* removal of the least recently used entry.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
constructor: function(config) {
|
|
18
|
+
Ext.apply(this, config);
|
|
19
|
+
this.callParent([config]);
|
|
20
|
+
},
|
|
21
|
+
|
|
22
|
+
/*
|
|
23
|
+
* @inheritdoc
|
|
24
|
+
*/
|
|
25
|
+
add: function(key, newValue) {
|
|
26
|
+
var me = this,
|
|
27
|
+
existingKey = me.findKey(newValue),
|
|
28
|
+
entry;
|
|
29
|
+
|
|
30
|
+
// "new" value is in the list.
|
|
31
|
+
if (existingKey) {
|
|
32
|
+
me.unlinkEntry(entry = me.map[existingKey]);
|
|
33
|
+
entry.prev = me.last;
|
|
34
|
+
entry.next = null;
|
|
35
|
+
}
|
|
36
|
+
// Genuinely new: create an entry for it.
|
|
37
|
+
else {
|
|
38
|
+
entry = {
|
|
39
|
+
prev: me.last,
|
|
40
|
+
next: null,
|
|
41
|
+
key: key,
|
|
42
|
+
value: newValue
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
// If the list is not empty, update the last entry
|
|
47
|
+
if (me.last) {
|
|
48
|
+
me.last.next = entry;
|
|
49
|
+
}
|
|
50
|
+
// List is empty
|
|
51
|
+
else {
|
|
52
|
+
me.first = entry;
|
|
53
|
+
}
|
|
54
|
+
me.last = entry;
|
|
55
|
+
me.callParent([key, entry]);
|
|
56
|
+
me.prune();
|
|
57
|
+
return newValue;
|
|
58
|
+
},
|
|
59
|
+
|
|
60
|
+
// @private
|
|
61
|
+
insertBefore: function(key, newValue, sibling) {
|
|
62
|
+
var me = this,
|
|
63
|
+
existingKey,
|
|
64
|
+
entry;
|
|
65
|
+
|
|
66
|
+
// NOT an assignment.
|
|
67
|
+
// If there is a following sibling
|
|
68
|
+
if (sibling = this.map[this.findKey(sibling)]) {
|
|
69
|
+
existingKey = me.findKey(newValue);
|
|
70
|
+
|
|
71
|
+
// "new" value is in the list.
|
|
72
|
+
if (existingKey) {
|
|
73
|
+
me.unlinkEntry(entry = me.map[existingKey]);
|
|
74
|
+
}
|
|
75
|
+
// Genuinely new: create an entry for it.
|
|
76
|
+
else {
|
|
77
|
+
entry = {
|
|
78
|
+
prev: sibling.prev,
|
|
79
|
+
next: sibling,
|
|
80
|
+
key: key,
|
|
81
|
+
value: newValue
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
if (sibling.prev) {
|
|
86
|
+
entry.prev.next = entry;
|
|
87
|
+
} else {
|
|
88
|
+
me.first = entry;
|
|
89
|
+
}
|
|
90
|
+
entry.next = sibling;
|
|
91
|
+
sibling.prev = entry;
|
|
92
|
+
me.prune();
|
|
93
|
+
return newValue;
|
|
94
|
+
}
|
|
95
|
+
// No following sibling, it's just an add.
|
|
96
|
+
else {
|
|
97
|
+
return me.add(key, newValue);
|
|
98
|
+
}
|
|
99
|
+
},
|
|
100
|
+
|
|
101
|
+
/*
|
|
102
|
+
* @inheritdoc
|
|
103
|
+
*/
|
|
104
|
+
get: function(key) {
|
|
105
|
+
var entry = this.map[key];
|
|
106
|
+
if (entry) {
|
|
107
|
+
|
|
108
|
+
// If it's not the end, move to end of list on get
|
|
109
|
+
if (entry.next) {
|
|
110
|
+
this.moveToEnd(entry);
|
|
111
|
+
}
|
|
112
|
+
return entry.value;
|
|
113
|
+
}
|
|
114
|
+
},
|
|
115
|
+
|
|
116
|
+
/*
|
|
117
|
+
* @private
|
|
118
|
+
*/
|
|
119
|
+
removeAtKey: function(key) {
|
|
120
|
+
this.unlinkEntry(this.map[key]);
|
|
121
|
+
return this.callParent(arguments);
|
|
122
|
+
},
|
|
123
|
+
|
|
124
|
+
/*
|
|
125
|
+
* @inheritdoc
|
|
126
|
+
*/
|
|
127
|
+
clear: function(/* private */ initial) {
|
|
128
|
+
this.first = this.last = null;
|
|
129
|
+
return this.callParent(arguments);
|
|
130
|
+
},
|
|
131
|
+
|
|
132
|
+
// private. Only used by internal methods.
|
|
133
|
+
unlinkEntry: function(entry) {
|
|
134
|
+
// Stitch the list back up.
|
|
135
|
+
if (entry) {
|
|
136
|
+
if (entry.next) {
|
|
137
|
+
entry.next.prev = entry.prev;
|
|
138
|
+
} else {
|
|
139
|
+
this.last = entry.prev;
|
|
140
|
+
}
|
|
141
|
+
if (entry.prev) {
|
|
142
|
+
entry.prev.next = entry.next;
|
|
143
|
+
} else {
|
|
144
|
+
this.first = entry.next;
|
|
145
|
+
}
|
|
146
|
+
entry.prev = entry.next = null;
|
|
147
|
+
}
|
|
148
|
+
},
|
|
149
|
+
|
|
150
|
+
// private. Only used by internal methods.
|
|
151
|
+
moveToEnd: function(entry) {
|
|
152
|
+
this.unlinkEntry(entry);
|
|
153
|
+
|
|
154
|
+
// NOT an assignment.
|
|
155
|
+
// If the list is not empty, update the last entry
|
|
156
|
+
if (entry.prev = this.last) {
|
|
157
|
+
this.last.next = entry;
|
|
158
|
+
}
|
|
159
|
+
// List is empty
|
|
160
|
+
else {
|
|
161
|
+
this.first = entry;
|
|
162
|
+
}
|
|
163
|
+
this.last = entry;
|
|
164
|
+
},
|
|
165
|
+
|
|
166
|
+
/*
|
|
167
|
+
* @private
|
|
168
|
+
*/
|
|
169
|
+
getArray: function(isKey) {
|
|
170
|
+
var arr = [],
|
|
171
|
+
entry = this.first;
|
|
172
|
+
|
|
173
|
+
while (entry) {
|
|
174
|
+
arr.push(isKey ? entry.key: entry.value);
|
|
175
|
+
entry = entry.next;
|
|
176
|
+
}
|
|
177
|
+
return arr;
|
|
178
|
+
},
|
|
179
|
+
|
|
180
|
+
/**
|
|
181
|
+
* Executes the specified function once for each item in the cache.
|
|
182
|
+
* Returning false from the function will cease iteration.
|
|
183
|
+
*
|
|
184
|
+
* By default, iteration is from least recently used to most recent.
|
|
185
|
+
*
|
|
186
|
+
* The paramaters passed to the function are:
|
|
187
|
+
* <div class="mdetail-params"><ul>
|
|
188
|
+
* <li><b>key</b> : String<p class="sub-desc">The key of the item</p></li>
|
|
189
|
+
* <li><b>value</b> : Number<p class="sub-desc">The value of the item</p></li>
|
|
190
|
+
* <li><b>length</b> : Number<p class="sub-desc">The total number of items in the hash</p></li>
|
|
191
|
+
* </ul></div>
|
|
192
|
+
* @param {Function} fn The function to execute.
|
|
193
|
+
* @param {Object} scope The scope (<code>this</code> reference) to execute in. Defaults to this LruCache.
|
|
194
|
+
* @param {Boolean} [reverse=false] Pass <code>true</code> to iterate the list in reverse (most recent first) order.
|
|
195
|
+
* @return {Ext.util.LruCache} this
|
|
196
|
+
*/
|
|
197
|
+
each: function(fn, scope, reverse) {
|
|
198
|
+
var me = this,
|
|
199
|
+
entry = reverse ? me.last : me.first,
|
|
200
|
+
length = me.length;
|
|
201
|
+
|
|
202
|
+
scope = scope || me;
|
|
203
|
+
while (entry) {
|
|
204
|
+
if (fn.call(scope, entry.key, entry.value, length) === false) {
|
|
205
|
+
break;
|
|
206
|
+
}
|
|
207
|
+
entry = reverse ? entry.prev : entry.next;
|
|
208
|
+
}
|
|
209
|
+
return me;
|
|
210
|
+
},
|
|
211
|
+
|
|
212
|
+
/**
|
|
213
|
+
* @private
|
|
214
|
+
*/
|
|
215
|
+
findKey: function(value) {
|
|
216
|
+
var key,
|
|
217
|
+
map = this.map;
|
|
218
|
+
|
|
219
|
+
for (key in map) {
|
|
220
|
+
if (map.hasOwnProperty(key) && map[key].value === value) {
|
|
221
|
+
return key;
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
return undefined;
|
|
225
|
+
},
|
|
226
|
+
|
|
227
|
+
/**
|
|
228
|
+
* Purge the least recently used entries if the maxSize has been exceeded.
|
|
229
|
+
*/
|
|
230
|
+
prune: function() {
|
|
231
|
+
var me = this,
|
|
232
|
+
purgeCount = me.maxSize ? (me.length - me.maxSize) : 0;
|
|
233
|
+
|
|
234
|
+
if (purgeCount > 0) {
|
|
235
|
+
for (; me.first && purgeCount; purgeCount--) {
|
|
236
|
+
me.removeAtKey(me.first.key);
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
/**
|
|
242
|
+
* @method containsKey
|
|
243
|
+
* @private
|
|
244
|
+
*/
|
|
245
|
+
/**
|
|
246
|
+
* @method contains
|
|
247
|
+
* @private
|
|
248
|
+
*/
|
|
249
|
+
/**
|
|
250
|
+
* @method getKeys
|
|
251
|
+
* @private
|
|
252
|
+
*/
|
|
253
|
+
/**
|
|
254
|
+
* @method getValues
|
|
255
|
+
* @private
|
|
256
|
+
*/
|
|
257
|
+
});
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @class Ext.util.Memento
|
|
3
|
+
* This class manages a set of captured properties from an object. These captured properties
|
|
4
|
+
* can later be restored to an object.
|
|
5
|
+
*/
|
|
6
|
+
Ext.define('Ext.util.Memento', (function () {
|
|
7
|
+
|
|
8
|
+
function captureOne (src, target, prop, prefix) {
|
|
9
|
+
src[prefix ? prefix + prop : prop] = target[prop];
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
function removeOne (src, target, prop) {
|
|
13
|
+
delete src[prop];
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
function restoreOne (src, target, prop, prefix) {
|
|
17
|
+
var name = prefix ? prefix + prop : prop,
|
|
18
|
+
value = src[name];
|
|
19
|
+
|
|
20
|
+
if (value || src.hasOwnProperty(name)) {
|
|
21
|
+
restoreValue(target, prop, value);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
function restoreValue (target, prop, value) {
|
|
26
|
+
if (Ext.isDefined(value)) {
|
|
27
|
+
target[prop] = value;
|
|
28
|
+
} else {
|
|
29
|
+
delete target[prop];
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
function doMany (doOne, src, target, props, prefix) {
|
|
34
|
+
if (src) {
|
|
35
|
+
if (Ext.isArray(props)) {
|
|
36
|
+
var p, pLen = props.length;
|
|
37
|
+
for (p = 0; p < pLen; p++) {
|
|
38
|
+
doOne(src, target, props[p], prefix);
|
|
39
|
+
}
|
|
40
|
+
} else {
|
|
41
|
+
doOne(src, target, props, prefix);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
return {
|
|
47
|
+
/**
|
|
48
|
+
* @property data
|
|
49
|
+
* The collection of captured properties.
|
|
50
|
+
* @private
|
|
51
|
+
*/
|
|
52
|
+
data: null,
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* @property target
|
|
56
|
+
* The default target object for capture/restore (passed to the constructor).
|
|
57
|
+
*/
|
|
58
|
+
target: null,
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Creates a new memento and optionally captures properties from the target object.
|
|
62
|
+
* @param {Object} target The target from which to capture properties. If specified in the
|
|
63
|
+
* constructor, this target becomes the default target for all other operations.
|
|
64
|
+
* @param {String/String[]} props The property or array of properties to capture.
|
|
65
|
+
*/
|
|
66
|
+
constructor: function (target, props) {
|
|
67
|
+
if (target) {
|
|
68
|
+
this.target = target;
|
|
69
|
+
if (props) {
|
|
70
|
+
this.capture(props);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
},
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Captures the specified properties from the target object in this memento.
|
|
77
|
+
* @param {String/String[]} props The property or array of properties to capture.
|
|
78
|
+
* @param {Object} target The object from which to capture properties.
|
|
79
|
+
*/
|
|
80
|
+
capture: function (props, target, prefix) {
|
|
81
|
+
var me = this;
|
|
82
|
+
doMany(captureOne, me.data || (me.data = {}), target || me.target, props, prefix);
|
|
83
|
+
},
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* Removes the specified properties from this memento. These properties will not be
|
|
87
|
+
* restored later without re-capturing their values.
|
|
88
|
+
* @param {String/String[]} props The property or array of properties to remove.
|
|
89
|
+
*/
|
|
90
|
+
remove: function (props) {
|
|
91
|
+
doMany(removeOne, this.data, null, props);
|
|
92
|
+
},
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* Restores the specified properties from this memento to the target object.
|
|
96
|
+
* @param {String/String[]} props The property or array of properties to restore.
|
|
97
|
+
* @param {Boolean} clear True to remove the restored properties from this memento or
|
|
98
|
+
* false to keep them (default is true).
|
|
99
|
+
* @param {Object} target The object to which to restore properties.
|
|
100
|
+
*/
|
|
101
|
+
restore: function (props, clear, target, prefix) {
|
|
102
|
+
doMany(restoreOne, this.data, target || this.target, props, prefix);
|
|
103
|
+
if (clear !== false) {
|
|
104
|
+
this.remove(props);
|
|
105
|
+
}
|
|
106
|
+
},
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* Restores all captured properties in this memento to the target object.
|
|
110
|
+
* @param {Boolean} clear True to remove the restored properties from this memento or
|
|
111
|
+
* false to keep them (default is true).
|
|
112
|
+
* @param {Object} target The object to which to restore properties.
|
|
113
|
+
*/
|
|
114
|
+
restoreAll: function (clear, target) {
|
|
115
|
+
var me = this,
|
|
116
|
+
t = target || this.target,
|
|
117
|
+
data = me.data,
|
|
118
|
+
prop;
|
|
119
|
+
|
|
120
|
+
for (prop in data) {
|
|
121
|
+
if (data.hasOwnProperty(prop)) {
|
|
122
|
+
restoreValue(t, prop, data[prop]);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
if (clear !== false) {
|
|
127
|
+
delete me.data;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
};
|
|
131
|
+
}()));
|
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @class Ext.util.MixedCollection
|
|
3
|
+
* <p>
|
|
4
|
+
* Represents a collection of a set of key and value pairs. Each key in the MixedCollection
|
|
5
|
+
* must be unique, the same key cannot exist twice. This collection is ordered, items in the
|
|
6
|
+
* collection can be accessed by index or via the key. Newly added items are added to
|
|
7
|
+
* the end of the collection. This class is similar to {@link Ext.util.HashMap} however it
|
|
8
|
+
* is heavier and provides more functionality. Sample usage:
|
|
9
|
+
* <pre><code>
|
|
10
|
+
var coll = new Ext.util.MixedCollection();
|
|
11
|
+
coll.add('key1', 'val1');
|
|
12
|
+
coll.add('key2', 'val2');
|
|
13
|
+
coll.add('key3', 'val3');
|
|
14
|
+
|
|
15
|
+
console.log(coll.get('key1')); // prints 'val1'
|
|
16
|
+
console.log(coll.indexOfKey('key3')); // prints 2
|
|
17
|
+
* </code></pre>
|
|
18
|
+
*
|
|
19
|
+
* <p>
|
|
20
|
+
* The MixedCollection also has support for sorting and filtering of the values in the collection.
|
|
21
|
+
* <pre><code>
|
|
22
|
+
var coll = new Ext.util.MixedCollection();
|
|
23
|
+
coll.add('key1', 100);
|
|
24
|
+
coll.add('key2', -100);
|
|
25
|
+
coll.add('key3', 17);
|
|
26
|
+
coll.add('key4', 0);
|
|
27
|
+
var biggerThanZero = coll.filterBy(function(value){
|
|
28
|
+
return value > 0;
|
|
29
|
+
});
|
|
30
|
+
console.log(biggerThanZero.getCount()); // prints 2
|
|
31
|
+
* </code></pre>
|
|
32
|
+
* </p>
|
|
33
|
+
*/
|
|
34
|
+
Ext.define('Ext.util.MixedCollection', {
|
|
35
|
+
extend: 'Ext.util.AbstractMixedCollection',
|
|
36
|
+
mixins: {
|
|
37
|
+
sortable: 'Ext.util.Sortable'
|
|
38
|
+
},
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Creates new MixedCollection.
|
|
42
|
+
* @param {Boolean} allowFunctions Specify <tt>true</tt> if the {@link #addAll}
|
|
43
|
+
* function should add function references to the collection. Defaults to
|
|
44
|
+
* <tt>false</tt>.
|
|
45
|
+
* @param {Function} keyFn A function that can accept an item of the type(s) stored in this MixedCollection
|
|
46
|
+
* and return the key value for that item. This is used when available to look up the key on items that
|
|
47
|
+
* were passed without an explicit key parameter to a MixedCollection method. Passing this parameter is
|
|
48
|
+
* equivalent to providing an implementation for the {@link #getKey} method.
|
|
49
|
+
*/
|
|
50
|
+
constructor: function() {
|
|
51
|
+
var me = this;
|
|
52
|
+
me.callParent(arguments);
|
|
53
|
+
me.addEvents('sort');
|
|
54
|
+
me.mixins.sortable.initSortable.call(me);
|
|
55
|
+
},
|
|
56
|
+
|
|
57
|
+
doSort: function(sorterFn) {
|
|
58
|
+
this.sortBy(sorterFn);
|
|
59
|
+
},
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* @private
|
|
63
|
+
* Performs the actual sorting based on a direction and a sorting function. Internally,
|
|
64
|
+
* this creates a temporary array of all items in the MixedCollection, sorts it and then writes
|
|
65
|
+
* the sorted array data back into this.items and this.keys
|
|
66
|
+
* @param {String} property Property to sort by ('key', 'value', or 'index')
|
|
67
|
+
* @param {String} dir (optional) Direction to sort 'ASC' or 'DESC'. Defaults to 'ASC'.
|
|
68
|
+
* @param {Function} fn (optional) Comparison function that defines the sort order.
|
|
69
|
+
* Defaults to sorting by numeric value.
|
|
70
|
+
*/
|
|
71
|
+
_sort : function(property, dir, fn){
|
|
72
|
+
var me = this,
|
|
73
|
+
i, len,
|
|
74
|
+
dsc = String(dir).toUpperCase() == 'DESC' ? -1 : 1,
|
|
75
|
+
|
|
76
|
+
//this is a temporary array used to apply the sorting function
|
|
77
|
+
c = [],
|
|
78
|
+
keys = me.keys,
|
|
79
|
+
items = me.items;
|
|
80
|
+
|
|
81
|
+
//default to a simple sorter function if one is not provided
|
|
82
|
+
fn = fn || function(a, b) {
|
|
83
|
+
return a - b;
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
//copy all the items into a temporary array, which we will sort
|
|
87
|
+
for(i = 0, len = items.length; i < len; i++){
|
|
88
|
+
c[c.length] = {
|
|
89
|
+
key : keys[i],
|
|
90
|
+
value: items[i],
|
|
91
|
+
index: i
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
//sort the temporary array
|
|
96
|
+
Ext.Array.sort(c, function(a, b){
|
|
97
|
+
var v = fn(a[property], b[property]) * dsc;
|
|
98
|
+
if(v === 0){
|
|
99
|
+
v = (a.index < b.index ? -1 : 1);
|
|
100
|
+
}
|
|
101
|
+
return v;
|
|
102
|
+
});
|
|
103
|
+
|
|
104
|
+
//copy the temporary array back into the main this.items and this.keys objects
|
|
105
|
+
for(i = 0, len = c.length; i < len; i++){
|
|
106
|
+
items[i] = c[i].value;
|
|
107
|
+
keys[i] = c[i].key;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
me.fireEvent('sort', me);
|
|
111
|
+
},
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* Sorts the collection by a single sorter function
|
|
115
|
+
* @param {Function} sorterFn The function to sort by
|
|
116
|
+
*/
|
|
117
|
+
sortBy: function(sorterFn) {
|
|
118
|
+
var me = this,
|
|
119
|
+
items = me.items,
|
|
120
|
+
keys = me.keys,
|
|
121
|
+
length = items.length,
|
|
122
|
+
temp = [],
|
|
123
|
+
i;
|
|
124
|
+
|
|
125
|
+
//first we create a copy of the items array so that we can sort it
|
|
126
|
+
for (i = 0; i < length; i++) {
|
|
127
|
+
temp[i] = {
|
|
128
|
+
key : keys[i],
|
|
129
|
+
value: items[i],
|
|
130
|
+
index: i
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
Ext.Array.sort(temp, function(a, b) {
|
|
135
|
+
var v = sorterFn(a.value, b.value);
|
|
136
|
+
if (v === 0) {
|
|
137
|
+
v = (a.index < b.index ? -1 : 1);
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
return v;
|
|
141
|
+
});
|
|
142
|
+
|
|
143
|
+
//copy the temporary array back into the main this.items and this.keys objects
|
|
144
|
+
for (i = 0; i < length; i++) {
|
|
145
|
+
items[i] = temp[i].value;
|
|
146
|
+
keys[i] = temp[i].key;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
me.fireEvent('sort', me, items, keys);
|
|
150
|
+
},
|
|
151
|
+
|
|
152
|
+
/**
|
|
153
|
+
* Calculates the insertion index of the new item based upon the comparison function passed, or the current sort order.
|
|
154
|
+
* @param {Object} newItem The new object to find the insertion position of.
|
|
155
|
+
* @param {Function} [sorterFn] The function to sort by. This is the same as the sorting function
|
|
156
|
+
* passed to {@link #sortBy}. It accepts 2 items from this MixedCollection, and returns -1 0, or 1
|
|
157
|
+
* depending on the relative sort positions of the 2 compared items.
|
|
158
|
+
*
|
|
159
|
+
* If omitted, a function {@link #generateComparator generated} from the currently defined set of
|
|
160
|
+
* {@link #sorters} will be used.
|
|
161
|
+
*
|
|
162
|
+
* @return {Number} The insertion point to add the new item into this MixedCollection at using {@link #insert}
|
|
163
|
+
*/
|
|
164
|
+
findInsertionIndex: function(newItem, sorterFn) {
|
|
165
|
+
var me = this,
|
|
166
|
+
items = me.items,
|
|
167
|
+
start = 0,
|
|
168
|
+
end = items.length - 1,
|
|
169
|
+
middle,
|
|
170
|
+
comparison;
|
|
171
|
+
|
|
172
|
+
if (!sorterFn) {
|
|
173
|
+
sorterFn = me.generateComparator();
|
|
174
|
+
}
|
|
175
|
+
while (start <= end) {
|
|
176
|
+
middle = (start + end) >> 1;
|
|
177
|
+
comparison = sorterFn(newItem, items[middle]);
|
|
178
|
+
if (comparison >= 0) {
|
|
179
|
+
start = middle + 1;
|
|
180
|
+
} else if (comparison < 0) {
|
|
181
|
+
end = middle - 1;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
return start;
|
|
185
|
+
},
|
|
186
|
+
|
|
187
|
+
/**
|
|
188
|
+
* Reorders each of the items based on a mapping from old index to new index. Internally this
|
|
189
|
+
* just translates into a sort. The 'sort' event is fired whenever reordering has occured.
|
|
190
|
+
* @param {Object} mapping Mapping from old item index to new item index
|
|
191
|
+
*/
|
|
192
|
+
reorder: function(mapping) {
|
|
193
|
+
var me = this,
|
|
194
|
+
items = me.items,
|
|
195
|
+
index = 0,
|
|
196
|
+
length = items.length,
|
|
197
|
+
order = [],
|
|
198
|
+
remaining = [],
|
|
199
|
+
oldIndex;
|
|
200
|
+
|
|
201
|
+
me.suspendEvents();
|
|
202
|
+
|
|
203
|
+
//object of {oldPosition: newPosition} reversed to {newPosition: oldPosition}
|
|
204
|
+
for (oldIndex in mapping) {
|
|
205
|
+
order[mapping[oldIndex]] = items[oldIndex];
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
for (index = 0; index < length; index++) {
|
|
209
|
+
if (mapping[index] == undefined) {
|
|
210
|
+
remaining.push(items[index]);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
for (index = 0; index < length; index++) {
|
|
215
|
+
if (order[index] == undefined) {
|
|
216
|
+
order[index] = remaining.shift();
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
me.clear();
|
|
221
|
+
me.addAll(order);
|
|
222
|
+
|
|
223
|
+
me.resumeEvents();
|
|
224
|
+
me.fireEvent('sort', me);
|
|
225
|
+
},
|
|
226
|
+
|
|
227
|
+
/**
|
|
228
|
+
* Sorts this collection by <b>key</b>s.
|
|
229
|
+
* @param {String} direction (optional) 'ASC' or 'DESC'. Defaults to 'ASC'.
|
|
230
|
+
* @param {Function} fn (optional) Comparison function that defines the sort order.
|
|
231
|
+
* Defaults to sorting by case insensitive string.
|
|
232
|
+
*/
|
|
233
|
+
sortByKey : function(dir, fn){
|
|
234
|
+
this._sort('key', dir, fn || function(a, b){
|
|
235
|
+
var v1 = String(a).toUpperCase(), v2 = String(b).toUpperCase();
|
|
236
|
+
return v1 > v2 ? 1 : (v1 < v2 ? -1 : 0);
|
|
237
|
+
});
|
|
238
|
+
}
|
|
239
|
+
});
|