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",