jqgrid의 그룹화 방법을 사용하여 요약을 작성하려면 어떻게해야합니까?

아틸라 나기

jqgrid를 사용하는 요약에 문제가 있습니다. 나는 분과 시간이 있고 그것들을 합산하고 싶은 칼럼이 있습니다.

{name:'worked',index:'worked', width:'5%',title: false, align:"right",sortable:true,summaryType:'sum', summaryTpl:'<b>Total: {0}</b>'},
 groupingView : {
            groupField : ['worked'], 
            groupSummary : [true], 
            groupColumnShow : [true],
            groupText : ['<b>{0}</b>'], 
            groupCollapse : false, 
            groupOrder: ['asc']
        },

이것은 내 코드이며 정수가 있으면 작동합니다. 하지만 분 + 시간을 추가하고 싶습니다. 또한 출력이 NaN 인 이미지를 업로드합니다 여기에 이미지 설명 입력. 어떻게 관리 할 수 ​​있습니까? 미리 감사드립니다.

여기에 이미지 설명 입력

var fields = new Array("txName","ddManager","ddStatus","ddEtapa","ddGrupare");

var url = $.url(window.location.href.replace("#",""));
var sortname = url.param("sortname");
var sortorder = url.param("sortorder");
var pag =  url.param("page"); // dupa salvare proiecte
var page = url.param("page");

window.onhashchange = function() {
        jQuery("#list2").trigger("reloadGrid");

}
function toMinutes(hhmmString) {
    var parts = hhmmString.split(':');
    return (+parts[0]) * 60 + (+parts[1]); 
}

function toHHMMString(minutes) {
    var hh   = Math.floor(minutes / 60);
    var mm = minutes - (hh * 60);

    if (hh < 10) {
        hh   = "0" + hh;
    }

    if (mm < 10) {
        mm = "0" + mm;
    }

    return hh + ':' + mm;
}

