( entries: TaskRunLogEntry[], groupIndex: number, startTime: number, sheet: Sheet | undefined, sheetsMap: Map<string, Sheet> | undefined, idPrefix: string | undefined, detailText: TaskRunLogDetailText | undefined, fileVersion?: string )
| 463 | }; |
| 464 | |
| 465 | const buildDisplayItems = ( |
| 466 | entries: TaskRunLogEntry[], |
| 467 | groupIndex: number, |
| 468 | startTime: number, |
| 469 | sheet: Sheet | undefined, |
| 470 | sheetsMap: Map<string, Sheet> | undefined, |
| 471 | idPrefix: string | undefined, |
| 472 | detailText: TaskRunLogDetailText | undefined, |
| 473 | fileVersion?: string |
| 474 | ): DisplayItem[] => { |
| 475 | return entries.map((entry, entryIndex) => { |
| 476 | const entryTime = getTimestampMs(entry.logTime); |
| 477 | const relativeMs = startTime > 0 ? entryTime - startTime : 0; |
| 478 | const entryHasError = hasError(entry); |
| 479 | |
| 480 | return { |
| 481 | key: `${idPrefix ?? "section"}-${groupIndex}-${entryIndex}`, |
| 482 | time: formatTime(entry.logTime), |
| 483 | relativeTime: relativeMs > 0 ? formatRelativeTime(relativeMs) : "", |
| 484 | levelIndicator: entryHasError ? "\u2717" : "\u2713", |
| 485 | levelClass: entryHasError ? "text-red-600" : "text-green-600", |
| 486 | detail: getEntryDetail(entry, sheet, sheetsMap, detailText, fileVersion), |
| 487 | detailClass: entryHasError ? "text-red-700" : "text-gray-600", |
| 488 | affectedRows: |
| 489 | entry.type === TaskRunLogEntry_Type.COMMAND_EXECUTE |
| 490 | ? Number(entry.commandExecute?.response?.affectedRows ?? 0) || |
| 491 | undefined |
| 492 | : undefined, |
| 493 | duration: getCommandDuration(entry), |
| 494 | }; |
| 495 | }); |
| 496 | }; |
| 497 | |
| 498 | const calculateSectionStatus = (entries: TaskRunLogEntry[]): SectionStatus => { |
| 499 | if (entries.some(hasError)) return "error"; |
no test coverage detected