improve search/start page

This commit is contained in:
vabene1111
2025-03-12 20:12:02 +01:00
parent 40ee21a613
commit 752e98275d
34 changed files with 88 additions and 30 deletions

View File

@@ -70,9 +70,11 @@ import {useDisplay} from "vuetify";
import VClosableCardTitle from "@/components/dialogs/VClosableCardTitle.vue"; import VClosableCardTitle from "@/components/dialogs/VClosableCardTitle.vue";
import {useDebounceFn} from "@vueuse/core"; import {useDebounceFn} from "@vueuse/core";
import {ErrorMessageType, useMessageStore} from "@/stores/MessageStore"; import {ErrorMessageType, useMessageStore} from "@/stores/MessageStore";
import {useI18n} from "vue-i18n";
const router = useRouter() const router = useRouter()
const {mobile} = useDisplay() const {mobile} = useDisplay()
const {t} = useI18n()
const dialog = ref(false) const dialog = ref(false)
const recipes = ref([] as Recipe[]) const recipes = ref([] as Recipe[])
@@ -114,6 +116,8 @@ const searchResults = computed(() => {
// searchResults.push({name: 'Recent 2', icon: 'fas fa-history',} as SearchResult) // searchResults.push({name: 'Recent 2', icon: 'fas fa-history',} as SearchResult)
// searchResults.push({name: 'Recent 3', icon: 'fas fa-history',} as SearchResult) // searchResults.push({name: 'Recent 3', icon: 'fas fa-history',} as SearchResult)
searchResults.push({name: t('AllRecipes'), icon: 'fas fa-search', type: "link_advanced_search"} as SearchResult)
flatRecipes.value.slice(0, 5).forEach(r => { flatRecipes.value.slice(0, 5).forEach(r => {
searchResults.push({name: r.name, image: r.image, recipeId: r.id} as SearchResult) searchResults.push({name: r.name, image: r.image, recipeId: r.id} as SearchResult)
}) })

View File

@@ -17,6 +17,7 @@
"Added_on": "", "Added_on": "",
"Admin": "", "Admin": "",
"Advanced": "", "Advanced": "",
"AllRecipes": "",
"App": "", "App": "",
"Are_You_Sure": "", "Are_You_Sure": "",
"Auto_Planner": "", "Auto_Planner": "",

View File

@@ -17,6 +17,7 @@
"Added_on": "Добавено", "Added_on": "Добавено",
"Admin": "", "Admin": "",
"Advanced": "Разширено", "Advanced": "Разширено",
"AllRecipes": "",
"App": "Приложение", "App": "Приложение",
"Are_You_Sure": "Сигурен ли си?", "Are_You_Sure": "Сигурен ли си?",
"Auto_Planner": "Автоматичен плановик", "Auto_Planner": "Автоматичен плановик",

View File

@@ -20,6 +20,7 @@
"Admin": "", "Admin": "",
"Advanced": "", "Advanced": "",
"Alignment": "", "Alignment": "",
"AllRecipes": "",
"Amount": "Quantitat", "Amount": "Quantitat",
"App": "", "App": "",
"Are_You_Sure": "", "Are_You_Sure": "",

View File

@@ -20,6 +20,7 @@
"Admin": "", "Admin": "",
"Advanced": "Rozšířené", "Advanced": "Rozšířené",
"Alignment": "Zarovnání", "Alignment": "Zarovnání",
"AllRecipes": "",
"Amount": "Množství", "Amount": "Množství",
"App": "Aplikace", "App": "Aplikace",
"Are_You_Sure": "Jste si jistí?", "Are_You_Sure": "Jste si jistí?",

View File

@@ -20,6 +20,7 @@
"Admin": "", "Admin": "",
"Advanced": "Avanceret", "Advanced": "Avanceret",
"Alignment": "Justering", "Alignment": "Justering",
"AllRecipes": "",
"Amount": "Mængde", "Amount": "Mængde",
"App": "App", "App": "App",
"Are_You_Sure": "Er du sikker?", "Are_You_Sure": "Er du sikker?",

View File

@@ -22,6 +22,7 @@
"Advanced": "Erweitert", "Advanced": "Erweitert",
"Advanced Search Settings": "Erweiterte Sucheinstellungen", "Advanced Search Settings": "Erweiterte Sucheinstellungen",
"Alignment": "Ausrichtung", "Alignment": "Ausrichtung",
"AllRecipes": "Alle Rezepte",
"Amount": "Menge", "Amount": "Menge",
"App": "App", "App": "App",
"Are_You_Sure": "Bist du sicher?", "Are_You_Sure": "Bist du sicher?",

View File

@@ -19,6 +19,7 @@
"Added_on": "Προστέθηκε στις", "Added_on": "Προστέθηκε στις",
"Admin": "", "Admin": "",
"Advanced": "Για προχωρημένους", "Advanced": "Για προχωρημένους",
"AllRecipes": "",
"Amount": "Ποσότητα", "Amount": "Ποσότητα",
"App": "Εφαρμογή", "App": "Εφαρμογή",
"Are_You_Sure": "Είστε σίγουροι;", "Are_You_Sure": "Είστε σίγουροι;",

View File

@@ -20,6 +20,7 @@
"Admin": "Admin", "Admin": "Admin",
"Advanced": "Advanced", "Advanced": "Advanced",
"Alignment": "Alignment", "Alignment": "Alignment",
"AllRecipes": "All Recipes",
"Amount": "Amount", "Amount": "Amount",
"App": "App", "App": "App",
"Are_You_Sure": "Are you sure?", "Are_You_Sure": "Are you sure?",

View File

@@ -20,6 +20,7 @@
"Admin": "", "Admin": "",
"Advanced": "Avanzado", "Advanced": "Avanzado",
"Alignment": "Alineación", "Alignment": "Alineación",
"AllRecipes": "",
"Amount": "Cantidad", "Amount": "Cantidad",
"App": "Aplicación", "App": "Aplicación",
"Are_You_Sure": "Esta seguro?", "Are_You_Sure": "Esta seguro?",

View File

@@ -12,6 +12,7 @@
"Added_To_Shopping_List": "Lisätty ostoslistaan", "Added_To_Shopping_List": "Lisätty ostoslistaan",
"Admin": "", "Admin": "",
"Advanced Search Settings": "Tarkennetun Haun Asetukset", "Advanced Search Settings": "Tarkennetun Haun Asetukset",
"AllRecipes": "",
"Auto_Planner": "Automaattinen Suunnittelija", "Auto_Planner": "Automaattinen Suunnittelija",
"Automate": "Automatisoi", "Automate": "Automatisoi",
"Automation": "Automaatio", "Automation": "Automaatio",

View File

@@ -21,6 +21,7 @@
"Advanced": "Avancé", "Advanced": "Avancé",
"Advanced Search Settings": "Paramètres de recherche avancée", "Advanced Search Settings": "Paramètres de recherche avancée",
"Alignment": "Alignement", "Alignment": "Alignement",
"AllRecipes": "",
"Amount": "Quantité", "Amount": "Quantité",
"App": "Appli", "App": "Appli",
"Are_You_Sure": "Etes-vous sûr ?", "Are_You_Sure": "Etes-vous sûr ?",

View File

@@ -20,6 +20,7 @@
"Admin": "", "Admin": "",
"Advanced": "מתקדם", "Advanced": "מתקדם",
"Alignment": "יישור", "Alignment": "יישור",
"AllRecipes": "",
"Amount": "כמות", "Amount": "כמות",
"App": "אפליקציה", "App": "אפליקציה",
"Are_You_Sure": "בטוח?", "Are_You_Sure": "בטוח?",

View File

@@ -20,6 +20,7 @@
"Admin": "", "Admin": "",
"Advanced": "Haladó", "Advanced": "Haladó",
"Alignment": "Igazítás", "Alignment": "Igazítás",
"AllRecipes": "",
"Amount": "Összeg", "Amount": "Összeg",
"App": "Applikáció", "App": "Applikáció",
"Are_You_Sure": "Biztos benne?", "Are_You_Sure": "Biztos benne?",

View File

@@ -11,6 +11,7 @@
"Add_to_Shopping": "Ավելացնել գնումներին", "Add_to_Shopping": "Ավելացնել գնումներին",
"Admin": "", "Admin": "",
"Advanced Search Settings": "Ընդլայնված փնտրման կարգավորումներ", "Advanced Search Settings": "Ընդլայնված փնտրման կարգավորումներ",
"AllRecipes": "",
"Automate": "Ավտոմատացնել", "Automate": "Ավտոմատացնել",
"Available": "", "Available": "",
"AvailableCategories": "", "AvailableCategories": "",

View File

@@ -19,6 +19,7 @@
"Added_on": "", "Added_on": "",
"Admin": "", "Admin": "",
"Advanced": "", "Advanced": "",
"AllRecipes": "",
"App": "", "App": "",
"Are_You_Sure": "", "Are_You_Sure": "",
"Auto_Planner": "", "Auto_Planner": "",

View File

@@ -20,6 +20,7 @@
"Admin": "", "Admin": "",
"Advanced": "", "Advanced": "",
"Alignment": "", "Alignment": "",
"AllRecipes": "",
"Amount": "", "Amount": "",
"App": "", "App": "",
"Are_You_Sure": "", "Are_You_Sure": "",

View File

@@ -20,6 +20,7 @@
"Admin": "", "Admin": "",
"Advanced": "Avanzate", "Advanced": "Avanzate",
"Advanced Search Settings": "Impostazioni avanzate di ricerca", "Advanced Search Settings": "Impostazioni avanzate di ricerca",
"AllRecipes": "",
"Amount": "Quantità", "Amount": "Quantità",
"App": "Applicazione", "App": "Applicazione",
"Are_You_Sure": "Sei sicuro?", "Are_You_Sure": "Sei sicuro?",

View File

@@ -20,6 +20,7 @@
"Admin": "", "Admin": "",
"Advanced": "", "Advanced": "",
"Alignment": "", "Alignment": "",
"AllRecipes": "",
"Amount": "Suma", "Amount": "Suma",
"App": "", "App": "",
"Are_You_Sure": "", "Are_You_Sure": "",

View File

@@ -20,6 +20,7 @@
"Admin": "", "Admin": "",
"Advanced": "Avansert", "Advanced": "Avansert",
"Alignment": "Justering", "Alignment": "Justering",
"AllRecipes": "",
"Amount": "Mengde", "Amount": "Mengde",
"App": "App", "App": "App",
"Are_You_Sure": "", "Are_You_Sure": "",

View File

@@ -21,6 +21,7 @@
"Admin": "", "Admin": "",
"Advanced": "Geavanceerd", "Advanced": "Geavanceerd",
"Advanced Search Settings": "Geavanceerde zoekinstellingen", "Advanced Search Settings": "Geavanceerde zoekinstellingen",
"AllRecipes": "",
"Amount": "Hoeveelheid", "Amount": "Hoeveelheid",
"App": "App", "App": "App",
"Are_You_Sure": "Weet je het zeker?", "Are_You_Sure": "Weet je het zeker?",

View File

@@ -21,6 +21,7 @@
"Advanced": "Zaawansowany", "Advanced": "Zaawansowany",
"Advanced Search Settings": "Ustawienia zaawansowanego wyszukiwania", "Advanced Search Settings": "Ustawienia zaawansowanego wyszukiwania",
"Alignment": "Wyrównanie", "Alignment": "Wyrównanie",
"AllRecipes": "",
"Amount": "Ilość", "Amount": "Ilość",
"App": "Aplikacja", "App": "Aplikacja",
"Are_You_Sure": "Jesteś pewny?", "Are_You_Sure": "Jesteś pewny?",

View File

@@ -17,6 +17,7 @@
"Added_on": "Adicionado a", "Added_on": "Adicionado a",
"Admin": "", "Admin": "",
"Advanced": "Avançado", "Advanced": "Avançado",
"AllRecipes": "",
"Amount": "Quantidade", "Amount": "Quantidade",
"Auto_Planner": "", "Auto_Planner": "",
"Auto_Sort": "Classificação automática", "Auto_Sort": "Classificação automática",

View File

@@ -20,6 +20,7 @@
"Admin": "", "Admin": "",
"Advanced": "Avançado", "Advanced": "Avançado",
"Alignment": "Alinhamento", "Alignment": "Alinhamento",
"AllRecipes": "",
"Amount": "Quantidade", "Amount": "Quantidade",
"App": "Aplicação", "App": "Aplicação",
"Are_You_Sure": "Você tem certeza?", "Are_You_Sure": "Você tem certeza?",

View File

@@ -20,6 +20,7 @@
"Admin": "", "Admin": "",
"Advanced": "Avansat", "Advanced": "Avansat",
"Advanced Search Settings": "", "Advanced Search Settings": "",
"AllRecipes": "",
"Amount": "Cantitate", "Amount": "Cantitate",
"App": "Aplicație", "App": "Aplicație",
"Are_You_Sure": "Sunteți sigur?", "Are_You_Sure": "Sunteți sigur?",

View File

@@ -18,6 +18,7 @@
"Admin": "", "Admin": "",
"Advanced": "Расширенный", "Advanced": "Расширенный",
"Advanced Search Settings": "", "Advanced Search Settings": "",
"AllRecipes": "",
"Are_You_Sure": "Вы уверены?", "Are_You_Sure": "Вы уверены?",
"Auto_Planner": "Автопланировщик", "Auto_Planner": "Автопланировщик",
"Automate": "Автоматизировать", "Automate": "Автоматизировать",

View File

@@ -15,6 +15,7 @@
"Added_by": "Dodano s strani", "Added_by": "Dodano s strani",
"Admin": "", "Admin": "",
"Advanced Search Settings": "", "Advanced Search Settings": "",
"AllRecipes": "",
"Amount": "Količina", "Amount": "Količina",
"Auto_Planner": "Avto-planer", "Auto_Planner": "Avto-planer",
"Auto_Sort": "Samodejno Razvrščanje", "Auto_Sort": "Samodejno Razvrščanje",

View File

@@ -21,6 +21,7 @@
"Admin": "", "Admin": "",
"Advanced": "Avancerat", "Advanced": "Avancerat",
"Alignment": "Orientering", "Alignment": "Orientering",
"AllRecipes": "",
"Amount": "Mängd", "Amount": "Mängd",
"App": "App", "App": "App",
"Are_You_Sure": "Är du säker?", "Are_You_Sure": "Är du säker?",

View File

@@ -20,6 +20,7 @@
"Admin": "", "Admin": "",
"Advanced": "Gelişmiş", "Advanced": "Gelişmiş",
"Alignment": "Hizalama", "Alignment": "Hizalama",
"AllRecipes": "",
"Amount": "Miktar", "Amount": "Miktar",
"App": "Uygulama", "App": "Uygulama",
"Are_You_Sure": "Emin misin?", "Are_You_Sure": "Emin misin?",

View File

@@ -17,6 +17,7 @@
"Added_on": "Додано На", "Added_on": "Додано На",
"Admin": "", "Admin": "",
"Advanced": "", "Advanced": "",
"AllRecipes": "",
"Amount": "Кількість", "Amount": "Кількість",
"App": "", "App": "",
"Are_You_Sure": "", "Are_You_Sure": "",

View File

@@ -20,6 +20,7 @@
"Admin": "", "Admin": "",
"Advanced": "高级", "Advanced": "高级",
"Alignment": "校准", "Alignment": "校准",
"AllRecipes": "",
"Amount": "数量", "Amount": "数量",
"App": "应用", "App": "应用",
"Are_You_Sure": "你确定吗?", "Are_You_Sure": "你确定吗?",

View File

@@ -9,6 +9,7 @@
"Add_to_Plan": "加入計劃", "Add_to_Plan": "加入計劃",
"Add_to_Shopping": "加入購物清單", "Add_to_Shopping": "加入購物清單",
"Admin": "", "Admin": "",
"AllRecipes": "",
"Available": "", "Available": "",
"AvailableCategories": "", "AvailableCategories": "",
"BaseUnit": "", "BaseUnit": "",

View File

@@ -1,44 +1,58 @@
<template> <template>
<v-container> <v-container>
<v-row>
<v-col cols="12" md="6" offset-md="3">
<v-text-field :label="$t('Search')"
v-model="urlSearchParams.query"
:loading="loading"
@submit="searchRecipes({page: 1})"
@keydown.enter="searchRecipes({page: 1})"
clearable hide-details>
<template v-slot:append>
<v-btn @click="panel ='search' " v-if="panel == ''" color="primary" icon><i class="fa-solid fa-caret-down"></i></v-btn>
<v-btn @click="panel ='' " v-if="panel == 'search'" color="primary" icon><i class="fa-solid fa-caret-up"></i></v-btn>
</template>
</v-text-field>
</v-col>
</v-row>
<v-row> <v-row>
<v-col> <v-col>
<v-card :loading="loading"> <v-expansion-panels v-model="panel">
<v-card-title> <v-expansion-panel value="search">
{{ $t('Search') }} <v-expansion-panel-text>
<v-form :disabled="loading">
</v-card-title> <model-select model="Keyword" mode="tags" v-model="urlSearchParams.keywords" :object="false"></model-select>
<v-card-text> <model-select model="Food" mode="tags" v-model="urlSearchParams.foods" :object="false"></model-select>
<v-form :disabled="loading"> <model-select model="Unit" mode="tags" v-model="urlSearchParams.units" :object="false"></model-select>
<v-text-field :label="$t('Search')" v-model="urlSearchParams.query" clearable></v-text-field> <model-select model="RecipeBook" mode="tags" v-model="urlSearchParams.books" :object="false"></model-select>
<model-select model="Keyword" mode="tags" v-model="urlSearchParams.keywords" :object="false"></model-select> <!-- <v-number-input :label="$t('times_cooked')" v-model="searchParameters.timescooked" clearable></v-number-input>-->
<model-select model="Food" mode="tags" v-model="urlSearchParams.foods" :object="false"></model-select> <!-- <v-date-input :label="$t('last_cooked')" v-model="searchParameters.cookedon" clearable></v-date-input>-->
<model-select model="Unit" mode="tags" v-model="urlSearchParams.units" :object="false"></model-select> <!-- <v-date-input :label="$t('last_viewed')" v-model="searchParameters.viewedon" clearable></v-date-input>-->
<model-select model="RecipeBook" mode="tags" v-model="urlSearchParams.books" :object="false"></model-select> <!-- <v-date-input :label="$t('created_on')" v-model="searchParameters.createdon" clearable></v-date-input>-->
<!-- <v-date-input :label="$t('updatedon')" v-model="searchParameters.updatedon" clearable></v-date-input>-->
<!-- <v-number-input :label="$t('times_cooked')" v-model="searchParameters.timescooked" clearable></v-number-input>--> <v-checkbox :label="$t('make_now')" v-model="urlSearchParams.makenow"></v-checkbox>
<!-- <v-date-input :label="$t('last_cooked')" v-model="searchParameters.cookedon" clearable></v-date-input>-->
<!-- <v-date-input :label="$t('last_viewed')" v-model="searchParameters.viewedon" clearable></v-date-input>-->
<!-- <v-date-input :label="$t('created_on')" v-model="searchParameters.createdon" clearable></v-date-input>-->
<!-- <v-date-input :label="$t('updatedon')" v-model="searchParameters.updatedon" clearable></v-date-input>-->
<v-checkbox :label="$t('make_now')" v-model="urlSearchParams.makenow"></v-checkbox> <model-select model="CustomFilter" v-model="selectedCustomFilter">
<template #append>
<v-btn icon="fa-solid fa-upload" color="warning" :disabled="Object.keys(selectedCustomFilter).length == 0"
@click="loadCustomFilter()"></v-btn>
<v-btn icon="$save" class="ms-1" color="save" @click="saveCustomFilter()"></v-btn>
</template>
</model-select>
</v-form>
<model-select model="CustomFilter" v-model="selectedCustomFilter"> </v-expansion-panel-text>
<template #append>
<v-btn icon="fa-solid fa-upload" color="warning" :disabled="Object.keys(selectedCustomFilter).length == 0" @click="loadCustomFilter()"></v-btn>
<v-btn icon="$save" class="ms-1" color="save" @click="saveCustomFilter()"></v-btn>
</template>
</model-select>
</v-form>
<v-card-actions v-if="panel == 'search'">
<v-btn @click="reset()" prepend-icon="fa-solid fa-circle-xmark" :disabled="Object.keys(urlSearchParams).length == 0">{{ $t('Reset') }}</v-btn>
<v-btn @click="searchRecipes({page: 1})" prepend-icon="$search">{{ $t('Search') }}</v-btn>
</v-card-actions>
</v-expansion-panel>
</v-expansion-panels>
</v-card-text>
<v-card-actions>
<v-btn @click="reset()" prepend-icon="fa-solid fa-circle-xmark" :disabled="Object.keys(urlSearchParams).length == 0">{{ $t('Reset') }}</v-btn>
<v-btn @click="searchRecipes({page: 1})" prepend-icon="$search">{{ $t('Search') }}</v-btn>
</v-card-actions>
</v-card>
</v-col> </v-col>
</v-row> </v-row>
@@ -108,6 +122,7 @@ const urlSearchParams = useUrlSearchParams('history', {})
const loading = ref(false) const loading = ref(false)
const dialog = ref(false) const dialog = ref(false)
const panel = ref('')
const tableHeaders = [ const tableHeaders = [
{title: t('Image'), width: '1%', noBreak: true, key: 'image',}, {title: t('Image'), width: '1%', noBreak: true, key: 'image',},
@@ -124,6 +139,7 @@ const newFilterName = ref('')
onMounted(() => { onMounted(() => {
urlSearchParams.page = 1 urlSearchParams.page = 1
searchRecipes({page: 1})
}) })
function searchRecipes(options: VDataTableUpdateOptions) { function searchRecipes(options: VDataTableUpdateOptions) {

View File

@@ -21,6 +21,13 @@
<horizontal-recipe-scroller :skeletons="4" mode="keyword"></horizontal-recipe-scroller> <horizontal-recipe-scroller :skeletons="4" mode="keyword"></horizontal-recipe-scroller>
<horizontal-recipe-scroller :skeletons="4" mode="random"></horizontal-recipe-scroller> <horizontal-recipe-scroller :skeletons="4" mode="random"></horizontal-recipe-scroller>
<v-row>
<v-col class="text-center">
<v-btn size="x-large" rounded="xl" prepend-icon="$search" variant="tonal" :to="{name: 'view_search', params: {query: ''}}">{{ $t('View_Recipes') }}</v-btn>
</v-col>
</v-row>
</v-container> </v-container>
</template> </template>