Rev 7288 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
import React, { useEffect, useState } from 'react'import { axios } from '../../utils'import { useDispatch } from 'react-redux'import { addNotification } from '../../redux/notification/notification.actions'import styled from 'styled-components'import WidgetLayout from '../widgets/WidgetLayout'import EmptySection from '../UI/EmptySection'const StyledContainer = styled(WidgetLayout)`padding: 1rem;h2 {font-size: 1.1rem;font-weight: 600;color: var(--title-color);}ul {display: flex;flex-direction: column;gap: 0.5rem;margin-top: 1rem;}a {display: block;}`const EventsList = () => {const [eventsAndTasks, setEventsAndTasks] = useState([])const dispatch = useDispatch()const getBackendVarUrl = (url) => {axios.get(url).then((response) => {const { data, success } = response.dataif (!success) {dispatch(addNotification({style: 'danger',msg: 'Error interno. Por favor, intente más tarde.',}))return}window.open(data, '_blank')})}const getEvents = () => {axios.get('/helpers/next-events').then((response) => {const { success, data } = response.dataif (!success) {dispatch(addNotification({ style: 'danger', message: data }))return}setEventsAndTasks(data)}).catch((error) => {dispatch(addNotification({ style: 'danger', message: 'Ha ocurrido un error' }))throw new Error(error)})}useEffect(() => {getEvents()}, [])return (<StyledContainer><h2>Eventos y Tareas</h2><ul>{eventsAndTasks.length ? (eventsAndTasks.map((event) => {return (<li key={event.id}><ahref={event.url}onClick={(e) => {e.preventDefault()getBackendVarUrl(event.url)}}><divclassName="calendar-event"style={{color: event.textColor,background: event.backgroundColor,}}><h4><b>Evento: </b> {event.title}</h4><span><b>Inicio: </b>{event.start}</span>{event.end && (<span><b>Fin: </b>{event.end}</span>)}</div></a></li>)})) : (<EmptySection message="No hay eventos disponibles" />)}</ul></StyledContainer>)}export default EventsList