@doegis/core
Version:
DOE GIS API
3 lines (1 loc) • 1.26 kB
JavaScript
import e from"../TimeExtent.js";import{unwrap as t,isSome as n,isNone as i}from"../core/maybe.js";import{eachAlways as r}from"../core/promiseUtils.js";import{offsetDate as o}from"../core/timeUtils.js";function m(e){return void 0!==e.timeInfo}async function s(o,s){if(0===o.length)return e.allTime;const f=o.filter(m);await Promise.all(f.map((e=>e.load({signal:s}))));const a=[],u=[];for(const e of f)"feature"!==e?.type&&"map-image"!==e?.type||!e.timeInfo?.hasLiveData?u.push(e):a.push(e);const l=e=>i(e)||e.isAllTime,c=u.map((e=>e.timeInfo?.fullTimeExtent));if(c.some(l))return e.allTime;const p=a.map((async e=>{const{timeExtent:n}=await e.fetchRecomputedExtents({signal:s});return n||t(e.timeInfo?.fullTimeExtent)})),T=(await r(p)).map((e=>e.value));if(T.some(l))return e.allTime;return[...T,...c].filter(n).reduce(((e,t)=>e.union(t)))}function f(t){if(!t)return t;const{start:i,end:r}=t;return new e({start:n(i)?o(i,-i.getTimezoneOffset(),"minutes"):i,end:n(r)?o(r,-r.getTimezoneOffset(),"minutes"):r})}function a(t){if(!t)return t;const{start:i,end:r}=t;return new e({start:n(i)?o(i,i.getTimezoneOffset(),"minutes"):i,end:n(r)?o(r,r.getTimezoneOffset(),"minutes"):r})}export{s as getTimeExtentFromLayers,a as toLocalTimeExtent,f as toUTCTimeExtent};