You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airflow.apache.org by bb...@apache.org on 2022/02/22 15:57:43 UTC
[airflow] 01/01: fix auto refresh check on page load
This is an automated email from the ASF dual-hosted git repository.
bbovenzi pushed a commit to branch fix-graph-autorefresh
in repository https://gitbox.apache.org/repos/asf/airflow.git
commit e61e3cb0a65060caddc7d2a40a4aa49cc7fd755e
Author: Brent Bovenzi <br...@gmail.com>
AuthorDate: Sun Feb 20 12:46:01 2022 -0500
fix auto refresh check on page load
---
airflow/www/static/js/graph.js | 26 ++++++++++++++++----------
1 file changed, 16 insertions(+), 10 deletions(-)
diff --git a/airflow/www/static/js/graph.js b/airflow/www/static/js/graph.js
index 2e0522c..1bf4b96 100644
--- a/airflow/www/static/js/graph.js
+++ b/airflow/www/static/js/graph.js
@@ -58,6 +58,15 @@ const stateFocusMap = {
deferred: false,
no_status: false,
};
+
+const isFinal = () => {
+ const states = Object.values(taskInstances).map((ti) => ti.state);
+
+ // end refresh if all states are final
+ return !states.some((state) => (
+ ['success', 'failed', 'upstream_failed', 'skipped', 'removed'].indexOf(state) === -1));
+};
+
const taskTip = d3.tip()
.attr('class', 'tooltip d3-tip')
.html((toolTipHtml) => toolTipHtml);
@@ -363,13 +372,10 @@ function handleRefresh() {
if (prevTis !== tis) {
// eslint-disable-next-line no-global-assign
taskInstances = JSON.parse(tis);
- const states = Object.values(taskInstances).map((ti) => ti.state);
updateNodesStates(taskInstances);
// end refresh if all states are final
- if (!states.some((state) => (
- ['success', 'failed', 'upstream_failed', 'skipped', 'removed'].indexOf(state) === -1))
- ) {
+ if (isFinal()) {
$('#auto_refresh').prop('checked', false);
clearInterval(refreshInterval);
}
@@ -411,9 +417,8 @@ $('#auto_refresh').change(() => {
});
function initRefresh() {
- if (localStorage.getItem('disableAutoRefresh')) {
- $('#auto_refresh').prop('checked', false);
- }
+ const isDisabled = localStorage.getItem('disableAutoRefresh');
+ $('#auto_refresh').prop('checked', !(isDisabled || isFinal()));
startOrStopRefresh();
d3.select('#refresh_button').on('click', () => handleRefresh());
}
@@ -472,14 +477,15 @@ function groupTooltip(node, tis) {
// Initiating the tooltips
function updateNodesStates(tis) {
g.nodes().forEach((nodeId) => {
- const { elem } = g.node(nodeId);
+ const node = g.node(nodeId);
+ const { elem } = node;
+ const taskId = nodeId;
+
if (elem) {
const classes = `node enter ${getNodeState(nodeId, tis)}`;
elem.setAttribute('class', classes);
elem.setAttribute('data-toggle', 'tooltip');
- const taskId = nodeId;
- const node = g.node(nodeId);
elem.onmouseover = (evt) => {
let tt;
if (taskId in tis) {