@bjsdistribution/dms-client-return 0.1.77-prod → 0.1.78-prod
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/common/utils.js +8 -7
- package/dist/common/utils.js.map +1 -1
- package/dist/components/client-portal/OutstandingTable.js +122 -116
- package/dist/components/client-portal/OutstandingTable.js.map +1 -1
- package/dist/components/fakeData.js.map +1 -1
- package/dist/components/order-daily-overview/common/fakedata.js.map +1 -1
- package/dist/components/order-daily-overview/header-filters/overViewFilter.js +7 -11
- package/dist/components/order-daily-overview/header-filters/overViewFilter.js.map +1 -1
- package/dist/components/order-daily-overview/return-after-table/table/OrderTable.js +32 -30
- package/dist/components/order-daily-overview/return-after-table/table/OrderTable.js.map +1 -1
- package/dist/components/order-daily-overview/return-after-table/table-filters/ReturnOrderFilter.js +58 -54
- package/dist/components/order-daily-overview/return-after-table/table-filters/ReturnOrderFilter.js.map +1 -1
- package/dist/components/order-daily-overview/return-order-table/return-orders-filters/ReturnOrderTable.js +157 -151
- package/dist/components/order-daily-overview/return-order-table/return-orders-filters/ReturnOrderTable.js.map +1 -1
- package/dist/components/order-view/details-filters/left-side-filters/dropdowns/OptionsDropDown.js.map +1 -1
- package/dist/components/order-view/fakedata.js.map +1 -1
- package/dist/components/order-view/general-information/dropdowns/Print.js +11 -11
- package/dist/components/order-view/general-information/dropdowns/Print.js.map +1 -1
- package/dist/components/order-view/index.js +154 -133
- package/dist/components/order-view/index.js.map +1 -1
- package/dist/components/order-view/order-actions/Dropdown.js +3 -3
- package/dist/components/order-view/order-actions/Dropdown.js.map +1 -1
- package/dist/components/order-view/order-actions/actions/cancel-order/CancelOrderTable.js +47 -45
- package/dist/components/order-view/order-actions/actions/cancel-order/CancelOrderTable.js.map +1 -1
- package/dist/components/order-view/order-actions/actions/cancel-order/ReturnReason.js +36 -23
- package/dist/components/order-view/order-actions/actions/cancel-order/ReturnReason.js.map +1 -1
- package/dist/components/order-view/order-actions/actions/cancel-order/index.js.map +1 -1
- package/dist/components/order-view/order-actions/actions/confirm-order/tables/ProductTable.js +25 -23
- package/dist/components/order-view/order-actions/actions/confirm-order/tables/ProductTable.js.map +1 -1
- package/dist/components/order-view/order-actions/actions/force-debrief/ForceDebriefModal.js +90 -88
- package/dist/components/order-view/order-actions/actions/force-debrief/ForceDebriefModal.js.map +1 -1
- package/dist/components/order-view/order-actions/actions/force-debrief/charges/collection-add-ons/index.js +16 -16
- package/dist/components/order-view/order-actions/actions/force-debrief/charges/collection-add-ons/index.js.map +1 -1
- package/dist/components/order-view/order-actions/actions/force-debrief/escalation/EscalationReason.js +24 -22
- package/dist/components/order-view/order-actions/actions/force-debrief/escalation/EscalationReason.js.map +1 -1
- package/dist/components/order-view/order-actions/actions/force-debrief/order-info/RadioButtons.js +56 -51
- package/dist/components/order-view/order-actions/actions/force-debrief/order-info/RadioButtons.js.map +1 -1
- package/dist/components/order-view/order-actions/actions/force-debrief/order-info/dropdowns/CancellationReasonDropdown.js.map +1 -1
- package/dist/components/order-view/order-actions/actions/force-debrief/order-info/dropdowns/FailureReasonDropdown.js +26 -24
- package/dist/components/order-view/order-actions/actions/force-debrief/order-info/dropdowns/FailureReasonDropdown.js.map +1 -1
- package/dist/components/order-view/order-actions/actions/hold-order/HoldOrderModal.js +30 -29
- package/dist/components/order-view/order-actions/actions/hold-order/HoldOrderModal.js.map +1 -1
- package/dist/components/order-view/order-actions/actions/split-order/SplitOrderTable.js +25 -23
- package/dist/components/order-view/order-actions/actions/split-order/SplitOrderTable.js.map +1 -1
- package/dist/components/order-view/order-actions/actions/uncancel-order/UncancelOrderTable.js +37 -35
- package/dist/components/order-view/order-actions/actions/uncancel-order/UncancelOrderTable.js.map +1 -1
- package/dist/components/order-view/order-details/expanded-content/services-section/OrderServices.js +20 -18
- package/dist/components/order-view/order-details/expanded-content/services-section/OrderServices.js.map +1 -1
- package/dist/components/order-view/order-details/expanded-content/services-section/ServiceType.js +27 -22
- package/dist/components/order-view/order-details/expanded-content/services-section/ServiceType.js.map +1 -1
- package/dist/components/order-view/order-details/helper.js.map +1 -1
- package/dist/components/order-view/return-client-products/product-table/ReturnProductTable.js +179 -151
- package/dist/components/order-view/return-client-products/product-table/ReturnProductTable.js.map +1 -1
- package/dist/components/order-view/store.js +160 -144
- package/dist/components/order-view/store.js.map +1 -1
- package/dist/components/order-view/toolbox-resources/collapsed-content/index.js +16 -0
- package/dist/components/order-view/toolbox-resources/collapsed-content/index.js.map +1 -0
- package/dist/components/order-view/toolbox-resources/expanded-content/index.js +534 -0
- package/dist/components/order-view/toolbox-resources/expanded-content/index.js.map +1 -0
- package/dist/components/utils.js +5 -4
- package/dist/components/utils.js.map +1 -1
- package/dist/types/common/utils.d.ts +1 -0
- package/dist/types/components/order-view/order-actions/Dropdown.d.ts +1 -0
- package/dist/types/components/order-view/store.d.ts +6 -0
- package/dist/types/components/order-view/toolbox-resources/collapsed-content/index.d.ts +2 -0
- package/dist/types/components/order-view/toolbox-resources/expanded-content/index.d.ts +2 -0
- package/dist/types/components/utils.d.ts +1 -0
- package/package.json +2 -3
|
@@ -0,0 +1,534 @@
|
|
|
1
|
+
import { jsxs as l, jsx as e, Fragment as j } from "react/jsx-runtime";
|
|
2
|
+
import { useState as L, useEffect as U } from "react";
|
|
3
|
+
import r, { css as O } from "styled-components";
|
|
4
|
+
import { useOrderId as re, skeletonTomTom as se, useZoomCallLogs as ce, useZoomCallLogsLoader as de, useEpodImages as pe } from "../../store.js";
|
|
5
|
+
import he from "../../../../common/scrollbar/index.js";
|
|
6
|
+
import me from "../../../../common/expand-collapse/index.js";
|
|
7
|
+
import ge from "../collapsed-content/index.js";
|
|
8
|
+
import b from "@tippyjs/react";
|
|
9
|
+
import { DownloadIcon as S } from "../../../../assets/icons/DownloadIcon.js";
|
|
10
|
+
import { Tabs as k, Skeleton as c, Image as fe, Spin as ue, notification as E } from "antd";
|
|
11
|
+
import { useAxios as P, PrivateIcon as be, PublicIcon as we, ViewIcon as _, formatUtcToLocal as A } from "@bjsdistribution/dms-component-library";
|
|
12
|
+
import { useClientPortal as xe } from "../../../store.js";
|
|
13
|
+
import { toReverseDeliveryLabel as ye } from "../../../utils.js";
|
|
14
|
+
import { useAtom as ve } from "jotai";
|
|
15
|
+
function Ke() {
|
|
16
|
+
const [x] = re(), [Z] = ve(se), [f, M] = L("pda"), [C, V] = ce(), [H, K] = de(), [G, W] = L([]), [q] = pe(), [I, J] = L([]), [Q] = xe(), {
|
|
17
|
+
data: X,
|
|
18
|
+
// setShouldPerformAction: setAction,
|
|
19
|
+
loading: D,
|
|
20
|
+
fetchData: Y
|
|
21
|
+
} = P({
|
|
22
|
+
endpoint: `v1/orders/call_logs/?order_id=${x}`,
|
|
23
|
+
method: "GET"
|
|
24
|
+
// performAction: false,
|
|
25
|
+
});
|
|
26
|
+
U(() => {
|
|
27
|
+
x && V(X?.data), K(D);
|
|
28
|
+
}, [D]);
|
|
29
|
+
const { fetchData: ee } = P({
|
|
30
|
+
endpoint: "/v1/orders/call_logs/recording/download/",
|
|
31
|
+
method: "POST",
|
|
32
|
+
config: {
|
|
33
|
+
responseType: "blob"
|
|
34
|
+
}
|
|
35
|
+
}), y = q?.result?.map((o) => ({
|
|
36
|
+
s3_content: o?.s3_content,
|
|
37
|
+
// Use image_link for photos as it already contains the .jpg extension
|
|
38
|
+
image_link: o?.image_link,
|
|
39
|
+
type: o?.type,
|
|
40
|
+
time: new Date(o?.timestamp * 1e3).toLocaleString(),
|
|
41
|
+
path: o?.path,
|
|
42
|
+
visibility_status: o?.visibility_status
|
|
43
|
+
}));
|
|
44
|
+
U(() => {
|
|
45
|
+
y && y?.length > 0 && J(y);
|
|
46
|
+
}, [y?.length > 0]);
|
|
47
|
+
const z = async (o) => {
|
|
48
|
+
const t = new Uint8Array(await o.slice(0, 12).arrayBuffer());
|
|
49
|
+
return t[0] === 255 && t[1] === 216 && t[2] === 255 ? ".jpeg" : t[0] === 137 && t[1] === 80 && t[2] === 78 && t[3] === 71 ? ".png" : t[0] === 37 && t[1] === 80 && t[2] === 68 && t[3] === 70 ? ".pdf" : t[0] === 73 && t[1] === 68 && t[2] === 51 || t[0] === 255 && (t[1] === 251 || t[1] === 243 || t[1] === 242) ? ".mp3" : t[0] === 82 && t[1] === 73 && t[2] === 70 && t[3] === 70 && t[8] === 87 && t[9] === 65 && t[10] === 86 && t[11] === 69 ? ".wav" : t[0] === 79 && t[1] === 103 && t[2] === 103 && t[3] === 83 ? ".ogg" : t[0] === 71 && t[1] === 73 && t[2] === 70 && t[3] === 56 ? ".gif" : t[0] === 82 && t[1] === 73 && t[2] === 70 && t[3] === 70 && t[8] === 87 && t[9] === 69 && t[10] === 66 && t[11] === 80 ? ".webp" : t[4] === 102 && t[5] === 116 && t[6] === 121 && t[7] === 112 ? ".mp4" : "";
|
|
50
|
+
}, T = (o) => ({
|
|
51
|
+
"image/jpeg": ".jpeg",
|
|
52
|
+
"image/jpg": ".jpg",
|
|
53
|
+
"image/png": ".png",
|
|
54
|
+
"image/gif": ".gif",
|
|
55
|
+
"image/webp": ".webp",
|
|
56
|
+
"application/pdf": ".pdf",
|
|
57
|
+
"audio/mpeg": ".mp3",
|
|
58
|
+
"audio/mp3": ".mp3",
|
|
59
|
+
"audio/wav": ".wav",
|
|
60
|
+
"audio/ogg": ".ogg",
|
|
61
|
+
"audio/x-wav": ".wav",
|
|
62
|
+
"video/mp4": ".mp4"
|
|
63
|
+
})[o?.toLowerCase()] || "", te = async (o, t) => {
|
|
64
|
+
if (o)
|
|
65
|
+
try {
|
|
66
|
+
const n = await fetch(o);
|
|
67
|
+
if (!n.ok) throw new Error("Download failed");
|
|
68
|
+
const a = await n.blob();
|
|
69
|
+
let i = await z(a);
|
|
70
|
+
if (!i) {
|
|
71
|
+
const le = n.headers.get("Content-Type") || "";
|
|
72
|
+
i = T(le.split(";")[0]?.trim());
|
|
73
|
+
}
|
|
74
|
+
!i && a.type && (i = T(a.type));
|
|
75
|
+
let s = t || "download";
|
|
76
|
+
!/\.\w{2,5}$/.test(s) && i && (s = `${s}${i}`);
|
|
77
|
+
const g = URL.createObjectURL(a), h = document.createElement("a");
|
|
78
|
+
h.href = g, h.download = s, document.body.appendChild(h), h.click(), document.body.removeChild(h), URL.revokeObjectURL(g);
|
|
79
|
+
} catch {
|
|
80
|
+
const a = document.createElement("a");
|
|
81
|
+
a.href = o, a.download = t || "download", document.body.appendChild(a), a.click(), document.body.removeChild(a);
|
|
82
|
+
}
|
|
83
|
+
}, ne = (o) => {
|
|
84
|
+
M(o), o === "customer_calls" && Y();
|
|
85
|
+
}, oe = f === "pda" ? Z : H, $ = f === "pda" ? I : C, R = (o, t) => {
|
|
86
|
+
W((n) => n.some((a) => a.url === o) ? n.map(
|
|
87
|
+
(a) => a.url === o ? { ...a, status: t } : a
|
|
88
|
+
) : [...n, { url: o, status: t }]);
|
|
89
|
+
}, ae = async (o) => {
|
|
90
|
+
try {
|
|
91
|
+
R(o, !0);
|
|
92
|
+
const n = await ee({
|
|
93
|
+
payload: {
|
|
94
|
+
recording_url: o
|
|
95
|
+
}
|
|
96
|
+
}), { pathname: a } = new URL(o), i = a.split("/").pop(), s = n instanceof Blob ? n : new Blob([n]);
|
|
97
|
+
let p = await z(s);
|
|
98
|
+
!p && s.type && (p = T(s.type)), p || (p = ".mp3");
|
|
99
|
+
const g = URL.createObjectURL(s), h = document.createElement("a");
|
|
100
|
+
h.href = g, h.download = `${i}${p}`, h.click(), URL.revokeObjectURL(g), E.success({
|
|
101
|
+
message: "Success",
|
|
102
|
+
description: "File downloaded successfully"
|
|
103
|
+
});
|
|
104
|
+
} catch (t) {
|
|
105
|
+
console.log(t), E.error({
|
|
106
|
+
message: "Failed to download file",
|
|
107
|
+
//@ts-ignore
|
|
108
|
+
description: t
|
|
109
|
+
});
|
|
110
|
+
} finally {
|
|
111
|
+
R(o, !1);
|
|
112
|
+
}
|
|
113
|
+
}, ie = (o, t) => o === "pda" ? t?.map((n, a) => /* @__PURE__ */ l(u, { children: [
|
|
114
|
+
/* @__PURE__ */ l(m, { children: [
|
|
115
|
+
n?.visibility_status === "locked" ? /* @__PURE__ */ e(be, {}) : /* @__PURE__ */ e(we, {}),
|
|
116
|
+
/* @__PURE__ */ e("div", { children: n?.path })
|
|
117
|
+
] }),
|
|
118
|
+
/* @__PURE__ */ e(m, { children: ye(n?.type, Q) }),
|
|
119
|
+
/* @__PURE__ */ e(m, { children: n?.time }),
|
|
120
|
+
/* @__PURE__ */ e(m, { colSpan: 2, children: (n?.type === "photo" || n?.type === "call_recording") && /* @__PURE__ */ e(ze, { children: /* @__PURE__ */ l(F, { children: [
|
|
121
|
+
n?.type === "call_recording" ? /* @__PURE__ */ e(b, { content: "Play", placement: "top", trigger: "mouseenter", children: /* @__PURE__ */ e(
|
|
122
|
+
w,
|
|
123
|
+
{
|
|
124
|
+
onClick: () => {
|
|
125
|
+
const i = n?.path?.match(/\.\w+$/)?.[0] || "";
|
|
126
|
+
window.open(`${n?.s3_content}${i}`, "_blank");
|
|
127
|
+
},
|
|
128
|
+
children: /* @__PURE__ */ e(_, { style: { cursor: "pointer" } })
|
|
129
|
+
}
|
|
130
|
+
) }) : /* @__PURE__ */ e(b, { content: "View", placement: "top", trigger: "mouseenter", children: /* @__PURE__ */ l(w, { className: "ImageView", children: [
|
|
131
|
+
/* @__PURE__ */ e(_, { style: { cursor: "pointer" } }),
|
|
132
|
+
/* @__PURE__ */ e(
|
|
133
|
+
fe,
|
|
134
|
+
{
|
|
135
|
+
width: "20px",
|
|
136
|
+
src: n?.type === "photo" ? n?.image_link : n?.s3_content
|
|
137
|
+
}
|
|
138
|
+
)
|
|
139
|
+
] }) }),
|
|
140
|
+
/* @__PURE__ */ e(
|
|
141
|
+
b,
|
|
142
|
+
{
|
|
143
|
+
content: "Download",
|
|
144
|
+
placement: "top",
|
|
145
|
+
trigger: "mouseenter",
|
|
146
|
+
children: /* @__PURE__ */ e(
|
|
147
|
+
w,
|
|
148
|
+
{
|
|
149
|
+
onClick: () => {
|
|
150
|
+
const i = n?.path?.match(/\.\w+$/)?.[0] || "", s = n?.type === "photo" ? n?.image_link : `${n?.s3_content}${i}`;
|
|
151
|
+
te(
|
|
152
|
+
s,
|
|
153
|
+
n?.path?.split("/").pop()
|
|
154
|
+
);
|
|
155
|
+
},
|
|
156
|
+
children: /* @__PURE__ */ e(S, {})
|
|
157
|
+
}
|
|
158
|
+
)
|
|
159
|
+
}
|
|
160
|
+
)
|
|
161
|
+
] }) }) })
|
|
162
|
+
] }, a)) : C?.map((n, a) => {
|
|
163
|
+
const i = n?.recordings?.[0], p = G.find((g) => g.url === i?.url)?.status || !1;
|
|
164
|
+
return /* @__PURE__ */ l(u, { children: [
|
|
165
|
+
/* @__PURE__ */ e(m, { children: n?.description }),
|
|
166
|
+
/* @__PURE__ */ e(m, { children: n?.source_type }),
|
|
167
|
+
/* @__PURE__ */ e(m, { children: /* @__PURE__ */ l(Ce, { children: [
|
|
168
|
+
/* @__PURE__ */ e("span", { children: A(n?.start_datetime).date }),
|
|
169
|
+
/* @__PURE__ */ e("span", { children: A(n?.start_datetime).time })
|
|
170
|
+
] }) }),
|
|
171
|
+
/* @__PURE__ */ e(m, { colSpan: 2, children: /* @__PURE__ */ e("div", { className: "call-recording-actions", children: /* @__PURE__ */ l(F, { children: [
|
|
172
|
+
!p && i && /* @__PURE__ */ l(j, { children: [
|
|
173
|
+
/* @__PURE__ */ e(
|
|
174
|
+
b,
|
|
175
|
+
{
|
|
176
|
+
content: "Play",
|
|
177
|
+
placement: "top",
|
|
178
|
+
trigger: "mouseenter",
|
|
179
|
+
children: /* @__PURE__ */ e(
|
|
180
|
+
w,
|
|
181
|
+
{
|
|
182
|
+
onClick: () => window.open(i.url, "_blank"),
|
|
183
|
+
children: /* @__PURE__ */ e(_, { style: { cursor: "pointer" } })
|
|
184
|
+
}
|
|
185
|
+
)
|
|
186
|
+
}
|
|
187
|
+
),
|
|
188
|
+
/* @__PURE__ */ e(
|
|
189
|
+
b,
|
|
190
|
+
{
|
|
191
|
+
content: "Download",
|
|
192
|
+
placement: "top",
|
|
193
|
+
trigger: "mouseenter",
|
|
194
|
+
children: /* @__PURE__ */ e(
|
|
195
|
+
w,
|
|
196
|
+
{
|
|
197
|
+
onClick: () => ae(i.url),
|
|
198
|
+
children: /* @__PURE__ */ e(S, {})
|
|
199
|
+
}
|
|
200
|
+
)
|
|
201
|
+
}
|
|
202
|
+
)
|
|
203
|
+
] }),
|
|
204
|
+
i && /* @__PURE__ */ e(ue, { size: "small", spinning: p })
|
|
205
|
+
] }) }) })
|
|
206
|
+
] }, a);
|
|
207
|
+
});
|
|
208
|
+
return /* @__PURE__ */ l(me, { collapsedContent: /* @__PURE__ */ e(ge, {}), children: [
|
|
209
|
+
/* @__PURE__ */ e(Te, { children: /* @__PURE__ */ l(
|
|
210
|
+
k,
|
|
211
|
+
{
|
|
212
|
+
defaultActiveKey: "pda",
|
|
213
|
+
activeKey: f,
|
|
214
|
+
onChange: ne,
|
|
215
|
+
children: [
|
|
216
|
+
/* @__PURE__ */ e(
|
|
217
|
+
k.TabPane,
|
|
218
|
+
{
|
|
219
|
+
tab: /* @__PURE__ */ l(
|
|
220
|
+
"div",
|
|
221
|
+
{
|
|
222
|
+
className: f === "pda" ? "active-tab" : "passive-tab",
|
|
223
|
+
children: [
|
|
224
|
+
"PDA ",
|
|
225
|
+
/* @__PURE__ */ e("span", { className: "count", children: I?.length })
|
|
226
|
+
]
|
|
227
|
+
}
|
|
228
|
+
)
|
|
229
|
+
},
|
|
230
|
+
"pda"
|
|
231
|
+
),
|
|
232
|
+
/* @__PURE__ */ e(
|
|
233
|
+
k.TabPane,
|
|
234
|
+
{
|
|
235
|
+
tab: /* @__PURE__ */ l(
|
|
236
|
+
"div",
|
|
237
|
+
{
|
|
238
|
+
className: f === "customer_calls" ? "active-tab" : "passive-tab",
|
|
239
|
+
children: [
|
|
240
|
+
"Customer Calls",
|
|
241
|
+
/* @__PURE__ */ e("span", { className: "count", children: C?.length })
|
|
242
|
+
]
|
|
243
|
+
}
|
|
244
|
+
)
|
|
245
|
+
},
|
|
246
|
+
"customer_calls"
|
|
247
|
+
)
|
|
248
|
+
]
|
|
249
|
+
}
|
|
250
|
+
) }),
|
|
251
|
+
/* @__PURE__ */ e($e, { children: /* @__PURE__ */ e(Le, { children: /* @__PURE__ */ e(ke, { children: /* @__PURE__ */ e(he, { children: /* @__PURE__ */ l(De, { children: [
|
|
252
|
+
/* @__PURE__ */ e(Ie, { children: /* @__PURE__ */ l(u, { children: [
|
|
253
|
+
/* @__PURE__ */ e(v, { children: "Content" }),
|
|
254
|
+
/* @__PURE__ */ e(v, { children: "Type" }),
|
|
255
|
+
/* @__PURE__ */ e(v, { children: "Time" }),
|
|
256
|
+
/* @__PURE__ */ e(v, { children: "Options" })
|
|
257
|
+
] }) }),
|
|
258
|
+
/* @__PURE__ */ e(_e, { children: oe ? /* @__PURE__ */ l(j, { children: [
|
|
259
|
+
/* @__PURE__ */ l(u, { children: [
|
|
260
|
+
/* @__PURE__ */ e(d, { children: /* @__PURE__ */ e(
|
|
261
|
+
c.Input,
|
|
262
|
+
{
|
|
263
|
+
active: !0,
|
|
264
|
+
size: "small",
|
|
265
|
+
style: { width: 100 }
|
|
266
|
+
}
|
|
267
|
+
) }),
|
|
268
|
+
/* @__PURE__ */ e(d, { children: /* @__PURE__ */ e(
|
|
269
|
+
c.Input,
|
|
270
|
+
{
|
|
271
|
+
active: !0,
|
|
272
|
+
size: "small",
|
|
273
|
+
style: { width: 80 }
|
|
274
|
+
}
|
|
275
|
+
) }),
|
|
276
|
+
/* @__PURE__ */ e(d, { children: /* @__PURE__ */ e(
|
|
277
|
+
c.Input,
|
|
278
|
+
{
|
|
279
|
+
active: !0,
|
|
280
|
+
size: "small",
|
|
281
|
+
style: { width: 130 }
|
|
282
|
+
}
|
|
283
|
+
) }),
|
|
284
|
+
/* @__PURE__ */ e(d, { children: /* @__PURE__ */ e(
|
|
285
|
+
c.Input,
|
|
286
|
+
{
|
|
287
|
+
active: !0,
|
|
288
|
+
size: "small",
|
|
289
|
+
style: { width: 100 }
|
|
290
|
+
}
|
|
291
|
+
) }),
|
|
292
|
+
/* @__PURE__ */ e(d, { children: /* @__PURE__ */ e(
|
|
293
|
+
c.Input,
|
|
294
|
+
{
|
|
295
|
+
active: !0,
|
|
296
|
+
size: "small",
|
|
297
|
+
style: { width: 100 }
|
|
298
|
+
}
|
|
299
|
+
) })
|
|
300
|
+
] }),
|
|
301
|
+
/* @__PURE__ */ l(u, { children: [
|
|
302
|
+
/* @__PURE__ */ e(d, { children: /* @__PURE__ */ e(
|
|
303
|
+
c.Input,
|
|
304
|
+
{
|
|
305
|
+
active: !0,
|
|
306
|
+
size: "small",
|
|
307
|
+
style: { width: 100 }
|
|
308
|
+
}
|
|
309
|
+
) }),
|
|
310
|
+
/* @__PURE__ */ e(d, { children: /* @__PURE__ */ e(
|
|
311
|
+
c.Input,
|
|
312
|
+
{
|
|
313
|
+
active: !0,
|
|
314
|
+
size: "small",
|
|
315
|
+
style: { width: 80 }
|
|
316
|
+
}
|
|
317
|
+
) }),
|
|
318
|
+
/* @__PURE__ */ e(d, { children: /* @__PURE__ */ e(
|
|
319
|
+
c.Input,
|
|
320
|
+
{
|
|
321
|
+
active: !0,
|
|
322
|
+
size: "small",
|
|
323
|
+
style: { width: 130 }
|
|
324
|
+
}
|
|
325
|
+
) }),
|
|
326
|
+
/* @__PURE__ */ e(d, { children: /* @__PURE__ */ e(
|
|
327
|
+
c.Input,
|
|
328
|
+
{
|
|
329
|
+
active: !0,
|
|
330
|
+
size: "small",
|
|
331
|
+
style: { width: 100 }
|
|
332
|
+
}
|
|
333
|
+
) }),
|
|
334
|
+
/* @__PURE__ */ e(d, { children: /* @__PURE__ */ e(
|
|
335
|
+
c.Input,
|
|
336
|
+
{
|
|
337
|
+
active: !0,
|
|
338
|
+
size: "small",
|
|
339
|
+
style: { width: 100 }
|
|
340
|
+
}
|
|
341
|
+
) })
|
|
342
|
+
] })
|
|
343
|
+
] }) : $?.length > 0 ? ie(f, $) : /* @__PURE__ */ e(u, { children: /* @__PURE__ */ e(m, { colSpan: 5, children: "No entries found." }) }) })
|
|
344
|
+
] }) }) }) }) })
|
|
345
|
+
] });
|
|
346
|
+
}
|
|
347
|
+
const Ce = r.div`
|
|
348
|
+
display: flex;
|
|
349
|
+
flex-direction: column;
|
|
350
|
+
gap: 2px;
|
|
351
|
+
`, B = O`
|
|
352
|
+
color: #3a3630 !important;
|
|
353
|
+
font-family: 'Lato', sans-serif;
|
|
354
|
+
font-size: 14px;
|
|
355
|
+
font-weight: 500;
|
|
356
|
+
`, N = O`
|
|
357
|
+
color: #fff;
|
|
358
|
+
background: #3a3630;
|
|
359
|
+
padding: 2px 5px;
|
|
360
|
+
border-radius: 6px;
|
|
361
|
+
font-size: 13px;
|
|
362
|
+
font-family: 'Lato', sans-serif;
|
|
363
|
+
height: 18px;
|
|
364
|
+
display: flex;
|
|
365
|
+
align-items: center;
|
|
366
|
+
`, Te = r.div`
|
|
367
|
+
margin-bottom: 10px;
|
|
368
|
+
|
|
369
|
+
.ant-tabs {
|
|
370
|
+
width: 100%;
|
|
371
|
+
}
|
|
372
|
+
.ant-tabs-tab {
|
|
373
|
+
.ant-tabs-tab-btn {
|
|
374
|
+
${B};
|
|
375
|
+
.count {
|
|
376
|
+
${N};
|
|
377
|
+
}
|
|
378
|
+
.passive-tab {
|
|
379
|
+
display: flex;
|
|
380
|
+
gap: 5px;
|
|
381
|
+
align-items: center;
|
|
382
|
+
opacity: 0.3;
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
.ant-tabs-tab-active {
|
|
387
|
+
.ant-tabs-tab-btn {
|
|
388
|
+
${B};
|
|
389
|
+
.count {
|
|
390
|
+
${N};
|
|
391
|
+
}
|
|
392
|
+
.active-tab {
|
|
393
|
+
display: flex;
|
|
394
|
+
gap: 5px;
|
|
395
|
+
align-items: center;
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
.ant-tabs-ink-bar {
|
|
400
|
+
background: #feba30;
|
|
401
|
+
}
|
|
402
|
+
`, d = r.td`
|
|
403
|
+
padding: 12px 8px;
|
|
404
|
+
text-align: left;
|
|
405
|
+
max-width: ${({ width: x }) => x || "auto"};
|
|
406
|
+
`, Le = r.div`
|
|
407
|
+
height: 30vh;
|
|
408
|
+
pointer-events: initial;
|
|
409
|
+
@media (max-width: 1024px) {
|
|
410
|
+
height: 40vh;
|
|
411
|
+
}
|
|
412
|
+
`, ke = r.div`
|
|
413
|
+
height: 100%;
|
|
414
|
+
overflow-x: auto;
|
|
415
|
+
scrollbar-width: thin;
|
|
416
|
+
border-top-left-radius: 15px;
|
|
417
|
+
border-top-right-radius: 15px;
|
|
418
|
+
`, v = r.th`
|
|
419
|
+
padding: 10px 5px;
|
|
420
|
+
font-family: 'Roboto', sans-serif;
|
|
421
|
+
font-size: 14px;
|
|
422
|
+
font-weight: 500;
|
|
423
|
+
line-height: 24px;
|
|
424
|
+
letter-spacing: 0px;
|
|
425
|
+
text-align: left;
|
|
426
|
+
`, m = r.td`
|
|
427
|
+
border-spacing: 0px;
|
|
428
|
+
padding: 10px 5px;
|
|
429
|
+
font-family: 'Lato', sans-serif;
|
|
430
|
+
font-size: 13px;
|
|
431
|
+
font-weight: 400;
|
|
432
|
+
line-height: 16px;
|
|
433
|
+
letter-spacing: 0px;
|
|
434
|
+
|
|
435
|
+
.call-recording-actions {
|
|
436
|
+
display: flex;
|
|
437
|
+
gap: 5px;
|
|
438
|
+
align-items: center;
|
|
439
|
+
}
|
|
440
|
+
`, u = r.tr`
|
|
441
|
+
border-bottom: 1px solid rgb(215, 214, 213);
|
|
442
|
+
font-weight: 300;
|
|
443
|
+
`, _e = r.tbody`
|
|
444
|
+
border-bottom-right-radius: 10px;
|
|
445
|
+
background: rgb(255, 255, 255);
|
|
446
|
+
height: 96%;
|
|
447
|
+
overflow: auto;
|
|
448
|
+
width: 100%;
|
|
449
|
+
`, Ie = r.thead`
|
|
450
|
+
position: sticky;
|
|
451
|
+
top: 0px;
|
|
452
|
+
z-index: 1;
|
|
453
|
+
background: #f8f8f8;
|
|
454
|
+
white-space: nowrap;
|
|
455
|
+
`, De = r.table`
|
|
456
|
+
width: 100%;
|
|
457
|
+
background: rgb(255, 255, 255);
|
|
458
|
+
box-shadow: 0px 4px 30px 0px #2e2d740d;
|
|
459
|
+
border-collapse: collapse;
|
|
460
|
+
`, ze = r.div``, w = r.div`
|
|
461
|
+
display: inline-block;
|
|
462
|
+
margin: 7px;
|
|
463
|
+
`, F = r.div`
|
|
464
|
+
gap: 10px;
|
|
465
|
+
cursor: pointer;
|
|
466
|
+
display: flex;
|
|
467
|
+
align-items: center;
|
|
468
|
+
.ImageView {
|
|
469
|
+
position: relative;
|
|
470
|
+
.ant-image {
|
|
471
|
+
position: absolute;
|
|
472
|
+
left: 0;
|
|
473
|
+
top: 2px;
|
|
474
|
+
opacity: 0;
|
|
475
|
+
}
|
|
476
|
+
}
|
|
477
|
+
`, $e = r.div`
|
|
478
|
+
.col {
|
|
479
|
+
display: flex;
|
|
480
|
+
align-items: center;
|
|
481
|
+
color: #3a3630;
|
|
482
|
+
padding: 10px 5px;
|
|
483
|
+
text-align: left;
|
|
484
|
+
}
|
|
485
|
+
|
|
486
|
+
.col.noFlex {
|
|
487
|
+
flex: 0;
|
|
488
|
+
}
|
|
489
|
+
|
|
490
|
+
.col.sm {
|
|
491
|
+
flex: 1;
|
|
492
|
+
min-width: 100px;
|
|
493
|
+
}
|
|
494
|
+
|
|
495
|
+
.col.md {
|
|
496
|
+
flex: 2;
|
|
497
|
+
justify-content: flex-start;
|
|
498
|
+
min-width: 85px;
|
|
499
|
+
}
|
|
500
|
+
|
|
501
|
+
.col.lg {
|
|
502
|
+
flex: 4;
|
|
503
|
+
justify-content: flex-start;
|
|
504
|
+
min-width: 180px;
|
|
505
|
+
}
|
|
506
|
+
|
|
507
|
+
.col.date {
|
|
508
|
+
}
|
|
509
|
+
|
|
510
|
+
.col.amount,
|
|
511
|
+
.col.price {
|
|
512
|
+
justify-content: flex-end;
|
|
513
|
+
}
|
|
514
|
+
|
|
515
|
+
.TableHeadData,
|
|
516
|
+
.TableData {
|
|
517
|
+
padding: 10px 5px;
|
|
518
|
+
text-align: left;
|
|
519
|
+
white-space: nowrap;
|
|
520
|
+
}
|
|
521
|
+
|
|
522
|
+
.TableRow {
|
|
523
|
+
display: flex;
|
|
524
|
+
width: 100%;
|
|
525
|
+
}
|
|
526
|
+
|
|
527
|
+
.Table {
|
|
528
|
+
width: 100%;
|
|
529
|
+
}
|
|
530
|
+
`;
|
|
531
|
+
export {
|
|
532
|
+
Ke as default
|
|
533
|
+
};
|
|
534
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../src/components/order-view/toolbox-resources/expanded-content/index.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react';\nimport styled, { css } from 'styled-components';\nimport {\n useEpodImages,\n useOrderId,\n // useOrderProductsToolbox,\n useZoomCallLogs,\n useZoomCallLogsLoader,\n skeletonTomTom,\n} from '../../store';\nimport CustomScrollBar from '../../../../common/scrollbar';\nimport CollapsableForm from '../../../../common/expand-collapse';\nimport CollapsedContent from '../collapsed-content';\nimport Tippy from '@tippyjs/react';\nimport DownloadIcon from '../../../../assets/icons/DownloadIcon';\nimport { Image, notification, Skeleton, Spin, Tabs } from 'antd';\nimport {\n formatUtcToLocal,\n PrivateIcon,\n PublicIcon,\n useAxios,\n ViewIcon,\n} from '@bjsdistribution/dms-component-library';\nimport { useAtom, useClientPortal } from '../../../store';\nimport { toReverseDeliveryLabel } from '../../../utils';\nimport { ApiResponse } from '../../types';\n\nfunction Toolbox() {\n const [orderId] = useOrderId();\n // const [orderToolbox] = useOrderProductsToolbox();\n // const [epodData, setEpodData] = useState<any[]>([]);\n const [tomTomLoader] = useAtom(skeletonTomTom);\n const [activeTab, setActiveTab] = useState<string>('pda');\n // zoom call logs\n const [zoomCallLogs, setZoomCallLogs] = useZoomCallLogs();\n const [zoomCallLogsLoader, setZoomCallLogsLoader] = useZoomCallLogsLoader();\n const [spinner, setSpinner] = useState<any>([]);\n const [epodImages] = useEpodImages();\n const [epodDataClient, setEpodDataClient] = useState<any[]>([]);\n const [clientPortal] = useClientPortal();\n\n // get logs call\n const {\n data: fetchedZoomCallLogs,\n // setShouldPerformAction: setAction,\n loading: zoomCallLogsLoading,\n fetchData: callLogsApi,\n } = useAxios<{\n data: ApiResponse[];\n }>({\n endpoint: `v1/orders/call_logs/?order_id=${orderId}`,\n method: 'GET',\n // performAction: false,\n });\n\n useEffect(() => {\n if (orderId) {\n setZoomCallLogs(fetchedZoomCallLogs?.data);\n }\n // loader state\n setZoomCallLogsLoader(zoomCallLogsLoading);\n }, [zoomCallLogsLoading]);\n\n const { fetchData: fetchCallRecording } = useAxios<{\n data: any[];\n message: string;\n }>({\n endpoint: `/v1/orders/call_logs/recording/download/`,\n method: 'POST',\n config: {\n responseType: 'blob',\n },\n });\n\n // // images for normal [portal]\n // const filterData = orderToolbox?.data?.resources?.result;\n // const imageData = filterData?.map((pic: any) => ({\n // s3_content: pic?.s3_content,\n // type: pic?.type,\n // time: new Date(pic?.timestamp * 1000).toLocaleString(),\n // path: pic?.path,\n // visibility_status: pic?.visibility_status\n // }));\n\n // useEffect(() => {\n // if (imageData && imageData?.length > 0) {\n // setEpodData(imageData);\n // }\n // }, [imageData?.length > 0]);\n\n // images for client Protal\n const filterDataClient = epodImages?.result;\n const imageDataClient = filterDataClient?.map((pic: any) => ({\n s3_content: pic?.s3_content,\n // Use image_link for photos as it already contains the .jpg extension\n image_link: pic?.image_link,\n type: pic?.type,\n time: new Date(pic?.timestamp * 1000).toLocaleString(),\n path: pic?.path,\n visibility_status: pic?.visibility_status,\n }));\n\n useEffect(() => {\n if (imageDataClient && imageDataClient?.length > 0) {\n setEpodDataClient(imageDataClient);\n }\n }, [imageDataClient?.length > 0]);\n\n // Detect file type from the first bytes (magic numbers) of a blob\n const detectExtensionFromBlob = async (blob: Blob): Promise<string> => {\n const arr = new Uint8Array(await blob.slice(0, 12).arrayBuffer());\n\n // JPEG: FF D8 FF\n if (arr[0] === 0xff && arr[1] === 0xd8 && arr[2] === 0xff) return '.jpeg';\n // PNG: 89 50 4E 47\n if (\n arr[0] === 0x89 &&\n arr[1] === 0x50 &&\n arr[2] === 0x4e &&\n arr[3] === 0x47\n )\n return '.png';\n // PDF: %PDF (25 50 44 46)\n if (\n arr[0] === 0x25 &&\n arr[1] === 0x50 &&\n arr[2] === 0x44 &&\n arr[3] === 0x46\n )\n return '.pdf';\n // MP3 with ID3 tag: 49 44 33\n if (arr[0] === 0x49 && arr[1] === 0x44 && arr[2] === 0x33) return '.mp3';\n // MP3 frame sync: FF FB, FF F3, FF F2\n if (\n arr[0] === 0xff &&\n (arr[1] === 0xfb || arr[1] === 0xf3 || arr[1] === 0xf2)\n )\n return '.mp3';\n // WAV: RIFF....WAVE\n if (\n arr[0] === 0x52 &&\n arr[1] === 0x49 &&\n arr[2] === 0x46 &&\n arr[3] === 0x46 &&\n arr[8] === 0x57 &&\n arr[9] === 0x41 &&\n arr[10] === 0x56 &&\n arr[11] === 0x45\n )\n return '.wav';\n // OGG: OggS\n if (\n arr[0] === 0x4f &&\n arr[1] === 0x67 &&\n arr[2] === 0x67 &&\n arr[3] === 0x53\n )\n return '.ogg';\n // GIF: GIF8\n if (\n arr[0] === 0x47 &&\n arr[1] === 0x49 &&\n arr[2] === 0x46 &&\n arr[3] === 0x38\n )\n return '.gif';\n // WEBP: RIFF....WEBP\n if (\n arr[0] === 0x52 &&\n arr[1] === 0x49 &&\n arr[2] === 0x46 &&\n arr[3] === 0x46 &&\n arr[8] === 0x57 &&\n arr[9] === 0x45 &&\n arr[10] === 0x42 &&\n arr[11] === 0x50\n )\n return '.webp';\n // MP4: ....ftyp (bytes 4-7)\n if (\n arr[4] === 0x66 &&\n arr[5] === 0x74 &&\n arr[6] === 0x79 &&\n arr[7] === 0x70\n )\n return '.mp4';\n\n return '';\n };\n\n // Fallback: map MIME type to extension\n const getExtensionFromMime = (mimeType: string): string => {\n const mimeMap: Record<string, string> = {\n 'image/jpeg': '.jpeg',\n 'image/jpg': '.jpg',\n 'image/png': '.png',\n 'image/gif': '.gif',\n 'image/webp': '.webp',\n 'application/pdf': '.pdf',\n 'audio/mpeg': '.mp3',\n 'audio/mp3': '.mp3',\n 'audio/wav': '.wav',\n 'audio/ogg': '.ogg',\n 'audio/x-wav': '.wav',\n 'video/mp4': '.mp4',\n };\n return mimeMap[mimeType?.toLowerCase()] || '';\n };\n\n const handleDownload = async (url: string, filename?: string) => {\n if (!url) return;\n try {\n const response = await fetch(url);\n if (!response.ok) throw new Error('Download failed');\n const blob = await response.blob();\n\n // 1. Try magic bytes detection (most reliable)\n let extension = await detectExtensionFromBlob(blob);\n\n // 2. Fallback to Content-Type header\n if (!extension) {\n const contentType = response.headers.get('Content-Type') || '';\n extension = getExtensionFromMime(contentType.split(';')[0]?.trim());\n }\n\n // 3. Fallback to blob.type\n if (!extension && blob.type) {\n extension = getExtensionFromMime(blob.type);\n }\n\n // Build a proper filename with extension\n let downloadName = filename || 'download';\n // Only append extension if the filename doesn't already have one\n const hasExtension = /\\.\\w{2,5}$/.test(downloadName);\n if (!hasExtension && extension) {\n downloadName = `${downloadName}${extension}`;\n }\n\n const blobUrl = URL.createObjectURL(blob);\n const link = document.createElement('a');\n link.href = blobUrl;\n link.download = downloadName;\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n URL.revokeObjectURL(blobUrl);\n } catch (err) {\n // Fallback: open in new tab\n const link = document.createElement('a');\n link.href = url;\n link.download = filename || 'download';\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n }\n };\n\n const onChangeTab = (key: string) => {\n setActiveTab(key);\n\n if (key === 'customer_calls') {\n callLogsApi();\n }\n };\n\n const activeLoaderState =\n activeTab === 'pda' ? tomTomLoader : zoomCallLogsLoader;\n\n // const activeApiData =\n // activeTab === 'pda'\n // ? clientPortal\n // ? epodData || []\n // : epodImages?.result || []\n // : zoomCallLogs || [];\n\n // const imageDataClient = epodImages?.result?.map((pic: any) => ({\n // s3_content: pic?.s3_content,\n // type: pic?.type,\n // time: new Date(pic?.timestamp * 1000).toLocaleString(),\n // path: pic?.path,\n // }));\n\n const activeApiData = activeTab === 'pda' ? epodDataClient : zoomCallLogs;\n\n // const activeApiData =\n // activeTab === 'pda'\n // ? (clientPortal ? epodData : epodDataClient) || []\n // : zoomCallLogs || [];\n\n // console.log(activeApiData, 'activeApiDataactiveApiData');\n\n const updateSpinner = (url: string, status: boolean) => {\n setSpinner((prev: any) => {\n // If URL exists, update it; otherwise, add new object\n return prev.some((item: any) => item.url === url)\n ? prev.map((item: any) =>\n item.url === url ? { ...item, status } : item\n )\n : [...prev, { url, status }];\n });\n };\n\n const downloadRecording = async (url: string) => {\n try {\n updateSpinner(url, true);\n const newPayload = {\n recording_url: url,\n };\n\n const resp: any = await fetchCallRecording({\n payload: newPayload,\n });\n\n const { pathname } = new URL(url);\n const id = pathname.split('/').pop();\n\n // Detect actual file type from blob content\n const blob = resp instanceof Blob ? resp : new Blob([resp]);\n let extension = await detectExtensionFromBlob(blob);\n\n // Fallback to blob.type if magic bytes didn't match\n if (!extension && blob.type) {\n extension = getExtensionFromMime(blob.type);\n }\n\n // Default to .mp3 for call recordings if detection fails\n if (!extension) {\n extension = '.mp3';\n }\n\n const downloadUrl = URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = downloadUrl;\n a.download = `${id}${extension}`;\n a.click();\n URL.revokeObjectURL(downloadUrl);\n notification.success({\n message: 'Success',\n description: 'File downloaded successfully',\n });\n } catch (err) {\n console.log(err);\n notification.error({\n message: 'Failed to download file',\n //@ts-ignore\n description: err,\n });\n } finally {\n updateSpinner(url, false);\n }\n };\n\n const renderTableBody = (key: string, apiData: any[]) => {\n if (key === 'pda') {\n return apiData?.map((item, index) => (\n <TableRow key={index}>\n <TableData>\n {item?.visibility_status === 'locked' ? (\n <PrivateIcon />\n ) : (\n <PublicIcon />\n )}\n <div>{item?.path}</div>\n </TableData>\n <TableData>\n {toReverseDeliveryLabel(item?.type, clientPortal)}\n </TableData>\n <TableData>{item?.time}</TableData>\n <TableData colSpan={2}>\n {(item?.type === 'photo' || item?.type === 'call_recording') && (\n <Actions>\n <Row>\n {item?.type === 'call_recording' ? (\n <Tippy content=\"Play\" placement=\"top\" trigger=\"mouseenter\">\n <TippyContainer\n onClick={() => {\n // Append extension from path to s3_content URL for proper browser playback/download\n const ext = item?.path?.match(/\\.\\w+$/)?.[0] || '';\n window.open(`${item?.s3_content}${ext}`, '_blank');\n }}\n >\n <ViewIcon style={{ cursor: 'pointer' }} />\n </TippyContainer>\n </Tippy>\n ) : (\n <Tippy content=\"View\" placement=\"top\" trigger=\"mouseenter\">\n <TippyContainer className=\"ImageView\">\n <ViewIcon style={{ cursor: 'pointer' }} />\n {/* Use image_link for photos so the preview uses the .jpg URL */}\n <Image\n width=\"20px\"\n src={\n item?.type === 'photo'\n ? item?.image_link\n : item?.s3_content\n }\n />\n </TippyContainer>\n </Tippy>\n )}\n\n <Tippy\n content=\"Download\"\n placement=\"top\"\n trigger=\"mouseenter\"\n >\n <TippyContainer\n onClick={() => {\n // For photos, image_link already has .jpg extension\n // For other types, append extension from path to s3_content URL\n const ext = item?.path?.match(/\\.\\w+$/)?.[0] || '';\n const downloadUrl =\n item?.type === 'photo'\n ? item?.image_link\n : `${item?.s3_content}${ext}`;\n handleDownload(\n downloadUrl,\n item?.path?.split('/').pop()\n );\n }}\n >\n <DownloadIcon />\n </TippyContainer>\n </Tippy>\n </Row>\n </Actions>\n )}\n </TableData>\n </TableRow>\n ));\n } else {\n return zoomCallLogs?.map((item: any, index: number) => {\n const recording = item?.recordings?.[0]; // take first recording only all are same\n const spinnerItem = spinner.find((s: any) => s.url === recording?.url);\n const isLoading = spinnerItem?.status || false;\n\n return (\n <TableRow key={index}>\n <TableData>{item?.description}</TableData>\n <TableData>{item?.source_type}</TableData>\n <TableData>\n <DateTimeContainer>\n <span>{formatUtcToLocal(item?.start_datetime).date}</span>\n <span>{formatUtcToLocal(item?.start_datetime).time}</span>\n </DateTimeContainer>\n </TableData>\n <TableData colSpan={2}>\n <div className=\"call-recording-actions\">\n <Row>\n {!isLoading && recording && (\n <>\n <Tippy\n content=\"Play\"\n placement=\"top\"\n trigger=\"mouseenter\"\n >\n <TippyContainer\n onClick={() => window.open(recording.url, '_blank')}\n >\n <ViewIcon style={{ cursor: 'pointer' }} />\n </TippyContainer>\n </Tippy>\n <Tippy\n content=\"Download\"\n placement=\"top\"\n trigger=\"mouseenter\"\n >\n <TippyContainer\n onClick={() => downloadRecording(recording.url)}\n >\n <DownloadIcon />\n </TippyContainer>\n </Tippy>\n </>\n )}\n {recording && <Spin size=\"small\" spinning={isLoading} />}\n </Row>\n </div>\n </TableData>\n </TableRow>\n );\n });\n }\n };\n\n return (\n <CollapsableForm collapsedContent={<CollapsedContent />}>\n <TabsContainer>\n <Tabs\n defaultActiveKey=\"pda\"\n activeKey={activeTab}\n onChange={onChangeTab}\n >\n <Tabs.TabPane\n key=\"pda\"\n tab={\n <div\n className={activeTab === 'pda' ? 'active-tab' : 'passive-tab'}\n >\n PDA <span className=\"count\">{epodDataClient?.length}</span>\n </div>\n }\n />\n\n <Tabs.TabPane\n key=\"customer_calls\"\n tab={\n <div\n className={\n activeTab === 'customer_calls' ? 'active-tab' : 'passive-tab'\n }\n >\n Customer Calls\n <span className=\"count\">{zoomCallLogs?.length}</span>\n </div>\n }\n />\n </Tabs>\n </TabsContainer>\n <MainContainer>\n <Container>\n <TableWrapper>\n <CustomScrollBar>\n <Table>\n <TableHead>\n <TableRow>\n <TableHeadData>Content</TableHeadData>\n <TableHeadData>Type</TableHeadData>\n <TableHeadData>Time</TableHeadData>\n <TableHeadData>Options</TableHeadData>\n </TableRow>\n </TableHead>\n <TableBody>\n {activeLoaderState ? (\n <>\n {/* Skeleton Rows */}\n <TableRow>\n <TableCell>\n <Skeleton.Input\n active\n size=\"small\"\n style={{ width: 100 }}\n />\n </TableCell>\n <TableCell>\n <Skeleton.Input\n active\n size=\"small\"\n style={{ width: 80 }}\n />\n </TableCell>\n <TableCell>\n <Skeleton.Input\n active\n size=\"small\"\n style={{ width: 130 }}\n />\n </TableCell>\n <TableCell>\n <Skeleton.Input\n active\n size=\"small\"\n style={{ width: 100 }}\n />\n </TableCell>\n <TableCell>\n <Skeleton.Input\n active\n size=\"small\"\n style={{ width: 100 }}\n />\n </TableCell>\n </TableRow>\n <TableRow>\n <TableCell>\n <Skeleton.Input\n active\n size=\"small\"\n style={{ width: 100 }}\n />\n </TableCell>\n <TableCell>\n <Skeleton.Input\n active\n size=\"small\"\n style={{ width: 80 }}\n />\n </TableCell>\n <TableCell>\n <Skeleton.Input\n active\n size=\"small\"\n style={{ width: 130 }}\n />\n </TableCell>\n <TableCell>\n <Skeleton.Input\n active\n size=\"small\"\n style={{ width: 100 }}\n />\n </TableCell>\n <TableCell>\n <Skeleton.Input\n active\n size=\"small\"\n style={{ width: 100 }}\n />\n </TableCell>\n </TableRow>\n </>\n ) : activeApiData?.length > 0 ? (\n renderTableBody(activeTab, activeApiData)\n ) : (\n <TableRow>\n <TableData colSpan={5}>No entries found.</TableData>\n </TableRow>\n )}\n </TableBody>\n </Table>\n </CustomScrollBar>\n </TableWrapper>\n </Container>\n </MainContainer>\n </CollapsableForm>\n );\n}\n\nconst DateTimeContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: 2px;\n`;\n\nconst tabText = css`\n color: #3a3630 !important;\n font-family: 'Lato', sans-serif;\n font-size: 14px;\n font-weight: 500;\n`;\n\nconst countBadge = css`\n color: #fff;\n background: #3a3630;\n padding: 2px 5px;\n border-radius: 6px;\n font-size: 13px;\n font-family: 'Lato', sans-serif;\n height: 18px;\n display: flex;\n align-items: center;\n`;\n\nconst TabsContainer = styled.div`\n margin-bottom: 10px;\n\n .ant-tabs {\n width: 100%;\n }\n .ant-tabs-tab {\n .ant-tabs-tab-btn {\n ${tabText};\n .count {\n ${countBadge};\n }\n .passive-tab {\n display: flex;\n gap: 5px;\n align-items: center;\n opacity: 0.3;\n }\n }\n }\n .ant-tabs-tab-active {\n .ant-tabs-tab-btn {\n ${tabText};\n .count {\n ${countBadge};\n }\n .active-tab {\n display: flex;\n gap: 5px;\n align-items: center;\n }\n }\n }\n .ant-tabs-ink-bar {\n background: #feba30;\n }\n`;\n\nconst TableCell = styled.td<{ width?: string }>`\n padding: 12px 8px;\n text-align: left;\n max-width: ${({ width }) => width || 'auto'};\n`;\nconst Container = styled.div`\n height: 30vh;\n pointer-events: initial;\n @media (max-width: 1024px) {\n height: 40vh;\n }\n`;\n\nconst TableWrapper = styled.div`\n height: 100%;\n overflow-x: auto;\n scrollbar-width: thin;\n border-top-left-radius: 15px;\n border-top-right-radius: 15px;\n`;\n\nconst TableHeadData = styled.th`\n padding: 10px 5px;\n font-family: 'Roboto', sans-serif;\n font-size: 14px;\n font-weight: 500;\n line-height: 24px;\n letter-spacing: 0px;\n text-align: left;\n`;\n\nconst TableData = styled.td`\n border-spacing: 0px;\n padding: 10px 5px;\n font-family: 'Lato', sans-serif;\n font-size: 13px;\n font-weight: 400;\n line-height: 16px;\n letter-spacing: 0px;\n\n .call-recording-actions {\n display: flex;\n gap: 5px;\n align-items: center;\n }\n`;\n\nconst TableRow = styled.tr`\n border-bottom: 1px solid rgb(215, 214, 213);\n font-weight: 300;\n`;\n\nconst TableBody = styled.tbody`\n border-bottom-right-radius: 10px;\n background: rgb(255, 255, 255);\n height: 96%;\n overflow: auto;\n width: 100%;\n`;\n\nconst TableHead = styled.thead`\n position: sticky;\n top: 0px;\n z-index: 1;\n background: #f8f8f8;\n white-space: nowrap;\n`;\n\nconst Table = styled.table`\n width: 100%;\n background: rgb(255, 255, 255);\n box-shadow: 0px 4px 30px 0px #2e2d740d;\n border-collapse: collapse;\n`;\n\nconst Actions = styled.div``;\n\nconst TippyContainer = styled.div`\n display: inline-block;\n margin: 7px;\n`;\n\nconst Row = styled.div`\n gap: 10px;\n cursor: pointer;\n display: flex;\n align-items: center;\n .ImageView {\n position: relative;\n .ant-image {\n position: absolute;\n left: 0;\n top: 2px;\n opacity: 0;\n }\n }\n`;\n\nconst MainContainer = styled.div`\n .col {\n display: flex;\n align-items: center;\n color: #3a3630;\n padding: 10px 5px;\n text-align: left;\n }\n\n .col.noFlex {\n flex: 0;\n }\n\n .col.sm {\n flex: 1;\n min-width: 100px;\n }\n\n .col.md {\n flex: 2;\n justify-content: flex-start;\n min-width: 85px;\n }\n\n .col.lg {\n flex: 4;\n justify-content: flex-start;\n min-width: 180px;\n }\n\n .col.date {\n }\n\n .col.amount,\n .col.price {\n justify-content: flex-end;\n }\n\n .TableHeadData,\n .TableData {\n padding: 10px 5px;\n text-align: left;\n white-space: nowrap;\n }\n\n .TableRow {\n display: flex;\n width: 100%;\n }\n\n .Table {\n width: 100%;\n }\n`;\n\nexport default Toolbox;\n//\n"],"names":["Toolbox","orderId","useOrderId","tomTomLoader","useAtom","skeletonTomTom","activeTab","setActiveTab","useState","zoomCallLogs","setZoomCallLogs","useZoomCallLogs","zoomCallLogsLoader","setZoomCallLogsLoader","useZoomCallLogsLoader","spinner","setSpinner","epodImages","useEpodImages","epodDataClient","setEpodDataClient","clientPortal","useClientPortal","fetchedZoomCallLogs","zoomCallLogsLoading","callLogsApi","useAxios","useEffect","fetchCallRecording","imageDataClient","pic","detectExtensionFromBlob","blob","arr","getExtensionFromMime","mimeType","handleDownload","url","filename","response","extension","contentType","downloadName","blobUrl","link","onChangeTab","key","activeLoaderState","activeApiData","updateSpinner","status","prev","item","downloadRecording","resp","pathname","id","downloadUrl","a","notification","err","renderTableBody","apiData","index","TableRow","jsxs","TableData","jsx","PrivateIcon","PublicIcon","toReverseDeliveryLabel","Actions","Row","Tippy","TippyContainer","ext","ViewIcon","Image","DownloadIcon","recording","isLoading","s","DateTimeContainer","formatUtcToLocal","Fragment","Spin","CollapsableForm","CollapsedContent","TabsContainer","Tabs","MainContainer","Container","TableWrapper","CustomScrollBar","Table","TableHead","TableHeadData","TableBody","TableCell","Skeleton","styled","tabText","css","countBadge","width"],"mappings":"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"}
|
package/dist/components/utils.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import "date-fns";
|
|
2
|
-
const
|
|
3
|
-
let e =
|
|
2
|
+
const g = function(r) {
|
|
3
|
+
let e = r.replace(new RegExp("(?<=[a-zA-Z])'(?=[a-zA-Z ])", "g"), "__");
|
|
4
4
|
return e = e.replace(new RegExp("'", "g"), '"'), e = e.replace(new RegExp("__", "g"), "'"), e = e.replace(new RegExp("None", "g"), "null"), e = e.replace(new RegExp("False", "g"), "false"), e = e.replace(new RegExp("True", "g"), "true"), e = e.replace(new RegExp(/(\d+)\s*[a-zA-Z]/gm), "$1"), JSON.parse(e);
|
|
5
|
-
};
|
|
5
|
+
}, l = (r, e, p = "Reverse Delivery") => !r || e ? r : r.replace(/\bcollect(ion)?s?\b/gi, p);
|
|
6
6
|
export {
|
|
7
|
-
|
|
7
|
+
g as javascriptStringDumpToJSON,
|
|
8
|
+
l as toReverseDeliveryLabel
|
|
8
9
|
};
|
|
9
10
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sources":["../../src/components/utils.ts"],"sourcesContent":["import { format } from 'date-fns';\n\nexport const EscalationCategory = [\n {\n label: 'Failure-Not Failure',\n value: 'Failure-Not Failure',\n },\n {\n label: 'Failure Fault',\n value: 'Failure Fault',\n },\n {\n label: 'Failure Upgrade',\n value: 'Failure Upgrade',\n },\n {\n label: 'Elite',\n value: 'Elite',\n },\n {\n label: 'New Client',\n value: 'New Client',\n },\n];\n\nexport const EscalationLevel = [\n {\n label: 'VIP4',\n value: 'VIP4',\n },\n {\n label: 'VIP3',\n value: 'VIP3',\n },\n {\n label: 'VIP2',\n value: 'VIP2',\n },\n {\n label: 'VIP1',\n value: 'VIP1',\n },\n {\n label: 'New Client',\n value: 'New Client',\n },\n];\nexport const EscalationReason = [\n {\n label: 'INBOUND / DAMAGE - ITEM UNFIT TO BE DELIVERED - by Co',\n value: 'INBOUND / DAMAGE - ITEM UNFIT TO BE DELIVERED - by Co',\n },\n {\n label: 'INBOUND / PRODUCT ISSUE - WRONG ITEM BEEN DESPATCHED - by Co',\n value: 'INBOUND / PRODUCT ISSUE - WRONG ITEM BEEN DESPATCHED - by Co',\n },\n {\n label: 'INBOUND / CANCEL - BEFORE ROUTING - by Co',\n value: 'INBOUND / CANCEL - BEFORE ROUTING - by Co',\n },\n {\n label: 'PRE-CALL / ADDRESS - WRONG ADDRESS (UNABLE TO RE-ROUTE) - by BJS',\n value: 'PRE-CALL / ADDRESS - WRONG ADDRESS (UNABLE TO RE-ROUTE) - by BJS',\n },\n {\n label: 'Predated charges PRE-CALL / DEL WINDOW - NOT SUITABLE - by CUST',\n value: 'Predated charges PRE-CALL / DEL WINDOW - NOT SUITABLE - by CUST',\n },\n {\n label: 'ON-ROUTE / ADDRESS - WRONG ADDRESS (UNABLE TO RE-ROUTE) - by BJS',\n value: 'ON-ROUTE / ADDRESS - WRONG ADDRESS (UNABLE TO RE-ROUTE) - by BJS',\n },\n {\n label: 'LOADING / STOCK RECEIPT - NO STK RECEIVED - Co',\n value: 'LOADING / STOCK RECEIPT - NO STK RECEIVED - Co',\n },\n];\nexport const EscalationStatus = [\n {\n label: 'Pending',\n value: 'Pending',\n },\n {\n label: 'Stock Check',\n value: 'Stock Check',\n },\n {\n label: 'Ready to Post Call',\n value: 'Ready to Post Call',\n },\n {\n label: 'Post Called',\n value: 'Post Called',\n },\n {\n label: 'Completed',\n value: 'Completed',\n },\n];\n\nexport const getIntegerValue = (value: number) => {\n return value ?? 0;\n};\n\nexport const getStringValue = (value: string) => {\n return value === '' ? 'N/A' : value;\n};\n\nexport const FormattedDate = ({ date }: any) => {\n const formattedDate = format(new Date(date), 'dd/MM/yyyy');\n return formattedDate;\n};\n\nexport const javascriptStringDumpToJSON = function(data: string) {\n let d = data.replace(new RegExp(`(?<=[a-zA-Z])'(?=[a-zA-Z ])`, 'g'), '__');\n d = d.replace(new RegExp(\"'\", 'g'), '\"');\n d = d.replace(new RegExp('__', 'g'), \"'\");\n d = d.replace(new RegExp('None', 'g'), 'null');\n d = d.replace(new RegExp('False', 'g'), 'false');\n d = d.replace(new RegExp('True', 'g'), 'true');\n d = d.replace(new RegExp(/(\\d+)\\s*[a-zA-Z]/gm), '$1');\n return JSON.parse(d);\n};\n"],"names":["javascriptStringDumpToJSON","data","d"],"mappings":";AAiHO,MAAMA,IAA6B,
|
|
1
|
+
{"version":3,"file":"utils.js","sources":["../../src/components/utils.ts"],"sourcesContent":["import { format } from 'date-fns';\n\nexport const EscalationCategory = [\n {\n label: 'Failure-Not Failure',\n value: 'Failure-Not Failure',\n },\n {\n label: 'Failure Fault',\n value: 'Failure Fault',\n },\n {\n label: 'Failure Upgrade',\n value: 'Failure Upgrade',\n },\n {\n label: 'Elite',\n value: 'Elite',\n },\n {\n label: 'New Client',\n value: 'New Client',\n },\n];\n\nexport const EscalationLevel = [\n {\n label: 'VIP4',\n value: 'VIP4',\n },\n {\n label: 'VIP3',\n value: 'VIP3',\n },\n {\n label: 'VIP2',\n value: 'VIP2',\n },\n {\n label: 'VIP1',\n value: 'VIP1',\n },\n {\n label: 'New Client',\n value: 'New Client',\n },\n];\nexport const EscalationReason = [\n {\n label: 'INBOUND / DAMAGE - ITEM UNFIT TO BE DELIVERED - by Co',\n value: 'INBOUND / DAMAGE - ITEM UNFIT TO BE DELIVERED - by Co',\n },\n {\n label: 'INBOUND / PRODUCT ISSUE - WRONG ITEM BEEN DESPATCHED - by Co',\n value: 'INBOUND / PRODUCT ISSUE - WRONG ITEM BEEN DESPATCHED - by Co',\n },\n {\n label: 'INBOUND / CANCEL - BEFORE ROUTING - by Co',\n value: 'INBOUND / CANCEL - BEFORE ROUTING - by Co',\n },\n {\n label: 'PRE-CALL / ADDRESS - WRONG ADDRESS (UNABLE TO RE-ROUTE) - by BJS',\n value: 'PRE-CALL / ADDRESS - WRONG ADDRESS (UNABLE TO RE-ROUTE) - by BJS',\n },\n {\n label: 'Predated charges PRE-CALL / DEL WINDOW - NOT SUITABLE - by CUST',\n value: 'Predated charges PRE-CALL / DEL WINDOW - NOT SUITABLE - by CUST',\n },\n {\n label: 'ON-ROUTE / ADDRESS - WRONG ADDRESS (UNABLE TO RE-ROUTE) - by BJS',\n value: 'ON-ROUTE / ADDRESS - WRONG ADDRESS (UNABLE TO RE-ROUTE) - by BJS',\n },\n {\n label: 'LOADING / STOCK RECEIPT - NO STK RECEIVED - Co',\n value: 'LOADING / STOCK RECEIPT - NO STK RECEIVED - Co',\n },\n];\nexport const EscalationStatus = [\n {\n label: 'Pending',\n value: 'Pending',\n },\n {\n label: 'Stock Check',\n value: 'Stock Check',\n },\n {\n label: 'Ready to Post Call',\n value: 'Ready to Post Call',\n },\n {\n label: 'Post Called',\n value: 'Post Called',\n },\n {\n label: 'Completed',\n value: 'Completed',\n },\n];\n\nexport const getIntegerValue = (value: number) => {\n return value ?? 0;\n};\n\nexport const getStringValue = (value: string) => {\n return value === '' ? 'N/A' : value;\n};\n\nexport const FormattedDate = ({ date }: any) => {\n const formattedDate = format(new Date(date), 'dd/MM/yyyy');\n return formattedDate;\n};\n\nexport const javascriptStringDumpToJSON = function (data: string) {\n let d = data.replace(new RegExp(`(?<=[a-zA-Z])'(?=[a-zA-Z ])`, 'g'), '__');\n d = d.replace(new RegExp(\"'\", 'g'), '\"');\n d = d.replace(new RegExp('__', 'g'), \"'\");\n d = d.replace(new RegExp('None', 'g'), 'null');\n d = d.replace(new RegExp('False', 'g'), 'false');\n d = d.replace(new RegExp('True', 'g'), 'true');\n d = d.replace(new RegExp(/(\\d+)\\s*[a-zA-Z]/gm), '$1');\n return JSON.parse(d);\n};\n\nexport const toReverseDeliveryLabel = <T extends string | null | undefined>(\n value: T,\n isClientPortal?: boolean,\n replacement = 'Reverse Delivery'\n): T => {\n if (!value || isClientPortal) return value;\n return value.replace(/\\bcollect(ion)?s?\\b/gi, replacement) as T;\n};\n"],"names":["javascriptStringDumpToJSON","data","d","toReverseDeliveryLabel","value","isClientPortal","replacement"],"mappings":";AAiHO,MAAMA,IAA6B,SAAUC,GAAc;AAChE,MAAIC,IAAID,EAAK,QAAQ,IAAI,OAAO,+BAA+B,GAAG,GAAG,IAAI;AACzE,SAAAC,IAAIA,EAAE,QAAQ,IAAI,OAAO,KAAK,GAAG,GAAG,GAAG,GACvCA,IAAIA,EAAE,QAAQ,IAAI,OAAO,MAAM,GAAG,GAAG,GAAG,GACxCA,IAAIA,EAAE,QAAQ,IAAI,OAAO,QAAQ,GAAG,GAAG,MAAM,GAC7CA,IAAIA,EAAE,QAAQ,IAAI,OAAO,SAAS,GAAG,GAAG,OAAO,GAC/CA,IAAIA,EAAE,QAAQ,IAAI,OAAO,QAAQ,GAAG,GAAG,MAAM,GAC7CA,IAAIA,EAAE,QAAQ,IAAI,OAAO,oBAAoB,GAAG,IAAI,GAC7C,KAAK,MAAMA,CAAC;AACrB,GAEaC,IAAyB,CACpCC,GACAC,GACAC,IAAc,uBAEV,CAACF,KAASC,IAAuBD,IAC9BA,EAAM,QAAQ,yBAAyBE,CAAW;"}
|