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

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

Модератор: immortal

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

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

Сообщение Bagir » Сб окт 25, 2014 11:20 am

Highstock это хорошо. Но давайте посмотрим и Highcharts. В нем обилие разнообразных графиков, и похоже там есть все, что только могло бы придти в голову. Я сразу приметил
line-time-seriesПоказать
Изображение
Но тут есть маленькая проблемка. Дело в том, что папка highcharts уже есть в МД. И нам придется ее заменить. Это ни на что не повлияет, если ранее вы не использовали highcharts графики. Так же это не повлияет на работу предложенного мною выше Highstock. Но при обновлении МД файлы в папке highcharts будут заменены. Просто помните об этом. После большого тестирования, Сергей добавит новые версии highcharts и Highstock в дистрибутив если с ними все будет хорошо работать, и тогда с обновлением не будет проблем.
1. Удалите (переместите в архив) папку highcharts в каталоге с файлами МД
2. Скопируйте туда такую же папку highcharts из вложения
В ней можно найти папку examples. Там полно разных примеров. Просто запускайте любой файл index.htm в браузере.
Вложения
highcharts 4.0.4.zip
(1.7 МБ) 178 скачиваний
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Vit
Сообщения: 867
Зарегистрирован: Вт янв 17, 2012 12:31 pm
Благодарил (а): 121 раз
Поблагодарили: 78 раз

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

Сообщение Vit » Сб окт 25, 2014 1:21 pm

Bagir писал(а):Да чтож такое то. Будет разбираться. Мой jsonp.php отрабатывает. Это хорошо. Дальше Надо проверить по шагам работу графиков. Независимо от МД, запускаем в браузере файлы index.htm Этот пример лежит в highstock/examples/compare Это вторая часть пункта 1 поста выше. Смотрим результат. Если он есть, приступаем к пункту 3.
вот так вроде отрабатывает
СпойлерПоказать
Изображение
Аватара пользователя
Bagir
Сообщения: 1614
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 375 раз

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

Сообщение Bagir » Сб окт 25, 2014 2:03 pm

Ну тогда надо пройти третий пункт сообщения http://smartliving.ru/forum/viewtopic.p ... 843#p14843 по шагам, и выяснить где отказ.
Самое первое. Скопировать весь код примера в код домашней страницы и изменить пути к скриптам.
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Vit
Сообщения: 867
Зарегистрирован: Вт янв 17, 2012 12:31 pm
Благодарил (а): 121 раз
Поблагодарили: 78 раз

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

Сообщение Vit » Сб окт 25, 2014 2:27 pm

Bagir писал(а):
Но тут уже надо кое что поменять. В конце хода есть две строки

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

<script src="../../js/highstock.js"></script>
<script src="../../js/modules/exporting.js"></script>
В них нужно поменять путь к папке js. Пишем так:

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

<script src="/highstock/js/highstock.js"></script>
<script src="/highstock/js/modules/exporting.js"></script>
Все! сохраняем и идем смотреть что получилось. Если мы видим график на домашней странице - эксперимент удался, и можно колдовать дальше.
Возвращаемся к коду и находим в самом начале строку

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

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
Гугль это хорошо, но нам может потребоваться и автономная работа. Поэтому заменяем строку на

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

<script type="text/javascript" src="/highstock/js/jquery-1.8.2.min.js"></script>
Идем проверять. Не забудьте обновить (F5) страницу в браузере. Все осталось на месте? - Отлично.

4. Настраиваем код графика на работу с нашими данными. Укажем от какого объекта драть данные. Находим строку

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

names = ['MSFT', 'AAPL', 'GOOG'],
и меняем на две строки

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

names = ['это все моё!'],
sensornames = ['OfficeRoom.Temperature'];
Массив names это имена графиков. Массив sensornames - имена Объект.Свойств. Пока укажем только одно имя и свойств. Идем смотреть график.
Вот на этом месте.

как только начинаю исправлять массив все график перестает отображаться...


у меня виндовс версия
СпойлерПоказать
Изображение
СпойлерПоказать
Изображение
СпойлерПоказать
Изображение

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

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

