From 5cd7cd6579d87332919598e1216a955d527440b1 Mon Sep 17 00:00:00 2001 From: Jack Date: Thu, 16 Sep 2021 00:27:38 +0100 Subject: [PATCH] correctly showing cpm on account page when cpm mode is enabled. closes #1842 --- src/js/account.js | 131 +++++++++++++++++++++++++++++++------ src/js/chart-controller.js | 9 +-- 2 files changed, 117 insertions(+), 23 deletions(-) diff --git a/src/js/account.js b/src/js/account.js index e19240289..bcbd2a2bc 100644 --- a/src/js/account.js +++ b/src/js/account.js @@ -235,7 +235,9 @@ function loadMoreLines(lineIndex) { let raw; try { - raw = result.rawWpm.toFixed(2); + raw = Config.alwaysShowCPM + ? (result.rawWpm * 5).toFixed(2) + : result.rawWpm.toFixed(2); if (raw == undefined) { raw = "-"; } @@ -342,7 +344,7 @@ function loadMoreLines(lineIndex) { $(".pageAccount .history table tbody").append(` ${pb} - ${result.wpm.toFixed(2)} + ${(Config.alwaysShowCPM ? result.wpm * 5 : result.wpm).toFixed(2)} ${raw} ${result.acc.toFixed(2)}% ${consistency} @@ -689,7 +691,7 @@ export function update() { chartData.push({ x: result.timestamp, - y: result.wpm, + y: Config.alwaysShowCPM ? Misc.roundTo2(result.wpm * 5) : result.wpm, acc: result.acc, mode: result.mode, mode2: result.mode2, @@ -697,7 +699,9 @@ export function update() { language: result.language, timestamp: result.timestamp, difficulty: result.difficulty, - raw: result.rawWpm, + raw: Config.alwaysShowCPM + ? Misc.roundTo2(result.rawWpm * 5) + : result.rawWpm, }); wpmChartData.push(result.wpm); @@ -721,6 +725,17 @@ export function update() { totalWpm += result.wpm; }); + + if (Config.alwaysShowCPM) { + $(".pageAccount .group.history table thead tr td:nth-child(2)").text( + "cpm" + ); + } else { + $(".pageAccount .group.history table thead tr td:nth-child(2)").text( + "wpm" + ); + } + loadMoreLines(); //////// @@ -773,14 +788,33 @@ export function update() { activityChartData_avgWpm.push({ x: parseInt(date), y: Misc.roundTo2( - activityChartData[date].totalWpm / activityChartData[date].amount + (Config.alwaysShowCPM + ? activityChartData[date].totalWpm * 5 + : activityChartData[date].totalWpm) / activityChartData[date].amount ), }); lastTimestamp = date; }); + + if (Config.alwaysShowCPM) { + ChartController.accountActivity.options.scales.yAxes[1].scaleLabel.labelString = + "Average Cpm"; + } else { + ChartController.accountActivity.options.scales.yAxes[1].scaleLabel.labelString = + "Average Wpm"; + } + ChartController.accountActivity.data.datasets[0].data = activityChartData_time; ChartController.accountActivity.data.datasets[1].data = activityChartData_avgWpm; + if (Config.alwaysShowCPM) { + ChartController.accountHistory.options.scales.yAxes[0].scaleLabel.labelString = + "Characters per Minute"; + } else { + ChartController.accountHistory.options.scales.yAxes[0].scaleLabel.labelString = + "Words per Minute"; + } + ChartController.accountHistory.data.datasets[0].data = chartData; ChartController.accountHistory.data.datasets[1].data = accChartData; @@ -818,19 +852,75 @@ export function update() { Misc.secondsToString(Math.round(totalSecondsFiltered), true, true) ); - $(".pageAccount .highestWpm .val").text(topWpm); - $(".pageAccount .averageWpm .val").text(Math.round(totalWpm / testCount)); - $(".pageAccount .averageWpm10 .val").text( - Math.round(wpmLast10total / last10) - ); + if (Config.alwaysShowCPM) { + $(".pageAccount .highestWpm .title").text("highest cpm"); + $(".pageAccount .highestWpm .val").text(Misc.roundTo2(topWpm * 5)); + } else { + $(".pageAccount .highestWpm .title").text("highest wpm"); + $(".pageAccount .highestWpm .val").text(Misc.roundTo2(topWpm)); + } - $(".pageAccount .highestRaw .val").text(rawWpm.max); - $(".pageAccount .averageRaw .val").text( - Math.round(rawWpm.total / rawWpm.count) - ); - $(".pageAccount .averageRaw10 .val").text( - Math.round(rawWpm.last10Total / rawWpm.last10Count) - ); + if (Config.alwaysShowCPM) { + $(".pageAccount .averageWpm .title").text("average cpm"); + $(".pageAccount .averageWpm .val").text( + Math.round((totalWpm * 5) / testCount) + ); + } else { + $(".pageAccount .averageWpm .title").text("average wpm"); + $(".pageAccount .averageWpm .val").text(Math.round(totalWpm / testCount)); + } + + if (Config.alwaysShowCPM) { + $(".pageAccount .averageWpm10 .title").text( + "average cpm (last 10 tests)" + ); + $(".pageAccount .averageWpm10 .val").text( + Math.round((wpmLast10total * 5) / last10) + ); + } else { + $(".pageAccount .averageWpm10 .title").text( + "average wpm (last 10 tests)" + ); + $(".pageAccount .averageWpm10 .val").text( + Math.round(wpmLast10total / last10) + ); + } + + if (Config.alwaysShowCPM) { + $(".pageAccount .highestRaw .title").text("highest raw cpm"); + $(".pageAccount .highestRaw .val").text(Misc.roundTo2(rawWpm.max * 5)); + } else { + $(".pageAccount .highestRaw .title").text("highest raw wpm"); + $(".pageAccount .highestRaw .val").text(Misc.roundTo2(rawWpm.max)); + } + + if (Config.alwaysShowCPM) { + $(".pageAccount .averageRaw .title").text("average raw cpm"); + $(".pageAccount .averageRaw .val").text( + Math.round((rawWpm.total * 5) / rawWpm.count) + ); + } else { + $(".pageAccount .averageRaw .title").text("average raw wpm"); + $(".pageAccount .averageRaw .val").text( + Math.round(rawWpm.total / rawWpm.count) + ); + } + + if (Config.alwaysShowCPM) { + $(".pageAccount .averageRaw10 .title").text( + "average raw cpm (last 10 tests)" + ); + $(".pageAccount .averageRaw10 .val").text( + Math.round((rawWpm.last10Total * 5) / rawWpm.last10Count) + ); + } else { + $(".pageAccount .averageRaw10 .title").text( + "average raw wpm (last 10 tests)" + ); + $(".pageAccount .averageRaw10 .val").text( + Math.round(rawWpm.last10Total / rawWpm.last10Count) + ); + } $(".pageAccount .highestWpm .mode").html(topMode); $(".pageAccount .testsTaken .val").text(testCount); @@ -888,8 +978,11 @@ export function update() { $(".pageAccount .group.chart .below .text").text( `Speed change per hour spent typing: ${ - plus + Misc.roundTo2(wpmChangePerHour) - } wpm.` + plus + + Misc.roundTo2( + Config.alwaysShowCPM ? wpmChangePerHour * 5 : wpmChangePerHour + ) + } ${Config.alwaysShowCPM ? "cpm" : "wpm"}.` ); ChartController.accountHistory.update({ duration: 0 }); diff --git a/src/js/chart-controller.js b/src/js/chart-controller.js index 8b9563621..a0594017d 100644 --- a/src/js/chart-controller.js +++ b/src/js/chart-controller.js @@ -3,6 +3,7 @@ import * as TestStats from "./test-stats"; import * as ThemeColors from "./theme-colors"; import * as Misc from "./misc"; import * as Account from "./account"; +import Config, * as UpdateConfig from "./config"; export let result = new Chart($("#wpmChart"), { type: "line", @@ -212,9 +213,7 @@ export let accountHistory = new Chart($(".pageAccount #accountHistoryChart"), { )}%\nacc: ${Misc.roundTo2(100 - resultData.y)}%`; } let label = - `${data.datasets[tooltipItem.datasetIndex].label}: ${ - tooltipItem.yLabel - }` + + `${Config.alwaysShowCPM ? "cpm" : "wpm"}: ${tooltipItem.yLabel}` + "\n" + `raw: ${resultData.raw}` + "\n" + @@ -364,7 +363,9 @@ export let accountActivity = new Chart( true )}\nTests Completed: ${resultData.amount}`; } else if (tooltipItem.datasetIndex === 1) { - return `Average Wpm: ${Misc.roundTo2(resultData.y)}`; + return `Average ${ + Config.alwaysShowCPM ? "Cpm" : "Wpm" + }: ${Misc.roundTo2(resultData.y)}`; } }, label: function () {