Skip to content

Commit

Permalink
fix: Fixed number localization and cocktail queue mobile layout
Browse files Browse the repository at this point in the history
Signed-off-by: Johannes Groß <[email protected]>
  • Loading branch information
jo-gross committed Jan 17, 2025
1 parent 3cd8824 commit 51541af
Show file tree
Hide file tree
Showing 12 changed files with 219 additions and 46 deletions.
37 changes: 31 additions & 6 deletions components/cocktails/CocktailRecipeForm.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -837,13 +837,20 @@ export function CocktailRecipeForm(props: CocktailRecipeFormProps) {
?.IngredientVolume.find((volumeUnits) => volumeUnits.unitId == stepIngredient.unitId) != undefined ? (
<>
<div>
{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')}
</div>
<div className={'text-end'}>
Expand All @@ -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,
})}
</div>
</>
Expand Down Expand Up @@ -882,10 +892,20 @@ export function CocktailRecipeForm(props: CocktailRecipeFormProps) {
<>
<div key={`price-calculation-step-garnish-name`}>{garnish?.garnish?.name}</div>
<div key={`price-calculation-step-garnish-price`} className={'grid grid-cols-2'}>
<div>1 x {(garnish?.garnish?.price ?? 0).toFixed(2)}</div>
<div>
1 x{' '}
{(garnish?.garnish?.price ?? 0).toLocaleString(undefined, {
minimumFractionDigits: 2,
maximumFractionDigits: 2,
})}
</div>
<div className={'text-end'}>
{(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,
})}
</div>
</div>
</>
Expand All @@ -896,7 +916,12 @@ export function CocktailRecipeForm(props: CocktailRecipeFormProps) {
<div className={'grid grid-cols-3'}>
<div></div>
<div></div>
<div className={'text-end font-bold'}>{calcCocktailTotalPrice(values, ingredients).toFixed(2) + ' €'}</div>
<div className={'text-end font-bold'}>
{calcCocktailTotalPrice(values, ingredients).toLocaleString(undefined, {
minimumFractionDigits: 2,
maximumFractionDigits: 2,
}) + ' €'}
</div>
</div>
</div>
</div>
Expand Down
23 changes: 20 additions & 3 deletions components/cocktails/CompactCocktailRecipeInstruction.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,16 @@ export function CompactCocktailRecipeInstruction(props: CompactCocktailRecipeIns
</div>
{props.showPrice == true ? (
<div className={'col-span-1 text-right text-xl font-bold'}>
{(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,
}) + ' €')
: ''}
</div>
) : (
<></>
Expand Down Expand Up @@ -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,
})}
<StarsComponent
rating={
props.showRating.ratings.length > 0
Expand Down Expand Up @@ -103,7 +115,12 @@ export function CompactCocktailRecipeInstruction(props: CompactCocktailRecipeIns
className={`flex flex-row gap-2 pl-2 ${stepIngredient.optional && 'italic'}`}
>
<div className={'flex flex-row gap-1'}>
<div>{stepIngredient.amount ?? ''}</div>
<div>
{stepIngredient.amount?.toLocaleString(undefined, {
minimumFractionDigits: 0,
maximumFractionDigits: 2,
}) ?? ''}
</div>
<div>{userContext.getTranslation(stepIngredient?.unit?.name ?? '', 'de')}</div>
</div>
<div>
Expand Down
7 changes: 6 additions & 1 deletion components/ingredients/IngredientForm.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -411,7 +411,12 @@ export function IngredientForm(props: IngredientFormProps) {
) : (
(values.units as FormUnitValue[]).map((unit, index) => (
<tr key={`selected-units-${unit.unitId}`}>
<td>{unit.volume.toFixed(2)}</td>
<td>
{unit.volume.toLocaleString(undefined, {
minimumFractionDigits: 0,
maximumFractionDigits: 2,
})}
</td>
<td>{userContext.getTranslation(allUnits.find((availableUnit) => availableUnit.id == unit.unitId)?.name ?? 'N/A', 'de')}</td>
<td>
{values.price != undefined ? (values.price / unit.volume).toFixed(2).replace(/\D00(?=\D*$)/, '') : '-'} €/
Expand Down
26 changes: 22 additions & 4 deletions components/modals/CocktailDetailModal.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,12 @@ export function CocktailDetailModal(props: CocktailDetailModalProps) {
{loadedCocktail.price != undefined ? (
<>
{' - '}
<span className={'font-bold'}>{loadedCocktail.price + ' €'}</span>
<span className={'font-bold'}>
{loadedCocktail.price.toLocaleString(undefined, {
minimumFractionDigits: 0,
maximumFractionDigits: 2,
}) + ' €'}
</span>
</>
) : (
<></>
Expand Down Expand Up @@ -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' : ''}`}
>
<div className={'font-bold'}>{stepIngredient.amount}</div>
<div className={'font-bold'}>
{stepIngredient.amount?.toLocaleString(undefined, {
minimumFractionDigits: 0,
maximumFractionDigits: 2,
})}
</div>
<div className={'font-bold'}>{userContext.getTranslation(stepIngredient.unit?.name ?? '', 'de')}</div>
<div>{stepIngredient.ingredient?.shortName ?? stepIngredient.ingredient?.name}</div>
{stepIngredient.optional && <div>(optional)</div>}
Expand Down Expand Up @@ -259,7 +269,10 @@ export function CocktailDetailModal(props: CocktailDetailModalProps) {
{ratingsLoading ? (
<Loading />
) : (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'
)}
Expand Down Expand Up @@ -424,7 +437,12 @@ export function CocktailDetailModal(props: CocktailDetailModalProps) {
{userContext.isUserPermitted(Role.MANAGER) && ingredients && (
<>
<div className={'font-bold'}>Materialkosten</div>
<div>{calcCocktailTotalPrice(loadedCocktail, ingredients).toFixed(2) + ' €'}</div>
<div>
{calcCocktailTotalPrice(loadedCocktail, ingredients).toLocaleString(undefined, {
minimumFractionDigits: 0,
maximumFractionDigits: 2,
}) + ' €'}
</div>
</>
)}
</div>
Expand Down
8 changes: 7 additions & 1 deletion components/modals/CocktailRatingsModal.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,13 @@ export default function CocktailRatingsModal(props: CocktailRatingModalProps) {
return (
<div className={'flex flex-col gap-2'}>
<div className={'flex flex-row items-center gap-1 text-2xl font-bold'}>
{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'}{' '}
<StarsComponent rating={avgRating} /> ({cocktailRatings.length})<div className={'flex-grow'}></div>
<button
type={'button'}
Expand Down
18 changes: 9 additions & 9 deletions pages/workspaces/[workspaceId]/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -359,18 +359,18 @@ export default function OverviewPage() {
.sortBy(['cocktailName', (item) => -(item.notes ?? '')]) // Sortiere nach cocktailName (asc) und notes (desc)
.value()
.map((cocktailQueueItem, index) => (
<div key={`cocktailQueue-item-${index}`} className={'flex w-full flex-row justify-between gap-2 pb-1 pt-1 lg:flex-col'}>
<div className={'flex flex-row items-center justify-between'}>
<div className={'flex flex-row items-center gap-1'}>
<div className={'font-bold'}>
<strong>{cocktailQueueItem.count}x</strong> {cocktailQueueItem.cocktailName}
</div>
<div key={`cocktailQueue-item-${index}`} className={'flex w-full flex-row flex-wrap justify-between gap-2 pb-1 pt-1 lg:flex-col'}>
<div className={'flex flex-row flex-wrap items-center justify-between gap-1'}>
<div className={'font-bold'}>
<strong>{cocktailQueueItem.count}x</strong> {cocktailQueueItem.cocktailName}
</div>
<span className={'flex flex-wrap gap-1'}>
{cocktailQueueItem.notes && <span className={'italic'}>mit Notiz</span>}
(seit {new Date(cocktailQueueItem.oldestTimestamp).toFormatTimeString()} Uhr)
</div>
</span>
</div>
{cocktailQueueItem.notes && <span className={'pb-1 italic'}>Notiz: {cocktailQueueItem.notes}</span>}
<div className={'space between flex flex-row gap-2'}>
{cocktailQueueItem.notes && <span className={'italic lg:pb-1'}>Notiz: {cocktailQueueItem.notes}</span>}
<div className={'flex w-full flex-row gap-2'}>
<div
className={'btn btn-square btn-outline btn-sm'}
onClick={() =>
Expand Down
Loading

0 comments on commit 51541af

Please sign in to comment.