import React, { useCallback, useState } from "react"; import { Page } from "@/pages/base"; import { Button, Card, CardContent, CardHeader, Checkbox, Container, Typography } from "@material-ui/core"; import { Async } from "@/components/async"; import { useTranslation } from "react-i18next"; import { useAsync } from "@/hooks"; import api from "@/management/api"; import { useSpacing } from "@/styles"; import { EditionManagement, EditionManagementProps } from "./manage"; import { ReportFieldDefinition } from "@/data/report"; import { FieldPreview } from "@/management/report/fields/list"; import { toggleValueInArray } from "@/management/edition/form"; import { Actions } from "@/components"; import { useHistory } from "react-router-dom"; const title = "edition.settings.schema"; export function EditionReportSchema({ edition }: EditionManagementProps) { const { t } = useTranslation("management"); const spacing = useSpacing(2); const history = useHistory(); const fields = useAsync(useCallback(() => api.field.all(), [])) const [selected, setSelected] = useState(edition.schema); const isSelected = (field: ReportFieldDefinition) => selected.findIndex(f => f.id === field.id) !== -1; const handleCheckboxClick = (field: ReportFieldDefinition) => () => { setSelected(toggleValueInArray(selected, field, (a, b) => a.id === b.id)); } const handleSave = async () => { await api.edition.save({ ...edition, schema: selected }); history.push("management:edition_manage", { edition: edition.id as string }) } return { t(title) } { t(title) } { fields => <> { fields.map(field =>
) } }
; }