From dd454eea6a23b98fc29d4c4b013af0f6606f375d Mon Sep 17 00:00:00 2001 From: Brendan Date: Mon, 16 Mar 2020 17:45:39 -0400 Subject: [PATCH 1/2] Only took 3 hours. Take that code climate! --- src/components/AdminDash/AdminDashboard.js | 4 +- src/components/AdminDash/Table/DataMap.js | 82 +++++-------------- src/components/AdminDash/Table/Table.js | 2 +- .../userDash/Training/TrainStyle.js | 16 ++-- .../userDash/Training/TrainingTwo.js | 3 +- 5 files changed, 36 insertions(+), 71 deletions(-) diff --git a/src/components/AdminDash/AdminDashboard.js b/src/components/AdminDash/AdminDashboard.js index bd16ac5..257705b 100644 --- a/src/components/AdminDash/AdminDashboard.js +++ b/src/components/AdminDash/AdminDashboard.js @@ -25,8 +25,8 @@ export default function Distance(props) { diff --git a/src/components/AdminDash/Table/DataMap.js b/src/components/AdminDash/Table/DataMap.js index 4daad77..e8c39fc 100644 --- a/src/components/AdminDash/Table/DataMap.js +++ b/src/components/AdminDash/Table/DataMap.js @@ -3,65 +3,25 @@ import families from '../AdminDashPics/fosterFamily.png' export default function mapping(props) { const rows = [] - - props.Data.map(people => { - if (people.match_name === undefined) { - rows.push({ - name: `${people.first_name}, ${people.last_name}`, - type: neighbors, - match: 'none', - city: people.city, - id: people.neighbor_id, - userType: 'neighbor', - application: true, - background: people.background, - training: people.training, - email: people.email, - phone: people.phone, - }) - } else { - rows.push({ - name: `${people.first_name}, ${people.last_name}`, - type: 'family', - match: 'none', - city: people.city, - userType: 'neighbor', - application: true, - background: people.background, - training: people.training, - }) - } - return rows - }) - - props.Data2.map(people => { - if (people.match_name === undefined) { - rows.push({ - name: `${people.first_name}, ${people.last_name}`, - type: families, - match: 'none', - city: people.city, - id: people.family_id, - userType: 'family', - application: true, - background: people.background, - training: people.training, - email: people.email, - phone: people.phone, - }) - } else { - rows.push({ - name: `${people.first_name}, ${people.last_name}`, - type: 'neighbor', - match: 'none', - city: people.city, - userType: 'family', - application: true, - background: people.background, - training: people.training, - }) - } - return rows - }) + function TableRowData(DataSet, Type, Picture, id) { + DataSet.map(data => { + rows.push({ + name: `${data.first_name}, ${data.last_name}`, + type: Picture, + match: 'none', + city: data.city, + userType: Type, + application: true, + background: data.background, + training: data.training, + email: data.email, + phone: data.phone, + neighbor_id: data.neighbor_id, + family_id: data.family_id + }) + }) + } + TableRowData(props.Neighbors, 'neighbor', neighbors) + TableRowData(props.Families, 'family', families) return rows -} +} \ No newline at end of file diff --git a/src/components/AdminDash/Table/Table.js b/src/components/AdminDash/Table/Table.js index 0617865..6962024 100644 --- a/src/components/AdminDash/Table/Table.js +++ b/src/components/AdminDash/Table/Table.js @@ -49,7 +49,7 @@ export default function Table( { columns, data, props }) { {row.cells.map(cell => { return ( - props.props.history.push(`/${cell.row.original.userType}/${cell.row.original.id}`)}{...cell.getCellProps()}>{cell.render('Cell')} + props.props.history.push(cell.row.original.family_id ? `/${cell.row.original.userType}/${cell.row.original.family_id}` : `/${cell.row.original.userType}/${cell.row.original.neighbor_id}` )}{...cell.getCellProps()}>{cell.render('Cell')} ) })} diff --git a/src/components/userDash/Training/TrainStyle.js b/src/components/userDash/Training/TrainStyle.js index 603b382..91966c3 100644 --- a/src/components/userDash/Training/TrainStyle.js +++ b/src/components/userDash/Training/TrainStyle.js @@ -65,16 +65,22 @@ export const Cards = styled.div` .closed { color: red; } - #open { - flex-direction: column; - } &:hover { .img { transform: rotate(90deg); transition: transform 300ms ease-in-out; } - background-color: #253b44; - color: #ff8d86; + background-color: #C0C0C0; + color: blue; + } + .open { + flex-direction: column; + background-color: white; + color: black; + &:hover { + background-color: white; + color: black; + } } ` export const Arrow = styled.img` diff --git a/src/components/userDash/Training/TrainingTwo.js b/src/components/userDash/Training/TrainingTwo.js index a815a5b..885d22a 100644 --- a/src/components/userDash/Training/TrainingTwo.js +++ b/src/components/userDash/Training/TrainingTwo.js @@ -116,7 +116,7 @@ export default function TrainingTwo(props) { we can provide clarity. * - + {section == 1 ? ( -
From cd3ef4cb4ac0c94fab81f5deba34d6b2f6eaa474 Mon Sep 17 00:00:00 2001 From: Brendan Date: Mon, 23 Mar 2020 03:05:04 -0400 Subject: [PATCH 2/2] hehehe --- package.json | 4 + src/App.js | 6 +- src/components/AdminDash/Map/EggLocations.js | 50 +++ src/components/AdminDash/Map/EggMarker.js | 20 + src/components/AdminDash/Map/EggStyle.js | 16 + src/components/AdminDash/Map/FamilyMarker.js | 53 +++ src/components/AdminDash/Map/Locations.js | 72 +++- src/components/AdminDash/Map/Map.js | 112 +++-- src/components/AdminDash/Map/MapFilters.js | 408 ++++++++++++++++++ src/components/AdminDash/Map/MapOverlay.js | 19 + src/components/AdminDash/Map/MapStyles.js | 82 ++++ src/components/AdminDash/Map/Marker.js | 24 -- .../AdminDash/Map/NeighborMarker.js | 51 +++ src/components/AdminDash/Map/PersonInfo.js | 22 + .../AdminDash/Map/mapicons/Vector.png | Bin 0 -> 25030 bytes .../AdminDash/Map/mapicons/email.png | Bin 0 -> 11264 bytes .../AdminDash/Map/{ => mapicons}/f.png | Bin .../AdminDash/Map/mapicons/form.png | Bin 0 -> 337 bytes .../AdminDash/Map/mapicons/home-building.png | Bin 0 -> 11268 bytes .../AdminDash/Map/mapicons/phone.png | Bin 0 -> 12545 bytes .../AdminDash/Map/mapicons/together.png | Bin 0 -> 778 bytes src/components/AdminDash/Table/Table.js | 124 +++--- src/components/AdminDash/ThankYou/Thankyou.js | 39 ++ .../AdminDash/ThankYou/ThankyouStyle.js | 56 +++ src/components/AdminDash/ThankYou/bianca.jpg | Bin 0 -> 114886 bytes src/components/AdminDash/ThankYou/frantz.png | Bin 0 -> 322055 bytes src/components/AdminDash/ThankYou/jarrod.jpg | Bin 0 -> 64293 bytes src/components/AdminDash/ThankYou/marc.jpg | Bin 0 -> 58909 bytes .../AdminDash/ThankYou/michelangelo.jpg | Bin 0 -> 131121 bytes src/components/AdminDash/ThankYou/stacy.jpg | Bin 0 -> 31436 bytes src/components/AdminDash/ThankYou/steve.png | Bin 0 -> 373627 bytes src/components/AdminDash/ThankYou/sunrise.mp4 | Bin 0 -> 10965831 bytes src/components/Chat/Chat/Chat.js | 89 ++++ src/components/Chat/Chat/ChatStyle.js | 68 +++ src/components/Chat/InfoBar/InfoBar.js | 21 + src/components/Chat/InfoBar/InfoStyle.js | 25 ++ src/components/Chat/Input/Input.js | 19 + src/components/Chat/Input/InputStyle.js | 25 ++ src/components/Chat/Messages/Message.js | 35 ++ src/components/Chat/Messages/MessageStyles.js | 59 +++ src/components/Chat/Messages/Messages.css | 5 + src/components/Chat/Messages/Messages.js | 15 + src/components/Chat/icons/closeIcon.png | Bin 0 -> 182 bytes src/components/Chat/icons/onlineIcon.png | Bin 0 -> 146 bytes src/components/Training/Module3/text.json | 0 src/components/userDash/NeighborProfile.js | 1 + 46 files changed, 1385 insertions(+), 135 deletions(-) create mode 100644 src/components/AdminDash/Map/EggLocations.js create mode 100644 src/components/AdminDash/Map/EggMarker.js create mode 100644 src/components/AdminDash/Map/EggStyle.js create mode 100644 src/components/AdminDash/Map/FamilyMarker.js create mode 100644 src/components/AdminDash/Map/MapFilters.js create mode 100644 src/components/AdminDash/Map/MapOverlay.js create mode 100644 src/components/AdminDash/Map/MapStyles.js delete mode 100644 src/components/AdminDash/Map/Marker.js create mode 100644 src/components/AdminDash/Map/NeighborMarker.js create mode 100644 src/components/AdminDash/Map/PersonInfo.js create mode 100644 src/components/AdminDash/Map/mapicons/Vector.png create mode 100644 src/components/AdminDash/Map/mapicons/email.png rename src/components/AdminDash/Map/{ => mapicons}/f.png (100%) create mode 100644 src/components/AdminDash/Map/mapicons/form.png create mode 100644 src/components/AdminDash/Map/mapicons/home-building.png create mode 100644 src/components/AdminDash/Map/mapicons/phone.png create mode 100644 src/components/AdminDash/Map/mapicons/together.png create mode 100644 src/components/AdminDash/ThankYou/Thankyou.js create mode 100644 src/components/AdminDash/ThankYou/ThankyouStyle.js create mode 100644 src/components/AdminDash/ThankYou/bianca.jpg create mode 100644 src/components/AdminDash/ThankYou/frantz.png create mode 100644 src/components/AdminDash/ThankYou/jarrod.jpg create mode 100644 src/components/AdminDash/ThankYou/marc.jpg create mode 100644 src/components/AdminDash/ThankYou/michelangelo.jpg create mode 100644 src/components/AdminDash/ThankYou/stacy.jpg create mode 100644 src/components/AdminDash/ThankYou/steve.png create mode 100644 src/components/AdminDash/ThankYou/sunrise.mp4 create mode 100644 src/components/Chat/Chat/Chat.js create mode 100644 src/components/Chat/Chat/ChatStyle.js create mode 100644 src/components/Chat/InfoBar/InfoBar.js create mode 100644 src/components/Chat/InfoBar/InfoStyle.js create mode 100644 src/components/Chat/Input/Input.js create mode 100644 src/components/Chat/Input/InputStyle.js create mode 100644 src/components/Chat/Messages/Message.js create mode 100644 src/components/Chat/Messages/MessageStyles.js create mode 100644 src/components/Chat/Messages/Messages.css create mode 100644 src/components/Chat/Messages/Messages.js create mode 100644 src/components/Chat/icons/closeIcon.png create mode 100644 src/components/Chat/icons/onlineIcon.png create mode 100644 src/components/Training/Module3/text.json diff --git a/package.json b/package.json index cf7c27c..6596479 100644 --- a/package.json +++ b/package.json @@ -15,16 +15,20 @@ "node-sass": "^4.13.1", "react": "^16.13.0", "react-animated-slider": "^2.0.0", + "react-animations": "^1.0.0", "react-dom": "^16.13.0", + "react-emoji": "^0.5.0", "react-ga": "^2.7.0", "react-map-gl": "^5.2.3", "react-player": "^1.15.2", "react-redux": "^7.2.0", "react-router-dom": "^5.1.2", "react-scripts": "^3.4.0", + "react-scroll-to-bottom": "^1.3.2", "react-stepper-horizontal": "^1.0.11", "react-table": "^7.0.0-rc.16", "sass": "^1.26.2", + "socket.io-client": "^2.3.0", "styled-components": "^5.0.1", "styled-normalize": "^8.0.7", "video-react": "^0.14.1", diff --git a/src/App.js b/src/App.js index 7cda739..871a58d 100644 --- a/src/App.js +++ b/src/App.js @@ -10,7 +10,7 @@ import { initGA, PageView } from './utils/analytics' import FamilyProfile from './components/UserDash/FamilyProfile' import NeighborProfile from './components/UserDash/NeighborProfile' import { PrivateRoute } from './utils/customRoutes' -import Map from './components/AdminDash/Map/Map' +import Map from './components/AdminDash/Map/MapOverlay' // temporary sign up confirmation, will be replaced with user dashboard import ConfirmationPage from './components/signUpForm/ConfirmationPage/ConfirmationPage' import SegmentOne from './components/UserDash/Training/SegmentOne' @@ -18,6 +18,8 @@ import Letter from './components/UserDash/Training/Letter' import SegmentTwo from './components/UserDash/Training/TrainingTwo' import SegmentThree from './components/UserDash/Training/TrainPart3' import SegmentFour from './components/UserDash/Training/TrainingPartFour' +import Chat from './components/Chat/Chat/Chat' +import ThankYou from './components/AdminDash/ThankYou/Thankyou' function App() { useEffect(() => { initGA('UA-159166357-1') @@ -27,6 +29,8 @@ function App() { <> + + diff --git a/src/components/AdminDash/Map/EggLocations.js b/src/components/AdminDash/Map/EggLocations.js new file mode 100644 index 0000000..36234ef --- /dev/null +++ b/src/components/AdminDash/Map/EggLocations.js @@ -0,0 +1,50 @@ +export const EggLocations = [ + { + id: 1, + latitude: -80, + longitude: 3, + name: 'Riddle 1', + address: "What rock group has four men that don't sing?", + email: '???', + phone: '???', + match: false, + }, + { + id: 2, + latitude: 43.8791, + longitude: -103.4591, + name: 'Riddle 2', + address: 'NICE JOB KEEP GOING!', + email: 'In what city was the first skyscraper built?', + phone: '???', + match: false, + }, + { + id: 3, + latitude: 41.8781, + longitude: -87.6298, + name: 'Riddle 3', + address: 'NICE JOB ALMOST THERE!', + email: 'In what city were the 2002 Olymipcs held?', + phone: '???', + match: false, + }, + { + id: 4, + latitude: 33.749, + longitude: -84.388, + name: 'Riddle 4', + address: 'LAST ONE!!!', + email: 'In what city was the oldest College in the USA founded?', + phone: '???', + match: false, + }, + { + id: 5, + latitude: 42.377, + longitude: -71.1167, + name: 'You did it!!!', + address: ' CLICK ME!!!', + match: false, + }, +] diff --git a/src/components/AdminDash/Map/EggMarker.js b/src/components/AdminDash/Map/EggMarker.js new file mode 100644 index 0000000..49468bd --- /dev/null +++ b/src/components/AdminDash/Map/EggMarker.js @@ -0,0 +1,20 @@ +import React, { useState, useEffect } from 'react' +import {Egg} from './EggStyle' +import { useHistory } from "react-router-dom"; + + +export default function FamMark(props) { + const history = useHistory(); + +function handleClick(){ + if(props.eggStep === 4){ + history.push('/lambda') + } + props.setSelected(props.location) + props.setEgg(props.eggStep + 1) +} + + return ( + handleClick()}/> + ) +} diff --git a/src/components/AdminDash/Map/EggStyle.js b/src/components/AdminDash/Map/EggStyle.js new file mode 100644 index 0000000..668b502 --- /dev/null +++ b/src/components/AdminDash/Map/EggStyle.js @@ -0,0 +1,16 @@ +import styled from 'styled-components' + +export const Egg = styled.div` +position: relative; +top: -22px; +left: -20px; +width: 45px; +height: 45px; +borderRadius: 50px; +&:hover{ + width: 25px; + height: 25px; + background: green; +} +} +` diff --git a/src/components/AdminDash/Map/FamilyMarker.js b/src/components/AdminDash/Map/FamilyMarker.js new file mode 100644 index 0000000..6d1cf50 --- /dev/null +++ b/src/components/AdminDash/Map/FamilyMarker.js @@ -0,0 +1,53 @@ +import React, { useState, useEffect } from 'react' +import { set } from 'react-ga' + +export default function FamMark(props) { + const [open, setOpen] = useState(false) + function clicked() { + setOpen(true) + if (open === false) { + props.setSelected(props.location) + } + } + + useEffect(() => { + if (props.location.id === props.selected.id) { + setOpen(true) + } else { + setOpen(false) + } + }, [props.selected]) + + return ( + <> + {!open ? ( +
{ + clicked() + }} + style={{ + width: `${props.zoom * 2}px`, + height: `${props.zoom * 2}px`, + borderRadius: '50%', + backgroundColor: 'blue', + }} + /> + ) : ( +
{ + clicked() + }} + style={{ + position: 'relative', + top: '-22px', + left: '-20px', + width: `${props.zoom * 6}px`, + height: `${props.zoom * 6}px`, + borderRadius: '50%', + backgroundColor: 'blue', + }} + >
+ )} + + ) +} diff --git a/src/components/AdminDash/Map/Locations.js b/src/components/AdminDash/Map/Locations.js index 3438cc8..1eb1d4d 100644 --- a/src/components/AdminDash/Map/Locations.js +++ b/src/components/AdminDash/Map/Locations.js @@ -1,8 +1,68 @@ export const locations = [ - { coords: { lat: 39.99855629395869, lng: -104.74184416996333 }, title:'One'}, - { coords:{ lat: 39.759423, lng: -104.821071 }, title: 'two'}, - { coords:{ lat: 39.7052192687988, lng: -103.988426208496 }, title: 'three'}, - { coords:{ lat: 39.9307081, lng: -104.1434325 }, title: 'four'}, - { coords:{ lat: 39.8084488, lng: -104.2140121 }, title: 'five'}, - { coords:{ lat: 39.8524695, lng: -104.5425407 }, title: 'six'}, + { + id: 1, + latitude: 39.99855629395869, + longitude: -104.74184416996333, + name: 'BOB', + type: 'neighbor', + address: "11111 Street", + email: "one11@email.com", + phone: "377854234", + match: false, + }, + { + id: 2, + latitude: 39.759423, + longitude: -104.821071, + name: 'Fred', + type: 'neighbor', + address: "12222 Street", + email: "one22@email.com", + phone: "134234", + match: true, + }, + { + id: 3, + latitude: 39.7052192687988, + longitude: -103.988426208496, + name: 'Joe', + type: 'neighbor', + address: "13333 Street", + email: "one33@email.com", + phone: "3555534", + match: true, + }, + { + id: 4, + latitude: 39.9307081, + longitude: -104.1434325, + name: 'Mary', + type: 'family', + address: "144444 Street", + email: "one44@email.com", + phone: "37411114234", + match: true, + }, + { + id: 5, + latitude: 39.8084488, + longitude: -104.2140121, + name: 'Sara', + type: 'family', + address: "125555 Street", + email: "one55@email.com", + phone: "374233333734234", + match: false, + }, + { + id: 6, + latitude: 39.8524695, + longitude: -104.5425407, + name: 'Anna', + type: 'family', + address: "1234 Street", + email: "one66@email.com", + phone: "3742313231734234", + match: true + }, ] diff --git a/src/components/AdminDash/Map/Map.js b/src/components/AdminDash/Map/Map.js index 9eccbc2..9e911d8 100644 --- a/src/components/AdminDash/Map/Map.js +++ b/src/components/AdminDash/Map/Map.js @@ -1,53 +1,73 @@ -import React, { useState } from 'react' -import GoogleMapReact from 'google-map-react' -import Marker from './Marker' -import { locations } from './Locations' -import { Map } from 'google-maps-react' +import React, { useState, useEffect } from 'react' +import ReactMapGL, { Marker, Popup } from 'react-map-gl' +import { MapContain } from './MapStyles' +import FamMarker from './FamilyMarker' +import NeighborMarker from './NeighborMarker' +import { EggLocations } from './EggLocations' +import EggMarker from './EggMarker' -const SimpleMap = props => { - const [center, setCenter] = useState({ lat: 39.99, lng: -104.707 }) - const [zoom, setZoom] = useState(11) +function Map(props, { latitude, longitude, refresh }) { + const [zoom, setZoom] = useState() + const [eggStep, setEggStep] = useState(0) + const [viewport, setViewport] = useState({ + latitude: 40, + longitude: -104.7, + zoom: 11, + width: '60vw', + height: '100%', + }) + const [locations, setLocations] = useState(props.locations) + useEffect(() => { + console.log('hi') + setLocations(props.locations) + }, [props]) return ( -
-
- + { + setZoom(viewport.zoom) + setViewport(viewport) + }} > - {locations.map(location => { - return ( - - ) - })} - -
-
+ {locations.map(location => ( + + {location.type === 'neighbor' ? ( + + ) : ( + + )} + + ))} + + + + + ) } -export default SimpleMap +export default Map diff --git a/src/components/AdminDash/Map/MapFilters.js b/src/components/AdminDash/Map/MapFilters.js new file mode 100644 index 0000000..2201620 --- /dev/null +++ b/src/components/AdminDash/Map/MapFilters.js @@ -0,0 +1,408 @@ +import React, { useState, useEffect } from 'react' +import { + FilterDiv, + ButtonHolder, + Header, + Image, + HeaderHolder, +} from './MapStyles' +import { locations } from './Locations' +import { Buttons } from './MapStyles' + + +export default function Filter(props) { + const [typeSelected, setTypeSelected] = useState('All') + const [matchSelected, setMatchSelected] = useState('All') + const [points, setPoints] = useState(locations) + const [completed, setCompleted] = useState('All') + + const neighbors = locations.filter(people => people.type === 'neighbor') + const families = locations.filter(people => people.type === 'family') + const matchedNeighbors = locations.filter( + people => people.type === 'neighbor' && people.match === true + ) + const unmatchedNeighbors = locations.filter( + people => people.type === 'neighbor' && people.match === false + ) + const matchedFamilies = locations.filter( + people => people.type === 'family' && people.match === true + ) + const unmatchedFamilies = locations.filter( + people => people.type === 'family' && people.match === false + ) + const allMatched = locations.filter(people => people.match === true) + const allUnmatched = locations.filter(people => people.match === false) + const allCompleted = locations.filter(people => people.application === true) + const allUncompleted = locations.filter( + people => people.application === false + ) + const uncompletedFamilies = families.filter( + people => people.application === false + ) + const completeFamilies = families.filter( + people => people.application === true + ) + const completeNeighbors = neighbors.filter( + people => people.application === true + ) + + const uncompleteNeighbors = neighbors.filter( + people => people.application === false + ) + + function handleAll() { + setTypeSelected('All') + if (matchSelected === 'All') { + if (completed === 'All') { + setPoints(locations) + } + if (completed === true) { + setPoints(allCompleted) + } + if (completed === false) { + setPoints(allUncompleted) + } + } + if (matchSelected === true) { + setPoints(allMatched) + } + if (matchSelected === false) { + setPoints(allUnmatched) + } + } + function handleFamily() { + setTypeSelected('family') + if (matchSelected === 'All') { + if (completed === false) { + setPoints(uncompletedFamilies) + } + if (completed === true) { + setPoints(completeFamilies) + } + if (completed === 'All') { + setPoints(families) + } + } + if (matchSelected === true) { + setPoints(matchedFamilies) + } + if (matchSelected === false) { + if (completed === 'All') { + setPoints(unmatchedFamilies) + } + if (completed === true) { + setPoints(completeFamilies) + } + if (completed === false) { + setPoints(uncompletedFamilies) + } + } + } + function handleNeighbor() { + setTypeSelected('neighbor') + if (matchSelected === 'All') { + if (completed === false) { + setPoints(uncompleteNeighbors) + } + if (completed === true) { + setPoints(completeNeighbors) + } + if (completed === 'All') { + setPoints(neighbors) + } + } + if (matchSelected === true) { + setPoints(matchedNeighbors) + } + if (matchSelected === false) { + if (completed === 'All') { + setPoints(unmatchedNeighbors) + } + if (completed === true) { + setPoints(completeNeighbors) + } + if (completed === false) { + setPoints(uncompleteNeighbors) + } + } + } + function handleAllMatch() { + setMatchSelected('All') + if (typeSelected === 'All') { + if (completed === 'All') { + setPoints(locations) + } + if (completed === true) { + setPoints(allCompleted) + } + if (completed === false) { + setPoints(allUncompleted) + } + } + if (typeSelected === 'neighbor') { + if (completed === 'All') { + setPoints(neighbors) + } + if (completed === true) { + setPoints(completeNeighbors) + } + if (completed === false) { + setPoints(uncompleteNeighbors) + } + } + if (typeSelected === 'family') { + if (completed === 'All') { + setPoints(families) + } + if (completed === true) { + setPoints(completeFamilies) + } + if (completed === false) { + setPoints(uncompletedFamilies) + } + } + } + function handleMatched() { + setMatchSelected(true) + setCompleted(true) + if (typeSelected === 'All') { + setPoints(allMatched) + } + if (typeSelected === 'neighbor') { + setPoints(matchedNeighbors) + } + if (typeSelected === 'family') { + setPoints(matchedFamilies) + } + } + function handleUnmatched() { + setMatchSelected(false) + if (typeSelected === 'All') { + if (completed === 'All') { + setPoints(allUnmatched) + } + if (completed === true) { + setPoints(allCompleted) + } + if (completed === false) { + setPoints(allUncompleted) + } + } + if (typeSelected === 'neighbor') { + if (completed === 'All') { + setPoints(unmatchedNeighbors) + } + if (completed === true) { + setPoints(unmatchedNeighbors) + } + if (completed === false) { + setPoints(uncompleteNeighbors) + } + } + if (typeSelected === 'family') { + if (completed === 'All') { + setPoints(unmatchedFamilies) + } + if (completed === true) { + setPoints(unmatchedFamilies) + } + if (completed === false) { + setPoints(uncompletedFamilies) + } + } + } + function handleAllCompleted() { + setCompleted('All') + if (typeSelected === 'All') { + if (matchSelected === 'All') { + setPoints(locations) + } + if (matchSelected === true) { + setPoints(allMatched) + } + if (matchSelected === false) { + setPoints(allUnmatched) + } + } + if (typeSelected === 'neighbor') { + if (matchSelected === 'All') { + setPoints(neighbors) + } + if (matchSelected === true) { + setPoints(matchedNeighbors) + } + if (matchSelected === false) { + setPoints(unmatchedNeighbors) + } + } + if (typeSelected === 'family') { + if (matchSelected === 'All') { + setPoints(families) + } + if (matchSelected === true) { + setPoints(matchedFamilies) + } + if (matchSelected === false) { + setPoints(unmatchedFamilies) + } + } + } + function handleCompleted() { + setCompleted(true) + if(matchSelected === 'All'){ + if(typeSelected === 'All'){ + setPoints(allCompleted) + } + if(typeSelected === 'neighbor'){ + setPoints(completeNeighbors) + } + if(typeSelected === 'family'){ + setPoints(completeFamilies) + } + } + if(matchSelected === true){ + if(typeSelected === 'All'){ + setPoints(allMatched) + } + if(typeSelected === 'neighbor'){ + setPoints(matchedNeighbors) + } + if(typeSelected === 'family'){ + setPoints(matchedFamilies) + } + } + if(matchSelected === false){ + if(typeSelected === 'All'){ + setPoints(allUnmatched) + } + if(typeSelected === 'neighbor'){ + setPoints(unmatchedNeighbors) + } + if(typeSelected === 'family'){ + setPoints(unmatchedFamilies) + } + } + } + function handleUncompleted() { + setCompleted(false) + setMatchSelected(false) + if(typeSelected === 'All'){ + setPoints(allUncompleted) + } + if(typeSelected === 'neighbor'){ + setPoints(uncompleteNeighbors) + } + if(typeSelected === 'family'){ + setPoints(uncompletedFamilies) + } + } + useEffect(() => { + props.filter(points) + }, [points]) + + return ( + + + + +
Member Type
+
+ { + handleAll() + }} + > + All + + { + handleFamily() + }} + > + Families + + { + handleNeighbor() + }} + > + Neighbors + +
+ + + + +
Match Status
+
+ { + handleAllMatch() + }} + > + All + + { + handleMatched() + }} + > + Matched + + { + handleUnmatched() + }} + > + Non-Matched + +
+ + + + +
App Status
+
+ { + handleAllCompleted() + }} + > + All + + { + handleCompleted() + }} + > + Complete + + { + handleUncompleted() + }} + > + Incomplete + +
+
+ ) +} diff --git a/src/components/AdminDash/Map/MapOverlay.js b/src/components/AdminDash/Map/MapOverlay.js new file mode 100644 index 0000000..403ce90 --- /dev/null +++ b/src/components/AdminDash/Map/MapOverlay.js @@ -0,0 +1,19 @@ +import React, { useState } from 'react' +import Map from './Map' +import PersonInfo from './PersonInfo' +import MapFilters from './MapFilters' +import { PageContain } from './MapStyles' +import {locations} from './Locations' + +export default function MapThing() { + const [points, setPoints] = useState(locations) + const [selected, setSelected] = useState({}) + + return ( + + + + + + ) +} diff --git a/src/components/AdminDash/Map/MapStyles.js b/src/components/AdminDash/Map/MapStyles.js new file mode 100644 index 0000000..b5e6c86 --- /dev/null +++ b/src/components/AdminDash/Map/MapStyles.js @@ -0,0 +1,82 @@ +import styled from 'styled-components' + +export const FilterDiv = styled.div` +width: 20vw; +height: 100vh; +background-color: F9F9F9; +` + +export const MapContain = styled.div` +height: 100vh; +width: 60vw; +background-color: black; +` + +export const PageContain = styled.div` +display: flex; +` + +export const InfoDiv = styled.div` +width: 20vw; +height: 100vh; +background-color: F9F9F9; +display: flex; +flex-direction: column; +align-items: center; +padding-left: 1%; +padding-top: 2%; +` +export const UserName = styled.div` +font-size:4rem; +padding-top: 2%; +` + +export const IconContain = styled.div` +display: flex; +align-items: center; +justify-content: center; +font-size: 1.2rem; +flex-wrap: wrap; +` + +export const Icon = styled.img` +padding: 5px; +height: 50px; +` + +export const Buttons = styled.button` +width: 80%; +height: 5%; +margin-top: 1%; +background: white; +border: none; +font-size: 3rem; +background-color: ${props => props.selected === props.current ? "#91BCCF" : "white"}; +border: 1px solid black; + +&:hover{ + color: blue; +} +` + +export const ButtonHolder = styled.div` +display: flex; +flex-direction: column; +align-items: center; +margin-top: 2vh; +` + +export const Header = styled.h1` +font-size: 3rem; +` + +export const Image = styled.img` +width: 20%; +` + +export const HeaderHolder = styled.div` +display: flex; +align-items: center; +justify-content: center; +width: 100%; +` \ No newline at end of file diff --git a/src/components/AdminDash/Map/Marker.js b/src/components/AdminDash/Map/Marker.js deleted file mode 100644 index f2149b2..0000000 --- a/src/components/AdminDash/Map/Marker.js +++ /dev/null @@ -1,24 +0,0 @@ -import React from 'react' -import F from './f.png' - -export default function Marker(props) { - const { color, name, id } = props - return ( -
{}} - > - neighbor -
- ) -} diff --git a/src/components/AdminDash/Map/NeighborMarker.js b/src/components/AdminDash/Map/NeighborMarker.js new file mode 100644 index 0000000..de8fa84 --- /dev/null +++ b/src/components/AdminDash/Map/NeighborMarker.js @@ -0,0 +1,51 @@ +import React, { useState, useEffect } from 'react' + +export default function FamMark(props) { + const [open, setOpen] = useState(false) + function clicked() { + setOpen(!open) + if (open === false) { + props.setSelected(props.location) + } + } + useEffect(() => { + if (props.location.id === props.selected.id) { + setOpen(true) + } else { + setOpen(false) + } + }, [props.selected]) + + return ( + <> + {!open ? ( +
{ + clicked() + }} + style={{ + width: `${props.zoom * 2}px`, + height: `${props.zoom * 2}px`, + borderRadius: '50%', + backgroundColor: 'red', + }} + /> + ) : ( +
{ + clicked() + }} + style={{ + position: 'relative', + top: '-22px', + left: '-20px', + width: `${props.zoom * 6}px`, + height: `${props.zoom * 6}px`, + borderRadius: '50%', + backgroundColor: 'red', + }} + >
+ )} + + ) +} diff --git a/src/components/AdminDash/Map/PersonInfo.js b/src/components/AdminDash/Map/PersonInfo.js new file mode 100644 index 0000000..6469617 --- /dev/null +++ b/src/components/AdminDash/Map/PersonInfo.js @@ -0,0 +1,22 @@ +import React, { useState, useEffect } from 'react' +import { InfoDiv, +UserName, +Icon, +IconContain } from './MapStyles' + +export default function Filter(props) { + const [selected, setSelected] = useState('v') + useEffect(() => { + setSelected(props.selected) + }, [props]) + return ( + +

{selected.id}

+ {selected.name} +

{selected.type}

+

{selected.address}

+

{selected.email}

+

{selected.phone}

+
+ ) +} diff --git a/src/components/AdminDash/Map/mapicons/Vector.png b/src/components/AdminDash/Map/mapicons/Vector.png new file mode 100644 index 0000000000000000000000000000000000000000..6b5d2aa4a41461eb06069217d207924137aa7916 GIT binary patch literal 25030 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 IPTPn657f@otpET3 literal 0 HcmV?d00001 diff --git a/src/components/AdminDash/Map/mapicons/email.png b/src/components/AdminDash/Map/mapicons/email.png new file mode 100644 index 0000000000000000000000000000000000000000..5c71c356a7822a10790ab47d639c48875ada6fcb GIT binary patch literal 11264 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 literal 0 HcmV?d00001 diff --git a/src/components/AdminDash/Map/mapicons/phone.png b/src/components/AdminDash/Map/mapicons/phone.png new file mode 100644 index 0000000000000000000000000000000000000000..c85139a4faa39c6ca03d17fef85d929d70890418 GIT binary patch literal 12545 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 Mx~i6a0sruS0mRufuK)l5 literal 0 HcmV?d00001 diff --git a/src/components/AdminDash/Map/mapicons/together.png b/src/components/AdminDash/Map/mapicons/together.png new file mode 100644 index 0000000000000000000000000000000000000000..3761d135bc60d013a9e65074c36028358182563c GIT binary patch literal 778 zcmV+l1NHogP)8RjE`yZEtTs?C@FR&HUdwnAf6)_rCT?0cee?+3zOYJoL!C$@q?h7&43B0131M59 z_kgKX>fLZSlzD?phsG=^)c3`x7mQJjQ(P{W&tkF6wyG@4cb!h>hL7nKSEx3|j*gCe zZns-u0_dJVo6TmW2KjdJR-uKGs8XWty{Q=Z}VT+77N=}U)cZ+)6Gwk-%uFXjZz8Jz30#t% zr?ABS+#>!J|M{Rij&Gic - - - {headerGroups.map(headerGroup => ( - - {headerGroup.headers.map(column => ( - - ))} + return ( + +
- {column.render("Header")} - - {column.isSorted - ? column.isSortedDesc - ? " 🔽" - : " 🔼" - : ""} - -
+ + {headerGroups.map(headerGroup => ( + + {headerGroup.headers.map(column => ( + + ))} + + ))} + + + {firstPageRows.map(row => { + prepareRow(row) + return ( + + {row.cells.map(cell => { + return ( + + ) + })} - ))} - - - {firstPageRows.map( - row => { - prepareRow(row); - return ( - - {row.cells.map(cell => { - return ( - - ) - })} - - ) - } - )} - -
+ {column.render('Header')} + + {column.isSorted + ? column.isSortedDesc + ? ' 🔽' + : ' 🔼' + : ''} + +
+ props.props.history.push( + cell.row.original.family_id + ? `/${cell.row.original.userType}/${cell.row.original.family_id}` + : `/${cell.row.original.userType}/${cell.row.original.neighbor_id}` + ) + } + {...cell.getCellProps()} + > + {cell.render('Cell')} +
props.props.history.push(cell.row.original.family_id ? `/${cell.row.original.userType}/${cell.row.original.family_id}` : `/${cell.row.original.userType}/${cell.row.original.neighbor_id}` )}{...cell.getCellProps()}>{cell.render('Cell')}
-
- - ); - } \ No newline at end of file + ) + })} + + +
+ + ) +} diff --git a/src/components/AdminDash/ThankYou/Thankyou.js b/src/components/AdminDash/ThankYou/Thankyou.js new file mode 100644 index 0000000..d9ad885 --- /dev/null +++ b/src/components/AdminDash/ThankYou/Thankyou.js @@ -0,0 +1,39 @@ +import React from 'react' +import { Video, Card, Page, Image, Header, ImageContain, Name } from './ThankyouStyle' + +export default function ThankYou() { + return ( + <> +