1import{mf as ht}from"/dashboard-entry-an8yd0n0.js";import{nf as Se,of as ke,pf as Ve,qf as Ct}from"/dashboard-entry-ce76r52s.js";import"/dashboard-entry-g08jk59d.js";import{ih as pe,jh as He,kh as _,lh as ve,mh as Q}from"/dashboard-entry-ew2knmnx.js";import{yh as gt}from"/dashboard-entry-g8tpcrsm.js";import{Ii as ft}from"/dashboard-entry-jhb4z6xv.js";import"/dashboard-entry-8wprad1k.js";import"/dashboard-entry-rvqqg0pc.js";import"/dashboard-entry-1hsmyh3f.js";import"/dashboard-entry-qdyjqvbk.js";import"/dashboard-entry-2fnhj88d.js";import"/dashboard-entry-n53q24nr.js";import"/dashboard-entry-65r6n07m.js";import{fr as ct,gr as mt}from"/dashboard-entry-72m9p9ep.js";import"/dashboard-entry-44ybeq8s.js";import{Kr as pt}from"/dashboard-entry-t3rz41a4.js";import{Bs as vt,ys as Oe}from"/dashboard-entry-ardvmh01.js";import{Ds as de,Es as ce,Gs as me,Is as Me}from"/dashboard-entry-fvdh9c4d.js";import{Ht as lt,Jt as be,Kt as Be,Ms as Fe,Os as it,Ot as rt,Us as Ce,Ut as ut,Vt as dt,Wt as Re,Xt as $e,it as ye,jt as ze}from"/dashboard-entry-jz85y609.js";import{lu as ue}from"/dashboard-entry-hkn80g40.js";import{ru as ot}from"/dashboard-entry-1gp7bjz7.js";import{tu as Qe}from"/dashboard-entry-qv5xe8rf.js";import{$z as ge,Bw as Ue,CA as Le,Dw as _e,Fy as C,GA as nt,Gy as We,HA as st,IA as ae,Iy as Ge,JA as ne,Jy as Ke,Ky as Ye,Ly as je,My as Xe,Oy as Je,Sy as L,Uy as J,Vy as Z,Wy as ee,Yy as Pe,Zy as te,_z as fe,aA as he,az as Ee,bz as Te,cz as Ae,kz as Ze,lz as et,mz as tt,oz as W,rz as at}from"/dashboard-entry-dxn1v5ey.js";import{LA as re,OA as e,PA as t}from"/dashboard-entry-wrw522hm.js";import{TA as le}from"/dashboard-entry-7eswmxz0.js";var u=le(re(),1);var X=le(re(),1);var Ie=({assessments:d,onPoseFrameEditSaved:m})=>{let i=X.useMemo(()=>Se(d),[d]);return e("div",{className:"space-y-2",children:i.map((c)=>{let r=c.items.reduce((l,S)=>l+S.record.assessmentCount(),0);return t(Ee,{defaultOpen:!0,className:"border rounded-lg overflow-hidden",children:[t(Te,{className:"data-[state=open]:bg-muted data-[state=open]:border-b data-[state=open]:border-border group flex w-full items-center gap-3 px-4 py-4 text-left text-sm font-medium text-foreground hover:underline",children:[e("span",{children:c.label}),e(L,{variant:"outline",children:r}),e(Re,{className:"ml-auto h-4 w-4 transition-transform group-data-[state=open]:rotate-180"})]}),e(Ae,{className:"px-4 pb-4",children:e("div",{className:"py-4 space-y-12",children:c.items.map((l)=>e(X.default.Fragment,{children:ke(l,!1,m)},l.api.id))})})]},c.label)})})};var v=le(re(),1);var Et=(d)=>{if(typeof d!=="number"||!Number.isFinite(d)||d<0)return"N/A";let m=Math.round(d/1000);if(m<60)return`${m} sec`;let i=Math.floor(m/60),c=m%60;if(i<60)return c>0?`${i} min ${c} sec`:`${i} min`;let r=Math.floor(i/60),l=i%60;return l>0?`${r} hr ${l} min`:`${r} hr`},qe=({evaluation:d,evalType:m,completedAssessments:i,selectedAssessments:c,skippedAssessments:r,assessments:l,onSaveNotes:S})=>{let[x,D]=v.useState(""),[F,w]=v.useState(""),[G,E]=v.useState(!1),[b,M]=v.useState(!1);v.useEffect(()=>{let s=He(d.notes??null);D(s),w(s),E(!1)},[d]);let O=v.useMemo(()=>x.trim(),[x]),k=v.useMemo(()=>F.trim(),[F]),H=O!==k,I=O.length>0,z=I,h=c!==null,o=Array.isArray(c)?c.length:null,K=h?Array.isArray(r)?r.length:0:null,T=v.useMemo(()=>{if(h&&Array.isArray(c)){let y=new Set(Array.isArray(r)?r.map(Q):[]);return c.filter((P)=>!y.has(Q(P))).map((P,f)=>({id:`${Q(P)}-${f}`,label:ve(P)}))}let s=l;if(s.length===0)return[];return s.map((y)=>({id:y.api.id,label:y.api.name}))},[l,h,c,r]),se=v.useMemo(()=>{if(!h)return _(i);let s=typeof i==="number"?i:T.length;if(!o)return _(s);let y=Math.round(s/o*100);return`${s} (${y}%)`},[i,T.length,h,o]),V=v.useMemo(()=>{if(!Array.isArray(r)||r.length===0)return[];return r.map((s,y)=>({id:`${Q(s)}-${y}`,label:ve(s)}))},[r]),a=h?"grid grid-cols-1 gap-2 lg:grid-cols-2":"grid grid-cols-1 gap-2 md:grid-cols-2 lg:grid-cols-3",q=v.useCallback(async()=>{if(b||!H)return;M(!0);try{let s=await S(I?x:null);D(s),w(s),E(!1),ue.success("Eval note updated",{position:"top-center"})}catch(s){console.error("Failed to update evaluation notes",s)}finally{M(!1)}},[H,I,b,x,S]),U=v.useCallback(()=>
1{if(!z)return;navigator.clipboard.writeText(x).then(()=>{ue.success("Copied to clipboard",{position:"top-center"})}).catch((s)=>{console.error("Failed to copy evaluation notes",s)})},[z,x]);return t("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[e(Ve,{title:"Evaluation details",details:[{label:"Completed",value:Oe(d.createdAt)},{label:"Duration",value:Et(d.evaluationDurationMs)},{label:"Eval type",value:m},{label:"Completed assessments",value:se},...h?[{label:"Selected assessments",value:_(o)}]:[],...r!==null?[{label:"Skipped assessments",value:_(K)}]:[],{label:"Height",value:pe(d.height,"in")},{label:"Weight",value:pe(d.weight,"lbs")}]}),t(J,{className:"h-full",children:[t(Z,{children:[e(ee,{children:"Evaluation notes"}),e(Pe,{children:G?t("div",{className:"flex items-center gap-2",children:[t(C,{variant:"destructive",size:"xs",disabled:b,onClick:()=>{D(F),E(!1)},children:[e(Fe,{}),e("span",{className:"hidden lg:inline",children:"Cancel"})]}),t(C,{size:"xs",disabled:b||!H,onClick:()=>{q()},children:[e($e,{}),e("span",{className:"hidden lg:inline",children:"Save"})]})]}):t(C,{variant:"outline",size:"xs",onClick:()=>{E(!0)},children:[e(ze,{className:"size-3.5"}),e("span",{className:"hidden lg:inline",children:"Edit"})]})})]}),e(te,{className:"flex flex-1 flex-col",children:t("div",{className:"relative flex flex-1",children:[e(Le,{value:x,readOnly:!G,placeholder:"No notes provided.",onChange:(s)=>{D(s.target.value)},className:"flex-1 min-h-0 resize-none field-sizing-fixed pr-10"}),e(C,{type:"button",variant:"ghost",size:"icon-xs",onClick:U,disabled:!z,className:"absolute right-2 top-2","aria-label":"Copy notes",children:e(Be,{})})]})})]}),h?t(J,{children:[t(Z,{className:"flex flex-row items-center gap-2",children:[e(ee,{children:"Completed assessments"}),e(L,{variant:"outline",children:T.length})]}),e(te,{children:T.length===0?e(de,{className:"min-h-32 border-none p-0",children:e(ce,{children:e(me,{children:"No completed assessments"})})}):e("div",{className:a,children:T.map((s)=>e("div",{className:"text-sm text-foreground",children:s.label},s.id))})})]}):null,h?t(J,{children:[t(Z,{className:"flex flex-row items-center gap-2",children:[e(ee,{children:"Skipped assessments"}),e(L,{variant:"outline",children:V.length})]}),e(te,{children:V.length===0?t(de,{className:"min-h-32 border-none p-0",children:[e(ce,{children:e(me,{children:"No assessments skipped"})}),e(Me,{children:"All selected assessments were completed."})]}):e("div",{className:"grid grid-cols-1 gap-2 lg:grid-cols-2",children:V.map((s)=>e("div",{className:"text-sm text-foreground",children:s.label},s.id))})})]}):null]})};var Tt={api:"api",public:"public",remote:"auto",virtual:"manual"},sa=()=>{let{evaluationId:d}=_e(),m=Ue(),i=mt(),{fetchWithAuth:c,postWithAuth:r}=ot(),[l,S]=u.useState(null),[x,D]=u.useState(!0),[F,w]=u.useState(null),[G,E]=u.useState(!1),[b,M]=u.useState(!1),[O,k]=u.useState(null),[H,I]=u.useState(!1),z=u.useRef(new Set),h=u.useCallback(async(n)=>{D(!0),w(null);try{let p=`/api/evaluation/results?id=${encodeURIComponent(n)}`,g=await c(p);if(g.error){w(g.error);return}if(!g.data){w("Evaluation not found.");return}let N=gt(g.data);S(N);let R=Tt[N.evaluation.type];if(R&&!z.current.has(N.evaluation.id))z.current.add(N.evaluation.id),Qe.track("evaluation_results_accessed",{assessment_count:N.evaluation.assessmentCount,evaluation_type:R,source:"dashboard"})}catch(p){w(p instanceof Error?p.message:"Failed to load evaluation results.")}finally{D(!1)}},[c]);u.useEffect(()=>{let n=d;if(!n){w("Missing evaluation identifier."),D(!1);return}h(n)},[d,h]);let o=l?.evaluation??null,K=l?.assessments,T=o?.assessmentCount??null,se=o?.selectedAssessments??null,V=o?.skippedAssessments??null,a=o?.id??d??null,q=o?.previousEvaluationId??null,U=o?.nextEvaluationId??null,s=o?.type==="public"?o.questions:[],y=s.length>0,P=o?.type==="remote"?"Auto Eval":o?.type==="virtual"?"Manual Eval":"Public Link",f=l?.client?.id??null,A=l?.client?`${l.client.firstName} ${l.client.lastName}`.trim():null,B=o?.type==="public"?o.qualify:null,Y=A??(B?`${B.firstName} ${B.lastName}`.trim():null),oe=l?.client?.email??B?.email??null,yt=l?.client?.dateOfBirth??B?.dateOfBirth??null,bt=l?.client?.sex??B?.sex??null,Nt=l?.client?.customId??null,ie=o?.type==="public"&&!o.clientId,Ne=T??0,xt=Ne===1?"assessment":"assessments";u.useEffect(()=>{if(!a||!f||!A)return;ct(`/evaluation/${a}`,{clientId:f,clientName:A})},[f,A,a]);let xe=u.useCallback((n)=>{if(!n)return;let p=`/evaluation/${n}`,g=m.state&&typeof m.state==="object"&&!Array.isArray(m.state)?m.state:{},N=A?.trim(),R={...g,...f?{clientId:f}:{},...N?{clientName:N}:{}};if(Object.keys(R).length>0){i(p,{state:R});return}i(p)},[f,A,m.state,i]),Dt=u.useCallback(async(n)=>{if(!a)throw Error("Missing evaluation identifier.");let p=n?.trim()??"",g=p.length>0?n??"":"",N={evaluationId:a,notes:p.length>0?n:null},R=await r("/api/evaluation/notes",N);if(R.error)throw Error(R.error);return S((j)=>j?{...j,evaluation:{...j.evaluation,notes:g}}:j),g},[a,r]),De=u.useCallback(()=>
1{if(!a)return;let n=`/api/evaluation/pdf?evaluationId=${encodeURIComponent(a)}`;window.open(n,"_blank","noopener,noreferrer")},[a]),we=u.useCallback(()=>{if(!a)return;let n=new URLSearchParams({evaluationId:a});if(f)n.set("clientId",f);else{let p=Y?.trim(),g=oe?.trim();if(p)n.set("participantName",p);if(g)n.set("participantEmail",g)}i(`/twin3d?${n.toString()}`)},[f,a,oe,Y,i]),wt=u.useCallback(async()=>{if(!a)return;M(!0),k(null);try{let n=await r("/api/evaluation/remove",{evaluationId:a});if(n.error){k(n.error);return}let p=m.state?.from??"/clients";if(f){let g=A?.trim();i(`/client/${f}`,{state:{from:p,clientId:f,...g?{clientName:g}:{}}});return}i(p)}catch(n){k(n instanceof Error?n.message:"Failed to delete evaluation")}finally{M(!1)}},[f,A,a,m.state,i,r]);if(x)return e("div",{className:"h-full w-full p-6 flex items-center justify-center",children:e(pt,{text:"Loading evaluation details..."})});if(F)return e("div",{className:"p-6 text-sm text-red-600",children:F});return t("div",{className:"@container/main flex flex-1 flex-col gap-6 px-4 py-6 lg:px-6",children:[e(ft,{name:Y,email:oe,dateOfBirth:yt,sex:bt,customId:Nt,showSeparator:!0}),t("div",{className:"flex items-center justify-between",children:[t("div",{className:"space-y-1",children:[t("div",{className:"inline-flex items-center gap-1 md:gap-2",children:[t(fe,{children:[e(ge,{asChild:!0,children:e(C,{variant:"ghost",size:"icon-xs",disabled:!q,onClick:()=>{xe(q)},children:e(dt,{size:16})})}),e(he,{children:!q?"No previous evaluation":"Previous evaluation"})]}),e("h1",{className:"text-sm md:text-xl font-semibold text-foreground",children:o?vt(o.createdAt):"Eval Date"}),t(fe,{children:[e(ge,{asChild:!0,children:e(C,{variant:"ghost",size:"icon-xs",disabled:!U,onClick:()=>{xe(U)},children:e(ut,{size:16})})}),e(he,{children:!U?"No more evaluations":"Next evaluation"})]})]}),t("div",{className:"flex flex-wrap items-center gap-2 text-sm text-muted-foreground",children:[e(L,{variant:"outline",children:P}),t("span",{className:"inline-flex items-center gap-1",children:[e(rt,{}),Ne," ",xt]})]})]}),t("div",{className:"flex items-center gap-2",children:[t("div",{className:"hidden md:flex items-center gap-2",children:[ie?e(C,{variant:"default",size:"sm",disabled:!a,onClick:()=>{I(!0)},children:e("span",{children:"Convert"})}):null,t(C,{variant:"outline",size:"sm",onClick:we,disabled:!a,children:[e(ye,{}),e("span",{className:"hidden lg:inline",children:"Twin3D"})]}),t(C,{variant:"outline",size:"sm",onClick:De,disabled:!a,children:[e(be,{}),e("span",{className:"hidden lg:inline",children:"PDF"})]}),e(C,{type:"button",variant:"outline",size:"icon-sm","aria-label":"Delete evaluation",disabled:!a||b,onClick:()=>{k(null),E(!0)},children:e(Ce,{className:"size-3.5"})})]}),e("div",{className:"md:hidden",children:t(Ze,{children:[e(et,{asChild:!0,children:e(C,{type:"button",variant:"outline",size:"icon-sm","aria-label":"Evaluation actions",children:e(lt,{})})}),t(tt,{align:"end",className:"w-48 whitespace-nowrap",children:[ie?t(W,{disabled:!a,onClick:(n)=>{n.stopPropagation(),I(!0)},children:[e(it,{}),e("span",{children:"Convert"})]}):null,t(W,{disabled:!a,onClick:(n)=>{if(n.stopPropagation(),!a)return;we()},children:[e(ye,{}),"Twin3D"]}),t(W,{disabled:!a,onClick:(n)=>{if(n.stopPropagation(),!a)return;De()},children:[e(be,{}),"PDF"]}),e(at,{}),t(W,{variant:"destructive",disabled:!a||b,onClick:(n)=>{n.stopPropagation(),k(null),E(!0)},children:[e(Ce,{className:"size-3.5"}),"Delete"]})]})]})})]})]}),e(We,{open:G,onOpenChange:E,children:t(Ge,{size:"default",children:[t(Ke,{children:[e(je,{children:"Delete Evaluation"}),e(Xe,{children:"Are you sure you want to delete this evaluation? This cannot be undone."}),O?e("div",{className:"bg-destructive/10 text-destructive rounded-md px-3 py-2 text-sm w-full text-left",children:O}):null]}),t(Ye,{children:[e(Je,{type:"button",disabled:b,children:"Cancel"}),e(C,{type:"button",variant:"destructive",disabled:b,onClick:()=>{wt()},children:b?"Deletingâ¦":"Delete"})]})]})}),e(ht,{open:H,onOpenChange:I,evaluationId:ie?a:null,submissionName:Y,onResolved:async()=>
1{if(!a)return;await h(a)}}),t(nt,{defaultValue:"results",children:[t(st,{variant:"line",className:"px-0",children:[e(ae,{value:"results",children:"Results"}),y?e(ae,{value:"questions",children:"Questions"}):null,e(ae,{value:"details",children:"Details"})]}),e(ne,{value:"results",className:"space-y-6",children:e(Ie,{assessments:K,onPoseFrameEditSaved:async()=>{if(a)await h(a)}})}),y?e(ne,{value:"questions",className:"space-y-6",children:e(Ct,{questions:s})}):null,e(ne,{value:"details",className:"space-y-6",children:o?e(qe,{evaluation:o,evalType:P,completedAssessments:T,selectedAssessments:se,skippedAssessments:V,assessments:K??[],onSaveNotes:Dt}):null})]})]})};export{sa as ResultsPage};
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.