diff --git a/assets/bim.js b/assets/bim.js
index 144ecb3..cae2c6d 100644
--- a/assets/bim.js
+++ b/assets/bim.js
@@ -152,8 +152,8 @@ BIM.setupHighligther = async function (model) {
li.innerHTML = `
- Name: ${testProp['Name'].value}
-
- Type: ${testProp['ObjectType']?.value}
-
- Tag: ${testProp['Tag'].value}
+ - Type: ${testProp['ObjectType']?.value ?? 'N/A'}
+
- Tag: ${testProp['Tag']?.value ?? 'N/A'}
`;
}
diff --git a/assets/controllers/modal_controller.js b/assets/controllers/modal_controller.js
new file mode 100644
index 0000000..ddeacf2
--- /dev/null
+++ b/assets/controllers/modal_controller.js
@@ -0,0 +1,18 @@
+import { Controller } from "@hotwired/stimulus"
+
+export default class ModalController extends Controller {
+ static targets = ['close', 'modal'];
+
+ current(id) {
+ return this.modalTargets.find(m => m.getAttribute('data-id') === id);
+ }
+
+ open() {
+ console.log('Modal: I am triggered...');
+ this.modalTarget.classList.add('is-active');
+ }
+
+ close() {
+ this.modalTarget.classList.remove('is-active');
+ }
+}
diff --git a/assets/controllers/scene_controller.js b/assets/controllers/scene_controller.js
index 9ab2b7d..8f195cc 100644
--- a/assets/controllers/scene_controller.js
+++ b/assets/controllers/scene_controller.js
@@ -1,5 +1,5 @@
import { Controller } from '@hotwired/stimulus';
-import UI from '../ui.js';
+//import UI from '../ui.js';
import BIM from '../bim.js';
/*
@@ -11,19 +11,18 @@ import BIM from '../bim.js';
*
* Delete this file or adapt it for your use!
*/
-export default class extends Controller {
- static targets = ['scene'];
+export default class SceneController extends Controller {
+ static targets = ['scene', 'load', 'building', 'modal'];
connect() {
}
/**
- *
* @param {Element} container
*/
sceneTargetConnected(container) {
- UI.setScene(container);
- const model = UI.ifcLoader(container);
+ this.setScene(container);
+ //this.model = this.loadIfc();
container.ondblclick = () => BIM.activateClipper();
container.onkeydown = event => {
console.log(event);
@@ -32,7 +31,31 @@ export default class extends Controller {
}
}
}
+ /**
+ * @param {Element} container
+ */
+ setScene(container) {
+ BIM.createScene(container);
+ }
+ /**
+ * @param {Element} container
+ * @param {String} btnId
+ */
+ async loadIfc(event) {
+ this.openModal();
+ const nameInput = this.buildingTarget;
+ let model = null;
+ const files = event.target.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', '');
+ this.closeModal();
+
+ return model;
+ }
/**
*
* @param {Event} event
@@ -40,4 +63,16 @@ export default class extends Controller {
keyboard(event) {
console.log(event);
}
+ /**
+ * @todo Should be handled by ModalController...
+ */
+ openModal() {
+ this.modalTarget.classList.add('is-active');
+ }
+ /**
+ * @todo Should be handled by ModalController...
+ */
+ closeModal() {
+ this.modalTarget.classList.remove('is-active');
+ }
}
\ No newline at end of file
diff --git a/templates/home/index.html.twig b/templates/home/index.html.twig
index 0a3c799..93886c9 100644
--- a/templates/home/index.html.twig
+++ b/templates/home/index.html.twig
@@ -7,7 +7,7 @@
{% include 'partials/navbar.html.twig' %}