Advertisement
bobo_bobkata

Untitled

Oct 14th, 2019
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.72 KB | None | 0 0
  1. let priceMap = ((type) => {
  2. if (type === "online") {
  3. return {
  4. "js-fundamentals": 170 * 0.94,
  5. "js-advanced": 180 * 0.94,
  6. "js-applications": 190 * 0.94,
  7. "js-web": 490 * 0.94,
  8. };
  9. } else {
  10. return {
  11. "js-fundamentals": 170,
  12. "js-advanced": 180,
  13. "js-applications": 190,
  14. "js-web": 490,
  15. };
  16. }
  17. })();
  18.  
  19. function solve() {
  20. let listCourses = document.querySelector("#myCourses > div.courseBody > ul");
  21.  
  22. function buttonAction() {
  23. let type = "";
  24. let selectedOptions = [];
  25. Array
  26. .from(document.querySelectorAll("input"))
  27. .filter(el => el.checked === true)
  28. .forEach(el => el.value.includes("js") ? selectedOptions.push(el.value) : type = el.value);
  29.  
  30. let price = Math.floor(calculatePrice(selectedOptions));
  31. addToHTMLList(selectedOptions);
  32.  
  33. let priceForm = document.querySelector("#myCourses > div.courseFoot > p");
  34. let currentPrice = Number(priceForm.innerHTML.split(" ")[1]);
  35. let sum = currentPrice + price;
  36. priceForm.innerHTML = `Cost: ${sum}.00 BGN`;
  37. }
  38.  
  39. function addToHTMLList(selectedOptions) {
  40. selectedOptions.forEach(el => addToCourse(el));
  41. }
  42.  
  43. function transformName(rawName) {
  44. let name = rawName.split("-")[1];
  45. return `JS-${name.charAt(0).toUpperCase() + name.slice(1)}`;
  46. }
  47.  
  48. function addToCourse(courseName) {
  49. if (courseName !== "HTML and CSS") {
  50. courseName = transformName(courseName);
  51. }
  52. let applications = document.createElement("li");
  53. applications.innerHTML = courseName;
  54. listCourses.appendChild(applications);
  55. }
  56.  
  57. function calculatePrice(selectedOptions) {
  58. let coursesToAdd = selectedOptions.slice(0, selectedOptions.length);
  59. let price = 0;
  60. if (coursesToAdd.indexOf("js-fundamentals") !== -1 && coursesToAdd.indexOf("js-advanced") !== -1) {
  61. price += priceMap[coursesToAdd.shift()] + (priceMap[coursesToAdd.shift()] * 0.90);
  62. if (coursesToAdd.indexOf("js-applications") !== -1) {
  63. price = (price + priceMap[coursesToAdd.shift()]) * 0.94;
  64. }
  65. if (coursesToAdd.length === 1) {
  66. price += priceMap[coursesToAdd.shift()];
  67. selectedOptions.push('HTML and CSS');
  68. }
  69. }
  70. while (coursesToAdd.length > 0) {
  71. price += priceMap[coursesToAdd.shift()];
  72. }
  73. return price;
  74. }
  75.  
  76. document.querySelector("#availableCourses > div.courseFoot > button").addEventListener("click", buttonAction);
  77. }
  78.  
  79. solve();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement