Skip to content

Instantly share code, notes, and snippets.

import React from "react"
import { useRecoilValueLoadable, useRecoilValue } from "recoil"
import { mapboxToken } from "../../mapbox-token"
import { countriesQuery, currentDateStatusState } from "../../state/api"
import DataMap from "./DataMap"
import LoadingIndicator from "../ui/LoadingIndicator"
import { currentStatState } from "../../state/app"
import React from "react"
import DeckGLMap from "./DeckGLMap"
import { ScatterplotLayer } from "@deck.gl/layers"
const DataMap = ({ mapboxToken = "", data = [], dotCoordinates = "coordinates", displayStat = "cases" }) => {
const scatterplotLayer = new ScatterplotLayer({
id: "scatterplot-layer",
data,
stroked: false,
filled: true,
import React from "react"
import { useRecoilValueLoadable } from "recoil"
import { mapboxToken } from "../../mapbox-token"
import { countriesQuery, currentDateStatusState } from "../../state/api"
import DataMap from "./DataMap"
import LoadingIndicator from "../ui/LoadingIndicator"
import React from "react"
import styled from "styled-components"
import { useRecoilState } from "recoil"
import { currentStatState, availableStats } from "../../state/app"
const StyledCurrentStatSelect = styled("div")`
display: flex;
flex-flow: column;
align-items: center;
position: absolute;
import { selector, atom } from "recoil"
import { isAfter, isBefore } from "date-fns"
export const CASES = "cases"
export const DEATHS = "deaths"
export const RECOVERED = "recovered"
export const availableStats = [CASES, DEATHS, RECOVERED]
export const currentStatState = atom({
import { selector, selectorFamily, waitForNone } from "recoil"
import { format, subDays, differenceInCalendarDays } from "date-fns"
import { currentDateState, DATE_RANGE } from "../app"
export const API_DATE_FORMAT = "yyyy-MM-dd"
export const countriesQuery = selector({
key: "countries",
get: async () => {
try {
import React from "react"
import styled from "styled-components"
import { useRecoilState } from "recoil"
import { currentDateState, DATE_RANGE } from "../../state/app"
import { differenceInCalendarDays, addDays } from "date-fns"
const StyledTimeTravelSlider = styled("div")`
display: flex;
flex-flow: column;
align-items: center;
import React from "react"
import styled from "styled-components"
import { useRecoilState } from "recoil"
import { currentDateState, DATE_RANGE } from "../../state/app"
import { addDays, subDays, format } from "date-fns"
import Button from "../ui/Button"
const StyledTimeTravelButtons = styled("div")`
display: flex;
flex-flow: column;
import React from "react"
import styled from "styled-components"
const StyledButton = styled("button")`
display: flex;
flex-flow: row nowrap;
align-items: center;
justify-content: center;
background-color: #4299e1;
color: #bee3f8;
import { selector, atom } from "recoil"
import { isAfter, isBefore } from "date-fns"
export const DATE_RANGE = [new Date("10 Jan 2020"), new Date()]
const dateState = atom({
key: "date-state",
default: DATE_RANGE[1],
})