@rsc-labs/medusa-store-analytics-v2
Version:
Get analytics data about your store
76 lines (75 loc) • 2.95 kB
JavaScript
import { jsx, jsxs, Fragment } from "react/jsx-runtime";
import { Alert, Heading } from "@medusajs/ui";
import { CircularProgress } from "@mui/material";
import { ChartCurrentPrevious } from "../common/chart-components.js";
import { deduceDateUrlParams } from "../utils/helpers.js";
import { useState, useEffect } from "react";
const OrdersByNewChart = ({ orderStatuses, dateRange, dateRangeCompareTo, compareEnabled }) => {
var _a, _b;
const [data, setData] = useState(void 0);
const [error, setError] = useState(void 0);
const [isLoading, setLoading] = useState(true);
useEffect(() => {
setLoading(true);
}, [dateRange, dateRangeCompareTo, orderStatuses]);
useEffect(() => {
if (!isLoading) {
return;
}
fetch(`/admin/orders-analytics/history?${deduceDateUrlParams(dateRange, dateRangeCompareTo, orderStatuses).toString()}`, {
credentials: "include"
}).then((res) => res.json()).then((result) => {
setData(result);
setLoading(false);
}).catch((error2) => {
setError(error2);
console.error(error2);
});
}, [isLoading]);
if (isLoading) {
return /* @__PURE__ */ jsx(CircularProgress, { size: 12 });
}
if (error) {
const trueError = error;
const errorText = `Error when loading data. It shouldn't have happened - please raise an issue. For developer: ${(_b = (_a = trueError == null ? void 0 : trueError.response) == null ? void 0 : _a.data) == null ? void 0 : _b.message}`;
return /* @__PURE__ */ jsx(Alert, { variant: "error", children: errorText });
}
if (data == void 0 || data.analytics == void 0) {
return /* @__PURE__ */ jsx(Heading, { level: "h3", children: "Cannot get orders" });
}
if (data.analytics.dateRangeFrom && data.analytics.dateRangeTo) {
const rawChartData = {
current: data.analytics.current.map((currentData) => {
return {
date: new Date(currentData.date),
value: currentData.orderCount
};
}),
previous: data.analytics.previous.map((previousData) => {
return {
date: new Date(previousData.date),
value: previousData.orderCount
};
})
};
return /* @__PURE__ */ jsxs(Fragment, { children: [
/* @__PURE__ */ jsx(Heading, { level: "h3", children: "New orders by time" }),
/* @__PURE__ */ jsx(
ChartCurrentPrevious,
{
rawChartData,
fromDate: new Date(data.analytics.dateRangeFrom),
toDate: new Date(data.analytics.dateRangeTo),
fromCompareDate: data.analytics.dateRangeFromCompareTo ? new Date(data.analytics.dateRangeFromCompareTo) : void 0,
toCompareDate: data.analytics.dateRangeToCompareTo ? new Date(data.analytics.dateRangeToCompareTo) : void 0,
compareEnabled
}
)
] });
} else {
return /* @__PURE__ */ jsx(Heading, { level: "h3", children: "No orders" });
}
};
export {
OrdersByNewChart
};