Переделана навигация к датчикам, добавлена работа поиска тултипов на модели, добавлен функционал перехода из дашборда и истории тревог к датчику с тревогой на 3д модели

This commit is contained in:
2026-02-03 16:42:15 +03:00
parent eccc564cc7
commit 458222817e
19 changed files with 5111 additions and 61 deletions

View File

@@ -12,7 +12,7 @@ import { aggregateChartDataByDays } from '../../lib/chartDataAggregator'
const Dashboard: React.FC = () => {
const router = useRouter()
const { currentObject, setCurrentSubmenu, closeMonitoring, closeFloorNavigation, closeNotifications } = useNavigationStore()
const { currentObject, setCurrentSubmenu, closeMonitoring, closeFloorNavigation, closeNotifications, navigateToSensor } = useNavigationStore()
const objectTitle = currentObject?.title
const [dashboardAlerts, setDashboardAlerts] = useState<any[]>([])
@@ -119,6 +119,27 @@ const Dashboard: React.FC = () => {
setCurrentSubmenu(null)
router.push('/navigation')
}
const handleGoTo3D = async (alert: any, viewType: 'building' | 'floor') => {
// Используем alert.name как идентификатор датчика (например, "GA-11")
const sensorId = alert.serial_number || alert.name
if (!sensorId) {
console.warn('[Dashboard] Alert missing sensor identifier:', alert)
return
}
const sensorSerialNumber = await navigateToSensor(
sensorId,
alert.floor || null,
viewType
)
if (sensorSerialNumber) {
// Переходим на страницу навигации с параметром focusSensorId
router.push(`/navigation?focusSensorId=${encodeURIComponent(sensorSerialNumber)}`)
}
}
const handleSensorTypeChange = (sensorType: string) => {
setSelectedSensorType(sensorType)
@@ -266,6 +287,7 @@ const Dashboard: React.FC = () => {
<th style={interSemiboldStyle} className="text-left text-white text-sm py-3">Серьезность</th>
<th style={interSemiboldStyle} className="text-left text-white text-sm py-3">Дата</th>
<th style={interSemiboldStyle} className="text-left text-white text-sm py-3">Решен</th>
<th style={interSemiboldStyle} className="text-center text-white text-sm py-3">3D Вид</th>
</tr>
</thead>
<tbody>
@@ -287,6 +309,28 @@ const Dashboard: React.FC = () => {
)
}
</td>
<td className="py-3">
<div className="flex items-center justify-center gap-2">
<button
onClick={() => handleGoTo3D(alert, 'building')}
className="p-1.5 rounded hover:bg-blue-600/20 transition-colors group"
title="Показать на общей модели"
>
<img src="/icons/Building3D.png" alt="Здание" className="w-5 h-5 opacity-70 group-hover:opacity-100" />
</button>
<button
onClick={() => handleGoTo3D(alert, 'floor')}
className="p-1.5 rounded hover:bg-blue-600/20 transition-colors group"
title="Показать на этаже"
>
<img
src="/icons/Floor3D.png"
alt="Этаж"
className="w-5 h-5 opacity-70 group-hover:opacity-100"
/>
</button>
</div>
</td>
</tr>
))}
</tbody>