A four-state per-person day timeline that derives focus blocks from the gaps a calendar leaves, splits them into usable time and scraps at a stated minimum, and leads with the fragmentation score that falls out of the split.
Preview in your theme
Loading preview…
This component is part of Pro
The install command, prompt and concept map are included with a Pro license — one purchase unlocks every Pro component, forever.
status="ready" · six calendars over one 09:00–18:00 day. Hatched slabs are booked time; the accent is what survives in one piece; bare track is a gap under an hour. The board median is 51 — half the team loses more than half their free time to scraps. The card leads on Aisha Bello, the sharpest case: 6h 30m of open time in ten pieces, the longest 45m, so her fragmentation is 100 without a single meeting over 15 minutes — and her track carries no accent at all, because nothing on it clears an hour. Marcus Obeng is the counter-example at 0, with 7h 45m of focus in three blocks. Pick any row to lead the card with that person; pick it again to go back to the board.
Focus time · one day
Calendars as booked, Squad Atlas · Thursday 12 March · times in Europe/Berlin
51
median fragmentation across the board
22h 15m of unbroken focus across 6 people · 2 without a single 1h block
Sharpest case: Aisha Bello, with no block long enough to accent — the longest gap is 45m. Pick any row to lead the card with that person.
41% unbroken focus · 36% meetings · 23% gaps under 1h — of the board’s working time
Focus time · one day: Calendars as booked, Squad Atlas. 6 people over 09:00 to 18:00 on Thursday 12 March, Europe/Berlin. A gap counts as focus at 1 hour or longer. Across the board that is 22 hours 15 minutes of unbroken focus, 19 hours 30 minutes in meetings and 12 hours 15 minutes in gaps too short to use — 41, 36 and 23 per cent of the working time on the board. Median fragmentation is 51 out of 100 — that share of a person's free time arrives in pieces shorter than 1 hour. 2 of 6 get no unbroken 1 hour at all. Aisha Bello has 6 hours 30 minutes open in 10 pieces, none of them long enough to count as focus — the longest is 45 minutes, against 2 hours 30 minutes in 10 meetings. Fragmentation 100 out of 100. Every person is listed in the table below.
Everyone’s day, worst first
09:0012:0014:0016:0018:00
Every person on the board with their booked time, the open blocks it leaves, how much of that open time is usable at 1 hour or more, and the resulting fragmentation.
Person
Role
Meetings
Booked
Open
Unbroken focus
Open blocks
Longest focus block
Gaps under 1h
Fragmentation
Aisha Bello
Support
10 in 10 stretches: Ticket triage, Escalation call, Customer follow-up, Ticket triage, Handover to EU, Escalation call, Bug repro with iOS, Customer follow-up, Ticket triage, Handover to US
2 hours 30 minutes
6 hours 30 minutes
0 minutes in 0 blocks
10
none
6 hours 30 minutes
100 out of 100
Priya Raghavan
Product
6 in 2 stretches: Quarterly planning, Vendor call, Stakeholder review, Support escalation, Hiring panel, Roadmap workshop
8 hours 30 minutes
30 minutes
0 minutes in 0 blocks
1
none
30 minutes
100 out of 100
Dana Whitfield
Design lead
7 in 7 stretches: Standup, 1:1 with Marcus, Design review, Roadmap sync, Brand workshop, Retro, Client call
3 in 3 stretches: Standup, Roadmap sync, Pairing on the migration
1 hour 15 minutes
7 hours 45 minutes
7 hours 45 minutes in 3 blocks
3
3 hours 45 minutes, 09:15 to 13:00
0 minutes
0 out of 100
Wen Li
Data
1 in 1 stretch: Metrics review
30 minutes
8 hours 30 minutes
8 hours 30 minutes in 2 blocks
2
6 hours 30 minutes, 11:30 to 18:00
0 minutes
0 out of 100
unbroken focus, 1h or moremeetingsgaps under 1hnow, 14:20
Each track is one person's 09:00–18:00. Hatched slabs are booked time, the accent is what is left over in one piece, and bare track is a gap shorter than 1h. Overlapping entries are merged and counted once, and the hairline inside a slab is where the next entry starts — so four half-hour meetings in a row still read as four. Fragmentation is the share of a person's open time that arrives in pieces under 1h: 0 means it all came in usable blocks, 100 means none of it did. A day with no open time has no fragmentation and prints a dash rather than a number. The board figure is the median of those scores by linear interpolation between closest ranks, over the people who have any open time. Shares are whole per cents apportioned by largest remainder, so the three add to exactly 100. Every time here is wall-clock on the stated day, so nothing on this card moves with a time zone or a daylight-saving change.
status="empty" · a valid payload carrying no people at all — told apart from "loading" and from "the calendar feed failed".
Focus time · one day
Calendars as booked, Squad Atlas · Thursday 12 March · times in Europe/Berlin
No calendars to read
This card needs at least one person and a working window before it can tell unbroken focus from the gaps between meetings.
status="loading" · four stepped skeleton tracks, aria-hidden plus an sr-only role=status. No timers are involved, and the pulse stops under prefers-reduced-motion.
Focus time · one day
Calendars as booked, Squad Atlas · Thursday 12 March · times in Europe/Berlin
Loading focus time
status="error" · the feed failed. "Try again" appears only when onRetry is passed, and pressing it switches this card to ready.
Focus time · one day
Calendars as booked, Squad Atlas · Thursday 12 March · times in Europe/Berlin
Couldn’t load this chart
The calendar feed didn’t respond.
Lever: focusMinimumMinutes={90} on exactly the same board. Raising the bar from an hour to an hour and a half turns Dana Whitfield's one surviving 1h 15m block into a scrap — her score jumps from 72 to 100, the team goes from two people without a usable block to three, and the board median moves from 51 to 65. Nothing about the calendars changed; only what counts as focus did.
Focus time · one day
Calendars as booked, Squad Atlas · Thursday 12 March · times in Europe/Berlin
65
median fragmentation across the board
21h of unbroken focus across 6 people · 3 without a single 1h 30m block
Sharpest case: Aisha Bello, with no block long enough to accent — the longest gap is 45m. Pick any row to lead the card with that person.
39% unbroken focus · 36% meetings · 25% gaps under 1h 30m — of the board’s working time
Focus time · one day: Calendars as booked, Squad Atlas. 6 people over 09:00 to 18:00 on Thursday 12 March, Europe/Berlin. A gap counts as focus at 1 hour 30 minutes or longer. Across the board that is 21 hours of unbroken focus, 19 hours 30 minutes in meetings and 13 hours 30 minutes in gaps too short to use — 39, 36 and 25 per cent of the working time on the board. Median fragmentation is 65 out of 100 — that share of a person's free time arrives in pieces shorter than 1 hour 30 minutes. 3 of 6 get no unbroken 1 hour 30 minutes at all. Aisha Bello has 6 hours 30 minutes open in 10 pieces, none of them long enough to count as focus — the longest is 45 minutes, against 2 hours 30 minutes in 10 meetings. Fragmentation 100 out of 100. Every person is listed in the table below.
Everyone’s day, worst first
09:0012:0014:0016:0018:00
Every person on the board with their booked time, the open blocks it leaves, how much of that open time is usable at 1 hour 30 minutes or more, and the resulting fragmentation.
Person
Role
Meetings
Booked
Open
Unbroken focus
Open blocks
Longest focus block
Gaps under 1h 30m
Fragmentation
Aisha Bello
Support
10 in 10 stretches: Ticket triage, Escalation call, Customer follow-up, Ticket triage, Handover to EU, Escalation call, Bug repro with iOS, Customer follow-up, Ticket triage, Handover to US
2 hours 30 minutes
6 hours 30 minutes
0 minutes in 0 blocks
10
none
6 hours 30 minutes
100 out of 100
Dana Whitfield
Design lead
7 in 7 stretches: Standup, 1:1 with Marcus, Design review, Roadmap sync, Brand workshop, Retro, Client call
4 hours 30 minutes
4 hours 30 minutes
0 minutes in 0 blocks
7
none
4 hours 30 minutes
100 out of 100
Priya Raghavan
Product
6 in 2 stretches: Quarterly planning, Vendor call, Stakeholder review, Support escalation, Hiring panel, Roadmap workshop
3 in 3 stretches: Standup, Roadmap sync, Pairing on the migration
1 hour 15 minutes
7 hours 45 minutes
7 hours 45 minutes in 3 blocks
3
3 hours 45 minutes, 09:15 to 13:00
0 minutes
0 out of 100
Wen Li
Data
1 in 1 stretch: Metrics review
30 minutes
8 hours 30 minutes
8 hours 30 minutes in 2 blocks
2
6 hours 30 minutes, 11:30 to 18:00
0 minutes
0 out of 100
unbroken focus, 1h 30m or moremeetingsgaps under 1h 30mnow, 14:20
Each track is one person's 09:00–18:00. Hatched slabs are booked time, the accent is what is left over in one piece, and bare track is a gap shorter than 1h 30m. Overlapping entries are merged and counted once, and the hairline inside a slab is where the next entry starts — so four half-hour meetings in a row still read as four. Fragmentation is the share of a person's open time that arrives in pieces under 1h 30m: 0 means it all came in usable blocks, 100 means none of it did. A day with no open time has no fragmentation and prints a dash rather than a number. The board figure is the median of those scores by linear interpolation between closest ranks, over the people who have any open time. Shares are whole per cents apportioned by largest remainder, so the three add to exactly 100. Every time here is wall-clock on the stated day, so nothing on this card moves with a time zone or a daylight-saving change.
Guarded division: Rafael Duarte is booked 09:00–18:00 with no gap anywhere, so open time is zero and fragmentation would divide by it. The card prints an em dash rather than inventing 100 — a day with nothing free is a different finding from a day chopped to bits, and the share strip says so at 0 / 100 / 0. The four back-to-back entries merge into one slab, hairlined at each of the three joins.
Focus time · fully booked
Incident day, one responder · Thursday 12 March · times in Europe/Berlin
—
median fragmentation across the board
0m of unbroken focus across 1 person · 1 without a single 1h block
Sharpest case: Rafael Duarte, with no block long enough to accent — the day is booked end to end. Pick any row to lead the card with that person.
0% unbroken focus · 100% meetings · 0% gaps under 1h — of the board’s working time
Focus time · fully booked: Incident day, one responder. 1 person over 09:00 to 18:00 on Thursday 12 March, Europe/Berlin. A gap counts as focus at 1 hour or longer. Across the board that is 0 minutes of unbroken focus, 9 hours in meetings and 0 minutes in gaps too short to use — 0, 100 and 0 per cent of the working time on the board. Nobody has any open time, so there is no fragmentation figure to quote. 1 of 1 get no unbroken 1 hour at all. Rafael Duarte has no open time at all: 4 entries fill the whole window. Every person is listed in the table below.
Everyone’s day, worst first
09:0012:0014:0016:0018:00
Every person on the board with their booked time, the open blocks it leaves, how much of that open time is usable at 1 hour or more, and the resulting fragmentation.
Each track is one person's 09:00–18:00. Hatched slabs are booked time, the accent is what is left over in one piece, and bare track is a gap shorter than 1h. Overlapping entries are merged and counted once, and the hairline inside a slab is where the next entry starts — so four half-hour meetings in a row still read as four. Fragmentation is the share of a person's open time that arrives in pieces under 1h: 0 means it all came in usable blocks, 100 means none of it did. A day with no open time has no fragmentation and prints a dash rather than a number. The board figure is the median of those scores by linear interpolation between closest ranks, over the people who have any open time. Shares are whole per cents apportioned by largest remainder, so the three add to exactly 100. Every time here is wall-clock on the stated day, so nothing on this card moves with a time zone or a daylight-saving change.
The other end of the same division: Wen Li has an empty calendar, so one 9h block spans the window and her score is a true 0 — which has to look different from the dash above. Marcus keeps a single 09:00–10:00 sync and still clears 8h in one piece.
Focus time · no-meeting day
Meeting-free Wednesday, enforced · Thursday 12 March · times in Europe/Berlin
0
median fragmentation across the board
17h of unbroken focus across 2 people · everyone clears 1h at least once
Sharpest case: Wen Li. Pick any row to lead the card with that person.
94% unbroken focus · 6% meetings · 0% gaps under 1h — of the board’s working time
Focus time · no-meeting day: Meeting-free Wednesday, enforced. 2 people over 09:00 to 18:00 on Thursday 12 March, Europe/Berlin. A gap counts as focus at 1 hour or longer. Across the board that is 17 hours of unbroken focus, 1 hour in meetings and 0 minutes in gaps too short to use — 94, 6 and 0 per cent of the working time on the board. Median fragmentation is 0 out of 100 — that share of a person's free time arrives in pieces shorter than 1 hour. Everyone gets at least one unbroken 1 hour. Wen Li has 9 hours open in 1 piece, the longest 9 hours from 09:00 to 18:00, against 0 minutes in 0 meetings. Fragmentation 0 out of 100. Every person is listed in the table below.
Everyone’s day, worst first
09:0012:0014:0016:0018:00
Every person on the board with their booked time, the open blocks it leaves, how much of that open time is usable at 1 hour or more, and the resulting fragmentation.
Person
Role
Meetings
Booked
Open
Unbroken focus
Open blocks
Longest focus block
Gaps under 1h
Fragmentation
Wen Li
Data
0 in 0 stretches
0 minutes
9 hours
9 hours in 1 block
1
9 hours, 09:00 to 18:00
0 minutes
0 out of 100
Marcus Obeng
Backend
1 in 1 stretch: Weekly sync
1 hour
8 hours
8 hours in 1 block
1
8 hours, 10:00 to 18:00
0 minutes
0 out of 100
unbroken focus, 1h or moremeetingsgaps under 1h
Each track is one person's 09:00–18:00. Hatched slabs are booked time, the accent is what is left over in one piece, and bare track is a gap shorter than 1h. Overlapping entries are merged and counted once, and the hairline inside a slab is where the next entry starts — so four half-hour meetings in a row still read as four. Fragmentation is the share of a person's open time that arrives in pieces under 1h: 0 means it all came in usable blocks, 100 means none of it did. A day with no open time has no fragmentation and prints a dash rather than a number. The board figure is the median of those scores by linear interpolation between closest ranks, over the people who have any open time. Shares are whole per cents apportioned by largest remainder, so the three add to exactly 100. Every time here is wall-clock on the stated day, so nothing on this card moves with a time zone or a daylight-saving change.
Collisions and spill. Nadia Ferreira's 08:00–09:30 handover and 09:15–10:15 incident review genuinely overlap: they merge into one 09:00–10:15 slab, counted once, with a hairline at the seam. Her 07:00 gym misses the window and is dropped; her 17:30–19:00 deploy is trimmed at 18:00 — two trimmed, one dropped, all three stated in the footnote. Owen Marsh's first gap is exactly 60 minutes, and the minimum is inclusive, so it counts as focus rather than as a scrap.
Focus time · collisions
Calendars with collisions and spill · Thursday 12 March · times in Europe/Berlin
0
median fragmentation across the board
13h 45m of unbroken focus across 2 people · everyone clears 1h at least once
Sharpest case: Nadia Ferreira. Pick any row to lead the card with that person.
76% unbroken focus · 24% meetings · 0% gaps under 1h — of the board’s working time
Focus time · collisions: Calendars with collisions and spill. 2 people over 09:00 to 18:00 on Thursday 12 March, Europe/Berlin. A gap counts as focus at 1 hour or longer. Across the board that is 13 hours 45 minutes of unbroken focus, 4 hours 15 minutes in meetings and 0 minutes in gaps too short to use — 76, 24 and 0 per cent of the working time on the board. Median fragmentation is 0 out of 100 — that share of a person's free time arrives in pieces shorter than 1 hour. Everyone gets at least one unbroken 1 hour. Nadia Ferreira has 7 hours 15 minutes open in 1 piece, the longest 7 hours 15 minutes from 10:15 to 17:30, against 1 hour 45 minutes in 3 meetings. Fragmentation 0 out of 100. At least one calendar is double booked; overlapping entries are counted once. 2 entries run past an edge of the working window, and only the part inside it is counted. 1 entry falls outside the window entirely and is not counted. Every person is listed in the table below.
Everyone’s day, worst first
09:0012:0014:0016:0018:00
Every person on the board with their booked time, the open blocks it leaves, how much of that open time is usable at 1 hour or more, and the resulting fragmentation.
3 in 2 stretches: Design crit, Sprint demo, 1:1 with Nadia
2 hours 30 minutes
6 hours 30 minutes
6 hours 30 minutes in 3 blocks
3
3 hours 30 minutes, 11:30 to 15:00
0 minutes
0 out of 100
unbroken focus, 1h or moremeetingsgaps under 1hnow, 16:40
Each track is one person's 09:00–18:00. Hatched slabs are booked time, the accent is what is left over in one piece, and bare track is a gap shorter than 1h. Overlapping entries are merged and counted once, and the hairline inside a slab is where the next entry starts — so four half-hour meetings in a row still read as four. Fragmentation is the share of a person's open time that arrives in pieces under 1h: 0 means it all came in usable blocks, 100 means none of it did. A day with no open time has no fragmentation and prints a dash rather than a number. The board figure is the median of those scores by linear interpolation between closest ranks, over the people who have any open time. Shares are whole per cents apportioned by largest remainder, so the three add to exactly 100. Entries are clipped to the window: 2 trimmed, 1 dropped for falling outside it. Every time here is wall-clock on the stated day, so nothing on this card moves with a time zone or a daylight-saving change.
Contract refusal: the export carries a "Focus block (no duration)" entry that starts and ends at 11:00. Dropping it quietly would glue the open time on either side of it into one long block and invent focus that never happened, so the contract refuses and names the entry, the person and the clock times.
Focus time · broken feed
Calendar export with a zero-length entry · Thursday 12 March · times in Europe/Berlin
This day can’t be drawn
"Focus block (no duration)" on Dana Whitfield's day ends at 11:00 but starts at 11:00. A zero-length or reversed entry would leave the open time on either side of it looking like one uninterrupted block, which is precisely the lie this chart exists to catch.
Density levers on the same board: sort="given" restores the order the data came in (Dana first, Aisha last) instead of worst-first, trackHeight={16} takes the bands down from 26px, and showShares / showFootnote drop the share strip and the method note for a dashboard tile. The headline, the axis and the accessible table are untouched.
Focus time · one day
Calendars as booked, Squad Atlas · Thursday 12 March · times in Europe/Berlin
51
median fragmentation across the board
22h 15m of unbroken focus across 6 people · 2 without a single 1h block
Sharpest case: Aisha Bello, with no block long enough to accent — the longest gap is 45m. Pick any row to lead the card with that person.
Focus time · one day: Calendars as booked, Squad Atlas. 6 people over 09:00 to 18:00 on Thursday 12 March, Europe/Berlin. A gap counts as focus at 1 hour or longer. Across the board that is 22 hours 15 minutes of unbroken focus, 19 hours 30 minutes in meetings and 12 hours 15 minutes in gaps too short to use — 41, 36 and 23 per cent of the working time on the board. Median fragmentation is 51 out of 100 — that share of a person's free time arrives in pieces shorter than 1 hour. 2 of 6 get no unbroken 1 hour at all. Aisha Bello has 6 hours 30 minutes open in 10 pieces, none of them long enough to count as focus — the longest is 45 minutes, against 2 hours 30 minutes in 10 meetings. Fragmentation 100 out of 100. Every person is listed in the table below.
Everyone’s day, in board order
09:0012:0014:0016:0018:00
Every person on the board with their booked time, the open blocks it leaves, how much of that open time is usable at 1 hour or more, and the resulting fragmentation.
Person
Role
Meetings
Booked
Open
Unbroken focus
Open blocks
Longest focus block
Gaps under 1h
Fragmentation
Dana Whitfield
Design lead
7 in 7 stretches: Standup, 1:1 with Marcus, Design review, Roadmap sync, Brand workshop, Retro, Client call
4 hours 30 minutes
4 hours 30 minutes
1 hour 15 minutes in 1 block
7
1 hour 15 minutes, 11:45 to 13:00
3 hours 15 minutes
72 out of 100
Marcus Obeng
Backend
3 in 3 stretches: Standup, Roadmap sync, Pairing on the migration
1 hour 15 minutes
7 hours 45 minutes
7 hours 45 minutes in 3 blocks
3
3 hours 45 minutes, 09:15 to 13:00
0 minutes
0 out of 100
Priya Raghavan
Product
6 in 2 stretches: Quarterly planning, Vendor call, Stakeholder review, Support escalation, Hiring panel, Roadmap workshop