Guest User

Elakiri Pagination Support UserScript

a guest
Apr 8th, 2019
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // ==UserScript==
  2. // @name Elakiri Pagination Support
  3. // @namespace net.hopefullysafe
  4. // @match http://elakiri.com/
  5. // @match https://elakiri.com/
  6. // @match http://www.elakiri.com/
  7. // @match https://www.elakiri.com/
  8. // @require https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js
  9. // @grant none
  10. // ==/UserScript==
  11.  
  12. this.$ = this.jQuery = jQuery.noConflict(true);
  13. $(document).ready(function() {
  14.  
  15.   function addBasic(spanElem, url, params, lastPageNo) {
  16.     params.set('pp', 20);
  17.     params.set('page', 1);
  18.     spanElem
  19.       .append("  [")
  20.       .append($("<a/>", {
  21.           html: "1-20",
  22.           "class": "linkStyles",
  23.           href: url.href
  24.       }));
  25.  
  26.     if (lastPageNo > 2) {
  27.       params.set('page', 2);
  28.       spanElem
  29.         .append(" ")
  30.         .append($("<a/>", {
  31.             html: "21-40",
  32.             "class": "linkStyles",
  33.             href: url.href
  34.         }));
  35.      
  36.       params.set('pp', 40);
  37.       params.set('page', 1);
  38.       spanElem
  39.         .append(" ")
  40.         .append($("<a/>", {
  41.             html: "1-40",
  42.             "class": "linkStyles",
  43.             href: url.href
  44.         }));
  45.     }
  46.  
  47.     spanElem
  48.       .append("]");
  49.   }
  50.  
  51.   function addMultiple20(spanElem, url, params, lastPageNo) {
  52.     var longPages20 = Math.floor(lastPageNo / 2);    // for pp=20 and default_page_size=10
  53.     if ( lastPageNo % 2 != 0) {
  54.       longPages20++;
  55.     }
  56.     params.set('pp', 20);
  57.  
  58.     params.set('page', 1);
  59.     spanElem
  60.       .append($("<a/>", {
  61.           html: "1-20",
  62.           "class": "linkStyles",
  63.           href: url.href
  64.       }));
  65.  
  66.     params.set('page', 2);
  67.     spanElem
  68.       .append(" ")
  69.       .append($("<a/>", {
  70.           html: "21-40",
  71.           "class": "linkStyles",
  72.           href: url.href
  73.       }));
  74.  
  75.     params.set('page', 3);
  76.     spanElem
  77.       .append(" ")
  78.       .append($("<a/>", {
  79.           html: "41-60",
  80.           "class": "linkStyles",
  81.           href: url.href
  82.       }));
  83.  
  84.     if (longPages20 > 3) {
  85.       spanElem
  86.         .append(" ...");
  87.  
  88.       if (longPages20 >= 6) {
  89.         params.set('page', longPages20 - 2);
  90.         spanElem
  91.           .append(" ")
  92.           .append($("<a/>", {
  93.               html: ((longPages20 - 2) * 20 - 19) + "-" + ((longPages20 - 2) * 20),
  94.               "class": "linkStyles",
  95.               href: url.href
  96.           }));
  97.       }
  98.       if (longPages20 >= 5) {
  99.         params.set('page', longPages20 - 1);
  100.         spanElem
  101.           .append(" ")
  102.           .append($("<a/>", {
  103.               html: ((longPages20 - 1) * 20 - 19) + "-" + ((longPages20 - 1) * 20),
  104.               "class": "linkStyles",
  105.               href: url.href
  106.           }));
  107.       }
  108.       if (longPages20 >= 4) {
  109.         params.set('page', longPages20);
  110.         spanElem
  111.           .append(" ")
  112.           .append($("<a/>", {
  113.               html: (longPages20 * 20 - 19) + "-" + (longPages20 * 20),
  114.               "class": "linkStyles",
  115.               href: url.href
  116.           }));
  117.       }
  118.     }
  119.   }
  120.  
  121.   function addMultiple40(spanElem, url, params, lastPageNo) {
  122.     var longPages40 = Math.floor(lastPageNo / 4);    // for pp=40 and default_page_size=10
  123.     if ( lastPageNo % 4 != 0) {
  124.       longPages40++;
  125.     }
  126.     params.set('pp', 40);
  127.  
  128.     params.set('page', 1);
  129.     spanElem
  130.       .append($("<a/>", {
  131.           html: "1-40",
  132.           "class": "linkStyles",
  133.           href: url.href
  134.       }));
  135.  
  136.     if (longPages40 > 1) {
  137.       params.set('page', 2);
  138.       spanElem
  139.         .append(" ")
  140.         .append($("<a/>", {
  141.             html: "41-80",
  142.             "class": "linkStyles",
  143.             href: url.href
  144.         }));
  145.     }
  146.     if (longPages40 > 2) {
  147.       params.set('page', 3);
  148.       spanElem
  149.         .append(" ")
  150.         .append($("<a/>", {
  151.             html: "81-120",
  152.             "class": "linkStyles",
  153.             href: url.href
  154.         }));
  155.     }
  156.     if (longPages40 > 3) {
  157.       spanElem
  158.         .append(" ...");
  159.  
  160.       if (longPages40 >= 6) {
  161.         params.set('page', longPages40 - 2);
  162.         spanElem
  163.           .append(" ")
  164.           .append($("<a/>", {
  165.               html: ((longPages40 - 2) * 40 - 39) + "-" + ((longPages40 - 2) * 40),
  166.               "class": "linkStyles",
  167.               href: url.href
  168.           }));
  169.       }
  170.       if (longPages40 >= 5) {
  171.         params.set('page', longPages40 - 1);
  172.         spanElem
  173.           .append(" ")
  174.           .append($("<a/>", {
  175.               html: ((longPages40 - 1) * 40 - 39) + "-" + ((longPages40 - 1) * 40),
  176.               "class": "linkStyles",
  177.               href: url.href
  178.           }));
  179.       }
  180.       if (longPages40 >= 4) {
  181.         params.set('page', longPages40);
  182.         spanElem
  183.           .append(" ")
  184.           .append($("<a/>", {
  185.               html: (longPages40 * 40 - 39) + "-" + (longPages40 * 40),
  186.               "class": "linkStyles",
  187.               href: url.href
  188.           }));
  189.       }
  190.     }
  191.   }
  192.  
  193.   $('<style>.linkStyles { font-size: .9em; }</style>').appendTo('body');
  194.  
  195.   $('#collapseobj_module_31 td:nth-child(2)').each(function(){
  196.     var pageSpan = $(this).find("span.smallfont");
  197.     var lastLink = $(pageSpan).find("a:last");
  198.     if ($(lastLink).length) {
  199.  
  200.       var lastPageUrl = new URL($(lastLink).prop('href'));
  201.       let params = lastPageUrl.searchParams;
  202.  
  203.       var lastPageNo = params.get('page');
  204.       if (lastPageNo <= 4) {
  205.         addBasic(pageSpan, lastPageUrl, params, lastPageNo);
  206.       } else {
  207.         pageSpan.append("<br/>").append("[");
  208.         addMultiple20(pageSpan, lastPageUrl, params, lastPageNo);
  209.         pageSpan.append(" / ");
  210.         addMultiple40(pageSpan, lastPageUrl, params, lastPageNo);
  211.         pageSpan.append("]");
  212.       }
  213.     }
  214.   });
  215. });
Advertisement
Add Comment
Please, Sign In to add comment