diff --git a/src/App.js b/src/App.js
index 852381934..db2cc6ed1 100644
--- a/src/App.js
+++ b/src/App.js
@@ -1,5 +1,6 @@
import { Route } from 'react-router';
import './App.css';
+import { EventListProvider } from './app/context/eventListContext';
import Editor from './features/editors/Editor';
import DefaultPresenter from './features/viewers/DefaultPresenter';
@@ -7,7 +8,9 @@ function App() {
return (
-
+
+
+
);
}
diff --git a/src/app/context/eventListContext.js b/src/app/context/eventListContext.js
new file mode 100644
index 000000000..09f40a456
--- /dev/null
+++ b/src/app/context/eventListContext.js
@@ -0,0 +1,14 @@
+import { createContext, useState } from 'react';
+import { sampleData } from '../sampleData';
+
+export const EventListContext = createContext();
+
+export function EventListProvider(props) {
+ const [events, setEvents] = useState(sampleData.events);
+
+ return (
+
+ {props.children}
+
+ );
+}
diff --git a/src/app/sampleData.js b/src/app/sampleData.js
index 03a0e1b39..6aaeeaba5 100644
--- a/src/app/sampleData.js
+++ b/src/app/sampleData.js
@@ -12,8 +12,8 @@ export const sampleData = {
title: 'Is the internet a fad?',
subtitle: 'It is',
presenter: 'Carlos Valente',
- timeStart: dummy,
- timeEnd: dummy,
+ timeStart: new Date('March 24, 2021 03:25:00'),
+ timeEnd: new Date('March 24, 2021 04:24:00'),
clockStarted: dummy,
timerDuration: 10,
},
@@ -22,8 +22,8 @@ export const sampleData = {
title: 'Is reddit a dictatorship?',
subtitle: 'It is',
presenter: 'Carlos Valente',
- timeStart: dummy,
- timeEnd: dummy,
+ timeStart: new Date('March 24, 2021 04:25:00'),
+ timeEnd: new Date('March 24, 2021 05:24:00'),
clockStarted: dummy,
timerDuration: 10,
},
diff --git a/src/features/editors/list/EventList.jsx b/src/features/editors/list/EventList.jsx
index fa352902a..a5e5fb4f7 100644
--- a/src/features/editors/list/EventList.jsx
+++ b/src/features/editors/list/EventList.jsx
@@ -1,7 +1,15 @@
import { Table, Thead, Tbody, Tr, Th } from '@chakra-ui/react';
+import { useContext } from 'react';
+import { EventListContext } from '../../../app/context/eventListContext';
import EventListItem from './EventListItem';
+import { sortByDate } from './listUtils';
export default function EventList(props) {
+ const [events, setEvents] = useContext(EventListContext);
+
+ console.log('e', events);
+ console.log('sort', sortByDate(events));
+
return (
@@ -14,7 +22,7 @@ export default function EventList(props) {
- {props.data.events.map((e) => (
+ {sortByDate(events).map((e) => (
{
+ const sorter = (a, b) => {
+ return new Date(a.timeStart).getTime() - new Date(b.timeStart).getTime();
+ };
+ return arr.sort(sorter);
+};
diff --git a/src/features/form/EventForm.jsx b/src/features/form/EventForm.jsx
index 02c855be0..dcff4ada2 100644
--- a/src/features/form/EventForm.jsx
+++ b/src/features/form/EventForm.jsx
@@ -1,9 +1,10 @@
import { Button } from '@chakra-ui/button';
import { Form, Formik } from 'formik';
-import { useState } from 'react';
+import { useContext, useState } from 'react';
import ReactDatePicker from 'react-datepicker';
import DatePicker from 'react-datepicker';
import * as Yup from 'yup';
+import { EventListContext } from '../../app/context/eventListContext';
import ChakraInput from '../../common/input/ChakraInput';
import ChakraNumberInput from '../../common/input/ChakraNumberInput';
import TimeInput from '../../common/input/TimeInput';
@@ -11,6 +12,7 @@ import TimeInput from '../../common/input/TimeInput';
import styles from './EventForm.module.css';
export default function EventForm(props) {
+ const [events, setEvents] = useContext(EventListContext);
const today = new Date();
const initialValues = props.data ?? {
title: '',
@@ -33,9 +35,25 @@ export default function EventForm(props) {
});
const submitForm = (values) => {
+ // prevent default stops page from refreshing, necessary?
console.log('form', values);
+
+ // update form state
props.setFormMode(null);
props.setSelectedEvent(null);
+
+ // are we updating or creating new?
+
+ // add new event to data context
+ if (props.formMode === 'add')
+ setEvents((prevEvents) => [...prevEvents, { ...values }]);
+
+ // edit event data from context
+ if (props.formMode === 'edit')
+ setEvents((prevEvents) => [
+ ...prevEvents.filter((pe) => pe.id !== values.id),
+ { ...values },
+ ]);
};
const cancelForm = () => {