Mostra um TOC para os itens de uma lista da ludopedia (somente local)
当前为
// ==UserScript==
// @name TOC_Lista ludopedia
// @namespace tequila_j-script
// @version 1.0.0
// @description Mostra um TOC para os itens de uma lista da ludopedia (somente local)
// @match http://*.ludopedia.com.br/lista/*
// @match http://ludopedia.com.br/lista/*
// @match https://*.ludopedia.com.br/lista/*
// @match https://ludopedia.com.br/lista/*
// @grant GM_addStyle
// @run-at document-end
// ==/UserScript==
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js
// @require //cdn.bootcss.com/font-awesome/4.6.3/css/font-awesome.css
GM_addStyle("\
div.principal {\
position: relative;\
}\
\
div.toc {\
position: absolute;\
top: -50px;\
//bottom: 0px;\
right: -330px;\
//left: 0px;\
width: 350px;\
max-height: 80%;\
margin: auto;\
box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);\
background: rgba(240,240,253,0.90);\
padding: 8px 8px;\
border-radius: 8px;\
}\
\
div.toc div.inner-panel {\
position: relative;\
}\
div.toc div.pag-panel {\
position: absolute;\
top:-25px;\
right:0px;\
}\
div.toc div.list-panel {\
overflow:auto;\
margin:2px 0px;\
}\
");
GM_addStyle("\
div.toc p {\
margin:2px 0px;\
border-bottom: 1px solid white;\
}\
div.toc p:hover {\
background: rgba(220,220,253,0.90);\
}\
\
div.toc p span {\
font-size: small;\
padding: 0px;\
}\
div.toc p span.bid {\
cursor: pointer;\
cursor: hand;\
}\
div.toc p span.name {\
cursor: pointer;\
cursor: hand;\
color:black;\
}\
div.toc p div.value-detail {\
cursor: pointer;\
cursor: hand;\
display: inline;\
}\
div.toc p div.value-detail span.next-val {\
color: #555555;\
}\
div.toc div.list-panel p {\
border-left: 5px solid transparent;\
padding-left: 3px;\
}\
div.toc div.list-panel p.auction-ended {\
border-left: 5px solid darkred;\
padding-left: 3px;\
}\
div.toc div.list-panel p.i-am-winning {\
background-color: lightgreen;\
}\
div.toc div.list-panel p.i-am-winning span {\
color: black;\
}\
div.toc div.list-panel p.i-win {\
background-color: lightgreen;\
}\
div.toc .panel {\
}\
\
div.toc .misc\
{\
position: absolute;\
top: 103%;\
left: 0;\
width: 100%;\
}\
div.toc .micropagination {\
font-size: x-small;\
}\
div.toc ul.micropagination {\
font-size: x-small;\
display:inline-block;\
width: 100%;\
text-align: right;\
}\
div.toc .micropagination li {\
display: inline;\
padding: 0px 8px;\
}\
div.toc .micropagination li.active {\
border: 1px solid lightgray;\
background-color: #d1d1d1;\
}\
div.toc .micropagination li.disabled a {\
color: rgb(220,230,243);\
}\
.fa {\
font-size: xx-small;\
padding-right: 2px;\
}\
");
var $items = $('div[id^="id_ludo_list_item_"');
var itemsObject = new Array();
$items.each(function () {
var itemHeader = $(this).find('.panel-title > div.pull-left > a');
var itemName = $(itemHeader[1]).html();
var itemAnchor = $(itemHeader[0]).attr('href');
var itemObject = {
'name' : itemName,
'anchor' : itemAnchor,
'id' : $(this).attr('id')
}
//does it have an alternate name?
var itemBody = $(this).find('div.lista-item-descricao').text();
var alternateNameLine = itemBody.match(/\+\+.*\+\+/)
if (alternateNameLine != null) {
console.log(alternateNameLine);
var parts = alternateNameLine[0].substring(2,alternateNameLine[0].length - 4).trim();
itemObject.name = parts;
}
itemsObject.push(itemObject)
});
//create the small box
var $tocEl = $(document.createElement('div')).addClass("toc");
var $tocInnerPanel = $(document.createElement('div')).addClass("inner-panel");
var $tocPagPanel = $(document.createElement('div')).addClass("pag-panel");
var $tocListPanel = $(document.createElement('div')).addClass("list-panel");
var $tocPanel = $(document.createElement('div'));
$tocEl.append($tocInnerPanel);
$tocInnerPanel.append($tocPagPanel);
$tocInnerPanel.append($tocListPanel);
$('div.principal').append($tocEl);
$tocListPanel.css("max-height",window.innerHeight - 200);
$(window).resize(function() {
$tocListPanel.css( "max-height",window.innerHeight - 200);
});
//scrolling
$(window).scroll(function(){
$tocEl
.stop()
.animate({"marginTop": ($(window).scrollTop() )}, "fast" );
});
//cria a lista de TOC
itemsObject.forEach(function(item) {
var tocEntry = $(document.createElement('p'));
var tocName = $(document.createElement('span')).addClass('name');
var tocSeparator = $('<span> - </span>').addClass("separator");
var tocHammer = $(document.createElement('i')).addClass('fa fa-gavel');
var tocNext = $(document.createElement('i')).addClass('fa fa-chevron-right');
var tocNextValue = $(document.createElement('span')).addClass("next-val");
var tocValueDetail = $(document.createElement('div')).addClass("value-detail");
var entryPieces = new Array();
tocName.html(item.name);
var listItem = document.getElementById(item.id);
var auctionBlock = $(listItem).find('.bloco-leilao');
var hasItemFailed = auctionBlock.hasClass("leilao-sem-lance-fim");
var hasItemSucceed = auctionBlock.hasClass("leilao-lance-fim");
var hasAuctionEnded = hasItemFailed || hasItemSucceed;
tocEntry.append(tocName);
if (auctionBlock.length > 0) { //this is an auction, so put the link to the bid and current next val
var currUsername = $("ul.dropdown-menu > li:first > a").html().trim();
var auctionUsername = auctionBlock.find("[id^=usuario_lance_]").html().trim();
var amIWinning = currUsername == auctionUsername;
if (! hasAuctionEnded) {
if (amIWinning) {
tocValueDetail.append(tocHammer);
var myBid = auctionBlock.find('span[id^=vl_lance_atual]').first();
tocNextValue.html(myBid.text().replace("R$","").trim());
tocEntry.addClass("i-am-winning");
} else {
tocValueDetail.append(tocNext);
var nextBid = auctionBlock.find('select > option').first();
tocNextValue.html(nextBid.text().replace("R$","").trim());
}
tocEntry.append(tocSeparator.clone());
tocEntry.append(tocValueDetail);
tocValueDetail.append(tocNextValue);
} else {
if (amIWinning) {
tocValueDetail.append(tocHammer);
tocEntry.addClass("i-win");
}
var bid = auctionBlock.find('span[id^=vl_lance_atual]').first();
tocNextValue.html(bid.text().replace("R$","").trim());
tocEntry.append(tocSeparator.clone());
tocEntry.append(tocValueDetail);
tocEntry.addClass("auction-ended");
tocValueDetail.append(tocNextValue);
}
tocValueDetail.click(function() {
$('html, body').stop().animate({
'scrollTop': $(auctionBlock).offset().top
}, 900);
});
}
$tocListPanel.append(tocEntry);
tocName.click(function() {
$('html, body').stop().animate({
'scrollTop': $(listItem).offset().top
}, 900);
});
});
//create pagination
var paginationEl = $("ul.pagination");
if (paginationEl.length > 0) {
var smallPagination = paginationEl.clone();
smallPagination.removeClass("pagination").addClass("micropagination");
$tocPagPanel.append(smallPagination);
$tocListPanel.css('margin-top','20px');
}