Как я могу расположить группу кнопок экспорта DataTables? - PullRequest
0 голосов
/ 25 сентября 2019

У меня есть таблица

enter image description here Я использовал Datatable для автоматического рендеринга, который экспортирует кнопки.Я понятия не имею, как заставить его выравниваться с полем ввода поиска.

Это код, который у меня есть

<div class="row">
    <div class="col-md-12">
        <div class="panel panel-filled">
            <div class="panel-body">

                <input type="text" class="form-control mb20" id="inputSearch" placeholder="Search">

                <table class="table table-responsive-sm">
                    <thead>
                        <tr>

                            <th></th>
                            <th>Event</th>
                            <th>Node ID</th>
                            <th>Timestamp</th>
                        </tr>
                    </thead>
                    <tbody>

                        @foreach($sysEvents as $sysEvent)


                        <?php

                        $faIcon = App\Models\Log::getLogIcon($sysEvent->logLevel);
                        $faHexColor = App\Models\Log::getLogColor($sysEvent->logLevel);

                        ?>

                        <tr>
                            <td class="text-center"><i class="fa fa-{{ $faIcon }}" style="color: {{ $faHexColor }}"></i></td>
                            <td> {{ $sysEvent->healthEventMessage }}</td>
                            <td style="color:#1bbf89; " >{{ $sysEvent->deviceId }}</td>
                            <td class="text-accent"> {{ $sysEvent->createdAt }}</td>
                        </tr>

                        @endforeach


                    </tbody>
                </table>
            </div>
        </div>
    </div>
</div>

JS

<script src="https://cdn.datatables.net/plug-ins/1.10.10/features/searchHighlight/dataTables.searchHighlight.min.js" type="text/javascript"></script>
<script src="https://cdn.datatables.net/1.10.12/js/jquery.dataTables.min.js"></script>
<script type="text/javascript" src="https://bartaz.github.io/sandbox.js/jquery.highlight.js"></script>


{{-- Export --}}
<script type="text/javascript" src="https://cdn.datatables.net/buttons/1.4.2/js/dataTables.buttons.min.js"></script>
<script type="text/javascript" src="https://cdn.datatables.net/buttons/1.4.2/js/buttons.bootstrap.min.js"></script>
<script type="text/javascript" src="//cdn.datatables.net/buttons/1.4.2/js/buttons.flash.min.js"></script>
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/jszip/3.1.3/jszip.min.js"></script>
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.32/pdfmake.min.js"></script>
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.32/vfs_fonts.js"></script>
<script type="text/javascript" src="//cdn.datatables.net/buttons/1.4.2/js/buttons.html5.min.js"></script>
<script type="text/javascript" src="//cdn.datatables.net/buttons/1.4.2/js/buttons.print.min.js"></script>


<script type="text/javascript">

    $('table').DataTable( {
        "bLengthChange": true,
        "Filter": true,
        "Info": true,
        "bSort": true,
        "bPaginate": false,
        "searchHighlight": true,
        "aoColumnDefs": [{
            "bSortable": false,
            "aTargets": ["no-sort"]
        }],
        "dom": 'Bfrtip',
        "buttons": ['copy','csv','pdf','excel','print']
    } );

    $('#inputSearch').keyup(function(){
        $('table').DataTable().search($(this).val()).draw();
    });

</script>

Как мне расположить группу кнопок экспорта DataTables, чтобы она соответствовала моему поисковому запросу?

Любые советы о том, как мне этого добиться?


Обновлено

Я даже пытаюсь

$('table').DataTable({
    "bLengthChange": true,
    "Filter": true,
    "Info": true,
    "bSort": true,
    "bPaginate": false,
    "searchHighlight": true,
    "aoColumnDefs": [{
        "bSortable": false,
        "aTargets": ["no-sort"]
    }],
    "dom": 'Bfrtip',
    "buttons": ['copy','csv','pdf','excel','print'],

    initComplete: function() {

        var buttons = $('.dt-buttons');
        $('.dt-buttons').hide();
        $('.dt-buttons').show();
        $('div.panel-body').append(buttons);

    }
});

Ответы [ 2 ]

2 голосов
/ 25 сентября 2019

Взгляните на https://datatables.net/extensions/tabletools/initialisation#Direct-initialisation

$(document).ready( function () {
    var table = $('#example').dataTable();
    var tableTools = new $.fn.dataTable.TableTools( table, {
        "buttons": [
            "copy",
            "csv",
            "xls",
            "pdf",
            { "type": "print", "buttonText": "Print me!" }
        ]
    } );

    $( tableTools.fnContainer() ).insertAfter('div.info');
} );

Это должно сделать то, что вы ищете

0 голосов
/ 25 сентября 2019

Я должен был сделать это, чтобы работать, что-то вроде хака ...

<script type="text/javascript">

    $('table').DataTable( {
        "bLengthChange": true,
        "Filter": true,
        "Info": true,
        "bSort": true,
        "bPaginate": false,
        "searchHighlight": true,
        "aoColumnDefs": [{
            "bSortable": false,
            "aTargets": ["no-sort"]
        }],
        "dom": '<"pull-right"B><"pull-right"f><"pull-right"l>tip',
        "buttons": ['copy','csv','pdf','excel','print']
    } );


    $('#inputSearch').hide();
    $('div .panel-body').prepend($('#inputSearch'));
    $('#inputSearch').show();
    $('#inputSearch').css('float','left');


    $('.dt-buttons').hide();
    $('div .panel-body').prepend($('.dt-buttons'));
    $('.dt-buttons').show();
    $('#inputSearch').css('float','right');

    $('#inputSearch').keyup(function(){
        $('table').DataTable().search($(this).val()).draw();
    });

</script>

Результат

enter image description here

...