diff --git a/package.json b/package.json index 743f703c..1efb5a16 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "skywalking-booster-ui", - "version": "9.4.0", + "version": "10.2.0", "private": true, "scripts": { "dev": "vite", diff --git a/src/components/Graph.vue b/src/components/Graph/Graph.vue similarity index 99% rename from src/components/Graph.vue rename to src/components/Graph/Graph.vue index 166875a2..72bafa17 100644 --- a/src/components/Graph.vue +++ b/src/components/Graph/Graph.vue @@ -17,6 +17,7 @@ limitations under the License. --> :data="option.legend.data" :show="legendSelector.isSelector" :isConfigPage="legendSelector.isConfigPage" + :colors="option.color" @change="changeLegend" />
diff --git a/src/components/Graph/Selector.vue b/src/components/Graph/Selector.vue new file mode 100644 index 00000000..b2b22325 --- /dev/null +++ b/src/components/Graph/Selector.vue @@ -0,0 +1,107 @@ + + + + diff --git a/src/components/SelectorLegend.vue b/src/components/Graph/SelectorLegend.vue similarity index 84% rename from src/components/SelectorLegend.vue rename to src/components/Graph/SelectorLegend.vue index e0240e62..6ee87052 100644 --- a/src/components/SelectorLegend.vue +++ b/src/components/Graph/SelectorLegend.vue @@ -30,12 +30,17 @@ limitations under the License. --> import { computed, ref, watch } from "vue"; import type { PropType } from "vue"; import type { Option } from "@/types/app"; + import Selector from "./Selector.vue"; const props = defineProps({ data: { type: Array as PropType<{ name: string }[]>, default: () => [], }, + colors: { + type: Array as PropType, + default: () => [], + }, show: { type: Boolean, default: false, @@ -46,7 +51,13 @@ limitations under the License. --> }, }); const emits = defineEmits(["change"]); - const Options = computed(() => props.data.map((d: { name: string }) => ({ label: d.name, value: d.name }))); + const Options = computed(() => + props.data.map((d: { name: string }, index: number) => ({ + label: d.name, + value: d.name, + color: props.colors[index], + })), + ); const legend = ref([]); function changeLegend(opt: Option[]) { diff --git a/src/components/index.ts b/src/components/index.ts index 2992ee49..6ff8d7a8 100644 --- a/src/components/index.ts +++ b/src/components/index.ts @@ -18,7 +18,7 @@ import type { App } from "vue"; import Icon from "./Icon.vue"; import TimePicker from "./TimePicker.vue"; import Selector from "./Selector.vue"; -import Graph from "./Graph.vue"; +import Graph from "./Graph/Graph.vue"; import Radio from "./Radio.vue"; import SelectSingle from "./SelectSingle.vue"; import Tags from "./Tags.vue"; diff --git a/src/styles/theme.scss b/src/styles/theme.scss index 782d0423..1f90f734 100644 --- a/src/styles/theme.scss +++ b/src/styles/theme.scss @@ -32,6 +32,7 @@ html { --el-color-primary: #409eff; + --el-color-info-light-9: #666; --theme-background: #fff; --font-color: #3d444f; --disabled-color: #ccc; @@ -74,6 +75,7 @@ html { html.dark { --el-color-primary: #409eff; + --el-color-info-light-9: #333; --theme-background: #212224; --font-color: #fafbfc; --disabled-color: #999; diff --git a/src/types/components.d.ts b/src/types/components.d.ts index 5bb2a8cd..408b5e40 100644 --- a/src/types/components.d.ts +++ b/src/types/components.d.ts @@ -44,13 +44,13 @@ declare module 'vue' { ElTableColumn: typeof import('element-plus/es')['ElTableColumn'] ElTag: typeof import('element-plus/es')['ElTag'] ElTooltip: typeof import('element-plus/es')['ElTooltip'] - Graph: typeof import('./../components/Graph.vue')['default'] + Graph: typeof import('./../components/Graph/Graph.vue')['default'] Icon: typeof import('./../components/Icon.vue')['default'] Radio: typeof import('./../components/Radio.vue')['default'] RouterLink: typeof import('vue-router')['RouterLink'] RouterView: typeof import('vue-router')['RouterView'] Selector: typeof import('./../components/Selector.vue')['default'] - SelectorLegend: typeof import('./../components/SelectorLegend.vue')['default'] + SelectorLegend: typeof import('./../components/Graph/SelectorLegend.vue')['default'] SelectSingle: typeof import('./../components/SelectSingle.vue')['default'] Tags: typeof import('./../components/Tags.vue')['default'] TimePicker: typeof import('./../components/TimePicker.vue')['default']