Amber Tanaka commited on
Commit
c22c48e
·
unverified ·
1 Parent(s): 07dc6d3

Add Dynamic Column Sizes (#61)

Browse files
Files changed (3) hide show
  1. content.py +4 -1
  2. leaderboard_transformer.py +4 -31
  3. ui_components.py +15 -4
content.py CHANGED
@@ -264,7 +264,6 @@ nav.svelte-ti537g.svelte-ti537g {
264
  /*------ Global tooltip styles ------*/
265
  .tooltip-icon {
266
  display: inline-block;
267
- margin-left: 6px;
268
  cursor: help;
269
  position: relative;
270
  }
@@ -543,4 +542,8 @@ span.wrap[tabindex="0"][role="button"][data-editable="false"] {
543
  .divider-line {
544
  opacity: 40%;
545
  }
 
 
 
 
546
  """
 
264
  /*------ Global tooltip styles ------*/
265
  .tooltip-icon {
266
  display: inline-block;
 
267
  cursor: help;
268
  position: relative;
269
  }
 
542
  .divider-line {
543
  opacity: 40%;
544
  }
545
+ #leaderboard-accordion table {
546
+ width: auto !important;
547
+ margin-right: auto !important;
548
+ }
549
  """
leaderboard_transformer.py CHANGED
@@ -254,35 +254,8 @@ class DataTransformer:
254
 
255
  df_view = df_sorted.copy()
256
 
257
- # 3. Combine "Agent" and "Submitter" into a single HTML-formatted column
258
- # We do this *before* defining the final column list.
259
- if 'Agent' in df_view.columns and 'Submitter' in df_view.columns:
260
- #preserve just agent name for scatterplot hover
261
- df_view['agent_for_hover'] = df_view['Agent']
262
-
263
- def combine_agent_submitter(row):
264
- agent = row['Agent']
265
- submitter = row['Submitter']
266
-
267
- # Check if submitter exists and is not empty
268
- if pd.notna(submitter) and submitter.strip() != '':
269
- # Create a two-line HTML string with styled submitter text
270
- return (
271
- f"<div>{agent}<br>"
272
- f"<span style='font-size: 0.9em; color: #667876;'>{submitter}</span>"
273
- f"</div>"
274
- )
275
- else:
276
- # If no submitter, just return the agent name
277
- return agent
278
-
279
- # Apply the function to create the new combined 'Agent' column
280
- df_view['Agent'] = df_view.apply(combine_agent_submitter, axis=1)
281
- # The 'Submitter' column is no longer needed
282
- df_view = df_view.drop(columns=['Submitter'])
283
-
284
- # 4. Build the List of Columns to Display
285
- base_cols = ["id","Agent","LLM Base", "agent_for_hover"]
286
  new_cols = ["Openness", "Agent Tooling"]
287
  ending_cols = ["Logs"]
288
 
@@ -342,7 +315,7 @@ class DataTransformer:
342
  data=df_view,
343
  x=primary_cost_col,
344
  y=primary_score_col,
345
- agent_col="agent_for_hover",
346
  name=primary_metric
347
  )
348
  # Use a consistent key for easy retrieval later
@@ -363,7 +336,7 @@ def _plot_scatter_plotly(
363
  data: pd.DataFrame,
364
  x: Optional[str],
365
  y: str,
366
- agent_col: str = 'agent_for_hover',
367
  name: Optional[str] = None
368
  ) -> go.Figure:
369
 
 
254
 
255
  df_view = df_sorted.copy()
256
 
257
+ # --- 3. Add Columns for Agent Openness and Tooling ---
258
+ base_cols = ["id","Agent","Submitter","LLM Base"]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
259
  new_cols = ["Openness", "Agent Tooling"]
260
  ending_cols = ["Logs"]
261
 
 
315
  data=df_view,
316
  x=primary_cost_col,
317
  y=primary_score_col,
318
+ agent_col="Agent",
319
  name=primary_metric
320
  )
321
  # Use a consistent key for easy retrieval later
 
336
  data: pd.DataFrame,
337
  x: Optional[str],
338
  y: str,
339
+ agent_col: str = 'Agent',
340
  name: Optional[str] = None
341
  ) -> go.Figure:
