1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[652],{26190:(e,r,i)=>{"use strict";i.d(r,{A:()=>R});var t=i(18153),a=i(39955),s=i(76032),n=i(82736),d=i(86623),c=i(91921),l=i(59803),o=i(99407),u=i(63973),A=i(2665),h=i(55791),_=i(83734),p=i(43043),w=i(64435),v=i(52276),$=i(14232),m=i(46304),N=i(46860),D=i(82899);function R({weekStart:e,heading:r,summaryStats:i,reviewerTableHeading:f,reviewerColumnHeaders:S,reviewerRows:g,reviewerEmptyMessage:T}){let[Y,O]=(0,$.useState)(!1),I=null!=r?r:null!=e?`Week of ${e.toFormat("LLLL dd")}`:"";return(0,t.FD)(a.a,{children:[(0,t.FD)(s.B,{direction:"row",align:"center",spacing:"12px",cursor:"pointer",onClick:()=>O(!Y),children:[(0,t.Y)(D.A,{faIcon:Y?v.Jt$:v.XkK,size:"md"}),(0,t.Y)(n.D,{size:"xl",children:I})]}),(0,t.Y)(d.S,{in:Y,children:(0,t.FD)(s.B,{direction:"column",ml:"32px",mt:"12px",spacing:"16px",children:[(0,t.Y)(n.D,{size:"lg",children:"Summary Stats"}),(0,t.Y)(s.B,{direction:"column",pl:"16px",spacing:"12px",children:i.map(({label:e,value:r})=>(0,t.FD)(s.B,{direction:"row",children:[(0,t.Y)(a.a,{minW:"280px",children:(0,t.Y)(c.E,{fontWeight:"bold",children:e})}),(0,t.Y)(c.E,{children:r})]},e))}),(0,t.Y)(n.D,{size:"lg",children:f}),(0,t.Y)(l.s,{flexDir:"column",children:(0,t.FD)(o.X,{variant:"simple",children:[(0,t.Y)(u.d,{children:(0,t.FD)(A.Tr,{children:[(0,t.Y)(h.Th,{children:"Reviewer"}),S.map(e=>(0,t.Y)(h.Th,{children:e},e))]})}),0===g.length?(0,t.Y)(_.r,{children:T}):null,(0,t.Y)(p.N,{children:g.map(({userId:e,displayName:r,cells:i})=>(0,t.FD)(A.Tr,{children:[(0,t.Y)(w.Td,{children:(0,t.Y)(N.A,{href:(0,m.hTK)(`user/${e}`),children:r})}),i.map((e,r)=>(0,t.Y)(w.Td,{children:e},S[r]))]},e))})]})})]})})]})}},34722:(e,r,i)=>{"use strict";i.d(r,{A:()=>t});let t={...i(55720).Ay}},36866:(e,r,i)=>{"use strict";i.r(r),i.d(r,{__N_SSP:()=>D,default:()=>R});var t=i(18153),a=i(42720),s=i(82736),n=i(61110),d=i(76032),c=i(44824),l=i(76221),o=i(34722),u=i(54443),A=i(75292),h=i(78919),_=i(30778),p=i(59676),w=i(26190);function v({startDate:e,endDate:r}){let i=(0,u.I)(),a=(0,A.Jd)(),s=(0,h.Xs)` 2 ${l.A.ready_for_review_at} >= ${e.toISO()} 3 AND ${l.A.ready_for_review_at} < ${r.toISO()} 4 `,n=(0,h.Xs)` 5 (${l.A.approved_at} IS NOT NULL OR ${l.A.rejected_at} IS NOT NULL) 6 AND ${l.A.user_id} != ${l.A.reviewer_user_id} 7 AND ${l.A.reviewer_user_id} IS NOT NULL`,d=i` 8 EXTRACT(EPOCH FROM AVG(${l.A.getReviewTime()})) 9 ${l.A.where({},(0,h.Xs)`${s} AND ${n}`)} 10 `,c=i`COUNT(*) 11 ${l.A.where({},(0,h.Xs)`${s} 12 AND ${n} 13 AND ${l.A.getReviewTime()} > ${_.CQ} * INTERVAL '1 DAY' 14 `)}`,$=i`COUNT(*) 15 ${l.A.where({},(0,h.Xs)`${s} 16 AND ${n} 17 AND ${l.A.getReviewTime()} <= ${_.CQ} * INTERVAL '1 DAY' 18 `)}`,m=(0,h.Xs)`( 19 ( 20 ${l.A.approved_at} >= ${e.toISO()} 21 AND ${l.A.approved_at} < ${r.toISO()} 22 ) OR ( 23 ${l.A.approved_at} IS NULL 24 AND ${l.A.rejected_at} >= ${e.toISO()} 25 AND ${l.A.rejected_at} < ${r.toISO()} 26 ) 27 )`,N=(0,h.Xs)`reviewer_user_id`,D=(0,h.Xs)`count_reviewed_certification_requests`,R=(0,h.Xs)`display_name`,f=(0,p.A)(a,"admin:certifications:all-stats:view"),S=i.many((0,h.Xs)` 28 FROM 29 ( 30 WITH aggregated_certification_requests AS ( 31 SELECT 32 ${l.A.reviewer_user_id} AS ${N}, 33 COUNT(${l.A.id}) as ${D} 34 ${l.A.where({reviewerUserId:f?void 0:a.id,groupBy:[l.A.reviewer_user_id]},(0,h.Xs)`${n} AND ${m}`)} 35 ) 36 SELECT 37 ${N}, 38 ${D}, 39 ${o.A.display_name} AS ${R} 40 FROM aggregated_certification_requests 41 JOIN ${o.A} ON ${o.A.id} = aggregated_certification_requests.reviewer_user_id 42 ORDER BY count_reviewed_certification_requests DESC 43 ) AS res 44 `).map(e=>({userId:e(N)??0,countReviewedCertificationRequests:e(D)??0,displayName:e(R)??""}));return(0,t.Y)(w.A,{weekStart:e,summaryStats:[{label:"Average Days to Review",value:(null!=d?d/86400:null)?.toFixed(2)},{label:`# Reviewed in Less Than ${_.CQ} Days`,value:$},{label:`# Reviewed in More Than ${_.CQ} Days`,value:c}],reviewerTableHeading:f?"Stats by Reviewer":"Your Stats",reviewerColumnHeaders:["# Reviewed Certification Requests"],reviewerRows:S.map(e=>({userId:e.userId,displayName:e.displayName,cells:[e.countReviewedCertificationRequests]})),reviewerEmptyMessage:"No certification requests have been reviewed."})}function $(){let e=Array.from({length:4}).map((e,r)=>r).map(e=>({startDate:c.c9.utc().minus({weeks:e}
44).startOf("week"),endDate:c.c9.utc().minus({weeks:e}).endOf("week")}));return(0,t.Y)(d.B,{direction:"column",spacing:"16px",children:e.map(({startDate:e,endDate:r})=>(0,t.Y)(v,{startDate:e,endDate:r},e.toISO()))})}var m=i(49783);let N=(0,n.A)(function(){return(0,t.Y)(m.A,{title:"Dashboard",children:(0,t.FD)(a.m,{children:[(0,t.Y)(s.D,{size:"2xl",as:"h1",mb:"24px",children:"Certification Review Dashboard"}),(0,t.Y)($,{})]})})},{userRoles:["admin:certifications"]});var D=!0;let R=N},55791:(e,r,i)=>{"use strict";i.d(r,{Th:()=>d});var t=i(37876),a=i(99407),s=i(11842),n=i(85696);let d=(0,s.R)(({isNumeric:e,...r},i)=>{let s=(0,a.k)();return(0,t.jsx)(n.B.th,{...r,ref:i,__css:s.th,"data-is-numeric":e})})},56780:(e,r,i)=>{(window.__NEXT_P=window.__NEXT_P||[]).push(["/admin/certifications/dashboard",function(){return i(36866)}])},61110:(e,r,i)=>{"use strict";i.d(r,{A:()=>a});var t=i(16425);function a(e,r){return null!=r.userRoles&&r.userRoles.forEach(e=>{if(!e.startsWith("admin:"))throw Error("Cannot expose admin page to non-admins!")}),(0,t.A)(e,{authScopes:r.authScopes,userRoles:r.userRoles,onboardingUsers:"disallowed"})}},63973:(e,r,i)=>{"use strict";i.d(r,{d:()=>d});var t=i(37876),a=i(99407),s=i(11842),n=i(85696);let d=(0,s.R)((e,r)=>{let i=(0,a.k)();return(0,t.jsx)(n.B.thead,{...e,ref:r,__css:i.thead})})},76221:(e,r,i)=>{"use strict";i.d(r,{A:()=>d});var t=i(78919),a=i(6869),s=i(13792);let n={...a.Ay,whereUnapprovedRecordings:()=>(0,t.Xs)` 45 ${n.where({reviewed:"unreviewed"})} AND 46 ${n.recording_approved_at} IS NULL 47 `,getReviews:()=>(0,t.Xs)` 48 ${s.A.where({certificationRequestId:n.id})} 49 `},d=n},83734:(e,r,i)=>{"use strict";i.d(r,{r:()=>d});var t=i(37876),a=i(99407),s=i(11842),n=i(85696);let d=(0,s.R)((e,r)=>{let{placement:i="bottom",...s}=e,d=(0,a.k)();return(0,t.jsx)(n.B.caption,{...s,ref:r,__css:{...d.caption,captionSide:i}})});d.displayName="TableCaption"}},e=>{e.O(0,[6425,636,6593,8792],()=>e(e.s=56780)),_N_E=e.O()}]); 50//# sourceMappingURL=dashboard-8f28d6f7b33ee576.js.map
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.