import BaseUIElement from "../BaseUIElement"; import {Chart, ChartConfiguration, ChartType, DefaultDataPoint, registerables} from 'chart.js'; Chart?.register(...(registerables ?? [])); export default class ChartJs< TType extends ChartType = ChartType, TData = DefaultDataPoint, TLabel = unknown > extends BaseUIElement{ private readonly _config: ChartConfiguration; constructor(config: ChartConfiguration) { super(); this._config = config; } protected InnerConstructElement(): HTMLElement { const canvas = document.createElement("canvas"); // A bit exceptional: we apply the styles before giving them to 'chartJS' if(this.style !== undefined){ canvas.style.cssText = this.style } if (this.clss?.size > 0) { try { canvas.classList.add(...Array.from(this.clss)) } catch (e) { console.error("Invalid class name detected in:", Array.from(this.clss).join(" "), "\nErr msg is ", e) } } new Chart(canvas, this._config); return canvas; } }