Quick and dirty stat re-creator button
This commit is contained in:
parent
ae4a9a7b14
commit
cd1a8c9224
|
@ -1,6 +1,7 @@
|
||||||
// statsHelper.js
|
// statsHelper.js
|
||||||
import { getRequestHeaders, callPopup, characters, this_chid } from "../script.js";
|
import { getRequestHeaders, callPopup, characters, this_chid } from "../script.js";
|
||||||
import { humanizeGenTime } from "./RossAscends-mods.js";
|
import { humanizeGenTime } from "./RossAscends-mods.js";
|
||||||
|
import {registerDebugFunction,} from "./power-user.js";
|
||||||
|
|
||||||
let charStats = {};
|
let charStats = {};
|
||||||
|
|
||||||
|
@ -191,6 +192,32 @@ async function getStats() {
|
||||||
charStats = await response.json();
|
charStats = await response.json();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Asynchronously recreates the stats file from chat files.
|
||||||
|
*
|
||||||
|
* Sends a POST request to the "/recreatestats" endpoint. If the request fails,
|
||||||
|
* it displays an error notification and throws an error.
|
||||||
|
*
|
||||||
|
* @throws {Error} If the request to recreate stats is unsuccessful.
|
||||||
|
*/
|
||||||
|
async function recreateStats() {
|
||||||
|
const response = await fetch("/recreatestats", {
|
||||||
|
method: "POST",
|
||||||
|
headers: getRequestHeaders(),
|
||||||
|
body: JSON.stringify({}),
|
||||||
|
cache: "no-cache",
|
||||||
|
});
|
||||||
|
|
||||||
|
if (!response.ok) {
|
||||||
|
toastr.error("Stats could not be loaded. Try reloading the page.");
|
||||||
|
throw new Error("Error getting stats");
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
toastr.success("Stats file recreated successfully!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Calculates the generation time based on start and finish times.
|
* Calculates the generation time based on start and finish times.
|
||||||
*
|
*
|
||||||
|
@ -304,9 +331,22 @@ async function statMesProcess(line, type, characters, this_chid, oldMesssage) {
|
||||||
}
|
}
|
||||||
|
|
||||||
jQuery(() => {
|
jQuery(() => {
|
||||||
|
function init() {
|
||||||
$(".rm_stats_button").on('click', function () {
|
$(".rm_stats_button").on('click', function () {
|
||||||
characterStatsHandler(characters, this_chid);
|
characterStatsHandler(characters, this_chid);
|
||||||
});
|
});
|
||||||
})
|
// Wait for debug functions to load, then add the refresh stats function
|
||||||
|
registerDebugFunction('refreshStats', 'Refresh Stat File', 'Recreates the stats file based on existing chat files', recreateStats);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check every 100ms if registerDebugFunction is defined (this is bad lmao)
|
||||||
|
const interval = setInterval(() => {
|
||||||
|
if (typeof registerDebugFunction !== 'undefined') {
|
||||||
|
clearInterval(interval); // Clear the interval once the function is found
|
||||||
|
init(); // Initialize your code
|
||||||
|
}
|
||||||
|
}, 100);
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
export { userStatsHandler, characterStatsHandler, getStats, statMesProcess, charStats };
|
export { userStatsHandler, characterStatsHandler, getStats, statMesProcess, charStats };
|
||||||
|
|
20
server.js
20
server.js
|
@ -1297,6 +1297,26 @@ app.post("/getstats", jsonParser, function (request, response) {
|
||||||
response.send(JSON.stringify(statsHelpers.getCharStats()));
|
response.send(JSON.stringify(statsHelpers.getCharStats()));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Endpoint: POST /recreatestats
|
||||||
|
*
|
||||||
|
* Triggers the recreation of statistics from chat files.
|
||||||
|
* - If successful: returns a 200 OK status.
|
||||||
|
* - On failure: returns a 500 Internal Server Error status.
|
||||||
|
*
|
||||||
|
* @param {Object} request - Express request object.
|
||||||
|
* @param {Object} response - Express response object.
|
||||||
|
*/
|
||||||
|
app.post("/recreatestats", jsonParser, function (request, response) {
|
||||||
|
if (statsHelpers.loadStatsFile(DIRECTORIES.chats, DIRECTORIES.characters, true)) {
|
||||||
|
return response.sendStatus(200);
|
||||||
|
} else {
|
||||||
|
return response.sendStatus(500);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handle a POST request to update the stats object
|
* Handle a POST request to update the stats object
|
||||||
*
|
*
|
||||||
|
|
|
@ -146,7 +146,13 @@ async function collectAndCreateStats(chatsPath, charactersPath) {
|
||||||
* @param {string} chatsPath - The path to the directory containing the chat files.
|
* @param {string} chatsPath - The path to the directory containing the chat files.
|
||||||
* @param {string} charactersPath - The path to the directory containing the character files.
|
* @param {string} charactersPath - The path to the directory containing the character files.
|
||||||
*/
|
*/
|
||||||
async function loadStatsFile(chatsPath, charactersPath) {
|
async function loadStatsFile(chatsPath, charactersPath, recreateStats = false) {
|
||||||
|
if(recreateStats) {
|
||||||
|
charStats = await collectAndCreateStats(chatsPath, charactersPath); // Call your function to collect and create stats
|
||||||
|
await saveStatsToFile();
|
||||||
|
console.debug("Stats recreated and saved to file.");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
try {
|
try {
|
||||||
const statsFileContent = await readFile(statsFilePath, "utf-8");
|
const statsFileContent = await readFile(statsFilePath, "utf-8");
|
||||||
charStats = JSON.parse(statsFileContent);
|
charStats = JSON.parse(statsFileContent);
|
||||||
|
|
Loading…
Reference in New Issue