class DataTableBuilder constructor: -> @defaultOptions = { destroy: true autoWidth: false responsive: true stateSave: true } go: -> # users div = $('table#users') @initTable(container: div) # ldap create div = $('table#ldap_create') @initTable(container: div, params: { paging: false # default sorting: username (2nd column) asc aaSorting: [[1,'asc']] aoColumnDefs: [ { bSortable: false, aTargets: [ 0 ] } ] dom: 'T<"clear">lfrtip' tableTools: { sRowSelect: 'multi' aButtons: [ ] }} ) # logs div = $('table#logs') @initTable(container: div, params: { processing: true serverSide: true ajax: div.data('source') # default sorting: date (2nd column) desc aaSorting: [[1,'desc']] aoColumnDefs: [ { asSorting: ['desc', 'asc'], aTargets: [ 1 ] } ] }) # datatable class div = $('table.datatable') @initTable(container: div) # datatable class (server side processing) div = $('table[remote=true].datatable') @initTable(container: div, params: { processing: true serverSide: true ajax: div.data('source') }) initTable: ({container, params} = {}) -> if container.length > 0 params ?= {} # add custom params if any settings = $.extend({}, @defaultOptions, params) # add language settings = $.extend({}, settings, {language: Chaltron.locales('datatable')}) container.DataTable(settings) $(document).on 'page:change', -> table = new DataTableBuilder table.go() # specify date format (for sorting) $.fn.dataTable.moment('DD MMM HH:mm') $ -> $('form#ldap_create').on 'submit', (e) -> table = TableTools.fnGetMasters()[0] data = table.fnGetSelectedData() if data.length == 0 message = Chaltron.locales('error_message') label = Chaltron.locales('error_label') flash = $("div.alert-warning:contains('#{message}')") if flash.length == 0 # display warning flash message flash = $("