Compare commits

..

2 Commits

3 changed files with 115 additions and 70 deletions

112
erkul_column_filter.user.js Normal file
View File

@ -0,0 +1,112 @@
// ==UserScript==
// @name Erkul Column Filter
// @namespace https://annabunch.es
// @version 0.2
// @description Selectively hide columns on erkul.games
// @copyright 2021, annabunches@gmail.com
// @include https://www.erkul.games/*
// @require https://code.jquery.com/jquery-latest.js
// @require https://gist.githubusercontent.com/BrockA/2625891/raw/9c97aa67ff9c5d56be34a55ad6c18a314e5eb548/waitForKeyElements.js
// @grant none
// ==/UserScript==
waitForKeyElements("tr.mat-header-row", makeColumnFilter);
waitForKeyElements("div.filter", makeRedundantButton);
function makeButton(text) {
let button = $(document.createElement("div"));
button.html('<button _ngcontent-dae-c11="" class="mat-focus-indicator mat-stroked-button mat-button-base mat-primary" color="primary" mat-stroked-button=""><span class="mat-button-wrapper">' + text + '</span><span class="mat-button-ripple mat-ripple" matripple=""></span><span class="mat-button-focus-overlay"></span></button>');
return button;
}
function makeColumnFilter(jNode) {
let cols = $("th", jNode);
for (let i = 0; i < $(cols).length; i++) {
let button = makeButton("Hide");
$(cols[i]).append(button);
button.click(function() {
hideColumn(i);
});
}
}
function makeRedundantButton(jNode) {
let button = makeButton("Hide Redundant");
jNode.append(button);
button.click(function() {
let headers = $("tr.mat-header-row th");
// get all the rows
let rows = $("tr.mat-row");
let nCols = $("td", rows[0]).length;
// for each column...
for (let i = 0; i < nCols; i++) {
let last = "";
let diff = false;
// ... iterate over every row, checking whether that column is different
// on any row. If it is the same everywhere...
$.each(rows, function(j, row){
let cols = $("td", row);
if (last == "") {
last = $(cols[i]).html();
} else if ($(cols[i]).html() != last) {
diff = true;
}
});
// hide that column.
if (diff === false) {
hideColumn(i);
}
}
});
console.log("Erkul Column Filter Plugin fully loaded.");
}
function getColumnIndex(name) {
let i;
let found = false;
let headers = $("tr.mat-header-row th");
for (i = 0; i < headers.length; i++) {
if ($(headers[i]).text() == name) {
found = true;
break;
}
}
if (!found) return -1;
return i;
}
function hideColumnByName(name) {
let i = getColumnIndex(name);
if (i == -1) return;
hideColumn(i);
}
function hideColumn(i) {
$($("tr.mat-header-row th")[i]).hide();
$.each($("tr.mat-row"), function(j, row) {
let cols = $("td", row);
$(cols[i]).hide();
});
}
function showColumnByName(name) {
let i = getColumnIndex(name);
if (i == -1) return;
showColumn(i);
}
function showColumn(i) {
$($("tr.mat-header-row th")[i]).show();
$.each($("tr.mat-row"), function(j, row) {
let cols = $("td", row);
$(cols[i]).show();
});
}

View File

@ -1,67 +0,0 @@
// ==UserScript==
// @name Erkul Redundancy Filter
// @namespace https://annabunch.es
// @version 0.1
// @description Hide identical columns on erkul.games
// @copyright 2021, annabunches
// @include https://www.erkul.games/*
// @require https://code.jquery.com/jquery-latest.js
// @require https://gist.githubusercontent.com/BrockA/2625891/raw/9c97aa67ff9c5d56be34a55ad6c18a314e5eb548/waitForKeyElements.js
// @grant none
// ==/UserScript==
console.log("Erkul Redundancy Filter pre-loading.");
waitForKeyElements("div.filter", loadWidgets);
function makeButton() {
let button = $(document.createElement("div"));
button.html('<button _ngcontent-dae-c11="" class="mat-focus-indicator mat-stroked-button mat-button-base mat-primary" color="primary" mat-stroked-button=""><span class="mat-button-wrapper">Hide Redundant</span><span class="mat-button-ripple mat-ripple" matripple=""></span><span class="mat-button-focus-overlay"></span></button>');
return button;
}
function loadWidgets(jNode) {
console.log("Erkul Redundancy Filter loading.");
let button = makeButton();
$("div.filter").append(button);
button.click(function() {
// get all the rows
let rows = $("tr.mat-row");
let nCols = $("td", rows[0]).length;
// for each column...
for (let i = 0; i < nCols; i++) {
let last = "";
let diff = false;
// ... iterate over every row, checking whether that column is different
// on any row. If it is the same everywhere...
$.each(rows, function(j, row){
let cols = $("td", row);
console.log("Last: " + last);
console.log("This: " + $(cols[i]).html());
if (last == "") {
last = $(cols[i]).html();
} else if ($(cols[i]).html() != last) {
diff = true;
}
});
// hide that column.
if (diff === false) {
$.each(rows, function(j, row) {
let cols = $("td", row);
$(cols[i]).css("display", "none");
});
// and your little header, too
let headers = $("tr.mat-header-row th");
$(headers[i]).css("display", "none");
}
}
});
console.log("Erkul Redundancy Filter fully loaded.");
}
console.log("Erkul Redundancy Filter pre-loaded.");

View File

@ -1,7 +1,7 @@
Copyright 2021 annabunches@gmail.com
⚠️ WARNING! ⚠️
☢️ 😱 DO NOT USE THIS PROGRAM. 😱 ☢️
⚠️ WARNING! ⚠️
☢️ 😱 DO NOT USE THIS PROGRAM. 😱 ☢️
This program is not a program of honor.
No highly esteemed function is executed here.
@ -13,7 +13,7 @@ without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE.
This program is best shunned and left unused (but it is free software,
and you are welcome to redistribute it under certain conditions).
and you are welcome to redistribute it under certain conditions).
😱 ☢️ DO NOT USE THIS PROGRAM. ☢️ 😱
This program is licensed under the Sandia Message Public License,