mirror of
https://github.com/mealie-recipes/mealie.git
synced 2025-07-19 13:19:41 +02:00
feat: additional recipe sort behavior (#1858)
* changed default sort direction for certain attrs * added workaround for filtering out null datetimes * filtered out null-valued results for certain sorts * removed unecessary parse * used minyear instead of 1900
This commit is contained in:
parent
33dffccaa5
commit
1b9ff454fb
4 changed files with 39 additions and 17 deletions
|
@ -243,7 +243,10 @@ export default defineComponent({
|
|||
cookbook.value,
|
||||
category.value,
|
||||
tag.value,
|
||||
tool.value
|
||||
tool.value,
|
||||
|
||||
// filter out recipes that have a null value for the property we're sorting by
|
||||
preferences.value.filterNull && preferences.value.orderBy ? `${preferences.value.orderBy} <> null` : null
|
||||
);
|
||||
|
||||
// since we doubled the first call, we also need to advance the page
|
||||
|
@ -270,7 +273,10 @@ export default defineComponent({
|
|||
cookbook.value,
|
||||
category.value,
|
||||
tag.value,
|
||||
tool.value
|
||||
tool.value,
|
||||
|
||||
// filter out recipes that have a null value for the property we're sorting by
|
||||
preferences.value.filterNull && preferences.value.orderBy ? `${preferences.value.orderBy} <> null` : null
|
||||
);
|
||||
if (!newRecipes.length) {
|
||||
hasMore.value = false;
|
||||
|
@ -287,10 +293,11 @@ export default defineComponent({
|
|||
return;
|
||||
}
|
||||
|
||||
function setter(orderBy: string, ascIcon: string, descIcon: string) {
|
||||
function setter(orderBy: string, ascIcon: string, descIcon: string, defaultOrderDirection = "asc", filterNull = false) {
|
||||
if (preferences.value.orderBy !== orderBy) {
|
||||
preferences.value.orderBy = orderBy;
|
||||
preferences.value.orderDirection = "asc";
|
||||
preferences.value.orderDirection = defaultOrderDirection;
|
||||
preferences.value.filterNull = filterNull;
|
||||
} else {
|
||||
preferences.value.orderDirection = preferences.value.orderDirection === "asc" ? "desc" : "asc";
|
||||
}
|
||||
|
@ -299,19 +306,19 @@ export default defineComponent({
|
|||
|
||||
switch (sortType) {
|
||||
case EVENTS.az:
|
||||
setter("name", $globals.icons.sortAlphabeticalAscending, $globals.icons.sortAlphabeticalDescending);
|
||||
setter("name", $globals.icons.sortAlphabeticalAscending, $globals.icons.sortAlphabeticalDescending, "asc", false);
|
||||
break;
|
||||
case EVENTS.rating:
|
||||
setter("rating", $globals.icons.sortAscending, $globals.icons.sortDescending);
|
||||
setter("rating", $globals.icons.sortAscending, $globals.icons.sortDescending, "desc", true);
|
||||
break;
|
||||
case EVENTS.created:
|
||||
setter("created_at", $globals.icons.sortCalendarAscending, $globals.icons.sortCalendarDescending);
|
||||
setter("created_at", $globals.icons.sortCalendarAscending, $globals.icons.sortCalendarDescending, "desc", false);
|
||||
break;
|
||||
case EVENTS.updated:
|
||||
setter("update_at", $globals.icons.sortClockAscending, $globals.icons.sortClockDescending);
|
||||
setter("update_at", $globals.icons.sortClockAscending, $globals.icons.sortClockDescending, "desc", false);
|
||||
break;
|
||||
case EVENTS.lastMade:
|
||||
setter("last_made", $globals.icons.sortCalendarAscending, $globals.icons.sortCalendarDescending);
|
||||
setter("last_made", $globals.icons.sortCalendarAscending, $globals.icons.sortCalendarDescending, "desc", true);
|
||||
break;
|
||||
default:
|
||||
console.log("Unknown Event", sortType);
|
||||
|
@ -335,7 +342,10 @@ export default defineComponent({
|
|||
cookbook.value,
|
||||
category.value,
|
||||
tag.value,
|
||||
tool.value
|
||||
tool.value,
|
||||
|
||||
// filter out recipes that have a null value for the property we're sorting by
|
||||
preferences.value.filterNull && preferences.value.orderBy ? `${preferences.value.orderBy} <> null` : null
|
||||
);
|
||||
context.emit(REPLACE_RECIPES_EVENT, newRecipes);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue