@antv/g6
Version:
graph visualization frame work
76 lines (74 loc) • 1.93 kB
JavaScript
/**
* @fileOverview common node shape
* @author huangtonger@aliyun.com
*/
var Shape = require('../shape');
var Util = require('../../util/');
var Global = require('../../global');
Shape.registerNode('common', {
draw: function draw(item) {
var group = item.getGraphicGroup();
var label = this.drawLabel(item);
var keyShape = this.drawKeyShape(item);
label && Util.toFront(label, group);
return keyShape;
},
getSize: function getSize(item) {
var model = item.getModel();
var size = model.size;
if (Util.isArray(size)) {
return size;
}
if (Util.isNumber(size)) {
return [size, size];
}
return [Global.defaultNodeSize, Global.defaultNodeSize];
},
getStyle: function getStyle(item) {
var model = item.getModel();
return Util.mix(true, {
lineWidth: 1,
fill: model.color || '#40a9ff',
stroke: model.color || '#096dd9',
fillOpacity: 0.92
}, model.style);
},
getLabel: function getLabel(item) {
var model = item.getModel();
return model.label;
},
drawKeyShape: function drawKeyShape(item) {
var group = item.getGraphicGroup();
var style = this.getStyle(item);
var path = this.getPath(item);
return group.addShape('path', {
attrs: Util.mix({}, style, {
path: path
})
});
},
drawLabel: function drawLabel(item) {
var group = item.getGraphicGroup();
var label = this.getLabel(item);
if (Util.isNil(label)) {
return;
}
var attrs = Util.mix(true, {}, Global.labelStyle, {
x: 0,
y: 0
});
if (!Util.isObject(label)) {
attrs.text = label;
} else {
Util.mix(attrs, label);
}
return group.addShape('text', {
class: 'label',
attrs: attrs
});
},
getPath: function getPath(item) {
var size = this.getSize(item);
return Util.getEllipsePath(0, 0, size[0] / 2, size[1] / 2);
}
});