| 
									
										
										
										
											2022-05-25 19:08:32 +02:00
										 |  |  | <template> | 
					
						
							|  |  |  |   <div> | 
					
						
							|  |  |  |     <v-form ref="domUrlForm" @submit.prevent="debugUrl(recipeUrl)"> | 
					
						
							| 
									
										
										
										
											2022-05-25 19:33:58 -08:00
										 |  |  |       <div> | 
					
						
							| 
									
										
										
										
											2023-01-29 02:39:51 +01:00
										 |  |  |         <v-card-title class="headline"> {{ $t('recipe.recipe-debugger') }} </v-card-title> | 
					
						
							| 
									
										
										
										
											2022-05-25 19:08:32 +02:00
										 |  |  |         <v-card-text> | 
					
						
							| 
									
										
										
										
											2023-01-29 02:39:51 +01:00
										 |  |  |           {{ $t('recipe.recipe-debugger-description') }} | 
					
						
							| 
									
										
										
										
											2022-05-25 19:08:32 +02:00
										 |  |  |           <v-text-field | 
					
						
							|  |  |  |             v-model="recipeUrl" | 
					
						
							|  |  |  |             :label="$t('new-recipe.recipe-url')" | 
					
						
							|  |  |  |             validate-on-blur | 
					
						
							|  |  |  |             :prepend-inner-icon="$globals.icons.link" | 
					
						
							|  |  |  |             autofocus | 
					
						
							|  |  |  |             filled | 
					
						
							|  |  |  |             clearable | 
					
						
							|  |  |  |             rounded | 
					
						
							|  |  |  |             class="rounded-lg mt-2" | 
					
						
							|  |  |  |             :rules="[validators.url]" | 
					
						
							|  |  |  |             :hint="$t('new-recipe.url-form-hint')" | 
					
						
							|  |  |  |             persistent-hint | 
					
						
							|  |  |  |           ></v-text-field> | 
					
						
							|  |  |  |         </v-card-text> | 
					
						
							|  |  |  |         <v-card-actions class="justify-center"> | 
					
						
							|  |  |  |           <div style="width: 250px"> | 
					
						
							|  |  |  |             <BaseButton :disabled="recipeUrl === null" rounded block type="submit" color="info" :loading="loading"> | 
					
						
							|  |  |  |               <template #icon> | 
					
						
							|  |  |  |                 {{ $globals.icons.robot }} | 
					
						
							|  |  |  |               </template> | 
					
						
							| 
									
										
										
										
											2023-01-29 02:39:51 +01:00
										 |  |  |               {{ $t('recipe.debug') }} | 
					
						
							| 
									
										
										
										
											2022-05-25 19:08:32 +02:00
										 |  |  |             </BaseButton> | 
					
						
							|  |  |  |           </div> | 
					
						
							|  |  |  |         </v-card-actions> | 
					
						
							| 
									
										
										
										
											2022-05-25 19:33:58 -08:00
										 |  |  |       </div> | 
					
						
							| 
									
										
										
										
											2022-05-25 19:08:32 +02:00
										 |  |  |     </v-form> | 
					
						
							|  |  |  |     <section v-if="debugData"> | 
					
						
							| 
									
										
										
										
											2023-01-29 02:39:51 +01:00
										 |  |  |       <v-checkbox v-model="debugTreeView" :label="$t('recipe.tree-view')"></v-checkbox> | 
					
						
							| 
									
										
										
										
											2022-05-25 19:08:32 +02:00
										 |  |  |       <LazyRecipeJsonEditor | 
					
						
							|  |  |  |         v-model="debugData" | 
					
						
							|  |  |  |         class="primary" | 
					
						
							|  |  |  |         :options="{ | 
					
						
							|  |  |  |           mode: debugTreeView ? 'tree' : 'code', | 
					
						
							|  |  |  |           search: false, | 
					
						
							|  |  |  |           indentation: 4, | 
					
						
							|  |  |  |           mainMenuBar: false, | 
					
						
							|  |  |  |         }" | 
					
						
							|  |  |  |         height="700px" | 
					
						
							|  |  |  |       /> | 
					
						
							|  |  |  |     </section> | 
					
						
							|  |  |  |   </div> | 
					
						
							|  |  |  | </template> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | <script lang="ts"> | 
					
						
							|  |  |  | import { defineComponent, reactive, toRefs, ref, useRouter, computed, useRoute } from "@nuxtjs/composition-api"; | 
					
						
							|  |  |  | import { useUserApi } from "~/composables/api"; | 
					
						
							|  |  |  | import { validators } from "~/composables/use-validators"; | 
					
						
							| 
									
										
										
										
											2022-10-22 11:51:07 -08:00
										 |  |  | import { Recipe } from "~/lib/api/types/recipe"; | 
					
						
							| 
									
										
										
										
											2022-05-25 19:08:32 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | export default defineComponent({ | 
					
						
							|  |  |  |   setup() { | 
					
						
							|  |  |  |     const state = reactive({ | 
					
						
							|  |  |  |       error: false, | 
					
						
							|  |  |  |       loading: false, | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     const api = useUserApi(); | 
					
						
							|  |  |  |     const route = useRoute(); | 
					
						
							|  |  |  |     const router = useRouter(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     const recipeUrl = computed({ | 
					
						
							|  |  |  |       set(recipe_import_url: string | null) { | 
					
						
							|  |  |  |         if (recipe_import_url !== null) { | 
					
						
							|  |  |  |           recipe_import_url = recipe_import_url.trim(); | 
					
						
							|  |  |  |           router.replace({ query: { ...route.value.query, recipe_import_url } }); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |       }, | 
					
						
							|  |  |  |       get() { | 
					
						
							|  |  |  |         return route.value.query.recipe_import_url as string | null; | 
					
						
							|  |  |  |       }, | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     const debugTreeView = ref(false); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     const debugData = ref<Recipe | null>(null); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     async function debugUrl(url: string | null) { | 
					
						
							|  |  |  |       if (url === null) { | 
					
						
							|  |  |  |         return; | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       state.loading = true; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       const { data } = await api.recipes.testCreateOneUrl(url); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       state.loading = false; | 
					
						
							|  |  |  |       debugData.value = data; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     return { | 
					
						
							|  |  |  |       recipeUrl, | 
					
						
							|  |  |  |       debugTreeView, | 
					
						
							|  |  |  |       debugUrl, | 
					
						
							|  |  |  |       debugData, | 
					
						
							|  |  |  |       ...toRefs(state), | 
					
						
							|  |  |  |       validators, | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  |   }, | 
					
						
							|  |  |  | }); | 
					
						
							|  |  |  | </script> |