mirror of
				https://github.com/mealie-recipes/mealie.git
				synced 2025-10-31 10:13:32 -04: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:
		| @@ -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); | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user