Make `.default_view()` time step aware
When we use an epoch index and any sample rate > 1s we need to scale the "number of bars" to that step in order to place the view correctly in x-domain terms. For now we're calcing the step in-method but likely, longer run, we'll pull this from elsewhere (like a ``Viz`` attr).epoch_index_backup
							parent
							
								
									aa404ab18b
								
							
						
					
					
						commit
						94e0f48f39
					
				| 
						 | 
					@ -1026,20 +1026,13 @@ class ChartPlotWidget(pg.PlotWidget):
 | 
				
			||||||
        index_field = viz.index_field
 | 
					        index_field = viz.index_field
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if index_field == 'time':
 | 
					        if index_field == 'time':
 | 
				
			||||||
            vr = viz.plot.viewRect()
 | 
					 | 
				
			||||||
            vtl, vtr = vr.left(), vr.right()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            if vtl < datum_start:
 | 
					 | 
				
			||||||
                vtl = datum_start
 | 
					 | 
				
			||||||
                vtr = datum_stop
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            (
 | 
					            (
 | 
				
			||||||
                abs_slc,
 | 
					                abs_slc,
 | 
				
			||||||
                read_slc,
 | 
					                read_slc,
 | 
				
			||||||
            ) = slice_from_time(
 | 
					            ) = slice_from_time(
 | 
				
			||||||
                array,
 | 
					                array,
 | 
				
			||||||
                start_t=vtl,
 | 
					                start_t=l,
 | 
				
			||||||
                stop_t=vtr,
 | 
					                stop_t=r,
 | 
				
			||||||
            )
 | 
					            )
 | 
				
			||||||
            iv_arr = array[read_slc]
 | 
					            iv_arr = array[read_slc]
 | 
				
			||||||
            index = iv_arr['time']
 | 
					            index = iv_arr['time']
 | 
				
			||||||
| 
						 | 
					@ -1049,16 +1042,20 @@ class ChartPlotWidget(pg.PlotWidget):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        # these must be array-index-ints (hence the slice from time
 | 
					        # these must be array-index-ints (hence the slice from time
 | 
				
			||||||
        # above).
 | 
					        # above).
 | 
				
			||||||
        x_start, x_stop = index[0], index[-1]
 | 
					        x_stop = index[-1]
 | 
				
			||||||
        view: ChartView = viz.plot.vb
 | 
					        view: ChartView = viz.plot.vb
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        times = viz.shm.array['time']
 | 
				
			||||||
 | 
					        step = times[-1] - times[-2]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (
 | 
					        if (
 | 
				
			||||||
            datum_stop < 0
 | 
					            datum_stop < 0
 | 
				
			||||||
            or l < x_start
 | 
					            or r < datum_start
 | 
				
			||||||
 | 
					            or l > datum_stop
 | 
				
			||||||
            or l < 0
 | 
					            or l < 0
 | 
				
			||||||
            or (datum_stop - datum_start) < 6
 | 
					            or (datum_stop - datum_start) < 6
 | 
				
			||||||
        ):
 | 
					        ):
 | 
				
			||||||
            begin = x_stop - bars_from_y
 | 
					            begin = x_stop - (bars_from_y * step)
 | 
				
			||||||
            view.setXRange(
 | 
					            view.setXRange(
 | 
				
			||||||
                min=begin,
 | 
					                min=begin,
 | 
				
			||||||
                max=x_stop,
 | 
					                max=x_stop,
 | 
				
			||||||
| 
						 | 
					@ -1067,6 +1064,12 @@ class ChartPlotWidget(pg.PlotWidget):
 | 
				
			||||||
            # re-get range
 | 
					            # re-get range
 | 
				
			||||||
            l, datum_start, datum_stop, r = viz.bars_range()
 | 
					            l, datum_start, datum_stop, r = viz.bars_range()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        # print(
 | 
				
			||||||
 | 
					        #     f'l: {l}\n'
 | 
				
			||||||
 | 
					        #     f'datum_start: {datum_start}\n'
 | 
				
			||||||
 | 
					        #     f'datum_stop: {datum_stop}\n\n'
 | 
				
			||||||
 | 
					        #     f'r: {r}\n'
 | 
				
			||||||
 | 
					        # )
 | 
				
			||||||
        # we get the L1 spread label "length" in view coords
 | 
					        # we get the L1 spread label "length" in view coords
 | 
				
			||||||
        # terms now that we've scaled either by user control
 | 
					        # terms now that we've scaled either by user control
 | 
				
			||||||
        # or to the default set of bars as per the immediate block
 | 
					        # or to the default set of bars as per the immediate block
 | 
				
			||||||
| 
						 | 
					@ -1085,15 +1088,15 @@ class ChartPlotWidget(pg.PlotWidget):
 | 
				
			||||||
            )
 | 
					            )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        else:
 | 
					        else:
 | 
				
			||||||
            end = x_stop + y_offset + 1
 | 
					            end = x_stop + (y_offset * step) + 1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        begin = end - (r - l)
 | 
					        begin = end - (r - l)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        debug_msg += (
 | 
					        debug_msg += (
 | 
				
			||||||
            f'end: {end}\n'
 | 
					 | 
				
			||||||
            f'begin: {begin}\n'
 | 
					            f'begin: {begin}\n'
 | 
				
			||||||
 | 
					            f'end: {end}\n'
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
        print(debug_msg)
 | 
					        # print(debug_msg)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        # remove any custom user yrange setttings
 | 
					        # remove any custom user yrange setttings
 | 
				
			||||||
        if self._static_yrange == 'axis':
 | 
					        if self._static_yrange == 'axis':
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue