From 0301ae1d8a80a6f4dbbaf1cc41976f4106f1ce41 Mon Sep 17 00:00:00 2001 From: Damien Elmes Date: Sat, 16 Sep 2023 16:18:13 +1000 Subject: [PATCH] fsrs_memory_state -> memory_state --- proto/anki/cards.proto | 2 +- proto/anki/scheduler.proto | 4 ++-- proto/anki/stats.proto | 2 +- pylib/anki/cards.py | 8 +++----- rslib/src/browser_table.rs | 6 +++--- rslib/src/card/mod.rs | 4 ++-- rslib/src/card/service.rs | 4 ++-- rslib/src/scheduler/answering/current.rs | 10 +++++----- rslib/src/scheduler/answering/learning.rs | 4 ++-- rslib/src/scheduler/answering/mod.rs | 2 +- rslib/src/scheduler/answering/relearning.rs | 2 +- rslib/src/scheduler/answering/review.rs | 2 +- rslib/src/scheduler/fsrs/memory_state.rs | 2 +- rslib/src/scheduler/new.rs | 2 +- .../src/scheduler/service/states/learning.rs | 4 ++-- rslib/src/scheduler/service/states/review.rs | 4 ++-- rslib/src/scheduler/states/learning.rs | 14 ++++++------- rslib/src/scheduler/states/normal.rs | 2 +- rslib/src/scheduler/states/relearning.rs | 20 +++++++++---------- rslib/src/scheduler/states/review.rs | 20 +++++++++---------- rslib/src/stats/card.rs | 4 ++-- rslib/src/stats/graphs/eases.rs | 2 +- rslib/src/stats/graphs/retrievability.rs | 2 +- rslib/src/storage/card/data.rs | 6 +++--- rslib/src/storage/card/mod.rs | 2 +- rslib/src/storage/sqlite.rs | 2 +- rslib/src/sync/collection/chunks.rs | 2 +- ts/card-info/CardStats.svelte | 14 +++++-------- 28 files changed, 73 insertions(+), 79 deletions(-) diff --git a/proto/anki/cards.proto b/proto/anki/cards.proto index e0f41f12c..46a93878f 100644 --- a/proto/anki/cards.proto +++ b/proto/anki/cards.proto @@ -49,7 +49,7 @@ message Card { int64 original_deck_id = 16; uint32 flags = 17; optional uint32 original_position = 18; - optional FsrsMemoryState fsrs_memory_state = 20; + optional FsrsMemoryState memory_state = 20; string custom_data = 19; } diff --git a/proto/anki/scheduler.proto b/proto/anki/scheduler.proto index d26ebad31..493d3422b 100644 --- a/proto/anki/scheduler.proto +++ b/proto/anki/scheduler.proto @@ -63,7 +63,7 @@ message SchedulingState { message Learning { uint32 remaining_steps = 1; uint32 scheduled_secs = 2; - optional cards.FsrsMemoryState fsrs_memory_state = 6; + optional cards.FsrsMemoryState memory_state = 6; } message Review { uint32 scheduled_days = 1; @@ -71,7 +71,7 @@ message SchedulingState { float ease_factor = 3; uint32 lapses = 4; bool leeched = 5; - optional cards.FsrsMemoryState fsrs_memory_state = 6; + optional cards.FsrsMemoryState memory_state = 6; } message Relearning { Review review = 1; diff --git a/proto/anki/stats.proto b/proto/anki/stats.proto index 4a4301a5d..c08e4407d 100644 --- a/proto/anki/stats.proto +++ b/proto/anki/stats.proto @@ -52,7 +52,7 @@ message CardStatsResponse { float total_secs = 15; string card_type = 16; string notetype = 17; - optional cards.FsrsMemoryState fsrs_memory_state = 18; + optional cards.FsrsMemoryState memory_state = 18; // not set if due date/state not available optional float fsrs_retrievability = 19; string custom_data = 20; diff --git a/pylib/anki/cards.py b/pylib/anki/cards.py index 43e74f6e8..aca199751 100644 --- a/pylib/anki/cards.py +++ b/pylib/anki/cards.py @@ -45,7 +45,7 @@ class Card(DeprecatedNamesMixin): odid: anki.decks.DeckId queue: CardQueue type: CardType - fsrs_memory_state: FSRSMemoryState | None + memory_state: FSRSMemoryState | None def __init__( self, @@ -95,9 +95,7 @@ class Card(DeprecatedNamesMixin): card.original_position if card.HasField("original_position") else None ) self.custom_data = card.custom_data - self.fsrs_memory_state = ( - card.fsrs_memory_state if card.HasField("fsrs_memory_state") else None - ) + self.memory_state = card.memory_state if card.HasField("memory_state") else None def _to_backend_card(self) -> cards_pb2.Card: # mtime & usn are set by backend @@ -119,7 +117,7 @@ class Card(DeprecatedNamesMixin): flags=self.flags, original_position=self.original_position, custom_data=self.custom_data, - fsrs_memory_state=self.fsrs_memory_state, + memory_state=self.memory_state, ) def flush(self) -> None: diff --git a/rslib/src/browser_table.rs b/rslib/src/browser_table.rs index 668ee001f..7d823f9e9 100644 --- a/rslib/src/browser_table.rs +++ b/rslib/src/browser_table.rs @@ -472,7 +472,7 @@ impl RowContext { fn fsrs_stability_str(&self) -> String { self.cards[0] - .fsrs_memory_state + .memory_state .as_ref() .map(|s| time_span(s.stability * 86400.0, &self.tr, false)) .unwrap_or_default() @@ -480,7 +480,7 @@ impl RowContext { fn fsrs_difficulty_str(&self) -> String { self.cards[0] - .fsrs_memory_state + .memory_state .as_ref() .map(|s| format!("{:.0}%", (s.difficulty - 1.0) / 9.0 * 100.0)) .unwrap_or_default() @@ -488,7 +488,7 @@ impl RowContext { fn fsrs_retrievability_str(&self) -> String { self.cards[0] - .fsrs_memory_state + .memory_state .as_ref() .zip(self.cards[0].days_since_last_review(&self.timing)) .map(|(state, days_elapsed)| { diff --git a/rslib/src/card/mod.rs b/rslib/src/card/mod.rs index bcfa89c29..ee7bbc3a3 100644 --- a/rslib/src/card/mod.rs +++ b/rslib/src/card/mod.rs @@ -93,7 +93,7 @@ pub struct Card { pub(crate) flags: u8, /// The position in the new queue before leaving it. pub(crate) original_position: Option, - pub(crate) fsrs_memory_state: Option, + pub(crate) memory_state: Option, /// JSON object or empty; exposed through the reviewer for persisting custom /// state pub(crate) custom_data: String, @@ -126,7 +126,7 @@ impl Default for Card { original_deck_id: DeckId(0), flags: 0, original_position: None, - fsrs_memory_state: None, + memory_state: None, custom_data: String::new(), } } diff --git a/rslib/src/card/service.rs b/rslib/src/card/service.rs index 6d3fa573b..57efbe8a5 100644 --- a/rslib/src/card/service.rs +++ b/rslib/src/card/service.rs @@ -100,7 +100,7 @@ impl TryFrom for Card { original_deck_id: DeckId(c.original_deck_id), flags: c.flags as u8, original_position: c.original_position, - fsrs_memory_state: c.fsrs_memory_state.map(Into::into), + memory_state: c.memory_state.map(Into::into), custom_data: c.custom_data, }) } @@ -127,7 +127,7 @@ impl From for anki_proto::cards::Card { original_deck_id: c.original_deck_id.0, flags: c.flags as u32, original_position: c.original_position.map(Into::into), - fsrs_memory_state: c.fsrs_memory_state.map(Into::into), + memory_state: c.memory_state.map(Into::into), custom_data: c.custom_data, } } diff --git a/rslib/src/scheduler/answering/current.rs b/rslib/src/scheduler/answering/current.rs index 3e9f9435e..bce04fcf0 100644 --- a/rslib/src/scheduler/answering/current.rs +++ b/rslib/src/scheduler/answering/current.rs @@ -63,7 +63,7 @@ impl CardStateUpdater { let lapses = self.card.lapses; let ease_factor = self.card.ease_factor(); let remaining_steps = self.card.remaining_steps(); - let fsrs_memory_state = self.card.fsrs_memory_state; + let memory_state = self.card.memory_state; match self.card.ctype { CardType::New => NormalState::New(NewState { @@ -73,7 +73,7 @@ impl CardStateUpdater { LearnState { scheduled_secs: self.learn_steps().current_delay_secs(remaining_steps), remaining_steps, - fsrs_memory_state, + memory_state, } } .into(), @@ -84,14 +84,14 @@ impl CardStateUpdater { ease_factor, lapses, leeched: false, - fsrs_memory_state, + memory_state, } .into(), CardType::Relearn => RelearnState { learning: LearnState { scheduled_secs: self.relearn_steps().current_delay_secs(remaining_steps), remaining_steps, - fsrs_memory_state, + memory_state, }, review: ReviewState { scheduled_days: interval, @@ -99,7 +99,7 @@ impl CardStateUpdater { ease_factor, lapses, leeched: false, - fsrs_memory_state, + memory_state, }, } .into(), diff --git a/rslib/src/scheduler/answering/learning.rs b/rslib/src/scheduler/answering/learning.rs index cc1192c20..4b674e131 100644 --- a/rslib/src/scheduler/answering/learning.rs +++ b/rslib/src/scheduler/answering/learning.rs @@ -24,7 +24,7 @@ impl CardStateUpdater { self.card.queue = CardQueue::New; self.card.due = next.position as i32; self.card.original_position = None; - self.card.fsrs_memory_state = None; + self.card.memory_state = None; RevlogEntryPartial::new(current, next.into(), 0.0, self.secs_until_rollover()) } @@ -39,7 +39,7 @@ impl CardStateUpdater { if let Some(position) = current.new_position() { self.card.original_position = Some(position) } - self.card.fsrs_memory_state = next.fsrs_memory_state; + self.card.memory_state = next.memory_state; let interval = next .interval_kind() diff --git a/rslib/src/scheduler/answering/mod.rs b/rslib/src/scheduler/answering/mod.rs index 16fe5f394..505c61a60 100644 --- a/rslib/src/scheduler/answering/mod.rs +++ b/rslib/src/scheduler/answering/mod.rs @@ -353,7 +353,7 @@ impl Collection { let config = self.home_deck_config(deck.config_id(), card.original_deck_id)?; let fsrs_next_states = if config.inner.fsrs_enabled { let fsrs = FSRS::new(Some(&config.inner.fsrs_weights))?; - let memory_state = if let Some(state) = card.fsrs_memory_state { + let memory_state = if let Some(state) = card.memory_state { Some(MemoryState::from(state)) } else if card.ctype == CardType::New { None diff --git a/rslib/src/scheduler/answering/relearning.rs b/rslib/src/scheduler/answering/relearning.rs index 42b77b711..c218e765c 100644 --- a/rslib/src/scheduler/answering/relearning.rs +++ b/rslib/src/scheduler/answering/relearning.rs @@ -23,7 +23,7 @@ impl CardStateUpdater { if let Some(position) = current.new_position() { self.card.original_position = Some(position) } - self.card.fsrs_memory_state = next.learning.fsrs_memory_state; + self.card.memory_state = next.learning.memory_state; let interval = next .interval_kind() diff --git a/rslib/src/scheduler/answering/review.rs b/rslib/src/scheduler/answering/review.rs index d7011afc7..9f3a197fb 100644 --- a/rslib/src/scheduler/answering/review.rs +++ b/rslib/src/scheduler/answering/review.rs @@ -24,7 +24,7 @@ impl CardStateUpdater { if let Some(position) = current.new_position() { self.card.original_position = Some(position) } - self.card.fsrs_memory_state = next.fsrs_memory_state; + self.card.memory_state = next.memory_state; RevlogEntryPartial::new( current, diff --git a/rslib/src/scheduler/fsrs/memory_state.rs b/rslib/src/scheduler/fsrs/memory_state.rs index e119ea8c6..fc8dfac66 100644 --- a/rslib/src/scheduler/fsrs/memory_state.rs +++ b/rslib/src/scheduler/fsrs/memory_state.rs @@ -40,7 +40,7 @@ impl Collection { let state = fsrs.memory_state(item); let mut card = self.storage.get_card(card_id)?.or_not_found(card_id)?; let original = card.clone(); - card.fsrs_memory_state = Some(state.into()); + card.memory_state = Some(state.into()); self.update_card_inner(&mut card, original, usn)?; } } diff --git a/rslib/src/scheduler/new.rs b/rslib/src/scheduler/new.rs index 6d85eabbd..e3eb55c23 100644 --- a/rslib/src/scheduler/new.rs +++ b/rslib/src/scheduler/new.rs @@ -57,7 +57,7 @@ impl Card { self.reps = 0; self.lapses = 0; } - self.fsrs_memory_state = None; + self.memory_state = None; last_position.is_none() } diff --git a/rslib/src/scheduler/service/states/learning.rs b/rslib/src/scheduler/service/states/learning.rs index d11bc4708..17598065e 100644 --- a/rslib/src/scheduler/service/states/learning.rs +++ b/rslib/src/scheduler/service/states/learning.rs @@ -8,7 +8,7 @@ impl From for LearnState { LearnState { remaining_steps: state.remaining_steps, scheduled_secs: state.scheduled_secs, - fsrs_memory_state: state.fsrs_memory_state.map(Into::into), + memory_state: state.memory_state.map(Into::into), } } } @@ -18,7 +18,7 @@ impl From for anki_proto::scheduler::scheduling_state::Learning { anki_proto::scheduler::scheduling_state::Learning { remaining_steps: state.remaining_steps, scheduled_secs: state.scheduled_secs, - fsrs_memory_state: state.fsrs_memory_state.map(Into::into), + memory_state: state.memory_state.map(Into::into), } } } diff --git a/rslib/src/scheduler/service/states/review.rs b/rslib/src/scheduler/service/states/review.rs index 87fc19569..f9c713aa7 100644 --- a/rslib/src/scheduler/service/states/review.rs +++ b/rslib/src/scheduler/service/states/review.rs @@ -11,7 +11,7 @@ impl From for ReviewState { ease_factor: state.ease_factor, lapses: state.lapses, leeched: state.leeched, - fsrs_memory_state: state.fsrs_memory_state.map(Into::into), + memory_state: state.memory_state.map(Into::into), } } } @@ -24,7 +24,7 @@ impl From for anki_proto::scheduler::scheduling_state::Review { ease_factor: state.ease_factor, lapses: state.lapses, leeched: state.leeched, - fsrs_memory_state: state.fsrs_memory_state.map(Into::into), + memory_state: state.memory_state.map(Into::into), } } } diff --git a/rslib/src/scheduler/states/learning.rs b/rslib/src/scheduler/states/learning.rs index 0133ab00f..6cb4b35b2 100644 --- a/rslib/src/scheduler/states/learning.rs +++ b/rslib/src/scheduler/states/learning.rs @@ -13,7 +13,7 @@ use crate::revlog::RevlogReviewKind; pub struct LearnState { pub remaining_steps: u32, pub scheduled_secs: u32, - pub fsrs_memory_state: Option, + pub memory_state: Option, } impl LearnState { @@ -39,7 +39,7 @@ impl LearnState { LearnState { remaining_steps: ctx.steps.remaining_for_failed(), scheduled_secs: ctx.steps.again_delay_secs_learn(), - fsrs_memory_state: ctx.fsrs_next_states.as_ref().map(|s| s.again.memory.into()), + memory_state: ctx.fsrs_next_states.as_ref().map(|s| s.again.memory.into()), } } @@ -50,18 +50,18 @@ impl LearnState { .hard_delay_secs(self.remaining_steps) // user has 0 learning steps, which the UI doesn't allow .unwrap_or(60), - fsrs_memory_state: ctx.fsrs_next_states.as_ref().map(|s| s.hard.memory.into()), + memory_state: ctx.fsrs_next_states.as_ref().map(|s| s.hard.memory.into()), ..self } } fn answer_good(self, ctx: &StateContext) -> CardState { - let fsrs_memory_state = ctx.fsrs_next_states.as_ref().map(|s| s.good.memory.into()); + let memory_state = ctx.fsrs_next_states.as_ref().map(|s| s.good.memory.into()); if let Some(good_delay) = ctx.steps.good_delay_secs(self.remaining_steps) { LearnState { remaining_steps: ctx.steps.remaining_for_good(self.remaining_steps), scheduled_secs: good_delay, - fsrs_memory_state, + memory_state, } .into() } else { @@ -74,7 +74,7 @@ impl LearnState { ReviewState { scheduled_days: ctx.with_review_fuzz(interval as f32, minimum, maximum), ease_factor: ctx.initial_ease_factor, - fsrs_memory_state, + memory_state, ..Default::default() } .into() @@ -92,7 +92,7 @@ impl LearnState { ReviewState { scheduled_days: ctx.with_review_fuzz(interval as f32, minimum, maximum), ease_factor: ctx.initial_ease_factor, - fsrs_memory_state: ctx.fsrs_next_states.as_ref().map(|s| s.easy.memory.into()), + memory_state: ctx.fsrs_next_states.as_ref().map(|s| s.easy.memory.into()), ..Default::default() } } diff --git a/rslib/src/scheduler/states/normal.rs b/rslib/src/scheduler/states/normal.rs index c99bc9c37..8fbb68c66 100644 --- a/rslib/src/scheduler/states/normal.rs +++ b/rslib/src/scheduler/states/normal.rs @@ -44,7 +44,7 @@ impl NormalState { let next_states = LearnState { remaining_steps: ctx.steps.remaining_for_failed(), scheduled_secs: 0, - fsrs_memory_state: None, + memory_state: None, } .next_states(ctx); // .. but with current as New, not Learning diff --git a/rslib/src/scheduler/states/relearning.rs b/rslib/src/scheduler/states/relearning.rs index 2caf37ff8..14206d802 100644 --- a/rslib/src/scheduler/states/relearning.rs +++ b/rslib/src/scheduler/states/relearning.rs @@ -35,18 +35,18 @@ impl RelearnState { } fn answer_again(self, ctx: &StateContext) -> CardState { - let (scheduled_days, fsrs_memory_state) = self.review.failing_review_interval(ctx); + let (scheduled_days, memory_state) = self.review.failing_review_interval(ctx); if let Some(again_delay) = ctx.relearn_steps.again_delay_secs_relearn() { RelearnState { learning: LearnState { remaining_steps: ctx.relearn_steps.remaining_for_failed(), scheduled_secs: again_delay, - fsrs_memory_state, + memory_state, }, review: ReviewState { scheduled_days, elapsed_days: 0, - fsrs_memory_state, + memory_state, ..self.review }, } @@ -57,7 +57,7 @@ impl RelearnState { } fn answer_hard(self, ctx: &StateContext) -> CardState { - let fsrs_memory_state = ctx.fsrs_next_states.as_ref().map(|s| s.hard.memory.into()); + let memory_state = ctx.fsrs_next_states.as_ref().map(|s| s.hard.memory.into()); if let Some(hard_delay) = ctx .relearn_steps .hard_delay_secs(self.learning.remaining_steps) @@ -65,12 +65,12 @@ impl RelearnState { RelearnState { learning: LearnState { scheduled_secs: hard_delay, - fsrs_memory_state, + memory_state, ..self.learning }, review: ReviewState { elapsed_days: 0, - fsrs_memory_state, + memory_state, ..self.review }, } @@ -81,7 +81,7 @@ impl RelearnState { } fn answer_good(self, ctx: &StateContext) -> CardState { - let fsrs_memory_state = ctx.fsrs_next_states.as_ref().map(|s| s.good.memory.into()); + let memory_state = ctx.fsrs_next_states.as_ref().map(|s| s.good.memory.into()); if let Some(good_delay) = ctx .relearn_steps .good_delay_secs(self.learning.remaining_steps) @@ -92,11 +92,11 @@ impl RelearnState { remaining_steps: ctx .relearn_steps .remaining_for_good(self.learning.remaining_steps), - fsrs_memory_state, + memory_state, }, review: ReviewState { elapsed_days: 0, - fsrs_memory_state, + memory_state, ..self.review }, } @@ -110,7 +110,7 @@ impl RelearnState { ReviewState { scheduled_days: self.review.scheduled_days + 1, elapsed_days: 0, - fsrs_memory_state: ctx.fsrs_next_states.as_ref().map(|s| s.easy.memory.into()), + memory_state: ctx.fsrs_next_states.as_ref().map(|s| s.easy.memory.into()), ..self.review } } diff --git a/rslib/src/scheduler/states/review.rs b/rslib/src/scheduler/states/review.rs index 0f9b53235..8d98c0343 100644 --- a/rslib/src/scheduler/states/review.rs +++ b/rslib/src/scheduler/states/review.rs @@ -25,7 +25,7 @@ pub struct ReviewState { pub ease_factor: f32, pub lapses: u32, pub leeched: bool, - pub fsrs_memory_state: Option, + pub memory_state: Option, } impl Default for ReviewState { @@ -36,7 +36,7 @@ impl Default for ReviewState { ease_factor: INITIAL_EASE_FACTOR, lapses: 0, leeched: false, - fsrs_memory_state: None, + memory_state: None, } } } @@ -89,14 +89,14 @@ impl ReviewState { fn answer_again(self, ctx: &StateContext) -> CardState { let lapses = self.lapses + 1; let leeched = leech_threshold_met(lapses, ctx.leech_threshold); - let (scheduled_days, fsrs_memory_state) = self.failing_review_interval(ctx); + let (scheduled_days, memory_state) = self.failing_review_interval(ctx); let again_review = ReviewState { scheduled_days, elapsed_days: 0, ease_factor: (self.ease_factor + EASE_FACTOR_AGAIN_DELTA).max(MINIMUM_EASE_FACTOR), lapses, leeched, - fsrs_memory_state, + memory_state, }; if let Some(again_delay) = ctx.relearn_steps.again_delay_secs_relearn() { @@ -104,7 +104,7 @@ impl ReviewState { learning: LearnState { remaining_steps: ctx.relearn_steps.remaining_for_failed(), scheduled_secs: again_delay, - fsrs_memory_state, + memory_state, }, review: again_review, } @@ -119,7 +119,7 @@ impl ReviewState { scheduled_days, elapsed_days: 0, ease_factor: (self.ease_factor + EASE_FACTOR_HARD_DELTA).max(MINIMUM_EASE_FACTOR), - fsrs_memory_state: ctx.fsrs_next_states.as_ref().map(|s| s.hard.memory.into()), + memory_state: ctx.fsrs_next_states.as_ref().map(|s| s.hard.memory.into()), ..self } } @@ -128,7 +128,7 @@ impl ReviewState { ReviewState { scheduled_days, elapsed_days: 0, - fsrs_memory_state: ctx.fsrs_next_states.as_ref().map(|s| s.good.memory.into()), + memory_state: ctx.fsrs_next_states.as_ref().map(|s| s.good.memory.into()), ..self } } @@ -138,7 +138,7 @@ impl ReviewState { scheduled_days, elapsed_days: 0, ease_factor: self.ease_factor + EASE_FACTOR_EASY_DELTA, - fsrs_memory_state: ctx.fsrs_next_states.as_ref().map(|s| s.easy.memory.into()), + memory_state: ctx.fsrs_next_states.as_ref().map(|s| s.easy.memory.into()), ..self } } @@ -313,7 +313,7 @@ mod test { ease_factor: 1.3, lapses: 0, leeched: false, - fsrs_memory_state: None, + memory_state: None, }; ctx.fuzz_factor = Some(0.0); assert_eq!(state.passing_review_intervals(&ctx), (2, 3, 4)); @@ -342,7 +342,7 @@ mod test { ease_factor: 1.3, lapses: 0, leeched: false, - fsrs_memory_state: None, + memory_state: None, }; ctx.fuzz_factor = Some(0.0); assert_eq!(state.passing_review_intervals(&ctx), (1, 3, 4)); diff --git a/rslib/src/stats/card.rs b/rslib/src/stats/card.rs index 7503419e6..2a7afb428 100644 --- a/rslib/src/stats/card.rs +++ b/rslib/src/stats/card.rs @@ -28,7 +28,7 @@ impl Collection { let (due_date, due_position) = self.due_date_and_position(&card)?; let timing = self.timing_today()?; let fsrs_retrievability = card - .fsrs_memory_state + .memory_state .zip(card.days_since_last_review(&timing)) .map(|(state, days)| { FSRS::new(None) @@ -53,7 +53,7 @@ impl Collection { card_type: nt.get_template(card.template_idx)?.name.clone(), notetype: nt.name.clone(), revlog: revlog.iter().rev().map(stats_revlog_entry).collect(), - fsrs_memory_state: card.fsrs_memory_state.map(Into::into), + memory_state: card.memory_state.map(Into::into), fsrs_retrievability, custom_data: card.custom_data, }) diff --git a/rslib/src/stats/graphs/eases.rs b/rslib/src/stats/graphs/eases.rs index 0c2b9b789..15571c54a 100644 --- a/rslib/src/stats/graphs/eases.rs +++ b/rslib/src/stats/graphs/eases.rs @@ -12,7 +12,7 @@ impl GraphsContext { let mut eases = Eases::default(); let mut difficulty = Eases::default(); for card in &self.cards { - if let Some(state) = card.fsrs_memory_state { + if let Some(state) = card.memory_state { *difficulty .eases .entry(round_to_nearest_five( diff --git a/rslib/src/stats/graphs/retrievability.rs b/rslib/src/stats/graphs/retrievability.rs index 6c80ec55c..c1ac3febd 100644 --- a/rslib/src/stats/graphs/retrievability.rs +++ b/rslib/src/stats/graphs/retrievability.rs @@ -19,7 +19,7 @@ impl GraphsContext { }; let fsrs = FSRS::new(None).unwrap(); for card in &self.cards { - if let Some(state) = card.fsrs_memory_state { + if let Some(state) = card.memory_state { let r = fsrs.current_retrievability( state.into(), card.days_since_last_review(&timing).unwrap_or_default(), diff --git a/rslib/src/storage/card/data.rs b/rslib/src/storage/card/data.rs index 9f87fc5b1..86c13d7c0 100644 --- a/rslib/src/storage/card/data.rs +++ b/rslib/src/storage/card/data.rs @@ -50,8 +50,8 @@ impl CardData { pub(crate) fn from_card(card: &Card) -> Self { Self { original_position: card.original_position, - fsrs_stability: card.fsrs_memory_state.as_ref().map(|m| m.stability), - fsrs_difficulty: card.fsrs_memory_state.as_ref().map(|m| m.difficulty), + fsrs_stability: card.memory_state.as_ref().map(|m| m.stability), + fsrs_difficulty: card.memory_state.as_ref().map(|m| m.difficulty), custom_data: card.custom_data.clone(), } } @@ -60,7 +60,7 @@ impl CardData { serde_json::from_str(s).unwrap_or_default() } - pub(crate) fn fsrs_memory_state(&self) -> Option { + pub(crate) fn memory_state(&self) -> Option { if let Some(stability) = self.fsrs_stability { if let Some(difficulty) = self.fsrs_difficulty { return Some(FsrsMemoryState { diff --git a/rslib/src/storage/card/mod.rs b/rslib/src/storage/card/mod.rs index f4e6e9c86..8ca7e30ed 100644 --- a/rslib/src/storage/card/mod.rs +++ b/rslib/src/storage/card/mod.rs @@ -80,7 +80,7 @@ fn row_to_card(row: &Row) -> result::Result { original_deck_id: row.get(15)?, flags: row.get(16)?, original_position: data.original_position, - fsrs_memory_state: data.fsrs_memory_state(), + memory_state: data.memory_state(), custom_data: data.custom_data, }) } diff --git a/rslib/src/storage/sqlite.rs b/rslib/src/storage/sqlite.rs index 90652cbcc..7da32d897 100644 --- a/rslib/src/storage/sqlite.rs +++ b/rslib/src/storage/sqlite.rs @@ -296,7 +296,7 @@ fn add_extract_fsrs_retrievability(db: &Connection) -> rusqlite::Result<()> { let review_day = due - ivl; let days_elapsed = days_elapsed.saturating_sub(review_day) as u32; let card_data = &CardData::from_str(card_data); - Ok(card_data.fsrs_memory_state().map(|state| { + Ok(card_data.memory_state().map(|state| { FSRS::new(None) .unwrap() .current_retrievability(state.into(), days_elapsed) diff --git a/rslib/src/sync/collection/chunks.rs b/rslib/src/sync/collection/chunks.rs index fca853e5e..40720aaaa 100644 --- a/rslib/src/sync/collection/chunks.rs +++ b/rslib/src/sync/collection/chunks.rs @@ -330,7 +330,7 @@ impl From for Card { original_deck_id: e.odid, flags: e.flags, original_position: data.original_position, - fsrs_memory_state: data.fsrs_memory_state(), + memory_state: data.memory_state(), custom_data: data.custom_data, } } diff --git a/ts/card-info/CardStats.svelte b/ts/card-info/CardStats.svelte index e42f78213..740ef4670 100644 --- a/ts/card-info/CardStats.svelte +++ b/ts/card-info/CardStats.svelte @@ -55,14 +55,10 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html value: timeSpan(stats.interval * DAY), }); } - if (stats.fsrsMemoryState) { - let stability = timeSpan( - stats.fsrsMemoryState.stability * 86400, - false, - false, - ); - if (stats.fsrsMemoryState.stability > 31) { - const nativeStability = stats.fsrsMemoryState.stability.toFixed(0); + if (stats.memoryState) { + let stability = timeSpan(stats.memoryState.stability * 86400, false, false); + if (stats.memoryState.stability > 31) { + const nativeStability = stats.memoryState.stability.toFixed(0); stability += ` (${nativeStability})`; } statsRows.push({ @@ -70,7 +66,7 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html value: stability, }); const difficulty = ( - ((stats.fsrsMemoryState.difficulty - 1.0) / 9.0) * + ((stats.memoryState.difficulty - 1.0) / 9.0) * 100.0 ).toFixed(0); statsRows.push({