Files
riksdagen-app/resources/views/livewire/person/show.blade.php
2025-12-20 15:43:22 +01:00

209 lines
14 KiB
PHP

<div class="container mx-auto py-8">
@if($person)
<div class="flex flex-col md:flex-row gap-8">
<div>
<img src="{{ $person->bild_url_max ?? '' }}" alt="{{ $person->tilltalsnamn }}" class="w-48 h-64 object-cover rounded shadow">
</div>
<div class="flex-1">
<h1 class="text-3xl font-bold mb-2">{{ $person->tilltalsnamn }} {{ $person->efternamn }}</h1>
<div class="mb-2 text-lg text-gray-500">{{ $person->parti }} | {{ $person->valkrets }}</div>
<div class="mb-2">Född: {{ $person->fodd_ar }} | Kön: {{ ucfirst($person->kon) }}</div>
<div class="mb-2">Status: {{ $person->status }}</div>
<div class="mb-2">E-post: {{ str_replace('[på]', '@', collect($person->personuppgift->uppgift ?? [])->firstWhere('kod', 'Officiell e-postadress')->uppgift[0] ?? '-') }}</div>
<div class="mb-4">
<a href="{{ $this->riksdagen_url }}" class="text-blue-600 underline" target="_blank">Visa riksdagen.se</a>
</div>
<h2 class="text-xl font-semibold mt-6 mb-4">Uppdrag</h2>
<!-- Uppdrag tabs -->
<div class="border-b border-gray-200 mb-4">
<nav class="-mb-px flex space-x-8">
<button
wire:click="selectUppdragTab('current')"
class="py-2 cursor-pointer px-1 border-b-2 font-medium text-sm {{ $selectedUppdragTab == 'current' ? 'border-blue-500 text-blue-600' : 'border-transparent text-gray-500 hover:text-gray-700 hover:border-gray-300' }}">
Pågående ({{ count($currentUppdrag) }})
</button>
<button
wire:click="selectUppdragTab('previous')"
class="py-2 cursor-pointer px-1 border-b-2 font-medium text-sm {{ $selectedUppdragTab == 'previous' ? 'border-blue-500 text-blue-600' : 'border-transparent text-gray-500 hover:text-gray-700 hover:border-gray-300' }}">
Tidigare ({{ count($previousUppdrag) }})
</button>
</nav>
</div>
<!-- Current assignments -->
@if($selectedUppdragTab == 'current' && !empty($currentUppdrag))
<div class="space-y-3">
@foreach($currentUppdrag as $uppdrag)
<div class="bg-green-50 border border-green-200 rounded-lg p-4">
<div class="flex justify-between items-start">
<div>
<h4 class="font-semibold text-green-800">{{ $uppdrag->roll_kod }}</h4>
{{-- @if(!empty($uppdrag->uppgift[0]) && is_array($uppdrag->uppgift))
<p class="text-sm text-green-700 mt-1">{{ implode(', ', $uppdrag->uppgift) }}</p>
@endif --}}
<p class="text-sm text-green-600 mt-2">
<span class="font-medium">Typ:</span> {{ ucfirst($uppdrag->typ) }}
@if(isset($uppdrag->status) && $uppdrag->status)
| <span class="font-medium">Status:</span> {{ $uppdrag->status }}
@endif
</p>
</div>
<div class="text-right text-sm text-green-600">
<div>Från: {{ Carbon\Carbon::parse($uppdrag->from)->format('Y-m-d') }}</div>
@if(!empty($uppdrag->tom))
<div>Till: {{ Carbon\Carbon::parse($uppdrag->tom)->format('Y-m-d') }}</div>
@else
<div class="font-semibold text-green-700">Pågående</div>
@endif
</div>
</div>
</div>
@endforeach
</div>
@elseif($selectedUppdragTab == 'current' && empty($currentUppdrag))
<p class="text-gray-500 italic">Inga pågående uppdrag.</p>
@endif
<!-- Previous assignments -->
@if($selectedUppdragTab == 'previous' && !empty($previousUppdrag))
<div class="space-y-3">
@foreach($previousUppdrag as $uppdrag)
<div class="bg-gray-50 border border-gray-200 rounded-lg p-4">
<div class="flex justify-between items-start">
<div>
<h4 class="font-semibold text-gray-800">{{ $uppdrag->roll_kod }}</h4>
{{-- @if(!empty($uppdrag->uppgift[0]) && is_array($uppdrag->uppgift))
<p class="text-sm text-gray-700 mt-1">{{ implode(', ', $uppdrag->uppgift) }}</p>
@endif --}}
<p class="text-sm text-gray-600 mt-2">
<span class="font-medium">Typ:</span> {{ ucfirst($uppdrag->typ) }}
@if(isset($uppdrag->status) && $uppdrag->status)
| <span class="font-medium">Status:</span> {{ $uppdrag->status }}
@endif
</p>
</div>
<div class="text-right text-sm text-gray-600">
<div>{{ Carbon\Carbon::parse($uppdrag->from)->format('Y-m-d') }} - {{ Carbon\Carbon::parse($uppdrag->tom)->format('Y-m-d') }}</div>
<div class="text-xs text-gray-500 mt-1">
{{ Carbon\Carbon::parse($uppdrag->from)->diffForHumans(Carbon\Carbon::parse($uppdrag->tom), true) }}
</div>
</div>
</div>
</div>
@endforeach
</div>
@elseif($selectedUppdragTab == 'previous' && empty($previousUppdrag))
<p class="text-gray-500 italic">Inga tidigare uppdrag registrerade.</p>
@endif
<h2 class="text-xl font-semibold mt-6 mb-2">Biografi</h2>
<ul class="list-disc ml-6">
@foreach(collect($person->personuppgift->uppgift ?? [])->where('typ', 'biografi') as $bio)
<li>
<strong>{{ $bio->kod }}:</strong> {{ is_array($bio->uppgift) ? implode(', ', $bio->uppgift) : $bio->uppgift }}
</li>
@endforeach
</ul>
@if(!empty($votesByYear))
<h2 class="text-xl font-semibold mt-6 mb-4">Voteringar</h2>
<!-- Year tabs -->
<div class="border-b border-gray-200 mb-4">
<nav class="-mb-px flex space-x-8">
@foreach(array_keys($votesByYear) as $year)
<button
wire:click="selectYear('{{ $year }}')"
class="cursor-pointer py-2 px-1 border-b-2 font-medium text-sm {{ $selectedYear == $year ? 'border-blue-500 text-blue-600' : 'border-transparent text-gray-500 hover:text-gray-700 hover:border-gray-300' }}">
{{ $year }}
</button>
@endforeach
</nav>
</div>
@if($selectedYear && isset($votesByYear[$selectedYear]))
<!-- Voting Statistics Chart -->
<div class="mb-8 bg-white p-6 rounded-lg shadow border">
<h3 class="text-lg font-semibold mb-4">Röststatistik för {{ $selectedYear }}</h3>
@if(!empty($this->votingStatistics))
<div class="flex flex-col lg:flex-row gap-6">
<div class="lg:w-1/2">
<livewire:livewire-pie-chart
:pie-chart-model="$this->pieChartModel"
key="{{ 'pie-chart-'.$selectedYear }}"
/>
</div>
<div class="lg:w-1/2">
<div class="space-y-2">
@foreach($this->votingStatistics as $voteType => $count)
<div class="flex justify-between items-center p-3 bg-gray-50 rounded">
<span class="font-medium">{{ $voteType }}</span>
<span class="text-lg font-bold">{{ $count }}</span>
</div>
@endforeach
<div class="flex justify-between items-center p-3 bg-blue-50 rounded border-t-2 border-blue-500">
<span class="font-bold">Totalt antal voteringar</span>
<span class="text-lg font-bold">{{ array_sum($this->votingStatistics) }}</span>
</div>
</div>
</div>
</div>
@else
<p class="text-gray-500">Ingen röststatistik tillgänglig för detta år.</p>
@endif
</div>
@endif
<!-- Votes table -->
@if($selectedYear && isset($votesByYear[$selectedYear]))
<div class="overflow-x-auto" style="overflow-y: auto; display: block; max-height: 400px;">
<table class="min-w-full bg-white border border-gray-200">
<thead class="bg-gray-50 sticky top-0">
<tr>
<th class="px-4 py-2 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Datum</th>
<th class="px-4 py-2 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Beteckning</th>
<th class="px-4 py-2 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Punkt</th>
<th class="px-4 py-2 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Röst</th>
<th class="px-4 py-2 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Avser</th>
<th class="px-4 py-2 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Votering</th>
</tr>
</thead>
<tbody class="divide-y divide-gray-200">
@foreach($votesByYear[$selectedYear] as $vote)
<tr class="hover:bg-gray-50 bg-gray-300">
<td class="px-4 py-2 text-sm text-gray-900">
{{ Carbon\Carbon::parse($vote->systemdatum)->format('Y-m-d') }}
</td>
<td class="px-4 py-2 text-sm">
<a href="{{ $vote->votering_url_xml }}" class="text-blue-600 hover:underline" target="_blank">
{{ $vote->beteckning }}
</a>
</td>
<td class="px-4 py-2 text-sm text-gray-900">{{ $vote->punkt }}</td>
<td class="px-4 py-2 text-sm">
<span class="inline-flex px-2 py-1 text-xs font-semibold rounded-full
{{ $vote->rost === 'Ja' ? 'bg-green-100 text-green-800' :
($vote->rost === 'Nej' ? 'bg-red-100 text-red-800' :
'bg-gray-100 text-gray-800') }}">
{{ $vote->rost }}
</span>
</td>
<td class="px-4 py-2 text-sm text-gray-900">{{ $vote->avser }}</td>
<td class="px-4 py-2 text-sm text-gray-900">{{ $vote->votering }}</td>
</tr>
@endforeach
</tbody>
</table>
</div>
@endif
@endif
</div>
</div>
@else
<div class="text-red-600">Personen kunde inte hittas.</div>
@endif
<div class="mt-10 text-sm text-gray-500">
Källa: Sveriges riksdag (<a href="https://riksdagen.se/sv/" class="text-blue-600 underline" target="_blank">riksdagen.se</a>)
</div>
</div>