Страница 53 из 54
Re: [Модуль] Charts (charts)
Добавлено: Вт май 17, 2022 1:16 pm
xor
~220v писал(а): ↑Вт май 17, 2022 3:25 am
xor писал(а): ↑Пн май 16, 2022 4:15 pm
а где вы видите нулл в бд? исторические графики из этой таблицы строятся, там нулл исключен
Пожалуйста, прокомментируйте подробнее, не силен в базах... Не соображу что вы хотите донести до меня
я писал о том, что в нашей таблице для графиков вообще не может быть значения нулл по определению и картинка это подтверждала. механизм мускула при попытке записи нулла(не строки null, а именно пустого значения) автоматом подставляет 0.
Другими словами, исключено появление пустого значения (null) в данных для графиков со стороны мдм(
Обычно решение об использовании null в данных происходит при разработке бд, на этом основании строится вся последующая логика обработки данных. Отказ от использования нулла сильно упрощает первоначальную разработку, тк его обработка нетривиальна.
А так-то логично - если значения датчика получаются его явным опросом или он должен присылать данные регулярно, то тут использование нулла прямо указывает на ошибку работы датчика (он не ответил на опрос или в ожидаемое время не прислал данные)
Конечно, можно подправить определение таблицы истории, разрешив писать туда пустые значения, но неизвестно, где это может выстрелить ошибкой в другом модуле при существующих обстоятельствах(
Re: [Модуль] Charts (charts)
Добавлено: Вт май 17, 2022 5:06 pm
~220v
Теперь понял. Тогда получается, в данных Highcharts Setup
data: [3.9, 4.2, 5.7, 8.5, 11.9, 15.2, 17.0, 16.6,
null, 10.3, 6.6, 4.8]
null интерпретируется как пустота, и разрыв линии есть. А если я в БД пишу null то єто уже строковое значение...
И именно пустоту, которая требуется мне для разрыва, никак не записать, бо нет такой возможности...
Выходит что надо модуль доделать чтоб строка "null" понималась им как пустота null. Єх... А автор давно уже тишина...
Re: [Модуль] Charts (charts)
Добавлено: Сб май 21, 2022 7:02 pm
xor
~220v писал(а): ↑Вт май 17, 2022 5:06 pm
Теперь понял. Тогда получается, в данных Highcharts Setup
data: [3.9, 4.2, 5.7, 8.5, 11.9, 15.2, 17.0, 16.6,
null, 10.3, 6.6, 4.8]
null интерпретируется как пустота, и разрыв линии есть. А если я в БД пишу null то єто уже строковое значение...
И именно пустоту, которая требуется мне для разрыва, никак не записать, бо нет такой возможности...
Выходит что надо модуль доделать чтоб строка "null" понималась им как пустота null. Єх... А автор давно уже тишина...
вот как удалось)
при данных таких - при записи нулла, как мы знаем, сам он не записывается, а записывается пустая строка
но придётся в модуль лезть(
Код: Выделить всё
$data = SQLSelect("SELECT ID, VALUE, UNIX_TIMESTAMP(ADDED) as UNX, ADDED FROM $history_table WHERE VALUE_ID='" . $pvalue['ID'] . "' AND ADDED>=('" . date('Y-m-d H:i:s', $start_time) . "') AND ADDED<=('" . date('Y-m-d H:i:s', $end_time) . "') ORDER BY ADDED");
}
$total = count($data);
$only_boolean = true;
for ($i = 0; $i < $total; $i++) {
$dt = ((int)$data[$i]['UNX'] + $diff) * 1000;
if($data[$i]['VALUE'] == '') { //вот тут мы залезли и исправили пустую строку на нулл
$val=null;
} else {
$data[$i]['VALUE'] = (float)str_replace(',', '.', $data[$i]['VALUE']);
$val = (float)preg_replace('/[^\d\.\-]/', '', $data[$i]['VALUE']);
}
if ($val != 0 && $val != 1) {
$only_boolean = false;
}
$history[] = array($dt, $val);
}
Re: [Модуль] Charts (charts)
Добавлено: Вс май 22, 2022 3:11 am
~220v
xor писал(а): ↑Сб май 21, 2022 7:02 pm
но придётся в модуль лезть(
Ну голова! Спасибо огромное! Єто прям в пул реквест!
Даст Бог не разбомбят мой умный дом, вернусь домой попробую ковырнуть.
я б возможно даже так попробовал
Код: Выделить всё
if($data[$i]['VALUE'] == '' заменил бы на
if($data[$i]['VALUE'] == 'null' или if($data[$i]['VALUE'] == 'stop'
Еще раз спасибо за помощь!
Re: [Модуль] Charts (charts)
Добавлено: Вс май 22, 2022 10:26 am
xor
~220v писал(а): ↑Вс май 22, 2022 3:11 am
Еще раз спасибо за помощь!
тут не готовый пуллреквест, а только принцип. править надо в неск. местах модуля и соглашусь - проверять не только на пустую строку, а на всё, что не числа.
пс. кстати, при наличии таких данных с текстом в истории и заменой их на 0 неверно работают исторические функции некоторые(
Например, в среднем вместо исключения данных 0 появятся((
так что, если править, то много. постараюсь до автора донести
Re: [Модуль] Charts (charts)
Добавлено: Ср июн 01, 2022 9:27 pm
xor
xor писал(а): ↑Вс май 22, 2022 10:26 am
~220v писал(а): ↑Вс май 22, 2022 3:11 am
Еще раз спасибо за помощь!
тут не готовый пуллреквест, а только принцип. править надо в неск. местах модуля и соглашусь - проверять не только на пустую строку, а на всё, что не числа.
пс. кстати, при наличии таких данных с текстом в истории и заменой их на 0 неверно работают исторические функции некоторые(
Например, в среднем вместо исключения данных 0 появятся((
так что, если править, то много. постараюсь до автора донести
связанная задачка - оказалось, в мускуле нет штатной функции - is_number(
нашёл такую замену (1 для чисел, 0 - прочее)
SELECT *,
DATAVALUE REGEXP '^[+-]?[0-9]*([0-9]\\.|[0-9]|\\.[0-9])[0-9]*(e[+-]?[0-9]+)?$' as isNumeric
FROM cached_values
ее можно оформить функцией mysql в окне запроса для базы db_terminal
drop function if exists isNumber;
CREATE FUNCTION isNumber(inputValue VARCHAR(255))
RETURNS INT DETERMINISTIC
RETURN inputValue REGEXP '^[+-]?[0-9]*([0-9]\\.|[0-9]|\\.[0-9])[0-9]*(e[+-]?[0-9]+)?$';
и теперь можно использовать в запросах
select isnumber('-123.05'),isnumber(''),isnumber(null),isnumber('0000'),isnumber('-1.25e10');
SELECT * FROM cached_values WHERE isnumber(DATAVALUE)=1;
Re: [Модуль] Charts (charts)
Добавлено: Сб сен 10, 2022 10:34 pm
pasha413
Создал график, сделал ограничение по минимуму и максимуму температуры, все ок, но при отправке в телегу ограничения другие...
Re: [Модуль] Charts (charts)
Добавлено: Пт окт 07, 2022 7:47 pm
EvgenyG
Подскажите, как сделать общую шкалу для графиков?
Пробовал через установку мин/макс но это не всегда удобно.
Re: [Модуль] Charts (charts)
Добавлено: Пт окт 07, 2022 11:10 pm
xor
EvgenyG писал(а): ↑Пт окт 07, 2022 7:47 pm
Подскажите, как сделать общую шкалу для графиков?
Пробовал через установку мин/макс но это не всегда удобно.
в модуле заявлено, что если ед. измерения совпадают, то шкалы схлопываются
- 2022-10-07_23-09-27.png (33.41 КБ) 1000 просмотров
Re: [Модуль] Charts (charts)
Добавлено: Сб окт 08, 2022 4:43 am
EvgenyG
xor писал(а): ↑Пт окт 07, 2022 11:10 pm
EvgenyG писал(а): ↑Пт окт 07, 2022 7:47 pm
Подскажите, как сделать общую шкалу для графиков?
Пробовал через установку мин/макс но это не всегда удобно.
в модуле заявлено, что если ед. измерения совпадают, то шкалы схлопываются
2022-10-07_23-09-27.png
Спасибище!!!