页面树结构

版本比较

标识

  • 该行被添加。
  • 该行被删除。
  • 格式已经改变。


注意

该宏示例在 V10.5上 验证通过

本文档的示例代码仅适用于本文档中的示例报表/场景。若实际报表/场景与示例代码无法完全适配(如使用功能不一致,或多个宏代码冲突等),需根据实际需求开发代码。

注意:
1.使用该宏会把原有的标签值隐藏
2.每一根柱子要有所有的图例值,才能显示总计值,若缺少一个则会不显示总计值


1.示例效果

目录

通过客户端宏,使堆积图显示合计,如下图所示:

Image RemovedImage Added

2.操作步骤

  • 步骤一:新建一个空白的自助仪表盘新建一个空白的仪表盘

Image RemovedImage Added

  • 步骤二:拖入图形 ,选择数据集或业务主题,选择数据来源

Image RemovedImage Added

效果如下:

Image RemovedImage Added

  • 步骤三:选中图形,右键进入宏管理页

Image RemovedImage Added

  • 步骤四:在界面新建客户端宏,弹出的新建模块对话框中输入名称,勾选对象为组件、事件为onBeforeRender

Image RemovedImage Added

  • 步骤五:编写宏代码实现效果

Image RemovedImage Added

  • 把下面宏代码复制到代码区域;
代码块
linenumberstrue
collapsetrue
/**
 * 类型:ClientSide
 * 对象:图形组件
 * 事件:onBeforeRender
 * 实现效果:堆积图显示合计
 */
function main(page: IPage, portlet: IEChartsPortlet) {

    if (!portlet.getChartOptions) return;
    let options = portlet.getChartOptions()
    console.log('options: ', options)
if (!options.series || !options.series.length) return;

    /** 总数 */
    let seriestotals = getStackSumData(options.series)

    /**
    * 设置显示总数label
    * 最后一个series显示总数标签,其他的不显示标签
    */
let  length = options.series[0].data.length.forEach((serie: any, index: number) => { 
        letif data0(index === options.series[0].data.length - 1) {
           let data1serie.label ={
series[1].data     let totals:string[] = []     for (let i in data0) {show: true,
         let value0 = data0[i].value[1]    position: 'top', // 标签显示位置
 let value1 = data1[i].value[1]         let total = (value0formatter: +function value1).toFixed(2)(params: any) {
                    return totals.push(total)[params.dataIndex] // 显示总数
                },
    series[1].label = {            normaltextStyle: {
                   position color: 'top#000', // 标签文字颜色
                }
       show: true,
      }
        } else { 
            serie.label.show = false
        }
    })
    portlet.setChartOptions(options)
}

/**
  formatter:* 计算总数据
 */
function getStackSumData(aseries: any) {
    if (!series || !series.length) {
        return totals[a.dataIndex];
    }
    let result: any }= []
    series.forEach((serie: any,  },index: number) => {
        emphasis: {serie.data.forEach((data: any, idx: number) => {
            let value = Number((data.value && data.value[1]) || 0)
            position:if (typeof result[idx] === 'top',undefined') {
              show: true,
 result.push(value)
           formatter: function(a: any) } else {
                return totals[a.dataIndex]result[idx] += value;
            }
            result[idx] = parseFloat(result[idx].toFixed(2))
        })
    })
    portlet.setChartOptions(options)return result;
}
示例主要使用的是IEChartsPortlet对象下的setChartOptions方法,点击查看API详情
  • 步骤六:点击 保存,查看效果,需重新打开报表,可看到效果已实现

Image RemovedImage Added

3. 下载资源

代码资源:migrate-堆积图显示合计.xml