WIP search page

This commit is contained in:
vabene1111
2025-03-30 00:08:25 +01:00
parent 77195718d8
commit dd1975817e
5 changed files with 109 additions and 23 deletions

View File

@@ -0,0 +1,26 @@
<template>
<v-input label="Test" hint="Test hint" persistent-hint>
<template #prepend v-if="$slots.prepend">
<slot name="prepend">
</slot>
</template>
<v-rating v-model="model"></v-rating>
<template #append v-if="$slots.append">
<slot name="append">
</slot>
</template>
</v-input>
</template>
<script setup lang="ts">
const model = defineModel<boolean>({required: true})
</script>
<style scoped>
</style>

View File

@@ -1217,6 +1217,8 @@ export interface ApiRecipeListRequest {
query?: string;
random?: string;
rating?: number;
ratingGte?: number;
ratingLte?: number;
timescooked?: number;
units?: number;
updatedon?: string;
@@ -8880,6 +8882,14 @@ export class ApiApi extends runtime.BaseAPI {
queryParameters['rating'] = requestParameters['rating'];
}
if (requestParameters['ratingGte'] != null) {
queryParameters['rating_gte'] = requestParameters['ratingGte'];
}
if (requestParameters['ratingLte'] != null) {
queryParameters['rating_lte'] = requestParameters['ratingLte'];
}
if (requestParameters['timescooked'] != null) {
queryParameters['timescooked'] = requestParameters['timescooked'];
}

View File

@@ -154,12 +154,14 @@ import {useUserPreferenceStore} from "@/stores/UserPreferenceStore";
import {useRouteQuery} from "@vueuse/router";
import {toNumberArray} from "@/utils/utils";
import RandomIcon from "@/components/display/RandomIcon.vue";
import {VRating, VSelect} from "vuetify/components";
import RatingField from "@/components/inputs/RatingField.vue";
const {t} = useI18n()
const router = useRouter()
const {mdAndUp} = useDisplay()
const query = useRouteQuery('query', "",)
const query = useRouteQuery('query', "")
const page = useRouteQuery('page', 1, {transform: Number})
const pageSize = useRouteQuery('pageSize', useUserPreferenceStore().deviceSettings.general_tableItemsPerPage, {transform: Number})
@@ -323,6 +325,56 @@ const filters = ref({
object: false,
searchOnLoad: true
},
units: {
value: 'units',
label: 'Unit (any)',
hint: 'Recipes that contain any of the given units',
enabled: false,
default: [],
is: ModelSelect,
model: 'Unit',
modelValue: useRouteQuery('units', [], {transform: toNumberArray}),
mode: 'tags',
object: false,
searchOnLoad: true
},
internal: {
value: 'internal',
label: 'Hide External',
hint: 'Hide external recipes',
enabled: false,
default: [],
is: VSelect,
items: [{value: true, title: 'Yes'}, {value: false, title: 'No'}],
modelValue: useRouteQuery('internal ', "false"),
},
rating: {
value: 'rating',
label: 'Rating (exact)',
hint: 'Recipes with the exact rating',
enabled: false,
default: 0,
is: RatingField,
modelValue: useRouteQuery('rating ', 0),
},
rating_gte: {
value: 'rating_gte',
label: 'Rating (>=)',
hint: 'Recipes with the given or a greater rating',
enabled: false,
default: 0,
is: RatingField,
modelValue: useRouteQuery('rating_gte ', 0),
},
rating_lte: {
value: 'rating_lte',
label: 'Rating (<=)',
hint: 'Recipes with the given or a smaller rating',
enabled: false,
default: 0,
is: RatingField,
modelValue: useRouteQuery('rating_lte ', 0),
},
})
/**