From 0bbae508f60b86cb77c3f05e43d4e86bb5d2980d Mon Sep 17 00:00:00 2001 From: Daniel GarcĂ­a Moreno Date: Wed, 4 Aug 2021 18:50:26 +0200 Subject: 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. --- ogcp/static/js/ogcp.js | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) (limited to 'ogcp') diff --git a/ogcp/static/js/ogcp.js b/ogcp/static/js/ogcp.js index 00ab61c..8a538ca 100644 --- a/ogcp/static/js/ogcp.js +++ b/ogcp/static/js/ogcp.js @@ -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); + }); + }); } -- cgit v1.2.3-18-g5258