""" Copyright 2025 Balacoon Leaderboard tab for TTSLeaderboard. """ import gradio as gr from dataset_utils import get_system_types, get_datasets from leaderboard_data import get_leaderboard_data def create_leaderboard_tab(): with gr.Row(): gr.Markdown(""" Select system type and a dataset, to see the leaderboard. """) with gr.Row(): system_type = gr.Dropdown(choices=get_system_types(), label="System Type", value=None) dataset = gr.Dropdown(choices=[], label="Dataset", value=None) with gr.Row(): table = gr.DataFrame( value=None, row_count=0, col_count=0, ) with gr.Row(): legend = gr.Markdown(value="") def update_datasets(system_type: str): # When system type changes, clear dataset and table dataset_choices = get_datasets(system_type) if system_type else [] return [ gr.Dropdown(choices=dataset_choices, value=None), gr.DataFrame(value=None, row_count=0, col_count=0) ] def update_table(system_type: str, dataset: str): # Only populate table when both selections are made if not system_type or not dataset: return [gr.DataFrame(value=None, row_count=0), gr.Markdown("")] df, datatypes, description = get_leaderboard_data(system_type, dataset) return [ gr.DataFrame( value=df, row_count=(len(df), "fixed"), datatype=datatypes ), gr.Markdown(description) ] system_type.change( fn=update_datasets, inputs=[system_type], outputs=[dataset, table] ) dataset.change( fn=update_table, inputs=[system_type, dataset], outputs=[table, legend] )