From b385490728b1bca33d110dffdd9b06dc4fab6d2f Mon Sep 17 00:00:00 2001
From: lowercasedonkey <lowercasedonkey@gmail.com>
Date: Tue, 25 May 2021 20:28:20 -0400
Subject: [PATCH] allow filtering actors for validity

---
 src/events/debugEvent.js | 24 +++++++++++++++++++++++-
 1 file changed, 23 insertions(+), 1 deletion(-)

diff --git a/src/events/debugEvent.js b/src/events/debugEvent.js
index 93bc4f7678b..975f364209d 100644
--- a/src/events/debugEvent.js
+++ b/src/events/debugEvent.js
@@ -5,6 +5,7 @@ App.Events.debugEvent = function(eventName) {
 	const frag = document.createDocumentFragment();
 	/** @type {App.Events.BaseEvent} */
 	const event = eval(`new ${eventName}`);
+	let displayOnlyValid = false;
 
 	function makeCastList() {
 		const cast = document.createDocumentFragment();
@@ -26,6 +27,24 @@ App.Events.debugEvent = function(eventName) {
 	function makeActorList() {
 		const actors = document.createDocumentFragment();
 		const actorReqs = event.actorPrerequisites();
+		if (!displayOnlyValid) {
+			App.UI.DOM.appendNewElement("div", actors, App.UI.DOM.link(
+				"Show only valid slaves",
+				() => {
+					displayOnlyValid = true;
+					$('#actorList').empty().append(makeActorList());
+				}
+			));
+		} else {
+			App.UI.DOM.appendNewElement("div", actors, App.UI.DOM.link(
+				"Show all slaves",
+				() => {
+					displayOnlyValid = false;
+					$('#actorList').empty().append(makeActorList());
+				}
+			));
+		}
+
 		if (actorReqs.length === 1) {
 			actors.append(singleActorList(0));
 		} else {
@@ -41,7 +60,7 @@ App.Events.debugEvent = function(eventName) {
 		function singleActorList(i) {
 			let tab = App.UI.DOM.makeElement("div");
 			for (const slave of V.slaves) {
-				let slaveDiv = App.UI.DOM.appendNewElement("div", tab, App.UI.DOM.makeElement("span", SlaveFullName(slave), "slave-name"));
+				let slaveDiv = App.UI.DOM.makeElement("div", App.UI.DOM.makeElement("span", SlaveFullName(slave), "slave-name"));
 				let slaveFails = false;
 				for (const p of actorReqs[i]) {
 					let passed = testPredicate(slaveDiv, p, slave);
@@ -50,8 +69,11 @@ App.Events.debugEvent = function(eventName) {
 				}
 				if (!slaveFails) {
 					App.UI.DOM.appendNewElement("div", slaveDiv, App.UI.DOM.link("Choose this slave", castSlave, [slave, i]), "indent");
+				} else if (displayOnlyValid) {
+					continue;
 				}
 				App.UI.DOM.appendNewElement("hr", tab);
+				tab.append(slaveDiv);
 			}
 			return tab;
 		}
-- 
GitLab