mirror of
https://github.com/tiqi-group/pydase.git
synced 2025-06-08 14:30:41 +02:00
62 lines
1.7 KiB
TypeScript
62 lines
1.7 KiB
TypeScript
import React from 'react';
|
|
import { LevelName } from './NotificationsComponent';
|
|
import { DataServiceComponent, DataServiceJSON } from './DataServiceComponent';
|
|
import { MethodComponent } from './MethodComponent';
|
|
|
|
type DeviceConnectionProps = {
|
|
name: string;
|
|
props: DataServiceJSON;
|
|
parentPath: string;
|
|
isInstantUpdate: boolean;
|
|
addNotification: (message: string, levelname?: LevelName) => void;
|
|
displayName: string;
|
|
id: string;
|
|
};
|
|
|
|
export const DeviceConnectionComponent = React.memo(
|
|
({
|
|
name,
|
|
props,
|
|
parentPath,
|
|
isInstantUpdate,
|
|
addNotification,
|
|
displayName,
|
|
id
|
|
}: DeviceConnectionProps) => {
|
|
const { connected, connect, ...updatedProps } = props;
|
|
const connectedVal = connected.value;
|
|
|
|
const fullAccessPath = [parentPath, name].filter((element) => element).join('.');
|
|
|
|
return (
|
|
<div className="deviceConnectionComponent" id={id}>
|
|
{!connectedVal && (
|
|
<div className="overlayContent">
|
|
<div>
|
|
{displayName != '' ? displayName : 'Device'} is currently not available!
|
|
</div>
|
|
<MethodComponent
|
|
name="connect"
|
|
parentPath={fullAccessPath}
|
|
docString={connect.doc}
|
|
addNotification={addNotification}
|
|
displayName={'reconnect'}
|
|
id={id + '-connect'}
|
|
render={true}
|
|
/>
|
|
</div>
|
|
)}
|
|
<DataServiceComponent
|
|
name={name}
|
|
props={updatedProps}
|
|
parentPath={parentPath}
|
|
isInstantUpdate={isInstantUpdate}
|
|
addNotification={addNotification}
|
|
displayName={displayName}
|
|
id={id}
|
|
/>
|
|
</div>
|
|
);
|
|
}
|
|
);
|