// ==UserScript==
// @name 幕布-序号&统计
// @namespace 。。。
// @version 0.3
// @description 显示节点【对应层级】序号、统计子节点数量【忽略无子节点的节点】、BUG【偶尔不知原因的样式错乱】
// @include https://mubu.com/doc*
// @author Arno Lee
// @grant none
// @downloadURL https://update.greasyfork.icu/scripts/387677/%E5%B9%95%E5%B8%83-%E5%BA%8F%E5%8F%B7%E7%BB%9F%E8%AE%A1.user.js
// @updateURL https://update.greasyfork.icu/scripts/387677/%E5%B9%95%E5%B8%83-%E5%BA%8F%E5%8F%B7%E7%BB%9F%E8%AE%A1.meta.js
// ==/UserScript==
(function() {
let nodeIndexMap = new Map(),nodeContenMap = new Map(),nodeChildsMap = new Map();
function process(step,depth,nodeChilds)
{
if(step < depth)
{
++ step;
}
let count=0;
for (var i = 0; i< nodeChilds.length; i++)
{
let node = nodeChilds[i];
if(node.className == "node" || node.className == "node collapsed" || node.className == "node finished collapsed")
{
nodeIndexMap.set(node.id,++count);
nodeContenMap.set(node.id,node.firstChild.lastChild.innerHTML);
if(node.lastChild.className=="children")
{
nodeChildsMap.set(node.id,node.lastChild.childNodes.length);
}
}
// 排除样式节点
if(node.className=="content-wrapper")
{
continue;
}
process(step,depth,node.childNodes);
}
-- step;
}
window.setTimeout(function() {
process(1,4,document.getElementsByClassName("node-tree")[0].childNodes);
nodeIndexMap.forEach(function (value,key) {
if(nodeContenMap.get(key)!="")
{
let ele = document.getElementById(key);
if(nodeChildsMap.get(key))
{
ele.firstChild.lastChild.innerHTML = '('+nodeIndexMap.get(key)+') ' + nodeContenMap.get(key)+' 【'+nodeChildsMap.get(key)+'】';
}
else
{
ele.firstChild.lastChild.innerHTML = '('+nodeIndexMap.get(key)+') ' + nodeContenMap.get(key);
}
}
});
}, 3000);
})();