@getontime/cli
Version:
Time keeping for live events
3 lines (2 loc) • 9.62 kB
JavaScript
import{r as g,a7 as V,j as i,y as R}from"./vendor-DFNUfA2K.js";import{j,P as U,M as w,E as v,g as C,G as W,i as y,H as q,I as F,f as O,J as G,d as J,L as Q,m as K,h as X,O as Y,r as Z}from"./index-BNit4nUw.js";import{E as tt}from"./EmptyPage-dVRQ987V.js";import{V as et}from"./ViewLogo-BhUYUzFU.js";import{O as H,i as z,V as st}from"./ViewParamsEditor-C6i_vUmm.js";import{u as nt}from"./useWindowTitle-Bgl000Se.js";import{a as it,S as ot}from"./viewLoader.utils-CeLIIcNn.js";import{i as b,a as S,u as at}from"./useRundown-DgZv-crd.js";import{g as rt}from"./common.options-CwGs4uxL.js";import{g as lt,a as D,b as ct,i as ut,c as mt}from"./isNewLatest-Bui5Tm3U.js";import{g as dt}from"./getProgress-Dgt_8BYF.js";import{u as ft}from"./useProjectData-BfKJevmX.js";import"./Empty-BLJKwoJq.js";import"./Select-Bp_h4xvR.js";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="90c3c96c-13ba-455d-91ef-dfc647c75dae",e._sentryDebugIdIdentifier="sentry-dbid-90c3c96c-13ba-455d-91ef-dfc647c75dae")}catch{}})();function ht(e,t){if(!t)return 0;const s=e.timeStart+e.dayOffset*j,n=t.timeStart+t.duration+t.dayOffset*j;return s===n?0:(s>n,s-n)}function I(e,t,s){if(!t.current)return;if(!(e!=null&&e.current)){t.current.scrollTo({left:0,behavior:"smooth"});return}const n=e.current.getBoundingClientRect(),a=t.current.getBoundingClientRect(),o=n.left-a.left+t.current.scrollLeft-s;t.current.scrollTo({left:o,behavior:"smooth"})}function pt({followRef:e,scrollRef:t,doFollow:s,selectedEventId:n,leftOffset:a=0,setScrollFlag:o}){return g.useEffect(()=>{!s||!t.current||(o==null||o(!0),window.requestAnimationFrame(()=>{I(n!==null?e:null,t,a),o==null||o(!1)}))},[e,t,s,a,o,n]),g.useCallback((u=e,c=t,d=a)=>{c.current&&I(n!==null?u:null,c,d)},[e,t,a,n])}const gt=e=>[{title:H.ClockOptions,collapsible:!0,options:[rt(e)]},{title:H.ElementVisibility,collapsible:!0,options:[{id:"hidePast",title:"Hide Past Events",description:"Whether to hide events that have passed",type:"boolean",defaultValue:!1},{id:"autosize",title:"Autosize timeline",description:"Timeline will adjust sizes to help with readability and automatically scroll if necessary",type:"boolean",defaultValue:!1}]}];function xt(e,t){const s=n=>(t==null?void 0:t.get(n))??e.get(n);return{hidePast:z(s("hidePast")),autosize:z(s("autosize"))}}function B(){const[e]=V(),t=g.use(U);return g.useMemo(()=>{const n=t?new URLSearchParams(t.search):void 0;return xt(e,n)},[t,e])}function _t(e,t,s,n,a){const r=(t<e?t+j:t)-e,u=n*a/r;return{left:(s-e)*a/r,width:u}}function yt(e){return Math.floor(e/w)}function Tt(e){return Math.ceil(e/w)}function bt(e,t){const s=[];for(let n=e;n<t;n++)s.push(n);return s}function jt(e,t){return t==="done"||t==="live"?t:e<0?"pending":v(e)}function St(e,t){const{hidePast:s}=B();return g.useMemo(()=>{if(e.length===0)return{scopedRundown:[],firstStart:0,totalDuration:0};const a=[];let o=t?1/0:-1,r=null,u=0,c=null;for(let d=0;d<e.length;d++){const l=e[d];if(b(l)&&S(l)){if(l.id===t&&(o=d),s&&d<o)continue;a.push(l),r===null&&(r=l.timeStart);const f=ht(l,c);f===0?u+=l.duration:f>0?u+=f+l.duration:f<0&&(u+=Math.max(l.duration+f,0)),ut(l,c)&&(c=l)}}return{scopedRundown:a,firstStart:r??0,totalDuration:u}},[s,e,t])}function wt(e,t){var o,r;if(e.length===0)return{now:null,next:null,followedBy:null};let s=t?lt(e,t):null;b(s)||(s=null);const n=s?(o=D(e,s.id))==null?void 0:o.nextEvent:ct(e).firstEvent,a=n?(r=D(e,n.id))==null?void 0:r.nextEvent:null;return{now:s,next:n,followedBy:a}}function L(e,t,s,n){return t+s-e-n}function vt(e,t,s,n,a,o=100){let r=1/0;const u=e.map(({start:l,duration:f})=>{const p=_t(t,s,l,f,n);return r=Math.min(r,p.width),p});if(!a)return{positions:u,scale:1,totalWidth:n};const c=r<o?o/r:1;return c===1?{positions:u,scale:1,totalWidth:n}:{positions:u.map(l=>({left:l.left*c,width:l.width*c})),scale:c,totalWidth:n*c}}const Nt="_markers_gfywu_17",Pt={markers:Nt};function kt(e){const{startHour:t,endHour:s}=e,n=bt(t,s);return i.jsx("div",{className:Pt.markers,children:n.map(a=>i.jsx("span",{},a))})}const Et="_timelineContainer_4bums_21",Ct="_scroll_4bums_26",Lt="_timeline_4bums_21",Ot="_column_4bums_37",Mt="_maybeInline_4bums_45",Ht="_timelineBlock_4bums_52",zt="_smallArea_4bums_64",Dt="_content_4bums_64",It="_timeOverview_4bums_68",$t="_hide_4bums_72",At="_status_4bums_98",Bt="_delay_4bums_105",Vt="_cross_4bums_115",Rt="_separeLeft_4bums_121",h={timelineContainer:Et,scroll:Ct,timeline:Lt,column:Ot,maybeInline:Mt,timelineBlock:Ht,smallArea:zt,content:Dt,timeOverview:It,hide:$t,status:At,delay:Bt,cross:Vt,separeLeft:Rt},$={format12:"hh:mm a",format24:"HH:mm"};function Ut({colour:e,delay:t,duration:s,hasLink:n,left:a,status:o,start:r,title:u,width:c,ref:d}){const l=C(r,$),f=v(s),p=r+t,T=t>0,N=W(e,.7),P=c>25,_=c<40;return i.jsxs("div",{ref:d,className:y([h.column,_&&h.smallArea]),style:{"--color":e,"--lighter":N??"",left:`${a}px`,width:`${c}px`},children:[o==="live"?i.jsx(Wt,{}):i.jsx("div",{"data-status":o,className:h.timelineBlock}),i.jsxs("div",{className:y([h.content,c<20&&h.hide,!n&&h.separeLeft]),"data-status":o,style:{"--color":e},children:[i.jsxs("div",{className:h.maybeInline,children:[i.jsx("div",{className:y([T&&h.cross]),children:l}),T&&i.jsx("div",{className:h.delay,children:C(p,$)}),_&&i.jsx(A,{delay:t,start:r,status:o})]}),P&&i.jsxs(i.Fragment,{children:[!_&&i.jsx(A,{delay:t,start:r,status:o}),i.jsx("div",{children:u})]})]}),i.jsx("div",{className:h.timeOverview,"data-status":o,children:o!=="done"&&i.jsx("div",{className:h.duration,children:f})})]})}function A({delay:e,start:t,status:s}){const{clock:n,offset:a}=F(),{getLocalizedString:o}=O();let r=jt(L(n,t,e,a),s);return r==="live"?r=o("timeline.live"):r==="pending"&&(r=o("timeline.due")),i.jsx("div",{className:h.status,children:r})}function Wt(){const{current:e,duration:t}=q(),s=dt(e,t);return i.jsx("div",{"data-status":"live",className:h.timelineBlock,style:{"--progress":`${s}%`}})}const qt=g.memo(Ft);function Ft({firstStart:e,rundown:t,selectedEventId:s,totalDuration:n}){const{width:a}=R(),{hidePast:o,autosize:r}=B(),u=g.useRef(null),c=g.useRef(null),{lastEvent:d}=mt(t),l=yt(e),f=Tt(e+n+((d==null?void 0:d.delay)??0)),p=l*w,T=f*w;pt({followRef:u,scrollRef:c,doFollow:r,selectedEventId:s,leftOffset:o?0:a/6});const{positions:N,totalWidth:P}=g.useMemo(()=>{const m=t.filter(x=>b(x)&&S(x)).map(x=>({start:x.timeStart+(x.dayOffset??0)*j+(x.delay??0),duration:x.duration}));return vt(m,p,T,a,r)},[t,p,T,a,r]);if(n===0)return null;let _=s?"done":"future";const M={};return t.forEach(m=>{b(m)&&S(m)&&(_==="live"&&(_="future"),m.id===s&&(_="live"),M[m.id]=_)}),i.jsx("div",{ref:c,className:y([h.timelineContainer,r&&h.scroll]),children:i.jsxs("div",{className:h.timeline,style:{width:P},children:[i.jsx(kt,{startHour:l,endHour:f}),t.map((m,x)=>{if(!b(m)||!S(m))return null;const k=N[x];return k?i.jsx(Ut,{ref:m.id===s?u:void 0,colour:m.colour,delay:m.delay??0,duration:m.duration,hasLink:!!m.linkStart,left:k.left,status:M[m.id],start:m.timeStart+(m.dayOffset??0)*j,title:m.title,width:k.width},m.id):null})]})})}const E=g.memo(Gt);function Gt({category:e,content:t,title:s,status:n}){const a=y(["section",e==="now"&&"section--now"]),o=y(["section-content",t?`section-content--${e}`:"section-content--subdue"]);return i.jsxs("div",{className:a,children:[i.jsxs("div",{className:"section-title",children:[i.jsx("span",{className:"section-title__label",children:s}),n&&i.jsx("span",{className:"section-title__status",children:n})]}),i.jsx("div",{className:o,children:t??"-"})]})}function Jt({now:e,next:t,followedBy:s}){const{getLocalizedString:n}=O(),{clock:a,offset:o}=G(),r=(e==null?void 0:e.title)??"-",u=n("timeline.due").toUpperCase(),c=t!==null?t.title:"-",d=s!==null?s.title:"-";let l,f;if(t!==null){const p=L(a,t.timeStart,(t==null?void 0:t.delay)??0,o);p<0?l=u:l=`T - ${v(p)}`}if(s!==null){const p=L(a,s.timeStart,(s==null?void 0:s.delay)??0,o);p<0?f=u:f=`T - ${v(p)}`}return i.jsxs("div",{className:"title-grid",children:[i.jsx(E,{title:n("timeline.live"),content:r,category:"now"}),i.jsx(E,{title:n("common.next"),status:l,content:c,category:"next"}),i.jsx(E,{title:n("timeline.followedby"),status:f,content:d,category:"next"})]})}function Qt(){const{data:e,status:t}=at(),{data:s,status:n}=ft(),{data:a,status:o}=J();return{data:{events:e,projectData:s,settings:a},status:it([t,n,o])}}function de(){const{data:e,status:t}=Qt();return nt("Timeline"),t==="pending"?i.jsx(Q,{}):t==="error"?i.jsx(tt,{text:"There was an error fetching data, please refresh the page."}):i.jsx(Kt,{...e})}function Kt({events:e,projectData:t,settings:s}){const{selectedEventId:n}=K(),{scopedRundown:a,firstStart:o,totalDuration:r}=St(e,n),{now:u,next:c,followedBy:d}=g.useMemo(()=>wt(a,n),[a,n]),l=X(s==null?void 0:s.timeFormat),f=g.useMemo(()=>gt(l),[l]);return i.jsxs("div",{className:"timeline","data-testid":"timeline-view",children:[i.jsx(st,{target:Y.Timeline,viewOptions:f}),i.jsxs("div",{className:"project-header",children:[(t==null?void 0:t.logo)&&i.jsx(et,{name:t.logo,className:"logo"}),i.jsx("div",{className:"title",children:t.title}),i.jsx(Xt,{})]}),i.jsx(Jt,{now:u,next:c,followedBy:d}),i.jsx(qt,{firstStart:o,rundown:a,selectedEventId:n,totalDuration:r})]})}function Xt(){const{getLocalizedString:e}=O(),{clock:t}=Z(),s=C(t);return i.jsxs("div",{className:"clock-container",children:[i.jsx("div",{className:"label",children:e("common.time_now")}),i.jsx(ot,{time:s,className:"time"})]})}export{de as default};
//# sourceMappingURL=TimelinePage-DdNpQZcV.js.map