search_field.weight is of type NUMERIC(5,2) in the database, and values are rendered as floats in /admin/searchengine/elasticsearch/mappings.pl But the field validation only accepts INTs: <input type="text" inputmode="numeric" pattern="[0-9]*" name="search_field_weight" value="[% search_field.weight | html %]" /> To fix this, change the regexp in patter as follows: pattern="[0-9\.]*" I can supply a proper patch in a few minutes...
Created attachment 124855 [details] [review] Bug 29010: fix pattern in search_field.weight search_field.weight is of type NUMERIC(5,2) in the database, and values are rendered as floats in /admin/searchengine/elasticsearch/mappings.pl But the field validation only accepts INTs. This patch fixes the pattern to accept NUMERIC(ish) values Sponsored-by: Steiermärkische Landesbibliothek
this is a rather simple bug with a rather simple fix. Still it would be nice to get it into 2021.11 :-)
Hi Thomas. A test plan would help with testing to get it to the sign-off stage. For example: Test plan: 1. What is needed to setup testing e.g. Enable Elasticsearch and reindex 2. Steps to replicate current problem 3. Apply the patch 4. Steps to demonstrate that problem is fixed 5. Sign-off! David
Test Plan: * Enable Elasticsearch (but no need to actually index anyting) * go to cgi-bin/koha/admin/searchengine/elasticsearch/mappings.pl * Enter an integer (eg "8") into any "weight" column and click save * Koha now displays the value as NUMERIC, eg. "8.00" * Change nothing, and click save again * Save does not work, you get a warning by the browser that the input does not match the requested format (because in the html field only ints are allowed, but the DB stored the value as numeric and returns it as such) * Workaround: Change all the values back to ints (i.e. remove ".00"), but this is very cumbersome if you have several weights * apply the patch * Now try to save again (without changing eg "8.00" to "8". It works * Add a new weight (eg "4"), save, it's turned into "4.00", but saving again still works
Created attachment 126303 [details] [review] Bug 29010: fix pattern in search_field.weight search_field.weight is of type NUMERIC(5,2) in the database, and values are rendered as floats in /admin/searchengine/elasticsearch/mappings.pl But the field validation only accepts INTs. This patch fixes the pattern to accept NUMERIC(ish) values - Enable Elasticsearch (but no need to actually index anyting) - go to cgi-bin/koha/admin/searchengine/elasticsearch/mappings.pl - Enter an integer (eg "8") into any "weight" column and click save - Koha now displays the value as NUMERIC, eg. "8.00" - Change nothing, and click save again - Save does not work, you get a warning by the browser that the input does not match the requested format (because in the html field only ints are allowed, but the DB stored the value as numeric and returns it as such) - Workaround: Change all the values back to ints (i.e. remove ".00"), but this is very cumbersome if you have several weights - Apply the patch - Now try to save again (without changing eg "8.00" to "8". It works - Add a new weight (eg "4"), save, it's turned into "4.00", but saving again still works Sponsored-by: Steiermärkische Landesbibliothek Signed-off-by: Owen Leonard <oleonard@myacpl.org>
Don't forget to assign a patch to yourself using the Assignee field once you start working on a patch :)
I was checking how we handle other decimal fields and for accounting we have: <input type="text" inputmode="decimal" pattern="^\d+(\.\d{2})?$" name="amount" id="amount" required="required" min="0" value="" class="noEnterSubmit"> The patch has: <input type="text" inputmode="numeric" pattern="[0-9\.]*" name="search_field_weight" value="[% search_field.weight | html %]" /> From documentation I think if we want to support decimals we should change the inputmode from numeric to decimal and maybe make the pattern a bit more specific. For example see: https://developer.mozilla.org/de/docs/Web/HTML/Global_attributes/inputmode What do you think?
Created attachment 127881 [details] [review] Bug 29010: fix pattern in search_field.weight search_field.weight is of type NUMERIC(5,2) in the database, and values are rendered as floats in /admin/searchengine/elasticsearch/mappings.pl But the field validation only accepts INTs. This patch fixes the pattern to accept NUMERIC(ish) values - Enable Elasticsearch (but no need to actually index anyting) - go to cgi-bin/koha/admin/searchengine/elasticsearch/mappings.pl - Enter an integer (eg "8") into any "weight" column and click save - Koha now displays the value as NUMERIC, eg. "8.00" - Change nothing, and click save again - Save does not work, you get a warning by the browser that the input does not match the requested format (because in the html field only ints are allowed, but the DB stored the value as numeric and returns it as such) - Workaround: Change all the values back to ints (i.e. remove ".00"), but this is very cumbersome if you have several weights - Apply the patch - Now try to save again (without changing eg "8.00" to "8". It works - Add a new weight (eg "4"), save, it's turned into "4.00", but saving again still works Sponsored-by: Steiermärkische Landesbibliothek Signed-off-by: Owen Leonard <oleonard@myacpl.org> Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Created attachment 127882 [details] [review] Bug 29010: (QA follow-up) Change inputmode from numeric to decimal Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Pushed to master for 21.11, thanks to everybody involved!