pglive: Fix range_width bugs at boundary condition

This commit is contained in:
linuswck 2025-01-28 16:49:56 +08:00
parent 980f7364ac
commit 7c447ed7c0

View File

@ -1,5 +1,5 @@
diff --git a/pglive/sources/live_axis_range.py b/pglive/sources/live_axis_range.py diff --git a/pglive/sources/live_axis_range.py b/pglive/sources/live_axis_range.py
index cd3a7fc..102a48f 100755 index cd3a7fc..276c7b6 100755
--- a/pglive/sources/live_axis_range.py --- a/pglive/sources/live_axis_range.py
+++ b/pglive/sources/live_axis_range.py +++ b/pglive/sources/live_axis_range.py
@@ -13,6 +13,10 @@ class LiveAxisRange: @@ -13,6 +13,10 @@ class LiveAxisRange:
@ -24,7 +24,13 @@ index cd3a7fc..102a48f 100755
self.x_range: Dict[str, List[float]] = {} self.x_range: Dict[str, List[float]] = {}
self.y_range: Dict[str, List[float]] = {} self.y_range: Dict[str, List[float]] = {}
self.final_x_range = [0.0, 0.0] self.final_x_range = [0.0, 0.0]
@@ -70,6 +78,7 @@ class LiveAxisRange: @@ -65,11 +73,12 @@ class LiveAxisRange:
final_range[0] = x_range[0]
if final_range[1] < x_range[1]:
final_range[1] = x_range[1]
- if final_range[0] == final_range[1]:
+ if final_range[0] == final_range[1] and self.x_range_width is not None:
# Pyqtgraph ViewBox.setRange doesn't like same value for min and max,
# therefore in that case we must set some range # therefore in that case we must set some range
final_range[0] -= 0.4 final_range[0] -= 0.4
final_range[1] += 0.4 final_range[1] += 0.4
@ -32,7 +38,23 @@ index cd3a7fc..102a48f 100755
if self.final_x_range != final_range: if self.final_x_range != final_range:
self.final_x_range = final_range self.final_x_range = final_range
return self.final_x_range return self.final_x_range
@@ -137,6 +146,7 @@ class LiveAxisRange: @@ -88,7 +97,7 @@ class LiveAxisRange:
final_range[1] = x_range[1]
if final_range is None:
final_range = [0, 0]
- if final_range[0] == final_range[1]:
+ if final_range[0] == final_range[1] and self.x_range_width is None:
# Pyqtgraph ViewBox.setRange doesn't like same value for min and max,
# therefore in that case we must set some range
final_range[0] -= 0.4
@@ -132,11 +141,13 @@ class LiveAxisRange:
final_range[0] = y_range[0]
if final_range[1] < y_range[1]:
final_range[1] = y_range[1]
- if final_range[0] == final_range[1]:
+
+ if final_range[0] == final_range[1] and self.y_range_width is None:
# Pyqtgraph ViewBox.setRange doesn't like same value for min and max,
# therefore in that case we must set some range # therefore in that case we must set some range
final_range[0] -= 0.4 final_range[0] -= 0.4
final_range[1] += 0.4 final_range[1] += 0.4
@ -40,7 +62,7 @@ index cd3a7fc..102a48f 100755
if self.final_y_range != final_range: if self.final_y_range != final_range:
self.final_y_range = final_range self.final_y_range = final_range
return self.final_y_range return self.final_y_range
@@ -199,6 +209,24 @@ class LiveAxisRange: @@ -199,6 +210,24 @@ class LiveAxisRange:
else: else:
return None return None
@ -56,9 +78,9 @@ index cd3a7fc..102a48f 100755
+ bound_width = abs(bound[0] - bound[1]) + bound_width = abs(bound[0] - bound[1])
+ if bound_width < final_range_width: + if bound_width < final_range_width:
+ final_range = bound + final_range = bound
+ if final_range[0] < bound[0]: + if final_range[0] <= bound[0]:
+ final_range = [bound[0], bound[0] + final_range_width] + final_range = [bound[0], bound[0] + final_range_width]
+ elif final_range[1] > bound[1]: + elif final_range[1] >= bound[1]:
+ final_range = [bound[0] - final_range_width, bound[1]] + final_range = [bound[0] - final_range_width, bound[1]]
+ return final_range + return final_range
+ +