reorder = (event, diff, edit) -> change = diff.find (obj) -> obj.node == edit.triggerRow.node() return unless change? $table = $(event.currentTarget) oldNode = $("
#{change.oldData}
").find('input[data-reorder-resource]') newNode = $("
#{change.newData}
").find('input[data-reorder-resource]') return unless oldNode? && newNode? url = @context[0].ajax.url.replace('.json', '/reorder.json') data = {'reorder[id]': oldNode.data('reorder-resource'), 'reorder[old]': oldNode.val(), 'reorder[new]': newNode.val(), attributes: $table.data('attributes') } @context[0].rowreorder.c.enable = false $.ajax( method: 'post', url: url, data: data, async: false ).fail((response, text, status) => $(event.target).closest('table').DataTable().flash(status, 'danger') ).always((response) => @context[0].rowreorder.c.enable = true ) $.fn.DataTable.Api.register('reorder()', reorder); $(document).on 'click', '.dataTables_wrapper a.buttons-reorder', (event) -> event.preventDefault() # prevent the click $link = $(event.currentTarget) $table = $link.closest('.dataTables_wrapper').find('table.dataTable').first() column = $table.DataTable().column('.col-_reorder') return unless column.length > 0 if column.visible() $table.removeClass('reordering') else $table.addClass('reordering') column.visible(!column.visible())