Реализовано два варианта передачи данных в диаграмму: через интерфейс DataProvider
и с использованием упрощённого API, позволяющего привязывать данные напрямую при помощи метода addData()
и удобных конструкторов класса MapDataItem
. Последний способ подходит для диаграмм, для которых не определен контейнер данных. В главе [chart_example] проиллюстрированы все способы получения данных.
- DataProvider:
-
Интерфейс
DataProvider
имеет две стандартные реализации: классListDataProvider
и классContainerDataProvider
.-
ListDataProvider
содержит список экземпляровDataItem
, из которых будут браться данные для диаграммы. Существует несколько стандартных реализаций интерфейсаDataItem
:-
EntityDataItem
принимает экземпляр сущности, из которой будут браться данные для диаграммы:link:../../../source/chart/EntityDataItem_example.java[role=include]
-
MapDataItem
содержит набор пар ключ-значение, из которого будут браться данные для диаграммы:link:../../../source/chart/MapDataItem_example.java[role=include]
-
SimpleDataItem
принимает экземпляр любогоpublic
класса, из которого будут браться данные для диаграммы:
link:../../../source/chart/SimpleDataItem_example.java[role=include]
-
-
ContainerDataProvider
используется для связи {main_man_url}/gui_collection_container.html[CollectionContainer] с компонентом диаграммы.Предположим, имеется контейнер данных с загрузчиком, который получает список экземпляров сущности
TransportCount
. Ниже приведен фрагмент XML-дескриптора экрана:link:../../../source/chart/containerDataProvider_example.xml[role=include]
В контроллере экрана определяется метод
onInit()
, который задает провайдер данных для диаграммыstackedArea
. Провайдер данных создан на основе контейнера данныхtransportCountsDc
.link:../../../source/chart/ContainerDataProvider_example.java[role=include]
Данный вариант требует наличия сущности, представляющей данные диаграммы. Он удобен, когда такая сущность уже есть в модели данных приложения, а также когда данные диаграммы нужно отобразить и в виде таблицы.
Экземпляр
DataProvider
передается методуsetDataProvider()
конфигурации диаграммы. Данный способ предоставления данных для диаграммы наиболее универсален, однако требует создания экземпляровDataProvider
илиDataItem
в коде контроллера экрана.Используемые для отображения свойства сущности или значения, содержащиеся в экземпляре
DataProvider
, задаются в атрибутах диаграммы, причем атрибуты различаются для разных типов диаграмм. Например для компонентаchart:pieChart
необходимо задать атрибутыvalueField
иtitleField
.В качестве значений могут выступать типыInteger
,Long
,Double
,String
,Boolean
,Date
.С помощью механизма
DataProvider
поддерживается динамическое добавление данных в существующий график. -
- Элемент chart:data:
-
Этот способ удобен для быстрого прототипирования диаграмм. Элемент
chart:data
и вложенные в него элементыitem
позволяют вручную указать фиксированные значения прямо в XML-дескрипторе диаграммы, например:link:../../../source/chart/chart_data.xml[role=include]