Upload files to "frontend/routes"
This commit is contained in:
parent
e031b8583d
commit
c9685c4ce2
1 changed files with 10 additions and 42 deletions
|
|
@ -1,6 +1,7 @@
|
||||||
from fastapi import APIRouter, Request, HTTPException
|
# routes/crop.py
|
||||||
|
|
||||||
|
from fastapi import APIRouter, Request
|
||||||
from fastapi.responses import HTMLResponse
|
from fastapi.responses import HTMLResponse
|
||||||
import api_client
|
|
||||||
import config
|
import config
|
||||||
|
|
||||||
router = APIRouter()
|
router = APIRouter()
|
||||||
|
|
@ -8,44 +9,11 @@ router = APIRouter()
|
||||||
|
|
||||||
@router.get("/crop", response_class=HTMLResponse)
|
@router.get("/crop", response_class=HTMLResponse)
|
||||||
async def crop_ui(request: Request, pc_id: str):
|
async def crop_ui(request: Request, pc_id: str):
|
||||||
"""Interface utilisateur pour le crop du nuage de points"""
|
|
||||||
embed_url = f"{config.BACKEND_URL}/viewer-embed/{pc_id}"
|
|
||||||
return request.app.state.templates.TemplateResponse(
|
|
||||||
"partials/crop.html",
|
|
||||||
{"request": request, "pc_id": pc_id, "embed_url": embed_url},
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
@router.post("/crop", response_class=HTMLResponse)
|
|
||||||
async def crop(request: Request, pc_id: str, box: dict):
|
|
||||||
"""
|
"""
|
||||||
Traite la requête de crop :
|
Retourne le partial crop_section.html pour injection dans #crop-panel.
|
||||||
1. Envoie la box 3D au backend
|
Appelé par le bouton ✂️ dans cloud_list_body.html.
|
||||||
2. Le backend utilise PDAL pour cropper le nuage
|
|
||||||
3. Retourne le nouveau pc_id pour l'affichage
|
|
||||||
"""
|
"""
|
||||||
try:
|
|
||||||
# Envoi de la requête de crop au backend
|
|
||||||
result = await api_client.crop_pointcloud(pc_id, box)
|
|
||||||
|
|
||||||
if result.get("ok"):
|
|
||||||
new_pc_id = result.get("id")
|
|
||||||
return request.app.state.templates.TemplateResponse(
|
return request.app.state.templates.TemplateResponse(
|
||||||
"partials/upload_result.html",
|
"partials/crop_section.html",
|
||||||
{"request": request, "result": {
|
{"request": request, "pc_id": pc_id},
|
||||||
"id": new_pc_id,
|
|
||||||
"filename": f"{pc_id}_cropped.las",
|
|
||||||
"size_mb": result.get("size_mb", 0),
|
|
||||||
"conversion_time_seconds": result.get("conversion_time_seconds", 0),
|
|
||||||
}, "error": None},
|
|
||||||
)
|
|
||||||
else:
|
|
||||||
return request.app.state.templates.TemplateResponse(
|
|
||||||
"partials/upload_result.html",
|
|
||||||
{"request": request, "error": result.get("detail", "Erreur inconnue"), "result": None},
|
|
||||||
)
|
|
||||||
except Exception as e:
|
|
||||||
return request.app.state.templates.TemplateResponse(
|
|
||||||
"partials/upload_result.html",
|
|
||||||
{"request": request, "error": str(e), "result": None},
|
|
||||||
)
|
)
|
||||||
Loading…
Add table
Add a link
Reference in a new issue