import React, { useState, useEffect } from 'react';
import useDeviceStore from '@/store/deviceStore';
import Image from 'next/image';
export default function WorldSkill({
onPortClick = () => {},
onPortHover = () => {},
selectedPort = null,
targetPort = null,
connections = {}
}) {
// 获取端口的连接状态样式
const getPortStyle = (portId) => {
if (selectedPort === portId) {
return 'bg-blue-300';
}
if (targetPort === portId) {
return 'bg-green-300';
}
if (connections && connections[portId]) {
return 'bg-[#00ff7f]';
}
return 'bg-gray-300';
};
const {faultScenarios,seatUUID,seatNumber,updateWorldSkillScenarios} = useDeviceStore();
// 从localStorage加载清洁状态
const loadCleanState = () => {
if (!seatUUID) return;
const lccleanStates = JSON.parse(localStorage.getItem(`cleanState_${seatUUID}_lc`) || '{}');
// 恢复LC端口状态
document.querySelectorAll('[lcclean]').forEach(el => {
const elementId = el.id;
if (elementId && lccleanStates[elementId] !== undefined) {
el.setAttribute('lcclean', lccleanStates[elementId].toString());
}
});
};
// 监听seatUUID变化
useEffect(() => {
if (seatUUID) {
// 使用setTimeout确保DOM元素已加载
setTimeout(loadCleanState, 500);
}
}, [seatUUID]);
return (
{/* 办公区域 */}
{/* Room */}
{/* Room 1 - 上半部分 */}
Room1
onPortClick('Room1-TO-1')}
onMouseEnter={() => onPortHover('Room1-TO-1')}
>
TO-1
onPortClick('Room1-TO-2')}
onMouseEnter={() => onPortHover('Room1-TO-2')}
>
TO-2
{/* Room 3 - 下半部分 */}
Room3
onPortClick('Room3A-TO-1')}
onMouseEnter={() => onPortHover('Room3-TO-1')}
>
TO-1
onPortClick('Room3-TO-2')}
onMouseEnter={() => onPortHover('Room3-TO-2')}
>
TO-2
{/* Room 4 */}
{/* Room 1A - 上半部分 */}
Room4
onPortClick('Room4-CAM')}
onMouseEnter={() => onPortHover('Room4-CAM')}
>
{/* 2F配线架 */}
2F-RackA
{/* Row 1A - taking 1/2 of rack height */}
1A
{[...Array(3)].map((_, groupIndex) => (
{[0, 1].map((portIndex) => {
const portId = `2F-RackA-1A-${groupIndex * 2 + portIndex + 1}`;
const portNumber = groupIndex * 2 + portIndex + 1;
return (
onPortClick(portId)}
onMouseEnter={() => onPortHover(portId)}
>
{portNumber}
);
})}
))}
{/* Row 1B - taking 1/2 of rack height */}
1B
{[...Array(3)].map((_, groupIndex) => (
{[0, 1].map((portIndex) => {
const portId = `2F-RackA-1B-${groupIndex * 2 + portIndex + 1}`;
const portNumber = groupIndex * 2 + portIndex + 1;
return (
onPortClick(portId)}
onMouseEnter={() => onPortHover(portId)}
>
{portNumber}
);
})}
))}
{/* 1F DataCenter */}
1F-RackA
{/* Row 1A - taking 1/2 of rack height */}
1A
{[...Array(12)].map((_, i) => (
onPortClick(`1F-RackA-1A-${i + 1}`)}
onMouseEnter={() => onPortHover(`1F-RackA-1A-${i + 1}`)}
>
{i + 1}
))}
{/* Row 1B - taking 1/2 of rack height */}
1B
{[...Array(6)].map((_, groupIndex) => (
{[0, 1].map((portIndex) => {
const portId = `1F-RackA-1B-${groupIndex * 2 + portIndex + 1}`;
const portNumber = groupIndex * 2 + portIndex + 1;
return (
onPortClick(portId)}
onMouseEnter={() => onPortHover(portId)}
>
{portNumber}
);
})}
))}
{/* Row 1C - taking 1/2 of rack height */}
1C
{[...Array(6)].map((_, groupIndex) => (
{[0, 1].map((portIndex) => {
const portId = `1F-RackA-1C-${groupIndex * 2 + portIndex + 1}`;
const portNumber = groupIndex * 2 + portIndex + 1;
return (
onPortClick(portId)}
onMouseEnter={() => onPortHover(portId)}
>
{portNumber}
);
})}
))}
{/* 竞技模式场景切换 */}
);
}