Changelog
Source:NEWS.md
idaifieldR 0.4.0 2026-03-15
[!WARNING] This version introduces breaking changes. I tried, but I do not guarantee that the package will notify you of every change. Proceed with appropriate caution.
New Field Desktop API
- idaifieldR now gets the configuration of a project from Field Desktop directly via the
/config/enpoint instead of the database document. That means that the complete configuration is now accessible.-
parse_field_inputtypes()produces a data.frame of Categories, Parent Categories, input field identifiers and the correspondinginputTypein the given Project Configuration. - NOTE: Subfields of composite fields are simply ignored.
-
Renewed simplify_idaifield()
simplify_idaifield() has been drastically changed. Some functionality which would have created data issues for users was removed (e.g. dimension-recalculation), which results in a less “simple” return list, but will keep the data intact. The function is now less verbose. All lists like campaign or processor or any checkbox-fields that can contain multiple values are returned as vectors instead of lists. Geometry will be parsed to JSON if kept. UUIDs are replaced during processing. Date fields and Dropdown Ranges are transformed to two values per field: handle_date_input() and handle_dropdownrange_input()). For Dropdown Ranges, start and end are the same of only the one value was set in Field Desktop.
Improvements:
- Options:
options(digits=20)is reset to previous value after exitingget_idaifield_docs(). Sorry. -
remove_config_names-Parameter and Function: The project identifier in front of a category or field is not automatically removed any more in the index (get_field_index()ormake_index()), neither insimplify_idaifield()(e.g.test:testField->testField). Theremove_config_names()utility functions still exists. -
convert_to_onehot()works again with the new inputTypes passed fromparse_field_inputtypes(). -
fix_dating()works, but is still questionable and its logic is badly documented. Use with caution.
Maintenance:
- reworked
connect_idaifield()(and affected):- ‘project’ parameter is now required.
- ‘version’ and ‘user’ parameter removed.
- ‘localhost’ new default for server.
- And the deprecated ‘project’ / ‘projectname’ parameter in many other functions is now finally removed.
- Substituted check for project parameter with structure check on connection parameter. If
connect_idaifield()produced if, we just assume it’s correct.
- Renamed
get_uid_list()tomake_index()(with notice, will still work for now). - Removed
check_if_idaifield() - Removed
download_language_list() - Removed
reformat_geometry(): Instead, I recommend (and do) re-json-ify the Geometry and advise to usesf::st_read(json_string, quiet = TRUE)on each geometry elsewhere. - Removed
get_language_lookup()and removed language support fromsimplify_idaifield()- it’s just too much. - Removed
extract_field_names() - Removed
get_field_inputtypes() - Reworked
check_and_unnest()intomaybe_unnest_docs(). - Reworked
find_layers()to require a vector of categories to search for as layer_categories instead of a global option. - Reorganized and reworked a lot of tests (thanks, Claude.ai).
Bug fixes:
-
add_limit_to_query()now validates the updates query again. Unlike before. -
fix_relations()now works with user-defined relations which contain a number in the name.
idaifieldR 0.3.6 2025-11-29
- Quick and dirty fix to get around the default limit of 25 for the
_findenpoint of PouchDB since Field Desktop v3.6.0
idaifieldR 0.3.5 2025-03-08
- Some minor fixes:
- checks if project exists in
simplify_idaifield() - improve support for older projects
- fix language selection in
get_field_index() - (hopefully) fix some failing tests
- checks if project exists in
idaifieldR 0.3.4 2023-12-17
- Make
get_field_index()more efficient by utilizing vectors instead oflapply(). - Adding liesWithinLayer in
get_field_index()andsimplify_idaifield()is now an option. This way, inget_field_index()the “shortDescription” can be added without the more time intensive recursive layer search that comes with the now available optionfind_layers = TRUE. For info on what this does, see documentation offind_layer(). -
simplify_idaifield()is now slightly faster as it usesfind_layer()differently. -
find_layer()can now handle a vector of multiple ids. - The
project/projectname-argument will be removed soon, and project needs to be specified inconnect_idaifield(). Relevant functions currently issue a warning to that effect.
idaifieldR 0.3.3 2023-11-23
New features
- Add
idf_last_changed(connection, n = n): Returns a vector with the last n changed resources in the database. - Add
idf_get_changes(connection, ids = c(...)): Returns a data.frame in which each change to one of the resources listed in ids (can be either their ‘identifier’ or ‘UUID’) corresponds to one row separated by creation or modification. -
remove_config_names()issues a message about duplicate field or category names if it is appropriate. Functions may override data when multiple columns with the same name would otherwise exist, as e.g. ‘diameter’ and ‘projectName:diameter’. Attaches an attribute that lists the duplicate field/category names.
Minor changes
- Notify of new / different version on GitHub on attaching the package (
check_idaifieldr_version()).
Fixes
- Fix problem in
reformat_geometry()(MultiPolygons have to be unnested before processing). (Imported Polygons may be formatted improperly, unnest if necessary (reformat_geometry()). Geometry is still a work in progress.) - Fix a bug in
get_field_index(), where it would return an empty data.frame if there was no configuration-resource.
idaifieldR 0.3.2 2023-04-15
- add option to use or not use exact dates as min/max values for dating if present
- add
idf_json_query()which lets users construct their own queries to the CouchDB-API - improve and export
find_layer() - fix error in
get_language_lookup() - fix bug in
idf_query()-function where it would not get values from fields with possibility of multiple entries - remove config as attribute to save space
- rename
select_by()toidf_select_by() - rename
show_categories()toidf_show_categories() - update
idf_select_by()andidf_show_categories() - update vignettes
- update/enhanced documentation
- add a sticker
idaifieldR 0.3.1 2023-04-02
- of course, I missed half of it.
- fix
idf_query()/idf_index_query(): rename “type” to “category” in resource lists - type column in
idaifield_as_matrix() - fix renaming of type/category in
simplify_idaifield() - fix missed type/category issue
convert_to_onehot() - “solve” minor problem with spreading checkbox fields (#TODO)
idaifieldR 0.3.0 2023-04-02
- remove sofa as dependency and add custom interface with reduced functionality
- restructure unnesting (
unnest_docs()&find_resource()) - add
get_field_index()- getting the uidlist/index directly from the database - exchange type with category everywhere (Attention: This may very well break previous scripts)
- speed up
find_layer()significantly - check if project exists before attempting to query the database
Breaking changes:
- “type” does not refer to the type of resource (Find, Layer, Place etc.) any more and is renamed to category, as this is the current structure of the database. The uidlist-column “type” is renamed to “category” along with any reference to this information anywhere else (I hope ;) ).
idaifieldR 0.2.4 2023-03-31
fixes:
- get type OR category if type is empty in for
get_uid_list() - multiple queries for
idf_query()with type & category - in
simplify_idaifield(), category is currently switched to type, but this will be changed later -> #TODO: rename type everywhere to category to reflect actual db structure
idaifieldR 0.2.3 2023-03-16
- add language management for multi-language input fields when project has more than one project language
- add language list lookup preparation (
get_language_lookup()) for custom config fields - add
download_language_list()to get current translations from GitHub - add ping-checks for all database-related functions to supply custom error messages
-
get_idaifield_docs()will now remove the Configuration as a doc and attach it as attribute to all custom classes, thussimplify_idaifield()will use the config-attribute directly and works without a connection. -
simplify_idaifield()now allows to keep checkbox-fields etc. as-is - change
idf_query()andidf_index_query()to return docs instead of simplified list to allow choice - all
idaifield_...-lists are now named (with the identifier of each resource) - new demodata for future use (
data("idaifieldr_demodata")) - rewritten vignettes and generally updated documentation
-
Notice: The changes may have created problems for iDAI.field 2, and I did not test using the package with iDAI.field 2, as I assume it is not used anymore.
get_idaifield_docs()should still work.
idaifieldR 0.2.2 2023-02-18
- config specific names now removed everywhere
- fixed problem with if-condition when config exists
- fixed problem with the calculation of means for ranged measurements
- comments in the code in some places
- speed up
find_layer(),replace_uid()andcheck_if_uid() - more tests
idaifieldR 0.2.1 2022-10-23
- Fixed
find_layer()(internal), seems to work as intended now. - With the editor for the project configuration in iDAI.field 3, new fields and objects started to be named according to their configurations, e.g. “milet:temperType” etc., if the fields have been newly created. From now on those config specific names are removed from all fields, so that only the part after the double dot remains (e.g. “milet:temperType” becomes “temperType”).
-
check_if_uid()now handles vectors - Speed up
get_uid_list(),replace_uid(),convert_to_onehot(), andfix_relations()(a lot) - split up import with
get_idaifield_docs()and processing to be more usable withsimplify_idaifield(), with advice to use the latter only on subsets so the time is more manageable. - add
check_and_unnest()to export
idaifieldR 0.2.0 2022-05-15
- Version number changed to 0.2, to reflect the rather dramatic changes.
- Faster
get_uid_list()usinglapply() - Added
idf_query()to specifically query the db for groups without first downloading everything - Added
idf_index_query()to specifically query the db for things that are only available in the uidlist (needs a uidlist to do that) -
simplified = TRUE(simplify_idaifield()) will now convert checkbox field to multiple columns. I should probably make this an option in the future, but I need to clean up that function first (TODO). - make it possible to import the configuration file (needed for some new functions; will only work with idaifield3 and up, hopefully); connection and projectname are now attributes of the “idaifield_docs” and “idaifield_resources” objects.
-
idaifield_as_matrix()now returns a matrix with character values, not lists - Dimension lists will be imported as a single value - this is still stupid, actually, but I can’t currently think of a better way.
- Two Vignettes: Demo.Rmd with essential workflow, about.Rmd explaining a bit more. Demo.Rmd updated to begin working on that.
I stated that I don’t intend any structural changes, but that - apparently - was impossible. Old scripts will not work without interference with the new version.
idaifieldR 0.1.4 2021-05-09
- add version to connect_idaifield()-function since options have changed with the switch to Field Desktop (iDAI.field 3)
- update documentation accordingly
idaifieldR 0.1.3 2021-12-07
- Updated docs
- Changes geometry reformatting to accommodate 3D-data (if not available, set to 0)
idaifieldR 0.1.1 2021-04-13
First release.
I will try to limit future changes so that they will not affect the structural outcome of the core functions as they are now.
TODOs: * Find a way to handle the remaining lists better, esp in combination with the non-list columns. * Try to assign column type automatically (numeric for numbers etc.) * How to deal with the dimension…-fields (measurements)? Currently ignored, can be flattened with dplyr and friends.