@grafana/ui
Version:
Grafana Components Library
1 lines • 4.43 kB
Source Map (JSON)
{"version":3,"file":"utils.mjs","sources":["../../../../src/components/Sparkline/utils.ts"],"sourcesContent":["import { Range } from 'uplot';\n\nimport {\n DataFrame,\n FieldConfig,\n FieldSparkline,\n FieldType,\n isLikelyAscendingVector,\n sortDataFrame,\n applyNullInsertThreshold,\n Field,\n} from '@grafana/data';\nimport { GraphFieldConfig } from '@grafana/schema';\n\n/** @internal\n * Given a sparkline config returns a DataFrame ready to be turned into Plot data set\n **/\nexport function preparePlotFrame(sparkline: FieldSparkline, config?: FieldConfig<GraphFieldConfig>): DataFrame {\n const length = sparkline.y.values.length;\n const yFieldConfig = {\n ...sparkline.y.config,\n ...config,\n };\n\n const xField = sparkline.x ?? {\n name: '',\n values: [...Array(length).keys()],\n type: FieldType.number,\n config: {},\n };\n\n let frame: DataFrame = {\n refId: 'sparkline',\n fields: [\n xField,\n {\n ...sparkline.y,\n config: yFieldConfig,\n },\n ],\n length,\n };\n\n if (!isLikelyAscendingVector(xField.values)) {\n frame = sortDataFrame(frame, 0);\n }\n\n return applyNullInsertThreshold({\n frame,\n refFieldPseudoMin: sparkline.timeRange?.from.valueOf(),\n refFieldPseudoMax: sparkline.timeRange?.to.valueOf(),\n });\n}\n\n/**\n * apply configuration defaults and ensure that the range is never two equal values.\n */\nexport function getYRange(field: Field, alignedFrame: DataFrame): Range.MinMax {\n let { min, max } = alignedFrame.fields[1].state?.range!;\n\n // enure that the min/max from the field config are respected\n min = Math.max(min!, field.config.min ?? -Infinity);\n max = Math.min(max!, field.config.max ?? Infinity);\n\n // if noValue is set, ensure that it is included in the range as well\n const noValue = +alignedFrame.fields[1].config?.noValue!;\n if (!Number.isNaN(noValue)) {\n min = Math.min(min, noValue);\n max = Math.max(max, noValue);\n }\n\n // if min and max are equal after all of that, create a range\n // that allows the sparkline to be visible in the center of the viz\n if (min === max) {\n if (min === 0) {\n max = 100;\n } else if (min < 0) {\n max = 0;\n min *= 2;\n } else {\n min = 0;\n max *= 2;\n }\n }\n\n return [min, max];\n}\n"],"names":[],"mappings":"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"}