ApexChartDailySalesStates.vue 1.31 KB
<script lang="ts" setup>
import { useTheme } from 'vuetify'
import { getHeatMapChartConfig } from '@core/libs/apex-chart/apexCharConfig'

const vuetifyTheme = useTheme()

const chartConfig = computed(() => getHeatMapChartConfig(vuetifyTheme.current.value))

interface YRange {
  min: number
  max: number
}

const generateDataHeat = (count: number, yrange: YRange) => {
  let i = 0
  const series = []
  while (i < count) {
    const x = `w${(i + 1).toString()}`
    const y = Math.floor(Math.random() * (yrange.max - yrange.min + 1)) + yrange.min

    series.push({
      x,
      y,
    })
    i += 1
  }

  return series
}

const series = [
  {
    name: 'SUN',
    data: generateDataHeat(24, { min: 0, max: 60 }),
  },
  {
    name: 'MON',
    data: generateDataHeat(24, { min: 0, max: 60 }),
  },
  {
    name: 'TUE',
    data: generateDataHeat(24, { min: 0, max: 60 }),
  },
  {
    name: 'WED',
    data: generateDataHeat(24, { min: 0, max: 60 }),
  },
  {
    name: 'THU',
    data: generateDataHeat(24, { min: 0, max: 60 }),
  },
  {
    name: 'FRI',
    data: generateDataHeat(24, { min: 0, max: 60 }),
  },
  {
    name: 'SAT',
    data: generateDataHeat(24, { min: 0, max: 60 }),
  },
]
</script>

<template>
  <VueApexCharts
    type="heatmap"
    height="350"
    :options="chartConfig"
    :series="series"
  />
</template>