1. 概述
1.1 版本
报表服务器版本 |
---|
11.0 |
1.2 应用场景
当图表一个分类含有多个系列,用户希望可以显示该分类下所有系列的提示信息时,若提示内容为「通用」,直接勾选 图表提示 显示策略下的「显示所有系列」即可实现。
但是如果想要修改提示的其他样式,例如下图中各系列的单位不一样,就需要使用自定义实现了。
如下图所示:
1.3 实现思路
图表「样式>提示」内容选择「自定义」,在代码中通过 IF 条件语句为系列设置不同的提示内容。代码中使用到 html 语句定义样式时,需选中「使用html解析文本内容」。
2. 示例
2.1 准备数据
本例我们直接使用文档 图表自定义多个坐标轴 中的模板,直接打开设计器内置的模板 %FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\Chart\ColumnChart\多坐标轴自定义柱形图.cpt,或点击下载模板 多坐标轴自定义柱形图.cpt 后在设计器中打开文件。
如下图所示:
2.2 通用提示显示所有系列
这里我们演示一下通用提示下勾选「显示所有系列」时的效果。
选中图表,点击右侧属性面板「单元格元素>样式>提示」。内容选择「通用」,文本勾选分类名、系列名、值。显示策略下勾选「显示所有系列」。如下图所示:
保存报表,点击「分页预览」,效果如下图,此时是各系列是没有单位的。
注:若是单位统一,可以给文本设置格式。如下图所示:
2.3 自定义提示
提示内容选择「自定义」,输入代码如下:
function(){
var points = this.points; //表示同一个分类的不同系列点
var a =this.category;
var b;
for(var i = 0, len = points.length; i < len; i++) {
if(points[i].series.visible){
if(this.points[i].seriesName=="Rainfall")
b = FR.contentFormat(this.points[i].value, '#0mm');
else if(this.points[i].seriesName=="Sea-LevelPressure")
b = FR.contentFormat(this.points[i].value, '#0mb');
else
b = FR.contentFormat(this.points[i].value, '#0℃');
a += '<br/>'+"<font color='"+points[i].color+"'>●</font>"+points[i].seriesName+':'+b;
}
}
return a;
}
选中「使用html解析文本内容」,如下图所示:
2.4 效果预览
2.4.1 PC 端
保存模板,点击「分页预览」,效果如 1.2 节应用场景所示。
注:移动端无论是否勾选显示所有系列,均默认显示所有系列。
2.4.2 移动端
App 端和 HTML5 端均支持,效果如下图所示:
3. 模板下载
已完成模板参见:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\Chart\ColumnChart\图表自定义多系列提示.cpt
点击下载模板:图表自定义多系列提示.cpt