import { useState } from 'react'; import { ButtonComponent } from './ButtonComponent'; import { NumberComponent } from './NumberComponent'; import { SliderComponent } from './SliderComponent'; import { EnumComponent } from './EnumComponent'; import { MethodComponent } from './MethodComponent'; import { AsyncMethodComponent } from './AsyncMethodComponent'; import React from 'react'; import { Card, Collapse } from 'react-bootstrap'; import { ChevronDown, ChevronRight } from 'react-bootstrap-icons'; import { StringComponent } from './StringComponent'; type AttributeType = | 'str' | 'bool' | 'float' | 'int' | 'method' | 'DataService' | 'Enum' | 'NumberSlider'; type ValueType = boolean | string | number | object; interface Attribute { type: AttributeType; value?: ValueType; readonly: boolean; doc?: string | null; parameters?: Record; async?: boolean; enum?: Record; } type DataServiceProps = { props: DataServiceJSON; parentPath?: string; }; export type DataServiceJSON = Record; export const DataServiceComponent = React.memo( ({ props, parentPath = 'DataService' }: DataServiceProps) => { const [open, setOpen] = useState(true); return (
setOpen(!open)} style={{ cursor: 'pointer' }} // Change cursor style on hover > {parentPath} {open ? : } {Object.entries(props).map(([key, value]) => { if (value.type === 'bool') { return (
); } else if (value.type === 'float' || value.type === 'int') { return (
); } else if (value.type === 'NumberSlider') { return (
); } else if (value.type === 'Enum') { return (
); } else if (value.type === 'method') { if (!value.async) { return (
); } else { return (
} />
); } } else if (value.type === 'str') { return (
); } else if (value.type === 'DataService') { return (
); } else { return
; } })}
); } );