UNPKG

@allurereport/plugin-dashboard

Version:

Allure Dashboard Plugin – plugin for generating dashboard with a mix of charts

38 lines (37 loc) 2.09 kB
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); };