LennartPurucker Claude Opus 5 commited on
Commit
dd9bac5
·
1 Parent(s): dd2533f

fix: drop medals from the full leaderboard table, hold the dark theme

Browse files

The full leaderboard table already carries a # column, so the 🥇🥈🥉 on its Elo
cells were a second, competing ordering. Removed upstream in
`tabarena.plot.interactive._leaderboard_table_template` and the 72
`leaderboard_table.html` artifacts re-rendered from their sibling
`website_leaderboard.csv` — the same call the conversion step makes, verified by
re-rendering before the change and getting all 72 back byte-identical. The
app's own fallback table lost them too. The cross-subset overview keeps its
medals: no # column there.

Theme: `FORCE_DARK_THEME_JS` reloaded the page to append `__theme=dark`, but
Gradio 6 resolves the `theme-mode` attribute and `system` (which follows the
viewer's OS and re-applies itself on change) ahead of that parameter, so a
light-OS or light-embed visitor beat it — and reloading only lost the same race
one page load later. Force the `dark` class instead, which is what Gradio's
stylesheet keys off, and hold it with a MutationObserver.

`THEME` covers the frame that HEAD cannot: Gradio ships `head` inside
`window.gradio_config` and injects it after the bundle has already picked a
theme, and its served index.html paints a splash from the theme's *light* body
colours. Pointing those at the dark pair makes the first frame dark for
everyone.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. data/imputation_no/splits_all/tasks_all/datasets_all/leaderboard_table.html +5 -15
  2. data/imputation_no/splits_all/tasks_all/datasets_medium/leaderboard_table.html +5 -15
  3. data/imputation_no/splits_all/tasks_all/datasets_small/leaderboard_table.html +5 -15
  4. data/imputation_no/splits_all/tasks_binary/datasets_all/leaderboard_table.html +5 -15
  5. data/imputation_no/splits_all/tasks_binary/datasets_medium/leaderboard_table.html +5 -15
  6. data/imputation_no/splits_all/tasks_binary/datasets_small/leaderboard_table.html +5 -15
  7. data/imputation_no/splits_all/tasks_classification/datasets_all/leaderboard_table.html +5 -15
  8. data/imputation_no/splits_all/tasks_classification/datasets_medium/leaderboard_table.html +5 -15
  9. data/imputation_no/splits_all/tasks_classification/datasets_small/leaderboard_table.html +5 -15
  10. data/imputation_no/splits_all/tasks_multiclass/datasets_all/leaderboard_table.html +5 -15
  11. data/imputation_no/splits_all/tasks_multiclass/datasets_medium/leaderboard_table.html +5 -15
  12. data/imputation_no/splits_all/tasks_multiclass/datasets_small/leaderboard_table.html +5 -15
  13. data/imputation_no/splits_all/tasks_regression/datasets_all/leaderboard_table.html +5 -15
  14. data/imputation_no/splits_all/tasks_regression/datasets_medium/leaderboard_table.html +5 -15
  15. data/imputation_no/splits_all/tasks_regression/datasets_small/leaderboard_table.html +5 -15
  16. data/imputation_no/splits_lite/tasks_all/datasets_all/leaderboard_table.html +5 -15
  17. data/imputation_no/splits_lite/tasks_all/datasets_medium/leaderboard_table.html +5 -15
  18. data/imputation_no/splits_lite/tasks_all/datasets_small/leaderboard_table.html +5 -15
  19. data/imputation_no/splits_lite/tasks_binary/datasets_all/leaderboard_table.html +5 -15
  20. data/imputation_no/splits_lite/tasks_binary/datasets_medium/leaderboard_table.html +5 -15
  21. data/imputation_no/splits_lite/tasks_binary/datasets_small/leaderboard_table.html +5 -15
  22. data/imputation_no/splits_lite/tasks_classification/datasets_all/leaderboard_table.html +5 -15
  23. data/imputation_no/splits_lite/tasks_classification/datasets_medium/leaderboard_table.html +5 -15
  24. data/imputation_no/splits_lite/tasks_classification/datasets_small/leaderboard_table.html +5 -15
  25. data/imputation_no/splits_lite/tasks_multiclass/datasets_all/leaderboard_table.html +5 -15
  26. data/imputation_no/splits_lite/tasks_multiclass/datasets_medium/leaderboard_table.html +5 -15
  27. data/imputation_no/splits_lite/tasks_multiclass/datasets_small/leaderboard_table.html +5 -15
  28. data/imputation_no/splits_lite/tasks_regression/datasets_all/leaderboard_table.html +5 -15
  29. data/imputation_no/splits_lite/tasks_regression/datasets_medium/leaderboard_table.html +5 -15
  30. data/imputation_no/splits_lite/tasks_regression/datasets_small/leaderboard_table.html +5 -15
  31. data/imputation_yes/splits_all/tasks_all/datasets_all/leaderboard_table.html +5 -15
  32. data/imputation_yes/splits_all/tasks_all/datasets_medium/leaderboard_table.html +5 -15
  33. data/imputation_yes/splits_all/tasks_all/datasets_small/leaderboard_table.html +5 -15
  34. data/imputation_yes/splits_all/tasks_binary/datasets_all/leaderboard_table.html +5 -15
  35. data/imputation_yes/splits_all/tasks_binary/datasets_medium/leaderboard_table.html +5 -15
  36. data/imputation_yes/splits_all/tasks_binary/datasets_small/leaderboard_table.html +5 -15
  37. data/imputation_yes/splits_all/tasks_classification/datasets_all/leaderboard_table.html +5 -15
  38. data/imputation_yes/splits_all/tasks_classification/datasets_medium/leaderboard_table.html +5 -15
  39. data/imputation_yes/splits_all/tasks_classification/datasets_small/leaderboard_table.html +5 -15
  40. data/imputation_yes/splits_all/tasks_multiclass/datasets_all/leaderboard_table.html +5 -15
  41. data/imputation_yes/splits_all/tasks_multiclass/datasets_medium/leaderboard_table.html +5 -15
  42. data/imputation_yes/splits_all/tasks_multiclass/datasets_small/leaderboard_table.html +5 -15
  43. data/imputation_yes/splits_all/tasks_regression/datasets_all/leaderboard_table.html +5 -15
  44. data/imputation_yes/splits_all/tasks_regression/datasets_medium/leaderboard_table.html +5 -15
  45. data/imputation_yes/splits_all/tasks_regression/datasets_small/leaderboard_table.html +5 -15
  46. data/imputation_yes/splits_lite/tasks_all/datasets_all/leaderboard_table.html +5 -15
  47. data/imputation_yes/splits_lite/tasks_all/datasets_medium/leaderboard_table.html +5 -15
  48. data/imputation_yes/splits_lite/tasks_all/datasets_small/leaderboard_table.html +5 -15
  49. data/imputation_yes/splits_lite/tasks_binary/datasets_all/leaderboard_table.html +5 -15
  50. data/imputation_yes/splits_lite/tasks_binary/datasets_medium/leaderboard_table.html +5 -15
data/imputation_no/splits_all/tasks_all/datasets_all/leaderboard_table.html CHANGED
@@ -299,10 +299,6 @@
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
302
- /* A fixed-width medal slot keeps the digits in their own sub-column whether or
303
- not a medal is present. */
304
- .cell { display: inline-flex; align-items: baseline; }
305
- .medal { flex: 0 0 1.45em; width: 1.45em; text-align: left; font-size: 0.78em; }
306
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
307
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
308
  .verified { font-size: 0.85em; }
@@ -914,11 +910,8 @@
914
  postHeight();
915
  return;
916
  }
917
- // Medals mark the top three on the ranking metric; they stay on that column
918
- // when the reader sorts by another, which is what they mean.
919
- const ranked = rows.filter(p => isFinite(p[RANK_KEY]))
920
- .sort((a, b) => (colByKey.get(RANK_KEY).lowerBetter ? a[RANK_KEY] - b[RANK_KEY] : b[RANK_KEY] - a[RANK_KEY]));
921
- const medalOf = new Map(ranked.slice(0, 3).map((p, i) => [p, ["\u{1F947}", "\u{1F948}", "\u{1F949}"][i]]));
922
  const heat = new Map();
923
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
924
 
@@ -946,7 +939,7 @@
946
  } else if (col.key === "model") {
947
  html += nameCell(p);
948
  } else {
949
- html += valueCell(p, col, heat.get(col.key), medalOf.get(p));
950
  }
951
  }
952
  html += "</tr>";
@@ -963,7 +956,7 @@
963
  postHeight();
964
  }
965
 
966
- function valueCell(p, col, span, medal) {
967
  const v = p[col.key];
968
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
969
  if (col.text) {
@@ -980,11 +973,8 @@
980
  if (col.key === "elo" && p.elo_ci) {
981
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
982
  }
983
- const inner = medal !== undefined || col.key === RANK_KEY
984
- ? '<span class="cell"><span class="medal">' + (medal || "") + '</span><span>' + text + ci + "</span></span>"
985
- : text + ci;
986
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
987
- style + ">" + inner + "</td>";
988
  }
989
 
990
  function sortBy(key) {
 
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
 
 
 
 
302
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
303
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
304
  .verified { font-size: 0.85em; }
 
910
  postHeight();
911
  return;
912
  }
913
+ // No medals here: this table is the full ranking and already carries the
914
+ // position column, so podium marks only added a second, competing ordering.
 
 
 
915
  const heat = new Map();
916
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
917
 
 
939
  } else if (col.key === "model") {
940
  html += nameCell(p);
941
  } else {
942
+ html += valueCell(p, col, heat.get(col.key));
943
  }
944
  }
945
  html += "</tr>";
 
956
  postHeight();
957
  }
958
 
959
+ function valueCell(p, col, span) {
960
  const v = p[col.key];
961
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
962
  if (col.text) {
 
973
  if (col.key === "elo" && p.elo_ci) {
974
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
975
  }
 
 
 
976
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
977
+ style + ">" + text + ci + "</td>";
978
  }
979
 
980
  function sortBy(key) {
data/imputation_no/splits_all/tasks_all/datasets_medium/leaderboard_table.html CHANGED
@@ -299,10 +299,6 @@
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
302
- /* A fixed-width medal slot keeps the digits in their own sub-column whether or
303
- not a medal is present. */
304
- .cell { display: inline-flex; align-items: baseline; }
305
- .medal { flex: 0 0 1.45em; width: 1.45em; text-align: left; font-size: 0.78em; }
306
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
307
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
308
  .verified { font-size: 0.85em; }
@@ -914,11 +910,8 @@
914
  postHeight();
915
  return;
916
  }
917
- // Medals mark the top three on the ranking metric; they stay on that column
918
- // when the reader sorts by another, which is what they mean.
919
- const ranked = rows.filter(p => isFinite(p[RANK_KEY]))
920
- .sort((a, b) => (colByKey.get(RANK_KEY).lowerBetter ? a[RANK_KEY] - b[RANK_KEY] : b[RANK_KEY] - a[RANK_KEY]));
921
- const medalOf = new Map(ranked.slice(0, 3).map((p, i) => [p, ["\u{1F947}", "\u{1F948}", "\u{1F949}"][i]]));
922
  const heat = new Map();
923
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
924
 
@@ -946,7 +939,7 @@
946
  } else if (col.key === "model") {
947
  html += nameCell(p);
948
  } else {
949
- html += valueCell(p, col, heat.get(col.key), medalOf.get(p));
950
  }
951
  }
952
  html += "</tr>";
@@ -963,7 +956,7 @@
963
  postHeight();
964
  }
965
 
966
- function valueCell(p, col, span, medal) {
967
  const v = p[col.key];
968
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
969
  if (col.text) {
@@ -980,11 +973,8 @@
980
  if (col.key === "elo" && p.elo_ci) {
981
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
982
  }
983
- const inner = medal !== undefined || col.key === RANK_KEY
984
- ? '<span class="cell"><span class="medal">' + (medal || "") + '</span><span>' + text + ci + "</span></span>"
985
- : text + ci;
986
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
987
- style + ">" + inner + "</td>";
988
  }
989
 
990
  function sortBy(key) {
 
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
 
 
 
 
302
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
303
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
304
  .verified { font-size: 0.85em; }
 
910
  postHeight();
911
  return;
912
  }
913
+ // No medals here: this table is the full ranking and already carries the
914
+ // position column, so podium marks only added a second, competing ordering.
 
 
 
915
  const heat = new Map();
916
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
917
 
 
939
  } else if (col.key === "model") {
940
  html += nameCell(p);
941
  } else {
942
+ html += valueCell(p, col, heat.get(col.key));
943
  }
944
  }
945
  html += "</tr>";
 
956
  postHeight();
957
  }
958
 
959
+ function valueCell(p, col, span) {
960
  const v = p[col.key];
961
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
962
  if (col.text) {
 
973
  if (col.key === "elo" && p.elo_ci) {
974
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
975
  }
 
 
 
976
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
977
+ style + ">" + text + ci + "</td>";
978
  }
979
 
980
  function sortBy(key) {
data/imputation_no/splits_all/tasks_all/datasets_small/leaderboard_table.html CHANGED
@@ -299,10 +299,6 @@
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
302
- /* A fixed-width medal slot keeps the digits in their own sub-column whether or
303
- not a medal is present. */
304
- .cell { display: inline-flex; align-items: baseline; }
305
- .medal { flex: 0 0 1.45em; width: 1.45em; text-align: left; font-size: 0.78em; }
306
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
307
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
308
  .verified { font-size: 0.85em; }
@@ -914,11 +910,8 @@
914
  postHeight();
915
  return;
916
  }
917
- // Medals mark the top three on the ranking metric; they stay on that column
918
- // when the reader sorts by another, which is what they mean.
919
- const ranked = rows.filter(p => isFinite(p[RANK_KEY]))
920
- .sort((a, b) => (colByKey.get(RANK_KEY).lowerBetter ? a[RANK_KEY] - b[RANK_KEY] : b[RANK_KEY] - a[RANK_KEY]));
921
- const medalOf = new Map(ranked.slice(0, 3).map((p, i) => [p, ["\u{1F947}", "\u{1F948}", "\u{1F949}"][i]]));
922
  const heat = new Map();
923
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
924
 
@@ -946,7 +939,7 @@
946
  } else if (col.key === "model") {
947
  html += nameCell(p);
948
  } else {
949
- html += valueCell(p, col, heat.get(col.key), medalOf.get(p));
950
  }
951
  }
952
  html += "</tr>";
@@ -963,7 +956,7 @@
963
  postHeight();
964
  }
965
 
966
- function valueCell(p, col, span, medal) {
967
  const v = p[col.key];
968
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
969
  if (col.text) {
@@ -980,11 +973,8 @@
980
  if (col.key === "elo" && p.elo_ci) {
981
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
982
  }
983
- const inner = medal !== undefined || col.key === RANK_KEY
984
- ? '<span class="cell"><span class="medal">' + (medal || "") + '</span><span>' + text + ci + "</span></span>"
985
- : text + ci;
986
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
987
- style + ">" + inner + "</td>";
988
  }
989
 
990
  function sortBy(key) {
 
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
 
 
 
 
302
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
303
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
304
  .verified { font-size: 0.85em; }
 
910
  postHeight();
911
  return;
912
  }
913
+ // No medals here: this table is the full ranking and already carries the
914
+ // position column, so podium marks only added a second, competing ordering.
 
 
 
915
  const heat = new Map();
916
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
917
 
 
939
  } else if (col.key === "model") {
940
  html += nameCell(p);
941
  } else {
942
+ html += valueCell(p, col, heat.get(col.key));
943
  }
944
  }
945
  html += "</tr>";
 
956
  postHeight();
957
  }
958
 
959
+ function valueCell(p, col, span) {
960
  const v = p[col.key];
961
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
962
  if (col.text) {
 
973
  if (col.key === "elo" && p.elo_ci) {
974
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
975
  }
 
 
 
976
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
977
+ style + ">" + text + ci + "</td>";
978
  }
979
 
980
  function sortBy(key) {
data/imputation_no/splits_all/tasks_binary/datasets_all/leaderboard_table.html CHANGED
@@ -299,10 +299,6 @@
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
302
- /* A fixed-width medal slot keeps the digits in their own sub-column whether or
303
- not a medal is present. */
304
- .cell { display: inline-flex; align-items: baseline; }
305
- .medal { flex: 0 0 1.45em; width: 1.45em; text-align: left; font-size: 0.78em; }
306
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
307
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
308
  .verified { font-size: 0.85em; }
@@ -914,11 +910,8 @@
914
  postHeight();
915
  return;
916
  }
917
- // Medals mark the top three on the ranking metric; they stay on that column
918
- // when the reader sorts by another, which is what they mean.
919
- const ranked = rows.filter(p => isFinite(p[RANK_KEY]))
920
- .sort((a, b) => (colByKey.get(RANK_KEY).lowerBetter ? a[RANK_KEY] - b[RANK_KEY] : b[RANK_KEY] - a[RANK_KEY]));
921
- const medalOf = new Map(ranked.slice(0, 3).map((p, i) => [p, ["\u{1F947}", "\u{1F948}", "\u{1F949}"][i]]));
922
  const heat = new Map();
923
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
924
 
@@ -946,7 +939,7 @@
946
  } else if (col.key === "model") {
947
  html += nameCell(p);
948
  } else {
949
- html += valueCell(p, col, heat.get(col.key), medalOf.get(p));
950
  }
951
  }
952
  html += "</tr>";
@@ -963,7 +956,7 @@
963
  postHeight();
964
  }
965
 
966
- function valueCell(p, col, span, medal) {
967
  const v = p[col.key];
968
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
969
  if (col.text) {
@@ -980,11 +973,8 @@
980
  if (col.key === "elo" && p.elo_ci) {
981
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
982
  }
983
- const inner = medal !== undefined || col.key === RANK_KEY
984
- ? '<span class="cell"><span class="medal">' + (medal || "") + '</span><span>' + text + ci + "</span></span>"
985
- : text + ci;
986
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
987
- style + ">" + inner + "</td>";
988
  }
989
 
990
  function sortBy(key) {
 
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
 
 
 
 
302
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
303
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
304
  .verified { font-size: 0.85em; }
 
910
  postHeight();
911
  return;
912
  }
913
+ // No medals here: this table is the full ranking and already carries the
914
+ // position column, so podium marks only added a second, competing ordering.
 
 
 
915
  const heat = new Map();
916
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
917
 
 
939
  } else if (col.key === "model") {
940
  html += nameCell(p);
941
  } else {
942
+ html += valueCell(p, col, heat.get(col.key));
943
  }
944
  }
945
  html += "</tr>";
 
956
  postHeight();
957
  }
958
 
959
+ function valueCell(p, col, span) {
960
  const v = p[col.key];
961
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
962
  if (col.text) {
 
973
  if (col.key === "elo" && p.elo_ci) {
974
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
975
  }
 
 
 
976
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
977
+ style + ">" + text + ci + "</td>";
978
  }
979
 
980
  function sortBy(key) {
data/imputation_no/splits_all/tasks_binary/datasets_medium/leaderboard_table.html CHANGED
@@ -299,10 +299,6 @@
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
302
- /* A fixed-width medal slot keeps the digits in their own sub-column whether or
303
- not a medal is present. */
304
- .cell { display: inline-flex; align-items: baseline; }
305
- .medal { flex: 0 0 1.45em; width: 1.45em; text-align: left; font-size: 0.78em; }
306
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
307
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
308
  .verified { font-size: 0.85em; }
@@ -914,11 +910,8 @@
914
  postHeight();
915
  return;
916
  }
917
- // Medals mark the top three on the ranking metric; they stay on that column
918
- // when the reader sorts by another, which is what they mean.
919
- const ranked = rows.filter(p => isFinite(p[RANK_KEY]))
920
- .sort((a, b) => (colByKey.get(RANK_KEY).lowerBetter ? a[RANK_KEY] - b[RANK_KEY] : b[RANK_KEY] - a[RANK_KEY]));
921
- const medalOf = new Map(ranked.slice(0, 3).map((p, i) => [p, ["\u{1F947}", "\u{1F948}", "\u{1F949}"][i]]));
922
  const heat = new Map();
923
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
924
 
@@ -946,7 +939,7 @@
946
  } else if (col.key === "model") {
947
  html += nameCell(p);
948
  } else {
949
- html += valueCell(p, col, heat.get(col.key), medalOf.get(p));
950
  }
