## Changelog ### New Features - Modularized 3D earth HTML page from single 1918-line file into ES Modules - Split CSS into separate module files (base, info-panel, coordinates-display, legend, earth-stats) - Split JS into separate modules (constants, utils, ui, earth, cables, controls, main) ### 3D Earth Rendering - Use Three.js r128 (via esm.sh CDN) for color consistency with original - Earth with 8K satellite texture and proper material settings - Cloud layer with transparency and additive blending - Starfield background (8000 stars) - Latitude/longitude grid lines that rotate with Earth ### Cable System - Load cable data from geo.json with great circle path calculation - Support for MultiLineString and LineString geometry types - Cable color from geo.json properties.color field - Landing points loading from landing-point-geo.geojson ### User Interactions - Mouse hover: highlight cable and show details - Mouse click: lock cable with pulsing glow effect - Click cable to pause rotation, click elsewhere to resume - Click rotation toggle button to resume rotation and clear highlight - Reset view with smooth animation (800ms cubic ease-out) - Mouse wheel zoom support - Drag to rotate Earth ### UI/UX Improvements - Tooltip shows latitude, longitude, and altitude - Prevent tooltip text selection during drag - Hide tooltip during drag operation - Blue border tooltip styling matching original - Cursor changes to grabbing during drag - Front-facing cable detection (only detect cables facing camera) ### Bug Fixes - Grid lines now rotate with Earth (added as Earth child) - Reset view button now works correctly - Fixed camera reference in reset view - Fixed autoRotate state management when clearing locked cable ### Original HTML - Copied original 3dearthmult.html to public folder for reference
32 lines
725 B
JSON
32 lines
725 B
JSON
{
|
|
"name": "planet-frontend",
|
|
"version": "1.0.0",
|
|
"private": true,
|
|
"dependencies": {
|
|
"@ant-design/icons": "^5.2.6",
|
|
"antd": "^5.12.5",
|
|
"axios": "^1.6.2",
|
|
"dayjs": "^1.11.10",
|
|
"react": "^18.2.0",
|
|
"react-dom": "^18.2.0",
|
|
"react-resizable": "^3.1.3",
|
|
"react-router-dom": "^6.21.0",
|
|
"simplex-noise": "^4.0.1",
|
|
"socket.io-client": "^4.7.2",
|
|
"three": "^0.160.0",
|
|
"zustand": "^4.4.7"
|
|
},
|
|
"devDependencies": {
|
|
"@types/react": "^18.2.45",
|
|
"@types/react-dom": "^18.2.18",
|
|
"@vitejs/plugin-react": "^4.2.1",
|
|
"typescript": "^5.3.3",
|
|
"vite": "^5.0.10"
|
|
},
|
|
"scripts": {
|
|
"dev": "vite",
|
|
"build": "tsc && vite build",
|
|
"preview": "vite preview"
|
|
}
|
|
}
|