powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / extjs. связанные таблицы.
9 сообщений из 84, страница 4 из 4
extjs. связанные таблицы.
    #38045153
Jeka57
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ex_Soft, а я вот до сих пор не понял, как отрендерить например какой-нибудь грид в панель, находящуюся в центральном регионе, к примеру. Поэтому как почерпнул из просторов интернета, прописываю html в панели, что-то вроде <div id="grid"></div>, и указываю гриду рендерится в этот div. Но с этим проблемы, я так понял панель может позже грида отрендериться, и гриду уже некуда себя деть, получается пусто.
Так, что у меня. Вот часть панели, в которую нужно отрендерить chart
Код: java
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.
{title: 'Статистическая информация', flex:2, 
                layout:'column',
                defaults: {
                    layout: 'anchor',
                    defaults: {
                        anchor: '100%',
			border:0
                    }
                },
                items: [{
                    columnWidth: 1/4,
                    baseCls:'x-plain',
                    bodyStyle:'padding:5px 0 5px 5px',
                    items:[{
                        title: 'Наличие лицензии',
                        html: '<div id="chart1"></div>',
                    }]
                },{
                    columnWidth: 1/4,
                    baseCls:'x-plain',
                    bodyStyle:'padding:5px 0 5px 5px',
                    items:[{
                        title: 'Операционные системы',
                        html: '<div id="chart2"></div>'
                    }]
                }]	
                }]
}


Эта панель отрисовывается при загрузке страницы.
Точно такая же панель отрисовывается по клику в меню:
Код: java
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.
                            if(rec.get('id')=='computers') {
                            var regionCenter = vp.getLayout().centerRegion;
                            
                            regionCenter.removeAll();
                            regionCenter.add(
                            ...................................................
                            //отрисовываю содержимое центрального региона, здесь также присутствует такая же панель:
                            {title: 'Статистическая информация', flex:2, 
                layout:'column',
                defaults: {
                    layout: 'anchor',
                    defaults: {
                        anchor: '100%',
			border:0
                    }
                },
                items: [{
                    columnWidth: 1/4,
                    baseCls:'x-plain',
                    bodyStyle:'padding:5px 0 5px 5px',
                    items:[{
                        title: 'Наличие лицензии',
                        html: '<div id="chart1"></div>',
                    }]
                },{
                    columnWidth: 1/4,
                    baseCls:'x-plain',
                    bodyStyle:'padding:5px 0 5px 5px',
                    items:[{
                        title: 'Операционные системы',
                        html: '<div id="chart2"></div>'
                    }]
                }]	
                }]
}
                            ...................................................
                            );
                            //пытаюсь чтобы chart'ы снова отрендерились в указанные div'ы
                            chart1.render('chart1');
                            chart2.render('chart2');    
                            };


Первый chart появляется, в консоли ошибка Uncaught TypeError: Cannot call method 'writeTo' of null и тишина.
...
Рейтинг: 0 / 0
extjs. связанные таблицы.
    #38045222
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А чем Вас так не удовлетворяет:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
{title: 'Статистическая информация', flex:2, 
                layout:'column',
                defaults: {
                    layout: 'anchor',
                    defaults: {
                        anchor: '100%',
			border:0
                    }
                },
                items: [{
                    columnWidth: 1/4,
                    baseCls:'x-plain',
                    bodyStyle:'padding:5px 0 5px 5px',
                    items: Ext.create('Ext.chart.Chart', { ... title: 'Наличие лицензии' ... } )
                },{
                    columnWidth: 1/4,
                    baseCls:'x-plain',
                    bodyStyle:'padding:5px 0 5px 5px',
                    items: Ext.create('Ext.chart.Chart', { ... title: 'Операционные системы' ... } )
                }]	
                }]
}


???
...
Рейтинг: 0 / 0
extjs. связанные таблицы.
    #38045235
Jeka57
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ex_Soft, а дело в том что у меня данные для chart'ов сначала вытаскиваются из базы, загружаются в store, потом из него по событию load я вытаскиваю значения полей, считаю проценты и создаю новый store с этими данными, с которым уже работает chart. Соответственно chart не появится, если store пустой, поэтому и его рендер стоит там же после создания store.
...
Рейтинг: 0 / 0
extjs. связанные таблицы.
    #38045281
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что мешает соответствующие store'ы (tampax'ные и chart'овские) рожать сразу?
...
Рейтинг: 0 / 0
extjs. связанные таблицы.
    #38045402
