package com.example.components; import java.util.List; import java.util.Map; public abstract class AxisChart extends ApexChart { protected AxisChart(String chartType) { super(chartType); } public void setData(String seriesName, List values, List categories) { Map options = DialectTheme.baseOptions(getChartType()); options.put("series", List.of(Map.of("name", seriesName, "data", values))); options.put("xaxis", Map.of( "categories", categories, "axisBorder", Map.of("show", false), "axisTicks", Map.of("show", false) )); sendOptions(options); } /** * Replaces the data of an already rendered chart without re-rendering it: * the client patches series (and categories) into the live chart, so the * update animates from the previous values instead of flashing. Falls back * to {@link #setData} as long as nothing has been rendered yet. */ public void updateData(String seriesName, List values, List categories) { if (!hasSentOptions()) { setData(seriesName, values, categories); return; } sendDataPatch(Map.of( "series", List.of(Map.of("name", seriesName, "data", values)), "categories", categories )); } }