list.pt 10.3 KB
<html>
<div metal:use-macro="load: ../base.pt">
    <!-- content -->
    <div metal:fill-slot="content">
        <style type="text/css">
            #content-payment-view {
                height: 100%;
                overflow-y: auto;
            }
        </style>
        <div id="tmp-toolbar" style="display: inline-block;">
            <span tal:repeat="f params.form" tal:omit-tag="">
                <label for="${f.oid}" class="control-label">
                    ${f.title}
                </label>
                ${structure:f.serialize()}
            </span>
        </div>
        <div class="jarviswidget" style="border-top:1px solid #ccc!important">
            <div role="content">
                <table id="table1" class="table table-bordered table-hover table-condensed">
                    <thead>
                        <tr>
                            <th tal:repeat="f params.columns">${f.title}</th>
                        </tr>
                    </thead>
                    <tbody>
                    </tbody>
                </table>
            </div>
        </div>
        <!-- Modal -->
        <div id="payment-view" class="modal fade" role="dialog">
            <div class="modal-dialog modal-lg">
                <!-- Modal content-->
                <div class="modal-content">
                    <div class="modal-header">
                        <button type="button" class="close" data-dismiss="modal">&times;</button>
                        <h4 class="modal-title">
                            View Detail
                            <span style="margin-left: 10px" id="payment-view-title"></span>
                        </h4>
                    </div>
                    <div class="modal-body" id="content-payment-view">
                        &nbps;
                    </div>
                    <div class="modal-footer">
                        <button type="button" id="btn_advice" class="btn btn-default" >Advice</button>
                        <button type="button" class="btn btn-default" data-dismiss="modal">OK</button>
                    </div>
                </div>
            </div>
        </div>
    </div>
    <!-- end content -->

    <script type="text/javascript" metal:fill-slot="scripts">
        var mID;
        var oTable;
        var oTableUri = "${request._host}${params.route}"
        var oTableUrl = oTableUri + "/grid/act";

        function getDataUrl() {
            var opt = $('select#status').val();
            var param = '';

            var awalControl = $('#awal');
            var akhirControl = $('#akhir');

            var awal = awalControl.val();
            var akhir = akhirControl.val();

            var tgl = new Date();
            var tgl_indo = tgl.getDate() + '-' + (tgl.getMonth()+1) + '-' + tgl.getFullYear();

            if (awal == '' || awal == undefined){
                awalControl.val(tgl_indo)
            }
            if (akhir == '' || akhir == undefined){
                akhirControl.val(tgl_indo)
            }


            if (awal != '' && awal != undefined) {
                param += '&awal=' + awal;
            }
            if (akhir != '' && akhir != undefined) {
                param += '&akhir=' + akhir;
            }

            return oTableUrl + '?status=' + opt.toString() + param;
        }

        function getViewUrl(vid) {
            return oTableUri + "/" + vid.toString() + "/view";
        }

        $(document).ready(function() {
            oTable = $('#table1').DataTable({
                dom: '<"row"<"col-md-8"<"toolbar">l><"col-md-4"f>>rtip',
                processing: true,
                serverSide: true,
                ajax: getDataUrl(),
                stateSave: true,
                //scrollCollapse: true,
                //sort: true,
                //info: false,
                filter: true,
                autoWidth: false,
                paginate: true,
                paginationType: "full_numbers",
                lengthMenu: [
                    [10, 25, 50, 100],
                    [10, 25, 50, 100]
                ],
                columns: [
                    {'data': 'id', 'width': '0px'},
                    {'data': 'nomor', 'width': '150px'},
                    {'data': 'created', 'width': '85px'},
                    {'data': 'customer', 'width': '80px'},
                    {'data': 'vendor', 'width': '80px'},
                    {'data': 'amount_buy', 'width': '70px'},
                    {'data': 'amount', 'width': '70px'},
                    {'data': 'fee', 'width': '70px'},
                    {'data': 'status', 'width': '70px',
                        'render': function(data, type, full, meta) {
                            var st = ${params.status_payment};
                            return st[data];
                        }
                    }
                ],
                //columns: ${params.column_data},
                columnDefs: [{
                    searchable: false,
                    visible: false,
                    targets: [0]
                }],

                "language": {
                    "search": "Cari : ",
                    "paginate": {
                        "first": "Pertama ",
                        "last": "Akhir ",
                        "previous": "",
                        "next": "",
                    },
                    "lengthMenu": "Tampil _MENU_ baris "
                },

            });

            var buttons=${params.buttons};
            var tb_array=[];
            tb_array.push('<div class="btn-group pull-left">');
            for (i=0; i<buttons.length; i++){
                tb_array.push('<button id="'+buttons[i].id+'" class="' +buttons[i].cls+
                              '" type="button">'+buttons[i].title+'</button>')
            }
            tb_array.push('   &nbsp;');
            tb_array.push('</div>');

            var tb = tb_array.join(' ');
            $("div.toolbar").html(tb)
                .attr('style', 'display:block; float: left; margin-bottom:6px; line-height:16px;');
            $('#tmp-toolbar').appendTo($("div.toolbar"));

            //events
            $('#table1 tbody').on('click', 'tr', function() {
                if ($(this).hasClass('selected')) {
                    $(this).removeClass('selected');
                } else {
                    var aData = oTable.row(this).data();
                    oTable.$('tr.selected').removeClass('selected');
                    $(this).addClass('selected');
                    mID = aData.id;
                    // console.log(mID);
                    oTable.$('tr.row_selected').removeClass('row_selected');
                    $(this).addClass('row_selected');
                }
            });

            ${params.scripts}

            $('#btn_view').click(function() {
                if (mID) {
                    //window.location = oTableUri + '/' + mID + '/view';
                    $('#payment-view').modal('show');
                } else {
                    $.SmartMessageBox({
                        title : "View",
                        content : "Pilih Baris yang akan di lihat...",
                        buttons : '[Oke]'
                    });
                }
            });

            $("#payment-view").on('show.bs.modal', function(){
                var content = '';
                var view_container = $('#content-payment-view');
                view_container.empty();
                if (mID) {
                    var vUrl = getViewUrl(mID);
                    view_container.load(vUrl, function() {
                        $('.readonly').attr('readonly', true);
                    });
                }
            });

            $('select#status').on('change', function() {
                mID = 0;
                oTable.ajax.url(getDataUrl()).load();
            });

            $('#awal,#akhir').datepicker({
                format: 'dd-mm-yyyy',
                autoclose: true
            });
            $('#awal,#akhir').on('changeDate', function (e) {
                oTable.ajax.url(getDataUrl()).load();
            });
            $('#awal, #akhir').css('width', '98px');

            var el = $('#table1_length').parent();
            el.addClass('col-md-9');
            el.removeClass('col-md-8');

            var el = $('#table1_filter').parent();
            el.addClass('col-md-3');
            el.removeClass('col-md-4');

            function getCSV_url(){
                var csvUrl = oTableUri + "/csv/act";

                var opt = $('select#status').val();
                var param = '';

                var awalControl = $('#awal');
                var akhirControl = $('#akhir');

                var awal = awalControl.val();
                var akhir = akhirControl.val();

                var tgl = new Date();
                var tgl_indo = tgl.getDate() + '-' + (tgl.getMonth()+1) + '-' + tgl.getFullYear();

                if (awal == '' || awal == undefined){
                    awalControl.val(tgl_indo)
                }
                if (akhir == '' || akhir == undefined){
                    akhirControl.val(tgl_indo)
                }


                if (awal != '' && awal != undefined) {
                    param += '&awal=' + awal;
                }
                if (akhir != '' && akhir != undefined) {
                    param += '&akhir=' + akhir;
                }

                return csvUrl + '?status=' + opt.toString() + param;
            }
            $('#btn_csv').click(function() {
                window.open(getCSV_url());
            });

            $('#btn_advice').click(function() {
                var txId = $('#tx_id').html();
                var urinya = "${params.route}/advice/act/?id=" + mID;
                console.log(urinya);
                $.ajax({ 
                    type: 'GET', 
                    url: urinya, 
                    dataType: 'json',
                    success: function (data) { 
                        jsonnya = {
                            "invoice_no": data.invoice_no,
                            "message": data.message,
                            "status": data.status,
                            "tx_id": data.tx_id
                        };
                        jsonnya = JSON.stringify(jsonnya, null, 4);
                        $('#advice').val(jsonnya);
                    }
                });
            });
        });
  </script>

</div>
</html>