15.05.2012, 09:29
|
Аспирант
|
|
Регистрация: 19.04.2012
Сообщений: 78
|
|
NULL in data.store
Всем доброго времени суток.
Есть проблема при построении линейных графиков. Если в store в одной из ячеек появляется значении NULL, то линия отсраивается некорректно.
К примеру значения для постреяния:
Date Line_1 Line_2
2012-05-10 00:00:00 50,4 48
2012-05-10 18:00:00 NULL NULL
2012-05-11 06:00:00 NULL 51
2012-05-12 00:00:00 48 49
В Ext.data.Field, есть такое свойство как useNull, при установке его в false, график отстраивается так же некорректно, измеятся лишь то, что при наведении на точку со значением появляется title с пустотой.
Может есть возможность в ExtJS исключать значения NULL? Править запросы пока не очень хочется.
P.S. вот пример некорректной отрисовки с данными:
Последний раз редактировалось wUI, 15.05.2012 в 09:48.
|
|
15.05.2012, 14:37
|
Профессор
|
|
Регистрация: 04.02.2011
Сообщений: 1,815
|
|
Первое что пришло на ум.
dataStore.on('load', function() {
//здесь вносим исправления в datastore так как нам удобно
}
пример, перебора 1)
store.on('load', function(store, records) {
for (var i = 0; i < records.length; i++) {
console.log(records[i].get('name'));
};
});
пример перебора 2)
myStore.each( function (model) {
console.log( model.get('name') );
});
Второе что пришло на ум.
изменить renderer в грид
__________________
Лучше калымить в гандурасе чем гандурасить на колыме
Последний раз редактировалось DjDiablo, 15.05.2012 в 14:50.
|
|
16.05.2012, 09:53
|
Аспирант
|
|
Регистрация: 19.04.2012
Сообщений: 78
|
|
DjDiablo,
Спасибо за помощь!=)
Но наиболее простым решением вышла доп. сортировка в PHP, перед отправкой json.
|
|
17.05.2012, 11:35
|
Аспирант
|
|
Регистрация: 19.04.2012
Сообщений: 78
|
|
Кстати опять таки вопрос возник.
Вот json строка с данными:
{"contents":[{"name":0,"data1":48,"name2":0,"data2":50},{"name" :1,"data1":48,"name2":1},{"name":2,"data1":50.4,"n ame2":2},{"name":3,"data1":50.4,"name2":3},{"name" :4,"data1":48,"name2":4},{"name":5,"data1":48,"nam e2":5},{"name":6,"data1":48,"name2":6},{"name":7," data1":48,"name2":7},{"name":8,"data1":48,"name2": 8},{"name":9,"data1":48,"name2":9},{"name":10,"dat a1":50.4,"name2":10},{"name":11,"data1":48,"name2" :11}, {"name":12,"data2":50},{"name":12,"data2":48},{"name":12,"data1":50.4,"name2":12},{"name":13,"d ata1":50.4,"name2":13},{"name":14,"data1":50.4,"na me2":14},{"name":15,"data1":50.4,"name2":15},{"nam e":16,"data1":48,"name2":16},{"name":17,"data1":48 ,"name2":17},{"name":18,"data1":50.4,"name2":18},{ "name":19,"data1":48,"name2":19},{"name":20,"data1 ":50.4,"name2":20},{"name":21,"data1":50.4,"name2" :21},{"name":22,"data1":50.4,"name2":22},{"name":2 3,"data1":50.4,"name2":23,"data2":48}]}
Вот код графика:
var ColumnChart = Ext.create('Ext.chart.Chart', {
height: 600,
width: 980,
x: 0,
y: 0,
id: 'ColumnChart',
xtype: 'chart',
style: 'background:#fff',
animate: true,
store: store,
axes: [{
type: 'Numeric',
position: 'left',
fields: 'data1',
grid: true,
minimum: 0
}, {
type: 'Category',
position: 'bottom',
fields: 'name2'
}],
series: [{
type: 'column',
axis: 'left',
gutter: 80,
xField: 'name2',
yField: 'data1',
tips: {
trackMouse: true,
width: 165,
height: 28,
renderer: function(storeItem, item) {
this.setTitle(storeItem.get('name2') + ' : ' + storeItem.get('data1'));
}
},
style: {
fill: '#38B8BF'
},
label: {
display: 'insideEnd',
'text-anchor': 'middle',
field: 'data1',
orientation: 'vertical',
color: '#333'
}
}]
});
И собственно сам график:
http://saveimg.ru/show-image.php?id=...17dc2b09521820
Вопрос: почему отсраиваются эти два пустых элемента???
|
|
17.05.2012, 12:22
|
Профессор
|
|
Регистрация: 04.02.2011
Сообщений: 1,815
|
|
немало нареканий сама json строка с данными вызывает
Почему три обьекта с name 12 ?,
Почему местами применяется data2 вместо data1, если renderer (axes кстати тоже) берёт данные только из data1?
почему у одних записей есть "name2" а у других нет
{"name":12,"data2":50},
{"name":12,"data2":48},
{"name":12,"data1":50.4,"name2":12}
И самое странное, откуда тут взялись пробелы посреди слов и цифр. Что это опечатки, или это сервер так вернул ?
{"name":2 3,"data1":50.4,"name2":23,"data2":48}
{"nam e":16,"data1":48,"name2":16}
{"name":2,"data1":50.4,"n ame2":2}
{"name":10,"dat a1":50.4,"name2":10}
и тд
__________________
Лучше калымить в гандурасе чем гандурасить на колыме
Последний раз редактировалось DjDiablo, 17.05.2012 в 13:17.
|
|
17.05.2012, 13:50
|
Аспирант
|
|
Регистрация: 19.04.2012
Сообщений: 78
|
|
DjDiablo,
Дело в том, что изначально строится два различных графика.
Линейный, с двумя линиями: ось У - 'name', ось Х - 'data1','data2'.
Гиcтограмма: ось У - 'name2', ось Х - 'data1'.
Теперь понятней, откуда лишние параметры в строке.
А пробелы, думается все же я скопировал в торопях строку.
|
|
17.05.2012, 13:51
|
Аспирант
|
|
Регистрация: 19.04.2012
Сообщений: 78
|
|
Так вот, если к графику линейному у меня пока нареканий не выявлено. То вот Гистограмма смущает)))
|
|
17.05.2012, 14:32
|
Аспирант
|
|
Регистрация: 19.04.2012
Сообщений: 78
|
|
Сейчас отправляю такую строку:
{"contents":[{"data1":48,"name":"May 1 2012 12:00AM","data2":50,"name2":"May 1 2012 12:00AM"},{"data1":48,"name":"May 1 2012 12:00PM"},{"data1":50.4,"name":"May 1 2012 6:00PM"},{"data1":50.4,"name":"May 2 2012 6:00AM"},{"data1":48,"name":"May 2 2012 6:00PM"},{"data1":48,"name":"May 3 2012 12:00AM"},{"data1":48,"name":"May 3 2012 12:00PM"},{"data1":48,"name":"May 3 2012 6:00PM"},{"data1":48,"name":"May 4 2012 6:00AM"},{"data1":48,"name":"May 4 2012 12:00PM"},{"data1":50.4,"name":"May 5 2012 12:00AM"},{"data1":48,"name":"May 5 2012 6:00AM"},{"data2":50,"name2":"May 5 2012 11:14AM"},{"data2":48,"name2":"May 5 2012 11:14AM"},{"data1":50.4,"name":"May 6 2012 12:00AM"},{"data1":50.4,"name":"May 6 2012 6:00AM"},{"data1":50.4,"name":"May 6 2012 6:00PM"},{"data1":50.4,"name":"May 7 2012 12:00AM"},{"data1":48,"name":"May 7 2012 12:00PM"},{"data1":48,"name":"May 7 2012 6:00PM"},{"data1":50.4,"name":"May 8 2012 6:00AM"},{"data1":48,"name":"May 8 2012 12:00PM"},{"data1":50.4,"name":"May 9 2012 12:00AM"},{"data1":50.4,"name":"May 9 2012 6:00AM"},{"data1":50.4,"name":"May 9 2012 6:00PM"},{"data1":50.4,"name":"May 10 2012 12:00AM","data2":48,"name2":"May 10 2012 12:00AM"}]}
Линейный, с двумя линиями: ось У - 'name','name2' ось Х - 'data1','data2'.
Гиcтограмма: ось У - 'name', ось Х - 'data1'.
Но результат тот же.
Выходит так, что когда в элементе нет данных о паре 'name' - 'data1', в гистограмму добавляется пустой столбец. Как, зачем и почему? О_о
|
|
18.05.2012, 07:40
|
Аспирант
|
|
Регистрация: 19.04.2012
Сообщений: 78
|
|
DjDiablo,
А возможно сочетание нескольких store в одном Графике?
Последовал Вашему совету, пересобираю магазин для второго графика.
var xChartColumn = new Array();
var yChartColumn = new Array();
store.on('load', function(store, records) {
for (var i = 0; i < records.length; i++) {
xChartColumn[i] = records[i].get('name');
yChartColumn[i] = records[i].get('data1');
if (xChartColumn[i] != xChartColumn[i-1]){
alert(xChartColumn[i] + ' x ' + yChartColumn[i]);
store_r1.add({name: xChartColumn[i], data1: yChartColumn[i]}); // добавляю данные в новый магазин.
}
};
});
Последний раз редактировалось wUI, 18.05.2012 в 08:07.
|
|
18.05.2012, 13:54
|
Профессор
|
|
Регистрация: 04.02.2011
Сообщений: 1,815
|
|
А возможно сочетание нескольких store в одном Графике?
стандартным методом нет, ибо не непонятно как их в одном графике сочетать
__________________
Лучше калымить в гандурасе чем гандурасить на колыме
Последний раз редактировалось DjDiablo, 18.05.2012 в 13:59.
|
|
|
|