Advertisement
viligen

hellsKitchen

May 29th, 2022
765
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function solve() {
  2.     document.querySelector("#btnSend").addEventListener("click", onClick);
  3.  
  4.     function onClick() {
  5.         let restRegistry = [];
  6.  
  7.         let inputArr = JSON.parse(
  8.             document.querySelector("#inputs textarea").value
  9.         );
  10.  
  11.         for (let entry of inputArr) {
  12.             let [rName, wData] = entry.split(" - ");
  13.  
  14.             if (findByName(rName)) {
  15.                 let restaurantObj = findByName(rName);
  16.                 //  console.log(restaurantObj);
  17.                 for (let w of wData.split(", ")) {
  18.                     let [wName, wSalary] = w.split(" ");
  19.  
  20.                     restaurantObj.workers[wName] = Number(wSalary);
  21.                 }
  22.             } else {
  23.                 restFactory(rName, wData);
  24.             }
  25.         }
  26.  
  27.         let bestR = restRegistry.sort((a, b) => b.average - a.average)[0];
  28.  
  29.         let elRest = document.querySelector("#bestRestaurant p");
  30.         elRest.textContent = `Name: ${
  31.             bestR.name
  32.         } Average Salary: ${bestR.average.toFixed(
  33.             2
  34.         )} Best Salary: ${bestR.bestSalaray.toFixed(2)}`;
  35.  
  36.         let bestWorkers = Object.keys(bestR.workers).sort(
  37.             (a, b) => bestR.workers[b] - bestR.workers[a]
  38.         );
  39.  
  40.         let elWorkers = document.querySelector("#workers p");
  41.         let resultText = "";
  42.         for (let key of bestWorkers) {
  43.             resultText += `Name: ${key} With Salary: ${bestR.workers[key]} `;
  44.         }
  45.  
  46.         elWorkers.textContent = resultText;
  47.  
  48.         function findByName(name) {
  49.             let searchedR = restRegistry.filter((r) => r.name == name);
  50.             if (searchedR) {
  51.                 return searchedR[0];
  52.             }
  53.         }
  54.         function restFactory(name, workersData) {
  55.             const newRobj = {
  56.                 name: name,
  57.                 workers: {},
  58.  
  59.                 get average() {
  60.                     let salaries = Object.values(this.workers);
  61.                     return salaries.reduce((a, b) => a + b) / salaries.length;
  62.                 },
  63.                 get bestSalaray() {
  64.                     let sorted = Object.keys(this.workers).sort(
  65.                         (a, b) => this.workers[b] - this.workers[a]
  66.                     );
  67.  
  68.                     return this.workers[sorted[0]];
  69.                 },
  70.             };
  71.             const workersD = workersData.split(", ");
  72.             for (let worker of workersD) {
  73.                 let [wName, wSalary] = worker.split(" ");
  74.                 newRobj.workers[wName] = Number(wSalary);
  75.             }
  76.             restRegistry.push(newRobj);
  77.         }
  78.     }
  79. }
  80.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement