Use bootstrap-icons; refactor some JS

This commit is contained in:
Nicolò P 2025-04-01 14:53:02 +02:00
parent aab30f48d4
commit 8945fcb73b
12 changed files with 69 additions and 78 deletions

View File

@ -6,19 +6,6 @@ import './bootstrap.js';
* which should already be in your base.html.twig. * which should already be in your base.html.twig.
*/ */
import './styles/app.css'; import './styles/app.css';
import UI from './ui.js'; import API_CONFIG from "./config.js";
import BIM from './bim.js';
document.addEventListener('DOMContentLoaded', () => { window.API_CONFIG = API_CONFIG;
const container = document.querySelector('#scene');
UI.setScene(container);
const model = UI.ifcLoader(container);
container.ondblclick = () => BIM.activateClipper();
container.onkeydown = event => {
if (event.code === 'Delete' || event.code === 'Backspace') {
BIM.deleteClipper();
}
}
});
console.log('This log comes from assets/app.js - welcome to AssetMapper! 🎉');

View File

@ -1,5 +1,4 @@
import { Controller } from "@hotwired/stimulus" import { Controller } from "@hotwired/stimulus"
import API_CONFIG from "../config.js";
/** /**
* @todo Handle errors * @todo Handle errors
@ -12,7 +11,7 @@ export default class extends Controller {
'buildingForm' 'buildingForm'
]; ];
API_BASE = API_CONFIG.dev; API_BASE = window.API_CONFIG.dev;
async submit(event) { async submit(event) {
event.preventDefault(); event.preventDefault();

View File

@ -1,16 +0,0 @@
import { Controller } from '@hotwired/stimulus';
/*
* This is an example Stimulus controller!
*
* Any element with a data-controller="hello" attribute will cause
* this controller to be executed. The name "hello" comes from the filename:
* hello_controller.js -> "hello"
*
* Delete this file or adapt it for your use!
*/
export default class extends Controller {
connect() {
this.element.textContent = 'Hello Stimulus! Edit me in assets/controllers/hello_controller.js';
}
}

View File

@ -0,0 +1,43 @@
import { Controller } from '@hotwired/stimulus';
import UI from '../ui.js';
import BIM from '../bim.js';
/*
* This is an example Stimulus controller!
*
* Any element with a data-controller="hello" attribute will cause
* this controller to be executed. The name "hello" comes from the filename:
* hello_controller.js -> "hello"
*
* Delete this file or adapt it for your use!
*/
export default class extends Controller {
static targets = ['scene'];
connect() {
}
/**
*
* @param {Element} container
*/
sceneTargetConnected(container) {
UI.setScene(container);
const model = UI.ifcLoader(container);
container.ondblclick = () => BIM.activateClipper();
container.onkeydown = event => {
console.log(event);
if (event.code === 'Delete' || event.code === 'Backspace') {
BIM.deleteClipper();
}
}
}
/**
*
* @param {Event} event
*/
keyboard(event) {
console.log(event);
}
}

View File

@ -1,26 +0,0 @@
'use strict';
import UI from './ui.js';
import BIM from './bim.js';
import { Application } from '@hotwired/stimulus';
import FormController from './controllers/form_controller.js';
document.addEventListener('DOMContentLoaded', () => {
// Register Stimulus controllers
initStimulus();
const container = document.querySelector('#scene');
UI.setScene(container);
const model = UI.ifcLoader(container);
container.ondblclick = () => BIM.activateClipper();
container.onkeydown = event => {
if (event.code === 'Delete' || event.code === 'Backspace') {
BIM.deleteClipper();
}
}
});
function initStimulus() {
window.Stimulus = Application.start();
Stimulus.register('form', FormController);
}

View File

@ -1,4 +1,4 @@
@import url('../vendor/fontawesome-free/css/all.min.css'); @import url('../vendor/bootstrap-icons/font/bootstrap-icons.min.css');
@import url('../vendor/bulma/css/bulma.min.css'); @import url('../vendor/bulma/css/bulma.min.css');
#scene { #scene {

4
composer.lock generated
View File

@ -9886,7 +9886,7 @@
], ],
"aliases": [], "aliases": [],
"minimum-stability": "stable", "minimum-stability": "stable",
"stability-flags": [], "stability-flags": {},
"prefer-stable": true, "prefer-stable": true,
"prefer-lowest": false, "prefer-lowest": false,
"platform": { "platform": {
@ -9894,6 +9894,6 @@
"ext-ctype": "*", "ext-ctype": "*",
"ext-iconv": "*" "ext-iconv": "*"
}, },
"platform-dev": [], "platform-dev": {},
"plugin-api-version": "2.6.0" "plugin-api-version": "2.6.0"
} }

View File

@ -338,4 +338,8 @@ return [
'@thatopen/components-front' => [ '@thatopen/components-front' => [
'version' => '2.4.4', 'version' => '2.4.4',
], ],
'bootstrap-icons/font/bootstrap-icons.min.css' => [
'version' => '1.11.3',
'type' => 'css',
],
]; ];

View File

