Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 11.05.2016, 20:05
Новичок на форуме
Отправить личное сообщение для Maybe_V Посмотреть профиль Найти все сообщения от Maybe_V
 
Регистрация: 11.05.2016
Сообщений: 4

Как сделать фильтры колонок ?
Играюсь уже не первый час с фильтрациею столбцов. Почему то не отображается CheckBox фильтрации в колонках.

Ext.Loader.setConfig({enabled: true});
Ext.Loader.setPath('Ext.ux', 'extjs/examples/ux');

Ext.require([
    'Ext.grid.*',
    'Ext.data.*',
    'Ext.util.*',
    'Ext.state.*',
    'Ext.selection.CellModel',
    'Ext.window.MessageBox',
    'Ext.ux.grid.FiltersFeature',
    'Ext.ux.grid.filter.ListFilter'
]);

Ext.onReady(function() {

    var filters = {
        ftype: 'filters',
        encode: false,
        local: true
    };
    
    Ext.define('Stock', {
        extend: 'Ext.data.Model',
        idProperty: 'id',
        fields: [
            {name: 'id', type: 'int'},
            {name: 'name', type: 'string'},
            {name: 'symbol', type: 'string'},
            {name: 'open', type: 'float'},
            {name: 'last', type: 'float'},
            {name: 'change', type: 'float'},
            {name: 'type', type: 'string'},
            {name: 'split', type: 'boolean'},
            {name: 'date', type: 'date'},
            {name: 'level', type: 'int'}
        ]
    });

    var store = Ext.create('Ext.data.Store', {
        model: 'Stock',
        autoLoad: true,
        autoSync: true,
        proxy: {
            type: 'ajax',
            api: {
                read: 'stocks_4.php?action=view',
                create: 'stocks_4.php?action=create',
                update: 'stocks_4.php?action=update',
                destroy: 'stocks_4.php?action=destroy'
            },
            writer: {
                type: 'json',
                writeAllFields: true,
                root: 'data'
            },
            reader:{
                type: 'json',
                root: 'data',
                messageProperty: 'message'
            }
        }
    });

    function change(val) {
        var s = Ext.util.Format.number(val,'0.00');
        if (val > 0) {
            return '<span style="color:green;">' + s + '</span>';
        } else if (val < 0) {
            return '<span style="color:red;">' + s + '</span>';
        }
        return val;
    }

    var cellEditing = Ext.create('Ext.grid.plugin.CellEditing', {
        clicksToEdit: 1
    });

    var grid = Ext.create('Ext.grid.GridPanel', {
        store: store,
        stateful: true,
        stateId: 'stateGrid',
        dockedItems: [
            {
            xtype: 'toolbar',
            items: [
                {
                iconCls: 'icon-add',
                text: 'Додати',
                scope: this,
                handler: function(){
                    var rec = new Stock({
                        id  : null,
                        open: 0,
                        last: 0
                    });
                    store.insert(0, rec);
                }
            }, {
                iconCls: 'icon-delete',
                text: 'Видалити',
                itemId: 'delete',
                scope: this,
                handler: function(){
                    var row = grid.getView().getSelectionModel().getCurrentPosition().row;
                    if (row) {
                        store.removeAt(row);
                    }

                }
            }, {
                text: 'Синхронізувати',
                itemId: 'sync',
                scope: this,
                handler: function(){
                    store.sync();
                }
            }]
        },
            {
                xtype: 'toolbar',
                dock: 'bottom',
                items: [{
                    xtype: 'tbtext',
                    text: '<b>Параметри:</b>'
                }, ' ', {
                    text: 'Автосинхронізація',
                    enableToggle: true,
                    pressed: true,
                    tooltip: 'Коли увімкнена - сховище автоматично зберігатиме дані',
                    scope: this,
                    toggleHandler: function(btn, pressed){
                        store.autoSync = pressed;
                    }
                }, {
                    text: 'Пакетний режим',
                    enableToggle: true,
                    pressed: true,
                    tooltip: 'Коли увімкнений, сховище намагатиметься відправляти зміни до декількох записів одним запитом',
                    scope: this,
                    toggleHandler: function(btn, pressed){
                        store.getProxy().batchActions = pressed;
                    }
                }, {
                    text: 'Зберігати всі поля',
                    enableToggle: true,
                    pressed: true,
                    tooltip: 'Коли увімкнено, на сервер відправлятимуться усі поля, а не лише змінені',
                    scope: this,
                    toggleHandler: function(btn, pressed){
                        store.getProxy().getWriter().writeAllFields = pressed;
                    }
                }]
            }],
        columns: [
            {
                text: 'ID',
                width: 15,
                align: 'center',
                hidden: true,
                dataIndex: 'id',
                editor: {

                }
            },
            {
                text: 'Company',
                flex: 1,
                hideable: false,
                dataIndex: 'name',
                editor:{
                    sllowDlank: false
                },
                filterable: true
        
                
            },
            {
                text     : 'Symbol',
                width    : 75,
                sortable : false,
                dataIndex: 'symbol',
                filter: {
                    type: 'list',
                    options: ['MSFT', 'NOK', 'ORCL', 'SBUX']
                }    
            },
            {
                text     : 'Split',
                xtype      : 'booleancolumn',
                align      : 'center',
                trueText : 'Yes',
                falseText: 'No',
                dataIndex: 'split',
                filterable: true
            },
            {
                text     : 'Last Updated',
                width    : 85,
                sortable : true,
                renderer : Ext.util.Format.dateRenderer('d.m.Y'),
                dataIndex: 'date',
                filterable: true,
                editor: {
                    xtype: 'datefield',
                    format: 'd.m.Y',
                    minValue: '01.01.2012',
                    disabledDays: [0, 6],
                    disabledDaysText: 'На вихідні торги не проводяться'
                }
            }
        ],
        height: 350,
        width: 800,
        title: 'Table stocks',
        renderTo: "grid-example",
        features: [filters],
        selModel: {
            selType: 'cellmodel'
        },
        plugins: [cellEditing]
    });
});




