Fix broker stats

This commit is contained in:
Thomas Nordquist
2019-07-08 00:19:34 +02:00
parent 77dcbccd5c
commit e3584add7c
3 changed files with 94 additions and 85 deletions

View File

@@ -0,0 +1,38 @@
import * as q from '../../../../backend/src/Model'
import { useState, useEffect } from 'react'
/**
* If a node is not available when the plot is shown, keep polling until it has been created
*/
export function usePollingToFetchTreeNode(tree: q.Tree<any> | undefined, path: string) {
const [treeNode, setTreeNode] = useState<q.TreeNode<any> | undefined>()
function pollUntilTreeNodeHasBeenFound() {
if (!tree) {
return
}
const initialTreeNode = tree.findNode(path)
if (initialTreeNode) {
setTreeNode(initialTreeNode)
return
}
let intervalTimer: any
if (!treeNode) {
intervalTimer = setInterval(() => {
const node = tree.findNode(path)
if (node) {
setTreeNode(node)
clearInterval(intervalTimer)
}
}, 500)
}
return function cleanup() {
intervalTimer && clearInterval(intervalTimer)
}
}
useEffect(pollUntilTreeNodeHasBeenFound, [tree])
return treeNode
}