round-summary.component.jsx 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. import React from "react";
  2. import ClickToCopy from "../util/click-to-copy.component";
  3. // TODO eventually we want this to query and show other players
  4. const LabelAndPoint = ({ label, point }) => (
  5. <div>
  6. <span>{label}: </span>
  7. <div style={{display: "inline-flex"}}>
  8. <ClickToCopy text={`${point.lat},${point.lng}`}/>
  9. </div>
  10. </div>
  11. );
  12. export default ({ round, onNext }) => {
  13. const {
  14. roundNum,
  15. selectedPoint,
  16. targetPoint,
  17. score,
  18. totalScore,
  19. } = round;
  20. // TODO determine zoom and center dynamically, or make this a dynamic map
  21. const mapUrl = `https://maps.googleapis.com/maps/api/staticmap?key=AIzaSyCDtEWf192OYuMvd2cp8a04DYQo-RU_sXs`;
  22. const size = `&size=600x400`
  23. const zoom = `&zoom=5`;
  24. const centerOnTarget = `&center=${targetPoint.lat},${targetPoint.lng}`;
  25. const targetMarker = `&markers=color:blue|label:T|${targetPoint.lat},${targetPoint.lng}`;
  26. const selectedMarker = selectedPoint ? `&markers=color:red|label:S|${selectedPoint.lat},${selectedPoint.lng}` : ""
  27. return (
  28. <div style={{
  29. display: "flex",
  30. flexFlow: "column nowrap",
  31. justifyContent: "space-between",
  32. alignItems: "center",
  33. }}>
  34. <img
  35. src={mapUrl + size + zoom + centerOnTarget + targetMarker + selectedMarker}
  36. alt={`Map pointing to ${targetPoint.lat},${targetPoint.lng}`}
  37. />
  38. {selectedPoint ? <LabelAndPoint label="You Selected" point={selectedPoint}/> : <p>Timed out!</p>}
  39. <LabelAndPoint label="Target" point={targetPoint}/>
  40. <span>Score For Round {roundNum}: {score}</span>
  41. <span>Running Total Score: {totalScore}</span>
  42. <button onClick={onNext}>{roundNum === "5" ? "View Summary" : "Next Round"}</button>
  43. </div>
  44. );
  45. };