tirkarthi commented on PR #44656:
URL: https://github.com/apache/airflow/pull/44656#issuecomment-2519606200
One way to handle mapped task instances might be to pass `map_index` as a
query parameter in the URL and then handle it. Below is a rough approach but
this could be discussed in a separate issue since this will involve URL changes.
```patch
diff --git a/airflow/ui/src/pages/Events/Events.tsx
b/airflow/ui/src/pages/Events/Events.tsx
index 60663aefec..d311471252 100644
--- a/airflow/ui/src/pages/Events/Events.tsx
+++ b/airflow/ui/src/pages/Events/Events.tsx
@@ -18,7 +18,7 @@
*/
import { Box } from "@chakra-ui/react";
import type { ColumnDef } from "@tanstack/react-table";
-import { useParams } from "react-router-dom";
+import { useSearchParams, useParams } from "react-router-dom";
import { useEventLogServiceGetEventLogs } from "openapi/queries";
import type { EventLogResponse } from "openapi/requests/types.gen";
@@ -113,6 +113,8 @@ const eventsColumn = (
export const Events = () => {
const { dagId, runId, taskId } = useParams();
+ const [searchParams, setSearchParams] = useSearchParams();
+ const mapIndex = searchParams.get("map_index");
const { setTableURLState, tableURLState } = useTableURLState({
sorting: [{ desc: true, id: "when" }],
});
@@ -132,6 +134,8 @@ export const Events = () => {
offset: pagination.pageIndex * pagination.pageSize,
orderBy,
runId,
+ taskId,
+ mapIndex,
});
return (
diff --git a/airflow/ui/src/pages/Run/TaskInstances.tsx
b/airflow/ui/src/pages/Run/TaskInstances.tsx
index e96ff55d46..4e4127cdfc 100644
--- a/airflow/ui/src/pages/Run/TaskInstances.tsx
+++ b/airflow/ui/src/pages/Run/TaskInstances.tsx
@@ -35,7 +35,7 @@ const columns: Array<ColumnDef<TaskInstanceResponse>> = [
cell: ({ row: { original } }) => (
<Link asChild color="fg.info" fontWeight="bold">
<RouterLink
-
to={`/dags/${original.dag_id}/runs/${original.dag_run_id}/tasks/${original.task_id}`}
+
to={`/dags/${original.dag_id}/runs/${original.dag_run_id}/tasks/${original.task_id}?map_index=${original.map_index}`}
>
{original.task_display_name}
</RouterLink>
diff --git a/airflow/ui/src/pages/TaskInstance/TaskInstance.tsx
b/airflow/ui/src/pages/TaskInstance/TaskInstance.tsx
index b9e41de93d..d0f5ca9930 100644
--- a/airflow/ui/src/pages/TaskInstance/TaskInstance.tsx
+++ b/airflow/ui/src/pages/TaskInstance/TaskInstance.tsx
@@ -17,37 +17,51 @@
* under the License.
*/
import { LiaSlashSolid } from "react-icons/lia";
-import { useParams, Link as RouterLink } from "react-router-dom";
+import {
+ useParams,
+ useSearchParams,
+ Link as RouterLink,
+} from "react-router-dom";
import {
useDagServiceGetDagDetails,
useTaskInstanceServiceGetTaskInstance,
+ useTaskInstanceServiceGetMappedTaskInstance,
} from "openapi/queries";
import { Breadcrumb } from "src/components/ui";
import { DetailsLayout } from "src/layouts/Details/DetailsLayout";
import { Header } from "./Header";
-const tabs = [
- { label: "Logs", value: "" },
- { label: "Events", value: "events" },
- { label: "XCom", value: "xcom" },
- { label: "Code", value: "code" },
- { label: "Details", value: "details" },
-];
-
export const TaskInstance = () => {
const { dagId = "", runId = "", taskId = "" } = useParams();
+ const [searchParams, setSearchParams] = useSearchParams();
+ const mapIndex = searchParams.get("map_index");
+
+ const tabs = [
+ { label: "Logs", value: "" },
+ { label: "Events", value: `events?map_index=${mapIndex}` },
+ { label: "XCom", value: `xcom?map_index=${mapIndex}` },
+ { label: "Code", value: `code?map_index=${mapIndex}` },
+ { label: "Details", value: `details?map_index=${mapIndex}` },
+ ];
const {
data: taskInstance,
error,
isLoading,
- } = useTaskInstanceServiceGetTaskInstance({
- dagId,
- dagRunId: runId,
- taskId,
- });
+ } = Boolean(mapIndex) && mapIndex > -1
+ ? useTaskInstanceServiceGetMappedTaskInstance({
+ dagId,
+ dagRunId: runId,
+ taskId,
+ mapIndex,
+ })
+ : useTaskInstanceServiceGetTaskInstance({
+ dagId,
+ dagRunId: runId,
+ taskId,
+ });
const {
data: dag,
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]