From 1d985ba8711712e08f8c33cece74dee57d1495ac Mon Sep 17 00:00:00 2001 From: kerv14 Date: Tue, 12 Mar 2024 10:38:21 +0000 Subject: [PATCH] reusable component for get geocode --- docs/src/components/Demos/getGeocode.tsx | 81 ++++++++++++++++++++++++ docs/src/components/Demos/index.tsx | 15 +++++ 2 files changed, 96 insertions(+) create mode 100644 docs/src/components/Demos/getGeocode.tsx diff --git a/docs/src/components/Demos/getGeocode.tsx b/docs/src/components/Demos/getGeocode.tsx new file mode 100644 index 00000000..354f6092 --- /dev/null +++ b/docs/src/components/Demos/getGeocode.tsx @@ -0,0 +1,81 @@ +import React, { useState } from "react"; +import styles from "./styles.module.css"; + +interface PostcodeLookupProps { + endpointTemplate: string; + headingText: string; + longPlaceholder: string; + latPlaceholder: string; +} + +const GetGeocode: React.FC = ({ + endpointTemplate, + headingText, + longPlaceholder, + latPlaceholder, +}) => { + const [longitude, setLongitude] = useState(""); + const [latitude, setLatitude] = useState(""); + const [apiResult, setApiResult] = useState(""); + const [hasSearched, setHasSearched] = useState(false); + const [fullEndpoint, setFullEndpoint] = useState(""); + + const handleLongitudeChange = (e: React.ChangeEvent) => { + setLongitude(e.target.value); + }; + + const handleLatitudeChange = (e: React.ChangeEvent) => { + setLatitude(e.target.value); + }; + + const fetchPostcodeData = async () => { + const encodedLongitude = encodeURIComponent(longitude); + const encodedLatitude = encodeURIComponent(latitude); + const endpoint = `https://${endpointTemplate}?lon=${encodedLongitude}&lat=${encodedLatitude}`; + setFullEndpoint(endpoint); + try { + const response = await fetch(endpoint); + const data = await response.json(); + setApiResult(JSON.stringify(data, null, 2)); + setHasSearched(true); + console.log(endpoint); + } catch (error) { + setHasSearched(true); + } + }; + + return ( +
+
+

{headingText}

+
+ GET +

{endpointTemplate}?lon=

+ +

&lat=

+ + +
+ {hasSearched && ( +
+
{apiResult}
+
+ )} +
+
+ ); +}; + +export default GetGeocode; diff --git a/docs/src/components/Demos/index.tsx b/docs/src/components/Demos/index.tsx index 65672b1a..2c83f0a5 100644 --- a/docs/src/components/Demos/index.tsx +++ b/docs/src/components/Demos/index.tsx @@ -3,6 +3,7 @@ import Heading from "@theme/Heading"; import styles from "./styles.module.css"; import GetPostcode from "./getPostcode"; import PostMethod from "./postMethod"; +import GetGeocode from "./getGeocode"; export default function HomepageDemos(): JSX.Element { return ( @@ -25,6 +26,13 @@ export default function HomepageDemos(): JSX.Element { endpoint="api.postcodes.io/postcodes" /> + + + +