Часто при построения графиков появляется (не то что бы) проблема не полноты данных, точнее это не проблема в jQuery а вот в ExtJS пришлось подумать…
Например, имеется у нас такое хранилище данных:
Time 1 | Time 2 | Time 3 | Time 4 | |
Value 1 | -10 | 100 | 0 | undefined |
Value 2 | 0 | undefined | 59 | 0 |
Value 3 | undefined | undefined | undefined | undefined |
По уму полю надо прописать тип, ну допустим float, и получаем подмену всех undefined на 0.
Получаем, вот такой график:
Не похоже
Убираем тип и добавляем «defaultValue: undefined«.
Получаем вот такой график:
Похоже но без осей выглядит не красиво….
Поискав проблему в коде, вспомнил, что Math.min от undefined и числа дает undefined.
Следовательно надо написать свою функцию нахождения минимума и максимума.
Получилось что-то такое:
Минимум
function(a) { var result = arguments[0] for(var i=1;i<arguments.length;i++) result = (!isNaN(result)?(!isNaN(arguments[i])?Math.min(result, arguments[i]):result):arguments[i]); return result; }
Максимум
function(a) { var result = arguments[0] for(var i=1;i<arguments.length;i++) result = (!isNaN(result)?(!isNaN(arguments[i])?Math.max(result, arguments[i]):result):arguments[i]); return result; }
Подменим на эти функции все строчки типа
... mmin = math.min; ... mmax = math.max; ...
Должно получится так
... mmin = function(a) { var result = arguments[0] for(var i=1;i<arguments.length;i++) result = (!isNaN(result)?(!isNaN(arguments[i])?Math.min(result, arguments[i]):result):arguments[i]); return result; }; ... mmax = function(a) { var result = arguments[0] for(var i=1;i<arguments.length;i++) result = (!isNaN(result)?(!isNaN(arguments[i])?Math.max(result, arguments[i]):result):arguments[i]); return result; }; ...
Посмотрим на график:
Вот так значительно лучше