The labels can be achieved through use of the visual function and some trial and error:
visual: function (e) {
var draw = kendo.drawing;
var geom = kendo.geometry;
var Rect = geom.Rect;
var Path = draw.Path;
var rect = new Rect([e.rect.origin.x, e.rect.origin.y ], [e.rect.size.width, 50]);
var pathA = Path.fromRect(rect).stroke("#555", 1, 0.75);
var p1 = new geom.Point(e.rect.origin.x + e.rect.size.width / 2, e.rect.origin.y + 30);
var pLeft = new geom.Point(e.rect.origin.x + e.rect.size.width / 6, e.rect.origin.y + 4);
var pMid = new geom.Point(e.rect.origin.x + e.rect.size.width / 2, e.rect.origin.y + 4);
var pRight = new geom.Point(e.rect.origin.x + e.rect.size.width * 5 / 6, e.rect.origin.y + 4);
var text = new kendo.drawing.Text(e.value, p1, {
fill: {color: "rgba(100,100,100,0.999)",}
});
var textLeft = new kendo.drawing.Text("Nationality", pLeft, {
fill: {color: "rgba(100,100,100,0.999)",}
});
var textMid = new kendo.drawing.Text("Sector", pMid, {
fill: {color: "rgba(100,100,100,0.999)",}
});
var textRight = new kendo.drawing.Text("Gender", pRight, {
fill: {color: "rgba(100,100,100,0.999)",}
});
var group = new draw.Group();
group.append(pathA);
group.append(text);
group.append(textLeft);
group.append(textMid);
group.append(textRight);
return group;
}
The unique text color is then used in the render event to set the svg text element anchor to middle for better centering.
render: function(e){
$('[fill="rgba(100,100,100,0.999)"]').attr("text-anchor", "middle");
},