mirror of
https://github.com/ankitects/anki.git
synced 2025-09-18 22:12:21 -04:00
Support retrievability calculation for (re)learning cards
This commit is contained in:
parent
da0e42ea03
commit
bb0acd9d92
2 changed files with 22 additions and 17 deletions
|
@ -121,12 +121,16 @@ impl Card {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub(crate) fn days_since_last_review(&self, timing: &SchedTimingToday) -> Option<u32> {
|
pub(crate) fn days_since_last_review(&self, timing: &SchedTimingToday) -> Option<u32> {
|
||||||
self.due_time(timing).map(|due| {
|
if !self.is_due_in_days() {
|
||||||
due.adding_secs(-86_400 * self.interval as i64)
|
Some(0)
|
||||||
.elapsed_secs()
|
} else {
|
||||||
.max(0) as u32
|
self.due_time(timing).map(|due| {
|
||||||
/ 86_400
|
due.adding_secs(-86_400 * self.interval as i64)
|
||||||
})
|
.elapsed_secs()
|
||||||
|
.max(0) as u32
|
||||||
|
/ 86_400
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -285,18 +285,19 @@ fn add_extract_fsrs_retrievability(db: &Connection) -> rusqlite::Result<()> {
|
||||||
let Ok(due) = ctx.get_raw(1).as_i64() else {
|
let Ok(due) = ctx.get_raw(1).as_i64() else {
|
||||||
return Ok(None);
|
return Ok(None);
|
||||||
};
|
};
|
||||||
if due > 365_000 {
|
let days_elapsed = if due > 365_000 {
|
||||||
// learning card
|
// (re)learning card, assume 0 days have elapsed
|
||||||
return Ok(None);
|
0
|
||||||
}
|
} else {
|
||||||
let Ok(ivl) = ctx.get_raw(2).as_i64() else {
|
let Ok(ivl) = ctx.get_raw(2).as_i64() else {
|
||||||
return Ok(None);
|
return Ok(None);
|
||||||
|
};
|
||||||
|
let Ok(days_elapsed) = ctx.get_raw(3).as_i64() else {
|
||||||
|
return Ok(None);
|
||||||
|
};
|
||||||
|
let review_day = (due.max(0) as u32).saturating_sub(ivl as u32);
|
||||||
|
(days_elapsed.max(0) as u32).saturating_sub(review_day)
|
||||||
};
|
};
|
||||||
let Ok(days_elapsed) = ctx.get_raw(3).as_i64() else {
|
|
||||||
return Ok(None);
|
|
||||||
};
|
|
||||||
let review_day = (due.max(0) as u32).saturating_sub(ivl as u32);
|
|
||||||
let days_elapsed = (days_elapsed.max(0) as u32).saturating_sub(review_day);
|
|
||||||
Ok(card_data.memory_state().map(|state| {
|
Ok(card_data.memory_state().map(|state| {
|
||||||
FSRS::new(None)
|
FSRS::new(None)
|
||||||
.unwrap()
|
.unwrap()
|
||||||
|
|
Loading…
Reference in a new issue