function timeSummary(val, name, record) {
    return toHHMMString(toMinutes(val || '00:00') + toMinutes(record[name] || '00:00'));
}
jQuery("#list2").jqGrid({

    url:'/proiecte/json/',
    datatype: "json",

    colNames:['Nume proiect <span>(click dreapta pe un proiect pentru actiuni)</span>','',
    'Client', 'Manager','Etapa', 'Deadline','Lucru recent','Estimat','Lucrat','',''],

    colModel:[

        {name:'name',index:'name', sortable:true, width:'15%',title: false},

        {name:'finished',index:'finished', width:'2%',title: false},

        {name:'client',index:'client', width:'7%',sortable:true,title: false},

        {name:'managerid',index:'managerid',sortable:true, width:'7%',title: false,editable: true,edittype:'select',editoptions:{value:getUsers}},

        {name:'etapa',index:'etapa', width:'7%',title: false,editable: true,edittype:'select',editoptions:{value:getEtapaName}},

        {name:'deadline',index:'deadline', width:'7%',title: false,editable: true, align:"right"},

        {name:'lastactivity',index:'lastactivity', width:'6%',title: false,editable: true, align:"right"},     

        {name:'estimated',index:'estimated', width:'3%',title: false,editable: true, formatter:'integer', align:"right"},     

        {name:'worked',index:'worked', width:'8%',title: false, align:"right",sortable:true,
        summaryType:timeSummary, summaryTpl:'<b>Total: {0}</b>'},

        {name:'remove',index:'remove', width:'2%', sortable:false},

        {name:'date',index:'date', width:'4%',sortable:true, hidden: true,  summaryType:'sum', summaryTpl:'<b>Total: {0}</b>'}




    ],
    rowNum:20,    

    sortname: sortname,
    sortorder: sortorder,
    page: pag,

    viewrecords: true,

    caption:"",

    autowidth: true,

    shrinkToFit: true,

    width: '100%',

    height: '100%',

    altRows: true,

    altClass: '',

    gridview: true, //groupingGroupBy
    groupingView : {
        groupField : ['worked'], 
        groupSummary : [true], 
        groupColumnShow : [true],
       // groupText: ['<b>{0} - {1} reg(s)</b>']
        groupText : ['<b>{0}</b>'], 
        groupCollapse : false, 
        groupOrder: ['asc']
    },
    footerrow: true,

    loadComplete:function(request){
        var workedTotal = jQuery("#list2").jqGrid('getCol', 'date', false, 'sum');
        workedTotal = Math.floor(workedTotal / 3600)+" ore ";
        $('#totalRows').html(request.total + " rezultate");

        $(this).jqGrid('footerData','set',
        {name:'TOTAL', worked:workedTotal});

        $("[aria-describedby='list2_name']", this).contextMenu('myMenu1',{ 

            /*onContextMenu: function(e) {

                var rowId = $(e.target).closest("tr.jqgrow").attr("id");



                if($(e.target).closest("a").attr("class"))

                {   

                    $("#add").html('<a href="taskuri/edit/?add=1&pid='+rowId+'&uid=<?=$userid?>#?txName=&ddProject=-1&ddUser=<?=$userid?>&ddStatus=0&ddAssigner=-1&deadline=&page=1&sortname=taskid&sortorder=desc">Adauga task</a>');

                    $("#edit").html('<a href="taskuri#?txName=&ddProject='+rowId+'&ddUser=-1&ddStatus=-1&ddAssigner=-1&deadline=&page=1&sortname=taskid&sortorder=desc">Taskurile proiectului</a>');

                    $("#time").html('<a href="timp#?period=&ddProject='+rowId+'&ddUser=-1&ddActivity=-1&txTask=&page=1&sortname=date&sortorder=asc">Inregistrari timp proiect</a>');

                    $("#copyy").html('<a id="copy" href="proiecte/popUpProiecte/?&pid='+rowId+'">Copiaza task-uri</a>');

                    $("a#copy").fancybox({


                        'width'             : 400,

                        'height'            : 200,

                        'autoScale'         : false,

                        'transitionIn'      : 'none',

                        'transitionOut'     : 'none',

                        'scrolling'         : 'no',

                        'type'              : 'iframe'
                     })
                    return true;    
                }
                else
                    return false;
            }*/
        });
        $("#paging").html(request.userdata.pager);

        $(".numb").click(function() { 

            $("#list2").trigger("reloadGrid", [{page:parseInt($(this).text())}]);

        });
        doPagination();
        showConfirm();
        formatUrl();
        setBackUrl();

        $("#empty").hide(); 

        if(request.total == 0)

            $("#empty").show();
        /*$("#list2 tr").find("td:eq(8)").each(function(index, item) {
            var prog = 0;
            try {
                prog = parseInt($(item).text());
            }
            catch(ex) {
                prog = -1;
            }
            if(prog >=0)
                $(item).html('<div class="grafic"></div>').find("div.grafic").progressbar({ value: prog });
        });*/
    } ,
    beforeRequest:function() {
        parseUrl();

        var manager = jQuery("#ddManager").val();

        var status = jQuery("#ddStatus").val();

        var name = jQuery("#txName").val();

        var etapa = jQuery("#ddEtapa").val(); 

        var grupare = jQuery("#ddGrupare").val(); 

        jQuery("#list2").jqGrid('setGridParam',{url:"/proiecte/json/?manager="+manager+"&status="+status+"&name="+name+"&etapa="+etapa+"&grupare="+grupare});



    },

    cellEdit: true,

    cellsubmit: 'remote',

    cellurl: "/proiecte/editCell",

    afterSaveCell : function(rowid,iCol,cellcontent,value){
            $.post('/proiecte/editCell',{'colName':iCol,'pid': rowid, 'cellValue':cellcontent  }, function(data) {
                $("#list2").trigger("reloadGrid");  

            });

    },
    afterEditCell: function (id,name,val,iRow,iCol){

        if(name=='deadline') {

            jQuery("#"+iRow+"_deadline","#list2").datepicker({dateFormat:"yy-mm-dd"});

        }else if (name=='lastactivity'){
            jQuery("#"+iRow+"_lastactivity","#list2").datepicker({dateFormat:"yy-mm-dd"});
        }

    }
});
jQuery("#btnFilter").click(search);
function search(x) {
     x = formatUrl();
     jQuery("#list2").trigger("reloadGrid");

     $('#filter .formItem:first input').focus();
}
//filtrare
$("#txName").keyup(function(){
    search();
});
$("#ddManager").change(function(){
    search();
});
$("#ddStatus").change(function(){
    search();
});
$("#ddEtapa").change(function(){
    search();
});

