View difference between Paste ID: jhR0Rc69 and KyAJNmxz
SHOW: | | - or go back to the newest paste.
1
function solve() {
2
3
  const findTagFromParent = (parent, tag, text) => {
4
    const parents = document.getElementsByClassName(parent);
5
6
    for (parent of parents) {
7
      const descendants = parent.getElementsByTagName(tag);
8
      if (descendants.length) {
9
        const button = descendants[0];
10
        if (button.innerHTML === text) {
11
          return button;
12
        }
13
      }
14
    }
15
16
    return undefined;
17
  };
18
19
20
 
21
22
  const el = (tag, content, attributes) => {
23
    const element = document.createElement(tag);
24
    if (attributes) {
25
      //Ако са подадени атрибути (ID, className, etc.) ги закачаме към елемента
26
      Object.assign(element, attributes);
27
    }
28
    if (Array.isArray(content)) {
29
      //Ако създаваме например Div, в който трябва да има други елементи - p, span, etc., ги закачаме като масив
30
      content.forEach(appendEl);
31
    } else {
32
      //Ако не е масив, просто закачаме текста или числото, което сме подали
33
      appendEl(content);
34
    }
35
36
    function appendEl(node) {
37
      if (typeof node == "string" || typeof node == "number") {
38
        node = document.createTextNode(node);
39
      }
40
      element.appendChild(node);
41
    }
42
43
    return element;
44
  };
45
46
  const validateAndAdd = (e) => {
47
    const lectureName = document.getElementsByName("lecture-name")[0].value;
48
    const lectureDate = document.getElementsByName("lecture-date")[0].value;
49
    const lectureModule = document.getElementsByName("lecture-module")[0].value;
50
51
    if (
52
      lectureName === "" ||
53
      lectureDate === "" ||
54
      lectureModule === "Select module"
55
    )
56
      return;
57
58
    const title = `${lectureModule.toUpperCase()}-MODULE`;
59
60
    const chosenDate = new Date(lectureDate);
61
62
    gayFormatDate =
63
      chosenDate.getFullYear() +
64
      "/" +
65
      ("0" + chosenDate.getDate()).slice(-2) +
66
      "/" +
67
      ("0" + (chosenDate.getMonth() + 1)).slice(-2) +
68
      " - " +
69
      chosenDate.getHours() +
70
      ":" +
71
      ("0" + chosenDate.getMinutes()).slice(-2);
72
    const date = gayFormatDate;
73
74
    const module = findTagFromParent("module", "h3", title);
75
76
    const h4 = el("h4", `${lectureName} - ${date}`);
77
    const button = el("button", "Del", { className: "red" });
78
    const li = el("li", [h4, button], { className: "flex" });
79
80
    let ul;
81
82
    if (!module) {
83
      const modules = document.getElementsByClassName("modules")[0];
84
      const h3 = el("h3", title);
85
      ul = el("ul", li);
86
87
      const newModule = el("div", [h3, ul], { className: "module" });
88
      modules.appendChild(newModule);
89
    } else {
90
      ul = module.parentNode.getElementsByTagName("ul")[0];
91
92
      ul.appendChild(li);
93
    }
94
95
    e.preventDefault();
96
  };
97
98
99
  const addButton = findTagFromParent("form-control", "button", "Add");
100
101
  if (!addButton) {
102
    return;
103
  }
104
  addButton.addEventListener("click", validateAndAdd);
105
  
106
107
  
108
}
109