mirror of
https://github.com/ankitects/anki.git
synced 2025-09-18 22:12:21 -04:00
When updating all FSRS parameters at once, exclude suspended cards
This commit is contained in:
parent
f413274fba
commit
656cfe0b9c
2 changed files with 9 additions and 4 deletions
|
@ -22,7 +22,9 @@ use crate::scheduler::fsrs::memory_state::UpdateMemoryStateEntry;
|
||||||
use crate::scheduler::fsrs::memory_state::UpdateMemoryStateRequest;
|
use crate::scheduler::fsrs::memory_state::UpdateMemoryStateRequest;
|
||||||
use crate::scheduler::fsrs::weights::ignore_revlogs_before_ms_from_config;
|
use crate::scheduler::fsrs::weights::ignore_revlogs_before_ms_from_config;
|
||||||
use crate::search::JoinSearches;
|
use crate::search::JoinSearches;
|
||||||
|
use crate::search::Negated;
|
||||||
use crate::search::SearchNode;
|
use crate::search::SearchNode;
|
||||||
|
use crate::search::StateKind;
|
||||||
use crate::storage::comma_separated_ids;
|
use crate::storage::comma_separated_ids;
|
||||||
|
|
||||||
#[derive(Debug, Clone)]
|
#[derive(Debug, Clone)]
|
||||||
|
@ -267,9 +269,12 @@ impl Collection {
|
||||||
None
|
None
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
let search = SearchNode::DeckIdsWithoutChildren(comma_separated_ids(&search))
|
||||||
|
.and(SearchNode::State(StateKind::Suspended).negated())
|
||||||
|
.try_into_search()?;
|
||||||
Ok(UpdateMemoryStateEntry {
|
Ok(UpdateMemoryStateEntry {
|
||||||
req: weights,
|
req: weights,
|
||||||
search: SearchNode::DeckIdsWithoutChildren(comma_separated_ids(&search)),
|
search,
|
||||||
ignore_before: config
|
ignore_before: config
|
||||||
.map(ignore_revlogs_before_ms_from_config)
|
.map(ignore_revlogs_before_ms_from_config)
|
||||||
.unwrap_or(Ok(0.into()))?,
|
.unwrap_or(Ok(0.into()))?,
|
||||||
|
|
|
@ -18,6 +18,7 @@ use crate::scheduler::fsrs::weights::single_card_revlog_to_items;
|
||||||
use crate::scheduler::fsrs::weights::Weights;
|
use crate::scheduler::fsrs::weights::Weights;
|
||||||
use crate::scheduler::states::fuzz::with_review_fuzz;
|
use crate::scheduler::states::fuzz::with_review_fuzz;
|
||||||
use crate::search::Negated;
|
use crate::search::Negated;
|
||||||
|
use crate::search::Node;
|
||||||
use crate::search::SearchNode;
|
use crate::search::SearchNode;
|
||||||
use crate::search::StateKind;
|
use crate::search::StateKind;
|
||||||
|
|
||||||
|
@ -38,7 +39,7 @@ pub(crate) struct UpdateMemoryStateRequest {
|
||||||
|
|
||||||
pub(crate) struct UpdateMemoryStateEntry {
|
pub(crate) struct UpdateMemoryStateEntry {
|
||||||
pub req: Option<UpdateMemoryStateRequest>,
|
pub req: Option<UpdateMemoryStateRequest>,
|
||||||
pub search: SearchNode,
|
pub search: Node,
|
||||||
pub ignore_before: TimestampMillis,
|
pub ignore_before: TimestampMillis,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -60,8 +61,7 @@ impl Collection {
|
||||||
ignore_before,
|
ignore_before,
|
||||||
} in entries
|
} in entries
|
||||||
{
|
{
|
||||||
let search =
|
let search = SearchBuilder::all([search, SearchNode::State(StateKind::New).negated()]);
|
||||||
SearchBuilder::all([search.into(), SearchNode::State(StateKind::New).negated()]);
|
|
||||||
let revlog = self.revlog_for_srs(search)?;
|
let revlog = self.revlog_for_srs(search)?;
|
||||||
let reschedule = req.as_ref().map(|e| e.reschedule).unwrap_or_default();
|
let reschedule = req.as_ref().map(|e| e.reschedule).unwrap_or_default();
|
||||||
let last_revlog_info = if reschedule {
|
let last_revlog_info = if reschedule {
|
||||||
|
|
Loading…
Reference in a new issue