{#each rows as r (r.di)} {@const rnd = r.v.reduce( (n, c, ci) => n + c.filter((x, ii) => isRnd(rounded, emp, r.di, ci, ii, x)).length, 0 )} {@const manual = r.rowEdits - rnd} {@const note = noteOf(r, rnd, manual, $_, shift.round_step_min)} {@const label = dayLabel(r)} {#each r.v as list, ci} {@const many = list.filter((x) => x !== '').length > 1} {/each} {/each}
{$_('review.shift_1')} {$_('review.shift_2')}
{$_('review.col_day')} {$_('review.col_in')} {$_('review.col_out')} {$_('review.col_in')} {$_('review.col_out')} {$_('review.col_hours')} {$_('review.col_notes')}
{r.dow}{r.di + 1}
{#each list as val, ii} 1 ? $_('review.cell_aria_stacked', { values: { label, col: $_(COLS_KEYS[ci]), index: ii + 1, total: list.length } }) : $_('review.cell_aria', { values: { label, col: $_(COLS_KEYS[ci]) } })} oninput={(e) => oncellinput(r.di, ci, ii, e)} /> {/each}
{r.mins ? hm(r.mins) : '—'} {#if r.rowEdits > 0} {/if} {#if note.kind === 'issue'} {:else if note.kind === 'info'} {/if} {note.text} {#if r.stacked} onfixday(r.di)}> {#snippet icon()} {/snippet} {$_('review.fix_shifts_short')} {/if} {#if r.lunch} onaddlunch(r.di)} > {#snippet icon()} {/snippet} {$_('review.lunch_short')} {shift.out1}–{shift.in2} {/if} {#if r.info} onroundday(r.di)}> {#snippet icon()} {/snippet} {$_('review.round_short')} {/if}
{#if rows.length === 0}
{$_('review.no_rows')}
{/if}