· 6 years ago · Jan 29, 2020, 02:52 PM
1var patientIdentifierForDelete = "";
2var patientIdentifierForEdit = "";
3var exerciseIdentifierForDelete = "";
4
5window.onload = function () {
6 if (window.location.href.indexOf("index.html") > 0) {
7 loadUsers(loadUsersIntoPatientList);
8 document.getElementById("submitNewPatient").addEventListener("click", addPatientsToDatabase);
9 document.getElementById("submitDeletePatient").addEventListener("click", deletePatientFromDatabase);
10 document.getElementById("submitEditPatient").addEventListener("click", editPatientInDatabase);
11 document.getElementById("submitSearchPatient").addEventListener("click", searchForPatientName);
12 } else {
13 loadExercises(loadExercisesIntoExerciseList);
14 const firstName = getUrlParameter('firstName')
15 const lastName = getUrlParameter('lastName')
16 document.getElementById("dynamicName").innerHTML = firstName + " " + lastName;
17 document.getElementById("submitNewExercise").addEventListener("click", addExerciseToDatabase);
18 document.getElementById("submitDeleteExercise").addEventListener("click", deleteExerciseFromDatabase); /*NEW*/
19 }
20};
21
22
23function loadUsersIntoPatientList(response) {
24 var parsedResponse = JSON.parse(response);
25
26 Object.keys(parsedResponse).forEach(function (key) {
27 let user = parsedResponse[key];
28 addRowToPatientList(user.firstName, user.lastName, user.creationDate, key);
29 });
30}
31
32function loadExercisesIntoExerciseList(response) {
33 console.log(response);
34 var parsedResponse = JSON.parse(response);
35
36 Object.keys(parsedResponse).forEach(function (key) {
37 let exercise = parsedResponse[key];
38
39 if (exercise.userId === getUrlParameter("userId")) {
40 addExerciseToExerciseList(exercise.date, exercise.note, key); // EDITED BY IVO
41 }
42 });
43}
44
45function sendRequestToFirebase(httpMethod, url, callback, dataToSend) { /*callback je metoda ktora ma jeden parameter a bude zavolana ked sa vratia data z firebasu, nikde nie je to ZAVOLANIE, iba on vie kedy dojde k tomu, ja neviem kedy k tomu dojde aby mohla byt zavolana*/
46 console.log("preparing request");
47
48 var xhr = new XMLHttpRequest();
49
50 xhr.onreadystatechange = function () {
51 if (xhr.readyState === 4) {
52 console.log("data received");
53 callback(xhr.response);
54 }
55 }
56
57 if (!dataToSend) {
58 dataToSend = '';
59 }
60 xhr.open(httpMethod, url, true);
61 xhr.send(dataToSend);
62 console.log("sent");
63}
64
65function callbackFilterUsers(response) {
66 var whatIsSearchedFor = document.getElementById("patient-name-input").value;
67 var parsedResponse = JSON.parse(response);
68
69 let searchNotInserted = !whatIsSearchedFor || whatIsSearchedFor.length === 0;
70 console.log("idem do cyklu")
71 Object.keys(parsedResponse).forEach(function (key) {
72 let user = parsedResponse[key];
73
74 let firstNAmeFind = user.firstName.toLowerCase().indexOf(whatIsSearchedFor.toLowerCase()) > -1;
75 let lastNameFind = user.lastName.toLowerCase().indexOf(whatIsSearchedFor.toLowerCase()) > -1;
76 if (searchNotInserted === true || (firstNAmeFind || lastNameFind)) {
77 deletePatientFromPatientListById(key);
78 addRowToPatientList(user.firstName, user.lastName, user.creationDate, key);
79 } else {
80 deletePatientFromPatientListById(key);
81 }
82 });
83}
84
85
86function searchForPatientName() {
87 loadUsers(callbackFilterUsers);
88}
89
90function loadUsers(callbackForReceivingUsers) {
91 sendRequestToFirebase('GET', "https://kartoteka-project.firebaseio.com/users.json", callbackForReceivingUsers)
92}
93
94
95function loadExercises(callbackForReceivingExercises) {
96 sendRequestToFirebase('GET', "https://kartoteka-project.firebaseio.com/exercises.json", callbackForReceivingExercises)
97}
98
99function addPatientsToDatabase() {
100 var userFromForm = getUserFromForm();
101 var userIdentifier = Date.parse(new Date());
102
103 var userFromFormAsString = JSON.stringify(userFromForm);
104 sendRequestToFirebase('PUT', "https://kartoteka-project.firebaseio.com/users/" + userIdentifier + ".json", function () {
105 addRowToPatientList(userFromForm.firstName, userFromForm.lastName, userFromForm.creationDate, userIdentifier);
106 }, userFromFormAsString);
107}
108
109function addExerciseToDatabase() {
110 var exerciseFromForm = getExerciseFromForm();
111 var exerciseIdentifier = Date.parse(new Date()); /*naviazat cloveka na cvicenie ID*/
112
113 exerciseFromForm.userId = getUrlParameter("userId");
114
115 const exerciseFromFormAsString = JSON.stringify(exerciseFromForm);
116 console.log(exerciseFromFormAsString);
117 sendRequestToFirebase('PUT', "https://kartoteka-project.firebaseio.com/exercises/" + exerciseIdentifier + ".json", function () {
118 addExerciseToExerciseList(exerciseFromForm.date, exerciseFromForm.note, exerciseIdentifier); // EDITED BY IVO
119 }, exerciseFromFormAsString);
120}
121
122function addRowToPatientList(firstName, lastName, creationDate, patientId) {
123 var table = document.getElementById("patient-list");
124 var row = table.insertRow(1);
125 row.id = 'row-' + patientId; //v premennej row sme vlastne dali riadok, riadok je html element a mozeme mu z JS pridat ID = '' alebo cokolvek htmlkove, pozri do F12
126
127 var cell1 = row.insertCell(0);
128 var cell2 = row.insertCell(1);
129 var cell3 = row.insertCell(2);
130 var cell4 = row.insertCell(3);
131 console.log(firstName);
132 cell1.innerHTML = '<p>' + firstName + '</p>';
133 cell2.innerHTML = lastName;
134 cell3.innerHTML = creationDate;
135 cell4.innerHTML = '<a style="color:black;font-size:9px;" href="" data-toggle="modal" data-target="#exampleModalEdit" onClick="passEditId(' + patientId + ');">Editovať |</a>' + '<a style="color:black;font-size:9px;" href="" data-toggle="modal" data-target="#staticBackdrop" onClick="passDeleteId(' + patientId + ');">Vymazať |</a>' + '<a style="color:black;font-size:9px;" href="./exercise.html?firstName=' + firstName + '&lastName=' + lastName + '&userId=' + patientId + '">Zobraziť cvičenia</a>';
136}
137
138function passEditId(patientId) {
139 patientIdentifierForEdit = patientId; // globalna premenna zmenili sme jej hodnotu
140 sendRequestToFirebase('GET', "https://kartoteka-project.firebaseio.com/users/" + patientIdentifierForEdit + ".json", fillModalForEditing)
141}
142/*každa URL musi koncit.json je to v API dokumntacii firebasu*/
143/*call back co sa musi stat ked sa nieco dokonci*/
144
145function fillModalForEditing(response) { /*response, ktoru mi firebase posiela je furt string*/
146 var parsedEditedDataToModal = JSON.parse(response); /*ten string si musim naparsovat vzdy*/
147 document.getElementById("edit-patient-first-name").value = parsedEditedDataToModal.firstName;/*vlozit do toho elementu uz z parsu to pomenovanie*/
148 document.getElementById("edit-patient-last-name").value = parsedEditedDataToModal.lastName;
149 document.getElementById("edit-create-date").value = parsedEditedDataToModal.creationDate;
150 document.getElementById("edit-phone-number").value = parsedEditedDataToModal.phoneNumber;
151 document.getElementById("edit-add-note").value = parsedEditedDataToModal.note;
152}
153
154
155
156
157function editPatientInDatabase() {
158 var userFromEditForm = getUserFromEditedForm();
159 var dataToSend = JSON.stringify(userFromEditForm);
160 sendRequestToFirebase('PUT', "https://kartoteka-project.firebaseio.com/users/" + patientIdentifierForEdit + ".json", editPatientInPatientList, dataToSend);//callback co sa ma stat ked sa to vykonalo
161}
162
163
164
165function editPatientInPatientList(responseData)/*bude tam iba string v tom jsone pacienta*/ {
166 var parsedEditedData = JSON.parse(responseData);
167 console.log(parsedEditedData);
168 deletePatientFromPatientListById(patientIdentifierForEdit);
169 addRowToPatientList(parsedEditedData.firstName, parsedEditedData.lastName, parsedEditedData.creationDate, patientIdentifierForEdit);
170 alert("Údaje o pacientovi boli úspešne zmenené.");
171}
172
173function passDeleteId(patientId) {
174 patientIdentifierForDelete = patientId; // globalna premenna zmenili sme jej hodnotu
175}
176
177function deletePatientFromDatabase() {
178 sendRequestToFirebase('DELETE', "https://kartoteka-project.firebaseio.com/users/" + patientIdentifierForDelete + ".json", deletePatientFromPatientList);
179}
180
181function deletePatientFromPatientList(responseData) {
182 deletePatientFromPatientListById(patientIdentifierForDelete);
183}
184
185function deletePatientFromPatientListById(patientId) {
186 var rowToDelete = document.getElementById("row-" + patientId);
187 if (rowToDelete) {
188 rowToDelete.parentElement.removeChild(rowToDelete);
189 }
190}
191
192function getUrlParameter(name) {
193 name = name.replace(/[\[]/, '\\[').replace(/[\]]/, '\\]');
194 var regex = new RegExp('[\\?&]' + name + '=([^&#]*)');
195 var results = regex.exec(location.search);
196 return results === null ? '' : decodeURIComponent(results[1].replace(/\+/g, ' '));
197};
198
199
200
201function addExerciseToExerciseList(date, note,exerciseId) {
202 var table = document.getElementById("planned-exercises-list");
203 var currrentDateTime = new Date();
204 var exerciseDate = new Date(date);
205 row.id = 'row-' + exerciseId; //KED TO ZAKOMENTUJEM TAK ASPON mam naspat riadky v tabulke ale vymazanie prosto nefunguje EDITED BY IVO
206 if (currrentDateTime > exerciseDate) {
207 table = document.getElementById("expired-exercises-list");
208 }
209
210 var row = table.insertRow(1);
211 var cell1 = row.insertCell(0);
212 var cell2 = row.insertCell(1);
213 var cell3 = row.insertCell(2);
214 cell1.innerHTML = date;
215 cell2.innerHTML = note;
216 cell3.innerHTML = '<a style="color:black;font-size:9px;" href="">Editovať |</a>' + '<a style="color:black;font-size:9px;" href="" data-toggle="modal" data-target="#staticBackdropExercise" onClick="passDeleteIdOfExercise(' + exerciseId + ');">Vymazať</a>';
217};
218
219function getUserFromEditedForm() {
220 let formPatientFirstName = document.getElementById("edit-patient-first-name").value;
221 let formPatientLastName = document.getElementById("edit-patient-last-name").value;
222 let formCreateDate = document.getElementById("edit-create-date").value;
223 let formPhoneNumber = document.getElementById("edit-phone-number").value;
224 let formAddNote = document.getElementById("edit-add-note").value;
225
226 return { /*vrati objekt*/
227 firstName: formPatientFirstName,
228 lastName: formPatientLastName,
229 creationDate: formCreateDate,
230 phoneNumber: formPhoneNumber,
231 note: formAddNote
232 };
233}
234
235function getUserFromForm() {
236 let formPatientFirstName = document.getElementById("patient-first-name").value;
237 let formPatientLastName = document.getElementById("patient-last-name").value;
238 let formCreateDate = document.getElementById("create-date").value;
239 let formPhoneNumber = document.getElementById("phone-number").value;
240 let formAddNote = document.getElementById("add-note").value;
241
242 return { /*vrati objekt*/
243 firstName: formPatientFirstName,
244 lastName: formPatientLastName,
245 creationDate: formCreateDate,
246 phoneNumber: formPhoneNumber,
247 note: formAddNote
248 };
249}
250
251function getExerciseFromForm() {
252 var formExerciseDate = document.getElementById("date").value;
253 var formExerciseNote = document.getElementById("note").value;
254
255 return {
256 date: formExerciseDate,
257 note: formExerciseNote,
258 };
259}
260
261function passDeleteIdOfExercise(exerciseId) {
262 exerciseIdentifierForDelete = exerciseId; // globalna premenna zmenili sme jej hodnotu
263}
264
265function deleteExerciseFromDatabase() {
266 sendRequestToFirebase('DELETE', "https://kartoteka-project.firebaseio.com/exercises/" + exerciseIdentifierForDelete + ".json", deleteExerciseFromExerciseList);
267}
268
269function deleteExerciseFromExerciseList(responseData) {
270 deleteExerciseFromExerciseListById(exerciseIdentifierForDelete);
271}
272
273function deleteExerciseFromExerciseListById(exerciseId) {
274 var exerciseRowToDelete = document.getElementById("row-" + exerciseId);
275 if (exerciseRowToDelete) {
276 exerciseRowToDelete.parentElement.removeChild(exerciseRowToDelete);
277 }
278}