mirror of
https://github.com/ankitects/anki.git
synced 2025-09-25 09:16:38 -04:00
Map timestamp of ForeignCard to native due time
This commit is contained in:
parent
74ce551155
commit
1a115f7287
2 changed files with 24 additions and 5 deletions
|
@ -72,6 +72,17 @@ class ForeignNotetype:
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
class ForeignCard:
|
class ForeignCard:
|
||||||
|
"""Data for creating an Anki card.
|
||||||
|
|
||||||
|
Usually a review card, as the default card generation routine will take care
|
||||||
|
of missing new cards.
|
||||||
|
|
||||||
|
due -- UNIX timestamp
|
||||||
|
interval -- days
|
||||||
|
factor -- decimal fraction (2.5 corresponds to default ease)
|
||||||
|
"""
|
||||||
|
|
||||||
|
# TODO: support new and learning cards?
|
||||||
due: int = 0
|
due: int = 0
|
||||||
interval: int = 1
|
interval: int = 1
|
||||||
factor: float = STARTING_FACTOR_FRACTION
|
factor: float = STARTING_FACTOR_FRACTION
|
||||||
|
|
|
@ -99,7 +99,8 @@ impl<'a> Context<'a> {
|
||||||
notetype: &Notetype,
|
notetype: &Notetype,
|
||||||
deck_id: DeckId,
|
deck_id: DeckId,
|
||||||
) -> Result<LogNote> {
|
) -> Result<LogNote> {
|
||||||
let (mut note, mut cards) = foreign.into_native(notetype, deck_id);
|
let today = self.col.timing_today()?.days_elapsed;
|
||||||
|
let (mut note, mut cards) = foreign.into_native(notetype, deck_id, today);
|
||||||
self.import_note(&mut note, notetype)?;
|
self.import_note(&mut note, notetype)?;
|
||||||
self.import_cards(&mut cards, note.id)?;
|
self.import_cards(&mut cards, note.id)?;
|
||||||
self.generate_missing_cards(notetype, deck_id, ¬e)?;
|
self.generate_missing_cards(notetype, deck_id, ¬e)?;
|
||||||
|
@ -161,7 +162,8 @@ impl Collection {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl ForeignNote {
|
impl ForeignNote {
|
||||||
fn into_native(self, notetype: &Notetype, deck_id: DeckId) -> (Note, Vec<Card>) {
|
fn into_native(self, notetype: &Notetype, deck_id: DeckId, today: u32) -> (Note, Vec<Card>) {
|
||||||
|
// TODO: Handle new and learning cards
|
||||||
let mut note = Note::new(notetype);
|
let mut note = Note::new(notetype);
|
||||||
note.tags = self.tags;
|
note.tags = self.tags;
|
||||||
note.fields_mut()
|
note.fields_mut()
|
||||||
|
@ -172,21 +174,27 @@ impl ForeignNote {
|
||||||
.cards
|
.cards
|
||||||
.into_iter()
|
.into_iter()
|
||||||
.enumerate()
|
.enumerate()
|
||||||
.map(|(idx, c)| c.into_native(NoteId(0), idx as u16, deck_id))
|
.map(|(idx, c)| c.into_native(NoteId(0), idx as u16, deck_id, today))
|
||||||
.collect();
|
.collect();
|
||||||
(note, cards)
|
(note, cards)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl ForeignCard {
|
impl ForeignCard {
|
||||||
fn into_native(self, note_id: NoteId, template_idx: u16, deck_id: DeckId) -> Card {
|
fn into_native(self, note_id: NoteId, template_idx: u16, deck_id: DeckId, today: u32) -> Card {
|
||||||
let mut card = Card::new(note_id, template_idx, deck_id, self.due);
|
let mut card = Card::new(note_id, template_idx, deck_id, self.native_due(today));
|
||||||
card.interval = self.interval;
|
card.interval = self.interval;
|
||||||
card.ease_factor = (self.factor * 1000.).round() as u16;
|
card.ease_factor = (self.factor * 1000.).round() as u16;
|
||||||
card.reps = self.reps;
|
card.reps = self.reps;
|
||||||
card.lapses = self.lapses;
|
card.lapses = self.lapses;
|
||||||
card
|
card
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn native_due(self, today: u32) -> i32 {
|
||||||
|
let remaining_secs = self.interval as i64 - TimestampSecs::now().0;
|
||||||
|
let remaining_days = remaining_secs / (60 * 60 * 24);
|
||||||
|
0.max(remaining_days as i32 + today as i32)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl ForeignNotetype {
|
impl ForeignNotetype {
|
||||||
|
|
Loading…
Reference in a new issue