personal test script2

Blocked users can be synced but do not actually change anything in the SW results yet.

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

You will need to install an extension such as Tampermonkey to install this script.

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。

您需要先安装用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name       personal test script2
// @namespace   https://greasyfork.org/en/users/1225524-kaitlin
// @match       https://www.grundos.cafe/block/
// @match				https://www.grundos.cafe/market/wizard/
// @match				https://www.grundos.cafe/guilds/guild/*/members/
// @require  	  https://cdn.jsdelivr.net/npm/[email protected]/dist/jquery.min.js
// @grant				GM_getValue
// @grant     	GM_setValue
// @grant				GM_listValues
// @grant				GM_addStyle
// @license     MIT
// @version     1.4
// @author      Cupkait (dani edit)
// @icon        https://i.imgur.com/4Hm2e6z.png
// @description	 Blocked users can be synced but do not actually change anything in the SW results yet.

// ==/UserScript==
function OrganizeShopWizResults() {

var divElements = $('.sw_results div');
var guildsList = GM_getValue('guildsList', []);
var allGuildMembers = [];
const userName = /user=(.*?)"/g.exec(document.body.innerHTML)[1];




function createSummaryInfo() {
    var newDiv = $('<div>')
		.addClass('summaryinfo')
		.css({})
		.html('<span id="top"><p id="name">' + itemName + '</p><p id="price">Lowest:  <i>' + lowestPrice.toLocaleString() + ' NP</i></p></span><span id="bottom"><p id="qty">Total Available: <strong><u>' + shopQtyTtl +
					'</u></strong></p><p id="searches">You have <strong>'+searchCount+ '</strong> searches left.</p></span><img width ="225px" src="https://i.imgur.com/OsayYEW.png">');




    var oldWiz = $('#page_content > main > div.center').replaceWith(newDiv);
}

$('#page_banner').html('<div class="newbanner">Savvy Shop Wiz</div>')
$('#page_content > main > h1').eq(0).remove();
$('#page_content > main > p').eq(0).remove();



$.each(guildsList, function(guildID, guildData) {
    var guildMembers = guildData.guildMembers;
    allGuildMembers = allGuildMembers.concat(guildMembers);
});

allGuildMembers = $.grep(allGuildMembers, function(member) {
    return member !== userName;
});

$('.sw_results').css({
    'grid-template-columns': '2fr 1fr 2fr 2fr'
});

var itemName = divElements.eq(5).text();
var shopQtyTtl = 0; // Initialize the total shop quantity
for (var i = 6; i < divElements.length; i += 4) {
    var shopQty = parseInt(divElements.eq(i).text(), 10);
    shopQtyTtl += shopQty;}

var searchCount = parseInt($('#page_content > main > div.center > p.nomargin.smallfont').text().split('/')[0]);


var varianceElement = $('<div>', {
    'class': divElements.eq(3).attr('class')
}).html('<strong>Variance</strong>').insertAfter(divElements.eq(3));

var friendList = GM_getValue('friendList', []);

var listPriceDiffs = [];
var lowestPrice;

for (var i = 7; i < divElements.length; i += 4) {
    var currentListPrice = parseFloat(divElements.eq(i).text().replace(/,/g, ''));
    var currentListPriceClass = divElements.eq(i).attr('class');

    if (!divElements.eq(i).hasClass('data') || !divElements.eq(i).hasClass('sw_mine') || !divElements.eq(i).hasClass('sw_friend')) {
        listPriceDiffs.push({
            listPrice: currentListPrice,
            priceDiff: 0,
            listPriceClass: currentListPriceClass
        });
    }
}

lowestPrice = Math.min(...listPriceDiffs.filter(entry => !entry.listPriceClass.includes('data') || !entry.listPriceClass.includes('sw_mine') || !entry.listPriceClass.includes('sw_friend')).map(entry => entry.listPrice));

listPriceDiffs.forEach(entry => {
    entry.priceDiff = entry.listPrice - lowestPrice;
});

listPriceDiffs.forEach((entry, index) => {
    var currentElement = divElements.eq(7 + (4 * index));
    var varianceText;
    if (entry.priceDiff === 0) {
        varianceText = '<strong style="color: green; font-weight: bold;">- LOWEST -</strong>';
    } else {
        if ($.inArray(currentElement.prev("div").prev("div").prev("div").text().trim(), allGuildMembers) !== -1 || currentElement.hasClass('data sw_guild')) {
            varianceText = '<strong style="color: red;">(' + '+' + entry.priceDiff.toLocaleString() + ')</strong>';
        } else if ($.inArray(currentElement.prev("div").prev("div").prev("div").text().trim(), friendList) !== -1 || currentElement.hasClass('data sw_mine')) {
            varianceText = '<strong style="color: red;">(' + '+' + entry.priceDiff.toLocaleString() + ')</strong>';
        } else {
            varianceText = '<strong>-</strong>';
        }
    }

    $('<div>', {
        'class': entry.listPriceClass
    }).insertAfter(currentElement).html(varianceText);
});

var rows = $('.market_grid.sw_results.margin-1 .data, .market_grid.sw_results.margin-1 .data.bg-alt');

rows.each(function(index) {
    var anchorElement = $(this).find('[href*="/browseshop/?owner="]');
    if (anchorElement.length) {
        var username = anchorElement.text();
        if ($.inArray(username, friendList) !== -1) {
            for (var i = 0; i < 5 && index + i < rows.length; i++) {
                var currentRow = rows.eq(index + i);
                currentRow.addClass('data sw_friend');
            }
        } else if ($.inArray(username, allGuildMembers) !== -1) {
            for (var i = 0; i < 5 && index + i < rows.length; i++) {
                var currentRow = rows.eq(index + i);
                currentRow.addClass('data sw_guild');
            }
        }
    }
});
createSummaryInfo();
$(".header:contains('Item')").remove();
$(".data:contains('" + itemName + "')").remove();

GM_addStyle(`
    .summaryinfo {
        display: flex;
        font-family: trebuchetMS;
        padding: 0px 25px;
        position: relative;
        height: 200px;
        width: 545px;
        margin-top: 10px;
        flex-direction: column;
        flex-wrap: wrap;
        align-content: space-between;
        justify-content: space-between;
        align-items: stretch;
        padding-bottom: 15px;
        align-self: center;
    }

    #top {
        line-height: 25px;
    }

    #bottom {
        line-height: 5px;
        font-size: 14px;
    }

    #name {
        max-width: 250px;
        font-family: heffaklump;
        font-size: 18px;
        margin-bottom: 5px;
        letter-spacing: 0px;
    }

    #price {
        font-size: 16px;
        margin: 0px;
    }

    #price i {
        font-weight: bold;
        font-size: 19px;
        font-style: normal;
    }

    #searches {
        margin-bottom: 0px;
    }

    #qty {
        bottom: 0px;
    }

    .newbanner {
        background-image: repeating-radial-gradient(circle at 0 0, transparent 0, #ffd700 10px), repeating-linear-gradient(rgba(199, 172, 19, 0.47), rgba(199, 172, 19, 0.47));
        background-color: #ffd700;
        font-family: heffaklump;
        font-weight: bold;
        line-height: 50px;
        font-size: 50px;
        padding-right: 20px;
        text-align: right;
        width: 595px;
        background-color: gold;
        border-radius: 20px;
        border: solid 5px black;
    }
		.data.sw_guild, .data.bg-alt.sw_guild {
			order: -2;
			background-color: #f3bc8c;
}
		.data.sw_friend, .data.bg-alt.sw_friend {
			order: -2;
			background-color: rgba(92, 227, 158, .53);
}
		.data.sw_mine {
			order: -2;
}
		.data.sw_block {
			background-color:#bcb6b6f7 !important;
			opacity:30%;
}
	.sw_block:hover {
			opacity:100%;
}
`);
};