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"