From 1dcc917825db5216a4d73444aba3cb9d25f09a4f Mon Sep 17 00:00:00 2001 From: Ceda EI Date: Tue, 24 Mar 2020 23:47:54 +0530 Subject: [PATCH] Redo HomeScreen with DataTable. Add Remove in Dialog. Add remove reducer --- components/Timetable.js | 3 +- components/timetable/HomeScreen.js | 96 +++++++++++++++++++++++++----- reducers/timetable.js | 2 + 3 files changed, 86 insertions(+), 15 deletions(-) diff --git a/components/Timetable.js b/components/Timetable.js index f8df02d..2f4ac5c 100644 --- a/components/Timetable.js +++ b/components/Timetable.js @@ -10,7 +10,7 @@ import AddEntry from "./timetable/AddEntry"; const Stack = createStackNavigator(); -export default function Timetable({ addTimetableEntry, timetable, subjects }) { +export default function Timetable({ addTimetableEntry, removeTimetableEntry, timetable, subjects }) { const days = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]; return ( @@ -21,6 +21,7 @@ export default function Timetable({ addTimetableEntry, timetable, subjects }) { timetable={timetable} subjects={subjects} days={days} + removeTimetableEntry={removeTimetableEntry} /> )} diff --git a/components/timetable/HomeScreen.js b/components/timetable/HomeScreen.js index 6b23272..4cb0b76 100644 --- a/components/timetable/HomeScreen.js +++ b/components/timetable/HomeScreen.js @@ -1,15 +1,17 @@ -import React from "react"; +import React, { useState } from "react"; import PropTypes from "prop-types"; import { + Button, IconButton, Card, - Text, + DataTable, + Dialog, + Portal, withTheme, } from "react-native-paper"; import { - View, StyleSheet, ScrollView } from "react-native"; @@ -27,8 +29,9 @@ function sortTimes(t1, t2) { return 0; } -function HomeScreen({ theme, timetable, subjects, navigation, days }) { - return ( +function HomeScreen({ days, navigation, removeTimetableEntry, subjects, theme, timetable }) { + const [ dialog, setDialog ] = useState({ show: false, id: null }); + return ( {timetable.map((day, dayIdx) => ( - {[...day].sort((i, j) => sortTimes(i.start, j.start)).map((cls, idx) => { - const subject = subjects.find(i => i.id === cls.sub_id); - return ( - {format(cls.start, "HH:mm")} to {format(cls.end, "HH:mm")} - {subject.name} - {cls.count} - ); - })} + + + + Course + + + From + + + To + + + Count + + + {[...day].sort((i, j) => sortTimes(i.start, j.start)).map((cls, idx) => { + const subject = subjects.find(i => i.id === cls.sub_id); + return ( + setDialog({ show: true, id: cls.id })} + > + + {subject.name} + + + {format(cls.start, "HH:mm")} + + + {format(cls.end, "HH:mm")} + + + {cls.count} + + + ); + })} + ))} - ); + + setDialog({ show: false, id: null })}> + Remove Entry? + + + + + + + ); } HomeScreen.propTypes = { @@ -68,6 +135,7 @@ HomeScreen.propTypes = { navigation: PropTypes.object, days: PropTypes.array, theme: PropTypes.object, + removeTimetableEntry: PropTypes.func, }; const style = StyleSheet.create({ diff --git a/reducers/timetable.js b/reducers/timetable.js index 70e175e..316e3ce 100644 --- a/reducers/timetable.js +++ b/reducers/timetable.js @@ -22,6 +22,8 @@ export default function timetable(state, action) { }], ...(state.slice(action.day + 1)) ]; + case "REMOVE_TIMETABLE_ENTRY": + return state.map(i => i.filter(j => j.id !== action.id)); default: return state; }