major: event block redesign

This commit is contained in:
cv
2021-05-10 21:31:16 +02:00
parent 3f598f3a7a
commit d24fb406af
23 changed files with 921 additions and 428 deletions
@@ -1,6 +1,7 @@
import DelayBlock from './DelayBlock';
import BlockBlock from './BlockBlock';
import EventBlock from './EventBlock';
import { showErrorToast } from '../../../common/helpers/toastManager';
export default function EventListItem(props) {
const {
@@ -14,6 +15,46 @@ export default function EventListItem(props) {
...rest
} = props;
// Create / delete new events
const actionHandler = (action, payload) => {
switch (action) {
case 'event':
eventsHandler('add', { type: 'event', order: index + 1 });
break;
case 'delay':
eventsHandler('add', { type: 'delay', order: index + 1 });
break;
case 'block':
eventsHandler('add', { type: 'block', order: index + 1 });
break;
case 'delete':
eventsHandler('delete', data.id);
break;
case 'update':
// Handles and filters update requests
const { field, value } = payload;
if (field === 'durationOverride') {
// duration defines timeEnd
let end = (data.timeStart += value);
const newData = { id: data.id, timeEnd: end };
// request update in parent
eventsHandler('patch', newData);
} else if (field in data) {
// create object with new field
const newData = { id: data.id, [field]: value };
// request update in parent
eventsHandler('patch', newData);
} else {
showErrorToast('Field Error: ' + field);
}
break;
default:
break;
}
};
switch (type) {
case 'event':
return (
@@ -22,17 +63,22 @@ export default function EventListItem(props) {
data={data}
selected={selected}
next={next}
eventsHandler={eventsHandler}
actionHandler={actionHandler}
delay={delay}
/>
);
case 'block':
return (
<BlockBlock index={index} data={data} eventsHandler={eventsHandler} />
<BlockBlock index={index} data={data} actionHandler={actionHandler} />
);
case 'delay':
return (
<DelayBlock index={index} data={data} eventsHandler={eventsHandler} />
<DelayBlock
index={index}
data={data}
eventsHandler={eventsHandler}
actionHandler={actionHandler}
/>
);
default:
break;