951
  }
952
  html += "</tr>";
@@ -963,7 +956,7 @@
963
  postHeight();
964
  }
965
 
966
- function valueCell(p, col, span, medal) {
967
  const v = p[col.key];
968
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
969
  if (col.text) {
@@ -980,11 +973,8 @@
980
  if (col.key === "elo" && p.elo_ci) {
981
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
982
  }
983
- const inner = medal !== undefined || col.key === RANK_KEY
984
- ? '<span class="cell"><span class="medal">' + (medal || "") + '</span><span>' + text + ci + "</span></span>"
985
- : text + ci;
986
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
987
- style + ">" + inner + "</td>";
988
  }
989
 
990
  function sortBy(key) {
 
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
 
 
 
 
302
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
303
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
304
  .verified { font-size: 0.85em; }
 
910
  postHeight();
911
  return;
912
  }
913
+ // No medals here: this table is the full ranking and already carries the
914
+ // position column, so podium marks only added a second, competing ordering.
 
 
 
915
  const heat = new Map();
916
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
917
 
 
939
  } else if (col.key === "model") {
940
  html += nameCell(p);
941
  } else {
942
+ html += valueCell(p, col, heat.get(col.key));
943
  }
944
  }
945
  html += "</tr>";
 
956
  postHeight();
957
  }
958
 
959
+ function valueCell(p, col, span) {
960
  const v = p[col.key];
961
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
962
  if (col.text) {
 
973
  if (col.key === "elo" && p.elo_ci) {
974
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
975
  }
 
 
 
976
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
977
+ style + ">" + text + ci + "</td>";
978
  }
979
 
980
  function sortBy(key) {
data/imputation_no/splits_all/tasks_binary/datasets_small/leaderboard_table.html CHANGED
@@ -299,10 +299,6 @@
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
302
- /* A fixed-width medal slot keeps the digits in their own sub-column whether or
303
- not a medal is present. */
304
- .cell { display: inline-flex; align-items: baseline; }
305
- .medal { flex: 0 0 1.45em; width: 1.45em; text-align: left; font-size: 0.78em; }
306
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
307
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
308
  .verified { font-size: 0.85em; }
@@ -914,11 +910,8 @@
914
  postHeight();
915
  return;
916
  }
917
- // Medals mark the top three on the ranking metric; they stay on that column
918
- // when the reader sorts by another, which is what they mean.
919
- const ranked = rows.filter(p => isFinite(p[RANK_KEY]))
920
- .sort((a, b) => (colByKey.get(RANK_KEY).lowerBetter ? a[RANK_KEY] - b[RANK_KEY] : b[RANK_KEY] - a[RANK_KEY]));
921
- const medalOf = new Map(ranked.slice(0, 3).map((p, i) => [p, ["\u{1F947}", "\u{1F948}", "\u{1F949}"][i]]));
922
  const heat = new Map();
923
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
924
 
@@ -946,7 +939,7 @@
946
  } else if (col.key === "model") {
947
  html += nameCell(p);
948
  } else {
949
- html += valueCell(p, col, heat.get(col.key), medalOf.get(p));
950
  }
951
  }
952
  html += "</tr>";
@@ -963,7 +956,7 @@
963
  postHeight();
964
  }
965
 
966
- function valueCell(p, col, span, medal) {
967
  const v = p[col.key];
968
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
969
  if (col.text) {
@@ -980,11 +973,8 @@
980
  if (col.key === "elo" && p.elo_ci) {
981
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
982
  }
983
- const inner = medal !== undefined || col.key === RANK_KEY
984
- ? '<span class="cell"><span class="medal">' + (medal || "") + '</span><span>' + text + ci + "</span></span>"
985
- : text + ci;
986
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
987
- style + ">" + inner + "</td>";
988
  }
989
 
990
  function sortBy(key) {
 
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
 
 
 
 
302
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
303
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
304
  .verified { font-size: 0.85em; }
 
910
  postHeight();
911
  return;
912
  }
913
+ // No medals here: this table is the full ranking and already carries the
914
+ // position column, so podium marks only added a second, competing ordering.
 
 
 
915
  const heat = new Map();
916
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
917
 
 
939
  } else if (col.key === "model") {
940
  html += nameCell(p);
941
  } else {
942
+ html += valueCell(p, col, heat.get(col.key));
943
  }
944
  }
945
  html += "</tr>";
 
956
  postHeight();
957
  }
958
 
959
+ function valueCell(p, col, span) {
960
  const v = p[col.key];
961
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
962
  if (col.text) {
 
973
  if (col.key === "elo" && p.elo_ci) {
974
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
975
  }
 
 
 
976
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
977
+ style + ">" + text + ci + "</td>";
978
  }
979
 
980
  function sortBy(key) {
data/imputation_no/splits_all/tasks_classification/datasets_all/leaderboard_table.html CHANGED
@@ -299,10 +299,6 @@
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
302
- /* A fixed-width medal slot keeps the digits in their own sub-column whether or
303
- not a medal is present. */
304
- .cell { display: inline-flex; align-items: baseline; }
305
- .medal { flex: 0 0 1.45em; width: 1.45em; text-align: left; font-size: 0.78em; }
306
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
307
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
308
  .verified { font-size: 0.85em; }
@@ -914,11 +910,8 @@
914
  postHeight();
915
  return;
916
  }
917
- // Medals mark the top three on the ranking metric; they stay on that column
918
- // when the reader sorts by another, which is what they mean.
919
- const ranked = rows.filter(p => isFinite(p[RANK_KEY]))
920
- .sort((a, b) => (colByKey.get(RANK_KEY).lowerBetter ? a[RANK_KEY] - b[RANK_KEY] : b[RANK_KEY] - a[RANK_KEY]));
921
- const medalOf = new Map(ranked.slice(0, 3).map((p, i) => [p, ["\u{1F947}", "\u{1F948}", "\u{1F949}"][i]]));
922
  const heat = new Map();
923
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
924
 
@@ -946,7 +939,7 @@
946
  } else if (col.key === "model") {
947
  html += nameCell(p);
948
  } else {
949
- html += valueCell(p, col, heat.get(col.key), medalOf.get(p));
950
  }
951
  }
952
  html += "</tr>";
@@ -963,7 +956,7 @@
963
  postHeight();
964
  }
965
 
966
- function valueCell(p, col, span, medal) {
967
  const v = p[col.key];
968
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
969
  if (col.text) {
@@ -980,11 +973,8 @@
980
  if (col.key === "elo" && p.elo_ci) {
981
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
982
  }
983
- const inner = medal !== undefined || col.key === RANK_KEY
984
- ? '<span class="cell"><span class="medal">' + (medal || "") + '</span><span>' + text + ci + "</span></span>"
985
- : text + ci;
986
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
987
- style + ">" + inner + "</td>";
988
  }
989
 
990
  function sortBy(key) {
 
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
 
 
 
 
302
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
303
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
304
  .verified { font-size: 0.85em; }
 
910
  postHeight();
911
  return;
912
  }
913
+ // No medals here: this table is the full ranking and already carries the
914
+ // position column, so podium marks only added a second, competing ordering.
 
 
 
915
  const heat = new Map();
916
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
917
 
 
939
  } else if (col.key === "model") {
940
  html += nameCell(p);
941
  } else {
942
+ html += valueCell(p, col, heat.get(col.key));
943
  }
944
  }
945
  html += "</tr>";
 
956
  postHeight();
957
  }
958
 
959
+ function valueCell(p, col, span) {
960
  const v = p[col.key];
961
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
962
  if (col.text) {
 
973
  if (col.key === "elo" && p.elo_ci) {
974
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
975
  }
 
 
 
976
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
977
+ style + ">" + text + ci + "</td>";
978
  }
979
 
980
  function sortBy(key) {
data/imputation_no/splits_all/tasks_classification/datasets_medium/leaderboard_table.html CHANGED
@@ -299,10 +299,6 @@
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
302
- /* A fixed-width medal slot keeps the digits in their own sub-column whether or
303
- not a medal is present. */
304
- .cell { display: inline-flex; align-items: baseline; }
305
- .medal { flex: 0 0 1.45em; width: 1.45em; text-align: left; font-size: 0.78em; }
306
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
307
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
308
  .verified { font-size: 0.85em; }
@@ -914,11 +910,8 @@
914
  postHeight();
915
  return;
916
  }
917
- // Medals mark the top three on the ranking metric; they stay on that column
918
- // when the reader sorts by another, which is what they mean.
919
- const ranked = rows.filter(p => isFinite(p[RANK_KEY]))
920
- .sort((a, b) => (colByKey.get(RANK_KEY).lowerBetter ? a[RANK_KEY] - b[RANK_KEY] : b[RANK_KEY] - a[RANK_KEY]));
921
- const medalOf = new Map(ranked.slice(0, 3).map((p, i) => [p, ["\u{1F947}", "\u{1F948}", "\u{1F949}"][i]]));
922
  const heat = new Map();
923
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
924
 
@@ -946,7 +939,7 @@
946
  } else if (col.key === "model") {
947
  html += nameCell(p);
948
  } else {
949
- html += valueCell(p, col, heat.get(col.key), medalOf.get(p));
950
  }
951
  }
952
  html += "</tr>";
@@ -963,7 +956,7 @@
963
  postHeight();
964
  }
965
 
966
- function valueCell(p, col, span, medal) {
967
  const v = p[col.key];
968
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
969
  if (col.text) {
@@ -980,11 +973,8 @@
980
  if (col.key === "elo" && p.elo_ci) {
981
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
982
  }
983
- const inner = medal !== undefined || col.key === RANK_KEY
984
- ? '<span class="cell"><span class="medal">' + (medal || "") + '</span><span>' + text + ci + "</span></span>"
985
- : text + ci;
986
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
987
- style + ">" + inner + "</td>";
988
  }
989
 
990
  function sortBy(key) {
 
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
 
 
 
 
302
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
303
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
304
  .verified { font-size: 0.85em; }
 
910
  postHeight();
911
  return;
912
  }
913
+ // No medals here: this table is the full ranking and already carries the
914
+ // position column, so podium marks only added a second, competing ordering.
 
 
 
915
  const heat = new Map();
916
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
917
 
 
939
  } else if (col.key === "model") {
940
  html += nameCell(p);
941
  } else {
942
+ html += valueCell(p, col, heat.get(col.key));
943
  }
944
  }
945
  html += "</tr>";
 
956
  postHeight();
957
  }
958
 
959
+ function valueCell(p, col, span) {
960
  const v = p[col.key];
961
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
962
  if (col.text) {
 
973
  if (col.key === "elo" && p.elo_ci) {
974
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
975
  }
 
 
 
976
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
977
+ style + ">" + text + ci + "</td>";
978
  }
979
 
980
  function sortBy(key) {
data/imputation_no/splits_all/tasks_classification/datasets_small/leaderboard_table.html CHANGED
@@ -299,10 +299,6 @@
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
302
- /* A fixed-width medal slot keeps the digits in their own sub-column whether or
303
- not a medal is present. */
304
- .cell { display: inline-flex; align-items: baseline; }
305
- .medal { flex: 0 0 1.45em; width: 1.45em; text-align: left; font-size: 0.78em; }
306
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
307
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
308
  .verified { font-size: 0.85em; }
@@ -914,11 +910,8 @@
914
  postHeight();
915
  return;
916
  }
917
- // Medals mark the top three on the ranking metric; they stay on that column
918
- // when the reader sorts by another, which is what they mean.
919
- const ranked = rows.filter(p => isFinite(p[RANK_KEY]))
920
- .sort((a, b) => (colByKey.get(RANK_KEY).lowerBetter ? a[RANK_KEY] - b[RANK_KEY] : b[RANK_KEY] - a[RANK_KEY]));
921
- const medalOf = new Map(ranked.slice(0, 3).map((p, i) => [p, ["\u{1F947}", "\u{1F948}", "\u{1F949}"][i]]));
922
  const heat = new Map();
923
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
924
 
@@ -946,7 +939,7 @@
946
  } else if (col.key === "model") {
947
  html += nameCell(p);
948
  } else {
949
- html += valueCell(p, col, heat.get(col.key), medalOf.get(p));
950
  }
951
  }
952
  html += "</tr>";
@@ -963,7 +956,7 @@
963
  postHeight();
964
  }
965
 
966
- function valueCell(p, col, span, medal) {
967
  const v = p[col.key];
968
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
969
  if (col.text) {
@@ -980,11 +973,8 @@
980
  if (col.key === "elo" && p.elo_ci) {
981
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
982
  }
983
- const inner = medal !== undefined || col.key === RANK_KEY
984
- ? '<span class="cell"><span class="medal">' + (medal || "") + '</span><span>' + text + ci + "</span></span>"
985
- : text + ci;
986
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
987
- style + ">" + inner + "</td>";
988
  }
989
 
990
  function sortBy(key) {
 
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
 
 
 
 
302
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
303
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
304
  .verified { font-size: 0.85em; }
 
910
  postHeight();
911
  return;
912
  }
913
+ // No medals here: this table is the full ranking and already carries the
914
+ // position column, so podium marks only added a second, competing ordering.
 
 
 
915
  const heat = new Map();
916
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
917
 
 
939
  } else if (col.key === "model") {
940
  html += nameCell(p);
941
  } else {
942
+ html += valueCell(p, col, heat.get(col.key));
943
  }
944
  }
945
  html += "</tr>";
 
956
  postHeight();
957
  }
958
 
959
+ function valueCell(p, col, span) {
960
  const v = p[col.key];
961
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
962
  if (col.text) {
 
973
  if (col.key === "elo" && p.elo_ci) {
974
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
975
  }
 
 
 
976
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
977
+ style + ">" + text + ci + "</td>";
978
  }
979
 
980
  function sortBy(key) {
data/imputation_no/splits_all/tasks_multiclass/datasets_all/leaderboard_table.html CHANGED
@@ -299,10 +299,6 @@
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
302
- /* A fixed-width medal slot keeps the digits in their own sub-column whether or
303
- not a medal is present. */
304
- .cell { display: inline-flex; align-items: baseline; }
305
- .medal { flex: 0 0 1.45em; width: 1.45em; text-align: left; font-size: 0.78em; }
306
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
307
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
308
  .verified { font-size: 0.85em; }
@@ -914,11 +910,8 @@
914
  postHeight();
915
  return;
916
  }
917
- // Medals mark the top three on the ranking metric; they stay on that column
918
- // when the reader sorts by another, which is what they mean.
919
- const ranked = rows.filter(p => isFinite(p[RANK_KEY]))
920
- .sort((a, b) => (colByKey.get(RANK_KEY).lowerBetter ? a[RANK_KEY] - b[RANK_KEY] : b[RANK_KEY] - a[RANK_KEY]));
921
- const medalOf = new Map(ranked.slice(0, 3).map((p, i) => [p, ["\u{1F947}", "\u{1F948}", "\u{1F949}"][i]]));
922
  const heat = new Map();
923
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
924
 
@@ -946,7 +939,7 @@
946
  } else if (col.key === "model") {
947
  html += nameCell(p);
948
  } else {
949
- html += valueCell(p, col, heat.get(col.key), medalOf.get(p));
950
  }
951
  }
952
  html += "</tr>";
@@ -963,7 +956,7 @@
963
  postHeight();
964
  }
965
 
966
- function valueCell(p, col, span, medal) {
967
  const v = p[col.key];
968
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
969
  if (col.text) {
@@ -980,11 +973,8 @@
980
  if (col.key === "elo" && p.elo_ci) {
981
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
982
  }
983
- const inner = medal !== undefined || col.key === RANK_KEY
984
- ? '<span class="cell"><span class="medal">' + (medal || "") + '</span><span>' + text + ci + "</span></span>"
985
- : text + ci;
986
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
987
- style + ">" + inner + "</td>";
988
  }
989
 
990
  function sortBy(key) {
 
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
 
 
 
 
302
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
303
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
304
  .verified { font-size: 0.85em; }
 
910
  postHeight();
911
  return;
912
  }
913
+ // No medals here: this table is the full ranking and already carries the
914
+ // position column, so podium marks only added a second, competing ordering.
 
 
 
915
  const heat = new Map();
916
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
917
 
 
939
  } else if (col.key === "model") {
940
  html += nameCell(p);
941
  } else {
942
+ html += valueCell(p, col, heat.get(col.key));
943
  }
944
  }
945
  html += "</tr>";
 
956
  postHeight();
957
  }
958
 
959
+ function valueCell(p, col, span) {
960
  const v = p[col.key];
961
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
962
  if (col.text) {
 
973
  if (col.key === "elo" && p.elo_ci) {
974
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
975
  }
 
 
 
976
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
977
+ style + ">" + text + ci + "</td>";
978
  }
979
 
980
  function sortBy(key) {
data/imputation_no/splits_all/tasks_multiclass/datasets_medium/leaderboard_table.html CHANGED
@@ -299,10 +299,6 @@
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
302
- /* A fixed-width medal slot keeps the digits in their own sub-column whether or
303
- not a medal is present. */
304
- .cell { display: inline-flex; align-items: baseline; }
305
- .medal { flex: 0 0 1.45em; width: 1.45em; text-align: left; font-size: 0.78em; }
306
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
307
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
308
  .verified { font-size: 0.85em; }
@@ -914,11 +910,8 @@
914
  postHeight();
915
  return;
916
  }
917
- // Medals mark the top three on the ranking metric; they stay on that column
918
- // when the reader sorts by another, which is what they mean.
919
- const ranked = rows.filter(p => isFinite(p[RANK_KEY]))
920
- .sort((a, b) => (colByKey.get(RANK_KEY).lowerBetter ? a[RANK_KEY] - b[RANK_KEY] : b[RANK_KEY] - a[RANK_KEY]));
921
- const medalOf = new Map(ranked.slice(0, 3).map((p, i) => [p, ["\u{1F947}", "\u{1F948}", "\u{1F949}"][i]]));
922
  const heat = new Map();
923
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
924
 
@@ -946,7 +939,7 @@
946
  } else if (col.key === "model") {
947
  html += nameCell(p);
948
  } else {
949
- html += valueCell(p, col, heat.get(col.key), medalOf.get(p));
950
  }
951
  }
952
  html += "</tr>";
@@ -963,7 +956,7 @@
963
  postHeight();
964
  }
965
 
966
- function valueCell(p, col, span, medal) {
967
  const v = p[col.key];
968
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
969
  if (col.text) {
@@ -980,11 +973,8 @@
980
  if (col.key === "elo" && p.elo_ci) {
981
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
982
  }
983
- const inner = medal !== undefined || col.key === RANK_KEY
984
- ? '<span class="cell"><span class="medal">' + (medal || "") + '</span><span>' + text + ci + "</span></span>"
985
- : text + ci;
986
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
987
- style + ">" + inner + "</td>";
988
  }
989
 
990
  function sortBy(key) {
 
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
 
 
 
 
302
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
303
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
304
  .verified { font-size: 0.85em; }
 
910
  postHeight();
911
  return;
912
  }
913
+ // No medals here: this table is the full ranking and already carries the
914
+ // position column, so podium marks only added a second, competing ordering.
 
 
 
915
  const heat = new Map();
916
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
917
 
 
939
  } else if (col.key === "model") {
940
  html += nameCell(p);
941
  } else {
942
+ html += valueCell(p, col, heat.get(col.key));
943
  }