function formatUrl(p) {

    var hash = "?";
    $.each(fields, function(index, value) { 
          hash += value + "=" + $("#"+value).val() + "&";
    });
    //$("#list2").jqGrid('setGridParam',{page:page});
    pageCheck = $("#list2").jqGrid('getGridParam','page');
    hash+="page="+pageCheck;
    hash+="&sortname="+$("#list2").jqGrid('getGridParam','sortname');
    hash+="&sortorder="+$("#list2").jqGrid('getGridParam','sortorder');

    window.location.hash = hash;    

    $('#filter .formItem:first input').focus(); 
    return hash;  

}


function remove(){
    if(confirm("Doriti sa stergeti proiectul selectat?")==true) {
        $.post('/proiecte/delete', {'pid': projectid }, function(data) {
            $("#list2").trigger("reloadGrid");  
        });
    }
}

function setBackUrl() {

    $("#list2 tr td[role=gridcell] a").each(function(index,item) {          

        $(item).attr("href",$(item).attr("href")+window.location.hash);         

    });

}


function parseUrl() {   

    var url = $.url(window.location.href.replace("#",""));



    $.each(fields, function(index, value) { 

        if(url.param(value)!=null)

            $("#"+value).val(url.param(value));

        //alert(url.param(value));

    });

}

function getUsers(){

    var projectid = jQuery('#list2').jqGrid('getGridParam','selrow');
    var items;
    items = JSON.parse(
        $.ajax({
          url: '/proiecte/getUsers/?projectid='+projectid,
          async: false
        }).responseText);    
    return items;
}
function getEtapaName(){

   // var projectid = jQuery('#list2').jqGrid('getGridParam','selrow');
    var items;
    items = JSON.parse(
        $.ajax({
          url: '/proiecte/getEtapaName',
          async: false
        }).responseText);    
    return items;
}
jQuery("#list2").jqGrid('navGrid','#pager2',{edit:false,add:false,del:false,search:false}); 


$(document).ready(function(){

    $('#filter .formItem:first input').focus();
});

/ ************************************************* * 그룹 영역 ************************************************ ***** / $ ( "# ddGrupare"). change (function () {var groupingName = $ (this) .val ();

    if (groupingName != -1) {
        $("#list2").jqGrid('groupingGroupBy', groupingName, {
             groupOrder : ['desc']
        });
    }else{
        $("#list2").jqGrid('groupingRemove');
    }
});
tp-bag

먼저 계산을 수행하려면 다음과 같은 몇 가지 JavaScript 함수가 필요합니다.

function toMinutes(hhmmString) {
    var parts = hhmmString.split(':');
    return (+parts[0]) * 60 + (+parts[1]); 
}

function toHHMMString(minutes) {
    var hh   = Math.floor(minutes / 60);
    var mm = minutes - (hh * 60);

    if (hh < 10) {
        hh   = "0" + hh;
    }

    if (mm < 10) {
        mm = "0" + mm;
    }

    return hh + ':' + mm;
}

function timeSummary(val, name, record) {
    return toHHMMString(toMinutes(val || '00:00') + toMinutes(record[name] || '00:00'));
}

그런 다음 summaryType기능을 값 으로 사용할 수있는 사실을 사용해야합니다 .

