Skip to content

Latest commit

 

History

History
77 lines (62 loc) · 5.01 KB

chart_data_binding.adoc

File metadata and controls

77 lines (62 loc) · 5.01 KB

Связь с данными

Реализовано два варианта передачи данных в диаграмму: через интерфейс 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]