thematic-earth
Version:
HTML-based, whole-Earth thematic maps using locally hosted data layers
2 lines • 6.26 kB
JavaScript
/* Copyright (c) 2023 Read Write Tools. Legal use subject to the Thematic Earth Software License Agreement. */
import BasePanel from'../panels/base-panel.class.js';import EarthPosition from'../astronomy/earth-position.class.js';import*as CB from'../menu/menu-callbacks.js';export default class AstronomyPanel extends BasePanel{constructor(e){super(e),Object.seal(this)}registerBroadcasters(e){switch(e){case'season':this.registerSeasonBroadcasters();break;case'time-of-day':this.registerTimeOfDayBroadcasters()}}registerSeasonBroadcasters(){var e=this.getElementById('season-dmy-utc');e.addEventListener('change',(()=>{var t=CB.fromUserDayMonthYear(e.value),i=CB.toUserDayMonthYear(t);e.value=i,this.signal.broadcast('menu/seasonDayMonthYearUTC',t)}));var t=this.getElementById('season-special-day');t.addEventListener('change',(()=>{this.signal.broadcast('menu/seasonSpecialDay',t.value)}));var i=this.getElementById('season-day-of-year');i.addEventListener('change',(()=>{this.signal.broadcast('menu/seasonDayOfYear',i.value)}));var s=this.getElementById('season-day-of-year-slider');s.addEventListener('input',(()=>{this.signal.broadcast('menu/seasonDayOfYear',s.value)}))}registerTimeOfDayBroadcasters(){var e=this.getElementById('time-of-day-hms');e.addEventListener('change',(()=>{var t=CB.fromUserTimeOfDay(e.value),i=CB.toUserTimeOfDay(t);this.signal.broadcast('menu/timeOfDayHMS',i)}));var t=this.getElementById('time-of-day-hms-slider');t.addEventListener('input',(()=>{var e=CB.fromSliderTimeOfDay(t.value),i=CB.toUserTimeOfDay(e);this.signal.broadcast('menu/timeOfDayHMS',i)}));var i=this.getElementById('timezone-offset');i.addEventListener('change',(()=>{this.signal.broadcast('menu/timezoneOffset',i.value)}))}registerReceivers(e){switch(e){case'season':this.registerSeasonReceivers();break;case'time-of-day':this.registerTimeOfDayReceivers();break;case'equation-of-time':this.registerEquationOfTimeReceivers();break;case'solar-events':this.registerSolarEventsReceivers();break;case'geocentric-coords':this.registerGeocentricCoordsReceivers();break;case'topocentric-coords':this.registerTopocentricCoordsReceivers()}}registerSeasonReceivers(){this.signal.listen('earthPosition/civilDate',(e=>{var t=e,i=t.getUTCFullYear();this.getElementById('season-dmy-utc').value=CB.toUserDayMonthYear(t);var s=this.getElementById('season-day-of-year-slider'),n=EarthPosition.isLeapYear(i)?366:365;s.setAttribute('max',n);var a=this.getElementById('season-day-of-year');a.value>n&&(a.value=n)})),this.signal.listen('earthPosition/specialDay',(e=>{var t=e;this.getElementById('season-special-day').value=t})),this.signal.listen('earthPosition/dayOfYear',(e=>{var t=e;this.getElementById('season-day-of-year').value=t,this.getElementById('season-day-of-year-slider').value=t,this.getElementById('season-special-day').value=''}))}registerTimeOfDayReceivers(){this.signal.listen('earthPosition/timeOfDayHMS',(e=>{var t=e,i=CB.numSecondsSinceMidnightUTC(t);this.getElementById('time-of-day-hms').value=CB.toUserTimeOfDay(i),this.getElementById('time-of-day-hms-slider').value=CB.toSliderTimeOfDay(i)})),this.signal.listen('earthPosition/timezoneOffset',(e=>{var t=e;this.getElementById('timezone-offset').value=t})),this.signal.listen('earthPosition/civilDate',(e=>{var t=e;this.getElementById('season-civil-date').innerHTML=`<p style='text-align:center'>${t.toUTCString()}</p>`})),this.signal.listen('earthPosition/timezoneLocalTime',(e=>{this.getElementById('timezone-local-time').innerHTML=`<p style='text-align:center'>${e.isoDateTimeFormat}</p>`}))}registerEquationOfTimeReceivers(){this.signal.listen('earthPosition/civilDate',(e=>{var t=e;this.getElementById('equation-of-time-civil-date').innerHTML=CB.formatDateDMY(t)})),this.signal.listen('earthPosition/equationOfTime',(e=>{var t=CB.formatEquationOfTime(e.equationOfTime);this.getElementById('equation-of-time-sundial-correction').innerHTML=`Sundial correction: ${t}`}))}registerSolarEventsReceivers(){this.signal.listen('earthPosition/topocentricCoordinates',(e=>{var t=CB.formatSunriseSunset(e.sunrise),i=CB.formatHMSfromMinutes(e.solarNoon),s=CB.formatSunriseSunset(e.sunset);this.getElementById('solar-events-longitude').innerHTML=CB.toUserLongitude(e.placeOfInterest.longitude),this.getElementById('solar-events-latitude').innerHTML=CB.toUserLatitude(e.placeOfInterest.latitude),this.getElementById('solar-events-timezone').innerHTML=CB.formatTimezone(e.timezoneOffset),this.getElementById('solar-events-sunrise').innerHTML=`Sunrise: ${t}`,this.getElementById('solar-events-solar-noon').innerHTML=`Solar noon: ${i}`,this.getElementById('solar-events-sunset').innerHTML=`Sunset: ${s}`}))}registerGeocentricCoordsReceivers(){this.signal.listen('earthPosition/civilDate',(e=>{var t=e;this.getElementById('geocentric-civil-date').innerHTML=CB.formatDateDMY(t)})),this.signal.listen('earthPosition/declination',(e=>{var t=CB.toUserDeclination(e);this.getElementById('geocentric-declination').innerHTML=`Declination: ${t}`})),this.signal.listen('earthPosition/rightAscension',(e=>{var t=CB.formatRightAscensionHMS(e);this.getElementById('geocentric-right-ascension').innerHTML=`Right ascension: ${t}`})),this.signal.listen('earthPosition/distanceValues',(e=>{this.getElementById('geocentric-perihelion').innerHTML=`${e.year} Perihelion: ${e.perihelion}`,this.getElementById('geocentric-aphelion').innerHTML=`${e.year} Aphelion: ${e.aphelion}`}))}registerTopocentricCoordsReceivers(){this.signal.listen('earthPosition/timezoneLocalTime',(e=>{this.getElementById('topocentric-local-time').innerHTML=e.hmsTimeFormat})),this.signal.listen('earthPosition/topocentricCoordinates',(e=>{var t=CB.formatAltitude(e.altitude),i=CB.formatAzimuth(e.azimuth),s=CB.formatHourAngle(e.sunriseHourAngle),n=e.solarPhase;this.getElementById('topocentric-longitude').innerHTML=CB.toUserLongitude(e.placeOfInterest.longitude),this.getElementById('topocentric-latitude').innerHTML=CB.toUserLatitude(e.placeOfInterest.latitude),this.getElementById('topocentric-altitude').innerHTML=`Altitude: ${t}`,this.getElementById('topocentric-azimuth').innerHTML=`Azimuth: ${i}`,this.getElementById('topocentric-sunrise-hour-angle').innerHTML=`Hour angle: ${s}`,this.getElementById('topocentric-solar-phase').innerHTML=`Visibility: ${n}`}))}}