@rsc-labs/medusa-store-analytics
Version:
Get analytics data about your store
91 lines (90 loc) • 3.78 kB
JavaScript
"use strict";
/*
* 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.
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.convertDateLastsToComparedDateRange = exports.convertDateLastsToDateRange = exports.calculatePercentage = exports.amountToDisplay = void 0;
const types_1 = require("./types");
function amountToDisplay(amount, decimalDigits) {
return (amount / Math.pow(10, decimalDigits)).toFixed(decimalDigits);
}
exports.amountToDisplay = amountToDisplay;
function calculatePercentage(current, previous) {
if (current == previous) {
return 0;
}
if (current == 0) {
return 100;
}
if (previous == 0) {
return undefined;
}
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;
}
exports.calculatePercentage = calculatePercentage;
function convertDateLastsToDateRange(dateLasts) {
let result;
switch (dateLasts) {
case types_1.DateLasts.LastMonth:
result = {
// 86400000 - alignment for taking last 29 days, as the current day is 30
from: new Date(new Date(new Date().setDate(new Date().getDate() - 29)).setHours(0, 0, 0, 0)),
to: new Date(Date.now())
};
break;
case types_1.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() - 604800000 + 86400000)).setHours(0, 0, 0, 0)),
to: new Date(Date.now())
};
break;
case types_1.DateLasts.LastYear:
const lastYearAgo = new Date(new Date().setFullYear(new Date().getFullYear() - 1));
result = {
// + 1 - alignment for taking last 11 months, as the current month is 12th
from: new Date(new Date(new Date().setDate(new Date().getDate() - 364)).setHours(0, 0, 0, 0)),
to: new Date(Date.now())
};
break;
}
return result;
}
exports.convertDateLastsToDateRange = convertDateLastsToDateRange;
function convertDateLastsToComparedDateRange(dateLasts) {
let result;
switch (dateLasts) {
case types_1.DateLasts.LastMonth:
result = {
from: new Date(new Date(new Date().setDate(new Date().getDate() - 59)).setHours(0, 0, 0, 0)),
to: new Date(new Date(new Date().setDate(new Date().getDate() - 29)).setHours(0, 0, 0, 0)),
};
break;
case types_1.DateLasts.LastWeek:
result = {
from: new Date(new Date(Date.now() - 604800000 * 2 + 86400000).setHours(0, 0, 0, 0)),
to: new Date(new Date(Date.now() - 604800000 + 86400000).setHours(0, 0, 0, 0)),
};
break;
case types_1.DateLasts.LastYear:
result = {
from: new Date(new Date(new Date().setDate(new Date().getDate() - 729)).setHours(0, 0, 0, 0)),
to: new Date(new Date(new Date().setDate(new Date().getDate() - 364)).setHours(0, 0, 0, 0)),
};
break;
}
return result;
}
exports.convertDateLastsToComparedDateRange = convertDateLastsToComparedDateRange;