add options to sort reviews by deck
https://forums.ankiweb.net/t/is-studying-subdeck-by-subdeck-broken-in-2-1-44-mac/10458/2
This commit is contained in:
parent
775beda6ce
commit
562787bce1
@ -122,8 +122,11 @@ deck-config-review-sort-order-tooltip =
|
|||||||
The default order prioritizes cards that have been waiting longest, so that
|
The default order prioritizes cards that have been waiting longest, so that
|
||||||
if you have a backlog of reviews, the longest-waiting ones will appear
|
if you have a backlog of reviews, the longest-waiting ones will appear
|
||||||
first. If you have a large backlog that will take more than a few days to
|
first. If you have a large backlog that will take more than a few days to
|
||||||
clear, you may find the alternate sort orders preferable.
|
clear, or wish to see cards in subdeck order, you may find the alternate
|
||||||
|
sort orders preferable.
|
||||||
deck-config-sort-order-due-date-then-random = Due date, then random
|
deck-config-sort-order-due-date-then-random = Due date, then random
|
||||||
|
deck-config-sort-order-due-date-then-deck = Due date, then deck
|
||||||
|
deck-config-sort-order-deck-then-due-date = Deck, then due date
|
||||||
deck-config-sort-order-ascending-intervals = Ascending intervals
|
deck-config-sort-order-ascending-intervals = Ascending intervals
|
||||||
deck-config-sort-order-descending-intervals = Descending intervals
|
deck-config-sort-order-descending-intervals = Descending intervals
|
||||||
|
|
||||||
|
@ -329,9 +329,11 @@ message DeckConfig {
|
|||||||
NEW_CARD_SORT_ORDER_RANDOM = 3;
|
NEW_CARD_SORT_ORDER_RANDOM = 3;
|
||||||
}
|
}
|
||||||
enum ReviewCardOrder {
|
enum ReviewCardOrder {
|
||||||
REVIEW_CARD_ORDER_DAY_THEN_RANDOM = 0;
|
REVIEW_CARD_ORDER_DAY = 0;
|
||||||
REVIEW_CARD_ORDER_INTERVALS_ASCENDING = 1;
|
REVIEW_CARD_ORDER_DAY_THEN_DECK = 1;
|
||||||
REVIEW_CARD_ORDER_INTERVALS_DESCENDING = 2;
|
REVIEW_CARD_ORDER_DECK_THEN_DAY = 2;
|
||||||
|
REVIEW_CARD_ORDER_INTERVALS_ASCENDING = 3;
|
||||||
|
REVIEW_CARD_ORDER_INTERVALS_DESCENDING = 4;
|
||||||
// REVIEW_CARD_ORDER_RELATIVE_OVERDUE = 3;
|
// REVIEW_CARD_ORDER_RELATIVE_OVERDUE = 3;
|
||||||
}
|
}
|
||||||
enum ReviewMix {
|
enum ReviewMix {
|
||||||
|
@ -64,7 +64,7 @@ impl Default for DeckConfig {
|
|||||||
new_card_insert_order: NewCardInsertOrder::Due as i32,
|
new_card_insert_order: NewCardInsertOrder::Due as i32,
|
||||||
new_card_gather_priority: NewCardGatherPriority::Deck as i32,
|
new_card_gather_priority: NewCardGatherPriority::Deck as i32,
|
||||||
new_card_sort_order: NewCardSortOrder::TemplateThenDue as i32,
|
new_card_sort_order: NewCardSortOrder::TemplateThenDue as i32,
|
||||||
review_order: ReviewCardOrder::DayThenRandom as i32,
|
review_order: ReviewCardOrder::Day as i32,
|
||||||
new_mix: ReviewMix::MixWithReviews as i32,
|
new_mix: ReviewMix::MixWithReviews as i32,
|
||||||
interday_learning_mix: ReviewMix::MixWithReviews as i32,
|
interday_learning_mix: ReviewMix::MixWithReviews as i32,
|
||||||
leech_action: LeechAction::TagOnly as i32,
|
leech_action: LeechAction::TagOnly as i32,
|
||||||
|
@ -32,7 +32,7 @@ impl QueueBuilder {
|
|||||||
self.day_learning.sort_unstable_by(day_then_hash);
|
self.day_learning.sort_unstable_by(day_then_hash);
|
||||||
|
|
||||||
// other sorting is done in SQL
|
// other sorting is done in SQL
|
||||||
if self.sort_options.review_order == ReviewCardOrder::DayThenRandom {
|
if self.sort_options.review_order == ReviewCardOrder::Day {
|
||||||
self.review.iter_mut().for_each(DueCard::hash_id_and_mtime);
|
self.review.iter_mut().for_each(DueCard::hash_id_and_mtime);
|
||||||
self.review.sort_unstable_by(day_then_hash);
|
self.review.sort_unstable_by(day_then_hash);
|
||||||
}
|
}
|
||||||
|
@ -200,12 +200,18 @@ impl super::SqliteStorage {
|
|||||||
F: FnMut(CardQueue, DueCard) -> bool,
|
F: FnMut(CardQueue, DueCard) -> bool,
|
||||||
{
|
{
|
||||||
let order_clause = match order {
|
let order_clause = match order {
|
||||||
ReviewCardOrder::DayThenRandom => "order by due",
|
ReviewCardOrder::Day => "due",
|
||||||
ReviewCardOrder::IntervalsAscending => "order by ivl asc",
|
ReviewCardOrder::DayThenDeck => {
|
||||||
ReviewCardOrder::IntervalsDescending => "order by ivl desc",
|
"due, (select rowid from active_decks ad where ad.id = did)"
|
||||||
|
}
|
||||||
|
ReviewCardOrder::DeckThenDay => {
|
||||||
|
"(select rowid from active_decks ad where ad.id = did), due"
|
||||||
|
}
|
||||||
|
ReviewCardOrder::IntervalsAscending => "ivl asc",
|
||||||
|
ReviewCardOrder::IntervalsDescending => "ivl desc",
|
||||||
};
|
};
|
||||||
let mut stmt = self.db.prepare_cached(&format!(
|
let mut stmt = self.db.prepare_cached(&format!(
|
||||||
"{} {}",
|
"{} order by {}",
|
||||||
include_str!("due_cards.sql"),
|
include_str!("due_cards.sql"),
|
||||||
order_clause
|
order_clause
|
||||||
))?;
|
))?;
|
||||||
|
@ -25,6 +25,8 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
|
|||||||
];
|
];
|
||||||
const reviewOrderChoices = [
|
const reviewOrderChoices = [
|
||||||
tr.deckConfigSortOrderDueDateThenRandom(),
|
tr.deckConfigSortOrderDueDateThenRandom(),
|
||||||
|
tr.deckConfigSortOrderDueDateThenDeck(),
|
||||||
|
tr.deckConfigSortOrderDeckThenDueDate(),
|
||||||
tr.deckConfigSortOrderAscendingIntervals(),
|
tr.deckConfigSortOrderAscendingIntervals(),
|
||||||
tr.deckConfigSortOrderDescendingIntervals(),
|
tr.deckConfigSortOrderDescendingIntervals(),
|
||||||
];
|
];
|
||||||
|
Loading…
Reference in New Issue
Block a user