import { Component, For, createMemo } from 'solid-js'; import { StatsData } from '@ns/core'; import { formatNumber } from '@ns/ui-utils'; interface OperationsChartProps { stats: StatsData; } const OperationsChart: Component = props => { const operations = createMemo(() => [ { label: 'Lookups', value: props.stats.nrLookups, colorClass: 'chart-1' }, { label: 'Function Calls', value: props.stats.nrFunctionCalls, colorClass: 'chart-2' }, { label: 'PrimOp Calls', value: props.stats.nrPrimOpCalls, colorClass: 'chart-3' }, { label: 'Op Updates', value: props.stats.nrOpUpdates, colorClass: 'chart-4' }, { label: 'Values Copied', value: props.stats.nrOpUpdateValuesCopied, colorClass: 'chart-5' }, ].sort((a, b) => b.value - a.value), ); const maxValue = createMemo(() => Math.max(...operations().map(o => o.value))); return (
{item => (
{item.label}
0 ? (item.value / maxValue()) * 100 : 0}%`, }} />
{formatNumber(item.value)}
)}
); }; export default OperationsChart;