@grafana/ui
Version:
Grafana Components Library
155 lines (148 loc) • 5.94 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var tinycolor = require('tinycolor2');
var data = require('@grafana/data');
var schema = require('@grafana/schema');
var colors = require('../../utils/colors.cjs');
function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
var tinycolor__default = /*#__PURE__*/_interopDefaultCompat(tinycolor);
;
function getTextAlign(field) {
if (!field) {
return "flex-start";
}
if (field.config.custom) {
const custom = field.config.custom;
switch (custom.align) {
case "right":
return "flex-end";
case "left":
return "flex-start";
case "center":
return "center";
}
}
if (field.type === data.FieldType.number) {
return "flex-end";
}
return "flex-start";
}
const defaultCellOptions = { type: schema.TableCellDisplayMode.Auto };
function getCellOptions(field) {
var _a, _b, _c;
if ((_a = field.config.custom) == null ? void 0 : _a.displayMode) {
return migrateTableDisplayModeToCellOptions((_b = field.config.custom) == null ? void 0 : _b.displayMode);
}
if (!((_c = field.config.custom) == null ? void 0 : _c.cellOptions)) {
return defaultCellOptions;
}
return field.config.custom.cellOptions;
}
function migrateTableDisplayModeToCellOptions(displayMode) {
switch (displayMode) {
// In the case of the gauge we move to a different option
case "basic":
case "gradient-gauge":
case "lcd-gauge":
let gaugeMode = schema.BarGaugeDisplayMode.Basic;
if (displayMode === "gradient-gauge") {
gaugeMode = schema.BarGaugeDisplayMode.Gradient;
} else if (displayMode === "lcd-gauge") {
gaugeMode = schema.BarGaugeDisplayMode.Lcd;
}
return {
type: schema.TableCellDisplayMode.Gauge,
mode: gaugeMode
};
// Also true in the case of the color background
case "color-background":
case "color-background-solid":
let mode = schema.TableCellBackgroundDisplayMode.Basic;
if (displayMode === "color-background") {
mode = schema.TableCellBackgroundDisplayMode.Gradient;
}
return {
type: schema.TableCellDisplayMode.ColorBackground,
mode
};
default:
return {
// @ts-ignore TS5 / TS6
type: displayMode
};
}
}
function getAlignmentFactor(field, displayValue, rowIndex) {
var _a;
let alignmentFactor = (_a = field.state) == null ? void 0 : _a.alignmentFactors;
if (alignmentFactor) {
if (data.formattedValueToString(alignmentFactor).length < data.formattedValueToString(displayValue).length) {
alignmentFactor = { ...displayValue };
field.state.alignmentFactors = alignmentFactor;
}
return alignmentFactor;
} else {
alignmentFactor = { ...displayValue };
const maxIndex = Math.min(field.values.length, rowIndex + 1e3);
for (let i = rowIndex + 1; i < maxIndex; i++) {
const nextDisplayValue = field.display(field.values[i]);
if (data.formattedValueToString(alignmentFactor).length > data.formattedValueToString(nextDisplayValue).length) {
alignmentFactor.text = displayValue.text;
}
}
if (field.state) {
field.state.alignmentFactors = alignmentFactor;
} else {
field.state = { alignmentFactors: alignmentFactor };
}
return alignmentFactor;
}
}
function getCellColors(theme, cellOptions, displayValue) {
var _a;
const darkeningFactor = theme.isDark ? 1 : -0.7;
let textColor = void 0;
let bgColor = void 0;
let bgHoverColor = void 0;
if (cellOptions.type === schema.TableCellDisplayMode.ColorText) {
textColor = displayValue.color;
} else if (cellOptions.type === schema.TableCellDisplayMode.ColorBackground) {
const mode = (_a = cellOptions.mode) != null ? _a : schema.TableCellBackgroundDisplayMode.Gradient;
if (mode === schema.TableCellBackgroundDisplayMode.Basic) {
textColor = colors.getTextColorForAlphaBackground(displayValue.color, theme.isDark);
bgColor = tinycolor__default.default(displayValue.color).toRgbString();
bgHoverColor = tinycolor__default.default(displayValue.color).setAlpha(1).toRgbString();
} else if (mode === schema.TableCellBackgroundDisplayMode.Gradient) {
const hoverColor = tinycolor__default.default(displayValue.color).setAlpha(1).toRgbString();
const bgColor2 = tinycolor__default.default(displayValue.color).darken(10 * darkeningFactor).spin(5);
textColor = colors.getTextColorForAlphaBackground(displayValue.color, theme.isDark);
bgColor = `linear-gradient(120deg, ${bgColor2.toRgbString()}, ${displayValue.color})`;
bgHoverColor = `linear-gradient(120deg, ${bgColor2.setAlpha(1).toRgbString()}, ${hoverColor})`;
}
}
return { textColor, bgColor, bgHoverColor };
}
const getDataLinksActionsTooltipUtils = (links, actions) => {
const hasMultipleLinksOrActions = links.length > 1 || Boolean(actions == null ? void 0 : actions.length);
const shouldShowLink = links.length === 1 && !Boolean(actions == null ? void 0 : actions.length);
return { shouldShowLink, hasMultipleLinksOrActions };
};
const shouldTriggerTooltip = (event) => {
return event.target === event.currentTarget;
};
const tooltipOnClickHandler = (setTooltipCoords) => {
return (event) => {
if (shouldTriggerTooltip(event)) {
const { clientX, clientY } = event;
setTooltipCoords({ clientX, clientY });
}
};
};
exports.getAlignmentFactor = getAlignmentFactor;
exports.getCellColors = getCellColors;
exports.getCellOptions = getCellOptions;
exports.getDataLinksActionsTooltipUtils = getDataLinksActionsTooltipUtils;
exports.getTextAlign = getTextAlign;
exports.migrateTableDisplayModeToCellOptions = migrateTableDisplayModeToCellOptions;
exports.tooltipOnClickHandler = tooltipOnClickHandler;
//# sourceMappingURL=cellUtils.cjs.map