import DownloadIcon from "@mui/icons-material/Download"; import UploadIcon from "@mui/icons-material/Upload"; import { Alert, Box, Button, CardActions, CardContent, FormControlLabel, Switch, Tooltip, Typography, } from "@mui/material"; import React from "react"; import { FamilyApi } from "../../../api/FamilyApi"; import { DataApi } from "../../../api/genealogy/DataApi"; import { useAlert } from "../../../hooks/context_providers/AlertDialogProvider"; import { useConfirm } from "../../../hooks/context_providers/ConfirmDialogProvider"; import { useLoadingMessage } from "../../../hooks/context_providers/LoadingMessageProvider"; import { downloadBlob, selectFileToUpload } from "../../../utils/files_utils"; import { useFamily } from "../../../widgets/BaseFamilyRoute"; import { FamilyCard } from "../../../widgets/FamilyCard"; export function GenalogySettingsRoute(): React.ReactElement { return ( <> ); } function GenealogySettingsCard(): React.ReactElement { const alert = useAlert(); const family = useFamily(); const [disableCouplePhotos, setDisableCouplePhotos] = React.useState( family.family.disable_couple_photos ); 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, disable_couple_photos: disableCouplePhotos, }); 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 du module de généalogie setDisableCouplePhotos(c)} /> } label="Désactiver les photos de couple" /> ); } function GenealogyExportCard(): React.ReactElement { const loading = useLoadingMessage(); const confirm = useConfirm(); 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`); setSuccess("Export des données effectué avec succès !"); } catch (e) { console.error(e); setError("Echec de l'export des données de la famille !"); } loading.hide(); }; const importData = async () => { try { if ( !(await confirm( "Attention ! Cette opération a pour effet d'effacer toutes les données existantes en base ! Voulez-vous vraiment poursuivre l'opération ?" )) ) return; const file = await selectFileToUpload({ allowedTypes: ["application/zip"], }); if (file === null) return; setError(undefined); setSuccess(undefined); loading.show( "Restauration des données de généalogie de la famille en cours..." ); await DataApi.ImportData(family.familyId, file); family.reloadFamilyInfo(); alert( "Import des données de généalogie de la famille effectué avec succès !" ); } catch (e) { console.error(e); setError( `Echec de l'import des données de généalogie de la famille ! (${e})` ); } loading.hide(); }; return ( Export / import des données de généalogie

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 généalogie 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 !

 

); }