From 0a1bae1128a66003d5d6a4eb239b45652a25f766 Mon Sep 17 00:00:00 2001 From: Rub21 Date: Mon, 17 Jul 2023 15:54:03 -0500 Subject: [PATCH] Add encode import button --- src/components/EncodeExpImp.js | 25 +++++++++------- src/components/EncodeImport.js | 53 ++++++++++++++++++++++++++++++++++ 2 files changed, 68 insertions(+), 10 deletions(-) create mode 100644 src/components/EncodeImport.js diff --git a/src/components/EncodeExpImp.js b/src/components/EncodeExpImp.js index f8621af..1cc6ed7 100644 --- a/src/components/EncodeExpImp.js +++ b/src/components/EncodeExpImp.js @@ -4,6 +4,7 @@ import { uploadtoS3 } from "./../utils/requests"; import { simplyName, downloadGeojsonFile } from "./../utils/utils"; import { BsChevronDown } from "react-icons/bs"; +import EncodeImport from "./EncodeImport"; export const EncodeExpImp = () => { const { @@ -42,16 +43,20 @@ export const EncodeExpImp = () => { className="relative inline-block" onMouseLeave={() => setIsOpen(false)} // Add this line > - + {encodeItems.length === 0 ? ( + + ) : ( + + )} {isOpen && (
diff --git a/src/components/EncodeImport.js b/src/components/EncodeImport.js new file mode 100644 index 0000000..2ac2488 --- /dev/null +++ b/src/components/EncodeImport.js @@ -0,0 +1,53 @@ +import React, { useContext, useRef, useState } from "react"; +import { MainContext } from "../contexts/MainContext"; + +const EncodeImport = () => { + const { dispatchEncodeItems } = useContext(MainContext); + + const fileInput = useRef(null); + + const handleFileChange = (e) => { + const file = e.target.files[0]; + if (!file) return; + + const reader = new FileReader(); + + reader.onload = (evt) => { + const encodeItems = JSON.parse(evt.target.result); + dispatchEncodeItems({ + type: "CACHING_ENCODED", + payload: encodeItems, + }); + }; + + reader.onerror = () => { + console.error("File reading error"); + }; + + reader.readAsText(file); + }; + + const handleButtonClick = () => { + fileInput.current.click(); + }; + + return ( +
+ + +
+ ); +}; + +export default EncodeImport;