Advertisement
Guest User

Untitled

a guest
Jan 16th, 2019
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.84 KB | None | 0 0
  1. // maakt variabelen die nodig zijn om de chat te gebruiken
  2. var partnerid;
  3. var my_room_id;
  4. var chatSelected = false;
  5. var menu_open = 0;
  6. var chat_loaded = false;
  7. var socket;
  8.  
  9. if(socket === undefined){
  10. socket = io.connect(location.hostname === "127.0.0.1" ? "http://127.0.0.1:1337" : location.hostname === "is106-2.fys-hva.tk" ? "https://is106-2-app.fys-hva.tk/" : "http://pasively.com:1337");
  11. }
  12.  
  13. //dit wordt uitgevoerd bij het laden van de pagina.
  14. function start() {
  15. //laad de matches die je links boven in de chat ziet staan.
  16. LoadMatches();
  17. //zorgt voor de witte select box als je op een match klikt.
  18. $(document).on('click', '.person', e => {
  19. let person = $(e.target).closest('div.person');
  20. $('.person').removeClass('selected');
  21. person.addClass('selected');
  22. });
  23. $(document).keypress(e => {if (e.keyCode == 13) { sendMessage(); }});
  24. $('.messages').on("scroll", () => {$('a.up').hide().show()});
  25. }
  26.  
  27. function mobile_match_toggle(){
  28. if(menu_open){
  29. $('.people').width("0%");
  30. menu_open = 0;
  31. }else{
  32. $('.people').width("50%");
  33. menu_open = 1;
  34. }
  35. }
  36.  
  37.  
  38. //hier worden de matches geladen die je links boven ziet.
  39. function LoadMatches() {
  40. // maakt een template van een persoon zodat die gebruikt kan worden voor aalle matches
  41. let match = $(".person:first-child").clone();
  42. //Hier wordt een ajax request gestuurd naar de chatroutes waar een sql query staat die de matches ophalen.
  43. ajaxRequest('POST', '/api/getMatches', {token: sessionStorage.getItem('token')}, (data, xhr) => {
  44. //als er een 200 OK response terug komt wordt de data ontleed.
  45. if (xhr.status === 200) {
  46. //hier wordt gechecked of niet de eigen id wordt doorgestuurd.
  47. for (var i = 0; i < data.result.length; i++) {
  48. let partnerid;
  49. if (data.userId !== data.result[i].User1) {
  50. partnerid = data.result[i].User1;
  51. }
  52. if (data.userId !== data.result[i].User2) {
  53. partnerid = data.result[i].User2;
  54. }
  55. //hier wordt een ajax request gestuurd zodat de naam wordt opgehaald van de match.
  56. ajaxRequest('POST', '/api/getMatchesEnd', {partnerid: partnerid}, (data_end, xhr_end) => {
  57. //hier worden de matches met naam links boven neergezet.
  58.  
  59. let localmatch = match;
  60. localmatch.css('display', 'block');
  61. localmatch.attr("onclick", "loadChat(" + partnerid + ")");
  62. localmatch.children(".name")[0].innerHTML = data_end.result_end[0].voornaam;
  63.  
  64. let path = (data_end.result_end[0].profielfoto) ? './Resources/Img/Uploads/user_' + data_end.result_end[0].UserID + '/' + data_end.result_end[0].profielfoto : './Resources/Img/default_profile.jpg';
  65.  
  66. localmatch.children('.match-picture').children('.profile-pic').attr('src', path);
  67. localmatch.children('.match-picture').attr('onclick', 'localStorage.setItem("partner_id", ' + data_end.result_end[0].UserID + ')');
  68. $(".people").append(localmatch.clone());
  69. });
  70. }
  71. }
  72. });
  73. }
  74.  
  75. //hier worden de messages gestuurd
  76. function sendMessage(){
  77. //haalt input object op
  78. let text = $('input[type="text"]');
  79. //haalt de message eruit
  80. let message = text.val();
  81. let time = new Date();
  82. // dit werkt niet als er geen chat geselecteerd wordt. anders gaat de message nergens naar toe. je krijgt dan terug: "Wow je kan geen berichten sturen als je geen chat open hebt staan!"
  83. if(chatSelected){
  84. if (message.length > 0) {
  85. //hier wordt je eigen id en je partnersid opgehaald nodig om de match id te krijgen
  86. let chatids = {
  87. token: sessionStorage.getItem('token'),
  88. partnerid: partnerid
  89. };
  90. ajaxRequest('POST', '/api/getChat',chatids, (data, xhr) =>{
  91. let roomid = data.result[0].MatchID;
  92. //hier wordt een bericht opgeslagen met het bericht de verstuurder en de chatroom waar je in zat
  93. ajaxRequest('POST', '/api/saveMessage',{message: message, token: sessionStorage.getItem('token'), Matchid: roomid}, (data, xhr) =>{ });
  94. });
  95. //Hier wordt het bericht naar de server gestuurd zodat de server het kan terug sturen naar de chat partner.
  96. socket.emit('chat', {
  97. message: message,
  98. room_id: my_room_id,
  99. time: time
  100. });
  101. //hier wordt ervoor gezorgt dat je eigen message op je scherm wordt geplaatst
  102. let data = {message: message, time: new Date() };
  103. loadMessage(data, "sender");
  104. //de message wordt gereset zodat je weer een nieuw berciht kan sturen.
  105. text.val("");
  106. }
  107. }else{
  108. alert("Wow je kan geen berichten sturen als je geen chat open hebt staan!")
  109. }
  110. }
  111.  
  112. //hier worden messages opgevangen die binnen komen vanaf de server en wordt op het scherm geplaatst.
  113. socket.on('chat', function(data){
  114. loadMessage(data, "reciever");
  115. });
  116.  
  117. //Hier worden de matches geladen
  118. function loadMessage(data, origin){
  119. let messageRow = $('.messageRow:hidden').clone();
  120. if(origin == "sender" ){
  121. messageRow.find('.message').addClass('myMessage').removeClass('message');
  122. }else if(origin == "reciever"){
  123. messageRow.find('.message').addClass('message').removeClass('myMessage');
  124. }
  125.  
  126. function checktime(date){
  127. if(date.getMinutes()<10){
  128. return "0"+date.getMinutes()
  129. }else{
  130. return date.getMinutes()
  131. }
  132. }
  133. messageRow.find('p').text(data.message);
  134. let end_date;
  135. let current = new Date();
  136. let date = new Date(data.time);
  137. let time = ""+date.getHours()+":"+checktime(date)+"";
  138. let day = ""+date.getDate()+"-"+date.getMonth()+1 +"-"+date.getFullYear()+"";
  139. let current_day = ""+current.getDate()+"-"+current.getMonth()+1 +"-"+current.getFullYear()+"";
  140.  
  141. if(day === current_day){
  142. end_date = time;
  143. }else{
  144. end_date = ""+time+"&nbsp;&nbsp;&nbsp;"+day+"";
  145. }
  146.  
  147. messageRow.find('p.time').html(end_date);
  148. if ($($('.messages')[0]).scrollTop() == 0) {
  149. messageRow.hide().prependTo('.messages').slideDown(150);
  150. } else {
  151. $('a.up').show();
  152. messageRow.hide().prependTo('.messages').fadeIn(250, "linear");
  153. }
  154. }
  155.  
  156. function loadChat(partnerID){
  157. if(chat_loaded == false){
  158. chat_loaded = true;
  159. chatSelected = true;
  160. partnerid = partnerID;
  161. let chatids = {
  162. token: sessionStorage.getItem('token'),
  163. partnerid: partnerid
  164. };
  165. ajaxRequest('POST', '/api/getChat',chatids, (data, xhr) =>{
  166. let myid = data.userId;
  167. if(xhr.status === 200 && data.result[0]){
  168. my_room_id = data.result[0].MatchID;
  169. socket.emit('createRoom', {
  170. roomid: my_room_id
  171. });
  172. ajaxRequest('POST', '/api/getMessage', data.result[0], (data) =>{
  173. let chatlengte = Object.keys(data).length;
  174. let data_collection;
  175. for (var i = 0; i < chatlengte ; i++) {
  176. if(data[i].SenderID == myid){
  177. data_collection = {message: data[i].bericht, time: data[i].verstuur_datum}
  178. loadMessage(data_collection, "sender");
  179. }else{
  180. data_collection = {message: data[i].bericht, time: data[i].verstuur_datum}
  181. loadMessage(data_collection, "reciever");
  182. }
  183. }
  184. });
  185. }
  186. });
  187. }else if(chat_loaded == true){
  188. socket.emit('chat_already_loaded', {
  189. room_id: my_room_id
  190. });
  191. chat_loaded = false;
  192. $('.messages > .messageRow:not(:last-child)').remove();
  193. loadChat(partnerID);
  194. }
  195. }
  196.  
  197. start();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement