@rsc-labs/medusa-store-analytics-v2
Version:
Get analytics data about your store
93 lines • 12.5 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.SalesOverviewCard = void 0;
const jsx_runtime_1 = require("react/jsx-runtime");
/*
* Copyright 2024 RSC-Labs, https://rsoftcon.com/
*
* MIT License
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
const ui_1 = require("@medusajs/ui");
const icons_1 = require("@medusajs/icons");
const material_1 = require("@mui/material");
const sales_number_overview_1 = require("./sales-number-overview");
const react_1 = require("react");
const sales_total_chart_1 = require("./sales-total-chart");
const helpers_1 = require("../utils/helpers");
const SalesDetails = ({ orderStatuses, currencyCode, dateRange, dateRangeCompareTo, compareEnabled }) => {
const [data, setData] = (0, react_1.useState)(undefined);
const [error, setError] = (0, react_1.useState)(undefined);
const [isLoading, setLoading] = (0, react_1.useState)(true);
(0, react_1.useEffect)(() => {
setLoading(true);
}, [dateRange, dateRangeCompareTo, orderStatuses, currencyCode]);
(0, react_1.useEffect)(() => {
if (!isLoading) {
return;
}
const searchParams = (0, helpers_1.deduceDateUrlParams)(dateRange, dateRangeCompareTo, orderStatuses);
searchParams.append('currencyCode', currencyCode);
fetch(`/admin/sales-analytics/history?${searchParams.toString()}`, {
credentials: "include",
})
.then((res) => res.json())
.then((result) => {
setData(result);
setLoading(false);
})
.catch((error) => {
setError(error);
console.error(error);
});
}, [isLoading]);
if (isLoading) {
return (0, jsx_runtime_1.jsx)(material_1.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: ${trueError?.response?.data?.message}`;
return (0, jsx_runtime_1.jsx)(ui_1.Alert, { variant: "error", children: errorText });
}
if (data && data.analytics == undefined) {
return ((0, jsx_runtime_1.jsx)(material_1.Grid, { item: true, xs: 12, md: 12, children: (0, jsx_runtime_1.jsx)(ui_1.Heading, { level: "h3", children: "Cannot get orders" }) }));
}
if (data && data.analytics.dateRangeFrom && data.analytics.dateRangeTo) {
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(material_1.Grid, { item: true, xs: 12, md: 12, children: (0, jsx_runtime_1.jsx)(sales_number_overview_1.SalesNumber, { salesHistoryResponse: data, compareEnabled: compareEnabled }) }), (0, jsx_runtime_1.jsx)(material_1.Grid, { item: true, xs: 12, md: 12, children: (0, jsx_runtime_1.jsx)(sales_total_chart_1.SalesByNewChart, { dateRangeFrom: new Date(data.analytics.dateRangeFrom), dateRangeTo: new Date(data.analytics.dateRangeTo), salesHistoryResponse: data, compareEnabled: compareEnabled }) })] }));
}
else {
return ((0, jsx_runtime_1.jsx)(material_1.Grid, { item: true, xs: 12, md: 12, children: (0, jsx_runtime_1.jsx)(ui_1.Heading, { level: "h3", children: "No orders" }) }));
}
};
const SalesOverviewCard = ({ orderStatuses, dateRange, dateRangeCompareTo, compareEnabled }) => {
const [value, setValue] = (0, react_1.useState)();
const [regions, setRegions] = (0, react_1.useState)(undefined);
const [error, setError] = (0, react_1.useState)(undefined);
const [isLoading, setLoading] = (0, react_1.useState)(true);
(0, react_1.useEffect)(() => {
if (!isLoading) {
return;
}
fetch(`/admin/regions/`, {
credentials: "include",
})
.then((res) => res.json())
.then((result) => {
setRegions(result.regions);
setLoading(false);
})
.catch((error) => {
setError(error);
console.error(error);
});
}, [isLoading]);
return ((0, jsx_runtime_1.jsxs)(material_1.Grid, { container: true, paddingBottom: 2, spacing: 3, children: [(0, jsx_runtime_1.jsx)(material_1.Grid, { item: true, xs: 12, md: 12, children: (0, jsx_runtime_1.jsxs)(material_1.Grid, { container: true, spacing: 2, alignItems: 'center', children: [(0, jsx_runtime_1.jsx)(material_1.Grid, { item: true, children: (0, jsx_runtime_1.jsx)(icons_1.CurrencyDollar, {}) }), (0, jsx_runtime_1.jsx)(material_1.Grid, { item: true, children: (0, jsx_runtime_1.jsx)(ui_1.Heading, { level: "h2", children: "Total sales" }) }), (0, jsx_runtime_1.jsx)(material_1.Grid, { item: true, children: (0, jsx_runtime_1.jsx)("div", { className: "w-[256px]", children: (0, jsx_runtime_1.jsxs)(ui_1.Select, { size: "small", onValueChange: setValue, value: value, children: [(0, jsx_runtime_1.jsx)(ui_1.Select.Trigger, { children: (0, jsx_runtime_1.jsx)(ui_1.Select.Value, { placeholder: "Select a currency" }) }), (0, jsx_runtime_1.jsxs)(ui_1.Select.Content, { children: [isLoading && (0, jsx_runtime_1.jsx)(material_1.CircularProgress, {}), regions && !regions.length && (0, jsx_runtime_1.jsx)(ui_1.Text, { children: "No regions" }), regions && regions.length > 0 && [...new Set(regions.map(region => region.currency_code))].map((currencyCode) => ((0, jsx_runtime_1.jsx)(ui_1.Select.Item, { value: currencyCode, children: currencyCode.toUpperCase() }, currencyCode)))] })] }) }) })] }) }), value ? (0, jsx_runtime_1.jsx)(SalesDetails, { orderStatuses: orderStatuses, currencyCode: value, dateRange: dateRange, dateRangeCompareTo: dateRangeCompareTo, compareEnabled: compareEnabled }) :
(0, jsx_runtime_1.jsx)(material_1.Grid, { item: true, children: (0, jsx_runtime_1.jsx)(ui_1.Heading, { level: "h2", children: "Please select a currency" }) })] }));
};
exports.SalesOverviewCard = SalesOverviewCard;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FsZXMtb3ZlcnZpZXctY2FyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy91aS1jb21wb25lbnRzL3NhbGVzL3NhbGVzLW92ZXJ2aWV3LWNhcmQudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQTs7Ozs7Ozs7OztHQVVHO0FBRUgscUNBQTREO0FBQzVELDJDQUFpRDtBQUNqRCw0Q0FBdUQ7QUFFdkQsbUVBQXNEO0FBQ3RELGlDQUE0QztBQUM1QywyREFBc0Q7QUFFdEQsOENBQXVEO0FBR3ZELE1BQU0sWUFBWSxHQUFHLENBQUMsRUFBQyxhQUFhLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxrQkFBa0IsRUFBRSxjQUFjLEVBQ3NDLEVBQUUsRUFBRTtJQUV6SSxNQUFNLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxHQUFHLElBQUEsZ0JBQVEsRUFBbUMsU0FBUyxDQUFDLENBQUE7SUFFN0UsTUFBTSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsR0FBRyxJQUFBLGdCQUFRLEVBQU0sU0FBUyxDQUFDLENBQUM7SUFFbkQsTUFBTSxDQUFDLFNBQVMsRUFBRSxVQUFVLENBQUMsR0FBRyxJQUFBLGdCQUFRLEVBQUMsSUFBSSxDQUFDLENBQUE7SUFFOUMsSUFBQSxpQkFBUyxFQUFDLEdBQUcsRUFBRTtRQUNiLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNuQixDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsa0JBQWtCLEVBQUUsYUFBYSxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUE7SUFFaEUsSUFBQSxpQkFBUyxFQUFDLEdBQUcsRUFBRTtRQUNiLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNmLE9BQU87UUFDVCxDQUFDO1FBRUQsTUFBTSxZQUFZLEdBQUcsSUFBQSw2QkFBbUIsRUFBQyxTQUFTLEVBQUUsa0JBQWtCLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDdkYsWUFBWSxDQUFDLE1BQU0sQ0FB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