import { CustomField, CustomFieldKey } from 'ontime-types'; import { useState } from 'react'; import { IoAdd } from 'react-icons/io5'; import { deleteCustomField, editCustomField, postCustomField } from '../../../../common/api/customFields'; import Button from '../../../../common/components/buttons/Button'; import Info from '../../../../common/components/info/Info'; import AppLink from '../../../../common/components/link/app-link/AppLink'; import ExternalLink from '../../../../common/components/link/external-link/ExternalLink'; import useCustomFields from '../../../../common/hooks-query/useCustomFields'; import { customFieldsDocsUrl } from '../../../../externals'; import * as Panel from '../../panel-utils/PanelUtils'; import CustomFieldEntry from './composite/CustomFieldEntry'; import CustomFieldForm from './composite/CustomFieldForm'; export default function CustomFieldSettings() { const { data, refetch } = useCustomFields(); const [isAdding, setIsAdding] = useState(false); const handleInitiateCreate = () => { setIsAdding(true); }; const handleCancel = () => { setIsAdding(false); }; const handleCreate = async (customField: CustomField) => { await postCustomField(customField); refetch(); setIsAdding(false); }; const handleEditField = async (key: CustomFieldKey, customField: CustomField) => { await editCustomField(key, customField); refetch(); }; const handleDelete = async (key: CustomFieldKey) => { try { await deleteCustomField(key); refetch(); } catch (_error) { /** we do not handle errors here */ } }; return ( Custom fields Custom fields allow for additional information to be added to an event.

To use custom fields as a data source in an{' '} Automation, please note the generated key. See the docs
{isAdding && } Colour Type Name Key (used in Automations) {Object.entries(data).map(([key, { colour, label, type }]) => { return ( ); })}
); }