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 {useDebounceFn} from "@vueuse/core";
import {ErrorMessageType, useMessageStore} from "@/stores/MessageStore";
import {useI18n} from "vue-i18n";
const router = useRouter()
const {mobile} = useDisplay()
const {t} = useI18n()
const dialog = ref(false)
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 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 => {
searchResults.push({name: r.name, image: r.image, recipeId: r.id} as SearchResult)
})

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,44 +1,58 @@
<template>
<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-col>
<v-card :loading="loading">
<v-card-title>
{{ $t('Search') }}
<v-expansion-panels v-model="panel">
<v-expansion-panel value="search">
<v-expansion-panel-text>
<v-form :disabled="loading">
</v-card-title>
<v-card-text>
<v-form :disabled="loading">
<v-text-field :label="$t('Search')" v-model="urlSearchParams.query" clearable></v-text-field>
<model-select model="Keyword" mode="tags" v-model="urlSearchParams.keywords" :object="false"></model-select>
<model-select model="Food" mode="tags" v-model="urlSearchParams.foods" :object="false"></model-select>
<model-select model="Unit" mode="tags" v-model="urlSearchParams.units" :object="false"></model-select>
<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>
<model-select model="Food" mode="tags" v-model="urlSearchParams.foods" :object="false"></model-select>
<model-select model="Unit" mode="tags" v-model="urlSearchParams.units" :object="false"></model-select>
<model-select model="RecipeBook" mode="tags" v-model="urlSearchParams.books" :object="false"></model-select>
<!-- <v-number-input :label="$t('times_cooked')" v-model="searchParameters.timescooked" clearable></v-number-input>-->
<!-- <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-number-input :label="$t('times_cooked')" v-model="searchParameters.timescooked" clearable></v-number-input>-->
<!-- <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>
<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">
<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-expansion-panel-text>
<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-row>
@@ -108,6 +122,7 @@ const urlSearchParams = useUrlSearchParams('history', {})
const loading = ref(false)
const dialog = ref(false)
const panel = ref('')
const tableHeaders = [
{title: t('Image'), width: '1%', noBreak: true, key: 'image',},
@@ -124,6 +139,7 @@ const newFilterName = ref('')
onMounted(() => {
urlSearchParams.page = 1
searchRecipes({page: 1})
})
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="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>
</template>