From 6ce699ae1f0fa9b078f2c84eb1b290600c27f0a7 Mon Sep 17 00:00:00 2001 From: Tyler Goodlet Date: Wed, 13 Jul 2022 12:40:00 -0400 Subject: [PATCH] Repair display loop to work when no vlm chart is loaded --- piker/ui/_display.py | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/piker/ui/_display.py b/piker/ui/_display.py index d63ee17f..ba58ae5a 100644 --- a/piker/ui/_display.py +++ b/piker/ui/_display.py @@ -63,7 +63,7 @@ from ..log import get_logger log = get_logger(__name__) # TODO: load this from a config.toml! -_quote_throttle_rate: int = 22 # Hz +_quote_throttle_rate: int = 60 # Hz # a working tick-type-classes template @@ -136,16 +136,16 @@ class DisplayState: # high level chart handles linked: LinkedSplits chart: ChartPlotWidget - vlm_chart: ChartPlotWidget # axis labels l1: L1Labels last_price_sticky: YAxisLabel - vlm_sticky: YAxisLabel # misc state tracking vars: dict[str, Any] + vlm_chart: Optional[ChartPlotWidget] = None + vlm_sticky: Optional[YAxisLabel] = None wap_in_history: bool = False @@ -185,9 +185,6 @@ async def graphics_update_loop( *ohlcv.array[-1][['index', 'close']] ) - if vlm_chart: - vlm_sticky = vlm_chart._ysticks['volume'] - maxmin = partial( chart_maxmin, chart, @@ -236,8 +233,6 @@ async def graphics_update_loop( 'ohlcv': ohlcv, 'chart': chart, 'last_price_sticky': last_price_sticky, - 'vlm_chart': vlm_chart, - 'vlm_sticky': vlm_sticky, 'l1': l1, 'vars': { @@ -250,6 +245,11 @@ async def graphics_update_loop( } }) + if vlm_chart: + vlm_sticky = vlm_chart._ysticks['volume'] + ds.vlm_chart = vlm_chart + ds.vlm_sticky = vlm_sticky + chart.default_view() # main real-time quotes update loop @@ -322,7 +322,7 @@ def graphics_update_cycle( for sym, quote in ds.quotes.items(): # compute the first available graphic's x-units-per-pixel - uppx = vlm_chart.view.x_uppx() + uppx = chart.view.x_uppx() # NOTE: vlm may be written by the ``brokerd`` backend # event though a tick sample is not emitted. @@ -786,7 +786,10 @@ async def display_symbol_data( async with trio.open_nursery() as ln: # if available load volume related built-in display(s) - if has_vlm(ohlcv): + if ( + not symbol.broker_info[provider].get('no_vlm', False) + and has_vlm(ohlcv) + ): vlm_chart = await ln.start( open_vlm_displays, linked,