Show preset and original deck in card info (#3055)

* Show preset and original deck in card info

* Make original_deck optional
This commit is contained in:
Abdo 2024-03-07 10:47:55 +03:00 committed by GitHub
parent 184ad8068e
commit 9228c87b3a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 29 additions and 1 deletions

View file

@ -11,6 +11,7 @@ card-stats-new-card-position = Position
card-stats-card-template = Card Type
card-stats-note-type = Note Type
card-stats-deck-name = Deck
card-stats-preset = Preset
card-stats-note-id = Note ID
card-stats-card-id = Card ID
card-stats-review-log-rating = Rating

View file

@ -56,6 +56,8 @@ message CardStatsResponse {
// not set if due date/state not available
optional float fsrs_retrievability = 19;
string custom_data = 20;
string preset = 21;
optional string original_deck = 22;
}
message GraphsRequest {

View file

@ -41,6 +41,18 @@ impl Collection {
.unwrap()
.current_retrievability(state.into(), days)
});
let original_deck = if card.original_deck_id == DeckId(0) {
deck.clone()
} else {
self.storage
.get_deck(card.original_deck_id)?
.or_not_found(card.original_deck_id)?
};
let config_id = original_deck.config_id().unwrap();
let preset = self
.get_deck_config(config_id, true)?
.or_not_found(config_id.to_string())?;
Ok(anki_proto::stats::CardStatsResponse {
card_id: card.id.into(),
note_id: card.note_id.into(),
@ -62,6 +74,12 @@ impl Collection {
memory_state: card.memory_state.map(Into::into),
fsrs_retrievability,
custom_data: card.custom_data,
preset: preset.name,
original_deck: if original_deck != deck {
Some(original_deck.human_name())
} else {
None
},
})
}

View file

@ -105,7 +105,14 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
statsRows.push({ label: tr2.cardStatsCardTemplate(), value: stats.cardType });
statsRows.push({ label: tr2.cardStatsNoteType(), value: stats.notetype });
statsRows.push({ label: tr2.cardStatsDeckName(), value: stats.deck });
let deck: string;
if (stats.originalDeck) {
deck = `${stats.deck} (${stats.originalDeck})`;
} else {
deck = stats.deck;
}
statsRows.push({ label: tr2.cardStatsDeckName(), value: deck });
statsRows.push({ label: tr2.cardStatsPreset(), value: stats.preset });
statsRows.push({ label: tr2.cardStatsCardId(), value: stats.cardId });
statsRows.push({ label: tr2.cardStatsNoteId(), value: stats.noteId });