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

uranusjr pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git


The following commit(s) were added to refs/heads/main by this push:
     new 79a26aa3b9 Allow sort by on all fields in MappedInstances.tsx (#38090)
79a26aa3b9 is described below

commit 79a26aa3b9231e76d2e897ff12e2911b911f4528
Author: Ryan Hatter <[email protected]>
AuthorDate: Tue Apr 23 02:35:30 2024 -0400

    Allow sort by on all fields in MappedInstances.tsx (#38090)
    
    Co-authored-by: Brent Bovenzi <[email protected]>
---
 .../endpoints/task_instance_endpoint.py            | 31 +++++++++++++++-------
 .../dag/details/taskInstance/MappedInstances.tsx   |  7 +----
 2 files changed, 22 insertions(+), 16 deletions(-)

diff --git a/airflow/api_connexion/endpoints/task_instance_endpoint.py 
b/airflow/api_connexion/endpoints/task_instance_endpoint.py
index a58aaee86f..c3d5de9963 100644
--- a/airflow/api_connexion/endpoints/task_instance_endpoint.py
+++ b/airflow/api_connexion/endpoints/task_instance_endpoint.py
@@ -239,17 +239,28 @@ def get_mapped_task_instances(
         .options(joinedload(TI.rendered_task_instance_fields))
     )
 
-    if order_by:
-        if order_by == "state":
-            entry_query = entry_query.order_by(TI.state.asc(), 
TI.map_index.asc())
-        elif order_by == "-state":
-            entry_query = entry_query.order_by(TI.state.desc(), 
TI.map_index.asc())
-        elif order_by == "-map_index":
-            entry_query = entry_query.order_by(TI.map_index.desc())
-        else:
-            raise BadRequest(detail=f"Ordering with '{order_by}' is not 
supported")
-    else:
+    if order_by is None:
         entry_query = entry_query.order_by(TI.map_index.asc())
+    elif order_by == "state":
+        entry_query = entry_query.order_by(TI.state.asc(), TI.map_index.asc())
+    elif order_by == "-state":
+        entry_query = entry_query.order_by(TI.state.desc(), TI.map_index.asc())
+    elif order_by == "duration":
+        entry_query = entry_query.order_by(TI.duration.asc(), 
TI.map_index.asc())
+    elif order_by == "-duration":
+        entry_query = entry_query.order_by(TI.duration.desc(), 
TI.map_index.asc())
+    elif order_by == "start_date":
+        entry_query = entry_query.order_by(TI.start_date.asc(), 
TI.map_index.asc())
+    elif order_by == "-start_date":
+        entry_query = entry_query.order_by(TI.start_date.desc(), 
TI.map_index.asc())
+    elif order_by == "end_date":
+        entry_query = entry_query.order_by(TI.end_date.asc(), 
TI.map_index.asc())
+    elif order_by == "-end_date":
+        entry_query = entry_query.order_by(TI.end_date.desc(), 
TI.map_index.asc())
+    elif order_by == "-map_index":
+        entry_query = entry_query.order_by(TI.map_index.desc())
+    else:
+        raise BadRequest(detail=f"Ordering with '{order_by}' is not supported")
 
     # using execute because we want the SlaMiss entity. Scalars don't return 
None for missing entities
     task_instances = 
session.execute(entry_query.offset(offset).limit(limit)).all()
diff --git a/airflow/www/static/js/dag/details/taskInstance/MappedInstances.tsx 
b/airflow/www/static/js/dag/details/taskInstance/MappedInstances.tsx
index 94dd64019b..f6d7c83b35 100644
--- a/airflow/www/static/js/dag/details/taskInstance/MappedInstances.tsx
+++ b/airflow/www/static/js/dag/details/taskInstance/MappedInstances.tsx
@@ -47,9 +47,7 @@ const MappedInstances = ({ dagId, runId, taskId, onRowClicked 
}: Props) => {
   const sort = sortBy[0];
 
   const orderBy =
-    sort && (sort.id === "state" || sort.id === "mapIndex")
-      ? `${sort.desc ? "-" : ""}${snakeCase(sort.id)}`
-      : "";
+    sort && sort.id ? `${sort.desc ? "-" : ""}${snakeCase(sort.id)}` : "";
 
   const {
     data: { taskInstances = [], totalEntries = 0 } = {
@@ -106,17 +104,14 @@ const MappedInstances = ({ dagId, runId, taskId, 
onRowClicked }: Props) => {
       {
         Header: "Duration",
         accessor: "duration",
-        disableSortBy: true,
       },
       {
         Header: "Start Date",
         accessor: "startDate",
-        disableSortBy: true,
       },
       {
         Header: "End Date",
         accessor: "endDate",
-        disableSortBy: true,
       },
       {
         Header: "Try Number",

Reply via email to