This is an automated email from the ASF dual-hosted git repository.

wusheng pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/skywalking-booster-ui.git


The following commit(s) were added to refs/heads/main by this push:
     new 221751f  fix: optimize metrics association (#196)
221751f is described below

commit 221751f034763d6f56ab7b4cb154abfa890f370c
Author: Fine0830 <[email protected]>
AuthorDate: Tue Nov 29 18:47:53 2022 +0800

    fix: optimize metrics association (#196)
---
 src/components/Graph.vue                           | 38 +++++++++++++++-------
 src/styles/reset.scss                              |  2 ++
 .../configuration/widget/RelatedTraceOptions.vue   |  2 +-
 src/views/dashboard/controls/Widget.vue            |  1 +
 src/views/dashboard/graphs/Area.vue                |  1 +
 src/views/dashboard/graphs/Bar.vue                 |  8 ++++-
 src/views/dashboard/graphs/Line.vue                |  2 ++
 src/views/dashboard/graphs/TopList.vue             |  1 +
 src/views/dashboard/related/trace/Header.vue       |  2 +-
 9 files changed, 42 insertions(+), 15 deletions(-)

diff --git a/src/components/Graph.vue b/src/components/Graph.vue
index f006942..8bcd774 100644
--- a/src/components/Graph.vue
+++ b/src/components/Graph.vue
@@ -16,13 +16,13 @@ limitations under the License. -->
   <div class="chart" ref="chartRef" 
:style="`height:${height};width:${width};`">
     <div v-if="!available" class="no-data">No Data</div>
     <div class="menus" v-show="visMenus" ref="menus">
-      <div class="tools" @click="associateMetrics">
+      <div class="tools" @click="associateMetrics" v-if="associate.length">
         {{ t("associateMetrics") }}
       </div>
       <div
         class="tools"
         @click="viewTrace"
-        v-if="props.relatedTrace && props.relatedTrace.enableRelate"
+        v-if="relatedTrace && relatedTrace.enableRelate"
       >
         {{ t("viewTrace") }}
       </div>
@@ -33,6 +33,7 @@ limitations under the License. -->
       :destroy-on-close="true"
       :before-close="() => (showTrace = false)"
       :append-to-body="true"
+      title="The Related Traces"
     >
       <Trace :data="traceOptions" />
     </el-drawer>
@@ -84,6 +85,10 @@ const props = defineProps({
   relatedTrace: {
     type: Object as PropType<RelatedTrace>,
   },
+  associate: {
+    type: Array as PropType<{ widgetId: string }[]>,
+    default: () => [],
+  },
 });
 const available = computed(
   () =>
@@ -113,15 +118,15 @@ function instanceEvent() {
       visMenus.value = true;
       const w = chartRef.value.getBoundingClientRect().width || 0;
       const h = chartRef.value.getBoundingClientRect().height || 0;
-      if (w - params.event.offsetX > 125) {
+      if (w - params.event.offsetX > 120) {
         menus.value.style.left = params.event.offsetX + "px";
       } else {
-        menus.value.style.left = params.event.offsetX - 125 + "px";
+        menus.value.style.left = params.event.offsetX - 120 + "px";
       }
-      if (h - params.event.offsetY < 60) {
-        menus.value.style.top = params.event.offsetY - 60 + "px";
+      if (h - params.event.offsetY < 50) {
+        menus.value.style.top = params.event.offsetY - 40 + "px";
       } else {
-        menus.value.style.top = params.event.offsetY + 5 + "px";
+        menus.value.style.top = params.event.offsetY + 2 + "px";
       }
     });
     document.addEventListener(
@@ -143,11 +148,14 @@ function instanceEvent() {
 
 function associateMetrics() {
   emits("select", currentParams.value);
-  visMenus.value = true;
-  updateOptions();
+  const { dataIndex, seriesIndex } = currentParams.value || {
+    dataIndex: 0,
+    seriesIndex: 0,
+  };
+  updateOptions({ dataIndex, seriesIndex });
 }
 
-function updateOptions() {
+function updateOptions(params?: { dataIndex: number; seriesIndex: number }) {
   const instance = getInstance();
   if (!instance) {
     return;
@@ -162,8 +170,14 @@ function updateOptions() {
   } else {
     instance.dispatchAction({
       type: "updateAxisPointer",
-      dataIndex: props.filters.dataIndex,
-      seriesIndex: 0,
+      dataIndex: params ? params.dataIndex : props.filters.dataIndex,
+      seriesIndex: params ? params.seriesIndex : 0,
+    });
+    const ids = props.option.series.map((_: unknown, index: number) => index);
+    instance.dispatchAction({
+      type: "highlight",
+      dataIndex: params ? params.dataIndex : props.filters.dataIndex,
+      seriesIndex: ids,
     });
   }
 }
diff --git a/src/styles/reset.scss b/src/styles/reset.scss
index b5de79f..2c3f224 100644
--- a/src/styles/reset.scss
+++ b/src/styles/reset.scss
@@ -159,6 +159,8 @@ pre {
 
 .el-drawer__header {
   margin-bottom: 0;
+  padding-left: 10px;
+  font-size: 16px;
 }
 
 .el-drawer__body {
diff --git a/src/views/dashboard/configuration/widget/RelatedTraceOptions.vue 
b/src/views/dashboard/configuration/widget/RelatedTraceOptions.vue
index 7db90f1..352c1b4 100644
--- a/src/views/dashboard/configuration/widget/RelatedTraceOptions.vue
+++ b/src/views/dashboard/configuration/widget/RelatedTraceOptions.vue
@@ -85,7 +85,7 @@ const Status = [
 const { t } = useI18n();
 const dashboardStore = useDashboardStore();
 const { graph, relatedTrace } = dashboardStore.selectedGrid;
-const traceOpt = (relatedTrace && relatedTrace.traceOpt) || {};
+const traceOpt = relatedTrace || {};
 const status = ref<string>(traceOpt.status || Status[0].value);
 const queryOrder = ref<string>(traceOpt.queryOrder || QueryOrders[0].value);
 const latency = ref<boolean>(traceOpt.latency || false);
diff --git a/src/views/dashboard/controls/Widget.vue 
b/src/views/dashboard/controls/Widget.vue
index cccd42f..ccb8f8e 100644
--- a/src/views/dashboard/controls/Widget.vue
+++ b/src/views/dashboard/controls/Widget.vue
@@ -65,6 +65,7 @@ limitations under the License. -->
           metricConfig: data.metricConfig || [],
           filters: data.filters || {},
           relatedTrace: data.relatedTrace || {},
+          associate: data.associate || [],
         }"
         :needQuery="needQuery"
         @click="clickHandle"
diff --git a/src/views/dashboard/graphs/Area.vue 
b/src/views/dashboard/graphs/Area.vue
index 5e4336c..018813b 100644
--- a/src/views/dashboard/graphs/Area.vue
+++ b/src/views/dashboard/graphs/Area.vue
@@ -45,6 +45,7 @@ defineProps({
         filters: Filters;
         relatedTrace: RelatedTrace;
         id: string;
+        associate: { widgetId: string }[];
       }
     >,
     default: () => ({}),
diff --git a/src/views/dashboard/graphs/Bar.vue 
b/src/views/dashboard/graphs/Bar.vue
index ad52e48..ec5cf21 100644
--- a/src/views/dashboard/graphs/Bar.vue
+++ b/src/views/dashboard/graphs/Bar.vue
@@ -14,7 +14,12 @@ See the License for the specific language governing 
permissions and
 limitations under the License. -->
 <template>
   <div class="graph" :class="isRight ? 'flex-h' : 'flex-v'">
-    <Graph :option="option" @select="clickEvent" :filters="config.filters" />
+    <Graph
+      :option="option"
+      @select="clickEvent"
+      :filters="config.filters"
+      :associate="config.associate || []"
+    />
     <Legend :config="config.legend" :data="data" :intervalTime="intervalTime" 
/>
   </div>
 </template>
@@ -44,6 +49,7 @@ const props = defineProps({
         filters: Filters;
         relatedTrace: RelatedTrace;
         id: string;
+        associate: { widgetId: string }[];
       }
     >,
     default: () => ({}),
diff --git a/src/views/dashboard/graphs/Line.vue 
b/src/views/dashboard/graphs/Line.vue
index c26c6b1..1d0fdb7 100644
--- a/src/views/dashboard/graphs/Line.vue
+++ b/src/views/dashboard/graphs/Line.vue
@@ -19,6 +19,7 @@ limitations under the License. -->
       @select="clickEvent"
       :filters="config.filters"
       :relatedTrace="config.relatedTrace"
+      :associate="config.associate || []"
     />
     <Legend :config="config.legend" :data="data" :intervalTime="intervalTime" 
/>
   </div>
@@ -50,6 +51,7 @@ const props = defineProps({
         filters?: Filters;
         relatedTrace?: RelatedTrace;
         id?: string;
+        associate: { widgetId: string }[];
       }
     >,
     default: () => ({
diff --git a/src/views/dashboard/graphs/TopList.vue 
b/src/views/dashboard/graphs/TopList.vue
index aac7fce..9630cab 100644
--- a/src/views/dashboard/graphs/TopList.vue
+++ b/src/views/dashboard/graphs/TopList.vue
@@ -58,6 +58,7 @@ limitations under the License. -->
       :destroy-on-close="true"
       :before-close="() => (showTrace = false)"
       :append-to-body="true"
+      title="The Related Traces"
     >
       <Trace :data="traceOptions" />
     </el-drawer>
diff --git a/src/views/dashboard/related/trace/Header.vue 
b/src/views/dashboard/related/trace/Header.vue
index 2cdd71b..893e2b5 100644
--- a/src/views/dashboard/related/trace/Header.vue
+++ b/src/views/dashboard/related/trace/Header.vue
@@ -18,7 +18,7 @@ limitations under the License. -->
     <el-input size="small" v-model="traceId" class="trace-id" />
   </div>
   <div class="conditions flex-h" v-else>
-    <el-radio-group v-model="conditions" @change="changeCondition">
+    <el-radio-group v-model="conditions" @change="changeCondition" 
size="small">
       <el-radio-button
         v-for="(item, index) in items"
         :label="item.label"

Reply via email to