• echart series 那些事儿[第四篇]


     

    function(chartOption){

    chartOption = $nps$.deepCopyTo({}, chartOption);
    var chartDataList = this.__portal.componentItemMap.root.activity.chartDataList || [];
    // 根据图标类型 改变趋势图
    var chartType = this.__portal.componentItemMap.bar.sourceConfig.type || this.__portal.componentItemMap.line.sourceConfig.type;
    // 根据指标名称显示对应的数据
    var yCategory = this.__portal.componentItemMap.className.getRawValue();

    var xAxisData = [],yAxisData = [],xTime = [];
    chartDataList.sort(function(item1,item2) {return item1.time - item2.time});
    chartDataList.map(function(item) {
    xTime.push(item.time);
    xAxisData.push($nps$.utils.dateTimeRenderer(item.time,'d H:i'));
    });

    // 时间列去重
    xTime = $nps$.unique(xTime);
    xAxisData = $nps$.unique(xAxisData);

    // 取出所有得地市
    var chartCfg = [];
    chartDataList.map(function(item) {
    if (xTime[0] == item.time) {
    if(item['城市']) {
    var obj = {};
    obj['name'] = item['城市'];
    chartCfg.push(obj);
    }
    }
    });
    // console.log('系列地市',chartCfg);
    var chartMapData = {};
    chartCfg.forEach(function(item) {
    chartMapData[item.name] = [];
    });

    var tempMap = {};
    for (var i = 0; i < chartDataList.length; i++) {
    var dataItem = chartDataList[i];
    tempMap[dataItem.time] = tempMap[dataItem.time] || {};
    tempMap[dataItem.time][dataItem['城市']] = dataItem;
    };
    for (var i = 0; i < xTime.length; i++) {
    var time = xTime[i];
    var dataItem = tempMap[time] || {};
    for (var j = 0; j < chartCfg.length; j++) {
    var k = chartCfg[j].name;
    switch (yCategory) {
    case '挑战字':
    chartMapData[k].push(dataItem[k] ? dataItem[k]['挑战字请求次数'] : 0);
    break;
    case '访问令牌':
    chartMapData[k].push(dataItem[k] ? dataItem[k]['访问令牌请求次数'] : 0);
    break;
    case 'ACS认证':
    chartMapData[k].push(dataItem[k] ? dataItem[k]['ACS认证请求次数'] : 0);
    break;
    case 'luancher认证':
    chartMapData[k].push(dataItem[k] ? dataItem[k]['Luancher请求次数'] : 0);
    break;
    }
    }
    };
    console.log(chartMapData);
    if (xTime.length == 1 || chartType == 'bar') {
    chartOption.series[0].type = 'bar';
    chartOption.legend.type = 'scroll';
    chartOption.xAxis[0].boundaryGap = true; // 数据是否从0 开始排列x轴
    } else {
    // 以时间为x轴 "type": "scroll",
    chartOption.series[0].type = 'line';
    chartOption.legend.type = 'scroll';
    chartOption.xAxis[0].boundaryGap = false; // 数据是否从0 开始排列x轴
    }
    var firstSeries = chartOption.series[0];
    var chartSeries = [];
    chartOption.legend.selected = {};
    var colors = ['#9bd049', '#1d9af9', '#663db7', '#f9c928', '#d05221', '#21d0b4'];
    for (var i = 0; i < chartCfg.length; i ++) {
    var cfgItem = chartCfg[i];
    if (cfgItem.name == '全省') {
    chartOption.legend.selected[cfgItem.name] = false;
    }
    if(i > 5) {
    chartOption.legend.selected[cfgItem.name] = false;
    }
    var serieItem = $nps$.applyIf({
    name: cfgItem.name,
    color: colors[chartSeries.length],
    // stack: '总量',
    data: chartMapData[cfgItem.name] || []
    }, firstSeries);
    chartSeries.push(serieItem);
    };

    // tooltip浮窗未知
    chartOption.tooltip.position = function(point, params, dom, rect, size){
    var pos = [point[0]-10, point[1]+10];
    var contentSize = size.contentSize, viewSize = size.viewSize;
    pos[0] = Math.min(viewSize[0]-contentSize[0], pos[0]);
    pos[1] = Math.min(viewSize[1]-contentSize[1], pos[1]);

    return pos;
    };

    chartOption.series = chartSeries;
    chartOption.xAxis[0].data = xAxisData;

    return chartOption;
    }

    // 数据格式

  • 相关阅读:
    C语言与汇编的嵌入式编程:统计字符串中各字符出现的次数
    一个汇编小demo
    C语言与汇编的嵌入式编程:求100以内素数
    TCP网络调试助手上提示错误:“1035 未知错误”的有效解决方法,本人实测确实可行
    一个支持国密SM2/SM3/SM4/SM9/ZUC/SSL的密码工具箱
    DRM(device resource management)介绍
    TODO
    pinctrl(1)——pinctrl子系统的使用
    GPIO使用总结
    Gerrit使用技巧
  • 原文地址:https://www.cnblogs.com/stevenzhangcy/p/12575039.html
Copyright © 2020-2023  润新知