Jeka57
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пробовал, никак не получалось, всё время ошибки сыпались. Удалось только вот так:
Код: java
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.
storeChart2s.load({
callback: function(){

all = storeChart2s.getAt(0).get('all');
var winxp = storeChart2s.getAt(0).get('winxp');
var win7 = storeChart2s.getAt(0).get('win7');

        var data = [];   

            data.push({
                name: 'Windows XP',
                data: winxp / all * 100
            },
			{
                name: 'Windows 7',
                data: win7 / all * 100
            });

var store = Ext.create('Ext.data.JsonStore', {
        fields: ['name', 'data'],
        data: data,
    });
	
storeChart2 = store;	
chart2create();

}
});


В chart2create(); содержится Ext.create('Ext.chart.Chart', ...
...
Рейтинг: 0 / 0
extjs. связанные таблицы.
    #38045406
Jeka57
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ошибки, я так понимаю, связаны с пустыми store'ами. Поэтому пришлось так делать, рендер только после заполнения стора.
...
Рейтинг: 0 / 0
extjs. связанные таблицы.
    #38045443
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну шо ж Вы беспомощный такой-то... Вот ext\'овский Pie charts , тупо с\'copy -> paste\'сченный и слегка адаптированный к Вашей хотелке
Код: javascript
\r\nExt.onReady(function() {\r\n\tvar\r\n\t\tstore = Ext.create(\'Ext.data.JsonStore\', {\r\n\t\t\tfields: [\'name\', \'data\']\r\n\t\t}),\r\n\t\tdata = [\r\n\t\t\t{ \'name\': \'metric one\',   \'data\': 10 },\r\n\t\t\t{ \'name\': \'metric two\',   \'data\':  7 },\r\n\t\t\t{ \'name\': \'metric three\', \'data\':  5 },\r\n\t\t\t{ \'name\': \'metric four\',  \'data\':  2 },\r\n\t\t\t{ \'name\': \'metric five\',  \'data\': 27 }\r\n\t\t],\r\n\t\tvp = Ext.create("Ext.container.Viewport", {\r\n\t\t\tlayout: "border",\r\n\t\t\titems: [{\r\n\t\t\t\tregion: "west",\r\n\t\t\t\tlayout: {\r\n\t\t\t\t\ttype: "vbox",\r\n\t\t\t\t\talign: "stretch"\r\n\t\t\t\t},\r\n\t\t\t\twidth: 100,\r\n\t\t\t\titems: [{\r\n\t\t\t\t\txtype: "button",\r\n\t\t\t\t\ttext: "Load Data",\r\n\t\t\t\t\thandler: function(btn, e) {\r\n\t\t\t\t\t\tstore.loadData(data);\r\n\t\t\t\t\t}\r\n\t\t\t\t}, {\r\n\t\t\t\t\txtype: "button",\r\n\t\t\t\t\ttext: "Panel1",\r\n\t\t\t\t\thandler: function(btn, e) {\r\n\t\t\t\t\t\treplaceRegionCenter(btn.text);\r\n\t\t\t\t\t}\r\n\t\t\t\t}, {\r\n\t\t\t\t\txtype: "button",\r\n\t\t\t\t\ttext: "Panel2",\r\n\t\t\t\t\thandler: function(btn, e) {\r\n\t\t\t\t\t\treplaceRegionCenter(btn.text);\r\n\t\t\t\t\t}\r\n\t\t\t\t}, {\r\n\t\t\t\t\txtype: "button",\r\n\t\t\t\t\ttext: "Panel3",\r\n\t\t\t\t\thandler: function(btn, e) {\r\n\t\t\t\t\t\treplaceRegionCenter(btn.text);\r\n\t\t\t\t\t}\r\n\t\t\t\t}]\r\n\t\t\t},{\r\n\t\t\t\tregion: "center",\r\n\t\t\t\tid: "regionCenter"\r\n\t\t\t}]\r\n\t\t}),\r\n\t\treplaceRegionCenter = function(text)\r\n\t\t{\r\n\t\t\tvar\r\n\t\t\t\tregionCenter = vp.getLayout().centerRegion;\r\n\r\n\t\t\tregionCenter.removeAll();\r\n\t\t\tregionCenter.add(Ext.create("Ext.panel.Panel", {\r\n\t\t\t\tregion: "center",\r\n\t\t\t\tid: text,\r\n\t\t\t\titems: Ext.create(\'Ext.chart.Chart\', {\r\n\t\t\t\t\twidth: 500,\r\n\t\t\t\t\theight: 350,\r\n\t\t\t\t\tanimate: true,\r\n\t\t\t\t\tstore: store,\r\n\t\t\t\t\ttheme: \'Base:gradients\',\r\n\t\t\t\t\tseries: [{\r\n\t\t\t\t\t\ttype: \'pie\',\r\n\t\t\t\t\t\tangleField: \'data\',\r\n\t\t\t\t\t\tshowInLegend: true,\r\n\t\t\t\t\t\ttips: {\r\n\t\t\t\t\t\t\ttrackMouse: true,\r\n\t\t\t\t\t\t\twidth: 140,\r\n\t\t\t\t\t\t\theight: 28,\r\n\t\t\t\t\t\t\trenderer: function(storeItem, item) {\r\n\t\t\t\t\t\t\t\tvar total = 0;\r\n\t\t\t\t\t\t\t\tstore.each(function(rec) {\r\n\t\t\t\t\t\t\t\t\ttotal += rec.get(\'data\');\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\tthis.setTitle(storeItem.get(\'name\') + \': \' + Math.round(storeItem.get(\'data\') / total * 100) + \'%\');\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\thighlight: {\r\n\t\t\t\t\t\t\tsegment: {\r\n\t\t\t\t\t\t\t\tmargin: 20\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tlabel: {\r\n\t\t\t\t\t\t\tfield: \'name\',\r\n\t\t\t\t\t\t\tdisplay: \'rotate\',\r\n\t\t\t\t\t\t\tcontrast: true,\r\n\t\t\t\t\t\t\tfont: \'18px Arial\'\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}]\r\n\t\t\t\t})\r\n\t\t\t}));\r\n\t\t};\r\n});\r\n
\r\n
Все фунциклирует вне зависимости от того, когда произошла загрузка store\'а... (можете сначала тыцьнуть в кнопоцку "PanelX", а затем в "Load Data" и наоборот)
...
Рейтинг: 0 / 0
extjs. связанные таблицы.
    #38047504
Jeka57
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ладно, проехали)) Сделал немного подругому-работает.
Проблема другая появилась. Уж очень плохо выглядят диаграммы на мЕньшем разрешении экрана, чем у меня, они съезжают и их не видно. Я так понимаю чтобы сделать их размер автоматически регулируемым под размеры остальных блоков используется параметр autoSize?
Если я делаю так:
Код: java
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.
var chart = Ext.create('Ext.chart.Chart', {
    width: 280,
    height: 230,
    animate: true,
	autoSize: true,
    shadow: true,
    store: storeChart2,
    renderTo: 'chart2',
    legend: {
//position: 'right'
    },
    theme: 'Base:gradients',
    series: [{
        type: 'pie',
        field: 'data',
        showInLegend: false,
        highlight: {
          segment: {
            margin: 20
          }
        },
		 tips: {
                  trackMouse: true,
          width: 100,
                  renderer: function(storeItem, item) {
                    this.setTitle(storeItem.get('name') + ': ' + Math.round(all * storeItem.get('data') / 100) +' ('+ Math.round(storeItem.get('data') / 100 * 100) + '%)');
                  }
                },
        label: {
            field: 'name',
            display: 'rotate',
            contrast: true,
            font: '12px Arial'
        }
    }]
});


то в консоли появляются ошибки:
Код: plaintext
1.
Неожиданное значение -Infinity при анализе атрибута width.
Неожиданное значение -Infinity при анализе атрибута height.
и размер остается одним и тем же. В чем может быть проблема?
...
Рейтинг: 0 / 0
extjs. связанные таблицы.
    #38047508
Jeka57
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В консоли разработчика браузера Chrome ошибки следующие:
Код: plaintext
1.
Error: Invalid value for <svg> attribute width="-Infinity"
Error: Invalid value for <svg> attribute height="-Infinity"
...
Рейтинг: 0 / 0
9 сообщений из 84, страница 4 из 4
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / extjs. связанные таблицы.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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