@grafana/ui
Version:
Grafana Components Library
1 lines • 11 kB
Source Map (JSON)
{"version":3,"file":"utils.mjs","sources":["../../../../src/graveyard/GraphNG/utils.ts"],"sourcesContent":["import { DataFrame, Field, FieldConfig, FieldType, outerJoinDataFrames, TimeRange } from '@grafana/data';\nimport {\n AxisPlacement,\n GraphDrawStyle,\n GraphFieldConfig,\n ScaleDistribution,\n ScaleDistributionConfig,\n} from '@grafana/schema';\n\nimport { FIXED_UNIT } from '../../components/uPlot/types';\n\nimport { applyNullInsertThreshold } from './nullInsertThreshold';\nimport { nullToUndefThreshold } from './nullToUndefThreshold';\nimport { XYFieldMatchers } from './types';\n\nfunction isVisibleBarField(f: Field) {\n return (\n f.type === FieldType.number && f.config.custom?.drawStyle === GraphDrawStyle.Bars && !f.config.custom?.hideFrom?.viz\n );\n}\n\nexport function getRefField(frame: DataFrame, refFieldName?: string | null) {\n return frame.fields.find((field) => {\n // note: getFieldDisplayName() would require full DF[]\n return refFieldName != null ? field.name === refFieldName : field.type === FieldType.time;\n });\n}\n\n// will mutate the DataFrame's fields' values\nfunction applySpanNullsThresholds(frame: DataFrame, refFieldName?: string | null) {\n const refField = getRefField(frame, refFieldName);\n\n let refValues = refField?.values;\n\n for (let i = 0; i < frame.fields.length; i++) {\n let field = frame.fields[i];\n\n if (field === refField || isVisibleBarField(field)) {\n continue;\n }\n\n let spanNulls = field.config.custom?.spanNulls;\n\n if (typeof spanNulls === 'number') {\n if (spanNulls !== -1 && refValues) {\n field.values = nullToUndefThreshold(refValues, field.values, spanNulls);\n }\n }\n }\n\n return frame;\n}\n\nexport function preparePlotFrame(frames: DataFrame[], dimFields: XYFieldMatchers, timeRange?: TimeRange | null) {\n let xField: Field;\n loop: for (let frame of frames) {\n for (let field of frame.fields) {\n if (dimFields.x(field, frame, frames)) {\n xField = field;\n break loop;\n }\n }\n }\n\n // apply null insertions at interval\n frames = frames.map((frame) => {\n if (!xField?.state?.nullThresholdApplied) {\n return applyNullInsertThreshold({\n frame,\n refFieldName: xField.name,\n refFieldPseudoMin: timeRange?.from.valueOf(),\n refFieldPseudoMax: timeRange?.to.valueOf(),\n });\n } else {\n return frame;\n }\n });\n\n let numBarSeries = 0;\n\n frames.forEach((frame) => {\n frame.fields.forEach((f) => {\n if (isVisibleBarField(f)) {\n // prevent minesweeper-expansion of nulls (gaps) when joining bars\n // since bar width is determined from the minimum distance between non-undefined values\n // (this strategy will still retain any original pre-join nulls, though)\n f.config.custom = {\n ...f.config.custom,\n spanNulls: -1,\n };\n\n numBarSeries++;\n }\n });\n });\n\n // to make bar widths of all series uniform (equal to narrowest bar series), find smallest distance between x points\n let minXDelta = Infinity;\n\n if (numBarSeries > 1) {\n frames.forEach((frame) => {\n if (!frame.fields.some(isVisibleBarField)) {\n return;\n }\n\n const xVals = xField.values;\n\n for (let i = 0; i < xVals.length; i++) {\n if (i > 0) {\n minXDelta = Math.min(minXDelta, xVals[i] - xVals[i - 1]);\n }\n }\n });\n }\n\n let alignedFrame = outerJoinDataFrames({\n frames,\n joinBy: dimFields.x,\n keep: dimFields.y,\n keepOriginIndices: true,\n });\n\n if (alignedFrame) {\n alignedFrame = applySpanNullsThresholds(alignedFrame, xField!.name);\n\n // append 2 null vals at minXDelta to bar series\n if (minXDelta !== Infinity) {\n alignedFrame.fields.forEach((f, fi) => {\n let vals = f.values;\n\n if (fi === 0) {\n let lastVal = vals[vals.length - 1];\n vals.push(lastVal + minXDelta, lastVal + 2 * minXDelta);\n } else if (isVisibleBarField(f)) {\n vals.push(null, null);\n } else {\n vals.push(undefined, undefined);\n }\n });\n\n alignedFrame.length += 2;\n }\n\n return alignedFrame;\n }\n\n return null;\n}\n\nexport function buildScaleKey(config: FieldConfig<GraphFieldConfig>, fieldType: FieldType) {\n const defaultPart = 'na';\n\n const scaleRange = `${config.min !== undefined ? config.min : defaultPart}-${\n config.max !== undefined ? config.max : defaultPart\n }`;\n\n const scaleSoftRange = `${config.custom?.axisSoftMin !== undefined ? config.custom.axisSoftMin : defaultPart}-${\n config.custom?.axisSoftMax !== undefined ? config.custom.axisSoftMax : defaultPart\n }`;\n\n const scalePlacement = `${\n config.custom?.axisPlacement !== undefined ? config.custom?.axisPlacement : AxisPlacement.Auto\n }`;\n\n const scaleUnit = config.unit ?? FIXED_UNIT;\n\n const scaleDistribution = config.custom?.scaleDistribution\n ? getScaleDistributionPart(config.custom.scaleDistribution)\n : ScaleDistribution.Linear;\n\n const scaleLabel = Boolean(config.custom?.axisLabel) ? config.custom!.axisLabel : defaultPart;\n\n return `${scaleUnit}/${scaleRange}/${scaleSoftRange}/${scalePlacement}/${scaleDistribution}/${scaleLabel}/${fieldType}`;\n}\n\nfunction getScaleDistributionPart(config: ScaleDistributionConfig) {\n if (config.type === ScaleDistribution.Log) {\n return `${config.type}${config.log}`;\n }\n return config.type;\n}\n"],"names":[],"mappings":";;;;;;;AAeA,SAAS,kBAAkB,CAAA,EAAU;AAfrC,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA;AAgBE,EAAA,OACE,EAAE,IAAA,KAAS,SAAA,CAAU,MAAA,IAAA,CAAA,CAAU,EAAA,GAAA,CAAA,CAAE,OAAO,MAAA,KAAT,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAiB,SAAA,MAAc,cAAA,CAAe,QAAQ,EAAA,CAAC,EAAA,GAAA,CAAA,EAAA,GAAA,CAAA,CAAE,OAAO,MAAA,KAAT,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAiB,aAAjB,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAA2B,GAAA,CAAA;AAErH;AAEO,SAAS,WAAA,CAAY,OAAkB,YAAA,EAA8B;AAC1E,EAAA,OAAO,KAAA,CAAM,MAAA,CAAO,IAAA,CAAK,CAAC,KAAA,KAAU;AAElC,IAAA,OAAO,gBAAgB,IAAA,GAAO,KAAA,CAAM,SAAS,YAAA,GAAe,KAAA,CAAM,SAAS,SAAA,CAAU,IAAA;AAAA,EACvF,CAAC,CAAA;AACH;AAGA,SAAS,wBAAA,CAAyB,OAAkB,YAAA,EAA8B;AA7BlF,EAAA,IAAA,EAAA;AA8BE,EAAA,MAAM,QAAA,GAAW,WAAA,CAAY,KAAA,EAAO,YAAY,CAAA;AAEhD,EAAA,IAAI,YAAY,QAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,QAAA,CAAU,MAAA;AAE1B,EAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,KAAA,CAAM,MAAA,CAAO,QAAQ,CAAA,EAAA,EAAK;AAC5C,IAAA,IAAI,KAAA,GAAQ,KAAA,CAAM,MAAA,CAAO,CAAC,CAAA;AAE1B,IAAA,IAAI,KAAA,KAAU,QAAA,IAAY,iBAAA,CAAkB,KAAK,CAAA,EAAG;AAClD,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,SAAA,GAAA,CAAY,EAAA,GAAA,KAAA,CAAM,MAAA,CAAO,MAAA,KAAb,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAqB,SAAA;AAErC,IAAA,IAAI,OAAO,cAAc,QAAA,EAAU;AACjC,MAAA,IAAI,SAAA,KAAc,MAAM,SAAA,EAAW;AACjC,QAAA,KAAA,CAAM,MAAA,GAAS,oBAAA,CAAqB,SAAA,EAAW,KAAA,CAAM,QAAQ,SAAS,CAAA;AAAA,MACxE;AAAA,IACF;AAAA,EACF;AAEA,EAAA,OAAO,KAAA;AACT;AAEO,SAAS,gBAAA,CAAiB,MAAA,EAAqB,SAAA,EAA4B,SAAA,EAA8B;AAC9G,EAAA,IAAI,MAAA;AACJ,EAAA,IAAA,EAAM,KAAA,IAAS,SAAS,MAAA,EAAQ;AAC9B,IAAA,KAAA,IAAS,KAAA,IAAS,MAAM,MAAA,EAAQ;AAC9B,MAAA,IAAI,SAAA,CAAU,CAAA,CAAE,KAAA,EAAO,KAAA,EAAO,MAAM,CAAA,EAAG;AACrC,QAAA,MAAA,GAAS,KAAA;AACT,QAAA,MAAM,IAAA;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAGA,EAAA,MAAA,GAAS,MAAA,CAAO,GAAA,CAAI,CAAC,KAAA,KAAU;AAjEjC,IAAA,IAAA,EAAA;AAkEI,IAAA,IAAI,EAAA,CAAC,EAAA,GAAA,MAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,MAAA,CAAQ,KAAA,KAAR,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAe,oBAAA,CAAA,EAAsB;AACxC,MAAA,OAAO,wBAAA,CAAyB;AAAA,QAC9B,KAAA;AAAA,QACA,cAAc,MAAA,CAAO,IAAA;AAAA,QACrB,iBAAA,EAAmB,uCAAW,IAAA,CAAK,OAAA,EAAA;AAAA,QACnC,iBAAA,EAAmB,uCAAW,EAAA,CAAG,OAAA;AAAA,OAClC,CAAA;AAAA,IACH,CAAA,MAAO;AACL,MAAA,OAAO,KAAA;AAAA,IACT;AAAA,EACF,CAAC,CAAA;AAED,EAAA,IAAI,YAAA,GAAe,CAAA;AAEnB,EAAA,MAAA,CAAO,OAAA,CAAQ,CAAC,KAAA,KAAU;AACxB,IAAA,KAAA,CAAM,MAAA,CAAO,OAAA,CAAQ,CAAC,CAAA,KAAM;AAC1B,MAAA,IAAI,iBAAA,CAAkB,CAAC,CAAA,EAAG;AAIxB,QAAA,CAAA,CAAE,OAAO,MAAA,GAAS;AAAA,UAChB,GAAG,EAAE,MAAA,CAAO,MAAA;AAAA,UACZ,SAAA,EAAW,CAAA;AAAA,SACb;AAEA,QAAA,YAAA,EAAA;AAAA,MACF;AAAA,IACF,CAAC,CAAA;AAAA,EACH,CAAC,CAAA;AAGD,EAAA,IAAI,SAAA,GAAY,QAAA;AAEhB,EAAA,IAAI,eAAe,CAAA,EAAG;AACpB,IAAA,MAAA,CAAO,OAAA,CAAQ,CAAC,KAAA,KAAU;AACxB,MAAA,IAAI,CAAC,KAAA,CAAM,MAAA,CAAO,IAAA,CAAK,iBAAiB,CAAA,EAAG;AACzC,QAAA;AAAA,MACF;AAEA,MAAA,MAAM,QAAQ,MAAA,CAAO,MAAA;AAErB,MAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,KAAA,CAAM,QAAQ,CAAA,EAAA,EAAK;AACrC,QAAA,IAAI,IAAI,CAAA,EAAG;AACT,UAAA,SAAA,GAAY,IAAA,CAAK,IAAI,SAAA,EAAW,KAAA,CAAM,CAAC,CAAA,GAAI,KAAA,CAAM,CAAA,GAAI,CAAC,CAAC,CAAA;AAAA,QACzD;AAAA,MACF;AAAA,IACF,CAAC,CAAA;AAAA,EACH;AAEA,EAAA,IAAI,eAAe,mBAAA,CAAoB;AAAA,IACrC,MAAA;AAAA,IACA,QAAQ,SAAA,CAAU,CAAA;AAAA,IAClB,MAAM,SAAA,CAAU,CAAA;AAAA,IAChB,iBAAA,EAAmB;AAAA,GACpB,CAAA;AAED,EAAA,IAAI,YAAA,EAAc;AAChB,IAAA,YAAA,GAAe,wBAAA,CAAyB,YAAA,EAAc,MAAA,CAAQ,IAAI,CAAA;AAGlE,IAAA,IAAI,cAAc,QAAA,EAAU;AAC1B,MAAA,YAAA,CAAa,MAAA,CAAO,OAAA,CAAQ,CAAC,CAAA,EAAG,EAAA,KAAO;AACrC,QAAA,IAAI,OAAO,CAAA,CAAE,MAAA;AAEb,QAAA,IAAI,OAAO,CAAA,EAAG;AACZ,UAAA,IAAI,OAAA,GAAU,IAAA,CAAK,IAAA,CAAK,MAAA,GAAS,CAAC,CAAA;AAClC,UAAA,IAAA,CAAK,IAAA,CAAK,OAAA,GAAU,SAAA,EAAW,OAAA,GAAU,IAAI,SAAS,CAAA;AAAA,QACxD,CAAA,MAAA,IAAW,iBAAA,CAAkB,CAAC,CAAA,EAAG;AAC/B,UAAA,IAAA,CAAK,IAAA,CAAK,MAAM,IAAI,CAAA;AAAA,QACtB,CAAA,MAAO;AACL,UAAA,IAAA,CAAK,IAAA,CAAK,QAAW,KAAA,CAAS,CAAA;AAAA,QAChC;AAAA,MACF,CAAC,CAAA;AAED,MAAA,YAAA,CAAa,MAAA,IAAU,CAAA;AAAA,IACzB;AAEA,IAAA,OAAO,YAAA;AAAA,EACT;AAEA,EAAA,OAAO,IAAA;AACT;AAEO,SAAS,aAAA,CAAc,QAAuC,SAAA,EAAsB;AArJ3F,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA;AAsJE,EAAA,MAAM,WAAA,GAAc,IAAA;AAEpB,EAAA,MAAM,UAAA,GAAa,CAAA,EAAG,MAAA,CAAO,GAAA,KAAQ,SAAY,MAAA,CAAO,GAAA,GAAM,WAAW,CAAA,CAAA,EACvE,MAAA,CAAO,GAAA,KAAQ,KAAA,CAAA,GAAY,MAAA,CAAO,MAAM,WAC1C,CAAA,CAAA;AAEA,EAAA,MAAM,cAAA,GAAiB,KAAG,EAAA,GAAA,MAAA,CAAO,MAAA,KAAP,mBAAe,WAAA,MAAgB,KAAA,CAAA,GAAY,OAAO,MAAA,CAAO,WAAA,GAAc,WAAW,CAAA,CAAA,EAAA,CAAA,CAC1G,EAAA,GAAA,MAAA,CAAO,WAAP,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAe,WAAA,MAAgB,SAAY,MAAA,CAAO,MAAA,CAAO,cAAc,WACzE,CAAA,CAAA;AAEA,EAAA,MAAM,cAAA,GAAiB,CAAA,EAAA,CAAA,CACrB,EAAA,GAAA,MAAA,CAAO,MAAA,KAAP,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAe,aAAA,MAAkB,KAAA,CAAA,GAAA,CAAY,EAAA,GAAA,MAAA,CAAO,MAAA,KAAP,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAe,aAAA,GAAgB,aAAA,CAAc,IAC5F,CAAA,CAAA;AAEA,EAAA,MAAM,SAAA,GAAA,CAAY,EAAA,GAAA,MAAA,CAAO,IAAA,KAAP,IAAA,GAAA,EAAA,GAAe,UAAA;AAEjC,EAAA,MAAM,iBAAA,GAAA,CAAA,CAAoB,EAAA,GAAA,MAAA,CAAO,MAAA,KAAP,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAe,iBAAA,IACrC,yBAAyB,MAAA,CAAO,MAAA,CAAO,iBAAiB,CAAA,GACxD,iBAAA,CAAkB,MAAA;AAEtB,EAAA,MAAM,UAAA,GAAa,SAAQ,EAAA,GAAA,MAAA,CAAO,MAAA,KAAP,mBAAe,SAAS,CAAA,GAAI,MAAA,CAAO,MAAA,CAAQ,SAAA,GAAY,WAAA;AAElF,EAAA,OAAO,CAAA,EAAG,SAAS,CAAA,CAAA,EAAI,UAAU,CAAA,CAAA,EAAI,cAAc,CAAA,CAAA,EAAI,cAAc,CAAA,CAAA,EAAI,iBAAiB,CAAA,CAAA,EAAI,UAAU,IAAI,SAAS,CAAA,CAAA;AACvH;AAEA,SAAS,yBAAyB,MAAA,EAAiC;AACjE,EAAA,IAAI,MAAA,CAAO,IAAA,KAAS,iBAAA,CAAkB,GAAA,EAAK;AACzC,IAAA,OAAO,CAAA,EAAG,MAAA,CAAO,IAAI,CAAA,EAAG,OAAO,GAAG,CAAA,CAAA;AAAA,EACpC;AACA,EAAA,OAAO,MAAA,CAAO,IAAA;AAChB;;;;"}