Чтобы добавить к отличному ответу @Ricardo, я также сделал что-то очень похожее. На самом деле, я не ошибусь, если скажу, что пошел еще дальше. Поэтому хотел бы поделиться подходом.
Я создал обертку над библиотекой highchart. Это дает множество преимуществ, следующие из которых являются основными преимуществами, побуждающими идти по этому пути.
- Развязка: отделяет ваш код от highcharts.
- Простые обновления: эта оболочка будет единственным кодом, который потребует модификации в случае каких-либо критических изменений в highchart API после обновлений, или даже если кто-то решит вообще перейти на другую библиотеку диаграмм (даже из highchart to highstock может быть исчерпывающим, если ваше приложение широко использует графики)
- Простота использования: API-интерфейс оболочки остается очень простым, в качестве опций выставляются только те вещи, которые могут различаться (тоже значения которых не будут такими, как у глубокого js-объекта, такого как HC, в основном 1 уровень deep), каждый из которых имеет значение по умолчанию. Таким образом, большую часть времени создание нашей диаграммы очень короткое: конструктор берет 1
options
объект всего с 4-5 свойствами, значения по умолчанию которых не подходят для создаваемой диаграммы.
- Последовательный пользовательский интерфейс. Единый внешний вид приложения. например: формат и положение всплывающей подсказки, цвета, семейство шрифтов, цвета, кнопки панели инструментов (экспорт) и т. д.
- Избегайте дублирования: конечно, как правильный ответ на заданный вопрос, он должен избегать дублирования, и в значительной степени это происходит.
Вот как выглядят options
со значениями по умолчанию
defaults : {
chartType : "line",
startTime : 0,
interval : 1000,
chartData : [],
title : "Product Name",
navigator : true,
legends : true,
presetTimeRanges : [],
primaryToolbarButtons : true,
secondaryToolbarButtons : true,
zoomX : true,
zoomY : false,
height : null,
width : null,
panning : false,
reflow : false,
yDecimals : 2,
container : "container",
allowFullScreen : true,
credits : false,
showAll : false,
fontSize : "normal", // other option available is "small"
showBtnsInNewTab : false,
xAxisTitle : null,
yAxisTitle : null,
onLoad : null,
pointMarkers : false,
categories : []
}
Как видите, в большинстве случаев меняется только chartData
. Даже если вам нужно установить какое-то свойство, в основном это просто типы true/false, ничего похожего на ужас, который ожидает конструктор highchart (не критикуя их, количество предоставляемых ими опций просто потрясающе с точки зрения настройки, но для каждого разработчика в команде, чтобы понять и освоить это, может потребоваться некоторое время)
Таким образом, создание диаграммы так же просто, как
var chart=new myLib.Chart({
chartData : [[1000000,1],[2000000,2],[3000000,1],[4000000,5]]
});
person
Jugal Thakkar
schedule
20.08.2012