@antv/f2
Version:
Charts for mobile visualization.
110 lines (109 loc) • 4.03 kB
JavaScript
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
var _createSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/createSuper"));
var _attr = require("../../attr");
var _component = _interopRequireDefault(require("../../base/component"));
var _coord = _interopRequireDefault(require("../../controller/coord"));
var _src = require("../../deps/d3-hierarchy/src");
var _jsx = require("../../jsx");
var _default = function _default(View) {
return /*#__PURE__*/function (_Component) {
(0, _inherits2.default)(Treemap, _Component);
var _super = (0, _createSuper2.default)(Treemap);
function Treemap(props, context, updater) {
var _this;
(0, _classCallCheck2.default)(this, Treemap);
_this = _super.call(this, props, context, updater);
var coord = props.coord,
color = props.color,
data = props.data;
var width = context.width,
height = context.height,
theme = context.theme;
_this.coordController = new _coord.default();
var _assertThisInitialize = (0, _assertThisInitialized2.default)(_this),
coordController = _assertThisInitialize.coordController;
_this.coord = coordController.create(coord, {
width: width,
height: height
});
_this.color = new _attr.Category((0, _objectSpread2.default)((0, _objectSpread2.default)({
range: theme.colors
}, color), {}, {
data: data
}));
return _this;
}
(0, _createClass2.default)(Treemap, [{
key: "treemapLayout",
value: function treemapLayout() {
var props = this.props,
coord = this.coord,
colorAttr = this.color;
var data = props.data,
value = props.value;
var root = (0, _src.hierarchy)({
children: data
}).sum(function (d) {
return d[value];
}).sort(function (a, b) {
return b[value] - a[value];
});
var treemapLayout = (0, _src.treemap)()
// 默认treemapSquarify
.tile(_src.treemapBinary)
// .size([1, 1])
// @ts-ignore
.round(false);
// .padding(space)
// .paddingInner(space);
// .paddingOuter(options.paddingOuter)
// .paddingTop(options.paddingTop)
// .paddingRight(options.paddingRight)
// .paddingBottom(options.paddingBottom)
// .paddingLeft(options.paddingLeft);
var nodes = treemapLayout(root);
return nodes.children.map(function (item) {
var data = item.data,
x0 = item.x0,
y0 = item.y0,
x1 = item.x1,
y1 = item.y1;
var color = colorAttr.mapping(data[colorAttr.field]);
var rect = coord.convertRect({
x: [x0, x1],
y: [y0, y1]
});
return (0, _objectSpread2.default)({
key: data.key,
origin: data,
color: color
}, rect);
});
}
}, {
key: "render",
value: function render() {
var nodes = this.treemapLayout();
var props = this.props,
coord = this.coord;
return (0, _jsx.jsx)(View, (0, _objectSpread2.default)((0, _objectSpread2.default)({
nodes: nodes
}, props), {}, {
coord: coord
}));
}
}]);
return Treemap;
}(_component.default);
};
exports.default = _default;
;