@rsc-labs/medusa-store-analytics-v2
Version:
Get analytics data about your store
106 lines (105 loc) • 3.69 kB
JavaScript
import { DateLasts } from "./types.js";
function amountToDisplay(amount, decimalDigits) {
return (amount / Math.pow(10, decimalDigits)).toFixed(decimalDigits);
}
function calculatePercentage(current, previous) {
if (current == previous) {
return 0;
}
if (current == 0) {
return 100;
}
if (previous == 0) {
return void 0;
}
const percentage = Number(((current - previous) / previous).toFixed(2)) * 100;
if (percentage > 0) {
return Math.round(percentage * 100) / 100;
}
return Math.round((percentage - percentage - percentage) * 100) / 100;
}
function convertDateLastsToDateRange(dateLasts) {
let result;
switch (dateLasts) {
case DateLasts.LastMonth:
result = {
// 86400000 - alignment for taking last 29 days, as the current day is 30
from: new Date(new Date((/* @__PURE__ */ new Date()).setDate((/* @__PURE__ */ new Date()).getDate() - 29)).setHours(0, 0, 0, 0)),
to: new Date(Date.now())
};
break;
case DateLasts.LastWeek:
result = {
// 86400000 - alignment for taking last 6 days, as the current day is 7th
from: new Date(new Date(new Date(Date.now() - 6048e5 + 864e5)).setHours(0, 0, 0, 0)),
to: new Date(Date.now())
};
break;
case DateLasts.LastYear:
new Date((/* @__PURE__ */ new Date()).setFullYear((/* @__PURE__ */ new Date()).getFullYear() - 1));
result = {
// + 1 - alignment for taking last 11 months, as the current month is 12th
from: new Date(new Date((/* @__PURE__ */ new Date()).setDate((/* @__PURE__ */ new Date()).getDate() - 364)).setHours(0, 0, 0, 0)),
to: new Date(Date.now())
};
break;
}
return result;
}
function convertDateLastsToComparedDateRange(dateLasts) {
let result;
switch (dateLasts) {
case DateLasts.LastMonth:
result = {
from: new Date(new Date((/* @__PURE__ */ new Date()).setDate((/* @__PURE__ */ new Date()).getDate() - 59)).setHours(0, 0, 0, 0)),
to: new Date(new Date((/* @__PURE__ */ new Date()).setDate((/* @__PURE__ */ new Date()).getDate() - 29)).setHours(0, 0, 0, 0))
};
break;
case DateLasts.LastWeek:
result = {
from: new Date(new Date(Date.now() - 6048e5 * 2 + 864e5).setHours(0, 0, 0, 0)),
to: new Date(new Date(Date.now() - 6048e5 + 864e5).setHours(0, 0, 0, 0))
};
break;
case DateLasts.LastYear:
result = {
from: new Date(new Date((/* @__PURE__ */ new Date()).setDate((/* @__PURE__ */ new Date()).getDate() - 729)).setHours(0, 0, 0, 0)),
to: new Date(new Date((/* @__PURE__ */ new Date()).setDate((/* @__PURE__ */ new Date()).getDate() - 364)).setHours(0, 0, 0, 0))
};
break;
}
return result;
}
function deduceDateUrlParams(dateRange, dateRangeCompareTo, orderStatuses) {
let dateRangeParams = {};
let dateRangeCompareToParams = {};
if (dateRange) {
dateRangeParams = {
dateRangeFrom: dateRange.from.getTime().toString(),
dateRangeTo: dateRange.to.getTime().toString()
};
}
if (dateRangeCompareTo) {
dateRangeCompareToParams = {
dateRangeFromCompareTo: dateRangeCompareTo.from.getTime().toString(),
dateRangeToCompareTo: dateRangeCompareTo.to.getTime().toString()
};
}
const result = new URLSearchParams({
...dateRangeParams,
...dateRangeCompareToParams
});
if (orderStatuses) {
for (const orderStatus of orderStatuses) {
result.append("orderStatuses", orderStatus.toString());
}
}
return result;
}
export {
amountToDisplay,
calculatePercentage,
convertDateLastsToComparedDateRange,
convertDateLastsToDateRange,
deduceDateUrlParams
};