| 
									
										
										
										
											2021-11-26 22:37:06 -09:00
										 |  |  | <template> | 
					
						
							|  |  |  |   <v-container> | 
					
						
							|  |  |  |     <BasePageTitle divider> | 
					
						
							|  |  |  |       <template #header> | 
					
						
							|  |  |  |         <v-img | 
					
						
							| 
									
										
										
										
											2025-06-20 00:09:12 +07:00
										 |  |  |           width="100%" | 
					
						
							| 
									
										
										
										
											2021-11-26 22:37:06 -09:00
										 |  |  |           max-height="200" | 
					
						
							|  |  |  |           max-width="200" | 
					
						
							|  |  |  |           class="mb-2" | 
					
						
							|  |  |  |           :src="require('~/static/svgs/manage-data-migrations.svg')" | 
					
						
							| 
									
										
										
										
											2025-06-20 00:09:12 +07:00
										 |  |  |         /> | 
					
						
							|  |  |  |       </template> | 
					
						
							|  |  |  |       <template #title> | 
					
						
							|  |  |  |         {{ $t('migration.recipe-data-migrations') }} | 
					
						
							| 
									
										
										
										
											2021-11-26 22:37:06 -09:00
										 |  |  |       </template> | 
					
						
							| 
									
										
										
										
											2023-03-21 20:45:27 +01:00
										 |  |  |       {{ $t('migration.recipe-data-migrations-explanation') }} | 
					
						
							| 
									
										
										
										
											2021-11-26 22:37:06 -09:00
										 |  |  |     </BasePageTitle> | 
					
						
							|  |  |  |     <v-container> | 
					
						
							| 
									
										
										
										
											2025-06-20 00:09:12 +07:00
										 |  |  |       <BaseCardSectionTitle :title="$t('migration.new-migration')" /> | 
					
						
							|  |  |  |       <v-card | 
					
						
							|  |  |  |         variant="outlined" | 
					
						
							|  |  |  |         :loading="loading" | 
					
						
							|  |  |  |       > | 
					
						
							| 
									
										
										
										
											2023-03-21 20:45:27 +01:00
										 |  |  |         <v-card-title> {{ $t('migration.choose-migration-type') }} </v-card-title> | 
					
						
							| 
									
										
										
										
											2025-06-20 00:09:12 +07:00
										 |  |  |         <v-card-text | 
					
						
							|  |  |  |           v-if="content" | 
					
						
							|  |  |  |           class="pb-0" | 
					
						
							|  |  |  |         > | 
					
						
							| 
									
										
										
										
											2021-11-26 22:37:06 -09:00
										 |  |  |           <div class="mb-2"> | 
					
						
							| 
									
										
										
										
											2025-06-20 00:09:12 +07:00
										 |  |  |             <BaseOverflowButton | 
					
						
							|  |  |  |               v-model="migrationType" | 
					
						
							|  |  |  |               mode="model" | 
					
						
							|  |  |  |               :items="items" | 
					
						
							|  |  |  |             /> | 
					
						
							| 
									
										
										
										
											2021-11-26 22:37:06 -09:00
										 |  |  |           </div> | 
					
						
							|  |  |  |           {{ content.text }} | 
					
						
							| 
									
										
										
										
											2025-06-20 00:09:12 +07:00
										 |  |  |           <v-treeview | 
					
						
							|  |  |  |             v-if="content.tree" | 
					
						
							|  |  |  |             density="compact" | 
					
						
							|  |  |  |             :items="content.tree" | 
					
						
							|  |  |  |           > | 
					
						
							| 
									
										
										
										
											2021-11-26 22:37:06 -09:00
										 |  |  |             <template #prepend="{ item }"> | 
					
						
							|  |  |  |               <v-icon> {{ item.icon }}</v-icon> | 
					
						
							|  |  |  |             </template> | 
					
						
							|  |  |  |           </v-treeview> | 
					
						
							|  |  |  |         </v-card-text> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-06-20 00:09:12 +07:00
										 |  |  |         <v-card-title class="mt-0"> | 
					
						
							|  |  |  |           {{ $t('general.upload-file') }} | 
					
						
							|  |  |  |         </v-card-title> | 
					
						
							| 
									
										
										
										
											2021-11-26 22:37:06 -09:00
										 |  |  |         <v-card-text> | 
					
						
							|  |  |  |           <AppButtonUpload | 
					
						
							| 
									
										
										
										
											2024-03-21 16:21:37 +00:00
										 |  |  |             :accept="content.acceptedFileType || '.zip'" | 
					
						
							| 
									
										
										
										
											2021-11-26 22:37:06 -09:00
										 |  |  |             class="mb-2" | 
					
						
							|  |  |  |             :post="false" | 
					
						
							|  |  |  |             file-name="file" | 
					
						
							|  |  |  |             :text-btn="false" | 
					
						
							|  |  |  |             @uploaded="setFileObject" | 
					
						
							|  |  |  |           /> | 
					
						
							| 
									
										
										
										
											2025-06-20 00:09:12 +07:00
										 |  |  |           {{ fileObject.name || $t('migration.no-file-selected') }} | 
					
						
							| 
									
										
										
										
											2021-11-26 22:37:06 -09:00
										 |  |  |         </v-card-text> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-12-09 19:52:53 -09:00
										 |  |  |         <v-card-text> | 
					
						
							|  |  |  |           <v-checkbox v-model="addMigrationTag"> | 
					
						
							|  |  |  |             <template #label> | 
					
						
							| 
									
										
										
										
											2025-06-20 00:09:12 +07:00
										 |  |  |               <i18n-t keypath="migration.tag-all-recipes"> | 
					
						
							|  |  |  |                 <template #tag-name> | 
					
						
							|  |  |  |                   <b class="mx-1"> {{ migrationType }} </b> | 
					
						
							|  |  |  |                 </template> | 
					
						
							|  |  |  |               </i18n-t> | 
					
						
							| 
									
										
										
										
											2021-12-09 19:52:53 -09:00
										 |  |  |             </template> | 
					
						
							|  |  |  |           </v-checkbox> | 
					
						
							|  |  |  |         </v-card-text> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-11-26 22:37:06 -09:00
										 |  |  |         <v-card-actions class="justify-end"> | 
					
						
							| 
									
										
										
										
											2025-06-20 00:09:12 +07:00
										 |  |  |           <BaseButton | 
					
						
							|  |  |  |             :disabled="!fileObject.name" | 
					
						
							|  |  |  |             submit | 
					
						
							|  |  |  |             @click="startMigration" | 
					
						
							| 
									
										
										
										
											2021-11-26 22:37:06 -09:00
										 |  |  |           > | 
					
						
							| 
									
										
										
										
											2025-06-20 00:09:12 +07:00
										 |  |  |             {{ $t("general.submit") }} | 
					
						
							|  |  |  |           </BaseButton> | 
					
						
							| 
									
										
										
										
											2021-11-26 22:37:06 -09:00
										 |  |  |         </v-card-actions> | 
					
						
							|  |  |  |       </v-card> | 
					
						
							|  |  |  |     </v-container> | 
					
						
							|  |  |  |     <v-container> | 
					
						
							| 
									
										
										
										
											2025-06-20 00:09:12 +07:00
										 |  |  |       <BaseCardSectionTitle :title="$t('migration.previous-migrations')" /> | 
					
						
							|  |  |  |       <ReportTable | 
					
						
							|  |  |  |         :items="reports" | 
					
						
							|  |  |  |         @delete="deleteReport" | 
					
						
							|  |  |  |       /> | 
					
						
							| 
									
										
										
										
											2021-11-26 22:37:06 -09:00
										 |  |  |     </v-container> | 
					
						
							|  |  |  |   </v-container> | 
					
						
							|  |  |  | </template> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | <script lang="ts"> | 
					
						
							| 
									
										
										
										
											2025-06-20 00:09:12 +07:00
										 |  |  | import type { ReportSummary } from "~/lib/api/types/reports"; | 
					
						
							|  |  |  | import type { MenuItem } from "~/components/global/BaseOverflowButton.vue"; | 
					
						
							| 
									
										
										
										
											2021-11-26 22:37:06 -09:00
										 |  |  | import { useUserApi } from "~/composables/api"; | 
					
						
							| 
									
										
										
										
											2025-06-20 00:09:12 +07:00
										 |  |  | import type { SupportedMigrations } from "~/lib/api/types/group"; | 
					
						
							| 
									
										
										
										
											2021-11-26 22:37:06 -09:00
										 |  |  | 
 | 
					
						
							|  |  |  | const MIGRATIONS = { | 
					
						
							| 
									
										
										
										
											2024-03-21 16:11:33 +00:00
										 |  |  |   mealie: "mealie_alpha", | 
					
						
							| 
									
										
										
										
											2021-11-26 22:37:06 -09:00
										 |  |  |   chowdown: "chowdown", | 
					
						
							| 
									
										
										
										
											2023-03-12 15:37:24 -05:00
										 |  |  |   copymethat: "copymethat", | 
					
						
							| 
									
										
										
										
											2024-03-21 16:11:33 +00:00
										 |  |  |   myrecipebox: "myrecipebox", | 
					
						
							|  |  |  |   nextcloud: "nextcloud", | 
					
						
							| 
									
										
										
										
											2021-12-09 19:52:53 -09:00
										 |  |  |   paprika: "paprika", | 
					
						
							| 
									
										
										
										
											2023-10-15 16:01:07 -04:00
										 |  |  |   plantoeat: "plantoeat", | 
					
						
							| 
									
										
										
										
											2024-05-31 02:58:04 -07:00
										 |  |  |   recipekeeper: "recipekeeper", | 
					
						
							| 
									
										
										
										
											2024-03-21 16:11:33 +00:00
										 |  |  |   tandoor: "tandoor", | 
					
						
							| 
									
										
										
										
											2021-11-26 22:37:06 -09:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-06-20 00:09:12 +07:00
										 |  |  | export default defineNuxtComponent({ | 
					
						
							|  |  |  |   middleware: ["sidebase-auth", "advanced-only"], | 
					
						
							| 
									
										
										
										
											2021-11-26 22:37:06 -09:00
										 |  |  |   setup() { | 
					
						
							| 
									
										
										
										
											2025-06-20 00:09:12 +07:00
										 |  |  |     const i18n = useI18n(); | 
					
						
							|  |  |  |     const { $globals } = useNuxtApp(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     useSeoMeta({ | 
					
						
							|  |  |  |       title: i18n.t("settings.migrations"), | 
					
						
							|  |  |  |     }); | 
					
						
							| 
									
										
										
										
											2021-11-26 22:37:06 -09:00
										 |  |  | 
 | 
					
						
							|  |  |  |     const api = useUserApi(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     const state = reactive({ | 
					
						
							| 
									
										
										
										
											2021-12-09 19:52:53 -09:00
										 |  |  |       addMigrationTag: false, | 
					
						
							| 
									
										
										
										
											2021-11-26 22:37:06 -09:00
										 |  |  |       loading: false, | 
					
						
							|  |  |  |       treeState: true, | 
					
						
							| 
									
										
										
										
											2024-03-21 16:11:33 +00:00
										 |  |  |       migrationType: MIGRATIONS.mealie as SupportedMigrations, | 
					
						
							| 
									
										
										
										
											2021-11-26 22:37:06 -09:00
										 |  |  |       fileObject: {} as File, | 
					
						
							|  |  |  |       reports: [] as ReportSummary[], | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-16 03:38:11 +01:00
										 |  |  |     const items: MenuItem[] = [ | 
					
						
							| 
									
										
										
										
											2021-11-26 22:37:06 -09:00
										 |  |  |       { | 
					
						
							| 
									
										
										
										
											2025-06-20 00:09:12 +07:00
										 |  |  |         text: i18n.t("migration.mealie-pre-v1.title"), | 
					
						
							| 
									
										
										
										
											2024-03-21 16:11:33 +00:00
										 |  |  |         value: MIGRATIONS.mealie, | 
					
						
							|  |  |  |         divider: true, | 
					
						
							| 
									
										
										
										
											2021-11-26 22:37:06 -09:00
										 |  |  |       }, | 
					
						
							|  |  |  |       { | 
					
						
							| 
									
										
										
										
											2025-06-20 00:09:12 +07:00
										 |  |  |         text: i18n.t("migration.chowdown.title"), | 
					
						
							| 
									
										
										
										
											2021-11-26 22:37:06 -09:00
										 |  |  |         value: MIGRATIONS.chowdown, | 
					
						
							|  |  |  |       }, | 
					
						
							| 
									
										
										
										
											2021-12-09 19:52:53 -09:00
										 |  |  |       { | 
					
						
							| 
									
										
										
										
											2025-06-20 00:09:12 +07:00
										 |  |  |         text: i18n.t("migration.copymethat.title"), | 
					
						
							| 
									
										
										
										
											2023-03-12 15:37:24 -05:00
										 |  |  |         value: MIGRATIONS.copymethat, | 
					
						
							|  |  |  |       }, | 
					
						
							|  |  |  |       { | 
					
						
							| 
									
										
										
										
											2025-06-20 00:09:12 +07:00
										 |  |  |         text: i18n.t("migration.myrecipebox.title"), | 
					
						
							| 
									
										
										
										
											2024-03-21 16:11:33 +00:00
										 |  |  |         value: MIGRATIONS.myrecipebox, | 
					
						
							| 
									
										
										
										
											2021-12-09 19:52:53 -09:00
										 |  |  |       }, | 
					
						
							|  |  |  |       { | 
					
						
							| 
									
										
										
										
											2025-06-20 00:09:12 +07:00
										 |  |  |         text: i18n.t("migration.nextcloud.title"), | 
					
						
							| 
									
										
										
										
											2024-03-21 16:11:33 +00:00
										 |  |  |         value: MIGRATIONS.nextcloud, | 
					
						
							| 
									
										
										
										
											2021-12-09 19:52:53 -09:00
										 |  |  |       }, | 
					
						
							| 
									
										
										
										
											2023-07-23 12:52:09 -05:00
										 |  |  |       { | 
					
						
							| 
									
										
										
										
											2025-06-20 00:09:12 +07:00
										 |  |  |         text: i18n.t("migration.paprika.title"), | 
					
						
							| 
									
										
										
										
											2024-03-21 16:11:33 +00:00
										 |  |  |         value: MIGRATIONS.paprika, | 
					
						
							| 
									
										
										
										
											2023-07-23 12:52:09 -05:00
										 |  |  |       }, | 
					
						
							| 
									
										
										
										
											2023-10-15 16:01:07 -04:00
										 |  |  |       { | 
					
						
							| 
									
										
										
										
											2025-06-20 00:09:12 +07:00
										 |  |  |         text: i18n.t("migration.plantoeat.title"), | 
					
						
							| 
									
										
										
										
											2023-10-15 16:01:07 -04:00
										 |  |  |         value: MIGRATIONS.plantoeat, | 
					
						
							|  |  |  |       }, | 
					
						
							| 
									
										
										
										
											2024-05-31 02:58:04 -07:00
										 |  |  |       { | 
					
						
							| 
									
										
										
										
											2025-06-20 00:09:12 +07:00
										 |  |  |         text: i18n.t("migration.recipekeeper.title"), | 
					
						
							| 
									
										
										
										
											2024-05-31 02:58:04 -07:00
										 |  |  |         value: MIGRATIONS.recipekeeper, | 
					
						
							|  |  |  |       }, | 
					
						
							| 
									
										
										
										
											2024-06-07 10:35:36 -05:00
										 |  |  |       { | 
					
						
							| 
									
										
										
										
											2025-06-20 00:09:12 +07:00
										 |  |  |         text: i18n.t("migration.tandoor.title"), | 
					
						
							| 
									
										
										
										
											2024-06-07 10:35:36 -05:00
										 |  |  |         value: MIGRATIONS.tandoor, | 
					
						
							|  |  |  |       }, | 
					
						
							| 
									
										
										
										
											2021-11-26 22:37:06 -09:00
										 |  |  |     ]; | 
					
						
							|  |  |  |     const _content = { | 
					
						
							| 
									
										
										
										
											2024-03-21 16:11:33 +00:00
										 |  |  |       [MIGRATIONS.mealie]: { | 
					
						
							| 
									
										
										
										
											2025-06-20 00:09:12 +07:00
										 |  |  |         text: i18n.t("migration.mealie-pre-v1.description-long"), | 
					
						
							| 
									
										
										
										
											2024-03-21 16:21:37 +00:00
										 |  |  |         acceptedFileType: ".zip", | 
					
						
							| 
									
										
										
										
											2021-11-26 22:37:06 -09:00
										 |  |  |         tree: [ | 
					
						
							|  |  |  |           { | 
					
						
							|  |  |  |             id: 1, | 
					
						
							|  |  |  |             icon: $globals.icons.zip, | 
					
						
							| 
									
										
										
										
											2024-03-21 16:11:33 +00:00
										 |  |  |             name: "mealie.zip", | 
					
						
							| 
									
										
										
										
											2021-11-26 22:37:06 -09:00
										 |  |  |             children: [ | 
					
						
							|  |  |  |               { | 
					
						
							|  |  |  |                 id: 2, | 
					
						
							| 
									
										
										
										
											2024-03-21 16:11:33 +00:00
										 |  |  |                 name: "recipes", | 
					
						
							| 
									
										
										
										
											2021-11-26 22:37:06 -09:00
										 |  |  |                 icon: $globals.icons.folderOutline, | 
					
						
							|  |  |  |                 children: [ | 
					
						
							| 
									
										
										
										
											2024-03-21 16:11:33 +00:00
										 |  |  |                   { | 
					
						
							|  |  |  |                     id: 3, | 
					
						
							|  |  |  |                     name: "recipe-name", | 
					
						
							|  |  |  |                     icon: $globals.icons.folderOutline, | 
					
						
							|  |  |  |                     children: [ | 
					
						
							|  |  |  |                       { id: 4, name: "recipe-name.json", icon: $globals.icons.codeJson }, | 
					
						
							|  |  |  |                       { | 
					
						
							|  |  |  |                         id: 5, | 
					
						
							|  |  |  |                         name: "images", | 
					
						
							|  |  |  |                         icon: $globals.icons.folderOutline, | 
					
						
							|  |  |  |                         children: [ | 
					
						
							|  |  |  |                           { id: 6, name: "original.webp", icon: $globals.icons.codeJson }, | 
					
						
							|  |  |  |                           { id: 7, name: "full.jpg", icon: $globals.icons.fileImage }, | 
					
						
							|  |  |  |                           { id: 8, name: "thumb.jpg", icon: $globals.icons.fileImage }, | 
					
						
							|  |  |  |                         ], | 
					
						
							|  |  |  |                       }, | 
					
						
							|  |  |  |                     ], | 
					
						
							|  |  |  |                   }, | 
					
						
							|  |  |  |                   { | 
					
						
							|  |  |  |                     id: 9, | 
					
						
							|  |  |  |                     name: "recipe-name-1", | 
					
						
							|  |  |  |                     icon: $globals.icons.folderOutline, | 
					
						
							|  |  |  |                     children: [ | 
					
						
							|  |  |  |                       { id: 10, name: "recipe-name-1.json", icon: $globals.icons.codeJson }, | 
					
						
							|  |  |  |                       { | 
					
						
							|  |  |  |                         id: 11, | 
					
						
							|  |  |  |                         name: "images", | 
					
						
							|  |  |  |                         icon: $globals.icons.folderOutline, | 
					
						
							|  |  |  |                         children: [ | 
					
						
							|  |  |  |                           { id: 12, name: "original.webp", icon: $globals.icons.codeJson }, | 
					
						
							|  |  |  |                           { id: 13, name: "full.jpg", icon: $globals.icons.fileImage }, | 
					
						
							|  |  |  |                           { id: 14, name: "thumb.jpg", icon: $globals.icons.fileImage }, | 
					
						
							|  |  |  |                         ], | 
					
						
							|  |  |  |                       }, | 
					
						
							|  |  |  |                     ], | 
					
						
							|  |  |  |                   }, | 
					
						
							| 
									
										
										
										
											2021-11-26 22:37:06 -09:00
										 |  |  |                 ], | 
					
						
							|  |  |  |               }, | 
					
						
							|  |  |  |             ], | 
					
						
							|  |  |  |           }, | 
					
						
							|  |  |  |         ], | 
					
						
							|  |  |  |       }, | 
					
						
							|  |  |  |       [MIGRATIONS.chowdown]: { | 
					
						
							| 
									
										
										
										
											2025-06-20 00:09:12 +07:00
										 |  |  |         text: i18n.t("migration.chowdown.description-long"), | 
					
						
							| 
									
										
										
										
											2024-03-21 16:21:37 +00:00
										 |  |  |         acceptedFileType: ".zip", | 
					
						
							| 
									
										
										
										
											2021-12-09 19:52:53 -09:00
										 |  |  |         tree: [ | 
					
						
							|  |  |  |           { | 
					
						
							|  |  |  |             id: 1, | 
					
						
							|  |  |  |             icon: $globals.icons.zip, | 
					
						
							|  |  |  |             name: "nextcloud.zip", | 
					
						
							|  |  |  |             children: [ | 
					
						
							|  |  |  |               { | 
					
						
							|  |  |  |                 id: 2, | 
					
						
							| 
									
										
										
										
											2023-03-21 20:45:27 +01:00
										 |  |  |                 name: i18n.t("migration.recipe-1"), | 
					
						
							| 
									
										
										
										
											2021-12-09 19:52:53 -09:00
										 |  |  |                 icon: $globals.icons.folderOutline, | 
					
						
							|  |  |  |                 children: [ | 
					
						
							|  |  |  |                   { id: 3, name: "recipe.json", icon: $globals.icons.codeJson }, | 
					
						
							|  |  |  |                   { id: 4, name: "full.jpg", icon: $globals.icons.fileImage }, | 
					
						
							|  |  |  |                   { id: 5, name: "thumb.jpg", icon: $globals.icons.fileImage }, | 
					
						
							|  |  |  |                 ], | 
					
						
							|  |  |  |               }, | 
					
						
							|  |  |  |               { | 
					
						
							|  |  |  |                 id: 6, | 
					
						
							| 
									
										
										
										
											2023-03-21 20:45:27 +01:00
										 |  |  |                 name: i18n.t("migration.recipe-2"), | 
					
						
							| 
									
										
										
										
											2021-12-09 19:52:53 -09:00
										 |  |  |                 icon: $globals.icons.folderOutline, | 
					
						
							|  |  |  |                 children: [ | 
					
						
							|  |  |  |                   { id: 7, name: "recipe.json", icon: $globals.icons.codeJson }, | 
					
						
							|  |  |  |                   { id: 8, name: "full.jpg", icon: $globals.icons.fileImage }, | 
					
						
							|  |  |  |                   { id: 9, name: "thumb.jpg", icon: $globals.icons.fileImage }, | 
					
						
							|  |  |  |                 ], | 
					
						
							|  |  |  |               }, | 
					
						
							|  |  |  |             ], | 
					
						
							|  |  |  |           }, | 
					
						
							|  |  |  |         ], | 
					
						
							|  |  |  |       }, | 
					
						
							| 
									
										
										
										
											2023-03-12 15:37:24 -05:00
										 |  |  |       [MIGRATIONS.copymethat]: { | 
					
						
							| 
									
										
										
										
											2025-06-20 00:09:12 +07:00
										 |  |  |         text: i18n.t("migration.copymethat.description-long"), | 
					
						
							| 
									
										
										
										
											2024-03-21 16:21:37 +00:00
										 |  |  |         acceptedFileType: ".zip", | 
					
						
							| 
									
										
										
										
											2023-03-12 15:37:24 -05:00
										 |  |  |         tree: [ | 
					
						
							|  |  |  |           { | 
					
						
							|  |  |  |             id: 1, | 
					
						
							|  |  |  |             icon: $globals.icons.zip, | 
					
						
							|  |  |  |             name: "Copy_Me_That_20230306.zip", | 
					
						
							|  |  |  |             children: [ | 
					
						
							|  |  |  |               { | 
					
						
							|  |  |  |                 id: 2, | 
					
						
							|  |  |  |                 name: "images", | 
					
						
							|  |  |  |                 icon: $globals.icons.folderOutline, | 
					
						
							|  |  |  |                 children: [ | 
					
						
							|  |  |  |                   { id: 3, name: "recipe_1_an5zy.jpg", icon: $globals.icons.fileImage }, | 
					
						
							|  |  |  |                   { id: 4, name: "recipe_2_82el8.jpg", icon: $globals.icons.fileImage }, | 
					
						
							|  |  |  |                   { id: 5, name: "recipe_3_j75qg.jpg", icon: $globals.icons.fileImage }, | 
					
						
							|  |  |  |                 ], | 
					
						
							|  |  |  |               }, | 
					
						
							| 
									
										
										
										
											2025-06-20 00:09:12 +07:00
										 |  |  |               { id: 6, name: "recipes.html", icon: $globals.icons.codeJson }, | 
					
						
							|  |  |  |             ], | 
					
						
							|  |  |  |           }, | 
					
						
							| 
									
										
										
										
											2023-03-12 15:37:24 -05:00
										 |  |  |         ], | 
					
						
							|  |  |  |       }, | 
					
						
							| 
									
										
										
										
											2024-03-21 16:11:33 +00:00
										 |  |  |       [MIGRATIONS.myrecipebox]: { | 
					
						
							| 
									
										
										
										
											2025-06-20 00:09:12 +07:00
										 |  |  |         text: i18n.t("migration.myrecipebox.description-long"), | 
					
						
							| 
									
										
										
										
											2024-03-21 16:21:37 +00:00
										 |  |  |         acceptedFileType: ".csv", | 
					
						
							| 
									
										
										
										
											2021-11-26 22:37:06 -09:00
										 |  |  |         tree: false, | 
					
						
							|  |  |  |       }, | 
					
						
							| 
									
										
										
										
											2024-03-21 16:11:33 +00:00
										 |  |  |       [MIGRATIONS.nextcloud]: { | 
					
						
							| 
									
										
										
										
											2025-06-20 00:09:12 +07:00
										 |  |  |         text: i18n.t("migration.nextcloud.description-long"), | 
					
						
							| 
									
										
										
										
											2024-03-21 16:21:37 +00:00
										 |  |  |         acceptedFileType: ".zip", | 
					
						
							| 
									
										
										
										
											2021-12-09 19:52:53 -09:00
										 |  |  |         tree: [ | 
					
						
							|  |  |  |           { | 
					
						
							|  |  |  |             id: 1, | 
					
						
							|  |  |  |             icon: $globals.icons.zip, | 
					
						
							| 
									
										
										
										
											2024-03-21 16:11:33 +00:00
										 |  |  |             name: "nextcloud.zip", | 
					
						
							| 
									
										
										
										
											2021-12-09 19:52:53 -09:00
										 |  |  |             children: [ | 
					
						
							|  |  |  |               { | 
					
						
							|  |  |  |                 id: 2, | 
					
						
							| 
									
										
										
										
											2024-03-21 16:11:33 +00:00
										 |  |  |                 name: i18n.t("migration.recipe-1"), | 
					
						
							| 
									
										
										
										
											2021-12-09 19:52:53 -09:00
										 |  |  |                 icon: $globals.icons.folderOutline, | 
					
						
							|  |  |  |                 children: [ | 
					
						
							| 
									
										
										
										
											2024-03-21 16:11:33 +00:00
										 |  |  |                   { id: 3, name: "recipe.json", icon: $globals.icons.codeJson }, | 
					
						
							|  |  |  |                   { id: 4, name: "full.jpg", icon: $globals.icons.fileImage }, | 
					
						
							|  |  |  |                   { id: 5, name: "thumb.jpg", icon: $globals.icons.fileImage }, | 
					
						
							|  |  |  |                 ], | 
					
						
							|  |  |  |               }, | 
					
						
							|  |  |  |               { | 
					
						
							|  |  |  |                 id: 6, | 
					
						
							|  |  |  |                 name: i18n.t("migration.recipe-2"), | 
					
						
							|  |  |  |                 icon: $globals.icons.folderOutline, | 
					
						
							|  |  |  |                 children: [ | 
					
						
							|  |  |  |                   { id: 7, name: "recipe.json", icon: $globals.icons.codeJson }, | 
					
						
							|  |  |  |                   { id: 8, name: "full.jpg", icon: $globals.icons.fileImage }, | 
					
						
							|  |  |  |                   { id: 9, name: "thumb.jpg", icon: $globals.icons.fileImage }, | 
					
						
							| 
									
										
										
										
											2021-12-09 19:52:53 -09:00
										 |  |  |                 ], | 
					
						
							|  |  |  |               }, | 
					
						
							|  |  |  |             ], | 
					
						
							|  |  |  |           }, | 
					
						
							|  |  |  |         ], | 
					
						
							|  |  |  |       }, | 
					
						
							| 
									
										
										
										
											2024-03-21 16:11:33 +00:00
										 |  |  |       [MIGRATIONS.paprika]: { | 
					
						
							| 
									
										
										
										
											2025-06-20 00:09:12 +07:00
										 |  |  |         text: i18n.t("migration.paprika.description-long"), | 
					
						
							| 
									
										
										
										
											2024-03-21 16:21:37 +00:00
										 |  |  |         acceptedFileType: ".zip", | 
					
						
							| 
									
										
										
										
											2024-03-21 16:11:33 +00:00
										 |  |  |         tree: false, | 
					
						
							|  |  |  |       }, | 
					
						
							|  |  |  |       [MIGRATIONS.plantoeat]: { | 
					
						
							| 
									
										
										
										
											2025-06-20 00:09:12 +07:00
										 |  |  |         text: i18n.t("migration.plantoeat.description-long"), | 
					
						
							| 
									
										
										
										
											2024-03-21 16:21:37 +00:00
										 |  |  |         acceptedFileType: ".zip", | 
					
						
							| 
									
										
										
										
											2024-03-21 16:11:33 +00:00
										 |  |  |         tree: [ | 
					
						
							|  |  |  |           { | 
					
						
							|  |  |  |             id: 1, | 
					
						
							|  |  |  |             icon: $globals.icons.zip, | 
					
						
							|  |  |  |             name: "plantoeat-recipes-508318_10-13-2023.zip", | 
					
						
							|  |  |  |             children: [ | 
					
						
							| 
									
										
										
										
											2025-06-20 00:09:12 +07:00
										 |  |  |               { id: 9, name: "plantoeat-recipes-508318_10-13-2023.csv", icon: $globals.icons.codeJson }, | 
					
						
							| 
									
										
										
										
											2024-03-21 16:11:33 +00:00
										 |  |  |             ], | 
					
						
							| 
									
										
										
										
											2025-06-20 00:09:12 +07:00
										 |  |  |           }, | 
					
						
							| 
									
										
										
										
											2024-03-21 16:11:33 +00:00
										 |  |  |         ], | 
					
						
							|  |  |  |       }, | 
					
						
							| 
									
										
										
										
											2024-06-07 10:35:36 -05:00
										 |  |  |       [MIGRATIONS.recipekeeper]: { | 
					
						
							| 
									
										
										
										
											2025-06-20 00:09:12 +07:00
										 |  |  |         text: i18n.t("migration.recipekeeper.description-long"), | 
					
						
							| 
									
										
										
										
											2024-06-07 10:35:36 -05:00
										 |  |  |         acceptedFileType: ".zip", | 
					
						
							|  |  |  |         tree: [ | 
					
						
							|  |  |  |           { | 
					
						
							|  |  |  |             id: 1, | 
					
						
							|  |  |  |             icon: $globals.icons.zip, | 
					
						
							|  |  |  |             name: "recipekeeperhtml.zip", | 
					
						
							|  |  |  |             children: [ | 
					
						
							| 
									
										
										
										
											2025-06-20 00:09:12 +07:00
										 |  |  |               { id: 2, name: "recipes.html", icon: $globals.icons.codeJson }, | 
					
						
							|  |  |  |               { | 
					
						
							|  |  |  |                 id: 3, name: "images", icon: $globals.icons.folderOutline, | 
					
						
							|  |  |  |                 children: [ | 
					
						
							|  |  |  |                   { id: 4, name: "image1.jpg", icon: $globals.icons.fileImage }, | 
					
						
							|  |  |  |                   { id: 5, name: "image2.jpg", icon: $globals.icons.fileImage }, | 
					
						
							|  |  |  |                 ], | 
					
						
							|  |  |  |               }, | 
					
						
							| 
									
										
										
										
											2024-06-07 10:35:36 -05:00
										 |  |  |             ], | 
					
						
							| 
									
										
										
										
											2025-06-20 00:09:12 +07:00
										 |  |  |           }, | 
					
						
							| 
									
										
										
										
											2024-06-07 10:35:36 -05:00
										 |  |  |         ], | 
					
						
							|  |  |  |       }, | 
					
						
							| 
									
										
										
										
											2023-07-23 12:52:09 -05:00
										 |  |  |       [MIGRATIONS.tandoor]: { | 
					
						
							| 
									
										
										
										
											2025-06-20 00:09:12 +07:00
										 |  |  |         text: i18n.t("migration.tandoor.description-long"), | 
					
						
							| 
									
										
										
										
											2024-03-21 16:21:37 +00:00
										 |  |  |         acceptedFileType: ".zip", | 
					
						
							| 
									
										
										
										
											2023-07-23 12:52:09 -05:00
										 |  |  |         tree: [ | 
					
						
							|  |  |  |           { | 
					
						
							|  |  |  |             id: 1, | 
					
						
							|  |  |  |             icon: $globals.icons.zip, | 
					
						
							|  |  |  |             name: "tandoor_default_export_full_2023-06-29.zip", | 
					
						
							|  |  |  |             children: [ | 
					
						
							|  |  |  |               { | 
					
						
							|  |  |  |                 id: 2, | 
					
						
							|  |  |  |                 name: "1.zip", | 
					
						
							|  |  |  |                 icon: $globals.icons.zip, | 
					
						
							|  |  |  |                 children: [ | 
					
						
							|  |  |  |                   { id: 3, name: "image.jpeg", icon: $globals.icons.fileImage }, | 
					
						
							|  |  |  |                   { id: 4, name: "recipe.json", icon: $globals.icons.codeJson }, | 
					
						
							| 
									
										
										
										
											2025-06-20 00:09:12 +07:00
										 |  |  |                 ], | 
					
						
							| 
									
										
										
										
											2023-07-23 12:52:09 -05:00
										 |  |  |               }, | 
					
						
							|  |  |  |               { | 
					
						
							|  |  |  |                 id: 5, | 
					
						
							|  |  |  |                 name: "2.zip", | 
					
						
							|  |  |  |                 icon: $globals.icons.zip, | 
					
						
							|  |  |  |                 children: [ | 
					
						
							|  |  |  |                   { id: 6, name: "image.jpeg", icon: $globals.icons.fileImage }, | 
					
						
							|  |  |  |                   { id: 7, name: "recipe.json", icon: $globals.icons.codeJson }, | 
					
						
							| 
									
										
										
										
											2025-06-20 00:09:12 +07:00
										 |  |  |                 ], | 
					
						
							| 
									
										
										
										
											2023-07-23 12:52:09 -05:00
										 |  |  |               }, | 
					
						
							|  |  |  |               { | 
					
						
							|  |  |  |                 id: 8, | 
					
						
							|  |  |  |                 name: "3.zip", | 
					
						
							|  |  |  |                 icon: $globals.icons.zip, | 
					
						
							|  |  |  |                 children: [ | 
					
						
							|  |  |  |                   { id: 9, name: "image.jpeg", icon: $globals.icons.fileImage }, | 
					
						
							|  |  |  |                   { id: 10, name: "recipe.json", icon: $globals.icons.codeJson }, | 
					
						
							| 
									
										
										
										
											2025-06-20 00:09:12 +07:00
										 |  |  |                 ], | 
					
						
							|  |  |  |               }, | 
					
						
							|  |  |  |             ], | 
					
						
							|  |  |  |           }, | 
					
						
							| 
									
										
										
										
											2023-07-23 12:52:09 -05:00
										 |  |  |         ], | 
					
						
							|  |  |  |       }, | 
					
						
							| 
									
										
										
										
											2021-11-26 22:37:06 -09:00
										 |  |  |     }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     function setFileObject(fileObject: File) { | 
					
						
							|  |  |  |       state.fileObject = fileObject; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     async function startMigration() { | 
					
						
							|  |  |  |       state.loading = true; | 
					
						
							|  |  |  |       const payload = { | 
					
						
							| 
									
										
										
										
											2021-12-09 19:52:53 -09:00
										 |  |  |         addMigrationTag: state.addMigrationTag, | 
					
						
							| 
									
										
										
										
											2021-11-26 22:37:06 -09:00
										 |  |  |         migrationType: state.migrationType, | 
					
						
							|  |  |  |         archive: state.fileObject, | 
					
						
							|  |  |  |       }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       const { data } = await api.groupMigration.startMigration(payload); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       state.loading = false; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       if (data) { | 
					
						
							|  |  |  |         state.reports.unshift(data); | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     async function getMigrationReports() { | 
					
						
							|  |  |  |       const { data } = await api.groupReports.getAll("migration"); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       if (data) { | 
					
						
							|  |  |  |         state.reports = data; | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     async function deleteReport(id: string) { | 
					
						
							|  |  |  |       await api.groupReports.deleteOne(id); | 
					
						
							|  |  |  |       getMigrationReports(); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     onMounted(() => { | 
					
						
							|  |  |  |       getMigrationReports(); | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     const content = computed(() => { | 
					
						
							|  |  |  |       const data = _content[state.migrationType]; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       if (data) { | 
					
						
							|  |  |  |         return data; | 
					
						
							| 
									
										
										
										
											2025-06-20 00:09:12 +07:00
										 |  |  |       } | 
					
						
							|  |  |  |       else { | 
					
						
							| 
									
										
										
										
											2021-11-26 22:37:06 -09:00
										 |  |  |         return { | 
					
						
							|  |  |  |           text: "", | 
					
						
							| 
									
										
										
										
											2024-03-21 16:21:37 +00:00
										 |  |  |           acceptedFileType: ".zip", | 
					
						
							| 
									
										
										
										
											2021-11-26 22:37:06 -09:00
										 |  |  |           tree: false, | 
					
						
							|  |  |  |         }; | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     return { | 
					
						
							|  |  |  |       ...toRefs(state), | 
					
						
							|  |  |  |       items, | 
					
						
							|  |  |  |       content, | 
					
						
							|  |  |  |       setFileObject, | 
					
						
							|  |  |  |       deleteReport, | 
					
						
							|  |  |  |       startMigration, | 
					
						
							|  |  |  |       getMigrationReports, | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  |   }, | 
					
						
							|  |  |  | }); | 
					
						
							|  |  |  | </script> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-10-22 11:51:07 -08:00
										 |  |  | <style lang="scss" scoped></style> |