From 51541af7f215a08f7716b52974f3c2297b4774a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Gro=C3=9F?= Date: Fri, 17 Jan 2025 16:41:08 +0100 Subject: [PATCH] fix: Fixed number localization and cocktail queue mobile layout MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Johannes Groß --- components/cocktails/CocktailRecipeForm.tsx | 37 ++++++-- .../CompactCocktailRecipeInstruction.tsx | 23 ++++- components/ingredients/IngredientForm.tsx | 7 +- components/modals/CocktailDetailModal.tsx | 26 +++++- components/modals/CocktailRatingsModal.tsx | 8 +- pages/workspaces/[workspaceId]/index.tsx | 18 ++-- .../manage/calculations/[id].tsx | 84 ++++++++++++++++--- .../[workspaceId]/manage/cocktails/index.tsx | 8 +- .../[workspaceId]/manage/garnishes/index.tsx | 8 +- .../[workspaceId]/manage/glasses/index.tsx | 8 +- .../manage/ingredients/index.tsx | 14 +++- .../[workspaceId]/manage/settings/index.tsx | 24 +++++- 12 files changed, 219 insertions(+), 46 deletions(-) diff --git a/components/cocktails/CocktailRecipeForm.tsx b/components/cocktails/CocktailRecipeForm.tsx index 9edfdc0e..a702b912 100644 --- a/components/cocktails/CocktailRecipeForm.tsx +++ b/components/cocktails/CocktailRecipeForm.tsx @@ -837,13 +837,20 @@ export function CocktailRecipeForm(props: CocktailRecipeFormProps) { ?.IngredientVolume.find((volumeUnits) => volumeUnits.unitId == stepIngredient.unitId) != undefined ? ( <>
- {stepIngredient.amount ?? 0} {userContext.getTranslation(stepIngredient?.unit?.name ?? '', 'de')} x{' '} + {stepIngredient.amount?.toLocaleString(undefined, { + minimumFractionDigits: 0, + maximumFractionDigits: 2, + }) ?? 0}{' '} + {userContext.getTranslation(stepIngredient?.unit?.name ?? '', 'de')} x{' '} {( (stepIngredient.ingredient?.price ?? 0) / (ingredients .find((ingredient) => ingredient.id == stepIngredient.ingredientId) ?.IngredientVolume.find((volumeUnits) => volumeUnits.unitId == stepIngredient.unitId)?.volume ?? 1) - ).toFixed(2)}{' '} + ).toLocaleString(undefined, { + minimumFractionDigits: 2, + maximumFractionDigits: 2, + })}{' '} €/{userContext.getTranslation(stepIngredient?.unit?.name ?? '', 'de')}
@@ -854,7 +861,10 @@ export function CocktailRecipeForm(props: CocktailRecipeFormProps) { .find((ingredient) => ingredient.id == stepIngredient.ingredientId) ?.IngredientVolume.find((volumeUnits) => volumeUnits.unitId == stepIngredient.unitId)?.volume ?? 1)) * (stepIngredient.amount ?? 0) - ).toFixed(2)} + ).toLocaleString(undefined, { + minimumFractionDigits: 2, + maximumFractionDigits: 2, + })} €
@@ -882,10 +892,20 @@ export function CocktailRecipeForm(props: CocktailRecipeFormProps) { <>
{garnish?.garnish?.name}
-
1 x {(garnish?.garnish?.price ?? 0).toFixed(2)}
+
+ 1 x{' '} + {(garnish?.garnish?.price ?? 0).toLocaleString(undefined, { + minimumFractionDigits: 2, + maximumFractionDigits: 2, + })} +
{(values.steps as CocktailRecipeStepFull[]).some((step) => step.ingredients.length > 0) ? '+ ' : ''} - {(garnish?.garnish?.price ?? 0).toFixed(2)}€ + {(garnish?.garnish?.price ?? 0).toLocaleString(undefined, { + minimumFractionDigits: 2, + maximumFractionDigits: 2, + })} + €
@@ -896,7 +916,12 @@ export function CocktailRecipeForm(props: CocktailRecipeFormProps) {
-
{calcCocktailTotalPrice(values, ingredients).toFixed(2) + ' €'}
+
+ {calcCocktailTotalPrice(values, ingredients).toLocaleString(undefined, { + minimumFractionDigits: 2, + maximumFractionDigits: 2, + }) + ' €'} +
diff --git a/components/cocktails/CompactCocktailRecipeInstruction.tsx b/components/cocktails/CompactCocktailRecipeInstruction.tsx index ae11a98a..02ce24d0 100644 --- a/components/cocktails/CompactCocktailRecipeInstruction.tsx +++ b/components/cocktails/CompactCocktailRecipeInstruction.tsx @@ -29,7 +29,16 @@ export function CompactCocktailRecipeInstruction(props: CompactCocktailRecipeIns {props.showPrice == true ? (
- {(props.specialPrice ?? props.cocktailRecipe.price) != undefined ? (props.specialPrice ?? props.cocktailRecipe.price + ' €') : ''} + {(props.specialPrice ?? props.cocktailRecipe.price) != undefined + ? (props.specialPrice?.toLocaleString(undefined, { + minimumFractionDigits: 0, + maximumFractionDigits: 2, + }) ?? + props.cocktailRecipe.price?.toLocaleString(undefined, { + minimumFractionDigits: 0, + maximumFractionDigits: 2, + }) + ' €') + : ''}
) : ( <> @@ -65,7 +74,10 @@ export function CompactCocktailRecipeInstruction(props: CompactCocktailRecipeIns {(props.showRating.ratings.length > 0 ? props.showRating.ratings.reduce((acc, rating) => acc + rating.rating, 0) / props.showRating.ratings.length : 0 - ).toFixed(1)} + ).toLocaleString(undefined, { + minimumFractionDigits: 1, + maximumFractionDigits: 1, + })} 0 @@ -103,7 +115,12 @@ export function CompactCocktailRecipeInstruction(props: CompactCocktailRecipeIns className={`flex flex-row gap-2 pl-2 ${stepIngredient.optional && 'italic'}`} >
-
{stepIngredient.amount ?? ''}
+
+ {stepIngredient.amount?.toLocaleString(undefined, { + minimumFractionDigits: 0, + maximumFractionDigits: 2, + }) ?? ''} +
{userContext.getTranslation(stepIngredient?.unit?.name ?? '', 'de')}
diff --git a/components/ingredients/IngredientForm.tsx b/components/ingredients/IngredientForm.tsx index 37e3d85d..e8a32e41 100644 --- a/components/ingredients/IngredientForm.tsx +++ b/components/ingredients/IngredientForm.tsx @@ -411,7 +411,12 @@ export function IngredientForm(props: IngredientFormProps) { ) : ( (values.units as FormUnitValue[]).map((unit, index) => ( - {unit.volume.toFixed(2)} + + {unit.volume.toLocaleString(undefined, { + minimumFractionDigits: 0, + maximumFractionDigits: 2, + })} + {userContext.getTranslation(allUnits.find((availableUnit) => availableUnit.id == unit.unitId)?.name ?? 'N/A', 'de')} {values.price != undefined ? (values.price / unit.volume).toFixed(2).replace(/\D00(?=\D*$)/, '') : '-'} €/ diff --git a/components/modals/CocktailDetailModal.tsx b/components/modals/CocktailDetailModal.tsx index 31b6ec6e..6a48aca0 100644 --- a/components/modals/CocktailDetailModal.tsx +++ b/components/modals/CocktailDetailModal.tsx @@ -75,7 +75,12 @@ export function CocktailDetailModal(props: CocktailDetailModalProps) { {loadedCocktail.price != undefined ? ( <> {' - '} - {loadedCocktail.price + ' €'} + + {loadedCocktail.price.toLocaleString(undefined, { + minimumFractionDigits: 0, + maximumFractionDigits: 2, + }) + ' €'} + ) : ( <> @@ -169,7 +174,12 @@ export function CocktailDetailModal(props: CocktailDetailModalProps) { key={`cocktail-details-step-ingredient-${stepIngredient.id}`} className={`flex flex-row gap-2 pl-3 ${stepIngredient.optional ? 'italic' : ''}`} > -
{stepIngredient.amount}
+
+ {stepIngredient.amount?.toLocaleString(undefined, { + minimumFractionDigits: 0, + maximumFractionDigits: 2, + })} +
{userContext.getTranslation(stepIngredient.unit?.name ?? '', 'de')}
{stepIngredient.ingredient?.shortName ?? stepIngredient.ingredient?.name}
{stepIngredient.optional &&
(optional)
} @@ -259,7 +269,10 @@ export function CocktailDetailModal(props: CocktailDetailModalProps) { {ratingsLoading ? ( ) : (cocktailRatings ?? []).length > 0 ? ( - (cocktailRatings.reduce((acc, rating) => acc + rating.rating, 0) / cocktailRatings.length).toFixed(1) + (cocktailRatings.reduce((acc, rating) => acc + rating.rating, 0) / cocktailRatings.length).toLocaleString(undefined, { + minimumFractionDigits: 1, + maximumFractionDigits: 1, + }) ) : ( 'Keine Bewertungen' )} @@ -424,7 +437,12 @@ export function CocktailDetailModal(props: CocktailDetailModalProps) { {userContext.isUserPermitted(Role.MANAGER) && ingredients && ( <>
Materialkosten
-
{calcCocktailTotalPrice(loadedCocktail, ingredients).toFixed(2) + ' €'}
+
+ {calcCocktailTotalPrice(loadedCocktail, ingredients).toLocaleString(undefined, { + minimumFractionDigits: 0, + maximumFractionDigits: 2, + }) + ' €'} +
)}
diff --git a/components/modals/CocktailRatingsModal.tsx b/components/modals/CocktailRatingsModal.tsx index ed99eed1..c68e4245 100644 --- a/components/modals/CocktailRatingsModal.tsx +++ b/components/modals/CocktailRatingsModal.tsx @@ -66,7 +66,13 @@ export default function CocktailRatingsModal(props: CocktailRatingModalProps) { return (
- {props.cocktailName} - {cocktailRatings.length > 0 ? parseFloat(avgRating.toFixed(1).toString()).toLocaleString() : 'N/A'}{' '} + {props.cocktailName} -{' '} + {cocktailRatings.length > 0 + ? avgRating.toLocaleString(undefined, { + minimumFractionDigits: 1, + maximumFractionDigits: 1, + }) + : 'N/A'}{' '} ({cocktailRatings.length})
- {ingredient.price ?? '-'} € + + {ingredient.price?.toLocaleString(undefined, { + minimumFractionDigits: 0, + maximumFractionDigits: 2, + }) ?? '-'}{' '} + € + {ingredient.IngredientVolume.map((volume) => (
@@ -143,7 +149,11 @@ export default function IngredientsOverviewPage() { {ingredient.IngredientVolume.map((volume) => (
- {((ingredient.price ?? 0) / volume.volume).toFixed(2)} €/{userContext.getTranslation(volume.unit.name, 'de')} + {((ingredient.price ?? 0) / volume.volume).toLocaleString(undefined, { + minimumFractionDigits: 0, + maximumFractionDigits: 2, + })}{' '} + €/{userContext.getTranslation(volume.unit.name, 'de')}
))} diff --git a/pages/workspaces/[workspaceId]/manage/settings/index.tsx b/pages/workspaces/[workspaceId]/manage/settings/index.tsx index 47afb6de..2007efaf 100644 --- a/pages/workspaces/[workspaceId]/manage/settings/index.tsx +++ b/pages/workspaces/[workspaceId]/manage/settings/index.tsx @@ -926,11 +926,19 @@ export default function WorkspaceSettingPage() { .map((conversion) => ( {userContext.getTranslation(units.find((unit) => unit.id == conversion.fromUnitId)?.name ?? '', 'de')} - {conversion.factor.toFixed(2)} + + {conversion.factor.toLocaleString(undefined, { + minimumFractionDigits: 2, + maximumFractionDigits: 2, + })} + {userContext.getTranslation(units.find((unit) => unit.id == conversion.toUnitId)?.name ?? '', 'de')} 1 {userContext.getTranslation(units.find((unit) => unit.id == conversion.toUnitId)?.name ?? '', 'de')} ={' '} - {(1 / conversion.factor).toFixed(2)}{' '} + {(1 / conversion.factor).toLocaleString(undefined, { + minimumFractionDigits: 2, + maximumFractionDigits: 2, + })}{' '} {userContext.getTranslation(units.find((unit) => unit.id == conversion.fromUnitId)?.name ?? '', 'de')} @@ -986,11 +994,19 @@ export default function WorkspaceSettingPage() { .map((conversion) => ( {userContext.getTranslation(units.find((unit) => unit.id == conversion.fromUnitId)?.name ?? 'N/A', 'de')} - {conversion.factor.toFixed(2)} + + {conversion.factor.toLocaleString(undefined, { + minimumFractionDigits: 2, + maximumFractionDigits: 2, + })} + {userContext.getTranslation(units.find((unit) => unit.id == conversion.toUnitId)?.name ?? 'N/A', 'de')} 1 {userContext.getTranslation(units.find((unit) => unit.id == conversion.toUnitId)?.name ?? 'N/A', 'de')} ={' '} - {(1 / conversion.factor).toFixed(2)}{' '} + {(1 / conversion.factor).toLocaleString(undefined, { + minimumFractionDigits: 2, + maximumFractionDigits: 2, + })}{' '} {userContext.getTranslation(units.find((unit) => unit.id == conversion.fromUnitId)?.name ?? 'N/A', 'de')}