Files
insar-management-system-v2/frontend/src/components/panels/RadarDataRow.jsx
T

83 lines
3.4 KiB
React

import { memo } from 'react';
import { getPreviewStatusClass, getPreviewStatusText } from '../../utils/appUiHelpers';
function RadarDataRow({
item,
language,
isAdmin,
isRebuilding,
onFlyTo,
onShowDataInfo,
onTogglePreview,
onRebuildPreview,
onToggleLayer,
}) {
return (
<li className="data-item" onClick={() => onFlyTo(item)}>
<span className="data-item-name" title={item.displayName}>
{item.displayName}
</span>
<div className="data-item-controls">
<span
className={`preview-status-chip ${getPreviewStatusClass(item)}`}
title={item.previewMessage || item.previewError || '源影像预览缓存状态'}
>
{getPreviewStatusText(item)}
</span>
<button
className="data-info-btn"
type="button"
title={language === 'en' ? 'View source data details' : '查看影像信息'}
onClick={(event) => onShowDataInfo(item, event)}
>
{language === 'en' ? 'Info' : '详情'}
</button>
<button
className={`data-preview-btn ${item.isPreviewVisible ? 'active' : ''}`}
type="button"
title={language === 'en' ? 'Show or hide source preview on map' : '在地图上显示/隐藏源影像缓存'}
onClick={(event) => {
event.stopPropagation();
onTogglePreview(item.id);
}}
>
{language === 'en' ? 'Preview' : '影像'}
</button>
{isAdmin && (
<button
className="data-rebuild-btn"
type="button"
title={language === 'en' ? 'Rebuild source preview cache' : '管理员重建源影像预览缓存'}
disabled={isRebuilding}
onClick={(event) => onRebuildPreview(item.id, event)}
>
{isRebuilding
? (language === 'en' ? 'Rebuilding' : '重建中')
: (language === 'en' ? 'Rebuild' : '重建')}
</button>
)}
{item.is_envi_processed && (
<span className="envi-status" title={language === 'en' ? 'Processed to ENVI format' : '已处理为ENVI格式'}>E</span>
)}
<span
className={`orbit-status ${item.has_orbit_data ? 'has-orbit' : ''}`}
title={item.has_orbit_data
? (language === 'en' ? 'Precise orbit available' : '有精轨')
: (language === 'en' ? 'Precise orbit unavailable' : '无精轨')}
>
</span>
<input
type="checkbox"
checked={item.isVisible}
onChange={() => onToggleLayer(item.id)}
onClick={(event) => event.stopPropagation()}
title={language === 'en' ? 'Show or hide on map' : '在地图上显示/隐藏'}
/>
</div>
</li>
);
}
export default memo(RadarDataRow);