import { useSelector, useDispatch } from 'react-redux' import { useParams } from 'react-router-dom'; import React, { useState } from "react"; import { Header, Divider, List, ListItem, Segment, Statistic, Icon, Menu, Tab, Table, Modal, Button, Image, Form } from "semantic-ui-react"; import { useAddNewEventMutation, useGetTalkgroupsQuery } from '../../features/api/apiSlice' function PlaylistBuilder(props) { const { shortName } = useParams(); const { data: talkgroupsData, isSuccess: isTalkgroupsSuccess } = useGetTalkgroupsQuery(shortName); const [addNewEvent, { isLoading }] = useAddNewEventMutation() const { loading: callsLoading, data: callsData } = useSelector((state) => state.calls); const [playlist, setPlaylist] = useState([]); const [open, setOpen] = React.useState(false); const [title, setTitle] = useState("") const [description, setDescription] = useState("") const handleTitleChange = (e, { name, value }) => setTitle(value); const handleDescriptionChange = (e, { name, value }) => setDescription(value); const compareCalls = (a, b) => { const aTimestamp = new Date(a.time).getTime() const bTimestamp = new Date(b.time).getTime() if (aTimestamp > bTimestamp) { return -1 } else { return 1 } } const addCall = (call) => { const found = playlist.find(c => c._id == call._id); if (!found) { playlist.push(call); setPlaylist([...playlist.sort(compareCalls)]) } } const onDragOver = (event) => { // It also receives a DragEvent. // Later, we'll read the position // of the item from event.currentTarget // and store the updated list state // We need to prevent the default behavior // of this event, in order for the onDrop // event to fire. // It may sound weird, but the default is // to cancel out the drop. event.preventDefault(); } const onDrop = (event) => { // Here, we will: // - update the rendered list // - and reset the DnD state var callId = event.dataTransfer.getData("call-id"); console.log("Dropping: " + callId); addCall(callsData.entities[callId]) } let listItems = ""; listItems = playlist.map((call, index) => { let tgAlpha = call.talkgroupNum; if (talkgroupsData) { const talkgroup = talkgroupsData.talkgroups[call.talkgroupNum] tgAlpha = talkgroup.alpha?talkgroup.alpha:tgAlpha; } const time = new Date(call.time); const callTime = time.toLocaleTimeString(); const callDate = time.toLocaleDateString(); return (