动态渲染多个重复的Highcharts图表

6 篇文章 1 订阅
2 篇文章 0 订阅

需求:实现多个动态图表

示例

在这里插入图片描述

准备工作

需要提前引入所需要的css,js等插件文件,可参考Highcharts官网实例

/*
*boardBuildingInCommunityMap为接口返回的数据
*  buildFeeArr[i] = [] 为重要步骤,清空每个图表中重复的数组
*  buildFeeArr[i].push(buildFeeObj) 给每条数据假如不同的动态数据
* buildFee(buildFeeArr, boardBuildingInCommunityMap, feeItemIdStr)根据需要想图表中传入所需的数据, 完成调用
*/
if (boardBuildingInCommunityMap.length > 0) {

for (var i = 0; i < boardBuildingInCommunityMap.length; i++) {
       buildFeeArr[i] = []
       if (boardBuildingInCommunityMap[i].feeItemMap && boardBuildingInCommunityMap[i].feeItemMap.length > 0) {


           for (var j = 0; j < boardBuildingInCommunityMap[i].feeItemMap.length; j++) {

               var buildFeeObj = {}
               buildFeeObj.feeItemId = boardBuildingInCommunityMap[i].feeItemMap[j].feeItemId
               buildFeeObj.amount = Number(boardBuildingInCommunityMap[i].feeItemMap[j].amount)
               buildFeeObj.name = boardBuildingInCommunityMap[i].feeItemMap[j].feeItemName
               buildFeeObj.y = Number(boardBuildingInCommunityMap[i].feeItemMap[j].historyAmount)
               buildFeeObj.z = Number(boardBuildingInCommunityMap[i].feeItemMap[j].currentAmount)
               buildFeeObj.houseNum = boardBuildingInCommunityMap[i].houseNum
               buildFeeObj.boardFee = boardBuildingInCommunityMap[i].boardFee

               buildFeeObj.buildingName = boardBuildingInCommunityMap[i].buildingName
               buildFeeObj.buildingId = boardBuildingInCommunityMap[i].buildingId


               buildFeeArr[i].push(buildFeeObj)
               // console.log("v=============buildFeeArr", buildFeeArr)
           }
       }

   }
}


buildFee(buildFeeArr, boardBuildingInCommunityMap, feeItemIdStr)
图表渲染
/*
* series: [{
  minPointSize: 8,
     innerSize: '20%',
     zMin: 0,
     name: 'countries',
     data: buildFeeArr[i]  直接渲染没个图表对应的数据
 }]
*   $(containerClass).highcharts 实例渲染图表
*/
   function buildFee(buildFeeArr, boardBuildingInCommunityMap, feeItemIdStr) {
        var buildFeeHtml = ""; //图表3 html

        // console.log("buildFeeArr==========", buildFeeArr)

        for (let i = 0; i < boardBuildingInCommunityMap.length; i++) {

            buildFeeHtml = ` <div class="unitOweBox-eveBox">

                    <div class="unitOweBox-eve">
                        <div class="unitOweBox-sum">
                            欠费户数<span class="unitOweBox-houseNum">${boardBuildingInCommunityMap[i].houseNum ? boardBuildingInCommunityMap[i].houseNum : 0}</span>
                            总欠费<span class="unitOweBox-boardFee">${boardBuildingInCommunityMap[i].boardFee ? boardBuildingInCommunityMap[i].boardFee : 0}</span>
                            <span class="detailBuildBtn" data-buildingId="${boardBuildingInCommunityMap[i].buildingId}">详情
                            </span>
                        </div>
                        <div>
                            <div id="buildFeeContainer${i}" style="height:230px;"></div>
                        </div>

                    </div>
                    <div class="unitOweBox-eveUnit">
                        ${boardBuildingInCommunityMap[i].buildingName}
                    </div>
                </div>`
            $(".unitOweBox").append(buildFeeHtml)
            if (boardBuildingInCommunityMap[i].feeItemMap && boardBuildingInCommunityMap[i].feeItemMap.length > 0) {

                var containerClass = '#buildFeeContainer' + i.toString()
                
                $(containerClass).highcharts({
                    credits: {
                        enabled: false
                    },
                    exporting: {
                        enabled: false
                    },
                    chart: {
                        type: 'variablepie'
                    },
                    title: {
                        text: ''
                    },
                    tooltip: {
                        headerFormat: '',
                        pointFormat: '<span style="color:{point.color}">\u25CF</span> <b> {point.name}</b><br/>' +
                            '历史欠费 <b>{point.y}</b><br/>' +
                            '本期应缴 <b>{point.z}</b><br/>'
                    },
                    series: [{
                        minPointSize: 8,
                        innerSize: '20%',
                        zMin: 0,
                        name: 'countries',
                        data: buildFeeArr[i]
                    }]
                });


            } else {
                $("#buildFeeContainer" + i).html("<div class='unitOweBox-noNum'>暂无数据</div>")

            }
            $(".detailBuildBtn").click(function () {
                $("#detailBuildBox .detailBuildBox-dialog").show()
                let feeItemIdStrArr = feeItemIdStr.split(",")
                let buildingidDetail = $(this).attr("data-buildingId")
                detailBuildBoxClick(feeItemIdStrArr, buildingidDetail)
            });
            $("#detailBuildBox .detailBuildBox-dialog .closeBtn").click(function () {
                $("#detailBuildBox .detailBuildBox-dialog").hide()
            })

        }


    }

数据格式如下

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值