{#if columnsMenuOpen}
{#each orderedColumns as col (col.key)} {@const key = col.key}
handleDragOver(e, key)} ondrop={(e) => handleDrop(e, key)} > handleDragStart(e, key)} ondragend={handleDragEnd} >⋮⋮
{/each}
{/if}
{#each activeVisibleColumns as key (key)} {/each} {#if sortedMetrics.length === 0} {:else} {#each sortedMetrics as metric (metric.id)} {#each activeVisibleColumns as key (key)} {/each} {/each} {/if}
{#if key === "cached"} Cached {:else if key === "prompt"} Prompt {:else if key === "drafted"} Drafted {:else} {columnLabelMap[key] ?? key} {/if}
No activity recorded
{#if key === "id"} {metric.id + 1} {:else if key === "time"} {formatRelativeTime(metric.timestamp)} {:else if key === "model"} {metric.model} {:else if key === "req_path"} {metric.req_path || "-"} {:else if key === "resp_status_code"} {#if metric.error_msg} {metric.resp_status_code || "-"} {:else} {metric.resp_status_code || "-"} {/if} {:else if key === "resp_content_type"} {metric.resp_content_type || "-"} {:else if key === "cached"} {metric.tokens.cache_tokens > 0 ? metric.tokens.cache_tokens.toLocaleString() : "-"} {:else if key === "prompt"} {metric.tokens.input_tokens.toLocaleString()} {:else if key === "generated"} {metric.tokens.output_tokens.toLocaleString()} {:else if key === "drafted"} {formatDrafted(metric.tokens.draft_tokens, metric.tokens.draft_acc_tokens)} {:else if key === "prompt_speed"} {formatSpeed(metric.tokens.prompt_per_second)} {:else if key === "gen_speed"} {formatSpeed(metric.tokens.tokens_per_second)} {:else if key === "duration"} {formatDuration(metric.duration_ms)} {:else if key === "capture"} {#if metric.has_capture} {:else} - {/if} {:else if key === "meta"} {#if Object.keys(metric.metadata || {}).length > 0} ... {:else} - {/if} {:else} - {/if}