// ==UserScript==
// @name [wod]耗材单价
// @namespace lgg
// @description 够买耗材比较生成单价,省钱利器。
// @include http://*.world-of-dungeons.org/wod/spiel/trade/trade.php*
// @version 0.2.1
// @grant none
// @downloadURL https://update.greasyfork.icu/scripts/8896/%5Bwod%5D%E8%80%97%E6%9D%90%E5%8D%95%E4%BB%B7.user.js
// @updateURL https://update.greasyfork.icu/scripts/8896/%5Bwod%5D%E8%80%97%E6%9D%90%E5%8D%95%E4%BB%B7.meta.js
// ==/UserScript==
// console.log('start1');
//* constants
var goldStr = '
';
var PRICE_ATTRI_NAME = 'lggAvPrice';
var PRICE_UNAVAILABLE = 'lggBadPrice';
var CLASS_ROW = 'row';
//* global vars
var tblBody = findTBodyElement();
var tblRowList = new Array();
var sortBtnElement;
//* main
for (var i = 0; i < tblBody.rows.length; i++)
{
row_i = tblBody.rows[i];
var pricePU = genAveragePriceForConsumableGoods(row_i);
row_i.setAttribute(PRICE_ATTRI_NAME,pricePU);
tblRowList.push(row_i);
}
addSortBtn();
// sortRowByAveragePrice(tblRowList);
//* 找到商品列表table的
标签
function findTBodyElement () {
var tableList = document.getElementsByClassName('content_table');
var saleTable = tableList[0];
var tableBodyList = saleTable.children;
var tblBody;
for (var i = tableBodyList.length - 1; i >= 0; i--) {
if (tableBodyList[i].tagName == 'TBODY') {
tblBody = tableBodyList[i];
}
};
return tblBody;
}
//* 给定某行物品,找到对应的耗材单价以及总价,插入平均价格,返回插入的平均价格
function genAveragePriceForConsumableGoods (trElement) {
col_item = row_i.cells[1];
col_price = row_i.cells[3];
var itemCountStr = col_item.innerHTML.match(/\(\d+\/\d+\)/);
itemCountStr = itemCountStr + '';
if (itemCountStr != 'null') {
var itemCounts = itemCountStr.match(/\d+/);
var itemPrice = col_price.textContent.match(/\d+/);
if(!itemPrice){
return PRICE_UNAVAILABLE;
}
var itemPricePerUse = parseFloat(itemPrice + '') / parseFloat(itemCounts + '');
itemPricePerUse = itemPricePerUse.toFixed(4);
// console.log('数量:' + itemCounts + ', 单价:' + itemPricePerUse + '/u');
col_price.innerHTML = itemPricePerUse + goldStr + '/u    ' + col_price.innerHTML;
return itemPricePerUse;
} else {
return PRICE_UNAVAILABLE;
}
}
//* 排序,两个row是
,并且已经插入了PRICE_ATTRI_NAME属性
function rowCompare (row1,row2) {
var p1 = row1.getAttribute(PRICE_ATTRI_NAME);
var p2 = row2.getAttribute(PRICE_ATTRI_NAME);
if(p1==PRICE_UNAVAILABLE && p2==PRICE_UNAVAILABLE){
return 0;
} else if(p1==PRICE_UNAVAILABLE){
return -1;
} else if(p2==PRICE_UNAVAILABLE){
return 1;
}
p1 = parseFloat(p1);
p2 = parseFloat(p2);
return p1 - p2;
}
function sortRowByAveragePrice () {
//* 排序,重新输出
tblRowList.sort(rowCompare);
while (tblBody.hasChildNodes()) {
tblBody.removeChild(tblBody.lastChild);
}
for (var i = 0; i= 0; i--) {
if (tableBodyList[i].tagName == 'THEAD') {
tblHead = tableBodyList[i];
}
};
var header;
for(var i = 0;i