Aliendreamer

trucks exam prep

Feb 3rd, 2019
267
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function solve() {
  2.     const allTrucks=[];
  3.     const allTires=[];
  4.     let allFieldSets=document.querySelectorAll('fieldset');
  5.    Array.from(document.getElementsByTagName("button")).forEach(el=>{
  6.         el.addEventListener("click",(e)=>DoAction(e));
  7.     });
  8.  
  9.     function DoAction(e){
  10.  
  11.         let buttonName=e.target.innerHTML;
  12.        
  13.         switch(buttonName){
  14.             case "Add new truck":
  15.             CreateTruck();
  16.             break;
  17.             case "Add new tires":
  18.             CreateTyres();
  19.             break;
  20.             case "Go to work":
  21.             Work();
  22.             break;
  23.             case "End of the shift":
  24.             Report();
  25.             break;
  26.         }
  27.     }
  28.  
  29.     function CreateTruck(){
  30.         let plate=document.getElementById("newTruckPlateNumber").value;
  31.         let truckTires=document.getElementById("newTruckTiresCondition").value.split(' ').filter(Boolean).map(Number);
  32.         let newTruck={
  33.             "truckPlate":plate,
  34.             "Tires":truckTires,
  35.             "Miles":0
  36.         }
  37.         allTrucks.push(newTruck);  
  38.         let trucksDiv=allFieldSets[4].getElementsByTagName('div')[0];
  39.         let newTruckDiv=document.createElement("div");
  40.         newTruckDiv.innerHTML=newTruck.truckPlate;
  41.         newTruckDiv.setAttribute("class","truck");
  42.         trucksDiv.appendChild(newTruckDiv);
  43.         console.log(newTruck.truckPlate);
  44.     }  
  45.     function CreateTyres(){
  46.         let newTyres=document.getElementById("newTiresCondition").value.split(' ').filter(Boolean).map(Number);
  47.         allTires.push(newTyres);
  48.         let tyresDiv=allFieldSets[3].getElementsByTagName('div')[0];
  49.         let newTyreDiv=document.createElement("div");
  50.         newTyreDiv.setAttribute("class","tireSet");
  51.         newTyreDiv.textContent=newTyres.join(" ");
  52.  
  53.         tyresDiv.appendChild(newTyreDiv);        
  54.     }
  55.     function Work(){
  56.         let distance=+document.getElementById("distance").value;
  57.         let truckPlate=document.getElementById("workPlateNumber").value;
  58.         let truck=allTrucks.reduce((prev, curr)=>{ return (curr.truckPlate === truckPlate) ? curr : prev; }, null);
  59.        
  60.         if(truck===null){
  61.             return;
  62.         }
  63.         let tyreExhaust=Math.floor(distance/1000);
  64.         let enoughTyresLeft=truck.Tires.every(x=>x-tyreExhaust>=0);
  65.         if(enoughTyresLeft){
  66.             truck.Miles+=distance;
  67.             let newTyresLife=truck.Tires.map(x=>x-tyreExhaust);
  68.             truck.Tires=newTyresLife;
  69.             return;
  70.         }
  71.         if(!allTires.length){
  72.             return;
  73.         }        
  74.         let newTyreComplect=allTires.shift();
  75.         let tyresDiv=allFieldSets[3].getElementsByTagName('div')[0];
  76.         let divToRemove=document.getElementsByClassName("tireSet")[0];
  77.         tyresDiv.removeChild(divToRemove);
  78.         let refreshedTires=[];
  79.         let count=0;
  80.        for (let tire of truck.Tires) {
  81.           tire+=newTyreComplect[count];
  82.           refreshedTires.push(tire);
  83.        }
  84.        truck.Tires=refreshedTires;
  85.        enoughTyresLeft=truck.Tires.every(x=>x-tyreExhaust>=0);
  86.        if(enoughTyresLeft){
  87.            truck.Miles+=distance;
  88.            let newTyresLife=truck.Tires.map(x=>x-tyreExhaust);
  89.            truck.Tires=newTyresLife;
  90.            return;
  91.        }      
  92.     }  
  93.     function Report(){
  94.         let report="";
  95.         let reportField=document.querySelector("section textarea");
  96.         console.log("found the area");
  97.         for (i = 0; i < allTrucks.length; i++){
  98.             report+=`Truck ${allTrucks[i].truckPlate} has traveled ${allTrucks[i].Miles}.\n`
  99.         }
  100.         report+=`You have ${allTires.length} sets of tires left.\n`;
  101.         reportField.textContent=report;
  102.     }
  103. }
Advertisement
Add Comment
Please, Sign In to add comment