From 7ae761f767f5f49b608c501ca63bf29463b6464f Mon Sep 17 00:00:00 2001 From: Ishpaul Singh <104348397+ishpaul777@users.noreply.github.com> Date: Thu, 2 Nov 2023 10:19:06 +0000 Subject: [PATCH] added requested changes --- .../[organisationId]/edit/page.tsx | 22 ++--- .../projects/[projectId]/dataset/new/page.tsx | 79 +++++++++++++----- .../projects/[projectId]/edit/page.tsx | 67 ++++----------- .../[organisationId]/projects/new/page.tsx | 62 ++++---------- .../web/app/home/organisations/new/page.tsx | 22 ++--- studio/web/app/home/organisations/page.tsx | 10 ++- studio/web/assets/document.png | Bin 0 -> 8385 bytes .../web/components/ui/feature/searchSql.tsx | 40 ++++++--- 8 files changed, 144 insertions(+), 158 deletions(-) create mode 100644 studio/web/assets/document.png diff --git a/studio/web/app/home/organisations/[organisationId]/edit/page.tsx b/studio/web/app/home/organisations/[organisationId]/edit/page.tsx index f3e2343..2b8a7b1 100644 --- a/studio/web/app/home/organisations/[organisationId]/edit/page.tsx +++ b/studio/web/app/home/organisations/[organisationId]/edit/page.tsx @@ -127,16 +127,6 @@ export default function Page({ params: { organisationId } }: OrgaisationParam) { logo - -
- - - + +
+ + +
diff --git a/studio/web/app/home/organisations/[organisationId]/projects/[projectId]/dataset/new/page.tsx b/studio/web/app/home/organisations/[organisationId]/projects/[projectId]/dataset/new/page.tsx index 0074cdf..67d3eab 100644 --- a/studio/web/app/home/organisations/[organisationId]/projects/[projectId]/dataset/new/page.tsx +++ b/studio/web/app/home/organisations/[organisationId]/projects/[projectId]/dataset/new/page.tsx @@ -1,9 +1,10 @@ "use client"; -import React, { useState } from "react"; +import React, { useRef, useState } from "react"; import { Button } from "@/components/ui/Button"; import { Input } from "@/components/dataEntry/input"; import { Label } from "@/components/dataEntry/label"; import Link from "next/link"; +import Image from "next/image"; import { ProjectParam } from "@/types/params/project_param"; import { CreateFileSchema, createFileSchema } from "@/lib/zod/validators/files"; import axios, { AxiosError } from "axios"; @@ -14,6 +15,10 @@ import { useRouter } from "next/navigation"; import UppyUploader from "@/components/UppyUploader"; import { getServerUrl } from "@/lib/utils/serverUrl"; import { kavachAxiosConfig } from "@/lib/utils/kavachAxiosConfig"; +import UploadImage from "@/assets/uploadImage.png"; +import FileImage from "@/assets/document.png"; +import { Dialog, DialogContent, DialogTrigger } from "@/components/ui/dialog"; +import { title } from "process"; export default function Page({ params: { projectId, organisationId }, @@ -21,12 +26,19 @@ export default function Page({ const { handleSubmit, register, - formState: { errors }, + formState, + getValues } = useForm({ resolver: zodResolver(createFileSchema), }); + const [title, setTitle] = useState(""); const [filename, setFilename] = useState(""); + const [uploadDialogOpen, setUploadDialogOpen] = useState(false) const router = useRouter(); + const {errors} = formState + + const diableAddButton = filename === '' || title === '' + return (
@@ -41,6 +53,7 @@ export default function Page({ id="title" {...register("name")} placeholder="Enter the title" + onChange={(e) => setTitle(e.target.value)} /> {errors.name ? (
@@ -50,28 +63,35 @@ export default function Page({ "" )}
-
- { - setFilename(path); - }} - isDataset={true} - /> +
+ + + +
+ logo + {filename} +
+
+ + { + setFilename(path); + setUploadDialogOpen(false); + }} + isDataset={true} + /> + +
- -
- + +
+
diff --git a/studio/web/app/home/organisations/[organisationId]/projects/[projectId]/edit/page.tsx b/studio/web/app/home/organisations/[organisationId]/projects/[projectId]/edit/page.tsx index 90800c5..e341ca5 100644 --- a/studio/web/app/home/organisations/[organisationId]/projects/[projectId]/edit/page.tsx +++ b/studio/web/app/home/organisations/[organisationId]/projects/[projectId]/edit/page.tsx @@ -4,14 +4,6 @@ import { Button } from "@/components/ui/Button"; import { Input } from "@/components/dataEntry/input"; import { Label } from "@/components/dataEntry/label"; import { Textarea } from "@/components/dataEntry/textarea"; -import { - Select, - SelectContent, - SelectGroup, - SelectItem, - SelectTrigger, - SelectValue, -} from "@/components/ui/select"; import Link from "next/link"; import { useForm } from "react-hook-form"; import { useOrganisationsStore } from "@/lib/zustand/organisation"; @@ -39,6 +31,7 @@ export default function Page({ register, formState: { errors }, setValue, + watch, } = useForm({ resolver: zodResolver(createProjectSchema), }); @@ -94,46 +87,15 @@ export default function Page({ ); } - const currentOrganisation = organisations.find( - (org) => parseInt(org.id) === parseInt(orgId), - ); + const titleValue = watch("title"); + + const disableButton = titleValue === undefined || titleValue === "";`` return (

Edit {project.title}

-
- - -
-
-
- + +
+
diff --git a/studio/web/app/home/organisations/[organisationId]/projects/new/page.tsx b/studio/web/app/home/organisations/[organisationId]/projects/new/page.tsx index 3f06614..0172c3d 100644 --- a/studio/web/app/home/organisations/[organisationId]/projects/new/page.tsx +++ b/studio/web/app/home/organisations/[organisationId]/projects/new/page.tsx @@ -4,14 +4,6 @@ import { Button } from "@/components/ui/Button"; import { Input } from "@/components/dataEntry/input"; import { Label } from "@/components/dataEntry/label"; import { Textarea } from "@/components/dataEntry/textarea"; -import { - Select, - SelectContent, - SelectGroup, - SelectItem, - SelectTrigger, - SelectValue, -} from "@/components/ui/select"; import Link from "next/link"; import { useForm } from "react-hook-form"; import { useOrganisationsStore } from "@/lib/zustand/organisation"; @@ -38,6 +30,7 @@ export default function Page({ handleSubmit, register, formState: { errors }, + watch } = useForm({ resolver: zodResolver(createProjectSchema), }); @@ -60,40 +53,14 @@ export default function Page({ getOrganisations(); }, []); + const watchTitle = watch("title"); + const disableButton = watchTitle === undefined || watchTitle === "" || orgId === undefined || orgId === ""; + return (

Create New Project

-
- - -
-
-
- + +
+
diff --git a/studio/web/app/home/organisations/new/page.tsx b/studio/web/app/home/organisations/new/page.tsx index bed1f8b..c4821d1 100644 --- a/studio/web/app/home/organisations/new/page.tsx +++ b/studio/web/app/home/organisations/new/page.tsx @@ -114,16 +114,6 @@ export default function Page() { - -
- - - + +
+ + +
diff --git a/studio/web/app/home/organisations/page.tsx b/studio/web/app/home/organisations/page.tsx index 8570dd4..8e7109f 100644 --- a/studio/web/app/home/organisations/page.tsx +++ b/studio/web/app/home/organisations/page.tsx @@ -1,5 +1,6 @@ "use client"; import React, { useEffect } from "react"; +import { useRouter } from "next/navigation"; import { SearchBar } from "@/components/ui/searchBar"; import { Organisation } from "../../../components/ui/Organisation"; import { Organisation as OrganisationType } from "@/types/organisation"; @@ -17,6 +18,7 @@ export default function Page() { const [loading, setLoading] = React.useState(true); const { organisations, setOrganisations } = useOrganisationsStore(); const serverUrl = getServerUrl(); + const router = useRouter(); useEffect(() => { async function getOrganisations() { @@ -29,6 +31,10 @@ export default function Page() { ...kavachAxiosConfig, }); setOrganisations(resp.data.organisations); + if (resp.data.organisations.length === 0) { + router.push("/home/organisations/new"); + toast.error("No organisations found. Create a new one"); + } } catch (err) { console.log(err); toast.error("Error getting organisations"); @@ -36,7 +42,7 @@ export default function Page() { setLoading(false); } } - getOrganisations(); + getOrganisations() }, []); const [selectedOrg, setSelectedOrg] = React.useState(null); @@ -57,6 +63,8 @@ export default function Page() { } }; + + return (
diff --git a/studio/web/assets/document.png b/studio/web/assets/document.png new file mode 100644 index 0000000000000000000000000000000000000000..3d2dda926927435d8e0f4da69681f46177de781e GIT binary patch literal 8385 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 literal 0 HcmV?d00001 diff --git a/studio/web/components/ui/feature/searchSql.tsx b/studio/web/components/ui/feature/searchSql.tsx index 8b91254..6e3c0ab 100644 --- a/studio/web/components/ui/feature/searchSql.tsx +++ b/studio/web/components/ui/feature/searchSql.tsx @@ -8,6 +8,13 @@ import { fetchRowsForTable, fetchSchemaForTable, } from "@/lib/actions/features/getSchema"; +import { + Select, + SelectContent, + SelectItem, + SelectTrigger, + SelectValue, +} from "@/components/ui/select"; import { convertTextToSql } from "@/lib/actions/features/textToSql"; import Loading from "../loading"; import { fetchSqlForQuery } from "@/lib/actions/features/searchSql"; @@ -77,6 +84,11 @@ function SearchSql({ dataset }: { dataset: File }) { setLoading(false); } }; + + const selectOptions = [ + { label: "Schema", value: "Schema" }, + { label: "Rows", value: "Rows" }, + ]; return (
@@ -106,20 +118,22 @@ function SearchSql({ dataset }: { dataset: File }) {
{textToSqlEnabled ? ( <> -
+

Search Results in:

-
- Schema - - setSelectedOption( - selectedOption === "Rows" ? "Schema" : "Rows", - ) - } - /> - Rows -
+