"Живые" графики нужна помощь.

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модератор: immortal

Аватара пользователя
Bagir
Сообщения: 1614
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 375 раз

Re: "Живые" графики нужна помощь.

Сообщение Bagir » Вс окт 26, 2014 7:55 pm

Точно не заработает. В нем все го лишь добавляется код из http://smartliving.ru/forum/viewtopic.p ... 160#p14876
У меня он продолжает график рандомными числами. Сейчас пробую подпихнуть туда json с данным. Но код от этого не изменится. У тебя где то в другом месте грабли. Попробуй примеры без json, где внутри указаны координаты точек [4,5,9,1,5,7]. Они есть в highcharts, точнее там все такие. Возможно у тебя именно не отрабатывает $.getJSON() Но тут я пока что не могу ничего сказать. Сам этот пазл из кубиков собираю.
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Аватара пользователя
Bagir
Сообщения: 1614
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 375 раз

Re: "Живые" графики нужна помощь.

Сообщение Bagir » Вс окт 26, 2014 9:06 pm

Вот тут можно почитать про добавление новых точек.
Здесь представлена конструкция for () для перебора массива с точками.
ОнЛайн примеры с кодом.
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Аватара пользователя
Bagir
Сообщения: 1614
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 375 раз

Re: "Живые" графики нужна помощь.

Сообщение Bagir » Вс окт 26, 2014 10:17 pm

Вот вам еще интересный кусочек кода

Код: Выделить всё

                 plotOptions: {
                     series: {
                         lineWidth: 1,
                         point: {
                             events: {
                                 'click': function () {
                                     if (this.series.data.length > 1) {
                                         this.remove();
                                     }
                                 }
                             }
                         }
                     }
                 }, 
lineWidth: 1 это толщина линии, а в блоке point: {} код для удаления точки с графика при клике по ней мышкой. Не знаю зачем, но пускай будет в примерах. Что интересно, стандартная толщина линии - 2. И так же 2 при выделении мышкой. Если задать различные, то при наведении мышки линия будет менять толщину. Именно это в самом начале я и искал. Вот так всегда бывает, ищешь одно, а находишь другое :)
графикПоказать
Изображение
Видно, что линия одного графика выделена жирнее других.
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Аватара пользователя
Bagir
Сообщения: 1614
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 375 раз

Re: "Живые" графики нужна помощь.

Сообщение Bagir » Пн окт 27, 2014 2:42 am

Все же сгрыз динамическое обновление графиков. Пример возможно уже будет завтра.
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
denis
Сообщения: 284
Зарегистрирован: Сб ноя 24, 2012 11:47 am
Благодарил (а): 29 раз
Поблагодарили: 28 раз

Re: "Живые" графики нужна помощь.

Сообщение denis » Пн окт 27, 2014 1:53 pm

Bagir писал(а):Все же сгрыз динамическое обновление графиков. Пример возможно уже будет завтра.
Приятно видеть, что есть люди самостоятельно догрызающие гранит "живых графиков") Дело за малым, уже упоминалась в этой ветке тема про 1.7 миллиона точек http://www.highcharts.com/stock/demo/lazy-loading с динамической загрузкой данных по выделенному диапазону, но к сожалению никто так и не освоил этот пример на своей системе.
Просто на графике с несколькими сотнями значений все ок, а вот у меня температура раз в 10 минут пишется, так только по одному датчику это 52560 значений и график грузится 5-6 секунд, а если несколько значений то вообще будет ужас, ужас!)
Аватара пользователя
Bagir
Сообщения: 1614
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 375 раз

Re: "Живые" графики нужна помощь.

Сообщение Bagir » Пн окт 27, 2014 3:09 pm