944
  }
945
  html += "</tr>";
 
956
  postHeight();
957
  }
958
 
959
+ function valueCell(p, col, span) {
960
  const v = p[col.key];
961
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
962
  if (col.text) {
 
973
  if (col.key === "elo" && p.elo_ci) {
974
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
975
  }
 
 
 
976
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
977
+ style + ">" + text + ci + "</td>";
978
  }
979
 
980
  function sortBy(key) {
data/imputation_no/splits_all/tasks_multiclass/datasets_small/leaderboard_table.html CHANGED
@@ -299,10 +299,6 @@
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
302
- /* A fixed-width medal slot keeps the digits in their own sub-column whether or
303
- not a medal is present. */
304
- .cell { display: inline-flex; align-items: baseline; }
305
- .medal { flex: 0 0 1.45em; width: 1.45em; text-align: left; font-size: 0.78em; }
306
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
307
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
308
  .verified { font-size: 0.85em; }
@@ -914,11 +910,8 @@
914
  postHeight();
915
  return;
916
  }
917
- // Medals mark the top three on the ranking metric; they stay on that column
918
- // when the reader sorts by another, which is what they mean.
919
- const ranked = rows.filter(p => isFinite(p[RANK_KEY]))
920
- .sort((a, b) => (colByKey.get(RANK_KEY).lowerBetter ? a[RANK_KEY] - b[RANK_KEY] : b[RANK_KEY] - a[RANK_KEY]));
921
- const medalOf = new Map(ranked.slice(0, 3).map((p, i) => [p, ["\u{1F947}", "\u{1F948}", "\u{1F949}"][i]]));
922
  const heat = new Map();
923
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
924
 
@@ -946,7 +939,7 @@
946
  } else if (col.key === "model") {
947
  html += nameCell(p);
948
  } else {
949
- html += valueCell(p, col, heat.get(col.key), medalOf.get(p));
950
  }
951
  }
952
  html += "</tr>";
@@ -963,7 +956,7 @@
963
  postHeight();
964
  }
965
 
966
- function valueCell(p, col, span, medal) {
967
  const v = p[col.key];
968
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
969
  if (col.text) {
@@ -980,11 +973,8 @@
980
  if (col.key === "elo" && p.elo_ci) {
981
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
982
  }
983
- const inner = medal !== undefined || col.key === RANK_KEY
984
- ? '<span class="cell"><span class="medal">' + (medal || "") + '</span><span>' + text + ci + "</span></span>"
985
- : text + ci;
986
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
987
- style + ">" + inner + "</td>";
988
  }
989
 
990
  function sortBy(key) {
 
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
 
 
 
 
302
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
303
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
304
  .verified { font-size: 0.85em; }
 
910
  postHeight();
911
  return;
912
  }
913
+ // No medals here: this table is the full ranking and already carries the
914
+ // position column, so podium marks only added a second, competing ordering.
 
 
 
915
  const heat = new Map();
916
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
917
 
 
939
  } else if (col.key === "model") {
940
  html += nameCell(p);
941
  } else {
942
+ html += valueCell(p, col, heat.get(col.key));
943
  }
944
  }
945
  html += "</tr>";
 
956
  postHeight();
957
  }
958
 
959
+ function valueCell(p, col, span) {
960
  const v = p[col.key];
961
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
962
  if (col.text) {
 
973
  if (col.key === "elo" && p.elo_ci) {
974
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
975
  }
 
 
 
976
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
977
+ style + ">" + text + ci + "</td>";
978
  }
979
 
980
  function sortBy(key) {
data/imputation_no/splits_all/tasks_regression/datasets_all/leaderboard_table.html CHANGED
@@ -299,10 +299,6 @@
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
302
- /* A fixed-width medal slot keeps the digits in their own sub-column whether or
303
- not a medal is present. */
304
- .cell { display: inline-flex; align-items: baseline; }
305
- .medal { flex: 0 0 1.45em; width: 1.45em; text-align: left; font-size: 0.78em; }
306
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
307
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
308
  .verified { font-size: 0.85em; }
@@ -914,11 +910,8 @@
914
  postHeight();
915
  return;
916
  }
917
- // Medals mark the top three on the ranking metric; they stay on that column
918
- // when the reader sorts by another, which is what they mean.
919
- const ranked = rows.filter(p => isFinite(p[RANK_KEY]))
920
- .sort((a, b) => (colByKey.get(RANK_KEY).lowerBetter ? a[RANK_KEY] - b[RANK_KEY] : b[RANK_KEY] - a[RANK_KEY]));
921
- const medalOf = new Map(ranked.slice(0, 3).map((p, i) => [p, ["\u{1F947}", "\u{1F948}", "\u{1F949}"][i]]));
922
  const heat = new Map();
923
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
924
 
@@ -946,7 +939,7 @@
946
  } else if (col.key === "model") {
947
  html += nameCell(p);
948
  } else {
949
- html += valueCell(p, col, heat.get(col.key), medalOf.get(p));
950
  }
951
  }
952
  html += "</tr>";
@@ -963,7 +956,7 @@
963
  postHeight();
964
  }
965
 
966
- function valueCell(p, col, span, medal) {
967
  const v = p[col.key];
968
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
969
  if (col.text) {
@@ -980,11 +973,8 @@
980
  if (col.key === "elo" && p.elo_ci) {
981
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
982
  }
983
- const inner = medal !== undefined || col.key === RANK_KEY
984
- ? '<span class="cell"><span class="medal">' + (medal || "") + '</span><span>' + text + ci + "</span></span>"
985
- : text + ci;
986
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
987
- style + ">" + inner + "</td>";
988
  }
989
 
990
  function sortBy(key) {
 
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
 
 
 
 
302
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
303
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
304
  .verified { font-size: 0.85em; }
 
910
  postHeight();
911
  return;
912
  }
913
+ // No medals here: this table is the full ranking and already carries the
914
+ // position column, so podium marks only added a second, competing ordering.
 
 
 
915
  const heat = new Map();
916
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
917
 
 
939
  } else if (col.key === "model") {
940
  html += nameCell(p);
941
  } else {
942
+ html += valueCell(p, col, heat.get(col.key));
943
  }
944
  }
945
  html += "</tr>";
 
956
  postHeight();
957
  }
958
 
959
+ function valueCell(p, col, span) {
960
  const v = p[col.key];
961
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
962
  if (col.text) {
 
973
  if (col.key === "elo" && p.elo_ci) {
974
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
975
  }
 
 
 
976
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
977
+ style + ">" + text + ci + "</td>";
978
  }
979
 
980
  function sortBy(key) {
data/imputation_no/splits_all/tasks_regression/datasets_medium/leaderboard_table.html CHANGED
@@ -299,10 +299,6 @@
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
302
- /* A fixed-width medal slot keeps the digits in their own sub-column whether or
303
- not a medal is present. */
304
- .cell { display: inline-flex; align-items: baseline; }
305
- .medal { flex: 0 0 1.45em; width: 1.45em; text-align: left; font-size: 0.78em; }
306
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
307
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
308
  .verified { font-size: 0.85em; }
@@ -914,11 +910,8 @@
914
  postHeight();
915
  return;
916
  }
917
- // Medals mark the top three on the ranking metric; they stay on that column
918
- // when the reader sorts by another, which is what they mean.
919
- const ranked = rows.filter(p => isFinite(p[RANK_KEY]))
920
- .sort((a, b) => (colByKey.get(RANK_KEY).lowerBetter ? a[RANK_KEY] - b[RANK_KEY] : b[RANK_KEY] - a[RANK_KEY]));
921
- const medalOf = new Map(ranked.slice(0, 3).map((p, i) => [p, ["\u{1F947}", "\u{1F948}", "\u{1F949}"][i]]));
922
  const heat = new Map();
923
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
924
 
@@ -946,7 +939,7 @@
946
  } else if (col.key === "model") {
947
  html += nameCell(p);
948
  } else {
949
- html += valueCell(p, col, heat.get(col.key), medalOf.get(p));
950
  }
951
  }
952
  html += "</tr>";
@@ -963,7 +956,7 @@
963
  postHeight();
964
  }
965
 
966
- function valueCell(p, col, span, medal) {
967
  const v = p[col.key];
968
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
969
  if (col.text) {
@@ -980,11 +973,8 @@
980
  if (col.key === "elo" && p.elo_ci) {
981
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
982
  }
983
- const inner = medal !== undefined || col.key === RANK_KEY
984
- ? '<span class="cell"><span class="medal">' + (medal || "") + '</span><span>' + text + ci + "</span></span>"
985
- : text + ci;
986
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
987
- style + ">" + inner + "</td>";
988
  }
989
 
990
  function sortBy(key) {
 
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
 
 
 
 
302
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
303
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
304
  .verified { font-size: 0.85em; }
 
910
  postHeight();
911
  return;
912
  }
913
+ // No medals here: this table is the full ranking and already carries the
914
+ // position column, so podium marks only added a second, competing ordering.
 
 
 
915
  const heat = new Map();
916
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
917
 
 
939
  } else if (col.key === "model") {
940
  html += nameCell(p);
941
  } else {
942
+ html += valueCell(p, col, heat.get(col.key));
943
  }
944
  }
945
  html += "</tr>";
 
956
  postHeight();
957
  }
958
 
959
+ function valueCell(p, col, span) {
960
  const v = p[col.key];
961
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
962
  if (col.text) {
 
973
  if (col.key === "elo" && p.elo_ci) {
974
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
975
  }
 
 
 
976
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
977
+ style + ">" + text + ci + "</td>";
978
  }
979
 
980
  function sortBy(key) {
data/imputation_no/splits_all/tasks_regression/datasets_small/leaderboard_table.html CHANGED
@@ -299,10 +299,6 @@
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
302
- /* A fixed-width medal slot keeps the digits in their own sub-column whether or
303
- not a medal is present. */
304
- .cell { display: inline-flex; align-items: baseline; }
305
- .medal { flex: 0 0 1.45em; width: 1.45em; text-align: left; font-size: 0.78em; }
306
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
307
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
308
  .verified { font-size: 0.85em; }
@@ -914,11 +910,8 @@
914
  postHeight();
915
  return;
916
  }
917
- // Medals mark the top three on the ranking metric; they stay on that column
918
- // when the reader sorts by another, which is what they mean.
919
- const ranked = rows.filter(p => isFinite(p[RANK_KEY]))
920
- .sort((a, b) => (colByKey.get(RANK_KEY).lowerBetter ? a[RANK_KEY] - b[RANK_KEY] : b[RANK_KEY] - a[RANK_KEY]));
921
- const medalOf = new Map(ranked.slice(0, 3).map((p, i) => [p, ["\u{1F947}", "\u{1F948}", "\u{1F949}"][i]]));
922
  const heat = new Map();
923
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
924
 
@@ -946,7 +939,7 @@
946
  } else if (col.key === "model") {
947
  html += nameCell(p);
948
  } else {
949
- html += valueCell(p, col, heat.get(col.key), medalOf.get(p));
950
  }
951
  }
952
  html += "</tr>";
@@ -963,7 +956,7 @@
963
  postHeight();
964
  }
965
 
966
- function valueCell(p, col, span, medal) {
967
  const v = p[col.key];
968
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
969
  if (col.text) {
@@ -980,11 +973,8 @@
980
  if (col.key === "elo" && p.elo_ci) {
981
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
982
  }
983
- const inner = medal !== undefined || col.key === RANK_KEY
984
- ? '<span class="cell"><span class="medal">' + (medal || "") + '</span><span>' + text + ci + "</span></span>"
985
- : text + ci;
986
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
987
- style + ">" + inner + "</td>";
988
  }
989
 
990
  function sortBy(key) {
 
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
 
 
 
 
302
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
303
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
304
  .verified { font-size: 0.85em; }
 
910
  postHeight();
911
  return;
912
  }
913
+ // No medals here: this table is the full ranking and already carries the
914
+ // position column, so podium marks only added a second, competing ordering.
 
 
 
915
  const heat = new Map();
916
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
917
 
 
939
  } else if (col.key === "model") {
940
  html += nameCell(p);
941
  } else {
942
+ html += valueCell(p, col, heat.get(col.key));
943
  }
944
  }
945
  html += "</tr>";
 
956
  postHeight();
957
  }
958
 
959
+ function valueCell(p, col, span) {
960
  const v = p[col.key];
961
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
962
  if (col.text) {
 
973
  if (col.key === "elo" && p.elo_ci) {
974
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
975
  }
 
 
 
976
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
977
+ style + ">" + text + ci + "</td>";
978
  }
979
 
980
  function sortBy(key) {
data/imputation_no/splits_lite/tasks_all/datasets_all/leaderboard_table.html CHANGED
@@ -299,10 +299,6 @@
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
302
- /* A fixed-width medal slot keeps the digits in their own sub-column whether or
303
- not a medal is present. */
304
- .cell { display: inline-flex; align-items: baseline; }
305
- .medal { flex: 0 0 1.45em; width: 1.45em; text-align: left; font-size: 0.78em; }
306
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
307
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
308
  .verified { font-size: 0.85em; }
@@ -914,11 +910,8 @@
914
  postHeight();
915
  return;
916
  }
917
- // Medals mark the top three on the ranking metric; they stay on that column
918
- // when the reader sorts by another, which is what they mean.
919
- const ranked = rows.filter(p => isFinite(p[RANK_KEY]))
920
- .sort((a, b) => (colByKey.get(RANK_KEY).lowerBetter ? a[RANK_KEY] - b[RANK_KEY] : b[RANK_KEY] - a[RANK_KEY]));
921
- const medalOf = new Map(ranked.slice(0, 3).map((p, i) => [p, ["\u{1F947}", "\u{1F948}", "\u{1F949}"][i]]));
922
  const heat = new Map();
923
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
924
 
@@ -946,7 +939,7 @@
946
  } else if (col.key === "model") {
947
  html += nameCell(p);
948
  } else {
949
- html += valueCell(p, col, heat.get(col.key), medalOf.get(p));
950
  }
951
  }
952
  html += "</tr>";
@@ -963,7 +956,7 @@
963
  postHeight();
964
  }
965
 
966
- function valueCell(p, col, span, medal) {
967
  const v = p[col.key];
968
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
969
  if (col.text) {
@@ -980,11 +973,8 @@
980
  if (col.key === "elo" && p.elo_ci) {
981
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
982
  }
983
- const inner = medal !== undefined || col.key === RANK_KEY
984
- ? '<span class="cell"><span class="medal">' + (medal || "") + '</span><span>' + text + ci + "</span></span>"
985
- : text + ci;
986
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
987
- style + ">" + inner + "</td>";
988
  }
989
 
990
  function sortBy(key) {
 
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
 
 
 
 
302
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
303
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
304
  .verified { font-size: 0.85em; }
 
910
  postHeight();
911
  return;
912
  }
913
+ // No medals here: this table is the full ranking and already carries the
914
+ // position column, so podium marks only added a second, competing ordering.
 
 
 
915
  const heat = new Map();
916
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
917
 
 
939
  } else if (col.key === "model") {
940
  html += nameCell(p);
941
  } else {
942
+ html += valueCell(p, col, heat.get(col.key));
943
  }
944
  }
945
  html += "</tr>";
 
956
  postHeight();
957
  }
958
 
959
+ function valueCell(p, col, span) {
960
  const v = p[col.key];
961
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
962
  if (col.text) {
 
973
  if (col.key === "elo" && p.elo_ci) {
974
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
975
  }
 
 
 
976
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
977
+ style + ">" + text + ci + "</td>";
978
  }
979
 
980
  function sortBy(key) {
data/imputation_no/splits_lite/tasks_all/datasets_medium/leaderboard_table.html CHANGED
@@ -299,10 +299,6 @@
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
302
- /* A fixed-width medal slot keeps the digits in their own sub-column whether or
303
- not a medal is present. */
304
- .cell { display: inline-flex; align-items: baseline; }
305
- .medal { flex: 0 0 1.45em; width: 1.45em; text-align: left; font-size: 0.78em; }
306
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
307
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
308
  .verified { font-size: 0.85em; }
@@ -914,11 +910,8 @@
914
  postHeight();
915
  return;
916
  }
917
- // Medals mark the top three on the ranking metric; they stay on that column
918
- // when the reader sorts by another, which is what they mean.
919
- const ranked = rows.filter(p => isFinite(p[RANK_KEY]))
920
- .sort((a, b) => (colByKey.get(RANK_KEY).lowerBetter ? a[RANK_KEY] - b[RANK_KEY] : b[RANK_KEY] - a[RANK_KEY]));
921
- const medalOf = new Map(ranked.slice(0, 3).map((p, i) => [p, ["\u{1F947}", "\u{1F948}", "\u{1F949}"][i]]));
922
  const heat = new Map();
923
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
924
 
@@ -946,7 +939,7 @@
946
  } else if (col.key === "model") {
947
  html += nameCell(p);
948
  } else {
949
- html += valueCell(p, col, heat.get(col.key), medalOf.get(p));
950
  }
951
  }
952
  html += "</tr>";
@@ -963,7 +956,7 @@
963
  postHeight();
964
  }
965
 
966
- function valueCell(p, col, span, medal) {
967
  const v = p[col.key];
968
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
969
  if (col.text) {
@@ -980,11 +973,8 @@
980
  if (col.key === "elo" && p.elo_ci) {
981
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
982
  }
983
- const inner = medal !== undefined || col.key === RANK_KEY
984
- ? '<span class="cell"><span class="medal">' + (medal || "") + '</span><span>' + text + ci + "</span></span>"
985
- : text + ci;
986
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
987
- style + ">" + inner + "</td>";
988
  }
989
 
990
  function sortBy(key) {
 
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
 
 
 
 
302
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
303
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
304
  .verified { font-size: 0.85em; }
 
910
  postHeight();
911
  return;
912
  }
913
+ // No medals here: this table is the full ranking and already carries the
914
+ // position column, so podium marks only added a second, competing ordering.
 
 
 
915
  const heat = new Map();
916
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
917
 
 
939
  } else if (col.key === "model") {
940
  html += nameCell(p);
941
  } else {
942
+ html += valueCell(p, col, heat.get(col.key));
943
  }
944
  }
945
  html += "</tr>";
 
956
  postHeight();
957
  }
958
 
959
+ function valueCell(p, col, span) {
960
  const v = p[col.key];
961
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
962
  if (col.text) {
 
973
  if (col.key === "elo" && p.elo_ci) {
974
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
975
  }
 
 
 
976
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
977
+ style + ">" + text + ci + "</td>";
978
  }
979
 
980
  function sortBy(key) {
data/imputation_no/splits_lite/tasks_all/datasets_small/leaderboard_table.html CHANGED
@@ -299,10 +299,6 @@
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
302
- /* A fixed-width medal slot keeps the digits in their own sub-column whether or
303
- not a medal is present. */
304
- .cell { display: inline-flex; align-items: baseline; }
305
- .medal { flex: 0 0 1.45em; width: 1.45em; text-align: left; font-size: 0.78em; }
306
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
307
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
308
  .verified { font-size: 0.85em; }
@@ -914,11 +910,8 @@
914
  postHeight();
915
  return;
916
  }
917
- // Medals mark the top three on the ranking metric; they stay on that column
918
- // when the reader sorts by another, which is what they mean.
919
- const ranked = rows.filter(p => isFinite(p[RANK_KEY]))
920
- .sort((a, b) => (colByKey.get(RANK_KEY).lowerBetter ? a[RANK_KEY] - b[RANK_KEY] : b[RANK_KEY] - a[RANK_KEY]));
921
- const medalOf = new Map(ranked.slice(0, 3).map((p, i) => [p, ["\u{1F947}", "\u{1F948}", "\u{1F949}"][i]]));
922
  const heat = new Map();
923
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
924
 
@@ -946,7 +939,7 @@
946
  } else if (col.key === "model") {
947
  html += nameCell(p);
948
  } else {
949
- html += valueCell(p, col, heat.get(col.key), medalOf.get(p));
950
  }
