@rsc-labs/medusa-store-analytics-v2
Version:
Get analytics data about your store
116 lines • 16 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.SelectDateLasts = exports.DropdownOrderStatus = exports.SwitchComparison = exports.ComparedDate = exports.GenerateReportButton = 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 react_1 = require("react");
const ui_1 = require("@medusajs/ui");
const icons_1 = require("@medusajs/icons");
const material_1 = require("@mui/material");
const types_1 = require("../utils/types");
const ui_2 = require("@medusajs/ui");
const GenerateReportButton = ({ orderStatuses, dateRange, dateRangeCompareTo, compareEnabled }) => {
const [loadingButton, setLoadingStatus] = (0, react_1.useState)(false);
const generate = async () => {
const id = ui_2.toast.loading("Report", {
description: "Generating report...",
duration: Infinity
});
setLoadingStatus(true);
fetch(`/admin/reports-analytics/general`, {
method: "POST",
credentials: "include",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({
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,
})
}).then((res) => res.json())
.then((responseJson) => {
if (responseJson.buffer) {
const anyBuffer = responseJson.buffer;
const blob = new Blob([new Uint8Array(anyBuffer.data)], { type: 'application/pdf' });
ui_2.toast.dismiss();
setLoadingStatus(false);
const pdfURL = URL.createObjectURL(blob);
window.open(pdfURL, '_blank');
}
else {
ui_2.toast.dismiss();
setLoadingStatus(false);
ui_2.toast.error("Report", {
description: 'Problem happened when generating report',
});
}
setLoadingStatus(false);
})
.catch((error) => {
ui_2.toast.dismiss();
setLoadingStatus(false);
const trueError = error;
ui_2.toast.error("Report", {
description: trueError?.response?.data?.message,
});
});
};
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [loadingButton && (0, jsx_runtime_1.jsx)(ui_1.Button, { variant: "secondary", disabled: true, style: { width: 180 }, children: "Generating" }), !loadingButton && (0, jsx_runtime_1.jsxs)(ui_1.Button, { variant: "secondary", onClick: generate, style: { width: 180 }, children: ["Generate report", (0, jsx_runtime_1.jsx)(ui_1.Badge, { rounded: "full", size: "2xsmall", color: "green", children: "Beta" })] })] }));
};
exports.GenerateReportButton = GenerateReportButton;
const ComparedDate = ({ compare, comparedToDateRange }) => {
if (comparedToDateRange && compare) {
return ((0, jsx_runtime_1.jsx)(ui_1.Text, { children: `Compared to ${comparedToDateRange.from.toLocaleDateString()} - ${comparedToDateRange.to.toLocaleDateString()}` }));
}
return ((0, jsx_runtime_1.jsx)(ui_1.Text, { children: `No comparison` }));
};
exports.ComparedDate = ComparedDate;
const SwitchComparison = ({ compareEnabled, onCheckChange, allTime }) => {
return ((0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-x-2", children: [(0, jsx_runtime_1.jsx)(ui_1.Switch, { id: "manage-inventory", onCheckedChange: onCheckChange, disabled: allTime, checked: compareEnabled && !allTime }), (0, jsx_runtime_1.jsx)(ui_1.Label, { htmlFor: "manage-inventory", children: "Compare" })] }));
};
exports.SwitchComparison = SwitchComparison;
const DropdownOrderStatus = ({ onOrderStatusChange, appliedStatuses }) => {
const [isDropdownOpen, setIsDropdownOpen] = (0, react_1.useState)(false);
const [selectedStatuses, setSelectedStatuses] = (0, react_1.useState)([]);
const handleStatusToggle = (status) => {
setSelectedStatuses((prevSelectedStatuses) => prevSelectedStatuses.includes(status)
? prevSelectedStatuses.filter((selected) => selected !== status)
: [...prevSelectedStatuses, status]);
};
const handleApplyClick = () => {
// Close the dropdown when Apply is clicked
setIsDropdownOpen(false);
onOrderStatusChange(selectedStatuses.map(selectedStatus => types_1.OrderStatus[selectedStatus.toUpperCase()]));
};
return ((0, jsx_runtime_1.jsxs)(ui_2.DropdownMenu, { open: isDropdownOpen, onOpenChange: (isOpen) => {
if (isOpen) {
setSelectedStatuses(Object.values(appliedStatuses));
}
setIsDropdownOpen(isOpen);
}, children: [(0, jsx_runtime_1.jsx)(ui_2.DropdownMenu.Trigger, { asChild: true, children: (0, jsx_runtime_1.jsx)(ui_1.IconButton, { children: (0, jsx_runtime_1.jsx)(icons_1.Adjustments, {}) }) }), (0, jsx_runtime_1.jsxs)(ui_2.DropdownMenu.Content, { children: [(0, jsx_runtime_1.jsx)(ui_2.DropdownMenu.Label, { className: "gap-x-2", style: { paddingLeft: 8, paddingBottom: 8 }, children: (0, jsx_runtime_1.jsx)(ui_1.Heading, { level: 'h3', children: "Choose orders" }) }), Object.values(types_1.OrderStatus).map(orderStatus => ((0, jsx_runtime_1.jsxs)(ui_2.DropdownMenu.Item, { className: "gap-x-2", onSelect: event => event.preventDefault(), children: [(0, jsx_runtime_1.jsx)(ui_1.Checkbox, { id: `order-status-${orderStatus}`, checked: selectedStatuses.includes(orderStatus), onCheckedChange: () => handleStatusToggle(orderStatus) }), (0, jsx_runtime_1.jsx)(ui_1.Label, { htmlFor: `order-status-${orderStatus}`, children: orderStatus })] }, orderStatus.toString()))), (0, jsx_runtime_1.jsx)(ui_2.DropdownMenu.Label, { className: "gap-x-2", children: (0, jsx_runtime_1.jsx)(ui_1.Button, { onClick: handleApplyClick, children: "Apply" }) })] })] }));
};
exports.DropdownOrderStatus = DropdownOrderStatus;
const SelectDateLasts = ({ dateLast, onSelectChange }) => {
const dateLastsToSelect = [
types_1.DateLasts.LastWeek,
types_1.DateLasts.LastMonth,
types_1.DateLasts.LastYear,
types_1.DateLasts.All
];
return ((0, jsx_runtime_1.jsx)("div", { className: "w-[170px]", children: (0, jsx_runtime_1.jsxs)(ui_1.Select, { size: "small", onValueChange: onSelectChange, value: dateLast, children: [(0, jsx_runtime_1.jsx)(ui_1.Select.Trigger, { style: { height: '2rem' }, children: (0, jsx_runtime_1.jsx)(ui_1.Select.Value, { placeholder: "Select a date range" }) }), (0, jsx_runtime_1.jsx)(ui_1.Select.Content, { children: dateLastsToSelect.map((dateToSelect) => ((0, jsx_runtime_1.jsx)(ui_1.Select.Item, { value: dateToSelect, children: dateToSelect == types_1.DateLasts.All ? ((0, jsx_runtime_1.jsxs)(material_1.Grid, { container: true, spacing: 1, children: [(0, jsx_runtime_1.jsx)(material_1.Grid, { item: true, children: dateToSelect }), (0, jsx_runtime_1.jsx)(material_1.Grid, { item: true, children: (0, jsx_runtime_1.jsx)(ui_1.TooltipProvider, { children: (0, jsx_runtime_1.jsx)(ui_1.Tooltip, { content: 'If you have many orders, it might take a while to load statistics.', children: (0, jsx_runtime_1.jsx)(icons_1.ExclamationCircle, {}) }) }) })] })) : dateToSelect }, dateToSelect))) })] }) }));
};
exports.SelectDateLasts = SelectDateLasts;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcnZpZXctY29tcG9uZW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy91aS1jb21wb25lbnRzL2NvbW1vbi9vdmVydmlldy1jb21wb25lbnRzLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUE7Ozs7Ozs7Ozs7R0FVRztBQUVILGlDQUFpQztBQUNqQyxxQ0FBbUk7QUFDbkksMkNBQWdFO0FBQ2hFLDRDQUFxQztBQUNyQywwQ0FBd0Q7QUFFeEQscUNBQWtEO0FBRTNDLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxFQUFDLGFBQWEsRUFBRSxTQUFTLEVBQUUsa0JBQWtCLEVBQUUsY0FBYyxFQUNjLEVBQUUsRUFBRTtJQUVsSCxNQUFNLENBQUUsYUFBYSxFQUFFLGdCQUFnQixDQUFFLEdBQUUsSUFBQSxnQkFBUSxFQUFDLEtBQUssQ0FBQyxDQUFDO0lBRTNELE1BQU0sUUFBUSxHQUFHLEtBQUssSUFBSSxFQUFFO1FBQzFCLE1BQU0sRUFBRSxHQUFHLFVBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFO1lBQ2pDLFdBQVcsRUFBRSxzQkFBc0I7WUFDbkMsUUFBUSxFQUFFLFFBQVE7U0FDbkIsQ0FBQyxDQUFBO1FBRUYsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFdkIsS0FBSyxDQUFDLGtDQUFrQyxFQUFFO1lBQ3hDLE1BQU0sRUFBRSxNQUFNO1lBQ2QsV0FBVyxFQUFFLFNBQVM7WUFDdEIsT0FBTyxFQUFFO2dCQUNQLGNBQWMsRUFBRSxrQkFBa0I7YUFDbkM7WUFDRCxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQztnQkFDbkIsYUFBYSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDO2dCQUMzQyxhQUFhLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTO2dCQUMvRCxXQUFXLEVBQUUs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