qlik-oss/sn-org-chart

View on GitHub
src/utils/styling.js

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
import DEFAULTS from "../style-defaults";
import colorUtils from "./color-utils";

export function getColor(reference, Theme, defaultColor) {
  let color;
  switch (reference.colorType) {
    case "byExpression":
      color = colorUtils.resolveExpression(reference.colorExpression);
      break;
    case "colorPicker":
      color = Theme.getColorPickerColor(reference.color);
      break;
    default:
      color = defaultColor;
  }
  return color === "none" ? defaultColor : color;
}

const stylingUtils = {
  cardStyling: ({ Theme, layout }) => {
    const backgroundColor = getColor(layout.style.backgroundColor, Theme, DEFAULTS.BACKGROUND_COLOR.color);
    const fontColor = getColor(layout.style.fontColor, Theme, "default");
    const measureLabel = layout.qHyperCube.qMeasureInfo.length
      ? layout.qHyperCube.qMeasureInfo[0].qFallbackTitle
      : null;
    const { border = { colorType: DEFAULTS.BORDER_COLOR_TYPE } } = layout.style;
    const borderColor =
      border.colorType !== "auto"
        ? getColor(border, Theme, colorUtils.getDarkColor(backgroundColor))
        : colorUtils.getDarkColor(backgroundColor);
    return {
      backgroundColor,
      fontColor,
      measureLabel,
      border,
      borderColor,
    };
  },
};

export default stylingUtils;