@@ -46,7 +46,7 @@ def __rich__(self) -> Panel:
4646 else :
4747 message += "Cluster Agent | "
4848 message += (f"DCSServerBot Version { self .node .bot_version } .{ self .node .sub_version } | "
49- f"DCS Version { self .service .dcs_version } [/]" )
49+ f"DCS Version { self .node .dcs_version } [/]" )
5050 grid .add_row (message , datetime .now ().ctime ().replace (":" , "[blink]:[/]" ))
5151 return Panel (grid , style = config .get ("background" , "white on navy_blue" ),
5252 border_style = config .get ("border" , "white" ))
@@ -225,23 +225,26 @@ def __init__(self, node):
225225 self .queue = None
226226 self .log_handler = None
227227 self .old_handler = None
228- self .dcs_branch = None
229- self .dcs_version = None
230228 self .update_task = None
229+ self .header_widget = None
230+ self .servers_widget = None
231+ self .log_widget = None
231232 self .stop_event = asyncio .Event ()
232233
233234 def is_multinode (self ):
234235 return len (self .node .all_nodes ) > 1
235236
237+ def create_widgets (self ):
238+ self .header_widget = HeaderWidget (self )
239+ self .servers_widget = ServersWidget (self )
240+ self .log_widget = LogWidget (self )
241+
236242 def create_layout (self ):
237- header = HeaderWidget (self )
238- servers = ServersWidget (self )
239- log = LogWidget (self )
240243 layout = Layout ()
241244 layout .split (
242- Layout (header , name = "header" , size = 3 ),
243- Layout (servers , name = "main" , size = len (self .bus .servers ) + 6 ),
244- Layout (log , name = "log" , ratio = 2 , minimum_size = 5 )
245+ Layout (self . header_widget , name = "header" , size = 3 ),
246+ Layout (self . servers_widget , name = "main" , size = len (self .bus .servers ) + 6 ),
247+ Layout (self . log_widget , name = "log" , ratio = 2 , minimum_size = 5 )
245248 )
246249 if self .node .master and self .is_multinode ():
247250 servers = ServersWidget (self )
@@ -270,7 +273,7 @@ async def start(self):
270273 await super ().start ()
271274 self .bus = ServiceRegistry .get (ServiceBus )
272275 self .hook_logging ()
273- self .dcs_branch , self . dcs_version = await self . node . get_dcs_branch_and_version ()
276+ self .create_widgets ()
274277 self .layout = self .create_layout ()
275278 self .stop_event .clear ()
276279 self .update_task = asyncio .create_task (self .update ())
@@ -291,8 +294,14 @@ async def switch(self):
291294
292295 async def update (self ):
293296 try :
297+ previous_server_count = len (self .bus .servers )
294298 with Live (self .layout , refresh_per_second = 1 , screen = True ):
295- await self .stop_event .wait ()
299+ while not self .stop_event .is_set ():
300+ current_server_count = len (self .bus .servers )
301+ if current_server_count != previous_server_count :
302+ self .layout = self .create_layout ()
303+ previous_server_count = current_server_count
304+ await asyncio .sleep (1 )
296305 except Exception as ex :
297306 self .log .exception (ex )
298307 await self .stop ()
0 commit comments