Commit 0eb504fb authored by Alenso Lopes's avatar Alenso Lopes
Browse files

feat: ajax request to send data to the php Controller

parent 55e0877a
Loading
Loading
Loading
Loading
+7 −1
Changes for app/Http/Controllers/ManualPalanqueeController.php: 7 added lines, 1 removed line.
Original line number Diff line number Diff line
@@ -7,10 +7,16 @@
class ManualPalanqueeController extends Controller
{
    public function show(){
        return view('palanque_manuel');
        $token = csrf_token();
        return view('palanque_manuel', compact('token'));
    }

    public function index(){
        
    }

    public function store(Request $request){
        $data = $request->json()->all();
        return response()->json(['message' => 'Data received successfully'], 200);
    }
}
+35 −16
Changes for public/js/Palanque/manualPalanque.js: 35 added lines, 16 removed lines.
Original line number Diff line number Diff line
@@ -33,6 +33,7 @@ const validatePalanque = document.getElementById("validatePal");
let countZone = 2;
let countDiver = 5;
let zoneList = [new DropZoneClass(0), new DropZoneClass(1), new DropZoneClass(2)];
let counterCheck = 0;

function allowDrop(event) {
  event.preventDefault();
@@ -131,15 +132,16 @@ let validatePalanqueCombinate = {
};

function validateAllCombination(){
  let val = zoneList.forEach(element => {
  zoneList.forEach(element => {
    element = document.getElementById("zone" + element.getZoneNumber());
    if(element.hasChildNodes()){
      if(element.childElementCount < 2)
        return false;
      let children = element.childNodes;
      console.log(children);
      for(let i = 0; i < children.length; i++){
        let targetItemsSplit = children[i].id.split(',')[1];
        for(targetItemsSplit in validatePalanqueCombinate){
          for(let j = i + 1; j < children.length; j++){
          for(let j = 0; j < children.length; j++){
            let targetItemsSplit2 = children[j].id.split(',')[1];
            console.log(targetItemsSplit2);
            if(validatePalanqueCombinate[targetItemsSplit].includes(targetItemsSplit2)){
@@ -148,28 +150,18 @@ function validateAllCombination(){
                element.style.backgroundColor = 'white';
              return true;
              //TODO VERIF E1 -6metres
            }else{
            }
          }
          console.log("ko");
          element.style.backgroundColor = 'red';
          return false;
        }
      }
    }
      }
    }else{
      if(element.className === 'border-2 p-4'){
          element.style.backgroundColor = 'red';
        }
    }
  });
  console.log('vAL' + val);
}
validatePalanque.addEventListener("click", function(){
  if(validateAllCombination()){
    console.log("ok");
  }else
    console.log("ko");
  console.log(returnValueToPhp());
  sendPalanque();
});

function returnValueToPhp() {
@@ -190,10 +182,37 @@ function returnValueToPhp(){
function sendPalanque() {
  let palanqueList = returnValueToPhp();
  let palanqueListJson = JSON.stringify(palanqueList);
  let csrfToken = document.querySelector('meta[name="csrf-token"]').getAttribute('content');

  let xhr = new XMLHttpRequest();
  xhr.open('POST', '/api/palanques', true);
  xhr.setRequestHeader("Content-Type", "application/json");
  xhr.setRequestHeader('X-CSRF-TOKEN', csrfToken);
  xhr.onreadystatechange = function () {
    if (xhr.readyState === XMLHttpRequest.DONE) {
      if (xhr.status === 200) {
        console.log("Request successful");
        const responseData = JSON.parse(xhr.responseText);

      // Check if a 'redirect' property exists in the response
        if (responseData.redirect) {
          // Redirect to the URL specified in the response
          window.location.href = responseData.redirect;
        } else {
          console.error("Invalid response format - missing 'redirect' property");
        }
      } else {
        console.error("Request failed");
      }
    }
  };
  xhr.send(palanqueListJson);
  console.log("send");
}


setInterval(() => {
  validateAllCombination();
}, 5000);

getDiver('DS1');
+1 −0
Changes for resources/views/palanque_manuel.blade.php: 1 added line, 0 removed lines.
Original line number Diff line number Diff line
<meta name="csrf-token" content="{{ $token }}">
<x-layout>
  <div class="flex justify-around m-5">
  <div class="p-2 grid grid-cols-5">
+2 −0
Changes for routes/api.php: 2 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -20,3 +20,5 @@
Route::middleware('App\Http\Middleware\rightChecker')->get('/user', function (Request $request) {
    return $request->user();
});

Route::post('/palanques', [App\Http\Controllers\ManualPalanqueeController::class, 'store']);
 No newline at end of file