Advertisement
Guest User

Sorting Completed

a guest
Jun 8th, 2019
374
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function coffeeStorage() {
  2.     let textarea = JSON.parse(document.querySelector("textarea").value);
  3.     let [report, inspection] = document.getElementsByTagName("p");
  4.  
  5.     let brands = {};
  6.     for (let tokens of textarea) {
  7.         let [command, brand, subBrand, date, quantity] = tokens.split(", ");
  8.  
  9.         if (command === "IN") {
  10.             if (!brands[brand]) {
  11.                 brands[brand] = {};
  12.             }
  13.             if (!brands[brand][subBrand]) {
  14.                 brands[brand][subBrand] = { date, quantity: Number(quantity) };
  15.             }
  16.             if (brands[brand][subBrand].date === date) {
  17.                 brands[brand][subBrand] = { date, quantity: Number(quantity) };
  18.             }
  19.             if (brands[brand][subBrand].date < date) {
  20.                 brands[brand][subBrand] = { date, quantity: Number(quantity) };
  21.             }
  22.             // console.log(brands[brand])
  23.             // console.log(brands[brand][subBrand])
  24.         } else if (command === "OUT") {
  25.             if (brands[brand] &&
  26.                 brands[brand][subBrand] &&
  27.                 brands[brand][subBrand].date > date &&
  28.                 brands[brand][subBrand].quantity >= Number(quantity)) {
  29.  
  30.                 brands[brand][subBrand].quantity -= Number(quantity);
  31.             }
  32.         } else if (command === "REPORT") {
  33.             let output = [];
  34.  
  35.             for (let [key, value] of Object.entries(brands)) {
  36.                 let str = `${key}:`
  37.                 for (let [k, v] of Object.entries(value)) {
  38.                     str += ` ${k} - ${v.date} - ${v.quantity}.`
  39.                 }
  40.                 output.push(str);
  41.             }
  42.             report.innerHTML = output.join("<br>")
  43.  
  44.         } else if (command === "INSPECTION") {
  45.             let output = [];
  46.  
  47.             let sortAlphabetically = Object.entries(brands).sort((a, b) => a[0].localeCompare(b[0]));
  48.             for (let [key, value] of sortAlphabetically) {
  49.                 let str = `${key}:`
  50.                 let sortQuantity = Object.entries(value).sort((a, b) => b[1].quantity - a[1].quantity)
  51.                 for (let [k, v] of sortQuantity) {
  52.                     str += ` ${k} - ${v.date} - ${v.quantity}.`
  53.                 }
  54.                 output.push(str);
  55.             }
  56.             inspection.innerHTML = output.join("<br>")
  57.         }
  58.     }
  59. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement