@@ -133,28 +133,21 @@ import GlobalSearchDialog from "@/components/inputs/GlobalSearchDialog.vue"
import {useDisplay, useLocale} from "vuetify"
import VSnackbarQueued from "@/components/display/VSnackbarQueued.vue";
-import MessageListDialog from "@/components/dialogs/MessageListDialog.vue";
import {useUserPreferenceStore} from "@/stores/UserPreferenceStore";
import NavigationDrawerContextMenu from "@/components/display/NavigationDrawerContextMenu.vue";
-import {useDjangoUrls} from "@/composables/useDjangoUrls";
-import {nextTick, onMounted} from "vue";
+import {nextTick, onMounted, ref} from "vue";
import {isSpaceAboveLimit} from "@/utils/logic_utils";
-import {useMediaQuery, useTitle} from "@vueuse/core";
+import {useTitle} from "@vueuse/core";
import HelpDialog from "@/components/dialogs/HelpDialog.vue";
-import {NAVIGATION_DRAWER} from "@/utils/navigation.ts";
import {useNavigation} from "@/composables/useNavigation.ts";
import {useRouter} from "vue-router";
import {useI18n} from "vue-i18n";
const {lgAndUp} = useDisplay()
-const {getDjangoUrl} = useDjangoUrls()
const {t} = useI18n()
const title = useTitle()
const router = useRouter()
-const i18n = useI18n()
-
-const isPrintMode = useMediaQuery('print')
onMounted(() => {
useUserPreferenceStore().init().then(() => {
diff --git a/vue3/src/components/display/IngredientsTable.vue b/vue3/src/components/display/IngredientsTable.vue
index 446af4e2d..d6e3e5fdb 100644
--- a/vue3/src/components/display/IngredientsTable.vue
+++ b/vue3/src/components/display/IngredientsTable.vue
@@ -54,15 +54,13 @@
{{ ingredientToFoodString(i, ingredientFactor) }}
{{ ingredientToFoodString(i, ingredientFactor) }}
-
- {{ i.note }}
-
+
-
-
-
- |
+ |
+ {{ i.note }}
+ |
+
diff --git a/vue3/src/components/display/RecipeActivity.vue b/vue3/src/components/display/RecipeActivity.vue
index abc6e7179..b8ceae19f 100644
--- a/vue3/src/components/display/RecipeActivity.vue
+++ b/vue3/src/components/display/RecipeActivity.vue
@@ -1,5 +1,5 @@
-
+
diff --git a/vue3/src/components/display/RecipeView.vue b/vue3/src/components/display/RecipeView.vue
index fcb43ba95..fe7b45f71 100644
--- a/vue3/src/components/display/RecipeView.vue
+++ b/vue3/src/components/display/RecipeView.vue
@@ -121,10 +121,10 @@
-
- {{$t('ConvertUsingAI')}}
+ {{ $t('ConvertUsingAI') }}
@@ -135,7 +135,8 @@
-
+
@@ -147,8 +148,8 @@
-
-
+
+
-
+
-
+
-
+
{
function aiConvertRecipe() {
let api = new ApiApi()
- doAiImport(selectedAiProvider.value.id!,null, '', recipe.value.id!).then(r => {
+ doAiImport(selectedAiProvider.value.id!, null, '', recipe.value.id!).then(r => {
if (r.recipe) {
recipe.value.internal = true
recipe.value.steps = r.recipe.steps
diff --git a/vue3/src/components/inputs/RecipeContextMenu.vue b/vue3/src/components/inputs/RecipeContextMenu.vue
index c9798fcd6..914051b30 100644
--- a/vue3/src/components/inputs/RecipeContextMenu.vue
+++ b/vue3/src/components/inputs/RecipeContextMenu.vue
@@ -26,11 +26,9 @@
-
-
-
-
-
+
+ {{ $t('Print') }}
+
diff --git a/vue3/src/pages/RecipeViewPage.vue b/vue3/src/pages/RecipeViewPage.vue
index 4a04bb1d8..abcaaa9c7 100644
--- a/vue3/src/pages/RecipeViewPage.vue
+++ b/vue3/src/pages/RecipeViewPage.vue
@@ -1,11 +1,13 @@
-
+
-
-
-
+
+
+
+
+
@@ -56,6 +58,12 @@ function refreshData(recipeId: string) {
recipe.value = r
title.value = recipe.value.name
+ setTimeout(() => {
+ if (useUserPreferenceStore().isPrintMode) {
+ window.print()
+ }
+ }, 500)
+
if (useUserPreferenceStore().isAuthenticated) {
api.apiViewLogCreate({viewLog: {recipe: Number(recipeId)} as ViewLog})
}
diff --git a/vue3/src/stores/UserPreferenceStore.ts b/vue3/src/stores/UserPreferenceStore.ts
index f5fa103b8..b7c1fac25 100644
--- a/vue3/src/stores/UserPreferenceStore.ts
+++ b/vue3/src/stores/UserPreferenceStore.ts
@@ -7,6 +7,7 @@ import {computed, ComputedRef, ref} from "vue";
import {DeviceSettings} from "@/types/settings";
import {useTheme} from "vuetify";
import {useRouter} from "vue-router";
+import {useRouteQuery} from "@vueuse/router";
const DEVICE_SETTINGS_KEY = 'TANDOOR_DEVICE_SETTINGS'
const USER_PREFERENCE_KEY = 'TANDOOR_USER_PREFERENCE'
@@ -55,6 +56,11 @@ export const useUserPreferenceStore = defineStore('user_preference_store', () =>
*/
const defaultUnitObj = ref(null)
+ /**
+ * detect if print mode is activated by checking for "print" query parameter
+ */
+ const isPrintMode = useRouteQuery('print', false, {transform: Boolean})
+
const theme = useTheme()
const router = useRouter()
@@ -250,10 +256,10 @@ export const useUserPreferenceStore = defineStore('user_preference_store', () =>
* applies user settings regarding themes/styling
*/
function updateTheme() {
- if (userSettings.value.theme == 'TANDOOR') {
- theme.change('light')
- } else if (userSettings.value.theme == 'TANDOOR_DARK') {
+ if (userSettings.value.theme == 'TANDOOR_DARK' && !isPrintMode.value) {
theme.change('dark')
+ } else {
+ theme.change('light')
}
}
@@ -281,6 +287,7 @@ export const useUserPreferenceStore = defineStore('user_preference_store', () =>
spaces,
activeUserSpace,
isAuthenticated,
+ isPrintMode,
initCompleted,
defaultUnitObj,
loadUserSettings,
|