From d04191d79bcc7cd083c5536643a6aaf9792f7c12 Mon Sep 17 00:00:00 2001
From: lowercasedonkey <lowercasedonkey@gmail.com>
Date: Thu, 26 Mar 2020 09:34:32 -0400
Subject: [PATCH] it's working!

---
 .../BackwardsCompatibility.tw                 |   5 +-
 .../backwardsCompatibility.js                 | 107 +++++++++++-------
 2 files changed, 71 insertions(+), 41 deletions(-)

diff --git a/src/data/backwardsCompatibility/BackwardsCompatibility.tw b/src/data/backwardsCompatibility/BackwardsCompatibility.tw
index 7c5f0ca9f42..15d45f2dd2b 100644
--- a/src/data/backwardsCompatibility/BackwardsCompatibility.tw
+++ b/src/data/backwardsCompatibility/BackwardsCompatibility.tw
@@ -7,4 +7,7 @@
 
 /* resetOnNGPlus contains half of the variables we need, but we use it politely here instead of forcing it so it fills in holes instead of overwriting data */
 <<run App.Update.setNonexistantProperties(V, App.Data.resetOnNGPlus)>>
-<<= App.Update.backwardsCompatibility()>>
\ No newline at end of file
+<span id="backwardsCompatibility"></span>
+<script>
+    App.Update.backwardsCompatibility();
+</script>
\ No newline at end of file
diff --git a/src/data/backwardsCompatibility/backwardsCompatibility.js b/src/data/backwardsCompatibility/backwardsCompatibility.js
index 8a1f311dbfa..96d789edf5c 100644
--- a/src/data/backwardsCompatibility/backwardsCompatibility.js
+++ b/src/data/backwardsCompatibility/backwardsCompatibility.js
@@ -21,6 +21,7 @@ App.Update.autoshred = function() {
 	if (extraCount !== 0) {
 		console.log(`and ${extraCount} more`);
 	}
+	return `Done!`;
 };
 
 App.Update.setNonexistantProperties = function(obj, props) {
@@ -52,49 +53,74 @@ App.Update.setExistantProperties = function(obj, array) {
 };
 
 App.Update.backwardsCompatibility = function() {
-	const backup = clone(State.variables);
-	let r = "";
+	let div;
+	jQuery('#backwardsCompatibility').empty();
 	try {
-		r += `<div>`;
-		r += App.Update.oldVersions();
-		r += `</div><div>`;
-		r += App.Update.genePoolRecords();
-		r += `</div><div>`;
-		r += App.Update.globalVariables();
-		r += `</div><div>`;
-		r += App.Update.slaveVariables();
-		r += `</div><div>`;
-		r += App.Update.slaveRecords();
-		r += `</div><div>`;
-		r += App.Update.RAassistantData();
-		r += `</div>`;
+		div = document.createElement('div');
+		div.append(`Check for old version... `);
+		jQuery('#backwardsCompatibility').append(div);
+		div.append(App.Update.oldVersions());
+
+		div = document.createElement('div');
+		div.append(`Updating gene pool records... `);
+		jQuery('#backwardsCompatibility').append(div);
+		div.append(App.Update.genePoolRecords());
+
+		div = document.createElement('div');
+		div.append(`Updating global variables... `);
+		jQuery('#backwardsCompatibility').append(div);
+		div.append(App.Update.globalVariables());
+
+		div = document.createElement('div');
+		div.append(`Updating slave variables... `);
+		jQuery('#backwardsCompatibility').append(div);
+		div.append(App.Update.slaveVariables());
+
+		div = document.createElement('div');
+		div.append(`Updating slave records... `);
+		jQuery('#backwardsCompatibility').append(div);
+		div.append(App.Update.slaveRecords());
+
+		div = document.createElement('div');
+		div.append(`Rule Assistant data... `);
+		jQuery('#backwardsCompatibility').append(div);
+		div.append(App.Update.RAassistantData());
 
 		/* Sec Exp */
-		r += `<div>SecExp... `;
+
+		div = document.createElement('div');
+		div.append(`Security Expansion... `);
+		jQuery('#backwardsCompatibility').append(div);
 		App.SecExp.Check.general();
-		r += `Done!</div>`;
+		div.append("Done!");
+
 		if (V.secExpEnabled === 1) {
-			r += `<div><<include "SecExpBackwardCompatibility">></div>`;
+			div.append(jQuery.wiki(`<<include "SecExpBackwardCompatibility">>`));
 		}
 
-		r += `<div>Shredding... `;
-		App.Update.autoshred();
-		r+= ` Done!</div>`;
+		div = document.createElement('div');
+		div.append(`Checking for old variables... `);
+		jQuery('#backwardsCompatibility').append(div);
+		div.append(App.Update.autoshred());
 
 		/* leave this at the bottom of BC */
-		r += `<div>Cleaning up... `;
-		App.Update.cleanUp();
-		r+= ` Done!</div>`;
+		div = document.createElement('div');
+		div.append(`Cleaning up... `);
+		jQuery('#backwardsCompatibility').append(div);
+		div.append(App.Update.cleanUp());
 	} catch (error) {
-		r += `<div>Backwards compatibility has failed for your save.  Please upload your save to https://gitgud.io/pregmodfan/fc-pregmod/ with notes on what went wrong so that we can fix the backwards compatibility process for everyone.  Thank you!</div>`;
+		div = document.createElement('p');
+		div.className = "red";
+		div.textContent = `Backwards compatibility has failed for your save.  Please upload your save to https://gitgud.io/pregmodfan/fc-pregmod/ with notes on what went wrong so that we can fix the backwards compatibility process for everyone.  Thank you!`;
+		jQuery('#backwardsCompatibility').append(div);
 		State.restore();
 		throw (error); // rethrow the exception to Sugarcube so we get a fancy stack trace
 	}
-	return r;
+	return;
 };
 
 App.Update.globalVariables = function() {
-	let r = `Setting missing global variables... `;
+	let r = ``;
 	if (Array.isArray(V.nationalities)) {
 		V.nationalities = weightedArray2HashMap(V.nationalities);
 	}
@@ -1110,12 +1136,12 @@ App.Update.globalVariables = function() {
 	EconomyDatatypeCleanup();
 	ArcologyDatatypeCleanup();
 
-	r += ` Done!<br>`;
+	r += `Done!`;
 	return r;
 };
 
 App.Update.slaveVariables = function() {
-	let r = `Setting missing slave variables... `;
+	let r = ``;
 	/* Adding a new variable? Consider putting it in datatypeCleanupJS.tw instead of here */
 	for (let bci = 0; bci < V.slaves.length; bci++) {
 		let Slave = V.slaves[bci];
@@ -1129,12 +1155,12 @@ App.Update.slaveVariables = function() {
 
 		V.slaves[bci] = Slave;
 	}
-	r += ` Done!<br>`;
+	r += `Done!`;
 	return r;
 };
 
 App.Update.slaveRecords = function() {
-	let r = `Checking and fixing slave records...`;
+	let r = ``;
 	V.slaves.forEach((slave) => {
 		App.Entity.Utils.SlaveDataSchemeCleanup(slave);
 		SlaveDatatypeCleanup(slave);
@@ -1163,7 +1189,7 @@ App.Update.slaveRecords = function() {
 		App.Entity.Utils.SlaveDataSchemeCleanup(V.traitor);
 		SlaveDatatypeCleanup(V.traitor);
 	}
-	r += ` Done!<br>`;
+	r += `Done!`;
 
 	if (V.tanks.length > 0) {
 		r += `Checking and fixing records for incubator tanks... `;
@@ -1173,7 +1199,7 @@ App.Update.slaveRecords = function() {
 			SlaveDatatypeCleanup(slave, true);
 			/* pass second argument as true so that slaveAgeDatatypeCleanup is not run */
 		});
-		r += ` Done!<br> `;
+		r += `Done! `;
 	}
 
 	if (V.cribs.length > 0) {
@@ -1193,13 +1219,13 @@ App.Update.slaveRecords = function() {
 				// let _nurseryChild = V.cribs[bci]; TODO: on importing this to JS, what is this even supposed to do?
 			}
 		}
-		r += ` Done!<br> `;
+		r += `Done!`;
 	}
 	return r;
 };
 
 App.Update.genePoolRecords = function() {
-	let r = `Updating gene pool records... `;
+	let r = ``;
 	for (let bci = 0; bci < V.genePool.length; bci++) {
 		App.Update.Slave(V.genePool[bci], true);
 		let slave = V.genePool[bci];
@@ -1287,14 +1313,14 @@ App.Update.genePoolRecords = function() {
 		App.Entity.Utils.GenePoolRecordCleanup(slave);
 		V.genePool[bci] = slave;
 	}
-	r += ` Done!<br>`;
+	r += `Done!`;
 	return r;
 };
 
 App.Update.RAassistantData = function() {
-	let r = `Updating Rules Assistant data...`;
+	let r = ``;
 	V.defaultRules = V.defaultRules.map(rule => App.Entity.Utils.RARuleDatatypeCleanup(rule));
-	r += ` Done!<br>`;
+	r += `Done!`;
 	return r;
 };
 
@@ -1964,13 +1990,14 @@ App.Update.oldVersions = function() {
 			V.PC.faceShape = "normal";
 		}
 
-		r += ` Done!`;
+		r += `Done!`;
 	}
 
 	if (V.arcologyUpgrade.spire === 1 && !V.building.usedUpgrades.includes("spire")) {
 		V.building.usedUpgrades.push("spire");
 	}
 
+	r += `Done!`;
 	return r;
 };
 
@@ -1981,7 +2008,7 @@ App.Update.cleanUp = function() {
 	}
 	/* reset NaNArray after BC is run */
 	V.NaNArray = findNaN();
-	return;
+	return `Done!`;
 };
 
 App.Update.sectorsToBuilding = function() {
-- 
GitLab