123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- /**
- * @class Ext.multisort.Panel
- * @extends Ext.panel.Panel
- * @author Ed Spencer
- *
- *
- */
- Ext.define('Ext.multisort.Panel', {
- extend: 'Ext.panel.Panel',
-
- width: 800,
- height: 450,
- title: 'Multisort DataView',
- autoScroll: true,
-
- requires: ['Ext.toolbar.TextItem', 'Ext.view.View'],
-
- initComponent: function() {
- this.tbar = Ext.create('Ext.toolbar.Toolbar', {
- plugins : Ext.create('Ext.ux.BoxReorderer', {
- listeners: {
- scope: this,
- drop: this.updateStoreSorters
- }
- }),
- defaults: {
- listeners: {
- scope: this,
- changeDirection: this.updateStoreSorters
- }
- },
- items: [{
- xtype: 'tbtext',
- text: 'Sort on these fields:',
- reorderable: false
- }, {
- xtype: 'sortbutton',
- text : 'Type',
- dataIndex: 'type'
- }, {
- xtype: 'sortbutton',
- text : 'Name',
- dataIndex: 'name'
- }]
- });
-
- this.items = {
- xtype: 'dataview',
- tpl: [
- '<tpl for=".">',
- '<div class="item">',
- (!Ext.isIE6? '<img src="../../datasets/touch-icons/{thumb}" />' :
- '<div style="position:relative;width:74px;height:74px;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'../../datasets/touch-icons/{thumb}\')"></div>'),
- '<h3>{name}</h3>',
- '</div>',
- '</tpl>'
- ],
- plugins: [Ext.create('Ext.ux.DataView.Animated')],
- itemSelector: 'div.item',
- store: Ext.create('Ext.data.Store', {
- autoLoad: true,
- sortOnLoad: true,
- storeId: 'test',
- fields: ['name', 'thumb', 'url', 'type'],
- proxy: {
- type: 'ajax',
- url : '../../datasets/sencha-touch-examples.json',
- reader: {
- type: 'json',
- root: ''
- }
- }
- })
- };
-
- this.callParent(arguments);
- this.updateStoreSorters();
- },
-
- /**
- * Returns the array of Ext.util.Sorters defined by the current toolbar button order
- * @return {Array} The sorters
- */
- getSorters: function() {
- var buttons = this.query('toolbar sortbutton'),
- sorters = [];
- Ext.Array.each(buttons, function(button) {
- sorters.push({
- property : button.getDataIndex(),
- direction: button.getDirection()
- });
- });
-
- return sorters;
- },
-
- /**
- * @private
- * Updates the DataView's Store's sorters based on the current Toolbar button configuration
- */
- updateStoreSorters: function() {
- var sorters = this.getSorters(),
- view = this.down('dataview');
- view.store.sort(sorters);
- }
- });
|