Я не понимаю в чем я ошибся !!!

Помогите разобраться(
Ответить с цитированием
  #2 (permalink)  
Старый 11.05.2016, 20:41
Аватар для nohuhu
Профессор
Отправить личное сообщение для nohuhu Посмотреть профиль Найти все сообщения от nohuhu
 
Регистрация: 21.05.2015
Сообщений: 321

А можете всё такое же самое, но в Fiddle?
Ответить с цитированием
  #3 (permalink)  
Старый 11.05.2016, 20:55
Новичок на форуме
Отправить личное сообщение для Maybe_V Посмотреть профиль Найти все сообщения от Maybe_V
 
Регистрация: 11.05.2016
Сообщений: 4

nohuhu, там есть работа с php, где берутся данные с БД. Такое будет работать в Fiddle ? Или просто кинуть туда код с вопроса ?

Я извиняюсь за такую тупость но это первая практика с ext.js
Ответить с цитированием
  #4 (permalink)  
Старый 11.05.2016, 21:21
Аватар для nohuhu
Профессор
Отправить личное сообщение для nohuhu Посмотреть профиль Найти все сообщения от nohuhu
 
Регистрация: 21.05.2015
Сообщений: 321

В общем случае запросы данных на сторонний сервер работать не будут, если у вас не JsonP по умолчанию; в таких случаях обычно выгружают часть данных, достаточную для тестирования проблемы, в JSON файл и загружают туда же в Fiddle.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать калькулятор и с чего начать? A.P. Yellowman Общие вопросы Javascript 3 15.11.2013 21:32
Как сделать реакцию на изменение любого элемента формы. Mik Events/DOM/Window 3 28.07.2011 08:52
Как убрать hover? Либо как сделать стрелки статичными? krusty36 Элементы интерфейса 1 13.07.2011 09:20
Как сделать, чтобы при наведении на кнопку справа от нее появлялись текстовые ссылки? Tass Общие вопросы Javascript 7 17.02.2011 09:06
Вопрос как сделать эту панельку Определённых размеров и свойств. jei jQuery 3 09.06.2009 19:14