49 lines
No EOL
1 KiB
JavaScript
49 lines
No EOL
1 KiB
JavaScript
class CoordsElement extends HTMLElement {
|
|
#shadow;
|
|
|
|
get lon(){
|
|
return parseFloat(this.getAttribute("lon"))
|
|
}
|
|
|
|
set lon(value){
|
|
this.setAttribute("lon", value)
|
|
}
|
|
|
|
get lat(){
|
|
return parseFloat(this.getAttribute("lat"))
|
|
}
|
|
|
|
set lat(value){
|
|
this.setAttribute("lat", value)
|
|
}
|
|
|
|
connectedCallback(){
|
|
this.#shadow = this.attachShadow({mode: "open"})
|
|
this.updateContent()
|
|
}
|
|
|
|
updateContent(){
|
|
this.#shadow?.replaceChildren(
|
|
this.formatCoordComponent(this.lat),
|
|
", ",
|
|
this.formatCoordComponent(this.lon)
|
|
)
|
|
}
|
|
|
|
formatCoordComponent(coord){
|
|
let [whole, frac] = coord.toString()
|
|
.split(".");
|
|
|
|
console.log(coord, whole, frac)
|
|
|
|
return `${whole || "0"}.${(frac || "00").substring(0, 7)}`
|
|
}
|
|
|
|
static observedAttributes = ["lat", "lon"]
|
|
|
|
attributeChangedCallback(name, oldVal, newVal){
|
|
this.updateContent()
|
|
}
|
|
}
|
|
|
|
customElements.define("camp-coords", CoordsElement) |