From 9b838352e6a4ac875d2c5f79c82ea513e6247311 Mon Sep 17 00:00:00 2001 From: Luc Mcgrady Date: Mon, 14 Jul 2025 10:56:37 +0100 Subject: [PATCH] add review count graph --- proto/anki/scheduler.proto | 1 + rslib/src/scheduler/fsrs/simulator.rs | 2 ++ ts/routes/deck-options/SimulatorModal.svelte | 10 +++++++++- ts/routes/graphs/simulator.ts | 3 +++ 4 files changed, 15 insertions(+), 1 deletion(-) diff --git a/proto/anki/scheduler.proto b/proto/anki/scheduler.proto index 2dd92440b..a88cd468c 100644 --- a/proto/anki/scheduler.proto +++ b/proto/anki/scheduler.proto @@ -419,6 +419,7 @@ message SimulateFsrsReviewResponse { message SimulateFsrsWorkloadResponse { map cost = 1; map memorized = 2; + map review_count = 3; } message ComputeOptimalRetentionResponse { diff --git a/rslib/src/scheduler/fsrs/simulator.rs b/rslib/src/scheduler/fsrs/simulator.rs index eba6575f0..2c4db940e 100644 --- a/rslib/src/scheduler/fsrs/simulator.rs +++ b/rslib/src/scheduler/fsrs/simulator.rs @@ -289,6 +289,7 @@ impl Collection { ( *result.memorized_cnt_per_day.last().unwrap_or(&0.), result.cost_per_day.iter().sum::(), + result.review_cnt_per_day.iter().sum::() as u32, ), )) }) @@ -296,6 +297,7 @@ impl Collection { Ok(SimulateFsrsWorkloadResponse { memorized: dr_workload.iter().map(|(k, v)| (*k, v.0)).collect(), cost: dr_workload.iter().map(|(k, v)| (*k, v.1)).collect(), + review_count: dr_workload.iter().map(|(k, v)| (*k, v.2)).collect(), }) } } diff --git a/ts/routes/deck-options/SimulatorModal.svelte b/ts/routes/deck-options/SimulatorModal.svelte index 40f680d9a..8612b79bd 100644 --- a/ts/routes/deck-options/SimulatorModal.svelte +++ b/ts/routes/deck-options/SimulatorModal.svelte @@ -216,7 +216,7 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html x: parseInt(dr), timeCost: resp!.cost[dr], memorized: v, - count: -1, + count: resp!.reviewCount[dr], label: workloadSimulationNumber, })), ); @@ -617,6 +617,14 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html /> {"Ratio"} +