Anonymous commited on
Commit
089c290
·
1 Parent(s): 0fd02ae

Use fixed script column with shared task headers

Browse files
Files changed (2) hide show
  1. index.html +37 -10
  2. static/css/index.css +42 -12
index.html CHANGED
@@ -156,13 +156,9 @@
156
  }[char]));
157
  }
158
 
159
- function createCaseCell(label, content) {
160
  const cell = document.createElement("div");
161
- cell.className = "case-cell";
162
-
163
- const heading = document.createElement("div");
164
- heading.className = "case-cell-label";
165
- heading.textContent = label;
166
 
167
  const body = document.createElement("div");
168
  body.className = "case-cell-body";
@@ -170,19 +166,50 @@
170
  body.appendChild(content);
171
  }
172
 
173
- cell.appendChild(heading);
174
  cell.appendChild(body);
175
  return cell;
176
  }
177
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
178
  function renderTable(task, manifests, taskRoot) {
179
  const wrapper = document.createElement("div");
180
  wrapper.className = task.show_reference ? "demo-cases" : "demo-cases without-reference";
 
181
 
182
  manifests[task.models[0]].forEach((item) => {
183
  const caseRow = document.createElement("div");
184
  caseRow.className = "case-row";
185
- caseRow.appendChild(createCaseCell("Script", createScriptCell(item)));
186
 
187
  const caseScroll = document.createElement("div");
188
  caseScroll.className = "case-scroll";
@@ -192,7 +219,7 @@
192
 
193
  if (task.show_reference) {
194
  const modelRoot = `${taskRoot}/${task.models[0]}`;
195
- caseGrid.appendChild(createCaseCell("Reference", createReferenceCell(item, modelRoot)));
196
  }
197
 
198
  task.models.forEach((model) => {
@@ -201,7 +228,7 @@
201
  if (modelItem) {
202
  content.appendChild(createAudio(`${taskRoot}/${model}/${modelItem.output_audio}`));
203
  }
204
- caseGrid.appendChild(createCaseCell(model, content));
205
  });
206
 
207
  caseScroll.appendChild(caseGrid);
 
156
  }[char]));
157
  }
158
 
159
+ function createCaseCell(content, className = "") {
160
  const cell = document.createElement("div");
161
+ cell.className = `case-cell ${className}`.trim();
 
 
 
 
162
 
163
  const body = document.createElement("div");
164
  body.className = "case-cell-body";
 
166
  body.appendChild(content);
167
  }
168
 
 
169
  cell.appendChild(body);
170
  return cell;
171
  }
172
 
