config.vue
2.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
<template>
<global-setting :optionData="optionData"></global-setting>
<collapse-item name="词云" expanded>
<setting-item-box name="形状">
<setting-item>
<n-select v-model:value="optionData.series[0].shape" size="small" :options="ShapeEnumList" />
</setting-item>
<setting-item>
<n-checkbox v-model:checked="optionData.series[0].drawOutOfBound" size="small">允许出边</n-checkbox>
</setting-item>
</setting-item-box>
<setting-item-box name="布局">
<setting-item name="宽度">
<n-slider
v-model:value="series.width"
:min="0"
:max="100"
:format-tooltip="sliderFormatTooltip"
@update:value="updateWidth"
></n-slider>
</setting-item>
<setting-item name="高度">
<n-slider
v-model:value="series.height"
:min="0"
:max="100"
:format-tooltip="sliderFormatTooltip"
@update:value="updateHeight"
></n-slider>
</setting-item>
</setting-item-box>
<setting-item-box name="样式" alone>
<setting-item name="字体区间(最小/最大字体)">
<n-slider v-model:value="optionData.series[0].sizeRange" range :step="1" :min="6" :max="100" />
</setting-item>
<setting-item name="旋转角度">
<n-slider v-model:value="series.rotationStep" :step="15" :min="0" :max="45" @update:value="updateRotation" />
</setting-item>
</setting-item-box>
</collapse-item>
</template>
<script setup lang="ts">
import { PropType, computed } from 'vue'
import { option, ShapeEnumList } from './config'
// eslint-disable-next-line no-unused-vars
import { GlobalSetting, CollapseItem, SettingItemBox, SettingItem } from '@/components/Pages/ChartItemSetting'
const props = defineProps({
optionData: {
type: Object as PropType<typeof option>,
required: true
}
})
const series = computed(() => {
const { width, height, rotationStep } = props.optionData.series[0]
return {
width: +width.replace('%', ''),
height: +height.replace('%', ''),
rotationStep
}
})
const sliderFormatTooltip = (v: number) => {
return `${v}%`
}
const updateWidth = (value: number) => {
props.optionData.series[0].width = `${value}%`
}
const updateHeight = (value: number) => {
props.optionData.series[0].height = `${value}%`
}
const updateRotation = (value: number) => {
props.optionData.series[0].rotationStep = value
props.optionData.series[0].rotationRange = value === 0 ? [0, 0] : [-90, 90]
}
</script>