import axiosInstance from '../../src/axiosSecure'; import { useEffect, useState } from "react"; import toast from "react-hot-toast"; import { useRouter } from "next/router"; import Link from "next/link"; import { DayOfWeek } from "../DayOfWeek"; const common = require('src/helpers/common'); import AvailabilityForm from "../availability/AvailabilityForm"; import { TrashIcon, PencilSquareIcon } from "@heroicons/react/24/outline"; export default function AvailabilityList({ publisher, showNew }) { const [showAv, setShowAv] = useState(showNew || false); const [selectedItem, setSelectedItem] = useState(null); const [items, setItems] = useState(publisher.availabilities); // Convert items prop to state useEffect(() => { console.log('items set to:', items?.map(item => item.id)); }, [items]) const toggleAv = () => setShowAv(!showAv); const editAvailability = (item) => { setSelectedItem(item); setShowAv(true) }; const deleteAvailability = async (id) => { try { await axiosInstance.delete("/api/data/availabilities/" + id); // Handle the successful deletion, maybe refresh the list or show a success message const updatedItems = items.filter(item => item.id !== id); setItems(updatedItems); } catch (error) { // Handle the error, maybe show an error message console.error("Error deleting availability:", error); } }; const renderTable = () => ( {items?.sort((a, b) => new Date(a.startTime) - new Date(b.startTime)).map(item => ( ))}
Ден от седмицата (дата) От-до Действия
{item.dayOfMonth ? `${common.getDateFormated(new Date(item.startTime))}` : `Всеки(Всяка) ${common.getDayOfWeekName(new Date(item.startTime))}`} {/* {common.getDateFormated(new Date(item.startTime))} */} {common.getTimeRange(new Date(item.startTime), new Date(item.endTime))}
); return ( <> {items?.length === 0 ? (

No Availabilities

) : renderTable()} {
}
{showAv && ( { toggleAv(); setSelectedItem(null); if (!item) { // remove selected item from state const updatedItems = items.filter(i => i.id !== selectedItem.id); setItems([...updatedItems]); return; }; const itemIndex = items.findIndex(i => i.id === item.id); // assuming each item has a unique 'id' property if (itemIndex !== -1) { // Replace the existing item with the updated item const updatedItems = [...items]; updatedItems[itemIndex] = item; setItems(updatedItems); } else { // Append the new item to the end of the list setItems([...items, item]); } }} /> )}
); } export const getServerSideProps = async () => { const { data: items } = await axiosInstance.get( common.getBaseUrl("/api/data/availabilities") ); return { props: { items, }, }; };