home · contact · privacy
In /edit_structured view, put line movement buttons to left side. master
authorChristian Heller <c.heller@plomlompom.de>
Sat, 1 Mar 2025 01:44:56 +0000 (02:44 +0100)
committerChristian Heller <c.heller@plomlompom.de>
Sat, 1 Mar 2025 01:44:56 +0000 (02:44 +0100)
src/templates/edit_structured.tmpl

index 510ca84ff4be4b22b42fa65a17ddb8ca0f6f1893..70df62408106dfd72f9215b02f704f33ea02d7d9 100644 (file)
@@ -93,11 +93,27 @@ function update_form() {
     function add_td_input(name, value, size=20, colspan=1) {
       return add_input(setup_input_td(tr, colspan), name, value, size);
     }
+
+    // movement buttons
+    const td_btns_updown = add_td(tr);
+    if (i > 0) {
+        [{label: '^', earlier_idx: i-1, enabled: i > 1},
+         {label: 'v', earlier_idx: i,   enabled: i && i+1 < dat_lines.length}
+        ].forEach((kwargs) => {
+            add_button(td_btns_updown, kwargs.label, ! kwargs.enabled, function() {
+              const other_line = dat_lines[kwargs.earlier_idx];
+              dat_lines.splice(kwargs.earlier_idx, 1);
+              dat_lines.splice(kwargs.earlier_idx + 1, 0, other_line);
+            });
+        });
+    }
+
+    // actual input lines
     if (dat_line.is_intro) {
       const td = setup_input_td(tr, 3);
       const date_input = add_input(td, 'date', dat_line.booking_line.date, 10)
       date_input.classList.add('date_input');
-      add_input(td, 'target', dat_line.booking_line.target, 35)
+      add_input(td, 'target', dat_line.booking_line.target, 37)
     } else if (!dat_line.error) {  // i.e. valid TransferLine
       const acc_input = add_td_input('account', dat_line.booking_line.account, 30);
       acc_input.setAttribute ('list', 'all_accounts');
@@ -116,20 +132,11 @@ function update_form() {
     }
     add_td_input('comment', dat_line.comment, 40);
 
-    // add action buttons, with "delete" after some safety distance
-    const td_btns = add_td(tr);
-    add_button(td_btns, '^', i > 1 ? false : true, function() {
-      const prev_line = dat_lines[i-1];
-      dat_lines.splice(i-1, 1);
-      dat_lines.splice(i, 0, prev_line);
-    });
-    add_button(td_btns, 'v', (i && i+1 < dat_lines.length) ? false : true, function() {
-      const next_line = dat_lines[i];
-      dat_lines.splice(i, 1);
-      dat_lines.splice(i+1, 0, next_line);
-    });
-    td_btns.appendChild(document.createTextNode(' · · · '))
-    add_button(td_btns, 'delete',  i > 0 ? false : true, function() { dat_lines.splice(i, 1); });
+    // delete button
+    td_del = add_td(tr);
+    if (i > 0) {
+        add_button(td_del, 'delete',  i > 0 ? false : true, function() { dat_lines.splice(i, 1); });
+    }
 
     // add error explanation row if necessary
     if (dat_line.error) {