Prettify frontend filter code

This commit is contained in:
RumovZ 2021-01-09 12:34:46 +01:00
parent fda2bfdb4e
commit b99d9cda74
2 changed files with 10 additions and 14 deletions

View file

@ -262,10 +262,10 @@ class RustBackend(RustBackendGenerated):
err.ParseFromString(err_bytes) err.ParseFromString(err_bytes)
raise proto_exception_to_native(err) raise proto_exception_to_native(err)
def filters_to_searches(self, **kwargs) -> List[str]: def filters_to_searches(self, filters: dict) -> List[str]:
return [ return [
self.filter_to_search(pb.FilterToSearchIn(**dict([f]))) self.filter_to_search(pb.FilterToSearchIn(**{key: val}))
for f in kwargs.items() for key, val in filters.items()
] ]

View file

@ -1128,7 +1128,7 @@ QTableView {{ gridline-color: {grid} }}
item = SidebarItem( item = SidebarItem(
name, name,
":/icons/heart.svg", ":/icons/heart.svg",
lambda s=filt: self.setFilter(s), # type: ignore self._filterFunc(filt),
item_type=SidebarItemType.FILTER, item_type=SidebarItemType.FILTER,
) )
root.addChild(item) root.addChild(item)
@ -1139,7 +1139,7 @@ QTableView {{ gridline-color: {grid} }}
item = SidebarItem( item = SidebarItem(
t, t,
":/icons/tag.svg", ":/icons/tag.svg",
lambda t=t: self.setFilter(tag=t), # type: ignore self._filterFunc(tag=t),
item_type=SidebarItemType.TAG, item_type=SidebarItemType.TAG,
) )
root.addChild(item) root.addChild(item)
@ -1179,7 +1179,7 @@ QTableView {{ gridline-color: {grid} }}
item = SidebarItem( item = SidebarItem(
m.name, m.name,
":/icons/notetype.svg", ":/icons/notetype.svg",
lambda m=m: self.setFilter(note=m.name), # type: ignore self._filterFunc(note=m.name),
item_type=SidebarItemType.NOTETYPE, item_type=SidebarItemType.NOTETYPE,
) )
root.addChild(item) root.addChild(item)
@ -1207,12 +1207,11 @@ QTableView {{ gridline-color: {grid} }}
ml.popupOver(self.form.filter) ml.popupOver(self.form.filter)
def setFilter(self, *args, **kwargs): def setFilter(self, *search_strings, **filters):
# args are literal searches, kwargs are searches provided by the backend
try: try:
filters = self.col.backend.filters_to_searches(**kwargs) filter_searches = self.col.backend.filters_to_searches(filters)
search = self.col.backend.concatenate_searches( search = self.col.backend.concatenate_searches(
sep=ConcatSeparator.AND, searches=list(args) + filters sep=ConcatSeparator.AND, searches=list(search_strings) + filter_searches
) )
mods = self.mw.app.keyboardModifiers() mods = self.mw.app.keyboardModifiers()
if mods & Qt.AltModifier: if mods & Qt.AltModifier:
@ -1258,10 +1257,7 @@ QTableView {{ gridline-color: {grid} }}
return self._simpleFilters( return self._simpleFilters(
( (
(tr(TR.BROWSING_WHOLE_COLLECTION), NamedFilter.WHOLE_COLLECTION), (tr(TR.BROWSING_WHOLE_COLLECTION), NamedFilter.WHOLE_COLLECTION),
( (tr(TR.BROWSING_CURRENT_DECK), NamedFilter.CURRENT_DECK),
tr(TR.BROWSING_CURRENT_DECK),
NamedFilter.CURRENT_DECK,
),
) )
) )