ahs-cti 1.0.1-beta.2 → 1.0.1-beta.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agentDetailReport-XUNWPSQW.mjs +10 -0
- package/dist/agentDetailReport-XUNWPSQW.mjs.map +1 -0
- package/dist/agentPerformanceReport-4WNLHIFT.mjs +597 -0
- package/dist/agentPerformanceReport-4WNLHIFT.mjs.map +1 -0
- package/dist/{callHistory-A5CBDPZR.mjs → callHistory-3CMW24B6.mjs} +27 -34
- package/dist/callHistory-3CMW24B6.mjs.map +1 -0
- package/dist/campaigns-FR7EIRXI.mjs +2664 -0
- package/dist/campaigns-FR7EIRXI.mjs.map +1 -0
- package/dist/cdrReport-6OBRKAYS.mjs +965 -0
- package/dist/cdrReport-6OBRKAYS.mjs.map +1 -0
- package/dist/chunk-AEDSLIHI.mjs +49 -0
- package/dist/chunk-AEDSLIHI.mjs.map +1 -0
- package/dist/chunk-FVNDPJUU.mjs +95 -0
- package/dist/chunk-FVNDPJUU.mjs.map +1 -0
- package/dist/chunk-I4CJTHZR.mjs +138 -0
- package/dist/chunk-I4CJTHZR.mjs.map +1 -0
- package/dist/chunk-RZZQ42MG.mjs +115 -0
- package/dist/chunk-RZZQ42MG.mjs.map +1 -0
- package/dist/chunk-U2DJ5WRK.mjs +1219 -0
- package/dist/chunk-U2DJ5WRK.mjs.map +1 -0
- package/dist/{chunk-FFYJ4LWU.mjs → chunk-YREOEULC.mjs} +127 -12
- package/dist/chunk-YREOEULC.mjs.map +1 -0
- package/dist/index.d.mts +630 -527
- package/dist/index.d.ts +631 -528
- package/dist/index.js +7409 -602
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +406 -512
- package/dist/index.mjs.map +1 -1
- package/dist/loginReport-MHNHB5F6.mjs +969 -0
- package/dist/loginReport-MHNHB5F6.mjs.map +1 -0
- package/package.json +16 -1
- package/dist/callHistory-A5CBDPZR.mjs.map +0 -1
- package/dist/chunk-FFYJ4LWU.mjs.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../call-control-sdk/lib/pages/agentPerformanceReport/index.tsx","../call-control-sdk/lib/pages/agentPerformanceReport/useAgentPerformanceReport.ts","../call-control-sdk/lib/pages/agentPerformanceReport/types.ts","../call-control-sdk/lib/pages/agentPerformanceReport/styles.ts"],"sourcesContent":["import React, { memo, useCallback, useEffect, useMemo, useState } from \"react\";\r\nimport {\r\n\tAlert,\r\n\tBox,\r\n\tCircularProgress,\r\n\tIconButton,\r\n\tInputAdornment,\r\n\tOutlinedInput,\r\n\tPaper,\r\n\tStack,\r\n\tTable,\r\n\tTableBody,\r\n\tTableCell,\r\n\tTableContainer,\r\n\tTableHead,\r\n\tTablePagination,\r\n\tTableRow,\r\n\tTableSortLabel,\r\n\tTooltip,\r\n} from \"@mui/material\";\r\nimport FileDownloadIcon from \"@mui/icons-material/FileDownload\";\r\nimport VisibilityIcon from \"@mui/icons-material/Visibility\";\r\nimport SearchIcon from \"@mui/icons-material/Search\";\r\nimport dayjs, { type Dayjs } from \"dayjs\";\r\nimport { LocalizationProvider } from \"@mui/x-date-pickers/LocalizationProvider\";\r\nimport { AdapterDayjs } from \"@mui/x-date-pickers/AdapterDayjs\";\r\nimport { DatePicker } from \"@mui/x-date-pickers/DatePicker\";\r\n\r\nimport { SDKProvider } from \"../../components/SDKProvider\";\r\nimport { SDKPageHeader } from \"../../components/SDKPageHeader\";\r\nimport { SDKButton } from \"../../components/SDKButton\";\r\nimport { useAgentPerformanceReport } from \"./useAgentPerformanceReport\";\r\nimport AgentDetailReport from \"../agentDetailReport\";\r\nimport type { AgentPerfRow } from \"./types\";\r\nimport { COLUMNS, type Order } from \"./types\";\r\nimport {\r\n\tbodyCellSx,\r\n\tC,\r\n\tcontainerSx,\r\n\tcontentSx,\r\n\tdatePickerSx,\r\n\tellipsisCellSx,\r\n\temptyRowSx,\r\n\tfilterBarSx,\r\n\theadCellSx,\r\n\tloadingOverlaySx,\r\n\tpaginationSx,\r\n\tsearchInputSx,\r\n\ttablePaperSx,\r\n\ttableRootSx,\r\n\ttableRowSx,\r\n} from \"./styles\";\r\n\r\n// ──── helpers ────────────────────────────────────────────────────────────────\r\n\r\nfunction parseDur(d: string): number {\r\n\tif (!d || d === \"00:00:00\") return 0;\r\n\tconst p = d.split(\":\").map(Number);\r\n\tif (p.length === 3) return p[0] * 3600 + p[1] * 60 + p[2];\r\n\tif (p.length === 2) return p[0] * 60 + p[1];\r\n\treturn 0;\r\n}\r\n\r\nfunction fmtDur(s: number): string {\r\n\tif (!s || s <= 0) return \"00:00:00\";\r\n\tconst h = Math.floor(s / 3600);\r\n\tconst m = Math.floor((s % 3600) / 60);\r\n\tconst sc = Math.floor(s % 60);\r\n\treturn [h, m, sc].map((x) => String(x).padStart(2, \"0\")).join(\":\");\r\n}\r\n\r\nfunction getVal(row: AgentPerfRow, key: string): any {\r\n\tswitch (key) {\r\n\t\tcase \"id\": return row.agentId || \"\";\r\n\t\tcase \"name\": return row.fullName || \"\";\r\n\t\tcase \"process\": return row.processName || \"\";\r\n\t\tcase \"queue\": return row.queueNames || \"\";\r\n\t\tcase \"total\": return row.totalCalls ?? 0;\r\n\t\tcase \"ans\": return row.answeredCalls ?? 0;\r\n\t\tcase \"miss\": return row.missedCalls ?? 0;\r\n\t\tcase \"inTotal\": return row.inCalls ?? 0;\r\n\t\tcase \"outTotal\": return row.outCalls ?? 0;\r\n\t\tcase \"aht\": return row.ahtSeconds ?? 0;\r\n\t\tcase \"loginDur\": return row.loginDurationSeconds ?? 0;\r\n\t\tcase \"talk\": return row.talkTimeSeconds ?? 0;\r\n\t\tcase \"hold\": return row.holdTimeSeconds ?? 0;\r\n\t\tcase \"wrapup\": return row.wrapupSeconds ?? 0;\r\n\t\tcase \"breakTime\": return row.breakTimeSeconds ?? 0;\r\n\t\tcase \"idle\": return row.idleTimeSeconds ?? 0;\r\n\t\tcase \"adherence\": return row.adherencePct ?? null;\r\n\t\tcase \"firstLogin\": return row.firstLoginTime || \"\";\r\n\t\tdefault: return \"\";\r\n\t}\r\n}\r\n\r\nfunction renderCellValue(row: AgentPerfRow, key: string): string {\r\n\tconst v = getVal(row, key);\r\n\tconst durKeys = [\"aht\", \"loginDur\", \"talk\", \"hold\", \"wrapup\", \"breakTime\", \"idle\"];\r\n\tif (durKeys.includes(key)) return fmtDur(Number(v) || 0);\r\n\tif (key === \"adherence\") return v != null ? `${v}%` : \"—\";\r\n\tif (key === \"firstLogin\") return v ? dayjs(v).format(\"DD MMM YY hh:mm A\") : \"\";\r\n\treturn v == null ? \"\" : String(v);\r\n}\r\n\r\nfunction splitQueues(raw: string): string[] {\r\n\tif (!raw) return [];\r\n\treturn String(raw)\r\n\t\t.split(/[,;|]/)\r\n\t\t.map((q) => q.trim())\r\n\t\t.filter(Boolean);\r\n}\r\n\r\n// ──── Content ────────────────────────────────────────────────────────────────\r\n\r\nconst AgentPerformanceReportContent = memo(() => {\r\n\tconst [startDate, setStartDate] = useState<Dayjs | null>(dayjs().startOf(\"day\"));\r\n\tconst [endDate, setEndDate] = useState<Dayjs | null>(dayjs());\r\n\tconst [quickRange, setQuickRange] = useState<string>(\"today\");\r\n\tconst [search, setSearch] = useState(\"\");\r\n\r\n\tconst [orderBy, setOrderBy] = useState<string>(\"total\");\r\n\tconst [order, setOrder] = useState<Order>(\"desc\");\r\n\tconst [page, setPage] = useState(0);\r\n\tconst [rowsPerPage, setRowsPerPage] = useState(10);\r\n\r\n\tconst [selectedAgent, setSelectedAgent] = useState<AgentPerfRow | null>(null);\r\n\r\n\tconst { agents, loading, error, setError, fetchAgents, exportExcel } =\r\n\t\tuseAgentPerformanceReport();\r\n\r\n\tconst fetchReport = useCallback(\r\n\t\tasync (sd?: Dayjs | null, ed?: Dayjs | null) => {\r\n\t\t\tconst fromDate = sd ?? startDate;\r\n\t\t\tconst toDate = ed ?? endDate;\r\n\t\t\tif (!fromDate || !toDate) {\r\n\t\t\t\tsetError(\"Select date range\");\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tsetPage(0);\r\n\t\t\tawait fetchAgents({\r\n\t\t\t\tstart_date: fromDate.format(\"YYYY-MM-DDTHH:mm:ss\"),\r\n\t\t\t\tend_date: toDate.format(\"YYYY-MM-DDTHH:mm:ss\"),\r\n\t\t\t});\r\n\t\t},\r\n\t\t[startDate, endDate, fetchAgents, setError],\r\n\t);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (startDate && endDate) fetchReport();\r\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\r\n\t}, []);\r\n\r\n\tconst setQuick = (range: string) => {\r\n\t\tsetQuickRange(range);\r\n\t\tconst today = dayjs();\r\n\t\tlet sd: Dayjs = today;\r\n\t\tconst ed: Dayjs = today;\r\n\t\tif (range === \"week\") sd = today.startOf(\"week\");\r\n\t\telse if (range === \"month\") sd = today.startOf(\"month\");\r\n\t\tsetStartDate(sd);\r\n\t\tsetEndDate(ed);\r\n\t\tfetchReport(sd, ed);\r\n\t};\r\n\r\n\tconst filtered = useMemo(() => {\r\n\t\tif (!search) return agents;\r\n\t\tconst s = search.toLowerCase();\r\n\t\treturn agents.filter(\r\n\t\t\t(r) =>\r\n\t\t\t\t(r.fullName || \"\").toLowerCase().includes(s) ||\r\n\t\t\t\t(r.agentId || \"\").toLowerCase().includes(s),\r\n\t\t);\r\n\t}, [agents, search]);\r\n\r\n\tconst sorted = useMemo(() => {\r\n\t\treturn [...filtered].sort((a, b) => {\r\n\t\t\tconst av = getVal(a, orderBy);\r\n\t\t\tconst bv = getVal(b, orderBy);\r\n\t\t\tif (typeof av === \"number\" && typeof bv === \"number\") {\r\n\t\t\t\treturn order === \"asc\" ? av - bv : bv - av;\r\n\t\t\t}\r\n\t\t\treturn order === \"asc\"\r\n\t\t\t\t? String(av).localeCompare(String(bv))\r\n\t\t\t\t: String(bv).localeCompare(String(av));\r\n\t\t});\r\n\t}, [filtered, orderBy, order]);\r\n\r\n\tconst paged = sorted.slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage);\r\n\r\n\tconst handleSort = (key: string) => {\r\n\t\tsetOrder(orderBy === key && order === \"asc\" ? \"desc\" : \"asc\");\r\n\t\tsetOrderBy(key);\r\n\t};\r\n\r\n\tconst handleExport = async () => {\r\n\t\tif (!startDate || !endDate) {\r\n\t\t\tsetError(\"Select date range\");\r\n\t\t\treturn;\r\n\t\t}\r\n\t\ttry {\r\n\t\t\tawait exportExcel({\r\n\t\t\t\tstart_date: startDate.format(\"YYYY-MM-DDTHH:mm:ss\"),\r\n\t\t\t\tend_date: endDate.format(\"YYYY-MM-DDTHH:mm:ss\"),\r\n\t\t\t});\r\n\t\t} catch (err: any) {\r\n\t\t\tsetError(err?.message || \"Failed to export Excel\");\r\n\t\t}\r\n\t};\r\n\r\n\tif (selectedAgent) {\r\n\t\treturn (\r\n\t\t\t<AgentDetailReport\r\n\t\t\t\tagentRow={selectedAgent}\r\n\t\t\t\tonBack={() => setSelectedAgent(null)}\r\n\t\t\t\tinitialStartDate={startDate}\r\n\t\t\t\tinitialEndDate={endDate}\r\n\t\t\t\tinitialQuickRange={quickRange}\r\n\t\t\t\tfrom=\"REPORTS_LIST\"\r\n\t\t\t/>\r\n\t\t);\r\n\t}\r\n\r\n\treturn (\r\n\t\t<LocalizationProvider dateAdapter={AdapterDayjs}>\r\n\t\t\t<Box sx={containerSx}>\r\n\t\t\t\t<SDKPageHeader\r\n\t\t\t\t\ttitle=\"Performance Report\"\r\n\t\t\t\t\tactions={\r\n\t\t\t\t\t\t<Stack direction=\"row\" alignItems=\"center\" spacing={1}>\r\n\t\t\t\t\t\t\t<OutlinedInput\r\n\t\t\t\t\t\t\t\tsize=\"small\"\r\n\t\t\t\t\t\t\t\tvalue={search}\r\n\t\t\t\t\t\t\t\tonChange={(e) => {\r\n\t\t\t\t\t\t\t\t\tsetSearch(e.target.value);\r\n\t\t\t\t\t\t\t\t\tsetPage(0);\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\tplaceholder=\"Search name, ID...\"\r\n\t\t\t\t\t\t\t\tsx={searchInputSx}\r\n\t\t\t\t\t\t\t\tendAdornment={\r\n\t\t\t\t\t\t\t\t\t<InputAdornment position=\"end\">\r\n\t\t\t\t\t\t\t\t\t\t<SearchIcon sx={{ fontSize: 18, color: \"#999\" }} />\r\n\t\t\t\t\t\t\t\t\t</InputAdornment>\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t<SDKButton\r\n\t\t\t\t\t\t\t\tstartIcon={<FileDownloadIcon sx={{ fontSize: \"0.95rem\" }} />}\r\n\t\t\t\t\t\t\t\tdisabled={!agents.length}\r\n\t\t\t\t\t\t\t\tonClick={handleExport}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\tExport Excel\r\n\t\t\t\t\t\t\t</SDKButton>\r\n\t\t\t\t\t\t</Stack>\r\n\t\t\t\t\t}\r\n\t\t\t\t/>\r\n\r\n\t\t\t\t<Box sx={filterBarSx}>\r\n\t\t\t\t\t<DatePicker\r\n\t\t\t\t\t\tvalue={startDate}\r\n\t\t\t\t\t\tonChange={(val) => {\r\n\t\t\t\t\t\t\tsetStartDate(val as Dayjs | null);\r\n\t\t\t\t\t\t\tsetQuickRange(\"custom\");\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\tslotProps={{ textField: { size: \"small\", sx: datePickerSx } }}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<Box component=\"span\" sx={{ fontSize: 12, color: C.t3 }}>\r\n\t\t\t\t\t\tto\r\n\t\t\t\t\t</Box>\r\n\t\t\t\t\t<DatePicker\r\n\t\t\t\t\t\tvalue={endDate}\r\n\t\t\t\t\t\tonChange={(val) => {\r\n\t\t\t\t\t\t\tsetEndDate(val as Dayjs | null);\r\n\t\t\t\t\t\t\tsetQuickRange(\"custom\");\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\tslotProps={{ textField: { size: \"small\", sx: datePickerSx } }}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<SDKButton\r\n\t\t\t\t\t\tvariant={quickRange === \"today\" ? \"primary\" : \"outlined\"}\r\n\t\t\t\t\t\tonClick={() => setQuick(\"today\")}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\tToday\r\n\t\t\t\t\t</SDKButton>\r\n\t\t\t\t\t<SDKButton\r\n\t\t\t\t\t\tvariant={quickRange === \"week\" ? \"primary\" : \"outlined\"}\r\n\t\t\t\t\t\tonClick={() => setQuick(\"week\")}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\tThis Week\r\n\t\t\t\t\t</SDKButton>\r\n\t\t\t\t\t<SDKButton\r\n\t\t\t\t\t\tvariant={quickRange === \"month\" ? \"primary\" : \"outlined\"}\r\n\t\t\t\t\t\tonClick={() => setQuick(\"month\")}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\tThis Month\r\n\t\t\t\t\t</SDKButton>\r\n\t\t\t\t\t<SDKButton variant=\"outlined\" onClick={() => fetchReport()}>\r\n\t\t\t\t\t\tSearch\r\n\t\t\t\t\t</SDKButton>\r\n\t\t\t\t</Box>\r\n\r\n\t\t\t\t{error && (\r\n\t\t\t\t\t<Alert severity=\"error\" sx={{ mx: 2.5, mt: 1.5 }} onClose={() => setError(\"\")}>\r\n\t\t\t\t\t\t{error}\r\n\t\t\t\t\t</Alert>\r\n\t\t\t\t)}\r\n\r\n\t\t\t\t<Box sx={contentSx}>\r\n\t\t\t\t\t{loading && (\r\n\t\t\t\t\t\t<Box sx={loadingOverlaySx}>\r\n\t\t\t\t\t\t\t<CircularProgress />\r\n\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t)}\r\n\r\n\t\t\t\t\t<Paper elevation={0} sx={tablePaperSx}>\r\n\t\t\t\t\t\t<TableContainer>\r\n\t\t\t\t\t\t\t<Table size=\"small\" sx={tableRootSx}>\r\n\t\t\t\t\t\t\t\t<TableHead>\r\n\t\t\t\t\t\t\t\t\t<TableRow>\r\n\t\t\t\t\t\t\t\t\t\t{COLUMNS.map((col) => (\r\n\t\t\t\t\t\t\t\t\t\t\t<TableCell key={col.key} align={col.align || \"left\"} sx={headCellSx}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<TableSortLabel\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tactive={orderBy === col.key}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tdirection={orderBy === col.key ? order : \"asc\"}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tonClick={() => handleSort(col.key)}\r\n\t\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{col.label}\r\n\t\t\t\t\t\t\t\t\t\t\t\t</TableSortLabel>\r\n\t\t\t\t\t\t\t\t\t\t\t</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t\t\t\t\t<TableCell sx={{ ...headCellSx, width: 48 }}>Detail</TableCell>\r\n\t\t\t\t\t\t\t\t\t</TableRow>\r\n\t\t\t\t\t\t\t\t</TableHead>\r\n\t\t\t\t\t\t\t\t<TableBody>\r\n\t\t\t\t\t\t\t\t\t{paged.map((row, idx) => (\r\n\t\t\t\t\t\t\t\t\t\t<TableRow\r\n\t\t\t\t\t\t\t\t\t\t\tkey={row.agentId || idx}\r\n\t\t\t\t\t\t\t\t\t\t\thover\r\n\t\t\t\t\t\t\t\t\t\t\tonClick={() => setSelectedAgent(row)}\r\n\t\t\t\t\t\t\t\t\t\t\tsx={tableRowSx}\r\n\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t{COLUMNS.map((col) => {\r\n\t\t\t\t\t\t\t\t\t\t\t\tif (col.key === \"queue\") {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tconst queues = splitQueues(row.queueNames);\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tconst shown = queues.slice(0, 3).join(\", \");\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tconst overflow = queues.length > 3;\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tconst display = overflow ? `${shown}…` : shown;\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tconst title = queues.join(\", \") || \"—\";\r\n\t\t\t\t\t\t\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<TableCell\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tkey={col.key}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\talign={col.align || \"left\"}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsx={{ ...bodyCellSx, maxWidth: 240 }}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Tooltip title={title} placement=\"top\" arrow>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Box component=\"span\" sx={ellipsisCellSx}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{display || \"—\"}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Tooltip>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\tif (col.key === \"firstLogin\") {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tconst text = renderCellValue(row, col.key);\r\n\t\t\t\t\t\t\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<TableCell\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tkey={col.key}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\talign={col.align || \"left\"}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsx={{ ...bodyCellSx, whiteSpace: \"nowrap\" }}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{text}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\tif (col.key === \"name\") {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tconst text = renderCellValue(row, col.key);\r\n\t\t\t\t\t\t\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<TableCell\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tkey={col.key}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\talign={col.align || \"left\"}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsx={{ ...bodyCellSx, maxWidth: 200 }}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Tooltip title={text || \"\"} placement=\"top\" arrow>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Box component=\"span\" sx={ellipsisCellSx}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{text}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Tooltip>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<TableCell key={col.key} align={col.align || \"left\"} sx={bodyCellSx}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{renderCellValue(row, col.key)}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t\t\t\t\t})}\r\n\t\t\t\t\t\t\t\t\t\t\t<TableCell sx={bodyCellSx} align=\"center\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t<IconButton\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tsize=\"small\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tonClick={(e) => {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetSelectedAgent(row);\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tsx={{ color: C.blue }}\r\n\t\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<VisibilityIcon sx={{ fontSize: 16 }} />\r\n\t\t\t\t\t\t\t\t\t\t\t\t</IconButton>\r\n\t\t\t\t\t\t\t\t\t\t\t</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t</TableRow>\r\n\t\t\t\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t\t\t\t{paged.length === 0 && !loading && (\r\n\t\t\t\t\t\t\t\t\t\t<TableRow>\r\n\t\t\t\t\t\t\t\t\t\t\t<TableCell colSpan={COLUMNS.length + 1} sx={emptyRowSx}>\r\n\t\t\t\t\t\t\t\t\t\t\t\tNo data found\r\n\t\t\t\t\t\t\t\t\t\t\t</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t</TableRow>\r\n\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t</TableBody>\r\n\t\t\t\t\t\t\t</Table>\r\n\t\t\t\t\t\t</TableContainer>\r\n\r\n\t\t\t\t\t\t<TablePagination\r\n\t\t\t\t\t\t\tcomponent=\"div\"\r\n\t\t\t\t\t\t\tcount={filtered.length}\r\n\t\t\t\t\t\t\tpage={page}\r\n\t\t\t\t\t\t\tonPageChange={(_, p) => setPage(p)}\r\n\t\t\t\t\t\t\trowsPerPage={rowsPerPage}\r\n\t\t\t\t\t\t\tonRowsPerPageChange={(e) => {\r\n\t\t\t\t\t\t\t\tsetRowsPerPage(parseInt(e.target.value, 10));\r\n\t\t\t\t\t\t\t\tsetPage(0);\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\trowsPerPageOptions={[5, 10, 20, 25, 50]}\r\n\t\t\t\t\t\t\tsx={paginationSx}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t</Paper>\r\n\t\t\t\t</Box>\r\n\t\t\t</Box>\r\n\t\t</LocalizationProvider>\r\n\t);\r\n});\r\n\r\nconst AgentPerformanceReport: React.FC = () => (\r\n\t<SDKProvider>\r\n\t\t<AgentPerformanceReportContent />\r\n\t</SDKProvider>\r\n);\r\n\r\nexport default AgentPerformanceReport;\r\n","import { useCallback, useState } from \"react\";\r\nimport axiosInstance from \"../../services/axios\";\r\nimport { END_POINT } from \"../../services/endPoint\";\r\nimport type { AgentPerfReportParams, AgentPerfRow } from \"./types\";\r\n\r\nfunction buildQs(params: AgentPerfReportParams): string {\r\n\tconst qs = new URLSearchParams();\r\n\tif (params.start_date) qs.append(\"start_date\", params.start_date);\r\n\tif (params.end_date) qs.append(\"end_date\", params.end_date);\r\n\tif (params.agent_id) for (const id of params.agent_id) qs.append(\"agent_id\", id);\r\n\tif (params.queue_id) for (const id of params.queue_id) qs.append(\"queue_id\", String(id));\r\n\tif (params.process_id) for (const id of params.process_id) qs.append(\"process_id\", String(id));\r\n\tif (params.top_n) qs.append(\"top_n\", String(params.top_n));\r\n\tconst str = qs.toString();\r\n\treturn str ? `?${str}` : \"\";\r\n}\r\n\r\nexport function useAgentPerformanceReport() {\r\n\tconst [agents, setAgents] = useState<AgentPerfRow[]>([]);\r\n\tconst [loading, setLoading] = useState(false);\r\n\tconst [error, setError] = useState(\"\");\r\n\r\n\tconst fetchAgents = useCallback(async (params: AgentPerfReportParams) => {\r\n\t\tsetLoading(true);\r\n\t\tsetError(\"\");\r\n\t\ttry {\r\n\t\t\tconst res = await axiosInstance.get<AgentPerfRow[]>(\r\n\t\t\t\t`${END_POINT.AGENT_PERFORMANCE_REPORT_AGENTS}${buildQs(params)}`,\r\n\t\t\t);\r\n\t\t\tsetAgents(Array.isArray(res.data) ? res.data : []);\r\n\t\t} catch (err: any) {\r\n\t\t\tsetError(err?.response?.data?.message || err?.message || \"Failed to fetch performance report\");\r\n\t\t\tsetAgents([]);\r\n\t\t} finally {\r\n\t\t\tsetLoading(false);\r\n\t\t}\r\n\t}, []);\r\n\r\n\tconst exportExcel = useCallback(async (params: AgentPerfReportParams) => {\r\n\t\tconst res = await axiosInstance.get(\r\n\t\t\t`${END_POINT.AGENT_PERFORMANCE_REPORT_EXPORT_EXCEL}${buildQs(params)}`,\r\n\t\t\t{ responseType: \"blob\" },\r\n\t\t);\r\n\t\tconst url = URL.createObjectURL(new Blob([res.data]));\r\n\t\tconst a = document.createElement(\"a\");\r\n\t\ta.href = url;\r\n\t\ta.download = `agent-performance-${params.start_date ?? \"export\"}.xlsx`;\r\n\t\ta.click();\r\n\t\tURL.revokeObjectURL(url);\r\n\t}, []);\r\n\r\n\treturn { agents, loading, error, setError, fetchAgents, exportExcel };\r\n}\r\n","export interface AgentPerfRow {\r\n\tagentId: string;\r\n\tfullName: string;\r\n\tprocessName: string;\r\n\tqueueNames: string;\r\n\ttotalCalls: number;\r\n\tansweredCalls: number;\r\n\tmissedCalls: number;\r\n\tinCalls: number;\r\n\toutCalls: number;\r\n\tahtSeconds: number;\r\n\tahtFormatted: string;\r\n\tloginDurationSeconds: number;\r\n\tloginDurationFormatted: string;\r\n\ttalkTimeSeconds: number;\r\n\ttalkTimeFormatted: string;\r\n\tholdTimeSeconds: number;\r\n\tholdTimeFormatted: string;\r\n\twrapupSeconds: number;\r\n\twrapupFormatted: string;\r\n\tbreakTimeSeconds: number;\r\n\tbreakTimeFormatted: string;\r\n\tbreakCount: number;\r\n\tidleTimeSeconds: number;\r\n\tidleTimeFormatted: string;\r\n\tfirstLoginTime: string | null;\r\n\tadherencePct: number;\r\n}\r\n\r\nexport interface AgentPerfReportParams {\r\n\tstart_date?: string;\r\n\tend_date?: string;\r\n\tagent_id?: string[];\r\n\tqueue_id?: number[];\r\n\tprocess_id?: number[];\r\n\ttop_n?: number;\r\n}\r\n\r\nexport type Order = \"asc\" | \"desc\";\r\n\r\nexport interface ColDef {\r\n\tkey: string;\r\n\tlabel: string;\r\n\tgroup: string;\r\n\talign?: \"left\" | \"right\" | \"center\";\r\n}\r\n\r\nexport const COLUMNS: ColDef[] = [\r\n\t{ key: \"id\", label: \"User ID\", group: \"Agent\" },\r\n\t{ key: \"name\", label: \"Full Name\", group: \"Agent\" },\r\n\t{ key: \"queue\", label: \"Queues\", group: \"Agent\" },\r\n\t{ key: \"total\", label: \"Total Calls\", group: \"Calls\", align: \"right\" },\r\n\t{ key: \"ans\", label: \"Answered\", group: \"Calls\", align: \"right\" },\r\n\t{ key: \"miss\", label: \"Missed\", group: \"Calls\", align: \"right\" },\r\n\t{ key: \"inTotal\", label: \"Inbound\", group: \"Calls\", align: \"right\" },\r\n\t{ key: \"outTotal\", label: \"Outbound\", group: \"Calls\", align: \"right\" },\r\n\t{ key: \"aht\", label: \"AHT\", group: \"Time\", align: \"right\" },\r\n\t{ key: \"loginDur\", label: \"Login Dur\", group: \"Time\", align: \"right\" },\r\n\t{ key: \"talk\", label: \"Talk Time\", group: \"Time\", align: \"right\" },\r\n\t{ key: \"hold\", label: \"Hold Time\", group: \"Time\", align: \"right\" },\r\n\t{ key: \"wrapup\", label: \"Wrapup Time\", group: \"Time\", align: \"right\" },\r\n\t{ key: \"breakTime\", label: \"Break Time\", group: \"Breaks\", align: \"right\" },\r\n\t{ key: \"idle\", label: \"Idle Time\", group: \"Time\", align: \"right\" },\r\n\t{ key: \"firstLogin\", label: \"First Login\", group: \"Login\" },\r\n\t{ key: \"adherence\", label: \"Adherence %\", group: \"Agent\", align: \"right\" },\r\n];\r\n","import type { SxProps, Theme } from \"@mui/material/styles\";\r\n\r\n// ─── Color tokens ─────────────────────────────────────────────────────────────\r\nexport const C = {\r\n\tnavy: \"#0d2a56\",\r\n\tblue: \"#1565c8\",\r\n\tgreen: \"#0a9a62\",\r\n\tamber: \"#c47c00\",\r\n\tred: \"#cc2a2a\",\r\n\tpurple: \"#6b3fbf\",\r\n\tteal: \"#0b7a8f\",\r\n\tbg: \"transparent\",\r\n\tsurface: \"#fff\",\r\n\ts2: \"#f7f9fc\",\r\n\ts3: \"#eef2f7\",\r\n\tb1: \"rgba(20,50,100,.07)\",\r\n\tb2: \"rgba(20,50,100,.13)\",\r\n\tt1: \"#0d1e35\",\r\n\tt2: \"#364f6e\",\r\n\tt3: \"#7a93b5\",\r\n\tt4: \"#bccad9\",\r\n\tblt: \"#e8f0fc\",\r\n\tglt: \"#e4f6ef\",\r\n\talt: \"#fdf3e0\",\r\n\trlt: \"#fde8e8\",\r\n\tplt: \"#f0eafa\",\r\n\ttlt: \"#e3f4f7\",\r\n};\r\n\r\nexport const containerSx: SxProps<Theme> = {\r\n\tbackground: C.bg,\r\n\tminHeight: \"100vh\",\r\n};\r\n\r\nexport const filterBarSx: SxProps<Theme> = {\r\n\tdisplay: \"flex\",\r\n\talignItems: \"center\",\r\n\tgap: 1,\r\n\tflexWrap: \"wrap\",\r\n\tpb: 1.5,\r\n\tpx: 2,\r\n};\r\n\r\nexport const contentSx: SxProps<Theme> = {\r\n\tpy: 2,\r\n\tpx: 1,\r\n\toverflow: \"auto\",\r\n\tposition: \"relative\",\r\n};\r\n\r\nexport const loadingOverlaySx: SxProps<Theme> = {\r\n\tposition: \"absolute\",\r\n\ttop: 0,\r\n\tleft: 0,\r\n\tright: 0,\r\n\tbottom: 0,\r\n\tbackground: \"rgba(240,244,248,0.7)\",\r\n\tdisplay: \"flex\",\r\n\talignItems: \"center\",\r\n\tjustifyContent: \"center\",\r\n\tzIndex: 10,\r\n};\r\n\r\nexport const tablePaperSx: SxProps<Theme> = {\r\n\tborderRadius: \"8px\",\r\n\tborder: \"1px solid #e0e7ef\",\r\n\toverflow: \"hidden\",\r\n\tmb: 2,\r\n};\r\n\r\nexport const tableRootSx: SxProps<Theme> = {\r\n\tminWidth: 1400,\r\n\t\"& .MuiTableCell-root\": {\r\n\t\tfontSize: \"0.75rem\",\r\n\t\tborderBottom: \"1px solid #eef1f6\",\r\n\t\tpy: 0.4,\r\n\t\tpx: 1,\r\n\t\theight: 36,\r\n\t\twhiteSpace: \"nowrap\",\r\n\t\toverflow: \"hidden\",\r\n\t\ttextOverflow: \"ellipsis\",\r\n\t},\r\n\t\"& .MuiTableRow-root\": {\r\n\t\theight: 36,\r\n\t},\r\n};\r\n\r\nexport const ellipsisCellSx: SxProps<Theme> = {\r\n\tmaxWidth: 220,\r\n\toverflow: \"hidden\",\r\n\ttextOverflow: \"ellipsis\",\r\n\twhiteSpace: \"nowrap\",\r\n\tdisplay: \"block\",\r\n};\r\n\r\nexport const headCellSx: SxProps<Theme> = {\r\n\tfontFamily: \"poppins, Arial, sans-serif\",\r\n\tbgcolor: \"#f1f1f1\",\r\n\tcolor: \"#333\",\r\n\tfontWeight: 600,\r\n\twhiteSpace: \"nowrap\",\r\n\tfontSize: \"0.8rem\",\r\n\tpy: \"6px\",\r\n\tpx: \"12px\",\r\n};\r\n\r\nexport const bodyCellSx: SxProps<Theme> = {\r\n\tfontFamily: \"poppins, Arial, sans-serif\",\r\n\tfontSize: \"0.82rem\",\r\n\tpy: \"4px\",\r\n\tpx: \"12px\",\r\n};\r\n\r\nexport const tableRowSx: SxProps<Theme> = {\r\n\tbackgroundColor: \"#fff\",\r\n\tcursor: \"pointer\",\r\n\t\"&:hover\": { backgroundColor: \"#f0f7f8\" },\r\n};\r\n\r\nexport const paginationSx: SxProps<Theme> = {\r\n\tborderTop: \"1px solid #eef1f6\",\r\n\t\"& .MuiTablePagination-displayedRows\": { fontSize: \"0.73rem\" },\r\n\t\"& .MuiTablePagination-selectLabel\": { fontSize: \"0.73rem\" },\r\n};\r\n\r\nexport const searchInputSx: SxProps<Theme> = {\r\n\twidth: 250,\r\n\tfontSize: \"0.82rem\",\r\n\theight: 36,\r\n};\r\n\r\nexport const datePickerSx: SxProps<Theme> = {\r\n\twidth: 150,\r\n\t\"& .MuiOutlinedInput-root\": {\r\n\t\tborderRadius: \"7px\",\r\n\t\tfontSize: 12,\r\n\t\theight: 30,\r\n\t},\r\n\t\"& .MuiInputBase-input\": { py: \"4px\", fontSize: 12 },\r\n};\r\n\r\nexport const emptyRowSx: SxProps<Theme> = {\r\n\ttextAlign: \"center\",\r\n\tpy: 4,\r\n\tcolor: C.t3,\r\n\tfontSize: 13,\r\n};\r\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA,SAAgB,MAAM,eAAAA,cAAa,WAAW,SAAS,YAAAC,iBAAgB;AACvE;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACM;AACP,OAAO,sBAAsB;AAC7B,OAAO,oBAAoB;AAC3B,OAAO,gBAAgB;AACvB,OAAO,WAA2B;AAClC,SAAS,4BAA4B;AACrC,SAAS,oBAAoB;AAC7B,SAAS,kBAAkB;;;AC1B3B,SAAS,aAAa,gBAAgB;AAKtC,SAAS,QAAQ,QAAuC;AACvD,QAAM,KAAK,IAAI,gBAAgB;AAC/B,MAAI,OAAO,WAAY,IAAG,OAAO,cAAc,OAAO,UAAU;AAChE,MAAI,OAAO,SAAU,IAAG,OAAO,YAAY,OAAO,QAAQ;AAC1D,MAAI,OAAO,SAAU,YAAW,MAAM,OAAO,SAAU,IAAG,OAAO,YAAY,EAAE;AAC/E,MAAI,OAAO,SAAU,YAAW,MAAM,OAAO,SAAU,IAAG,OAAO,YAAY,OAAO,EAAE,CAAC;AACvF,MAAI,OAAO,WAAY,YAAW,MAAM,OAAO,WAAY,IAAG,OAAO,cAAc,OAAO,EAAE,CAAC;AAC7F,MAAI,OAAO,MAAO,IAAG,OAAO,SAAS,OAAO,OAAO,KAAK,CAAC;AACzD,QAAM,MAAM,GAAG,SAAS;AACxB,SAAO,MAAM,IAAI,GAAG,KAAK;AAC1B;AAEO,SAAS,4BAA4B;AAC3C,QAAM,CAAC,QAAQ,SAAS,IAAI,SAAyB,CAAC,CAAC;AACvD,QAAM,CAAC,SAAS,UAAU,IAAI,SAAS,KAAK;AAC5C,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAS,EAAE;AAErC,QAAM,cAAc,YAAY,OAAO,WAAkC;AAtB1E;AAuBE,eAAW,IAAI;AACf,aAAS,EAAE;AACX,QAAI;AACH,YAAM,MAAM,MAAM,cAAc;AAAA,QAC/B,GAAG,UAAU,+BAA+B,GAAG,QAAQ,MAAM,CAAC;AAAA,MAC/D;AACA,gBAAU,MAAM,QAAQ,IAAI,IAAI,IAAI,IAAI,OAAO,CAAC,CAAC;AAAA,IAClD,SAAS,KAAU;AAClB,iBAAS,sCAAK,aAAL,mBAAe,SAAf,mBAAqB,aAAW,2BAAK,YAAW,oCAAoC;AAC7F,gBAAU,CAAC,CAAC;AAAA,IACb,UAAE;AACD,iBAAW,KAAK;AAAA,IACjB;AAAA,EACD,GAAG,CAAC,CAAC;AAEL,QAAM,cAAc,YAAY,OAAO,WAAkC;AAtC1E;AAuCE,UAAM,MAAM,MAAM,cAAc;AAAA,MAC/B,GAAG,UAAU,qCAAqC,GAAG,QAAQ,MAAM,CAAC;AAAA,MACpE,EAAE,cAAc,OAAO;AAAA,IACxB;AACA,UAAM,MAAM,IAAI,gBAAgB,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC;AACpD,UAAM,IAAI,SAAS,cAAc,GAAG;AACpC,MAAE,OAAO;AACT,MAAE,WAAW,sBAAqB,YAAO,eAAP,YAAqB,QAAQ;AAC/D,MAAE,MAAM;AACR,QAAI,gBAAgB,GAAG;AAAA,EACxB,GAAG,CAAC,CAAC;AAEL,SAAO,EAAE,QAAQ,SAAS,OAAO,UAAU,aAAa,YAAY;AACrE;;;ACLO,IAAM,UAAoB;AAAA,EAChC,EAAE,KAAK,MAAM,OAAO,WAAW,OAAO,QAAQ;AAAA,EAC9C,EAAE,KAAK,QAAQ,OAAO,aAAa,OAAO,QAAQ;AAAA,EAClD,EAAE,KAAK,SAAS,OAAO,UAAU,OAAO,QAAQ;AAAA,EAChD,EAAE,KAAK,SAAS,OAAO,eAAe,OAAO,SAAS,OAAO,QAAQ;AAAA,EACrE,EAAE,KAAK,OAAO,OAAO,YAAY,OAAO,SAAS,OAAO,QAAQ;AAAA,EAChE,EAAE,KAAK,QAAQ,OAAO,UAAU,OAAO,SAAS,OAAO,QAAQ;AAAA,EAC/D,EAAE,KAAK,WAAW,OAAO,WAAW,OAAO,SAAS,OAAO,QAAQ;AAAA,EACnE,EAAE,KAAK,YAAY,OAAO,YAAY,OAAO,SAAS,OAAO,QAAQ;AAAA,EACrE,EAAE,KAAK,OAAO,OAAO,OAAO,OAAO,QAAQ,OAAO,QAAQ;AAAA,EAC1D,EAAE,KAAK,YAAY,OAAO,aAAa,OAAO,QAAQ,OAAO,QAAQ;AAAA,EACrE,EAAE,KAAK,QAAQ,OAAO,aAAa,OAAO,QAAQ,OAAO,QAAQ;AAAA,EACjE,EAAE,KAAK,QAAQ,OAAO,aAAa,OAAO,QAAQ,OAAO,QAAQ;AAAA,EACjE,EAAE,KAAK,UAAU,OAAO,eAAe,OAAO,QAAQ,OAAO,QAAQ;AAAA,EACrE,EAAE,KAAK,aAAa,OAAO,cAAc,OAAO,UAAU,OAAO,QAAQ;AAAA,EACzE,EAAE,KAAK,QAAQ,OAAO,aAAa,OAAO,QAAQ,OAAO,QAAQ;AAAA,EACjE,EAAE,KAAK,cAAc,OAAO,eAAe,OAAO,QAAQ;AAAA,EAC1D,EAAE,KAAK,aAAa,OAAO,eAAe,OAAO,SAAS,OAAO,QAAQ;AAC1E;;;AC9DO,IAAM,IAAI;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,OAAO;AAAA,EACP,OAAO;AAAA,EACP,KAAK;AAAA,EACL,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,IAAI;AAAA,EACJ,SAAS;AAAA,EACT,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AACN;AAEO,IAAM,cAA8B;AAAA,EAC1C,YAAY,EAAE;AAAA,EACd,WAAW;AACZ;AAEO,IAAM,cAA8B;AAAA,EAC1C,SAAS;AAAA,EACT,YAAY;AAAA,EACZ,KAAK;AAAA,EACL,UAAU;AAAA,EACV,IAAI;AAAA,EACJ,IAAI;AACL;AAEO,IAAM,YAA4B;AAAA,EACxC,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,UAAU;AAAA,EACV,UAAU;AACX;AAEO,IAAM,mBAAmC;AAAA,EAC/C,UAAU;AAAA,EACV,KAAK;AAAA,EACL,MAAM;AAAA,EACN,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,YAAY;AAAA,EACZ,SAAS;AAAA,EACT,YAAY;AAAA,EACZ,gBAAgB;AAAA,EAChB,QAAQ;AACT;AAEO,IAAM,eAA+B;AAAA,EAC3C,cAAc;AAAA,EACd,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,IAAI;AACL;AAEO,IAAM,cAA8B;AAAA,EAC1C,UAAU;AAAA,EACV,wBAAwB;AAAA,IACvB,UAAU;AAAA,IACV,cAAc;AAAA,IACd,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,QAAQ;AAAA,IACR,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,cAAc;AAAA,EACf;AAAA,EACA,uBAAuB;AAAA,IACtB,QAAQ;AAAA,EACT;AACD;AAEO,IAAM,iBAAiC;AAAA,EAC7C,UAAU;AAAA,EACV,UAAU;AAAA,EACV,cAAc;AAAA,EACd,YAAY;AAAA,EACZ,SAAS;AACV;AAEO,IAAM,aAA6B;AAAA,EACzC,YAAY;AAAA,EACZ,SAAS;AAAA,EACT,OAAO;AAAA,EACP,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,UAAU;AAAA,EACV,IAAI;AAAA,EACJ,IAAI;AACL;AAEO,IAAM,aAA6B;AAAA,EACzC,YAAY;AAAA,EACZ,UAAU;AAAA,EACV,IAAI;AAAA,EACJ,IAAI;AACL;AAEO,IAAM,aAA6B;AAAA,EACzC,iBAAiB;AAAA,EACjB,QAAQ;AAAA,EACR,WAAW,EAAE,iBAAiB,UAAU;AACzC;AAEO,IAAM,eAA+B;AAAA,EAC3C,WAAW;AAAA,EACX,uCAAuC,EAAE,UAAU,UAAU;AAAA,EAC7D,qCAAqC,EAAE,UAAU,UAAU;AAC5D;AAEO,IAAM,gBAAgC;AAAA,EAC5C,OAAO;AAAA,EACP,UAAU;AAAA,EACV,QAAQ;AACT;AAEO,IAAM,eAA+B;AAAA,EAC3C,OAAO;AAAA,EACP,4BAA4B;AAAA,IAC3B,cAAc;AAAA,IACd,UAAU;AAAA,IACV,QAAQ;AAAA,EACT;AAAA,EACA,yBAAyB,EAAE,IAAI,OAAO,UAAU,GAAG;AACpD;AAEO,IAAM,aAA6B;AAAA,EACzC,WAAW;AAAA,EACX,IAAI;AAAA,EACJ,OAAO,EAAE;AAAA,EACT,UAAU;AACX;;;AHiEG,cAiBG,YAjBH;AApJH,SAAS,OAAO,GAAmB;AAClC,MAAI,CAAC,KAAK,KAAK,EAAG,QAAO;AACzB,QAAM,IAAI,KAAK,MAAM,IAAI,IAAI;AAC7B,QAAM,IAAI,KAAK,MAAO,IAAI,OAAQ,EAAE;AACpC,QAAM,KAAK,KAAK,MAAM,IAAI,EAAE;AAC5B,SAAO,CAAC,GAAG,GAAG,EAAE,EAAE,IAAI,CAAC,MAAM,OAAO,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC,EAAE,KAAK,GAAG;AAClE;AAEA,SAAS,OAAO,KAAmB,KAAkB;AAvErD;AAwEC,UAAQ,KAAK;AAAA,IACZ,KAAK;AAAM,aAAO,IAAI,WAAW;AAAA,IACjC,KAAK;AAAQ,aAAO,IAAI,YAAY;AAAA,IACpC,KAAK;AAAW,aAAO,IAAI,eAAe;AAAA,IAC1C,KAAK;AAAS,aAAO,IAAI,cAAc;AAAA,IACvC,KAAK;AAAS,cAAO,SAAI,eAAJ,YAAkB;AAAA,IACvC,KAAK;AAAO,cAAO,SAAI,kBAAJ,YAAqB;AAAA,IACxC,KAAK;AAAQ,cAAO,SAAI,gBAAJ,YAAmB;AAAA,IACvC,KAAK;AAAW,cAAO,SAAI,YAAJ,YAAe;AAAA,IACtC,KAAK;AAAY,cAAO,SAAI,aAAJ,YAAgB;AAAA,IACxC,KAAK;AAAO,cAAO,SAAI,eAAJ,YAAkB;AAAA,IACrC,KAAK;AAAY,cAAO,SAAI,yBAAJ,YAA4B;AAAA,IACpD,KAAK;AAAQ,cAAO,SAAI,oBAAJ,YAAuB;AAAA,IAC3C,KAAK;AAAQ,cAAO,SAAI,oBAAJ,YAAuB;AAAA,IAC3C,KAAK;AAAU,cAAO,SAAI,kBAAJ,YAAqB;AAAA,IAC3C,KAAK;AAAa,cAAO,SAAI,qBAAJ,YAAwB;AAAA,IACjD,KAAK;AAAQ,cAAO,SAAI,oBAAJ,YAAuB;AAAA,IAC3C,KAAK;AAAa,cAAO,SAAI,iBAAJ,YAAoB;AAAA,IAC7C,KAAK;AAAc,aAAO,IAAI,kBAAkB;AAAA,IAChD;AAAS,aAAO;AAAA,EACjB;AACD;AAEA,SAAS,gBAAgB,KAAmB,KAAqB;AAChE,QAAM,IAAI,OAAO,KAAK,GAAG;AACzB,QAAM,UAAU,CAAC,OAAO,YAAY,QAAQ,QAAQ,UAAU,aAAa,MAAM;AACjF,MAAI,QAAQ,SAAS,GAAG,EAAG,QAAO,OAAO,OAAO,CAAC,KAAK,CAAC;AACvD,MAAI,QAAQ,YAAa,QAAO,KAAK,OAAO,GAAG,CAAC,MAAM;AACtD,MAAI,QAAQ,aAAc,QAAO,IAAI,MAAM,CAAC,EAAE,OAAO,mBAAmB,IAAI;AAC5E,SAAO,KAAK,OAAO,KAAK,OAAO,CAAC;AACjC;AAEA,SAAS,YAAY,KAAuB;AAC3C,MAAI,CAAC,IAAK,QAAO,CAAC;AAClB,SAAO,OAAO,GAAG,EACf,MAAM,OAAO,EACb,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,EACnB,OAAO,OAAO;AACjB;AAIA,IAAM,gCAAgC,KAAK,MAAM;AAChD,QAAM,CAAC,WAAW,YAAY,IAAIC,UAAuB,MAAM,EAAE,QAAQ,KAAK,CAAC;AAC/E,QAAM,CAAC,SAAS,UAAU,IAAIA,UAAuB,MAAM,CAAC;AAC5D,QAAM,CAAC,YAAY,aAAa,IAAIA,UAAiB,OAAO;AAC5D,QAAM,CAAC,QAAQ,SAAS,IAAIA,UAAS,EAAE;AAEvC,QAAM,CAAC,SAAS,UAAU,IAAIA,UAAiB,OAAO;AACtD,QAAM,CAAC,OAAO,QAAQ,IAAIA,UAAgB,MAAM;AAChD,QAAM,CAAC,MAAM,OAAO,IAAIA,UAAS,CAAC;AAClC,QAAM,CAAC,aAAa,cAAc,IAAIA,UAAS,EAAE;AAEjD,QAAM,CAAC,eAAe,gBAAgB,IAAIA,UAA8B,IAAI;AAE5E,QAAM,EAAE,QAAQ,SAAS,OAAO,UAAU,aAAa,YAAY,IAClE,0BAA0B;AAE3B,QAAM,cAAcC;AAAA,IACnB,OAAO,IAAmB,OAAsB;AAC/C,YAAM,WAAW,kBAAM;AACvB,YAAM,SAAS,kBAAM;AACrB,UAAI,CAAC,YAAY,CAAC,QAAQ;AACzB,iBAAS,mBAAmB;AAC5B;AAAA,MACD;AACA,cAAQ,CAAC;AACT,YAAM,YAAY;AAAA,QACjB,YAAY,SAAS,OAAO,qBAAqB;AAAA,QACjD,UAAU,OAAO,OAAO,qBAAqB;AAAA,MAC9C,CAAC;AAAA,IACF;AAAA,IACA,CAAC,WAAW,SAAS,aAAa,QAAQ;AAAA,EAC3C;AAEA,YAAU,MAAM;AACf,QAAI,aAAa,QAAS,aAAY;AAAA,EAEvC,GAAG,CAAC,CAAC;AAEL,QAAM,WAAW,CAAC,UAAkB;AACnC,kBAAc,KAAK;AACnB,UAAM,QAAQ,MAAM;AACpB,QAAI,KAAY;AAChB,UAAM,KAAY;AAClB,QAAI,UAAU,OAAQ,MAAK,MAAM,QAAQ,MAAM;AAAA,aACtC,UAAU,QAAS,MAAK,MAAM,QAAQ,OAAO;AACtD,iBAAa,EAAE;AACf,eAAW,EAAE;AACb,gBAAY,IAAI,EAAE;AAAA,EACnB;AAEA,QAAM,WAAW,QAAQ,MAAM;AAC9B,QAAI,CAAC,OAAQ,QAAO;AACpB,UAAM,IAAI,OAAO,YAAY;AAC7B,WAAO,OAAO;AAAA,MACb,CAAC,OACC,EAAE,YAAY,IAAI,YAAY,EAAE,SAAS,CAAC,MAC1C,EAAE,WAAW,IAAI,YAAY,EAAE,SAAS,CAAC;AAAA,IAC5C;AAAA,EACD,GAAG,CAAC,QAAQ,MAAM,CAAC;AAEnB,QAAM,SAAS,QAAQ,MAAM;AAC5B,WAAO,CAAC,GAAG,QAAQ,EAAE,KAAK,CAAC,GAAG,MAAM;AACnC,YAAM,KAAK,OAAO,GAAG,OAAO;AAC5B,YAAM,KAAK,OAAO,GAAG,OAAO;AAC5B,UAAI,OAAO,OAAO,YAAY,OAAO,OAAO,UAAU;AACrD,eAAO,UAAU,QAAQ,KAAK,KAAK,KAAK;AAAA,MACzC;AACA,aAAO,UAAU,QACd,OAAO,EAAE,EAAE,cAAc,OAAO,EAAE,CAAC,IACnC,OAAO,EAAE,EAAE,cAAc,OAAO,EAAE,CAAC;AAAA,IACvC,CAAC;AAAA,EACF,GAAG,CAAC,UAAU,SAAS,KAAK,CAAC;AAE7B,QAAM,QAAQ,OAAO,MAAM,OAAO,aAAa,OAAO,cAAc,WAAW;AAE/E,QAAM,aAAa,CAAC,QAAgB;AACnC,aAAS,YAAY,OAAO,UAAU,QAAQ,SAAS,KAAK;AAC5D,eAAW,GAAG;AAAA,EACf;AAEA,QAAM,eAAe,YAAY;AAChC,QAAI,CAAC,aAAa,CAAC,SAAS;AAC3B,eAAS,mBAAmB;AAC5B;AAAA,IACD;AACA,QAAI;AACH,YAAM,YAAY;AAAA,QACjB,YAAY,UAAU,OAAO,qBAAqB;AAAA,QAClD,UAAU,QAAQ,OAAO,qBAAqB;AAAA,MAC/C,CAAC;AAAA,IACF,SAAS,KAAU;AAClB,gBAAS,2BAAK,YAAW,wBAAwB;AAAA,IAClD;AAAA,EACD;AAEA,MAAI,eAAe;AAClB,WACC;AAAA,MAAC;AAAA;AAAA,QACA,UAAU;AAAA,QACV,QAAQ,MAAM,iBAAiB,IAAI;AAAA,QACnC,kBAAkB;AAAA,QAClB,gBAAgB;AAAA,QAChB,mBAAmB;AAAA,QACnB,MAAK;AAAA;AAAA,IACN;AAAA,EAEF;AAEA,SACC,oBAAC,wBAAqB,aAAa,cAClC,+BAAC,OAAI,IAAI,aACR;AAAA;AAAA,MAAC;AAAA;AAAA,QACA,OAAM;AAAA,QACN,SACC,qBAAC,SAAM,WAAU,OAAM,YAAW,UAAS,SAAS,GACnD;AAAA;AAAA,YAAC;AAAA;AAAA,cACA,MAAK;AAAA,cACL,OAAO;AAAA,cACP,UAAU,CAAC,MAAM;AAChB,0BAAU,EAAE,OAAO,KAAK;AACxB,wBAAQ,CAAC;AAAA,cACV;AAAA,cACA,aAAY;AAAA,cACZ,IAAI;AAAA,cACJ,cACC,oBAAC,kBAAe,UAAS,OACxB,8BAAC,cAAW,IAAI,EAAE,UAAU,IAAI,OAAO,OAAO,GAAG,GAClD;AAAA;AAAA,UAEF;AAAA,UACA;AAAA,YAAC;AAAA;AAAA,cACA,WAAW,oBAAC,oBAAiB,IAAI,EAAE,UAAU,UAAU,GAAG;AAAA,cAC1D,UAAU,CAAC,OAAO;AAAA,cAClB,SAAS;AAAA,cACT;AAAA;AAAA,UAED;AAAA,WACD;AAAA;AAAA,IAEF;AAAA,IAEA,qBAAC,OAAI,IAAI,aACR;AAAA;AAAA,QAAC;AAAA;AAAA,UACA,OAAO;AAAA,UACP,UAAU,CAAC,QAAQ;AAClB,yBAAa,GAAmB;AAChC,0BAAc,QAAQ;AAAA,UACvB;AAAA,UACA,WAAW,EAAE,WAAW,EAAE,MAAM,SAAS,IAAI,aAAa,EAAE;AAAA;AAAA,MAC7D;AAAA,MACA,oBAAC,OAAI,WAAU,QAAO,IAAI,EAAE,UAAU,IAAI,OAAO,EAAE,GAAG,GAAG,gBAEzD;AAAA,MACA;AAAA,QAAC;AAAA;AAAA,UACA,OAAO;AAAA,UACP,UAAU,CAAC,QAAQ;AAClB,uBAAW,GAAmB;AAC9B,0BAAc,QAAQ;AAAA,UACvB;AAAA,UACA,WAAW,EAAE,WAAW,EAAE,MAAM,SAAS,IAAI,aAAa,EAAE;AAAA;AAAA,MAC7D;AAAA,MACA;AAAA,QAAC;AAAA;AAAA,UACA,SAAS,eAAe,UAAU,YAAY;AAAA,UAC9C,SAAS,MAAM,SAAS,OAAO;AAAA,UAC/B;AAAA;AAAA,MAED;AAAA,MACA;AAAA,QAAC;AAAA;AAAA,UACA,SAAS,eAAe,SAAS,YAAY;AAAA,UAC7C,SAAS,MAAM,SAAS,MAAM;AAAA,UAC9B;AAAA;AAAA,MAED;AAAA,MACA;AAAA,QAAC;AAAA;AAAA,UACA,SAAS,eAAe,UAAU,YAAY;AAAA,UAC9C,SAAS,MAAM,SAAS,OAAO;AAAA,UAC/B;AAAA;AAAA,MAED;AAAA,MACA,oBAAC,aAAU,SAAQ,YAAW,SAAS,MAAM,YAAY,GAAG,oBAE5D;AAAA,OACD;AAAA,IAEC,SACA,oBAAC,SAAM,UAAS,SAAQ,IAAI,EAAE,IAAI,KAAK,IAAI,IAAI,GAAG,SAAS,MAAM,SAAS,EAAE,GAC1E,iBACF;AAAA,IAGD,qBAAC,OAAI,IAAI,WACP;AAAA,iBACA,oBAAC,OAAI,IAAI,kBACR,8BAAC,oBAAiB,GACnB;AAAA,MAGD,qBAAC,SAAM,WAAW,GAAG,IAAI,cACxB;AAAA,4BAAC,kBACA,+BAAC,SAAM,MAAK,SAAQ,IAAI,aACvB;AAAA,8BAAC,aACA,+BAAC,YACC;AAAA,oBAAQ,IAAI,CAAC,QACb,oBAAC,aAAwB,OAAO,IAAI,SAAS,QAAQ,IAAI,YACxD;AAAA,cAAC;AAAA;AAAA,gBACA,QAAQ,YAAY,IAAI;AAAA,gBACxB,WAAW,YAAY,IAAI,MAAM,QAAQ;AAAA,gBACzC,SAAS,MAAM,WAAW,IAAI,GAAG;AAAA,gBAEhC,cAAI;AAAA;AAAA,YACN,KAPe,IAAI,GAQpB,CACA;AAAA,YACD,oBAAC,aAAU,IAAI,iCAAK,aAAL,EAAiB,OAAO,GAAG,IAAG,oBAAM;AAAA,aACpD,GACD;AAAA,UACA,qBAAC,aACC;AAAA,kBAAM,IAAI,CAAC,KAAK,QAChB;AAAA,cAAC;AAAA;AAAA,gBAEA,OAAK;AAAA,gBACL,SAAS,MAAM,iBAAiB,GAAG;AAAA,gBACnC,IAAI;AAAA,gBAEH;AAAA,0BAAQ,IAAI,CAAC,QAAQ;AACrB,wBAAI,IAAI,QAAQ,SAAS;AACxB,4BAAM,SAAS,YAAY,IAAI,UAAU;AACzC,4BAAM,QAAQ,OAAO,MAAM,GAAG,CAAC,EAAE,KAAK,IAAI;AAC1C,4BAAM,WAAW,OAAO,SAAS;AACjC,4BAAM,UAAU,WAAW,GAAG,KAAK,WAAM;AACzC,4BAAM,QAAQ,OAAO,KAAK,IAAI,KAAK;AACnC,6BACC;AAAA,wBAAC;AAAA;AAAA,0BAEA,OAAO,IAAI,SAAS;AAAA,0BACpB,IAAI,iCAAK,aAAL,EAAiB,UAAU,IAAI;AAAA,0BAEnC,8BAAC,WAAQ,OAAc,WAAU,OAAM,OAAK,MAC3C,8BAAC,OAAI,WAAU,QAAO,IAAI,gBACxB,qBAAW,UACb,GACD;AAAA;AAAA,wBARK,IAAI;AAAA,sBASV;AAAA,oBAEF;AACA,wBAAI,IAAI,QAAQ,cAAc;AAC7B,4BAAM,OAAO,gBAAgB,KAAK,IAAI,GAAG;AACzC,6BACC;AAAA,wBAAC;AAAA;AAAA,0BAEA,OAAO,IAAI,SAAS;AAAA,0BACpB,IAAI,iCAAK,aAAL,EAAiB,YAAY,SAAS;AAAA,0BAEzC;AAAA;AAAA,wBAJI,IAAI;AAAA,sBAKV;AAAA,oBAEF;AACA,wBAAI,IAAI,QAAQ,QAAQ;AACvB,4BAAM,OAAO,gBAAgB,KAAK,IAAI,GAAG;AACzC,6BACC;AAAA,wBAAC;AAAA;AAAA,0BAEA,OAAO,IAAI,SAAS;AAAA,0BACpB,IAAI,iCAAK,aAAL,EAAiB,UAAU,IAAI;AAAA,0BAEnC,8BAAC,WAAQ,OAAO,QAAQ,IAAI,WAAU,OAAM,OAAK,MAChD,8BAAC,OAAI,WAAU,QAAO,IAAI,gBACxB,gBACF,GACD;AAAA;AAAA,wBARK,IAAI;AAAA,sBASV;AAAA,oBAEF;AACA,2BACC,oBAAC,aAAwB,OAAO,IAAI,SAAS,QAAQ,IAAI,YACvD,0BAAgB,KAAK,IAAI,GAAG,KADd,IAAI,GAEpB;AAAA,kBAEF,CAAC;AAAA,kBACD,oBAAC,aAAU,IAAI,YAAY,OAAM,UAChC;AAAA,oBAAC;AAAA;AAAA,sBACA,MAAK;AAAA,sBACL,SAAS,CAAC,MAAM;AACf,0BAAE,gBAAgB;AAClB,yCAAiB,GAAG;AAAA,sBACrB;AAAA,sBACA,IAAI,EAAE,OAAO,EAAE,KAAK;AAAA,sBAEpB,8BAAC,kBAAe,IAAI,EAAE,UAAU,GAAG,GAAG;AAAA;AAAA,kBACvC,GACD;AAAA;AAAA;AAAA,cAvEK,IAAI,WAAW;AAAA,YAwErB,CACA;AAAA,YACA,MAAM,WAAW,KAAK,CAAC,WACvB,oBAAC,YACA,8BAAC,aAAU,SAAS,QAAQ,SAAS,GAAG,IAAI,YAAY,2BAExD,GACD;AAAA,aAEF;AAAA,WACD,GACD;AAAA,QAEA;AAAA,UAAC;AAAA;AAAA,YACA,WAAU;AAAA,YACV,OAAO,SAAS;AAAA,YAChB;AAAA,YACA,cAAc,CAAC,GAAG,MAAM,QAAQ,CAAC;AAAA,YACjC;AAAA,YACA,qBAAqB,CAAC,MAAM;AAC3B,6BAAe,SAAS,EAAE,OAAO,OAAO,EAAE,CAAC;AAC3C,sBAAQ,CAAC;AAAA,YACV;AAAA,YACA,oBAAoB,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE;AAAA,YACtC,IAAI;AAAA;AAAA,QACL;AAAA,SACD;AAAA,OACD;AAAA,KACD,GACD;AAEF,CAAC;AAED,IAAM,yBAAmC,MACxC,oBAAC,eACA,8BAAC,iCAA8B,GAChC;AAGD,IAAO,iCAAQ;","names":["useCallback","useState","useState","useCallback"]}
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import {
|
|
2
|
+
SDKPageHeader
|
|
3
|
+
} from "./chunk-RZZQ42MG.mjs";
|
|
1
4
|
import {
|
|
2
5
|
END_POINT,
|
|
3
6
|
SDKProvider,
|
|
@@ -5,7 +8,7 @@ import {
|
|
|
5
8
|
__spreadValues,
|
|
6
9
|
axios_default,
|
|
7
10
|
useToast
|
|
8
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-YREOEULC.mjs";
|
|
9
12
|
|
|
10
13
|
// call-control-sdk/lib/pages/callHistory/index.tsx
|
|
11
14
|
import { memo, useEffect, useState as useState2 } from "react";
|
|
@@ -34,13 +37,11 @@ import {
|
|
|
34
37
|
useTheme,
|
|
35
38
|
Paper
|
|
36
39
|
} from "@mui/material";
|
|
37
|
-
import
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
Phone
|
|
43
|
-
} from "@mui/icons-material";
|
|
40
|
+
import KeyboardArrowDown from "@mui/icons-material/KeyboardArrowDown";
|
|
41
|
+
import PlayArrow from "@mui/icons-material/PlayArrow";
|
|
42
|
+
import ExpandLess from "@mui/icons-material/ExpandLess";
|
|
43
|
+
import Search from "@mui/icons-material/Search";
|
|
44
|
+
import Phone from "@mui/icons-material/Phone";
|
|
44
45
|
|
|
45
46
|
// call-control-sdk/lib/pages/callHistory/useCallHistory.ts
|
|
46
47
|
import { useState, useCallback } from "react";
|
|
@@ -119,32 +120,24 @@ var CallHistoryContent = memo(() => {
|
|
|
119
120
|
return ((_a = c.agentId) == null ? void 0 : _a.toLowerCase().includes(q)) || ((_b = c.username) == null ? void 0 : _b.toLowerCase().includes(q)) || ((_c = c.mobileNumber) == null ? void 0 : _c.toLowerCase().includes(q));
|
|
120
121
|
});
|
|
121
122
|
return /* @__PURE__ */ jsxs(Box, { children: [
|
|
122
|
-
/* @__PURE__ */
|
|
123
|
-
|
|
123
|
+
/* @__PURE__ */ jsx(
|
|
124
|
+
SDKPageHeader,
|
|
124
125
|
{
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
setPage(0);
|
|
141
|
-
},
|
|
142
|
-
placeholder: "Search",
|
|
143
|
-
sx: { width: 220, fontSize: "0.82rem", height: 36 },
|
|
144
|
-
endAdornment: /* @__PURE__ */ jsx(InputAdornment, { position: "end", children: /* @__PURE__ */ jsx(Search, { sx: { fontSize: 18, color: "#999" } }) })
|
|
145
|
-
}
|
|
146
|
-
)
|
|
147
|
-
]
|
|
126
|
+
title: "Call History",
|
|
127
|
+
actions: /* @__PURE__ */ jsx(
|
|
128
|
+
OutlinedInput,
|
|
129
|
+
{
|
|
130
|
+
size: "small",
|
|
131
|
+
value: search,
|
|
132
|
+
onChange: (e) => {
|
|
133
|
+
setSearch(e.target.value);
|
|
134
|
+
setPage(0);
|
|
135
|
+
},
|
|
136
|
+
placeholder: "Search",
|
|
137
|
+
sx: { width: 220, fontSize: "0.82rem", height: 36 },
|
|
138
|
+
endAdornment: /* @__PURE__ */ jsx(InputAdornment, { position: "end", children: /* @__PURE__ */ jsx(Search, { sx: { fontSize: 18, color: "#999" } }) })
|
|
139
|
+
}
|
|
140
|
+
)
|
|
148
141
|
}
|
|
149
142
|
),
|
|
150
143
|
/* @__PURE__ */ jsxs(Box, { py: 1.5, px: 2, children: [
|
|
@@ -368,4 +361,4 @@ var callHistory_default = CallHistory;
|
|
|
368
361
|
export {
|
|
369
362
|
callHistory_default as default
|
|
370
363
|
};
|
|
371
|
-
//# sourceMappingURL=callHistory-
|
|
364
|
+
//# sourceMappingURL=callHistory-3CMW24B6.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../call-control-sdk/lib/pages/callHistory/index.tsx","../call-control-sdk/lib/pages/callHistory/useCallHistory.ts"],"sourcesContent":["import React, { memo, useEffect, useState } from \"react\";\r\nimport {\r\n\tBox,\r\n\tTypography,\r\n\tTable,\r\n\tTableBody,\r\n\tTableCell,\r\n\tTableContainer,\r\n\tTableHead,\r\n\tTableRow,\r\n\tTablePagination,\r\n\tToggleButton,\r\n\tToggleButtonGroup,\r\n\tIconButton,\r\n\tCollapse,\r\n\tCircularProgress,\r\n\tChip,\r\n\tStack,\r\n\tSwitch,\r\n\tFormControlLabel,\r\n\tTooltip,\r\n\tInputAdornment,\r\n\tOutlinedInput,\r\n\tuseTheme,\r\n\tPaper,\r\n} from \"@mui/material\";\r\nimport KeyboardArrowDown from \"@mui/icons-material/KeyboardArrowDown\";\r\nimport PlayArrow from \"@mui/icons-material/PlayArrow\";\r\nimport ExpandLess from \"@mui/icons-material/ExpandLess\";\r\nimport Search from \"@mui/icons-material/Search\";\r\nimport Phone from \"@mui/icons-material/Phone\";\r\nimport { SDKProvider } from \"../../components/SDKProvider\";\r\nimport { SDKPageHeader } from \"../../components/SDKPageHeader\";\r\nimport { useToast } from \"../../services/toastMessage\";\r\nimport { useCallHistory } from \"./useCallHistory\";\r\nimport type { CallHistoryItem, MissedCallDetails, CallFilter } from \"./types\";\r\n\r\n// ──── Header cell columns ────────────────────────────────────────────────────\r\n\r\nconst CALL_HISTORY_COLS = [\"Call UID\", \"Mobile\", \"Type\", \"Start Time\", \"End Time\", \"Recording\", \"Agent\", \"Details\"] as const;\r\nconst MISSED_CALLS_COLS = [\"Agent ID\", \"Agent Name\", \"Mobile No\", \"Type\", \"Actions\"] as const;\r\nconst CENTER_COLS = new Set([\"Type\", \"Recording\", \"Agent\", \"Details\", \"Actions\"]);\r\n\r\n// ──── Main content (needs SDKProvider above it for useToast) ─────────────────\r\n\r\nconst CallHistoryContent = memo(() => {\r\n\tconst theme = useTheme();\r\n\tconst { showToast } = useToast();\r\n\tconst { calls, missedCalls, loading, fetchCallHistory, fetchMissedCalls, fetchRecording } =\r\n\t\tuseCallHistory();\r\n\r\n\tconst [filter, setFilter] = useState<CallFilter>(\"ALL\");\r\n\tconst [search, setSearch] = useState(\"\");\r\n\tconst [showMissedCalls, setShowMissedCalls] = useState(false);\r\n\tconst [page, setPage] = useState(0);\r\n\tconst [rowsPerPage, setRowsPerPage] = useState(10);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (showMissedCalls) {\r\n\t\t\tfetchMissedCalls();\r\n\t\t} else {\r\n\t\t\tfetchCallHistory();\r\n\t\t}\r\n\t}, [showMissedCalls, fetchCallHistory, fetchMissedCalls]);\r\n\r\n\tconst filteredCalls = calls\r\n\t\t.filter((c) => filter === \"ALL\" || c.call_type === filter)\r\n\t\t.filter((c) => c.mobile_no.toLowerCase().includes(search.toLowerCase()));\r\n\r\n\tconst filteredMissedCalls = missedCalls\r\n\t\t.filter((c) => filter === \"ALL\" || c.callType?.toUpperCase() === filter)\r\n\t\t.filter((c) => {\r\n\t\t\tconst q = search.toLowerCase();\r\n\t\t\treturn (\r\n\t\t\t\tc.agentId?.toLowerCase().includes(q) ||\r\n\t\t\t\tc.username?.toLowerCase().includes(q) ||\r\n\t\t\t\tc.mobileNumber?.toLowerCase().includes(q)\r\n\t\t\t);\r\n\t\t});\r\n\r\n\treturn (\r\n\t\t<Box>\r\n\t\t\t{/* PAGE HEADER */}\r\n\t\t\t<SDKPageHeader\r\n\t\t\t\ttitle=\"Call History\"\r\n\t\t\t\tactions={\r\n\t\t\t\t\t<OutlinedInput\r\n\t\t\t\t\t\tsize=\"small\"\r\n\t\t\t\t\t\tvalue={search}\r\n\t\t\t\t\t\tonChange={(e) => { setSearch(e.target.value); setPage(0); }}\r\n\t\t\t\t\t\tplaceholder=\"Search\"\r\n\t\t\t\t\t\tsx={{ width: 220, fontSize: \"0.82rem\", height: 36 }}\r\n\t\t\t\t\t\tendAdornment={\r\n\t\t\t\t\t\t\t<InputAdornment position=\"end\">\r\n\t\t\t\t\t\t\t\t<Search sx={{ fontSize: 18, color: \"#999\" }} />\r\n\t\t\t\t\t\t\t</InputAdornment>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t/>\r\n\t\t\t\t}\r\n\t\t\t/>\r\n\r\n\t\t\t<Box py={1.5} px={2}>\r\n\t\t\t\t{/* FILTER BAR */}\r\n\t\t\t\t<Stack direction=\"row\" spacing={2} alignItems=\"center\" mb={2}>\r\n\t\t\t\t\t<FormControlLabel\r\n\t\t\t\t\t\tcontrol={\r\n\t\t\t\t\t\t\t<Switch\r\n\t\t\t\t\t\t\t\tsize=\"small\"\r\n\t\t\t\t\t\t\t\tchecked={showMissedCalls}\r\n\t\t\t\t\t\t\t\tonChange={(_, checked) => { setShowMissedCalls(checked); setPage(0); }}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tlabel={\r\n\t\t\t\t\t\t\t<Typography sx={{ fontSize: \"0.8rem\", color: \"#555\" }}>\r\n\t\t\t\t\t\t\t\tMissed Calls\r\n\t\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tsx={{ ml: 0 }}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<ToggleButtonGroup\r\n\t\t\t\t\t\tvalue={filter}\r\n\t\t\t\t\t\texclusive\r\n\t\t\t\t\t\tonChange={(_, v) => { if (v) { setFilter(v); setPage(0); } }}\r\n\t\t\t\t\t\tsize=\"small\"\r\n\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\tborder: \"1px solid #ccc\",\r\n\t\t\t\t\t\t\tborderRadius: \"50px\",\r\n\t\t\t\t\t\t\toverflow: \"hidden\",\r\n\t\t\t\t\t\t\t\"& .MuiToggleButton-root\": {\r\n\t\t\t\t\t\t\t\tborder: \"none\",\r\n\t\t\t\t\t\t\t\tborderRight: \"1px solid #ccc\",\r\n\t\t\t\t\t\t\t\tcolor: \"#555\",\r\n\t\t\t\t\t\t\t\tfontWeight: 600,\r\n\t\t\t\t\t\t\t\ttextTransform: \"uppercase\",\r\n\t\t\t\t\t\t\t\tfontSize: \"0.72rem\",\r\n\t\t\t\t\t\t\t\tpx: 2,\r\n\t\t\t\t\t\t\t\tpy: 0.5,\r\n\t\t\t\t\t\t\t\tborderRadius: 0,\r\n\t\t\t\t\t\t\t\t\"&:last-of-type\": { borderRight: \"none\" },\r\n\t\t\t\t\t\t\t\t\"&.Mui-selected\": {\r\n\t\t\t\t\t\t\t\t\tbackgroundColor: theme.palette.primary.main,\r\n\t\t\t\t\t\t\t\t\tcolor: \"#fff\",\r\n\t\t\t\t\t\t\t\t\t\"&:hover\": { backgroundColor: theme.palette.primary.dark },\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t<ToggleButton value=\"ALL\">All</ToggleButton>\r\n\t\t\t\t\t\t<ToggleButton value=\"INCOMING\">Inbound</ToggleButton>\r\n\t\t\t\t\t\t<ToggleButton value=\"OUTGOING\">Outbound</ToggleButton>\r\n\t\t\t\t\t</ToggleButtonGroup>\r\n\t\t\t\t</Stack>\r\n\r\n\t\t\t\t{/* TABLE */}\r\n\t\t\t\t<TableContainer component={Paper} variant=\"outlined\" sx={{ display: 'flex', flexDirection: 'column' }}>\r\n\t\t\t\t <Box sx={{ overflowY: 'auto', maxHeight: 600 }}>\r\n\t\t\t\t\t<Table stickyHeader size=\"small\">\r\n\t\t\t\t\t\t{showMissedCalls ? (\r\n\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\t<TableHead>\r\n\t\t\t\t\t\t\t\t\t<TableRow>\r\n\t\t\t\t\t\t\t\t\t\t{MISSED_CALLS_COLS.map((col) => (\r\n\t\t\t\t\t\t\t\t\t\t\t<TableCell\r\n\t\t\t\t\t\t\t\t\t\t\t\tkey={col}\r\n\t\t\t\t\t\t\t\t\t\t\t\talign={CENTER_COLS.has(col) ? \"center\" : \"left\"}\r\n\t\t\t\t\t\t\t\t\t\t\t\tsx={{ fontWeight: 600, backgroundColor: \"#f1f1f1\", fontSize: \"0.8rem\" }}\r\n\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t{col}\r\n\t\t\t\t\t\t\t\t\t\t\t</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t\t\t\t</TableRow>\r\n\t\t\t\t\t\t\t\t</TableHead>\r\n\t\t\t\t\t\t\t\t<TableBody>\r\n\t\t\t\t\t\t\t\t\t{loading ? (\r\n\t\t\t\t\t\t\t\t\t\t<TableRow>\r\n\t\t\t\t\t\t\t\t\t\t\t<TableCell colSpan={5} align=\"center\" sx={{ py: 4 }}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<CircularProgress size={24} />\r\n\t\t\t\t\t\t\t\t\t\t\t</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t</TableRow>\r\n\t\t\t\t\t\t\t\t\t) : filteredMissedCalls.length === 0 ? (\r\n\t\t\t\t\t\t\t\t\t\t<TableRow>\r\n\t\t\t\t\t\t\t\t\t\t\t<TableCell colSpan={5} align=\"center\" sx={{ py: 4, color: \"#999\", fontSize: \"0.82rem\" }}>\r\n\t\t\t\t\t\t\t\t\t\t\t\tNo Records Found\r\n\t\t\t\t\t\t\t\t\t\t\t</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t</TableRow>\r\n\t\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\tfilteredMissedCalls.slice(page * rowsPerPage, (page + 1) * rowsPerPage).map((row, i) => (\r\n\t\t\t\t\t\t\t\t\t\t\t<MissedCallRow key={`${row.agentId}-${row.mobileNumber}-${i}`} row={row} />\r\n\t\t\t\t\t\t\t\t\t\t))\r\n\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t</TableBody>\r\n\t\t\t\t\t\t\t</>\r\n\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\t<TableHead>\r\n\t\t\t\t\t\t\t\t\t<TableRow>\r\n\t\t\t\t\t\t\t\t\t\t{CALL_HISTORY_COLS.map((col) => (\r\n\t\t\t\t\t\t\t\t\t\t\t<TableCell\r\n\t\t\t\t\t\t\t\t\t\t\t\tkey={col}\r\n\t\t\t\t\t\t\t\t\t\t\t\talign={CENTER_COLS.has(col) ? \"center\" : \"left\"}\r\n\t\t\t\t\t\t\t\t\t\t\t\tsx={{ fontWeight: 600, backgroundColor: \"#f1f1f1\", fontSize: \"0.8rem\" }}\r\n\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t{col}\r\n\t\t\t\t\t\t\t\t\t\t\t</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t\t\t\t</TableRow>\r\n\t\t\t\t\t\t\t\t</TableHead>\r\n\t\t\t\t\t\t\t\t<TableBody>\r\n\t\t\t\t\t\t\t\t\t{loading ? (\r\n\t\t\t\t\t\t\t\t\t\t<TableRow>\r\n\t\t\t\t\t\t\t\t\t\t\t<TableCell colSpan={8} align=\"center\" sx={{ py: 4 }}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<CircularProgress />\r\n\t\t\t\t\t\t\t\t\t\t\t</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t</TableRow>\r\n\t\t\t\t\t\t\t\t\t) : filteredCalls.length === 0 ? (\r\n\t\t\t\t\t\t\t\t\t\t<TableRow>\r\n\t\t\t\t\t\t\t\t\t\t\t<TableCell colSpan={8} align=\"center\" sx={{ py: 4, color: \"#999\", fontSize: \"0.82rem\" }}>\r\n\t\t\t\t\t\t\t\t\t\t\t\tNo Records Found\r\n\t\t\t\t\t\t\t\t\t\t\t</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t</TableRow>\r\n\t\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\tfilteredCalls.slice(page * rowsPerPage, (page + 1) * rowsPerPage).map((row, i) => (\r\n\t\t\t\t\t\t\t\t\t\t\t<ExpandableRow\r\n\t\t\t\t\t\t\t\t\t\t\t\tkey={row.call_uuid}\r\n\t\t\t\t\t\t\t\t\t\t\t\trow={row}\r\n\t\t\t\t\t\t\t\t\t\t\t\tstriped={i % 2 === 0}\r\n\t\t\t\t\t\t\t\t\t\t\t\tfetchRecording={fetchRecording}\r\n\t\t\t\t\t\t\t\t\t\t\t\tonError={(msg) => showToast(msg, \"error\")}\r\n\t\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t))\r\n\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t</TableBody>\r\n\t\t\t\t\t\t\t</>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t</Table>\r\n\t\t\t\t </Box>\r\n\t\t\t\t <TablePagination\r\n\t\t\t\t\t\tcomponent=\"div\"\r\n\t\t\t\t\t\tcount={showMissedCalls ? filteredMissedCalls.length : filteredCalls.length}\r\n\t\t\t\t\t\tpage={page}\r\n\t\t\t\t\t\trowsPerPage={rowsPerPage}\r\n\t\t\t\t\t\tonPageChange={(_, p) => setPage(p)}\r\n\t\t\t\t\t\tonRowsPerPageChange={(e) => { setRowsPerPage(parseInt(e.target.value, 10)); setPage(0); }}\r\n\t\t\t\t\t\trowsPerPageOptions={[10, 25, 50]}\r\n\t\t\t\t\t\tsx={{ borderTop: '1px solid #e0e0e0' }}\r\n\t\t\t\t />\r\n\t\t\t\t</TableContainer>\r\n\t\t\t</Box>\r\n\t\t</Box>\r\n\t);\r\n});\r\n\r\nCallHistoryContent.displayName = \"CallHistoryContent\";\r\n\r\n// ──── Missed Call Row ─────────────────────────────────────────────────────────\r\n\r\nconst MissedCallRow = memo(({ row }: { row: MissedCallDetails }) => {\r\n\tconst theme = useTheme();\r\n\treturn (\r\n\t\t<TableRow hover>\r\n\t\t\t<TableCell sx={{ fontSize: \"0.82rem\", color: theme.palette.primary.main }}>\r\n\t\t\t\t{row.agentId}\r\n\t\t\t</TableCell>\r\n\t\t\t<TableCell sx={{ fontSize: \"0.82rem\" }}>{row.username}</TableCell>\r\n\t\t\t<TableCell sx={{ fontSize: \"0.82rem\" }}>\r\n\t\t\t\t{row.mobileNumber} ({row.callCount})\r\n\t\t\t</TableCell>\r\n\t\t\t<TableCell sx={{ fontSize: \"0.82rem\", textTransform: \"uppercase\" }}>\r\n\t\t\t\t{row.callType}\r\n\t\t\t</TableCell>\r\n\t\t\t<TableCell align=\"center\">\r\n\t\t\t\t<Phone sx={{ color: \"#c0392b\", fontSize: 20, cursor: \"pointer\" }} />\r\n\t\t\t</TableCell>\r\n\t\t</TableRow>\r\n\t);\r\n});\r\n\r\nMissedCallRow.displayName = \"MissedCallRow\";\r\n\r\n// ──── Expandable Row ──────────────────────────────────────────────────────────\r\n\r\nfunction ExpandableRow({\r\n\trow,\r\n\tstriped,\r\n\tfetchRecording,\r\n\tonError,\r\n}: {\r\n\trow: CallHistoryItem;\r\n\tstriped: boolean;\r\n\tfetchRecording: (call_uuid: string) => Promise<Blob>;\r\n\tonError: (msg: string) => void;\r\n}) {\r\n\tconst [open, setOpen] = useState(false);\r\n\tconst [audioURL, setAudioURL] = useState<string | null>(null);\r\n\tconst [loadingAudio, setLoadingAudio] = useState(false);\r\n\r\n\tconst handlePlay = async () => {\r\n\t\tif (!row.recording.available) return;\r\n\t\tsetLoadingAudio(true);\r\n\t\ttry {\r\n\t\t\tconst blob = await fetchRecording(row.call_uuid);\r\n\t\t\tsetAudioURL(URL.createObjectURL(blob));\r\n\t\t} catch {\r\n\t\t\tonError(\"Recording not available\");\r\n\t\t} finally {\r\n\t\t\tsetLoadingAudio(false);\r\n\t\t}\r\n\t};\r\n\r\n\tconst bg = striped ? \"#fafafa\" : \"white\";\r\n\tconst cellSx = { fontSize: \"0.82rem\", backgroundColor: bg };\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t<TableRow hover>\r\n\t\t\t\t<TableCell sx={{ ...cellSx, maxWidth: 130 }}>\r\n\t\t\t\t\t<Tooltip title={row.call_uuid} arrow>\r\n\t\t\t\t\t\t<Typography\r\n\t\t\t\t\t\t\tnoWrap\r\n\t\t\t\t\t\t\tsx={{ fontSize: 13, maxWidth: 130, overflow: \"hidden\", textOverflow: \"ellipsis\" }}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t{row.call_uuid}\r\n\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t</Tooltip>\r\n\t\t\t\t</TableCell>\r\n\r\n\t\t\t\t<TableCell sx={cellSx}>{row.mobile_no}</TableCell>\r\n\r\n\t\t\t\t<TableCell align=\"center\" sx={cellSx}>\r\n\t\t\t\t\t<Chip\r\n\t\t\t\t\t\tsize=\"small\"\r\n\t\t\t\t\t\tlabel={row.call_type}\r\n\t\t\t\t\t\tcolor={row.call_type === \"INCOMING\" ? \"success\" : \"primary\"}\r\n\t\t\t\t\t/>\r\n\t\t\t\t</TableCell>\r\n\r\n\t\t\t\t<TableCell sx={cellSx}>\r\n\t\t\t\t\t{new Date(row.start_time).toLocaleString()}\r\n\t\t\t\t</TableCell>\r\n\r\n\t\t\t\t<TableCell sx={cellSx}>\r\n\t\t\t\t\t{row.end_time ? new Date(row.end_time).toLocaleString() : \"—\"}\r\n\t\t\t\t</TableCell>\r\n\r\n\t\t\t\t<TableCell align=\"center\" sx={cellSx}>\r\n\t\t\t\t\t{row.recording.available ? (\r\n\t\t\t\t\t\t<IconButton\r\n\t\t\t\t\t\t\tcolor=\"primary\"\r\n\t\t\t\t\t\t\tonClick={handlePlay}\r\n\t\t\t\t\t\t\tdisabled={loadingAudio}\r\n\t\t\t\t\t\t\tsize=\"small\"\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t{loadingAudio ? <CircularProgress size={18} /> : <PlayArrow />}\r\n\t\t\t\t\t\t</IconButton>\r\n\t\t\t\t\t) : (\r\n\t\t\t\t\t\t<Chip size=\"small\" label=\"No File\" />\r\n\t\t\t\t\t)}\r\n\t\t\t\t</TableCell>\r\n\r\n\t\t\t\t<TableCell align=\"center\" sx={cellSx}>\r\n\t\t\t\t\t{row.agent_id ?? \"—\"}\r\n\t\t\t\t</TableCell>\r\n\r\n\t\t\t\t<TableCell align=\"center\" sx={cellSx}>\r\n\t\t\t\t\t<IconButton onClick={() => setOpen((o) => !o)} size=\"small\">\r\n\t\t\t\t\t\t{open ? <ExpandLess /> : <KeyboardArrowDown />}\r\n\t\t\t\t\t</IconButton>\r\n\t\t\t\t</TableCell>\r\n\t\t\t</TableRow>\r\n\r\n\t\t\t{/* Audio player row */}\r\n\t\t\t{audioURL && (\r\n\t\t\t\t<TableRow>\r\n\t\t\t\t\t<TableCell colSpan={8} sx={{ p: 0 }}>\r\n\t\t\t\t\t\t<Box p={2}>\r\n\t\t\t\t\t\t\t<audio\r\n\t\t\t\t\t\t\t\tcontrols\r\n\t\t\t\t\t\t\t\tautoPlay\r\n\t\t\t\t\t\t\t\tsrc={audioURL}\r\n\t\t\t\t\t\t\t\tonEnded={() => {\r\n\t\t\t\t\t\t\t\t\tURL.revokeObjectURL(audioURL);\r\n\t\t\t\t\t\t\t\t\tsetAudioURL(null);\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\tstyle={{ width: \"100%\" }}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t</TableCell>\r\n\t\t\t\t</TableRow>\r\n\t\t\t)}\r\n\r\n\t\t\t{/* Details collapse row */}\r\n\t\t\t<TableRow>\r\n\t\t\t\t<TableCell colSpan={8} sx={{ p: 0 }}>\r\n\t\t\t\t\t<Collapse in={open} unmountOnExit>\r\n\t\t\t\t\t\t<Box p={2} bgcolor=\"#f9fafc\" borderTop=\"1px solid #eee\">\r\n\t\t\t\t\t\t\t<Typography fontWeight={600} fontSize=\"0.85rem\" mb={0.5}>\r\n\t\t\t\t\t\t\t\tCall Details\r\n\t\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t\t<Typography variant=\"body2\" fontSize=\"0.82rem\">\r\n\t\t\t\t\t\t\t\tCall UID: {row.call_uuid}\r\n\t\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t\t<Typography variant=\"body2\" fontSize=\"0.82rem\">\r\n\t\t\t\t\t\t\t\tAgent: {row.agent_id ?? \"Unassigned\"}\r\n\t\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t</Collapse>\r\n\t\t\t\t</TableCell>\r\n\t\t\t</TableRow>\r\n\t\t</>\r\n\t);\r\n}\r\n\r\n// ──── Default Export — wraps with SDKProvider for toast context ───────────────\r\n\r\nconst CallHistory: React.FC = () => (\r\n\t<SDKProvider>\r\n\t\t<CallHistoryContent />\r\n\t</SDKProvider>\r\n);\r\n\r\nexport default CallHistory;\r\n","import { useState, useCallback } from \"react\";\r\nimport axiosInstance from \"../../services/axios\";\r\nimport { END_POINT } from \"../../services/endPoint\";\r\nimport type { CallHistoryItem, MissedCallDetails } from \"./types\";\r\n\r\nexport function useCallHistory() {\r\n\tconst [calls, setCalls] = useState<CallHistoryItem[]>([]);\r\n\tconst [missedCalls, setMissedCalls] = useState<MissedCallDetails[]>([]);\r\n\tconst [loading, setLoading] = useState(false);\r\n\r\n\tconst fetchCallHistory = useCallback(async () => {\r\n\t\tsetLoading(true);\r\n\t\ttry {\r\n\t\t\tconst res = await axiosInstance.post(END_POINT.CALLS_HISTORY, {});\r\n\t\t\tsetCalls(Array.isArray(res.data?.records) ? res.data.records : []);\r\n\t\t} catch {\r\n\t\t\tsetCalls([]);\r\n\t\t} finally {\r\n\t\t\tsetLoading(false);\r\n\t\t}\r\n\t}, []);\r\n\r\n\tconst fetchMissedCalls = useCallback(async () => {\r\n\t\tsetLoading(true);\r\n\t\ttry {\r\n\t\t\tconst res = await axiosInstance.get(END_POINT.MISSED_CALLS);\r\n\t\t\tsetMissedCalls(Array.isArray(res.data?.data) ? res.data.data : []);\r\n\t\t} catch {\r\n\t\t\tsetMissedCalls([]);\r\n\t\t} finally {\r\n\t\t\tsetLoading(false);\r\n\t\t}\r\n\t}, []);\r\n\r\n\tconst fetchRecording = useCallback(async (call_uuid: string): Promise<Blob> => {\r\n\t\tconst res = await axiosInstance.get(END_POINT.RECORDING_BY_CALL(call_uuid), {\r\n\t\t\tresponseType: \"blob\",\r\n\t\t});\r\n\t\treturn res.data;\r\n\t}, []);\r\n\r\n\treturn {\r\n\t\tcalls,\r\n\t\tmissedCalls,\r\n\t\tloading,\r\n\t\tfetchCallHistory,\r\n\t\tfetchMissedCalls,\r\n\t\tfetchRecording,\r\n\t};\r\n}\r\n"],"mappings":"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","names":["useState","useState"]}
|