Столбчатая диаграмма
В этом разделе вы:
- 
Интегрируете график с несколькими сериями данных 
- 
Добавите элементы title,tooltip,legend
- 
Привяжите данные через Data Container 
Настройка графика с несколькими сериями
В этом разделе вы создадите график, сочетающий в себе bar серию для представления зарплат сотрудников и line серию для отображения общих метрик.
Настройка серий графика
Откройте user-list-view.xml в редакторе Studio и выберите элемент formLayout, где будет расположена ваша диаграмма.
Чтобы добавить элемент chart, выберите Add Component на панели действий и выберите элемент Charts.
 
Studio автоматически добавит пространство имен charts в корневой элемент экрана, если его там еще нет:
<view xmlns="http://jmix.io/schema/flowui/view"
    xmlns:charts="http://jmix.io/schema/charts/ui" />Кроме того, элемент <charts:chart/> добавится в formLayout. Настройте атрибуты id, height и width следующим образом:
<charts:chart id="bar" width="40em" height="100%" minHeight="30em" alignSelf="STRETCH">Чтобы выбрать тип графика, вам нужен атрибут series.
Выберите элемент chart в панели структуры Jmix UI или в XML, затем нажмите кнопку Add на панели инспектора. Выберите Series → Bar из выпадающего списка.
Чтобы включить line серию в ваш график, выберите элемент series и выберите Add → Line. Добавьте свойство name для обоих типов графиков со значениями Salary и AssesmentTotal соответственно.
<charts:series>
    <charts:bar name="Salary"/>
    <charts:line name="Assessment Total"/>
</charts:series>Добавление осей
Графики bar, scatter, line требуют наличия элементов yAxes и xAxes для отображения значений графика.
Чтобы добавить ось X, щелкните по элементу графика и выберите Add → XAxes → XAxis. Ось X вашего графика будет отображать имена сотрудников.
<charts:xAxes>
    <charts:xAxis/>
</charts:xAxes>Поскольку график содержит два разных типа данных с разными масштабами, вам нужно настроить две оси Y.
Чтобы настроить первую ось Y для отображения зарплат сотрудников, щелкните по элементу chart и выберите Add → YAxes → YAxis.
Добавьте атрибут name="Salary" в элемент YAxis, настройте позицию и выравнивание.
Значения зарплаты в базе данных кратны 100 000. Чтобы отобразить эти значения в масштабе, уменьшенном до сотен, добавьте элемент axisLabel под YAxis и установите атрибут formatterFunction следующим образом.
<charts:yAxis name="Salary" position="LEFT" alignTicks="true">
    <charts:axisLabel
            formatterFunction="function(value){return value / 100;}"/>
</charts:yAxis>Атрибут formatterFunction определяет JavaScript-функцию для корректировки формата значений меток на оси.
В приведенном выше примере функция делит входящее value на 1000, чтобы скорректировать масштаб с сотен тысяч до сотен.
Чтобы добавить вторую ось Y, выберите элемент YAxes и выберите Add → YAxis, настройте имя оси, позицию и выравнивание делений.
<charts:yAxis name="Assessment Total" position="RIGHT" alignTicks="true"/>Затем сопоставьте каждую ось Y с соответствующей серией, добавив атрибуты yAxisIndex в серии bar и line соответственно, как показано ниже.
<charts:series>
    <charts:bar name="Salary" yAxisIndex="0"/>
    <charts:line name="Assessment Total" yAxisIndex="1"/>
</charts:series>Добавление cвойств графика
Теперь вы добавите свойства title, tooltip и legend к вашему графику.
Заголовок
По умолчанию текст title появляется в верхней части графика. Чтобы добавить заголовок, выберите элемент chart, затем выберите Add → Title на панели инспектора. Настройте атрибут text, чтобы описать, что представляет собой график, например, Salary & Assessment Total.
<charts:title text="Salary & Assessment Total"/>Всплывающая подсказка
Атрибут tooltip показывает детальную информацию, когда пользователи наводят курсор на разные части графика. Чтобы добавить атрибут tooltip, выберите элемент chart, затем выберите Add → Tooltip. Установите атрибут trigger в значение AXIS, чтобы показывать всплывающие подсказки для всех элементов в той же категории.
<charts:tooltip trigger="AXIS">
    <charts:axisPointer type="SHADOW"/>
</charts:tooltip>Привязка данных с использованием Data Container
Сначала необходимо загрузить всех пользователей, кроме Admin.
Создайте новый collectionContainer под элементом data с именем employeesDc и соответствующим JPQL-запросом:
<collection id="employeesDc"
            class="com.company.onboarding.entity.User">
    <fetchPlan extends="_base">
        <property name="department" fetchPlan="_base"/>
    </fetchPlan>
    <loader id="employeesDl" readOnly="true">
        <query>
            <![CDATA[select e from User e where e.username <> 'admin']]>
        </query>
    </loader>
</collection>Чтобы включить загруженные данные в график, выберите элемент chart и вручную добавьте атрибут dataSet.
<charts:dataSet/>Внутри элемента dataSet выберите контейнер employeesDc в качестве source и настройте categoryField как ось X, а valueFields как оси Y следующим образом.
<charts:dataSet>
    <charts:source dataContainer="employeesDc"
                   categoryField="username" valueFields="salary assessmentTotal"/>
</charts:dataSet>XML конфигурация для столбчатой диаграммы будет выглядеть следующим образом:
<charts:chart id="bar" width="40em" height="100%" minHeight="30em" alignSelf="STRETCH">
    <charts:title text="Salary & Assessment Total"/>
    <charts:tooltip trigger="AXIS">
        <charts:axisPointer type="SHADOW"/>
    </charts:tooltip>
    <charts:legend/>
    <charts:dataSet>
        <charts:source dataContainer="employeesDc"
                       categoryField="username" valueFields="salary assessmentTotal"/>
    </charts:dataSet>
    <charts:xAxes>
        <charts:xAxis/>
    </charts:xAxes>
    <charts:yAxes>
        <charts:yAxis name="Salary" position="LEFT" alignTicks="true">
            <charts:axisLabel
                    formatterFunction="function(value){return value / 100;}"/>
        </charts:yAxis>
        <charts:yAxis name="Assessment Total" position="RIGHT" alignTicks="true"/>
    </charts:yAxes>
    <!-- Add yAxisIndex for each series to bind yAxis to their corresponding data -->
    <charts:series>
        <charts:bar name="Salary" yAxisIndex="0"/>
        <charts:line name="Assessment Total" yAxisIndex="1"/>
    </charts:series>
</charts:chart>Этот график предоставляет визуализацию зарплат сотрудников и их метрик.
