From c140fa72cc806dbfc11bc2d1bfcdb25fb4b978fb Mon Sep 17 00:00:00 2001 From: kozr Date: Sun, 22 Aug 2021 17:31:39 -0700 Subject: [PATCH 1/5] store the page --- constants.js | 1 + pages/[id]/resources.js | 44 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+) create mode 100644 pages/[id]/resources.js diff --git a/constants.js b/constants.js index 8eb245ea..e9796f3e 100644 --- a/constants.js +++ b/constants.js @@ -31,6 +31,7 @@ export const HACKATHON_NAVBAR = { intro: 'Intro', events: 'Events', spocos: 'Sponsors', + resources: 'Resources', FeatureFlags: 'Feature Flags', BuildConfig: 'Build Config', }; diff --git a/pages/[id]/resources.js b/pages/[id]/resources.js new file mode 100644 index 00000000..93274a21 --- /dev/null +++ b/pages/[id]/resources.js @@ -0,0 +1,44 @@ +import { useState, useEffect } from "react"; +import styled from "styled-components"; +import Page from "../../components/page"; +import Card, { CardHeader, CardTitle } from "../../components/card"; +import { getHackathonPaths, getHackathons } from "../../utility/firebase"; +import { HACKATHON_NAVBAR } from "../../constants"; + +export default function Resources({ id, hackathons }) { + return ( + + {id === "www" ? ( + + + WWW + + + ) : ( + + + Not applicable for this website + + + )} + + ); +} + +export const getStaticPaths = async () => { + return getHackathonPaths(); +}; + +export const getStaticProps = async ({ params }) => { + const hackathons = await getHackathons(); + return { + props: { + hackathons, + id: params.id, + }, + }; +}; From 423326dee535da7f29bdaf0cf9744bfa57faaad5 Mon Sep 17 00:00:00 2001 From: kozr Date: Sun, 22 Aug 2021 20:02:49 -0700 Subject: [PATCH 2/5] going out but close to being done --- pages/[id]/resources.js | 245 ++++++++++++++++++++++++++++++++++++++-- 1 file changed, 237 insertions(+), 8 deletions(-) diff --git a/pages/[id]/resources.js b/pages/[id]/resources.js index 93274a21..1d32ca89 100644 --- a/pages/[id]/resources.js +++ b/pages/[id]/resources.js @@ -1,22 +1,99 @@ -import { useState, useEffect } from "react"; -import styled from "styled-components"; -import Page from "../../components/page"; -import Card, { CardHeader, CardTitle } from "../../components/card"; -import { getHackathonPaths, getHackathons } from "../../utility/firebase"; -import { HACKATHON_NAVBAR } from "../../constants"; +import { useState, useEffect } from 'react'; +import styled from 'styled-components'; +import Page from '../../components/page'; +import Button from '../../components/button'; +import Card, { + CardHeader, + CardTitle, + CardContent, + CardButtonContainer, +} from '../../components/card'; +import { + TableWrapper, + TableContent, + TableRow, + TableHeader, + TableData, + ActionsButtonContainer, +} from '../../components/table'; +import Modal, { Label, ModalContent, ModalField } from '../../components/modal'; +import { getHackathonPaths, getHackathons } from '../../utility/firebase'; +import { EDIT, NEW, DELETE, COLOR, HACKATHON_NAVBAR } from '../../constants'; + +const resourceCards = [ + { + title: 'title', + imageUrl: 'https://imageUrl.com', + resourceUrl: 'https://resourceUrl.com', + event: 'event', + year: 1970, + isOurPick: true, + tags: ['tag1'], + }, + { + title: 'title2', + imageUrl: 'imageUrl2', + resourceUrl: 'resourceUrl2', + event: 'event2', + year: 1970, + isOurPick: true, + tags: ['tag2', 'tag3'], + }, +]; export default function Resources({ id, hackathons }) { + const [resourceToEdit, setResourceToEdit] = useState(false); + const [resources, setResources] = useState(resourceCards); + + const addNewResourceCard = () => { + return; + }; + + const handleEdit = (r) => { + setResourceToEdit(r); + }; + + const handleDelete = () => { + return; + }; + return ( - {id === "www" ? ( + {id === 'www' ? ( - WWW + Resources + + + + + + + + + {resources.map((r) => ( + + ))} + + + + + ) : ( @@ -29,6 +106,158 @@ export default function Resources({ id, hackathons }) { ); } +const EditModal = ({ resourceToEdit, setResourceToEdit }) => { + const handleUpdate = () => { + return; + }; + + const handleInput = (property, value, event, setState) => { + setState({ + ...event, + [property]: value, + }); + }; + + return ( + 0} + handleClose={() => setResourceToEdit({})} + handleSave={() => handleUpdate()} + modalAction={EDIT} + > + + { + handleInput( + 'title', + e.target.value, + resourceToEdit, + setResourceToEdit + ); + }} + /> + + + { + handleInput( + 'resourceUrl', + e.target.value, + resourceToEdit, + setResourceToEdit + ); + }} + /> + { + handleInput( + 'imageUrl', + e.target.value, + resourceToEdit, + setResourceToEdit + ); + }} + /> + + + { + handleInput( + 'event', + e.target.value, + resourceToEdit, + setResourceToEdit + ); + }} + /> + { + handleInput( + 'year', + e.target.value, + resourceToEdit, + setResourceToEdit + ); + }} + /> + { + handleInput( + 'isOurPick', + e.target.value, + resourceToEdit, + setResourceToEdit + ); + }} + /> + + + ); +}; + +const CustomTableHeader = () => ( + + + Title + Image Url + Resource Url + Event + Year + Our pick? + Tags + Actions + + +); + +const ResourceRow = ({ handleEdit, handleDelete, ...props }) => { + return ( + + {props.title} + {props.imageUrl} + {props.resourceUrl} + {props.event} + {props.year} + {props.isOurPick.toString()} + {props.tags.toString()} + + +