{#if isExpanded && details}
{#if service.ct} Cancelled throughout {/if} {#if details.header.cr} {details.header.cr} {#if details.header.cl} {details.header.cn ? ' near ' : ' at '} {/if} {/if} {#if details.header.dr} {details.header.dr} {#if details.header.dl} {details.header.dn ? ' near ' : ' at '} {details.header.dl} {/if} {/if} {#if details.pis}
PIS: {details.pis.code} {#if details.pis.skip?.skip > 0} (skip {details.pis.skip.position === 'head' ? 'first' : 'last'} {details.pis.skip.skip} {details.pis.skip.skip === 1 ? 'stop' : 'stops'} ) {/if}
{/if}

Times in yellow are estimates

{#each details.locations as loc} {#if loc.r == 'PASS'} {:else} {/if} {#if loc} {@const delay = calculateDelay(loc)} {/if} {#if loc.act && getRelevantActivities(loc.act).length > 0} {/if} {/each}
Arr Dep
Location Plat Sch Act Sch Act
{loc.t} {loc.p}Pass {formatUkTime(loc.wtp)} {formatUkTime(loc.atp || loc.etp || '--')}{formatUkTime(loc.pta || loc.wta || '--')} {formatUkTime(loc.ata || loc.eta || '--')} {formatUkTime(loc.ptd || loc.wtd || '--')} {formatUkTime(loc.atd || loc.etd || '--')}{delay.val}
{#each getRelevantActivities(loc.act) as note} {note} {/each}
{/if}