Ext.mixin.Sortable

Hierarchy

Ext.Base
Ext.mixin.Mixin
Ext.mixin.Sortable

Requires

Mixed into

Files

NOTE: This is a private utility class for internal use by the framework. Don't rely on its existence.

Defined By

Config options

The default sort direction to use if one is not specified. ...

The default sort direction to use if one is not specified.

Defaults to: "ASC"

Ext.mixin.Sortable
view source
: String
The root inside each item in which the properties exist that we want to sort on. ...

The root inside each item in which the properties exist that we want to sort on. This is useful for sorting records in which the data exists inside a data property.

Ext.mixin.Sortable
view source
: Array
An array with sorters. ...

An array with sorters. A sorter can be an instance of Ext.util.Sorter, a string indicating a property name, an object representing an Ext.util.Sorter configuration, or a sort function.

Properties

Defined By

Instance properties

Ext.mixin.Sortable
view source
: Objectreadonly
This is the cached sorting function which is a generated function that calls all the configured sorters in the correc...

This is the cached sorting function which is a generated function that calls all the configured sorters in the correct order.

Overrides: Ext.mixin.Filterable.currentSortFn

Ext.mixin.Sortable
view source
: Booleanreadonly
A flag indicating whether the currently cashed sort function is still valid. ...

A flag indicating whether the currently cashed sort function is still valid.

Defaults to: false

Ext.mixin.Sortable
view source
: Objectprivate
...

Defaults to: {id: 'sortable'}

Overrides: Ext.mixin.Filterable.mixinConfig

Get the reference to the current class from which this object was instantiated. ...

Get the reference to the current class from which this object was instantiated. Unlike statics, this.self is scope-dependent and it's meant to be used for dynamic inheritance. See statics for a detailed comparison

Ext.define('My.Cat', {
    statics: {
        speciesName: 'Cat' // My.Cat.speciesName = 'Cat'
    },

    constructor: function() {
        alert(this.self.speciesName); // dependent on 'this'
    },

    clone: function() {
        return new this.self();
    }
});


Ext.define('My.SnowLeopard', {
    extend: 'My.Cat',
    statics: {
        speciesName: 'Snow Leopard'         // My.SnowLeopard.speciesName = 'Snow Leopard'
    }
});

var cat = new My.Cat();                     // alerts 'Cat'
var snowLeopard = new My.SnowLeopard();     // alerts 'Snow Leopard'

var clone = snowLeopard.clone();
alert(Ext.getClassName(clone));             // alerts 'My.SnowLeopard'
Ext.mixin.Sortable
view source
: Booleanreadonly
A read-only flag indicating if this object is sorted. ...

A read-only flag indicating if this object is sorted.

Defaults to: false

Defined By

Static properties

...

Defaults to: []

Methods

Defined By

Instance methods

Ext.mixin.Sortable
view source
( sorter, defaultDirection )
This method adds a sorter. ...

This method adds a sorter.

Parameters

