| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- <template>
- <ul class="chart-pool" :style="{width: lang.lang === 'en' ? '365px' : '240px'}">
- <li class="chart-item" v-for="(chart, index) in chartList" :key="index">
- <div class="chart-content" @click="selectChart(chart)">
- <IconChartLine size="24" v-if="chart === 'line'" />
- <IconChartHistogram size="24" v-else-if="chart === 'bar'" />
- <IconChartPie size="24" v-else-if="chart === 'pie'" />
- <IconChartHistogramOne size="24" v-else-if="chart === 'column'" />
- <IconChartLineArea size="24" v-else-if="chart === 'area'" />
- <IconChartRing size="24" v-else-if="chart === 'ring'" />
- <IconChartScatter size="24" v-else-if="chart === 'scatter'" />
- <IconRadarChart size="23" v-else-if="chart === 'radar'" />
- <div class="name">{{ CHART_TYPE_MAP[chart] }}</div>
- </div>
- </li>
- </ul>
- </template>
- <script lang="ts" setup>
- import type { ChartType } from '@/types/slides'
- import { getChartTypeMap } from '@/configs/chart'
- import { lang } from '@/main'
- const CHART_TYPE_MAP = getChartTypeMap()
- const emit = defineEmits<{
- (event: 'select', payload: ChartType): void
- }>()
- const chartList: ChartType[] = ['bar', 'column', 'line', 'area', 'scatter', 'pie', 'ring', 'radar']
- const selectChart = (chart: ChartType) => {
- emit('select', chart)
- }
- </script>
- <style lang="scss" scoped>
- .chart-pool {
- width: 240px;
- margin-bottom: -5px;
- @include flex-grid-layout();
- }
- .chart-item {
- @include flex-grid-layout-children(4, 24%);
- height: 0;
- padding-bottom: 25%;
- flex-shrink: 0;
- position: relative;
- cursor: pointer;
- }
- .chart-content {
- @include absolute-0();
- display: flex;
- flex-direction: column;
- justify-content: center;
- align-items: center;
- color: #999;
- &:hover {
- color: $themeColor;
- }
- .name {
- margin-top: 4px;
- }
- }
- </style>
|