Skip to content

Commit 3c0b70b

Browse files
committed
Fixed DELETE
1 parent 9354f9a commit 3c0b70b

File tree

3 files changed

+22
-6
lines changed

3 files changed

+22
-6
lines changed

organizer-frontend/src/components/EventTable/EventTable.jsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import React from "react";
22
import EventTableRow from "../EventTableRow/EventTableRow.jsx";
33

4-
function EventTable({ events, selected, onSelect, onSelectAll, onRowClick }) {
4+
function EventTable({ events, selected, onSelect, onSelectAll, onRowClick, onDelete }) {
55
return (
66
<table style={{width: '100%', borderCollapse: 'collapse', background: '#fff', borderRadius: 12, overflow: 'hidden', boxShadow: '0 2px 8px rgba(0,0,0,0.04)'}}>
77
<thead style={{background: '#87D2A7', color: '#0F114B'}}>
@@ -18,6 +18,7 @@ function EventTable({ events, selected, onSelect, onSelectAll, onRowClick }) {
1818
<th style={{padding: '12px', textAlign: 'left'}}>Место</th>
1919
<th style={{padding: '12px', textAlign: 'left'}}>Описание</th>
2020
<th style={{padding: '12px', textAlign: 'left'}}>Изображение</th>
21+
<th style={{padding: '12px', textAlign: 'left'}}>Действия</th>
2122
</tr>
2223
</thead>
2324
<tbody>
@@ -29,6 +30,7 @@ function EventTable({ events, selected, onSelect, onSelectAll, onRowClick }) {
2930
selected={selected}
3031
onSelect={onSelect}
3132
onClick={onRowClick}
33+
onDelete={onDelete}
3234
/>
3335
))}
3436
</tbody>

organizer-frontend/src/components/EventTableRow/EventTableRow.jsx

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import React from "react";
22

3-
function EventTableRow({ event, index, selected, onSelect, onClick }) {
3+
function EventTableRow({ event, index, selected, onSelect, onClick, onDelete }) {
44
// Проверка на пустой event
55
if (!event) return null;
66
return (
@@ -23,6 +23,13 @@ function EventTableRow({ event, index, selected, onSelect, onClick }) {
2323
<span style={{color:'#aaa'}}>Нет изображения</span>
2424
)}
2525
</td>
26+
<td style={{padding: '10px'}} onClick={e => e.stopPropagation()}>
27+
<button
28+
style={{background: '#e57373', color: '#fff', border: 'none', borderRadius: 6, padding: '4px 12px', cursor: 'pointer', fontWeight: 500}}
29+
onClick={() => onDelete && onDelete(event.id)}
30+
title="Удалить мероприятие"
31+
>Удалить</button>
32+
</td>
2633
</tr>
2734
);
2835
}

organizer-frontend/src/components/EventsList.jsx

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -60,11 +60,17 @@ function EventsList({}) {
6060
};
6161

6262
const handleDeleteSelected = async () => {
63-
for (const idx of selected) {
64-
const event = events[idx];
65-
await fetch(`${API_URL}/${event.id}`, { method: 'DELETE' });
63+
// Собираем id выбранных событий
64+
const idsToDelete = selected.map(idx => events[idx]?.id).filter(Boolean);
65+
for (const id of idsToDelete) {
66+
await fetch(`${API_URL}/${id}`, {
67+
method: 'DELETE',
68+
headers: {
69+
'Authorization': `Bearer ${token}`
70+
}
71+
});
6672
}
67-
setEvents(events.filter((_, idx) => !selected.includes(idx)));
73+
setEvents(events => events.filter(ev => !idsToDelete.includes(ev.id)));
6874
setSelected([]);
6975
};
7076

@@ -125,6 +131,7 @@ function EventsList({}) {
125131
onSelect={handleSelect}
126132
onSelectAll={handleSelectAll}
127133
onRowClick={setSelectedEventIdx}
134+
onDelete={handleDeleteEvent}
128135
/>
129136
{showModal && (
130137
<EventCreateForm onAdd={handleAddEvent} onClose={() => setShowModal(false)} />

0 commit comments

Comments
 (0)