From 96bb0388a86d6b3995304d8ca47f7f8915ba8505 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=B2=20P?= <nicolo.paraciani@cnr.it> Date: Wed, 2 Apr 2025 17:29:54 +0200 Subject: [PATCH] Include IFC file name TODO: move UI routines to Stimulus --- assets/controllers/form_controller.js | 7 ++++++- assets/ui.js | 4 ++++ src/Controller/ProjectController.php | 1 + templates/home/index.html.twig | 1 + 4 files changed, 12 insertions(+), 1 deletion(-) diff --git a/assets/controllers/form_controller.js b/assets/controllers/form_controller.js index 7c9e670..a7e6944 100644 --- a/assets/controllers/form_controller.js +++ b/assets/controllers/form_controller.js @@ -16,7 +16,12 @@ export default class extends Controller { if (event.currentTarget === this.buildingFormTarget) { const options = this.prepare( - JSON.stringify({name: this.buildingTarget.value}), + JSON.stringify( + { + name: this.buildingTarget.value, + ifc: localStorage.getItem('loaded-ifc'), + } + ), 'POST' ); diff --git a/assets/ui.js b/assets/ui.js index 50584fe..1fc6f58 100644 --- a/assets/ui.js +++ b/assets/ui.js @@ -3,6 +3,7 @@ import BIM from './bim.js'; /** + * @todo Move to Stimulus? * @namespace UI */ const UI = {}; @@ -20,12 +21,15 @@ UI.setScene = function (container) { */ UI.ifcLoader = function (container, btnId = 'load-ifc') { const loadBtn = document.querySelector(`#${btnId}`); + const nameInput = document.querySelector('[data-form-target="building"]'); let model = null; loadBtn.onchange = async function () { const files = this.files; model = await BIM.loadIfc(new Uint8Array(await files[0].arrayBuffer()), files[0].name); // Set a raycaster to select objects BIM.setupHighligther(model); + localStorage.setItem('loaded-ifc', files[0].name); + nameInput.value = files[0].name.replace('.ifc', ''); } return model; diff --git a/src/Controller/ProjectController.php b/src/Controller/ProjectController.php index 10152ff..5ac60d0 100644 --- a/src/Controller/ProjectController.php +++ b/src/Controller/ProjectController.php @@ -54,6 +54,7 @@ final class ProjectController extends AbstractController $project = new Project(); $project->setUser($user); $project->setBuilding($building); + $project->setIfc($data->get('ifc')); $project->setCreatedAt($datetime); $project->setLastModified($datetime); $em->persist($project); diff --git a/templates/home/index.html.twig b/templates/home/index.html.twig index e9d32ac..0a3c799 100644 --- a/templates/home/index.html.twig +++ b/templates/home/index.html.twig @@ -28,6 +28,7 @@ </label> </div> <form class="form" data-form-target="buildingForm" data-action="submit->form#submit" method="post"> + <label class="label">Nome edificio</label> <div class="field has-addons"> <div class="control"> <input class="input" type="text"