Advertisement
Guest User

Untitled

a guest
Feb 25th, 2024
172
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. msglist = Array.from(document.querySelectorAll('.msg-list')).find(list => list.querySelectorAll('.card').length > 10);
  2. messages = Array.from(msglist.querySelectorAll('.card'));
  3.  
  4. threaded = [];
  5. messages_by_id = {};
  6.  
  7. messages.reverse().forEach((message) => {
  8.   let id = message.querySelector('.msg-head-author .msg-num').textContent.trim();
  9.  
  10.   messages_by_id[id] = message;
  11.  
  12.   let parentid = message.querySelector('.msg-head-replied .msg-num');
  13.  
  14.   if (parentid)
  15.   {
  16.     let parent = threaded.find(messages => messages.includes(parentid.textContent.trim()));
  17.  
  18.     if (parent)
  19.     {
  20.       parent.push(id);
  21.       threaded = threaded.filter(item => item != parent)
  22.       threaded.push(parent);
  23.     }
  24.     else
  25.       threaded.push([id]);
  26.   }
  27.   else
  28.     threaded.push([id]);
  29. });
  30.  
  31.  
  32. msglist.insertAdjacentHTML("beforeend", `<div class="accordion" id="accordionExample"></div>`);
  33.  
  34.  
  35. threaded.reverse().forEach((messages, id) => {
  36.   let text = messages_by_id[messages[0]].querySelector('.msg-content').textContent;
  37.  
  38.   document.querySelector('#accordionExample').insertAdjacentHTML('beforeend', `
  39.   <div class="card">
  40.     <div class="card-header" id="accordionheading${id}">
  41.       <h2 class="mb-0">
  42.         <button class="btn btn-link btn-block text-left" type="button" data-toggle="collapse" data-target="#accordioncollapse${id}" aria-expanded="true" aria-controls="accordioncollapse${id}" title="${text.replace(/["\r\n<>]/, ' ')}">
  43.          <span class="badge badge-warning">${(messages.length - 1) + ' válasz'}</span>
  44.          ${text.substring(0, 70) + '...'}
  45.        </button>
  46.      </h2>
  47.    </div>
  48.  
  49.    <div id="accordioncollapse${id}" class="collapse" aria-labelledby="accordionheading${id}" data-parent="#accordionExample">
  50.      <div class="card-body">
  51.        <ul class="list-group">
  52.        </ul>
  53.      </div>
  54.    </div>
  55.  </div>
  56. `);
  57.  
  58.  let list = document.querySelector('#accordioncollapse' + id + ' .card-body .list-group');
  59.  
  60.  messages.reverse().forEach(message => {
  61.    list.insertAdjacentHTML('beforeend', '<li class="list-group-item"></li>');
  62.    list.querySelector('.list-group-item:last-child').appendChild(messages_by_id[message]);
  63.  });
  64. });
  65.  
  66.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement