feat(FieldFormatters): add visual editor#5075
Conversation
| if (mapping !== undefined && mapping?.length > 1) | ||
| softError('Expected mapping length to be no more than 1'); | ||
| const field = mapping?.[0]; | ||
| if (field?.isRelationship === true) { | ||
| softError( | ||
| 'Did not expect relationship field in field formatter mapping' | ||
| ); |
There was a problem hiding this comment.
these cases should not happen - the UI doesn't allow them. but handling them here just in case (and to satisfy TypeScript)
specifyweb/frontend/js_src/lib/components/SchemaConfig/Format.tsx
Outdated
Show resolved
Hide resolved
|
❤️ |
grantfitzsimmons
left a comment
There was a problem hiding this comment.
- When creating a field format like
GiftNumberusing the regular expression/^(KUI|KUBI|NHM)$/, I am unable to set it up correctly.
See that I am supposed to put the 'hint' on the left and 'pattern' on the right:

This works as expected when using a regex validator, but when setting it as the pattern it is not recognized properly.
<format system="true" name="GiftNumber" class="edu.ku.brc.specify.datamodel.Gift" fieldname="giftNumber" title="" default="true">
<autonumber>edu.ku.brc.af.core.db.AutoNumberGeneric</autonumber>
<field type="regex" size="4" value="/^(KUI|KUBI|NHM)$/" byyear="true" pattern="KUBI"/>
</format>- After modifying other sections of the format, those changes are not made immediately visible for the 'Example Field'. Instead, it uses the previous field format before the edits have been made.
See that it shows "Required Format: KUBI" in the tooltip:
(This tooltip is most often obscured by the browser's "match the requested formatter" error)
https://github.com/specify/specify7/assets/37256050/d34bcb16-85d5-43fc-8c68-56bef2e36cc6
After making it simply numeric:
- What does the 'Auto Numbering' do that the 'Auto-number' checkbox does not?
Looks like the expected regex between Sp6 and Sp7 differed. Fixed:
In practice, that means:
|
yeah, it's not ideal that 'hint' comes before the 'pattern' as the opposite order seems more intuitive. The reason I did it this way is because of the column heading. Open to ideas on how to make this more intuitive |
Fixed |
Ups, the "Auto Numbering" checkbox at the top is not supposed to be exposed in the UI - removed |
|
@maxpatiiuk Can you resolve the merge conflicts? |
lexiclevenger
left a comment
There was a problem hiding this comment.
Testing instructions
Generally visual editor for Field Formatters should act and look very similar to the one for Record formatters since it shares a lot of code with it.
To test:
- Verify that each field formatter type (constant, any character, ...) can be set in the UI, without user-experience issues, and after saving, can be read back correctly
- Verify that a formatter created/edited using a visual editor works in Specify 7 and Specify 6 (in forms and query results)
- For reference, here is how to configure a field formatter in Specify 6
- P.S: don't try to enter an emoji character like on the screenshot above - Specify 7 back-end does not support emojis in app resources 😢
Super exciting! I have a few recommendations:
- If no default formatter is selected, the message says "record formatter. I would change this to "field formatter"
- The default for the "size" field for most field types is 0, and this can be saved as long as there is a value in the "hint" field. The value will be shown in the formatter, but it will make the format invalid if that value is entered in the field. In the Specify 6 field formatter, the "size" value cannot go below 1; I think adding this in 7 would be a good solution.
- The user can input and save any value at any length in the "hint" field (see screenshot above) for the numeric field type, but this is misleading because "#" is the only character that actually works, and it will only appear as many times as the value in the "size" field. Maybe this field could be read-only since it's not really functional.
I'd like to hear what others have to say about 2 and 3; they don't conflict with the xml editor, and the "Example field" displays their consequences correctly, but I think these solutions would make the visual editor more user-friendly.
Good point. To have the same message be applicable both in the field formatters editor and record formatters editor, I edited it to say: "Please designate one of the formatters as default"
Made "size" value not go below 1
Fixed. "hint" is now readonly for number fields |
lexiclevenger
left a comment
There was a problem hiding this comment.
Looks good! Another thing I noticed is that clicking on the "edit" button next to a format in schema config often takes you to the wrong one.
Schema.Config_.Gift._.Specify.7.-.Google.Chrome.2024-07-23.11-30-30.mp4
https://fwri1924-field-editor.test.specifysystems.org/specify/schema-config/en/Gift/
|
The carrying over is not really a feature anywhere in 7 as far as I know which is why I think it should be removed. From my perspective I feel like it could be confusing to the user to have values carried over, but if people thing otherwise then I don't mind it staying in. From @maxpatiiuk comment
I do not think this should be the case though. By fixed I did mean to remove it entirely but if other people do think it should be a feature then that's okay. The main reason I wanted it to be removed is because I did find it annoying when testing but if we don't think the users will care about it then I don't mind keeping it in. @grantfitzsimmons do you have any thoughts on this? |
|
@maxpatiiuk, is this PR waiting on final testing or there are still some code changes needed? |
|
no major known issues. testing required. and fixing merge conflicts |
|
TODO:
|
Triggered by 6fa1871 on branch refs/heads/field-editor
|
Here is a list of every PR Since Jul 6, 2024 relating to
#3501 I did my best to try to only get ones that were relevant but there might be some in here that are unnecessary as there was a lot of PRs to go through. Updated to have only the relevent PRs that do not have open known issues |
There was a problem hiding this comment.
I didn't get a chance for a full review but I wanted to comment what I've found so far.
Previous issue that came back
- Error message says 'record formatter' instead of either formatter or field formatter (first mentioned here)
Catalog number formats issues
- This might not be a big deal; however, the format marked as the default does not match the COT default format.
-
Visual editor is not available for this resourcefor a default catalog number format
-
Preview not availablealso for a default catalog number format
Autonumber
- Auto-number is disabled on a numeric field for certain tables, but auto-number by year seems to work fine. On other tables such as CO, accession, gift, loan, etc. auto-number is enabled for both numeric and by year. Could have to do with this comment #5075 (comment) but I am not sure so I wanted to mention it
09-29_12.17.mp4
Link to the DB I was using: https://ojsmnh20250910-field-editor.test.specifysystems.org/specify/
|
…r or field formatter
Triggered by 628c9bb on branch refs/heads/field-editor
emenslin
left a comment
There was a problem hiding this comment.
All the above issues I mentioned are fixed! I tested the rest of the PRs I didn't get a chance to before and also removed some either I decided weren't relevent or there are already open known issues with them, looks good.
grantfitzsimmons
left a comment
There was a problem hiding this comment.
Looking very good. I am really excited to see this in action now! Scoping for the preview is working as expected, non-conforming is clear enough of a descriptor, and it is fairly intuitive for a previously cryptic XML process. There are some interface improvements we could consider implementing in a future release, but this is a strong beginning.



Fixing an issue from 2012 😊
Fixes #23
Checklist
and self-explanatory (or properly documented)
Testing instructions
Generally visual editor for Field Formatters should act and look very similar to the one for Record formatters since it shares a lot of code with it.
To test:
Verify that each field formatter type (constant, any character, ...) can be set in the UI, without user-experience issues, and after saving, can be read back correctly
Verify that a formatter created/edited using a visual editor works in Specify 7 and Specify 6 (in forms and query results)
P.S: don't try to enter an emoji character like on the screenshot above - Specify 7 back-end does not support emojis in app resources 😢
Test prs in this list: feat(FieldFormatters): add visual editor #5075 (comment) (go over the main feature not in details)
Documentation on field formatters