You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airflow.apache.org by bb...@apache.org on 2022/04/13 17:22:20 UTC

[airflow] 01/01: Fix tooltip for mapped tasks

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

bbovenzi pushed a commit to branch fix-mapped-tooltip
in repository https://gitbox.apache.org/repos/asf/airflow.git

commit fef800a34f3afb09f580e63549201b750b0757ec
Author: Brent Bovenzi <br...@gmail.com>
AuthorDate: Wed Apr 13 13:21:47 2022 -0400

    Fix tooltip for mapped tasks
---
 airflow/www/static/js/tree/InstanceTooltip.jsx | 59 ++++++++++++--------------
 1 file changed, 26 insertions(+), 33 deletions(-)

diff --git a/airflow/www/static/js/tree/InstanceTooltip.jsx b/airflow/www/static/js/tree/InstanceTooltip.jsx
index 80f2dbce76..11ef97ae8e 100644
--- a/airflow/www/static/js/tree/InstanceTooltip.jsx
+++ b/airflow/www/static/js/tree/InstanceTooltip.jsx
@@ -31,11 +31,11 @@ const InstanceTooltip = ({
   },
 }) => {
   const isGroup = !!group.children;
-  const groupSummary = [];
-  const mapSummary = [];
+  const { isMapped } = group;
+  const summary = [];
 
+  const numMap = finalStatesMap();
   if (isGroup) {
-    const numMap = finalStatesMap();
     group.children.forEach((child) => {
       const taskInstance = child.instances.find((ti) => ti.runId === runId);
       if (taskInstance) {
@@ -43,52 +43,45 @@ const InstanceTooltip = ({
         if (numMap.has(stateKey)) numMap.set(stateKey, numMap.get(stateKey) + 1);
       }
     });
-    numMap.forEach((key, val) => {
-      if (key > 0) {
-        groupSummary.push(
-          // eslint-disable-next-line react/no-array-index-key
-          <Text key={val} ml="10px">
-            {val}
-            {': '}
-            {key}
-          </Text>,
-        );
-      }
-    });
-  }
-
-  if (group.isMapped && mappedStates) {
-    const numMap = finalStatesMap();
+  } else if (isMapped && mappedStates) {
     mappedStates.forEach((s) => {
       const stateKey = s || 'no_status';
       if (numMap.has(stateKey)) numMap.set(stateKey, numMap.get(stateKey) + 1);
     });
-    numMap.forEach((key, val) => {
-      if (key > 0) {
-        mapSummary.push(
-          // eslint-disable-next-line react/no-array-index-key
-          <Text key={val} ml="10px">
-            {val}
-            {': '}
-            {key}
-          </Text>,
-        );
-      }
-    });
   }
 
+  numMap.forEach((key, val) => {
+    if (key > 0) {
+      summary.push(
+        // eslint-disable-next-line react/no-array-index-key
+        <Text key={val} ml="10px">
+          {val}
+          {': '}
+          {key}
+        </Text>,
+      );
+    }
+  });
+
   return (
     <Box py="2px">
       {group.tooltip && (
         <Text>{group.tooltip}</Text>
       )}
+      {isMapped && (
+        <Text>
+          {mappedStates.length}
+          {' '}
+          mapped tasks
+        </Text>
+      )}
       <Text>
-        {isGroup ? 'Overall ' : ''}
+        {(isGroup || isMapped) ? 'Overall ' : ''}
         Status:
         {' '}
         {state || 'no status'}
       </Text>
-      {isGroup && groupSummary}
+      {(isGroup || isMapped) && summary}
       <Text>
         Started:
         {' '}