Отображение всех трофеев в профиле пользователя
// ==UserScript==
// @name LZT_Trophy
// @namespace https://greasyfork.org/ru/users/1142494-llimonix
// @version 0.13
// @description Отображение всех трофеев в профиле пользователя
// @author llimonix
// @match https://zelenka.guru/*
// @match https://lolz.live/*
// @icon https://cdn-icons-png.flaticon.com/512/2830/2830919.png
// @grant none
// @license MIT
// ==/UserScript==
(function() {
let pageCounter = $('.page_counter');
if (pageCounter.length > 0) {
let hrefValue = pageCounter.attr('href');
let parts = hrefValue.replace('members/', '').split("/");
let value = parts[0];
let trophy;
if (~hrefValue.indexOf("members/")) {
value = `members/${value}`;
}
XenForo.ajax(`${value}/trophies`, {}).then(data => {
trophy = data.templateHtml;
let parser = new DOMParser();
trophy = parser.parseFromString(trophy, 'text/html');
let overlayScrollElements = $(trophy).find('.overlayScroll');
let totalCount = overlayScrollElements.length;
if (totalCount > 1) {
overlayScrollElements.first().remove();
}
let trophies = $(trophy).find('.trophy');
let trophiesList = trophies.map((_, trophy) => trophy.id).get();
let trophiesstyle = $(trophy).find('.trophy-icon');
let trophystyleList = trophiesstyle.map((_, trophy) => {
const style = trophy.style.cssText;
const match = style.match(/url\((.*?)\)/);
return match ? match[1].replace(/['"]/g, '') : null;
}).get();
let titletrophy = $(trophy).find('.title');
let titleTexttrophyList = titletrophy.map((_, trophy) => trophy.textContent).get();
let trophyLinks = {};
for (let i = 0; i < titleTexttrophyList.length; i++) {
let element = titleTexttrophyList[i];
$(trophy).find('.title:contains(' + element + ')').each(function () {
let href = $(this).closest('.trophy').find('.trophy-icon').attr('href');
if (href) {
trophyLinks[element] = href;
} else {
trophyLinks[element] = "None";
}
});
}
let htmlTrophy = "<ol>";
let titles = [];
for (let index = 0; index < trophystyleList.length; index++) {
let trophyLink = trophyLinks[titleTexttrophyList[index]];
let trophyStyle = `background-image: url('${trophystyleList[index]}'); --mask: url('${trophystyleList[index]}')`
if (trophyLink == "None") {
htmlTrophy += `<li class="trophy DelayedTooltip" id="${trophiesList[index]}" tabindex="0"><div class="trophy-icon" style="${trophyStyle}"></div></li>`;
} else {
htmlTrophy += `<li class="trophy DelayedTooltip" id="${trophiesList[index]}" tabindex="0"><a href="${trophyLink}" class="trophy-icon" style="${trophyStyle}"></a></li>`;
}
titles.push(titleTexttrophyList[index]);
}
htmlTrophy += "</ol>";
if (screen.width <= 480) {
$('.memberViewTrophies').html(htmlTrophy);
$('.Responsive .memberViewTrophies').css('display', 'block');
$('.memberViewTrophies').css({
'position': 'relative',
'margin': '20px 0 0',
'overflow-x': 'scroll',
'white-space': 'nowrap'
});
$('.memberViewTrophies .trophy').hover(function() {
$(this).css({
'-webkit-transform': 'none',
'transform': 'none',
'-ms-transform': 'none'
});
});
} else {
$('.memberViewTrophies').html(htmlTrophy);
}
$('.DelayedTooltip').each(function(index, element) {
tippy(element, {
content: titles[index],
arrow: true,
onShow(instance) {
instance.popper.style.border = '10px solid transparent';
}
});
});
});
}
})();