Fires

    Ext.mixin.Sortable
    view source
    ( sorters, defaultDirection )
    This method adds all the sorters in a passed array. ...

    This method adds all the sorters in a passed array.

    Parameters

    • sorters : Array

      An array with sorters. A sorter can be an instance of Ext.util.Sorter, a string indicating a property name, an object representing an Ext.util.Sorter configuration, or a sort function.

    • defaultDirection : String

      The default direction for each sorter in the array. Defaults to the value of defaultSortDirection. Can be either 'ASC' or 'DESC'.

    Fires

      Ext.mixin.Sortable
      view source
      ( sorters, collection )private
      ...

      Parameters

      Fires

        Call the original method that was previously overridden with override, This method is deprecated as callParent does ...

        Call the original method that was previously overridden with override,

        This method is deprecated as callParent does the same thing.

        Ext.define('My.Cat', {
            constructor: function() {
                alert("I'm a cat!");
            }
        });
        
        My.Cat.override({
            constructor: function() {
                alert("I'm going to be a cat!");
        
                var instance = this.callOverridden();
        
                alert("Meeeeoooowwww");
        
                return instance;
            }
        });
        
        var kitty = new My.Cat(); // alerts "I'm going to be a cat!"
                                  // alerts "I'm a cat!"
                                  // alerts "Meeeeoooowwww"
        

        Parameters

        • args : Array/Arguments

          The arguments, either an array or the arguments object from the current method, for example: this.callOverridden(arguments)

        Returns

        • Object

          Returns the result of calling the overridden method

        Call the "parent" method of the current method. ...

        Call the "parent" method of the current method. That is the method previously overridden by derivation or by an override (see Ext.define).

         Ext.define('My.Base', {
             constructor: function (x) {
                 this.x = x;
             },
        
             statics: {
                 method: function (x) {
                     return x;
                 }
             }
         });
        
         Ext.define('My.Derived', {
             extend: 'My.Base',
        
             constructor: function () {
                 this.callParent([21]);
             }
         });
        
         var obj = new My.Derived();
        
         alert(obj.x);  // alerts 21
        

        This can be used with an override as follows:

         Ext.define('My.DerivedOverride', {
             override: 'My.Derived',
        
             constructor: function (x) {
                 this.callParent([x*2]); // calls original My.Derived constructor
             }
         });
        
         var obj = new My.Derived();
        
         alert(obj.x);  // now alerts 42
        

        This also works with static methods.

         Ext.define('My.Derived2', {
             extend: 'My.Base',
        
             statics: {
                 method: function (x) {
                     return this.callParent([x*2]); // calls My.Base.method
                 }
             }
         });
        
         alert(My.Base.method(10));     // alerts 10
         alert(My.Derived2.method(10)); // alerts 20
        

        Lastly, it also works with overridden static methods.

         Ext.define('My.Derived2Override', {
             override: 'My.Derived2',
        
             statics: {
                 method: function (x) {
                     return this.callParent([x*2]); // calls My.Derived2.method
                 }
             }
         });
        
         alert(My.Derived2.method(10)); // now alerts 40
        

        To override a method and replace it and also call the superclass method, use callSuper. This is often done to patch a method to fix a bug.

        Parameters

        • args : Array/Arguments

          The arguments, either an array or the arguments object from the current method, for example: this.callParent(arguments)

        Returns

        • Object

          Returns the result of calling the parent method

        This method is used by an override to call the superclass method but bypass any overridden method. ...

        This method is used by an override to call the superclass method but bypass any overridden method. This is often done to "patch" a method that contains a bug but for whatever reason cannot be fixed directly.

        Consider:

         Ext.define('Ext.some.Class', {
             method: function () {
                 console.log('Good');
             }
         });
        
         Ext.define('Ext.some.DerivedClass', {
             method: function () {
                 console.log('Bad');
        
                 // ... logic but with a bug ...
        
                 this.callParent();
             }
         });
        

        To patch the bug in DerivedClass.method, the typical solution is to create an override:

         Ext.define('App.paches.DerivedClass', {
             override: 'Ext.some.DerivedClass',
        
             method: function () {
                 console.log('Fixed');
        
                 // ... logic but with bug fixed ...
        
                 this.callSuper();
             }
         });
        

        The patch method cannot use callParent to call the superclass method since that would call the overridden method containing the bug. In other words, the above patch would only produce "Fixed" then "Good" in the console log, whereas, using callParent would produce "Fixed" then "Bad" then "Good".

        Parameters

        • args : Array/Arguments

          The arguments, either an array or the arguments object from the current method, for example: this.callSuper(arguments)

        Returns

        • Object

          Returns the result of calling the superclass method

        Ext.mixin.Sortable
        view source
        ( )private
        ...
        Ext.mixin.Sortable
        view source
        ( items, item ) : Number
        This method returns the index that a given item would be inserted into a given array based on the current sorters. ...

        This method returns the index that a given item would be inserted into a given array based on the current sorters.

        Parameters

        • items : Array

          The array that you want to insert the item into.

        • item : Mixed

          The item that you want to insert into the items array.

        Returns

        • Number

          The index for the given item in the given array based on the current sorters.

        Fires

          ...

          Parameters

          Returns the value of defaultSortDirection. ...

          Returns the value of defaultSortDirection.

          Returns

          Returns the initial configuration passed to constructor. ...

          Returns the initial configuration passed to constructor.

          Parameters

          • name : String (optional)

            When supplied, value for particular configuration option is returned, otherwise the full config object is returned.

          Returns

          Ext.mixin.Sortable
          view source
          ( ) : Function
          Returns an up to date sort function. ...

          Returns an up to date sort function.

          Returns

          Fires

            Ext.mixin.Sortable
            view source
            ( ) : String
            Returns the value of sortRoot. ...

            Returns the value of sortRoot.

            Returns

            Ext.mixin.Sortable
            view source
            ( ) : Array
            Returns the value of sorters. ...

            Returns the value of sorters.

            Returns

            ...

            Parameters

            ( instanceConfig ) : Objectchainableprotected
            Initialize configuration for this class. ...

            Initialize configuration for this class. a typical example:

            Ext.define('My.awesome.Class', {
                // The default config
                config: {
                    name: 'Awesome',
                    isAwesome: true
                },
            
                constructor: function(config) {
                    this.initConfig(config);
                }
            });
            
            var awesome = new My.awesome.Class({
                name: 'Super Awesome'
            });
            
            alert(awesome.getName()); // 'Super Awesome'
            

            Parameters

            Returns

            • Object

              mixins The mixin prototypes as key - value pairs

            Fires

              Ext.mixin.Sortable
              view source
              ( index, sorter, defaultDirection )
              This method adds a sorter at a given index. ...

              This method adds a sorter at a given index.

              Parameters

              Fires

                Ext.mixin.Sortable
                view source
                ( index, sorters, defaultDirection )
                This method inserts all the sorters in the passed array at the given index. ...

                This method inserts all the sorters in the passed array at the given index.

                Parameters

                • index : Number

                  The index at which to insert the sorters.

                • sorters : Array

                  Can be an instance of Ext.util.Sorter, a string indicating a property name, an object representing an Ext.util.Sorter configuration, or a sort function.

                • defaultDirection : String

                  The default direction for each sorter in the array. Defaults to the value of defaultSortDirection. Can be either 'ASC' or 'DESC'.

                Fires

                  ( names, callback, scope )private
                  ...

                  Parameters

                  Ext.mixin.Sortable
                  view source
                  ( sorter )
                  This method removes a sorter. ...

                  This method removes a sorter.

                  Parameters

                  Fires

                    Ext.mixin.Sortable
                    view source
                    ( sorters )
                    This method removes all the sorters in a passed array. ...

                    This method removes all the sorters in a passed array.

                    Parameters

                    • sorters : Array

                      Each value in the array can be a string (property name), function (sorterFn) or Sorter instance.

                    Fires

                      ( config, applyIfNotSet ) : Ext.Basechainableprivate
                      ...

                      Parameters

                      Returns

                      Ext.mixin.Sortable
                      view source
                      ( defaultSortDirection )
                      Sets the value of defaultSortDirection. ...

                      Sets the value of defaultSortDirection.

                      Parameters

                      • defaultSortDirection : String
                      Ext.mixin.Sortable
                      view source
                      ( sortRoot )
                      Sets the value of sortRoot. ...

                      Sets the value of sortRoot.

                      Parameters

                      Ext.mixin.Sortable
                      view source
                      ( sorters )
                      Sets the value of sorters. ...

                      Sets the value of sorters.

                      Parameters

                      Ext.mixin.Sortable
                      view source
                      ( data ) : Array
                      This method will sort an array based on the currently configured sorters. ...

                      This method will sort an array based on the currently configured sorters.

                      Parameters

                      • data : Array

                        The array you want to have sorted.

                      Returns

                      • Array

                        The array you passed after it is sorted.

                      Fires

                        Get the reference to the class from which this object was instantiated. ...

                        Get the reference to the class from which this object was instantiated. Note that unlike self, this.statics() is scope-independent and it always returns the class from which it was called, regardless of what this points to during run-time

                        Ext.define('My.Cat', {
                            statics: {
                                totalCreated: 0,
                                speciesName: 'Cat' // My.Cat.speciesName = 'Cat'
                            },
                        
                            constructor: function() {
                                var statics = this.statics();
                        
                                alert(statics.speciesName);     // always equals to 'Cat' no matter what 'this' refers to
                                                                // equivalent to: My.Cat.speciesName
                        
                                alert(this.self.speciesName);   // dependent on 'this'
                        
                                statics.totalCreated++;
                            },
                        
                            clone: function() {
                                var cloned = new this.self();                    // dependent on 'this'
                        
                                cloned.groupName = this.statics().speciesName;   // equivalent to: My.Cat.speciesName
                        
                                return cloned;
                            }
                        });
                        
                        
                        Ext.define('My.SnowLeopard', {
                            extend: 'My.Cat',
                        
                            statics: {
                                speciesName: 'Snow Leopard'     // My.SnowLeopard.speciesName = 'Snow Leopard'
                            },
                        
                            constructor: function() {
                                this.callParent();
                            }
                        });
                        
                        var cat = new My.Cat();                 // alerts 'Cat', then alerts 'Cat'
                        
                        var snowLeopard = new My.SnowLeopard(); // alerts 'Cat', then alerts 'Snow Leopard'
                        
                        var clone = snowLeopard.clone();
                        alert(Ext.getClassName(clone));         // alerts 'My.SnowLeopard'
                        alert(clone.groupName);                 // alerts 'Cat'
                        
                        alert(My.Cat.totalCreated);             // alerts 3
                        

                        Returns

                        Ext.mixin.Sortable
                        view source
                        ( ) : Functionprivate
                        This updates the cached sortFn based on the current sorters. ...

                        This updates the cached sortFn based on the current sorters.

                        Returns

                        Fires

                          Defined By

                          Static methods

                          ( config, fullMerge )privatestatic
                          ...

                          Parameters

                          ( members )chainableprivatestatic
                          ...

                          Parameters

                          ( name, member )chainableprivatestatic
                          ...

                          Parameters

                          ( members )chainablestatic
                          Add methods / properties to the prototype of this class. ...

                          Add methods / properties to the prototype of this class.

                          Ext.define('My.awesome.Cat', {
                              constructor: function() {
                                  // ...
                              }
                          });
                          
                           My.awesome.Cat.addMembers({
                               meow: function() {
                                  alert('Meowww...');
                               }
                           });
                          
                           var kitty = new My.awesome.Cat();
                           kitty.meow();
                          

                          Parameters

                          ( members ) : Ext.Basechainablestatic
                          Add / override static properties of this class. ...

                          Add / override static properties of this class.

                          Ext.define('My.cool.Class', {
                              // this.se
                          });
                          
                          My.cool.Class.addStatics({
                              someProperty: 'someValue',      // My.cool.Class.someProperty = 'someValue'
                              method1: function() {  },    // My.cool.Class.method1 = function() { ... };
                              method2: function() {  }     // My.cool.Class.method2 = function() { ... };
                          });
                          

                          Parameters

                          Returns

                          ( xtype )chainableprivatestatic
                          ...

                          Parameters

                          ( fromClass, members ) : Ext.Basechainableprivatestatic
                          Borrow another class' members to the prototype of this class. ...

                          Borrow another class' members to the prototype of this class.

                          Ext.define('Bank', {
                              money: '$$$',
                              printMoney: function() {
                                  alert('$$$$$$$');
                              }
                          });
                          
                          Ext.define('Thief', {
                              // ...
                          });
                          
                          Thief.borrow(Bank, ['money', 'printMoney']);
                          
                          var steve = new Thief();
                          
                          alert(steve.money); // alerts '$$$'
                          steve.printMoney(); // alerts '$$$$$$$'
                          

                          Parameters

                          • fromClass : Ext.Base

                            The class to borrow members from

                          • members : Array/String

                            The names of the members to borrow

                          Returns

                          ( args )protectedstatic
                          ...

                          Parameters

                          Create a new instance of this Class. ...

                          Create a new instance of this Class.

                          Ext.define('My.cool.Class', {
                              // ...
                          });
                          
                          My.cool.Class.create({
                              someConfig: true
                          });
                          

                          All parameters are passed to the constructor of the class.

                          Returns

                          ( alias, origin )static
                          Create aliases for existing prototype methods. ...

                          Create aliases for existing prototype methods. Example:

                          Ext.define('My.cool.Class', {
                              method1: function() {  },
                              method2: function() {  }
                          });
                          
                          var test = new My.cool.Class();
                          
                          My.cool.Class.createAlias({
                              method3: 'method1',
                              method4: 'method2'
                          });
                          
                          test.method3(); // test.method1()
                          
                          My.cool.Class.createAlias('method5', 'method3');
                          
                          test.method5(); // test.method3() -> test.method1()
                          

                          Parameters

                          ( parent )privatestatic
                          ...

                          Parameters

                          Get the current class' name in string format. ...

                          Get the current class' name in string format.

                          Ext.define('My.cool.Class', {
                              constructor: function() {
                                  alert(this.self.getName()); // alerts 'My.cool.Class'
                              }
                          });
                          
                          My.cool.Class.getName(); // 'My.cool.Class'
                          

                          Returns

                          ...
                          ( name, mixinClass )privatestatic
                          Used internally by the mixins pre-processor ...

                          Used internally by the mixins pre-processor

                          Parameters

                          ( fn, scope )chainableprivatestatic
                          ...

                          Parameters

                          ( members ) : Ext.Basechainabledeprecatedstatic
                          Override members of this class. ...

                          Override members of this class. Overridden methods can be invoked via callParent.

                          Ext.define('My.Cat', {
                              constructor: function() {
                                  alert("I'm a cat!");
                              }
                          });
                          
                          My.Cat.override({
                              constructor: function() {
                                  alert("I'm going to be a cat!");
                          
                                  var instance = this.callParent(arguments);
                          
                                  alert("Meeeeoooowwww");
                          
                                  return instance;
                              }
                          });
                          
                          var kitty = new My.Cat(); // alerts "I'm going to be a cat!"
                                                    // alerts "I'm a cat!"
                                                    // alerts "Meeeeoooowwww"
                          

                          As of 2.1, direct use of this method is deprecated. Use Ext.define instead:

                          Ext.define('My.CatOverride', {
                              override: 'My.Cat',
                          
                              constructor: function() {
                                  alert("I'm going to be a cat!");
                          
                                  var instance = this.callParent(arguments);
                          
                                  alert("Meeeeoooowwww");
                          
                                  return instance;
                              }
                          });
                          

                          The above accomplishes the same result but can be managed by the Ext.Loader which can properly order the override and its target class and the build process can determine whether the override is needed based on the required state of the target class (My.Cat).

                          This method has been deprecated since 2.1.0

                          Please use Ext.define instead

                          Parameters

                          • members : Object

                            The properties to add to this class. This should be specified as an object literal containing one or more properties.

                          Returns