import React from 'react'; import { Layout, Button, Typography, Divider, Flex } from 'antd'; import { ArrowLeftOutlined } from '@ant-design/icons'; import { useDispatch, useSelector } from 'react-redux'; import { switchToOperationPanel } from '../../../states/panelSwitchSliceForView'; import { selectAllViewers, selectAllViewerUrls, selectSelectedViewers, setSelectedViewers, } from '@/states/view/viewerContainerSlice'; import { RootState } from '@/states/store'; import Icon from '@/components/Icon'; import '@/themes/truncateText.css'; const { Header, Content } = Layout; const { Title, Text } = Typography; const FunctionButton = ({ title, action, iconName, onClick, }: { title: string; action: string; iconName: string; onClick: () => void; }) => { return ( } style={{ width: '1.5rem', height: '1.5rem', padding: 0, }} title={title} className="truncate-text" /> ); }; const MorePanel = () => { const dispatch = useDispatch(); // 获取所有 viewer URLs 和当前选中的 viewer URLs const allViewers = useSelector(selectAllViewerUrls); const selectedViewers = useSelector(selectSelectedViewers); const handleReturn = () => { dispatch(switchToOperationPanel()); }; // 全选处理函数 const handleSelectAll = () => { dispatch(selectAllViewers()); }; // 反选处理函数 const handleInvertSelection = () => { // 获取未选中的 viewers const invertedSelection = allViewers.filter( (url) => !selectedViewers.includes(url) ); // 如果反选后为空,则保持至少一个选中项(选中第一个) if (invertedSelection.length === 0 && allViewers.length > 0) { dispatch(setSelectedViewers([allViewers[0]])); } else { dispatch(setSelectedViewers(invertedSelection)); } }; // 图像详情按钮处理函数(待实现) const handleImageDetails = () => { // TODO: 实现图像详情功能 console.log('图像详情功能待实现'); }; // tag信息按钮处理函数(待实现) const handleTagInfo = () => { // TODO: 实现tag信息功能 console.log('tag信息功能待实现'); }; return ( {/* 顶部导航栏 */} } onClick={handleReturn} /> 更多功能 {/* 主体内容 */} {/* 选择操作组 */} 选择操作 说明:全选或反选所有 viewer 中的图像 {/* 信息查看组 */} 信息查看 说明:查看图像详细信息和tag相关信息(功能待实现) ); }; export default MorePanel;