From 7ae26e39c482e8a18df47991cfa734ed71432a01 Mon Sep 17 00:00:00 2001 From: rui hildt Date: Tue, 2 Jun 2020 12:48:28 +0200 Subject: [PATCH] Add SelectedDates component --- src/components/General/TimezonePicker.js | 7 +- src/components/Schedule/SelectedDates.js | 98 ++++++++++++++++++++++++ src/screens/Schedule.js | 17 ++-- 3 files changed, 105 insertions(+), 17 deletions(-) create mode 100644 src/components/Schedule/SelectedDates.js diff --git a/src/components/General/TimezonePicker.js b/src/components/General/TimezonePicker.js index c11b718..3b558ca 100644 --- a/src/components/General/TimezonePicker.js +++ b/src/components/General/TimezonePicker.js @@ -1,15 +1,10 @@ -import React, { useState, useEffect } from 'react'; +import React, { useState } from 'react'; import { timezones } from '../../assets/data/timezonesFlat'; import { InputPicker } from 'rsuite'; export default function TimezonePicker() { const [timezone, setTimezone] = useState(''); - // TODO Remove this if not used - useEffect(() => { - console.log('useEffect:', timezone); - }, [timezone]); - return ( { + // Update selected dates + let updatedDates = eventsToDates(eventsList) + setDatesList(updatedDates) + console.log(eventsList) + }, [eventsList]); + + const handleDelete = (date) => { + let currentEvent = { start: date.toFormat('yyyy-MM-dd'), display: 'background' } + + // Find the event corresponding to the date + let selectedEventIndex; + for (let index = 0; index < eventsList.length; index++) { + const eventDate = eventsList[index].start; + if (currentEvent.start === eventDate) { + // When it's the case, set current index to selectedEventIndex + selectedEventIndex = index; + break; + } + } + // Create updated eventsList + eventsList.splice(selectedEventIndex, 1); + let updatedEvents = [...eventsList]; + // Update the eventsList + setEventsList(updatedEvents) + } + + if (datesList.length > 0) { + return ( + <> +

Dates selected

+ + + ); + } else { + return(<>) + } +} + + +// Convert events to Luxon Datetime objects +const eventsToDates = (events) => { + let dates = [] + events.forEach((event) => { + dates.push(DateTime.fromFormat(event.start, 'yyyy-MM-dd')); + }); + return dates +} + +// Convert Luxon Datetime objects to events +const datesToEvents = (dates) => { + let events = [] + dates.forEach((date) => { + let event = { start: date.toFormat('yyyy-MM-dd'), display: 'background' } + events.push(event); + }); + return events +} \ No newline at end of file diff --git a/src/screens/Schedule.js b/src/screens/Schedule.js index 35a6cc3..d4b8168 100644 --- a/src/screens/Schedule.js +++ b/src/screens/Schedule.js @@ -1,18 +1,10 @@ -import React, { useState } from 'react'; -import { - Container, - Form, - FormControl, - FormGroup, - Input, - Divider, - Icon, -} from 'rsuite'; -import { DateTime } from 'luxon'; +import React from 'react'; +import { Container, Form, FormControl, FormGroup, Input } from 'rsuite'; import TimezonePicker from '../components/General/TimezonePicker'; import DaySelector from '../components/Schedule/DaySelector'; import DurationSelector from '../components/Schedule/DurationSelector'; +import SelectedDates from '../components/Schedule/SelectedDates'; export default function Schedule() { return ( @@ -40,6 +32,9 @@ export default function Schedule() { + + + );