useChartData.ts 699 B

1234567891011121314151617181920
  1. import { computed, ComputedRef } from '@vue/reactivity'
  2. import { useChartColors } from './useChartColors'
  3. import { TChartData } from '../../types'
  4. export function useChartData<T extends TChartData>(data: T, alfa?: number): ComputedRef<T> {
  5. const datasetsColors = data.datasets.map((dataset) => dataset.backgroundColor as string)
  6. const datasetsThemesColors = datasetsColors.map(
  7. (colors) => useChartColors(colors, alfa)[alfa ? 'generatedHSLAColors' : 'generatedColors'],
  8. )
  9. return computed(() => {
  10. const datasets = data.datasets.map((dataset, idx) => ({
  11. ...dataset,
  12. backgroundColor: datasetsThemesColors[idx].value,
  13. }))
  14. return { ...data, datasets } as T
  15. })
  16. }