diff --git a/piker/ui/_display.py b/piker/ui/_display.py index c2dd0801..9f27cf7d 100644 --- a/piker/ui/_display.py +++ b/piker/ui/_display.py @@ -90,7 +90,6 @@ log = get_logger(__name__) def chart_maxmin( chart: ChartPlotWidget, fqsn: str, - # ohlcv_shm: ShmArray, vlm_chart: ChartPlotWidget | None = None, ) -> tuple[ @@ -106,13 +105,18 @@ def chart_maxmin( ''' main_viz = chart.get_viz(chart.name) - last_bars_range = main_viz.bars_range() - out = chart.maxmin(name=fqsn) + out = main_viz.maxmin() if out is None: - return (last_bars_range, 0, 0, 0) + return (0, 0, 0) - mn, mx = out + ( + ixrng, + read_slc, + mxmn, + ) = out + + mn, mx = mxmn mx_vlm_in_view = 0 @@ -125,10 +129,9 @@ def chart_maxmin( _, mx_vlm_in_view = out return ( - last_bars_range, mx, max(mn, 0), # presuming price can't be negative? - mx_vlm_in_view, + mx_vlm_in_view, # vlm max ) @@ -226,7 +229,7 @@ async def increment_history_view( do_append and liv ): - hist_viz.plot.vb._set_yrange() + hist_viz.plot.vb._set_yrange(viz=hist_viz) # check if tread-in-place x-shift is needed if should_tread: @@ -313,9 +316,7 @@ async def graphics_update_loop( fqsn, vlm_chart, ) - last_bars_range: tuple[float, float] ( - last_bars_range, last_mx, last_mn, last_mx_vlm, @@ -502,12 +503,11 @@ def graphics_update_cycle( # TODO: we should only run mxmn when we know # an update is due via ``do_append`` above. ( - brange, mx_in_view, mn_in_view, mx_vlm_in_view, ) = ds.maxmin() - l, lbar, rbar, r = brange + mx = mx_in_view + tick_margin mn = mn_in_view - tick_margin profiler('`ds.maxmin()` call') @@ -524,14 +524,12 @@ def graphics_update_cycle( ): chart.update_graphics_from_flow( fqsn, - # chart.name, # do_append=do_append, ) main_viz.draw_last(array_key=fqsn) hist_chart.update_graphics_from_flow( fqsn, - # chart.name, # do_append=do_append, ) @@ -546,7 +544,7 @@ def graphics_update_cycle( or trigger_all ): chart.increment_view(datums=append_diff) - main_viz.plot.vb._set_yrange() + main_viz.plot.vb._set_yrange(viz=main_viz) # NOTE: since vlm and ohlc charts are axis linked now we don't # need the double increment request? @@ -696,7 +694,7 @@ def graphics_update_cycle( is_1m=True, ) if hist_liv: - hist_viz.plot.vb._set_yrange() + hist_viz.plot.vb._set_yrange(viz=hist_viz) # XXX: update this every draw cycle to make varz['last_mx'], varz['last_mn'] = mx, mn @@ -711,7 +709,6 @@ def graphics_update_cycle( and not viz.is_ohlc ): update_fsp_chart( - chart, viz, curve_name, array_key=curve_name, @@ -794,7 +791,6 @@ def graphics_update_cycle( # and curve_name != fqsn ): update_fsp_chart( - vlm_chart, viz, curve_name, array_key=curve_name, @@ -806,7 +802,7 @@ def graphics_update_cycle( # resizing from last quote?) fvb = viz.plot.vb fvb._set_yrange( - name=curve_name, + viz=viz, ) elif ( diff --git a/piker/ui/_fsp.py b/piker/ui/_fsp.py index d5ffe7f8..5d2c50ef 100644 --- a/piker/ui/_fsp.py +++ b/piker/ui/_fsp.py @@ -78,7 +78,6 @@ def has_vlm(ohlcv: ShmArray) -> bool: def update_fsp_chart( - chart: ChartPlotWidget, viz, graphics_name: str, array_key: Optional[str], @@ -101,18 +100,14 @@ def update_fsp_chart( # update graphics # NOTE: this does a length check internally which allows it # staying above the last row check below.. - chart.update_graphics_from_flow( - graphics_name, - array_key=array_key or graphics_name, - **kwargs, - ) + viz.update_graphics() # XXX: re: ``array_key``: fsp func names must be unique meaning we # can't have duplicates of the underlying data even if multiple # sub-charts reference it under different 'named charts'. # read from last calculated value and update any label - last_val_sticky = chart.plotItem.getAxis( + last_val_sticky = viz.plot.getAxis( 'right')._stickies.get(graphics_name) if last_val_sticky: last = last_row[array_key] diff --git a/piker/ui/_interaction.py b/piker/ui/_interaction.py index e19887da..2e355edc 100644 --- a/piker/ui/_interaction.py +++ b/piker/ui/_interaction.py @@ -45,6 +45,7 @@ from . import _event if TYPE_CHECKING: from ._chart import ChartPlotWidget + from ._dataviz import Viz log = get_logger(__name__) @@ -728,6 +729,7 @@ class ChartView(ViewBox): *, yrange: Optional[tuple[float, float]] = None, + viz: Viz | None = None, # NOTE: this value pairs (more or less) with L1 label text # height offset from from the bid/ask lines.