openvibers/openvibe.report Commits
AI page: each table's heading once, and no card inside a card (#134)
Changes
@@@ -382,3 +382,7 @@ html, body { margin: 0; background: var(--bg-primary, #0a0f1c); color: var(--tex.rp-ai-method h2 { margin: 28px 0 8px; font-size: 1.15rem; }.rp-ai-method p { max-width: 820px; margin: 0 0 12px; line-height: 1.65; color: var(--text-secondary, #96a7c2); }.rp-ai-method code { overflow-wrap: anywhere; }++++/* A table inside a kit section (the AI page's leaders and benchmarks): the section is the card, so the table's own++ frame goes (it drew a card inside a card, one border inside another). */++.ovk-section > .ovk-table-wrap { border: 0; border-radius: 0; background: transparent; box-shadow: none; }@@@ -774,7 +774,7 @@ function aiIndex({ overview, kinds, boards = [], rankings = [] }) {const rated = items.filter((x) => played(x.rows)).sort((a, b) => gamesOf(b.rows) - gamesOf(a.rows));const waiting = items.filter((x) => !played(x.rows));const leaders = rated.length ? kit.table({-- caption: 'Task kinds and their leaders', columns: [++ label: 'Task kinds and their leaders', columns: [{ key: 'job', label: 'Job', primary: true, html: true }, { key: 'leader', label: 'Leader', html: true },{ key: 'quality', label: 'Quality', num: true, html: true }, { key: 'games', label: 'Games', num: true, fmt: 'int' },{ key: 'cost', label: 'Cost/run', num: true, html: true },@@@ -809,7 +809,7 @@ function aiIndex({ overview, kinds, boards = [], rankings = [] }) {const activeBench = benches.filter((b) => Number(b.runs) > 0);const idleBench = benches.filter((b) => !(Number(b.runs) > 0));const benchTable = activeBench.length ? kit.table({-- caption: 'Benchmarks with published runs', columns: [++ label: 'Benchmarks with published runs', columns: [{ key: 'benchmark', label: 'Benchmark', primary: true, html: true }, { key: 'kind', label: 'Task kind' },{ key: 'leader', label: 'Leader', html: true }, { key: 'runs', label: 'Runs', num: true, fmt: 'int' }, { key: 'last', label: 'Last run', html: true },], rows: benches.map((b, i) => (Number(b.runs) > 0 ? benchRow(b, i) : null)).filter(Boolean),
@@ -382,3 +382,7 @@ html, body { margin: 0; background: var(--bg-primary, #0a0f1c); color: var(--tex
@@ -382,3 +382,7 @@ html, body { margin: 0; background: var(--bg-primary, #0a0f1c); color: var(--tex
.rp-ai-method h2 { margin: 28px 0 8px; font-size: 1.15rem; }
.rp-ai-method h2 { margin: 28px 0 8px; font-size: 1.15rem; }
.rp-ai-method p { max-width: 820px; margin: 0 0 12px; line-height: 1.65; color: var(--text-secondary, #96a7c2); }
.rp-ai-method p { max-width: 820px; margin: 0 0 12px; line-height: 1.65; color: var(--text-secondary, #96a7c2); }
.rp-ai-method code { overflow-wrap: anywhere; }
.rp-ai-method code { overflow-wrap: anywhere; }
+
+/* A table inside a kit section (the AI page's leaders and benchmarks): the section is the card, so the table's own
+ frame goes (it drew a card inside a card, one border inside another). */
+.ovk-section > .ovk-table-wrap { border: 0; border-radius: 0; background: transparent; box-shadow: none; }
@@ -774,7 +774,7 @@ function aiIndex({ overview, kinds, boards = [], rankings = [] }) {
@@ -774,7 +774,7 @@ function aiIndex({ overview, kinds, boards = [], rankings = [] }) {
const rated = items.filter((x) => played(x.rows)).sort((a, b) => gamesOf(b.rows) - gamesOf(a.rows));
const rated = items.filter((x) => played(x.rows)).sort((a, b) => gamesOf(b.rows) - gamesOf(a.rows));
const waiting = items.filter((x) => !played(x.rows));
const waiting = items.filter((x) => !played(x.rows));
const leaders = rated.length ? kit.table({
const leaders = rated.length ? kit.table({
- caption: 'Task kinds and their leaders', columns: [
+ label: 'Task kinds and their leaders', columns: [
{ key: 'job', label: 'Job', primary: true, html: true }, { key: 'leader', label: 'Leader', html: true },
{ key: 'job', label: 'Job', primary: true, html: true }, { key: 'leader', label: 'Leader', html: true },
{ key: 'quality', label: 'Quality', num: true, html: true }, { key: 'games', label: 'Games', num: true, fmt: 'int' },
{ key: 'quality', label: 'Quality', num: true, html: true }, { key: 'games', label: 'Games', num: true, fmt: 'int' },
{ key: 'cost', label: 'Cost/run', num: true, html: true },
{ key: 'cost', label: 'Cost/run', num: true, html: true },
@@ -809,7 +809,7 @@ function aiIndex({ overview, kinds, boards = [], rankings = [] }) {
@@ -809,7 +809,7 @@ function aiIndex({ overview, kinds, boards = [], rankings = [] }) {
const activeBench = benches.filter((b) => Number(b.runs) > 0);
const activeBench = benches.filter((b) => Number(b.runs) > 0);
const idleBench = benches.filter((b) => !(Number(b.runs) > 0));
const idleBench = benches.filter((b) => !(Number(b.runs) > 0));
const benchTable = activeBench.length ? kit.table({
const benchTable = activeBench.length ? kit.table({
- caption: 'Benchmarks with published runs', columns: [
+ label: 'Benchmarks with published runs', columns: [
{ key: 'benchmark', label: 'Benchmark', primary: true, html: true }, { key: 'kind', label: 'Task kind' },
{ key: 'benchmark', label: 'Benchmark', primary: true, html: true }, { key: 'kind', label: 'Task kind' },
{ key: 'leader', label: 'Leader', html: true }, { key: 'runs', label: 'Runs', num: true, fmt: 'int' }, { key: 'last', label: 'Last run', html: true },
{ key: 'leader', label: 'Leader', html: true }, { key: 'runs', label: 'Runs', num: true, fmt: 'int' }, { key: 'last', label: 'Last run', html: true },
], rows: benches.map((b, i) => (Number(b.runs) > 0 ? benchRow(b, i) : null)).filter(Boolean),
], rows: benches.map((b, i) => (Number(b.runs) > 0 ? benchRow(b, i) : null)).filter(Boolean),