TipidPC User Items To Sortable Table

Transforms the User's Items for Sale list to sortable and searchable table

  1. // ==UserScript==
  2. // @name TipidPC User Items To Sortable Table
  3. // @description Transforms the User's Items for Sale list to sortable and searchable table
  4. // @namespace https://github.com/rainniel/tampermonkey-scripts
  5. // @supportURL https://github.com/rainniel/tampermonkey-scripts/issues
  6. // @version 1.0
  7. // @author Rainniel
  8. // @license MIT
  9. // @match https://tipidpc.com/useritems.php*
  10. // @icon https://www.google.com/s2/favicons?sz=64&domain=tipidpc.com
  11. // @require https://unpkg.com/datatables.net@2.2.2/js/dataTables.min.js
  12. // @run-at document-start
  13. // @grant GM_addStyle
  14. // ==/UserScript==
  15.  
  16. (function () {
  17. 'use strict';
  18.  
  19. GM_addStyle(`
  20. .item-manager {
  21. display: none !important;
  22. }
  23. `);
  24.  
  25. var $ = unsafeWindow.jQuery;
  26.  
  27. $(document).ready(function () {
  28. var dataTablesCss = document.createElement('link');
  29. dataTablesCss.rel = 'stylesheet';
  30. dataTablesCss.href = 'https://cdn.datatables.net/2.2.2/css/dataTables.dataTables.min.css';
  31. document.head.appendChild(dataTablesCss);
  32.  
  33. var pad10Div = $('.pad10');
  34.  
  35. if (pad10Div.length > 0) {
  36. var window2div = pad10Div.find('.window').eq(1);
  37. var userIfs = window2div.find('#user-ifs');
  38.  
  39. if (userIfs.length > 0) {
  40. var data = [];
  41.  
  42. userIfs.find('li').each(function () {
  43. var $li = $(this);
  44. var nameLink = $li.find('h4 a');
  45. var name = nameLink.text();
  46. var nameUrl = nameLink.attr('href');
  47. var priceText = $li.find('.meta strong').text();
  48. var price = parseFloat(priceText.replace(/[^0-9.-]+/g, ""));
  49. var catalogLink = $li.find('.meta a');
  50. var catalog = catalogLink.text();
  51. var catalogUrl = catalogLink.attr('href');
  52.  
  53. data.push([
  54. `<a href="${nameUrl}" target="_blank">${name}</a>`,
  55. new Intl.NumberFormat('en-US', { minimumFractionDigits: 2, maximumFractionDigits: 2 }).format(price),
  56. `<a href="${catalogUrl}" target="_blank">${catalog}</a>`
  57. ]);
  58. });
  59.  
  60. window2div.find('.winbody').prepend('<div style="padding: 0 12px;"><table id="userItems" class="display"></table></div>');
  61.  
  62. $('#userItems').DataTable({
  63. columns: [
  64. { title: "Name" },
  65. { title: "Price" },
  66. { title: "Catalog" }
  67. ],
  68. data: data,
  69. pageLength: 20,
  70. lengthMenu: [10, 20, 30, 40, 50]
  71. });
  72.  
  73. $('.dt-container').css('clear', 'none');
  74. }
  75. }
  76. });
  77. })();