Adds banks and categories components
This commit is contained in:
parent
4160886cf5
commit
4743bed67f
24
src/root.tsx
24
src/root.tsx
@ -4,11 +4,25 @@ import { NavLink, Outlet } from "react-router";
|
|||||||
export default function App() {
|
export default function App() {
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<h1>Personal Finance</h1>
|
<header>
|
||||||
<nav>
|
<h1>Personal Finance</h1>
|
||||||
<NavLink to="/transactions">Transactions</NavLink>
|
<nav>
|
||||||
</nav>
|
<ul>
|
||||||
<Outlet />
|
<li>
|
||||||
|
<NavLink to="/transactions">Transactions</NavLink>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<NavLink to="/banks">Banks</NavLink>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<NavLink to="/categories">Categories</NavLink>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</nav>
|
||||||
|
</header>
|
||||||
|
<main>
|
||||||
|
<Outlet />
|
||||||
|
</main>
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,6 +1,10 @@
|
|||||||
import { createBrowserRouter } from "react-router";
|
import { createBrowserRouter } from "react-router";
|
||||||
import Transactions, { loader } from "./routes/transactions";
|
|
||||||
import App from "./root";
|
import App from "./root";
|
||||||
|
import Banks, { loader as banksLoader } from "./routes/banks";
|
||||||
|
import Categories, { loader as categoriesLoader } from "./routes/categories";
|
||||||
|
import Transactions, {
|
||||||
|
loader as transactionsLoader,
|
||||||
|
} from "./routes/transactions";
|
||||||
|
|
||||||
export const router = createBrowserRouter([
|
export const router = createBrowserRouter([
|
||||||
{
|
{
|
||||||
@ -10,7 +14,17 @@ export const router = createBrowserRouter([
|
|||||||
{
|
{
|
||||||
path: "transactions",
|
path: "transactions",
|
||||||
Component: Transactions,
|
Component: Transactions,
|
||||||
loader: loader,
|
loader: transactionsLoader,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: "banks",
|
||||||
|
Component: Banks,
|
||||||
|
loader: banksLoader,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: "categories",
|
||||||
|
Component: Categories,
|
||||||
|
loader: categoriesLoader,
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
|||||||
33
src/routes/banks.tsx
Normal file
33
src/routes/banks.tsx
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
import { useLoaderData } from "react-router";
|
||||||
|
|
||||||
|
export async function loader() {
|
||||||
|
return await fetch(`http://localhost:9000/banks`).then((response) => {
|
||||||
|
return response.json();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
export default function Banks() {
|
||||||
|
const data: {
|
||||||
|
id: string;
|
||||||
|
name: string;
|
||||||
|
}[] = useLoaderData<typeof loader>();
|
||||||
|
|
||||||
|
return (
|
||||||
|
<table>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th scope="col">id</th>
|
||||||
|
<th scope="col">name</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
{data.map((t) => (
|
||||||
|
<tr>
|
||||||
|
<th>{t.id}</th>
|
||||||
|
<td>{t.name}</td>
|
||||||
|
</tr>
|
||||||
|
))}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
);
|
||||||
|
}
|
||||||
33
src/routes/categories.tsx
Normal file
33
src/routes/categories.tsx
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
import { useLoaderData } from "react-router";
|
||||||
|
|
||||||
|
export async function loader() {
|
||||||
|
return await fetch(`http://localhost:9000/categories`).then((response) => {
|
||||||
|
return response.json();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
export default function Categories() {
|
||||||
|
const data: {
|
||||||
|
name: string;
|
||||||
|
group: { name: string } | undefined;
|
||||||
|
}[] = useLoaderData<typeof loader>();
|
||||||
|
|
||||||
|
return (
|
||||||
|
<table>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th scope="col">name</th>
|
||||||
|
<th scope="col">group</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
{data.map((t) => (
|
||||||
|
<tr>
|
||||||
|
<td>{t.name}</td>
|
||||||
|
<td>{t.group?.name}</td>
|
||||||
|
</tr>
|
||||||
|
))}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
);
|
||||||
|
}
|
||||||
@ -7,7 +7,7 @@ export async function loader() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export default function Transactions() {
|
export default function Transactions() {
|
||||||
const transactions: {
|
const data: {
|
||||||
id: number;
|
id: number;
|
||||||
date: string;
|
date: string;
|
||||||
description: string;
|
description: string;
|
||||||
@ -24,7 +24,7 @@ export default function Transactions() {
|
|||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
{transactions.map((t) => (
|
{data.map((t) => (
|
||||||
<tr>
|
<tr>
|
||||||
<th>{t.date}</th>
|
<th>{t.date}</th>
|
||||||
<td>{t.description}</td>
|
<td>{t.description}</td>
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user