From fed058d4c8861b85c5965b60732e37a361cc9176 Mon Sep 17 00:00:00 2001 From: malvm Date: Wed, 5 Aug 2026 09:50:00 +0400 Subject: [PATCH] fix ui buttons and docker compose --- docker-compose.yml | 7 ++++--- src/yolo_webui/static/app.js | 9 +++++++-- tests/test_deployment.py | 2 +- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 5dcb2f1..2e79c61 100755 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -4,16 +4,17 @@ services: context: . image: yolo-train-webui:latest ports: - # The training API has no built-in user accounts, so expose it locally only. - - "127.0.0.1:8000:8000" + - "8000:8000" volumes: - ./datasets:/workspace/datasets - ./runs:/workspace/runs - ./models:/workspace/models - ./models/.config:/root/.config/Ultralytics environment: - # Optional: tracking URI for external MLflow server (e.g. http://host.docker.internal:5000 or http://your-mlflow-host:5000) + # Tracking URI for external MLflow server. Change host/IP if running MLflow on another machine/container. YOLO_WEBUI_MLFLOW_TRACKING_URI: http://host.docker.internal:5000 + extra_hosts: + - "host.docker.internal:host-gateway" # Uncomment the block below on Linux with NVIDIA GPU to pass the graphics card into the container: # deploy: # resources: diff --git a/src/yolo_webui/static/app.js b/src/yolo_webui/static/app.js index 9251863..9163521 100755 --- a/src/yolo_webui/static/app.js +++ b/src/yolo_webui/static/app.js @@ -24,6 +24,7 @@ document.addEventListener('DOMContentLoaded', () => { const mlflowInputs = document.querySelectorAll('.mlflow-fields input'); const trackingUriInput = document.getElementById('tracking-uri'); const mlflowHeaderLink = document.getElementById('mlflow-header-link'); + const taskSelect = document.getElementById('task'); // --- Dynamic Model Selection --- const standardModels = { @@ -34,6 +35,7 @@ document.addEventListener('DOMContentLoaded', () => { obb: ['yolo11n-obb.pt', 'yolo11s-obb.pt', 'yolo11m-obb.pt', 'yolo11l-obb.pt', 'yolo11x-obb.pt'] }; let discoveredModels = []; + let discoveredDatasets = []; function getDiscoveredModelValue(model) { return model.path || model.name; @@ -99,7 +101,6 @@ document.addEventListener('DOMContentLoaded', () => { } } - const taskSelect = document.getElementById('task'); // Session Controls const sessionSelect = document.getElementById('session-select'); @@ -701,7 +702,7 @@ document.addEventListener('DOMContentLoaded', () => { } // --- Datasets Auto-Discovery --- - let discoveredDatasets = []; + async function loadDatasetsList() { try { @@ -932,6 +933,7 @@ document.addEventListener('DOMContentLoaded', () => { } if (configForm) { + configForm.addEventListener('submit', (e) => e.preventDefault()); configForm.addEventListener('input', () => { const config = getFormConfig(); localStorage.setItem('draft_config', JSON.stringify(config)); @@ -1249,5 +1251,8 @@ document.addEventListener('DOMContentLoaded', () => { loadSessionsList(); connectWebSocket(); connectExportWebSocket(); + }).catch(err => { + console.error('Initial load error:', err); + addLogLine('Ошибка загрузки конфигурации: ' + err.message, 'warning'); }); }); diff --git a/tests/test_deployment.py b/tests/test_deployment.py index f29bc69..7db6d58 100644 --- a/tests/test_deployment.py +++ b/tests/test_deployment.py @@ -15,7 +15,7 @@ def test_compose_is_local_and_does_not_require_nvidia() -> None: assert set(compose["services"].keys()) == {"webui"} webui = compose["services"]["webui"] - assert webui["ports"] == ["127.0.0.1:8000:8000"] + assert webui["ports"] == ["8000:8000"] assert "deploy" not in webui assert "YOLO_WEBUI_MLFLOW_TRACKING_URI" in webui["environment"]