import React, { useState, useEffect } from 'react';
import { Modal, Radio, Transfer } from 'antd';
// import SelectDevice from '@/components/select-device';
import classNames from '@pansy/classnames';
import styles from './select-device-modal.less';
import { Table, Empty, MapDeviceSelection } from '@sensoro/sensoro-design';
import { difference } from 'lodash';
import { ModalProps } from 'antd/es/modal';
import { DeviceInfo } from '../../common/types/map-device';
import SensorIcon from '@sensoro/library/lib/components/sensor-icon';
import { iconMap } from '../select-device/config';
const TableTransfer = ({ getColumns, deviceKey, ...restProps }: any) => {
return (
{({
direction,
filteredItems,
onItemSelectAll,
onItemSelect,
selectedKeys: listSelectedKeys,
}) => {
const rowSelection = {
onChange: () => {},
onSelectAll(selected: boolean, selectedRows: any[]) {
const treeSelectedKeys = selectedRows
.filter(item => !item.disabled)
.map(item => item?.[deviceKey]);
const diffKeys = selected
? difference(treeSelectedKeys, listSelectedKeys)
: difference(listSelectedKeys, treeSelectedKeys);
onItemSelectAll(diffKeys, selected);
},
onSelect(item: any, selected: boolean) {
onItemSelect(item?.[deviceKey], selected);
},
selectedRowKeys: listSelectedKeys,
};
return (
),
}}
size="small"
pagination={{
// size: 'small',
pageSize: direction === 'left' ? 7 : 8,
showQuickJumper: false,
showSizeChanger: false,
}}
/>
);
}}
);
};
export interface Data {
devices?: DeviceInfo[];
relatedCameraIds?: string[];
}
export interface SelectDeviceModalProps extends ModalProps {
data?: Data;
onChange?: (value: string[]) => void;
deviceKey?: string;
}
const SelectDeviceModal: React.FC = props => {
const {
onChange,
onCancel,
data = {},
visible,
deviceKey = 'cid',
...rest
} = props;
const { devices, relatedCameraIds } = data;
const [mode, setMode] = useState('map');
const [targetIds, setTargetIds] = useState(relatedCameraIds);
// @ts-ignore
const handleModeChange = e => {
const mode = e.target.value;
setMode(mode);
};
useEffect(() => {
setTargetIds(relatedCameraIds);
}, [relatedCameraIds]);
const getColumns = (position: string) => [
{
title: position === 'left' ? '摄像机列表' : '已选择摄像机',
dataIndex: 'name',
ellipsis: true,
render: (text, row) => {
return (
{row.name}
);
},
},
];
const handleChange = (nextTargetKeys: string[]) => {
setTargetIds(nextTargetKeys);
};
const handleCancel = (e: any) => {
setTargetIds(relatedCameraIds);
onCancel?.(e);
};
return (
{
onChange?.(targetIds || []);
onCancel?.(e);
}}
>
列表模式
地图模式
{visible && (
item.name.indexOf(inputValue) !== -1
}
rowKey={(record: any) => record[deviceKey]}
/>
)}
);
};
export default SelectDeviceModal;