/**
* @module components/Geolocation.js
* @name Geolocation
* @copyright 2023 3Liz
* @author BOISTEAULT Nicolas
* @license MPL-2.0
*/
import {mainLizmap, mainEventDispatcher} from '../modules/Globals.js';
import {html, render} from 'lit-html';
/**
* @class
* @name Geolocation
* @augments HTMLElement
*/
export default class Geolocation extends HTMLElement {
constructor() {
super();
}
connectedCallback() {
// Display
const mainTemplate = () => html`
<div class="menu-content">
<div class="button-bar">
<button class="btn btn-sm ${mainLizmap.geolocation.isTracking ? 'active btn-success' : ''}" @click=${ () => mainLizmap.geolocation.toggleTracking()} ?disabled=${mainLizmap.geolocation.isTracking && mainLizmap.geolocation.firstGeolocation}><span class="icon"></span>${mainLizmap.geolocation.isTracking ? (mainLizmap.geolocation.firstGeolocation ? lizDict['geolocate.toolbar.waiting'] : lizDict['geolocate.toolbar.stop']) : lizDict['geolocate.toolbar.start']}</button>
<button class="btn btn-sm" @click=${ () => mainLizmap.geolocation.center()} ?disabled=${!mainLizmap.geolocation.isTracking | mainLizmap.geolocation.isBind | mainLizmap.geolocation.firstGeolocation}><span class="icon"></span>${lizDict['geolocate.toolbar.center']}</button>
<div class="input-prepend input-append">
<button class="btn btn-sm ${mainLizmap.geolocation.isBind ? 'active btn-success' : ''}" @click=${() => mainLizmap.geolocation.toggleBind()} ?disabled=${!mainLizmap.geolocation.isTracking | mainLizmap.geolocation.firstGeolocation}><span class="icon"></span>${lizDict['geolocate.toolbar.bind']}</button>
<input class="input-mini" type="number" min="1" ?disabled=${!mainLizmap.geolocation.isBind || !mainLizmap.geolocation.isTracking} value="${mainLizmap.geolocation.bindIntervalInSecond}" @input=${(event) => mainLizmap.geolocation.bindIntervalInSecond = parseInt(event.target.value)}>
<span class="add-on">s</span>
</div>
</div>
<div class="geolocation-infos">
<div>
<small class="geolocation-coords">
<div>X : ${mainLizmap.geolocation.position ? mainLizmap.geolocation.position[0].toString() : ''}</div>
<div>Y : ${mainLizmap.geolocation.position ? mainLizmap.geolocation.position[1].toString() : ''}</div>
</small>
</div>
<div>
<small class="geolocation-accuracy">
<div>${lizDict['geolocate.infos.accuracy']} : ${mainLizmap.geolocation.accuracy}</div>
</small>
</div>
</div>
</div>`;
render(mainTemplate(), this);
mainEventDispatcher.addListener(
() => {
render(mainTemplate(), this);
},
[
'geolocation.isTracking',
'geolocation.firstGeolocation',
'geolocation.isBind',
'geolocation.position',
'geolocation.accuracy'
]
);
}
disconnectedCallback() {
}
}