Optimize schedule table rendering
This commit is contained in:
parent
70b1b36852
commit
4128e0e68a
|
@ -6,25 +6,28 @@ export default function useScheduleTable({
|
||||||
events = {},
|
events = {},
|
||||||
slots = {},
|
slots = {},
|
||||||
}) {
|
}) {
|
||||||
const filteredEvents = useMemo(() => events.filter(event => eventTypeId > 0 ? event.event_type_id === eventTypeId : true), [eventTypeId, events]);
|
return useMemo(() => {
|
||||||
const filteredEventIds = useMemo(() => filteredEvents.map(event => event.id), [filteredEvents]);
|
const filteredEvents = events.filter(event => eventTypeId > 0 ? event.event_type_id === eventTypeId : true);
|
||||||
const filteredHallIds = useMemo(() => new Set(slots.filter(slot => filteredEventIds.includes(slot.event_id)).map(slot => slot.hall_id)), [filteredEventIds, slots]);
|
const filteredEventIds = filteredEvents.map(event => event.id);
|
||||||
const header = useMemo(() => halls.filter(hall => filteredHallIds.has(hall.id)), [filteredHallIds, halls]);
|
const filteredSlots = slots.filter(slot => filteredEventIds.includes(slot.event_id));
|
||||||
|
const filteredHallIds = new Set(filteredSlots.map(slot => slot.hall_id));
|
||||||
|
const header = halls.filter(hall => filteredHallIds.has(hall.id));
|
||||||
|
|
||||||
const rows = filteredEvents.map(event => ({
|
const rows = filteredEvents.map(event => ({
|
||||||
id: event.id,
|
id: event.id,
|
||||||
cells: [{
|
cells: [{
|
||||||
id: 1,
|
id: 1,
|
||||||
attributes: {
|
attributes: {
|
||||||
className: 'schedule-'.concat(event.language).concat(' ').concat(event.track?.css_class),
|
className: 'schedule-'.concat(event.language).concat(' ').concat(event.track?.css_class),
|
||||||
colSpan: 2,
|
colSpan: 2,
|
||||||
},
|
},
|
||||||
event,
|
event,
|
||||||
}],
|
}],
|
||||||
}));
|
}));
|
||||||
|
|
||||||
return {
|
return {
|
||||||
header,
|
header,
|
||||||
rows,
|
rows,
|
||||||
};
|
};
|
||||||
|
}, [eventTypeId, events, halls, slots]);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue