1const form = document.getElementById("form");2const results = document.getElementById("results");34const plates = [45, 35, 25, 10, 5, 2.5];56function calculateWeights(weight) {7 var neededWeights = new Array();89 if (weight < 45) {10 throw new Error("Weight is less than the bar");11 }1213 weight -= 45;14 weight /= 2;1516 for (const plate of plates) {17 if (weight == 0) {18 break;19 }2021 var needed = Math.floor(weight / plate);22 if (needed > 0) {23 neededWeights.push({ plate: plate, num: needed });24 weight -= needed * plate;25 }26 }2728 if (weight == 0) {29 return neededWeights;30 } else {31 throw new Error("That weight is impossible with normal plates");32 }33}3435function makePlateCount(weight, num) {36 li = document.createElement("li");3738 span = document.createElement("span");39 span.append("" + weight + " x " + num);40 li.append(span);4142 return li;43}4445form.addEventListener("submit", (event) => {46 event.preventDefault();4748 while (results.firstChild) {49 results.removeChild(results.firstChild);50 }5152 var userWeight = document.getElementById("weight");53 var weight =54 userWeight.value === undefined || userWeight.value === ""55 ? 056 : userWeight.value;5758 try {59 var weights = calculateWeights(weight);6061 ul = document.createElement("ul");62 for (const item of weights) {63 ul.append(makePlateCount(item.plate, item.num));64 }65 results.append(ul);66 } catch (error) {67 warning = document.createElement("p");68 warning.classList.add("warning");69 warning.append(error.message);70 results.append(warning);71 }7273 return false;74});