Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

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

Rev Autor Línea Nro. Línea
7292 stevensc 1
import React, { useEffect, useState } from 'react'
7279 stevensc 2
import { Container, Grid } from '@mui/material'
3
import { Calendar, momentLocalizer } from 'react-big-calendar'
4
import moment from 'moment'
5
import EventsList from '../../components/calendar/EventsList'
7287 stevensc 6
import ArrowBackIosIcon from '@mui/icons-material/ArrowBackIos'
7
import ArrowForwardIosIcon from '@mui/icons-material/ArrowForwardIos'
7283 stevensc 8
import 'react-big-calendar/lib/sass/styles.scss'
7292 stevensc 9
import { axios } from '../../utils'
7296 stevensc 10
import EventModal from '../../components/calendar/EventModal'
7279 stevensc 11
 
7281 stevensc 12
moment.locale('es-ES')
7279 stevensc 13
const localizer = momentLocalizer(moment)
14
 
15
const CalendarPage = () => {
7292 stevensc 16
  const [events, setEvents] = useState([])
7296 stevensc 17
  const [selectedEvent, setSelectedEvent] = useState(null)
18
  const [modalShow, setModalShow] = useState(false)
7279 stevensc 19
 
7296 stevensc 20
  const selectEvent = (event) => {
21
    setSelectedEvent(event)
22
    setModalShow(true)
23
  }
24
 
25
  const unselectEvent = () => {
26
    setSelectedEvent(null)
27
    setModalShow(false)
28
  }
29
 
7292 stevensc 30
  useEffect(() => {
31
    axios.get('/calendar/events').then((response) => {
32
      const events = response.data
33
 
34
      const formattedData = events.map((event) => ({
35
        ...event,
36
        start: new Date(event.start),
37
        end: new Date(event.start),
38
      }))
39
 
40
      setEvents(formattedData)
41
    })
42
  }, [])
43
 
7279 stevensc 44
  return (
7296 stevensc 45
    <>
46
      <Container as="main" className="px-0">
47
        <Grid container spacing={2}>
48
          <Grid item xs={12} md={8} spacing={3}>
49
            <Calendar
50
              views={['day', 'week', 'month']}
51
              selectable
52
              localizer={localizer}
53
              defaultDate={new Date()}
54
              defaultView="month"
55
              onSelectEvent={selectEvent}
56
              events={events}
57
              messages={{
58
                next: <ArrowForwardIosIcon />,
59
                previous: <ArrowBackIosIcon />,
60
                today: 'Hoy',
61
                month: 'Mes',
62
                week: 'Semana',
63
                day: 'Día',
64
              }}
65
              eventPropGetter={(event) => {
66
                const backgroundColor = event.backgroundColor
67
                  ? event.backgroundColor
68
                  : 'blue'
69
                const color = event.textColor ? event.textColor : '#fff'
70
                return { style: { backgroundColor, color } }
71
              }}
72
            />
73
          </Grid>
74
          <Grid item xs={12} md={4}>
75
            <EventsList />
76
          </Grid>
7279 stevensc 77
        </Grid>
7296 stevensc 78
      </Container>
79
      <EventModal
80
        show={modalShow}
81
        event={selectedEvent}
82
        onClose={unselectEvent}
83
      />
84
    </>
7279 stevensc 85
  )
86
}
87
 
88
export default CalendarPage