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 460b24f4 feat: support the `SINGLE_VALUE` for table widgets (#383)
460b24f4 is described below

commit 460b24f42cec9d8db63b9300c8e00c8ab3312c82
Author: Fine0830 <fanxue0...@gmail.com>
AuthorDate: Wed Apr 10 23:35:15 2024 +0800

    feat: support the `SINGLE_VALUE` for table widgets (#383)
---
 src/hooks/useExpressionsProcessor.ts | 16 ++++++++++++++--
 src/views/dashboard/graphs/Table.vue | 12 +-----------
 2 files changed, 15 insertions(+), 13 deletions(-)

diff --git a/src/hooks/useExpressionsProcessor.ts 
b/src/hooks/useExpressionsProcessor.ts
index 408dd724..60c66abe 100644
--- a/src/hooks/useExpressionsProcessor.ts
+++ b/src/hooks/useExpressionsProcessor.ts
@@ -119,14 +119,26 @@ export async function 
useExpressionsQueryProcessor(config: Indexable) {
           } else {
             for (const item of results) {
               const values = item.values.map((d: { value: unknown }) => 
d.value) || [];
-              const label = item.metric.labels.map((d: any) => 
`${d.key}=${d.value}`).join(",");
+              const label = item.metric.labels
+                .map((d: { key: string; value: string }) => 
`${d.key}=${d.value}`)
+                .join(",");
 
               source[label] = values;
             }
           }
         }
         if (type === ExpressionResultType.SINGLE_VALUE) {
-          source[c.label || name] = (results[0].values[0] || {}).value;
+          for (const item of results) {
+            const label = item.metric.labels
+              .map((d: { key: string; value: string }) => 
`${d.key}=${d.value}`)
+              .join(",");
+            const values = item.values.map((d: { value: unknown }) => d.value) 
|| [];
+            if (results.length === 1) {
+              source[label || c.label || name] = values;
+            } else {
+              source[label] = values;
+            }
+          }
         }
         if (([ExpressionResultType.RECORD_LIST, 
ExpressionResultType.SORTED_LIST] as string[]).includes(type)) {
           source[name] = results[0].values;
diff --git a/src/views/dashboard/graphs/Table.vue 
b/src/views/dashboard/graphs/Table.vue
index 5813c075..2ab46c05 100644
--- a/src/views/dashboard/graphs/Table.vue
+++ b/src/views/dashboard/graphs/Table.vue
@@ -37,12 +37,7 @@ limitations under the License. -->
         >{{ k.split("=")[1] }}</div
       >
       <div class="value-col" v-if="config.showTableValues">
-        {{
-          (config.metricTypes && config.metricTypes[0] === "readMetricsValue") 
||
-          (props.config.typesOfMQE && props.config.typesOfMQE[0] === 
ExpressionResultType.SINGLE_VALUE)
-            ? data[keys[0]]
-            : data[(keys as string[]).join(",")][data[(keys as 
string[]).join(",")].length - 1 || 0]
-        }}
+        {{ data[(keys as string[]).join(",")][data[(keys as 
string[]).join(",")].length - 1 || 0] }}
       </div>
     </div>
   </div>
@@ -51,7 +46,6 @@ limitations under the License. -->
   import { computed } from "vue";
   import type { PropType } from "vue";
   import { useI18n } from "vue-i18n";
-  import { ExpressionResultType } from "@/views/dashboard/data";
   /*global defineProps */
   const props = defineProps({
     data: {
@@ -76,10 +70,6 @@ limitations under the License. -->
       const keys = Object.keys(props.data || {});
       return keys;
     }
-    if (props.config.typesOfMQE && props.config.typesOfMQE[0] === 
ExpressionResultType.SINGLE_VALUE) {
-      const keys = Object.keys(props.data || {});
-      return keys;
-    }
     const keys = Object.keys(props.data || {}).filter(
       (i: string) => Array.isArray(props.data[i]) && props.data[i].length,
     );

Reply via email to