Skip to content

Commit 80f8afd

Browse files
fix reload not updating frontend
1 parent e59db6b commit 80f8afd

File tree

2 files changed

+50
-22
lines changed

2 files changed

+50
-22
lines changed

src/kweb/layout_server.py

+44-22
Original file line numberDiff line numberDiff line change
@@ -462,35 +462,19 @@ async def connection(self, websocket: WebSocket, path: str | None = None) -> Non
462462
self.layout_view.max_hier()
463463

464464
if self.layout_view.active_cellview().layout().cells():
465-
await websocket.send_text(
466-
json.dumps(
467-
{
468-
"msg": "loaded",
469-
"modes": self.mode_dump(),
470-
"annotations": self.annotation_dump(),
471-
"layers": self.layer_dump(),
472-
"hierarchy": self.hierarchy_dump(),
473-
"ci": self.current_cell().cell_index(),
474-
}
475-
)
465+
await self._send_loaded(
466+
websocket=websocket,
467+
cell_index=self.current_cell().cell_index(),
476468
)
477469
await self.send_metainfo(
478470
cell=self.current_cell(),
479471
websocket=websocket,
480472
splitter=self.meta_splitter,
481473
)
482474
else:
483-
await websocket.send_text(
484-
json.dumps(
485-
{
486-
"msg": "loaded",
487-
"modes": self.mode_dump(),
488-
"annotations": self.annotation_dump(),
489-
"layers": self.layer_dump(),
490-
"hierarchy": self.hierarchy_dump(),
491-
"ci": 0,
492-
}
493-
)
475+
await self._send_loaded(
476+
websocket=websocket,
477+
cell_index=0,
494478
)
495479

496480
if loaded_rdb:
@@ -680,12 +664,50 @@ async def reader(self, websocket: WebSocket, data: str) -> None:
680664
case "rdb-selected":
681665
await self.draw_items(js["items"])
682666
case "reload":
667+
cname = self.current_cell().name
683668
self.layout_view.reload_layout(
684669
self.layout_view.active_cellview().index()
685670
)
671+
c = self.layout_view.active_cellview().layout().cell(cname)
672+
if c is None:
673+
tcs = self.layout_view.active_cellview().layout().top_cells()
674+
if len(tcs) > 0:
675+
c = tcs[0]
676+
677+
ci = 0
678+
if c is not None:
679+
ci = c.cell_index()
680+
await self.set_current_cell(ci, websocket=websocket)
686681
if self.rdb_file is not None:
687682
self.db.load(self.rdb_file)
688683

684+
await self._send_reloaded(
685+
websocket=websocket,
686+
cell_index=self.current_cell().cell_index(),
687+
)
688+
689+
async def _send_loaded(self, websocket: WebSocket, cell_index: int = 0) -> None:
690+
await websocket.send_json(
691+
{
692+
"msg": "loaded",
693+
"modes": self.mode_dump(),
694+
"annotations": self.annotation_dump(),
695+
"layers": self.layer_dump(),
696+
"hierarchy": self.hierarchy_dump(),
697+
"ci": cell_index,
698+
}
699+
)
700+
701+
async def _send_reloaded(self, websocket: WebSocket, cell_index: int = 0) -> None:
702+
await websocket.send_json(
703+
{
704+
"msg": "reloaded",
705+
"layers": self.layer_dump(),
706+
"hierarchy": self.hierarchy_dump(),
707+
"ci": cell_index,
708+
}
709+
)
710+
689711

690712
def meta_json_serializer(obj: object) -> str:
691713
return str(obj)

src/kweb/static/viewer.js

+6
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,11 @@ socket.onmessage = async function(evt) {
4949
showLayers(js.layers);
5050
showMenu(js.modes, js.annotations);
5151
showCells(js.hierarchy, js.ci)
52+
} else if (js.msg == "reloaded") {
53+
console.log(js.hierarchy)
54+
console.log(js.ci)
55+
showLayers(js.layers);
56+
showCells(js.hierarchy, js.ci)
5257
} else if (js.msg == "layer-u") {
5358
updateLayerImages(js.layers);
5459
} else if (js.msg == "metainfo") {
@@ -414,6 +419,7 @@ function showLayers(layers) {
414419
let layerTable = document.getElementById("table-layer") || document.createElement("div");
415420
layerTable.id = "table-layer";
416421
layerTable.className = "container-fluid text-left px-0 pb-2";
422+
layerTable.replaceChildren();
417423
layerElement.replaceChildren(layerButtons, layerTable);
418424

419425
appendLayers(layerTable, layers, addempty=!layerSwitch.checked, addpaddings=true);

0 commit comments

Comments
 (0)