Migrates to svelte 5
This commit is contained in:
44
web/src/lib/vendor/svelte-chartjs/bar.svelte
vendored
Normal file
44
web/src/lib/vendor/svelte-chartjs/bar.svelte
vendored
Normal file
@@ -0,0 +1,44 @@
|
||||
<script lang="ts">
|
||||
import {
|
||||
Chart,
|
||||
Tooltip,
|
||||
BarController,
|
||||
type ChartData,
|
||||
type ChartOptions,
|
||||
} from 'chart.js';
|
||||
import type { HTMLCanvasAttributes } from 'svelte/elements';
|
||||
|
||||
|
||||
interface Props extends HTMLCanvasAttributes {
|
||||
data: ChartData<'bar', number[], string>;
|
||||
options: ChartOptions<'bar'>;
|
||||
}
|
||||
|
||||
const { data, options, ...rest }: Props = $props();
|
||||
|
||||
Chart.register(Tooltip, BarController);
|
||||
|
||||
let canvasElem: HTMLCanvasElement;
|
||||
let chart: Chart;
|
||||
|
||||
$effect(() => {
|
||||
chart = new Chart(canvasElem, {
|
||||
type: 'bar',
|
||||
data,
|
||||
options,
|
||||
});
|
||||
|
||||
return () => {
|
||||
chart.destroy();
|
||||
};
|
||||
});
|
||||
|
||||
$effect(() => {
|
||||
if (chart) {
|
||||
chart.data = data;
|
||||
chart.update();
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
<canvas bind:this={canvasElem} {...rest}></canvas>
|
||||
43
web/src/lib/vendor/svelte-chartjs/pie.svelte
vendored
Normal file
43
web/src/lib/vendor/svelte-chartjs/pie.svelte
vendored
Normal file
@@ -0,0 +1,43 @@
|
||||
<script lang="ts">
|
||||
import {
|
||||
Chart,
|
||||
PieController,
|
||||
Tooltip,
|
||||
type ChartData,
|
||||
type ChartOptions,
|
||||
} from 'chart.js';
|
||||
import type { HTMLCanvasAttributes } from 'svelte/elements';
|
||||
|
||||
interface Props extends HTMLCanvasAttributes {
|
||||
data: ChartData<'pie', number[], string>;
|
||||
options: ChartOptions<'pie'>;
|
||||
}
|
||||
|
||||
const { data, options, ...rest }: Props = $props();
|
||||
|
||||
Chart.register(Tooltip, PieController);
|
||||
|
||||
let canvasElem: HTMLCanvasElement;
|
||||
let chart: Chart;
|
||||
|
||||
$effect(() => {
|
||||
chart = new Chart(canvasElem, {
|
||||
type: 'pie',
|
||||
data,
|
||||
options,
|
||||
});
|
||||
|
||||
return () => {
|
||||
chart.destroy();
|
||||
};
|
||||
});
|
||||
|
||||
$effect(() => {
|
||||
if (chart) {
|
||||
chart.data = data;
|
||||
chart.update();
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
<canvas bind:this={canvasElem} {...rest}></canvas>
|
||||
Reference in New Issue
Block a user