diff --git a/dashboard.py b/dashboard.py index ccd3b7b..d58545b 100755 --- a/dashboard.py +++ b/dashboard.py @@ -64,41 +64,48 @@ def create_node_tree(all_server_data) -> Tree: for server_host, server_data in all_server_data['servers'].items(): - if server_host == local_hostname: - node_tree_text = f"[cyan bold]{server_host}[/] [yellow](This Computer)[default] - [green]Running" + node_title_local = f"[cyan bold]{server_host}[/] [yellow](This Computer)[default]" + node_title_remote = f"[cyan]{server_host} [magenta](Remote)[default]" + node_tree_text = node_title_local if (server_host == local_hostname) else node_title_remote + + if server_data.get('is_online', False): + + node_tree_text = node_tree_text + " - [green]Running" + node_tree = Tree(node_tree_text) + + stats_text = f"CPU: [yellow]{server_data['status']['cpu_percent']}% [default]| RAM: " \ + f"[yellow]{server_data['status']['memory_percent']}% [default]| Cores: " \ + f"[yellow]{server_data['status']['cpu_count']} [default]| " \ + f"{server_data['status']['platform'].split('-')[0]}" + + node_tree.add(Tree(stats_text)) + + running_jobs = [job for job in server_data['jobs'] if job['status'] == 'running'] + not_started = [job for job in server_data['jobs'] if job['status'] == 'not_started'] + scheduled = [job for job in server_data['jobs'] if job['status'] == 'scheduled'] + jobs_to_display = running_jobs + not_started + scheduled + + jobs_tree = Tree(f"Running: [green]{len(running_jobs)} [default]| Queued: [cyan]{len(not_started)}" + f"[default] | Scheduled: [cyan]{len(scheduled)}") + + for job in jobs_to_display: + renderer = f"{renderer_colors[job['renderer']]}{job['renderer']}[default]" + filename = os.path.basename(job['render']['input']).split('.')[0] + if job['status'] == 'running': + jobs_tree.add(f"[bold]{renderer} {filename} ({job['id']}) - {status_string_to_color(job['status'])}{(float(job['render']['percent_complete']) * 100):.1f}%") + else: + jobs_tree.add(f"{filename} ({job['id']}) - {status_string_to_color(job['status'])}{job['status'].title()}") + + if not jobs_to_display: + jobs_tree.add("[italic]No running jobs") + + node_tree.add(jobs_tree) + main_tree.add(node_tree) else: - node_tree_text = f"[cyan]{server_host} [magenta](Remote)[default] - [green]Running" - - node_tree = Tree(node_tree_text) - - stats_text = f"CPU: [yellow]{server_data['status']['cpu_percent']}% [default]| RAM: " \ - f"[yellow]{server_data['status']['memory_percent']}% [default]| Cores: " \ - f"[yellow]{server_data['status']['cpu_count']} [default]| " \ - f"{server_data['status']['platform'].split('-')[0]}" - - node_tree.add(Tree(stats_text)) - - running_jobs = [job for job in server_data['jobs'] if job['status'] == 'running'] - not_started = [job for job in server_data['jobs'] if job['status'] == 'not_started'] - scheduled = [job for job in server_data['jobs'] if job['status'] == 'scheduled'] - jobs_to_display = running_jobs + not_started + scheduled - - jobs_tree = Tree(f"Running: [green]{len(running_jobs)} [default]| Queued: [cyan]{len(not_started)}" - f"[default] | Scheduled: [cyan]{len(scheduled)}") - - for job in jobs_to_display: - renderer = f"{renderer_colors[job['renderer']]}{job['renderer']}[default]" - filename = os.path.basename(job['render']['input']).split('.')[0] - if job['status'] == 'running': - jobs_tree.add(f"[bold]{renderer} {filename} ({job['id']}) - {status_string_to_color(job['status'])}{(float(job['render']['percent_complete']) * 100):.1f}%") - else: - jobs_tree.add(f"{filename} ({job['id']}) - {status_string_to_color(job['status'])}{job['status'].title()}") - - if not jobs_to_display: - jobs_tree.add("[italic]No running jobs") - - node_tree.add(jobs_tree) - main_tree.add(node_tree) + # if server is offline + node_tree_text = node_tree_text + " - [red]Offline" + node_tree = Tree(node_tree_text) + main_tree.add(node_tree) return main_tree diff --git a/templates/upload.html b/templates/upload.html index 89a56d0..52f2b57 100644 --- a/templates/upload.html +++ b/templates/upload.html @@ -3,7 +3,7 @@