Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Rev 4707 | Rev 4971 | Ir a la última revisión | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
4189 stevensc 1
import React, { useEffect, useState } from 'react'
4191 stevensc 2
import axios from '../../utils/axios'
4189 stevensc 3
import { useDispatch } from 'react-redux'
4
import { addNotification } from '../../redux/notification/notification.actions'
4188 stevensc 5
 
6
const EventsList = () => {
4701 stevensc 7
    const [events, setEvents] = useState([])
4705 stevensc 8
    const [tasks, setTasks] = useState([])
4189 stevensc 9
    const dispatch = useDispatch()
10
 
4188 stevensc 11
    const getEvents = async () => {
12
        try {
4702 stevensc 13
            const { data: response } = await axios.get('/helpers/next-events')
4188 stevensc 14
 
4189 stevensc 15
            if (!response.success) {
16
                dispatch(addNotification({ style: 'danger', message: response.data }))
17
                return
18
            }
4188 stevensc 19
 
4705 stevensc 20
            const nextTasks = response.data.filter(event => event.type === 'task')
4706 stevensc 21
            const nextEvents = response.data.filter(event => event.type === 'event')
4705 stevensc 22
 
23
            setTasks(nextTasks)
24
            setEvents(nextEvents)
25
 
4188 stevensc 26
        } catch (error) {
4189 stevensc 27
            dispatch(addNotification({ style: 'danger', message: 'Ha ocurrido un error' }))
28
            console.log(`Error: ${error.message}`)
4188 stevensc 29
        }
30
    }
4189 stevensc 31
 
4188 stevensc 32
    useEffect(() => {
33
        getEvents()
34
    }, [])
35
 
4705 stevensc 36
    return (
37
        <>
38
            <div className='peopleYouMayKnow'>
39
                <div className="sd-title d-flex align-items-center justify-content-between">
40
                    <h3>Proximos eventos</h3>
41
                </div>
42
                <div className="d-flex flex-column" style={{ gap: '.5rem' }}>
43
                    {events.length
44
                        ? events.map((event) => {
45
                            const eventStart = new Date(event.start).toLocaleString()
46
                            const eventEnd = new Date(event.end).toLocaleString()
4701 stevensc 47
 
4705 stevensc 48
                            return (
49
                                <a
50
                                    key={event.id}
51
                                    href={event.url}
52
                                    target='_blank'
53
                                    rel="noreferrer"
54
                                >
55
                                    <div className='calendar-event' style={{ color: event.textColor, background: event.backgroundColor }}>
56
                                        <h4>
57
                                            <b>Evento: </b> {event.title}
58
                                        </h4>
59
                                        <span>
60
                                            <b>Inicio: </b>{eventStart}
61
                                        </span>
62
                                        <span>
63
                                            <b>Fin: </b>{eventEnd}
64
                                        </span>
65
                                    </div>
66
                                </a>
67
                            )
68
                        })
69
                        : <div className="view-more">No hay eventos</div>
70
                    }
71
                </div>
4189 stevensc 72
            </div>
4705 stevensc 73
            <div className='peopleYouMayKnow mt-2'>
74
                <div className="sd-title d-flex align-items-center justify-content-between">
75
                    <h3>Proximas tareas</h3>
76
                </div>
77
                <div className="d-flex flex-column" style={{ gap: '.5rem' }}>
78
                    {tasks.length
79
                        ? tasks.map((task) => {
80
                            const taskStart = new Date(task.start).toLocaleString()
81
                            const taskEnd = new Date(task.end).toLocaleString()
4193 stevensc 82
 
4705 stevensc 83
                            return (
84
                                <a
85
                                    key={task.id}
86
                                    href={task.url}
87
                                    target='_blank'
88
                                    rel="noreferrer"
89
                                >
90
                                    <div className='calendar-event' style={{ color: task.textColor, background: task.backgroundColor }}>
91
                                        <h4>
92
                                            <b>Tarea: </b> {task.title}
93
                                        </h4>
94
                                        <span>
95
                                            <b>Inicio: </b>{taskStart}
96
                                        </span>
97
                                        <span>
98
                                            <b>Fin: </b>{taskEnd}
99
                                        </span>
100
                                    </div>
101
                                </a>
102
                            )
103
                        })
4707 stevensc 104
                        : <div className="view-more">No hay tareas</div>
4705 stevensc 105
                    }
106
                </div>
4189 stevensc 107
            </div>
4705 stevensc 108
        </>
4188 stevensc 109
    )
110
}
111
 
112
export default EventsList