mirror of
https://github.com/cpvalente/ontime.git
synced 2026-08-21 06:59:09 +00:00
bugfix + patch
- fix update function - added patch
This commit is contained in:
@@ -18,7 +18,7 @@ import { showErrorToast } from '../../../common/helpers/toastManager';
|
|||||||
import style from './List.module.css';
|
import style from './List.module.css';
|
||||||
|
|
||||||
export default function EventListItem(props) {
|
export default function EventListItem(props) {
|
||||||
const { data, selected, delay, index, eventsHandler, updateData } = props;
|
const { data, selected, delay, index, eventsHandler } = props;
|
||||||
|
|
||||||
const [more, setMore] = useState(false);
|
const [more, setMore] = useState(false);
|
||||||
const [timeStart, setTimeStart] = useState(0);
|
const [timeStart, setTimeStart] = useState(0);
|
||||||
@@ -34,10 +34,10 @@ export default function EventListItem(props) {
|
|||||||
// validate field
|
// validate field
|
||||||
if (field in data) {
|
if (field in data) {
|
||||||
// create object with new field
|
// create object with new field
|
||||||
const newData = { ...data, [field]: value };
|
const newData = { id: data.id, [field]: value };
|
||||||
|
|
||||||
// request update in parent
|
// request update in parent
|
||||||
updateData(index, newData);
|
eventsHandler('patch', newData);
|
||||||
} else {
|
} else {
|
||||||
showErrorToast('Field Error: ' + field);
|
showErrorToast('Field Error: ' + field);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,53 +34,53 @@ exports.eventsGetById = async (req, res) => {
|
|||||||
// Returns -
|
// Returns -
|
||||||
exports.eventsPost = async (req, res) => {
|
exports.eventsPost = async (req, res) => {
|
||||||
// TODO: Validate event
|
// TODO: Validate event
|
||||||
if (req.body) {
|
if (!req.body) {
|
||||||
// ensure structure
|
|
||||||
let newEvent = {};
|
|
||||||
req.body.id = nanoid(10);
|
|
||||||
|
|
||||||
switch (req.body.type) {
|
|
||||||
case 'event':
|
|
||||||
newEvent = { ...eventDefs.event, ...req.body };
|
|
||||||
break;
|
|
||||||
case 'delay':
|
|
||||||
newEvent = { ...eventDefs.delay, ...req.body };
|
|
||||||
break;
|
|
||||||
case 'block':
|
|
||||||
newEvent = { ...eventDefs.block, ...req.body };
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
res.sendStatus(400);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Torbjorn: hmmmmmmm, can we look here?
|
|
||||||
if (newEvent.order <= 0) {
|
|
||||||
newEvent.order = 0;
|
|
||||||
// insert at top
|
|
||||||
events.forEach((e) => {
|
|
||||||
e.order = e.order + 1;
|
|
||||||
});
|
|
||||||
events = [newEvent, ...events];
|
|
||||||
} else if (newEvent.order >= events.length) {
|
|
||||||
newEvent.order = events.length;
|
|
||||||
events = [...events, newEvent];
|
|
||||||
} else {
|
|
||||||
let before = events.slice(0, newEvent.order);
|
|
||||||
let after = events.slice(newEvent.order);
|
|
||||||
// move all items one element down, starting from new position
|
|
||||||
after.forEach((e) => {
|
|
||||||
e.order = e.order + 1;
|
|
||||||
});
|
|
||||||
events = [...before, newEvent, ...after];
|
|
||||||
}
|
|
||||||
console.log('added', events);
|
|
||||||
res.sendStatus(201);
|
|
||||||
} else {
|
|
||||||
console.log('nothing to add', req.body);
|
|
||||||
res.sendStatus(400);
|
res.sendStatus(400);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ensure structure
|
||||||
|
let newEvent = {};
|
||||||
|
req.body.id = nanoid(10);
|
||||||
|
|
||||||
|
switch (req.body.type) {
|
||||||
|
case 'event':
|
||||||
|
newEvent = { ...eventDefs.event, ...req.body };
|
||||||
|
break;
|
||||||
|
case 'delay':
|
||||||
|
newEvent = { ...eventDefs.delay, ...req.body };
|
||||||
|
break;
|
||||||
|
case 'block':
|
||||||
|
newEvent = { ...eventDefs.block, ...req.body };
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
res.sendStatus(400);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Torbjorn: hmmmmmmm, can we look here?
|
||||||
|
if (newEvent.order <= 0) {
|
||||||
|
newEvent.order = 0;
|
||||||
|
// insert at top
|
||||||
|
events.forEach((e) => {
|
||||||
|
e.order = e.order + 1;
|
||||||
|
});
|
||||||
|
events = [newEvent, ...events];
|
||||||
|
} else if (newEvent.order >= events.length) {
|
||||||
|
newEvent.order = events.length;
|
||||||
|
events = [...events, newEvent];
|
||||||
|
} else {
|
||||||
|
let before = events.slice(0, newEvent.order);
|
||||||
|
let after = events.slice(newEvent.order);
|
||||||
|
// move all items one element down, starting from new position
|
||||||
|
after.forEach((e) => {
|
||||||
|
e.order = e.order + 1;
|
||||||
|
});
|
||||||
|
events = [...before, newEvent, ...after];
|
||||||
|
}
|
||||||
|
console.log('added', events);
|
||||||
|
res.sendStatus(201);
|
||||||
};
|
};
|
||||||
|
|
||||||
// Create controller for PUT request to '/events/:id'
|
// Create controller for PUT request to '/events/:id'
|
||||||
@@ -88,12 +88,40 @@ exports.eventsPost = async (req, res) => {
|
|||||||
exports.eventsPut = async (req, res) => {
|
exports.eventsPut = async (req, res) => {
|
||||||
const itemIndex = events.findIndex((e) => e.id == req.body.id);
|
const itemIndex = events.findIndex((e) => e.id == req.body.id);
|
||||||
|
|
||||||
if (!itemIndex) res.sendStatus(400);
|
// Item with index not found
|
||||||
|
if (itemIndex === -1) {
|
||||||
|
res.sendStatus(400);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Torbjorn: bad syntax?
|
||||||
const newEvents = replaceAt(events, itemIndex, req.body);
|
const newEvents = replaceAt(events, itemIndex, req.body);
|
||||||
events = [...newEvents];
|
events = [...newEvents];
|
||||||
res.sendStatus(200);
|
res.sendStatus(200);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// Create controller for PATCH request to '/events/:id'
|
||||||
|
// Returns -
|
||||||
|
exports.eventsPatch = async (req, res) => {
|
||||||
|
const itemIndex = events.findIndex((e) => e.id == req.body.id);
|
||||||
|
|
||||||
|
// Item with index not found
|
||||||
|
if (itemIndex === -1) {
|
||||||
|
res.sendStatus(400);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get current object
|
||||||
|
const eventToUpdate = events[itemIndex];
|
||||||
|
|
||||||
|
// Update and replace
|
||||||
|
const updatedEvent = { ...eventToUpdate, ...req.body };
|
||||||
|
const newEvents = replaceAt(events, itemIndex, updatedEvent);
|
||||||
|
|
||||||
|
events = [...newEvents];
|
||||||
|
res.sendStatus(200);
|
||||||
|
};
|
||||||
|
|
||||||
// Create controller for DELETE request to '/events/'
|
// Create controller for DELETE request to '/events/'
|
||||||
// Returns -
|
// Returns -
|
||||||
exports.eventsDelete = async (req, res) => {
|
exports.eventsDelete = async (req, res) => {
|
||||||
@@ -103,8 +131,6 @@ exports.eventsDelete = async (req, res) => {
|
|||||||
|
|
||||||
const itemIndex = events.findIndex((e) => e.id == req.params.id);
|
const itemIndex = events.findIndex((e) => e.id == req.params.id);
|
||||||
|
|
||||||
console.log('found at index', itemIndex);
|
|
||||||
|
|
||||||
// Torbjorn: this syntax is very bad
|
// Torbjorn: this syntax is very bad
|
||||||
if (itemIndex === -1) {
|
if (itemIndex === -1) {
|
||||||
res.sendStatus(400);
|
res.sendStatus(400);
|
||||||
|
|||||||
@@ -19,6 +19,9 @@ router.post('/', eventsController.eventsPost);
|
|||||||
// create route between controller and '/events/:id' endpoint
|
// create route between controller and '/events/:id' endpoint
|
||||||
router.put('/', eventsController.eventsPut);
|
router.put('/', eventsController.eventsPut);
|
||||||
|
|
||||||
|
// create route between controller and '/events/:id' endpoint
|
||||||
|
router.patch('/', eventsController.eventsPatch);
|
||||||
|
|
||||||
// create route between controller and '/events/:id' endpoint
|
// create route between controller and '/events/:id' endpoint
|
||||||
router.delete('/:id', eventsController.eventsDelete);
|
router.delete('/:id', eventsController.eventsDelete);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user