// ==UserScript==
// @name Steam cart sorter
// @name:ZH-CN Steam 购物车自动排序
// @namespace http://tampermonkey.net/
// @version 0.8
// @description sort the Steam cart by price
// @description:ZH-CN 对 Steam 购物车中的物品按照价格排序
// @author SLAPaper
// @match http://store.steampowered.com/cart/*
// @match https://store.steampowered.com/cart/*
// @grant none
// @license MIT
// @downloadURL https://update.greasyfork.icu/scripts/30864/Steam%20cart%20sorter.user.js
// @updateURL https://update.greasyfork.icu/scripts/30864/Steam%20cart%20sorter.meta.js
// ==/UserScript==
(function() {
'use strict';
function main() {
function sorter(isAsc) {
let cart_item_list = document.querySelector('.cart_item_list');
let old_items = Array.from(cart_item_list.children);
let indicies = new Array(old_items.length);
for (let i = 0; i < indicies.length; ++i) {
indicies[i] = i;
}
indicies.sort((a, b) => {
let anode = old_items[a].querySelector('.price:last-of-type');
let bnode = old_items[b].querySelector('.price:last-of-type');
if (!anode) {
return -1;
}
if (!bnode) {
return 1;
}
let aval = parseInt(anode.textContent.slice(2));
let bval = parseInt(bnode.textContent.slice(2));
if (aval - bval == 0) {
return a - b;
}
if (isAsc) {
return aval - bval;
}
else {
return bval - aval;
}
});
for (let i = 0; i < old_items.length; ++i) {
cart_item_list.appendChild(old_items[indicies[i]]);
}
}
let sort_btn = document.createElement('div');
sort_btn.className = 'SortCart';
sort_btn.innerHTML = `
`;
document.querySelector('.rightcol').insertBefore(sort_btn, document.querySelector('.rightcol cart_recommendations_ctn'));
document.querySelector('.SortCartAsc').addEventListener('click', () => {sorter(true);});
document.querySelector('.SortCartDesc').addEventListener('click', () => {sorter(false);});
}
window.addEventListener('load', main);
})();