From 22ac77896f6cab38a09c085e4182d4c5f0f7073c Mon Sep 17 00:00:00 2001 From: Abdo Date: Wed, 1 May 2024 10:02:59 +0300 Subject: [PATCH] Show review count for Evaluate/Optimize button (#3170) * Revert "Show review count with FSRS evaluation results (#3165)" This reverts commit b7e782c7e1b41445750bf8dd9eaefef57ae28688. * Show review count for Evaluate/Optimize button --- proto/anki/scheduler.proto | 1 - rslib/src/scheduler/fsrs/weights.rs | 21 +++++++++------------ rslib/src/scheduler/service/mod.rs | 3 +-- ts/routes/deck-options/FsrsOptions.svelte | 13 ++++++++----- 4 files changed, 18 insertions(+), 20 deletions(-) diff --git a/proto/anki/scheduler.proto b/proto/anki/scheduler.proto index 38a352d13..bc78100e2 100644 --- a/proto/anki/scheduler.proto +++ b/proto/anki/scheduler.proto @@ -434,7 +434,6 @@ message EvaluateWeightsRequest { message EvaluateWeightsResponse { float log_loss = 1; float rmse_bins = 2; - uint32 review_count = 3; } message ComputeMemoryStateResponse { diff --git a/rslib/src/scheduler/fsrs/weights.rs b/rslib/src/scheduler/fsrs/weights.rs index 45697f38a..93957a69b 100644 --- a/rslib/src/scheduler/fsrs/weights.rs +++ b/rslib/src/scheduler/fsrs/weights.rs @@ -152,7 +152,7 @@ impl Collection { weights: &Weights, search: &str, ignore_revlogs_before: TimestampMillis, - ) -> Result<(u32, ModelEvaluation)> { + ) -> Result { let timing = self.timing_today()?; let mut anki_progress = self.new_progress_handler::(); let guard = self.search_cards_into_table(search, SortMode::NoOrder)?; @@ -164,17 +164,14 @@ impl Collection { fsrs_items_for_training(revlogs, timing.next_day_at, ignore_revlogs_before); anki_progress.state.reviews = review_count as u32; let fsrs = FSRS::new(Some(weights))?; - Ok(( - review_count as u32, - fsrs.evaluate(items, |ip| { - anki_progress - .update(false, |p| { - p.total_iterations = ip.total as u32; - p.current_iteration = ip.current as u32; - }) - .is_ok() - })?, - )) + Ok(fsrs.evaluate(items, |ip| { + anki_progress + .update(false, |p| { + p.total_iterations = ip.total as u32; + p.current_iteration = ip.current as u32; + }) + .is_ok() + })?) } } diff --git a/rslib/src/scheduler/service/mod.rs b/rslib/src/scheduler/service/mod.rs index 003cb2b10..04f4fd90c 100644 --- a/rslib/src/scheduler/service/mod.rs +++ b/rslib/src/scheduler/service/mod.rs @@ -287,7 +287,7 @@ impl crate::services::SchedulerService for Collection { &mut self, input: scheduler::EvaluateWeightsRequest, ) -> Result { - let (review_count, ret) = self.evaluate_weights( + let ret = self.evaluate_weights( &input.weights, &input.search, input.ignore_revlogs_before_ms.into(), @@ -295,7 +295,6 @@ impl crate::services::SchedulerService for Collection { Ok(scheduler::EvaluateWeightsResponse { log_loss: ret.log_loss, rmse_bins: ret.rmse_bins, - review_count, }) } diff --git a/ts/routes/deck-options/FsrsOptions.svelte b/ts/routes/deck-options/FsrsOptions.svelte index e99241558..6887c8561 100644 --- a/ts/routes/deck-options/FsrsOptions.svelte +++ b/ts/routes/deck-options/FsrsOptions.svelte @@ -172,9 +172,7 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html setTimeout( () => alert( - `Reviews: ${ - resp.reviewCount - }, Log loss: ${resp.logLoss.toFixed(4)}, RMSE(bins): ${( + `Log loss: ${resp.logLoss.toFixed(4)}, RMSE(bins): ${( resp.rmseBins * 100 ).toFixed(2)}%. ${tr.deckConfigSmallerIsBetter()}`, ), @@ -228,6 +226,7 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html $: computeRetentionProgressString = renderRetentionProgress( computeRetentionProgress, ); + $: totalReviews = computeWeightsProgress?.reviews ?? undefined; function renderWeightProgress(val: ComputeWeightsProgress | undefined): String { if (!val || !val.total) { @@ -314,9 +313,13 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html {tr.deckConfigEvaluateButton()} {/if} - {#if computingWeights || checkingWeights}
+
+ {#if computingWeights || checkingWeights} {computeWeightsProgressString} -
{/if} + {:else if totalReviews !== undefined} + {tr.statisticsReviews({ reviews: totalReviews })} + {/if} +