Commit 073083f3d3724c1f68058db5c17a626d250486f8
Merge branch 'ft' into 'main'
feat(external/Componse): 组合新增标题 See merge request yunteng/thingskit-view!13
Showing
24 changed files
with
468 additions
and
358 deletions
src/assets/images/chart/charts/button.png
0 → 100644
13.1 KB
41.3 KB
15.9 KB
src/assets/images/chart/charts/dateTime.png
0 → 100644
13.6 KB
@@ -15,5 +15,5 @@ export const LeftCenterRightHeadConfig: ConfigType = { | @@ -15,5 +15,5 @@ export const LeftCenterRightHeadConfig: ConfigType = { | ||
15 | categoryName: ChatCategoryEnumName.HEADCOMBINATION, | 15 | categoryName: ChatCategoryEnumName.HEADCOMBINATION, |
16 | package: EPackagesCategoryEnum.COMPOSES, | 16 | package: EPackagesCategoryEnum.COMPOSES, |
17 | chartFrame: ChartFrameEnum.COMMON, | 17 | chartFrame: ChartFrameEnum.COMMON, |
18 | - image: 'left_center_rightHead.png', | 18 | + image: 'customHead1.png', |
19 | } | 19 | } |
1 | <template> | 1 | <template> |
2 | <div class="go-animat"> | 2 | <div class="go-animat"> |
3 | <div class="go-animat-item" :style="{ marginLeft: animat.x + 'px', marginTop: animat.y + 'px' }"> | 3 | <div class="go-animat-item" :style="{ marginLeft: animat.x + 'px', marginTop: animat.y + 'px' }"> |
4 | - <svg :width="animat.w + 'px'" :height="animat.h + 'px'"> | 4 | + <svg :width="w" :height="h"> |
5 | <polyline | 5 | <polyline |
6 | fill="transparent" | 6 | fill="transparent" |
7 | stroke-width="3" | 7 | stroke-width="3" |
8 | - :points="`0,20 ${animat.w / 5.555555555555556},20 ${animat.w / 5},40 ${animat.w / 4},40 ${ | ||
9 | - animat.w / 3.703703703703704 | ||
10 | - },60 ${animat.w / 1.388888888888889},60 ${animat.w / 1.333333333333333},40 ${animat.w / 1.25},40 ${ | ||
11 | - animat.w / 1.219512195121951 | ||
12 | - },20 ${animat.w},20`" | 8 | + :points="`0,20 ${w / 5.555555555555556},20 ${w / 5},40 ${w / 4},40 ${ |
9 | + w / 3.703703703703704 | ||
10 | + },60 ${w / 1.388888888888889},60 ${w / 1.333333333333333},40 ${w / 1.25},40 ${ | ||
11 | + w / 1.219512195121951 | ||
12 | + },20 ${w},20`" | ||
13 | :stroke="animat.colors[0]" | 13 | :stroke="animat.colors[0]" |
14 | > | 14 | > |
15 | <animate | 15 | <animate |
@@ -28,7 +28,7 @@ | @@ -28,7 +28,7 @@ | ||
28 | <polyline | 28 | <polyline |
29 | fill="transparent" | 29 | fill="transparent" |
30 | stroke-width="2" | 30 | stroke-width="2" |
31 | - :points="`${animat.w / 3.333333333333333},80 ${animat.w / 1.428571428571429},80`" | 31 | + :points="`${w / 3.333333333333333},80 ${w / 1.428571428571429},80`" |
32 | :stroke="animat.colors[1]" | 32 | :stroke="animat.colors[1]" |
33 | > | 33 | > |
34 | <animate | 34 | <animate |
@@ -70,6 +70,8 @@ props.chartConfig.attr.h = 300 | @@ -70,6 +70,8 @@ props.chartConfig.attr.h = 300 | ||
70 | props.chartConfig.attr.x = 0 | 70 | props.chartConfig.attr.x = 0 |
71 | props.chartConfig.attr.y = 0 | 71 | props.chartConfig.attr.y = 0 |
72 | 72 | ||
73 | +const { w, h } = toRefs(props.chartConfig.attr) | ||
74 | + | ||
73 | const { animat } = toRefs(props.chartConfig.option) | 75 | const { animat } = toRefs(props.chartConfig.option) |
74 | </script> | 76 | </script> |
75 | 77 |
@@ -13,5 +13,5 @@ export const LeftCenterRightHeadCommonConfig: ConfigType = { | @@ -13,5 +13,5 @@ export const LeftCenterRightHeadCommonConfig: ConfigType = { | ||
13 | categoryName: ChatCategoryEnumName.HEADCOMBINATION, | 13 | categoryName: ChatCategoryEnumName.HEADCOMBINATION, |
14 | package: EPackagesCategoryEnum.COMPOSES, | 14 | package: EPackagesCategoryEnum.COMPOSES, |
15 | chartFrame: ChartFrameEnum.COMMON, | 15 | chartFrame: ChartFrameEnum.COMMON, |
16 | - image: 'left_center_rightHead.png', | 16 | + image: 'customHead2.png', |
17 | } | 17 | } |
1 | +import { PublicConfigClass } from '@/packages/public' | ||
2 | +import { CreateComponentType } from '@/packages/index.d' | ||
3 | +import { ButtonConfig } from './index' | ||
4 | +import cloneDeep from 'lodash/cloneDeep' | ||
5 | + | ||
6 | +export const option = { | ||
7 | + dataset: '默认', | ||
8 | + /** | ||
9 | + * Naive UI button部分属性 | ||
10 | + */ | ||
11 | + attribute:{ | ||
12 | + //尺寸 | ||
13 | + size:'medium', | ||
14 | + //透明 | ||
15 | + ghost:false, | ||
16 | + //加载 | ||
17 | + loading:false, | ||
18 | + //自定义颜色 | ||
19 | + color:'#ffffff', | ||
20 | + //文字背景 | ||
21 | + textColor:'black' | ||
22 | + } | ||
23 | +} | ||
24 | + | ||
25 | +export default class Config extends PublicConfigClass implements CreateComponentType { | ||
26 | + public key = ButtonConfig.key | ||
27 | + public chartConfig = cloneDeep(ButtonConfig) | ||
28 | + public option = cloneDeep(option) | ||
29 | +} |
1 | +<template> | ||
2 | + <CollapseItem name="按钮配置" :expanded="true"> | ||
3 | + <SettingItemBox name="信息"> | ||
4 | + <SettingItem name="文字"> | ||
5 | + <n-input size="small" v-model:value="optionData.dataset"></n-input> | ||
6 | + </SettingItem> | ||
7 | + <SettingItem name="文字颜色"> | ||
8 | + <n-color-picker size="small" :modes="['hex']" v-model:value="optionData.attribute.textColor"></n-color-picker> | ||
9 | + </SettingItem> | ||
10 | + <SettingItem> | ||
11 | + <n-button size="small" @click="optionData.attribute.textColor ='black'"> 恢复默认 </n-button> | ||
12 | + </SettingItem> | ||
13 | + </SettingItemBox> | ||
14 | + <SettingItemBox name="属性"> | ||
15 | + <SettingItem name="颜色"> | ||
16 | + <n-color-picker size="small" :modes="['hex']" v-model:value="optionData.attribute.color"></n-color-picker> | ||
17 | + </SettingItem> | ||
18 | + <SettingItem> | ||
19 | + <n-button size="small" @click="optionData.attribute.color ='#ffffff'"> 恢复默认 </n-button> | ||
20 | + </SettingItem> | ||
21 | + <SettingItem name="是否透明"> | ||
22 | + <n-switch v-model:value="optionData.attribute.ghost" /> | ||
23 | + </SettingItem> | ||
24 | + <SettingItem name="是否加载"> | ||
25 | + <n-switch v-model:value="optionData.attribute.loading" /> | ||
26 | + </SettingItem> | ||
27 | + </SettingItemBox> | ||
28 | + </CollapseItem> | ||
29 | +</template> | ||
30 | + | ||
31 | +<script setup lang="ts"> | ||
32 | +import { PropType } from 'vue' | ||
33 | +import { option } from './config' | ||
34 | +import { CollapseItem, SettingItemBox, SettingItem } from '@/components/Pages/ChartItemSetting' | ||
35 | + | ||
36 | +defineProps({ | ||
37 | + optionData: { | ||
38 | + type: Object as PropType<typeof option>, | ||
39 | + required: true | ||
40 | + } | ||
41 | +}) | ||
42 | +</script> |
src/packages/components/external/Composes/Mores/Button/index.ts
renamed from
src/packages/components/external/Composes/Mores/WordCloud/index.ts
1 | -import { useWidgetKey } from '@/packages/external/useWidgetKey' | ||
2 | -import { ConfigType, ChartFrameEnum } from '@/packages/index.d' | ||
3 | -import { EPackagesCategoryEnum } from '../../../types' | 1 | +import { ChartFrameEnum, ConfigType } from '@/packages/index.d' |
2 | +import { EPackagesCategoryEnum } from '@/packages/components/external/types' | ||
4 | import { ChatCategoryEnum, ChatCategoryEnumName } from '../../index.d' | 3 | import { ChatCategoryEnum, ChatCategoryEnumName } from '../../index.d' |
4 | +import { useWidgetKey } from '@/packages/external/useWidgetKey' | ||
5 | 5 | ||
6 | -const { key, conKey, chartKey } = useWidgetKey('WordCloud') | ||
7 | -export const WordCloudConfig: ConfigType = { | ||
8 | - key, | ||
9 | - chartKey, | ||
10 | - conKey, | ||
11 | - title: '词云', | ||
12 | - category: ChatCategoryEnum.MORE, | ||
13 | - categoryName: ChatCategoryEnumName.MORE, | ||
14 | - package: EPackagesCategoryEnum.COMPOSES, | ||
15 | - chartFrame: ChartFrameEnum.COMMON, | ||
16 | - image: 'words_cloud.png' | 6 | +const { key, chartKey, conKey } = useWidgetKey('Button') |
7 | +export const ButtonConfig: ConfigType = { | ||
8 | + key, | ||
9 | + chartKey, | ||
10 | + conKey, | ||
11 | + title: '按钮', | ||
12 | + category: ChatCategoryEnum.MORE, | ||
13 | + categoryName: ChatCategoryEnumName.MORE, | ||
14 | + package: EPackagesCategoryEnum.COMPOSES, | ||
15 | + chartFrame: ChartFrameEnum.NAIVE_UI, | ||
16 | + image: 'button.png', | ||
17 | } | 17 | } |
1 | +<template> | ||
2 | + <div class="go-content-box"> | ||
3 | + <n-button class="content" @click="handleClick" v-bind={...attribute}>{{dataset}}</n-button> | ||
4 | + </div> | ||
5 | +</template> | ||
6 | +<script setup lang="ts"> | ||
7 | +import { PropType, toRefs } from 'vue' | ||
8 | +import { CreateComponentType } from '@/packages/index.d' | ||
9 | +import {option as configOption} from './config' | ||
10 | + | ||
11 | + | ||
12 | +const props = defineProps({ | ||
13 | + chartConfig: { | ||
14 | + type: Object as PropType<CreateComponentType>, | ||
15 | + required: true | ||
16 | + } | ||
17 | +}) | ||
18 | + | ||
19 | +//修改默认宽高距离位置 | ||
20 | +props.chartConfig.attr.w = 100 | ||
21 | +props.chartConfig.attr.h = 50 | ||
22 | +props.chartConfig.attr.x = 200 | ||
23 | +props.chartConfig.attr.y = 200 | ||
24 | + | ||
25 | +const { dataset,attribute }= toRefs(props.chartConfig.option) as unknown as typeof configOption | ||
26 | + | ||
27 | +const { w, h } = toRefs(props.chartConfig.attr) | ||
28 | + | ||
29 | +const handleClick=()=>{ | ||
30 | + attribute.loading=true | ||
31 | + window['$message'].success('您点击了按钮') | ||
32 | + attribute.loading=false | ||
33 | +} | ||
34 | + | ||
35 | + | ||
36 | + | ||
37 | +</script> | ||
38 | + | ||
39 | +<style lang="scss" scoped> | ||
40 | +.go-content-box{ | ||
41 | + display: flex; | ||
42 | + align-items: center; | ||
43 | + justify-content: center; | ||
44 | + .content{ | ||
45 | + width:v-bind('w + "px"'); | ||
46 | + height:v-bind('h + "px"'); | ||
47 | + } | ||
48 | +} | ||
49 | +</style> |
1 | +import { PublicConfigClass } from '@/packages/public' | ||
2 | +import { CreateComponentType } from '@/packages/index.d' | ||
3 | +import { DateTimeConfig } from './index' | ||
4 | +import cloneDeep from 'lodash/cloneDeep' | ||
5 | + | ||
6 | +export const option = { | ||
7 | + /** | ||
8 | + * Naive UI Date Picker部分属性 | ||
9 | + */ | ||
10 | + dataset:[Date.now(), Date.now()], | ||
11 | + attribute:{ | ||
12 | + //是否支持清除 | ||
13 | + clearable:false, | ||
14 | + //是否禁用 | ||
15 | + disabled:false, | ||
16 | + //尺寸 | ||
17 | + size:'medium' | ||
18 | + } | ||
19 | +} | ||
20 | + | ||
21 | +export default class Config extends PublicConfigClass implements CreateComponentType { | ||
22 | + public key = DateTimeConfig.key | ||
23 | + public chartConfig = cloneDeep(DateTimeConfig) | ||
24 | + public option = cloneDeep(option) | ||
25 | +} |
1 | +<template> | ||
2 | + <CollapseItem name="日期时间配置" :expanded="true"> | ||
3 | + <SettingItemBox name="属性"> | ||
4 | + <SettingItem name="是否支持清除"> | ||
5 | + <n-switch v-model:value="optionData.attribute.clearable" /> | ||
6 | + </SettingItem> | ||
7 | + <SettingItem name="是否禁用"> | ||
8 | + <n-switch v-model:value="optionData.attribute.disabled" /> | ||
9 | + </SettingItem> | ||
10 | + <SettingItem name="尺寸"> | ||
11 | + <n-select v-model:value="optionData.attribute.size" :options="options" /> | ||
12 | + </SettingItem> | ||
13 | + </SettingItemBox> | ||
14 | + </CollapseItem> | ||
15 | +</template> | ||
16 | + | ||
17 | +<script setup lang="ts"> | ||
18 | +import { PropType } from 'vue' | ||
19 | +import { option } from './config' | ||
20 | +import { CollapseItem, SettingItemBox, SettingItem } from '@/components/Pages/ChartItemSetting' | ||
21 | + | ||
22 | +defineProps({ | ||
23 | + optionData: { | ||
24 | + type: Object as PropType<typeof option>, | ||
25 | + required: true | ||
26 | + } | ||
27 | +}) | ||
28 | + | ||
29 | +const options=[ | ||
30 | + { | ||
31 | + label: "小型", | ||
32 | + value: 'small', | ||
33 | + }, | ||
34 | + { | ||
35 | + label: '中等', | ||
36 | + value: 'medium' | ||
37 | + }, | ||
38 | + { | ||
39 | + label: '大型', | ||
40 | + value: 'large' | ||
41 | + }, | ||
42 | +] | ||
43 | +</script> |
1 | +import { ChartFrameEnum, ConfigType } from '@/packages/index.d' | ||
2 | +import { EPackagesCategoryEnum } from '@/packages/components/external/types' | ||
3 | +import { ChatCategoryEnum, ChatCategoryEnumName } from '../../index.d' | ||
4 | +import { useWidgetKey } from '@/packages/external/useWidgetKey' | ||
5 | + | ||
6 | +const { key, chartKey, conKey } = useWidgetKey('DateTime') | ||
7 | +export const DateTimeConfig: ConfigType = { | ||
8 | + key, | ||
9 | + chartKey, | ||
10 | + conKey, | ||
11 | + title: '日期时间', | ||
12 | + category: ChatCategoryEnum.MORE, | ||
13 | + categoryName: ChatCategoryEnumName.MORE, | ||
14 | + package: EPackagesCategoryEnum.COMPOSES, | ||
15 | + chartFrame: ChartFrameEnum.NAIVE_UI, | ||
16 | + image: 'dateTime.png', | ||
17 | +} |
1 | +<template> | ||
2 | + <div class="go-content-box" > | ||
3 | + <n-date-picker class="content" @confirm="handleOnConfirm" v-bind={...attribute} v-model:value="dataset" type="datetimerange" /> | ||
4 | + </div> | ||
5 | +</template> | ||
6 | +<script setup lang="ts"> | ||
7 | +import { PropType, toRefs } from 'vue' | ||
8 | +import { CreateComponentType } from '@/packages/index.d' | ||
9 | + | ||
10 | +const props = defineProps({ | ||
11 | + chartConfig: { | ||
12 | + type: Object as PropType<CreateComponentType>, | ||
13 | + required: true | ||
14 | + } | ||
15 | +}) | ||
16 | + | ||
17 | +//修改默认宽高距离位置 | ||
18 | +props.chartConfig.attr.w = 600 | ||
19 | +props.chartConfig.attr.h = 100 | ||
20 | +props.chartConfig.attr.x = 200 | ||
21 | +props.chartConfig.attr.y = 200 | ||
22 | + | ||
23 | +const { dataset,attribute }= toRefs(props.chartConfig.option) | ||
24 | + | ||
25 | +const { w, h } = toRefs(props.chartConfig.attr) | ||
26 | + | ||
27 | +const handleOnConfirm=(values:[number, number])=>{ | ||
28 | + window['$message'].success(`您选中了时间段[${values}]`) | ||
29 | +} | ||
30 | + | ||
31 | + | ||
32 | + | ||
33 | +</script> | ||
34 | + | ||
35 | +<style lang="scss" scoped> | ||
36 | +.go-content-box { | ||
37 | + display: flex; | ||
38 | + align-items: center; | ||
39 | + justify-content: center; | ||
40 | + .content{ | ||
41 | + width:v-bind('w + "px"'); | ||
42 | + height:v-bind('h + "px"'); | ||
43 | + } | ||
44 | +} | ||
45 | +</style> |
1 | +import { PublicConfigClass } from '@/packages/public' | ||
2 | +import { CreateComponentType } from '@/packages/index.d' | ||
3 | +import { TitleConfig } from './index' | ||
4 | +import cloneDeep from 'lodash/cloneDeep' | ||
5 | + | ||
6 | +export const option = { | ||
7 | + dataset:'我是标题', | ||
8 | + attribute:{ | ||
9 | + titleColor:'#fff', | ||
10 | + titleSize:'16', | ||
11 | + svg_7:'blue', | ||
12 | + svg_8:'red', | ||
13 | + svg_16:'red', | ||
14 | + svg_14:'red', | ||
15 | + svg_21:'red', | ||
16 | + svg_7_opacity:1, | ||
17 | + svg_8_opacity:1, | ||
18 | + svg_16_opacity:1, | ||
19 | + svg_14_opacity:1, | ||
20 | + linearGradient:{ | ||
21 | + stop_color1:'#447799', | ||
22 | + stop_color2:'#224488', | ||
23 | + svg_21_opacity1:1, | ||
24 | + svg_21_opacity2:1, | ||
25 | + } | ||
26 | + } | ||
27 | +} | ||
28 | + | ||
29 | +export default class Config extends PublicConfigClass implements CreateComponentType { | ||
30 | + public key = TitleConfig.key | ||
31 | + public chartConfig = cloneDeep(TitleConfig) | ||
32 | + public option = cloneDeep(option) | ||
33 | +} |
1 | +<template> | ||
2 | + <CollapseItem name="配置" :expanded="true"> | ||
3 | + <SettingItemBox name="文字"> | ||
4 | + <SettingItem name="内容"> | ||
5 | + <n-input size="small" v-model:value="optionData.dataset"></n-input> | ||
6 | + </SettingItem> | ||
7 | + <SettingItem name="颜色"> | ||
8 | + <n-color-picker size="small" :modes="['hex']" v-model:value="optionData.attribute.titleColor"></n-color-picker> | ||
9 | + </SettingItem> | ||
10 | + <SettingItem> | ||
11 | + <n-button size="small" @click="optionData.attribute.titleColor ='#fff'"> 恢复默认 </n-button> | ||
12 | + </SettingItem> | ||
13 | + <SettingItem name="大小"> | ||
14 | + <n-input-number v-model:value="optionData.attribute.titleSize" size="small" placeholder="大小"></n-input-number> | ||
15 | + </SettingItem> | ||
16 | + </SettingItemBox> | ||
17 | + <SettingItemBox name="左边装饰"> | ||
18 | + <SettingItem name="颜色"> | ||
19 | + <n-color-picker size="small" :modes="['hex']" v-model:value="optionData.attribute.svg_16"></n-color-picker> | ||
20 | + </SettingItem> | ||
21 | + <SettingItem name="透明度"> | ||
22 | + <n-input-number :min="0" :max="1" v-model:value="optionData.attribute.svg_16_opacity" size="small" placeholder="透明度1"></n-input-number> | ||
23 | + </SettingItem> | ||
24 | + </SettingItemBox> | ||
25 | + <SettingItemBox name="三角装饰"> | ||
26 | + <SettingItem name="颜色"> | ||
27 | + <n-color-picker size="small" :modes="['hex']" v-model:value="optionData.attribute.svg_14"></n-color-picker> | ||
28 | + </SettingItem> | ||
29 | + <SettingItem name="透明度"> | ||
30 | + <n-input-number :min="0" :max="1" v-model:value="optionData.attribute.svg_14_opacity" size="small" placeholder="透明度1"></n-input-number> | ||
31 | + </SettingItem> | ||
32 | + </SettingItemBox> | ||
33 | + <SettingItemBox name="右边装饰"> | ||
34 | + <SettingItem name="颜色1"> | ||
35 | + <n-color-picker size="small" :modes="['hex']" v-model:value="optionData.attribute.svg_7"></n-color-picker> | ||
36 | + </SettingItem> | ||
37 | + <SettingItem name="颜色2"> | ||
38 | + <n-color-picker size="small" :modes="['hex']" v-model:value="optionData.attribute.svg_8"></n-color-picker> | ||
39 | + </SettingItem> | ||
40 | + <SettingItem name="透明度1"> | ||
41 | + <n-input-number :min="0" :max="1" v-model:value="optionData.attribute.svg_7_opacity" size="small" placeholder="透明度1"></n-input-number> | ||
42 | + </SettingItem> | ||
43 | + <SettingItem name="透明度2"> | ||
44 | + <n-input-number :min="0" :max="1" v-model:value="optionData.attribute.svg_8_opacity" size="small" placeholder="透明度2"></n-input-number> | ||
45 | + </SettingItem> | ||
46 | + </SettingItemBox> | ||
47 | + <SettingItemBox name="装饰渐变"> | ||
48 | + <SettingItem name="渐变颜色1"> | ||
49 | + <n-color-picker size="small" :modes="['hex']" v-model:value="optionData.attribute.linearGradient.stop_color1"></n-color-picker> | ||
50 | + </SettingItem> | ||
51 | + <SettingItem name="渐变颜色2"> | ||
52 | + <n-color-picker size="small" :modes="['hex']" v-model:value="optionData.attribute.linearGradient.stop_color2"></n-color-picker> | ||
53 | + </SettingItem> | ||
54 | + <SettingItem name="透明度1"> | ||
55 | + <n-input-number :min="0" :max="1" v-model:value="optionData.attribute.linearGradient.svg_21_opacity1" size="small" placeholder="透明度1"></n-input-number> | ||
56 | + </SettingItem> | ||
57 | + <SettingItem name="透明度2"> | ||
58 | + <n-input-number :min="0" :max="1" v-model:value="optionData.attribute.linearGradient.svg_21_opacity2" size="small" placeholder="透明度1"></n-input-number> | ||
59 | + </SettingItem> | ||
60 | + </SettingItemBox> | ||
61 | + </CollapseItem> | ||
62 | +</template> | ||
63 | + | ||
64 | +<script setup lang="ts"> | ||
65 | +import { PropType } from 'vue' | ||
66 | +import { option } from './config' | ||
67 | +import { CollapseItem, SettingItemBox, SettingItem } from '@/components/Pages/ChartItemSetting' | ||
68 | + | ||
69 | +defineProps({ | ||
70 | + optionData: { | ||
71 | + type: Object as PropType<typeof option>, | ||
72 | + required: true | ||
73 | + } | ||
74 | +}) | ||
75 | +</script> |
1 | +import { ChartFrameEnum, ConfigType } from '@/packages/index.d' | ||
2 | +import { EPackagesCategoryEnum } from '@/packages/components/external/types' | ||
3 | +import { ChatCategoryEnum, ChatCategoryEnumName } from '../../index.d' | ||
4 | +import { useWidgetKey } from '@/packages/external/useWidgetKey' | ||
5 | + | ||
6 | +const { key, chartKey, conKey } = useWidgetKey('Title') | ||
7 | +export const TitleConfig: ConfigType = { | ||
8 | + key, | ||
9 | + chartKey, | ||
10 | + conKey, | ||
11 | + title: '标题', | ||
12 | + category: ChatCategoryEnum.MORE, | ||
13 | + categoryName: ChatCategoryEnumName.MORE, | ||
14 | + package: EPackagesCategoryEnum.COMPOSES, | ||
15 | + chartFrame: ChartFrameEnum.NAIVE_UI, | ||
16 | + image: 'dateTime.png', | ||
17 | +} |
1 | +<template> | ||
2 | + <div class="go-content-box" > | ||
3 | +<svg xmlns="http://www.w3.org/2000/svg" width="782" height="600"> | ||
4 | + <defs> | ||
5 | + <defs> | ||
6 | + <linearGradient id="my-cool-gradient" x1="0%" y1="0%" x2="100%" y2="0%"> | ||
7 | + <stop offset="0%" :style="{stopColor:attribute.linearGradient.stop_color1,stopOpacity:attribute.linearGradient.svg_21_opacity1 }"/> | ||
8 | + <stop offset="100%" :style="{stopColor:attribute.linearGradient.stop_color2,stopOpacity:attribute.linearGradient.svg_21_opacity2}"/> | ||
9 | + </linearGradient> | ||
10 | + </defs> | ||
11 | + </defs> | ||
12 | + <g> | ||
13 | + <rect stroke="#000" id="svg_6" height="0" width="2" y="189.5" x="523" fill="#fff"/> | ||
14 | + <path :opacity="attribute.svg_7_opacity" transform="rotate(-137 422.766 284.992)" stroke="#000" id="svg_7" d="m412.87465,287.39672l3.95636,-4.80932l15.82545,0l-3.95636,4.80932l-15.82545,0z" :fill="attribute.svg_7"/> | ||
15 | + <path :opacity="attribute.svg_8_opacity" transform="rotate(44 444.883 283.871)" stroke="#000" id="svg_8" d="m435.52609,286.39738l3.74294,-5.0534l14.97175,0l-3.74294,5.0534l-14.97175,0z" :fill="attribute.svg_8"/> | ||
16 | + <rect id="svg_10" height="0" width="1" y="242.5" x="235" stroke="#000" fill="#fff"/> | ||
17 | + <text xml:space="preserve" text-anchor="start" font-family="Noto Sans JP" :font-size="attribute.titleSize" stroke-width="0" id="svg_12" y="290.5" x="214" stroke="#000" :fill="attribute.titleColor">{{ dataset }}</text> | ||
18 | + <path :opacity="attribute.svg_14_opacity" transform="rotate(90 198.922 284.168)" stroke="#000" id="svg_14" d="m193.42189,288.16843l5.50043,-8.00001l5.50043,8.00001l-11.00085,0z" stroke-width="0" :fill="attribute.svg_14"/> | ||
19 | + <path id="svg_15" d="m259.7,311.34437l0.5,-1.00001l0.5,1.00001l-1.00001,0z" stroke-width="0" stroke="#000" fill="#000000"/> | ||
20 | + <rect stroke="#000" id="svg_16" height="33" width="4" y="269" x="181" :fill="attribute.svg_16" :opacity="attribute.svg_16_opacity"/> | ||
21 | + <rect id="svg_17" height="0" width="2" y="368.5" x="187" stroke="#000" fill="#6D97AB"/> | ||
22 | + <rect id="svg_18" height="13" width="0" y="290.5" x="167" stroke="#000" fill="#6D97AB"/> | ||
23 | + <rect id="svg_20" height="0" width="1" y="193.5" x="281" stroke="#000" fill="#6D97AB"/> | ||
24 | + <path stroke="#000" id="svg_21" d="m184,269l299.00001,0l0,33l-299.00001,0l0,-33z" opacity="0.35" fill="url(#my-cool-gradient)"/> | ||
25 | + </g> | ||
26 | + | ||
27 | +</svg> | ||
28 | + </div> | ||
29 | +</template> | ||
30 | +<script setup lang="ts"> | ||
31 | +import { PropType, toRefs } from 'vue' | ||
32 | +import { CreateComponentType } from '@/packages/index.d' | ||
33 | + | ||
34 | +const props = defineProps({ | ||
35 | + chartConfig: { | ||
36 | + type: Object as PropType<CreateComponentType>, | ||
37 | + required: true | ||
38 | + } | ||
39 | +}) | ||
40 | + | ||
41 | +//修改默认宽高距离位置 | ||
42 | +props.chartConfig.attr.w = 600 | ||
43 | +props.chartConfig.attr.h = 100 | ||
44 | +props.chartConfig.attr.x = 200 | ||
45 | +props.chartConfig.attr.y = 200 | ||
46 | + | ||
47 | +const { dataset,attribute }= toRefs(props.chartConfig.option) | ||
48 | + | ||
49 | +const { w, h } = toRefs(props.chartConfig.attr) | ||
50 | + | ||
51 | + | ||
52 | +</script> | ||
53 | + | ||
54 | +<style lang="scss" scoped> | ||
55 | +.go-content-box { | ||
56 | + display: flex; | ||
57 | + align-items: center; | ||
58 | + justify-content: center; | ||
59 | + .content{ | ||
60 | + width:v-bind('w + "px"'); | ||
61 | + height:v-bind('h + "px"'); | ||
62 | + } | ||
63 | +} | ||
64 | +</style> |
src/packages/components/external/Composes/Mores/WordCloud/config.ts
deleted
100644 → 0
1 | -import { echartOptionProfixHandle, PublicConfigClass } from '@/packages/public' | ||
2 | -import { WordCloudConfig } from './index' | ||
3 | -import { CreateComponentType } from '@/packages/index.d' | ||
4 | -import cloneDeep from 'lodash/cloneDeep' | ||
5 | -import dataJson from './data.json' | ||
6 | - | ||
7 | -export const includes = [] | ||
8 | - | ||
9 | -export const ShapeEnumList = [ | ||
10 | - { label: '圆形', value: 'circle' }, | ||
11 | - { label: '心形', value: 'cardioid' }, | ||
12 | - { label: '钻石', value: 'diamond' }, | ||
13 | - { label: '右三角形', value: 'triangle-forward' }, | ||
14 | - { label: '三角形', value: 'triangle' }, | ||
15 | - { label: '五边形', value: 'pentagon' }, | ||
16 | - { label: '星星', value: 'star' } | ||
17 | -] | ||
18 | - | ||
19 | -export const option = { | ||
20 | - dataset: [...dataJson], | ||
21 | - tooltip: {}, | ||
22 | - series: [ | ||
23 | - { | ||
24 | - type: 'wordCloud', | ||
25 | - | ||
26 | - // “云”绘制的形状,可以是表示为回调函数,也可以是固定关键字。 | ||
27 | - // 可用值有:circle|cardioid|diamond|triangle-forward|triangle|pentagon|star | ||
28 | - shape: 'circle', | ||
29 | - | ||
30 | - // 白色区域将被排除在绘制文本之外的剪影图像。 | ||
31 | - // 随着云的形状生长,形状选项将继续应用。 | ||
32 | - // maskImage: maskImage, | ||
33 | - | ||
34 | - // Folllowing left/top/width/height/right/bottom are used for positioning the word cloud | ||
35 | - // Default to be put in the center and has 75% x 80% size. | ||
36 | - left: 'center', | ||
37 | - top: 'center', | ||
38 | - width: '70%', | ||
39 | - height: '80%', | ||
40 | - right: null, | ||
41 | - bottom: null, | ||
42 | - | ||
43 | - // 文本大小范围,默认 [12,60] | ||
44 | - sizeRange: [12, 60], | ||
45 | - | ||
46 | - // 文本旋转范围和程度的步骤。 文本将通过旋转步骤45在[-90,90]中随机旋转 | ||
47 | - rotationRange: [0, 0], | ||
48 | - rotationStep: 0, | ||
49 | - | ||
50 | - // size of the grid in pixels for marking the availability of the canvas | ||
51 | - // 网格大小越大,单词之间的差距就越大。 | ||
52 | - gridSize: 8, | ||
53 | - | ||
54 | - // 设置为true,以允许单词在画布之外部分地绘制。允许绘制大于画布的大小 | ||
55 | - drawOutOfBound: false, | ||
56 | - | ||
57 | - // If perform layout animation. | ||
58 | - // NOTE disable it will lead to UI blocking when there is lots of words. | ||
59 | - layoutAnimation: true, | ||
60 | - | ||
61 | - // Global text style | ||
62 | - textStyle: { | ||
63 | - fontFamily: 'sans-serif', | ||
64 | - fontWeight: 'bold' | ||
65 | - // 颜色可以是回调功能或颜色字符串 | ||
66 | - // color: function () { | ||
67 | - // // 随机颜色 | ||
68 | - // return ( | ||
69 | - // 'rgb(' + | ||
70 | - // [Math.round(Math.random() * 160), Math.round(Math.random() * 160), Math.round(Math.random() * 160)].join( | ||
71 | - // ',' | ||
72 | - // ) + | ||
73 | - // ')' | ||
74 | - // ) | ||
75 | - // } | ||
76 | - }, | ||
77 | - emphasis: { | ||
78 | - focus: 'self', | ||
79 | - | ||
80 | - textStyle: { | ||
81 | - shadowBlur: 10, | ||
82 | - shadowColor: '#333' | ||
83 | - } | ||
84 | - }, | ||
85 | - data: [...dataJson] | ||
86 | - } | ||
87 | - ] | ||
88 | -} | ||
89 | - | ||
90 | -export default class Config extends PublicConfigClass implements CreateComponentType { | ||
91 | - public key = WordCloudConfig.key | ||
92 | - public chartConfig = cloneDeep(WordCloudConfig) | ||
93 | - // 图表配置项 | ||
94 | - public option = echartOptionProfixHandle(option, includes) | ||
95 | -} |
src/packages/components/external/Composes/Mores/WordCloud/config.vue
deleted
100644 → 0
1 | -<template> | ||
2 | - <collapse-item name="词云" expanded> | ||
3 | - <setting-item-box name="形状"> | ||
4 | - <setting-item> | ||
5 | - <n-select v-model:value="optionData.series[0].shape" size="small" :options="ShapeEnumList" /> | ||
6 | - </setting-item> | ||
7 | - <setting-item> | ||
8 | - <n-checkbox v-model:checked="optionData.series[0].drawOutOfBound" size="small">允许出边</n-checkbox> | ||
9 | - </setting-item> | ||
10 | - </setting-item-box> | ||
11 | - | ||
12 | - <setting-item-box name="布局"> | ||
13 | - <setting-item name="宽度"> | ||
14 | - <n-slider | ||
15 | - v-model:value="series.width" | ||
16 | - :min="0" | ||
17 | - :max="100" | ||
18 | - :format-tooltip="sliderFormatTooltip" | ||
19 | - @update:value="updateWidth" | ||
20 | - ></n-slider> | ||
21 | - </setting-item> | ||
22 | - <setting-item name="高度"> | ||
23 | - <n-slider | ||
24 | - v-model:value="series.height" | ||
25 | - :min="0" | ||
26 | - :max="100" | ||
27 | - :format-tooltip="sliderFormatTooltip" | ||
28 | - @update:value="updateHeight" | ||
29 | - ></n-slider> | ||
30 | - </setting-item> | ||
31 | - </setting-item-box> | ||
32 | - | ||
33 | - <setting-item-box name="样式" alone> | ||
34 | - <setting-item name="字体区间(最小/最大字体)"> | ||
35 | - <n-slider v-model:value="optionData.series[0].sizeRange" range :step="1" :min="6" :max="100" /> | ||
36 | - </setting-item> | ||
37 | - <setting-item name="旋转角度"> | ||
38 | - <n-slider v-model:value="series.rotationStep" :step="15" :min="0" :max="45" @update:value="updateRotation" /> | ||
39 | - </setting-item> | ||
40 | - </setting-item-box> | ||
41 | - </collapse-item> | ||
42 | -</template> | ||
43 | - | ||
44 | -<script setup lang="ts"> | ||
45 | -import { PropType, computed } from 'vue' | ||
46 | -import { option, ShapeEnumList } from './config' | ||
47 | -// eslint-disable-next-line no-unused-vars | ||
48 | -import { CollapseItem, SettingItemBox, SettingItem } from '@/components/Pages/ChartItemSetting' | ||
49 | - | ||
50 | -const props = defineProps({ | ||
51 | - optionData: { | ||
52 | - type: Object as PropType<typeof option>, | ||
53 | - required: true | ||
54 | - } | ||
55 | -}) | ||
56 | - | ||
57 | -const series = computed(() => { | ||
58 | - const { width, height, rotationStep } = props.optionData.series[0] | ||
59 | - return { | ||
60 | - width: +width.replace('%', ''), | ||
61 | - height: +height.replace('%', ''), | ||
62 | - rotationStep | ||
63 | - } | ||
64 | -}) | ||
65 | - | ||
66 | -const sliderFormatTooltip = (v: number) => { | ||
67 | - return `${v}%` | ||
68 | -} | ||
69 | - | ||
70 | -const updateWidth = (value: number) => { | ||
71 | - props.optionData.series[0].width = `${value}%` | ||
72 | -} | ||
73 | - | ||
74 | -const updateHeight = (value: number) => { | ||
75 | - props.optionData.series[0].height = `${value}%` | ||
76 | -} | ||
77 | - | ||
78 | -const updateRotation = (value: number) => { | ||
79 | - props.optionData.series[0].rotationStep = value | ||
80 | - props.optionData.series[0].rotationRange = value === 0 ? [0, 0] : [-90, 90] | ||
81 | -} | ||
82 | -</script> |
src/packages/components/external/Composes/Mores/WordCloud/data.json
deleted
100644 → 0
1 | -[ | ||
2 | - { | ||
3 | - "name": "数据可视化", | ||
4 | - "value": 8000, | ||
5 | - "textStyle": { | ||
6 | - "color": "#78fbb2" | ||
7 | - }, | ||
8 | - "emphasis": { | ||
9 | - "textStyle": { | ||
10 | - "color": "red" | ||
11 | - } | ||
12 | - } | ||
13 | - }, | ||
14 | - { | ||
15 | - "name": "GO VIEW", | ||
16 | - "value": 6181 | ||
17 | - }, | ||
18 | - { | ||
19 | - "name": "低代码", | ||
20 | - "value": 4386 | ||
21 | - }, | ||
22 | - { | ||
23 | - "name": "Vue3", | ||
24 | - "value": 4055 | ||
25 | - }, | ||
26 | - { | ||
27 | - "name": "TypeScript4", | ||
28 | - "value": 2467 | ||
29 | - }, | ||
30 | - { | ||
31 | - "name": "Vite2", | ||
32 | - "value": 2244 | ||
33 | - }, | ||
34 | - { | ||
35 | - "name": "NaiveUI", | ||
36 | - "value": 1898 | ||
37 | - }, | ||
38 | - { | ||
39 | - "name": "ECharts5", | ||
40 | - "value": 1484 | ||
41 | - }, | ||
42 | - { | ||
43 | - "name": "Axios", | ||
44 | - "value": 1112 | ||
45 | - }, | ||
46 | - { | ||
47 | - "name": "Pinia2", | ||
48 | - "value": 965 | ||
49 | - }, | ||
50 | - { | ||
51 | - "name": "PlopJS", | ||
52 | - "value": 847 | ||
53 | - }, | ||
54 | - { | ||
55 | - "name": "sfc", | ||
56 | - "value": 582 | ||
57 | - }, | ||
58 | - { | ||
59 | - "name": "SCSS", | ||
60 | - "value": 555 | ||
61 | - }, | ||
62 | - { | ||
63 | - "name": "pnpm", | ||
64 | - "value": 550 | ||
65 | - }, | ||
66 | - { | ||
67 | - "name": "eslint", | ||
68 | - "value": 462 | ||
69 | - }, | ||
70 | - { | ||
71 | - "name": "json", | ||
72 | - "value": 366 | ||
73 | - }, | ||
74 | - { | ||
75 | - "name": "图表", | ||
76 | - "value": 360 | ||
77 | - }, | ||
78 | - { | ||
79 | - "name": "地图", | ||
80 | - "value": 282 | ||
81 | - }, | ||
82 | - { | ||
83 | - "name": "时钟", | ||
84 | - "value": 273 | ||
85 | - }, | ||
86 | - { | ||
87 | - "name": "标题", | ||
88 | - "value": 265 | ||
89 | - } | ||
90 | -] |
src/packages/components/external/Composes/Mores/WordCloud/index.vue
deleted
100644 → 0
1 | -<template> | ||
2 | - <v-chart ref="vChartRef" :theme="themeColor" :option="option" :manual-update="isPreview()" | ||
3 | - :update-options="{ replaceMerge: replaceMergeArr }" autoresize></v-chart> | ||
4 | -</template> | ||
5 | - | ||
6 | -<script setup lang="ts"> | ||
7 | -import { ref, computed, watch, PropType } from 'vue' | ||
8 | -import VChart from 'vue-echarts' | ||
9 | -import 'echarts-wordcloud' | ||
10 | -import { use } from 'echarts/core' | ||
11 | -import { CanvasRenderer } from 'echarts/renderers' | ||
12 | -import config, { includes } from './config' | ||
13 | -import { mergeTheme, setOption } from '@/packages/public/chart' | ||
14 | -import { useChartDataFetch } from '@/hooks' | ||
15 | -import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore' | ||
16 | -import { isPreview } from '@/utils' | ||
17 | -import { GridComponent, TooltipComponent } from 'echarts/components' | ||
18 | -import dataJson from './data.json' | ||
19 | - | ||
20 | -const props = defineProps({ | ||
21 | - themeSetting: { | ||
22 | - type: Object, | ||
23 | - required: true | ||
24 | - }, | ||
25 | - themeColor: { | ||
26 | - type: Object, | ||
27 | - required: true | ||
28 | - }, | ||
29 | - chartConfig: { | ||
30 | - type: Object as PropType<config>, | ||
31 | - required: true | ||
32 | - } | ||
33 | -}) | ||
34 | - | ||
35 | -use([CanvasRenderer, GridComponent, TooltipComponent]) | ||
36 | - | ||
37 | -const replaceMergeArr = ref<string[]>() | ||
38 | - | ||
39 | -const option = computed(() => { | ||
40 | - return mergeTheme(props.chartConfig.option, props.themeSetting, includes) | ||
41 | -}) | ||
42 | - | ||
43 | -const dataSetHandle = (dataset: typeof dataJson) => { | ||
44 | - try { | ||
45 | - dataset && (props.chartConfig.option.series[0].data = dataset) | ||
46 | - vChartRef.value && isPreview() && setOption(vChartRef.value, props.chartConfig.option) | ||
47 | - } catch (error) { | ||
48 | - console.log(error) | ||
49 | - } | ||
50 | -} | ||
51 | - | ||
52 | -// dataset 无法变更条数的补丁 | ||
53 | -watch( | ||
54 | - () => props.chartConfig.option.dataset, | ||
55 | - newData => { | ||
56 | - dataSetHandle(newData) | ||
57 | - }, | ||
58 | - { | ||
59 | - deep: false | ||
60 | - } | ||
61 | -) | ||
62 | - | ||
63 | -const { vChartRef } = useChartDataFetch(props.chartConfig, useChartEditStore, (newData: typeof dataJson) => { | ||
64 | - dataSetHandle(newData) | ||
65 | -}) | ||
66 | -</script> |
1 | -import { WordCloudConfig } from './WordCloud/index' | 1 | +import { ButtonConfig } from './Button/index' |
2 | +import { DateTimeConfig } from './DateTime/index' | ||
3 | +import { TitleConfig } from './Title/index' | ||
2 | 4 | ||
3 | -export default [WordCloudConfig] | 5 | +export default [ButtonConfig,DateTimeConfig,TitleConfig] |