{name: 'worked', index: 'worked', width: '5%', title: false, align: 'right', sortable: true, summaryType: timeSummary, summaryTpl: '<b>Total: {0}</b>' }

원하는 결과를 얻을 수 있습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

활성화 및 비활성화 된 사용자를 표시하는 AD 그룹의 모든 구성원을 나열하려면 어떻게해야합니까?

분류에서Dev

디렉토리의 모든 파일에서 결합 및 요약 된 도메인별로 이메일을 그룹화하려면 어떻게해야합니까?

분류에서Dev

Linq로 그룹 SQL을 작성하려면 어떻게해야합니까?

분류에서Dev

그룹화하지 않고 행의 하위 그룹을 합산하는 행을 생성하려면 어떻게해야합니까?

분류에서Dev

Installshield 2015에서 대화 상자를 사용하여 프로그램 그룹 이름을 정의하려면 어떻게해야합니까?

분류에서Dev

IntelliJ IDEA를 사용하여 데이터 소스 연결을 임의의 범주로 "그룹화"하려면 어떻게해야합니까?

분류에서Dev

엄격한 보안 정책을 사용하여 16.04의 암호화 된 HDD에서 sudo 그룹에 다시 추가하려면 어떻게해야합니까?

분류에서Dev

창을 하나로 그룹화하려면 어떻게해야합니까?

분류에서Dev

정렬 된 목록을이 목록의 연속 요소의 시작 및 끝점의 튜플로 그룹화하려면 어떻게해야합니까?

분류에서Dev

AWS : CloudFormation을 사용하여 Network Load Balancer 대상 그룹을 생성하려면 어떻게해야합니까?

분류에서Dev

Pandas에서 셀 값을 "그룹화"하려면 어떻게해야합니까?

분류에서Dev

행 값을 열로 그룹화하려면 어떻게해야합니까?

분류에서Dev

laravel nova의 전역 검색에서 작업을 비활성화하려면 어떻게해야합니까?

분류에서Dev

팬더-다른 열을 그룹화하여 그룹의 평균을 계산하려면 어떻게해야합니까?

분류에서Dev

SQL을 사용하여 두 개의 SQLite 테이블을 동기화하려면 어떻게해야합니까?

분류에서Dev

AWS CLI를 사용하여 두 개의 Amazon 버킷을 동기화하려면 어떻게해야합니까?

분류에서Dev

동일한 조건으로 하나의 try / except 블록에서 단일 및 루프 작업을 그룹화하려면 어떻게해야합니까?

분류에서Dev

zswap을 활성화하려면 어떻게해야합니까?

분류에서Dev

zswap을 활성화하려면 어떻게해야합니까?

분류에서Dev

양식을 사용하여 MS Word에서 계약 작성을 자동화하려면 어떻게해야합니까?

분류에서Dev

xbox 용 프로그램을 작성하고 GPU를 사용하려면 어떻게해야합니까?

분류에서Dev

연속 속성을 기반으로 클래스의 개체를 그룹화하려면 어떻게해야합니까?

분류에서Dev

Docker 데몬의 "디버그"로깅을 활성화하려면 어떻게해야합니까? (우분투 16.04)

분류에서Dev

요약을 작성하고 결과를 그룹별로 곱하려면 어떻게합니까?

분류에서Dev

Postgres에서 다른 그룹으로 그룹화 된 최대 값을 사용하여 전체 레코드를 검색하려면 어떻게해야합니까?

분류에서Dev

ng-repeat를 사용하여 사용자 정의 html 태그 또는 지시문을 생성하려면 어떻게해야합니까?

분류에서Dev

hashlib의 업데이트 방법을 사용할 때 연결을 비활성화하려면 어떻게해야합니까?

분류에서Dev

GPRename의 정규식 기능을 사용하여 일치 그룹을 '교체'에 다시 삽입하려면 어떻게해야합니까?

분류에서Dev

