/ src / components / Widget / NotesCard.jsx
NotesCard.jsx
 1  import React from "react";
 2  import * as Card from "@timhettler/radix-card";
 3  import styles from "./card.module.scss";
 4  import { Table } from "@radix-ui/themes";
 5  import { NotesDB } from "../Database/Database";
 6  import { useLiveQuery } from "dexie-react-hooks";
 7  
 8  const NotesCard = () => {
 9    const allNotesData = useLiveQuery(() => NotesDB.notesDetails.toArray(), []);
10  
11    const filteredNotesData = allNotesData?.filter(
12      (notesData) => 
13      notesData.investor !== undefined &&
14      notesData.amount !== undefined &&
15      notesData.investor !== "" &&
16      notesData.amount !== ""
17    );
18  
19    const lastThreeNotesData = filteredNotesData?.slice(-3);
20  
21    const generateEmptyNotesData = () => {
22      return Array.from(
23        { length: 3 - lastThreeNotesData.length },
24        (_, index) => ({
25          id: `empty_${index}`,
26          investor: "-",
27          amount: "-",
28        }),
29      );
30    };
31  
32    const filledLastThreeNotesData = lastThreeNotesData?.concat(
33      generateEmptyNotesData()
34    );
35  
36    return (
37      <Card.Root className={styles.CardRoot}>
38        <div>
39          <h2>
40            <Card.Target href="#" className={styles.CardTarget}>
41              Notes
42            </Card.Target>
43          </h2>
44        </div>
45        <div className={styles.content}>
46          <div className={styles.TableRoot}>
47            <Table.Root className={styles.TableRoot}>
48              <Table.Header className={styles.TableHeader}>
49                <Table.Row>
50                  <Table.ColumnHeaderCell className={styles.TableCell}>
51                    Investor
52                  </Table.ColumnHeaderCell>
53                  <Table.ColumnHeaderCell className={styles.TableCell}>
54                    Amount
55                  </Table.ColumnHeaderCell>
56                </Table.Row>
57              </Table.Header>
58  
59              <Table.Body>
60                {filledLastThreeNotesData?.map((notesData) => (
61                  <Table.Row key={notesData.id} className={styles.TableRow}>
62                    <Table.RowHeaderCell className={styles.TableCell}>
63                      {notesData.investor || "-"}
64                    </Table.RowHeaderCell>
65                    <Table.Cell className={styles.TableCell}>
66                      {notesData.amount || "-"}
67                    </Table.Cell>
68                  </Table.Row>
69                ))}
70              </Table.Body>
71            </Table.Root>
72          </div>
73        </div>
74        <div className={styles.learnMore}>
75          <Card.TargetDescription>Open</Card.TargetDescription>
76        </div>
77      </Card.Root>
78    );
79  };
80  
81  export default NotesCard;