jqGrid - 如何跟踪本地操作的速度

时间:2016-05-15 13:00:53

标签: jqgrid free-jqgrid

作为一项任务我收到了2个应用程序,一个是优化的,一个是未优化的,我使用免费的jqGrid来显示来自数据库的数据。

我已成功创建了两者,但我想跟踪本地操作完成的速度(分页,搜索,排序)。

我已经尝试为触发操作的每个按钮设置事件,但它们似乎没有触发...我想知道是否有更好的内置于jqGrid我可以使用或建议有帮助我解决了这个问题。

我的jqGrid代码如下:

$(function () {
    var colModelSettings = [
        {name:'id', label:'id',key: true, hidden: true, width:10,sorttype:'number',editable: true},     
        {name:'judet',label:'Judet',width:70,   align: 'center',editable:true},
        {name:'localitate',label:'Localitate',width:80,editable:true,searchoptions: {sopt: ['eq','bw','ew','cn']},align: 'center'},
        {name:'tipStrada',label:'tipStrada',editable:true,searchoptions: {sopt: ['eq','bw','ew','cn']},width:100,align: 'center'  },
        {name:'denumire',label:'denumire',editable:true,width:100,searchoptions: {sopt: ['eq','bw','ew','cn']},align: 'center'},
        {name:'cod',label:'cod',width:90,editable:true,align: 'center'}
        ];
    var beforeEvent = 0;    
    $("#gridAdrese").jqGrid({
        pager: $("#pagerGrid"), 
        url: "/UnoptimizedProject/rest/fetchData",
        datatype: "json",
        mtype: "POST",
        loadonce: true,
        forceClientSorting:true,
        height: window.innerHeight-250,
        sortname: 'id',
        ajaxGridOptions: { contentType: 'application/json; charset=utf-8' },
        serializeGridData: function (postData) {
            if (postData.searchField === undefined) postData.searchField = null;
            if (postData.searchString === undefined) postData.searchString = null;
            if (postData.searchOper === undefined) postData.searchOper = null;
            return JSON.stringify(postData);
        },
        rowNum: 5000,
        viewrecords: true,
        loadComplete: function(){
            if(beforeEvent !== undefined){
                var afterEvent = new Date().getTime();
                console.log(afterEvent- beforeEvent);
                beforeEvent = 0;
            }
        },
        sortorder: 'asc', 
        caption:'Coduri Postale Neoptimizat' ,
        autowidth: true,
        colModel: colModelSettings,
    });
    $("#gridAdrese").jqGrid('navGrid', "#pagerGrid", {edit:false, add:false, del:false, save:false, cancel:false, search:true, searchtext: 'Search', refresh: false});

    $("#jqgh_gridAdrese_judet, #jqgh_gridAdrese_localitate, #jqgh_gridAdrese_tipStrada, #jqgh_gridAdrese_denumire, #jqgh_gridAdrese_cod ").on("click",function(){
        beforeEvent = new Date().getTime();
        console.log("Sorting");
    })
    $("#fbox_gridAdrese_search").on("click",function(){
        beforeEvent = new Date().getTime();
        console.log("searching");
    });

    $("#next_pagerGrid , #last_pagerGrid, #prev_pagerGrid, #first_pagerGrid").on("click",function(){
        beforeEvent = new Date().getTime();
        console.log("paging");
    })
});

1 个答案:

答案 0 :(得分:1)

您可以执行以下操作:

var startTime, measureTime = false, timeInterval,
    startMesure = function () {
        startTime = new Date();
        measureTime = true;
    };

startMesure();
$("#gridAdrese").jqGrid({
    url: "/UnoptimizedProject/rest/fetchData",
    ...
    onSortCol: function () {
        startMesure();
    },
    onPaging: function (pgButton, options) {
        //if (pgButton === "records") {
            startMesure();
        //}
    },
    searching: {
        closeAfterSearch: true,
        closeAfterReset: true,
        closeOnEscape: true,
        searchOnEnter: true,
        beforeSearch: function () {
            startMesure();
            return false; // allow filtering
        },
        onSearch: function () {
            startMesure();
        },
        onReset: function () {
            startMesure();
        },
    },
    loadComplete: function () {
        if (measureTime) {
            timeInterval = new Date() - startTime;
            setTimeout(function () {
                alert("Total loading time: " + timeInterval + "ms\nFull time: " +
                    (new Date() - startTime));
            }, 50);
            measureTime = false;
        }
    }
}).jqGrid("filterToolbar").jqGrid("navGrid");

我们将startTime的{​​{1}}重置为排序,分页或过滤开始时的当前时间。