@grafana/ui
Version:
Grafana Components Library
1 lines • 4.81 kB
Source Map (JSON)
{"version":3,"file":"utils.mjs","sources":["../../../../src/components/Gauge/utils.ts"],"sourcesContent":["import {\n FieldConfig,\n GAUGE_DEFAULT_MAXIMUM,\n GAUGE_DEFAULT_MINIMUM,\n getActiveThreshold,\n GrafanaTheme,\n GrafanaTheme2,\n Threshold,\n ThresholdsConfig,\n ThresholdsMode,\n} from '@grafana/data';\nimport { VizOrientation } from '@grafana/schema';\n\ninterface GaugeAutoProps {\n titleFontSize: number;\n gaugeHeight: number;\n showLabel: boolean;\n}\n\nexport const DEFAULT_THRESHOLDS: ThresholdsConfig = {\n mode: ThresholdsMode.Absolute,\n steps: [\n { value: -Infinity, color: 'green' },\n { value: 80, color: 'red' },\n ],\n};\n\nexport function calculateGaugeAutoProps(\n width: number,\n height: number,\n title: string | undefined,\n orientation?: VizOrientation\n): GaugeAutoProps {\n const showLabel = title !== null && title !== undefined;\n const titleFontSizeDimension = orientation === VizOrientation.Vertical ? height : width;\n const titleFontSize = Math.min((titleFontSizeDimension * 0.15) / 1.5, 20); // 20% of height * line-height, max 40px\n const titleHeight = titleFontSize * 1.5;\n const availableHeight = showLabel ? height - titleHeight : height;\n const gaugeHeight = Math.min(availableHeight, width);\n\n return {\n showLabel,\n gaugeHeight,\n titleFontSize,\n };\n}\n\nexport function getFormattedThresholds(\n decimals: number,\n field: FieldConfig,\n theme: GrafanaTheme | GrafanaTheme2\n): Threshold[] {\n const thresholds = field.thresholds ?? DEFAULT_THRESHOLDS;\n const isPercent = thresholds.mode === ThresholdsMode.Percentage;\n const steps = thresholds.steps;\n\n let min = field.min ?? GAUGE_DEFAULT_MINIMUM;\n let max = field.max ?? GAUGE_DEFAULT_MAXIMUM;\n\n if (isPercent) {\n min = 0;\n max = 100;\n }\n\n const first = getActiveThreshold(min, steps);\n const last = getActiveThreshold(max, steps);\n const formatted: Threshold[] = [\n { value: +min.toFixed(decimals), color: theme.visualization.getColorByName(first.color) },\n ];\n let skip = true;\n for (let i = 0; i < steps.length; i++) {\n const step = steps[i];\n if (skip) {\n if (first === step) {\n skip = false;\n }\n continue;\n }\n const prev = steps[i - 1];\n formatted.push({ value: step.value, color: theme.visualization.getColorByName(prev.color) });\n if (step === last) {\n break;\n }\n }\n formatted.push({ value: +max.toFixed(decimals), color: theme.visualization.getColorByName(last.color) });\n return formatted;\n}\n"],"names":[],"mappings":"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"}