342
 
ui_components.py CHANGED
@@ -458,13 +458,13 @@ def create_leaderboard_display(
458
  all_cols.insert(0, all_cols.pop(all_cols.index('Pareto')))
459
  df_view = df_view[all_cols]
460
  # Drop internally used columns that are not needed in the display
461
- columns_to_drop = ['id', 'agent_for_hover', 'Openness', 'Agent Tooling']
462
  df_view = df_view.drop(columns=columns_to_drop, errors='ignore')
463
 
464
  df_headers = df_view.columns.tolist()
465
  df_datatypes = []
466
  for col in df_headers:
467
- if col in ["Logs", "Agent"] or "Cost" in col or "Score" in col:
468
  df_datatypes.append("markdown")
469
  elif col in ["Icon","LLM Base"]:
470
  df_datatypes.append("html")
@@ -477,6 +477,17 @@ def create_leaderboard_display(
477
  }
478
  # 2. Create the final list of headers for display.
479
  df_view = df_view.rename(columns=header_rename_map)
 
 
 
 
 
 
 
 
 
 
 
480
 
481
  plot_component = gr.Plot(
482
  value=scatter_plot,
@@ -491,7 +502,7 @@ def create_leaderboard_display(
491
  datatype=df_datatypes,
492
  interactive=False,
493
  wrap=True,
494
- column_widths=[40, 40, 200, 200],
495
  elem_classes=["wrap-header-df"]
496
  )
497
  legend_markdown = create_legend_markdown(category_name)
@@ -649,7 +660,7 @@ def create_benchmark_details_display(
649
  datatype=df_datatypes,
650
  interactive=False,
651
  wrap=True,
652
- column_widths=[40, 40, 200, 150, 175, 85],
653
  elem_classes=["wrap-header-df"]
654
  )
655
  legend_markdown = create_legend_markdown(benchmark_name)
 
458
  all_cols.insert(0, all_cols.pop(all_cols.index('Pareto')))
459
  df_view = df_view[all_cols]
460
  # Drop internally used columns that are not needed in the display
461
+ columns_to_drop = ['id', 'Openness', 'Agent Tooling']
462
  df_view = df_view.drop(columns=columns_to_drop, errors='ignore')
463
 
464
  df_headers = df_view.columns.tolist()
465
  df_datatypes = []
466
  for col in df_headers:
467
+ if col == "Logs" or "Cost" in col or "Score" in col:
468
  df_datatypes.append("markdown")
469
  elif col in ["Icon","LLM Base"]:
470
  df_datatypes.append("html")
 
477
  }
478
  # 2. Create the final list of headers for display.
479
  df_view = df_view.rename(columns=header_rename_map)
480
+ # Dynamically set widths for the DataFrame columns
481
+ fixed_start_widths = [40, 40, 200, 100, 200]
482
+ num_score_cost_cols = 0
483
+ remaining_headers = df_headers[len(fixed_start_widths):]
484
+ for col in remaining_headers:
485
+ if "Score" in col or "Cost" in col:
486
+ num_score_cost_cols += 1
487
+ dynamic_widths = [80] * num_score_cost_cols
488
+ fixed_end_widths = [80, 40]
489
+ # 5. Combine all the lists to create the final, fully dynamic list.
490
+ final_column_widths = fixed_start_widths + dynamic_widths + fixed_end_widths
491
 
492
  plot_component = gr.Plot(
493
  value=scatter_plot,
 
502
  datatype=df_datatypes,
503
  interactive=False,
504
  wrap=True,
505
+ column_widths=final_column_widths,
506
  elem_classes=["wrap-header-df"]
507
  )
508
  legend_markdown = create_legend_markdown(category_name)
 
660
  datatype=df_datatypes,
661
  interactive=False,
662
  wrap=True,
663
+ column_widths=[40, 40, 200, 150, 175, 85, 100, 100, 40],
664
  elem_classes=["wrap-header-df"]
665
  )
666
  legend_markdown = create_legend_markdown(benchmark_name)