SPB Git

Repository Public

Commit

web: charts — relecture des valeurs d'indicateurs sur les frames suivantes (calcul paresseux du moteur) pour une légende renseignée sans crosshair

Simon-Pierre Boucher committed · Sep 7, 2026 parent b44f78f
1 changed file +6 −0 Browse files
modified hfmarketdata/web/src/pages/charts/ChartView.jsx +6 −0
@@ -39,6 +39,7 @@ const ChartView = forwardRef(function ChartView({ cs, onChange, prefs, theme, ac
39 const [hover, setHover] = useState(null) 39 const [hover, setHover] = useState(null)
40 const [lastBars, setLastBars] = useState({ last: null, prev: null }) 40 const [lastBars, setLastBars] = useState({ last: null, prev: null })
41 const [indValues, setIndValues] = useState({}) 41 const [indValues, setIndValues] = useState({})
42+ const refreshTries = useRef(0)
42 const [plotColors, setPlotColors] = useState({}) 43 const [plotColors, setPlotColors] = useState({})
43 const [name, setName] = useState('') 44 const [name, setName] = useState('')
44 const [suggestions, setSuggestions] = useState([]) 45 const [suggestions, setSuggestions] = useState([])
@@ -95,6 +96,11 @@ const ChartView = forwardRef(function ChartView({ cs, onChange, prefs, theme, ac
95 } 96 }
96 setIndValues(vals) 97 setIndValues(vals)
97 setPlotColors(colors) 98 setPlotColors(colors)
99+ // The engine computes indicators lazily on its next frame: right after setData()/addIndicator() the arrays may
100+ // still be empty. Re-read on the following frames (bounded) until every indicator has a value or gives up.
101+ const pending = data.length > 0 && Object.values(vals).some(v => Object.keys(v).length === 0 || Object.values(v).every(x => x == null))
102+ if (pending && (refreshTries.current = (refreshTries.current || 0) + 1) <= 5) requestAnimationFrame(() => refreshLastValues())
103+ else refreshTries.current = 0
98 }, []) 104 }, [])
99 105
100 const announce = useCallback(() => { 106 const announce = useCallback(() => {
101 107
Menu

Theme