Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 17 additions & 3 deletions scaler/ui/task_graph.py
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@ def __init__(self):

self._start_time = datetime.datetime.now() - datetime.timedelta(minutes=30)
self._last_task_tick = datetime.datetime.now()
self._user_axis_range: Optional[List[int]] = None

self._current_tasks: Dict[str, Dict[bytes, datetime.datetime]] = {}
self._completed_data_cache: Dict[str, Dict] = {}
Expand Down Expand Up @@ -212,8 +213,17 @@ def setup_task_stream(self, settings: Settings):
self._figure = fig
self._completed_data_cache = {}
self._plot = ui.plotly(self._figure).classes("w-full h-full")
self._plot.on("plotly_relayout", self._on_plotly_relayout)
self._settings = settings

def _on_plotly_relayout(self, e):
x0 = e.args.get("xaxis.range[0]")
x1 = e.args.get("xaxis.range[1]")
if x0 is not None and x1 is not None:
self._user_axis_range = [x0, x1]
else:
self._user_axis_range = None

def __setup_row_cache(self, row_label: str):
if row_label in self._completed_data_cache:
return
Expand Down Expand Up @@ -430,9 +440,9 @@ def __handle_task_result(self, state: StateTask, now: datetime.datetime):
task_state = state.state
task_time = format_timediff(start, now)

row_label = self.__add_task_to_chart(worker, state.task_id, task_state, task_time)
with self._data_update_lock:
self.__remove_task_from_worker(worker=worker, task_id=state.task_id, now=now, force_new_time=False)
row_label = self.__add_task_to_chart(worker, state.task_id, task_state, task_time)
self._row_last_used[row_label] = now

self._task_id_to_printable_capabilities.pop(state.task_id, None)
Expand All @@ -455,6 +465,7 @@ def __handle_new_worker(self, worker: str, now: datetime.datetime):

def __remove_task_from_worker(self, worker: str, task_id: bytes, now: datetime.datetime, force_new_time: bool):
# Remove a single task from the worker's current task mapping.
self._task_row_assignment.pop(task_id, None)
task_map = self._current_tasks.get(worker)
if not task_map:
return
Expand Down Expand Up @@ -558,7 +569,7 @@ def __remove_worker_from_history(self, worker: str):
for row_label in self._worker_rows.pop(worker, []):
if row_label in self._completed_data_cache:
self._completed_data_cache.pop(row_label)
self._seen_workers.remove(worker)
self._seen_workers.remove(worker)

def __remove_old_tasks_from_history(self, store_duration: datetime.timedelta):
for row_label in self._completed_data_cache.keys():
Expand Down Expand Up @@ -690,7 +701,10 @@ def __render_plot(self, now: datetime.datetime):
ticks = make_ticks(lower_bound, upper_bound)
tick_text = make_tick_text(int(self._settings.stream_window.total_seconds()))

self._figure["layout"]["xaxis"]["range"] = [lower_bound, upper_bound]
if self._user_axis_range:
self._figure["layout"]["xaxis"]["range"] = self._user_axis_range
else:
self._figure["layout"]["xaxis"]["range"] = [lower_bound, upper_bound]
self._figure["layout"]["xaxis"]["tickvals"] = ticks
self._figure["layout"]["xaxis"]["ticktext"] = tick_text
self._plot.update()
5 changes: 2 additions & 3 deletions scaler/ui/utility.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,5 @@ def display_capabilities(capabilities: Dict[str, int]) -> str:
if not capabilities or len(capabilities) == 0:
return "<no capabilities>"

# Ensure equivalent capabilities produce the same string
sorted_items = sorted(capabilities.items(), key=lambda item: (item[0], item[1]))
return " & ".join([f"{key}: {value}" for key, value in sorted_items])
# Capabilities is just the keys, value is ignored.
return " & ".join(sorted(capabilities.keys()))
2 changes: 1 addition & 1 deletion scaler/version.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
1.12.14
1.12.15
Loading