2 Commits

Author SHA1 Message Date
0652fbadc8 Show sex on members list 2023-08-16 10:48:56 +02:00
8c6994e86d Can filter members list on members page 2023-08-16 10:39:00 +02:00
2 changed files with 54 additions and 14 deletions

View File

@@ -16,6 +16,7 @@ import { AsyncWidget } from "../../widgets/AsyncWidget";
import { useFamily } from "../../widgets/BaseFamilyRoute";
import { ConfirmLeaveWithoutSaveDialog } from "../../widgets/ConfirmLeaveWithoutSaveDialog";
import { FamilyPageTitle } from "../../widgets/FamilyPageTitle";
import { MemberItem } from "../../widgets/MemberItem";
import { MemberPhoto } from "../../widgets/MemberPhoto";
import { PropertiesBox } from "../../widgets/PropertiesBox";
import { RouterLink } from "../../widgets/RouterLink";
@@ -26,7 +27,6 @@ import { PropEdit } from "../../widgets/forms/PropEdit";
import { PropSelect } from "../../widgets/forms/SelectInput";
import { SexSelection } from "../../widgets/forms/SexSelection";
import { UploadPhotoButton } from "../../widgets/forms/UploadPhotoButton";
import { MemberItem } from "../../widgets/MemberItem";
/**
* Create a new member route

View File

@@ -1,18 +1,21 @@
import { useNavigate } from "react-router-dom";
import { useFamily } from "../../widgets/BaseFamilyRoute";
import { FamilyPageTitle } from "../../widgets/FamilyPageTitle";
import { Button, Tooltip } from "@mui/material";
import AddIcon from "@mui/icons-material/Add";
import { RouterLink } from "../../widgets/RouterLink";
import { Member, MemberApi, dateTimestamp, fmtDate } from "../../api/MemberApi";
import { DataGrid, GridActionsCellItem, GridColDef } from "@mui/x-data-grid";
import { MemberPhoto } from "../../widgets/MemberPhoto";
import DeleteIcon from "@mui/icons-material/DeleteOutlined";
import EditIcon from "@mui/icons-material/Edit";
import FemaleIcon from "@mui/icons-material/Female";
import MaleIcon from "@mui/icons-material/Male";
import VisibilityIcon from "@mui/icons-material/Visibility";
import { Button, TextField, Tooltip } from "@mui/material";
import { DataGrid, GridActionsCellItem, GridColDef } from "@mui/x-data-grid";
import React from "react";
import { useNavigate } from "react-router-dom";
import { Member, MemberApi, dateTimestamp, fmtDate } from "../../api/MemberApi";
import { useAlert } from "../../hooks/context_providers/AlertDialogProvider";
import { useConfirm } from "../../hooks/context_providers/ConfirmDialogProvider";
import { useSnackbar } from "../../hooks/context_providers/SnackbarProvider";
import { useFamily } from "../../widgets/BaseFamilyRoute";
import { FamilyPageTitle } from "../../widgets/FamilyPageTitle";
import { MemberPhoto } from "../../widgets/MemberPhoto";
import { RouterLink } from "../../widgets/RouterLink";
export function FamilyMembersListRoute(): React.ReactElement {
const alert = useAlert();
@@ -21,6 +24,8 @@ export function FamilyMembersListRoute(): React.ReactElement {
const family = useFamily();
const [filter, setFilter] = React.useState("");
const processDeletion = async (m: Member) => {
try {
if (
@@ -42,7 +47,13 @@ export function FamilyMembersListRoute(): React.ReactElement {
return (
<>
<div style={{ display: "flex", justifyContent: "space-between" }}>
<div
style={{
display: "flex",
justifyContent: "space-between",
alignItems: "center",
}}
>
<FamilyPageTitle title="Membres de la famille" />
<RouterLink to={family.family.URL("member/create")}>
<Tooltip title="Créer la fiche d'un nouveau membre">
@@ -57,10 +68,26 @@ export function FamilyMembersListRoute(): React.ReactElement {
situé en haut à droite pour créer le premier !
</p>
) : (
<MembersTable
members={family.members.fullList}
onDelete={processDeletion}
/>
<>
<TextField
label={"Rechercher un membre..."}
variant="standard"
value={filter}
onChange={(e) => setFilter(e.target.value)}
style={{ maxWidth: "500px", margin: "10px" }}
/>
<MembersTable
members={
filter === ""
? family.members.fullList
: family.members.filter((m) =>
m.fullName.toLowerCase().includes(filter.toLowerCase())
)
}
onDelete={processDeletion}
/>
</>
)}
</>
);
@@ -84,6 +111,7 @@ function MembersTable(p: {
return <MemberPhoto member={params.row} />;
},
},
{
field: "last_name",
headerName: "Nom",
@@ -94,6 +122,18 @@ function MembersTable(p: {
headerName: "Prénom",
flex: 3,
},
{
field: "sex",
headerName: "",
disableColumnMenu: true,
width: 20,
renderCell(params) {
if (params.row.sex === "F")
return <FemaleIcon fontSize="small" htmlColor="pink" />;
else return <MaleIcon fontSize="small" htmlColor="lightBlue" />;
},
},
{
field: "dateOfBirth",
headerName: "Date de naissance",