import { Alert, Box, Button, Card, CardActions, CardContent, TextField, Typography, } from "@mui/material"; import React from "react"; import { useNavigate } from "react-router-dom"; import { FamilyApi } from "../../api/FamilyApi"; import { ServerApi } from "../../api/ServerApi"; import { useAlert } from "../../hooks/context_providers/AlertDialogProvider"; import { useConfirm } from "../../hooks/context_providers/ConfirmDialogProvider"; import { useFamily } from "../../widgets/BaseFamilyRoute"; import { formatDate } from "../../widgets/TimeWidget"; import { FamilyCard } from "../../widgets/FamilyCard"; import DownloadIcon from "@mui/icons-material/Download"; import { useLoadingMessage } from "../../hooks/context_providers/LoadingMessageProvider"; import { DataApi } from "../../api/DataApi"; import { downloadBlob } from "../../utils/blob_utils"; export function FamilySettingsRoute(): React.ReactElement { const alert = useAlert(); const confirm = useConfirm(); const navigate = useNavigate(); const family = useFamily(); const deleteFamily = async () => { try { if ( !(await confirm( "Voulez-vous vraiment supprimer cette famille, et toute les données qui s'y rattachent ? Cette opération est absolument irréversible !" )) ) return; await FamilyApi.DeleteFamily(family.family); await alert("La famille a été supprimée avec succès !"); navigate("/"); } catch (e) { console.error(e); alert("Echec de la suppression de la famille !"); } }; return ( <>
); } function FamilySettingsCard(): React.ReactElement { const alert = useAlert(); const family = useFamily(); const [newName, setNewName] = React.useState(family.family.name); const canEdit = family.family.is_admin; const [error, setError] = React.useState(); const [success, setSuccess] = React.useState(); const updateFamily = async () => { try { setError(undefined); setSuccess(undefined); await FamilyApi.UpdateFamily({ id: family.family.family_id, name: newName, }); family.reloadFamilyInfo(); alert("Les paramètres de la famille ont été mis à jour avec succès !"); } catch (e) { console.error(e); setError("Echec de la mise à jour des paramètres de la famille !"); } }; return ( Paramètres de la famille setNewName(e.target.value)} inputProps={{ maxLength: ServerApi.Config.constraints.family_name_len.max, }} /> ); } function FamilyExportCard(): React.ReactElement { const loading = useLoadingMessage(); const alert = useAlert(); const family = useFamily(); const [error, setError] = React.useState(); const [success, setSuccess] = React.useState(); const exportData = async () => { loading.show("Export des données"); try { setError(undefined); setSuccess(undefined); const blob = await DataApi.ExportData(family.familyId); downloadBlob(blob, `Export-${new Date().getTime()}.zip`); } catch (e) { console.error(e); setError("Echec de l'export des données de la famille !"); } loading.hide(); }; return ( Export / import des données de la famille

Vous pouvez, à des fins de sauvegardes ou de transfert, exporter et importer l'ensemble des données des membres et des couples de cette famille, sous format ZIP.

Attention ! La restauration des données de la famille provoque préalablement l'effacement de toutes les données enregistrées dans la famille ! Par ailleurs, la restauration n'est pas réversible !

 

); }