PivotUI JS中的小时总数,分钟数

时间:2018-07-16 14:20:33

标签: javascript php jquery codeigniter pivottable.js

Example

pivotUI js 我遇到pivotUI js (图表创建JS)问题。
我想将小时数字段的总值计算为小时:分钟格式。但是ivotUI js默认功能对我的要求没有帮助。
我想创建自定义函数以计算持续时间到小时和分钟的格式。
有什么建议吗?
我的代码如下。

pip (9.0.1)

1 个答案:

答案 0 :(得分:0)

在非常深入的调试之后,最终我通过在 pivot.js 文件上添加用于计算持续时间的自定义函数来获得解决方案。

第1步:首先,在js上定义您的自定义变量,就像在ivot.js中使用的其他其他变量一样(hourMinuteFormat,hourMinuteInt是自定义变量)。 例如:

var PivotData, addSeparators, aggregatorTemplates, aggregators, dayNamesEn, derivers, getSort, locales, mthNamesEn, naturalSort, numberFormat, pivotTableRenderer, renderers, sortAs, usFmt, usFmtInt, usFmtPct, zeroPad, hourMinuteFormat, hourMinuteInt;

第2步:创建函数,该函数获取持续时间并通过如下逻辑计算总时数和总分钟数。

 hourMinuteFormat = function (opts) {
            var defaults;
            defaults = {
                separator: ":"
            };
            opts = $.extend({}, defaults, opts);
            return function (x) {
                var totalh = Math.floor(x / 60);
                if (totalh < 10)
                {
                    totalh = "0" + totalh;
                }
                var totalm = x % 60;
                if (totalm < 10)
                {
                    totalm = "0" + totalm;
                }
                var result = totalh + opts.separator + totalm;
                return result;
            };
        };
        hourMinuteInt = hourMinuteFormat();  

第3步:之后,需要再创建一个将持续时间接受为“ hh:mm”格式的函数,并进行进一步的处理以使用“:”将其分割并存储在不同的变量(例如小时)中分钟。

 HoursMinutes: function (formatter) {
                if (formatter == null) {
                    formatter = hourMinuteInt;
                }

                return function (arg) {
                    var attr;
                    attr = arg[0];
                    return function (data, rowKey, colKey) {
                        return {
                            sum: 0,
                            push: function (record) {
                                if (record[attr]) {
                                    var minute = parseInt((record[attr]).split(':')[1]);
                                    var hour = parseInt((record[attr]).split(':')[0]) * 60;
                                    return this.sum += minute + hour;
                                }
                            },
                            value: function () {
                                return this.sum;
                            },
                            format: formatter,
                            numInputs: attr != null ? 0 : 1
                        };
                    };
                };
            },  

步骤4:查找在其中定义了其他默认函数的$.pivotUtilities数组,该数组定义您的自定义函数,如下所示:

 $.pivotUtilities = {
            aggregatorTemplates: aggregatorTemplates,
            aggregators: aggregators,
            renderers: renderers,
            derivers: derivers,
            locales: locales,
            naturalSort: naturalSort,
            numberFormat: numberFormat,
            sortAs: sortAs,
            PivotData: PivotData,
            hourMinuteFormat: hourMinuteFormat //custom function
        };  

步骤5:之后,在要计算持续时间的文件中,需要使用名为 HoursMinutes()的函数,如下所示。

 var renderers = $.extend($.pivotUtilities.renderers, $.pivotUtilities.export_renderers, $.pivotUtilities.gchart_renderers, $.pivotUtilities.derivers);
                    var tpl = $.pivotUtilities.aggregatorTemplates;
                    $("#output").pivotUI(data.data, {
                        renderers: renderers,
                        rows: ["fieldOne", "fieldTwo", "fieldThree", "Duration"],
                        cols: [],
                        aggregators: {
                            "Total Time": function () {
                                return tpl.HoursMinutes()(["Duration"]);
                            }
                        },
                        aggregatorName: "Total Time"
                    });  
我希望它是可以理解的,如果有人有疑问,可以问我。