GPRename의 정규식 기능을 사용하여 일치 그룹을 '교체'에 다시 삽입하려면 어떻게해야합니까?

Related 관련 기사

  1. 1

    활성화 및 비활성화 된 사용자를 표시하는 AD 그룹의 모든 구성원을 나열하려면 어떻게해야합니까?

  2. 2

    디렉토리의 모든 파일에서 결합 및 요약 된 도메인별로 이메일을 그룹화하려면 어떻게해야합니까?

  3. 3

    Linq로 그룹 SQL을 작성하려면 어떻게해야합니까?

  4. 4

    그룹화하지 않고 행의 하위 그룹을 합산하는 행을 생성하려면 어떻게해야합니까?

  5. 5

    Installshield 2015에서 대화 상자를 사용하여 프로그램 그룹 이름을 정의하려면 어떻게해야합니까?

  6. 6

    IntelliJ IDEA를 사용하여 데이터 소스 연결을 임의의 범주로 "그룹화"하려면 어떻게해야합니까?

  7. 7

    엄격한 보안 정책을 사용하여 16.04의 암호화 된 HDD에서 sudo 그룹에 다시 추가하려면 어떻게해야합니까?

  8. 8

    창을 하나로 그룹화하려면 어떻게해야합니까?

  9. 9

    정렬 된 목록을이 목록의 연속 요소의 시작 및 끝점의 튜플로 그룹화하려면 어떻게해야합니까?

  10. 10

    AWS : CloudFormation을 사용하여 Network Load Balancer 대상 그룹을 생성하려면 어떻게해야합니까?

  11. 11

    Pandas에서 셀 값을 "그룹화"하려면 어떻게해야합니까?

  12. 12

    행 값을 열로 그룹화하려면 어떻게해야합니까?

  13. 13

    laravel nova의 전역 검색에서 작업을 비활성화하려면 어떻게해야합니까?

  14. 14

    팬더-다른 열을 그룹화하여 그룹의 평균을 계산하려면 어떻게해야합니까?

  15. 15

    SQL을 사용하여 두 개의 SQLite 테이블을 동기화하려면 어떻게해야합니까?

  16. 16

    AWS CLI를 사용하여 두 개의 Amazon 버킷을 동기화하려면 어떻게해야합니까?

  17. 17

    동일한 조건으로 하나의 try / except 블록에서 단일 및 루프 작업을 그룹화하려면 어떻게해야합니까?

  18. 18

    zswap을 활성화하려면 어떻게해야합니까?

  19. 19

    zswap을 활성화하려면 어떻게해야합니까?

  20. 20

    양식을 사용하여 MS Word에서 계약 작성을 자동화하려면 어떻게해야합니까?

  21. 21

    xbox 용 프로그램을 작성하고 GPU를 사용하려면 어떻게해야합니까?

  22. 22

    연속 속성을 기반으로 클래스의 개체를 그룹화하려면 어떻게해야합니까?

  23. 23

    Docker 데몬의 "디버그"로깅을 활성화하려면 어떻게해야합니까? (우분투 16.04)

  24. 24

    요약을 작성하고 결과를 그룹별로 곱하려면 어떻게합니까?

  25. 25

    Postgres에서 다른 그룹으로 그룹화 된 최대 값을 사용하여 전체 레코드를 검색하려면 어떻게해야합니까?

  26. 26

    ng-repeat를 사용하여 사용자 정의 html 태그 또는 지시문을 생성하려면 어떻게해야합니까?

  27. 27

    hashlib의 업데이트 방법을 사용할 때 연결을 비활성화하려면 어떻게해야합니까?

  28. 28

    GPRename의 정규식 기능을 사용하여 일치 그룹을 '교체'에 다시 삽입하려면 어떻게해야합니까?

  29. 29

    GPRename의 정규식 기능을 사용하여 일치 그룹을 '교체'에 다시 삽입하려면 어떻게해야합니까?

뜨겁다태그

보관