UNPKG

@grafana/ui

Version:
1 lines 7.27 kB
{"version":3,"file":"utils.mjs","sources":["../../../../src/graveyard/Graph/utils.ts"],"sourcesContent":["import {\n GraphSeriesValue,\n Field,\n formattedValueToString,\n getFieldDisplayName,\n TimeZone,\n dateTimeFormat,\n systemDateFormats,\n} from '@grafana/data';\n\n/**\n * Returns index of the closest datapoint BEFORE hover position\n *\n * @param posX\n * @param series\n * @deprecated\n */\nexport const findHoverIndexFromData = (xAxisDimension: Field, xPos: number) => {\n let lower = 0;\n let upper = xAxisDimension.values.length - 1;\n let middle;\n\n while (true) {\n if (lower > upper) {\n return Math.max(upper, 0);\n }\n middle = Math.floor((lower + upper) / 2);\n const xPosition = xAxisDimension.values[middle];\n\n if (xPosition === xPos) {\n return middle;\n } else if (xPosition && xPosition < xPos) {\n lower = middle + 1;\n } else {\n upper = middle - 1;\n }\n }\n};\n\ninterface MultiSeriesHoverInfo {\n value: string;\n time: string;\n datapointIndex: number;\n seriesIndex: number;\n label?: string;\n color?: string;\n}\n\n/**\n * Returns information about closest datapoints when hovering over a Graph\n *\n * @param seriesList list of series visible on the Graph\n * @param pos mouse cursor position, based on jQuery.flot position\n * @deprecated\n */\nexport const getMultiSeriesGraphHoverInfo = (\n // x and y axis dimensions order is aligned\n yAxisDimensions: Field[],\n xAxisDimensions: Field[],\n /** Well, time basically */\n xAxisPosition: number,\n timeZone?: TimeZone\n): {\n results: MultiSeriesHoverInfo[];\n time?: GraphSeriesValue;\n} => {\n let i, field, hoverIndex, hoverDistance, pointTime;\n\n const results: MultiSeriesHoverInfo[] = [];\n\n let minDistance, minTime;\n\n for (i = 0; i < yAxisDimensions.length; i++) {\n field = yAxisDimensions[i];\n const time = xAxisDimensions[i];\n hoverIndex = findHoverIndexFromData(time, xAxisPosition);\n hoverDistance = xAxisPosition - time.values[hoverIndex];\n pointTime = time.values[hoverIndex];\n // Take the closest point before the cursor, or if it does not exist, the closest after\n if (\n minDistance === undefined ||\n (hoverDistance >= 0 && (hoverDistance < minDistance || minDistance < 0)) ||\n (hoverDistance < 0 && hoverDistance > minDistance)\n ) {\n minDistance = hoverDistance;\n minTime = time.display ? formattedValueToString(time.display(pointTime)) : pointTime;\n }\n\n const disp = field.display!(field.values[hoverIndex]);\n\n results.push({\n value: formattedValueToString(disp),\n datapointIndex: hoverIndex,\n seriesIndex: i,\n color: disp.color,\n label: getFieldDisplayName(field),\n time: time.display ? formattedValueToString(time.display(pointTime)) : pointTime,\n });\n }\n\n return {\n results,\n time: minTime,\n };\n};\n\n/** @deprecated */\nexport const graphTickFormatter = (epoch: number, axis: any) => {\n return dateTimeFormat(epoch, {\n format: axis?.options?.timeformat,\n timeZone: axis?.options?.timezone,\n });\n};\n\n/** @deprecated */\nexport const graphTimeFormat = (ticks: number | null, min: number | null, max: number | null): string => {\n if (min && max && ticks) {\n const range = max - min;\n const secPerTick = range / ticks / 1000;\n // Need have 10 millisecond margin on the day range\n // As sometimes last 24 hour dashboard evaluates to more than 86400000\n const oneDay = 86400010;\n const oneYear = 31536000000;\n\n if (secPerTick <= 10) {\n return systemDateFormats.interval.millisecond;\n }\n if (secPerTick <= 45) {\n return systemDateFormats.interval.second;\n }\n if (range <= oneDay) {\n return systemDateFormats.interval.minute;\n }\n if (secPerTick <= 80000) {\n return systemDateFormats.interval.hour;\n }\n if (range <= oneYear) {\n return systemDateFormats.interval.day;\n }\n if (secPerTick <= 31536000) {\n return systemDateFormats.interval.month;\n }\n return systemDateFormats.interval.year;\n }\n\n return systemDateFormats.interval.minute;\n};\n"],"names":[],"mappings":";;;AAiBO,MAAM,sBAAA,GAAyB,CAAC,cAAA,EAAuB,IAAA,KAAiB;AAC7E,EAAA,IAAI,KAAA,GAAQ,CAAA;AACZ,EAAA,IAAI,KAAA,GAAQ,cAAA,CAAe,MAAA,CAAO,MAAA,GAAS,CAAA;AAC3C,EAAA,IAAI,MAAA;AAEJ,EAAA,OAAO,IAAA,EAAM;AACX,IAAA,IAAI,QAAQ,KAAA,EAAO;AACjB,MAAA,OAAO,IAAA,CAAK,GAAA,CAAI,KAAA,EAAO,CAAC,CAAA;AAAA,IAC1B;AACA,IAAA,MAAA,GAAS,IAAA,CAAK,KAAA,CAAA,CAAO,KAAA,GAAQ,KAAA,IAAS,CAAC,CAAA;AACvC,IAAA,MAAM,SAAA,GAAY,cAAA,CAAe,MAAA,CAAO,MAAM,CAAA;AAE9C,IAAA,IAAI,cAAc,IAAA,EAAM;AACtB,MAAA,OAAO,MAAA;AAAA,IACT,CAAA,MAAA,IAAW,SAAA,IAAa,SAAA,GAAY,IAAA,EAAM;AACxC,MAAA,KAAA,GAAQ,MAAA,GAAS,CAAA;AAAA,IACnB,CAAA,MAAO;AACL,MAAA,KAAA,GAAQ,MAAA,GAAS,CAAA;AAAA,IACnB;AAAA,EACF;AACF;AAkBO,MAAM,4BAAA,GAA+B,CAE1C,eAAA,EACA,eAAA,EAEA,eACA,QAAA,KAIG;AACH,EAAA,IAAI,CAAA,EAAG,KAAA,EAAO,UAAA,EAAY,aAAA,EAAe,SAAA;AAEzC,EAAA,MAAM,UAAkC,EAAC;AAEzC,EAAA,IAAI,WAAA,EAAa,OAAA;AAEjB,EAAA,KAAK,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,eAAA,CAAgB,QAAQ,CAAA,EAAA,EAAK;AAC3C,IAAA,KAAA,GAAQ,gBAAgB,CAAC,CAAA;AACzB,IAAA,MAAM,IAAA,GAAO,gBAAgB,CAAC,CAAA;AAC9B,IAAA,UAAA,GAAa,sBAAA,CAAuB,MAAM,aAAa,CAAA;AACvD,IAAA,aAAA,GAAgB,aAAA,GAAgB,IAAA,CAAK,MAAA,CAAO,UAAU,CAAA;AACtD,IAAA,SAAA,GAAY,IAAA,CAAK,OAAO,UAAU,CAAA;AAElC,IAAA,IACE,WAAA,KAAgB,KAAA,CAAA,IACf,aAAA,IAAiB,CAAA,KAAM,aAAA,GAAgB,WAAA,IAAe,WAAA,GAAc,CAAA,CAAA,IACpE,aAAA,GAAgB,CAAA,IAAK,aAAA,GAAgB,WAAA,EACtC;AACA,MAAA,WAAA,GAAc,aAAA;AACd,MAAA,OAAA,GAAU,KAAK,OAAA,GAAU,sBAAA,CAAuB,KAAK,OAAA,CAAQ,SAAS,CAAC,CAAA,GAAI,SAAA;AAAA,IAC7E;AAEA,IAAA,MAAM,OAAO,KAAA,CAAM,OAAA,CAAS,KAAA,CAAM,MAAA,CAAO,UAAU,CAAC,CAAA;AAEpD,IAAA,OAAA,CAAQ,IAAA,CAAK;AAAA,MACX,KAAA,EAAO,uBAAuB,IAAI,CAAA;AAAA,MAClC,cAAA,EAAgB,UAAA;AAAA,MAChB,WAAA,EAAa,CAAA;AAAA,MACb,OAAO,IAAA,CAAK,KAAA;AAAA,MACZ,KAAA,EAAO,oBAAoB,KAAK,CAAA;AAAA,MAChC,IAAA,EAAM,KAAK,OAAA,GAAU,sBAAA,CAAuB,KAAK,OAAA,CAAQ,SAAS,CAAC,CAAA,GAAI;AAAA,KACxE,CAAA;AAAA,EACH;AAEA,EAAA,OAAO;AAAA,IACL,OAAA;AAAA,IACA,IAAA,EAAM;AAAA,GACR;AACF;AAGO,MAAM,kBAAA,GAAqB,CAAC,KAAA,EAAe,IAAA,KAAc;AA3GhE,EAAA,IAAA,EAAA,EAAA,EAAA;AA4GE,EAAA,OAAO,eAAe,KAAA,EAAO;AAAA,IAC3B,MAAA,EAAA,CAAQ,EAAA,GAAA,IAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,IAAA,CAAM,OAAA,KAAN,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAe,UAAA;AAAA,IACvB,QAAA,EAAA,CAAU,EAAA,GAAA,IAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,IAAA,CAAM,OAAA,KAAN,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAe;AAAA,GAC1B,CAAA;AACH;AAGO,MAAM,eAAA,GAAkB,CAAC,KAAA,EAAsB,GAAA,EAAoB,GAAA,KAA+B;AACvG,EAAA,IAAI,GAAA,IAAO,OAAO,KAAA,EAAO;AACvB,IAAA,MAAM,QAAQ,GAAA,GAAM,GAAA;AACpB,IAAA,MAAM,UAAA,GAAa,QAAQ,KAAA,GAAQ,GAAA;AAGnC,IAAA,MAAM,MAAA,GAAS,QAAA;AACf,IAAA,MAAM,OAAA,GAAU,OAAA;AAEhB,IAAA,IAAI,cAAc,EAAA,EAAI;AACpB,MAAA,OAAO,kBAAkB,QAAA,CAAS,WAAA;AAAA,IACpC;AACA,IAAA,IAAI,cAAc,EAAA,EAAI;AACpB,MAAA,OAAO,kBAAkB,QAAA,CAAS,MAAA;AAAA,IACpC;AACA,IAAA,IAAI,SAAS,MAAA,EAAQ;AACnB,MAAA,OAAO,kBAAkB,QAAA,CAAS,MAAA;AAAA,IACpC;AACA,IAAA,IAAI,cAAc,GAAA,EAAO;AACvB,MAAA,OAAO,kBAAkB,QAAA,CAAS,IAAA;AAAA,IACpC;AACA,IAAA,IAAI,SAAS,OAAA,EAAS;AACpB,MAAA,OAAO,kBAAkB,QAAA,CAAS,GAAA;AAAA,IACpC;AACA,IAAA,IAAI,cAAc,OAAA,EAAU;AAC1B,MAAA,OAAO,kBAAkB,QAAA,CAAS,KAAA;AAAA,IACpC;AACA,IAAA,OAAO,kBAAkB,QAAA,CAAS,IAAA;AAAA,EACpC;AAEA,EAAA,OAAO,kBAAkB,QAAA,CAAS,MAAA;AACpC;;;;"}