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;