Guest User

Disqus timeline

a guest
May 17th, 2018
149
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function want(selector) {
  2.         return document.documentElement.querySelectorAll(selector);
  3. }
  4.  
  5. function loadAll(thendo, timeout) {
  6.         var loader = want('[data-action="more-posts"]');
  7.         if(loader[0].parentElement.style.display!="none"){
  8.                 loader[0].click();
  9.                 setTimeout(function(){loadAll(thendo,timeout);},timeout||1000);
  10.         } else {
  11.                 if(thendo){thendo();};
  12.         }
  13. }
  14.  
  15. function posts() {
  16.         return want('div.post-body');
  17. }
  18.  
  19. function postID(post) {
  20.         return Number(post.querySelector('a.time-ago').href.replace(/.*\/#comment-/,""));
  21. }
  22.  
  23. function sortedPosts () {
  24.         var postlist = [];
  25.         posts().forEach(function(x){postlist.push([postID(x),x]);});
  26.         return postlist.sort().map(function(x) {return x[1];});
  27. }
  28.  
  29. function collapser(node) {
  30.         var res = document.createElement("div");
  31.         res.appendChild(document.createTextNode("↸"));
  32.         res.onclick = function(){
  33.                 if (node.style.display == "none"){
  34.                         node.style.display = "block";
  35.                 }else{
  36.                         node.style.display = "none";
  37.                 }
  38.         };
  39.         res.style.fontSizeAdjust = 2;
  40.         res.style.margin = "2em";
  41.         res.style.backgroundColor = "#EFEFFF";
  42.         return res;
  43. }
  44.  
  45. function appendSortedPosts() {
  46.         var holder = document.createElement("div");
  47.         holder.style.margin = "2em";
  48.         sortedPosts().forEach(function(x){
  49.                 var y = holder.appendChild(document.createElement("div"));
  50.                 y.innerHTML = x.innerHTML;
  51.                 var name = x.querySelector('a.time-ago').href.replace(/.*#/,"");
  52.                 x.id = name;
  53.                 x.name = name;
  54.                 x.setAttribute("name", name);
  55.                 x.setAttribute("id", name);
  56.                 y.querySelectorAll('a').forEach(function(z){
  57.                         z.href = "#" + name;
  58.                 });
  59.                 y.onclick = function() {
  60.                         console.log(postID(x));
  61.                         document.documentElement.                      
  62.                                       querySelectorAll('div.post-body').    
  63.                         forEach(function(n){                                
  64.                                 if(postID(n)>=postID(x)){                
  65.                                         n.style.backgroundColor = '#EEFFF7';
  66.                                 }else{                                      
  67.                                         n.style.backgroundColor = '#FFFFFF';
  68.                                 }                                            
  69.                         });
  70.                 };
  71.         });
  72.         document.body.appendChild(collapser(holder));
  73.         document.body.appendChild(holder);
  74.         document.body.appendChild(collapser(holder)).scrollIntoView();
  75. }
  76.  
  77. function loadAndAppendSorted() {
  78.         loadAll(appendSortedPosts);
  79. }
  80.  
  81. loadAndAppendSorted();
RAW Paste Data