Use decimal number as foreign ease (like '2.5')

This commit is contained in:
RumovZ 2022-05-10 10:13:17 +02:00
parent 8f1bba6c07
commit dbeca4310b
5 changed files with 6 additions and 8 deletions

View file

@ -70,6 +70,7 @@ MODEL_STD = 0
MODEL_CLOZE = 1
STARTING_FACTOR = 2500
STARTING_FACTOR_FRACTION = STARTING_FACTOR / 1000
HELP_SITE = "https://docs.ankiweb.net/"

View file

@ -10,7 +10,7 @@ import json
from dataclasses import asdict, dataclass, field
from typing import Union
from anki.consts import STARTING_FACTOR
from anki.consts import STARTING_FACTOR_FRACTION
from anki.decks import DeckId
from anki.models import NotetypeId
@ -74,7 +74,7 @@ class ForeignNotetype:
class ForeignCard:
due: int = 0
ivl: int = 1
factor: int = STARTING_FACTOR
factor: float = STARTING_FACTOR_FRACTION
reps: int = 0
lapses: int = 0

View file

@ -143,16 +143,13 @@ class MnemoCard:
def foreign_card(self) -> ForeignCard:
return ForeignCard(
factor=self.anki_ease(),
factor=self.easiness,
reps=self.reps,
lapses=self.lapses,
ivl=self.anki_interval(),
due=self.next_rep,
)
def anki_ease(self) -> int:
return int(self.easiness * 1000)
def anki_interval(self) -> int:
return max(1, (self.next_rep - self.last_rep) // 86400)

View file

@ -182,7 +182,7 @@ impl ForeignCard {
fn into_native(self, note_id: NoteId, template_idx: u16, deck_id: DeckId) -> Card {
let mut card = Card::new(note_id, template_idx, deck_id, self.due);
card.interval = self.ivl;
card.ease_factor = self.factor;
card.ease_factor = (self.factor * 1000.).round() as u16;
card.reps = self.reps;
card.lapses = self.lapses;
card

View file

@ -31,7 +31,7 @@ pub struct ForeignNote {
pub struct ForeignCard {
pub due: i32,
pub ivl: u32,
pub factor: u16,
pub factor: f32,
pub reps: u32,
pub lapses: u32,
}