diff --git a/airflow/www/static/js/task-instances.js b/airflow/www/static/js/task-instances.js index bc420634d9f7d..1f71fa1c09fbe 100644 --- a/airflow/www/static/js/task-instances.js +++ b/airflow/www/static/js/task-instances.js @@ -98,4 +98,17 @@ export default function tiTooltip(ti, { includeTryNumber = false } = {}) { return tt; } +export function taskNoInstanceTooltip(taskId, task) { + let tt = ''; + if (taskId) { + tt += `Task_id: ${escapeHtml(taskId)}
`; + } + if (task.task_type !== undefined) { + tt += `Operator: ${escapeHtml(task.task_type)}
`; + } + tt += '
DAG has yet to run.'; + return tt; +} + window.tiTooltip = tiTooltip; +window.taskNoInstanceTooltip = taskNoInstanceTooltip; diff --git a/airflow/www/templates/airflow/graph.html b/airflow/www/templates/airflow/graph.html index 096935e00f169..844ce38e99bd6 100644 --- a/airflow/www/templates/airflow/graph.html +++ b/airflow/www/templates/airflow/graph.html @@ -562,6 +562,9 @@ } else if(task_group_tips.has(task_id)) { const tt = group_tooltip(task_id, tis) taskTip.show(tt, evt.target); + } else if (task_id in tasks) { + const tt = taskNoInstanceTooltip(task_id, tasks[task_id]); + taskTip.show(tt, evt.target) } }; elem.onmouseout = taskTip.hide;