我为 highstocks.js 创建了自定义格式化函数:
var tooltip = [];
for (key in this.points) {//if point type is portfolio
if ( this.points[key].point.type == 'portfolio' ) {
tooltip[key] = '<span style="color:' + his.points[key].series.color +'">' + this.points[key].series.name + '</span>' + '<br/><b>'+ _('', 'Net assets: ') + _s(this.points[key].point.sum, 2) + '</b>' + '<br/><b>'+ _('', 'Чистые активы: ') + _s(this.points[key].point.netassets, 2) +'</b> (<span style="color:' + ( (this.points[key].point.change < 0 )?'#b86565':'#619000') +'">' + _s(this.points[key].point.change, 0) +'%</span>)<br/>';
} else {
tooltip[key] = '<span style="color:' + this.points[key].series.color +'">' + this.points[key].series.name + '</span>: <b>'+ _s(this.points[key].point.y, 2) +'</b> (<span style="color:' + ( (this.points[key].point.change < 0 )?'#b86565':'#619000') +'">' + _s(this.points[key].point.change, 0) +'%</span>)<br/>';
}
}
var tl = '';
for (key in tooltip) {
tl += tooltip[key]
}
var date = Highcharts.dateFormat('%d %b %Y', this.points[0].point.x);
tl = date + '<br/>' +tl;
return tl;
特点是这个函数不仅使用了一个点的Y,还使用了一些我在该点上添加的附加属性:例如type。
对于“投资组合”类型的点,工具顶部应该以不同的方式呈现,并且必须具有比“常规”点类型更多的数据。
我遇到的问题是,当 conatiner div 宽度较小时,我的模板不起作用,尽管当 div 的宽度很大时它可以正常工作。
Highstocks.js 在将图表渲染到相对较小的区域时会进行默认聚合:http: //api.highcharts.com/highstock#plotOptions.area.dataGrouping
当点被分组时,它们会失去所有额外的属性,只留下 Y 属性,所以复杂的 tooltop 将不起作用。
要修复它,我必须在图表选项中禁用数据分组:
plotOptions: {
series: {
dataGrouping: {
enabled: false
}
}
},
有没有一种方法可以在不禁用数据分组的情况下在小图表上显示复杂的工具提示?