import { createElement } from 'react' import PropTypes from 'prop-types' import { Flex, Skeleton } from 'antd' import { getPropertyValue } from '../../../database/ObjectModels' import ObjectProperty from './ObjectProperty' import ObjectTimelineItem from './ObjectTimelineItem' const ObjectTimelineRow = ({ model, record, startDate, endDate, rangeStart, rangeEnd, labelWidth, minTrackWidth, tickCount, isEditing = false, rowActions = [], renderActions, lazyLoading = false, skeletonBoundary, color = 'var(--color-primary, #1677ff)', shadowPadding = 12 }) => { const isSkeleton = record?.isSkeleton === true const nameProperty = model.properties?.find( (property) => property.name === 'name' ) const referenceProperty = model.properties?.find( (property) => property.name === '_reference' ) const nameValue = getPropertyValue(record, 'name') const modelPrefix = model.prefix const label = typeof nameValue === 'string' ? nameValue : modelPrefix + ':' + String(record?._reference || '') const startValue = getPropertyValue(record, startDate) const endValue = endDate ? getPropertyValue(record, endDate) : undefined const actions = !isSkeleton && rowActions.length > 0 ? renderActions(record, lazyLoading) : null return (
{isSkeleton ? ( ) : ( <> {createElement(model.icon, { style: { fontSize: 14, flex: '0 0 auto' } })} {nameProperty ? ( ) : ( )} {actions} )}
) } ObjectTimelineRow.propTypes = { model: PropTypes.object.isRequired, record: PropTypes.object.isRequired, color: PropTypes.string, startDate: PropTypes.string.isRequired, endDate: PropTypes.string, rangeStart: PropTypes.oneOfType([PropTypes.string, PropTypes.number]) .isRequired, rangeEnd: PropTypes.oneOfType([PropTypes.string, PropTypes.number]) .isRequired, labelWidth: PropTypes.number.isRequired, minTrackWidth: PropTypes.number.isRequired, tickCount: PropTypes.number.isRequired, isEditing: PropTypes.bool, rowActions: PropTypes.array, renderActions: PropTypes.func.isRequired, lazyLoading: PropTypes.bool, skeletonBoundary: PropTypes.string, shadowPadding: PropTypes.number } export default ObjectTimelineRow