Bug 23612: (RM follow-up) Fix failing tests
[koha.git] / koha-tmpl / intranet-tmpl / prog / en / includes / columns_settings.inc
blobf02ad891517c13946ef9567e82b0f9cfa8800d34
1 [% USE ColumnsSettings %]
3 <script>
4 function KohaTable(id_selector, dt_parameters, columns_settings, add_filters) {
5     var counter = 0;
6     var hidden_ids = [];
7     var included_ids = [];
8     var selector = '#' + id_selector;
10     $(columns_settings).each( function() {
11         var named_id = $( 'thead th[data-colname="' + this.columnname + '"]', selector ).index( 'th' );
12         var used_id = dt_parameters.bKohaColumnsUseNames ? named_id : counter;
13         if ( used_id == -1 ) return;
15         if ( this['is_hidden'] == "1" ) {
16             hidden_ids.push( used_id );
17         }
18         if ( this['cannot_be_toggled'] == "0" ) {
19             included_ids.push( used_id );
20         }
21         counter++;
22     });
24     var exportColumns = ":visible:not(.noExport)";
25     if( dt_parameters.hasOwnProperty("exportColumns") ){
26         // A custom buttons configuration has been passed from the page
27         exportColumns = dt_parameters["exportColumns"];
28     }
30     var export_buttons = [
31         {
32             extend: 'excelHtml5',
33             text: _("Excel"),
34             exportOptions: {
35                 columns: exportColumns
36             },
37         },
38         {
39             extend: 'csvHtml5',
40             text: _("CSV"),
41             exportOptions: {
42                 columns: exportColumns
43             },
44         },
45         {
46             extend: 'copyHtml5',
47             text: _("Copy"),
48             exportOptions: {
49                 columns: exportColumns
50             },
51         },
52         {
53             extend: 'print',
54             text: _("Print"),
55             exportOptions: {
56                 columns: exportColumns
57             },
58         }
59     ];
61     dt_parameters[ "buttons" ] = [
62         {
63             fade: 100,
64             className: "dt_button_clear_filter",
65             titleAttr: _("Clear filter"),
66             enabled: false,
67             text: '<i class="fa fa-lg fa-remove"></i> <span class="dt-button-text">' + _("Clear filter") + '</span>',
68             action: function ( e, dt, node, config ) {
69                 dt.search( "" ).draw("page");
70                 node.addClass("disabled");
71             }
72         }
73     ];
75     if( included_ids.length > 0 ){
76         dt_parameters[ "buttons" ].push(
77             {
78                 extend: 'colvis',
79                 fade: 100,
80                 columns: included_ids,
81                 className: "columns_controls",
82                 titleAttr: _("Columns settings"),
83                 text: '<i class="fa fa-lg fa-gear"></i> <span class="dt-button-text">' + _("Columns") + '</span>',
84                 exportOptions: {
85                     columns: exportColumns
86                 }
87             }
88         );
89     }
91     dt_parameters[ "buttons" ].push(
92         {
93             extend: 'collection',
94             autoClose: true,
95             fade: 100,
96             className: "export_controls",
97             titleAttr: _("Export or print"),
98             text: '<i class="fa fa-lg fa-download"></i> <span class="dt-button-text">' + _("Export") + '</span>',
99             buttons: export_buttons
100         }
101     );
103     var table = $(selector);
104     if ( add_filters ) {
105         // Duplicate the table header row for columnFilter
106         thead_row = table.find('thead tr');
107         clone = thead_row.clone().addClass('filters_row');
108         clone.find("th.NoSort").html('');
109         thead_row.before(clone);
110     }
112     table.dataTable($.extend(true, {}, dataTablesDefaults, dt_parameters));
114     table.DataTable().on("column-visibility.dt", function(){
115         if( typeof columnsInit == 'function' ){
116             // This function can be created separately and used to trigger
117             // an event after the DataTable has loaded AND column visibility
118             // has been updated according to the table's configuration
119             columnsInit();
120         }
121     }).columns( hidden_ids ).visible( false );
123     if ( add_filters ) {
124         // show a link to activate filtering
125         link = $('<a>')
126             .attr('href', '#')
127             .attr('id', id_selector + '_activate_filters');
128         $("." + id_selector  + "_table_controls").prepend(link);
129         deactivate_filters(id_selector);
130     }
132     $(".dt_button_clear_filter, .columns_controls, .export_controls").tooltip();
134     return table;
137 </script>