您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Sort Redactle guessed-words table by a column
- // ==UserScript==
- // @name sortColumns
- // @namespace http://tampermonkey.net/
- // @version 0.1
- // @description Sort Redactle guessed-words table by a column
- // @author gauss256
- // @match https://www.redactle.com/
- // @icon https://www.google.com/s2/favicons?sz=64&domain=redactle.com
- // @grant none
- // @license MIT
- // ==/UserScript==
- /* jshint esversion:6 */
- // The lovely code to do the sorting comes from:
- // https://stackoverflow.com/a/50127768/80309
- (function () {
- 'use strict';
- function hash(node) {
- return parseInt(node.querySelector('td:nth-child(1)').innerHTML);
- }
- function guess(node) {
- return node.querySelector('td:nth-child(2)').innerHTML;
- }
- function hits(node) {
- return parseInt(node.querySelector('td:nth-child(3)').innerHTML);
- }
- function sortByHash() {
- const guessLogBody = document.getElementById('guessLogBody');
- [...guessLogBody.children]
- .sort((a, b) => hash(b) - hash(a))
- .forEach(node => guessLogBody.appendChild(node));
- }
- function sortByGuess() {
- const guessLogBody = document.getElementById('guessLogBody');
- [...guessLogBody.children]
- .sort((a, b) => guess(a) > guess(b))
- .forEach(node => guessLogBody.appendChild(node));
- }
- function sortByHits() {
- const guessLogBody = document.getElementById('guessLogBody');
- [...guessLogBody.children]
- .sort((a, b) => hits(b) - hits(a))
- .forEach(node => guessLogBody.appendChild(node));
- }
- // Set up click events on the column headers
- const columnHeads = document
- .getElementById('tableHolder')
- .querySelectorAll('th');
- let hashBtn;
- let guessBtn;
- let hitsBtn;
- for (let i = 0; i < columnHeads.length; i++) {
- let headElem = columnHeads[i];
- let headLabel = headElem.innerHTML;
- switch(headLabel) {
- case '#':
- hashBtn = headElem;
- break;
- case 'Guess':
- guessBtn = headElem;
- break;
- default:
- hitsBtn = headElem;
- }
- }
- hashBtn.style = 'cursor: pointer';
- guessBtn.style = 'cursor: pointer';
- hitsBtn.style = 'cursor: pointer';
- // Set up event handlers
- hashBtn.onclick = function () {
- sortByHash();
- };
- guessBtn.onclick = function () {
- sortByGuess();
- };
- hitsBtn.onclick = function () {
- sortByHits();
- };
- })();