Skip to content

TypeError: Cannot read properties of null (reading 'compareTo_4_g$') #87

@Speykious

Description

@Speykious

We are trying to integrate Charba into our GWT project, and we need to use a timeline series chart.

However, when trying to set the timeline series data, the chart refuses to display on screen, instead an error appears in the console about not being able to read from null:

ConsoleLogger.java:33 TypeError: Cannot read properties of null (reading 'compareTo_4_g$')
    at gyl_g$ (Dataset.java:144:1)
    at YIl_g$.ZIl_g$ [as compare_2_g$] (Dataset.java:144:1)
    at Hri_g$ (Arrays.java:1605:1)
    at Lri_g$ (Arrays.java:1673:1)
    at Lri_g$ (Arrays.java:1681:1)
    at Kri_g$ (Arrays.java:1650:1)
    at Osi_g$ (Arrays.java:1297:1)
    at eAo_g$.Ryl_g$ [as setInternalTimeSeriesItems_1_g$] (Dataset.java:1183:1)
    at Mzo_g$ (HasTimeSeriesItems.java:137:1)
    at eAo_g$.tAo_g$ [as setTimeSeriesData_1_g$] (HasTimeSeriesItems.java:134:1)
    # ...

Here's the relevant code I used to test things:

    private TimeSeriesLineChartWidget createTimeSeriesLineChart() {
        TimeSeriesLineChartWidget chart = new TimeSeriesLineChartWidget();

        TimeSeriesLineOptions chartOptions = chart.getOptions();
        chartOptions.setResponsive(true);
        chartOptions.setAspectRatio(3.5);
        chartOptions.setMaintainAspectRatio(true);
        chartOptions.getLegend().setDisplay(true);
        chartOptions.getTitle().setDisplay(true);
        chartOptions.getTitle().setText("test");
        chartOptions.getTooltips().setEnabled(true);
        chartOptions.setAnimationEnabled(false);
        chartOptions.getDecimation().setEnabled(true);
        chartOptions.getDecimation().setAlgorithm(DecimationAlgorithm.MIN_MAX);

        // tooltip interaction options
        Interaction interaction = chartOptions.getInteraction();
        interaction.setMode(InteractionMode.NEAREST);
        interaction.setAxis(InteractionAxis.X);
        interaction.setIntersect(false);

        // axes options
        CartesianTimeSeriesAxis xAxis = chartOptions.getScales().getTimeAxis();
        xAxis.setDisplay(true);
        xAxis.getTitle().setDisplay(true);
        xAxis.getTitle().setText("Time");
        xAxis.getTicks().setSource(TickSource.DATA);
        xAxis.getTicks().getMajor().setEnabled(true);
        xAxis.getTime().setUnit(TimeUnit.SECOND);
        xAxis.getTime().getDisplayFormats().setDisplayFormat(TimeUnit.SECOND, "m’ss”");
        xAxis.getTime().getDisplayFormats().setDisplayFormat(TimeUnit.MINUTE, "H:mm:ss");
        xAxis.getTime().getDisplayFormats().setDisplayFormat(TimeUnit.HOUR, "H:mm:ss");

        CartesianLinearAxis yAxis = chartOptions.getScales().getLinearAxis();
        yAxis.setDisplay(true);
        yAxis.getTitle().setDisplay(true);
        yAxis.getTitle().setText("test");

        TimeSeriesItem[] data = new TimeSeriesItem[10];
        for (int i = 0; i < 10; i++)
            data[i] = new TimeSeriesItem(new Date((long) i), Random.nextDouble());

        // dataset
        TimeSeriesLineDataset dataset = chart.newDataset();
        dataset.setLabel("labeltest");
        dataset.setBorderColor(Color.CHARBA);
        dataset.setBorderWidth(1);
        dataset.setPointRadius(0);
        dataset.setParsing(false);
        dataset.setTimeSeriesData(data); // view crashes here

        chart.getData().setDatasets(dataset);

        return chart;
    }

There seems to be some null issue while setTimeSeriesData is sorting the given data?

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions