Add by creation date review sort order (#2957)

* Add by creation date review sort order

* Order by template after nid in ReverseAdded of filtered decks too
This commit is contained in:
Abdo 2024-01-21 13:29:19 +03:00 committed by GitHub
parent ee68da51b0
commit eab5c02251
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 18 additions and 1 deletions

View file

@ -81,6 +81,8 @@ message DeckConfig {
REVIEW_CARD_ORDER_EASE_DESCENDING = 6; REVIEW_CARD_ORDER_EASE_DESCENDING = 6;
REVIEW_CARD_ORDER_RELATIVE_OVERDUENESS = 7; REVIEW_CARD_ORDER_RELATIVE_OVERDUENESS = 7;
REVIEW_CARD_ORDER_RANDOM = 8; REVIEW_CARD_ORDER_RANDOM = 8;
REVIEW_CARD_ORDER_ADDED = 9;
REVIEW_CARD_ORDER_REVERSE_ADDED = 10;
} }
enum ReviewMix { enum ReviewMix {
REVIEW_MIX_MIX_WITH_REVIEWS = 0; REVIEW_MIX_MIX_WITH_REVIEWS = 0;

View file

@ -20,7 +20,7 @@ pub(crate) fn order_and_limit_for_search(
FilteredSearchOrder::IntervalsDescending => "ivl desc", FilteredSearchOrder::IntervalsDescending => "ivl desc",
FilteredSearchOrder::Lapses => "lapses desc", FilteredSearchOrder::Lapses => "lapses desc",
FilteredSearchOrder::Added => "n.id, c.ord", FilteredSearchOrder::Added => "n.id, c.ord",
FilteredSearchOrder::ReverseAdded => "n.id desc", FilteredSearchOrder::ReverseAdded => "n.id desc, c.ord asc",
FilteredSearchOrder::Due => { FilteredSearchOrder::Due => {
let current_timestamp = timing.now.0; let current_timestamp = timing.now.0;
temp_string = format!( temp_string = format!(

View file

@ -711,6 +711,8 @@ enum ReviewOrderSubclause {
RelativeOverduenessFsrs { RelativeOverduenessFsrs {
timing: SchedTimingToday, timing: SchedTimingToday,
}, },
Added,
ReverseAdded,
} }
impl fmt::Display for ReviewOrderSubclause { impl fmt::Display for ReviewOrderSubclause {
@ -737,6 +739,8 @@ impl fmt::Display for ReviewOrderSubclause {
format!("extract_fsrs_relative_overdueness(data, due, {today}, ivl, {next_day_at}) desc"); format!("extract_fsrs_relative_overdueness(data, due, {today}, ivl, {next_day_at}) desc");
&temp_string &temp_string
} }
ReviewOrderSubclause::Added => "nid asc, ord asc",
ReviewOrderSubclause::ReverseAdded => "nid desc, ord asc",
}; };
write!(f, "{}", clause) write!(f, "{}", clause)
} }
@ -771,6 +775,8 @@ fn review_order_sql(order: ReviewCardOrder, timing: SchedTimingToday, fsrs: bool
}] }]
} }
ReviewCardOrder::Random => vec![], ReviewCardOrder::Random => vec![],
ReviewCardOrder::Added => vec![ReviewOrderSubclause::Added],
ReviewCardOrder::ReverseAdded => vec![ReviewOrderSubclause::ReverseAdded],
}; };
subclauses.push(ReviewOrderSubclause::Random); subclauses.push(ReviewOrderSubclause::Random);

View file

@ -105,6 +105,14 @@ export function reviewOrderChoices(fsrs: boolean): Choice<DeckConfig_Config_Revi
label: tr.deckConfigSortOrderRandom(), label: tr.deckConfigSortOrderRandom(),
value: DeckConfig_Config_ReviewCardOrder.RANDOM, value: DeckConfig_Config_ReviewCardOrder.RANDOM,
}, },
{
label: tr.decksOrderAdded(),
value: DeckConfig_Config_ReviewCardOrder.ADDED,
},
{
label: tr.decksLatestAddedFirst(),
value: DeckConfig_Config_ReviewCardOrder.REVERSE_ADDED,
},
]; ];
} }

View file

@ -23,6 +23,7 @@ const i18n = setupI18n({
ModuleName.DECK_CONFIG, ModuleName.DECK_CONFIG,
ModuleName.KEYBOARD, ModuleName.KEYBOARD,
ModuleName.STUDYING, ModuleName.STUDYING,
ModuleName.DECKS,
], ],
}); });