Bug 22195: (follow-up) Add tooltip to buttons
[koha_ffzg] / koha-tmpl / intranet-tmpl / prog / en / includes / columns_settings.inc
index 5a62030..cdca0fa 100644 (file)
 [% USE ColumnsSettings %]
 
-<script type="text/javascript">
-function KohaTable(selector, dt_parameters, columns_settings) {
-    var id = 0;
+<script>
+function KohaTable(id_selector, dt_parameters, columns_settings, add_filters) {
+    var counter = 0;
     var hidden_ids = [];
-    var excluded_ids = [];
+    var included_ids = [];
+    var selector = '#' + id_selector;
+
     $(columns_settings).each( function() {
+        var named_id = $( 'thead th[data-colname="' + this.columnname + '"]', selector ).index( 'th' );
+        var used_id = dt_parameters.bKohaColumnsUseNames ? named_id : counter;
+        if ( used_id == -1 ) return;
+
         if ( this['is_hidden'] == "1" ) {
-            hidden_ids.push( id );
+            hidden_ids.push( used_id );
         }
-        if ( this['cannot_be_toggled'] == "1" ) {
-            excluded_ids.push( id );
+        if ( this['cannot_be_toggled'] == "0" ) {
+            included_ids.push( used_id );
         }
-        id++;
+        counter++;
     });
-    dt_parameters[ "oColVis" ] = { "aiExclude": excluded_ids };
-    var table = $(selector).dataTable($.extend(true, {}, dataTablesDefaults, dt_parameters));
+
+    var exportColumns = ":visible";
+    if( dt_parameters.hasOwnProperty("exportColumns") ){
+        // A custom buttons configuration has been passed from the page
+        exportColumns = dt_parameters["exportColumns"];
+    }
+
+    var export_buttons = [
+        {
+            extend: 'excelHtml5',
+            text: _("Excel"),
+            exportOptions: {
+                columns: exportColumns
+            },
+        },
+        {
+            extend: 'csvHtml5',
+            text: _("CSV"),
+            exportOptions: {
+                columns: exportColumns
+            },
+        },
+        {
+            extend: 'copyHtml5',
+            text: _("Copy"),
+            exportOptions: {
+                columns: exportColumns
+            },
+        },
+        {
+            extend: 'print',
+            text: _("Print"),
+            exportOptions: {
+                columns: exportColumns
+            },
+        }
+    ];
+
+    dt_parameters[ "buttons" ] = [
+        {
+            extend: 'colvis',
+            fade: 100,
+            columns: included_ids,
+            className: "columns_controls",
+            titleAttr: _("Columns settings"),
+            text: '<i class="fa fa-lg fa-gear"></i>',
+            exportOptions: {
+                columns: exportColumns
+            },
+        },
+        {
+            extend: 'collection',
+            fade: 100,
+            className: "export_controls",
+            titleAttr: _("Export or print"),
+            text: '<i class="fa fa-lg fa-download"></i>',
+            buttons: export_buttons
+        }
+
+    ];
+
+    var table = $(selector);
+    if ( add_filters ) {
+        // Duplicate the table header row for columnFilter
+        thead_row = table.find('thead tr');
+        clone = thead_row.clone().addClass('filters_row');
+        clone.find("th.NoSort").html('');
+        thead_row.before(clone);
+    }
+
+    table.dataTable($.extend(true, {}, dataTablesDefaults, dt_parameters));
 
     $(hidden_ids).each(function(index, value) {
         table.fnSetColumnVis( value, false );
     });
 
+    if ( add_filters ) {
+        // show a link to activate filtering
+        link = $('<a>')
+            .attr('href', '#')
+            .attr('id', id_selector + '_activate_filters');
+        $("." + id_selector  + "_table_controls").prepend(link);
+        deactivate_filters(id_selector);
+    }
+
+    $(".columns_controls,.export_controls").tooltip();
+
     return table;
 }