From ab74ee9a2fcfc99a2abec8b9403e220910ded817 Mon Sep 17 00:00:00 2001 From: Chris Mason Date: Fri, 21 Feb 2025 14:48:15 +0000 Subject: [PATCH] allow textareas to be used in jinjafx_input --- CHANGELOG.md | 4 ++++ jinjafx_server.py | 2 +- www/index.html | 2 +- www/jinjafx_m.js | 32 ++++++++++++++++++++++---------- 4 files changed, 28 insertions(+), 12 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 77df58d..03351ca 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,8 @@ ## CHANGELOG +### [25.5.4] - Feb 21, 2025 +- Actually fixed issue #72 properly this time as we now deal with multi-line strings + ### [25.5.3] - Feb 21, 2025 - Fixed issue #72 - `textarea` Inputs Not Recognized in Custom JinjaFx Input Forms @@ -416,6 +419,7 @@ - Initial release +[25.5.4]: https://github.com/cmason3/jinjafx_server/compare/25.5.3...25.5.4 [25.5.3]: https://github.com/cmason3/jinjafx_server/compare/25.5.2...25.5.3 [25.5.2]: https://github.com/cmason3/jinjafx_server/compare/25.5.1...25.5.2 [25.5.1]: https://github.com/cmason3/jinjafx_server/compare/25.5.0...25.5.1 diff --git a/jinjafx_server.py b/jinjafx_server.py index 7d42f1b..3d44fde 100755 --- a/jinjafx_server.py +++ b/jinjafx_server.py @@ -27,7 +27,7 @@ import re, argparse, hashlib, traceback, glob, hmac, uuid, struct, binascii, gzip, requests, ctypes, subprocess import cmarkgfm, emoji -__version__ = '25.5.3' +__version__ = '25.5.4' llock = threading.RLock() rlock = threading.RLock() diff --git a/www/index.html b/www/index.html index bcf8302..3286c59 100644 --- a/www/index.html +++ b/www/index.html @@ -32,7 +32,7 @@ - +
diff --git a/www/jinjafx_m.js b/www/jinjafx_m.js index c7be489..2c93a76 100644 --- a/www/jinjafx_m.js +++ b/www/jinjafx_m.js @@ -1470,11 +1470,18 @@ function getStatusText(code) { if ((e.tagName == 'INPUT') && ((e.type == 'checkbox') || (e.type == 'radio'))) { v = e.checked; } - if (vars.hasOwnProperty(e.dataset.var)) { - vars[e.dataset.var].push(v); + if (e.tagName == 'TEXTAREA') { + vars[e.dataset.var] = '|2\n' + v.split(/\r?\n/g).map(function (e) { + return ' ' + e; + }).join('\r\n'); } else { - vars[e.dataset.var] = [v]; + if (vars.hasOwnProperty(e.dataset.var)) { + vars[e.dataset.var].push(v); + } + else { + vars[e.dataset.var] = [v]; + } } } } @@ -1482,16 +1489,21 @@ function getStatusText(code) { var vars_yml = 'jinjafx_input:\r\n'; Object.keys(vars).forEach(function(v) { - for (i = 0; i < vars[v].length; i++) { - if (typeof vars[v][i] !== "boolean") { - vars[v][i] = '"' + vars[v][i].replace(/"/g, '\\x22') + '"'; + if (Array.isArray(vars[v])) { + for (i = 0; i < vars[v].length; i++) { + if (typeof vars[v][i] !== "boolean") { + vars[v][i] = '"' + vars[v][i].replace(/"/g, '\\x22') + '"'; + } + } + if (vars[v].length > 1) { + vars_yml += ' ' + v + ': [' + vars[v].join(', ') + ']\r\n'; + } + else { + vars_yml += ' ' + v + ': ' + vars[v][0] + '\r\n'; } - } - if (vars[v].length > 1) { - vars_yml += ' ' + v + ': [' + vars[v].join(', ') + ']\r\n'; } else { - vars_yml += ' ' + v + ': ' + vars[v][0] + '\r\n'; + vars_yml += ' ' + v + ': ' + vars[v]; } }); dt.vars += '\r\n' + vars_yml;