// statsHelper.js import { getRequestHeaders, callPopup, token } from '../script.js'; import { humanizeGenTime } from './RossAscends-mods.js'; // Function for creating stat block HTML function createStatBlock(statName, statValue) { return `
${statName}:
${statValue}
`; } function calculateTotal(stat) { return isNaN(stat) ? 0 : stat; } function calculateTotalStats(charStats) { let totalStats = { total_gen_time: 0, user_msg_count: 0, non_user_msg_count: 0, user_word_count: 0, non_user_word_count: 0, total_swipe_count: 0 }; for (let stats of Object.values(charStats)) { totalStats.total_gen_time += calculateTotal(stats.total_gen_time); totalStats.user_msg_count += calculateTotal(stats.user_msg_count); totalStats.non_user_msg_count += calculateTotal(stats.non_user_msg_count); totalStats.user_word_count += calculateTotal(stats.user_word_count); totalStats.non_user_word_count += calculateTotal(stats.non_user_word_count); totalStats.total_swipe_count += calculateTotal(stats.total_swipe_count); } return totalStats; } function createHtml(statsType, stats) { // Get time string let timeStirng = humanizeGenTime(stats.total_gen_time); // Create popup HTML with stats let html = `

${statsType} Stats

`; html += createStatBlock('Chat Time', timeStirng); html += createStatBlock('Total User Messages', stats.user_msg_count); html += createStatBlock('Total Character Messages', stats.non_user_msg_count); html += createStatBlock('Total User Words', stats.user_word_count); html += createStatBlock('Total Character Words', stats.non_user_word_count); html += createStatBlock('Swipes', stats.total_swipe_count); callPopup(html, 'text'); } async function userStatsHandler(charStats) { // Get stats from server let stats = await getStats(charStats); // Calculate total stats let totalStats = calculateTotalStats(stats); console.log(totalStats); // Create HTML with stats createHtml('User', totalStats); } async function characterStatsHandler(charStats, characters, this_chid) { // Get stats from server let stats = await getStats(charStats); // Get character stats let myStats = stats[characters[this_chid].avatar]; // Create HTML with stats createHtml('Character', myStats); } async function getStats(charStats) { const response = await fetch("/getstats", { 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'); } const data = await response.json(); return data; } export { userStatsHandler, characterStatsHandler, getStats };