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 @@
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
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']