@allurereport/plugin-dashboard
Version:
Allure Dashboard Plugin – plugin for generating dashboard with a mix of charts
38 lines (37 loc) • 2.09 kB
JavaScript
import { statusesList } from "@allurereport/core-api";
import { createEmptySeries, createEmptyStats, getTrendDataGeneric, mergeTrendDataGeneric, normalizeStatistic, } from "../utils/trend.js";
export const getStatusTrendData = (currentStatistic, reportName, historyPoints, chartOptions) => {
const { limit } = chartOptions;
const historyLimit = limit && limit > 0 ? Math.max(0, limit - 1) : undefined;
const limitedHistoryPoints = historyLimit !== undefined ? historyPoints.slice(-historyLimit) : historyPoints;
const firstOriginalIndex = historyLimit !== undefined ? Math.max(0, historyPoints.length - historyLimit) : 0;
const convertedHistoryPoints = limitedHistoryPoints.map((point, index) => {
const originalIndex = firstOriginalIndex + index;
return {
name: point.name,
originalIndex,
statistic: Object.values(point.testResults).reduce((stat, test) => {
if (test.status) {
stat[test.status] = (stat[test.status] ?? 0) + 1;
stat.total = (stat.total ?? 0) + 1;
}
return stat;
}, { total: 0, ...createEmptyStats(statusesList) }),
};
});
const currentTrendData = getTrendDataGeneric(normalizeStatistic(currentStatistic, statusesList), reportName, historyPoints.length + 1, statusesList, chartOptions);
const historicalTrendData = convertedHistoryPoints.reduce((acc, historyPoint) => {
const trendDataPart = getTrendDataGeneric(normalizeStatistic(historyPoint.statistic, statusesList), historyPoint.name, historyPoint.originalIndex + 1, statusesList, chartOptions);
return mergeTrendDataGeneric(acc, trendDataPart, statusesList);
}, {
type: chartOptions.type,
dataType: chartOptions.dataType,
title: chartOptions.title,
points: {},
slices: {},
series: createEmptySeries(statusesList),
min: Infinity,
max: -Infinity,
});
return mergeTrendDataGeneric(historicalTrendData, currentTrendData, statusesList);
};