The Tech Capital

Event Agenda

  • @foreach($dates as $date)
  • @endforeach
@php $pageTracks = []; $trackPositions = []; $trackCount = 0; if ($page->enable_tracks && $page->tracks) { $pageTracks = $page->tracks; foreach ($pageTracks as $trackNum => $trackName) { $trackPositions[$trackName] = (int) $trackNum; } $trackCount = max(array_map('intval', array_keys($pageTracks))); } // Build a single chronologically-ordered timeline of items. // Each entry is either a tracked time-group (rendered as a multi-column grid) // or a single non-tracked programme — interleaved so dates stay in order. $timeline = []; $trackedTimeGroups = []; foreach ($programmes as $programme) { if ($trackCount > 0 && $programme->track && isset($trackPositions[$programme->track])) { $timeKey = $programme->starts_at->setTimezone('Europe/London')->format('Y-m-d H:i'); $trackedTimeGroups[$timeKey][] = $programme; } else { $timeline[] = [ 'sort' => $programme->starts_at->getTimestamp(), 'type' => 'non-tracked', 'programme' => $programme, ]; } } foreach ($trackedTimeGroups as $group) { // Sort by track column so CSS grid places cards left-to-right without leaving gaps. usort($group, fn($a, $b) => $trackPositions[$a->track] <=> $trackPositions[$b->track]); $timeline[] = [ 'sort' => $group[0]->starts_at->getTimestamp(), 'type' => 'track-group', 'group' => $group, ]; } usort($timeline, fn($a, $b) => $a['sort'] <=> $b['sort']); $timelineLast = count($timeline) - 1; @endphp @if (count($programmes) > 0) @foreach ($timeline as $itemIdx => $item) @if ($item['type'] === 'track-group')
@foreach ($item['group'] as $programme) @php $col = $trackPositions[$programme->track]; @endphp
@endforeach
@else @php $programme = $item['programme']; @endphp
@if ($programme->session_track_name) {{ $programme->session_track_name }} @endif {{ strtoupper($programme->starts_at->format('jS F')) }} {{ $programme->starts_at->setTimezone('Europe/London')->format('H:i') }} - {{ $programme->ends_at->setTimezone('Europe/London')->format('H:i')}}

{{$programme->title}}

@if ($programme->description)
@if (Str::wordCount($programme->description) > 30) @if ($open !== $programme->id) {!! Str::markdown($programme->truncated_description) !!} @else {!! Str::markdown($programme->description) !!} @endif @else {!! Str::markdown($programme->description) !!} @endif
@endif @if ($programme->speakers()->count() > 0)
@foreach($programme->speakers()->orderBy('programme_speaker.chair', 'DESC')->get() as $speaker)
{{ $speaker->name }}
@if ($speaker->pivot->chair) Chair @endif

{{ $speaker->name }}

{{ $speaker->company }}{{ $speaker->position }}

@endforeach
@endif
@endif @if ($itemIdx < $timelineLast)
@endif @endforeach @endif