Сообщение Bagir » Сб окт 25, 2014 2:30 pm

Но в исходном примере тоже массив имен. Вот он names = ['MSFT', 'AAPL', 'GOOG'], просто имена графиков совпадают с именами запросов, а у нас нет. Поэтому и делаем второй массив. Уверен, тут где то просто какой то крючок
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Vit
Сообщения: 867
Зарегистрирован: Вт янв 17, 2012 12:31 pm
Благодарил (а): 121 раз
Поблагодарили: 78 раз

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

Сообщение Vit » Сб окт 25, 2014 2:37 pm

Bagir писал(а):Но в исходном примере тоже массив имен. Вот он names = ['MSFT', 'AAPL', 'GOOG'], просто имена графиков совпадают с именами запросов, а у нас нет. Поэтому и делаем второй массив. Уверен, тут где то просто какой то крючок
поменял массив
СпойлерПоказать
Изображение
поменял путь
СпойлерПоказать
Изображение
данные есть
СпойлерПоказать
Изображение
графика нет
СпойлерПоказать
Изображение
где затык не пойму
Аватара пользователя
Bagir
Сообщения: 1614
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 375 раз

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

Сообщение Bagir » Сб окт 25, 2014 10:28 pm

Надо искать проблему по шагам.
Первый шаг:
Если пример в браузере отрабатывает, то для начала мы просто копируем текст кода страницы примера в МД код домашней страницы без изменений. Один в один, как есть. НО!!! нам надо поменять путь к js файлам.

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

<script src="../../js/highstock.js"></script>
<script src="../../js/modules/exporting.js"></script>
В них нужно поменять путь к папке js. Пишем так:

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

<script src="/highstock/js/highstock.js"></script>
<script src="/highstock/js/modules/exporting.js"></script>
Проверяем. Должно работать!
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Vit
Сообщения: 867
Зарегистрирован: Вт янв 17, 2012 12:31 pm
Благодарил (а): 121 раз
Поблагодарили: 78 раз

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

Сообщение Vit » Сб окт 25, 2014 11:50 pm

Bagir писал(а):Надо искать проблему по шагам.
Первый шаг:
Если пример в браузере отрабатывает, то для начала мы просто копируем текст кода страницы примера в МД код домашней страницы без изменений. Один в один, как есть. НО!!! нам надо поменять путь к js файлам.

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

<script src="../../js/highstock.js"></script>
<script src="../../js/modules/exporting.js"></script>
В них нужно поменять путь к папке js. Пишем так:

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

<script src="/highstock/js/highstock.js"></script>
<script src="/highstock/js/modules/exporting.js"></script>
Проверяем. Должно работать!
я по шагам сделал и написал на каком шаге затык)
Аватара пользователя
Bagir
Сообщения: 1614
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 375 раз

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

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

Можно воспользоваться alert(), чтобы убедиться в правильности составления адреса запроса.

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

    $.each(names, function (i, name) {
        alert ('/jsonp.php?name='+sensornames[i]);
        $.getJSON('/jsonp.php?name='+sensornames[i],    function (data) {
Или вообще подменить имя в строке

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

$.getJSON('/jsonp.php?name='+sensornames[i], function (data) { 
к примеру так

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

$.getJSON('/jsonp.php?name=Chisinau.tempOutside', function (data) { 
Чудес не бывает, заставим работать. У меня тоже Windows.
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
SmallFox
Сообщения: 1
Зарегистрирован: Пт окт 03, 2014 10:47 am
Благодарил (а): 0
Поблагодарили: 0

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

Сообщение SmallFox » Вс окт 26, 2014 12:02 pm

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

    $.each(names, function (i, name) {
...

...
            // As we're loading the data asynchronously, we don't know what order it will arrive. So
            // we keep a counter and create the chart when all the data is loaded.
            seriesCounter += 1;
   //         if (seriesCounter === names.length) { // закоментировать               
                createChart();
    //        } // закоментировать
        });
    });
Попробуй так.
Ответить