PageSourceSearch

https://www.logistap.com/assets/RidersQualityReport-DcsfAppp.js

js logistap.com collected 2026-10-02 01:35:58 UTC 26,884 bytes, 1 lines download raw bytes

1import{j as t}from"./index-CkAxGocv.js";import{u as Oe,r as k}from"./i18n-vendor-Co-krN6G.js";import{j as Ie,g as Ee,a as Ce}from"./employeeData-C8aL7inU.js";import{u as Ve,g as Te}from"./employeePhotos-Bk2b9ZIj.js";import{a as Fe}from"./employeeStore-DaTEjH3m.js";import{a as Me,n as be}from"./idRecords-BTEnaOsB.js";import{p as We}from"./dailyReportFileImport-Cerr30P4.js";import{u as ce}from"./useScopedLocalDraft-Cy_as7tO.js";import{m as qe}from"./search-BjfNVckD.js";import{u as Ae}from"./react-vendor-D5E1hOjb.js";import{F as Qe}from"./file-spreadsheet-BjGvNxpy.js";import{U as ye}from"./upload-CSd9GWjy.js";import{D as $e}from"./download-Cj8OUOB8.js";import{X as _e}from"./x-vmD7m2IU.js";import{T as ke}from"./triangle-alert-JFzfoOgH.js";import"./supabase-vendor-Co_IX6oM.js";import"./permissionGuard-BRj1WUDY.js";import"./fileUploadPolicy-Dsb_MFV2.js";import"./browserCache-CpZow4D-.js";import"./employees-CZ6YCCge.js";import"./excelWorkbook-Cdg6q8vu.js";import"./dutyTime-CLWnIwLd.js";import"./reportImportTemplates-3MMafdeJ.js";import"./platforms-CuFZQmDd.js";import"./createLucideIcon-BPd9wT8k.js";const se=["B","C","D","E","F"],de={B:"#059669",C:"#0284c7",D:"#d97706",E:"#ea580c",F:"#dc2626"},N={month:["Month","month"],riderId:["rider_id","rider id","Rider ID","driver_id","captain_id"],segment:["segment","Segment"],grossOrders:["gross_orders","Gross Orders","gross orders"],completedOrders:["completed_orders","Completed Orders","completed orders"],completedOrdersInTime:["completed_orders_in_time","Completed Orders In Time","completed orders in time"],totalVerificationRequests:["total_verification_requests","Total Verification Requests","total verification requests"],successfulVerificationRequests:["successful_verification_requests","Successful Verification Requests","successful verification requests"],verificationSuccessRate:["verification_success_rate","Verification Success Rate","verification success rate"],onTimeDeliveryScore:["on_time_delivery_score","On-time Delivery Score","on time delivery score"],finalDeliveryQualityScore:["final_delivery_quality_score","Final Delivery Quality Score","final delivery quality score"]},me=l=>l.toLowerCase().replace(/[^\p{L}\p{N}]+/gu,""),L=l=>new Intl.NumberFormat("en-US",{maximumFractionDigits:0}).format(l),I=l=>l===null||!Number.isFinite(l)?"-":`${(l*100).toFixed(1)}%`,Z=l=>{const i=l.replace(/,/g,"").replace(/%/g,"").trim();if(!i)return 0;const o=Number(i);return Number.isFinite(o)?o:0},ve=l=>{const i=l.trim();if(!i)return null;const o=Z(i);return Number.isFinite(o)?i.includes("%")||o>1.5?o/100:o:null},fe=(l,i,o,h)=>i>0?l/i:h>0?o/h:null,ze=()=>({segmentCounts:new Map,grossOrders:0,completedOrders:0,completedOrdersInTime:0,totalVerificationRequests:0,successfulVerificationRequests:0,onTimeWeightedValue:0,onTimeWeight:0,verificationWeightedValue:0,verificationWeight:0,finalScoreWeightedValue:0,finalScoreWeight:0}),W=(l,i,o)=>{const h=o.map(me).map(c=>i.get(c)).find(Boolean);return h?l[h]??"":""},Ue=l=>{const i=new Map;return l.forEach(o=>{const h=me(o);h&&!i.has(h)&&i.set(h,o)}),i},Be=(l,i)=>{const o=Ue(i),h=N.finalDeliveryQualityScore.some(x=>o.has(me(x))),c=[{label:"Month",aliases:N.month},{label:"rider_id",aliases:N.riderId},{label:"gross_orders",aliases:N.grossOrders},{label:"segment",aliases:N.segment}].filter(x=>x.aliases.every(j=>!o.has(me(j))));if(c.length>0)throw new Error(`Missing required column: ${c.map(x=>x.label).join(", ")}`);return{rows:l.map(x=>{const j=W(x,o,N.month).trim(),S=W(x,o,N.riderId).trim(),y=W(x,o,N.segment).trim().toUpperCase();return{month:j,riderId:S,segment:y,grossOrders:Z(W(x,o,N.grossOrders)),completedOrders:Z(W(x,o,N.completedOrders)),completedOrdersInTime:Z(W(x,o,N.completedOrdersInTime)),totalVerificationRequests:Z(W(x,o,N.totalVerificationRequests)),successfulVerificationRequests:Z(W(x,o,N.successfulVerificationRequests)),verificationSuccessRate:ve(W(x,o,N.verificationSuccessRate)),onTimeDeliveryScore:ve(W(x,o,N.onTimeDeliveryScore)),finalDeliveryQualityScore:ve(W(x,o,N.finalDeliveryQualityScore))}}).filter(x=>x.month&&x.riderId),hasFinalScoreColumn:h}},Ne=(l,i)=>{const o={jan:0,january:0,feb:1,february:1,mar:2,march:2,apr:3,april:3,may:4,jun:5,june:5,jul:6,july:6,aug:7,august:7,sep:8,sept:8,september:8,oct:9,october:9,nov:10,november:10,dec:11,december:11},h=l.trim(),c=h.match(/^([A-Za-z]+)\s+(\d{4})$/);if(c){const x=o[c[1].toLowerCase()],j=Number(c[2]);if(x!==void 0&&Number.isFinite(j))return j*12+x}const C=h.match(/^(\d{4})[-/](\d{1,2})$/);if(C){const x=Number(C[1]),j=Number(C[2])-1;if(Number.isFinite(x)&&j>=0&&j<=11)return x*12+j}return Number.MIN_SAFE_INTEGER+i},Xe=l=>{const i=Array.from(l.entries()).filter(([o])=>!!o);return i.length===0?"-":i.sort((o,h)=>{const c=h[1]-o[1];return c!==0?c:o[0].localeCompare(h[0])})[0][0]},Le=l=>({segment:Xe(l.segmentCounts),grossOrders:l.grossOrders,onTimeDeliveryRate:fe(l.completedOrdersInTime,l.completedOrders,l.onTimeWeightedValue,l.onTimeWeight),verificationSuccessRate:fe(l.successfulVerificationRequests,l.totalVerificationRequests,l.verificationWeightedValue,l.verificationWeight),finalDeliveryQualityScore:l.finalScoreWeight>0?l.finalScoreWeightedValue/l.finalScoreWeight:null}),Re=(l,i)=>{const o=l.months[i.month];return o?i.metric==="segment"?o.segment:o[i.metric]??-1:i.metric==="segment"?"":-1};function Ct(){const{t:l,i18n:i}=Oe(),o=Ae(),h=(o==null?void 0:o.searchTerm)??"",c=k.useCallback(e=>l(`terms.${e}`,e),[l]),C=Fe(),x=Ve(C),j=k.useRef(null),S=k.useRef(null),[y,ue,_]=ce("riders-quality-report:rows",[]),[Q,xe,q]=ce("riders-quality-report:has-final-score-column",!0),[J,P,pe]=ce("riders-quality-report:file-name",""),[R,T]=k.useState(""),[E,O]=k.useState(""),[G,H]=k.useState(()=>new Map),[V,s]=k.useState(!1),[w,Y]=k.useState(!1),[D,F,he]=ce("riders-quality-report:sort-state",null);k.useEffect(()=>{let e=!0;return Me().then(r=>{e&&(H(r),O(""))}).catch(r=>{console.warn("Riders Quality Report ID map load failed:",r),e&&(H(new Map),O(c("ID Manager data could not be loaded.")))}),()=>{e=!1}},[c]);const A=k.useMemo(()=>{const e=Array.from(new Set(y.map(r=>r.month)));return e.sort((r,n)=>Ne(n,e.indexOf(n))-Ne(r,e.indexOf(r)))},[y]),le=k.useMemo(()=>{const e={B:0,C:0,D:0,E:0,F:0};
1return y.forEach(r=>{se.includes(r.segment)&&(e[r.segment]+=1)}),e},[y]),$=k.useMemo(()=>{const e=new Set(y.map(u=>be(u.riderId))).size,r=y.reduce((u,p)=>u+p.grossOrders,0),n=y.reduce((u,p)=>u+p.completedOrders,0),a=y.reduce((u,p)=>u+p.completedOrdersInTime,0),d=y.reduce((u,p)=>u+p.totalVerificationRequests,0),f=y.reduce((u,p)=>u+p.successfulVerificationRequests,0),m=y.reduce((u,p)=>{const v=p.grossOrders;return p.onTimeDeliveryScore!==null&&(u.value+=p.onTimeDeliveryScore*v,u.weight+=v),u},{value:0,weight:0}),g=y.reduce((u,p)=>{const v=p.grossOrders;return p.verificationSuccessRate!==null&&(u.value+=p.verificationSuccessRate*v,u.weight+=v),u},{value:0,weight:0}),b=y.reduce((u,p)=>{const v=p.grossOrders;return p.finalDeliveryQualityScore!==null&&(u.value+=p.finalDeliveryQualityScore*v,u.weight+=v),u},{value:0,weight:0});return{totalRiders:e,grossOrders:r,onTimeDeliveryRate:fe(a,n,m.value,m.weight),verificationSuccessRate:fe(f,d,g.value,g.weight),finalDeliveryQualityScore:b.weight>0?b.value/b.weight:null}},[y]),z=k.useMemo(()=>{const e=new Map,r=new Map;y.forEach(a=>{const d=be(a.riderId);r.has(d)||r.set(d,a.riderId);const f=e.get(d)??new Map,m=f.get(a.month)??ze(),g=a.grossOrders;m.grossOrders+=a.grossOrders,m.completedOrders+=a.completedOrders,m.completedOrdersInTime+=a.completedOrdersInTime,m.totalVerificationRequests+=a.totalVerificationRequests,m.successfulVerificationRequests+=a.successfulVerificationRequests,m.segmentCounts.set(a.segment,(m.segmentCounts.get(a.segment)??0)+1),a.onTimeDeliveryScore!==null&&(m.onTimeWeightedValue+=a.onTimeDeliveryScore*g,m.onTimeWeight+=g),a.verificationSuccessRate!==null&&(m.verificationWeightedValue+=a.verificationSuccessRate*g,m.verificationWeight+=g),a.finalDeliveryQualityScore!==null&&(m.finalScoreWeightedValue+=a.finalDeliveryQualityScore*g,m.finalScoreWeight+=g),f.set(a.month,m),e.set(d,f)});const n=a=>{const d=G.get(be(a));if(!d)return{riderName:a,employee:null,matched:!1};const f=Ie(d,C)??null;return{riderName:f?Ee(f,i.language):d,employee:f,matched:!0}};return Array.from(e.entries()).map(([a,d])=>{const f=r.get(a)??a,{riderName:m,employee:g,matched:b}=n(f);return{riderId:f,riderName:m,employee:g,matched:b,months:Array.from(d.entries()).reduce((u,[p,v])=>(u[p]=Le(v),u),{})}}).sort((a,d)=>a.riderName.localeCompare(d.riderName))},[C,i.language,G,y]),U=k.useMemo(()=>{if(!D)return z;const e=D.direction==="asc"?1:-1;return[...z].sort((r,n)=>{const a=Re(r,D),d=Re(n,D);let f=0;return typeof a=="number"&&typeof d=="number"?f=a-d:f=String(a).localeCompare(String(d)),f===0&&(f=r.riderName.localeCompare(n.riderName)),f*e})},[z,D]),ge=U.filter(e=>qe(h,[e.riderName,e.riderId])),B=(e,r)=>{F(n=>(n==null?void 0:n.month)===e&&n.metric===r?{month:e,metric:r,direction:n.direction==="desc"?"asc":"desc"}:{month:e,metric:r,direction:"desc"})},M=y.length>0,K=k.useMemo(()=>{const e=new Map;return A.forEach(r=>{e.set(r,{B:0,C:0,D:0,E:0,F:0})}),y.forEach(r=>{if(!se.includes(r.segment))return;const n=e.get(r.month);n&&(n[r.segment]+=1)}),e},[A,y]),ae=async e=>{var n;const r=(n=e.target.files)==null?void 0:n[0];if(r){s(!0),T("");try{const a=await We(r),d=Be(a.rows,a.headers);if(d.rows.length===0)throw new Error(c("No usable rider quality rows were found."));ue(d.rows),xe(d.hasFinalScoreColumn),P(r.name)}catch(a){console.warn("Riders Quality Report file parse failed:",a),ue([]),xe(!0),P(""),T(a instanceof Error?a.message:c("The selected file could not be read."))}finally{s(!1),e.target.value=""}}},X=async()=>{if(!(!S.current||w)){Y(!0),T("");try{const e=await Ge({title:c("Riders Quality Report"),months:A,riderRows:U,segmentCounts:le,segmentCountsByMonth:K,summary:$,selfieUrls:x,language:i.language,labels:{totalRiders:c("Total Riders"),grossOrders:c("Gross Orders"),onTimeDelivery:c("On-time Delivery %"),verificationSuccess:c("Verification Success %"),finalQualityScore:c("Final Quality Score %"),riderName:c("Rider Name"),segment:c("Segment"),uploadedRows:c("Uploaded Rows")}}),r=document.createElement("a");r.href=e,r.download=`riders-quality-report-${new Date().toISOString().slice(0,10)}.png`,r.click()}catch(e){console.warn("Riders Quality Report screenshot failed:",e),T(c("Screenshot download failed. Please try again."))}finally{Y(!1)}}},ee=c("Download the CSV/Excel file from your delivery platform dashboard Delivery Quality Segment page, then upload it here."),ie=()=>{_(),q(),pe(),he(),T("")};return t.jsxs("section",{className:"ars-page h-full overflow-auto bg-slate-50 p-2 text-slate-900 dark:bg-slate-950 dar
1k:text-slate-100 sm:p-3",children:[t.jsx("input",{ref:j,type:"file",accept:".csv,.xlsx,.xls,text/csv,application/vnd.ms-excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",className:"hidden",onChange:e=>void ae(e)}),t.jsxs("div",{ref:S,className:"mx-auto max-w-[1800px] space-y-2",children:[t.jsxs("div",{className:"flex flex-col gap-2 rounded-lg border border-slate-200 bg-white px-2.5 py-2 shadow-sm dark:border-slate-800 dark:bg-slate-900 lg:flex-row lg:items-center lg:justify-between",children:[t.jsxs("div",{className:"min-w-0",children:[t.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[t.jsxs("span",{className:"inline-flex items-center gap-1.5 rounded-md bg-emerald-50 px-2 py-1 text-xs font-black text-emerald-700 dark:bg-emerald-400/10 dark:text-emerald-300",children:[t.jsx(Qe,{size:14}),c("Riders Quality Report")]}),J&&t.jsx("span",{className:"truncate rounded-md bg-slate-100 px-2 py-1 text-xs font-black text-slate-600 dark:bg-slate-800 dark:text-slate-300",children:J})]}),t.jsx("p",{className:"mt-1 truncate text-xs font-semibold text-slate-500 dark:text-slate-300",children:ee})]}),t.jsxs("div",{className:"flex shrink-0 flex-wrap items-center gap-1.5",children:[t.jsxs("button",{type:"button",onClick:()=>{var e;return(e=j.current)==null?void 0:e.click()},disabled:V,className:"inline-flex h-8 items-center justify-center gap-1.5 rounded-md bg-emerald-600 px-3 text-xs font-black text-white transition hover:bg-emerald-700 disabled:cursor-not-allowed disabled:bg-slate-300",children:[t.jsx(ye,{size:14}),c(V?"Uploading...":"Upload")]}),t.jsxs("button",{type:"button",onClick:()=>void X(),disabled:!M||w,className:"inline-flex h-8 items-center justify-center gap-1.5 rounded-md border border-slate-200 bg-white px-3 text-xs font-black text-slate-700 transition hover:bg-slate-50 disabled:cursor-not-allowed disabled:text-slate-300 dark:border-slate-700 dark:bg-slate-900 dark:text-slate-200 dark:hover:bg-slate-800",children:[t.jsx($e,{size:14}),c(w?"Saving...":"Download")]}),t.jsxs("button",{type:"button",onClick:ie,disabled:!M&&!J,className:"inline-flex h-8 items-center justify-center gap-1.5 rounded-md border border-slate-200 bg-white px-3 text-xs font-black text-slate-700 transition hover:bg-slate-50 disabled:cursor-not-allowed disabled:text-slate-300 dark:border-slate-700 dark:bg-slate-900 dark:text-slate-200 dark:hover:bg-slate-800",children:[t.jsx(_e,{size:14}),c("Clear")]})]})]}),(R||E)&&t.jsxs("div",{className:"grid gap-1.5",children:[E&&t.jsx(we,{tone:"amber",icon:t.jsx(ke,{size:16}),children:E}),R&&t.jsx(we,{tone:"red",icon:t.jsx(ke,{size:16}),children:R})]}),M?t.jsxs(t.Fragment,{children:[t.jsxs("div",{className:"grid w-full gap-2 sm:grid-cols-2 lg:grid-cols-5",children:[t.jsx(re,{label:c("Total Riders"),value:L($.totalRiders)}),t.jsx(re,{label:c("Gross Orders"),value:L($.grossOrders)}),t.jsx(re,{label:c("On-time Delivery %"),value:I($.onTimeDeliveryRate)}),t.jsx(re,{label:c("Verification Success %"),value:I($.verificationSuccessRate)}),t.jsx(re,{label:c("Final Quality Score %"),value:I($.finalDeliveryQualityScore),hint:Q?void 0:c("Not in uploaded file")})]}),t.jsx("section",{className:"w-full overflow-hidden rounded-lg border border-slate-200 bg-white shadow-sm dark:border-slate-800 dark:bg-slate-900",children:t.jsx("div",{className:"overflow-x-auto",children:t.jsxs("table",{className:"w-full min-w-max border-collapse text-left text-xs leading-tight sm:text-sm xl:text-base",children:[t.jsxs("colgroup",{children:[t.jsx("col",{className:"w-[11rem]"}),A.map(e=>t.jsxs(k.Fragment,{children:[t.jsx("col",{className:"w-[2.4rem]"}),t.jsx("col",{className:"w-[2.8rem]"}),t.jsx("col",{className:"w-[3.4rem]"}),t.jsx("col",{className:"w-[3.7rem]"}),t.jsx("col",{className:"w-[3.4rem]"})]},`${e}-cols`))]}),t.jsxs("thead",{children:[t.jsxs("tr",{className:"bg-slate-950 text-white",children:[t.jsx("th",{rowSpan:2,className:"sticky left-0 z-20 w-44 border-r border-slate-700 bg-slate-950 px-2 py-2 text-xs font-black uppercase tracking-wide sm:text-sm xl:text-base",children:c("Rider Name")}),A.map(e=>t.jsx("th",{colSpan:5,className:"border-r border-slate-700 px-2 py-1.5 text-center text-xs font-black uppercase tracking-wide sm:text-sm xl:text-base",children:t.jsxs("div",{className:"flex flex-col items-center gap-1 xl:flex-row xl:justify-between xl:gap-2",children:[t.jsx("span",{children:e}),t.jsx(He,{counts:K.get(e)})]})},e))]}),t.jsx("tr",{className:"bg-slate-800 text-white",children:A.map(e=>[{label:c("Segment"),metric:"segment"},{label:c("Gross Orders"),metric:"grossOrders"},{label:c("On-time Delivery %"),metric:"onTimeDeliveryRate"},{label:c("Verification Success %"),metric:"verificationSuccessRate"},{label:Q?c("Final Quality Score %"):`${c("Final Quality Score %")} (${c("N/A")})`,metric:"finalDeliveryQualityScore",title:Q?void 0:c("The uploaded file has no Final Quality Score column.")}].map(r=>
1t.jsx("th",{title:r.title,className:"whitespace-normal break-words border-r border-slate-700 px-1 py-1 text-center text-[9px] font-black leading-[1.05] sm:text-[10px] xl:text-xs",children:t.jsxs("button",{type:"button",onClick:()=>B(e,r.metric),className:"flex h-full w-full items-center justify-center gap-0.5 whitespace-normal break-words text-center leading-[1.05] text-white",title:`${r.label} ${e}`,children:[t.jsx("span",{children:r.label}),t.jsx(Ye,{active:(D==null?void 0:D.month)===e&&D.metric===r.metric,direction:(D==null?void 0:D.direction)??"desc"})]})},`${e}-${r.metric}`)))})]}),t.jsx("tbody",{children:ge.map((e,r)=>t.jsxs("tr",{className:r%2===0?"bg-white dark:bg-slate-900":"bg-slate-50 dark:bg-slate-950",children:[t.jsx(Ze,{riderRow:e,selfieUrls:x,language:i.language}),A.map(n=>{const a=e.months[n];return a?t.jsx(Je,{summary:a},`${e.riderId}-${n}`):t.jsx(et,{},`${e.riderId}-${n}-empty`)})]},e.riderId))})]})})})]}):t.jsx("div",{className:"flex min-h-[calc(100vh-11rem)] items-center justify-center rounded-lg border border-dashed border-emerald-300 bg-white p-4 text-center dark:border-emerald-400/30 dark:bg-slate-900",children:t.jsxs("div",{className:"max-w-xl",children:[t.jsx("div",{className:"mx-auto flex h-12 w-12 items-center justify-center rounded-lg bg-emerald-50 text-emerald-700 dark:bg-emerald-400/10 dark:text-emerald-300",children:t.jsx(ye,{size:24})}),t.jsx("h1",{className:"mt-3 text-xl font-black text-slate-950 dark:text-white",children:c("Upload Delivery Quality Segment file")}),t.jsx("p",{className:"mt-1 text-sm font-semibold leading-6 text-slate-500 dark:text-slate-300",children:ee}),t.jsxs("button",{type:"button",onClick:()=>{var e;return(e=j.current)==null?void 0:e.click()},disabled:V,className:"mt-4 inline-flex h-9 items-center justify-center gap-2 rounded-md bg-emerald-600 px-4 text-sm font-black text-white transition hover:bg-emerald-700 disabled:cursor-not-allowed disabled:bg-slate-300",children:[t.jsx(ye,{size:16}),c(V?"Uploading...":"Upload CSV/Excel")]})]})})]})]})}const Pe=l=>new Promise(i=>{if(!l){i(null);return}const o=new Image;o.crossOrigin="anonymous",o.onload=()=>i(o),o.onerror=()=>i(null),o.src=l}),Ge=async({title:l,months:i,riderRows:o,segmentCounts:h,segmentCountsByMonth:c,summary:C,selfieUrls:x,language:j,labels:S})=>{const _=[38,46,58,64,58],Q=_.reduce((e,r)=>e+r,0),q=174+i.length*Q,J=0,P=56,pe=48,R=118,T=40,E=34,O=34,G=30,H=R+T+E+Math.max(o.length,1)*O+G,V=document.createElement("canvas");V.width=q*2,V.height=H*2,V.style.width=`${q}px`,V.style.height=`${H}px`;const s=V.getContext("2d");if(!s)throw new Error("Canvas is not available.");const w=document.documentElement.dir==="rtl",Y=w?"right":"left",D=(e,r,n=8)=>w?e+r-n:e+n,F=w?q-174:J,he=w?0:174,A=e=>he+e*Q,le=(e,r)=>w?e+_.slice(r+1).reduce((n,a)=>n+a,0):e+_.slice(0,r).reduce((n,a)=>n+a,0),$=e=>e.matched?e.riderName:e.riderId,z=await Promise.all(o.map(e=>Pe(e.employee?Te(e.employee,x):""))),U=(e,r,n,a,d)=>{s.beginPath(),s.moveTo(e+d,r),s.lineTo(e+n-d,r),s.quadraticCurveTo(e+n,r,e+n,r+d),s.lineTo(e+n,r+a-d),s.quadraticCurveTo(e+n,r+a,e+n-d,r+a),s.lineTo(e+d,r+a),s.quadraticCurveTo(e,r+a,e,r+a-d),s.lineTo(e,r+d),s.quadraticCurveTo(e,r,e+d,r),s.closePath()},ge=(e,r,n=2)=>{const a=String(e||"-").split(/\s+/),d=[];let f="";for(const u of a){const p=f?`${f} ${u}`:u;if(s.measureText(p).width>r&&f){if(d.push(f),f=u,d.length===n-1)break}else f=p}(f||d.length===0)&&d.push(f||"-");const m=d.slice(0,n),g=m.length-1;let b=m[g]??"-";for(;s.measureText(`${b}...`).width>r&&b.length>1;)b=b.slice(0,-1);return m[g]=b!==(d[g]??b)?`${b}...`:b,m},B=(e,r,n,a,d,f="center",m=11,g=2)=>{const b=ge(e,a,g),u=b.length*m;let p=n+(d-u)/2+m/2;s.textAlign=f,s.textBaseline="middle",b.forEach(v=>{s.fillText(v,r,p),p+=m})},M=(e,r,n,a,d="#ffffff",f="#cbd5e1")=>{s.fillStyle=d,s.fillRect(e,r,n,a),s.strokeStyle=f,s.strokeRect(e,r,n,a)};s.scale(2,2),s.direction=w?"rtl":"ltr",s.fillStyle="#f8fafc",s.fillRect(0,0,q,H),s.fillStyle="#0f172a",s.textAlign="center",s.textBaseline="middle",s.font="900 24px Arial",s.fillText(l,q/2,24);const K=[[S.totalRiders,L(C.totalRiders)],[S.grossOrders,L(C.grossOrders
1)],[S.onTimeDelivery,I(C.onTimeDeliveryRate)],[S.verificationSuccess,I(C.verificationSuccessRate)],[S.finalQualityScore,I(C.finalDeliveryQualityScore)]],ae=6,X=(q-ae*(K.length-1))/K.length;K.forEach(([e,r],n)=>{const a=n*(X+ae);M(a,P,X,pe,"#ffffff","#dbe3ea"),s.fillStyle="#64748b",s.font="900 10px Arial",B(e,a+X/2,P+6,X-12,18,"center",10,2),s.fillStyle="#0f172a",s.font="900 19px Arial",s.fillText(r,a+X/2,P+34)}),M(F,R,174,T+E,"#0f172a","#334155"),s.fillStyle="#ffffff",s.font="900 11px Arial",B(S.riderName,D(F,174),R,158,T+E,Y,12,2),i.forEach((e,r)=>{const n=A(r);M(n,R,Q,T,"#0f172a","#334155"),s.fillStyle="#ffffff",s.font="900 12px Arial",s.textAlign="center",s.fillText(e,n+Q/2,R+12);const a=c.get(e);let d=w?n+Q-48:n+6;se.forEach(m=>{U(d,R+22,42,12,6),s.fillStyle=de[m],s.fill(),s.fillStyle="#ffffff",s.font="900 8px Arial",s.textAlign="center",s.fillText(`${m}:${(a==null?void 0:a[m])??0}`,d+42/2,R+28),d+=w?-46:46}),[S.segment,S.grossOrders,S.onTimeDelivery,S.verificationSuccess,S.finalQualityScore].forEach((m,g)=>{const b=_[g],u=le(n,g);M(u,R+T,b,E,"#1e293b","#334155"),s.fillStyle="#ffffff",s.font="900 8px Arial",B(m,u+b/2,R+T,b-4,E,"center",9,3)})});const ee=o.length>0?o:[];ee.forEach((e,r)=>{const n=R+T+E+r*O,a=r%2===0?"#ffffff":"#f8fafc";M(F,n,174,O,a);const d=26,f=O-4,m=w?F+174-d-6:F+7,g=n+(O-f)/2;s.save(),U(m,g,d,f,5),s.fillStyle=e.employee?"#ecfdf5":"#e2e8f0",s.fill(),s.clip(),z[r]&&s.drawImage(z[r],m,g,d,f),s.restore(),s.strokeStyle="#cbd5e1",U(m,g,d,f,5),s.stroke(),z[r]||(s.fillStyle=e.employee?"#047857":"#475569",s.font="900 8px Arial",s.textAlign="center",s.fillText(e.employee?Ce(e.employee,j):"ID",m+d/2,g+f/2)),s.fillStyle="#0f172a",s.font=e.matched?"900 10px Arial":"900 15px Arial",B($(e),w?F+174-40:F+40,n,126,e.matched?20:O,Y,e.matched?11:16,e.matched?2:1),e.matched&&(s.fillStyle="#64748b",s.font="800 8px Arial",s.textAlign=Y,s.fillText(e.riderId,w?F+174-40:F+40,n+26)),i.forEach((b,u)=>{const p=A(u),v=e.months[b];(v?[v.segment,L(v.grossOrders),I(v.onTimeDeliveryRate),I(v.verificationSuccessRate),I(v.finalDeliveryQualityScore)]:["-","-","-","-","-"]).forEac
1h((Se,ne)=>{const te=_[ne],oe=le(p,ne);if(M(oe,n,te,O,a),s.fillStyle="#0f172a",s.font=ne===0?"900 9px Arial":"800 9px Arial",ne===0&&v){const De=v.segment,je=22;U(oe+(te-je)/2,n+11,je,12,6),s.fillStyle=de[De]??"#64748b",s.fill(),s.fillStyle="#ffffff",s.textAlign="center",s.fillText(Se,oe+te/2,n+17)}else B(Se,oe+te/2,n,te-4,O,"center",10,2)})})});const ie=R+T+E+ee.length*O;return M(0,ie,q,G,"#ecfdf5","#cbd5e1"),s.fillStyle="#065f46",s.font="900 11px Arial",s.textAlign="center",s.fillText(`${S.uploadedRows}: ${L(Object.values(h).reduce((e,r)=>e+r,0))}`,q/2,ie+G/2),V.toDataURL("image/png")};function we({children:l,icon:i,tone:o}){const h={amber:"border-amber-200 bg-amber-50 text-amber-800 dark:border-amber-400/30 dark:bg-amber-400/10 dark:text-amber-200",red:"border-red-200 bg-red-50 text-red-800 dark:border-red-400/30 dark:bg-red-400/10 dark:text-red-200"}[o];return t.jsxs("div",{className:`flex items-start gap-2 rounded-md border px-2 py-1.5 text-xs font-bold ${h}`,children:[t.jsx("span",{className:"mt-0.5 shrink-0",children:i}),t.jsx("span",{children:l})]})}function re({label:l,value:i,hint:o}){return t.jsxs("article",{className:"rounded-lg border border-slate-200 bg-white px-3 py-2 text-center shadow-sm dark:border-slate-800 dark:bg-slate-900",children:[t.jsx("p",{className:"truncate text-center text-[10px] font-black uppercase tracking-wide text-slate-400 sm:text-xs xl:text-sm",children:l}),t.jsx("p",{className:"mt-1 text-center text-xl font-black text-slate-950 dark:text-white sm:text-2xl xl:text-3xl",children:i}),o&&t.jsx("p",{className:"mt-0.5 truncate text-center text-[9px] font-bold text-amber-600 dark:text-amber-400 sm:text-[10px]",children:o})]})}function He({counts:l}){return t.jsx("span",{className:"flex flex-wrap items-center justify-center gap-0.5 xl:justify-end",children:se.map(i=>t.jsxs("span",{className:"rounded-full px-1 py-0.5 text-[8px] font-black leading-none text-white sm:text-[10px] xl:text-xs",style:{backgroundColor:de[i]},children:[i,":",(l==null?void 0:l[i])??0]},i))})}function Ye({active:l,direction:i}){return t.jsx("span",{className:`inline-flex w-2 shrink-0 justify-center text-[8px] font-black ${l?"text-emerald-300":"text-slate-500"}`,"aria-hidden":"true",children:l?i==="asc"?"^":"v":"-"})}function Ke({segment:l}){const i=se.includes(l)?l:null;return t.jsx("span",{className:"inline-flex min-w-6 items-center justify-center rounded-full px-1.5 py-0.5 text-[10px] font-black text-white sm:text-xs xl:text-sm",style:{backgroundColor:i?de[i]:"#64748b"},children:l||"-"})}function Ze({language:l,riderRow:i,selfieUrls:o}){const h=i.employee?Te(i.employee,o):"";return t.jsx("th",{className:"sticky left-0 z-10 border-b border-r border-slate-200 bg-inherit px-2 py-1 text-left align-middle dark:border-slate-800",children:t.jsxs("div",{className:"flex min-w-0 items-center gap-2",children:[i.employee&&h?t.jsx("img",{src:h,alt:i.riderName,loading:"lazy",decoding:"async",className:"h-9 w-7 shrink-0 rounded-md border border-emerald-200 object-cover"}):i.employee?t.jsx("span",{className:"flex h-9 w-7 shrink-0 items-center justify-center rounded-md bg-emerald-100 text-[10px] font-black text-emerald-700",children:Ce(i.employee,l)}):t.jsx("span",{className:"flex h-9 w-7 shrink-0 items-center justify-center rounded-md bg-slate-200 text-[10px] font-black text-slate-600",children:"ID"}),t.jsx("div",{className:"min-w-0",children:i.matched?t.jsxs(t.Fragment,{children:[t.jsx("p",{className:"min-w-0 truncate text-sm font-black text-slate-950 dark:text-white sm:text-base xl:text-lg",children:i.riderName}),t.jsx("p",{className:"text-xs font-bold text-slate-400 sm:text-sm xl:text-base",children:i.riderId})]}):t.jsx("p",{className:"min-w-0 truncate text-lg font-black text-slate-950 dark:text-white sm:text-xl xl:text-2xl",children:i.riderId})})]})})}function Je({summary:l}){return t.jsxs(t.Fragment,{children:[t.jsx("td",{className:"border-b border-r border-slate-200 px-1 py-1 text-center dark:border-slate-800",children:t.jsx(Ke,{segment:l.segment})}),t.jsx("td",{className:"border-b border-r border-slate-200 px-1.5 py-1 text-center font-black text-slate-800 dark:border-slate-800 dark:text-slate-100",children:L(l.grossOrders
1)}),t.jsx("td",{className:"border-b border-r border-slate-200 px-1.5 py-1 text-center font-bold text-slate-700 dark:border-slate-800 dark:text-slate-200",children:I(l.onTimeDeliveryRate)}),t.jsx("td",{className:"border-b border-r border-slate-200 px-1.5 py-1 text-center font-bold text-slate-700 dark:border-slate-800 dark:text-slate-200",children:I(l.verificationSuccessRate)}),t.jsx("td",{className:"border-b border-r border-slate-200 px-1.5 py-1 text-center font-bold text-slate-700 dark:border-slate-800 dark:text-slate-200",children:I(l.finalDeliveryQualityScore)})]})}function et(){return t.jsx(t.Fragment,{children:Array.from({length:5},(l,i)=>t.jsx("td",{className:"border-b border-r border-slate-200 px-1.5 py-1 text-center font-bold text-slate-300 dark:border-slate-800 dark:text-slate-600",children:"-"},i))})}export{Ct 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.