Advertisement
Guest User

Krawężnik

a guest
Jan 18th, 2023
41
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.12 KB | None | 0 0
  1. // ==UserScript==
  2. // @name Krawężnik
  3. // @namespace http://tampermonkey.net/
  4. // @version 1.6
  5. // @description dodaje funkcje krawężnika do mirko
  6. // @author @ZasilaczKomputerowy, @shar
  7. // @match https://www.wykop.pl/mikroblog/*
  8. // @match https://www.wykop.pl/link/*
  9. // @grant GM_addStyle
  10. // ==/UserScript==
  11.  
  12. (function() {
  13. // constants
  14. var STORAGE_KEY_COLLAPSED_LIST = 'listaZwinietych';
  15.  
  16. // routines
  17. var collapse = collapse;
  18. var expand = expand;
  19. var collapseOrExpand = collapseOrExpand;
  20. var toggleCollapseExpand = toggleCollapseExpand;
  21. var init = init;
  22. var addStyle = addStyle;
  23.  
  24. // variables
  25. var collapsedList;
  26.  
  27. // initialization
  28. init();
  29.  
  30. // implementation
  31. function init() {
  32. addStyle();
  33.  
  34. try {
  35. collapsedList = JSON.parse(localStorage.getItem(STORAGE_KEY_COLLAPSED_LIST));
  36.  
  37. if (!collapsedList) {
  38. collapsedList = [];
  39. localStorage.setItem(STORAGE_KEY_COLLAPSED_LIST, JSON.stringify(collapsedList));
  40. }
  41. } catch (ex) {
  42. collapsedList = [];
  43. localStorage.setItem(STORAGE_KEY_COLLAPSED_LIST, JSON.stringify(collapsedList));
  44. }
  45.  
  46. $('#itemsStream')
  47. .children()
  48. .each(function(index, element) {
  49. var vC = $(element).find('p.vC').first();
  50. var id = $(element).find('div.wblock').attr('data-id');
  51. var collapsedElement = collapsedList.indexOf(id) !== -1;
  52.  
  53. var expandCollapseButton = $("<span>",
  54. {
  55. id: id + '_handle',
  56. class: 'kerbstone-button',
  57. text: '[ ' + (collapsedElement ? '+' : '-') + ' ]',
  58. click: function() {
  59. toggleCollapseExpand(id);
  60. }
  61. });
  62.  
  63. //vC.prepend(expandCollapseButton);
  64. expandCollapseButton.insertBefore(vC);
  65.  
  66. if (collapsedElement) {
  67. collapse(id);
  68. }
  69. });
  70. }
  71.  
  72. function addStyle() {
  73. // TODO: need to find better way to position button
  74. GM_addStyle(
  75. '.kerbstone-button { ' +
  76. 'position: absolute; ' +
  77. 'right: 100px; ' +
  78. '}');
  79. }
  80.  
  81. function collapse(id) {
  82. collapseOrExpand(id, true);
  83. }
  84.  
  85. function expand(id) {
  86. collapseOrExpand(id, false);
  87. }
  88.  
  89. function collapseOrExpand(id, collapse) {
  90. var displayValue = collapse ? 'none' : 'block';
  91. var textValue = collapse ? '[ + ]' : '[ - ]';
  92.  
  93. var parent = $('div[data-id=' + id + ' ]').parent();
  94. parent.find('div.text').first().css('display', displayValue);
  95. parent.find('div.elements').first().css('display', displayValue);
  96. parent.find('img.avatar').first().css('display', displayValue);
  97. parent.children('ul.sub').css('display', displayValue);
  98. parent.find('#' + id + '_handle').text(textValue);
  99. $("img.lazy").lazyload(); // refresh lazyload positnions of all elements
  100. }
  101.  
  102. function toggleCollapseExpand(id) {
  103. var idx = collapsedList.indexOf(id);
  104.  
  105. if (idx > -1) {
  106. collapsedList.splice(idx, 1);
  107. expand(id);
  108. } else {
  109. collapsedList.push(id);
  110. collapse(id);
  111. }
  112.  
  113. localStorage.setItem(STORAGE_KEY_COLLAPSED_LIST, JSON.stringify(collapsedList));
  114.  
  115. var parent = $('div[data-id=' + id + ' ]').parent();
  116.  
  117. if(!isScrolledIntoView(parent))
  118. {
  119. $('html, body').animate({
  120. scrollTop: $(parent).offset().top
  121. }, 400);
  122. }
  123. }
  124.  
  125. function isScrolledIntoView(elem)
  126. {
  127. var docViewTop = $(window).scrollTop();
  128. var docViewBottom = docViewTop + $(window).height();
  129.  
  130. var elemTop = $(elem).offset().top;
  131. var elemBottom = elemTop + $(elem).height();
  132.  
  133. return ((elemBottom <= docViewBottom) && (elemTop >= docViewTop));
  134. }
  135. })();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement