Start using Stimulus
This commit is contained in:
parent
fbb9efc4c7
commit
8ef3331b25
@ -11,7 +11,8 @@
|
|||||||
{
|
{
|
||||||
"imports": {
|
"imports": {
|
||||||
"three": "./js/vendor/three/build/three.module.js",
|
"three": "./js/vendor/three/build/three.module.js",
|
||||||
"@photo-sphere-viewer/core": "./js/vendor/@photo-sphere-viewer/core/index.module.js"
|
"@photo-sphere-viewer/core": "./js/vendor/@photo-sphere-viewer/core/index.module.js",
|
||||||
|
"@hotwired/stimulus": "./js/vendor/@hotwired/stimulus/dist/stimulus.js"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
@ -20,7 +21,7 @@
|
|||||||
<script src="js/index.js" type="module"></script>
|
<script src="js/index.js" type="module"></script>
|
||||||
<title>WebGIS Isola di Capri</title>
|
<title>WebGIS Isola di Capri</title>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body data-controller="menu">
|
||||||
<nav class="navbar mb-0" role="navigation">
|
<nav class="navbar mb-0" role="navigation">
|
||||||
<div class="navbar-brand">
|
<div class="navbar-brand">
|
||||||
<a href="/" class="navbar-item is-size-5 has-text-dark ml-4" title="Torna alla home page">
|
<a href="/" class="navbar-item is-size-5 has-text-dark ml-4" title="Torna alla home page">
|
||||||
@ -40,7 +41,8 @@
|
|||||||
</div>
|
</div>
|
||||||
<hr class="navbar-divider">
|
<hr class="navbar-divider">
|
||||||
<div class="navbar-end pb-1 pt-1" id="nav-menu">
|
<div class="navbar-end pb-1 pt-1" id="nav-menu">
|
||||||
<button class="navbar-item button is-size-5 is-white" role="button" id="siti">
|
<button class="navbar-item button is-size-5 is-white" role="button" id="siti"
|
||||||
|
data-action="click->menu#toggleMenu" data-id="siti">
|
||||||
Beni archeologici
|
Beni archeologici
|
||||||
</button>
|
</button>
|
||||||
<button class="navbar-item button is-size-5 is-white" role="button" id="non-conserv">
|
<button class="navbar-item button is-size-5 is-white" role="button" id="non-conserv">
|
||||||
@ -61,10 +63,11 @@
|
|||||||
<div class="loading loading-lg"></div>
|
<div class="loading loading-lg"></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="main columns">
|
<div class="main columns">
|
||||||
<div class="column is-hidden is-4 is-3-widescreen is-4-desktop is-5-mobile is-overlay has-background-white-ter" id="menu">
|
<div class="column is-hidden is-4 is-4-desktop is-5-mobile is-overlay has-background-white-ter" id="menu"
|
||||||
|
data-menu-target="menu">
|
||||||
<aside class="menu ml-4">
|
<aside class="menu ml-4">
|
||||||
<button title="Chiudi menu" class="delete is-pulled-right" id="close-menu"></button>
|
<button title="Chiudi menu" class="delete is-pulled-right" id="close-menu"></button>
|
||||||
<p class="menu-label is-size-5 mt-2 is-clickable">
|
<p class="menu-label is-size-5 mt-2 is-clickable" data-action="click->menu#toggle" data-id="siti">
|
||||||
<span class="icon pr-2">
|
<span class="icon pr-2">
|
||||||
<img class="image" src="img/icons/siti_menu.png"/>
|
<img class="image" src="img/icons/siti_menu.png"/>
|
||||||
</span>
|
</span>
|
||||||
@ -73,7 +76,7 @@
|
|||||||
<i class="fa fa-chevron-right"></i>
|
<i class="fa fa-chevron-right"></i>
|
||||||
</span>
|
</span>
|
||||||
</p>
|
</p>
|
||||||
<ul class="menu-list is-hidden" id="siti-list">
|
<ul class="menu-list is-hidden" id="siti-list" data-menu-target="list">
|
||||||
<li>
|
<li>
|
||||||
Anacapri
|
Anacapri
|
||||||
<ul id="siti-anacapri-sub">
|
<ul id="siti-anacapri-sub">
|
||||||
@ -144,7 +147,7 @@
|
|||||||
<i class="fa fa-chevron-right"></i>
|
<i class="fa fa-chevron-right"></i>
|
||||||
</span>
|
</span>
|
||||||
</p>
|
</p>
|
||||||
<ul class="menu-list is-hidden" id="not-conserved-list">
|
<ul class="menu-list is-hidden" id="not-conserved-list" data-menu-target="list">
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
<p class="menu-label is-size-5 is-clickable">
|
<p class="menu-label is-size-5 is-clickable">
|
||||||
|
46
webgis/js/controllers/menu_controller.js
Normal file
46
webgis/js/controllers/menu_controller.js
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
import { Controller } from "@hotwired/stimulus"
|
||||||
|
|
||||||
|
export default class extends Controller {
|
||||||
|
static targets = ['list', 'menu'];
|
||||||
|
|
||||||
|
toggleMenu(event) {
|
||||||
|
const target = event.currentTarget;
|
||||||
|
const id = target.getAttribute('data-id');
|
||||||
|
|
||||||
|
this.menuTarget.classList.toggle('is-hidden');
|
||||||
|
|
||||||
|
this.openList(`#${id}-list`);
|
||||||
|
|
||||||
|
console.log(this.menuTarget);
|
||||||
|
}
|
||||||
|
|
||||||
|
openList(id) {
|
||||||
|
document.querySelector(id).classList.remove('is-hidden');
|
||||||
|
}
|
||||||
|
|
||||||
|
toggle(event) {
|
||||||
|
const target = event.currentTarget;
|
||||||
|
const targetIcon = target.querySelector('.fa');
|
||||||
|
const id = target.getAttribute('data-id');
|
||||||
|
const listId = `${id}-list`;
|
||||||
|
const list = this.listTargets.find(t => t.id === listId);
|
||||||
|
|
||||||
|
if (list) {
|
||||||
|
list.classList.toggle('is-hidden');
|
||||||
|
}
|
||||||
|
|
||||||
|
this.toggleIcon(targetIcon);
|
||||||
|
}
|
||||||
|
|
||||||
|
toggleIcon(icon) {
|
||||||
|
if (icon.classList.contains('fa-chevron-right')) {
|
||||||
|
icon.classList.remove('fa-chevron-right');
|
||||||
|
icon.classList.add('fa-chevron-down');
|
||||||
|
} else {
|
||||||
|
icon.classList.add('fa-chevron-right');
|
||||||
|
icon.classList.remove('fa-chevron-down');
|
||||||
|
}
|
||||||
|
|
||||||
|
return icon;
|
||||||
|
}
|
||||||
|
}
|
@ -1,7 +1,12 @@
|
|||||||
import GIS from './gis.js';
|
import GIS from './gis.js';
|
||||||
import UI from './ui.js';
|
import UI from './ui.js';
|
||||||
|
import { Application } from '@hotwired/stimulus';
|
||||||
|
import MenuController from './controllers/menu_controller.js';
|
||||||
|
|
||||||
document.addEventListener('DOMContentLoaded', async () => {
|
document.addEventListener('DOMContentLoaded', async () => {
|
||||||
|
// Register Stimulus controllers
|
||||||
|
initStimulus();
|
||||||
|
|
||||||
let progress = document.querySelector('progress');
|
let progress = document.querySelector('progress');
|
||||||
const init = await GIS.initMap('map');
|
const init = await GIS.initMap('map');
|
||||||
progress.classList.add('is-hidden');
|
progress.classList.add('is-hidden');
|
||||||
@ -12,8 +17,8 @@ document.addEventListener('DOMContentLoaded', async () => {
|
|||||||
GIS.toggleSpherical(map);
|
GIS.toggleSpherical(map);
|
||||||
|
|
||||||
UI.addCenterMapControl(map, GIS.CENTER_COORDS, GIS.INIT_ZOOM);
|
UI.addCenterMapControl(map, GIS.CENTER_COORDS, GIS.INIT_ZOOM);
|
||||||
UI.toggleMenu('siti', 'siti-list');
|
//UI.toggleMenu('siti', 'siti-list');
|
||||||
UI.toggleMenu('rinvenimenti', 'rinvenimenti-list');
|
//UI.toggleMenu('rinvenimenti', 'rinvenimenti-list');
|
||||||
UI.toggleBurger('navbar-burger');
|
UI.toggleBurger('navbar-burger');
|
||||||
UI.sitesMenu('.menu-list', map, sites);
|
UI.sitesMenu('.menu-list', map, sites);
|
||||||
|
|
||||||
@ -21,3 +26,8 @@ document.addEventListener('DOMContentLoaded', async () => {
|
|||||||
document.querySelector('#menu').classList.add('is-hidden');
|
document.querySelector('#menu').classList.add('is-hidden');
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
|
|
||||||
|
function initStimulus() {
|
||||||
|
window.Stimulus = Application.start();
|
||||||
|
Stimulus.register("menu", MenuController);
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user