From 03e8ad00e6ac6385b44f5f9a5a7afe641e2777fb Mon Sep 17 00:00:00 2001 From: Khalim Conn-Kowlessar Date: Fri, 15 Sep 2023 10:46:56 +0100 Subject: [PATCH] working on due considerations ui --- src/app/components/Navbar.tsx | 1 + .../due-considerations/SelectFolder.tsx | 48 ++++++++++++++ src/app/db/db.ts | 2 + src/app/due-considerations/page.tsx | 66 +++++++++++++++++++ 4 files changed, 117 insertions(+) create mode 100644 src/app/components/due-considerations/SelectFolder.tsx create mode 100644 src/app/due-considerations/page.tsx diff --git a/src/app/components/Navbar.tsx b/src/app/components/Navbar.tsx index 256b75d..2ee38b2 100644 --- a/src/app/components/Navbar.tsx +++ b/src/app/components/Navbar.tsx @@ -42,6 +42,7 @@ function Nav({ userImage }: { userImage: string }) {
{makeLink("/home", "Home")} + {makeLink("/due-considerations", "Due Considerations")} {makeLink("/help", "Help")}
diff --git a/src/app/components/due-considerations/SelectFolder.tsx b/src/app/components/due-considerations/SelectFolder.tsx new file mode 100644 index 0000000..a13c458 --- /dev/null +++ b/src/app/components/due-considerations/SelectFolder.tsx @@ -0,0 +1,48 @@ +"use client"; + +import { Input } from "@/app/shadcn_components/ui/input"; +import { Label } from "@/app/shadcn_components/ui/label"; + +export function SelectFolder({ + handleButtonDisabled, + setUploadMessage, + setFile, +}: { + handleButtonDisabled: (file?: File[]) => void; + setUploadMessage: (message: string) => void; + setFile: (file: File[]) => void; +}) { + function handleOnChange(e: React.ChangeEvent) { + if (e.target.files && e.target.files.length === 3) { + const files = Array.from(e.target.files); + const extensions = files.map((file) => + file.name.split(".").pop()?.toLowerCase() + ); + + if ( + extensions.includes("xml") && + extensions.includes("pdf") && + extensions.includes("docx") + ) { + setFile(files); // You would need to update setFile to accept an array of files + handleButtonDisabled(files); // Similarly, update handleButtonDisabled to work with multiple files + } else { + setUploadMessage("Please select a .xml, .pdf, and .docx file."); + } + } else { + setUploadMessage("Please select exactly 3 files."); + } + } + + return ( + + ); +} diff --git a/src/app/db/db.ts b/src/app/db/db.ts index ebe2cc2..d743f7e 100644 --- a/src/app/db/db.ts +++ b/src/app/db/db.ts @@ -12,6 +12,8 @@ export const pool = new Pool({ user: process.env.DB_USERNAME, password: process.env.DB_PASSWORD, database: process.env.DB_NAME, + max: 20, + idleTimeoutMillis: 30000, }); const schema = { diff --git a/src/app/due-considerations/page.tsx b/src/app/due-considerations/page.tsx new file mode 100644 index 0000000..04f2668 --- /dev/null +++ b/src/app/due-considerations/page.tsx @@ -0,0 +1,66 @@ +"use client"; + +import { useState } from "react"; +import { SelectFolder } from "../components/due-considerations/SelectFolder"; +import { Button } from "../shadcn_components/ui/button"; + +export default function DueConsiderationsHome() { + const [file, setFile] = useState([]); + const [buttonDisabled, setButtonDisabled] = useState(true); + const [uploadMessage, setUploadMessage] = useState(""); + + function handleButtonDisabled(files?: File[]) { + if (files && files.length === 3) { + const extensions = files.map((file) => + file.name.split(".").pop()?.toLowerCase() + ); + + if ( + extensions.includes("xml") && + extensions.includes("pdf") && + extensions.includes("docx") + ) { + setButtonDisabled(false); + } else { + setUploadMessage("Please select a .xml, .pdf, and .docx file."); + setButtonDisabled(true); + } + } else { + setUploadMessage("Please select exactly 3 files."); + setButtonDisabled(true); + } + } + + return ( +
+
+
Select a folder containing:
+
    +
  • A full SAP xml
  • +
  • EPR pdf
  • +
  • Condition report word document
  • +
+
+ Make sure these documents all relate to the same property +
+ +
+ +
+ +
+
{uploadMessage}
+ +
+
+
+ ); +}