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

jedcunningham pushed a commit to branch v2-9-test
in repository https://gitbox.apache.org/repos/asf/airflow.git

commit 6cee9b0d565b3e9d0dbefc6c614f2654073222eb
Author: Brent Bovenzi <[email protected]>
AuthorDate: Fri Apr 19 00:22:19 2024 -0400

    Improve rendered_template ux in react dag page (#39122)
    
    (cherry picked from commit 50334230b03bf3c1f6ff11ea7808dde1a79df98a)
---
 .../static/js/dag/details/taskInstance/Details.tsx | 59 +++++++++++++---------
 .../www/static/js/dag/details/taskInstance/Nav.tsx | 10 +---
 airflow/www/templates/airflow/dag.html             |  1 -
 3 files changed, 38 insertions(+), 32 deletions(-)

diff --git a/airflow/www/static/js/dag/details/taskInstance/Details.tsx 
b/airflow/www/static/js/dag/details/taskInstance/Details.tsx
index 72d8273ce6..80e26d79ca 100644
--- a/airflow/www/static/js/dag/details/taskInstance/Details.tsx
+++ b/airflow/www/static/js/dag/details/taskInstance/Details.tsx
@@ -231,29 +231,6 @@ const Details = ({ gridInstance, taskInstance, group }: 
Props) => {
               </Td>
             </Tr>
           )}
-          {taskInstance?.renderedFields && (
-            <>
-              {Object.keys(taskInstance.renderedFields).map((key) => {
-                const renderedFields = taskInstance.renderedFields as Record<
-                  string,
-                  unknown
-                >;
-                if (renderedFields[key]) {
-                  return (
-                    <Tr key={key}>
-                      <Td>{key}</Td>
-                      <Td>
-                        <Code fontSize="md">
-                          {JSON.stringify(renderedFields[key])}
-                        </Code>
-                      </Td>
-                    </Tr>
-                  );
-                }
-                return null;
-              })}
-            </>
-          )}
           {!!taskInstance?.pool && (
             <Tr>
               <Td>Pool</Td>
@@ -300,6 +277,42 @@ const Details = ({ gridInstance, taskInstance, group }: 
Props) => {
           )}
         </Tbody>
       </Table>
+      {taskInstance?.renderedFields && (
+        <Box mt={3}>
+          <Text as="strong" mb={3}>
+            Rendered Templates
+          </Text>
+          <Table>
+            <Tbody>
+              {Object.keys(taskInstance.renderedFields).map((key) => {
+                const renderedFields = taskInstance.renderedFields as Record<
+                  string,
+                  unknown
+                >;
+                let field = renderedFields[key];
+                if (field) {
+                  if (typeof field !== "string") {
+                    try {
+                      field = JSON.stringify(field);
+                    } catch (e) {
+                      // skip
+                    }
+                  }
+                  return (
+                    <Tr key={key}>
+                      <Td>{key}</Td>
+                      <Td>
+                        <Code fontSize="md">{field as string}</Code>
+                      </Td>
+                    </Tr>
+                  );
+                }
+                return null;
+              })}
+            </Tbody>
+          </Table>
+        </Box>
+      )}
     </Box>
   );
 };
diff --git a/airflow/www/static/js/dag/details/taskInstance/Nav.tsx 
b/airflow/www/static/js/dag/details/taskInstance/Nav.tsx
index 1e5d84d8ba..88560d5dac 100644
--- a/airflow/www/static/js/dag/details/taskInstance/Nav.tsx
+++ b/airflow/www/static/js/dag/details/taskInstance/Nav.tsx
@@ -29,7 +29,6 @@ const dagId = getMetaValue("dag_id");
 const isK8sExecutor = getMetaValue("k8s_or_k8scelery_executor") === "True";
 const taskInstancesUrl = getMetaValue("task_instances_list_url");
 const renderedK8sUrl = getMetaValue("rendered_k8s_url");
-const renderedTemplatesUrl = getMetaValue("rendered_templates_url");
 const taskUrl = getMetaValue("task_url");
 const gridUrl = getMetaValue("grid_url");
 
@@ -50,7 +49,6 @@ const Nav = forwardRef<HTMLDivElement, Props>(
       map_index: mapIndex ?? -1,
     });
     const detailsLink = `${taskUrl}&${params}`;
-    const renderedLink = `${renderedTemplatesUrl}&${params}`;
     const k8sLink = `${renderedK8sUrl}&${params}`;
     const listParams = new URLSearchParamsWrapper({
       _flt_3_dag_id: dagId,
@@ -79,7 +77,6 @@ const Nav = forwardRef<HTMLDivElement, Props>(
         {(!isMapped || mapIndex !== undefined) && (
           <>
             <LinkButton href={detailsLink}>More Details</LinkButton>
-            <LinkButton href={renderedLink}>Rendered Template</LinkButton>
             {isK8sExecutor && (
               <LinkButton href={k8sLink}>K8s Pod Spec</LinkButton>
             )}
@@ -88,11 +85,8 @@ const Nav = forwardRef<HTMLDivElement, Props>(
             )}
           </>
         )}
-        <LinkButton
-          href={allInstancesLink}
-          title="View all instances across all DAG runs"
-        >
-          List Instances, all runs
+        <LinkButton href={allInstancesLink} title="View all">
+          List All Instances
         </LinkButton>
       </Flex>
     );
diff --git a/airflow/www/templates/airflow/dag.html 
b/airflow/www/templates/airflow/dag.html
index d9ef3c139a..29f535b4b6 100644
--- a/airflow/www/templates/airflow/dag.html
+++ b/airflow/www/templates/airflow/dag.html
@@ -65,7 +65,6 @@
   <meta name="graph_url" content="{{ url_for('Airflow.graph', 
dag_id=dag.dag_id, root=root) }}">
   <meta name="task_url" content="{{ url_for('Airflow.task', dag_id=dag.dag_id) 
}}">
   <meta name="log_url" content="{{ url_for('Airflow.log', dag_id=dag.dag_id) 
}}">
-  <meta name="rendered_templates_url" content="{{ 
url_for('Airflow.rendered_templates', dag_id=dag.dag_id) }}">
   <meta name="rendered_k8s_url" content="{{ url_for('Airflow.rendered_k8s', 
dag_id=dag.dag_id) }}">
   <meta name="task_instances_list_url" content="{{ 
url_for('TaskInstanceModelView.list') }}">
   <meta name="tag_index_url" content="{{ url_for('Airflow.index', 
tags='_TAG_NAME_') }}">

Reply via email to