diff --git a/zmsadmin/js/page/availabilityDay/form/conflicts.js b/zmsadmin/js/page/availabilityDay/form/conflicts.js index 6b088d16d..00285a2a7 100644 --- a/zmsadmin/js/page/availabilityDay/form/conflicts.js +++ b/zmsadmin/js/page/availabilityDay/form/conflicts.js @@ -11,26 +11,31 @@ const renderConflictList = (conflictList) => { let conflictDatesByMessage = []; conflictList.map(collection => { collection.conflicts.map((conflict) => { - if (! conflictDatesByMessage[conflict.message]) { - Object.assign({}, conflictDatesByMessage[conflict.message] = []); + const existingConflict = conflictDatesByMessage.find( + item => item.message === conflict.message + ); + + if (existingConflict) { + existingConflict.dates.push(formatDate(collection.date)); + } else { + conflictDatesByMessage.push({ + message: conflict.message, + dates: [formatDate(collection.date)] + }); } - conflictDatesByMessage[conflict.message].push(formatDate(collection.date)) - }) - }) + }); + }); return ( - Object.keys(conflictDatesByMessage).map((key, index) => { - return ( -
-
{ conflictDatesByMessage[key].join(", ") }
-
- {key}
-
- ) - }) - ) - - -} + conflictDatesByMessage.map((item, index) => ( +
+ {/* Convert newlines in the message to
tags */} +
') }} /> +
+ )) + ); +}; + const Conflicts = (props) => { const conflicts = Object.keys(props.conflictList).map(key => { diff --git a/zmsadmin/js/page/availabilityDay/form/content.js b/zmsadmin/js/page/availabilityDay/form/content.js index fa34800e7..9583deb40 100644 --- a/zmsadmin/js/page/availabilityDay/form/content.js +++ b/zmsadmin/js/page/availabilityDay/form/content.js @@ -9,50 +9,121 @@ import ErrorBar from '../errorBar' const FormContent = (props) => { const { - availabilityList, - data, - errorList, + availabilityList, + data, + errorList, conflictList, - onChange, - today, + onChange, + today, setErrorRef } = props; - + + const hasEndTimePastError = Object.values(errorList) + .some(error => error.itemList?.[0]?.[0]?.type === 'endTimePast'); const calenderDisabled = data.type && data.slotTimeInMinutes ? false : true; + const inputDisabled = hasEndTimePastError || calenderDisabled; + const isUnsafedSpontaneous = data.id == 0; + const filteredErrorList = Object.values(errorList) + .filter(error => error.itemList?.[0]?.[0]?.type !== 'endTimePast') + .reduce((acc, error) => { + acc[error.id] = error; + return acc; + }, {}); + return (
-
+
- {isUnsafedSpontaneous ? -
- Diese Öffnungszeit ist eine mit einer Termin-Öffnungszeit verbundenen Spontankunden-Öffnungszeit und hat noch keine eigene ID. Sie können diese Öffnungszeit erst einzeln aktualisieren, wenn sie die dazugehörige Termin-Öffnungszeit mit einmal initial aktualisiert haben. -
: null + {isUnsafedSpontaneous ? +
+
+