Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / ExtJS - Отображение данных / 2 сообщений из 2, страница 1 из 1
05.02.2015, 21:27
    #38872853
Rollie
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ExtJS - Отображение данных
Всем добрый день.
Сделал парсер, который выдает data.js вида:
Код: javascript
1.
var data=[{"head":["№","INN","Legal_Form_Desc","Customer_Full_Nm","Source_System_Desc"],"rows":[[1,"2302042152","ООО","АМПЗ БАКАР","БИСКвит: Краснодар",""],[2,"593300087432","ИП","БАЙДИНА ОЛЬГА ПАВЛОВНА","БИСКвит: Самара",""]]}];


После этого создал html, в который подключил index.js с содержанием:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
Ext.onReady(function(){
    var search_input = document.createElement('input');
    search_input.setAttribute('id', 'search-input');
    document.body.appendChild(search_input);
    
    var body_element = Ext.get(document.body);
    var body_content_width = body_element.getWidth(true);
    var left_padding = parseInt(body_element.getStyle('padding-left'));
    if (left_padding){
        body_content_width = body_content_width - left_padding;
    }
    
    var test = document.createElement('span');
    test.setAttribute('style', 'padding:0;margin:0;position:absolute;');
    document.body.appendChild(test);
    var column_width = [];
    for(var table_counter = 0; table_counter < data.length; table_counter++){
        column_width.push([50, 180]);
        var head = data[table_counter]['head'];
        for(var i = 2; i < head.length; i++){
            test.innerHTML = head[i];
            column_width[table_counter].push(test.offsetWidth);
        }
    }
    document.body.removeChild(test);
    
    var grid_stores = [];
    for(var table_counter = 0; table_counter < data.length; table_counter++){
        var grid_container = document.createElement('div');
        grid_container.setAttribute('id', 'grid-' + table_counter);
        document.body.appendChild(grid_container);
        
        var head = data[table_counter]['head'];
        var rows = data[table_counter]['rows'];
    
        var reader_mapping = [{name: 'number'}];
        var grid_columns = [{
                                id: 'number', 
                                header: head[0], 
                                sortable: true, 
                                dataIndex: 'number', 
                                width: column_width[table_counter][0]
                            }];
        for(var i = 1; i < head.length; i++){
            if (head[i].length > 0){
                reader_mapping.push({name: head[i], mapping: i});
                grid_columns.push({
                                    header: head[i], 
                                    sortable: true, 
                                    dataIndex: head[i], 
                                    align: (i > 1) ? 'center' : undefined,
                                    width: column_width[table_counter][i] 
                                  });
            }
        }
        
        reader_mapping.push({name: 'group'});
        grid_columns.push({header: "group", sortable: true, dataIndex: 'group', hidden: true});
        
        var reader = new Ext.data.ArrayReader({}, reader_mapping);
        
        var grid = new Ext.grid.GridPanel({
            store: new Ext.data.GroupingStore({
                reader: reader,
                data: rows,
                sortInfo: {field: 'number', direction: "ASC"},
                groupField: 'group'
            }),
    
            columns: grid_columns,
    
            view: new Ext.grid.GroupingView({
                groupTextTpl: '{text} ({[values.rs.length]} {["чел."]})'
            }),
            
            frame: false,
            enableHdMenu: false,
            width: body_content_width,
            height: 600,
            collapsible: true,
            animCollapse: false,
            title: 'Таблица ' + (table_counter + 1),
            renderTo: grid_container
        });
        grid_stores.push(grid.store);
    }
    
    function escape(str) {
        var specials = new RegExp("[.*+?|()\\[\\]{}\\\\]", "g"); // .*+?|()[]{}\
        return str.replace(specials, "\\$&");
    }
    
    var SearchField = Ext.extend(Ext.form.TwinTriggerField, {
        initComponent: function(){
            SearchField.superclass.initComponent.call(this);
            this.on('specialkey', function(f, e){
                if(e.getKey() == e.ENTER){
                    this.onTrigger2Click();
                }
            }, this);
        },
        validationEvent: false,
        validateOnBlur: false,
        trigger1Class: 'x-form-clear-trigger',
        trigger2Class: 'x-form-search-trigger',
        hideTrigger1: true,
        width: 320,
        hasSearch: false,
        stores: [],
        
        onTrigger1Click: function(){
            if(this.hasSearch){
                this.el.dom.value = '';
                
                for(var i = 0; i < this.stores.length; i++){
                    this.stores[i].clearFilter();
                }
                
                this.triggers[0].hide();
                this.hasSearch = false;
            }
        },
    
        onTrigger2Click: function(){
            var v = escape(this.getRawValue());
            if(v.length < 1){
                this.onTrigger1Click();
                return;
            }
            for(var i = 0; i < this.stores.length; i++){
                this.stores[i].filter(this.stores[i].fields.keys[1], v, true, false);
            }
            
            this.hasSearch = true;
            this.triggers[0].show();
        }
    });
    var search_field = new SearchField({stores: grid_stores, applyTo: search_input});
});


В итоге теперь при загрузке страницы у меня отображается весь список из двух строк.

1. Как сделать так, чтобы при загрузке страницы не отображались данные таблицы, а при поиске модуль работал также, как и раньше, то есть отображал данные поиска?

Нужно это для того, чтобы не светить всеми данными при загрузке страницы.
...
Рейтинг: 0 / 0
12.02.2015, 11:35
    #38877784
Ex_Soft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ExtJS - Отображение данных
А Вы можете, так сказать, на естественном языке сформулировать задлянафига такая гора кода? Что Вас в "штатной комплектации" не удовлетворило-то?
_________________
"Helo, word!" - 17 errors 56 warnings
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / ExtJS - Отображение данных / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]