951
  }
952
  html += "</tr>";
@@ -963,7 +956,7 @@
963
  postHeight();
964
  }
965
 
966
- function valueCell(p, col, span, medal) {
967
  const v = p[col.key];
968
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
969
  if (col.text) {
@@ -980,11 +973,8 @@
980
  if (col.key === "elo" && p.elo_ci) {
981
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
982
  }
983
- const inner = medal !== undefined || col.key === RANK_KEY
984
- ? '<span class="cell"><span class="medal">' + (medal || "") + '</span><span>' + text + ci + "</span></span>"
985
- : text + ci;
986
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
987
- style + ">" + inner + "</td>";
988
  }
989
 
990
  function sortBy(key) {
 
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
 
 
 
 
302
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
303
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
304
  .verified { font-size: 0.85em; }
 
910
  postHeight();
911
  return;
912
  }
913
+ // No medals here: this table is the full ranking and already carries the
914
+ // position column, so podium marks only added a second, competing ordering.
 
 
 
915
  const heat = new Map();
916
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
917
 
 
939
  } else if (col.key === "model") {
940
  html += nameCell(p);
941
  } else {
942
+ html += valueCell(p, col, heat.get(col.key));
943
  }
944
  }
945
  html += "</tr>";
 
956
  postHeight();
957
  }
958
 
959
+ function valueCell(p, col, span) {
960
  const v = p[col.key];
961
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
962
  if (col.text) {
 
973
  if (col.key === "elo" && p.elo_ci) {
974
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
975
  }
 
 
 
976
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
977
+ style + ">" + text + ci + "</td>";
978
  }
979
 
980
  function sortBy(key) {
data/imputation_no/splits_lite/tasks_binary/datasets_all/leaderboard_table.html CHANGED
@@ -299,10 +299,6 @@
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
302
- /* A fixed-width medal slot keeps the digits in their own sub-column whether or
303
- not a medal is present. */
304
- .cell { display: inline-flex; align-items: baseline; }
305
- .medal { flex: 0 0 1.45em; width: 1.45em; text-align: left; font-size: 0.78em; }
306
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
307
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
308
  .verified { font-size: 0.85em; }
@@ -914,11 +910,8 @@
914
  postHeight();
915
  return;
916
  }
917
- // Medals mark the top three on the ranking metric; they stay on that column
918
- // when the reader sorts by another, which is what they mean.
919
- const ranked = rows.filter(p => isFinite(p[RANK_KEY]))
920
- .sort((a, b) => (colByKey.get(RANK_KEY).lowerBetter ? a[RANK_KEY] - b[RANK_KEY] : b[RANK_KEY] - a[RANK_KEY]));
921
- const medalOf = new Map(ranked.slice(0, 3).map((p, i) => [p, ["\u{1F947}", "\u{1F948}", "\u{1F949}"][i]]));
922
  const heat = new Map();
923
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
924
 
@@ -946,7 +939,7 @@
946
  } else if (col.key === "model") {
947
  html += nameCell(p);
948
  } else {
949
- html += valueCell(p, col, heat.get(col.key), medalOf.get(p));
950
  }
951
  }
952
  html += "</tr>";
@@ -963,7 +956,7 @@
963
  postHeight();
964
  }
965
 
966
- function valueCell(p, col, span, medal) {
967
  const v = p[col.key];
968
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
969
  if (col.text) {
@@ -980,11 +973,8 @@
980
  if (col.key === "elo" && p.elo_ci) {
981
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
982
  }
983
- const inner = medal !== undefined || col.key === RANK_KEY
984
- ? '<span class="cell"><span class="medal">' + (medal || "") + '</span><span>' + text + ci + "</span></span>"
985
- : text + ci;
986
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
987
- style + ">" + inner + "</td>";
988
  }
989
 
990
  function sortBy(key) {
 
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
 
 
 
 
302
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
303
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
304
  .verified { font-size: 0.85em; }
 
910
  postHeight();
911
  return;
912
  }
913
+ // No medals here: this table is the full ranking and already carries the
914
+ // position column, so podium marks only added a second, competing ordering.
 
 
 
915
  const heat = new Map();
916
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
917
 
 
939
  } else if (col.key === "model") {
940
  html += nameCell(p);
941
  } else {
942
+ html += valueCell(p, col, heat.get(col.key));
943
  }
944
  }
945
  html += "</tr>";
 
956
  postHeight();
957
  }
958
 
959
+ function valueCell(p, col, span) {
960
  const v = p[col.key];
961
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
962
  if (col.text) {
 
973
  if (col.key === "elo" && p.elo_ci) {
974
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
975
  }
 
 
 
976
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
977
+ style + ">" + text + ci + "</td>";
978
  }
979
 
980
  function sortBy(key) {
data/imputation_no/splits_lite/tasks_binary/datasets_medium/leaderboard_table.html CHANGED
@@ -299,10 +299,6 @@
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
302
- /* A fixed-width medal slot keeps the digits in their own sub-column whether or
303
- not a medal is present. */
304
- .cell { display: inline-flex; align-items: baseline; }
305
- .medal { flex: 0 0 1.45em; width: 1.45em; text-align: left; font-size: 0.78em; }
306
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
307
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
308
  .verified { font-size: 0.85em; }
@@ -914,11 +910,8 @@
914
  postHeight();
915
  return;
916
  }
917
- // Medals mark the top three on the ranking metric; they stay on that column
918
- // when the reader sorts by another, which is what they mean.
919
- const ranked = rows.filter(p => isFinite(p[RANK_KEY]))
920
- .sort((a, b) => (colByKey.get(RANK_KEY).lowerBetter ? a[RANK_KEY] - b[RANK_KEY] : b[RANK_KEY] - a[RANK_KEY]));
921
- const medalOf = new Map(ranked.slice(0, 3).map((p, i) => [p, ["\u{1F947}", "\u{1F948}", "\u{1F949}"][i]]));
922
  const heat = new Map();
923
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
924
 
@@ -946,7 +939,7 @@
946
  } else if (col.key === "model") {
947
  html += nameCell(p);
948
  } else {
949
- html += valueCell(p, col, heat.get(col.key), medalOf.get(p));
950
  }
951
  }
952
  html += "</tr>";
@@ -963,7 +956,7 @@
963
  postHeight();
964
  }
965
 
966
- function valueCell(p, col, span, medal) {
967
  const v = p[col.key];
968
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
969
  if (col.text) {
@@ -980,11 +973,8 @@
980
  if (col.key === "elo" && p.elo_ci) {
981
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
982
  }
983
- const inner = medal !== undefined || col.key === RANK_KEY
984
- ? '<span class="cell"><span class="medal">' + (medal || "") + '</span><span>' + text + ci + "</span></span>"
985
- : text + ci;
986
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
987
- style + ">" + inner + "</td>";
988
  }
989
 
990
  function sortBy(key) {
 
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
 
 
 
 
302
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
303
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
304
  .verified { font-size: 0.85em; }
 
910
  postHeight();
911
  return;
912
  }
913
+ // No medals here: this table is the full ranking and already carries the
914
+ // position column, so podium marks only added a second, competing ordering.
 
 
 
915
  const heat = new Map();
916
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
917
 
 
939
  } else if (col.key === "model") {
940
  html += nameCell(p);
941
  } else {
942
+ html += valueCell(p, col, heat.get(col.key));
943
  }
944
  }
945
  html += "</tr>";
 
956
  postHeight();
957
  }
958
 
959
+ function valueCell(p, col, span) {
960
  const v = p[col.key];
961
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
962
  if (col.text) {
 
973
  if (col.key === "elo" && p.elo_ci) {
974
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
975
  }
 
 
 
976
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
977
+ style + ">" + text + ci + "</td>";
978
  }
979
 
980
  function sortBy(key) {
data/imputation_no/splits_lite/tasks_binary/datasets_small/leaderboard_table.html CHANGED
@@ -299,10 +299,6 @@
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
302
- /* A fixed-width medal slot keeps the digits in their own sub-column whether or
303
- not a medal is present. */
304
- .cell { display: inline-flex; align-items: baseline; }
305
- .medal { flex: 0 0 1.45em; width: 1.45em; text-align: left; font-size: 0.78em; }
306
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
307
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
308
  .verified { font-size: 0.85em; }
@@ -914,11 +910,8 @@
914
  postHeight();
915
  return;
916
  }
917
- // Medals mark the top three on the ranking metric; they stay on that column
918
- // when the reader sorts by another, which is what they mean.
919
- const ranked = rows.filter(p => isFinite(p[RANK_KEY]))
920
- .sort((a, b) => (colByKey.get(RANK_KEY).lowerBetter ? a[RANK_KEY] - b[RANK_KEY] : b[RANK_KEY] - a[RANK_KEY]));
921
- const medalOf = new Map(ranked.slice(0, 3).map((p, i) => [p, ["\u{1F947}", "\u{1F948}", "\u{1F949}"][i]]));
922
  const heat = new Map();
923
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
924
 
@@ -946,7 +939,7 @@
946
  } else if (col.key === "model") {
947
  html += nameCell(p);
948
  } else {
949
- html += valueCell(p, col, heat.get(col.key), medalOf.get(p));
950
  }
951
  }
952
  html += "</tr>";
@@ -963,7 +956,7 @@
963
  postHeight();
964
  }
965
 
966
- function valueCell(p, col, span, medal) {
967
  const v = p[col.key];
968
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
969
  if (col.text) {
@@ -980,11 +973,8 @@
980
  if (col.key === "elo" && p.elo_ci) {
981
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
982
  }
983
- const inner = medal !== undefined || col.key === RANK_KEY
984
- ? '<span class="cell"><span class="medal">' + (medal || "") + '</span><span>' + text + ci + "</span></span>"
985
- : text + ci;
986
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
987
- style + ">" + inner + "</td>";
988
  }
989
 
990
  function sortBy(key) {
 
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
 
 
 
 
302
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
303
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
304
  .verified { font-size: 0.85em; }
 
910
  postHeight();
911
  return;
912
  }
913
+ // No medals here: this table is the full ranking and already carries the
914
+ // position column, so podium marks only added a second, competing ordering.
 
 
 
915
  const heat = new Map();
916
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
917
 
 
939
  } else if (col.key === "model") {
940
  html += nameCell(p);
941
  } else {
942
+ html += valueCell(p, col, heat.get(col.key));
943
  }
944
  }
945
  html += "</tr>";
 
956
  postHeight();
957
  }
958
 
959
+ function valueCell(p, col, span) {
960
  const v = p[col.key];
961
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
962
  if (col.text) {
 
973
  if (col.key === "elo" && p.elo_ci) {
974
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
975
  }
 
 
 
976
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
977
+ style + ">" + text + ci + "</td>";
978
  }
979
 
980
  function sortBy(key) {
data/imputation_no/splits_lite/tasks_classification/datasets_all/leaderboard_table.html CHANGED
@@ -299,10 +299,6 @@
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
302
- /* A fixed-width medal slot keeps the digits in their own sub-column whether or
303
- not a medal is present. */
304
- .cell { display: inline-flex; align-items: baseline; }
305
- .medal { flex: 0 0 1.45em; width: 1.45em; text-align: left; font-size: 0.78em; }
306
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
307
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
308
  .verified { font-size: 0.85em; }
@@ -914,11 +910,8 @@
914
  postHeight();
915
  return;
916
  }
917
- // Medals mark the top three on the ranking metric; they stay on that column
918
- // when the reader sorts by another, which is what they mean.
919
- const ranked = rows.filter(p => isFinite(p[RANK_KEY]))
920
- .sort((a, b) => (colByKey.get(RANK_KEY).lowerBetter ? a[RANK_KEY] - b[RANK_KEY] : b[RANK_KEY] - a[RANK_KEY]));
921
- const medalOf = new Map(ranked.slice(0, 3).map((p, i) => [p, ["\u{1F947}", "\u{1F948}", "\u{1F949}"][i]]));
922
  const heat = new Map();
923
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
924
 
@@ -946,7 +939,7 @@
946
  } else if (col.key === "model") {
947
  html += nameCell(p);
948
  } else {
949
- html += valueCell(p, col, heat.get(col.key), medalOf.get(p));
950
  }
951
  }
952
  html += "</tr>";
@@ -963,7 +956,7 @@
963
  postHeight();
964
  }
965
 
966
- function valueCell(p, col, span, medal) {
967
  const v = p[col.key];
968
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
969
  if (col.text) {
@@ -980,11 +973,8 @@
980
  if (col.key === "elo" && p.elo_ci) {
981
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
982
  }
983
- const inner = medal !== undefined || col.key === RANK_KEY
984
- ? '<span class="cell"><span class="medal">' + (medal || "") + '</span><span>' + text + ci + "</span></span>"
985
- : text + ci;
986
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
987
- style + ">" + inner + "</td>";
988
  }
989
 
990
  function sortBy(key) {
 
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
 
 
 
 
302
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
303
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
304
  .verified { font-size: 0.85em; }
 
910
  postHeight();
911
  return;
912
  }
913
+ // No medals here: this table is the full ranking and already carries the
914
+ // position column, so podium marks only added a second, competing ordering.
 
 
 
915
  const heat = new Map();
916
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
917
 
 
939
  } else if (col.key === "model") {
940
  html += nameCell(p);
941
  } else {
942
+ html += valueCell(p, col, heat.get(col.key));
943
  }
944
  }
945
  html += "</tr>";
 
956
  postHeight();
957
  }
958
 
959
+ function valueCell(p, col, span) {
960
  const v = p[col.key];
961
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
962
  if (col.text) {
 
973
  if (col.key === "elo" && p.elo_ci) {
974
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
975
  }
 
 
 
976
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
977
+ style + ">" + text + ci + "</td>";
978
  }
979
 
980
  function sortBy(key) {
data/imputation_no/splits_lite/tasks_classification/datasets_medium/leaderboard_table.html CHANGED
@@ -299,10 +299,6 @@
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
302
- /* A fixed-width medal slot keeps the digits in their own sub-column whether or
303
- not a medal is present. */
304
- .cell { display: inline-flex; align-items: baseline; }
305
- .medal { flex: 0 0 1.45em; width: 1.45em; text-align: left; font-size: 0.78em; }
306
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
307
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
308
  .verified { font-size: 0.85em; }
@@ -914,11 +910,8 @@
914
  postHeight();
915
  return;
916
  }
917
- // Medals mark the top three on the ranking metric; they stay on that column
918
- // when the reader sorts by another, which is what they mean.
919
- const ranked = rows.filter(p => isFinite(p[RANK_KEY]))
920
- .sort((a, b) => (colByKey.get(RANK_KEY).lowerBetter ? a[RANK_KEY] - b[RANK_KEY] : b[RANK_KEY] - a[RANK_KEY]));
921
- const medalOf = new Map(ranked.slice(0, 3).map((p, i) => [p, ["\u{1F947}", "\u{1F948}", "\u{1F949}"][i]]));
922
  const heat = new Map();
923
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
924
 
@@ -946,7 +939,7 @@
946
  } else if (col.key === "model") {
947
  html += nameCell(p);
948
  } else {
949
- html += valueCell(p, col, heat.get(col.key), medalOf.get(p));
950
  }
951
  }
952
  html += "</tr>";
@@ -963,7 +956,7 @@
963
  postHeight();
964
  }
965
 
966
- function valueCell(p, col, span, medal) {
967
  const v = p[col.key];
968
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
969
  if (col.text) {
@@ -980,11 +973,8 @@
980
  if (col.key === "elo" && p.elo_ci) {
981
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
982
  }
983
- const inner = medal !== undefined || col.key === RANK_KEY
984
- ? '<span class="cell"><span class="medal">' + (medal || "") + '</span><span>' + text + ci + "</span></span>"
985
- : text + ci;
986
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
987
- style + ">" + inner + "</td>";
988
  }
989
 
990
  function sortBy(key) {
 
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
 
 
 
 
302
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
303
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
304
  .verified { font-size: 0.85em; }
 
910
  postHeight();
911
  return;
912
  }
913
+ // No medals here: this table is the full ranking and already carries the
914
+ // position column, so podium marks only added a second, competing ordering.
 
 
 
915
  const heat = new Map();
916
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
917
 
 
939
  } else if (col.key === "model") {
940
  html += nameCell(p);
941
  } else {
942
+ html += valueCell(p, col, heat.get(col.key));
943
  }
944
  }
945
  html += "</tr>";
 
956
  postHeight();
957
  }
958
 
959
+ function valueCell(p, col, span) {
960
  const v = p[col.key];
961
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
962
  if (col.text) {
 
973
  if (col.key === "elo" && p.elo_ci) {
974
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
975
  }
 
 
 
976
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
977
+ style + ">" + text + ci + "</td>";
978
  }
979
 
980
  function sortBy(key) {
data/imputation_no/splits_lite/tasks_classification/datasets_small/leaderboard_table.html CHANGED
@@ -299,10 +299,6 @@
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
302
- /* A fixed-width medal slot keeps the digits in their own sub-column whether or
303
- not a medal is present. */
304
- .cell { display: inline-flex; align-items: baseline; }
305
- .medal { flex: 0 0 1.45em; width: 1.45em; text-align: left; font-size: 0.78em; }
306
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
307
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
308
  .verified { font-size: 0.85em; }
@@ -914,11 +910,8 @@
914
  postHeight();
915
  return;
916
  }
917
- // Medals mark the top three on the ranking metric; they stay on that column
918
- // when the reader sorts by another, which is what they mean.
919
- const ranked = rows.filter(p => isFinite(p[RANK_KEY]))
920
- .sort((a, b) => (colByKey.get(RANK_KEY).lowerBetter ? a[RANK_KEY] - b[RANK_KEY] : b[RANK_KEY] - a[RANK_KEY]));
921
- const medalOf = new Map(ranked.slice(0, 3).map((p, i) => [p, ["\u{1F947}", "\u{1F948}", "\u{1F949}"][i]]));
922
  const heat = new Map();
923
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
924
 
@@ -946,7 +939,7 @@
946
  } else if (col.key === "model") {
947
  html += nameCell(p);
948
  } else {
949
- html += valueCell(p, col, heat.get(col.key), medalOf.get(p));
950
  }
951
  }
952
  html += "</tr>";
@@ -963,7 +956,7 @@
963
  postHeight();
964
  }
965
 
966
- function valueCell(p, col, span, medal) {
967
  const v = p[col.key];
968
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
969
  if (col.text) {
@@ -980,11 +973,8 @@
980
  if (col.key === "elo" && p.elo_ci) {
981
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
982
  }
983
- const inner = medal !== undefined || col.key === RANK_KEY
984
- ? '<span class="cell"><span class="medal">' + (medal || "") + '</span><span>' + text + ci + "</span></span>"
985
- : text + ci;
986
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
987
- style + ">" + inner + "</td>";
988
  }
989
 
990
  function sortBy(key) {
 
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
 
 
 
 
302
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
303
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
304
  .verified { font-size: 0.85em; }
 
910
  postHeight();
911
  return;
912
  }
913
+ // No medals here: this table is the full ranking and already carries the
914
+ // position column, so podium marks only added a second, competing ordering.
 
 
 
915
  const heat = new Map();
916
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
917
 
 
939
  } else if (col.key === "model") {
940
  html += nameCell(p);
941
  } else {
942
+ html += valueCell(p, col, heat.get(col.key));
943
  }
944
  }
945
  html += "</tr>";
 
956
  postHeight();
957
  }
958
 
