medusa-analytics 0.0.11 → 0.0.12
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.
|
@@ -57,6 +57,7 @@ function formatCurrency(value) {
|
|
|
57
57
|
}).format(value);
|
|
58
58
|
}
|
|
59
59
|
const SUMMARY_PERIODS = [
|
|
60
|
+
{ value: "all", label: "All time" },
|
|
60
61
|
{ value: "0", label: "Today's orders" },
|
|
61
62
|
{ value: "7", label: "Last 7 days" },
|
|
62
63
|
{ value: "30", label: "Last 30 days" },
|
|
@@ -71,7 +72,7 @@ function OrdersDashboard() {
|
|
|
71
72
|
const [data, setData] = react.useState(null);
|
|
72
73
|
const [loading, setLoading] = react.useState(true);
|
|
73
74
|
const [error, setError] = react.useState(null);
|
|
74
|
-
const [filter, setFilter] = react.useState("
|
|
75
|
+
const [filter, setFilter] = react.useState("all");
|
|
75
76
|
const [dailyOrders, setDailyOrders] = react.useState([]);
|
|
76
77
|
const [overTimePeriod, setOverTimePeriod] = react.useState("one_week");
|
|
77
78
|
const [overTimeLoading, setOverTimeLoading] = react.useState(true);
|
|
@@ -139,19 +140,31 @@ function OrdersDashboard() {
|
|
|
139
140
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-8", children: [
|
|
140
141
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center justify-between gap-4", children: [
|
|
141
142
|
/* @__PURE__ */ jsxRuntime.jsx(ui.Heading, { level: "h2", children: "Orders" }),
|
|
142
|
-
/* @__PURE__ */ jsxRuntime.
|
|
143
|
-
/* @__PURE__ */ jsxRuntime.
|
|
144
|
-
|
|
145
|
-
|
|
143
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
144
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
145
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Label, { htmlFor: "analytics-period", className: "text-ui-fg-muted text-sm", children: "Period" }),
|
|
146
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
147
|
+
"select",
|
|
148
|
+
{
|
|
149
|
+
id: "analytics-period",
|
|
150
|
+
value: filter,
|
|
151
|
+
onChange: (e) => setFilter(e.target.value),
|
|
152
|
+
className: "h-9 rounded-md border border-ui-border-base bg-transparent px-3 text-sm text-ui-fg-base outline-none transition focus:ring-2 focus:ring-ui-fg-interactive",
|
|
153
|
+
children: SUMMARY_PERIODS.map((p) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: p.value, children: p.label }, p.value))
|
|
154
|
+
}
|
|
155
|
+
)
|
|
156
|
+
] }),
|
|
157
|
+
filter !== "all" && /* @__PURE__ */ jsxRuntime.jsx(
|
|
158
|
+
"button",
|
|
146
159
|
{
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
children:
|
|
160
|
+
type: "button",
|
|
161
|
+
onClick: () => setFilter("all"),
|
|
162
|
+
className: "text-xs text-ui-fg-muted hover:text-ui-fg-base transition-colors",
|
|
163
|
+
"aria-label": "Show all orders (clear filter)",
|
|
164
|
+
children: "Clear filter"
|
|
152
165
|
}
|
|
153
166
|
)
|
|
154
|
-
] })
|
|
167
|
+
] })
|
|
155
168
|
] }),
|
|
156
169
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4", children: [
|
|
157
170
|
/* @__PURE__ */ jsxRuntime.jsxs(ui.Container, { className: "p-4", children: [
|
|
@@ -367,6 +380,7 @@ function CustomersOverTimeTooltip({
|
|
|
367
380
|
);
|
|
368
381
|
}
|
|
369
382
|
const COUNT_DAY_PRESETS = [
|
|
383
|
+
{ value: "all", label: "All time" },
|
|
370
384
|
{ value: "0", label: "Today" },
|
|
371
385
|
{ value: "7", label: "Last 7 days" },
|
|
372
386
|
{ value: "30", label: "Last 30 days" },
|
|
@@ -383,7 +397,7 @@ function CustomersDashboard() {
|
|
|
383
397
|
const [data, setData] = react.useState(null);
|
|
384
398
|
const [loading, setLoading] = react.useState(true);
|
|
385
399
|
const [error, setError] = react.useState(null);
|
|
386
|
-
const [countDays, setCountDays] = react.useState("
|
|
400
|
+
const [countDays, setCountDays] = react.useState("all");
|
|
387
401
|
const [series, setSeries] = react.useState([]);
|
|
388
402
|
const [graphPeriod, setGraphPeriod] = react.useState("one_week");
|
|
389
403
|
const [graphLoading, setGraphLoading] = react.useState(true);
|
|
@@ -443,26 +457,38 @@ function CustomersDashboard() {
|
|
|
443
457
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-8", children: [
|
|
444
458
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center justify-between gap-4", children: [
|
|
445
459
|
/* @__PURE__ */ jsxRuntime.jsx(ui.Heading, { level: "h2", children: "Customers" }),
|
|
446
|
-
/* @__PURE__ */ jsxRuntime.
|
|
447
|
-
/* @__PURE__ */ jsxRuntime.
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
460
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
461
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
462
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
463
|
+
ui.Label,
|
|
464
|
+
{
|
|
465
|
+
htmlFor: "customers-count-period",
|
|
466
|
+
className: "text-ui-fg-muted text-sm",
|
|
467
|
+
children: "Period (counts)"
|
|
468
|
+
}
|
|
469
|
+
),
|
|
470
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
471
|
+
"select",
|
|
472
|
+
{
|
|
473
|
+
id: "customers-count-period",
|
|
474
|
+
value: countDays,
|
|
475
|
+
onChange: (e) => setCountDays(e.target.value),
|
|
476
|
+
className: "h-9 rounded-md border border-ui-border-base bg-transparent px-3 text-sm text-ui-fg-base outline-none transition focus:ring-2 focus:ring-ui-fg-interactive",
|
|
477
|
+
children: COUNT_DAY_PRESETS.map((p) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: p.value, children: p.label }, p.value))
|
|
478
|
+
}
|
|
479
|
+
)
|
|
480
|
+
] }),
|
|
481
|
+
countDays !== "all" && /* @__PURE__ */ jsxRuntime.jsx(
|
|
482
|
+
"button",
|
|
457
483
|
{
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
children:
|
|
484
|
+
type: "button",
|
|
485
|
+
onClick: () => setCountDays("all"),
|
|
486
|
+
className: "text-xs text-ui-fg-muted hover:text-ui-fg-base transition-colors",
|
|
487
|
+
"aria-label": "Show all customers (clear filter)",
|
|
488
|
+
children: "Clear filter"
|
|
463
489
|
}
|
|
464
490
|
)
|
|
465
|
-
] })
|
|
491
|
+
] })
|
|
466
492
|
] }),
|
|
467
493
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4", children: [
|
|
468
494
|
/* @__PURE__ */ jsxRuntime.jsxs(ui.Container, { className: "p-4", children: [
|
|
@@ -56,6 +56,7 @@ function formatCurrency(value) {
|
|
|
56
56
|
}).format(value);
|
|
57
57
|
}
|
|
58
58
|
const SUMMARY_PERIODS = [
|
|
59
|
+
{ value: "all", label: "All time" },
|
|
59
60
|
{ value: "0", label: "Today's orders" },
|
|
60
61
|
{ value: "7", label: "Last 7 days" },
|
|
61
62
|
{ value: "30", label: "Last 30 days" },
|
|
@@ -70,7 +71,7 @@ function OrdersDashboard() {
|
|
|
70
71
|
const [data, setData] = useState(null);
|
|
71
72
|
const [loading, setLoading] = useState(true);
|
|
72
73
|
const [error, setError] = useState(null);
|
|
73
|
-
const [filter, setFilter] = useState("
|
|
74
|
+
const [filter, setFilter] = useState("all");
|
|
74
75
|
const [dailyOrders, setDailyOrders] = useState([]);
|
|
75
76
|
const [overTimePeriod, setOverTimePeriod] = useState("one_week");
|
|
76
77
|
const [overTimeLoading, setOverTimeLoading] = useState(true);
|
|
@@ -138,19 +139,31 @@ function OrdersDashboard() {
|
|
|
138
139
|
return /* @__PURE__ */ jsxs("div", { className: "space-y-8", children: [
|
|
139
140
|
/* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center justify-between gap-4", children: [
|
|
140
141
|
/* @__PURE__ */ jsx(Heading, { level: "h2", children: "Orders" }),
|
|
141
|
-
/* @__PURE__ */
|
|
142
|
-
/* @__PURE__ */
|
|
143
|
-
|
|
144
|
-
|
|
142
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
143
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
144
|
+
/* @__PURE__ */ jsx(Label, { htmlFor: "analytics-period", className: "text-ui-fg-muted text-sm", children: "Period" }),
|
|
145
|
+
/* @__PURE__ */ jsx(
|
|
146
|
+
"select",
|
|
147
|
+
{
|
|
148
|
+
id: "analytics-period",
|
|
149
|
+
value: filter,
|
|
150
|
+
onChange: (e) => setFilter(e.target.value),
|
|
151
|
+
className: "h-9 rounded-md border border-ui-border-base bg-transparent px-3 text-sm text-ui-fg-base outline-none transition focus:ring-2 focus:ring-ui-fg-interactive",
|
|
152
|
+
children: SUMMARY_PERIODS.map((p) => /* @__PURE__ */ jsx("option", { value: p.value, children: p.label }, p.value))
|
|
153
|
+
}
|
|
154
|
+
)
|
|
155
|
+
] }),
|
|
156
|
+
filter !== "all" && /* @__PURE__ */ jsx(
|
|
157
|
+
"button",
|
|
145
158
|
{
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
children:
|
|
159
|
+
type: "button",
|
|
160
|
+
onClick: () => setFilter("all"),
|
|
161
|
+
className: "text-xs text-ui-fg-muted hover:text-ui-fg-base transition-colors",
|
|
162
|
+
"aria-label": "Show all orders (clear filter)",
|
|
163
|
+
children: "Clear filter"
|
|
151
164
|
}
|
|
152
165
|
)
|
|
153
|
-
] })
|
|
166
|
+
] })
|
|
154
167
|
] }),
|
|
155
168
|
/* @__PURE__ */ jsxs("div", { className: "grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4", children: [
|
|
156
169
|
/* @__PURE__ */ jsxs(Container, { className: "p-4", children: [
|
|
@@ -366,6 +379,7 @@ function CustomersOverTimeTooltip({
|
|
|
366
379
|
);
|
|
367
380
|
}
|
|
368
381
|
const COUNT_DAY_PRESETS = [
|
|
382
|
+
{ value: "all", label: "All time" },
|
|
369
383
|
{ value: "0", label: "Today" },
|
|
370
384
|
{ value: "7", label: "Last 7 days" },
|
|
371
385
|
{ value: "30", label: "Last 30 days" },
|
|
@@ -382,7 +396,7 @@ function CustomersDashboard() {
|
|
|
382
396
|
const [data, setData] = useState(null);
|
|
383
397
|
const [loading, setLoading] = useState(true);
|
|
384
398
|
const [error, setError] = useState(null);
|
|
385
|
-
const [countDays, setCountDays] = useState("
|
|
399
|
+
const [countDays, setCountDays] = useState("all");
|
|
386
400
|
const [series, setSeries] = useState([]);
|
|
387
401
|
const [graphPeriod, setGraphPeriod] = useState("one_week");
|
|
388
402
|
const [graphLoading, setGraphLoading] = useState(true);
|
|
@@ -442,26 +456,38 @@ function CustomersDashboard() {
|
|
|
442
456
|
return /* @__PURE__ */ jsxs("div", { className: "space-y-8", children: [
|
|
443
457
|
/* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center justify-between gap-4", children: [
|
|
444
458
|
/* @__PURE__ */ jsx(Heading, { level: "h2", children: "Customers" }),
|
|
445
|
-
/* @__PURE__ */
|
|
446
|
-
/* @__PURE__ */
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
459
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
460
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
461
|
+
/* @__PURE__ */ jsx(
|
|
462
|
+
Label,
|
|
463
|
+
{
|
|
464
|
+
htmlFor: "customers-count-period",
|
|
465
|
+
className: "text-ui-fg-muted text-sm",
|
|
466
|
+
children: "Period (counts)"
|
|
467
|
+
}
|
|
468
|
+
),
|
|
469
|
+
/* @__PURE__ */ jsx(
|
|
470
|
+
"select",
|
|
471
|
+
{
|
|
472
|
+
id: "customers-count-period",
|
|
473
|
+
value: countDays,
|
|
474
|
+
onChange: (e) => setCountDays(e.target.value),
|
|
475
|
+
className: "h-9 rounded-md border border-ui-border-base bg-transparent px-3 text-sm text-ui-fg-base outline-none transition focus:ring-2 focus:ring-ui-fg-interactive",
|
|
476
|
+
children: COUNT_DAY_PRESETS.map((p) => /* @__PURE__ */ jsx("option", { value: p.value, children: p.label }, p.value))
|
|
477
|
+
}
|
|
478
|
+
)
|
|
479
|
+
] }),
|
|
480
|
+
countDays !== "all" && /* @__PURE__ */ jsx(
|
|
481
|
+
"button",
|
|
456
482
|
{
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
children:
|
|
483
|
+
type: "button",
|
|
484
|
+
onClick: () => setCountDays("all"),
|
|
485
|
+
className: "text-xs text-ui-fg-muted hover:text-ui-fg-base transition-colors",
|
|
486
|
+
"aria-label": "Show all customers (clear filter)",
|
|
487
|
+
children: "Clear filter"
|
|
462
488
|
}
|
|
463
489
|
)
|
|
464
|
-
] })
|
|
490
|
+
] })
|
|
465
491
|
] }),
|
|
466
492
|
/* @__PURE__ */ jsxs("div", { className: "grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4", children: [
|
|
467
493
|
/* @__PURE__ */ jsxs(Container, { className: "p-4", children: [
|
|
@@ -13,15 +13,16 @@ function toValidDate(value) {
|
|
|
13
13
|
}
|
|
14
14
|
const MIN_DAYS = 1;
|
|
15
15
|
const MAX_DAYS = 365;
|
|
16
|
+
const DAYS_ALL = -1;
|
|
16
17
|
function toDateKey(d) {
|
|
17
18
|
return d.toISOString().slice(0, 10);
|
|
18
19
|
}
|
|
19
20
|
function parseDaysParam(value) {
|
|
20
|
-
if (value === undefined || value === null)
|
|
21
|
-
return
|
|
21
|
+
if (value === "all" || value === undefined || value === null)
|
|
22
|
+
return DAYS_ALL;
|
|
22
23
|
const n = Number(value);
|
|
23
24
|
if (!Number.isInteger(n) || n < MIN_DAYS)
|
|
24
|
-
return MIN_DAYS;
|
|
25
|
+
return n === 0 ? 0 : MIN_DAYS;
|
|
25
26
|
if (n > MAX_DAYS)
|
|
26
27
|
return MAX_DAYS;
|
|
27
28
|
return n;
|
|
@@ -32,10 +33,18 @@ async function GET(req, res) {
|
|
|
32
33
|
const today = new Date();
|
|
33
34
|
today.setUTCHours(0, 0, 0, 0);
|
|
34
35
|
const rangeStart = new Date(today);
|
|
35
|
-
rangeStart.setUTCDate(rangeStart.getUTCDate() - (days - 1));
|
|
36
|
-
rangeStart.setUTCHours(0, 0, 0, 0);
|
|
37
36
|
const rangeEnd = new Date(today);
|
|
38
37
|
rangeEnd.setUTCHours(23, 59, 59, 999);
|
|
38
|
+
if (days === DAYS_ALL) {
|
|
39
|
+
rangeStart.setTime(0);
|
|
40
|
+
}
|
|
41
|
+
else if (days === 0) {
|
|
42
|
+
rangeStart.setUTCHours(0, 0, 0, 0);
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
rangeStart.setUTCDate(rangeStart.getUTCDate() - (days - 1));
|
|
46
|
+
rangeStart.setUTCHours(0, 0, 0, 0);
|
|
47
|
+
}
|
|
39
48
|
try {
|
|
40
49
|
const customerQuery = (0, utils_1.remoteQueryObjectFromString)({
|
|
41
50
|
entryPoint: "customer",
|
|
@@ -91,4 +100,4 @@ async function GET(req, res) {
|
|
|
91
100
|
});
|
|
92
101
|
}
|
|
93
102
|
}
|
|
94
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
103
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2FuYWx5dGljcy9jdXN0b21lcnMtc3VtbWFyeS9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQXNDQSxrQkF3RkM7QUF6SEQscURBSWtDO0FBSWxDLFNBQVMsV0FBVyxDQUFDLEtBQWM7SUFDakMsSUFBSSxLQUFLLFlBQVksSUFBSTtRQUFFLE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUE7SUFDOUUsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDM0QsTUFBTSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDekIsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUM3QyxDQUFDO0lBQ0QsT0FBTyxJQUFJLENBQUE7QUFDYixDQUFDO0FBRUQsTUFBTSxRQUFRLEdBQUcsQ0FBQyxDQUFBO0FBQ2xCLE1BQU0sUUFBUSxHQUFHLEdBQUcsQ0FBQTtBQUNwQixNQUFNLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQTtBQUVuQixTQUFTLFNBQVMsQ0FBQyxDQUFPO0lBQ3hCLE9BQU8sQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUE7QUFDckMsQ0FBQztBQUVELFNBQVMsY0FBYyxDQUFDLEtBQWM7SUFDcEMsSUFBSSxLQUFLLEtBQUssS0FBSyxJQUFJLEtBQUssS0FBSyxTQUFTLElBQUksS0FBSyxLQUFLLElBQUk7UUFBRSxPQUFP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
|
|
@@ -2,33 +2,35 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.GET = GET;
|
|
4
4
|
const utils_1 = require("@medusajs/framework/utils");
|
|
5
|
-
/** Only three status buckets: pending, cancelled, delivered */
|
|
5
|
+
/** Only three status buckets: pending, cancelled, delivered. Delivered = fulfillment.delivered_at set. */
|
|
6
6
|
const STATUS_BUCKETS = ["pending", "cancelled", "delivered"];
|
|
7
|
-
function
|
|
7
|
+
function isCancelled(status) {
|
|
8
8
|
if (status === undefined || status === null || typeof status !== "string")
|
|
9
|
-
return
|
|
9
|
+
return false;
|
|
10
10
|
const s = String(status).trim().toLowerCase();
|
|
11
|
-
|
|
12
|
-
return "cancelled";
|
|
13
|
-
// Medusa "completed" = delivered; also support "fulfilled" / "delivered" if used by custom flows
|
|
14
|
-
if (s === "completed" || s === "fulfilled" || s === "delivered")
|
|
15
|
-
return "delivered";
|
|
16
|
-
return "pending";
|
|
11
|
+
return s === "canceled" || s === "cancelled";
|
|
17
12
|
}
|
|
18
|
-
function
|
|
19
|
-
|
|
13
|
+
function hasDeliveredFulfillment(fulfillments) {
|
|
14
|
+
if (!fulfillments || !Array.isArray(fulfillments))
|
|
15
|
+
return false;
|
|
16
|
+
return fulfillments.some((f) => toValidDate(f.delivered_at) !== null);
|
|
17
|
+
}
|
|
18
|
+
function isPendingStatus(simple) {
|
|
19
|
+
return simple === "pending";
|
|
20
20
|
}
|
|
21
21
|
const MIN_DAYS = 1;
|
|
22
22
|
const MAX_DAYS = 365;
|
|
23
|
+
/** Sentinel for "all time" / no date filter */
|
|
24
|
+
const DAYS_ALL = -1;
|
|
23
25
|
function toDateKey(d) {
|
|
24
26
|
return d.toISOString().slice(0, 10);
|
|
25
27
|
}
|
|
26
28
|
function parseDaysParam(value) {
|
|
27
|
-
if (value === undefined || value === null)
|
|
28
|
-
return
|
|
29
|
+
if (value === "all" || value === undefined || value === null)
|
|
30
|
+
return DAYS_ALL;
|
|
29
31
|
const n = Number(value);
|
|
30
32
|
if (!Number.isInteger(n) || n < MIN_DAYS)
|
|
31
|
-
return MIN_DAYS;
|
|
33
|
+
return n === 0 ? 0 : MIN_DAYS;
|
|
32
34
|
if (n > MAX_DAYS)
|
|
33
35
|
return MAX_DAYS;
|
|
34
36
|
return n;
|
|
@@ -49,14 +51,22 @@ async function GET(req, res) {
|
|
|
49
51
|
const today = new Date();
|
|
50
52
|
today.setUTCHours(0, 0, 0, 0);
|
|
51
53
|
const todayKey = toDateKey(today);
|
|
52
|
-
// Date range
|
|
54
|
+
// Date range: days=all = lifetime (no filter), 0 = today, 7/30/90 = last N days
|
|
53
55
|
const rangeStart = new Date(today);
|
|
54
|
-
rangeStart.setUTCDate(rangeStart.getUTCDate() - (days - 1));
|
|
55
|
-
rangeStart.setUTCHours(0, 0, 0, 0);
|
|
56
56
|
const rangeEnd = new Date(today);
|
|
57
57
|
rangeEnd.setUTCHours(23, 59, 59, 999);
|
|
58
|
+
if (days === DAYS_ALL) {
|
|
59
|
+
rangeStart.setTime(0); // epoch start for lifetime
|
|
60
|
+
}
|
|
61
|
+
else if (days === 0) {
|
|
62
|
+
rangeStart.setUTCHours(0, 0, 0, 0);
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
rangeStart.setUTCDate(rangeStart.getUTCDate() - (days - 1));
|
|
66
|
+
rangeStart.setUTCHours(0, 0, 0, 0);
|
|
67
|
+
}
|
|
58
68
|
try {
|
|
59
|
-
const fields = ["id", "status", "total", "created_at", "fulfillments.shipped_at"];
|
|
69
|
+
const fields = ["id", "status", "total", "created_at", "fulfillments.shipped_at", "fulfillments.delivered_at"];
|
|
60
70
|
let queryObject = (0, utils_1.remoteQueryObjectFromString)({
|
|
61
71
|
entryPoint: "order",
|
|
62
72
|
fields,
|
|
@@ -97,14 +107,18 @@ async function GET(req, res) {
|
|
|
97
107
|
createdAt <= rangeEnd;
|
|
98
108
|
if (!inRange)
|
|
99
109
|
continue;
|
|
100
|
-
const
|
|
101
|
-
|
|
110
|
+
const fulfillments = o.fulfillments ?? [];
|
|
111
|
+
// Delivered = at least one fulfillment has delivered_at set (from fulfillment table)
|
|
112
|
+
const simple = isCancelled(o.status)
|
|
113
|
+
? "cancelled"
|
|
114
|
+
: hasDeliveredFulfillment(fulfillments)
|
|
115
|
+
? "delivered"
|
|
116
|
+
: "pending";
|
|
102
117
|
statusCounts[simple] = (statusCounts[simple] ?? 0) + 1;
|
|
103
118
|
totalOrders += 1;
|
|
104
119
|
if (typeof o.id === "string" && o.id) {
|
|
105
120
|
orderIdsInRange.add(o.id);
|
|
106
121
|
}
|
|
107
|
-
const fulfillments = o.fulfillments ?? [];
|
|
108
122
|
// Total revenue and AOV: only include non-cancelled orders
|
|
109
123
|
if (simple !== "cancelled") {
|
|
110
124
|
const total = typeof o.total === "number" ? o.total : 0;
|
|
@@ -113,7 +127,7 @@ async function GET(req, res) {
|
|
|
113
127
|
}
|
|
114
128
|
if (dateKey === todayKey)
|
|
115
129
|
ordersTodayCount += 1;
|
|
116
|
-
if (isPendingStatus(
|
|
130
|
+
if (isPendingStatus(simple))
|
|
117
131
|
pendingOrders += 1;
|
|
118
132
|
for (const f of fulfillments) {
|
|
119
133
|
const shippedAt = toValidDate(f.shipped_at);
|
|
@@ -193,4 +207,4 @@ async function GET(req, res) {
|
|
|
193
207
|
});
|
|
194
208
|
}
|
|
195
209
|
}
|
|
196
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2FuYWx5dGljcy9vcmRlcnMtc3VtbWFyeS9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQXdEQSxrQkFxTUM7QUF2UEQscURBSWtDO0FBSWxDLCtEQUErRDtBQUMvRCxNQUFNLGNBQWMsR0FBRyxDQUFDLFNBQVMsRUFBRSxXQUFXLEVBQUUsV0FBVyxDQUFVLENBQUE7QUFFckUsU0FBUyxjQUFjLENBQUMsTUFBMEI7SUFDaEQsSUFBSSxNQUFNLEtBQUssU0FBUyxJQUFJLE1BQU0sS0FBSyxJQUFJLElBQUksT0FBTyxNQUFNLEtBQUssUUFBUTtRQUFFLE9BQU8sU0FBUyxDQUFBO0lBQzNGLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQTtJQUM3QyxJQUFJLENBQUMsS0FBSyxVQUFVLElBQUksQ0FBQyxLQUFLLFdBQVc7UUFBRSxPQUFPLFdBQVcsQ0FBQTtJQUM3RCxpR0FBaUc7SUFDakcsSUFBSSxDQUFDLEtBQUssV0FBVyxJQUFJLENBQUMsS0FBSyxXQUFXLElBQUksQ0FBQyxLQUFLLFdBQVc7UUFBRSxPQUFPLFdBQVcsQ0FBQTtJQUNuRixPQUFPLFNBQVMsQ0FBQTtBQUNsQixDQUFDO0FBRUQsU0FBUyxlQUFlLENBQUMsTUFBMEI7SUFDakQsT0FBTyxjQUFjLENBQUMsTUFBTSxDQUFDLEtBQUssU0FBUyxDQUFBO0FBQzdDLENBQUM7QUFFRCxNQUFNLFFBQVEsR0FBRyxDQUFDLENBQUE7QUFDbEIsTUFBTSxRQUFRLEdBQUcsR0FBRyxDQUFBO0FBRXBCLFNBQVMsU0FBUyxDQUFDLENBQU87SUFDeEIsT0FBTyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQTtBQUNyQyxDQUFDO0FB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
|
|
210
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2FuYWx5dGljcy9vcmRlcnMtc3VtbWFyeS9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQTREQSxrQkE4TUM7QUFwUUQscURBSWtDO0FBSWxDLDBHQUEwRztBQUMxRyxNQUFNLGNBQWMsR0FBRyxDQUFDLFNBQVMsRUFBRSxXQUFXLEVBQUUsV0FBVyxDQUFVLENBQUE7QUFFckUsU0FBUyxXQUFXLENBQUMsTUFBMEI7SUFDN0MsSUFBSSxNQUFNLEtBQUssU0FBUyxJQUFJLE1BQU0sS0FBSyxJQUFJLElBQUksT0FBTyxNQUFNLEtBQUssUUFBUTtRQUFFLE9BQU8sS0FBSyxDQUFBO0lBQ3ZGLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQTtJQUM3QyxPQUFPLENBQUMsS0FBSyxVQUFVLElBQUksQ0FBQyxLQUFLLFdBQVcsQ0FBQTtBQUM5QyxDQUFDO0FBRUQsU0FBUyx1QkFBdUIsQ0FBQyxZQUF3RTtJQUN2RyxJQUFJLENBQUMsWUFBWSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUM7UUFBRSxPQUFPLEtBQUssQ0FBQTtJQUMvRCxPQUFPLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUE7QUFDdkUsQ0FBQztBQUVELFNBQVMsZUFBZSxDQUFDLE1BQXVDO0lBQzlELE9BQU8sTUFBTSxLQUFLLFNBQVMsQ0FBQTtBQUM3QixDQUFDO0FBRUQsTUFBTSxRQUFRLEdBQUcsQ0FBQyxDQUFBO0FBQ2xCLE1BQU0sUUFBUSxHQUFHLEdBQUcsQ0FBQTtBQUNwQiwrQ0FBK0M7QUFDL0MsTUFBTSxRQUFRLEdBQUcs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
|