图表工具Echart 封装数据动态加载

1.用图表展示监控内容(展示内容包含多项,多条线),后台服务提供数据。

     本次选择的是Echart,找到了 https://www.echartsjs.com/zh/cheat-sheet.html ,官网中的内容挺全的,想到的能实现的都可以在这里面找到。可以参考这看看。

2. 实例演示

     下载下来JS包,添加到项目中,让我们愉快的来使用吧!!!我们Echart的首秀

前端展示数据:    

---添加引用
<script src="~/Scripts/plugins/echarts/echarts.common.min.js"></script>

----html div 容器 <div> <div id="ManagerEntityTrend" style="width:90%;height:400px;margin-bottom: 30px;"></div> </div>
<script type="text/javascript"> $(document).ready(function() { echartSetting(); }); var myChart = echarts.init(document.getElementById('ManagerEntityTrend')); function echartSetting() { // 指定图表的配置项和数据 option = { title: { text: 'FMSDDQ最近30天访问情况' }, tooltip: { trigger: 'axis' }, legend: { data:[] }, grid: { left: '3%', right: '4%', bottom: '3%', containLabel: true }, toolbox: { feature: { saveAsImage: {} } }, dataZoom: [ { id: 'dataZoomX', type: 'slider', xAxisIndex: [0], filterMode: 'filter' } ], xAxis: { type: 'category', boundaryGap: false, data:[] }, yAxis: { type: 'value' }, series: [] }; // 使用刚指定的配置项和数据显示图表。 myChart.setOption(option); getDate(); } function getDate() { $.get('/Monitor/DDQmonitorIndexGraphList/', { dataTypeName: ""}, function (data) { if (data.msg!="OK") { layer.msg(data.msg); return; } //组装成自己需要的数据 var serieArray = []; for (var i = 0; i < data.data.Series.length; i++) { var item = { name: data.data.Series[i].Name, type: 'line', data: data.data.Series[i].Data }; serieArray.push(item); }; myChart.setOption({ legend: { data: data.data.Legend }, xAxis: { data: data.data.XAxis }, series: serieArray }); }); } </script>

服务端组装数据:              

    /// <summary>  
    /// Echart 图表工具中的实体封装
    /// </summary>
    public class EchartDataModel<T>
    {
        public EchartDataModel() {
            Legend = new List<string>();
            XAxis = new List<string>();
            YAxis = new List<string>();
            Series = new List<EchartSerie<T>>();
        }
        /// <summary>
        /// 要展示的图表
        /// </summary>
        public List<string> Legend { get; set; }
        /// <summary>
        /// X轴名称
        /// </summary>
        public List<string> XAxis { get; set; }
        /// <summary>
        /// Y轴名称
        /// </summary>
        public List<string> YAxis { get; set; }
        /// <summary>
        /// X轴要展示的内容
        /// </summary>
        public List<EchartSerie<T>> Series { get; set; }

    }
    /// <summary>
    /// Echart 要展示的数据元素
    /// </summary>
    /// <typeparam name="T"></typeparam>
    public class EchartSerie<T>
    {
        public EchartSerie()
        {
            Data = new List<T>();
        }
        /// <summary>
        /// 名称
        /// </summary>
        public string Name { get; set; }
        /// <summary>
        /// 展示类型
        /// </summary>
        public string Type { get; set; }
        /// <summary>
        /// 统计方式
        /// </summary>
        public string Stack { get; set; }
        /// <summary>
        /// 要展示的数据直接数组的方式
        /// </summary>
        public List<T> Data { get; set; }
    }

/// <summary>
///组装数据
/// </summary>
/// <returns></returns>
public async Task<ActionResult> DDQmonitorIndexGraphList(string dataTypeName,DateTime? dateTimeStart,DateTime? dateTimeEnd)
{
 var echartDateModel = new EchartDataModel<int>();
            echartDateModel.Legend = new List<string> { "邮件营销", "联盟广告" };
            echartDateModel.XAxis = new List<string> { "1", "2","3" };
            echartDateModel.Series = new List<EchartSeries<int>>() { new EchartSeries<int>() {Name="邮件营销",Data=new List<int>{ 120, 132,150 } },
                new EchartSeries<int>() {Name="联盟广告", Data=new List<int>{ 220, 182,1 } }};

            ///把实体返回
            
            return Json(new { code = 1, msg = "OK",data= echartDateModel}, JsonRequestBehavior.AllowGet);
}

 

 

 

 

 

 

posted @ 2019-09-18 15:08  冰融心  阅读(505)  评论(0编辑  收藏  举报