diff --git a/piker/ui/_cursor.py b/piker/ui/_cursor.py
index 3172be1a..8c358c3f 100644
--- a/piker/ui/_cursor.py
+++ b/piker/ui/_cursor.py
@@ -198,12 +198,11 @@ class ContentsLabel(pg.LabelItem):
self,
name: str,
- index: int,
+ ix: int,
array: np.ndarray,
) -> None:
# this being "html" is the dumbest shit :eyeroll:
- first = array[0]['index']
self.setText(
"i:{index}
"
@@ -216,7 +215,7 @@ class ContentsLabel(pg.LabelItem):
"C:{}
"
"V:{}
"
"wap:{}".format(
- *array[index - first][
+ *array[ix][
[
'time',
'open',
@@ -228,7 +227,7 @@ class ContentsLabel(pg.LabelItem):
]
],
name=name,
- index=index,
+ index=ix,
)
)
@@ -236,15 +235,12 @@ class ContentsLabel(pg.LabelItem):
self,
name: str,
- index: int,
+ ix: int,
array: np.ndarray,
) -> None:
-
- first = array[0]['index']
- if index < array[-1]['index'] and index > first:
- data = array[index - first][name]
- self.setText(f"{name}: {data:.2f}")
+ data = array[ix][name]
+ self.setText(f"{name}: {data:.2f}")
class ContentsLabels:
@@ -269,17 +265,20 @@ class ContentsLabels:
def update_labels(
self,
- index: int,
+ x_in: int,
) -> None:
for chart, name, label, update in self._labels:
viz = chart.get_viz(name)
array = viz.shm.array
+ index = array[viz.index_field]
+ start = index[0]
+ stop = index[-1]
if not (
- index >= 0
- and index < array[-1]['index']
+ x_in >= start
+ and x_in <= stop
):
# out of range
print('WTF out of range?')
@@ -288,7 +287,10 @@ class ContentsLabels:
# call provided update func with data point
try:
label.show()
- update(index, array)
+ ix = np.searchsorted(index, x_in)
+ if ix > len(array):
+ breakpoint()
+ update(ix, array)
except IndexError:
log.exception(f"Failed to update label: {name}")