@pinelab/vendure-plugin-metrics
Version:
Vendure plugin measuring and visualizing e-commerce metrics
38 lines (37 loc) • 1.17 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ConversionMetric = void 0;
const graphql_1 = require("../ui/generated/graphql");
/**
* Conversion of sessions to orders
*/
class ConversionMetric {
constructor() {
this.metricType = graphql_1.AdvancedMetricType.Number;
this.code = 'conversion';
this.allowProductSelection = false;
}
getTitle(ctx) {
return `Conversion Rate`;
}
calculateDataPoints(ctx, orders, sessions) {
const placedOrders = orders.length;
const sessionCount = sessions.length;
// Calculate conversion rate (as a percentage)
let conversionRate = 0;
if (sessionCount > 0) {
conversionRate = (placedOrders / sessionCount) * 100;
}
if (conversionRate > 100) {
// Conversion rate cannot be more than 100%
conversionRate = 100;
}
return [
{
legendLabel: 'Conversion of sessions to orders (%)',
value: parseFloat(conversionRate.toFixed(2)),
},
];
}
}
exports.ConversionMetric = ConversionMetric;