smoothing before displaying. part of #3878

This commit is contained in:
Miodec 2023-01-04 18:46:19 +01:00
parent aba0f27c06
commit 3d6025f7c2
2 changed files with 30 additions and 15 deletions

View file

@ -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(

View file

@ -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"