173
+ function createHeaderCell(label) {
174
+ const cell = document.createElement("div");
175
+ cell.className = "case-header-cell";
176
+ cell.textContent = label;
177
+ return cell;
178
+ }
179
+
180
+ function createCaseHeader(task) {
181
+ const header = document.createElement("div");
182
+ header.className = "case-header";
183
+ header.appendChild(createHeaderCell("Script"));
184
+
185
+ const headerScroll = document.createElement("div");
186
+ headerScroll.className = "case-header-scroll";
187
+ const headerGrid = document.createElement("div");
188
+ headerGrid.className = "case-grid";
189
+ headerGrid.style.setProperty("--model-count", task.models.length);
190
+
191
+ if (task.show_reference) {
192
+ headerGrid.appendChild(createHeaderCell("Reference"));
193
+ }
194
+
195
+ task.models.forEach((model) => {
196
+ headerGrid.appendChild(createHeaderCell(model));
197
+ });
198
+
199
+ headerScroll.appendChild(headerGrid);
200
+ header.appendChild(headerScroll);
201
+ return header;
202
+ }
203
+
204
  function renderTable(task, manifests, taskRoot) {
205
  const wrapper = document.createElement("div");
206
  wrapper.className = task.show_reference ? "demo-cases" : "demo-cases without-reference";
207
+ wrapper.appendChild(createCaseHeader(task));
208
 
209
  manifests[task.models[0]].forEach((item) => {
210
  const caseRow = document.createElement("div");
211
  caseRow.className = "case-row";
212
+ caseRow.appendChild(createCaseCell(createScriptCell(item), "script-case"));
213
 
214
  const caseScroll = document.createElement("div");
215
  caseScroll.className = "case-scroll";
 
219
 
220
  if (task.show_reference) {
221
  const modelRoot = `${taskRoot}/${task.models[0]}`;
222
+ caseGrid.appendChild(createCaseCell(createReferenceCell(item, modelRoot)));
223
  }
224
 
225
  task.models.forEach((model) => {
 
228
  if (modelItem) {
229
  content.appendChild(createAudio(`${taskRoot}/${model}/${modelItem.output_audio}`));
230
  }
231
+ caseGrid.appendChild(createCaseCell(content));
232
  });
233
 
234
  caseScroll.appendChild(caseGrid);
static/css/index.css CHANGED
@@ -168,15 +168,42 @@ body {
168
 
169
  .demo-cases {
170
  display: grid;
171
- gap: 0.8rem;
172
  padding: 0.9rem;
173
  background: var(--paper);
174
  }
175
 
176
- .case-row {
177
  display: grid;
178
  grid-template-columns: minmax(24rem, 30rem) minmax(0, 1fr);
179
  border: 1px solid var(--line);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
180
  background: #fbfbfb;
181
  }
182
 
@@ -189,6 +216,7 @@ body {
189
  display: grid;
190
  grid-template-columns: 20rem repeat(var(--model-count), 20rem);
191
  min-width: max-content;
 
192
  }
193
 
194
  .demo-cases.without-reference .case-grid {
@@ -196,6 +224,7 @@ body {
196
  }
197
 
198
  .case-cell {
 
199
  min-width: 0;
200
  border-right: 1px solid var(--line);
201
  background: var(--paper);
@@ -205,20 +234,17 @@ body {
205
  border-right: 0;
206
  }
207
 
208
- .case-cell-label {
209
- border-bottom: 1px solid var(--line);
210
- background: var(--soft);
211
- padding: 0.55rem 0.75rem;
212
- color: var(--ink);
213
- font-size: 0.86rem;
214
- font-weight: 700;
215
- text-align: center;
216
- }
217
-
218
  .case-cell-body {
 
 
 
219
  padding: 0.85rem;
220
  }
221
 
 
 
 
 
222
  .script-cell {
223
  max-height: 17rem;
224
  overflow: auto;
@@ -278,6 +304,10 @@ audio {
278
  grid-template-columns: 1fr;
279
  }
280
 
 
 
 
 
281
  .case-row {
282
  grid-template-columns: minmax(18rem, 22rem) minmax(0, 1fr);
283
  }
 
168
 
169
  .demo-cases {
170
  display: grid;
 
171
  padding: 0.9rem;
172
  background: var(--paper);
173
  }
174
 
175
+ .case-header {
176
  display: grid;
177
  grid-template-columns: minmax(24rem, 30rem) minmax(0, 1fr);
178
  border: 1px solid var(--line);
179
+ background: var(--soft);
180
+ }
181
+
182
+ .case-header-scroll {
183
+ overflow-x: auto;
184
+ border-left: 1px solid var(--line);
185
+ }
186
+
187
+ .case-header-cell {
188
+ min-width: 0;
189
+ border-right: 1px solid var(--line);
190
+ padding: 0.65rem 0.75rem;
191
+ color: var(--ink);
192
+ font-size: 0.86rem;
193
+ font-weight: 700;
194
+ text-align: center;
195
+ }
196
+
197
+ .case-header-cell:last-child {
198
+ border-right: 0;
199
+ }
200
+
201
+ .case-row {
202
+ display: grid;
203
+ grid-template-columns: minmax(24rem, 30rem) minmax(0, 1fr);
204
+ border-right: 1px solid var(--line);
205
+ border-bottom: 1px solid var(--line);
206
+ border-left: 1px solid var(--line);
207
  background: #fbfbfb;
208
  }
209
 
 
216
  display: grid;
217
  grid-template-columns: 20rem repeat(var(--model-count), 20rem);
218
  min-width: max-content;
219
+ height: 100%;
220
  }
221
 
222
  .demo-cases.without-reference .case-grid {
 
224
  }
225
 
226
  .case-cell {
227
+ display: flex;
228
  min-width: 0;
229
  border-right: 1px solid var(--line);
230
  background: var(--paper);
 
234
  border-right: 0;
235
  }
236
 
 
 
 
 
 
 
 
 
 
 
237
  .case-cell-body {
238
+ display: flex;
239
+ width: 100%;
240
+ align-items: center;
241
  padding: 0.85rem;
242
  }
243
 
244
+ .script-case .case-cell-body {
245
+ align-items: flex-start;
246
+ }
247
+
248
  .script-cell {
249
  max-height: 17rem;
250
  overflow: auto;
 
304
  grid-template-columns: 1fr;
305
  }
306
 
307
+ .case-header {
308
+ grid-template-columns: minmax(18rem, 22rem) minmax(0, 1fr);
309
+ }
310
+
311
  .case-row {
312
  grid-template-columns: minmax(18rem, 22rem) minmax(0, 1fr);
313
  }