Commit
·
02f0cce
1
Parent(s):
89c9c96
adjust layout
Browse files- tabs/leaderboard_tab.py +23 -2
tabs/leaderboard_tab.py
CHANGED
|
@@ -145,6 +145,25 @@ def make_ranked(df: pd.DataFrame) -> pd.DataFrame:
|
|
| 145 |
ranked = df.sort_values(by='overall_score', ascending=False).reset_index(drop=True)
|
| 146 |
ranked.insert(0, "Rank", range(1, len(ranked) + 1))
|
| 147 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 148 |
# 重命名列名为简写形式
|
| 149 |
ranked = ranked.rename(columns=COLUMN_RENAME_MAP)
|
| 150 |
|
|
@@ -212,11 +231,13 @@ def create_leaderboard_tab():
|
|
| 212 |
# 初始化数据(不使用样式)
|
| 213 |
initial_df = make_ranked(load_leaderboard())
|
| 214 |
|
| 215 |
-
# 获取列数据类型,将 model 列设置为 html
|
| 216 |
column_count = len(initial_df.columns)
|
| 217 |
datatypes = ["str"] * column_count
|
| 218 |
model_col_index = initial_df.columns.get_loc('model')
|
|
|
|
| 219 |
datatypes[model_col_index] = "html"
|
|
|
|
| 220 |
|
| 221 |
# 创建 Dataframe 组件
|
| 222 |
table = gr.Dataframe(
|
|
@@ -227,7 +248,7 @@ def create_leaderboard_tab():
|
|
| 227 |
elem_id="leaderboard_table", # 添加元素ID
|
| 228 |
interactive=False, # 禁用编辑功能
|
| 229 |
wrap=True, # 启用自动换行,超长文本会自动换行显示
|
| 230 |
-
column_widths=["80px", "
|
| 231 |
)
|
| 232 |
|
| 233 |
def update_display(search_text, selected_categories):
|
|
|
|
| 145 |
ranked = df.sort_values(by='overall_score', ascending=False).reset_index(drop=True)
|
| 146 |
ranked.insert(0, "Rank", range(1, len(ranked) + 1))
|
| 147 |
|
| 148 |
+
medal_styles = {
|
| 149 |
+
1: {'icon': '🥇', 'color': '#FFD700'}, # 金色
|
| 150 |
+
2: {'icon': '🥈', 'color': '#C0C0C0'}, # 暗银色
|
| 151 |
+
3: {'icon': '🥉', 'color': '#CD7F32'} # 铜色
|
| 152 |
+
}
|
| 153 |
+
|
| 154 |
+
def format_rank_with_medal(rank_num):
|
| 155 |
+
if rank_num in medal_styles:
|
| 156 |
+
style = medal_styles[rank_num]
|
| 157 |
+
# 数字加粗+颜色,奖牌图标放大
|
| 158 |
+
return (
|
| 159 |
+
f'<span style="font-weight: bold; color: {style["color"]};">{rank_num}</span> '
|
| 160 |
+
f'<span style="font-size: 1.5em;">{style["icon"]}</span>'
|
| 161 |
+
)
|
| 162 |
+
else:
|
| 163 |
+
return str(rank_num)
|
| 164 |
+
|
| 165 |
+
ranked['Rank'] = ranked['Rank'].apply(format_rank_with_medal)
|
| 166 |
+
|
| 167 |
# 重命名列名为简写形式
|
| 168 |
ranked = ranked.rename(columns=COLUMN_RENAME_MAP)
|
| 169 |
|
|
|
|
| 231 |
# 初始化数据(不使用样式)
|
| 232 |
initial_df = make_ranked(load_leaderboard())
|
| 233 |
|
| 234 |
+
# 获取列数据类型,将 model 列和 Rank 列设置为 html
|
| 235 |
column_count = len(initial_df.columns)
|
| 236 |
datatypes = ["str"] * column_count
|
| 237 |
model_col_index = initial_df.columns.get_loc('model')
|
| 238 |
+
rank_col_index = initial_df.columns.get_loc('Rank')
|
| 239 |
datatypes[model_col_index] = "html"
|
| 240 |
+
datatypes[rank_col_index] = "html" # Rank 列也需要渲染 HTML
|
| 241 |
|
| 242 |
# 创建 Dataframe 组件
|
| 243 |
table = gr.Dataframe(
|
|
|
|
| 248 |
elem_id="leaderboard_table", # 添加元素ID
|
| 249 |
interactive=False, # 禁用编辑功能
|
| 250 |
wrap=True, # 启用自动换行,超长文本会自动换行显示
|
| 251 |
+
column_widths=["80px", "380px", "100px", "100px", "100px", "100px", "100px", "100px", "100px", "180px", "150px"] # 设置各列宽度,model列设置为450px以完整显示长名称
|
| 252 |
)
|
| 253 |
|
| 254 |
def update_display(search_text, selected_categories):
|