UNPKG

@rsc-labs/medusa-store-analytics

Version:
59 lines (58 loc) 5.29 kB
"use strict"; 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 medusa_react_1 = require("medusa-react"); const sales_total_chart_1 = require("./sales-total-chart"); const medusa_react_2 = require("medusa-react"); const SalesDetails = ({ orderStatuses, currencyCode, dateRange, dateRangeCompareTo, compareEnabled }) => { var _a, _b; const { data, isLoading, isError, error } = (0, medusa_react_2.useAdminCustomQuery)(`/sales-analytics/history`, [orderStatuses, currencyCode, dateRange, dateRangeCompareTo], { orderStatuses: Object.values(orderStatuses), dateRangeFrom: dateRange ? dateRange.from.getTime() : undefined, dateRangeTo: dateRange ? dateRange.to.getTime() : undefined, dateRangeFromCompareTo: dateRangeCompareTo ? dateRangeCompareTo.from.getTime() : undefined, dateRangeToCompareTo: dateRangeCompareTo ? dateRangeCompareTo.to.getTime() : undefined, currencyCode: currencyCode }); if (isLoading) { return (0, jsx_runtime_1.jsx)(material_1.CircularProgress, { size: 12 }); } if (isError) { const trueError = error; const errorText = `Error when loading data. It shouldn't have happened - please raise an issue. For developer: ${(_b = (_a = trueError === null || trueError === void 0 ? void 0 : trueError.response) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.message}`; return (0, jsx_runtime_1.jsx)(ui_1.Alert, { variant: "error", children: errorText }); } if (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.analytics.dateRangeFrom) { 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, { 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 { regions, isLoading } = (0, medusa_react_1.useAdminRegions)(); const [value, setValue] = (0, react_1.useState)(); 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;