Динамическое отображение типов в Grid в Extjs

131
09 марта 2019, 08:40

У меня есть store со значениями, где хранятся типы данных и их обозначения с id и т.д. В зависимости от вызванной формы на экране отражаются разные данные. Например, в первом случае можно увидеть "название документа" и поле для ввода, в другом - дата и поле для даты. Данные формируются динамически.

Вот как выглядит мой store

var someStore = new Ext.data.JsonStore({
        storeId: 'myStore',
        url: objectUrlAddress,
        baseParams: {
            'objectID' : objectID
        },
        root: 'Fields',
        fields: [
            {name: 'Hint'},
            {name:'Type', type: 'int'},
            {name: 'Value'},
            {name: 'Index', type: 'int'},
            {name: 'IsRequired', type:'bool'},
            {name: 'Identifier'},
            {name: 'EnumList'},
            {name: 'Directory'},
            {name: 'Data'}
        ]
        });

И таблица

var mainGrid = new Ext.grid.EditorGridPanel({
        id: 'tableId',
        height:300,
        width: '100%',
        frame: true,
        store: someStore,
        columns: 
        [{header: 'Объект', width:200, dataIndex: 'Hint'},
        {header: 'Значение', dataIndex: 'Value', width:300, editor: {xtype: 'textfield'},
        getEditor: function(record) {
                var xtype = 'textfield',
                    args = {
                    fieldLabel: 'Hint',
                    allowBlank: 'IsRequired',
                    value: 'Data',
                    disabled: false
                };
                switch ('Type') {
                    case 0: // int
                        xtype = 'numberfield';
                        args.allowDecimals = false;
                    break;
                    case 1: // decimal
                        xtype = 'numberfield';
                        args.allowDecimals = true;
                    break;
                    case 2: // text
                        xtype = 'textfield';
                    break;
                    case 3: // date
                        xtype = 'textfield';
                        args.emptyText = 'дд.мм.гггг чч:мм';
                        args.format = 'd.m.y H:i';
                    break;
                    case 4: // enum
                    case 5: // sql
                        var dataValues = Ext.util.JSON.decode('Enumlist');
                        var dataArray = Object.keys(dataValues).map(function(k) { return [k, dataValues[k]] });
                        xtype = 'combo ';
                        args.store = new Ext.data.ArrayStore({
                            fields: [
                                {name: 'myId', type: 'string'},
                                {name: 'displayText'}
                            ],
                            data: dataArray
                        });
                    break;
                }
                    return new Ext.grid.CellEditor ({
                    field: Ext.create(xtype, args)
                });
                }
                }]
        });

Однако у меня выскакивает ошибка "TypeError: b[(intermediate value)] is not a constructor" на строке field: Ext.create(xtype, args)

Скажите пожалуйста, как это можно исправить?!

READ ALSO
Изменить span на input

Изменить span на input

Подскажите пожалуйста, есть код в котором по нажатию на span изменяется на input

125
Как сделать clear (C) для калькулятора на JavaScript

Как сделать clear (C) для калькулятора на JavaScript

Мне нужно сделать кнопку C, при нажатии на которую очищаются 4 параграфа с id = out, out1, out2, out3

125
Select2 Yii2 работа с атрибутом tags

Select2 Yii2 работа с атрибутом tags

Всем приветПодскажите пожалуйста как можно реализовать добавление новых элементов option в select

163
Проблема с четкостью изображения в canvas

Проблема с четкостью изображения в canvas

Впервые использую canvasПри загрузке туда изображения оно получается размытым

140