959
+ function valueCell(p, col, span) {
960
  const v = p[col.key];
961
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
962
  if (col.text) {
 
973
  if (col.key === "elo" && p.elo_ci) {
974
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
975
  }
 
 
 
976
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
977
+ style + ">" + text + ci + "</td>";
978
  }
979
 
980
  function sortBy(key) {
data/imputation_no/splits_lite/tasks_multiclass/datasets_all/leaderboard_table.html CHANGED
@@ -299,10 +299,6 @@
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
302
- /* A fixed-width medal slot keeps the digits in their own sub-column whether or
303
- not a medal is present. */
304
- .cell { display: inline-flex; align-items: baseline; }
305
- .medal { flex: 0 0 1.45em; width: 1.45em; text-align: left; font-size: 0.78em; }
306
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
307
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
308
  .verified { font-size: 0.85em; }
@@ -914,11 +910,8 @@
914
  postHeight();
915
  return;
916
  }
917
- // Medals mark the top three on the ranking metric; they stay on that column
918
- // when the reader sorts by another, which is what they mean.
919
- const ranked = rows.filter(p => isFinite(p[RANK_KEY]))
920
- .sort((a, b) => (colByKey.get(RANK_KEY).lowerBetter ? a[RANK_KEY] - b[RANK_KEY] : b[RANK_KEY] - a[RANK_KEY]));
921
- const medalOf = new Map(ranked.slice(0, 3).map((p, i) => [p, ["\u{1F947}", "\u{1F948}", "\u{1F949}"][i]]));
922
  const heat = new Map();
923
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
924
 
@@ -946,7 +939,7 @@
946
  } else if (col.key === "model") {
947
  html += nameCell(p);
948
  } else {
949
- html += valueCell(p, col, heat.get(col.key), medalOf.get(p));
950
  }
951
  }
952
  html += "</tr>";
@@ -963,7 +956,7 @@
963
  postHeight();
964
  }
965
 
966
- function valueCell(p, col, span, medal) {
967
  const v = p[col.key];
968
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
969
  if (col.text) {
@@ -980,11 +973,8 @@
980
  if (col.key === "elo" && p.elo_ci) {
981
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
982
  }
983
- const inner = medal !== undefined || col.key === RANK_KEY
984
- ? '<span class="cell"><span class="medal">' + (medal || "") + '</span><span>' + text + ci + "</span></span>"
985
- : text + ci;
986
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
987
- style + ">" + inner + "</td>";
988
  }
989
 
990
  function sortBy(key) {
 
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
 
 
 
 
302
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
303
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
304
  .verified { font-size: 0.85em; }
 
910
  postHeight();
911
  return;
912
  }
913
+ // No medals here: this table is the full ranking and already carries the
914
+ // position column, so podium marks only added a second, competing ordering.
 
 
 
915
  const heat = new Map();
916
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
917
 
 
939
  } else if (col.key === "model") {
940
  html += nameCell(p);
941
  } else {
942
+ html += valueCell(p, col, heat.get(col.key));
943
  }
944
  }
945
  html += "</tr>";
 
956
  postHeight();
957
  }
958
 
959
+ function valueCell(p, col, span) {
960
  const v = p[col.key];
961
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
962
  if (col.text) {
 
973
  if (col.key === "elo" && p.elo_ci) {
974
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
975
  }
 
 
 
976
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
977
+ style + ">" + text + ci + "</td>";
978
  }
979
 
980
  function sortBy(key) {
data/imputation_no/splits_lite/tasks_multiclass/datasets_medium/leaderboard_table.html CHANGED
@@ -299,10 +299,6 @@
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
302
- /* A fixed-width medal slot keeps the digits in their own sub-column whether or
303
- not a medal is present. */
304
- .cell { display: inline-flex; align-items: baseline; }
305
- .medal { flex: 0 0 1.45em; width: 1.45em; text-align: left; font-size: 0.78em; }
306
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
307
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
308
  .verified { font-size: 0.85em; }
@@ -914,11 +910,8 @@
914
  postHeight();
915
  return;
916
  }
917
- // Medals mark the top three on the ranking metric; they stay on that column
918
- // when the reader sorts by another, which is what they mean.
919
- const ranked = rows.filter(p => isFinite(p[RANK_KEY]))
920
- .sort((a, b) => (colByKey.get(RANK_KEY).lowerBetter ? a[RANK_KEY] - b[RANK_KEY] : b[RANK_KEY] - a[RANK_KEY]));
921
- const medalOf = new Map(ranked.slice(0, 3).map((p, i) => [p, ["\u{1F947}", "\u{1F948}", "\u{1F949}"][i]]));
922
  const heat = new Map();
923
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
924
 
@@ -946,7 +939,7 @@
946
  } else if (col.key === "model") {
947
  html += nameCell(p);
948
  } else {
949
- html += valueCell(p, col, heat.get(col.key), medalOf.get(p));
950
  }
951
  }
952
  html += "</tr>";
@@ -963,7 +956,7 @@
963
  postHeight();
964
  }
965
 
966
- function valueCell(p, col, span, medal) {
967
  const v = p[col.key];
968
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
969
  if (col.text) {
@@ -980,11 +973,8 @@
980
  if (col.key === "elo" && p.elo_ci) {
981
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
982
  }
983
- const inner = medal !== undefined || col.key === RANK_KEY
984
- ? '<span class="cell"><span class="medal">' + (medal || "") + '</span><span>' + text + ci + "</span></span>"
985
- : text + ci;
986
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
987
- style + ">" + inner + "</td>";
988
  }
989
 
990
  function sortBy(key) {
 
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
 
 
 
 
302
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
303
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
304
  .verified { font-size: 0.85em; }
 
910
  postHeight();
911
  return;
912
  }
913
+ // No medals here: this table is the full ranking and already carries the
914
+ // position column, so podium marks only added a second, competing ordering.
 
 
 
915
  const heat = new Map();
916
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
917
 
 
939
  } else if (col.key === "model") {
940
  html += nameCell(p);
941
  } else {
942
+ html += valueCell(p, col, heat.get(col.key));
943
  }
944
  }
945
  html += "</tr>";
 
956
  postHeight();
957
  }
958
 
959
+ function valueCell(p, col, span) {
960
  const v = p[col.key];
961
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
962
  if (col.text) {
 
973
  if (col.key === "elo" && p.elo_ci) {
974
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
975
  }
 
 
 
976
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
977
+ style + ">" + text + ci + "</td>";
978
  }
979
 
980
  function sortBy(key) {
data/imputation_no/splits_lite/tasks_multiclass/datasets_small/leaderboard_table.html CHANGED
@@ -299,10 +299,6 @@
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
302
- /* A fixed-width medal slot keeps the digits in their own sub-column whether or
303
- not a medal is present. */
304
- .cell { display: inline-flex; align-items: baseline; }
305
- .medal { flex: 0 0 1.45em; width: 1.45em; text-align: left; font-size: 0.78em; }
306
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
307
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
308
  .verified { font-size: 0.85em; }
@@ -914,11 +910,8 @@
914
  postHeight();
915
  return;
916
  }
917
- // Medals mark the top three on the ranking metric; they stay on that column
918
- // when the reader sorts by another, which is what they mean.
919
- const ranked = rows.filter(p => isFinite(p[RANK_KEY]))
920
- .sort((a, b) => (colByKey.get(RANK_KEY).lowerBetter ? a[RANK_KEY] - b[RANK_KEY] : b[RANK_KEY] - a[RANK_KEY]));
921
- const medalOf = new Map(ranked.slice(0, 3).map((p, i) => [p, ["\u{1F947}", "\u{1F948}", "\u{1F949}"][i]]));
922
  const heat = new Map();
923
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
924
 
@@ -946,7 +939,7 @@
946
  } else if (col.key === "model") {
947
  html += nameCell(p);
948
  } else {
949
- html += valueCell(p, col, heat.get(col.key), medalOf.get(p));
950
  }
951
  }
952
  html += "</tr>";
@@ -963,7 +956,7 @@
963
  postHeight();
964
  }
965
 
966
- function valueCell(p, col, span, medal) {
967
  const v = p[col.key];
968
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
969
  if (col.text) {
@@ -980,11 +973,8 @@
980
  if (col.key === "elo" && p.elo_ci) {
981
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
982
  }
983
- const inner = medal !== undefined || col.key === RANK_KEY
984
- ? '<span class="cell"><span class="medal">' + (medal || "") + '</span><span>' + text + ci + "</span></span>"
985
- : text + ci;
986
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
987
- style + ">" + inner + "</td>";
988
  }
989
 
990
  function sortBy(key) {
 
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
 
 
 
 
302
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
303
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
304
  .verified { font-size: 0.85em; }
 
910
  postHeight();
911
  return;
912
  }
913
+ // No medals here: this table is the full ranking and already carries the
914
+ // position column, so podium marks only added a second, competing ordering.
 
 
 
915
  const heat = new Map();
916
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
917
 
 
939
  } else if (col.key === "model") {
940
  html += nameCell(p);
941
  } else {
942
+ html += valueCell(p, col, heat.get(col.key));
943
  }
944
  }
945
  html += "</tr>";
 
956
  postHeight();
957
  }
958
 
959
+ function valueCell(p, col, span) {
960
  const v = p[col.key];
961
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
962
  if (col.text) {
 
973
  if (col.key === "elo" && p.elo_ci) {
974
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
975
  }
 
 
 
976
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
977
+ style + ">" + text + ci + "</td>";
978
  }
979
 
980
  function sortBy(key) {
data/imputation_no/splits_lite/tasks_regression/datasets_all/leaderboard_table.html CHANGED
@@ -299,10 +299,6 @@
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
302
- /* A fixed-width medal slot keeps the digits in their own sub-column whether or
303
- not a medal is present. */
304
- .cell { display: inline-flex; align-items: baseline; }
305
- .medal { flex: 0 0 1.45em; width: 1.45em; text-align: left; font-size: 0.78em; }
306
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
307
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
308
  .verified { font-size: 0.85em; }
@@ -914,11 +910,8 @@
914
  postHeight();
915
  return;
916
  }
917
- // Medals mark the top three on the ranking metric; they stay on that column
918
- // when the reader sorts by another, which is what they mean.
919
- const ranked = rows.filter(p => isFinite(p[RANK_KEY]))
920
- .sort((a, b) => (colByKey.get(RANK_KEY).lowerBetter ? a[RANK_KEY] - b[RANK_KEY] : b[RANK_KEY] - a[RANK_KEY]));
921
- const medalOf = new Map(ranked.slice(0, 3).map((p, i) => [p, ["\u{1F947}", "\u{1F948}", "\u{1F949}"][i]]));
922
  const heat = new Map();
923
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
924
 
@@ -946,7 +939,7 @@
946
  } else if (col.key === "model") {
947
  html += nameCell(p);
948
  } else {
949
- html += valueCell(p, col, heat.get(col.key), medalOf.get(p));
950
  }
951
  }
952
  html += "</tr>";
@@ -963,7 +956,7 @@
963
  postHeight();
964
  }
965
 
966
- function valueCell(p, col, span, medal) {
967
  const v = p[col.key];
968
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
969
  if (col.text) {
@@ -980,11 +973,8 @@
980
  if (col.key === "elo" && p.elo_ci) {
981
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
982
  }
983
- const inner = medal !== undefined || col.key === RANK_KEY
984
- ? '<span class="cell"><span class="medal">' + (medal || "") + '</span><span>' + text + ci + "</span></span>"
985
- : text + ci;
986
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
987
- style + ">" + inner + "</td>";
988
  }
989
 
990
  function sortBy(key) {
 
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
 
 
 
 
302
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
303
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
304
  .verified { font-size: 0.85em; }
 
910
  postHeight();
911
  return;
912
  }
913
+ // No medals here: this table is the full ranking and already carries the
914
+ // position column, so podium marks only added a second, competing ordering.
 
 
 
915
  const heat = new Map();
916
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
917
 
 
939
  } else if (col.key === "model") {
940
  html += nameCell(p);
941
  } else {
942
+ html += valueCell(p, col, heat.get(col.key));
943
  }
944
  }
945
  html += "</tr>";
 
956
  postHeight();
957
  }
958
 
959
+ function valueCell(p, col, span) {
960
  const v = p[col.key];
961
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
962
  if (col.text) {
 
973
  if (col.key === "elo" && p.elo_ci) {
974
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
975
  }
 
 
 
976
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
977
+ style + ">" + text + ci + "</td>";
978
  }
979
 
980
  function sortBy(key) {
data/imputation_no/splits_lite/tasks_regression/datasets_medium/leaderboard_table.html CHANGED
@@ -299,10 +299,6 @@
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
302
- /* A fixed-width medal slot keeps the digits in their own sub-column whether or
303
- not a medal is present. */
304
- .cell { display: inline-flex; align-items: baseline; }
305
- .medal { flex: 0 0 1.45em; width: 1.45em; text-align: left; font-size: 0.78em; }
306
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
307
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
308
  .verified { font-size: 0.85em; }
@@ -914,11 +910,8 @@
914
  postHeight();
915
  return;
916
  }
917
- // Medals mark the top three on the ranking metric; they stay on that column
918
- // when the reader sorts by another, which is what they mean.
919
- const ranked = rows.filter(p => isFinite(p[RANK_KEY]))
920
- .sort((a, b) => (colByKey.get(RANK_KEY).lowerBetter ? a[RANK_KEY] - b[RANK_KEY] : b[RANK_KEY] - a[RANK_KEY]));
921
- const medalOf = new Map(ranked.slice(0, 3).map((p, i) => [p, ["\u{1F947}", "\u{1F948}", "\u{1F949}"][i]]));
922
  const heat = new Map();
923
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
924
 
@@ -946,7 +939,7 @@
946
  } else if (col.key === "model") {
947
  html += nameCell(p);
948
  } else {
949
- html += valueCell(p, col, heat.get(col.key), medalOf.get(p));
950
  }
951
  }
952
  html += "</tr>";
@@ -963,7 +956,7 @@
963
  postHeight();
964
  }
965
 
966
- function valueCell(p, col, span, medal) {
967
  const v = p[col.key];
968
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
969
  if (col.text) {
@@ -980,11 +973,8 @@
980
  if (col.key === "elo" && p.elo_ci) {
981
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
982
  }
983
- const inner = medal !== undefined || col.key === RANK_KEY
984
- ? '<span class="cell"><span class="medal">' + (medal || "") + '</span><span>' + text + ci + "</span></span>"
985
- : text + ci;
986
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
987
- style + ">" + inner + "</td>";
988
  }
989
 
990
  function sortBy(key) {
 
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
 
 
 
 
302
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
303
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
304
  .verified { font-size: 0.85em; }
 
910
  postHeight();
911
  return;
912
  }
913
+ // No medals here: this table is the full ranking and already carries the
914
+ // position column, so podium marks only added a second, competing ordering.
 
 
 
915
  const heat = new Map();
916
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
917
 
 
939
  } else if (col.key === "model") {
940
  html += nameCell(p);
941
  } else {
942
+ html += valueCell(p, col, heat.get(col.key));
943
  }
944
  }
945
  html += "</tr>";
 
956
  postHeight();
957
  }
958
 
959
+ function valueCell(p, col, span) {
960
  const v = p[col.key];
961
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
962
  if (col.text) {
 
973
  if (col.key === "elo" && p.elo_ci) {
974
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
975
  }
 
 
 
976
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
977
+ style + ">" + text + ci + "</td>";
978
  }
979
 
980
  function sortBy(key) {
data/imputation_no/splits_lite/tasks_regression/datasets_small/leaderboard_table.html CHANGED
@@ -299,10 +299,6 @@
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
302
- /* A fixed-width medal slot keeps the digits in their own sub-column whether or
303
- not a medal is present. */
304
- .cell { display: inline-flex; align-items: baseline; }
305
- .medal { flex: 0 0 1.45em; width: 1.45em; text-align: left; font-size: 0.78em; }
306
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
307
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
308
  .verified { font-size: 0.85em; }
@@ -914,11 +910,8 @@
914
  postHeight();
915
  return;
916
  }
917
- // Medals mark the top three on the ranking metric; they stay on that column
918
- // when the reader sorts by another, which is what they mean.
919
- const ranked = rows.filter(p => isFinite(p[RANK_KEY]))
920
- .sort((a, b) => (colByKey.get(RANK_KEY).lowerBetter ? a[RANK_KEY] - b[RANK_KEY] : b[RANK_KEY] - a[RANK_KEY]));
921
- const medalOf = new Map(ranked.slice(0, 3).map((p, i) => [p, ["\u{1F947}", "\u{1F948}", "\u{1F949}"][i]]));
922
  const heat = new Map();
923
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
924
 
@@ -946,7 +939,7 @@
946
  } else if (col.key === "model") {
947
  html += nameCell(p);
948
  } else {
949
- html += valueCell(p, col, heat.get(col.key), medalOf.get(p));
950
  }
951
  }
952
  html += "</tr>";
@@ -963,7 +956,7 @@
963
  postHeight();
964
  }
965
 
966
- function valueCell(p, col, span, medal) {
967
  const v = p[col.key];
968
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
969
  if (col.text) {
@@ -980,11 +973,8 @@
980
  if (col.key === "elo" && p.elo_ci) {
981
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
982
  }
983
- const inner = medal !== undefined || col.key === RANK_KEY
984
- ? '<span class="cell"><span class="medal">' + (medal || "") + '</span><span>' + text + ci + "</span></span>"
985
- : text + ci;
986
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
987
- style + ">" + inner + "</td>";
988
  }
989
 
990
  function sortBy(key) {
 
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
 
 
 
 
302
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
303
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
304
  .verified { font-size: 0.85em; }
 
910
  postHeight();
911
  return;
912
  }
913
+ // No medals here: this table is the full ranking and already carries the
914
+ // position column, so podium marks only added a second, competing ordering.
 
 
 
915
  const heat = new Map();
916
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
917
 
 
939
  } else if (col.key === "model") {
940
  html += nameCell(p);
941
  } else {
942
+ html += valueCell(p, col, heat.get(col.key));
943
  }
944
  }
945
  html += "</tr>";
 
956
  postHeight();
957
  }
958
 
959
+ function valueCell(p, col, span) {
960
  const v = p[col.key];
961
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
962
  if (col.text) {
 
973
  if (col.key === "elo" && p.elo_ci) {
974
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
975
  }
 
 
 
976
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
977
+ style + ">" + text + ci + "</td>";
978
  }
979
 
980
  function sortBy(key) {
data/imputation_yes/splits_all/tasks_all/datasets_all/leaderboard_table.html CHANGED
@@ -299,10 +299,6 @@
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
302
- /* A fixed-width medal slot keeps the digits in their own sub-column whether or
303
- not a medal is present. */
304
- .cell { display: inline-flex; align-items: baseline; }
305
- .medal { flex: 0 0 1.45em; width: 1.45em; text-align: left; font-size: 0.78em; }
306
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
307
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
308
  .verified { font-size: 0.85em; }
@@ -914,11 +910,8 @@
914
  postHeight();
915
  return;
916
  }
917
- // Medals mark the top three on the ranking metric; they stay on that column
918
- // when the reader sorts by another, which is what they mean.
919
- const ranked = rows.filter(p => isFinite(p[RANK_KEY]))
920
- .sort((a, b) => (colByKey.get(RANK_KEY).lowerBetter ? a[RANK_KEY] - b[RANK_KEY] : b[RANK_KEY] - a[RANK_KEY]));
921
- const medalOf = new Map(ranked.slice(0, 3).map((p, i) => [p, ["\u{1F947}", "\u{1F948}", "\u{1F949}"][i]]));
922
  const heat = new Map();
923
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
924
 
@@ -946,7 +939,7 @@
946
  } else if (col.key === "model") {
947
  html += nameCell(p);
948
  } else {
949
- html += valueCell(p, col, heat.get(col.key), medalOf.get(p));
950
  }
951
  }
952
  html += "</tr>";
@@ -963,7 +956,7 @@
963
  postHeight();
964
  }
965
 
