1import{d as J,k as x,H as D,_ as ue,o,e as i,l as w,Q as de,b as u,t as k,n as pe,O as Te,r as _e,x as De,f as re,c as C,F as T,h as N,v as fe,i as ae,C as _,fw as Ce,dJ as Ee,cP as he,L as v,I as Fe,G as Oe,fu as Ae,S as Re,E as ie,a2 as ze,w as q,$ as Ie,as as Be,R as le,bp as Pe,cJ as Ne}from"./app-CjVxEbuy.js";import{Q as H}from"./QImg-DRwZNcdX.js";import{_ as Me}from"./empty-UbJFIqCf.js";import{P as Ve}from"./Preview-C2e-xy-Y.js";import{v as $,T as ce,C as me}from"./metrics-DL11lIQc.js";import{P as Ge}from"./Prompt-l38aUiS4.js";import"./index-Dm0Y5in-.js";import"./index-CH13HvmE.js";import"./QCarousel-CT90jRKL.js";import"./use-panel-Xg4cR0ry.js";import"./touch-BjYP5sR0.js";import"./image-zoomer-BsjAseI-.js";var m=(s=>(s.Active="active",s.Blank="blank",s.Break="break",s.NoScreenshot="no-screenshot",s.Deleted="deleted",s.Expired="expired",s))(m||{});const Le=J({name:"ScreenshotPlaceholder",props:{type:{type:String,required:!0}},setup(s){return{data:x(()=>{let n={icon:"",iconColor:"",textColor:"",text:""};switch(s.type){case m.Deleted:{n={icon:"image-ban-thin",iconColor:"negative",text:D("timesheets.labels.screenshotDeleted"),textColor:"text-negative"};break}case m.Expired:{n={icon:"image-ban-thin",iconColor:"grey-4",text:D("timesheets.labels.screenshotExpired"),textColor:"text-grey-4"};break}case m.Break:{n={icon:"cup-thin",iconColor:"grey-4",text:D("timesheets.labels.screenshotOnBreak"),textColor:"text-grey-4"};break}case m.NoScreenshot:{n={icon:"image-ban-thin",iconColor:"grey-4",text:D("timesheets.labels.screenshotNone"),textColor:"text-grey-4"};break}}return n})}}}),Qe={class:"column flex-center"};function je(s,g,n,y,d,l){return o(),i("div",Qe,[w(de,{name:s.data.icon,size:"32px",color:s.data.iconColor},null,8,["name","color"]),u("div",{class:pe(`text-caption mt-1 ${s.data.textColor}`)},k(s.data.text),3)])}const ve=ue(Le,[["render",je]]),qe={class:"row no-wrap row-container py-2"},Ue={class:"ml-2 mt-1 flex-fill"},Ye={key:0,class:"text-secondary-1 text-small time-range-label"},He={key:0,class:"gmt-chip ml-1"},Je={key:2,class:"row mt-4 pl-2 screenshot-list-container full-width"},Ze=["onClick"],Ke={class:"timestamp text-small"},We={class:"control full-width full-height absolute"},Xe={key:3,class:"row no-wrap"},et=J({__name:"Row",props:{list:{type:Array,required:!0},timeRangeText:{type:String,required:!0},gmt:{type:String},isOwnScreenshot:{type:Boolean,default:!1},loading:{type:Boolean,default:!1}},emits:["preview","delete"],setup(s){const g=s,n=_(!1);Te(()=>{setTimeout(()=>{n.value=!0},500)});const y=x(()=>!g.loading&&n.value);return(d,l)=>{const c=_e("j-skeleton");return o(),i("div",qe,[l[0]||(l[0]=u("div",{class:"column items-center mt-2"},[u("div",{class:"timeline-circle"}),u("div",{class:"timeline-line flex-fill mt-3 mb-1"})],-1)),u("div",Ue,[y.value?(o(),i("div",Ye,[De(k(s.timeRangeText)+" ",1),s.gmt?(o(),i("span",He,k(s.gmt),1)):re("",!0)])):(o(),C(c,{key:1,type:"text",width:"130px",class:"pt-0 mt-0 mb-2"})),y.value?(o(),i("div",Je,[(o(!0),i(T,null,N(s.list,(p,f)=>(o(),i(T,{key:`row-${f}-${p}-${s.timeRangeText}`},[(o(!0),i(T,null,N(p,(r,E)=>(o(),i(T,{key:`col-${f}-${E}-${r.id}`},[r.type===fe(m).Active?(o(),i("div",{key:0,class:"screenshot-container mb-4 mx-2 relative-position row items-center",onClick:ae(M=>d.$emit("preview",r),["stop"])},[w(H,{src:r.url,loading:"lazy","spinner-color":"grey-4","spinner-size":"32px",width:"132px",height:"76px",fit:"cover"},null,8,["src"]),u("div",Ke,k(r.timestamp),1),u("div",We,[s.isOwnScreenshot?(o(),C(de,{key:0,name:"bin",class:"delete-icon cursor-pointer",size:"16px",color:"white",onClick:ae(M=>d.$emit("delete",r),["stop"])},null,8,["onClick"])):re("",!0)])],8,Ze)):(o(),C(ve,{key:`placeholder-${f}-${E}`,type:r.type,class:pe(["screenshot-container mb-4 mx-2 placeholder",[r.type]])},null,8,["type","class"]))],64))),128))],64))),128))])):(o(),i("div",Xe,[(o(),i(T,null,N(6,p=>w(c,{key:`skeleton-${p}`,type:"rect",width:"132px",height:"76px",class:"px-2 pb-4"})),64))]))])])}}}),tt=ue(et,[["__scopeId","data-v-6bbb9195"]]);function U(s,g){const n="dddd, MMM D, YYYY "+s;function y(c){return g?v.tz(c,g):v.parseZone(c)}function d(c,p){const f=y(c);let r="";return p?r="GMT"+Ce(f.utcOffset(p)):g?r=Ee(g):r=he(f),`${f.format(n)} ${r}`}function l(c,p){const f=y(p);return f.utcOffset(c.utcOffset()),f}return{parseDate:y,getFullDateForDisplay:d,copyTimezoneFrom:l}}const st={class:"pl-8 pt-8 pb-6 full-height overflow-y-auto"},ot={key:0,class:"full-height column flex-center"},nt={class:"mt-4 text-grey-1"},rt={key:1,class:"full-height flex-center column non-selectable text-grey-1"},at={class:"text-weight-bold mb-1"},it={class:"text-body2"},Y=10,kt=J({__name:"index",props:{personId:{type:String,required:!0},timezone:{type:String,default:""}},setup(s){const g=60/Y,n=s,y=Fe(),d=Oe(),l=_([]),c=_(!0),p=_({}),f=x(()=>X.value.length===0),r=x(()=>{var t;const e=(t=Z.value[0])==null?void 0:t.offset;
1return(l.value.length?v(l.value[0].time):v()).utcOffset(v.duration(e).as("minute")).format()}),E=x(()=>n.timezone?void 0:v.parseZone(r.value).utcOffset()),M=x(()=>n.timezone?"":he(v.parseZone(r.value))),V=_(!1),G=_(0),ge=x(()=>d.state.authorizedPerson.id===n.personId),{timeEntries:Z,currentDate:K}=Ae().injectData(),ye=x(()=>l.value.map(e=>{const{getFullDateForDisplay:a}=U(d.getters.effectiveTimeFormat,n.timezone),t=e!=null&&e.person.fullName?`${e.person.fullName} on `:"",h=a(e.time,E.value);return{url:e.url,status:e.status,label:`${t}${h}`}}));function W(e){const a=Z.value;return a.filter(t=>t.status!==me.Archived&&t.type===e).map(({time:t,id:h})=>{var F;const b=t,L=(F=a.find(S=>S.status!==me.Archived&&S.id!==h&&S.type!==e&&v(S.time).isAfter(b)))==null?void 0:F.time;return{from:v(b).toISOString(),to:L?v(L).toISOString():void 0}})}const xe=x(()=>({clockIns:W(ce.In),breaks:W(ce.StartBreak)})),X=x(()=>{var F;if(l.value.length===0)return[];const{parseDate:e,copyTimezoneFrom:a}=U(d.getters.effectiveTimeFormat,n.timezone),t=e(r.value),h=a(t,(F=l.value.last())==null?void 0:F.time),b=Math.ceil(v.duration(h.diff(t.startOf("hour"))).asHours());return Array.from({length:b},(S,O)=>{const z=t.clone().add(O,"hour"),Q=t.clone().add(O+1,"hour");return{start:z,timeRangeText:[z,Q].map(I=>I.format(d.getters.effectiveTimeFormat)).join(" - "),list:[...Array(g)]}}).reduce((S,{start:O,list:z,timeRangeText:Q})=>{const I=z.map((te,se)=>{const A=[],oe=O.clone().add(se*Y,"minute"),ne=O.clone().add((se+1)*Y,"minute");for(const{id:B,time:R,status:P,url:j}of l.value)if(v(R).isBetween(oe,ne,"minute","[)")){const be=P===$.Expired?m.Expired:P===$.Archived?m.Deleted:m.Active,$e=a(t,R).format(d.getters.effectiveTimeFormat);A.push({id:B,time:R,timestamp:$e,type:be,url:j})}if(A.length===0){const B=R=>xe.value[R].some(({from:P,to:j})=>ne.isAfter(P)&&oe.isBefore(j));B("clockIns")?A.push({type:m.NoScreenshot}):B("breaks")&&A.push({type:m.Break})}return A});return I.some(te=>te.length>0)&&S.push({timeRangeText:Q,list:I}),S},[])});async function ke(e){const{getFullDateForDisplay:a}=U(d.getters.effectiveTimeFormat,n.timezone),{confirmed:t}=await p.value.show({title:D("timesheets.dialogs.deleteScreenshot.title",{dateTime:a(e.time,E.value)})});if(t&&e.id)try{await y.timeTracking.screenshots.update(e.id,{status:$.Archived}),Be(D("timesheets.messages.screenshotDeleted")),await ee()}catch(h){le(h)}}function Se(e){G.value=l.value.findIndex(a=>a.id===e.id),V.value=!0}async function ee(){try{c.value=!0,l.value=(await y.timeTracking.screenshots.list({filter:{belongsToDate:Ne.from(K.value),"person/id":Pe.from(n.personId)},select:["url","id","time","status"],expand:{person:{select:["fullName"]}},orderby:{time:"asc"}})).list}catch(e){le(e)}finally{c.value=!1}}function we(e){return e===$.Expired?m.Expired:e===$.Archived?m.Deleted:m.Active}return Re(K,()=>{ee()},{immediate:!0}),(e,a)=>(o(),i("div",st,[c.value?(o(),i("div",ot,[w(ie,{size:"50px",indeterminate:"",color:"primary"}),u("div",nt,k(e.$t("common.placeholders.loading")),1)])):f.value?(o(),i("div",rt,[w(H,{src:Me,draggable:!1,width:"252px"}),u("h2",at,k(e.$t("timesheets.emptyStates.noScreenshots.title")),1),u("div",it,k(e.$t("timesheets.emptyStates.noScreenshots.content")),1)])):(o(!0),i(T,{key:2},N(X.value,({list:t,timeRangeText:h},b)=>(o(),C(tt,ze({key:`${h}-${b}`},{ref_for:!0},{list:t,timeRangeText:h,isOwnScreenshot:ge.value},{gmt:M.value,loading:c.value,onDelete:ke,onPreview:Se}),null,16,["gmt","loading"]))),128)),w(Ge,{ref_key:"promptRef",ref:p},{content:q(()=>[u("span",null,k(e.$t("timesheets.dialogs.deleteScreenshot.subtitle")),1),u("ul",null,[u("li",null,k(e.$t("timesheets.dialogs.deleteScreenshot.point1")),1),u("li",null,k(e.$t("timesheets.dialogs.deleteScreenshot.point2")),1)])]),_:1},512),w(Ve,{modelValue:V.value,"onUpdate:modelValue":a[0]||(a[0]=t=>V.value=t),index:G.value,"onUpdate:index":a[1]||(a[1]=t=>G.value=t),items:ye.value},{"preview-item":q(({item:t,imageTransform:h})=>[t.status===fe($).Active?(o(),C(H,{key:0,src:t.url,width:"100%",height:"100%",fit:"contain",style:Ie({transform:h})},{loading:q(()=>[w(ie,{indeterminate:"",class:"absolute",color:"grey-6",size:"32px"})]),_:1},8,["src","style"])):(o(),C(ve,{key:1,style:{transform:"scale(2)"},type:we(t.status)},null,8,["type"]))]),_:1},8,["modelValue","index","items"])]))}});
1export{kt as default};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.