-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.js
174 lines (147 loc) · 4.02 KB
/
main.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
// ------Variables------
var form = document.getElementById("add-frm");
var ntitle = document.getElementById("n-title");
var nbody = document.getElementById("n-body");
var items = document.getElementById("items");
var tableDiv = document.getElementById("tbl-div");
var search = document.getElementById("srch");
var resetBtn = document.getElementById("reset");
var noteCount = 0;
var newNote = "";
var isUpdate = false;
var record = "";
var note = "";
var body = "";
// ------Events------
// for page loads
window.onload = updateTable;
// for form submit
form.addEventListener("submit", addNote);
// for search
search.addEventListener("keyup", searchNote);
// for remove
items.addEventListener("click", removeNote);
// for view and update
items.addEventListener("click", viewNUpdateNote);
// for reset
resetBtn.addEventListener("click", resetAll);
// ------Functions------
// update table
function updateTable() {
// display the table when notes get added
if (noteCount > 0) {
tableDiv.style.display = "";
// update note
if (isUpdate) {
note.firstChild.textContent = ntitle.value;
note.lastChild.textContent = nbody.value;
// Reset update and note count
isUpdate = false;
noteCount--;
}
// add a new note
else {
items.appendChild(newNote);
}
} else {
tableDiv.style.display = "none";
}
}
// add new note to the table
// Add Note
function addNote(e) {
// stop initial behaviour
e.preventDefault();
// validation for empty fields
if (ntitle.value == "" || nbody.value == "") {
alert("Please fill in all fields");
} else {
// new tr
var tr = document.createElement("tr");
tr.className = "item";
// new td for title and body
var td1 = document.createElement("td");
td1.appendChild(document.createTextNode(ntitle.value));
var span = document.createElement("span");
span.className = "note-body";
span.appendChild(document.createTextNode(nbody.value));
td1.appendChild(span);
// new td for view
var td2 = document.createElement("td");
td2.className = "btcellv";
var btn1 = document.createElement("button");
btn1.appendChild(document.createTextNode("View"));
btn1.setAttribute("id", "vw");
td2.appendChild(btn1);
// new td for delete
var td3 = document.createElement("td");
td3.className = "btcelld";
var btn2 = document.createElement("button");
btn2.appendChild(document.createTextNode("Delete"));
btn2.setAttribute("id", "del");
td3.appendChild(btn2);
// add all tds to tr
tr.appendChild(td1);
tr.appendChild(td2);
tr.appendChild(td3);
// increment note count
noteCount++;
// set new note
newNote = tr;
// add or update the note of the table
updateTable();
}
// reset input fields
resetAll();
}
// search notes
function searchNote(e) {
// text to lowercase
var searchTxt = e.target.value.toLowerCase();
// get list
var list = items.getElementsByClassName("item");
// convert to array
var listArr = Array.from(list);
listArr.forEach(function (item) {
// get title
var noteTitle = item.firstChild.textContent;
// match
if (noteTitle.toLowerCase().indexOf(searchTxt) != -1) {
item.style.display = "";
} else {
item.style.display = "none";
}
});
}
// remove note
function removeNote(e) {
if (e.target.id == "del") {
if (confirm("Are you sure?")) {
// delete notes
var tr = e.target.parentElement.parentElement;
items.removeChild(tr);
noteCount--;
if (noteCount == 0) {
updateTable();
}
}
}
}
// view and update note
function viewNUpdateNote(e) {
if (e.target.id == "vw") {
// get the element values and update input fields
record = e.target.parentElement.parentElement;
note = record.firstChild;
ntitle.value = note.firstChild.textContent;
nbody.value = note.lastChild.textContent;
isUpdate = true;
}
}
// reset all
function resetAll() {
ntitle.value = "";
nbody.value = "";
isUpdate = false;
newNote = "";
}