From 27c54f9e984dd1ed2a1bbd723f031cb4de698ef8 Mon Sep 17 00:00:00 2001 From: marina-semeia Date: Thu, 24 Sep 2026 11:44:39 +0200 Subject: [PATCH] fix(types): parameterize RadarController with its 'radar' chart type --- src/types/index.d.ts | 2 +- .../controllers/radar_controller_subclass.ts | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 test/types/controllers/radar_controller_subclass.ts diff --git a/src/types/index.d.ts b/src/types/index.d.ts index 32831adc88c..74e0bc139ed 100644 --- a/src/types/index.d.ts +++ b/src/types/index.d.ts @@ -454,7 +454,7 @@ export interface RadarControllerDatasetOptions export type RadarControllerChartOptions = LineControllerChartOptions; -export type RadarController = DatasetController +export type RadarController = DatasetController<'radar'> export declare const RadarController: ChartComponent & { prototype: RadarController; new (chart: Chart, datasetIndex: number): RadarController; diff --git a/test/types/controllers/radar_controller_subclass.ts b/test/types/controllers/radar_controller_subclass.ts new file mode 100644 index 00000000000..151fe179b75 --- /dev/null +++ b/test/types/controllers/radar_controller_subclass.ts @@ -0,0 +1,15 @@ +import { RadarController, RadialLinearScale, UpdateMode, Element } from '../../../src/types.js'; + +class CustomRadarController extends RadarController { + override updateElements(points: Element[], start: number, count: number, mode: UpdateMode) { + const scale = this.getScaleForId('r') as RadialLinearScale; + + for (let i = start; i < start + count; i++) { + const r: number = this.getParsed(i).r; + const position = scale.getPointPositionForValue(i, r); + this.updateElement(points[i], i, { x: position.x, y: position.y }, mode); + } + } +} + +export default CustomRadarController;