Skip to content

Commit

Permalink
Fix gantt chart queued duration when queued_dttm is greater than star…
Browse files Browse the repository at this point in the history
…t_date for deferred tasks.
  • Loading branch information
tirkarthi committed Dec 4, 2023
1 parent 35a1b7a commit b20d18d
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 10 deletions.
8 changes: 5 additions & 3 deletions airflow/www/static/js/dag/details/gantt/GanttTooltip.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -34,9 +34,11 @@ const GanttTooltip = ({ task, instance }: Props) => {

// Calculate durations in ms
const taskDuration = getDuration(instance?.startDate, instance?.endDate);
const queuedDuration = instance?.queuedDttm
? getDuration(instance.queuedDttm, instance?.startDate)
: 0;
const queuedDuration =
instance?.queuedDttm &&
(instance?.startDate ? instance.queuedDttm < instance.startDate : true)
? getDuration(instance.queuedDttm, instance?.startDate)
: 0;
return (
<Box>
<Text>
Expand Down
18 changes: 11 additions & 7 deletions airflow/www/static/js/dag/details/gantt/Row.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -53,17 +53,21 @@ const Row = ({
const instance = task.instances.find((ti) => ti.runId === runId);
const isSelected = taskId === instance?.taskId;
const hasQueuedDttm = !!instance?.queuedDttm;
const validQueuedDttm =
hasQueuedDttm &&
(instance?.startDate && instance?.queuedDttm
? instance.queuedDttm < instance.startDate
: true);
const isOpen = openGroupIds.includes(task.id || "");

// Calculate durations in ms
const taskDuration = getDuration(instance?.startDate, instance?.endDate);
const queuedDuration = hasQueuedDttm
const queuedDuration = validQueuedDttm
? getDuration(instance?.queuedDttm, instance?.startDate)
: 0;
const taskStartOffset = getDuration(
ganttStartDate,
instance?.queuedDttm || instance?.startDate
);
const taskStartOffset = validQueuedDttm
? getDuration(ganttStartDate, instance?.queuedDttm || instance?.startDate)
: getDuration(ganttStartDate, instance?.startDate);

// Percent of each duration vs the overall dag run
const taskDurationPercent = taskDuration / runDuration;
Expand All @@ -74,8 +78,8 @@ const Row = ({
// Min width should be 5px
let width = ganttWidth * taskDurationPercent;
if (width < 5) width = 5;
let queuedWidth = hasQueuedDttm ? ganttWidth * queuedDurationPercent : 0;
if (hasQueuedDttm && queuedWidth < 5) queuedWidth = 5;
let queuedWidth = validQueuedDttm ? ganttWidth * queuedDurationPercent : 0;
if (validQueuedDttm && queuedWidth < 5) queuedWidth = 5;
const offsetMargin = taskStartOffsetPercent * ganttWidth;

return (
Expand Down

0 comments on commit b20d18d

Please sign in to comment.