mirror of
https://github.com/lemeow125/Borrowing-TrackerFrontend.git
synced 2025-04-05 01:21:35 +08:00
93 lines
2.9 KiB
TypeScript
93 lines
2.9 KiB
TypeScript
import { useQuery } from "@tanstack/react-query";
|
|
import { TransactionsByTeacherAPI } from "../../API/API";
|
|
import styles from "../../../styles";
|
|
import CircularProgress from "@mui/material/CircularProgress/CircularProgress";
|
|
import React, { useState } from "react";
|
|
import TransactionEntry from "../../TransactionEntry/TransactionEntry";
|
|
import TransactionFilterMenu from "../../TransactionFilterMenu/TransactionFilterMenu";
|
|
import Popup from "reactjs-popup";
|
|
import EditTransactionModal from "../../EditTransactionModal/EditTransactionModal";
|
|
|
|
export default function TeacherTransactionListView() {
|
|
const [EditTransactionOpen, SetEditTransactionOpen] = useState(false);
|
|
const [SelectedTransaction, SetSelectedTransaction] = useState(0);
|
|
const transactions = useQuery({
|
|
queryKey: ["transactions_teacher"],
|
|
queryFn: TransactionsByTeacherAPI,
|
|
});
|
|
const [filter, setFilter] = useState("");
|
|
if (transactions.isLoading) {
|
|
return (
|
|
<div
|
|
style={{
|
|
...styles.flex_column,
|
|
...{
|
|
alignItems: "center",
|
|
justifyContent: "center",
|
|
paddingTop: "64px",
|
|
},
|
|
}}
|
|
>
|
|
<CircularProgress style={{ height: "128px", width: "128px" }} />
|
|
<p
|
|
style={{
|
|
...styles.text_dark,
|
|
...styles.text_L,
|
|
}}
|
|
>
|
|
Loading
|
|
</p>
|
|
</div>
|
|
);
|
|
}
|
|
return (
|
|
<div>
|
|
<div style={styles.flex_column}>
|
|
<TransactionFilterMenu filter={filter} setFilter={setFilter} />
|
|
<div style={{ marginTop: "16px" }} />
|
|
<div
|
|
style={{
|
|
...styles.flex_column,
|
|
...{ height: "50vh", overflowY: "scroll", width: "85%", marginInline: "6.5%" },
|
|
}}
|
|
>
|
|
{transactions.data ? (
|
|
transactions.data
|
|
.filter((transaction) =>
|
|
filter !== "" ? transaction.transaction_status == filter : true
|
|
)
|
|
.map((transaction) => (
|
|
<React.Fragment key={transaction.id}>
|
|
<TransactionEntry
|
|
onClick={() => {
|
|
if (
|
|
transaction.transaction_status == "Pending Approval"
|
|
) {
|
|
SetSelectedTransaction(transaction.id);
|
|
SetEditTransactionOpen(true);
|
|
}
|
|
}}
|
|
transaction={transaction}
|
|
/>
|
|
</React.Fragment>
|
|
))
|
|
) : (
|
|
<></>
|
|
)}
|
|
</div>
|
|
</div>
|
|
<Popup
|
|
open={EditTransactionOpen}
|
|
onClose={() => SetEditTransactionOpen(false)}
|
|
modal
|
|
position={"top center"}
|
|
contentStyle={styles.popup_center}
|
|
>
|
|
<EditTransactionModal
|
|
id={SelectedTransaction}
|
|
setOpen={SetEditTransactionOpen}
|
|
/>
|
|
</Popup>
|
|
</div>
|
|
);
|
|
}
|