mirror of
https://github.com/monkeytypegame/monkeytype.git
synced 2025-11-17 14:19:40 +08:00
smoothing before displaying. part of #3878
This commit is contained in:
parent
aba0f27c06
commit
3d6025f7c2
2 changed files with 30 additions and 15 deletions
|
|
@ -1,5 +1,6 @@
|
|||
import * as ChartController from "../controllers/chart-controller";
|
||||
import Config from "../config";
|
||||
import * as Misc from "../utils/misc";
|
||||
|
||||
import type { ScaleChartOptions } from "chart.js";
|
||||
|
||||
|
|
@ -23,13 +24,21 @@ function hide(): void {
|
|||
|
||||
export function updateData(data: MonkeyTypes.ChartData): void {
|
||||
// let data = filteredResults[filteredId].chartData;
|
||||
const labels = [];
|
||||
let labels = [];
|
||||
for (let i = 1; i <= data.wpm.length; i++) {
|
||||
labels.push(i.toString());
|
||||
}
|
||||
|
||||
//make sure data.wpm and data.err are the same length as data.raw using slice
|
||||
data.wpm = data.wpm.slice(0, data.raw.length);
|
||||
data.err = data.err.slice(0, data.raw.length);
|
||||
labels = labels.slice(0, data.raw.length);
|
||||
|
||||
const smoothedRawData = Misc.smooth(data.raw, 1);
|
||||
|
||||
ChartController.miniResult.data.labels = labels;
|
||||
ChartController.miniResult.data.datasets[0].data = data.wpm;
|
||||
ChartController.miniResult.data.datasets[1].data = data.raw;
|
||||
ChartController.miniResult.data.datasets[1].data = smoothedRawData;
|
||||
ChartController.miniResult.data.datasets[2].data = data.err;
|
||||
|
||||
const maxChartVal = Math.max(
|
||||
|
|
|
|||
|
|
@ -54,7 +54,6 @@ async function updateGraph(): Promise<void> {
|
|||
labels.push(i.toString());
|
||||
}
|
||||
}
|
||||
ChartController.result.data.labels = labels;
|
||||
resultScaleOptions["wpm"].title.text = Config.alwaysShowCPM
|
||||
? "Character per Minute"
|
||||
: "Words per Minute";
|
||||
|
|
@ -62,23 +61,30 @@ async function updateGraph(): Promise<void> {
|
|||
? TestInput.wpmHistory.map((a) => a * 5)
|
||||
: TestInput.wpmHistory;
|
||||
|
||||
let chartData2: number[];
|
||||
|
||||
if (result.chartData === "toolong") return;
|
||||
|
||||
if (useUnsmoothedRaw) {
|
||||
chartData2 =
|
||||
(Config.alwaysShowCPM
|
||||
? result.chartData.unsmoothedRaw?.map((a) => a * 5)
|
||||
: result.chartData.unsmoothedRaw) ?? [];
|
||||
} else {
|
||||
chartData2 = Config.alwaysShowCPM
|
||||
? result.chartData.raw.map((a) => a * 5)
|
||||
: result.chartData.raw;
|
||||
const chartData2 = Config.alwaysShowCPM
|
||||
? result.chartData.raw.map((a) => a * 5)
|
||||
: result.chartData.raw;
|
||||
|
||||
if (
|
||||
Config.mode !== "time" &&
|
||||
TestStats.lastSecondNotRound &&
|
||||
result.testDuration % 1 < 0.5
|
||||
) {
|
||||
labels.pop();
|
||||
chartData1.pop();
|
||||
chartData2.pop();
|
||||
}
|
||||
|
||||
let smoothedRawData = chartData2;
|
||||
if (!useUnsmoothedRaw) {
|
||||
smoothedRawData = Misc.smooth(smoothedRawData, 1);
|
||||
}
|
||||
|
||||
ChartController.result.data.labels = labels;
|
||||
ChartController.result.data.datasets[0].data = chartData1;
|
||||
ChartController.result.data.datasets[1].data = chartData2;
|
||||
ChartController.result.data.datasets[1].data = smoothedRawData;
|
||||
|
||||
ChartController.result.data.datasets[0].label = Config.alwaysShowCPM
|
||||
? "cpm"
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue