diff --git a/public/locales/de/translation.json b/public/locales/de/translation.json index 859c597..693ed64 100644 --- a/public/locales/de/translation.json +++ b/public/locales/de/translation.json @@ -16,8 +16,12 @@ "add": "Hinzufügen" }, "unit": { + "hours": "Stunden", + "hour": "Stunde", "minutes": "Minuten", - "days": "Tage" + "minute": "Minute", + "days": "Tage", + "separator": "und" }, "failed": "Fehlgeschlagen", "action": "Aktion", @@ -104,10 +108,7 @@ "serviceActivityPrice": "Preis der Tätigkeit", "serviceActivityPricePlaceholder": "Geben Sie den Preis der Tätigkeit ein", "serviceActivityPriceUnit": "€", - "serviceActivityDurationHours": "Dauer der Tätigkeit (Stunden)", - "serviceActivityDurationHoursPlaceholder": "Geben Sie die Dauer der Tätigkeit in Stunden ein", - "serviceActivityDurationHoursUnit": "Stunden", - "serviceActivityDurationMinutes": "Dauer der Tätigkeit (Minuten)", + "serviceActivityDurationMinutes": "Dauer der Tätigkeit", "serviceActivityDurationMinutesPlaceholder": "Geben Sie die Dauer der Tätigkeit in Minuten ein", "serviceActivityDurationMinutesUnit": "Minuten", "serviceActivityResponsible": "Verantwortliche Mitarbeiter", diff --git a/public/locales/en/translation.json b/public/locales/en/translation.json index 346ec7e..edca3af 100644 --- a/public/locales/en/translation.json +++ b/public/locales/en/translation.json @@ -16,8 +16,12 @@ "add": "Add" }, "unit": { - "minutes": "Minutes", - "days": "Days" + "hours": "hours", + "hour": "hour", + "minutes": "minutes", + "minute": "minute", + "days": "Days", + "separator": "and" }, "failed": "Failed", "action": "Action", @@ -107,9 +111,6 @@ "serviceActivityPrice": "Price of the activity", "serviceActivityPricePlaceholder": "Enter the price of the activity", "serviceActivityPriceUnit": "€", - "serviceActivityDurationHours": "Duration of activity (hours)", - "serviceActivityDurationHoursPlaceholder": "Enter the duration of the activity in hours", - "serviceActivityDurationHoursUnit": "Hours", "serviceActivityDurationMinutes": "Duration of activity (minutes)", "serviceActivityDurationMinutesPlaceholder": "Enter the duration of the activity in minutes", "serviceActivityDurationMinutesUnit": "Minutes", diff --git a/src/Pages/Store/Services/index.js b/src/Pages/Store/Services/index.js index c8bc151..0984f77 100644 --- a/src/Pages/Store/Services/index.js +++ b/src/Pages/Store/Services/index.js @@ -351,7 +351,12 @@ function Service({ >

{activity.description}

Preis: {activity.price} €

-

Dauer: {activity.duration} Minuten

+

+ Dauer: {activity.duration} Minuten{" "} + + {durationToHoursAndMinutes(t, activity.duration)} + +

); }) @@ -366,6 +371,37 @@ function Service({ ); } +function durationToHoursAndMinutes(t, duration) { + const MINUTES_IN_HOUR = 60; + const singularHourText = t("common.unit.hour"); + const pluralHourText = t("common.unit.hours"); + const singularMinuteText = t("common.unit.minute"); + const pluralMinuteText = t("common.unit.minutes"); + + const hours = Math.floor(duration / MINUTES_IN_HOUR); + const minutes = duration % MINUTES_IN_HOUR; + + if (hours === 0 && minutes < 61) { + return ""; + } + + let response = ""; + + if (hours === 0) { + response = `${minutes} ${ + minutes === 1 ? singularMinuteText : pluralMinuteText + }`; + } else if (minutes === 0) { + response = `${hours} ${hours === 1 ? singularHourText : pluralHourText}`; + } else { + response = `${hours} ${hours === 1 ? singularHourText : pluralHourText} ${t( + "common.unit.separator" + )} ${minutes} ${minutes === 1 ? singularMinuteText : pluralMinuteText}`; + } + + return `(${response})`; +} + // this modal is used to create and edit services function ModalAddEditService({ storeId, @@ -550,11 +586,9 @@ function ModalAddEditServiceActivity({ serviceActivityDescription: addEditServiceActivityModalOptions.activity.description, serviceActivityPrice: addEditServiceActivityModalOptions.activity.price, - serviceActivityDurationHours: Math.floor( - addEditServiceActivityModalOptions.activity.duration / 60 - ), + serviceActivityDurationMinutes: - addEditServiceActivityModalOptions.activity.duration % 60, + addEditServiceActivityModalOptions.activity.duration, }); setSelectedEmployeesRowKeys( @@ -600,9 +634,7 @@ function ModalAddEditServiceActivity({ name: values.serviceActivityName, description: values.serviceActivityDescription, price: values.serviceActivityPrice, - duration: - values.serviceActivityDurationHours * 60 + - values.serviceActivityDurationMinutes, + duration: values.serviceActivityDurationMinutes, userIds: selectedEmployeesRowKeys.length === users.length ? [] @@ -637,14 +669,11 @@ function ModalAddEditServiceActivity({ const formServiceActivityPrice = form.getFieldValue( "serviceActivityPrice" ); - const formServiceActivityDurationHours = form.getFieldValue( - "serviceActivityDurationHours" - ); const formServiceActivityDurationMinutes = form.getFieldValue( "serviceActivityDurationMinutes" ); - // if the service name didn't change, don't send a request + // if the service didn't change, don't send a request if ( addEditServiceActivityModalOptions.activity.name === formServiceActivityName && @@ -653,8 +682,7 @@ function ModalAddEditServiceActivity({ addEditServiceActivityModalOptions.activity.price === formServiceActivityPrice && addEditServiceActivityModalOptions.activity.duration === - formServiceActivityDurationHours * 60 + - formServiceActivityDurationMinutes && + formServiceActivityDurationMinutes && (selectedEmployeesRowKeys.length === users.length || addEditServiceActivityModalOptions.activity .StoreServiceActivityUsers.length === @@ -694,15 +722,12 @@ function ModalAddEditServiceActivity({ body.price = formServiceActivityPrice; } - let formDuration = - formServiceActivityDurationHours * 60 + - formServiceActivityDurationMinutes; + let formDuration = formServiceActivityDurationMinutes; if ( formDuration !== addEditServiceActivityModalOptions.activity.duration ) { - validateFields.push("serviceActivityDurationHours"); validateFields.push("serviceActivityDurationMinutes"); body.duration = formDuration; } @@ -740,8 +765,6 @@ function ModalAddEditServiceActivity({ - - @@ -870,7 +893,7 @@ function ServiceActivityPriceFormInput({ formItemName }) { /> ); } - +/* function ServiceActivityDurationHoursFormInput({ formItemName, setIsInputValid, @@ -897,7 +920,7 @@ function ServiceActivityDurationHoursFormInput({ /> ); } - +*/ function ServiceActivityDurationMinutesFormInput({ formItemName, setIsInputValid, diff --git a/src/utils.js b/src/utils.js index 561b673..742b347 100644 --- a/src/utils.js +++ b/src/utils.js @@ -70,14 +70,12 @@ export const Constants = { MAX_STORE_SERVICE_ACTIVITY_DESCRIPTION_LENGTH: 1024, MIN_STORE_SERVICE_ACTIVITY_PRICE: 0, MAX_STORE_SERVICE_ACTIVITY_PRICE: 10000000, - MIN_STORE_SERVICE_ACTIVITY_DURATION_HOURS: 0, - MAX_STORE_SERVICE_ACTIVITY_DURATION_HOURS: 23, MIN_STORE_SERVICE_ACTIVITY_DURATION_MINUTES: 0, - MAX_STORE_SERVICE_ACTIVITY_DURATION_MINUTES: 59, + MAX_STORE_SERVICE_ACTIVITY_DURATION_MINUTES: 60 * 24, // 24 hours in minutes MIN_CALENDAR_FUTURE_BOOKING_DAYS: 0, MAX_CALENDAR_FUTURE_BOOKING_DAYS: 365, MIN_CALENDAR_EARLIEST_BOOKING_TIME: 0, - MAX_CALENDAR_EARLIEST_BOOKING_TIME: 60 * 24, // 24 hours + MAX_CALENDAR_EARLIEST_BOOKING_TIME: 60 * 24, // 24 hours in minutes }, DELAY_ACCOUNT_NAME_CHECK: 250, MAX_AVATAR_SIZE: 5 * 1024 * 1024,