Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 | import { useMemo } from 'react'; import { FormattedMessage } from 'react-intl'; import { Group, type SelectOptionValue } from '@allshares/studio-design-system'; import { getDataConnectorName } from '@amalia/core/types'; import { getVendorLogo } from '@amalia/data-capture/connectors/assets'; import { useDataConnectors } from '@amalia/data-capture/connectors/state'; import { findDataConnectorObjectOfCustomObjectDefinition } from '@amalia/data-capture/record-models/components'; import { type CustomObjectDefinition } from '@amalia/data-capture/record-models/types'; import { useDesignerLibrary } from './use-designer-library'; const toDataSourceObjectOption = <TValue extends SelectOptionValue>( objectDefinition: Pick<CustomObjectDefinition, 'machineName' | 'name' | 'type'>, value: TValue, ) => { const Logo = getVendorLogo(objectDefinition.type); return { value, label: objectDefinition.name, icon: <Logo />, valueLabel: ( <Group align="center" gap={6} > <Logo width={16} /> {objectDefinition.name} </Group> ), }; }; const useObjectDefinitionsWithDataConnector = () => { const { tokens } = useDesignerLibrary(); const { data: dataConnectors } = useDataConnectors(); return useMemo( () => tokens.OBJECT_DEFINITIONS.map((objectDefinition) => { const dataConnectorObject = findDataConnectorObjectOfCustomObjectDefinition(objectDefinition, dataConnectors); return { objectDefinition, dataConnector: dataConnectorObject?.dataConnector, dataConnectorObject: dataConnectorObject?.dataConnectorObject, }; }), [tokens.OBJECT_DEFINITIONS, dataConnectors], ); }; export const useDataSourceObjectOptionsGrouped = () => { const { data: dataConnectors } = useDataConnectors(); const objectDefinitionsWithDataConnector = useObjectDefinitionsWithDataConnector(); return useMemo( () => [ ...(dataConnectors ?? []).map((dataConnector) => ({ label: getDataConnectorName(dataConnector), initialIsOpen: false, options: objectDefinitionsWithDataConnector .filter((obj) => obj.dataConnector?.id === dataConnector.id && !obj.dataConnectorObject?.isArchived) .map(({ objectDefinition }) => toDataSourceObjectOption(objectDefinition, objectDefinition.id)), })), { label: <FormattedMessage defaultMessage="Archived data objects" />, initialIsOpen: false, options: objectDefinitionsWithDataConnector .filter((obj) => obj.dataConnectorObject?.isArchived) .map(({ objectDefinition }) => toDataSourceObjectOption(objectDefinition, objectDefinition.id)), }, ], [dataConnectors, objectDefinitionsWithDataConnector], ); }; export const useDataSourceObjectOptionsWithVirtualGrouped = () => { const { tokens } = useDesignerLibrary(); const { data: dataConnectors } = useDataConnectors(); const objectDefinitionsWithDataConnector = useObjectDefinitionsWithDataConnector(); return useMemo( () => [ ...(dataConnectors ?? []).map((dataConnector) => ({ label: getDataConnectorName(dataConnector), initialIsOpen: false, options: objectDefinitionsWithDataConnector .filter((obj) => obj.dataConnector?.id === dataConnector.id && !obj.dataConnectorObject?.isArchived) .map(({ objectDefinition }) => toDataSourceObjectOption(objectDefinition, objectDefinition.machineName)), })), { label: 'Amalia', initialIsOpen: false, options: tokens.VIRTUAL_OBJECT_DEFINITIONS.map((objectDefinition) => toDataSourceObjectOption(objectDefinition, objectDefinition.machineName), ), }, { label: <FormattedMessage defaultMessage="Archived data objects" />, initialIsOpen: false, options: objectDefinitionsWithDataConnector .filter((obj) => obj.dataConnectorObject?.isArchived) .map(({ objectDefinition }) => toDataSourceObjectOption(objectDefinition, objectDefinition.machineName)), }, ], [dataConnectors, objectDefinitionsWithDataConnector, tokens.VIRTUAL_OBJECT_DEFINITIONS], ); }; |