Aliendreamer

stadion js prep

Feb 2nd, 2019
263
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function solve() {
  2.     // TODO
  3.     let sum=0;
  4.     // probably can get it done with one function for tickets with nearest section and then grab its classname but i like it this way maybe longer but cleaner for read and debug
  5.     let allTickets={
  6.           "Litex":[],
  7.           "Levski":[],
  8.           "Vip":[]
  9.     }
  10.      Array.from(document.querySelectorAll(".Litex table tbody tr td button"))
  11.      .forEach(element => {element.addEventListener('click',(ev)=> LitexTickets(ev));});
  12.      
  13.      Array.from(document.querySelectorAll(".Levski table tbody tr td button"))
  14.       .forEach(element => {element.addEventListener('click',(ev)=> LevskiTickets(ev));});
  15.  
  16.      Array.from(document.querySelectorAll(".VIP table tbody tr td button"))
  17.       .forEach(element => {element.addEventListener('click',(ev)=> VipTickets(ev));});
  18.    
  19.      document.querySelector('#summary button').addEventListener("click",Report);
  20.  
  21.     const spanDiv=document.querySelector('#summary span');
  22.     function LitexTickets(ev){
  23.         const rows = document.querySelectorAll('.Litex table tr');
  24.         const rowsArray = Array.from(rows);      
  25.         const rowIndex = rowsArray.findIndex(row => row.contains(ev.target));
  26.         const columns = Array.from(rowsArray[rowIndex].querySelectorAll('.Litex table td'));
  27.         const columnIndex = columns.findIndex(column => column.contains(ev.target));
  28.         ProcessTickets(ev,"Litex",columnIndex);
  29.       }
  30.       function LevskiTickets(ev){
  31.         const rows = document.querySelectorAll('.Levski table tr');
  32.         const rowsArray = Array.from(rows);      
  33.         const rowIndex = rowsArray.findIndex(row => row.contains(ev.target));
  34.         const columns = Array.from(rowsArray[rowIndex].querySelectorAll('.Levski table td'));
  35.         const columnIndex = columns.findIndex(column => column.contains(ev.target));
  36.         ProcessTickets(ev,"Levski",columnIndex);
  37.       }
  38.       function VipTickets(ev){
  39.         const rows = document.querySelectorAll('.VIP table tr');
  40.         const rowsArray = Array.from(rows);      
  41.         const rowIndex = rowsArray.findIndex(row => row.contains(ev.target));
  42.         const columns = Array.from(rowsArray[rowIndex].querySelectorAll('.VIP table td'));
  43.         const columnIndex = columns.findIndex(column => column.contains(ev.target));
  44.         ProcessVipTickets(ev,"Vip",columnIndex);
  45.       }
  46.       function ProcessVipTickets(e,team,index){
  47.         let seat=Number(e.target.innerHTML);
  48.         let sector=index==0?'A':index==1?'B':'C';
  49.         let seatCode=sector+seat;
  50.         let taken=allTickets[team].includes(seatCode);
  51.         let textArea=document.getElementById("output");
  52.         let result='';
  53.      
  54.         if(taken){
  55.           result=` Seat ${seat} in zone ${team} sector ${sector} is unavailable.\n`;
  56.         }
  57.         else{
  58.           allTickets[team].push(seatCode);
  59.           e.target.setAttribute("style", "background-color:rgb(255,0,0)");
  60.           let price= index==0?25:index==1?15:10;
  61.           sum+=price;
  62.           result=` Seat ${seat} in zone ${team} sector ${sector} was taken.\n`;
  63.         }
  64.        textArea.value+=result;
  65.         console.log(seat);
  66.       }
  67.     function ProcessTickets(e,team,index){
  68.       let seat=Number(e.target.innerHTML);
  69.       let sector=index==0?'A':index==1?'B':'C';
  70.       let seatCode=sector+seat;
  71.       let taken=allTickets[team].includes(seatCode);
  72.       let textArea=document.getElementById("output");
  73.       let result='';      
  74.       if(taken){
  75.         result=` Seat ${seat} in zone ${team} sector ${sector} is unavailable.\n`;
  76.       }
  77.       else{
  78.         allTickets[team].push(seatCode);
  79.         e.target.setAttribute("style", "background-color:rgb(255,0,0)");
  80.         let price= index==0?10:index==1?7:5;
  81.         sum+=price;
  82.         result=` Seat ${seat} in zone ${team} sector ${sector} was taken.\n`;
  83.       }
  84.      textArea.value+=result;
  85.       console.log(seat);
  86.     }
  87.  
  88.     function Report(){
  89.       let allFans=0;    
  90.       for (const value of Object.values(allTickets)) {
  91.         allFans+=value.length;
  92.        }
  93.  
  94.       let result=`${sum} leva, ${allFans} fans.`
  95.       spanDiv.textContent= result;    
  96.     }
  97. }
Advertisement
Add Comment
Please, Sign In to add comment