Loading app/Http/Controllers/ManualPalanqueeController.php +2 −1 Original line number Diff line number Diff line Loading @@ -5,6 +5,7 @@ use App\Models\DivingGroup; use App\Models\DivingSignUpModel; use App\Models\User; use Illuminate\Database\QueryException; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Log; Loading Loading @@ -37,7 +38,7 @@ public function store(Request $request){ } $responseData = ['message' => 'Data received successfully', 'additionalData' => $divingGroups]; return response()->json($responseData); } catch (\Illuminate\Database\QueryException $e) { } catch (QueryException $e) { return response()->json(['error' => 'Internal Server Error', 'errData' => $e], 500); } } Loading public/js/Palanque/manualPalanque.js +24 −13 Original line number Diff line number Diff line Loading @@ -109,7 +109,7 @@ function isElementInList(element, list){ addPalanque.addEventListener("click", function(){ let palanque = document.createElement("div"); palanque.setAttribute("class", "border-2 p-4 zone"); palanque.setAttribute("class", "border text-center bg-gray-200 rounded-lg p-3 pb-20 zone"); palanque.setAttribute("id", "zone" + countZone); palanque.setAttribute("ondrop", "drop(event)"); palanque.setAttribute("ondragover", "allowDrop(event)"); Loading @@ -119,8 +119,13 @@ addPalanque.addEventListener("click", function(){ }); removePalanque.addEventListener("click", function(){ let nbZone = prompt("Veuillez entrer le numéro de la palanque à supprimer", "1") - 1; removePalanqueZone(nbZone); }); function removePalanqueZone(nbZone){ countZone--; let palanque = document.getElementById("zone" + countZone); let palanque = document.getElementById("zone" + nbZone); if(palanque.childElementCount > 0){ sizeT = palanque.childElementCount; for(let i = 0; i < sizeT; i++){ Loading @@ -129,7 +134,13 @@ removePalanque.addEventListener("click", function(){ } zoneList.splice(zoneList.length - 1, 1); palanque.parentElement.removeChild(palanque); }); let dropZones = document.querySelectorAll("div.zone"); dropZones.forEach(element => { if(element.id.split('zone')[1] > nbZone){ element.id = "zone" + (element.id.split('zone')[1] - 1); } }) } async function getDiver(ds_code){ let response = await fetch(`/api/dives/${ds_code}/divers`); Loading @@ -142,11 +153,11 @@ function proccessDiverData(data){ for(let i = 0; i < data.length; i++){ countDiver++; let diver = document.createElement("div"); diver.setAttribute("class", "w-fit h-8 border-2"); diver.setAttribute("class", "w-full h-8 border rounded p-1 m-1 bg-gray-300"); diver.setAttribute("id", 'item' + data[i].US_ID +',' + data[i].PRE_CODE + ',E' + data[i].US_TEACHING_LEVEL + ',' + data[i].US_ID); diver.setAttribute("draggable", "true"); diver.setAttribute("ondragstart", "drag(event)"); diver.innerHTML = data[i].US_FIRST_NAME + " " + data[i].US_NAME + " " + data[i].PRE_CODE + " " + data[i].US_TEACHING_LEVEL; diver.innerHTML = data[i].US_FIRST_NAME + " " + data[i].US_NAME.toUpperCase() + " - " + data[i].PRE_CODE + " - E" + data[i].US_TEACHING_LEVEL; zoneStart.appendChild(diver); } return data; Loading @@ -167,7 +178,7 @@ function validateAllCombination(){ element = document.getElementById("zone" + element.getZoneNumber()); if(element.hasChildNodes()){ if(element.childElementCount < 2 || element.childElementCount > 3){ element.style.backgroundColor = 'red'; element.style.backgroundColor = 'rgb(254 202 202)'; return false; } let children = element.childNodes; Loading @@ -175,8 +186,8 @@ function validateAllCombination(){ for(let j = 0; j < children.length; j++){ if(children[j].id.split(',')[1] === 'PA-60-GP'){ counterCheck++; if(element.style.backgroundColor === 'red') element.style.backgroundColor = 'white'; if(element.style.backgroundColor === 'rgb(254 202 202)') element.style.backgroundColor = 'rgb(229 231 235)'; return true; } } Loading @@ -189,19 +200,19 @@ function validateAllCombination(){ let targetItemsSplit2 = children[j].id.split(',')[2]; if(validatePalanqueCombinate[targetItemsSplit].includes(targetItemsSplit2)){ counterCheck++; if(element.style.backgroundColor === 'red') element.style.backgroundColor = 'white'; if(element.style.backgroundColor === 'rgb(254 202 202)') element.style.backgroundColor = 'rgb(229 231 235)'; return true; } } element.style.backgroundColor = 'red'; element.style.backgroundColor = 'rgb(254 202 202)'; return false; } } } }else { element.style.backgroundColor = 'white'; element.style.backgroundColor = 'rgb(229 231 235)'; return false; } }); Loading Loading @@ -279,7 +290,7 @@ function fillZoneWithAlreadyExistingPalanque(diverList) { zoneStart.removeChild(diver); }else{ let palanque = document.createElement("div"); palanque.setAttribute("class", "border-2 p-4 zone"); palanque.setAttribute("class", "border text-center bg-gray-200 rounded-lg p-3 pb-20 zone"); palanque.setAttribute("id", "zone" + dgNumber); palanque.setAttribute("ondrop", "drop(event)"); palanque.setAttribute("ondragover", "allowDrop(event)"); Loading resources/views/dive_infos_palanque.blade.php +14 −5 Original line number Diff line number Diff line Loading @@ -57,18 +57,27 @@ class="bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded"> <p class="text-xl font-bold my-2">{{ $dive->DL_NAME }}@if (isset($dive->DS_MAX_DEPTH)) • {{ $dive->DS_MAX_DEPTH }}m @endif</p> </div> <div class="flex-1 p-4" id="zoneStart" ondrop="drop(event)" ondragover="allowDrop(event)"> <div class="flex-1 p-4"> <h3 class="text-xl font-bold mb-2">Plongeurs</h3> <div class="sticky top-6"> <p class="text-center italic">Déplacez les plongeurs vers les palanquées correspondantes</p> <div id="zoneStart" ondrop="drop(event)" ondragover="allowDrop(event)" class="text-center w-full p-4 pb-20 min-h-16 border rounded-lg bg-gray-200"> </div> </div> </div> <div class="flex-1 p-4"> <h3 class="text-xl font-bold mb-2">Palanquées</h3> <div class="p-2 grid grid-cols-2 md:grid-cols-3 gap-4" id="DropZone"> <div class="grid grid-cols-2 md:grid-cols-1 gap-4" id="DropZone"> </div> <button type='button' id="addPal">Add P</button> <button type='button' id="removePal">Remove P</button> <button type='button' id="validatePal">Val</button> <div class="my-3 text-center"> <button type='button' id="addPal" class="mt-1 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded">Ajouter une palanquée</button> <button type='button' id="validatePal" class="mt-1 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded">Valider</button> <button type='button' id="removePal" class="mt-1 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded">Supprimer une palanquée</button> </div> </div> </div> </x-layout> Loading Loading
app/Http/Controllers/ManualPalanqueeController.php +2 −1 Original line number Diff line number Diff line Loading @@ -5,6 +5,7 @@ use App\Models\DivingGroup; use App\Models\DivingSignUpModel; use App\Models\User; use Illuminate\Database\QueryException; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Log; Loading Loading @@ -37,7 +38,7 @@ public function store(Request $request){ } $responseData = ['message' => 'Data received successfully', 'additionalData' => $divingGroups]; return response()->json($responseData); } catch (\Illuminate\Database\QueryException $e) { } catch (QueryException $e) { return response()->json(['error' => 'Internal Server Error', 'errData' => $e], 500); } } Loading
public/js/Palanque/manualPalanque.js +24 −13 Original line number Diff line number Diff line Loading @@ -109,7 +109,7 @@ function isElementInList(element, list){ addPalanque.addEventListener("click", function(){ let palanque = document.createElement("div"); palanque.setAttribute("class", "border-2 p-4 zone"); palanque.setAttribute("class", "border text-center bg-gray-200 rounded-lg p-3 pb-20 zone"); palanque.setAttribute("id", "zone" + countZone); palanque.setAttribute("ondrop", "drop(event)"); palanque.setAttribute("ondragover", "allowDrop(event)"); Loading @@ -119,8 +119,13 @@ addPalanque.addEventListener("click", function(){ }); removePalanque.addEventListener("click", function(){ let nbZone = prompt("Veuillez entrer le numéro de la palanque à supprimer", "1") - 1; removePalanqueZone(nbZone); }); function removePalanqueZone(nbZone){ countZone--; let palanque = document.getElementById("zone" + countZone); let palanque = document.getElementById("zone" + nbZone); if(palanque.childElementCount > 0){ sizeT = palanque.childElementCount; for(let i = 0; i < sizeT; i++){ Loading @@ -129,7 +134,13 @@ removePalanque.addEventListener("click", function(){ } zoneList.splice(zoneList.length - 1, 1); palanque.parentElement.removeChild(palanque); }); let dropZones = document.querySelectorAll("div.zone"); dropZones.forEach(element => { if(element.id.split('zone')[1] > nbZone){ element.id = "zone" + (element.id.split('zone')[1] - 1); } }) } async function getDiver(ds_code){ let response = await fetch(`/api/dives/${ds_code}/divers`); Loading @@ -142,11 +153,11 @@ function proccessDiverData(data){ for(let i = 0; i < data.length; i++){ countDiver++; let diver = document.createElement("div"); diver.setAttribute("class", "w-fit h-8 border-2"); diver.setAttribute("class", "w-full h-8 border rounded p-1 m-1 bg-gray-300"); diver.setAttribute("id", 'item' + data[i].US_ID +',' + data[i].PRE_CODE + ',E' + data[i].US_TEACHING_LEVEL + ',' + data[i].US_ID); diver.setAttribute("draggable", "true"); diver.setAttribute("ondragstart", "drag(event)"); diver.innerHTML = data[i].US_FIRST_NAME + " " + data[i].US_NAME + " " + data[i].PRE_CODE + " " + data[i].US_TEACHING_LEVEL; diver.innerHTML = data[i].US_FIRST_NAME + " " + data[i].US_NAME.toUpperCase() + " - " + data[i].PRE_CODE + " - E" + data[i].US_TEACHING_LEVEL; zoneStart.appendChild(diver); } return data; Loading @@ -167,7 +178,7 @@ function validateAllCombination(){ element = document.getElementById("zone" + element.getZoneNumber()); if(element.hasChildNodes()){ if(element.childElementCount < 2 || element.childElementCount > 3){ element.style.backgroundColor = 'red'; element.style.backgroundColor = 'rgb(254 202 202)'; return false; } let children = element.childNodes; Loading @@ -175,8 +186,8 @@ function validateAllCombination(){ for(let j = 0; j < children.length; j++){ if(children[j].id.split(',')[1] === 'PA-60-GP'){ counterCheck++; if(element.style.backgroundColor === 'red') element.style.backgroundColor = 'white'; if(element.style.backgroundColor === 'rgb(254 202 202)') element.style.backgroundColor = 'rgb(229 231 235)'; return true; } } Loading @@ -189,19 +200,19 @@ function validateAllCombination(){ let targetItemsSplit2 = children[j].id.split(',')[2]; if(validatePalanqueCombinate[targetItemsSplit].includes(targetItemsSplit2)){ counterCheck++; if(element.style.backgroundColor === 'red') element.style.backgroundColor = 'white'; if(element.style.backgroundColor === 'rgb(254 202 202)') element.style.backgroundColor = 'rgb(229 231 235)'; return true; } } element.style.backgroundColor = 'red'; element.style.backgroundColor = 'rgb(254 202 202)'; return false; } } } }else { element.style.backgroundColor = 'white'; element.style.backgroundColor = 'rgb(229 231 235)'; return false; } }); Loading Loading @@ -279,7 +290,7 @@ function fillZoneWithAlreadyExistingPalanque(diverList) { zoneStart.removeChild(diver); }else{ let palanque = document.createElement("div"); palanque.setAttribute("class", "border-2 p-4 zone"); palanque.setAttribute("class", "border text-center bg-gray-200 rounded-lg p-3 pb-20 zone"); palanque.setAttribute("id", "zone" + dgNumber); palanque.setAttribute("ondrop", "drop(event)"); palanque.setAttribute("ondragover", "allowDrop(event)"); Loading
resources/views/dive_infos_palanque.blade.php +14 −5 Original line number Diff line number Diff line Loading @@ -57,18 +57,27 @@ class="bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded"> <p class="text-xl font-bold my-2">{{ $dive->DL_NAME }}@if (isset($dive->DS_MAX_DEPTH)) • {{ $dive->DS_MAX_DEPTH }}m @endif</p> </div> <div class="flex-1 p-4" id="zoneStart" ondrop="drop(event)" ondragover="allowDrop(event)"> <div class="flex-1 p-4"> <h3 class="text-xl font-bold mb-2">Plongeurs</h3> <div class="sticky top-6"> <p class="text-center italic">Déplacez les plongeurs vers les palanquées correspondantes</p> <div id="zoneStart" ondrop="drop(event)" ondragover="allowDrop(event)" class="text-center w-full p-4 pb-20 min-h-16 border rounded-lg bg-gray-200"> </div> </div> </div> <div class="flex-1 p-4"> <h3 class="text-xl font-bold mb-2">Palanquées</h3> <div class="p-2 grid grid-cols-2 md:grid-cols-3 gap-4" id="DropZone"> <div class="grid grid-cols-2 md:grid-cols-1 gap-4" id="DropZone"> </div> <button type='button' id="addPal">Add P</button> <button type='button' id="removePal">Remove P</button> <button type='button' id="validatePal">Val</button> <div class="my-3 text-center"> <button type='button' id="addPal" class="mt-1 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded">Ajouter une palanquée</button> <button type='button' id="validatePal" class="mt-1 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded">Valider</button> <button type='button' id="removePal" class="mt-1 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded">Supprimer une palanquée</button> </div> </div> </div> </x-layout> Loading