Owen Leonard
76f929f760
The DataTables plugin calculates the width of the fixed header based on the initial width of the corresponding table. Since these tables are inside jQueryUI tabs, the width changes when the tabs are initialized and jQueryUI adds its classes to the table's container. This patch "manually" adds the relevant classes to the markup so that the table's container is drawn with the right padding from the start. Also fixed: Don't try to destroy "oldTableId" if the tableInit function didn't pass an oldtabid. Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
85 lines
2.7 KiB
JavaScript
85 lines
2.7 KiB
JavaScript
/* global __ dataTablesDefaults */
|
|
|
|
function clean_line(line) {
|
|
$(line).find('input[type="text"]').val("");
|
|
$(line).find('select').find('option:first').attr("selected", "selected");
|
|
}
|
|
|
|
function clone_line(line) {
|
|
var new_line = $(line).clone();
|
|
$(new_line).removeClass("nodrag nodrop");
|
|
$(new_line).find('td:last-child>a').removeClass("add").addClass("delete").html( __("Delete") );
|
|
$(new_line).find('[data-id]').each(function () {
|
|
$(this).attr({ name: $(this).attr('data-id') }).removeAttr('data-id');
|
|
});
|
|
$(new_line).find("select").each(function () {
|
|
var attr = $(this).attr('name');
|
|
var val = $(line).find('[data-id="' + attr + '"]').val();
|
|
$(this).find('option[value="' + val + '"]').attr("selected", "selected");
|
|
});
|
|
return new_line;
|
|
}
|
|
|
|
function tableInit( oldtabid, newtabid ) {
|
|
|
|
if ( oldtabid ){
|
|
var oldTableId = $("#" + oldtabid + "_table");
|
|
oldTableId.DataTable().destroy();
|
|
}
|
|
|
|
var newTableId = $("#" + newtabid + "_table");
|
|
newTableId.DataTable(
|
|
$.extend(true, {}, dataTablesDefaults, {
|
|
"columnDefs": [
|
|
{ "orderable": false, "searchable": false, 'targets': ['NoSort'] },
|
|
],
|
|
"paging": false,
|
|
"autoWidth": false
|
|
}));
|
|
}
|
|
|
|
$(document).ready(function () {
|
|
|
|
tableInit( "", "search_fields");
|
|
|
|
$("#tabs").tabs({
|
|
activate: function( event, ui ){
|
|
tableInit( ui.oldPanel.attr('id'), ui.newPanel.attr('id') );
|
|
},
|
|
});
|
|
|
|
$('.delete').click(function () {
|
|
if ($(this).hasClass('mandatory') && $(".mandatory[data-field_name=" + $(this).attr('data-field_name') + "]").length < 2) {
|
|
alert( __("This field is mandatory and must have at least one mapping") );
|
|
return;
|
|
} else {
|
|
$(this).parents('tr').remove();
|
|
}
|
|
});
|
|
|
|
$("table.mappings").tableDnD({
|
|
onDragClass: "dragClass",
|
|
});
|
|
|
|
$('.add').click(function () {
|
|
var table = $(this).closest('table');
|
|
var index_name = $(table).attr('data-index_name');
|
|
var line = $(this).closest("tr");
|
|
var marc_field = $(line).find('input[data-id="mapping_marc_field"]').val();
|
|
if (marc_field.length > 0) {
|
|
var new_line = clone_line(line);
|
|
new_line.appendTo($('table[data-index_name="' + index_name + '"]>tbody'));
|
|
$('.delete').click(function () {
|
|
$(this).parents('tr').remove();
|
|
});
|
|
clean_line(line);
|
|
|
|
$(table).tableDnD({
|
|
onDragClass: "dragClass",
|
|
});
|
|
}
|
|
});
|
|
$("#facet_biblios > table").tableDnD({
|
|
onDragClass: "dragClass",
|
|
});
|
|
});
|