auditionadmin/resources/views/tabulation/entry_score_sheet.blade.php

223 lines
11 KiB
PHP

<x-layout.app>
@php($oldScores = session()->get('oldScores') ?? null)
<x-slot:page_title>Entry Score Sheet</x-slot:page_title>
<x-card.card class="mx-auto max-w-7xl">
<x-card.heading>
{{ $entry->audition->name }} #{{ $entry->draw_number }} FINALS SCORES
@if($entry->hasFlag('failed_prelim'))
<span
class="inline-flex items-center rounded-md bg-red-100 px-2 py-1 text-sm font-medium text-red-700 ">Failed Prelim</span>
@elseif($entry->hasFlag('passed_prelim'))
<span
class="inline-flex items-center rounded-md bg-green-100 px-2 py-1 text-sm font-medium text-green-700">Passed Prelim</span>
@elseif($entry->audition->prelimDefinition)
<span
class="inline-flex items-center rounded-md bg-yellow-100 px-2 py-1 text-sm font-medium text-yellow-800 ">Prelim Pending</span>
@endif
<x-slot:subheading>ID #{{ $entry->id }}</x-slot:subheading>
<x-slot:right_side class="text-right">
<p>{{ $entry->student->full_name() }}</p>
<p>{{ $entry->student->school->name }}</p>
</x-slot:right_side>
</x-card.heading>
<x-form.form method="POST" id='scoreForm'
action="{{ route('scores.saveEntryScoreSheet',[ 'entry' => $entry->id]) }}">
<x-table.table>
<thead>
<tr>
<x-table.th>Judges</x-table.th>
@foreach($subscores as $subscore)
<x-table.th>
<div class="">
<div>{{ $subscore->name }}</div>
<div class="text-xs text-gray-500">
<span>Max: {{ $subscore->max_score }}</span>
<span class="pl-2">Weight: {{ $subscore->weight }}</span>
</div>
</div>
</x-table.th>
@endforeach
<x-table.th>Total</x-table.th>
</tr>
</thead>
<x-table.body :sortable="false">
@foreach($judges as $judge)
@php($existingSheet = $existing_sheets[$judge->id] ?? null)
<tr>
<x-table.td>{{ $judge->full_name() }}</x-table.td>
@foreach($subscores as $subscore)
<x-table.td>
<input type="number"
max="{{ $subscore->max_score }}"
id="j{{ $judge->id }}ss{{ $subscore->id }}"
name="judge{{ $judge->id }}[{{ $subscore->id }}]"
class="block w-full rounded-md border-0 py-1.5 text-gray-900 shadow-sm ring-1 ring-inset ring-gray-300 placeholder:text-gray-400 focus:ring-2 focus:ring-inset focus:ring-indigo-600 sm:text-sm sm:leading-6 judge{{$judge->id}}score"
@if($oldScores)
value="{{ $oldScores['judge'.$judge->id][$subscore->id] }}"
@elseif($existingSheet)
value="{{ $existingSheet->getSubscore($subscore->id) }}"
@endif
required
{{-- onchange="judge{{$judge->id}}sum()"--}}
>
</x-table.td>
@endforeach
<x-table.td>
<p id="judge{{ $judge->id }}total" class="pr-3">
0.000
</p>
</x-table.td>
</tr>
@endforeach
</x-table.body>
</x-table.table>
<x-form.footer class="mb-3">
<x-form.button>Save Scores</x-form.button>
</x-form.footer>
</x-form.form>
</x-card.card>
@if($entry->audition->prelimDefinition)
<x-card.card class="mx-auto max-w-7xl mt-5">
<x-card.heading>
{{ $entry->audition->name }} #{{ $entry->draw_number }} PRELIM SCORES
<x-slot:subheading>ID #{{ $entry->id }}</x-slot:subheading>
<x-slot:right_side class="text-right">
<p>{{ $entry->student->full_name() }}</p>
<p>{{ $entry->student->school->name }}</p>
</x-slot:right_side>
</x-card.heading>
<x-form.form method="POST" id='scoreForm'
action="{{ route('scores.savePrelimEntryScoreSheet',[ 'entry' => $entry->id]) }}">
<x-table.table>
<thead>
<tr>
<x-table.th>Judges</x-table.th>
@foreach($prelim_subscores as $subscore)
<x-table.th>
<div class="">
<div>{{ $subscore->name }}</div>
<div class="text-xs text-gray-500">
<span>Max: {{ $subscore->max_score }}</span>
<span class="pl-2">Weight: {{ $subscore->weight }}</span>
</div>
</div>
</x-table.th>
@endforeach
<x-table.th>Total</x-table.th>
</tr>
</thead>
<x-table.body :sortable="false">
@foreach($prelim_judges as $judge)
@php($existingSheet = $existing_prelim_sheets[$judge->id] ?? null)
<tr>
<x-table.td>{{ $judge->full_name() }}</x-table.td>
@foreach($prelim_subscores as $subscore)
<x-table.td>
<input type="number"
max="{{ $subscore->max_score }}"
id="j{{ $judge->id }}ss{{ $subscore->id }}"
name="judge{{ $judge->id }}[{{ $subscore->id }}]"
class="block w-full rounded-md border-0 py-1.5 text-gray-900 shadow-sm ring-1 ring-inset ring-gray-300 placeholder:text-gray-400 focus:ring-2 focus:ring-inset focus:ring-indigo-600 sm:text-sm sm:leading-6 judge{{$judge->id}}score"
@if($oldScores)
value="{{ $oldScores['judge'.$judge->id][$subscore->id] }}"
@elseif($existingSheet)
value="{{ $existingSheet->getSubscore($subscore->id) }}"
@endif
required
{{-- onchange="judge{{$judge->id}}sum()"--}}
>
</x-table.td>
@endforeach
<x-table.td>
<p id="judge{{ $judge->id }}total" class="pr-3">
0.000
</p>
</x-table.td>
</tr>
@endforeach
</x-table.body>
</x-table.table>
<x-form.footer class="mb-3">
<x-form.button>Save Scores</x-form.button>
</x-form.footer>
</x-form.form>
</x-card.card>
@endif
<script>
function calculateTotal(judgeId) {
let total = 0;
let totalWeights = 0;
let maxPossible = 0;
let thisSubscore
@foreach($subscores as $subscore)
thisSubscore = parseFloat(document.getElementById("j" + judgeId + "ss{{ $subscore->id }}").value) * {{ $subscore->weight }};
if (!isNaN(thisSubscore)) {
total += thisSubscore;
}
totalWeights += {{ $subscore->weight }};
maxPossible += {{ $subscore->weight * $subscore->max_score }};
@endforeach
let finalTotal = ((total / maxPossible) * 100).toFixed(3);
document.getElementById('judge' + judgeId + 'total').innerHTML = finalTotal;
}
@foreach($judges as $judge)
document.querySelectorAll('.judge' + {{ $judge->id }} + 'score').forEach(function (el) {
el.addEventListener('change', function () {
calculateTotal({{ $judge->id }});
});
});
@endforeach
window.onload = function () {
// Call the function for each judge
@foreach($judges as $judge)
calculateTotal({{ $judge->id }});
@if($entry->audition->prelimDefinition)
@foreach($prelim_judges as $judge)
calculatePrelimTotal({{ $judge->id }});
@endforeach
@endif
@endforeach
};
</script>
@if($entry->audition->prelimDefinition)
<script>
function calculatePrelimTotal(judgeId) {
let total = 0;
let totalWeights = 0;
let maxPossible = 0;
let thisSubscore
@foreach($prelim_subscores as $subscore)
thisSubscore = parseFloat(document.getElementById("j" + judgeId + "ss{{ $subscore->id }}").value) * {{ $subscore->weight }};
if (!isNaN(thisSubscore)) {
total += thisSubscore;
}
totalWeights += {{ $subscore->weight }};
maxPossible += {{ $subscore->weight * $subscore->max_score }};
@endforeach
let finalTotal = ((total / maxPossible) * 100).toFixed(3);
document.getElementById('judge' + judgeId + 'total').innerHTML = finalTotal;
}
@foreach($prelim_judges as $judge)
document.querySelectorAll('.judge' + {{ $judge->id }} + 'score').forEach(function (el) {
el.addEventListener('change', function () {
calculatePrelimTotal({{ $judge->id }});
});
});
@endforeach
</script>
@endif
</x-layout.app>