All files / libs/reporting/dashboards-v2/shared/src/lib/business-rules/sizing dashboard-charts-sizing-rules.ts

86.48% Statements 64/74
100% Branches 6/6
100% Functions 1/1
86.48% Lines 64/74

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 751x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 4x 4x 4x 4x 4x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 4x                     4x 4x 4x 4x 4x 4x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 4x 4x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x  
import { match } from 'ts-pattern';
 
import {
  ChartType,
  KPIChartDisplayMode,
  type DashboardChartConfiguration,
} from '@amalia/reporting/dashboards-v2/types';
 
import { type DashboardChartSizing } from './dashboard-chart-sizing.types';
 
export const computeChartSizingBox = (
  chartConfiguration: DashboardChartConfiguration<ChartType>,
): DashboardChartSizing =>
  match(chartConfiguration)
    .with(
      { type: ChartType.KPI_CARD_CHART },
      (chartConfiguration: DashboardChartConfiguration<ChartType.KPI_CARD_CHART>) => {
        const isKpiChartEnabled = chartConfiguration.displaySettings.displayMode !== KPIChartDisplayMode.KPI;
 
        return {
          width: {
            min: isKpiChartEnabled ? 6 : 4,
            max: 12,
            default: 6,
          },
          height: {
            min: 1,
            max: 1,
            default: 1,
          },
        };
      },
    )
    .with({ type: ChartType.TEXT_CHART }, () => ({
      width: {
        min: 4,
        max: 12,
        default: 6,
      },
      height: {
        min: 1,
        max: 1,
        default: 1,
      },
    }))
    .with(
      {
        type: ChartType.LIST_CHART,
      },
      () => ({
        width: {
          min: 1,
          max: 12,
          default: 12,
        },
        height: {
          min: 2,
          max: 4,
          default: 2,
        },
      }),
    )
    .otherwise(() => ({
      width: {
        min: 1,
        max: 12,
        default: 12,
      },
      height: {
        min: 2,
        max: 2,
        default: 2,
      },
    }));