From 3fa52f24b574116b3ba9078426256eccc940bf33 Mon Sep 17 00:00:00 2001 From: Sonika Date: Mon, 18 Dec 2023 14:27:23 +0530 Subject: [PATCH] manage Users table an api --- src/APIs/ManageUsersAPIs/getUsersList.tsx | 19 +++ src/App.tsx | 4 + src/components/Header.tsx | 13 ++ src/components/manage_users/ManageUsers.tsx | 163 ++++++++++++++++++++ 4 files changed, 199 insertions(+) create mode 100644 src/APIs/ManageUsersAPIs/getUsersList.tsx create mode 100644 src/components/manage_users/ManageUsers.tsx diff --git a/src/APIs/ManageUsersAPIs/getUsersList.tsx b/src/APIs/ManageUsersAPIs/getUsersList.tsx new file mode 100644 index 0000000..c9f9294 --- /dev/null +++ b/src/APIs/ManageUsersAPIs/getUsersList.tsx @@ -0,0 +1,19 @@ +import {useQuery} from '@tanstack/react-query' + +export const getUsersList = async()=>{ + const response = await fetch(`http://localhost:8080/SonyMusicRights/users-list`); + if (!response.ok) { + throw new Error('Failed to get User list data'); + } + const UserListData = await response.json() + return UserListData; +} + +export const useGetUsersData = () => { + return useQuery( + { + queryKey: ['Users-list'], + queryFn: () => getUsersList(), + } + ); +} \ No newline at end of file diff --git a/src/App.tsx b/src/App.tsx index bcc35e0..10cb92a 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -7,6 +7,8 @@ import { BrowserRouter as Router, Routes, Route, BrowserRouter} from 'react-rout import Dashboard from './components/Dashboard'; import Projects from './components/projects/Projects'; import { ReactQueryDevtools} from 'react-query/devtools' +import ManageUsers from './components/manage_users/ManageUsers'; +import EditableTable from './components/manage_users/demo'; function App() { const queryClient = new QueryClient(); @@ -18,6 +20,8 @@ function App() { } /> } /> + } /> + {/* } /> */} diff --git a/src/components/Header.tsx b/src/components/Header.tsx index 99948b5..0f63c8a 100644 --- a/src/components/Header.tsx +++ b/src/components/Header.tsx @@ -102,6 +102,10 @@ function Header() { PROJECTS + + MANAGE USERS + @@ -152,6 +156,15 @@ function Header() { > PROJECTS + diff --git a/src/components/manage_users/ManageUsers.tsx b/src/components/manage_users/ManageUsers.tsx new file mode 100644 index 0000000..30ba0d5 --- /dev/null +++ b/src/components/manage_users/ManageUsers.tsx @@ -0,0 +1,163 @@ +import React, { ChangeEvent, useEffect, useState } from "react"; +import { getUsersList, useGetUsersData } from "../../APIs/ManageUsersAPIs/getUsersList"; +import { + Table, + TableBody, + TableCell, + TableContainer, + TableHead, + TableRow, + Paper, + Button, + IconButton, + TextField, + Dialog, + DialogTitle, + DialogContent, + DialogActions, +} from '@mui/material'; +import DeleteIcon from '@mui/icons-material/Delete'; +import EditIcon from '@mui/icons-material/Edit'; +import AddIcon from '@mui/icons-material/Add'; + +interface Row { + id: number; + name: string; + age: number; + } + + const initialData: Row[] = [ + { id: 1, name: 'Row 1', age: 25 }, + { id: 2, name: 'Row 2', age: 30 }, + ]; + +export default function ManageUsers(){ + const [manageUsersData,setManageUsersData] = useState() + const { data: manageUsersResponse, isLoading, isError } = useGetUsersData(); + const [data, setData] = useState(initialData); + const [open, setOpen] = useState(false); + const [selectedRow, setSelectedRow] = useState({ id: 0, name: '', age: 0 }); + const [newRow, setNewRow] = useState({ id: 0, name: '', age: 0 }); + + const handleEdit = (row: Row) => { + setSelectedRow(row); + setOpen(true); + }; + + const handleDelete = (id: number) => { + const updatedData = data.filter((row) => row.id !== id); + setData(updatedData); + }; + + const handleSave = () => { + if (selectedRow.id) { + const updatedData = data.map((row) => (row.id === selectedRow.id ? selectedRow : row)); + setData(updatedData); + } else { + const id = data.length + 1; + setNewRow({ ...newRow, id }); + setData([...data, { ...newRow, id }]); + } + + setOpen(false); + setSelectedRow({ id: 0, name: '', age: 0 }); + }; + + const handleOpen = () => { + setOpen(true); + }; + + const handleClose = () => { + setOpen(false); + setSelectedRow({ id: 0, name: '', age: 0 }); + }; + + const handleChange = (e: ChangeEvent) => { + const { name, value } = e.target; + setSelectedRow({ ...selectedRow, [name]: value }); + setNewRow({ ...newRow, [name]: value }); + }; + + + + console.log(manageUsersResponse,"dsjhgfsdugf") + return( + + +
+ + + + + + + + + + Name + Email Id + Last Login + Active + + + + {manageUsersResponse && manageUsersResponse.map((row:any) => ( + + + handleEdit(row)} aria-label="edit"> + + + handleDelete(row.id)} aria-label="delete"> + + + + {row.username} + {row.email_id} + {row.last_login} + {row.active} + + + ))} + +
+
+ + + {selectedRow.id ? 'Edit Row' : 'Add New Row'} + + + + + + + + + +
+
+
+ ) +} \ No newline at end of file