2022-03-09 17:37:32 +08:00
|
|
|
<template>
|
2022-05-03 16:24:31 +08:00
|
|
|
<collapse-item :name="isCanvas ? '滤镜' : '滤镜 / 变换'">
|
2022-04-19 22:07:54 +08:00
|
|
|
<setting-item-box name="色相" :alone="true">
|
|
|
|
<setting-item :name="`值:${chartStyles.hueRotate}deg`">
|
|
|
|
<!-- 透明度 -->
|
|
|
|
<n-slider
|
|
|
|
v-model:value="chartStyles.hueRotate"
|
|
|
|
:step="3"
|
|
|
|
:min="0"
|
|
|
|
:max="360"
|
|
|
|
:format-tooltip="degFormatTooltip"
|
|
|
|
></n-slider>
|
|
|
|
</setting-item>
|
|
|
|
</setting-item-box>
|
|
|
|
<setting-item-box name="饱和度" :alone="true">
|
|
|
|
<setting-item
|
2022-04-22 16:40:46 +08:00
|
|
|
:name="`值:${(parseFloat(String(chartStyles.saturate)) * 100).toFixed(0)}%`"
|
2022-04-19 22:07:54 +08:00
|
|
|
>
|
|
|
|
<!-- 透明度 -->
|
|
|
|
<n-slider
|
|
|
|
v-model:value="chartStyles.saturate"
|
|
|
|
:step="0.1"
|
|
|
|
:min="0"
|
|
|
|
:max="2"
|
|
|
|
:format-tooltip="sliderFormatTooltip"
|
|
|
|
></n-slider>
|
|
|
|
</setting-item>
|
|
|
|
</setting-item-box>
|
|
|
|
<setting-item-box name="对比度" :alone="true">
|
|
|
|
<setting-item
|
2022-04-22 16:40:46 +08:00
|
|
|
:name="`值:${(parseFloat(String(chartStyles.contrast)) * 100).toFixed(0)}%`"
|
2022-04-19 22:07:54 +08:00
|
|
|
>
|
|
|
|
<!-- 透明度 -->
|
|
|
|
<n-slider
|
|
|
|
v-model:value="chartStyles.contrast"
|
|
|
|
:step="0.1"
|
|
|
|
:min="0"
|
|
|
|
:max="2"
|
|
|
|
:format-tooltip="sliderFormatTooltip"
|
|
|
|
></n-slider>
|
|
|
|
</setting-item>
|
|
|
|
</setting-item-box>
|
|
|
|
<setting-item-box name="亮度" :alone="true">
|
|
|
|
<setting-item
|
2022-04-22 16:40:46 +08:00
|
|
|
:name="`值:${(parseFloat(String(chartStyles.brightness)) * 100).toFixed(0)}%`"
|
2022-04-19 22:07:54 +08:00
|
|
|
>
|
|
|
|
<!-- 透明度 -->
|
|
|
|
<n-slider
|
|
|
|
v-model:value="chartStyles.brightness"
|
|
|
|
:step="0.1"
|
|
|
|
:min="0"
|
|
|
|
:max="2"
|
|
|
|
:format-tooltip="sliderFormatTooltip"
|
|
|
|
></n-slider>
|
|
|
|
</setting-item>
|
|
|
|
</setting-item-box>
|
2022-03-14 16:07:35 +08:00
|
|
|
<setting-item-box name="透明度" :alone="true">
|
2022-04-19 22:07:54 +08:00
|
|
|
<setting-item
|
2022-04-22 16:40:46 +08:00
|
|
|
:name="`值:${(parseFloat(String(chartStyles.opacity)) * 100).toFixed(0)}%`"
|
2022-04-19 22:07:54 +08:00
|
|
|
>
|
|
|
|
<!-- 透明度 -->
|
|
|
|
<n-slider
|
|
|
|
v-model:value="chartStyles.opacity"
|
|
|
|
:step="0.1"
|
|
|
|
:min="0"
|
|
|
|
:max="1"
|
|
|
|
:format-tooltip="sliderFormatTooltip"
|
|
|
|
></n-slider>
|
|
|
|
</setting-item>
|
2022-03-14 16:07:35 +08:00
|
|
|
</setting-item-box>
|
2022-05-03 16:24:31 +08:00
|
|
|
|
|
|
|
<!-- 变换 -->
|
|
|
|
<setting-item-box v-if="!isCanvas" name="旋转°">
|
|
|
|
<setting-item name="Z轴(平面) - 旋转">
|
|
|
|
<!-- 透明度 -->
|
|
|
|
<n-input-number
|
|
|
|
v-model:value="chartStyles.rotateZ"
|
|
|
|
:min="0"
|
|
|
|
:max="360"
|
|
|
|
size="small"
|
|
|
|
placeholder="角度"
|
|
|
|
></n-input-number>
|
|
|
|
</setting-item>
|
|
|
|
<setting-item name="X轴 - 旋转">
|
|
|
|
<!-- 透明度 -->
|
|
|
|
<n-input-number
|
|
|
|
v-model:value="chartStyles.rotateX"
|
|
|
|
:min="0"
|
|
|
|
:max="360"
|
|
|
|
size="small"
|
|
|
|
placeholder="角度"
|
|
|
|
></n-input-number>
|
|
|
|
</setting-item>
|
|
|
|
<setting-item name="Y轴 - 旋转">
|
|
|
|
<!-- 透明度 -->
|
|
|
|
<n-input-number
|
|
|
|
v-model:value="chartStyles.rotateY"
|
|
|
|
:min="0"
|
|
|
|
:max="360"
|
|
|
|
size="small"
|
|
|
|
placeholder="角度"
|
|
|
|
></n-input-number>
|
|
|
|
</setting-item>
|
|
|
|
</setting-item-box>
|
|
|
|
|
|
|
|
<!-- 倾斜 -->
|
|
|
|
<setting-item-box v-if="!isCanvas" name="倾斜°">
|
|
|
|
<setting-item name="X轴 - 倾斜">
|
|
|
|
<n-input-number
|
|
|
|
v-model:value="chartStyles.skewX"
|
|
|
|
:min="0"
|
|
|
|
:max="360"
|
|
|
|
size="small"
|
|
|
|
placeholder="角度"
|
|
|
|
></n-input-number>
|
|
|
|
</setting-item>
|
|
|
|
<setting-item name="Y轴 - 倾斜">
|
|
|
|
<n-input-number
|
|
|
|
v-model:value="chartStyles.skewY"
|
|
|
|
:min="0"
|
|
|
|
:max="360"
|
|
|
|
size="small"
|
|
|
|
placeholder="角度"
|
|
|
|
></n-input-number>
|
|
|
|
</setting-item>
|
|
|
|
</setting-item-box>
|
2022-03-14 16:07:35 +08:00
|
|
|
</collapse-item>
|
2022-03-09 17:37:32 +08:00
|
|
|
</template>
|
|
|
|
|
|
|
|
<script setup lang="ts">
|
|
|
|
import { PropType } from 'vue'
|
|
|
|
import { PickCreateComponentType } from '@/packages/index.d'
|
|
|
|
import {
|
|
|
|
SettingItemBox,
|
2022-04-19 22:07:54 +08:00
|
|
|
SettingItem,
|
|
|
|
CollapseItem,
|
2022-04-14 10:05:57 +08:00
|
|
|
} from '@/components/Pages/ChartItemSetting'
|
2022-03-09 17:37:32 +08:00
|
|
|
|
|
|
|
const props = defineProps({
|
2022-05-03 16:24:31 +08:00
|
|
|
isCanvas: {
|
|
|
|
type: Boolean,
|
|
|
|
default: false
|
|
|
|
},
|
2022-03-09 17:37:32 +08:00
|
|
|
chartStyles: {
|
2022-04-26 11:37:25 +08:00
|
|
|
type: Object as PropType<Omit<PickCreateComponentType<'styles'>, 'animations'>>,
|
2022-04-19 22:07:54 +08:00
|
|
|
required: true,
|
|
|
|
},
|
2022-03-09 17:37:32 +08:00
|
|
|
})
|
2022-04-19 22:07:54 +08:00
|
|
|
|
|
|
|
// 百分比格式化persen
|
|
|
|
const sliderFormatTooltip = (v: string) => {
|
|
|
|
// @ts-ignore
|
|
|
|
return `${(parseFloat(v) * 100).toFixed(0)}%`
|
|
|
|
}
|
|
|
|
// 角度格式化
|
|
|
|
const degFormatTooltip = (v: string) => {
|
|
|
|
// @ts-ignore
|
|
|
|
return `${v}deg`
|
|
|
|
}
|
2022-03-09 17:37:32 +08:00
|
|
|
</script>
|
|
|
|
|
|
|
|
<style lang="scss" scoped></style>
|