pattern.js 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.pattern = void 0;
  4. var tslib_1 = require("tslib");
  5. var g2_1 = require("@antv/g2");
  6. var util_1 = require("@antv/util");
  7. var utils_1 = require("../utils");
  8. var pattern_1 = require("../utils/pattern");
  9. /**
  10. * Pattern 通道,处理图案填充
  11. * 🚀 目前支持图表类型:饼图、柱状图、条形图、玉珏图等(不支持在多 view 图表中,后续按需扩展)
  12. *
  13. * @param key key of style property
  14. * @returns
  15. */
  16. function pattern(key) {
  17. var _this = this;
  18. return function (params) {
  19. var _a;
  20. var options = params.options, chart = params.chart;
  21. var patternOption = options.pattern;
  22. // 没有 pattern 配置,则直接返回
  23. if (!patternOption) {
  24. return params;
  25. }
  26. /** ~~~~~~~ 进行贴图图案处理 ~~~~~~~ */
  27. var style = function (datum) {
  28. var _a, _b, _c;
  29. var args = [];
  30. for (var _i = 1; _i < arguments.length; _i++) {
  31. args[_i - 1] = arguments[_i];
  32. }
  33. var defaultColor = chart.getTheme().defaultColor;
  34. var color = defaultColor;
  35. var colorAttribute = (_b = (_a = chart.geometries) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.getAttribute('color');
  36. if (colorAttribute) {
  37. var colorField = colorAttribute.getFields()[0];
  38. var seriesValue = (0, util_1.get)(datum, colorField);
  39. color = g2_1.Util.getMappingValue(colorAttribute, seriesValue, ((_c = colorAttribute.values) === null || _c === void 0 ? void 0 : _c[0]) || defaultColor);
  40. }
  41. var pattern = patternOption;
  42. // 1. 如果 patternOption 是一个回调,则获取回调结果。`(datum: Datum, color: string) => CanvasPattern`
  43. if (typeof patternOption === 'function') {
  44. pattern = patternOption.call(_this, datum, color);
  45. }
  46. // 2. 如果 pattern 不是 CanvasPattern,则进一步处理,否则直接赋予给 fill
  47. if (pattern instanceof CanvasPattern === false) {
  48. // 通过 createPattern(PatternStyle) 转换为 CanvasPattern
  49. pattern = (0, pattern_1.getCanvasPattern)((0, utils_1.deepAssign)({}, { cfg: { backgroundColor: color } }, pattern));
  50. }
  51. var styleOption = options[key];
  52. return tslib_1.__assign(tslib_1.__assign({}, (typeof styleOption === 'function' ? styleOption.call.apply(styleOption, tslib_1.__spreadArray([_this, datum], args, false)) : styleOption || {})), { fill: pattern || color });
  53. };
  54. return (0, utils_1.deepAssign)({}, params, { options: (_a = {}, _a[key] = style, _a) });
  55. };
  56. }
  57. exports.pattern = pattern;
  58. //# sourceMappingURL=pattern.js.map