Programmatic Chart errors FlowClient

I am trying to populate a Chart addon programmatically. My use case is running an random SQL query and taking the ResultSetMetaData columns to populate a DataGrid and Chart. I am using the MapDataItem this is pre-populated in another view. The chart is in a view called as a DialogWindow. I set the setters after the DialogWindow build but before the open. I get a JavaScript error.
image001

My View;

<?xml version="1.0" encoding="UTF-8" standalone="no"?>



<charts:chart id=“chart” width=“100%” height=“100%” minHeight=“30em”>
charts:xAxes
charts:xAxis/
</charts:xAxes>
</charts:chart>

My ViewController code;
package tools.dataintegration.ai4enterprise.view.chart;

import com.vaadin.flow.router.Route;
import io.jmix.chartsflowui.data.item.MapDataItem;
import io.jmix.chartsflowui.kit.component.model.DataSet;
import io.jmix.chartsflowui.kit.component.model.Title;
import io.jmix.chartsflowui.kit.component.model.legend.Legend;
import io.jmix.chartsflowui.kit.component.model.series.BarSeries;
import io.jmix.chartsflowui.kit.component.model.series.LineSeries;
import io.jmix.chartsflowui.kit.component.model.series.PieSeries;
import io.jmix.chartsflowui.kit.component.model.series.SeriesType;
import io.jmix.chartsflowui.kit.data.chart.ListChartItems;
import io.jmix.flowui.Notifications;
import io.jmix.flowui.view.*;
import org.springframework.beans.factory.annotation.Autowired;
import tools.dataintegration.ai4enterprise.entity.UserLists;
import tools.dataintegration.ai4enterprise.view.main.MainView;
import java.util.List;
@Route(value = “chart”, layout = MainView.class)
@ViewController(“ai4e_Chart”)
@ViewDescriptor(“chart.xml”)
public class Chart extends StandardView {
@ViewComponent
private io.jmix.chartsflowui.component.Chart chart;
@Autowired
private Notifications notify;
private ListChartItems chartItems;
private UserLists userLists;
private List columns;
private List rows;
private List metrics;

@Subscribe
public void onBeforeShow(final BeforeShowEvent event) {
    chart.setLegend(new Legend().withTop("0"));
    Title title = new Title();
    title.setText(userLists.getName());
    chart.setTitle(title);
    switch (userLists.getChartType()) {
        case BAR:
            BarSeries barSeries = new BarSeries();
            barSeries.setType(SeriesType.BAR);
            for (String metric : metrics) {
                barSeries.setName(metric);
                chart.addSeries(barSeries);
            }
            break;
        case PIE:
            PieSeries pieSeries = new PieSeries();
            chart.addSeries(pieSeries);
            break;
        case LINE:
            LineSeries lineSeries = new LineSeries();
            chart.addSeries(lineSeries);
            break;
    }
    chart.withDataSet(
            new DataSet().withSource(
                    new DataSet.Source<MapDataItem>()
                            .withDataProvider(chartItems)
                            .withCategoryField(columns.get(0))
                            .withValueField(metrics.get(0))
            )
    );
}

public void setChartItems(ListChartItems<MapDataItem> chartItems) {
    this.chartItems = chartItems;
}
public void setMetrics(List<String> metrics) {
    this.metrics = metrics;
}
public void setRows(List<String> rows) {
    this.rows = rows;
}
public void setColumns(List<String> columns) {
    this.columns = columns;
}
public void setUserLists(UserLists userLists) {
    this.userLists = userLists;
}

}

Hi!

Please see similar error and debug recommendations: Chart add on using multiple datacontainers - #6 by d.kremnev

Also, in your case, it is possible that the data is provided to the client-side component before the other options. This can cause an error. Will be fixed in 2.3.2: Chart dataset can't be created on client side after detaching · Issue #3578 · jmix-framework/jmix · GitHub.

If you provide a test project, we can tell you the cause of the error.

Best regards,
Dmitriy

Resolution: My problem was a I failed to add X & Y Axis property. Maybe I was not looking in the right log. But it seems the Chart class does not validate basic properties and throw readable errors. I just got vague JavaScript errors. Just some feedback and thanks for the help.