add.pt 9.06 KB
<html metal:use-macro="load: ../main.pt">

    <!-- content -->
<div metal:fill-slot="content">

    <form method="post" accept-charset="utf-8" id="myform" class="form-horizontal" enctype="multipart/form-data">
        <div class="row">
            <div class="col-sm-12 col-md-12 col-lg-12">
                <div  class="panel panel-default">
                    <div class="panel-heading">
                        <h3 class="panel-title">${request.title}</h3>
                    </div>

                    <div class="panel-body">
                        <div class="alert alert-danger" tal:condition="form and form.error and True or False">
                            <div class="error-msg-lbl">Kesalahan Pengisian Form</div>
                            <p class="error-msg">${form.errormsg}</p>
                        </div>

                        <div class="form-group" tal:repeat="f form">
                            <div id="item-${f.oid}" style="${f.widget.hidden and 'display:none;' or 'display:block;'}">
                                    <label for="${f.oid}" class="control-label col-md-1 ${f.required and 'required' or ''} " id="req-${f.oid}">
                                    ${f.title}</label>
                                <div class="col-md-9">
                                    ${structure:f.serialize()}
                                    <p id="error-${f.oid}" class="help-block" tal:condition="f.error"
                                        tal:repeat="error f.error.messages()">
                                        ${error}
                                    </p>
                                </div>
                                <div class="pull-left">
                                    <button type="submit" class="btn btn-primary" id="simpan" name="simpan">Simpan</button>
                                    <button type="submit" class="btn btn-warning" id="batal"  name="batal">Tutup</button>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
        <div class="row">
        <div class="col-md-12">
            <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><input name="select_all" value="1" type="checkbox"></th>
                        <th>Kode</th>
                        <th>Nama</th>
                        <th>Path</th>
                        <th>Status</th>
                    </tr>
                </thead>
            </table>
            </div>
            </div>
        </div>
      </div>

    </form>
</div>
    <!-- end content -->

    <metal:js fill-slot="js_files">
    <script type="text/javascript" src="${request._host}/static/js/tools.js"></script>
    </metal:js>

    <script type="text/javascript" metal:fill-slot="scripts">
        var mID;
        var mThn;
        var oTable;
        var iPos;

        var oTableUri = "${request._host}/group/routes";
        var oTableUrl = oTableUri + "${request._host}/grid-add/act";
        $(document).ready(function() {
            oTable = $('#table1').DataTable({
                dom: '<"row"<"col-md-8"<"toolbar">l><"col-md-4"f>>rtip',
                processing: true,
                serverSide: true,
                ajax: oTableUrl,
                //stateSave: true,
                scrollCollapse: true,
                sort: true,
                info: false,
                filter: true,
                autoWidth: false,
                paginate: true,
                paginationType: "full_numbers",

                lengthMenu: [
                    [10, 25, 50, 100, -1],
                    [10, 25, 50, 100, 'Semua']
                ],
                columns: [{
                        "data": "id",
                        "width": "50px",
                        "className": "text-center",
                        "render": function(data, type, full, meta) {
                            str_return = '<input type="checkbox" name="group_route_id" value="' + data + '">';
                            return str_return;
                        },
                    },
                    {
                        "data": "kode",
                        "width": "200px",
                        "className": "text-left"
                    },
                    {
                        "data": "nama"
                    },
                    {
                        "data": "path",
                        "width": "200px",
                        "className": "text-left"
                    },
                    {
                        "data": "route_id",
                        "width": "200px",
                        "className": "text-center",
                        "visible": false,
                        "render": function(data, type, full, meta) {
                            console.log(data);
                            if (data != null) {
                                str_return = '<input type="text" name="route_id" value="' + data + '">';
                                var index = $.inArray(data, rows_selected);
                                if (index === -1) {
                                    rows_selected.push(data);
                                }
                                return str_return;
                            }
                            return 'kosong'
                        },
                    },
                ],
                fnRowCallback: function(nRow, aData, iDisplayIndex) {
                    var rowId = aData.id;
                    if ($.inArray(rowId, rows_selected) !== -1) {
                        $(nRow).find('input[type="checkbox"]').prop('checked', true);
                        $(nRow).addClass('selected');
                    }
                },
                "language": {
                    "search": "Cari: ",
                    "paginate": {
                        "first": "Pertama ",
                        "last": "Akhir ",
                        "previous": "",
                        "next": "",
                    },
                    "lengthMenu": "Tampil _MENU_ baris "
                },
            });

            var tb_array = [];
            var tb = tb_array.join(' ');
            $("div.toolbar").html(tb);

            // Handle click on checkbox
            $('#table1 tbody').on('click', 'input[type="checkbox"]', function(e) {
                var $row = $(this).closest('tr');
                // Get row data
                //iPos = oTable.fnGetPosition(this);
                var data = oTable.row($row).data();
                // Get row ID
                var rowId = data.id;

                // Determine whether row ID is in the list of selected row IDs
                var index = $.inArray(rowId, rows_selected);

                // If checkbox is checked and row ID is not in list of selected row IDs
                if (this.checked && index === -1) {
                    rows_selected.push(rowId);

                    // Otherwise, if checkbox is not checked and row ID is in list of selected row IDs
                } else if (!this.checked && index !== -1) {
                    rows_selected.splice(index, 1);
                }

                if (this.checked) {
                    $row.addClass('selected');
                } else {
                    $row.removeClass('selected');
                }

                // Update state of "Select all" control

                updateDataTableSelectAllCtrl(oTable);

                // Prevent click event from propagating to parent
                e.stopPropagation();
            });

            // Handle click on "Select all" control
            $('#table1 thead input[name="select_all"]').on('click', function(e) {
                if (this.checked) {
                    $('#table1 tbody input[type="checkbox"]:not(:checked)').trigger('click');
                } else {
                    $('#table1 tbody input[type="checkbox"]:checked').trigger('click');
                }

                // Prevent click event from propagating to parent
                e.stopPropagation();
            });

            // Handle table draw event
            oTable.on('draw', function() {
                // Update state of "Select all" control
                updateDataTableSelectAllCtrl(oTable);
            });

            $('#group_nm').typeahead({
                "hint": true,
                "highlight": true,
                "minLength": 1,
                "limit": 10,
                "remote": "${request._host}/group/hon/act?term=%QUERY",
            }, {
                "name": 'group_nm',
                "displayKey": 'value',
            });

            $('#group_nm').bind('typeahead:selected', function(obj, datum, name) {
                $('#group_id').val(datum.id);
                oTable.ajax.url(oTableUrl + "?group_id=" + datum.id).load();
                console.log(datum.id);
            });
        });
    </script>

</html>