Как сделать несколько столбцов в один, если есть один и тот же первый столбец в datatable? - PullRequest
0 голосов
/ 23 сентября 2019

Я новичок в использовании datatable, я хочу сделать сумму для второй строки в декабре в первую строку?то, что я получил до сих пор:

enter image description here

настолько, что мне нужно получить данные - первые два ряда объединяются в один, потому что у меня один и тот же регистр, а у меня только 2строки, пример как это: enter image description here

и код, который я получил до сих пор:

$('#datatable').DataTable({
                    paging: false,
                    data: data,
                    ordering: false,
                    searching: false,
                    // columnDefs:[{className:"total_dr", targets:2}, {className:"total_cr", targets:3}],
                    columns: [
                        {
                            data: 'group', 
                            name: 'group', 
                            'render': function (data, type, row) {
                                // debugger;
                                var dt = row.group[0];
                                
                                return dt;
                            }
                        },
                        // {data: 'date', name: 'date'}, 
                        {
                            data: 'ledger',
                            name: 'ledger',
                            'render': function (data, type, row) {
                                
                                var dataLedger = row.ledger.code + ' - ' + row.ledger.name;
                                
                                return dataLedger;
                            }
                        },
                        {
                            data: 'amount', 
                            name: 'amount',
                            'render': function (data, type, row) {
                                var amount = '-';

                                if(row.date == '1'){
                                    var amount = row.amount;
                                }
                                
                                return amount;
                            }
                        },
                        {
                            data: 'amount', 
                            name: 'amount',
                            'render': function (data, type, row) {
                                var amount = '-';

                                if(row.date == '2'){
                                    var amount = row.amount;
                                }
                                
                                return amount;
                            }
                        },
                        {
                            data: 'amount', 
                            name: 'amount',
                            'render': function (data, type, row) {
                                var amount = '-';

                                if(row.date == '3'){
                                    var amount = row.amount;
                                }
                                
                                return amount;
                            }
                        },
                        {
                            data: 'amount', 
                            name: 'amount',
                            'render': function (data, type, row) {
                                var amount = '-';

                                if(row.date == '4'){
                                    var amount = row.amount;
                                }
                                
                                return amount;
                            }
                        },
                        {
                            data: 'amount', 
                            name: 'amount',
                            'render': function (data, type, row) {
                                var amount = '-';

                                if(row.date == '5'){
                                    var amount = row.amount;
                                }
                                
                                return amount;
                            }
                        },
                        {
                            data: 'amount', 
                            name: 'amount',
                            'render': function (data, type, row) {
                                var amount = '-';

                                if(row.date == '6'){
                                    var amount = row.amount;
                                }
                                
                                return amount;
                            }
                        },
                        {
                            data: 'amount', 
                            name: 'amount',
                            'render': function (data, type, row) {
                                var amount = '-';

                                if(row.date == '7'){
                                    var amount = row.amount;
                                }
                                
                                return amount;
                            }
                        },
                        {
                            data: 'amount', 
                            name: 'amount',
                            'render': function (data, type, row) {
                                var amount = '-';

                                if(row.date == '8'){
                                    var amount = row.amount;
                                }
                                
                                return amount;
                            }
                        },
                        {
                            data: 'amount', 
                            name: 'amount',
                            'render': function (data, type, row) {
                                var amount = '-';

                                if(row.date == '9'){
                                    var amount = row.amount;
                                }
                                
                                return amount;
                            }
                        },
                        {
                            data: 'amount', 
                            name: 'amount',
                            'render': function (data, type, row) {
                                var amount = '-';

                                if(row.date == '10'){
                                    var amount = row.amount;
                                }
                                
                                return amount;
                            }
                        },
                        {
                            data: 'amount', 
                            name: 'amount',
                            'render': function (data, type, row) {
                                var amount = '-';

                                if(row.date == '11'){
                                    var amount = row.amount;
                                }
                                
                                return amount;
                            }
                        },
                        {
                            data: 'amount', 
                            name: 'amount',
                            'render': function (data, type, row) {
                                var amount = '-';

                                if(row.date == '12'){
                                    var amount = row.amount;
                                }
                                
                                return amount;
                            }
                        }
                    ],
                    drawCallback: function ( settings ) {
                            var api = this.api();
                            var rows = api.rows( {page:'all'} ).nodes();
                            var last=null;
                            
                            // Remove the formatting to get integer data for summation
                            var intVal = function ( i ) {
                                return typeof i === 'string' ?
                                    i.replace(/[\$,]/g, '')*1 :
                                    typeof i === 'number' ?
                                            i : 0;
                            };
                            
                            total=[];
                            api.column(0, {page:'all'} ).data().each( function ( group, i ) {
                                console.log(group[0]);
                                group_assoc=group[0].replace(' ',"_");
                                
                                if(typeof total[group_assoc] != 'undefined'){
                                    total[group_assoc]=total[group_assoc]+intVal(api.column(12).data()[i]);
                                }else{
                                    total[group_assoc]=intVal(api.column(12).data()[i]);
                                }

                                if ( last !== group[0] ) {
                                    $(rows).eq( i ).before(
                                        // '<tr class="group"><td colspan="2">'+group[0]+'</td><td class="'+group_assoc+'"></td></tr>'
                                        '<tr class="group"><td colspan="2">'+group[0]+'</td></tr>'
                                    );
                    
                                    last = group[0];
                                }
                            });
                        for(var key in total) {
                            $("."+key).html(total[key]).number( true, 2 );
                        }
                    }
                });

пожалуйста, помогите мне ... я уже застрял .. спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...