@ -7,8 +7,8 @@
{% include 'partials/navbar.html.twig' %} {% include 'partials/navbar.html.twig' %}
<div class="columns"> <div class="columns">
<div class="column is-full"> <div class="column is-full" data-controller="scene" data-action="keydown->scene#keyboard:prevent">
<div id="scene"></div> <div id="scene" data-scene-target="scene"></div>
<div id="ui" data-theme="light" data-controller="form"> <div id="ui" data-theme="light" data-controller="form">
<aside class="menu ml-4 mt-3" data-controller="clipper"> <aside class="menu ml-4 mt-3" data-controller="clipper">
<p class="menu-label is-size-6">Progetto</p> <p class="menu-label is-size-6">Progetto</p>
@ -21,7 +21,7 @@
accept=".ifc" /> accept=".ifc" />
<span class="file-cta"> <span class="file-cta">
<span class="file-icon"> <span class="file-icon">
<i class="fas fa-upload"></i> <i class="bi bi-upload"></i>
</span> </span>
<span class="file-label">Apri file IFC...</span> <span class="file-label">Apri file IFC...</span>
</span> </span>
@ -37,7 +37,7 @@
<button class="button is-primary"> <button class="button is-primary">
Salva Salva
<span class="icon ml-1"> <span class="icon ml-1">
<i class="fa fa-save"></i> <i class="bi bi-floppy"></i>
</span> </span>
</button> </button>
</div> </div>

View File

@ -2,7 +2,7 @@
<div class="navbar-brand"> <div class="navbar-brand">
<a class="navbar-item" href="/"> <a class="navbar-item" href="/">
<span class="icon mr-2"> <span class="icon mr-2">
<i class="fas fa-home"></i> <i class="bi bi-house-fill"></i>
</span> </span>
WebArchi WebArchi
</a> </a>

View File

@ -2,13 +2,13 @@
<div class="dropdown-trigger" data-action="click->dropdown#toggle"> <div class="dropdown-trigger" data-action="click->dropdown#toggle">
<a class="button is-primary"> <a class="button is-primary">
<span class="icon"> <span class="icon">
<i class="fa fa-user-circle"></i> <i class="bi bi-person-circle"></i>
</span> </span>
<span class="pl-3"> <span class="pl-3">
{{ app.user.useridentifier }} {{ app.user.useridentifier }}
</span> </span>
<span class="icon"> <span class="icon">
<i class="fa fa-caret-down" data-dropdown-target="caret"></i> <i class="bi bi-caret-down-fill" data-dropdown-target="caret"></i>
</span> </span>
</a> </a>
</div> </div>
@ -16,34 +16,34 @@
<div class="dropdown-content"> <div class="dropdown-content">
<a href="/user" class="dropdown-item"> <a href="/user" class="dropdown-item">
<span class="icon is-small"> <span class="icon is-small">
<i class="fa fa-user"></i> <i class="bi bi-person-fill"></i>
</span> </span>
<span class="pl-2 is-size-6">Profilo</span> <span class="pl-2 is-size-6">Profilo</span>
</a> </a>
<a href="/projects" class="dropdown-item"> <a href="/projects" class="dropdown-item">
<span class="icon is-small"> <span class="icon is-small">
<i class="fa fa-pen-nib"></i> <i class="bi bi-vector-pen"></i>
</span> </span>
<span class="pl-2 is-size-6">Progetti</span> <span class="pl-2 is-size-6">Progetti</span>
</a> </a>
{% if is_granted('ROLE_ADMIN') %} {% if is_granted('ROLE_ADMIN') %}
<a href="/admin" class="dropdown-item"> <a href="/admin" class="dropdown-item">
<span class="icon is-small"> <span class="icon is-small">
<i class="fa fa-cogs"></i> <i class="bi bi-gear-fill"></i>
</span> </span>
<span class="pl-2 is-size-6">Admin</span> <span class="pl-2 is-size-6">Admin</span>
</a> </a>
{% endif %} {% endif %}
<a href="https://git.electricmandarine.cloud/nicolo/ifc-web-app/issues" class="dropdown-item"> <a href="https://git.electricmandarine.cloud/nicolo/ifc-web-app/issues" class="dropdown-item">
<span class="icon is-small"> <span class="icon is-small">
<i class="fa fa-bug"></i> <i class="bi bi-bug-fill"></i>
</span> </span>
<span class="pl-2 is-size-6">Segnala un bug</span> <span class="pl-2 is-size-6">Segnala un bug</span>
</a> </a>
<hr class="dropdown-divider" /> <hr class="dropdown-divider" />
<a href="/logout" class="button is-link is-fullwidth"> <a href="/logout" class="button is-link is-fullwidth">
<span class="icon is-small"> <span class="icon is-small">
<i class="fa fa-sign-out"></i> <i class="bi bi-box-arrow-right"></i>
</span> </span>
<span class="has-text-centered"> Logout</span> <span class="has-text-centered"> Logout</span>
</a> </a>

View File

@ -11,8 +11,8 @@
<div class="card-content"> <div class="card-content">
<div class="media"> <div class="media">
<div class="media-left"> <div class="media-left">
<span class="icon is-large"> <span class="icon is-large is-size-4">
<i class="fa fa-user-circle fa-2x"></i> <i class="bi bi-person-circle"></i>
</span> </span>
</div> </div>
<div class="media-content"> <div class="media-content">