From c2c9b3374c0de3b44e8c466f28025296205db38f Mon Sep 17 00:00:00 2001 From: Joao Correia Date: Fri, 17 Jan 2025 20:17:51 +0000 Subject: [PATCH] Start work on Approval Workflow id page --- .../ApprovalWorkflows/RequestedBy.tsx | 28 ++++++++++ .../ApprovalWorkflows/StartedOn.tsx | 22 ++++++++ src/components/ApprovalWorkflows/Status.tsx | 23 ++++++++ src/pages/approval-workflows/[id].tsx | 55 ++++++++++++------- 4 files changed, 107 insertions(+), 21 deletions(-) create mode 100644 src/components/ApprovalWorkflows/RequestedBy.tsx create mode 100644 src/components/ApprovalWorkflows/StartedOn.tsx create mode 100644 src/components/ApprovalWorkflows/Status.tsx diff --git a/src/components/ApprovalWorkflows/RequestedBy.tsx b/src/components/ApprovalWorkflows/RequestedBy.tsx new file mode 100644 index 00000000..84ea0cea --- /dev/null +++ b/src/components/ApprovalWorkflows/RequestedBy.tsx @@ -0,0 +1,28 @@ +import React from "react"; +import { FaRegUser } from "react-icons/fa"; + +interface Props { + name: string; + profileImage: string; +} + +export default function RequestedBy({ name, profileImage }: Props) { + return ( +
+
+ +
+
+

Requested by

+
+

{name}

+ {name} +
+
+
+ ); +}; \ No newline at end of file diff --git a/src/components/ApprovalWorkflows/StartedOn.tsx b/src/components/ApprovalWorkflows/StartedOn.tsx new file mode 100644 index 00000000..452cad72 --- /dev/null +++ b/src/components/ApprovalWorkflows/StartedOn.tsx @@ -0,0 +1,22 @@ +import React from "react"; +import { PiCalendarDots } from "react-icons/pi"; + +interface Props { + date: string; +} + +export default function StartedOn({ date }: Props) { + return ( +
+
+ +
+
+

Started on

+
+

{date}

+
+
+
+ ); +}; \ No newline at end of file diff --git a/src/components/ApprovalWorkflows/Status.tsx b/src/components/ApprovalWorkflows/Status.tsx new file mode 100644 index 00000000..f7176bfa --- /dev/null +++ b/src/components/ApprovalWorkflows/Status.tsx @@ -0,0 +1,23 @@ +import { ApprovalWorkflowStatus, ApprovalWorkflowStatusLabel } from "@/interfaces/approval.workflow"; +import React from "react"; +import { RiProgress5Line } from "react-icons/ri"; + +interface Props { + status: ApprovalWorkflowStatus; +} + +export default function Status({ status }: Props) { + return ( +
+
+ +
+
+

Status

+
+

{ApprovalWorkflowStatusLabel[status]}

+
+
+
+ ); +}; \ No newline at end of file diff --git a/src/pages/approval-workflows/[id].tsx b/src/pages/approval-workflows/[id].tsx index 622d6d4e..a9571269 100644 --- a/src/pages/approval-workflows/[id].tsx +++ b/src/pages/approval-workflows/[id].tsx @@ -1,27 +1,21 @@ import Layout from "@/components/High/Layout"; -import Select from "@/components/Low/Select"; -import useApprovalWorkflows from "@/hooks/useApprovalWorkflows"; import useUser from "@/hooks/useUser"; -import useUsers from "@/hooks/useUsers"; -import { ApprovalWorkflow, ApprovalWorkflowStatus, ApprovalWorkflowStatusLabel } from "@/interfaces/approval.workflow"; -import { GroupWithUsers, User } from "@/interfaces/user"; +import { ApprovalWorkflow } from "@/interfaces/approval.workflow"; import { sessionOptions } from "@/lib/session"; import { redirect } from "@/utils"; import { requestUser } from "@/utils/api"; -import { getApprovalWorkflow } from "@/utils/approval.workflows.be"; import { shouldRedirectHome } from "@/utils/navigation.disabled"; -import { createColumnHelper, flexRender, getCoreRowModel, useReactTable } from "@tanstack/react-table"; -import axios from "axios"; -import clsx from "clsx"; import { withIronSessionSsr } from "iron-session/next"; import Head from "next/head"; import Link from "next/link"; -import { useEffect, useState } from "react"; -import { BsTrash } from "react-icons/bs"; -import { FaRegEdit } from "react-icons/fa"; -import { toast, ToastContainer } from "react-toastify"; +import { BsChevronLeft } from "react-icons/bs"; +import { ToastContainer } from "react-toastify"; -import approvalWorkflowsData from '../../demo/approval_workflows.json' // to test locally +import approvalWorkflowsData from '../../demo/approval_workflows.json'; // to test locally + +import RequestedBy from "@/components/ApprovalWorkflows/RequestedBy"; +import StartedOn from "@/components/ApprovalWorkflows/StartedOn"; +import Status from "@/components/ApprovalWorkflows/Status"; export const getServerSideProps = withIronSessionSsr(async ({ req, res, params }) => { const user = await requestUser(req, res) @@ -33,21 +27,21 @@ export const getServerSideProps = withIronSessionSsr(async ({ req, res, params } const { id } = params as { id: string }; const approvalWorkflow = approvalWorkflowsData.find(workflow => workflow.id === id); // await getApprovalWorkflow(id); - if (!approvalWorkflow) + if (!approvalWorkflow) return redirect("/approval-workflows") return { - props: { user }, + props: { user, approvalWorkflow }, }; }, sessionOptions); -export default function Home() { +export default function Home({ approvalWorkflow }: { approvalWorkflow: ApprovalWorkflow }) { const { user } = useUser({ redirectTo: "/login" }); return ( <> - Approval Workflows | EnCoach + {approvalWorkflow.name} | EnCoach {user && ( -

Approval Workflows

- - +
+
+ + + +

{approvalWorkflow.name}

+
+
+
+ + + +
)}