966
- function valueCell(p, col, span, medal) {
967
  const v = p[col.key];
968
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
969
  if (col.text) {
@@ -980,11 +973,8 @@
980
  if (col.key === "elo" && p.elo_ci) {
981
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
982
  }
983
- const inner = medal !== undefined || col.key === RANK_KEY
984
- ? '<span class="cell"><span class="medal">' + (medal || "") + '</span><span>' + text + ci + "</span></span>"
985
- : text + ci;
986
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
987
- style + ">" + inner + "</td>";
988
  }
989
 
990
  function sortBy(key) {
 
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
 
 
 
 
302
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
303
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
304
  .verified { font-size: 0.85em; }
 
910
  postHeight();
911
  return;
912
  }
913
+ // No medals here: this table is the full ranking and already carries the
914
+ // position column, so podium marks only added a second, competing ordering.
 
 
 
915
  const heat = new Map();
916
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
917
 
 
939
  } else if (col.key === "model") {
940
  html += nameCell(p);
941
  } else {
942
+ html += valueCell(p, col, heat.get(col.key));
943
  }
944
  }
945
  html += "</tr>";
 
956
  postHeight();
957
  }
958
 
959
+ function valueCell(p, col, span) {
960
  const v = p[col.key];
961
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
962
  if (col.text) {
 
973
  if (col.key === "elo" && p.elo_ci) {
974
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
975
  }
 
 
 
976
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
977
+ style + ">" + text + ci + "</td>";
978
  }
979
 
980
  function sortBy(key) {
data/imputation_yes/splits_all/tasks_all/datasets_medium/leaderboard_table.html CHANGED
@@ -299,10 +299,6 @@
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
302
- /* A fixed-width medal slot keeps the digits in their own sub-column whether or
303
- not a medal is present. */
304
- .cell { display: inline-flex; align-items: baseline; }
305
- .medal { flex: 0 0 1.45em; width: 1.45em; text-align: left; font-size: 0.78em; }
306
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
307
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
308
  .verified { font-size: 0.85em; }
@@ -914,11 +910,8 @@
914
  postHeight();
915
  return;
916
  }
917
- // Medals mark the top three on the ranking metric; they stay on that column
918
- // when the reader sorts by another, which is what they mean.
919
- const ranked = rows.filter(p => isFinite(p[RANK_KEY]))
920
- .sort((a, b) => (colByKey.get(RANK_KEY).lowerBetter ? a[RANK_KEY] - b[RANK_KEY] : b[RANK_KEY] - a[RANK_KEY]));
921
- const medalOf = new Map(ranked.slice(0, 3).map((p, i) => [p, ["\u{1F947}", "\u{1F948}", "\u{1F949}"][i]]));
922
  const heat = new Map();
923
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
924
 
@@ -946,7 +939,7 @@
946
  } else if (col.key === "model") {
947
  html += nameCell(p);
948
  } else {
949
- html += valueCell(p, col, heat.get(col.key), medalOf.get(p));
950
  }
951
  }
952
  html += "</tr>";
@@ -963,7 +956,7 @@
963
  postHeight();
964
  }
965
 
966
- function valueCell(p, col, span, medal) {
967
  const v = p[col.key];
968
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
969
  if (col.text) {
@@ -980,11 +973,8 @@
980
  if (col.key === "elo" && p.elo_ci) {
981
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
982
  }
983
- const inner = medal !== undefined || col.key === RANK_KEY
984
- ? '<span class="cell"><span class="medal">' + (medal || "") + '</span><span>' + text + ci + "</span></span>"
985
- : text + ci;
986
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
987
- style + ">" + inner + "</td>";
988
  }
989
 
990
  function sortBy(key) {
 
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
 
 
 
 
302
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
303
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
304
  .verified { font-size: 0.85em; }
 
910
  postHeight();
911
  return;
912
  }
913
+ // No medals here: this table is the full ranking and already carries the
914
+ // position column, so podium marks only added a second, competing ordering.
 
 
 
915
  const heat = new Map();
916
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
917
 
 
939
  } else if (col.key === "model") {
940
  html += nameCell(p);
941
  } else {
942
+ html += valueCell(p, col, heat.get(col.key));
943
  }
944
  }
945
  html += "</tr>";
 
956
  postHeight();
957
  }
958
 
959
+ function valueCell(p, col, span) {
960
  const v = p[col.key];
961
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
962
  if (col.text) {
 
973
  if (col.key === "elo" && p.elo_ci) {
974
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
975
  }
 
 
 
976
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
977
+ style + ">" + text + ci + "</td>";
978
  }
979
 
980
  function sortBy(key) {
data/imputation_yes/splits_all/tasks_all/datasets_small/leaderboard_table.html CHANGED
@@ -299,10 +299,6 @@
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
302
- /* A fixed-width medal slot keeps the digits in their own sub-column whether or
303
- not a medal is present. */
304
- .cell { display: inline-flex; align-items: baseline; }
305
- .medal { flex: 0 0 1.45em; width: 1.45em; text-align: left; font-size: 0.78em; }
306
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
307
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
308
  .verified { font-size: 0.85em; }
@@ -914,11 +910,8 @@
914
  postHeight();
915
  return;
916
  }
917
- // Medals mark the top three on the ranking metric; they stay on that column
918
- // when the reader sorts by another, which is what they mean.
919
- const ranked = rows.filter(p => isFinite(p[RANK_KEY]))
920
- .sort((a, b) => (colByKey.get(RANK_KEY).lowerBetter ? a[RANK_KEY] - b[RANK_KEY] : b[RANK_KEY] - a[RANK_KEY]));
921
- const medalOf = new Map(ranked.slice(0, 3).map((p, i) => [p, ["\u{1F947}", "\u{1F948}", "\u{1F949}"][i]]));
922
  const heat = new Map();
923
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
924
 
@@ -946,7 +939,7 @@
946
  } else if (col.key === "model") {
947
  html += nameCell(p);
948
  } else {
949
- html += valueCell(p, col, heat.get(col.key), medalOf.get(p));
950
  }
951
  }
952
  html += "</tr>";
@@ -963,7 +956,7 @@
963
  postHeight();
964
  }
965
 
966
- function valueCell(p, col, span, medal) {
967
  const v = p[col.key];
968
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
969
  if (col.text) {
@@ -980,11 +973,8 @@
980
  if (col.key === "elo" && p.elo_ci) {
981
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
982
  }
983
- const inner = medal !== undefined || col.key === RANK_KEY
984
- ? '<span class="cell"><span class="medal">' + (medal || "") + '</span><span>' + text + ci + "</span></span>"
985
- : text + ci;
986
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
987
- style + ">" + inner + "</td>";
988
  }
989
 
990
  function sortBy(key) {
 
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
 
 
 
 
302
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
303
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
304
  .verified { font-size: 0.85em; }
 
910
  postHeight();
911
  return;
912
  }
913
+ // No medals here: this table is the full ranking and already carries the
914
+ // position column, so podium marks only added a second, competing ordering.
 
 
 
915
  const heat = new Map();
916
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
917
 
 
939
  } else if (col.key === "model") {
940
  html += nameCell(p);
941
  } else {
942
+ html += valueCell(p, col, heat.get(col.key));
943
  }
944
  }
945
  html += "</tr>";
 
956
  postHeight();
957
  }
958
 
959
+ function valueCell(p, col, span) {
960
  const v = p[col.key];
961
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
962
  if (col.text) {
 
973
  if (col.key === "elo" && p.elo_ci) {
974
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
975
  }
 
 
 
976
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
977
+ style + ">" + text + ci + "</td>";
978
  }
979
 
980
  function sortBy(key) {
data/imputation_yes/splits_all/tasks_binary/datasets_all/leaderboard_table.html CHANGED
@@ -299,10 +299,6 @@
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
302
- /* A fixed-width medal slot keeps the digits in their own sub-column whether or
303
- not a medal is present. */
304
- .cell { display: inline-flex; align-items: baseline; }
305
- .medal { flex: 0 0 1.45em; width: 1.45em; text-align: left; font-size: 0.78em; }
306
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
307
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
308
  .verified { font-size: 0.85em; }
@@ -914,11 +910,8 @@
914
  postHeight();
915
  return;
916
  }
917
- // Medals mark the top three on the ranking metric; they stay on that column
918
- // when the reader sorts by another, which is what they mean.
919
- const ranked = rows.filter(p => isFinite(p[RANK_KEY]))
920
- .sort((a, b) => (colByKey.get(RANK_KEY).lowerBetter ? a[RANK_KEY] - b[RANK_KEY] : b[RANK_KEY] - a[RANK_KEY]));
921
- const medalOf = new Map(ranked.slice(0, 3).map((p, i) => [p, ["\u{1F947}", "\u{1F948}", "\u{1F949}"][i]]));
922
  const heat = new Map();
923
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
924
 
@@ -946,7 +939,7 @@
946
  } else if (col.key === "model") {
947
  html += nameCell(p);
948
  } else {
949
- html += valueCell(p, col, heat.get(col.key), medalOf.get(p));
950
  }
951
  }
952
  html += "</tr>";
@@ -963,7 +956,7 @@
963
  postHeight();
964
  }
965
 
966
- function valueCell(p, col, span, medal) {
967
  const v = p[col.key];
968
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
969
  if (col.text) {
@@ -980,11 +973,8 @@
980
  if (col.key === "elo" && p.elo_ci) {
981
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
982
  }
983
- const inner = medal !== undefined || col.key === RANK_KEY
984
- ? '<span class="cell"><span class="medal">' + (medal || "") + '</span><span>' + text + ci + "</span></span>"
985
- : text + ci;
986
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
987
- style + ">" + inner + "</td>";
988
  }
989
 
990
  function sortBy(key) {
 
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
 
 
 
 
302
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
303
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
304
  .verified { font-size: 0.85em; }
 
910
  postHeight();
911
  return;
912
  }
913
+ // No medals here: this table is the full ranking and already carries the
914
+ // position column, so podium marks only added a second, competing ordering.
 
 
 
915
  const heat = new Map();
916
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
917
 
 
939
  } else if (col.key === "model") {
940
  html += nameCell(p);
941
  } else {
942
+ html += valueCell(p, col, heat.get(col.key));
943
  }
944
  }
945
  html += "</tr>";
 
956
  postHeight();
957
  }
958
 
959
+ function valueCell(p, col, span) {
960
  const v = p[col.key];
961
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
962
  if (col.text) {
 
973
  if (col.key === "elo" && p.elo_ci) {
974
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
975
  }
 
 
 
976
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
977
+ style + ">" + text + ci + "</td>";
978
  }
979
 
980
  function sortBy(key) {
data/imputation_yes/splits_all/tasks_binary/datasets_medium/leaderboard_table.html CHANGED
@@ -299,10 +299,6 @@
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
302
- /* A fixed-width medal slot keeps the digits in their own sub-column whether or
303
- not a medal is present. */
304
- .cell { display: inline-flex; align-items: baseline; }
305
- .medal { flex: 0 0 1.45em; width: 1.45em; text-align: left; font-size: 0.78em; }
306
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
307
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
308
  .verified { font-size: 0.85em; }
@@ -914,11 +910,8 @@
914
  postHeight();
915
  return;
916
  }
917
- // Medals mark the top three on the ranking metric; they stay on that column
918
- // when the reader sorts by another, which is what they mean.
919
- const ranked = rows.filter(p => isFinite(p[RANK_KEY]))
920
- .sort((a, b) => (colByKey.get(RANK_KEY).lowerBetter ? a[RANK_KEY] - b[RANK_KEY] : b[RANK_KEY] - a[RANK_KEY]));
921
- const medalOf = new Map(ranked.slice(0, 3).map((p, i) => [p, ["\u{1F947}", "\u{1F948}", "\u{1F949}"][i]]));
922
  const heat = new Map();
923
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
924
 
@@ -946,7 +939,7 @@
946
  } else if (col.key === "model") {
947
  html += nameCell(p);
948
  } else {
949
- html += valueCell(p, col, heat.get(col.key), medalOf.get(p));
950
  }
951
  }
952
  html += "</tr>";
@@ -963,7 +956,7 @@
963
  postHeight();
964
  }
965
 
966
- function valueCell(p, col, span, medal) {
967
  const v = p[col.key];
968
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
969
  if (col.text) {
@@ -980,11 +973,8 @@
980
  if (col.key === "elo" && p.elo_ci) {
981
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
982
  }
983
- const inner = medal !== undefined || col.key === RANK_KEY
984
- ? '<span class="cell"><span class="medal">' + (medal || "") + '</span><span>' + text + ci + "</span></span>"
985
- : text + ci;
986
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
987
- style + ">" + inner + "</td>";
988
  }
989
 
990
  function sortBy(key) {
 
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
 
 
 
 
302
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
303
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
304
  .verified { font-size: 0.85em; }
 
910
  postHeight();
911
  return;
912
  }
913
+ // No medals here: this table is the full ranking and already carries the
914
+ // position column, so podium marks only added a second, competing ordering.
 
 
 
915
  const heat = new Map();
916
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
917
 
 
939
  } else if (col.key === "model") {
940
  html += nameCell(p);
941
  } else {
942
+ html += valueCell(p, col, heat.get(col.key));
943
  }
944
  }
945
  html += "</tr>";
 
956
  postHeight();
957
  }
958
 
959
+ function valueCell(p, col, span) {
960
  const v = p[col.key];
961
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
962
  if (col.text) {
 
973
  if (col.key === "elo" && p.elo_ci) {
974
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
975
  }
 
 
 
976
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
977
+ style + ">" + text + ci + "</td>";
978
  }
979
 
980
  function sortBy(key) {
data/imputation_yes/splits_all/tasks_binary/datasets_small/leaderboard_table.html CHANGED
@@ -299,10 +299,6 @@
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
302
- /* A fixed-width medal slot keeps the digits in their own sub-column whether or
303
- not a medal is present. */
304
- .cell { display: inline-flex; align-items: baseline; }
305
- .medal { flex: 0 0 1.45em; width: 1.45em; text-align: left; font-size: 0.78em; }
306
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
307
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
308
  .verified { font-size: 0.85em; }
@@ -914,11 +910,8 @@
914
  postHeight();
915
  return;
916
  }
917
- // Medals mark the top three on the ranking metric; they stay on that column
918
- // when the reader sorts by another, which is what they mean.
919
- const ranked = rows.filter(p => isFinite(p[RANK_KEY]))
920
- .sort((a, b) => (colByKey.get(RANK_KEY).lowerBetter ? a[RANK_KEY] - b[RANK_KEY] : b[RANK_KEY] - a[RANK_KEY]));
921
- const medalOf = new Map(ranked.slice(0, 3).map((p, i) => [p, ["\u{1F947}", "\u{1F948}", "\u{1F949}"][i]]));
922
  const heat = new Map();
923
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
924
 
@@ -946,7 +939,7 @@
946
  } else if (col.key === "model") {
947
  html += nameCell(p);
948
  } else {
949
- html += valueCell(p, col, heat.get(col.key), medalOf.get(p));
950
  }
951
  }
952
  html += "</tr>";
@@ -963,7 +956,7 @@
963
  postHeight();
964
  }
965
 
966
- function valueCell(p, col, span, medal) {
967
  const v = p[col.key];
968
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
969
  if (col.text) {
@@ -980,11 +973,8 @@
980
  if (col.key === "elo" && p.elo_ci) {
981
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
982
  }
983
- const inner = medal !== undefined || col.key === RANK_KEY
984
- ? '<span class="cell"><span class="medal">' + (medal || "") + '</span><span>' + text + ci + "</span></span>"
985
- : text + ci;
986
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
987
- style + ">" + inner + "</td>";
988
  }
989
 
990
  function sortBy(key) {
 
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
 
 
 
 
302
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
303
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
304
  .verified { font-size: 0.85em; }
 
910
  postHeight();
911
  return;
912
  }
913
+ // No medals here: this table is the full ranking and already carries the
914
+ // position column, so podium marks only added a second, competing ordering.
 
 
 
915
  const heat = new Map();
916
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
917
 
 
939
  } else if (col.key === "model") {
940
  html += nameCell(p);
941
  } else {
942
+ html += valueCell(p, col, heat.get(col.key));
943
  }
944
  }
945
  html += "</tr>";
 
956
  postHeight();
957
  }
958
 
959
+ function valueCell(p, col, span) {
960
  const v = p[col.key];
961
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
962
  if (col.text) {
 
973
  if (col.key === "elo" && p.elo_ci) {
974
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
975
  }
 
 
 
976
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
977
+ style + ">" + text + ci + "</td>";
978
  }
979
 
980
  function sortBy(key) {
data/imputation_yes/splits_all/tasks_classification/datasets_all/leaderboard_table.html CHANGED
@@ -299,10 +299,6 @@
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
302
- /* A fixed-width medal slot keeps the digits in their own sub-column whether or
303
- not a medal is present. */
304
- .cell { display: inline-flex; align-items: baseline; }
305
- .medal { flex: 0 0 1.45em; width: 1.45em; text-align: left; font-size: 0.78em; }
306
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
307
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
308
  .verified { font-size: 0.85em; }
@@ -914,11 +910,8 @@
914
  postHeight();
915
  return;
916
  }
917
- // Medals mark the top three on the ranking metric; they stay on that column
918
- // when the reader sorts by another, which is what they mean.
919
- const ranked = rows.filter(p => isFinite(p[RANK_KEY]))
920
- .sort((a, b) => (colByKey.get(RANK_KEY).lowerBetter ? a[RANK_KEY] - b[RANK_KEY] : b[RANK_KEY] - a[RANK_KEY]));
921
- const medalOf = new Map(ranked.slice(0, 3).map((p, i) => [p, ["\u{1F947}", "\u{1F948}", "\u{1F949}"][i]]));
922
  const heat = new Map();
923
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
924
 
@@ -946,7 +939,7 @@
946
  } else if (col.key === "model") {
947
  html += nameCell(p);
948
  } else {
949
- html += valueCell(p, col, heat.get(col.key), medalOf.get(p));
950
  }
951
  }
952
  html += "</tr>";
@@ -963,7 +956,7 @@
963
  postHeight();
964
  }
965
 
966
- function valueCell(p, col, span, medal) {
967
  const v = p[col.key];
968
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
969
  if (col.text) {
@@ -980,11 +973,8 @@
980
  if (col.key === "elo" && p.elo_ci) {
981
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
982
  }
983
- const inner = medal !== undefined || col.key === RANK_KEY
984
- ? '<span class="cell"><span class="medal">' + (medal || "") + '</span><span>' + text + ci + "</span></span>"
985
- : text + ci;
986
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
987
- style + ">" + inner + "</td>";
988
  }
989
 
990
  function sortBy(key) {
 
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
 
 
 
 
302
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
303
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
304
  .verified { font-size: 0.85em; }
 
910
  postHeight();
911
  return;
912
  }
913
+ // No medals here: this table is the full ranking and already carries the
914
+ // position column, so podium marks only added a second, competing ordering.
 
 
 
915
  const heat = new Map();
916
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
917
 
 
939
  } else if (col.key === "model") {
940
  html += nameCell(p);
941
  } else {
942
+ html += valueCell(p, col, heat.get(col.key));
943
  }
944
  }
945
  html += "</tr>";
 
956
  postHeight();
957
  }
958
 
