Ставим новую версию графиков.
Сразу надо уяснить, что Highcharts и Highstock разные штуки. У них разные js, и графики тоже разные. К тому же есть еще и Highmaps для карт. Кстати в нем интересный карта-график температуры.
Экспресс метод установки, если не очень хочется во все это вникать:
1. Скопировать все из содержимого архивов во вложениях в папку с файлами сайта.
2. Создать домашнюю страницу с кодом внизу этого поста, и заменить в нем в массивах names и sensornames имена графиков и Объектов.Свойств на свои. И да прибудет с вами сила!
Если не прокатило, то делаем по шагам проверяя работу каждого.
1. Скопировать содержимое архива highcharts.zip из вложения в папку с файлами сайта. Там она уже есть. Копировать с заменой файлов.
В папке highcharts запускаем файл sample3.htm (просто открываем его браузером). Если видим график, значит Highstock работает и можно начать прикручивать к МД
2. Копируем файл jsonp.php из вложения в папку с файлами сайта. Графики хотят получить JSON с данными, и в примерах лазают на свой сайт
http://www.highcharts.com/samples/data/jsonp.php. Нам нужен свой такой источник данных. Файл jsonp.php пока что имеет только один параметр name, в котором нужно указать Объект.Свойство МД данные которого хранятся с историей. Набираем в браузере
http://localhost/jsonp.php?name=OfficeRoom.Temperature указав свой объект, и если видим нечто подобное значит все отлично, и можем продолжить дальше.
3. Заходим в панель управления -> Настройка -> Домашние страницы -> Новая страница
Название - Климат
Тип - HTML Code
Код копируем из файла примера index.htm который лежит в папке compare (то чего недавно смотрели в браузере)
Но тут уже надо кое что поменять. В конце кода есть две строки
Код: Выделить всё
<script src="../../js/highstock.js"></script>
<script src="../../js/modules/exporting.js"></script>
В них нужно поменять путь к папке js. Пишем так:
Код: Выделить всё
<script src="../../highcharts/js/highstock.js"></script>
<script src="../../highcharts/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="../../highcharts/js/jquery-1.8.2.min.js"></script>
Идем проверять. Не забудьте обновить (F5) страницу в браузере. Все осталось на месте? - Отлично.
4. Настраиваем код графика на работу с нашими данными. Укажем от какого объекта брать данные. Находим строку
и меняем на две строки
Код: Выделить всё
names = ['это все моё!'],
sensornames = ['OfficeRoom.Temperature'];
Массив names это имена графиков. Массив sensornames - имена Объект.Свойств. Пока укажем только одно имя и свойств. Идем смотреть график.
Теперь переключим муть к файлу jsonp.php, чтобы график использовал наш файл. Ищем
Код: Выделить всё
$.getJSON('http://www.highcharts.com/samples/data/jsonp.php?filename=' + name.toLowerCase() + '-c.json&callback=?', function (data) {
Меняем на
Код: Выделить всё
$.getJSON('../../jsonp.php?name='+sensornames[i], function (data) {
Обновляем страницу и если видим один график уже по своим данным - успех!
Теперь добавим несколько графиков. Будет выглядеть примерно так
Код: Выделить всё
names = ['кухня', 'гостиная', 'спальня', 'холл', 'кабинет'],
sensornames = ['KitchenArea.Temperature',
'Livingroom.Temperature',
'Bedroom.Temperature',
'HallArea.Temperature',
'OfficeRoom.Temperature'];
Теперь хотелось бы немного оформить график. Добавить легенду, русские буквы, кнопки периода, название осей и т.д. Не буду расписывать все по пунктам. Смотрите код, и сверяйте чего нужно добавить. Или сделайте проще. Берите этот код за основу, и поправьте в нем имена графиков и Объект.Свойство в массивах names и sensornames на свои.
Код: Выделить всё
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Highstock Example</title>
<script type="text/javascript" src="../../highcharts/js/jquery-1.8.2.min.js"></script>
<style type="text/css">
${demo.css}
</style>
<script type="text/javascript">
$(function () {
var seriesOptions = [],
seriesCounter = 0,
names = ['кухня', 'гостиная', 'спальня', 'холл', 'кабинет'],
sensornames = ['KitchenArea.Temperature',
'Livingroom.Temperature',
'Bedroom.Temperature',
'HallArea.Temperature',
'OfficeRoom.Temperature'];
Highcharts.setOptions({
lang: {
months: ['Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль',
'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь'],
shortMonths: ['Янв', 'Фев', 'Мар', 'Апр', 'Май', 'Июн', 'Июл',
'Авг', 'Сен', 'Окт', 'Ноя', 'Дек'],
weekdays: ['Вск', 'Пнд', 'Втр', 'Срд', 'Чтв', 'Птн', 'Сбт'],
rangeSelectorZoom: 'Маcштаб',
rangeSelectorFrom: 'От',
rangeSelectorTo: 'До',
thousandsSep: ' '
},
global: {
useUTC: false
}
});
// create the chart when all data is loaded
createChart = function () {
$('#container').highcharts('StockChart', {
rangeSelector: {
buttons: [{ type: 'hour', count: 1, text: '1h' },
{ type: 'day', count: 1, text: '1d' },
{ type: 'day', count: 2, text: '2d' },
{ type: 'week', count: 1, text: '1w' },
{ type: 'month', count: 1, text: '1m' },
{ type: 'month', count: 6, text: '6m' },
{ type: 'year', count: 1, text: '1y' },
{ type: 'all', text: 'All' }],
selected: 1 // Какая кнопка выбрана по умолчанию
},
title: { text : 'График температур в доме'},
legend: { enabled : true,
layout : 'horizontal',
align : 'center',
verticalAlign : 'top',
borderWidth: 0,
x : 0,
y : 20 },
xAxis: { maxZoom : 1 * 24 * 36000 },
yAxis: { title: { text: 'Температура (°C)' } },
plotOptions: {
series: {
lineWidth: 1,
point: {
events: {
'click': function () {
if (this.series.data.length > 1) {
this.remove();
}
}
}
}
}
},
exporting: {
enabled: false
},
series: seriesOptions
});
};
$.each(names, function (i, name) {
$.getJSON('../../jsonp.php?name='+sensornames[i]+'&callback=?', function (data) {
seriesOptions[i] = {
name: name,
data: data
};
// 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();
}
});
});
});
</script>
</head>
<body>
<script src="../../highcharts/js/highstock.js"></script>
<script src="../../highcharts/js/modules/exporting.js"></script>
<div id="container" style="height: 500px; min-width: 500px"></div>
</body>
</html>
Ссылка для скачивания архивов с примерами
http://www.highcharts.com/download Там целая гора различных примеров графиков. Все это можно использовать в МД.
Потом добавлю динамическое обновление графиков и еще несколько элементов оформления.
Когда полностью сгрызу, оставлю тут на него ссылку.
ВНИМАНИЕ! При обновлении МД файлы в папке highcharts пока что еще будут изменены на старые версии!