Ayanami0730 commited on
Commit
02f0cce
·
1 Parent(s): 89c9c96

adjust layout

Browse files
Files changed (1) hide show
  1. 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", "300px", "100px", "100px", "100px", "100px", "100px", "100px", "100px", "180px", "150px"] # 设置各列宽度,model列和category列设置合适宽度以支持换行
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):