959
+ function valueCell(p, col, span) {
960
  const v = p[col.key];
961
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
962
  if (col.text) {
 
973
  if (col.key === "elo" && p.elo_ci) {
974
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
975
  }
 
 
 
976
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
977
+ style + ">" + text + ci + "</td>";
978
  }
979
 
980
  function sortBy(key) {
data/imputation_yes/splits_all/tasks_classification/datasets_medium/leaderboard_table.html CHANGED
@@ -299,10 +299,6 @@
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
302
- /* A fixed-width medal slot keeps the digits in their own sub-column whether or
303
- not a medal is present. */
304
- .cell { display: inline-flex; align-items: baseline; }
305
- .medal { flex: 0 0 1.45em; width: 1.45em; text-align: left; font-size: 0.78em; }
306
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
307
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
308
  .verified { font-size: 0.85em; }
@@ -914,11 +910,8 @@
914
  postHeight();
915
  return;
916
  }
917
- // Medals mark the top three on the ranking metric; they stay on that column
918
- // when the reader sorts by another, which is what they mean.
919
- const ranked = rows.filter(p => isFinite(p[RANK_KEY]))
920
- .sort((a, b) => (colByKey.get(RANK_KEY).lowerBetter ? a[RANK_KEY] - b[RANK_KEY] : b[RANK_KEY] - a[RANK_KEY]));
921
- const medalOf = new Map(ranked.slice(0, 3).map((p, i) => [p, ["\u{1F947}", "\u{1F948}", "\u{1F949}"][i]]));
922
  const heat = new Map();
923
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
924
 
@@ -946,7 +939,7 @@
946
  } else if (col.key === "model") {
947
  html += nameCell(p);
948
  } else {
949
- html += valueCell(p, col, heat.get(col.key), medalOf.get(p));
950
  }
951
  }
952
  html += "</tr>";
@@ -963,7 +956,7 @@
963
  postHeight();
964
  }
965
 
966
- function valueCell(p, col, span, medal) {
967
  const v = p[col.key];
968
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
969
  if (col.text) {
@@ -980,11 +973,8 @@
980
  if (col.key === "elo" && p.elo_ci) {
981
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
982
  }
983
- const inner = medal !== undefined || col.key === RANK_KEY
984
- ? '<span class="cell"><span class="medal">' + (medal || "") + '</span><span>' + text + ci + "</span></span>"
985
- : text + ci;
986
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
987
- style + ">" + inner + "</td>";
988
  }
989
 
990
  function sortBy(key) {
 
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
 
 
 
 
302
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
303
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
304
  .verified { font-size: 0.85em; }
 
910
  postHeight();
911
  return;
912
  }
913
+ // No medals here: this table is the full ranking and already carries the
914
+ // position column, so podium marks only added a second, competing ordering.
 
 
 
915
  const heat = new Map();
916
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
917
 
 
939
  } else if (col.key === "model") {
940
  html += nameCell(p);
941
  } else {
942
+ html += valueCell(p, col, heat.get(col.key));
943
  }
944
  }
945
  html += "</tr>";
 
956
  postHeight();
957
  }
958
 
959
+ function valueCell(p, col, span) {
960
  const v = p[col.key];
961
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
962
  if (col.text) {
 
973
  if (col.key === "elo" && p.elo_ci) {
974
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
975
  }
 
 
 
976
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
977
+ style + ">" + text + ci + "</td>";
978
  }
979
 
980
  function sortBy(key) {
data/imputation_yes/splits_all/tasks_classification/datasets_small/leaderboard_table.html CHANGED
@@ -299,10 +299,6 @@
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
302
- /* A fixed-width medal slot keeps the digits in their own sub-column whether or
303
- not a medal is present. */
304
- .cell { display: inline-flex; align-items: baseline; }
305
- .medal { flex: 0 0 1.45em; width: 1.45em; text-align: left; font-size: 0.78em; }
306
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
307
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
308
  .verified { font-size: 0.85em; }
@@ -914,11 +910,8 @@
914
  postHeight();
915
  return;
916
  }
917
- // Medals mark the top three on the ranking metric; they stay on that column
918
- // when the reader sorts by another, which is what they mean.
919
- const ranked = rows.filter(p => isFinite(p[RANK_KEY]))
920
- .sort((a, b) => (colByKey.get(RANK_KEY).lowerBetter ? a[RANK_KEY] - b[RANK_KEY] : b[RANK_KEY] - a[RANK_KEY]));
921
- const medalOf = new Map(ranked.slice(0, 3).map((p, i) => [p, ["\u{1F947}", "\u{1F948}", "\u{1F949}"][i]]));
922
  const heat = new Map();
923
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
924
 
@@ -946,7 +939,7 @@
946
  } else if (col.key === "model") {
947
  html += nameCell(p);
948
  } else {
949
- html += valueCell(p, col, heat.get(col.key), medalOf.get(p));
950
  }
951
  }
952
  html += "</tr>";
@@ -963,7 +956,7 @@
963
  postHeight();
964
  }
965
 
966
- function valueCell(p, col, span, medal) {
967
  const v = p[col.key];
968
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
969
  if (col.text) {
@@ -980,11 +973,8 @@
980
  if (col.key === "elo" && p.elo_ci) {
981
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
982
  }
983
- const inner = medal !== undefined || col.key === RANK_KEY
984
- ? '<span class="cell"><span class="medal">' + (medal || "") + '</span><span>' + text + ci + "</span></span>"
985
- : text + ci;
986
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
987
- style + ">" + inner + "</td>";
988
  }
989
 
990
  function sortBy(key) {
 
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
 
 
 
 
302
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
303
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
304
  .verified { font-size: 0.85em; }
 
910
  postHeight();
911
  return;
912
  }
913
+ // No medals here: this table is the full ranking and already carries the
914
+ // position column, so podium marks only added a second, competing ordering.
 
 
 
915
  const heat = new Map();
916
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
917
 
 
939
  } else if (col.key === "model") {
940
  html += nameCell(p);
941
  } else {
942
+ html += valueCell(p, col, heat.get(col.key));
943
  }
944
  }
945
  html += "</tr>";
 
956
  postHeight();
957
  }
958
 
959
+ function valueCell(p, col, span) {
960
  const v = p[col.key];
961
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
962
  if (col.text) {
 
973
  if (col.key === "elo" && p.elo_ci) {
974
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
975
  }
 
 
 
976
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
977
+ style + ">" + text + ci + "</td>";
978
  }
979
 
980
  function sortBy(key) {
data/imputation_yes/splits_all/tasks_multiclass/datasets_all/leaderboard_table.html CHANGED
@@ -299,10 +299,6 @@
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
302
- /* A fixed-width medal slot keeps the digits in their own sub-column whether or
303
- not a medal is present. */
304
- .cell { display: inline-flex; align-items: baseline; }
305
- .medal { flex: 0 0 1.45em; width: 1.45em; text-align: left; font-size: 0.78em; }
306
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
307
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
308
  .verified { font-size: 0.85em; }
@@ -914,11 +910,8 @@
914
  postHeight();
915
  return;
916
  }
917
- // Medals mark the top three on the ranking metric; they stay on that column
918
- // when the reader sorts by another, which is what they mean.
919
- const ranked = rows.filter(p => isFinite(p[RANK_KEY]))
920
- .sort((a, b) => (colByKey.get(RANK_KEY).lowerBetter ? a[RANK_KEY] - b[RANK_KEY] : b[RANK_KEY] - a[RANK_KEY]));
921
- const medalOf = new Map(ranked.slice(0, 3).map((p, i) => [p, ["\u{1F947}", "\u{1F948}", "\u{1F949}"][i]]));
922
  const heat = new Map();
923
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
924
 
@@ -946,7 +939,7 @@
946
  } else if (col.key === "model") {
947
  html += nameCell(p);
948
  } else {
949
- html += valueCell(p, col, heat.get(col.key), medalOf.get(p));
950
  }
951
  }
952
  html += "</tr>";
@@ -963,7 +956,7 @@
963
  postHeight();
964
  }
965
 
966
- function valueCell(p, col, span, medal) {
967
  const v = p[col.key];
968
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
969
  if (col.text) {
@@ -980,11 +973,8 @@
980
  if (col.key === "elo" && p.elo_ci) {
981
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
982
  }
983
- const inner = medal !== undefined || col.key === RANK_KEY
984
- ? '<span class="cell"><span class="medal">' + (medal || "") + '</span><span>' + text + ci + "</span></span>"
985
- : text + ci;
986
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
987
- style + ">" + inner + "</td>";
988
  }
989
 
990
  function sortBy(key) {
 
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
 
 
 
 
302
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
303
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
304
  .verified { font-size: 0.85em; }
 
910
  postHeight();
911
  return;
912
  }
913
+ // No medals here: this table is the full ranking and already carries the
914
+ // position column, so podium marks only added a second, competing ordering.
 
 
 
915
  const heat = new Map();
916
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
917
 
 
939
  } else if (col.key === "model") {
940
  html += nameCell(p);
941
  } else {
942
+ html += valueCell(p, col, heat.get(col.key));
943
  }
944
  }
945
  html += "</tr>";
 
956
  postHeight();
957
  }
958
 
959
+ function valueCell(p, col, span) {
960
  const v = p[col.key];
961
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
962
  if (col.text) {
 
973
  if (col.key === "elo" && p.elo_ci) {
974
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
975
  }
 
 
 
976
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
977
+ style + ">" + text + ci + "</td>";
978
  }
979
 
980
  function sortBy(key) {
data/imputation_yes/splits_all/tasks_multiclass/datasets_medium/leaderboard_table.html CHANGED
@@ -299,10 +299,6 @@
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
302
- /* A fixed-width medal slot keeps the digits in their own sub-column whether or
303
- not a medal is present. */
304
- .cell { display: inline-flex; align-items: baseline; }
305
- .medal { flex: 0 0 1.45em; width: 1.45em; text-align: left; font-size: 0.78em; }
306
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
307
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
308
  .verified { font-size: 0.85em; }
@@ -914,11 +910,8 @@
914
  postHeight();
915
  return;
916
  }
917
- // Medals mark the top three on the ranking metric; they stay on that column
918
- // when the reader sorts by another, which is what they mean.
919
- const ranked = rows.filter(p => isFinite(p[RANK_KEY]))
920
- .sort((a, b) => (colByKey.get(RANK_KEY).lowerBetter ? a[RANK_KEY] - b[RANK_KEY] : b[RANK_KEY] - a[RANK_KEY]));
921
- const medalOf = new Map(ranked.slice(0, 3).map((p, i) => [p, ["\u{1F947}", "\u{1F948}", "\u{1F949}"][i]]));
922
  const heat = new Map();
923
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
924
 
@@ -946,7 +939,7 @@
946
  } else if (col.key === "model") {
947
  html += nameCell(p);
948
  } else {
949
- html += valueCell(p, col, heat.get(col.key), medalOf.get(p));
950
  }
951
  }
952
  html += "</tr>";
@@ -963,7 +956,7 @@
963
  postHeight();
964
  }
965
 
966
- function valueCell(p, col, span, medal) {
967
  const v = p[col.key];
968
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
969
  if (col.text) {
@@ -980,11 +973,8 @@
980
  if (col.key === "elo" && p.elo_ci) {
981
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
982
  }
983
- const inner = medal !== undefined || col.key === RANK_KEY
984
- ? '<span class="cell"><span class="medal">' + (medal || "") + '</span><span>' + text + ci + "</span></span>"
985
- : text + ci;
986
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
987
- style + ">" + inner + "</td>";
988
  }
989
 
990
  function sortBy(key) {
 
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
 
 
 
 
302
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
303
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
304
  .verified { font-size: 0.85em; }
 
910
  postHeight();
911
  return;
912
  }
913
+ // No medals here: this table is the full ranking and already carries the
914
+ // position column, so podium marks only added a second, competing ordering.
 
 
 
915
  const heat = new Map();
916
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
917
 
 
939
  } else if (col.key === "model") {
940
  html += nameCell(p);
941
  } else {
942
+ html += valueCell(p, col, heat.get(col.key));
943
  }
944
  }
945
  html += "</tr>";
 
956
  postHeight();
957
  }
958
 
959
+ function valueCell(p, col, span) {
960
  const v = p[col.key];
961
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
962
  if (col.text) {
 
973
  if (col.key === "elo" && p.elo_ci) {
974
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
975
  }
 
 
 
976
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
977
+ style + ">" + text + ci + "</td>";
978
  }
979
 
980
  function sortBy(key) {
data/imputation_yes/splits_all/tasks_multiclass/datasets_small/leaderboard_table.html CHANGED
@@ -299,10 +299,6 @@
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
302
- /* A fixed-width medal slot keeps the digits in their own sub-column whether or
303
- not a medal is present. */
304
- .cell { display: inline-flex; align-items: baseline; }
305
- .medal { flex: 0 0 1.45em; width: 1.45em; text-align: left; font-size: 0.78em; }
306
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
307
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
308
  .verified { font-size: 0.85em; }
@@ -914,11 +910,8 @@
914
  postHeight();
915
  return;
916
  }
917
- // Medals mark the top three on the ranking metric; they stay on that column
918
- // when the reader sorts by another, which is what they mean.
919
- const ranked = rows.filter(p => isFinite(p[RANK_KEY]))
920
- .sort((a, b) => (colByKey.get(RANK_KEY).lowerBetter ? a[RANK_KEY] - b[RANK_KEY] : b[RANK_KEY] - a[RANK_KEY]));
921
- const medalOf = new Map(ranked.slice(0, 3).map((p, i) => [p, ["\u{1F947}", "\u{1F948}", "\u{1F949}"][i]]));
922
  const heat = new Map();
923
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
924
 
@@ -946,7 +939,7 @@
946
  } else if (col.key === "model") {
947
  html += nameCell(p);
948
  } else {
949
- html += valueCell(p, col, heat.get(col.key), medalOf.get(p));
950
  }
951
  }
952
  html += "</tr>";
@@ -963,7 +956,7 @@
963
  postHeight();
964
  }
965
 
966
- function valueCell(p, col, span, medal) {
967
  const v = p[col.key];
968
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
969
  if (col.text) {
@@ -980,11 +973,8 @@
980
  if (col.key === "elo" && p.elo_ci) {
981
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
982
  }
983
- const inner = medal !== undefined || col.key === RANK_KEY
984
- ? '<span class="cell"><span class="medal">' + (medal || "") + '</span><span>' + text + ci + "</span></span>"
985
- : text + ci;
986
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
987
- style + ">" + inner + "</td>";
988
  }
989
 
990
  function sortBy(key) {
 
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
 
 
 
 
302
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
303
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
304
  .verified { font-size: 0.85em; }
 
910
  postHeight();
911
  return;
912
  }
913
+ // No medals here: this table is the full ranking and already carries the
914
+ // position column, so podium marks only added a second, competing ordering.
 
 
 
915
  const heat = new Map();
916
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
917
 
 
939
  } else if (col.key === "model") {
940
  html += nameCell(p);
941
  } else {
942
+ html += valueCell(p, col, heat.get(col.key));
943
  }
944
  }
945
  html += "</tr>";
 
956
  postHeight();
957
  }
958
 
959
+ function valueCell(p, col, span) {
960
  const v = p[col.key];
961
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
962
  if (col.text) {
 
973
  if (col.key === "elo" && p.elo_ci) {
974
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
975
  }
 
 
 
976
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
977
+ style + ">" + text + ci + "</td>";
978
  }
979
 
980
  function sortBy(key) {
data/imputation_yes/splits_all/tasks_regression/datasets_all/leaderboard_table.html CHANGED
@@ -299,10 +299,6 @@
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
302
- /* A fixed-width medal slot keeps the digits in their own sub-column whether or
303
- not a medal is present. */
304
- .cell { display: inline-flex; align-items: baseline; }
305
- .medal { flex: 0 0 1.45em; width: 1.45em; text-align: left; font-size: 0.78em; }
306
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
307
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
308
  .verified { font-size: 0.85em; }
@@ -914,11 +910,8 @@
914
  postHeight();
915
  return;
916
  }
917
- // Medals mark the top three on the ranking metric; they stay on that column
918
- // when the reader sorts by another, which is what they mean.
919
- const ranked = rows.filter(p => isFinite(p[RANK_KEY]))
920
- .sort((a, b) => (colByKey.get(RANK_KEY).lowerBetter ? a[RANK_KEY] - b[RANK_KEY] : b[RANK_KEY] - a[RANK_KEY]));
921
- const medalOf = new Map(ranked.slice(0, 3).map((p, i) => [p, ["\u{1F947}", "\u{1F948}", "\u{1F949}"][i]]));
922
  const heat = new Map();
923
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
924
 
@@ -946,7 +939,7 @@
946
  } else if (col.key === "model") {
947
  html += nameCell(p);
948
  } else {
949
- html += valueCell(p, col, heat.get(col.key), medalOf.get(p));
950
  }
951
  }
952
  html += "</tr>";
@@ -963,7 +956,7 @@
963
  postHeight();
964
  }
965
 
966
- function valueCell(p, col, span, medal) {
967
  const v = p[col.key];
968
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
969
  if (col.text) {
@@ -980,11 +973,8 @@
980
  if (col.key === "elo" && p.elo_ci) {
981
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
982
  }
983
- const inner = medal !== undefined || col.key === RANK_KEY
984
- ? '<span class="cell"><span class="medal">' + (medal || "") + '</span><span>' + text + ci + "</span></span>"
985
- : text + ci;
986
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
987
- style + ">" + inner + "</td>";
988
  }
989
 
990
  function sortBy(key) {
 
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
 
 
 
 
302
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
303
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
304
  .verified { font-size: 0.85em; }
 
910
  postHeight();
911
  return;
912
  }
913
+ // No medals here: this table is the full ranking and already carries the
914
+ // position column, so podium marks only added a second, competing ordering.
 
 
 
915
  const heat = new Map();
916
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
917
 
 
939
  } else if (col.key === "model") {
940
  html += nameCell(p);
941
  } else {
942
+ html += valueCell(p, col, heat.get(col.key));
943
  }
944
  }
945
  html += "</tr>";
 
956
  postHeight();
957
  }
958
 
959
+ function valueCell(p, col, span) {
960
  const v = p[col.key];
961
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
962
  if (col.text) {
 
973
  if (col.key === "elo" && p.elo_ci) {
974
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
975
  }
 
 
 
976
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
977
+ style + ">" + text + ci + "</td>";
978
  }
979
 
980
  function sortBy(key) {
data/imputation_yes/splits_all/tasks_regression/datasets_medium/leaderboard_table.html CHANGED
@@ -299,10 +299,6 @@
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
302
- /* A fixed-width medal slot keeps the digits in their own sub-column whether or
303
- not a medal is present. */
304
- .cell { display: inline-flex; align-items: baseline; }
305
- .medal { flex: 0 0 1.45em; width: 1.45em; text-align: left; font-size: 0.78em; }
306
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
307
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
308
  .verified { font-size: 0.85em; }
@@ -914,11 +910,8 @@
914
  postHeight();
915
  return;
916
  }
917
- // Medals mark the top three on the ranking metric; they stay on that column
918
- // when the reader sorts by another, which is what they mean.
919
- const ranked = rows.filter(p => isFinite(p[RANK_KEY]))
920
- .sort((a, b) => (colByKey.get(RANK_KEY).lowerBetter ? a[RANK_KEY] - b[RANK_KEY] : b[RANK_KEY] - a[RANK_KEY]));
921
- const medalOf = new Map(ranked.slice(0, 3).map((p, i) => [p, ["\u{1F947}", "\u{1F948}", "\u{1F949}"][i]]));
922
  const heat = new Map();
923
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
924
 
@@ -946,7 +939,7 @@
946
  } else if (col.key === "model") {
947
  html += nameCell(p);
948
  } else {
949
- html += valueCell(p, col, heat.get(col.key), medalOf.get(p));
950
  }
951
  }
952
  html += "</tr>";
@@ -963,7 +956,7 @@
963
  postHeight();
964
  }
965
 
966
- function valueCell(p, col, span, medal) {
967
  const v = p[col.key];
968
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
969
  if (col.text) {
@@ -980,11 +973,8 @@
980
  if (col.key === "elo" && p.elo_ci) {
981
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
982
  }
983
- const inner = medal !== undefined || col.key === RANK_KEY
984
- ? '<span class="cell"><span class="medal">' + (medal || "") + '</span><span>' + text + ci + "</span></span>"
985
- : text + ci;
986
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
987
- style + ">" + inner + "</td>";
988
  }
989
 
990
  function sortBy(key) {
 
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
 
 
 
 
302
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
303
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
304
  .verified { font-size: 0.85em; }
 
910
  postHeight();
911
  return;
912
  }
913
+ // No medals here: this table is the full ranking and already carries the
914
+ // position column, so podium marks only added a second, competing ordering.
 
 
 
915
  const heat = new Map();
916
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
917
 
 
939
  } else if (col.key === "model") {
940
  html += nameCell(p);
941
  } else {
942
+ html += valueCell(p, col, heat.get(col.key));
943
  }
