combine forgot_in_days and studied_today into a more general 'rated'

This commit is contained in:
Damien Elmes 2021-01-30 10:26:23 +10:00
parent 2ca4f31fc8
commit 22b80c2dd5
4 changed files with 49 additions and 13 deletions

View file

@ -993,8 +993,18 @@ QTableView {{ gridline-color: {grid} }}
self._simpleFilters(
(
(tr(TR.BROWSING_ADDED_TODAY), SearchTerm(added_in_days=1)),
(tr(TR.BROWSING_STUDIED_TODAY), SearchTerm(studied_today=True)),
(tr(TR.BROWSING_AGAIN_TODAY), SearchTerm(forgot_in_days=1)),
(
tr(TR.BROWSING_STUDIED_TODAY),
SearchTerm(rated=SearchTerm.Rated(days=1)),
),
(
tr(TR.BROWSING_AGAIN_TODAY),
SearchTerm(
rated=SearchTerm.Rated(
days=1, rating=SearchTerm.Rated.Rating.ANSWER_BUTTON_1
)
),
),
)
)
)

View file

@ -160,7 +160,13 @@ class CustomStudy(QDialog):
dyn = self.mw.col.decks.get(did)
# and then set various options
if i == RADIO_FORGOT:
search = self.mw.col.build_search_string(SearchTerm(forgot_in_days=spin))
search = self.mw.col.build_search_string(
SearchTerm(
rated=SearchTerm.Rated(
days=spin, rating=SearchTerm.Rated.Rating.ANSWER_BUTTON_1
)
)
)
dyn["terms"][0] = [search, DYN_MAX_SIZE, DYN_RANDOM]
dyn["resched"] = False
elif i == RADIO_AHEAD:

View file

@ -777,6 +777,18 @@ message FilterToSearchIn {
GREEN = 4;
BLUE = 5;
}
message Rated {
enum Rating {
ANY_ANSWER_BUTTON = 0;
ANSWER_BUTTON_1 = 1;
ANSWER_BUTTON_2 = 2;
ANSWER_BUTTON_3 = 3;
ANSWER_BUTTON_4 = 4;
MANUAL_RESCHEDULE = 5;
}
uint32 days = 1;
Rating rating = 2;
}
oneof filter {
string tag = 1;
string deck = 2;
@ -785,19 +797,18 @@ message FilterToSearchIn {
NoteIDs nids = 5;
DupeIn dupe = 6;
string field_name = 7;
uint32 forgot_in_days = 8;
Rated rated = 8;
uint32 added_in_days = 9;
int32 due_in_days = 10;
bool whole_collection = 11;
bool current_deck = 12;
bool studied_today = 13;
Flag flag = 13;
bool new = 14;
bool learn = 15;
bool review = 16;
bool due = 17;
bool suspended = 18;
bool buried = 19;
Flag flag = 20;
}
}

View file

@ -317,9 +317,9 @@ impl From<pb::FilterToSearchIn> for Node<'_> {
text: "*".to_string().into(),
is_re: false,
}),
Filter::ForgotInDays(u) => Node::Search(SearchNode::Rated {
days: u,
ease: EaseKind::AnswerButton(1),
Filter::Rated(rated) => Node::Search(SearchNode::Rated {
days: rated.days,
ease: rated.rating().into(),
}),
Filter::AddedInDays(u) => Node::Search(SearchNode::AddedInDays(u)),
Filter::DueInDays(i) => Node::Search(SearchNode::Property {
@ -328,10 +328,6 @@ impl From<pb::FilterToSearchIn> for Node<'_> {
}),
Filter::WholeCollection(_) => Node::Search(SearchNode::WholeCollection),
Filter::CurrentDeck(_) => Node::Search(SearchNode::Deck("current".into())),
Filter::StudiedToday(_) => Node::Search(SearchNode::Rated {
days: 1,
ease: EaseKind::AnyAnswerButton,
}),
Filter::New(_) => Node::Search(SearchNode::State(StateKind::New)),
Filter::Learn(_) => Node::Search(SearchNode::State(StateKind::Learning)),
Filter::Review(_) => Node::Search(SearchNode::State(StateKind::Review)),
@ -359,6 +355,19 @@ impl From<BoolSeparatorProto> for BoolSeparator {
}
}
impl From<pb::filter_to_search_in::rated::Rating> for EaseKind {
fn from(r: pb::filter_to_search_in::rated::Rating) -> Self {
match r {
pb::filter_to_search_in::rated::Rating::AnswerButton1 => EaseKind::AnswerButton(1),
pb::filter_to_search_in::rated::Rating::AnswerButton2 => EaseKind::AnswerButton(2),
pb::filter_to_search_in::rated::Rating::AnswerButton3 => EaseKind::AnswerButton(3),
pb::filter_to_search_in::rated::Rating::AnswerButton4 => EaseKind::AnswerButton(4),
pb::filter_to_search_in::rated::Rating::AnyAnswerButton => EaseKind::AnyAnswerButton,
pb::filter_to_search_in::rated::Rating::ManualReschedule => EaseKind::ManualReschedule,
}
}
}
impl BackendService for Backend {
fn latest_progress(&self, _input: Empty) -> BackendResult<pb::Progress> {
let progress = self.progress_state.lock().unwrap().last_progress;