обновление бизнес логики
This commit is contained in:
@@ -173,7 +173,7 @@ const NavigationPage: React.FC = () => {
|
||||
const urlFocusSensorId = searchParams.get('focusSensorId')
|
||||
const objectId = currentObject.id || urlObjectId
|
||||
const objectTitle = currentObject.title || urlObjectTitle
|
||||
const [selectedModelPath, setSelectedModelPath] = useState<string>(urlModelPath || '')
|
||||
const [selectedModelPath, setSelectedModelPath] = useState<string>('')
|
||||
|
||||
|
||||
const handleModelLoaded = useCallback(() => {
|
||||
@@ -191,12 +191,8 @@ const NavigationPage: React.FC = () => {
|
||||
if (selectedModelPath) {
|
||||
setIsModelReady(false);
|
||||
setModelError(null);
|
||||
// Сохраняем выбранную модель в URL для восстановления при возврате
|
||||
const params = new URLSearchParams(searchParams.toString());
|
||||
params.set('modelPath', selectedModelPath);
|
||||
window.history.replaceState(null, '', `?${params.toString()}`);
|
||||
}
|
||||
}, [selectedModelPath, searchParams]);
|
||||
}, [selectedModelPath]);
|
||||
|
||||
useEffect(() => {
|
||||
if (urlObjectId && (!currentObject.id || currentObject.id !== urlObjectId)) {
|
||||
@@ -204,12 +200,45 @@ const NavigationPage: React.FC = () => {
|
||||
}
|
||||
}, [urlObjectId, urlObjectTitle, currentObject.id, currentObject.title, setCurrentObject])
|
||||
|
||||
// Восстановление выбранной модели из URL при загрузке страницы
|
||||
// Восстановление выбранной модели из URL при загрузке страницы (только если переход с focusSensorId)
|
||||
useEffect(() => {
|
||||
if (urlModelPath && !selectedModelPath) {
|
||||
// Восстанавливаем modelPath только если есть focusSensorId (переход к конкретному датчику)
|
||||
if (urlModelPath && urlFocusSensorId && !selectedModelPath) {
|
||||
setSelectedModelPath(urlModelPath);
|
||||
}
|
||||
}, [urlModelPath, selectedModelPath])
|
||||
}, [urlModelPath, urlFocusSensorId, selectedModelPath])
|
||||
|
||||
// Автоматическая загрузка модели с order=0 при пустом selectedModelPath
|
||||
useEffect(() => {
|
||||
const loadDefaultModel = async () => {
|
||||
// Если модель уже выбрана или нет objectId - пропускаем
|
||||
if (selectedModelPath || !objectId) return;
|
||||
|
||||
try {
|
||||
console.log('[NavigationPage] Auto-loading model with order=0 for object:', objectId);
|
||||
const response = await fetch(`/api/get-zones?object_id=${objectId}`);
|
||||
const data = await response.json();
|
||||
|
||||
if (data.success && Array.isArray(data.data)) {
|
||||
// Сортируем по order и берём первую
|
||||
const sorted = data.data.slice().sort((a: any, b: any) => {
|
||||
const oa = typeof a.order === 'number' ? a.order : 0;
|
||||
const ob = typeof b.order === 'number' ? b.order : 0;
|
||||
return oa - ob;
|
||||
});
|
||||
|
||||
if (sorted.length > 0 && sorted[0].model_path) {
|
||||
console.log('[NavigationPage] Auto-selected model with order=0:', sorted[0].model_path);
|
||||
setSelectedModelPath(sorted[0].model_path);
|
||||
}
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('[NavigationPage] Failed to load default model:', error);
|
||||
}
|
||||
};
|
||||
|
||||
loadDefaultModel();
|
||||
}, [selectedModelPath, objectId])
|
||||
|
||||
useEffect(() => {
|
||||
const loadDetectors = async () => {
|
||||
|
||||
Reference in New Issue
Block a user