From 52b0f5f89504e674e83e74d5117a53c6efdf06bc Mon Sep 17 00:00:00 2001 From: Brent Bovenzi Date: Mon, 22 Aug 2022 14:39:04 -0400 Subject: [PATCH] add ordering to grid_data --- airflow/www/static/js/api/useGridData.ts | 11 +++- airflow/www/static/js/dag/details/Header.tsx | 6 +- .../static/js/dag/grid/dagRuns/Tooltip.tsx | 58 ++++++++++--------- airflow/www/static/js/types/index.ts | 3 + airflow/www/static/js/utils/index.test.ts | 28 ++++++++- airflow/www/static/js/utils/index.ts | 13 ++++- airflow/www/views.py | 1 + tests/www/views/test_views_grid.py | 3 + 8 files changed, 89 insertions(+), 34 deletions(-) diff --git a/airflow/www/static/js/api/useGridData.ts b/airflow/www/static/js/api/useGridData.ts index dc5e5dfb9a079..2e2ca1cb950c1 100644 --- a/airflow/www/static/js/api/useGridData.ts +++ b/airflow/www/static/js/api/useGridData.ts @@ -26,7 +26,8 @@ import useErrorToast from 'src/utils/useErrorToast'; import useFilters, { BASE_DATE_PARAM, NUM_RUNS_PARAM, RUN_STATE_PARAM, RUN_TYPE_PARAM, now, } from 'src/dag/useFilters'; -import type { Task, DagRun } from 'src/types'; +import type { Task, DagRun, RunOrdering } from 'src/types'; +import { camelCase } from 'lodash'; const DAG_ID_PARAM = 'dag_id'; @@ -38,6 +39,7 @@ const urlRoot = getMetaValue('root'); interface GridData { dagRuns: DagRun[]; groups: Task; + ordering: RunOrdering; } const emptyGridData: GridData = { @@ -47,8 +49,14 @@ const emptyGridData: GridData = { label: null, instances: [], }, + ordering: [], }; +const formatOrdering = (data: GridData) => ({ + ...data, + ordering: data.ordering.map((o: string) => camelCase(o)) as RunOrdering, +}); + export const areActiveRuns = (runs: DagRun[] = []) => runs.filter((run) => ['manual', 'manual'].includes(run.runType)).filter((run) => ['queued', 'running', 'scheduled'].includes(run.state)).length > 0; const useGridData = () => { @@ -88,6 +96,7 @@ const useGridData = () => { }); throw (error); }, + select: formatOrdering, }, ); return { diff --git a/airflow/www/static/js/dag/details/Header.tsx b/airflow/www/static/js/dag/details/Header.tsx index 3b957f6a1779f..d7ddb98564717 100644 --- a/airflow/www/static/js/dag/details/Header.tsx +++ b/airflow/www/static/js/dag/details/Header.tsx @@ -25,7 +25,7 @@ import { Text, } from '@chakra-ui/react'; -import { getMetaValue, getTask } from 'src/utils'; +import { getDagRunLabel, getMetaValue, getTask } from 'src/utils'; import useSelection from 'src/dag/useSelection'; import Time from 'src/components/Time'; import { useGridData } from 'src/api'; @@ -36,7 +36,7 @@ import BreadcrumbText from './BreadcrumbText'; const dagId = getMetaValue('dag_id'); const Header = () => { - const { data: { dagRuns, groups } } = useGridData(); + const { data: { dagRuns, groups, ordering } } = useGridData(); const { selected: { taskId, runId, mapIndex }, onSelect, clearSelection } = useSelection(); const dagRun = dagRuns.find((r) => r.runId === runId); @@ -58,7 +58,7 @@ const Header = () => { || runId.includes('backfill__') || runId.includes('dataset_triggered__') ) - ?