mirror of
https://github.com/TandoorRecipes/recipes.git
synced 2026-01-11 17:16:59 -05:00
basics of AI provider system
This commit is contained in:
@@ -35,6 +35,16 @@
|
||||
<database-model-col model="MealType"></database-model-col>
|
||||
</v-row>
|
||||
|
||||
<v-row>
|
||||
<v-col>
|
||||
<h2>{{ $t('Ai') }}</h2>
|
||||
</v-col>
|
||||
</v-row>
|
||||
<v-row dense>
|
||||
<database-model-col model="AiProvider"></database-model-col>
|
||||
<database-model-col model="AiLog"></database-model-col>
|
||||
</v-row>
|
||||
|
||||
<template v-for="p in TANDOOR_PLUGINS" :key="p.name">
|
||||
<component :is="p.databasePageComponent" v-if="p.databasePageComponent"></component>
|
||||
</template>
|
||||
|
||||
@@ -140,10 +140,18 @@
|
||||
@keydown.enter="loadRecipeFromUrl({url: importUrl})"></v-text-field>
|
||||
|
||||
<div v-if="importType == 'ai'">
|
||||
<v-btn-toggle v-model="aiMode">
|
||||
<v-btn value="file">{{ $t('File') }}</v-btn>
|
||||
<v-btn value="text">{{ $t('Text') }}</v-btn>
|
||||
</v-btn-toggle>
|
||||
<v-row>
|
||||
<v-col md="6">
|
||||
<ModelSelect model="AiProvider" v-model="selectedAiProvider"></ModelSelect>
|
||||
</v-col>
|
||||
<v-col md="6">
|
||||
<v-btn-toggle class="mb-2" border divided v-model="aiMode">
|
||||
<v-btn value="file">{{ $t('File') }}</v-btn>
|
||||
<v-btn value="text">{{ $t('Text') }}</v-btn>
|
||||
</v-btn-toggle>
|
||||
</v-col>
|
||||
</v-row>
|
||||
|
||||
|
||||
<v-file-upload v-model="image" v-if="aiMode == 'file'" :loading="loading" clearable>
|
||||
<template #icon>
|
||||
@@ -540,6 +548,7 @@ import {useI18n} from "vue-i18n";
|
||||
import {computed, onMounted, ref} from "vue";
|
||||
import {
|
||||
AccessToken,
|
||||
AiProvider,
|
||||
ApiApi,
|
||||
ImportLog,
|
||||
Recipe,
|
||||
@@ -648,6 +657,7 @@ const appImportDuplicates = ref(false)
|
||||
const appImportLog = ref<null | ImportLog>(null)
|
||||
const image = ref<null | File>(null)
|
||||
const aiMode = ref<'file' | 'text'>('file')
|
||||
const selectedAiProvider = ref<undefined | AiProvider>(undefined)
|
||||
const editAfterImport = ref(false)
|
||||
|
||||
const bookmarkletToken = ref("")
|
||||
@@ -724,12 +734,15 @@ function loadRecipeFromUrl(recipeFromSourceRequest: RecipeFromSource) {
|
||||
*/
|
||||
function loadRecipeFromAiImport() {
|
||||
let request = null
|
||||
|
||||
if(selectedAiProvider.value == undefined) {
|
||||
useMessageStore().addError(ErrorMessageType.CREATE_ERROR, "No AI Provider selected")
|
||||
}
|
||||
|
||||
if (image.value != null && aiMode.value == 'file') {
|
||||
console.log('file import')
|
||||
request = doAiImport(image.value)
|
||||
request = doAiImport(selectedAiProvider.value.id!,image.value)
|
||||
} else if (sourceImportText.value != '' && aiMode.value == 'text') {
|
||||
console.log('text import')
|
||||
request = doAiImport(null, sourceImportText.value)
|
||||
request = doAiImport(selectedAiProvider.value.id!, null, sourceImportText.value)
|
||||
}
|
||||
|
||||
if (request != null) {
|
||||
@@ -811,13 +824,13 @@ function deleteStep(step: SourceImportStep) {
|
||||
}
|
||||
|
||||
function handleMergeAllSteps(): void {
|
||||
if (importResponse.value.recipe && importResponse.value.recipe.steps){
|
||||
if (importResponse.value.recipe && importResponse.value.recipe.steps) {
|
||||
mergeAllSteps(importResponse.value.recipe.steps)
|
||||
}
|
||||
}
|
||||
|
||||
function handleSplitAllSteps(): void {
|
||||
if (importResponse.value.recipe && importResponse.value.recipe.steps){
|
||||
if (importResponse.value.recipe && importResponse.value.recipe.steps) {
|
||||
splitAllSteps(importResponse.value.recipe.steps, '\n')
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user