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