Fix setup form javascript

This patch fixes the javascript that adds/removes rows from the setup
form.

The AddPartition function now replaces the id `partitions-N-FIELDNAME`
using a regular expression. The hidden csrf input is also ignored to get
incremental numbers.

On deletion, all the ids are reassign from zero, in order, to get always
an ordered list with all numbers between the first and the last.
multi-ogserver
Daniel García Moreno 2021-08-04 18:50:26 +02:00 committed by Javier Sánchez Parra
parent a51fdd9d30
commit 0bbae508f6
1 changed files with 12 additions and 5 deletions

View File

@ -58,13 +58,11 @@ function AddPartition(evt) {
const target = $($(evt).data("target"));
const oldrow = target.find("[data-toggle=fieldset-entry]:last");
const row = oldrow.clone(true, true);
const elem_id = row.find(":input")[0].id;
const elem_prefix = elem_id.replace(/(.*)-(\d{1,4})/m, '$1')// max 4 digits for ids in list
const elem_id = row.find(".form-control")[0].id;
const elem_num = parseInt(elem_id.replace(/(.*)-(\d{1,4})/m, '$2')) + 1;
// Increment WTForms unique identifiers
row.children(':input').each(function() {
const id = $(this).attr('id').replace(elem_prefix+'-' + (elem_num - 1),
elem_prefix+'-' + (elem_num));
row.find('.form-control').each(function() {
const id = $(this).attr('id').replace(/(.*)-(\d{1,4})-(.*)/, `$1-${elem_num}-$3`);
$(this).attr('name', id).attr('id', id).val('').removeAttr("checked");
});
row.show();
@ -73,5 +71,14 @@ function AddPartition(evt) {
function RemovePartition(evt) {
const target = $(evt).parent().parent();
const table = target.parent();
target.remove();
// Reassign rows ids
table.find('tr').each(function(index) {
$(this).find('.form-control').each(function() {
const id = $(this).attr('id').replace(/(.*)-(\d{1,4})-(.*)/, `$1-${index}-$3`);
$(this).attr('name', id).attr('id', id);
});
});
}