StylesSetting.vue 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. <template>
  2. <collapse-item name="通用">
  3. <setting-item-box name="色相" :alone="true">
  4. <setting-item :name="`值:${chartStyles.hueRotate}deg`">
  5. <!-- 透明度 -->
  6. <n-slider
  7. v-model:value="chartStyles.hueRotate"
  8. :step="3"
  9. :min="0"
  10. :max="360"
  11. :format-tooltip="degFormatTooltip"
  12. ></n-slider>
  13. </setting-item>
  14. </setting-item-box>
  15. <setting-item-box name="饱和度" :alone="true">
  16. <setting-item
  17. :name="`值:${(parseFloat(chartStyles.saturate) * 100).toFixed(0)}%`"
  18. >
  19. <!-- 透明度 -->
  20. <n-slider
  21. v-model:value="chartStyles.saturate"
  22. :step="0.1"
  23. :min="0"
  24. :max="2"
  25. :format-tooltip="sliderFormatTooltip"
  26. ></n-slider>
  27. </setting-item>
  28. </setting-item-box>
  29. <setting-item-box name="对比度" :alone="true">
  30. <setting-item
  31. :name="`值:${(parseFloat(chartStyles.contrast) * 100).toFixed(0)}%`"
  32. >
  33. <!-- 透明度 -->
  34. <n-slider
  35. v-model:value="chartStyles.contrast"
  36. :step="0.1"
  37. :min="0"
  38. :max="2"
  39. :format-tooltip="sliderFormatTooltip"
  40. ></n-slider>
  41. </setting-item>
  42. </setting-item-box>
  43. <setting-item-box name="亮度" :alone="true">
  44. <setting-item
  45. :name="`值:${(parseFloat(chartStyles.brightness) * 100).toFixed(0)}%`"
  46. >
  47. <!-- 透明度 -->
  48. <n-slider
  49. v-model:value="chartStyles.brightness"
  50. :step="0.1"
  51. :min="0"
  52. :max="2"
  53. :format-tooltip="sliderFormatTooltip"
  54. ></n-slider>
  55. </setting-item>
  56. </setting-item-box>
  57. <setting-item-box name="透明度" :alone="true">
  58. <setting-item
  59. :name="`值:${(parseFloat(chartStyles.opacity) * 100).toFixed(0)}%`"
  60. >
  61. <!-- 透明度 -->
  62. <n-slider
  63. v-model:value="chartStyles.opacity"
  64. :step="0.1"
  65. :min="0"
  66. :max="1"
  67. :format-tooltip="sliderFormatTooltip"
  68. ></n-slider>
  69. </setting-item>
  70. </setting-item-box>
  71. </collapse-item>
  72. </template>
  73. <script setup lang="ts">
  74. import { PropType } from 'vue'
  75. import { PickCreateComponentType } from '@/packages/index.d'
  76. import {
  77. SettingItemBox,
  78. SettingItem,
  79. CollapseItem,
  80. } from '@/components/Pages/ChartItemSetting'
  81. const props = defineProps({
  82. chartStyles: {
  83. type: Object as PropType<PickCreateComponentType<'styles'>>,
  84. required: true,
  85. },
  86. })
  87. // 百分比格式化persen
  88. const sliderFormatTooltip = (v: string) => {
  89. // @ts-ignore
  90. return `${(parseFloat(v) * 100).toFixed(0)}%`
  91. }
  92. // 角度格式化
  93. const degFormatTooltip = (v: string) => {
  94. // @ts-ignore
  95. return `${v}deg`
  96. }
  97. </script>
  98. <style lang="scss" scoped></style>