码迷,mamicode.com
首页 > 其他好文 > 详细

EasyUI grid的统计扩展插件

时间:2015-06-09 14:18:46      阅读:254      评论:0      收藏:0      [点我收藏+]

标签:

$.extend($.fn.datagrid.methods, {
    statistics: function (jq) {
        var opt = $(jq).datagrid(‘options‘).columns;
        var rows = $(jq).datagrid("getRows");
         
        var footer = new Array();
        footer[‘sum‘] = "";
        footer[‘avg‘] = "";
        footer[‘max‘] = "";
        footer[‘min‘] = "";
        //处理需要统计列的数据
        sisFooterData(opt,footer);
 
        var frozenColumns = $(jq).datagrid(‘options‘).frozenColumns;
        var objfield = opt[0][0].field;
        if(frozenColumns.length != 0){
            objfield = frozenColumns[0][0].field;
            //处理冻结列中需要统计列的数据
            sisFooterData(opt,footer);
        }
        var footerObj = new Array();
         
        if(footer[‘sum‘] != ""){
            var tmp = ‘{‘ + footer[‘sum‘].substring(0,footer[‘sum‘].length - 1) + "}";
            var obj = eval(‘(‘ + tmp + ‘)‘);
            if(obj[objfield] == undefined){
                footer[‘sum‘] += ‘"‘ + objfield + ‘":"<b>合计:</b>"‘;
                obj = eval(‘({‘ + footer[‘sum‘] + ‘})‘);
            }else{
                obj[objfield] = "<b>合计:</b>" + obj[objfield];
            }
            footerObj.push(obj);
        }
         
        if(footer[‘avg‘] != ""){
            var tmp = ‘{‘ + footer[‘avg‘].substring(0,footer[‘avg‘].length - 1) + "}";
            var obj = eval(‘(‘ + tmp + ‘)‘);
            if(obj[objfield] == undefined){
                footer[‘avg‘] += ‘"‘ + objfield + ‘":"<b>平均值:</b>"‘;
                obj = eval(‘({‘ + footer[‘avg‘] + ‘})‘);
            }else{
                obj[objfield] = "<b>平均值:</b>" + obj[objfield];
            }
            footerObj.push(obj);
        }
         
        if(footer[‘max‘] != ""){
            var tmp = ‘{‘ + footer[‘max‘].substring(0,footer[‘max‘].length - 1) + "}";
            var obj = eval(‘(‘ + tmp + ‘)‘);
             
            if(obj[objfield] == undefined){
                footer[‘max‘] += ‘"‘ + objfield + ‘":"<b>最大值:</b>"‘;
                obj = eval(‘({‘ + footer[‘max‘] + ‘})‘);
            }else{
                obj[objfield] = "<b>最大值:</b>" + obj[objfield];
            }
            footerObj.push(obj);
        }
         
        if(footer[‘min‘] != ""){
            var tmp = ‘{‘ + footer[‘min‘].substring(0,footer[‘min‘].length - 1) + "}";
            var obj = eval(‘(‘ + tmp + ‘)‘);
             
            if(obj[objfield] == undefined){
                footer[‘min‘] += ‘"‘ + objfield + ‘":"<b>最小值:</b>"‘;
                obj = eval(‘({‘ + footer[‘min‘] + ‘})‘);
            }else{
                obj[objfield] = "<b>最小值:</b>" + obj[objfield];
            }
            footerObj.push(obj);
        }
         
        if(footerObj.length > 0){
            $(jq).datagrid(‘reloadFooter‘,footerObj); 
        }
         
        function sisFooterData(opt,footer){
            for (var j = 0; j < opt.length; j++) {
                for(var i=0; i<opt[j].length; i++){
                     
                    if(!opt[j][i].field) continue;
                     
                    if(opt[j][i].sum){
                        footer[‘sum‘] = footer[‘sum‘] + sum(opt[j][i].field)+ ‘,‘;
                    }
                    if(opt[j][i].avg){
                        footer[‘avg‘] = footer[‘avg‘] + avg(opt[j][i].field)+ ‘,‘;
                    }
                    if(opt[j][i].max){
                        footer[‘max‘] = footer[‘max‘] + max(opt[j][i].field)+ ‘,‘;
                    }
                    if(opt[j][i].min){
                        footer[‘min‘] = footer[‘min‘] + min(opt[j][i].field)+ ‘,‘;
                    }
                }
            }
            return footer;
        }
         
        function sum(filed){
            var sumNum = 0;
            for(var i=0;i<rows.length;i++){
                sumNum += Number(rows[i][filed]);
            }           
            return ‘"‘ + filed + ‘":‘ + sumNum;
        };
         
        function avg(filed){
            var sumNum = 0;
            for(var i=0;i<rows.length;i++){
                sumNum += Number(rows[i][filed]);
            }
             
            if(rows.length != 0)
                sumNum = sumNum/rows.length;
             
            return ‘"‘ + filed + ‘":‘+ sumNum;
        }
 
        function max(filed){
            var max = 0;
            for(var i=0;i<rows.length;i++){
                if(i==0){
                    max = Number(rows[i][filed]);
                }else{
                    max = Math.max(max,Number(rows[i][filed]));
                }
            }
            return ‘"‘ + filed + ‘":‘+ max;
        }
         
        function min(filed){
            var min = 0;
            for(var i=0;i<rows.length;i++){
                if(i==0){
                    min = Number(rows[i][filed]);
                }else{
                    min = Math.min(min,Number(rows[i][filed]));
                }
            }
            return ‘"‘ + filed + ‘":‘+ min;
        }
    }
});

//使用方法

//sum、avg、max、min需要什么加什么
{field:‘mc‘,title:‘设备数‘,width:120,align:‘right‘,sum:true},



EasyUI grid的统计扩展插件

标签:

原文地址:http://my.oschina.net/kkrgwbj/blog/464504

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!