diff --git a/types/chart.js/chart.js-tests.ts b/types/chart.js/chart.js-tests.ts index 1cc7d8a997..089b41ac12 100644 --- a/types/chart.js/chart.js-tests.ts +++ b/types/chart.js/chart.js-tests.ts @@ -1,18 +1,18 @@ -import { Chart, ChartData, Point } from 'chart.js'; +import { Chart, ChartData, Point } from "chart.js"; // alternative: // import chartjs = require('chart.js'); // => chartjs.Chart const chart: Chart = new Chart(new CanvasRenderingContext2D(), { - type: 'bar', + type: "bar", data: { - labels: ['group 1'], + labels: ["group 1"], datasets: [ { - backgroundColor: '#000000', + backgroundColor: "#000000", borderWidth: 1, - label: 'test', + label: "test", data: [1] } ] @@ -22,7 +22,7 @@ const chart: Chart = new Chart(new CanvasRenderingContext2D(), { intersect: true }, onHover(ev: MouseEvent, points: any[]) { - return; + return; }, title: { text: ["foo", "bar"] @@ -35,21 +35,23 @@ const chart: Chart = new Chart(new CanvasRenderingContext2D(), { caretPadding: 2, displayColors: true, borderColor: "rgba(0,0,0,0)", - borderWidth: 1, + borderWidth: 1 }, scales: { - xAxes: [{ - ticks: { - callback: Math.floor - }, - gridLines: { - display: false, - borderDash: [5, 15], - borderDashOffset: 2, - zeroLineBorderDash: [5, 15], - zeroLineBorderDashOffset: 2 + xAxes: [ + { + ticks: { + callback: Math.floor + }, + gridLines: { + display: false, + borderDash: [5, 15], + borderDashOffset: 2, + zeroLineBorderDash: [5, 15], + zeroLineBorderDashOffset: 2 + } } - }] + ] }, legend: { display: true, @@ -58,11 +60,13 @@ const chart: Chart = new Chart(new CanvasRenderingContext2D(), { padding: 40 } }, - devicePixelRatio: 2, + devicePixelRatio: 2 } }); chart.update(); +console.log(chart.getDatasetMeta(0)); + console.log(chart.ctx && chart.ctx.font); console.log(chart.canvas && chart.canvas.tagName); if (chart.chartArea) { diff --git a/types/chart.js/index.d.ts b/types/chart.js/index.d.ts index 211f4e9f2c..7fbca1bcb7 100644 --- a/types/chart.js/index.d.ts +++ b/types/chart.js/index.d.ts @@ -13,6 +13,7 @@ // Ken Elkabany // Slavik Nychkalo // Francesco Benedetto +// Alexandros Dorodoulis // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped // TypeScript Version: 2.3 @@ -35,8 +36,9 @@ declare class Chart { getElementAtEvent: (e: any) => {}; getElementsAtEvent: (e: any) => Array<{}>; getDatasetAtEvent: (e: any) => Array<{}>; - ctx: CanvasRenderingContext2D|null; - canvas: HTMLCanvasElement|null; + getDatasetMeta: (index: number) => Meta; + ctx: CanvasRenderingContext2D | null; + canvas: HTMLCanvasElement | null; chartArea: Chart.ChartArea; static pluginService: PluginServiceStatic; static plugins: PluginServiceStatic; @@ -100,6 +102,48 @@ interface Size { width: number; } +interface Meta { + type: Chart.ChartType; + data: MetaData[]; + dataset?: Chart.ChartDataSets; + controller: { [key: string]: any; }; + hidden?: boolean; + total?: string; + xAxisID?: string; + yAxisID?: string; + "$filler"?: { [key: string]: any; }; +} + +interface MetaData { + _chart: Chart; + _datasetIndex: number; + _index: number; + _model: Model; + _start?: any; + _view: Model; + _xScale: Chart.ChartScales; + _yScale: Chart.ChartScales; + hidden?: boolean; +} + +interface Model { + backgroundColor: string; + borderColor: string; + borderWidth?: number; + controlPointNextX: number; + controlPointNextY: number; + controlPointPreviousX: number; + controlPointPreviousY: number; + hitRadius: number; + pointStyle: string; + radius: string; + skip?: boolean; + steppedLine?: undefined; + tension: number; + x: number; + y: number; +} + declare namespace Chart { type ChartType = 'line' | 'bar' | 'horizontalBar' | 'radar' | 'doughnut' | 'polarArea' | 'bubble' | 'pie'; @@ -298,7 +342,7 @@ declare namespace Chart { } interface ChartTooltipsStaticConfiguration { - positioners: {[mode: string]: ChartTooltipPositioner}; + positioners: { [mode: string]: ChartTooltipPositioner }; } type ChartTooltipPositioner = (elements: any[], eventPosition: Point) => Point; @@ -372,14 +416,14 @@ declare namespace Chart { } interface ChartLayoutOptions { - padding?: ChartLayoutPaddingObject | number; + padding?: ChartLayoutPaddingObject | number; } interface ChartLayoutPaddingObject { - top?: number; - right?: number; - bottom?: number; - left?: number; + top?: number; + right?: number; + bottom?: number; + left?: number; } interface GridLineOptions { @@ -415,7 +459,7 @@ declare namespace Chart { backdropPaddingX?: number; backdropPaddingY?: number; beginAtZero?: boolean; - callback?(value: any, index: any, values: any): string|number; + callback?(value: any, index: any, values: any): string | number; display?: boolean; fontColor?: ChartColor; fontFamily?: string;