Точно также! И уже замечаю как тупит на мобильных железяках. Температуру пишу раз в полчаса или по ее изменению. 5 графиков. Данных пока совсем не много, но в периоде хотелось бы видеть год. Через 2-3 месяца реально предвижу тормоза.
Пример посмотрел, так то по идее это тоже самое что и динамическое обновление. Без разницы какое событие инициирует запрос данных. Таймер или изменение зума. Идея в том же. Нужен php файл, отвечающий на запросы json от графика. Дописать php для меня не проблема. Но html пока еще конструктор из кубиков ))
Сейчас сделал динамическое обновление, из условия, что json всегда отвечает данными каждому по каждому графику на одну точку. Это конечно тестовый вариант. Осталось разбить json на массив и в цикле построить точки с проверкой на пустой ответ. Пример есть, буду пробовать вечером. Думаю, что больших граблей уже не должно быть, и мой html пазл соберется. А потом примемся и за 1,7 мтч. Надо добить эту тему и выложить обновления с примерами.
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
denis
Сообщения: 284
Зарегистрирован: Сб ноя 24, 2012 11:47 am
Благодарил (а): 29 раз
Поблагодарили: 28 раз

Re: "Живые" графики нужна помощь.

Сообщение denis » Пн окт 27, 2014 4:32 pm

я тут уже писал в ветке, в том примере идет запрос к разным таблицам (в зависимости от периода отображения) :
1. данные по годам
2. данные по месяцам
3. данные по неделям
4. собственно "полные" подробные данные.
т.е. чем более подробен период отображения, тем более подробная таблица используется. Т.к. кроме отображения данных, очень много времени занимает выборка данных из БД MySQL, т.е. чтобы нам выбрать даже одну точку из БД нам надо буквально просмотреть весь! миллион записей в БД на соотвествие условию выборки. Поэтому метод постройки графика по "укрупненным" таблицам так быстро и работает.
идея вот в чем:
Скрипт с некоторой периодичностью прочесывает таблицу phistory и пишет "укрупненные" данные в другие таблица, а вот по ним уже и строятся графики.
Аватара пользователя
Bagir
Сообщения: 1614
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 375 раз

Re: "Живые" графики нужна помощь.

Сообщение Bagir » Пн окт 27, 2014 6:30 pm

Прикидывая количество точек, возможно и придется выбрать такой вариант. Читая форум, вижу что многим он не по душе. Не скрою, и меня не радует перспектива нескольких таблиц, хотя в них так то ничего страшного нет. Я даже думаю, что может и не придется вылезать из phistory. просто в ней будет свойство с историей уже с усредненными данными. Надо пробовать, иначе не узнаешь. Пока что проблема времени формирования у меня начинает быть заметной только на мобильных устройствах. На ПК график открывается практически моментально. Страница со сценами даже немного дольше грузится. Но конечно же перспективы понятны. Будет только хуже. Сегодня посмотрел, там всего то один месяц данных.
По сути говоря, в какой карман лезть за данными, это уже ерунда. Вначале попробую усреднять в sql запросе. Уверен, это немного отодвинет решение задачи. И даже в какой то мере решит ее для мобильных устройств. Я пока что не прикидывал возможности sql на своем сервере.
В любом случае, написать скрипт, который пробежиться по таблице и создаст усредненные варианты - дело не сложное. И я скорее всего займусь этим хотя бы для примера. Да может еще и пригодится самому. Мне бы только сейчас html страницы графика сгрызть. Так то хочется и обновление каждые 30 секунд и подгрузку данных при масштабировании. Запихать бы это все в один код!
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Аватара пользователя
sergejey
Site Admin
Сообщения: 4284
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: "Живые" графики нужна помощь.

Сообщение sergejey » Пн окт 27, 2014 6:41 pm

Bagir писал(а):В любом случае, написать скрипт, который пробежиться по таблице и создаст усредненные варианты - дело не сложное. И я скорее всего займусь этим хотя бы для примера. Да может еще и пригодится самому.
Если посмотреть скрипт /scripts/optimize_history.php, то он как раз это и делает.

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Аватара пользователя
Bagir
Сообщения: 1614
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 375 раз

Re: "Живые" графики нужна помощь.

Сообщение Bagir » Пн окт 27, 2014 8:19 pm

А и точно, еще не добрался, спасибо, обязательно изучу.
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Ответить