944
  }
945
  html += "</tr>";
 
956
  postHeight();
957
  }
958
 
959
+ function valueCell(p, col, span) {
960
  const v = p[col.key];
961
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
962
  if (col.text) {
 
973
  if (col.key === "elo" && p.elo_ci) {
974
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
975
  }
 
 
 
976
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
977
+ style + ">" + text + ci + "</td>";
978
  }
979
 
980
  function sortBy(key) {
data/imputation_yes/splits_all/tasks_regression/datasets_small/leaderboard_table.html CHANGED
@@ -299,10 +299,6 @@
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
302
- /* A fixed-width medal slot keeps the digits in their own sub-column whether or
303
- not a medal is present. */
304
- .cell { display: inline-flex; align-items: baseline; }
305
- .medal { flex: 0 0 1.45em; width: 1.45em; text-align: left; font-size: 0.78em; }
306
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
307
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
308
  .verified { font-size: 0.85em; }
@@ -914,11 +910,8 @@
914
  postHeight();
915
  return;
916
  }
917
- // Medals mark the top three on the ranking metric; they stay on that column
918
- // when the reader sorts by another, which is what they mean.
919
- const ranked = rows.filter(p => isFinite(p[RANK_KEY]))
920
- .sort((a, b) => (colByKey.get(RANK_KEY).lowerBetter ? a[RANK_KEY] - b[RANK_KEY] : b[RANK_KEY] - a[RANK_KEY]));
921
- const medalOf = new Map(ranked.slice(0, 3).map((p, i) => [p, ["\u{1F947}", "\u{1F948}", "\u{1F949}"][i]]));
922
  const heat = new Map();
923
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
924
 
@@ -946,7 +939,7 @@
946
  } else if (col.key === "model") {
947
  html += nameCell(p);
948
  } else {
949
- html += valueCell(p, col, heat.get(col.key), medalOf.get(p));
950
  }
951
  }
952
  html += "</tr>";
@@ -963,7 +956,7 @@
963
  postHeight();
964
  }
965
 
966
- function valueCell(p, col, span, medal) {
967
  const v = p[col.key];
968
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
969
  if (col.text) {
@@ -980,11 +973,8 @@
980
  if (col.key === "elo" && p.elo_ci) {
981
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
982
  }
983
- const inner = medal !== undefined || col.key === RANK_KEY
984
- ? '<span class="cell"><span class="medal">' + (medal || "") + '</span><span>' + text + ci + "</span></span>"
985
- : text + ci;
986
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
987
- style + ">" + inner + "</td>";
988
  }
989
 
990
  function sortBy(key) {
 
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
 
 
 
 
302
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
303
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
304
  .verified { font-size: 0.85em; }
 
910
  postHeight();
911
  return;
912
  }
913
+ // No medals here: this table is the full ranking and already carries the
914
+ // position column, so podium marks only added a second, competing ordering.
 
 
 
915
  const heat = new Map();
916
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
917
 
 
939
  } else if (col.key === "model") {
940
  html += nameCell(p);
941
  } else {
942
+ html += valueCell(p, col, heat.get(col.key));
943
  }
944
  }
945
  html += "</tr>";
 
956
  postHeight();
957
  }
958
 
959
+ function valueCell(p, col, span) {
960
  const v = p[col.key];
961
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
962
  if (col.text) {
 
973
  if (col.key === "elo" && p.elo_ci) {
974
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
975
  }
 
 
 
976
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
977
+ style + ">" + text + ci + "</td>";
978
  }
979
 
980
  function sortBy(key) {
data/imputation_yes/splits_lite/tasks_all/datasets_all/leaderboard_table.html CHANGED
@@ -299,10 +299,6 @@
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
302
- /* A fixed-width medal slot keeps the digits in their own sub-column whether or
303
- not a medal is present. */
304
- .cell { display: inline-flex; align-items: baseline; }
305
- .medal { flex: 0 0 1.45em; width: 1.45em; text-align: left; font-size: 0.78em; }
306
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
307
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
308
  .verified { font-size: 0.85em; }
@@ -914,11 +910,8 @@
914
  postHeight();
915
  return;
916
  }
917
- // Medals mark the top three on the ranking metric; they stay on that column
918
- // when the reader sorts by another, which is what they mean.
919
- const ranked = rows.filter(p => isFinite(p[RANK_KEY]))
920
- .sort((a, b) => (colByKey.get(RANK_KEY).lowerBetter ? a[RANK_KEY] - b[RANK_KEY] : b[RANK_KEY] - a[RANK_KEY]));
921
- const medalOf = new Map(ranked.slice(0, 3).map((p, i) => [p, ["\u{1F947}", "\u{1F948}", "\u{1F949}"][i]]));
922
  const heat = new Map();
923
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
924
 
@@ -946,7 +939,7 @@
946
  } else if (col.key === "model") {
947
  html += nameCell(p);
948
  } else {
949
- html += valueCell(p, col, heat.get(col.key), medalOf.get(p));
950
  }
951
  }
952
  html += "</tr>";
@@ -963,7 +956,7 @@
963
  postHeight();
964
  }
965
 
966
- function valueCell(p, col, span, medal) {
967
  const v = p[col.key];
968
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
969
  if (col.text) {
@@ -980,11 +973,8 @@
980
  if (col.key === "elo" && p.elo_ci) {
981
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
982
  }
983
- const inner = medal !== undefined || col.key === RANK_KEY
984
- ? '<span class="cell"><span class="medal">' + (medal || "") + '</span><span>' + text + ci + "</span></span>"
985
- : text + ci;
986
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
987
- style + ">" + inner + "</td>";
988
  }
989
 
990
  function sortBy(key) {
 
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
 
 
 
 
302
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
303
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
304
  .verified { font-size: 0.85em; }
 
910
  postHeight();
911
  return;
912
  }
913
+ // No medals here: this table is the full ranking and already carries the
914
+ // position column, so podium marks only added a second, competing ordering.
 
 
 
915
  const heat = new Map();
916
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
917
 
 
939
  } else if (col.key === "model") {
940
  html += nameCell(p);
941
  } else {
942
+ html += valueCell(p, col, heat.get(col.key));
943
  }
944
  }
945
  html += "</tr>";
 
956
  postHeight();
957
  }
958
 
959
+ function valueCell(p, col, span) {
960
  const v = p[col.key];
961
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
962
  if (col.text) {
 
973
  if (col.key === "elo" && p.elo_ci) {
974
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
975
  }
 
 
 
976
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
977
+ style + ">" + text + ci + "</td>";
978
  }
979
 
980
  function sortBy(key) {
data/imputation_yes/splits_lite/tasks_all/datasets_medium/leaderboard_table.html CHANGED
@@ -299,10 +299,6 @@
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
302
- /* A fixed-width medal slot keeps the digits in their own sub-column whether or
303
- not a medal is present. */
304
- .cell { display: inline-flex; align-items: baseline; }
305
- .medal { flex: 0 0 1.45em; width: 1.45em; text-align: left; font-size: 0.78em; }
306
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
307
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
308
  .verified { font-size: 0.85em; }
@@ -914,11 +910,8 @@
914
  postHeight();
915
  return;
916
  }
917
- // Medals mark the top three on the ranking metric; they stay on that column
918
- // when the reader sorts by another, which is what they mean.
919
- const ranked = rows.filter(p => isFinite(p[RANK_KEY]))
920
- .sort((a, b) => (colByKey.get(RANK_KEY).lowerBetter ? a[RANK_KEY] - b[RANK_KEY] : b[RANK_KEY] - a[RANK_KEY]));
921
- const medalOf = new Map(ranked.slice(0, 3).map((p, i) => [p, ["\u{1F947}", "\u{1F948}", "\u{1F949}"][i]]));
922
  const heat = new Map();
923
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
924
 
@@ -946,7 +939,7 @@
946
  } else if (col.key === "model") {
947
  html += nameCell(p);
948
  } else {
949
- html += valueCell(p, col, heat.get(col.key), medalOf.get(p));
950
  }
951
  }
952
  html += "</tr>";
@@ -963,7 +956,7 @@
963
  postHeight();
964
  }
965
 
966
- function valueCell(p, col, span, medal) {
967
  const v = p[col.key];
968
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
969
  if (col.text) {
@@ -980,11 +973,8 @@
980
  if (col.key === "elo" && p.elo_ci) {
981
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
982
  }
983
- const inner = medal !== undefined || col.key === RANK_KEY
984
- ? '<span class="cell"><span class="medal">' + (medal || "") + '</span><span>' + text + ci + "</span></span>"
985
- : text + ci;
986
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
987
- style + ">" + inner + "</td>";
988
  }
989
 
990
  function sortBy(key) {
 
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
 
 
 
 
302
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
303
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
304
  .verified { font-size: 0.85em; }
 
910
  postHeight();
911
  return;
912
  }
913
+ // No medals here: this table is the full ranking and already carries the
914
+ // position column, so podium marks only added a second, competing ordering.
 
 
 
915
  const heat = new Map();
916
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
917
 
 
939
  } else if (col.key === "model") {
940
  html += nameCell(p);
941
  } else {
942
+ html += valueCell(p, col, heat.get(col.key));
943
  }
944
  }
945
  html += "</tr>";
 
956
  postHeight();
957
  }
958
 
959
+ function valueCell(p, col, span) {
960
  const v = p[col.key];
961
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
962
  if (col.text) {
 
973
  if (col.key === "elo" && p.elo_ci) {
974
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
975
  }
 
 
 
976
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
977
+ style + ">" + text + ci + "</td>";
978
  }
979
 
980
  function sortBy(key) {
data/imputation_yes/splits_lite/tasks_all/datasets_small/leaderboard_table.html CHANGED
@@ -299,10 +299,6 @@
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
302
- /* A fixed-width medal slot keeps the digits in their own sub-column whether or
303
- not a medal is present. */
304
- .cell { display: inline-flex; align-items: baseline; }
305
- .medal { flex: 0 0 1.45em; width: 1.45em; text-align: left; font-size: 0.78em; }
306
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
307
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
308
  .verified { font-size: 0.85em; }
@@ -914,11 +910,8 @@
914
  postHeight();
915
  return;
916
  }
917
- // Medals mark the top three on the ranking metric; they stay on that column
918
- // when the reader sorts by another, which is what they mean.
919
- const ranked = rows.filter(p => isFinite(p[RANK_KEY]))
920
- .sort((a, b) => (colByKey.get(RANK_KEY).lowerBetter ? a[RANK_KEY] - b[RANK_KEY] : b[RANK_KEY] - a[RANK_KEY]));
921
- const medalOf = new Map(ranked.slice(0, 3).map((p, i) => [p, ["\u{1F947}", "\u{1F948}", "\u{1F949}"][i]]));
922
  const heat = new Map();
923
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
924
 
@@ -946,7 +939,7 @@
946
  } else if (col.key === "model") {
947
  html += nameCell(p);
948
  } else {
949
- html += valueCell(p, col, heat.get(col.key), medalOf.get(p));
950
  }
951
  }
952
  html += "</tr>";
@@ -963,7 +956,7 @@
963
  postHeight();
964
  }
965
 
966
- function valueCell(p, col, span, medal) {
967
  const v = p[col.key];
968
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
969
  if (col.text) {
@@ -980,11 +973,8 @@
980
  if (col.key === "elo" && p.elo_ci) {
981
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
982
  }
983
- const inner = medal !== undefined || col.key === RANK_KEY
984
- ? '<span class="cell"><span class="medal">' + (medal || "") + '</span><span>' + text + ci + "</span></span>"
985
- : text + ci;
986
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
987
- style + ">" + inner + "</td>";
988
  }
989
 
990
  function sortBy(key) {
 
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
 
 
 
 
302
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
303
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
304
  .verified { font-size: 0.85em; }
 
910
  postHeight();
911
  return;
912
  }
913
+ // No medals here: this table is the full ranking and already carries the
914
+ // position column, so podium marks only added a second, competing ordering.
 
 
 
915
  const heat = new Map();
916
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
917
 
 
939
  } else if (col.key === "model") {
940
  html += nameCell(p);
941
  } else {
942
+ html += valueCell(p, col, heat.get(col.key));
943
  }
944
  }
945
  html += "</tr>";
 
956
  postHeight();
957
  }
958
 
959
+ function valueCell(p, col, span) {
960
  const v = p[col.key];
961
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
962
  if (col.text) {
 
973
  if (col.key === "elo" && p.elo_ci) {
974
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
975
  }
 
 
 
976
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
977
+ style + ">" + text + ci + "</td>";
978
  }
979
 
980
  function sortBy(key) {
data/imputation_yes/splits_lite/tasks_binary/datasets_all/leaderboard_table.html CHANGED
@@ -299,10 +299,6 @@
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
302
- /* A fixed-width medal slot keeps the digits in their own sub-column whether or
303
- not a medal is present. */
304
- .cell { display: inline-flex; align-items: baseline; }
305
- .medal { flex: 0 0 1.45em; width: 1.45em; text-align: left; font-size: 0.78em; }
306
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
307
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
308
  .verified { font-size: 0.85em; }
@@ -914,11 +910,8 @@
914
  postHeight();
915
  return;
916
  }
917
- // Medals mark the top three on the ranking metric; they stay on that column
918
- // when the reader sorts by another, which is what they mean.
919
- const ranked = rows.filter(p => isFinite(p[RANK_KEY]))
920
- .sort((a, b) => (colByKey.get(RANK_KEY).lowerBetter ? a[RANK_KEY] - b[RANK_KEY] : b[RANK_KEY] - a[RANK_KEY]));
921
- const medalOf = new Map(ranked.slice(0, 3).map((p, i) => [p, ["\u{1F947}", "\u{1F948}", "\u{1F949}"][i]]));
922
  const heat = new Map();
923
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
924
 
@@ -946,7 +939,7 @@
946
  } else if (col.key === "model") {
947
  html += nameCell(p);
948
  } else {
949
- html += valueCell(p, col, heat.get(col.key), medalOf.get(p));
950
  }
951
  }
952
  html += "</tr>";
@@ -963,7 +956,7 @@
963
  postHeight();
964
  }
965
 
966
- function valueCell(p, col, span, medal) {
967
  const v = p[col.key];
968
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
969
  if (col.text) {
@@ -980,11 +973,8 @@
980
  if (col.key === "elo" && p.elo_ci) {
981
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
982
  }
983
- const inner = medal !== undefined || col.key === RANK_KEY
984
- ? '<span class="cell"><span class="medal">' + (medal || "") + '</span><span>' + text + ci + "</span></span>"
985
- : text + ci;
986
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
987
- style + ">" + inner + "</td>";
988
  }
989
 
990
  function sortBy(key) {
 
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
 
 
 
 
302
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
303
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
304
  .verified { font-size: 0.85em; }
 
910
  postHeight();
911
  return;
912
  }
913
+ // No medals here: this table is the full ranking and already carries the
914
+ // position column, so podium marks only added a second, competing ordering.
 
 
 
915
  const heat = new Map();
916
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
917
 
 
939
  } else if (col.key === "model") {
940
  html += nameCell(p);
941
  } else {
942
+ html += valueCell(p, col, heat.get(col.key));
943
  }
944
  }
945
  html += "</tr>";
 
956
  postHeight();
957
  }
958
 
959
+ function valueCell(p, col, span) {
960
  const v = p[col.key];
961
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
962
  if (col.text) {
 
973
  if (col.key === "elo" && p.elo_ci) {
974
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
975
  }
 
 
 
976
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
977
+ style + ">" + text + ci + "</td>";
978
  }
979
 
980
  function sortBy(key) {
data/imputation_yes/splits_lite/tasks_binary/datasets_medium/leaderboard_table.html CHANGED
@@ -299,10 +299,6 @@
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
302
- /* A fixed-width medal slot keeps the digits in their own sub-column whether or
303
- not a medal is present. */
304
- .cell { display: inline-flex; align-items: baseline; }
305
- .medal { flex: 0 0 1.45em; width: 1.45em; text-align: left; font-size: 0.78em; }
306
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
307
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
308
  .verified { font-size: 0.85em; }
@@ -914,11 +910,8 @@
914
  postHeight();
915
  return;
916
  }
917
- // Medals mark the top three on the ranking metric; they stay on that column
918
- // when the reader sorts by another, which is what they mean.
919
- const ranked = rows.filter(p => isFinite(p[RANK_KEY]))
920
- .sort((a, b) => (colByKey.get(RANK_KEY).lowerBetter ? a[RANK_KEY] - b[RANK_KEY] : b[RANK_KEY] - a[RANK_KEY]));
921
- const medalOf = new Map(ranked.slice(0, 3).map((p, i) => [p, ["\u{1F947}", "\u{1F948}", "\u{1F949}"][i]]));
922
  const heat = new Map();
923
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
924
 
@@ -946,7 +939,7 @@
946
  } else if (col.key === "model") {
947
  html += nameCell(p);
948
  } else {
949
- html += valueCell(p, col, heat.get(col.key), medalOf.get(p));
950
  }
951
  }
952
  html += "</tr>";
@@ -963,7 +956,7 @@
963
  postHeight();
964
  }
965
 
966
- function valueCell(p, col, span, medal) {
967
  const v = p[col.key];
968
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
969
  if (col.text) {
@@ -980,11 +973,8 @@
980
  if (col.key === "elo" && p.elo_ci) {
981
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
982
  }
983
- const inner = medal !== undefined || col.key === RANK_KEY
984
- ? '<span class="cell"><span class="medal">' + (medal || "") + '</span><span>' + text + ci + "</span></span>"
985
- : text + ci;
986
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
987
- style + ">" + inner + "</td>";
988
  }
989
 
990
  function sortBy(key) {
 
299
  table.lbt td.num { font-weight: 600; }
300
  table.lbt td.na { color: var(--pt-muted); }
301
  table.lbt tbody tr:hover td { filter: brightness(1.12); }
 
 
 
 
302
  .ci { opacity: 0.5; font-weight: 400; font-size: 0.82em; }
303
  .pill { padding: 1px 7px; border-radius: 999px; font-size: 0.95em; white-space: nowrap; }
304
  .verified { font-size: 0.85em; }
 
910
  postHeight();
911
  return;
912
  }
913
+ // No medals here: this table is the full ranking and already carries the
914
+ // position column, so podium marks only added a second, competing ordering.
 
 
 
915
  const heat = new Map();
916
  for (const col of cols) if (col.heatmap) heat.set(col.key, bounds(rows, col));
917
 
 
939
  } else if (col.key === "model") {
940
  html += nameCell(p);
941
  } else {
942
+ html += valueCell(p, col, heat.get(col.key));
943
  }
944
  }
945
  html += "</tr>";
 
956
  postHeight();
957
  }
958
 
959
+ function valueCell(p, col, span) {
960
  const v = p[col.key];
961
  if (v == null || (typeof v === "number" && !isFinite(v))) return '<td class="na">&ndash;</td>';
962
  if (col.text) {
 
973
  if (col.key === "elo" && p.elo_ci) {
974
  ci = ' <span class="ci">(' + escapeHtml(p.elo_ci) + ")</span>";
975
  }
 
 
 
976
  return '<td class="num" data-sort="' + v + '"' + (ci ? ' data-ci="' + escapeHtml(p.elo_ci) + '"' : "") +
977
+ style + ">" + text + ci + "</td>";
978
  }
979
 
980
  function sortBy(key) {