Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 15.05.2012, 09:29
wUI wUI вне форума
Аспирант
Отправить личное сообщение для wUI Посмотреть профиль Найти все сообщения от wUI
 
Регистрация: 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.
Ответить с цитированием
  #2 (permalink)  
Старый 15.05.2012, 14:37
Профессор
Отправить личное сообщение для DjDiablo Посмотреть профиль Найти все сообщения от DjDiablo
 
Регистрация: 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.
Ответить с цитированием
  #3 (permalink)  
Старый 16.05.2012, 09:53
wUI wUI вне форума
Аспирант
Отправить личное сообщение для wUI Посмотреть профиль Найти все сообщения от wUI
 
Регистрация: 19.04.2012
Сообщений: 78

DjDiablo,
Спасибо за помощь!=)
Но наиболее простым решением вышла доп. сортировка в PHP, перед отправкой json.
Ответить с цитированием
  #4 (permalink)  
Старый 17.05.2012, 11:35
wUI wUI вне форума
Аспирант
Отправить личное сообщение для wUI Посмотреть профиль Найти все сообщения от wUI
 
Регистрация: 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

Вопрос: почему отсраиваются эти два пустых элемента???
Ответить с цитированием
  #5 (permalink)  
Старый 17.05.2012, 12:22
Профессор
Отправить личное сообщение для DjDiablo Посмотреть профиль Найти все сообщения от DjDiablo
 
Регистрация: 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.
Ответить с цитированием
  #6 (permalink)  
Старый 17.05.2012, 13:50
wUI wUI вне форума
Аспирант
Отправить личное сообщение для wUI Посмотреть профиль Найти все сообщения от wUI
 
Регистрация: 19.04.2012
Сообщений: 78

DjDiablo,
Дело в том, что изначально строится два различных графика.
Линейный, с двумя линиями: ось У - 'name', ось Х - 'data1','data2'.
Гиcтограмма: ось У - 'name2', ось Х - 'data1'.
Теперь понятней, откуда лишние параметры в строке.
А пробелы, думается все же я скопировал в торопях строку.
Ответить с цитированием
  #7 (permalink)  
Старый 17.05.2012, 13:51
wUI wUI вне форума
Аспирант
Отправить личное сообщение для wUI Посмотреть профиль Найти все сообщения от wUI
 
Регистрация: 19.04.2012
Сообщений: 78

Так вот, если к графику линейному у меня пока нареканий не выявлено. То вот Гистограмма смущает)))
Ответить с цитированием
  #8 (permalink)  
Старый 17.05.2012, 14:32
wUI wUI вне форума
Аспирант
Отправить личное сообщение для wUI Посмотреть профиль Найти все сообщения от wUI
 
Регистрация: 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', в гистограмму добавляется пустой столбец. Как, зачем и почему? О_о
Ответить с цитированием
  #9 (permalink)  
Старый 18.05.2012, 07:40
wUI wUI вне форума
Аспирант
Отправить личное сообщение для wUI Посмотреть профиль Найти все сообщения от wUI
 
Регистрация: 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.
Ответить с цитированием
  #10 (permalink)  
Старый 18.05.2012, 13:54
Профессор
Отправить личное сообщение для DjDiablo Посмотреть профиль Найти все сообщения от DjDiablo
 
Регистрация: 04.02.2011
Сообщений: 1,815

А возможно сочетание нескольких store в одном Графике?
стандартным методом нет, ибо не непонятно как их в одном графике сочетать
__________________
Лучше калымить в гандурасе чем гандурасить на колыме

Последний раз редактировалось DjDiablo, 18.05.2012 в 13:59.
Ответить с цитированием
Ответ


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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Растянуть элемент по содержимому AnToxa Элементы интерфейса 11 09.04.2012 22:13
Ошибка: "'xmlDoc' - есть null или не является объектом" seregarem Элементы интерфейса 18 26.02.2012 15:31
Переопределить функции .childElements rikitikitavi Events/DOM/Window 2 18.03.2011 21:44
Чем занимаются JS-программеры. JSTalker Оффтопик 69 02.02.2011 10:18
Удалить ряд символов перед или после курсора до определенного сивола brd Javascript под браузер 3 30.10.2009 08:20