Guest User

Untitled

a guest
Jun 30th, 2018
142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.48 KB | None | 0 0
  1. const auth = firebase.auth();
  2. const database = firebase.database();
  3.  
  4. function signUp() {
  5. let email = document.getElementById('email').value;
  6. let username = document.getElementById('username').value;
  7. let password = document.getElementById('password').value;
  8. let confirmPassword = document.getElementById('confirm-password').value;
  9.  
  10. if(confirmPassword === password){
  11. auth.createUserWithEmailAndPassword(email, password)
  12. .then(() => {
  13. let userSignedIn = auth.currentUser;
  14. userSignedIn.updateProfile({
  15. displayName: username,
  16. emailVerified: true
  17. })
  18. setTimeout(() => {
  19. location = 'index.html';
  20. }, 1000)
  21. }).catch((err) => {
  22. var errorCode = err.code;
  23. var errorMessage = err.message;
  24. if (errorCode === 'auth/weak-password') {
  25. document.getElementsByClassName("error-message")[1].innerHTML = `<p>The password is too weak.</p>`
  26. } else {
  27. document.getElementsByClassName("error-message")[1].innerHTML = `<p>${errorMessage}</p>`
  28. }
  29. setTimeout(() =>{
  30. document.getElementsByClassName("error-message")[1].innerHTML = ""
  31. },5000)
  32. console.log(`${err}`)
  33. });
  34. }
  35. return false
  36. }
  37.  
  38. function logIn() {
  39. let email = document.getElementById('loginEmail').value;
  40. let password = document.getElementById('loginPassword').value;
  41. auth.signInWithEmailAndPassword(email, password).then(() => {
  42. setTimeout(() => {
  43. location = 'index.html';
  44. }, 1000)
  45. })
  46. .catch((err) => {
  47. var errorCode = err.code;
  48. var errorMessage = err.message;
  49. if (errorCode) {
  50. console.log('Error:' + errorCode);
  51. } else {
  52. console.log(errorMessage);
  53. }
  54. console.log(`Error: ${err}`)
  55. });
  56. return false
  57. }
  58.  
  59. function signOut() {
  60. auth.signOut().then(() => {
  61. setTimeout(() => {
  62. location = 'index.html';
  63. }, 1000)
  64. }).catch(error => console.error(error));
  65. }
  66.  
  67. function addPoll(){
  68. const question = document.getElementById('question').value;
  69. const options = document.getElementsByName('options');
  70. let poll = {
  71. question,
  72. author: auth.currentUser.displayName,
  73. option: {},
  74. results: {}
  75. }
  76.  
  77. for(let i = 0; i < 4; i++) {
  78. poll.option[`option${i + 1}`] = options[i].value;
  79. poll.results[`option${i + 1}`] = 0;
  80. }
  81. database.ref(`users/${auth.currentUser.uid}/polls`).push().set(poll);
  82. database.ref(`polls`).push().set(poll);
  83. location.reload();
  84. return false;
  85. }
  86.  
  87. function viewPolls(user = null) {
  88. const accordion = $('.ui.styled.accordion');
  89. let poll
  90. database.ref(`polls`).on('child_added', snapshot => {
  91. if(user){
  92. poll = renderPoll(snapshot.val(), snapshot.key, user);
  93. }
  94. else {
  95. poll = renderPoll(snapshot.val(), snapshot.key);
  96. }
  97. accordion.append(poll);
  98. });
  99. }
  100.  
  101. function renderPoll(data, key, user = null) {
  102. let pollOptions = ``
  103. for(let i = 0; i < 4; i++) {
  104. pollOptions += `
  105. <div class="field">
  106. <div class="ui radio checkbox">
  107. <input type="radio" name="pollOption" value="${i + 1}" tabindex="0">
  108. <label>${data.option[`option${i + 1}`]}</label>
  109. </div>
  110. </div>
  111. `
  112. }
  113. if(data.author == user.displayName) {
  114. return `
  115. <div class="title">
  116. <i class="dropdown icon"></i>
  117. <h4>
  118. ${data.question}
  119. <br>
  120. <small>Made by: ${data.author}</small>
  121. </h4>
  122. <span style="margin-left:auto">
  123. <button class="ui button" onClick="deletePoll('${key}')">Delete Poll</button>
  124. </span>
  125. </div>
  126. <div class="content">
  127. <div class="ui form">
  128. <div class="grouped fields">
  129. ${pollOptions}
  130. <button class="ui button" onclick="showResults(this, '${key}')">Submit</button>
  131. </div>
  132. </div>
  133. </div>
  134. `
  135. }
  136. else {
  137. return `
  138. <div class="title">
  139. <i class="dropdown icon"></i>
  140. <h4>
  141. ${data.question}
  142. <br>
  143. <small>Made by: ${data.author}</small>
  144. </h4>
  145. </div>
  146. <div class="content">
  147. <div class="ui form">
  148. <div class="grouped fields">
  149. ${pollOptions}
  150. <button class="ui button" onclick="showResults(this, '${key}')">Submit</button>
  151. </div>
  152. </div>
  153. </div>
  154. `
  155. }
  156. }
  157.  
  158. function showResults(element, key) {
  159. let el = $(element).parent().parent();
  160. let option = $("input:radio[name=pollOption]:checked").val();
  161. const dataRefPoll = database.ref(`polls/${key}`);
  162. let dataRes, pollResult = "", options;
  163. dataRefPoll.on('value', snapshot => {
  164. dataRes = snapshot.val().results
  165. options = snapshot.val().option
  166. dataRes[`option${option}`]++;
  167. });
  168. for(let i = 0; i < 4; i++) {
  169. pollResult += `<p>${options[`option${i + 1}`]} : ${dataRes[`option${i + 1}`]}</p>`
  170. }
  171. database.ref(`polls/${key}/results`).set(dataRes);
  172. el.html(
  173. `
  174. <h4>Thank you for taking part in this poll. Here are the results</h4>
  175. ${pollResult}
  176. `
  177. );
  178. }
  179.  
  180. function deletePoll(pid = null) {
  181. database.ref(`users/${auth.currentUser.uid}/polls/${pid}`).remove();
  182. database.ref(`polls/${pid}`).remove();
  183. location.reload();
  184. }
  185.  
  186. function changeState (){
  187. let nav = $('ul.right.menu');
  188. let addButton = $('#addPoll');
  189. auth.onAuthStateChanged(user => {
  190. if(user){
  191. nav.html(`
  192. <li>
  193. <a class="ui item">Welcome: ${user.displayName}</a>
  194. </li>
  195. <li>
  196. <a onclick="signOut()" class="ui item">Sign Out</a>
  197. </li>
  198. `);
  199. addButton.html(`<button class="ui button" onClick="showAddPollModal()">Add New Poll</button>`)
  200. document.body.onload = viewPolls(user);
  201. }
  202. else {
  203. document.body.onload = viewPolls();
  204. }
  205. });
  206. }
Add Comment
Please, Sign In to add comment