diff --git a/docs/.snapshots/config.json b/docs/.snapshots/config.json new file mode 100644 index 000000000..dfadca277 --- /dev/null +++ b/docs/.snapshots/config.json @@ -0,0 +1,151 @@ +{ + "excluded_patterns": [ + ".git", + ".gitignore", + "gradle", + "gradlew", + "gradlew.*", + "node_modules", + ".snapshots", + ".idea", + ".vscode", + "*.log", + "*.tmp", + "target", + "dist", + "build", + ".DS_Store", + "*.bak", + "*.swp", + "*.swo", + "*.lock", + "*.iml", + "coverage", + "*.min.js", + "*.min.css", + "__pycache__", + ".marketing", + ".env", + ".env.*", + "*.jpg", + "*.jpeg", + "*.png", + "*.gif", + "*.bmp", + "*.tiff", + "*.ico", + "*.svg", + "*.webp", + "*.psd", + "*.ai", + "*.eps", + "*.indd", + "*.raw", + "*.cr2", + "*.nef", + "*.mp4", + "*.mov", + "*.avi", + "*.wmv", + "*.flv", + "*.mkv", + "*.webm", + "*.m4v", + "*.wfp", + "*.prproj", + "*.aep", + "*.psb", + "*.xcf", + "*.sketch", + "*.fig", + "*.xd", + "*.db", + "*.sqlite", + "*.sqlite3", + "*.mdb", + "*.accdb", + "*.frm", + "*.myd", + "*.myi", + "*.ibd", + "*.dbf", + "*.rdb", + "*.aof", + "*.pdb", + "*.sdb", + "*.s3db", + "*.ddb", + "*.db-shm", + "*.db-wal", + "*.sqlitedb", + "*.sql.gz", + "*.bak.sql", + "dump.sql", + "dump.rdb", + "*.vsix", + "*.jar", + "*.war", + "*.ear", + "*.zip", + "*.tar", + "*.tar.gz", + "*.tgz", + "*.rar", + "*.7z", + "*.exe", + "*.dll", + "*.so", + "*.dylib", + "*.app", + "*.dmg", + "*.iso", + "*.msi", + "*.deb", + "*.rpm", + "*.apk", + "*.aab", + "*.ipa", + "*.pkg", + "*.nupkg", + "*.snap", + "*.whl", + "*.gem", + "*.pyc", + "*.pyo", + "*.pyd", + "*.class", + "*.o", + "*.obj", + "*.lib", + "*.a", + "*.map", + ".npmrc" + ], + "default": { + "default_prompt": "Enter your prompt here", + "default_include_all_files": false, + "default_include_entire_project_structure": true + }, + "included_patterns": [ + "build.gradle", + "settings.gradle", + "gradle.properties", + "pom.xml", + "Makefile", + "CMakeLists.txt", + "package.json", + "requirements.txt", + "Pipfile", + "Gemfile", + "composer.json", + ".editorconfig", + ".eslintrc.json", + ".eslintrc.js", + ".prettierrc", + ".babelrc", + ".dockerignore", + ".gitattributes", + ".stylelintrc", + ".npmrc" + ] +} \ No newline at end of file diff --git a/docs/.snapshots/readme.md b/docs/.snapshots/readme.md new file mode 100644 index 000000000..21fa917db --- /dev/null +++ b/docs/.snapshots/readme.md @@ -0,0 +1,11 @@ +# Snapshots Directory + +This directory contains snapshots of your code for AI interactions. Each snapshot is a markdown file that includes relevant code context and project structure information. + +## What's included in snapshots? +- Selected code files and their contents +- Project structure (if enabled) +- Your prompt/question for the AI + +## Configuration +You can customize snapshot behavior in `config.json`. diff --git a/docs/.snapshots/sponsors.md b/docs/.snapshots/sponsors.md new file mode 100644 index 000000000..2df337f43 --- /dev/null +++ b/docs/.snapshots/sponsors.md @@ -0,0 +1,44 @@ +# Thank you for using Snapshots for AI + +Thanks for using Snapshots for AI. We hope this tool has helped you solve a problem or two. + +If you would like to support our work, please help us by considering the following offers and requests: + +## Ways to Support + +### Join the GBTI Network!!! 🙏🙏🙏 +The GBTI Network is a community of developers who are passionate about open source and community-driven development. Members enjoy access to exclussive tools, resources, a private MineCraft server, a listing in our members directory, co-op opportunities and more. + +- Support our work by becoming a [GBTI Network member](https://gbti.network/membership/). + +### Try out BugHerd 🐛 +BugHerd is a visual feedback and bug-tracking tool designed to streamline website development by enabling users to pin feedback directly onto web pages. This approach facilitates clear communication among clients, designers, developers, and project managers. + +- Start your free trial with [BugHerd](https://partners.bugherd.com/55z6c8az8rvr) today. + +### Hire Developers from Codeable 👥 +Codeable connects you with top-tier professionals skilled in frameworks and technologies such as Laravel, React, Django, Node, Vue.js, Angular, Ruby on Rails, and Node.js. Don't let the WordPress focus discourage you. Codeable experts do it all. + +- Visit [Codeable](https://www.codeable.io/developers/?ref=z8h3e) to hire your next team member. + +### Lead positive reviews on our marketplace listing ⭐⭐⭐⭐⭐ +- Rate us on [VSCode marketplace](https://marketplace.visualstudio.com/items?itemName=GBTI.snapshots-for-ai) +- Review us on [Cursor marketplace](https://open-vsx.org/extension/GBTI/snapshots-for-ai) + +### Star Our GitHub Repository ⭐ +- Star and watch our [repository](https://github.com/gbti-network/vscode-snapshots-for-ai) + +### 📡 Stay Connected +Follow us on your favorite platforms for updates, news, and community discussions: +- **[Twitter/X](https://twitter.com/gbti_network)** +- **[GitHub](https://github.com/gbti-network)** +- **[YouTube](https://www.youtube.com/channel/UCh4FjB6r4oWQW-QFiwqv-UA)** +- **[Dev.to](https://dev.to/gbti)** +- **[Daily.dev](https://dly.to/zfCriM6JfRF)** +- **[Hashnode](https://gbti.hashnode.dev/)** +- **[Discord Community](https://gbti.network)** +- **[Reddit Community](https://www.reddit.com/r/GBTI_network)** + +--- + +Thank you for supporting open source software! 🙏 diff --git a/docs/README.md b/docs/README.md index 618670889..4d7eb2638 100644 --- a/docs/README.md +++ b/docs/README.md @@ -12,39 +12,47 @@ consumer-grade technology to be used in environments where cost and inflexibility have been limiting factors. The source code for Field Book is available on [GitHub](https://github.com/PhenoApps/Field-Book). +
+ +
Field Book collect screen
+
+ Getting Started --------------- Field Book can be downloaded from the [Google Play Store](https://play.google.com/store/apps/details?id=com.tracker.fieldbook) or can be installed manually from the latest [GitHub -Release](https://github.com/PhenoApps/Field-Book/releases). After -installing the app, all permissions should be accepted and sample data -consisting of three fields and traits can be optionally loaded. The -images in the documentation utilize the sample data. +Release](https://github.com/PhenoApps/Field-Book/releases). + +Field Book will display a brief set of slides to introduce you to the app when you open it for the first time. + +
+ +
Field Book intro slides
+
+ +During this intro you must set choices for the required permissions, and choose a storage location for app files. You also have the option to enable a tutorial and/or load a set of three sample fields and sample traits. The images in this documentation will make use of this sample data. -Structure ---------- +When the intro finishes, Field Book will open to its home screen. This screen is divided into sections that can be pressed to access each of the major functions of the app.
- -
Primary Field Book screen
+ +
Field Book home screen
-Field Book contains a home screen with links to the major sections of -the app. To use Field Book: +Navigate between these to: 1. Import your [Fields](fields.md) 2. Create [Traits](traits.md) -3. Optionally modify any [Settings](settings.md) +3. [Collect](collect.md) data -4. Navigate to [Collect](collect.md) - -5. [Export](export.md) data to a CSV (comma - separated value) file +4. And [Export](export.md) collected data to a file or database. + +In addition to these main functions you can customize Field Book [Settings](settings.md), view summaries of your usage [Statistics](statistics.md), or learn more about the app in the [About](about.md) section at any time. The Changelog can be accessed from the top toolbar to see new features and additions to the app. diff --git a/docs/_sidebar.md b/docs/_sidebar.md index a80dff1ec..6827d2cf2 100644 --- a/docs/_sidebar.md +++ b/docs/_sidebar.md @@ -3,41 +3,40 @@ * [Storage](storage.md) * [Fields](fields.md) * [Traits](traits.md) + * [Audio](traits/trait-audio.md) + * [Boolean](traits/trait-boolean.md) + * [Categorical](traits/trait-categorical.md) + * [Multicat](traits/trait-multicat.md) + * [Counter](traits/trait-counter.md) + * [Date](traits/trait-date.md) + * [Location](traits/trait-location.md) + * [Numeric](traits/trait-numeric.md) + * [Percent](traits/trait-percent.md) + * [Text](traits/trait-text.md) + * [Disease Rating](traits/trait-disease.md) + * [GNSS](traits/trait-gnss.md) + * [Photo](traits/trait-photo.md) + * [Zebra Label Print](traits/trait-zebra.md) * Function * [Collect](collect.md) * [Export](export.md) -* Trait Formats - * [Numeric](trait-numeric.md) - * [Categorical](trait-categorical.md) - * [Date](trait-date.md) - * [Percent](trait-percent.md) - * [Boolean](trait-boolean.md) - * [Text](trait-text.md) - * [Photo](trait-photo.md) - * [Audio](trait-audio.md) - * [Counter](trait-counter.md) - * [Disease](trait-disease.md) - * [Multicat](trait-multicat.md) - * [Location](trait-location.md) - * [Zebra](trait-zebra.md) - * [GNSS](trait-gnss.md) - * [USB Camera](trait-usb-camera.md) - * [GoPro](trait-gopro.md) -* Settings * [Settings](settings.md) - * [General](settings-general.md) - * [Profile](settings-profile.md) - * [Appearance](settings-appearance.md) - * [Behavior](settings-behavior.md) - * [Geonav](settings-geonav.md) - * [Sounds](settings-sounds.md) - * [BrAPI](settings-brapi.md) - * [Database](settings-database.md) - * [Beta](settings-beta.md) + * [Profile](settings/settings-profile.md) + * [Features](settings/settings-features.md) + * [Appearance](settings/settings-appearance.md) + * [Behavior](settings/settings-behavior.md) + * [Location](settings/settings-location.md) + * [Sounds](settings/settings-sounds.md) + * [BrAPI](settings/settings-brapi.md) + * [System](settings/settings-system.md) + * [Storage](settings/settings-storage.md) + * [Experimental](settings/settings-experimental.md) * Extra + * [Statistics](statistics.md) + * [About](about.md) * [Barcodes](barcodes.md) * [BrAPI](brapi.md) * [Datagrid](datagrid.md) * [Geonav](geonav.md) * [Training Resources](training-resources.md) -* [About](about.md) + * [Frequently Asked Questions](faq.md) diff --git a/docs/_static/icons/collect/equal-box.png b/docs/_static/icons/collect/equal-box.png new file mode 100644 index 000000000..9a07fe21a Binary files /dev/null and b/docs/_static/icons/collect/equal-box.png differ diff --git a/docs/_static/icons/fields/check-all.png b/docs/_static/icons/fields/check-all.png new file mode 100644 index 000000000..9ddb7671b Binary files /dev/null and b/docs/_static/icons/fields/check-all.png differ diff --git a/docs/_static/icons/fields/delete.png b/docs/_static/icons/fields/delete.png new file mode 100644 index 000000000..6cea54be3 Binary files /dev/null and b/docs/_static/icons/fields/delete.png differ diff --git a/docs/_static/icons/fields/file-export-outline.png b/docs/_static/icons/fields/file-export-outline.png new file mode 100644 index 000000000..f1324ec35 Binary files /dev/null and b/docs/_static/icons/fields/file-export-outline.png differ diff --git a/docs/_static/icons/fields/menu.png b/docs/_static/icons/fields/menu.png new file mode 100644 index 000000000..2af2dac0c Binary files /dev/null and b/docs/_static/icons/fields/menu.png differ diff --git a/docs/_static/icons/fields/sort-ascending.png b/docs/_static/icons/fields/sort-ascending.png deleted file mode 100644 index bdac6cf17..000000000 Binary files a/docs/_static/icons/fields/sort-ascending.png and /dev/null differ diff --git a/docs/_static/icons/fields/sort.png b/docs/_static/icons/fields/sort.png new file mode 100644 index 000000000..edd3e71cb Binary files /dev/null and b/docs/_static/icons/fields/sort.png differ diff --git a/docs/_static/icons/fields/sync.png b/docs/_static/icons/fields/sync.png new file mode 100644 index 000000000..ca585ea20 Binary files /dev/null and b/docs/_static/icons/fields/sync.png differ diff --git a/docs/_static/icons/formats/cog.png b/docs/_static/icons/formats/cog.png new file mode 100644 index 000000000..5d3926144 Binary files /dev/null and b/docs/_static/icons/formats/cog.png differ diff --git a/docs/_static/icons/formats/shutter.png b/docs/_static/icons/formats/shutter.png new file mode 100644 index 000000000..757b6f880 Binary files /dev/null and b/docs/_static/icons/formats/shutter.png differ diff --git a/docs/_static/icons/home/chart-bar.png b/docs/_static/icons/home/chart-bar.png new file mode 100644 index 000000000..2c36d8ea7 Binary files /dev/null and b/docs/_static/icons/home/chart-bar.png differ diff --git a/docs/_static/icons/settings/brapi/dots-vertical.png b/docs/_static/icons/settings/brapi/dots-vertical.png new file mode 100644 index 000000000..4bd57b91b Binary files /dev/null and b/docs/_static/icons/settings/brapi/dots-vertical.png differ diff --git a/docs/_static/icons/settings/brapi/filter-variant.png b/docs/_static/icons/settings/brapi/filter-variant.png new file mode 100644 index 000000000..225083c50 Binary files /dev/null and b/docs/_static/icons/settings/brapi/filter-variant.png differ diff --git a/docs/_static/icons/settings/brapi/history.png b/docs/_static/icons/settings/brapi/history.png new file mode 100644 index 000000000..ef0f5c013 Binary files /dev/null and b/docs/_static/icons/settings/brapi/history.png differ diff --git a/docs/_static/icons/settings/brapi/rename-outline.png b/docs/_static/icons/settings/brapi/rename-outline.png new file mode 100644 index 000000000..3818ba80e Binary files /dev/null and b/docs/_static/icons/settings/brapi/rename-outline.png differ diff --git a/docs/_static/icons/settings/brapi/server-network.png b/docs/_static/icons/settings/brapi/server-network.png new file mode 100644 index 000000000..466223f0a Binary files /dev/null and b/docs/_static/icons/settings/brapi/server-network.png differ diff --git a/docs/_static/icons/settings/brapi/tray-remove.png b/docs/_static/icons/settings/brapi/tray-remove.png new file mode 100644 index 000000000..326b357a5 Binary files /dev/null and b/docs/_static/icons/settings/brapi/tray-remove.png differ diff --git a/docs/_static/icons/settings/beta/flask-outline.png b/docs/_static/icons/settings/experimental/flask-outline.png similarity index 100% rename from docs/_static/icons/settings/beta/flask-outline.png rename to docs/_static/icons/settings/experimental/flask-outline.png diff --git a/docs/_static/icons/settings/general/arrow-right-bold.png b/docs/_static/icons/settings/features/arrow-right-bold.png similarity index 100% rename from docs/_static/icons/settings/general/arrow-right-bold.png rename to docs/_static/icons/settings/features/arrow-right-bold.png diff --git a/docs/_static/icons/settings/general/barcode-scan.png b/docs/_static/icons/settings/features/barcode-scan.png similarity index 100% rename from docs/_static/icons/settings/general/barcode-scan.png rename to docs/_static/icons/settings/features/barcode-scan.png diff --git a/docs/_static/icons/settings/general/barcode.png b/docs/_static/icons/settings/features/barcode.png similarity index 100% rename from docs/_static/icons/settings/general/barcode.png rename to docs/_static/icons/settings/features/barcode.png diff --git a/docs/_static/icons/settings/general/fingerprint.png b/docs/_static/icons/settings/features/fingerprint.png similarity index 100% rename from docs/_static/icons/settings/general/fingerprint.png rename to docs/_static/icons/settings/features/fingerprint.png diff --git a/docs/_static/icons/settings/general/grid.png b/docs/_static/icons/settings/features/grid.png similarity index 100% rename from docs/_static/icons/settings/general/grid.png rename to docs/_static/icons/settings/features/grid.png diff --git a/docs/_static/icons/settings/geonav/bluetooth.png b/docs/_static/icons/settings/location/bluetooth.png similarity index 100% rename from docs/_static/icons/settings/geonav/bluetooth.png rename to docs/_static/icons/settings/location/bluetooth.png diff --git a/docs/_static/icons/settings/geonav/function-variant.png b/docs/_static/icons/settings/location/function-variant.png similarity index 100% rename from docs/_static/icons/settings/geonav/function-variant.png rename to docs/_static/icons/settings/location/function-variant.png diff --git a/docs/_static/icons/settings/geonav/map-search.png b/docs/_static/icons/settings/location/map-search.png similarity index 100% rename from docs/_static/icons/settings/geonav/map-search.png rename to docs/_static/icons/settings/location/map-search.png diff --git a/docs/_static/icons/settings/geonav/script-text-outline.png b/docs/_static/icons/settings/location/script-text-outline.png similarity index 100% rename from docs/_static/icons/settings/geonav/script-text-outline.png rename to docs/_static/icons/settings/location/script-text-outline.png diff --git a/docs/_static/icons/settings/geonav/timer-sand-empty.png b/docs/_static/icons/settings/location/timer-sand-empty.png similarity index 100% rename from docs/_static/icons/settings/geonav/timer-sand-empty.png rename to docs/_static/icons/settings/location/timer-sand-empty.png diff --git a/docs/_static/icons/settings/main/database-cog.png b/docs/_static/icons/settings/main/database-cog.png new file mode 100644 index 000000000..9f6382bcb Binary files /dev/null and b/docs/_static/icons/settings/main/database-cog.png differ diff --git a/docs/_static/icons/settings/main/star-circle-outline.png b/docs/_static/icons/settings/main/star-circle-outline.png new file mode 100644 index 000000000..c6f712d99 Binary files /dev/null and b/docs/_static/icons/settings/main/star-circle-outline.png differ diff --git a/docs/_static/icons/settings/database/database-export.png b/docs/_static/icons/settings/storage/database-export.png similarity index 100% rename from docs/_static/icons/settings/database/database-export.png rename to docs/_static/icons/settings/storage/database-export.png diff --git a/docs/_static/icons/settings/database/database-import.png b/docs/_static/icons/settings/storage/database-import.png similarity index 100% rename from docs/_static/icons/settings/database/database-import.png rename to docs/_static/icons/settings/storage/database-import.png diff --git a/docs/_static/icons/settings/database/database-remove.png b/docs/_static/icons/settings/storage/database-remove.png similarity index 100% rename from docs/_static/icons/settings/database/database-remove.png rename to docs/_static/icons/settings/storage/database-remove.png diff --git a/docs/_static/icons/settings/general/application-export.png b/docs/_static/icons/settings/system/application-export.png similarity index 100% rename from docs/_static/icons/settings/general/application-export.png rename to docs/_static/icons/settings/system/application-export.png diff --git a/docs/_static/icons/settings/general/application-import.png b/docs/_static/icons/settings/system/application-import.png similarity index 100% rename from docs/_static/icons/settings/general/application-import.png rename to docs/_static/icons/settings/system/application-import.png diff --git a/docs/_static/icons/settings/general/sd.png b/docs/_static/icons/settings/system/sd.png similarity index 100% rename from docs/_static/icons/settings/general/sd.png rename to docs/_static/icons/settings/system/sd.png diff --git a/docs/_static/icons/traits/sort.png b/docs/_static/icons/traits/sort.png new file mode 100644 index 000000000..edd3e71cb Binary files /dev/null and b/docs/_static/icons/traits/sort.png differ diff --git a/docs/_static/images/about/about_framed.png b/docs/_static/images/about/about_framed.png index c19992463..4fddf39d9 100644 Binary files a/docs/_static/images/about/about_framed.png and b/docs/_static/images/about/about_framed.png differ diff --git a/docs/_static/images/brapi/brapi_create_trait_framed.png b/docs/_static/images/brapi/brapi_create_trait_framed.png new file mode 100644 index 000000000..37a0b2376 Binary files /dev/null and b/docs/_static/images/brapi/brapi_create_trait_framed.png differ diff --git a/docs/_static/images/brapi/brapi_field_detail_sync.png b/docs/_static/images/brapi/brapi_field_detail_sync.png new file mode 100644 index 000000000..bddd24cc3 Binary files /dev/null and b/docs/_static/images/brapi/brapi_field_detail_sync.png differ diff --git a/docs/_static/images/brapi/brapi_field_detail_sync_summary.png b/docs/_static/images/brapi/brapi_field_detail_sync_summary.png new file mode 100644 index 000000000..54dbb0189 Binary files /dev/null and b/docs/_static/images/brapi/brapi_field_detail_sync_summary.png differ diff --git a/docs/_static/images/brapi/brapi_field_detail_synced.png b/docs/_static/images/brapi/brapi_field_detail_synced.png new file mode 100644 index 000000000..e3e282986 Binary files /dev/null and b/docs/_static/images/brapi/brapi_field_detail_synced.png differ diff --git a/docs/_static/images/brapi/brapi_field_import_framed.png b/docs/_static/images/brapi/brapi_field_import_framed.png new file mode 100644 index 000000000..75ba2a9cb Binary files /dev/null and b/docs/_static/images/brapi/brapi_field_import_framed.png differ diff --git a/docs/_static/images/brapi/brapi_field_import_joined.png b/docs/_static/images/brapi/brapi_field_import_joined.png index b8fd65c3b..8c06acbcd 100644 Binary files a/docs/_static/images/brapi/brapi_field_import_joined.png and b/docs/_static/images/brapi/brapi_field_import_joined.png differ diff --git a/docs/_static/images/brapi/brapi_field_import_level_framed.png b/docs/_static/images/brapi/brapi_field_import_level_framed.png new file mode 100644 index 000000000..993d2d9be Binary files /dev/null and b/docs/_static/images/brapi/brapi_field_import_level_framed.png differ diff --git a/docs/_static/images/brapi/brapi_field_import_selected_framed.png b/docs/_static/images/brapi/brapi_field_import_selected_framed.png new file mode 100644 index 000000000..a7911a4ad Binary files /dev/null and b/docs/_static/images/brapi/brapi_field_import_selected_framed.png differ diff --git a/docs/_static/images/brapi/brapi_sync_joined.png b/docs/_static/images/brapi/brapi_sync_joined.png new file mode 100644 index 000000000..effe9b718 Binary files /dev/null and b/docs/_static/images/brapi/brapi_sync_joined.png differ diff --git a/docs/_static/images/brapi/brapi_trait_import_change_joined.png b/docs/_static/images/brapi/brapi_trait_import_change_joined.png new file mode 100644 index 000000000..626160ef6 Binary files /dev/null and b/docs/_static/images/brapi/brapi_trait_import_change_joined.png differ diff --git a/docs/_static/images/brapi/brapi_trait_import_choose_format.png b/docs/_static/images/brapi/brapi_trait_import_choose_format.png new file mode 100644 index 000000000..531ffd17f Binary files /dev/null and b/docs/_static/images/brapi/brapi_trait_import_choose_format.png differ diff --git a/docs/_static/images/brapi/brapi_trait_import_format_changed.png b/docs/_static/images/brapi/brapi_trait_import_format_changed.png new file mode 100644 index 000000000..28f6e9e73 Binary files /dev/null and b/docs/_static/images/brapi/brapi_trait_import_format_changed.png differ diff --git a/docs/_static/images/brapi/brapi_trait_import_format_screen.png b/docs/_static/images/brapi/brapi_trait_import_format_screen.png new file mode 100644 index 000000000..8b79b63aa Binary files /dev/null and b/docs/_static/images/brapi/brapi_trait_import_format_screen.png differ diff --git a/docs/_static/images/brapi/brapi_trait_import_joined.png b/docs/_static/images/brapi/brapi_trait_import_joined.png index 9db05ae31..6fc4a2182 100644 Binary files a/docs/_static/images/brapi/brapi_trait_import_joined.png and b/docs/_static/images/brapi/brapi_trait_import_joined.png differ diff --git a/docs/_static/images/brapi/brapi_trait_import_layout_changed.png b/docs/_static/images/brapi/brapi_trait_import_layout_changed.png new file mode 100644 index 000000000..27ec4c147 Binary files /dev/null and b/docs/_static/images/brapi/brapi_trait_import_layout_changed.png differ diff --git a/docs/_static/images/brapi/brapi_trait_import_selected.png b/docs/_static/images/brapi/brapi_trait_import_selected.png new file mode 100644 index 000000000..a06bc1d25 Binary files /dev/null and b/docs/_static/images/brapi/brapi_trait_import_selected.png differ diff --git a/docs/_static/images/brapi/brapi_trait_import_trait_layout.png b/docs/_static/images/brapi/brapi_trait_import_trait_layout.png new file mode 100644 index 000000000..4d61e1a83 Binary files /dev/null and b/docs/_static/images/brapi/brapi_trait_import_trait_layout.png differ diff --git a/docs/_static/images/brapi/brapi_url_framed.png b/docs/_static/images/brapi/brapi_url_framed.png index 3be7a6b21..7720991a0 100644 Binary files a/docs/_static/images/brapi/brapi_url_framed.png and b/docs/_static/images/brapi/brapi_url_framed.png differ diff --git a/docs/_static/images/brapi/brapi_url_joined.png b/docs/_static/images/brapi/brapi_url_joined.png index 7a11fe021..db298f1ae 100644 Binary files a/docs/_static/images/brapi/brapi_url_joined.png and b/docs/_static/images/brapi/brapi_url_joined.png differ diff --git a/docs/_static/images/collect/collect_framed.png b/docs/_static/images/collect/collect_framed.png index 83e3e9fe9..3dc1e0263 100644 Binary files a/docs/_static/images/collect/collect_framed.png and b/docs/_static/images/collect/collect_framed.png differ diff --git a/docs/_static/images/collect/collect_infobar_edit_framed.png b/docs/_static/images/collect/collect_infobar_edit_framed.png new file mode 100644 index 000000000..deeddf27f Binary files /dev/null and b/docs/_static/images/collect/collect_infobar_edit_framed.png differ diff --git a/docs/_static/images/collect/collect_infobar_joined.png b/docs/_static/images/collect/collect_infobar_joined.png new file mode 100644 index 000000000..2b78130a7 Binary files /dev/null and b/docs/_static/images/collect/collect_infobar_joined.png differ diff --git a/docs/_static/images/collect/collect_search_add_attribute_framed.png b/docs/_static/images/collect/collect_search_add_attribute_framed.png new file mode 100644 index 000000000..598742038 Binary files /dev/null and b/docs/_static/images/collect/collect_search_add_attribute_framed.png differ diff --git a/docs/_static/images/collect/collect_search_seedname_framed.png b/docs/_static/images/collect/collect_search_seedname_framed.png new file mode 100644 index 000000000..e4616f2a4 Binary files /dev/null and b/docs/_static/images/collect/collect_search_seedname_framed.png differ diff --git a/docs/_static/images/collect/collect_search_seedname_results_framed.png b/docs/_static/images/collect/collect_search_seedname_results_framed.png new file mode 100644 index 000000000..787842723 Binary files /dev/null and b/docs/_static/images/collect/collect_search_seedname_results_framed.png differ diff --git a/docs/_static/images/collect/collect_search_steps_joined.png b/docs/_static/images/collect/collect_search_steps_joined.png new file mode 100644 index 000000000..b276503cb Binary files /dev/null and b/docs/_static/images/collect/collect_search_steps_joined.png differ diff --git a/docs/_static/images/collect/collect_select_trait.png b/docs/_static/images/collect/collect_select_trait.png new file mode 100644 index 000000000..3db315b8f Binary files /dev/null and b/docs/_static/images/collect/collect_select_trait.png differ diff --git a/docs/_static/images/collect/collect_summary_edit_framed.png b/docs/_static/images/collect/collect_summary_edit_framed.png new file mode 100644 index 000000000..bf447b412 Binary files /dev/null and b/docs/_static/images/collect/collect_summary_edit_framed.png differ diff --git a/docs/_static/images/collect/collect_summary_framed.png b/docs/_static/images/collect/collect_summary_framed.png index d93a07a04..e2284c8d6 100644 Binary files a/docs/_static/images/collect/collect_summary_framed.png and b/docs/_static/images/collect/collect_summary_framed.png differ diff --git a/docs/_static/images/collect/collect_summary_joined.png b/docs/_static/images/collect/collect_summary_joined.png new file mode 100644 index 000000000..a9e477c00 Binary files /dev/null and b/docs/_static/images/collect/collect_summary_joined.png differ diff --git a/docs/_static/images/collect/collect_trait_menu_framed.png b/docs/_static/images/collect/collect_trait_menu_framed.png index bba1e104a..4f3af46cf 100644 Binary files a/docs/_static/images/collect/collect_trait_menu_framed.png and b/docs/_static/images/collect/collect_trait_menu_framed.png differ diff --git a/docs/_static/images/collect/number_of_infobars_framed.png b/docs/_static/images/collect/number_of_infobars_framed.png new file mode 100644 index 000000000..e31885277 Binary files /dev/null and b/docs/_static/images/collect/number_of_infobars_framed.png differ diff --git a/docs/_static/images/datagrid/datagrid_choose_header_2_framed.png b/docs/_static/images/datagrid/datagrid_choose_header_2_framed.png new file mode 100644 index 000000000..80a96210d Binary files /dev/null and b/docs/_static/images/datagrid/datagrid_choose_header_2_framed.png differ diff --git a/docs/_static/images/datagrid/datagrid_choose_header_framed.png b/docs/_static/images/datagrid/datagrid_choose_header_framed.png new file mode 100644 index 000000000..dd70218c9 Binary files /dev/null and b/docs/_static/images/datagrid/datagrid_choose_header_framed.png differ diff --git a/docs/_static/images/datagrid/datagrid_edit_rows_joined.png b/docs/_static/images/datagrid/datagrid_edit_rows_joined.png index f61bcd574..ece9da6a9 100644 Binary files a/docs/_static/images/datagrid/datagrid_edit_rows_joined.png and b/docs/_static/images/datagrid/datagrid_edit_rows_joined.png differ diff --git a/docs/_static/images/datagrid/datagrid_updated_view_framed.png b/docs/_static/images/datagrid/datagrid_updated_view_framed.png new file mode 100644 index 000000000..cce45172b Binary files /dev/null and b/docs/_static/images/datagrid/datagrid_updated_view_framed.png differ diff --git a/docs/_static/images/datagrid/datagrid_view_framed.png b/docs/_static/images/datagrid/datagrid_view_framed.png index 0f5d25dbc..6047eb005 100644 Binary files a/docs/_static/images/datagrid/datagrid_view_framed.png and b/docs/_static/images/datagrid/datagrid_view_framed.png differ diff --git a/docs/_static/images/export/export_framed.png b/docs/_static/images/export/export_framed.png index ace756943..fbf9c6f35 100644 Binary files a/docs/_static/images/export/export_framed.png and b/docs/_static/images/export/export_framed.png differ diff --git a/docs/_static/images/fields/a b/docs/_static/images/fields/a new file mode 100644 index 000000000..e69de29bb diff --git a/docs/_static/images/fields/a-0 b/docs/_static/images/fields/a-0 new file mode 100644 index 000000000..02910da8c Binary files /dev/null and b/docs/_static/images/fields/a-0 differ diff --git a/docs/_static/images/fields/add_field_brapi_enabled_framed.png b/docs/_static/images/fields/add_field_brapi_enabled_framed.png new file mode 100644 index 000000000..dfab42af1 Binary files /dev/null and b/docs/_static/images/fields/add_field_brapi_enabled_framed.png differ diff --git a/docs/_static/images/fields/add_field_framed.png b/docs/_static/images/fields/add_field_framed.png new file mode 100644 index 000000000..d0ded7351 Binary files /dev/null and b/docs/_static/images/fields/add_field_framed.png differ diff --git a/docs/_static/images/fields/cloud_import_joined.png b/docs/_static/images/fields/cloud_import_joined.png new file mode 100644 index 000000000..24b1874e6 Binary files /dev/null and b/docs/_static/images/fields/cloud_import_joined.png differ diff --git a/docs/_static/images/fields/cloud_open_from_framed.png b/docs/_static/images/fields/cloud_open_from_framed.png new file mode 100644 index 000000000..bd0b06058 Binary files /dev/null and b/docs/_static/images/fields/cloud_open_from_framed.png differ diff --git a/docs/_static/images/fields/cloud_storage_import_framed.png b/docs/_static/images/fields/cloud_storage_import_framed.png new file mode 100644 index 000000000..3cd21869a Binary files /dev/null and b/docs/_static/images/fields/cloud_storage_import_framed.png differ diff --git a/docs/_static/images/fields/field_detail_framed.png b/docs/_static/images/fields/field_detail_framed.png new file mode 100644 index 000000000..6a80a64be Binary files /dev/null and b/docs/_static/images/fields/field_detail_framed.png differ diff --git a/docs/_static/images/fields/fields_delete_framed.png b/docs/_static/images/fields/fields_delete_framed.png new file mode 100644 index 000000000..01b1695b6 Binary files /dev/null and b/docs/_static/images/fields/fields_delete_framed.png differ diff --git a/docs/_static/images/fields/fields_framed.png b/docs/_static/images/fields/fields_framed.png index 8b1ac1afa..4e6d79344 100644 Binary files a/docs/_static/images/fields/fields_framed.png and b/docs/_static/images/fields/fields_framed.png differ diff --git a/docs/_static/images/fields/fields_import_joined.png b/docs/_static/images/fields/fields_import_joined.png index 53f1f0e3c..5139e8ac4 100644 Binary files a/docs/_static/images/fields/fields_import_joined.png and b/docs/_static/images/fields/fields_import_joined.png differ diff --git a/docs/_static/images/fields/fields_list_item.png b/docs/_static/images/fields/fields_list_item.png index 48cea0a88..e62a14c27 100644 Binary files a/docs/_static/images/fields/fields_list_item.png and b/docs/_static/images/fields/fields_list_item.png differ diff --git a/docs/_static/images/fields/fields_sort_framed.png b/docs/_static/images/fields/fields_sort_framed.png new file mode 100644 index 000000000..d91fb20b8 Binary files /dev/null and b/docs/_static/images/fields/fields_sort_framed.png differ diff --git a/docs/_static/images/fields/import_id_choice_framed.png b/docs/_static/images/fields/import_id_choice_framed.png new file mode 100644 index 000000000..542102e7f Binary files /dev/null and b/docs/_static/images/fields/import_id_choice_framed.png differ diff --git a/docs/_static/images/fields/local_import_framed.png b/docs/_static/images/fields/local_import_framed.png new file mode 100644 index 000000000..b3d4be7ef Binary files /dev/null and b/docs/_static/images/fields/local_import_framed.png differ diff --git a/docs/_static/images/home_framed.png b/docs/_static/images/home_framed.png index a33c6be42..e7041ae2c 100644 Binary files a/docs/_static/images/home_framed.png and b/docs/_static/images/home_framed.png differ diff --git a/docs/_static/images/intro/allow_file_access_framed.png b/docs/_static/images/intro/allow_file_access_framed.png new file mode 100644 index 000000000..8a69b5d5d Binary files /dev/null and b/docs/_static/images/intro/allow_file_access_framed.png differ diff --git a/docs/_static/images/intro/define_storage_framed.png b/docs/_static/images/intro/define_storage_framed.png new file mode 100644 index 000000000..230308a8f Binary files /dev/null and b/docs/_static/images/intro/define_storage_framed.png differ diff --git a/docs/_static/images/intro/defining_storage_location_joined.png b/docs/_static/images/intro/defining_storage_location_joined.png new file mode 100644 index 000000000..aedb2d8ad Binary files /dev/null and b/docs/_static/images/intro/defining_storage_location_joined.png differ diff --git a/docs/_static/images/intro/features_framed.png b/docs/_static/images/intro/features_framed.png new file mode 100644 index 000000000..629832cfb Binary files /dev/null and b/docs/_static/images/intro/features_framed.png differ diff --git a/docs/_static/images/intro/intro_slides_1_joined.png b/docs/_static/images/intro/intro_slides_1_joined.png new file mode 100644 index 000000000..d96d966ed Binary files /dev/null and b/docs/_static/images/intro/intro_slides_1_joined.png differ diff --git a/docs/_static/images/intro/intro_slides_2_joined.png b/docs/_static/images/intro/intro_slides_2_joined.png new file mode 100644 index 000000000..1657290e9 Binary files /dev/null and b/docs/_static/images/intro/intro_slides_2_joined.png differ diff --git a/docs/_static/images/intro/intro_slides_joined.png b/docs/_static/images/intro/intro_slides_joined.png new file mode 100644 index 000000000..72605a2b9 Binary files /dev/null and b/docs/_static/images/intro/intro_slides_joined.png differ diff --git a/docs/_static/images/intro/new_folder_framed.png b/docs/_static/images/intro/new_folder_framed.png new file mode 100644 index 000000000..1da1180c1 Binary files /dev/null and b/docs/_static/images/intro/new_folder_framed.png differ diff --git a/docs/_static/images/intro/optional_setup_framed.png b/docs/_static/images/intro/optional_setup_framed.png new file mode 100644 index 000000000..347279c36 Binary files /dev/null and b/docs/_static/images/intro/optional_setup_framed.png differ diff --git a/docs/_static/images/intro/required_setup_framed.png b/docs/_static/images/intro/required_setup_framed.png new file mode 100644 index 000000000..3de3ddace Binary files /dev/null and b/docs/_static/images/intro/required_setup_framed.png differ diff --git a/docs/_static/images/intro/welcome_framed.png b/docs/_static/images/intro/welcome_framed.png new file mode 100644 index 000000000..920b7491c Binary files /dev/null and b/docs/_static/images/intro/welcome_framed.png differ diff --git a/docs/_static/images/settings/appearance/settings_appearance_framed.png b/docs/_static/images/settings/appearance/settings_appearance_framed.png index 32f99e78f..8d7321a94 100644 Binary files a/docs/_static/images/settings/appearance/settings_appearance_framed.png and b/docs/_static/images/settings/appearance/settings_appearance_framed.png differ diff --git a/docs/_static/images/settings/appearance/settings_appearance_language_framed.png b/docs/_static/images/settings/appearance/settings_appearance_language_framed.png index b48cb63ea..91d456414 100644 Binary files a/docs/_static/images/settings/appearance/settings_appearance_language_framed.png and b/docs/_static/images/settings/appearance/settings_appearance_language_framed.png differ diff --git a/docs/_static/images/settings/appearance/settings_appearance_theme_framed.png b/docs/_static/images/settings/appearance/settings_appearance_theme_framed.png index 5d1d4e0d4..4f7a4ad3f 100644 Binary files a/docs/_static/images/settings/appearance/settings_appearance_theme_framed.png and b/docs/_static/images/settings/appearance/settings_appearance_theme_framed.png differ diff --git a/docs/_static/images/settings/appearance/settings_appearance_toolbar_framed.png b/docs/_static/images/settings/appearance/settings_appearance_toolbar_framed.png index d520fa5c3..e1bebd6db 100644 Binary files a/docs/_static/images/settings/appearance/settings_appearance_toolbar_framed.png and b/docs/_static/images/settings/appearance/settings_appearance_toolbar_framed.png differ diff --git a/docs/_static/images/settings/behavior/settings_behavior_framed.png b/docs/_static/images/settings/behavior/settings_behavior_framed.png index 6bc2043ac..b0a922319 100644 Binary files a/docs/_static/images/settings/behavior/settings_behavior_framed.png and b/docs/_static/images/settings/behavior/settings_behavior_framed.png differ diff --git a/docs/_static/images/settings/beta/settings_beta_framed.png b/docs/_static/images/settings/beta/settings_beta_framed.png deleted file mode 100644 index 9381e1698..000000000 Binary files a/docs/_static/images/settings/beta/settings_beta_framed.png and /dev/null differ diff --git a/docs/_static/images/settings/beta/settings_beta_repeated_framed.png b/docs/_static/images/settings/beta/settings_beta_repeated_framed.png deleted file mode 100644 index 31925713b..000000000 Binary files a/docs/_static/images/settings/beta/settings_beta_repeated_framed.png and /dev/null differ diff --git a/docs/_static/images/settings/brapi/settings_brapi_1_framed.png b/docs/_static/images/settings/brapi/settings_brapi_1_framed.png index 0c1e36b11..536e47b65 100644 Binary files a/docs/_static/images/settings/brapi/settings_brapi_1_framed.png and b/docs/_static/images/settings/brapi/settings_brapi_1_framed.png differ diff --git a/docs/_static/images/settings/brapi/settings_brapi_2_framed.png b/docs/_static/images/settings/brapi/settings_brapi_2_framed.png index 8b0009162..d51fb3f2a 100644 Binary files a/docs/_static/images/settings/brapi/settings_brapi_2_framed.png and b/docs/_static/images/settings/brapi/settings_brapi_2_framed.png differ diff --git a/docs/_static/images/settings/brapi/settings_brapi_cache_invalidation.png b/docs/_static/images/settings/brapi/settings_brapi_cache_invalidation.png new file mode 100644 index 000000000..3cefb2a96 Binary files /dev/null and b/docs/_static/images/settings/brapi/settings_brapi_cache_invalidation.png differ diff --git a/docs/_static/images/settings/brapi/settings_brapi_display_name.png b/docs/_static/images/settings/brapi/settings_brapi_display_name.png new file mode 100644 index 000000000..6262ccaeb Binary files /dev/null and b/docs/_static/images/settings/brapi/settings_brapi_display_name.png differ diff --git a/docs/_static/images/settings/brapi/settings_brapi_framed.png b/docs/_static/images/settings/brapi/settings_brapi_framed.png new file mode 100644 index 000000000..536e47b65 Binary files /dev/null and b/docs/_static/images/settings/brapi/settings_brapi_framed.png differ diff --git a/docs/_static/images/settings/brapi/settings_brapi_oidc_flow.png b/docs/_static/images/settings/brapi/settings_brapi_oidc_flow.png index 0921571f4..a0e7d78f4 100644 Binary files a/docs/_static/images/settings/brapi/settings_brapi_oidc_flow.png and b/docs/_static/images/settings/brapi/settings_brapi_oidc_flow.png differ diff --git a/docs/_static/images/settings/brapi/settings_brapi_version.png b/docs/_static/images/settings/brapi/settings_brapi_version.png index f934b9f8a..a91f4e347 100644 Binary files a/docs/_static/images/settings/brapi/settings_brapi_version.png and b/docs/_static/images/settings/brapi/settings_brapi_version.png differ diff --git a/docs/_static/images/settings/database/settings_database_framed.png b/docs/_static/images/settings/database/settings_database_framed.png deleted file mode 100644 index f1a1a9810..000000000 Binary files a/docs/_static/images/settings/database/settings_database_framed.png and /dev/null differ diff --git a/docs/_static/images/settings/experimental/settings_experimental_framed.png b/docs/_static/images/settings/experimental/settings_experimental_framed.png new file mode 100644 index 000000000..d1296902c Binary files /dev/null and b/docs/_static/images/settings/experimental/settings_experimental_framed.png differ diff --git a/docs/_static/images/settings/beta/settings_beta_repeated_icon.png b/docs/_static/images/settings/experimental/settings_experimental_repeated_icon.png similarity index 100% rename from docs/_static/images/settings/beta/settings_beta_repeated_icon.png rename to docs/_static/images/settings/experimental/settings_experimental_repeated_icon.png diff --git a/docs/_static/images/settings/features/settings_features_framed.png b/docs/_static/images/settings/features/settings_features_framed.png new file mode 100644 index 000000000..a3bbf9737 Binary files /dev/null and b/docs/_static/images/settings/features/settings_features_framed.png differ diff --git a/docs/_static/images/settings/general/settings_general_moveto_uid.png b/docs/_static/images/settings/features/settings_features_moveto_uid.png similarity index 100% rename from docs/_static/images/settings/general/settings_general_moveto_uid.png rename to docs/_static/images/settings/features/settings_features_moveto_uid.png diff --git a/docs/_static/images/settings/general/settings_general_next_entry.png b/docs/_static/images/settings/features/settings_features_next_entry.png similarity index 100% rename from docs/_static/images/settings/general/settings_general_next_entry.png rename to docs/_static/images/settings/features/settings_features_next_entry.png diff --git a/docs/_static/images/settings/general/settings_general_framed.png b/docs/_static/images/settings/general/settings_general_framed.png deleted file mode 100644 index 4651dfee5..000000000 Binary files a/docs/_static/images/settings/general/settings_general_framed.png and /dev/null differ diff --git a/docs/_static/images/settings/geonav/settings_geonav_framed.png b/docs/_static/images/settings/geonav/settings_geonav_framed.png deleted file mode 100644 index 565baf5ef..000000000 Binary files a/docs/_static/images/settings/geonav/settings_geonav_framed.png and /dev/null differ diff --git a/docs/_static/images/settings/general/settings_general_location_collected.png b/docs/_static/images/settings/location/settings_location_collected.png similarity index 100% rename from docs/_static/images/settings/general/settings_general_location_collected.png rename to docs/_static/images/settings/location/settings_location_collected.png diff --git a/docs/_static/images/settings/location/settings_location_framed.png b/docs/_static/images/settings/location/settings_location_framed.png new file mode 100644 index 000000000..6506a1cd3 Binary files /dev/null and b/docs/_static/images/settings/location/settings_location_framed.png differ diff --git a/docs/_static/images/settings/geonav/settings_geonav_search_method.png b/docs/_static/images/settings/location/settings_location_search_method.png similarity index 100% rename from docs/_static/images/settings/geonav/settings_geonav_search_method.png rename to docs/_static/images/settings/location/settings_location_search_method.png diff --git a/docs/_static/images/settings/geonav/settings_geonav_update_intervals.png b/docs/_static/images/settings/location/settings_location_update_intervals.png similarity index 100% rename from docs/_static/images/settings/geonav/settings_geonav_update_intervals.png rename to docs/_static/images/settings/location/settings_location_update_intervals.png diff --git a/docs/_static/images/settings/profile/settings_profile_framed.png b/docs/_static/images/settings/profile/settings_profile_framed.png index 6674a7f74..c5f2acb36 100644 Binary files a/docs/_static/images/settings/profile/settings_profile_framed.png and b/docs/_static/images/settings/profile/settings_profile_framed.png differ diff --git a/docs/_static/images/settings/sounds/settings_sounds_framed.png b/docs/_static/images/settings/sounds/settings_sounds_framed.png index 6c221caa1..a2ce35b46 100644 Binary files a/docs/_static/images/settings/sounds/settings_sounds_framed.png and b/docs/_static/images/settings/sounds/settings_sounds_framed.png differ diff --git a/docs/_static/images/settings/database/settings_database_delete.png b/docs/_static/images/settings/storage/settings_storage_database_delete.png similarity index 100% rename from docs/_static/images/settings/database/settings_database_delete.png rename to docs/_static/images/settings/storage/settings_storage_database_delete.png diff --git a/docs/_static/images/settings/database/settings_database_export.png b/docs/_static/images/settings/storage/settings_storage_database_export.png similarity index 100% rename from docs/_static/images/settings/database/settings_database_export.png rename to docs/_static/images/settings/storage/settings_storage_database_export.png diff --git a/docs/_static/images/settings/database/settings_database_import.png b/docs/_static/images/settings/storage/settings_storage_database_import.png similarity index 100% rename from docs/_static/images/settings/database/settings_database_import.png rename to docs/_static/images/settings/storage/settings_storage_database_import.png diff --git a/docs/_static/images/settings/storage/settings_storage_framed.png b/docs/_static/images/settings/storage/settings_storage_framed.png new file mode 100644 index 000000000..eb3f988dd Binary files /dev/null and b/docs/_static/images/settings/storage/settings_storage_framed.png differ diff --git a/docs/_static/images/settings/general/settings_general_export_sources.png b/docs/_static/images/settings/system/settings_system_export_sources.png similarity index 100% rename from docs/_static/images/settings/general/settings_general_export_sources.png rename to docs/_static/images/settings/system/settings_system_export_sources.png diff --git a/docs/_static/images/settings/system/settings_system_framed.png b/docs/_static/images/settings/system/settings_system_framed.png new file mode 100644 index 000000000..1dd4b2a86 Binary files /dev/null and b/docs/_static/images/settings/system/settings_system_framed.png differ diff --git a/docs/_static/images/settings/general/settings_general_import_sources.png b/docs/_static/images/settings/system/settings_system_import_sources.png similarity index 100% rename from docs/_static/images/settings/general/settings_general_import_sources.png rename to docs/_static/images/settings/system/settings_system_import_sources.png diff --git a/docs/_static/images/statistics/statistics_framed.png b/docs/_static/images/statistics/statistics_framed.png new file mode 100644 index 000000000..9b2c3e157 Binary files /dev/null and b/docs/_static/images/statistics/statistics_framed.png differ diff --git a/docs/_static/images/statistics/statistics_heatmap_framed.png b/docs/_static/images/statistics/statistics_heatmap_framed.png new file mode 100644 index 000000000..6c47d62b7 Binary files /dev/null and b/docs/_static/images/statistics/statistics_heatmap_framed.png differ diff --git a/docs/_static/images/statistics/statistics_heatmap_framed_toggle.png b/docs/_static/images/statistics/statistics_heatmap_framed_toggle.png new file mode 100644 index 000000000..9ea4915c0 Binary files /dev/null and b/docs/_static/images/statistics/statistics_heatmap_framed_toggle.png differ diff --git a/docs/_static/images/statistics/statistics_heatmap_joined.png b/docs/_static/images/statistics/statistics_heatmap_joined.png new file mode 100644 index 000000000..965e0c0a9 Binary files /dev/null and b/docs/_static/images/statistics/statistics_heatmap_joined.png differ diff --git a/docs/_static/images/statistics/statistics_joined.png b/docs/_static/images/statistics/statistics_joined.png new file mode 100644 index 000000000..c0ad57201 Binary files /dev/null and b/docs/_static/images/statistics/statistics_joined.png differ diff --git a/docs/_static/images/statistics/statistics_month_framed.png b/docs/_static/images/statistics/statistics_month_framed.png new file mode 100644 index 000000000..504e3ba7c Binary files /dev/null and b/docs/_static/images/statistics/statistics_month_framed.png differ diff --git a/docs/_static/images/statistics/statistics_year_framed.png b/docs/_static/images/statistics/statistics_year_framed.png new file mode 100644 index 000000000..1fc7ab606 Binary files /dev/null and b/docs/_static/images/statistics/statistics_year_framed.png differ diff --git a/docs/_static/images/traits/create_trait_framed.png b/docs/_static/images/traits/create_trait_framed.png new file mode 100644 index 000000000..a4f569d68 Binary files /dev/null and b/docs/_static/images/traits/create_trait_framed.png differ diff --git a/docs/_static/images/traits/create_trait_parameters_framed.png b/docs/_static/images/traits/create_trait_parameters_framed.png new file mode 100644 index 000000000..64c955dca Binary files /dev/null and b/docs/_static/images/traits/create_trait_parameters_framed.png differ diff --git a/docs/_static/images/traits/formats/audio_format_joined.png b/docs/_static/images/traits/formats/audio_format_joined.png new file mode 100644 index 000000000..06f961fa9 Binary files /dev/null and b/docs/_static/images/traits/formats/audio_format_joined.png differ diff --git a/docs/_static/images/traits/formats/boolean_format_joined.png b/docs/_static/images/traits/formats/boolean_format_joined.png new file mode 100644 index 000000000..833b62c9a Binary files /dev/null and b/docs/_static/images/traits/formats/boolean_format_joined.png differ diff --git a/docs/_static/images/traits/formats/categorical_format_joined.png b/docs/_static/images/traits/formats/categorical_format_joined.png new file mode 100644 index 000000000..2ac2079ad Binary files /dev/null and b/docs/_static/images/traits/formats/categorical_format_joined.png differ diff --git a/docs/_static/images/traits/formats/collect_audio_framed.png b/docs/_static/images/traits/formats/collect_audio_framed.png index 8a962072a..36a7c6e78 100644 Binary files a/docs/_static/images/traits/formats/collect_audio_framed.png and b/docs/_static/images/traits/formats/collect_audio_framed.png differ diff --git a/docs/_static/images/traits/formats/collect_boolean_framed.png b/docs/_static/images/traits/formats/collect_boolean_framed.png index 1a1a8a9ac..fc884de14 100644 Binary files a/docs/_static/images/traits/formats/collect_boolean_framed.png and b/docs/_static/images/traits/formats/collect_boolean_framed.png differ diff --git a/docs/_static/images/traits/formats/collect_categorical_framed.png b/docs/_static/images/traits/formats/collect_categorical_framed.png index 22679c9d4..0806b8bf3 100644 Binary files a/docs/_static/images/traits/formats/collect_categorical_framed.png and b/docs/_static/images/traits/formats/collect_categorical_framed.png differ diff --git a/docs/_static/images/traits/formats/collect_counter_framed.png b/docs/_static/images/traits/formats/collect_counter_framed.png index f247c04b7..0a44b6544 100644 Binary files a/docs/_static/images/traits/formats/collect_counter_framed.png and b/docs/_static/images/traits/formats/collect_counter_framed.png differ diff --git a/docs/_static/images/traits/formats/collect_date_framed.png b/docs/_static/images/traits/formats/collect_date_framed.png index 5e4a29e02..594c00fe7 100644 Binary files a/docs/_static/images/traits/formats/collect_date_framed.png and b/docs/_static/images/traits/formats/collect_date_framed.png differ diff --git a/docs/_static/images/traits/formats/collect_date_picker_framed.png b/docs/_static/images/traits/formats/collect_date_picker_framed.png index 1ff5109a9..669aa3435 100644 Binary files a/docs/_static/images/traits/formats/collect_date_picker_framed.png and b/docs/_static/images/traits/formats/collect_date_picker_framed.png differ diff --git a/docs/_static/images/traits/formats/collect_disease_1_framed.png b/docs/_static/images/traits/formats/collect_disease_1_framed.png deleted file mode 100644 index 2503b8d33..000000000 Binary files a/docs/_static/images/traits/formats/collect_disease_1_framed.png and /dev/null differ diff --git a/docs/_static/images/traits/formats/collect_disease_2_framed.png b/docs/_static/images/traits/formats/collect_disease_2_framed.png deleted file mode 100644 index dde2ff1f9..000000000 Binary files a/docs/_static/images/traits/formats/collect_disease_2_framed.png and /dev/null differ diff --git a/docs/_static/images/traits/formats/collect_disease_3_framed.png b/docs/_static/images/traits/formats/collect_disease_3_framed.png deleted file mode 100644 index 140ff1898..000000000 Binary files a/docs/_static/images/traits/formats/collect_disease_3_framed.png and /dev/null differ diff --git a/docs/_static/images/traits/formats/collect_disease_framed.png b/docs/_static/images/traits/formats/collect_disease_framed.png new file mode 100644 index 000000000..50d7c41bc Binary files /dev/null and b/docs/_static/images/traits/formats/collect_disease_framed.png differ diff --git a/docs/_static/images/traits/formats/collect_gnss_framed.png b/docs/_static/images/traits/formats/collect_gnss_framed.png index 9a1b91d7d..af6aa316f 100644 Binary files a/docs/_static/images/traits/formats/collect_gnss_framed.png and b/docs/_static/images/traits/formats/collect_gnss_framed.png differ diff --git a/docs/_static/images/traits/formats/collect_gopro_framed.png b/docs/_static/images/traits/formats/collect_gopro_framed.png index 2695f43de..ce20285d9 100644 Binary files a/docs/_static/images/traits/formats/collect_gopro_framed.png and b/docs/_static/images/traits/formats/collect_gopro_framed.png differ diff --git a/docs/_static/images/traits/formats/collect_location_framed.png b/docs/_static/images/traits/formats/collect_location_framed.png index 31f2b7ae1..49dad6ffb 100644 Binary files a/docs/_static/images/traits/formats/collect_location_framed.png and b/docs/_static/images/traits/formats/collect_location_framed.png differ diff --git a/docs/_static/images/traits/formats/collect_multicat_framed.png b/docs/_static/images/traits/formats/collect_multicat_framed.png index ec369141f..67dc4fbed 100644 Binary files a/docs/_static/images/traits/formats/collect_multicat_framed.png and b/docs/_static/images/traits/formats/collect_multicat_framed.png differ diff --git a/docs/_static/images/traits/formats/collect_numeric_framed.png b/docs/_static/images/traits/formats/collect_numeric_framed.png index ebac8b555..6a786c39d 100644 Binary files a/docs/_static/images/traits/formats/collect_numeric_framed.png and b/docs/_static/images/traits/formats/collect_numeric_framed.png differ diff --git a/docs/_static/images/traits/formats/collect_percent_framed.png b/docs/_static/images/traits/formats/collect_percent_framed.png index 86f521f66..7977636f1 100644 Binary files a/docs/_static/images/traits/formats/collect_percent_framed.png and b/docs/_static/images/traits/formats/collect_percent_framed.png differ diff --git a/docs/_static/images/traits/formats/collect_photo_framed.png b/docs/_static/images/traits/formats/collect_photo_framed.png index 6f7f3d23d..97111a555 100644 Binary files a/docs/_static/images/traits/formats/collect_photo_framed.png and b/docs/_static/images/traits/formats/collect_photo_framed.png differ diff --git a/docs/_static/images/traits/formats/collect_photo_joined.png b/docs/_static/images/traits/formats/collect_photo_joined.png new file mode 100644 index 000000000..dfc8c8670 Binary files /dev/null and b/docs/_static/images/traits/formats/collect_photo_joined.png differ diff --git a/docs/_static/images/traits/formats/collect_text_framed.png b/docs/_static/images/traits/formats/collect_text_framed.png index 3cf244b82..36e669130 100644 Binary files a/docs/_static/images/traits/formats/collect_text_framed.png and b/docs/_static/images/traits/formats/collect_text_framed.png differ diff --git a/docs/_static/images/traits/formats/counter_format_joined.png b/docs/_static/images/traits/formats/counter_format_joined.png new file mode 100644 index 000000000..7380471e1 Binary files /dev/null and b/docs/_static/images/traits/formats/counter_format_joined.png differ diff --git a/docs/_static/images/traits/formats/create_photo_joined.png b/docs/_static/images/traits/formats/create_photo_joined.png new file mode 100644 index 000000000..40bcec637 Binary files /dev/null and b/docs/_static/images/traits/formats/create_photo_joined.png differ diff --git a/docs/_static/images/traits/formats/date_format_joined.png b/docs/_static/images/traits/formats/date_format_joined.png new file mode 100644 index 000000000..931dca140 Binary files /dev/null and b/docs/_static/images/traits/formats/date_format_joined.png differ diff --git a/docs/_static/images/traits/formats/disease_format_joined.png b/docs/_static/images/traits/formats/disease_format_joined.png new file mode 100644 index 000000000..c265ac9bf Binary files /dev/null and b/docs/_static/images/traits/formats/disease_format_joined.png differ diff --git a/docs/_static/images/traits/formats/gnss_format_joined.png b/docs/_static/images/traits/formats/gnss_format_joined.png new file mode 100644 index 000000000..3f8792331 Binary files /dev/null and b/docs/_static/images/traits/formats/gnss_format_joined.png differ diff --git a/docs/_static/images/traits/formats/location_format_joined.png b/docs/_static/images/traits/formats/location_format_joined.png new file mode 100644 index 000000000..dd982011f Binary files /dev/null and b/docs/_static/images/traits/formats/location_format_joined.png differ diff --git a/docs/_static/images/traits/formats/multicat_format_joined.png b/docs/_static/images/traits/formats/multicat_format_joined.png new file mode 100644 index 000000000..5021c5eab Binary files /dev/null and b/docs/_static/images/traits/formats/multicat_format_joined.png differ diff --git a/docs/_static/images/traits/formats/numeric_format_joined.png b/docs/_static/images/traits/formats/numeric_format_joined.png new file mode 100644 index 000000000..75155cf44 Binary files /dev/null and b/docs/_static/images/traits/formats/numeric_format_joined.png differ diff --git a/docs/_static/images/traits/formats/percent_format_joined.png b/docs/_static/images/traits/formats/percent_format_joined.png new file mode 100644 index 000000000..8d15e3ef9 Binary files /dev/null and b/docs/_static/images/traits/formats/percent_format_joined.png differ diff --git a/docs/_static/images/traits/formats/text_format_joined.png b/docs/_static/images/traits/formats/text_format_joined.png new file mode 100644 index 000000000..8340d638e Binary files /dev/null and b/docs/_static/images/traits/formats/text_format_joined.png differ diff --git a/docs/_static/images/traits/formats/zebra_format_joined.png b/docs/_static/images/traits/formats/zebra_format_joined.png new file mode 100644 index 000000000..bc3ee5166 Binary files /dev/null and b/docs/_static/images/traits/formats/zebra_format_joined.png differ diff --git a/docs/_static/images/traits/single_trait_menu_framed.png b/docs/_static/images/traits/single_trait_menu_framed.png index bba22a6d0..7b71598b6 100644 Binary files a/docs/_static/images/traits/single_trait_menu_framed.png and b/docs/_static/images/traits/single_trait_menu_framed.png differ diff --git a/docs/_static/images/traits/traits_create_joined.png b/docs/_static/images/traits/traits_create_joined.png index f72c5bb28..bb26c6a30 100644 Binary files a/docs/_static/images/traits/traits_create_joined.png and b/docs/_static/images/traits/traits_create_joined.png differ diff --git a/docs/_static/images/traits/traits_framed.png b/docs/_static/images/traits/traits_framed.png index 38bdbb529..1d45fe467 100644 Binary files a/docs/_static/images/traits/traits_framed.png and b/docs/_static/images/traits/traits_framed.png differ diff --git a/docs/_static/images/traits/traits_menu_framed.png b/docs/_static/images/traits/traits_menu_framed.png index c4065c0e3..fcaa2b92c 100644 Binary files a/docs/_static/images/traits/traits_menu_framed.png and b/docs/_static/images/traits/traits_menu_framed.png differ diff --git a/docs/_static/styles.css b/docs/_static/styles.css new file mode 100644 index 000000000..1732f5326 --- /dev/null +++ b/docs/_static/styles.css @@ -0,0 +1,648 @@ +@font-face { + font-weight: 400; + font-style: normal; + font-family: "Stem Text"; + src: url("//cdn.evilmartians.com/front/fonts/subset-StemText-Regular.woff") format("woff"); + } + @font-face { + font-weight: 700; + font-style: normal; + font-family: "Stem Text"; + src: url("//cdn.evilmartians.com/front/fonts/subset-StemText-Bold.woff") format("woff"); + } + + @font-face { + font-family: "Fira Code"; + src: url("./fonts/FiraCode-Regular.woff") format("woff"); + } + + :root { + --theme-color: #ff5e5e; + --theme-color-light: #fd7373; + --theme-color-dark: #f64242; + --theme-color-secondary: #ff5e5e; + --theme-color-secondary-dark: #f64242; + --theme-color-secondary-light: #fd7373; + + --background-color: #fff; + --background-light: #fff; + + --text-color-base: #363636; + --text-color-secondary: #646473; + --text-color-active: #111; + --text-color-header: #2c3e50; + + --border-color: #ccccccbb; + + --menu-weight: 400; + + --shadow-color: rgb(165, 165, 165); + + --sidebar-nav-pagelink-background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='7' height='11.2' viewBox='0 0 7 11.2'%3E%3Cpath d='M1.5 1.5l4 4.1 -4 4.1' stroke-width='1.5' stroke='rgb%2812, 13, 14%29' fill='none' stroke-linecap='square' stroke-linejoin='miter' vector-effect='non-scaling-stroke'/%3E%3C/svg%3E"); + --sidebar-nav-pagelink-background-image-active: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='11.2' height='7' viewBox='0 0 11.2 7'%3E%3Cpath d='M1.5 1.5l4.1 4 4.1-4' stroke-width='1.5' stroke='rgb%28246, 66, 66%29' fill='none' stroke-linecap='square' stroke-linejoin='miter' vector-effect='non-scaling-stroke'/%3E%3C/svg%3E"); + } + + .is-dark { + display: none; + } + + @media (prefers-color-scheme: dark) { + :root { + --theme-color-secondary: #fcf9f9; + --theme-color-secondary-dark: #f7f5f5; + --theme-color-secondary-light: #f64242; + + --background-color: #000; + --background-light: #2a2a2a; + + --text-color-base: #f3f2f2; + --text-color-secondary: #fac8c8; + --text-color-active: #f64242; + --text-color-header: #f64242; + + --border-color: #f64242bb; + + --menu-weight: 400; + + --shadow-color: var(--background-color); + } + + .is-light { + display: none !important; + } + + .is-dark { + display: initial; + } + } + + ::selection { + background: var(--theme-color-light); + } + + body { + font-size: 100%; + font: 18px/30px "Stem Text", "Arial", sans-serif; + color: var(--text-color-base); + background-color: var(--background-color); + } + + * { + text-decoration: none !important; + } + + a { + transition: all 0.3s linear; + border-bottom: none !important; + } + + .github-corner svg { + fill: var(--theme-color); + } + + .chart-container { + padding: 1em 0; + display: flex; + align-items: center; + justify-content: space-around; + } + + .captioned-figure { + display: flex; + flex-direction: column; + align-items: center; + } + + .home-logo { + margin-left: 20px; + } + + aside.sidebar { + border: none; + background-color: var(--background-light); + color: var(--text-color-base); + width: 20%; + border-right: 1px solid var(--border-color); + } + + body.close .sidebar { + transform: translateX(-100%); + } + + .sidebar-version-select { + font-size: 1rem; + } + + .sidebar ul li a { + color: var(--text-color-secondary); + font-size: 1rem; + font-weight: var(--menu-weight); + } + + .sidebar ul li.active>a { + border-width: 0.1rem; + } + + .sidebar ul li a:hover { + text-decoration: none; + color: var(--theme-color-dark); + } + + .sidebar .sidebar-nav ul li.active>a { + color: var(--text-color-active); + border-right: 0.2rem solid var(--theme-color-secondary-light); + } + + + .sidebar > h1 { + font-size: 2rem; + } + + .sidebar-logo { + display: flex; + flex-direction: row; + align-items: center; + padding: 0 15px; + justify-content: center + } + + .sidebar-logo-title { + margin-left: 10px; + } + + /* search plugin related */ + + .sidebar { + display: flex; + flex-direction: column; + } + + .sidebar > h1 { + order: 1; + margin-top: 1.5rem; + } + + .sidebar .search { + order: 2; + margin: 1.5rem 0 0 0; + border: none; + border-top: 1px solid var(--border-color); + border-bottom: 1px solid var(--border-color); + margin-top: 20px; + margin-bottom: 20px; + padding: 6px; + } + + .sidebar .sidebar-nav { + order: 3; + } + + .sidebar .search .input-wrap { + border: none; + position: relative; + } + + + .sidebar .search .input-wrap input { + background: var(--background-color-light); + color: var(--text-color-base); + } + + .sidebar .search .clear-button.show { + display: block; + position: absolute; + right: 4px; + top: 8px; + } + + body .sidebar-toggle { + background: none; + bottom: 1rem; + left: 1rem; + cursor: pointer; + width: 1.5rem; + height: 1.5rem; + padding: 0; + } + + body .sidebar-toggle span { + transition: all 0.3s linear; + background-color: var(--text-color-active); + height: 0.25rem; + width: 1.5rem; + position: absolute; + left: 0; + margin: 0; + transform-origin: 0; + } + + body.close .sidebar-toggle { + width: 1.5rem; + height: 1.5rem; + } + + body.close .sidebar-toggle span { + transform-origin: center; + background-color: var(--theme-color-secondary); + } + + body .sidebar-toggle span:nth-child(1) { top:0; } + body .sidebar-toggle span:nth-child(2) { top:0.65rem; } + body .sidebar-toggle span:nth-child(3) { top:1.25rem; } + + .sidebar-toggle .sidebar-toggle-button:hover { opacity: 1; } + + .sidebar-toggle:hover span:nth-child(1) { transform: rotate(45deg); width: 1.75rem; } + .sidebar-toggle:hover span:nth-child(2) { opacity: 0; } + .sidebar-toggle:hover span:nth-child(3) { transform: rotate(-45deg); width: 1.75rem; } + + .close .sidebar-toggle:hover span:nth-child(1) { transform:rotate(0); width:1.5rem; top:0.65rem; } + .close .sidebar-toggle:hover span:nth-child(2) { opacity: 1; transform:rotate(90deg); } + .close .sidebar-toggle:hover span:nth-child(3) { transform:rotate(0); width:1.5rem; top:0.65rem; } + + th { + text-align: left; + } + + .markdown-section blockquote { + margin: 1em 0; + } + + .markdown-section em, + .markdown-section blockquote { + color: var(--text-color-tertiary); + } + + .anchor { + position: relative; + } + + .anchor span { + color: var(--text-color-header); + } + + section.cover .cover-main { + margin: 20vh 20vw; + } + + .app-name-link { + white-space: nowrap; + } + + .app-sub-sidebar li:before { + display: none; + } + + .markdown-section p { + margin-top: 0; + margin-bottom: 0; + } + + .markdown-section ul { + margin-top: 0; + } + + .markdown-section li { + margin-bottom: 1rem; + } + + .markdown-section li:first-child { + margin-top: 1rem; + } + + .markdown-section li pre { + padding: 1rem; + } + + .markdown-section p + p { + margin-top: 1rem; + } + + .markdown-section code, .markdown-section pre { + background-color: var(--background-light); + color: var(--text-color-base); + } + + .markdown-section pre > code { + background-color: var(--background-light); + color: var(--text-color-base); + font-size: 1em; + line-height: 1.5; + } + + .markdown-section code { + display: inline-block; + font-family: 'Fira Code', monospace; + } + + .markdown-section pre { + padding: 2rem; + } + + .markdown-section pre > code { + padding: 0; + } + + .markdown-section hr { + border-bottom: 1px solid var(--text-color-base); + } + + + .markdown-section { + max-width: 75rem; + padding: 1rem 3rem; + } + + .markdown-section ol, .markdown-section p, .markdown-section ul { + line-height: inherit; + } + + .markdown-section code { + color: inherit; + border-radius: 0; + font-size: 0.9em; + padding: 0px 10px; + /* color: #111; */ + } + + .markdown-section table { + display: table; + } + + .markdown-section table tr { + border-width: 0.2rem 0; + border-style: solid; + border-color: var(--border-color); + } + + .markdown-section table tr:nth-child(2n) { + background-color: transparent; + } + + .markdown-section table td, + .markdown-section table th { + border: none; + padding: 1.5rem 0.5rem; + text-align: left; + } + + .markdown-section table td p { + margin: 0; + } + + .markdown-section a { + text-decoration: none; + border-bottom: 0.1rem solid var(--theme-color-light); + transition: all 0.3s ease; + } + + .markdown-section a:hover { + border-color: var(--theme-color); + color: var(--theme-color-dark); + } + + .markdown-section h1, .markdown-section h2, .markdown-section h3, .markdown-section h4, .markdown-section strong { + color: var(--text-color-header); + } + + + /* Badges */ + .markdown-section > p:first-child > a { + border: none; + } + + .docsify-copy-code-button { + background: var(--theme-color); + } + + .sidebar::-webkit-scrollbar { + width:0; + } + + .github-edit-btn { + z-index: 100; + position:fixed; + width:60px; + height:60px; + bottom:40px; + right:40px; + background-color:var(--theme-color); + border-radius:50px; + text-align:center; + box-shadow: 1px 1px 1px var(--shadow-color); + } + + .github-edit-btn svg { + margin-top:18px; + } + + .docsify-pagination-container { + justify-content: center !important; + } + + .pagination-item { + max-width: 40%; + } + + .pagination-item--next { + margin-left: 1em !important; + } + + .pagination-item--previous { + margin-right: 1em; + } + + @media (max-width: 768px) { + + .home-logo { + display: none; + } + + aside.sidebar { + width: 300px; + } + + body.close .sidebar { + transform: translateX(300px); + } + + body .sidebar-toggle span { + background-color: var(--theme-color-secondary); + } + + + body.close .sidebar-toggle span { + background-color: var(--text-color-active); + } + + .sidebar-toggle:hover span:nth-child(1), .sidebar-toggle:hover span:nth-child(2), .sidebar-toggle:hover span:nth-child(3) { + transform: none; + width: 1.5rem; + opacity: 1; + } + + .close .sidebar-toggle span:nth-child(1), .close .sidebar-toggle:hover span:nth-child(1) { + transform: rotate(45deg); + width: 1.75rem; + top: 0.65rem; + } + + .close .sidebar-toggle span:nth-child(2), .close .sidebar-toggle:hover span:nth-child(2) { + opacity: 0; + } + + .close .sidebar-toggle span:nth-child(3), .close .sidebar-toggle:hover span:nth-child(3) { + transform: rotate(-45deg); + width: 1.75rem; + top: 0.65rem; + } + + body.close .sidebar-toggle { + background: none; + } + + .markdown-section pre, .markdown-section pre > code { + font-size: 0.8em; + } + + .github-edit-btn { + display: none; + } + } + + @media (min-width: 1200px) { + body { + font-size: 112.5%; + } + } + + @media (min-width: 1400px) { + body { + font-size: 125%; + } + } + + .pro-badge { + height: 1em; + vertical-align: middle; + } + + + .mermaid { + display: flex; + justify-content: center; + margin-bottom: 16px; + } + + .mermaid > svg .messageText { + stroke: none !important; + } + + .mermaid > svg .messageText { + font-family: 'Fira Code', monospace !important; + } + + @media (prefers-color-scheme: dark) { + .mermaid > svg .sequenceNumber { + fill: #000 !important; + } + } + + .mermaid > svg .actor { + font-family: 'Stem Text', Arial !important; + font-size: 18px !important; + } + + .mermaid > svg .actor>tspan{ + fill: #fff !important; + } + + + .mermaid > svg .noteText { + font-family: 'Stem Text', Arial !important; + font-size: 12px !important; + } + + h1:has(+.pro-badge-header):after, + h2:has(+.pro-badge-header):after, + h3:has(+.pro-badge-header):after, + h4:has(+.pro-badge-header):after { + content: ""; + display: inline-block; + vertical-align: bottom; + width: 64px; + height: 27px; + background-repeat: no-repeat; + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='27' viewBox='0 0 64 27'%3E%3Csvg fill='none' fill-rule='evenodd' x='5'%3E%3Crect width='53' height='26' x='.5' y='.5' stroke='%23ff5e5e' rx='13'/%3E%3Cpath fill='%23ff5e5e' fill-rule='nonzero' d='M15.15 15.243V19h-2.198V8.336h4.16c.801 0 1.505.146 2.113.44.608.292 1.076.709 1.403 1.248.327.54.49 1.154.49 1.842 0 1.045-.357 1.87-1.072 2.472-.716.603-1.706.905-2.97.905h-1.927zm0-1.78h1.962c.581 0 1.024-.137 1.33-.41.305-.274.457-.664.457-1.172 0-.523-.153-.945-.461-1.267-.308-.322-.732-.489-1.274-.498h-2.015v3.347zm11.425 1.633h-1.75V19h-2.198V8.336h3.963c1.26 0 2.231.28 2.915.842.683.562 1.025 1.355 1.025 2.38 0 .728-.157 1.335-.472 1.82-.315.487-.792.873-1.432 1.162l2.307 4.357V19h-2.358l-2-3.904zm-1.75-1.78h1.772c.552 0 .98-.14 1.282-.42.303-.281.454-.668.454-1.162 0-.503-.143-.898-.428-1.186-.286-.288-.724-.432-1.315-.432h-1.765v3.2zm16.135.594c0 1.05-.186 1.97-.557 2.76-.37.792-.902 1.402-1.593 1.832-.69.43-1.483.644-2.376.644-.884 0-1.673-.212-2.366-.637-.693-.425-1.23-1.031-1.611-1.82-.381-.788-.574-1.695-.58-2.72v-.528c0-1.05.19-1.974.569-2.772.378-.799.913-1.411 1.604-1.839.69-.427 1.48-.64 2.369-.64.889 0 1.678.213 2.37.64.69.428 1.225 1.04 1.603 1.839.379.798.568 1.72.568 2.765v.476zm-2.227-.484c0-1.118-.2-1.968-.6-2.549-.4-.58-.972-.871-1.714-.871-.737 0-1.306.287-1.707.86-.4.574-.603 1.415-.608 2.524v.52c0 1.089.2 1.933.601 2.534.4.6.977.9 1.729.9.737 0 1.303-.289 1.699-.867.395-.579.596-1.422.6-2.53v-.52z'/%3E%3C/svg%3E%3C/svg%3E%0A"); + } + + h1:has(+.pro-badge-header):after { + height: 30px; + } + + h4:has(+.pro-badge-header):after { + width: 64px; + height: 27px; + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='56' height='23' viewBox='0 0 64 27'%3E%3Csvg fill='none' fill-rule='evenodd' x='5'%3E%3Crect width='53' height='26' x='.5' y='.5' stroke='%23ff5e5e' rx='13'/%3E%3Cpath fill='%23ff5e5e' fill-rule='nonzero' d='M15.15 15.243V19h-2.198V8.336h4.16c.801 0 1.505.146 2.113.44.608.292 1.076.709 1.403 1.248.327.54.49 1.154.49 1.842 0 1.045-.357 1.87-1.072 2.472-.716.603-1.706.905-2.97.905h-1.927zm0-1.78h1.962c.581 0 1.024-.137 1.33-.41.305-.274.457-.664.457-1.172 0-.523-.153-.945-.461-1.267-.308-.322-.732-.489-1.274-.498h-2.015v3.347zm11.425 1.633h-1.75V19h-2.198V8.336h3.963c1.26 0 2.231.28 2.915.842.683.562 1.025 1.355 1.025 2.38 0 .728-.157 1.335-.472 1.82-.315.487-.792.873-1.432 1.162l2.307 4.357V19h-2.358l-2-3.904zm-1.75-1.78h1.772c.552 0 .98-.14 1.282-.42.303-.281.454-.668.454-1.162 0-.503-.143-.898-.428-1.186-.286-.288-.724-.432-1.315-.432h-1.765v3.2zm16.135.594c0 1.05-.186 1.97-.557 2.76-.37.792-.902 1.402-1.593 1.832-.69.43-1.483.644-2.376.644-.884 0-1.673-.212-2.366-.637-.693-.425-1.23-1.031-1.611-1.82-.381-.788-.574-1.695-.58-2.72v-.528c0-1.05.19-1.974.569-2.772.378-.799.913-1.411 1.604-1.839.69-.427 1.48-.64 2.369-.64.889 0 1.678.213 2.37.64.69.428 1.225 1.04 1.603 1.839.379.798.568 1.72.568 2.765v.476zm-2.227-.484c0-1.118-.2-1.968-.6-2.549-.4-.58-.972-.871-1.714-.871-.737 0-1.306.287-1.707.86-.4.574-.603 1.415-.608 2.524v.52c0 1.089.2 1.933.601 2.534.4.6.977.9 1.729.9.737 0 1.303-.289 1.699-.867.395-.579.596-1.422.6-2.53v-.52z'/%3E%3C/svg%3E%3C/svg%3E%0A"); + } + + /* Collapsible styling */ + .sidebar .folder>p { + cursor: pointer; + padding-left: 14px; + background-image: var(--sidebar-nav-pagelink-background-image); + background-position: left center; + background-repeat: no-repeat; + user-select: none; + } + + .sidebar .folder.open>p { + background-image: var(--sidebar-nav-pagelink-background-image-active); + background-position: left center; + } + + .sidebar li>p { + font-weight: normal; + } + + .sidebar li.open>p { + /* color: var(--theme-color-dark); */ + font-weight: 600; + } + + @keyframes full-slide-right { + from { transform: translateX(0); } + to { transform: translateX(100%); } + } + + @keyframes full-slide-left { + from { transform: translateX(100%); } + } + + @keyframes fade-in { + from { opacity: 0; } + } + + @keyframes fade-out { + to { opacity: 0; } + } + + ::view-transition-old(section) { + animation: 700ms ease-in 0ms both full-slide-right, 500ms ease-out 0ms both fade-out; + } + + ::view-transition-new(section) { + animation: 500ms ease-in 0ms both fade-in; + } + + section.content { + view-transition-name: section; + } + + @media (prefers-reduced-motion) { + ::view-transition-group(*), + ::view-transition-old(*), + ::view-transition-new(*) { + animation: none !important; + } + } \ No newline at end of file diff --git a/docs/barcodes.md b/docs/barcodes.md index 5ae9b22cd..1763b0b04 100644 --- a/docs/barcodes.md +++ b/docs/barcodes.md @@ -21,7 +21,7 @@ accurately capture height without having to hold both the height stick and the device.
- +
Plant height measurement via barcoded height stick
diff --git a/docs/brapi.md b/docs/brapi.md index 1ef00c7e1..da06956af 100644 --- a/docs/brapi.md +++ b/docs/brapi.md @@ -6,7 +6,7 @@ Overview BrAPI is an application programming interface for plant breeding. It allows Field Book to directly communicate with compatible databases to -import fields and traits and export collected data. This eliminates the +import fields and traits, and export collected data. This eliminates the need to manually transfer files and enables Field Book to offer more sophisticated features including field and trait metadata and data syncing. @@ -28,31 +28,24 @@ import fields and traits and export data. Import fields ------------- +To import a field using BrAPI, press the floating button in the bottom righthand corner of the Fields activity. Then select BrAPI as the import source (The BrAPI import option will use the server display name set in BrAPI settings). + +Field Book will then display a list of possible fields (known as `studies` in the BrAPI standard) from the BrAPI server. The load time will depend on the status of the BrAPI cache. The fields list will take some time to retrieve when first accessed (or when the cache is refreshed), but will load much faster on subsequent imports. +
The BrAPI field import process
-To import a field using BrAPI, press - in the top -toolbar, select BrAPI as the source, and press the **Load Fields** -button +Select one or more fields from the list to import by checking the checkbox on the right of the field item. Available fields can be filtered by typing a search string into the search bar. They can also be filtered by program, season, trial or crop by pressing the icon in the top toolbar. -Field Book will import a list of possible fields (known as -`studies` in the BrAPI standard) from the BrAPI Base URL set -in the - [Brapi settings](settings-brapi.md). +The count of selected fields is tracked and displayed over top of the icon in the toolbar. Press this icon to clear your selections. If you do not find the field you are looking for but know that it is available on the server then use the icon in the toolbar to reset the cache. -Available fields can be filtered by program and trial using the menu -options in the top toolbar. The list can be filtered by -**Observation Level** using the dropdown below the server URL. +Once you are satisfied with your selections press the import button on the bottom of the screen. -If the returned list of fields contains more than a single page, the -**Next** button will advance to the next page. Once a field has been -selected, the field structure can be previewed by pressing the **Preview -Field** button +The final step shows additional details for each selected field, including the observation unit count, trait count, location, and season. The tabs at the top can be used to set/change the observation level, ids, and sort order for the selected fields. -Previewed fields are imported by pressing the **Save** button. +Press the Save button at the bottom of the screen once satisified with the selections. The fields (and any traits linked to them) will be saved for use in Field Book. !> Any field can be exported locally, but only fields that have been imported via BrAPI are able to export data via BrAPI. And only if that data is also collected using BrAPI-imported traits. @@ -60,24 +53,41 @@ Import traits ------------- Depending on the BrAPI server, fields may have linked traits that are -imported with the field. Additional traits can be imported via BrAPI by -selecting import from the Traits menu, then selecting BrAPI. +imported with the field. Additional traits can be imported via BrAPI in the Traits activity. First make sure BrAPI is enabled and configured in the [Brapi settings](settings-brapi.md) + +Then the BrAPI Display Name of the server you connected to will show up as the last format choice in the list when you press the press the floating button in the bottom right of the Traits screen.
- +
The BrAPI trait import process
-Field Book will import a list of possible traits (known as -`observationVariables` in the BrAPI standard) from the BrAPI -Base URL set in the - [Brapi settings](settings-brapi.md). +When you select this option Field Book will then display a list of possible traits (known as `observationVariables` in the BrAPI standard) from the BrAPI server. This import process is much like the BrAPI field import process. The load time will depend on the status of the cache. The traits list will take some time to retrieve when first accessed (or when the cache is refreshed), but will load much faster on subsequent imports. + +Select one or more traits from the list to import by checking the checkbox on the right of the trait item. Available traits can be filtered by typing a search string into the search bar. They can also be filtered by trial, study or crop by pressing the icon in the top toolbar. + +The count of selected traits is tracked and displayed over top of the icon in the toolbar. Press this icon to clear your selections. If you do not find the trait you are looking for but know that it is available on the server then use the icon in the toolbar to reset the cache. + +When you are finished with your selections press the import button on the bottom of the screen. + +The final step provides an opportunity to modify trait details like the trait layout if the default layout is not desired. Press a trait item to open the trait parameters. Press back to access the different trait layout options. Select the desired layout, edit any additional parameters as desired, then press save + +
+ +
Changing a trait's layout from text to categorical
+
+ +Once you are satisified with the traits, press the Import button at the bottom of the screen to save them for use in Field Book. -Traits are selected and then imported by pressing the **Save Traits** -button. Traits can be imported individually or in groups. +Sync +---- -Field Book will report **Selected traits saved successfully**, and return -to the traits screen with the imported traits selected. +The BrAPI sync option is found on the field detail page of BrAPI fields. Sync connects to the server specified in [Brapi settings](settings-brapi.md), updating the field with new data that has been added from other sources since the last sync or import. This option will not work for fields imported from a file. + +
+ +
Downloading 25 observations from the BrAPI server using BrAPI sync
+
Export data ----------- diff --git a/docs/collect.md b/docs/collect.md index 88d53f1b3..bb231e140 100644 --- a/docs/collect.md +++ b/docs/collect.md @@ -6,16 +6,16 @@ Overview Field Book aims to increase the rate at which data can be collected by tailoring the input screen to fit the exact task. Only a single entry -and trait are visible at a time during collection. This reduces the risk -of error and allows trait-specific layouts to be used for data input. +and trait are visible at a time during collection. This reduces the risk of error and allows trait-specific layouts to be used for data input. -The small green arrows are used to navigate between traits. The large -black arrows are used to navigate between entries. Data is entered in -the bottom area of the screen using a layout determined by the current -trait. Data is saved to an internal database as it is collected. +The small green arrows are used to navigate between traits. A line of dots below the arrows represent the individual traits, and the progression through them for the current entry. + +The large black arrows are used to navigate between entries. The progress bar above them indicates progress through the entries. + +Data is entered in the bottom area of the screen using a layout determined by the current trait. Entered values turn from black to red once they have been saved to Field Book's internal database.
- +
Data collection screen
@@ -29,22 +29,19 @@ to the back navigation arrow). - **Search** opens a dialog to search for a specific entry. -
- -
The collect screen search tool
-
+
+ +
The collect screen search tool
+
+ +The search dialog provides a flexible interface to search for specific entries. Populate the search menu by pressing the icon, and selecting from the list of attributes, traits, or other columns. Once a search column is added you can enter a search string on it's blank text entry line. Press the icon if you'd like to change the operator from "equals" to "contains", or numeric operators like ">" or "<". Press the icon to remove a column. Add as many search columns as you like, then press search. The search will return a table of matching results, press any line in the results table to jump to that entry. -The search dialog provides a flexible interface for finding a specific -entry within the current field. Select which imported data field to -search by, what strategy to use to find a match, and enter a search -string. Press Add to construct a complex search with an additional field -and search string, or press OK to execute the search. +- **Resources** opens the `resources` folder and can be used to load reference images. Long press the icon to jump directly to the most recently loaded file, rather than the file picker. -- **Resources** opens the `resources` directory and can be used to load reference images. - **Summary** opens a dialog that displays all info for the current entry.
- +
The collect screen summary tool
@@ -56,18 +53,13 @@ toolbar opens a dialog to customize which data fields and traits are shown. Selecting a trait from the summary screen navigates to that trait. -
- -
Customizing the summary display
-
- **Lock** adds restrictions on data input to prevent accidental changes. Pressing the icon multiple times will cycle through three states: - **Unlocked** is the default, unfrozen state that allows trait values to be entered, edited, or deleted. - **Locked** freezes the collect input so no values can be entered, modified, or deleted. - **Limited** freezes existing data but allows entry of new values. More tools can be added to the toolbar in the - [General Settings](settings-general.md). Default tools can be removed from the toolbar in [Appearance Settings](settings-appearance.md). + [Features Settings](settings-features.md). Default tools can be removed from the toolbar in [Appearance Settings](settings-appearance.md). #### InfoBars @@ -80,10 +72,12 @@ InfoBars display information about the current plot. InfoBar prefixes can be pressed to adjust which data field is displayed.
- -
Selecting which data field is shown in the InfoBars
+ +
Customizing the infoBar section
+An infobar can show one of the attributes imported with the field, or the value of a trait. The number of infobars can also be changed by pressing "customize" in the bottom left of the dialog, this navigates the the "numnber of infobars" preference in the [Appearance Settings](settings-appearance.md). + #### Trait navigation
@@ -93,12 +87,12 @@ can be pressed to adjust which data field is displayed. The small, green arrows are used to move between the different traits that are currently active. Pressing the current trait will show a -dropdown of all currently active traits. +dialog of all currently active traits, select a different trait to jump to it.
- +
Pressing the active trait to see the trait -dropdown
+dialog
#### Entry navigation diff --git a/docs/datagrid.md b/docs/datagrid.md index a32eb029c..bf64da700 100644 --- a/docs/datagrid.md +++ b/docs/datagrid.md @@ -5,7 +5,7 @@ Overview -------- DataGrid is accessed by pressing the - icon in + icon in the toolbar. DataGrid displays a matrix of entries and traits in the active field. This view allows rapid identification of missing values. Pressing an individual cell moves the collect screen directly to the @@ -22,9 +22,9 @@ Settings The column used for the row header can be changed by pressing the -icon in the toolbar. +icon in the toolbar, then selecting a different attribute to use.
- +
Changing the row header from plot_id to plot
\ No newline at end of file diff --git a/docs/export.md b/docs/export.md index e6ec381db..fb5cd3e54 100644 --- a/docs/export.md +++ b/docs/export.md @@ -8,7 +8,7 @@ Collected data is exported to `.csv` files. The Export dialog allows the user to customize how collected data is exported.
- +
Export dialog details
@@ -51,14 +51,14 @@ date and the name of the field. After clicking save, you will see Field Book app citation information and an option to share the exported file with other apps or email. The -exported file is stored in the `field_export` directory. +exported file is stored in the `field_export` folder. #### Other Customizations **Bundle media data** produces a zipped file that contains the exported data along with images and audio files that have also been collected. -**Overwrite previous export** moves old files to `archive` directory. +**Overwrite previous export** moves old files to `archive` folder. The default export location can be modified in - [General Settings](settings-general.md). + [System Settings](settings-system.md). diff --git a/docs/faq.md b/docs/faq.md new file mode 100644 index 000000000..7f7c47e81 --- /dev/null +++ b/docs/faq.md @@ -0,0 +1,43 @@ +Frequently Asked Questions +========================== + +How do I cite Field Book? +------------------------- + +If you use Field Book for research, please cite the following journal article: + +[Rife, T.W., and J.A. Poland. 2014. Field Book: An Open-Source Application for Field Data Collection on Android. Crop Sci. 54(4): 1624–1627.](http://dx.doi.org/10.2135/cropsci2013.08.0579) + +How do I prepare files for Field Book? +-------------------------------------- + +First, consider if it's possible to import data without prepping your own custom files. Data imports that use the Breeding API (BrAPI) or files generated by a breeding database can eliminate extra work, reduce the risk of error, and bundle in useful contextual data. + +If it is necessary to prepare your own custom files: + +- Custom fields can be loaded by preparing a spreadsheet. The required information is detailed in the [Fields](fields.md) section of the docs. The app comes with a handful of sample fields that are loaded from files, so you can also look at `field_sample.csv` in the `/field_import` folder for guidance. + +- Custom traits are best created directly in the app, but can be saved to and loaded from a `.trt` file. The `.trt` extension is not a special format, it is just a `.csv` file by a different name, so can be opened and edited if needed. The app comes with a handful of sample traits that are loaded from a file, so you can also look at `trait_sample.trt` in the `/trait` folder for guidance. + +What filetypes are compatible with Field Book? +---------------------------------------------- + +Custom fields can be loaded by preparing a spreadsheet in `.csv`, `.xls`, or `.xlsx` format. For multi-sheet spreadsheets, Field Book only accesses the first sheet. + +What are the recommended devices for Field Book? +------------------------------------------------ + +Field Book is designed to work on any modern Android device (~10 years old or less). When making a choice between Android devices, consider where and how you will be using the app. + +We tend to recommend smartphones as the best choice if you will be carrying the device (lightweight), taking photos (higher image quality), or connecting to the internet in the field (SIM slot for mobile data). Among smartphones we recommend [Google Pixel devices](https://store.google.com/category/phones) for the simplicity of their user interface (stock android), and higher than average image quality and GPS accuracy. We use Pixels when developing and testing new versions of Field Book. + +In cases when screen visibility in full sunlight is a concern we recommend eink devices like the [BOOX Palma](https://shop.boox.com/products/palma). + +How do I request a new feature? +------------------------------- + +Field Book issues, including new feature requests, are tracked [here on Github](https://github.com/PhenoApps/Field-Book/issues). + +Search the list of existing issues before making a new request. This is important to prevent duplication. If a request already exists, you add your input by making a comment. This also helps increase the issue's visiblity. + +Press the "New Issue" button on the upper right side of the issues page if you confirm that the feature you have in mind hasn't been requested already. Then select "New Feature", and fill out the required fields. Be sure to include lots of detail describing what you have in mind, what problem it solves, and what alternative solutions exist. \ No newline at end of file diff --git a/docs/fields.md b/docs/fields.md index 3813e9802..43b9ea458 100644 --- a/docs/fields.md +++ b/docs/fields.md @@ -8,22 +8,19 @@ Experiments are represented in Field Book as `fields`. Fields are either imported from a file, from a BrAPI-enabled database, or created from scratch. -Each field has a unique name, an import date, and a set of `entries` -which represent the experimental units on which data will be collected -(e.g., plots, plants). Once data is collected and exported for a given -field it will display the dates of last edit and export. +Each field is displayed in the list with an icon that matches its import source, its name, and its number of `entries` which represent the experimental units on which data will be collected (e.g., plots, plants). The icon can be pressed to set the field as the active field. Any other part of the field item can be pressed to open the field detail view.
-
A sample field with a name, import/edit/export dates, and number of -entries
+
A sample field with a name, number of +entries, and csv import icon
When importing from a file, each row in the file reprents an `entry`. Each entry within a field must have the following: -- A `unique identifier`, which is used internally by Field Book to associate data with the specific entry. It must be unique across all of your fields. -- A `primary identifier`, and a `secondary identifier`. These set the order of advancement through the field's entries, and can be whatever makes the most sense for your experiment. Most often they are numbers from the experimental design (e.g., row/plot, row/column, range/plot). +- A `unique identifier`, which is used internally by Field Book to associate data with the specific entry. It must be unique across all of your fields. The sample field import file shown below contains a unique identifier called **plot_id** (highlighted in red). +- A `primary identifier`, and a `secondary identifier`. These remain visible while advancing through the field's entries, and can be whatever makes the most sense for your experiment. The optional Quick GoTo setting makes them editable, so it can be advantageous to make one of them the plot number if you plan to use it. That way a plot number edit can be used to jump to a specific plot. Common choices are row/plot, range/plot, rep/plot, etc. The sample field import file contains primary and secondary unique identifiers called **row** and **plot** (highlighted in blue).
@@ -35,7 +32,7 @@ optional, but can be included and viewed in the InfoBars or in the summary dialog on the collect screen.
- +
The Fields screen layout with sample fields loaded
@@ -46,24 +43,25 @@ demonstrates the import format for entry location data (an additional `geo_coordinates` column). Imported entry coordinates can then be used with the [Geonav](geonav.md) feature. -Importing a new field ---------------------- +Adding a field +-------------- -To import a new field into Field Book press the icon in the -upper right-hand corner of the toolbar in the Fields section. Then, in +To add a new field in Field Book press the floating button in the bottom righthand corner of the Fields section. Then, in the resulting dialog, select whether to import from a local file, from -cloud storage (Dropbox, Google Drive, etc.), or via a [Brapi](brapi.md) connection. +cloud storage (Dropbox, Google Drive, etc.), create a new field from scratch, or import via a [Brapi](brapi.md) connection (if BrAPI is enabled). A default import source can be set in - [General Settings](settings-general.md) to skip this dialog. + [System Settings](settings-system.md) to skip this dialog.
-
The Field import process
+
The Field import process from local storage
+#### Local storage + Selecting local will display a list of files in the `field_import` -directory. Only `.csv`, `.xls`, or `.xlsx` files will appear in the import +folder. Only `.csv`, `.xls`, or `.xlsx` files will appear in the import dialog. Filenames and column headers should exclude the following special characters: @@ -83,45 +81,82 @@ required columns. Pressing **IMPORT** will finish importing the field. #### Cloud storage If you choose to import from cloud storage, Field Book will open the -device file manager allowing navigation to the the file for import. +device file manager.
- -
Navigating to a google drive file for cloud -import
+ +
Cloud import file manager view
-Creating a field ----------------- +Using the file manager you can select a file anywhere on the device, including from cloud utilities like Google Drive (Press the icon in the upper left of the file manager to access the "Open from" menu ). + +#### Create New + +If you choose to create a new field directly within Field Book you will be asked to fill out some basic information.
-
The Field creation process
+
The field creation process
-To create a new field directly within Field Book press the icon -on the toolbar. Set your field name and dimensions, choose which corner -of the field will contain the first plot, and select zigzag or -serpentine plot numbering. Unique IDs will be generated automatically. +Set your field name and dimensions, choose which corner of the field will contain the first plot, and select zigzag or +serpentine plot numbering. Unique IDs will be generated automatically. Confirm the planned settings are as expected, then press OK. + +#### BrAPI + +To import a field using BrAPI, first make sure BrAPI is enabled and configured in the [Brapi settings](settings-brapi.md) + +Then the BrAPI Display Name of the server you connected to will show up as one of the choices in the add field options. Check out the [BrAPI](brapi.md) section of the documentation for details of the field import process, as well as trait import, sync, and data export. + +!> Any field can be exported locally, but only fields that have been imported via BrAPI are able to export data via BrAPI. And only if that data is also collected using BrAPI-imported traits. Managing fields --------------- -To activate a field for data collection, select it from the list of -fields. +To set or switch your active field, press the import source icon on the left side of the field item. + +To use your location to set the active field, press the icon in the toolbar. This will set the nearest field as the active field (assuming your fields have location info). + +To reorder or sort the fields, press the icon in the toolbar. Then choose which field attribute should be used to sort the list. + +
+ +
Field list sort options
+
-Each row in the fields list displays the Date imported, Date edited, -Date exported, and Number of entries. +For batch operations, long press one or more field items. This opens the action menu. Use the action menu icons to select all, export selected fields, or delete selected fields.
- -
Field management sorting steps
+ +
Delete fields confirmation
-Pressing the icon to the right of the trial info opens a list of options: + selects all of the fields in the list. + + initiates a data export for all selected fields. + + Deletes all selected fields. A confirmation message will be shown first, to confirm the list of fields to be deleted. + +Field details +------------- + +Pressing a field item in the fields list opens a detail view for the field. + +
+ +
Field detail view
+
+ +The **** in the toolbar can be used to delete the field. A confirmation message will be shown first, to confirm that deletion is not triggered accidentally. + +The first collapsible section includes metadata about the field (import source, entry count, attribute count), and buttons that can be used to rename the field or sort the entries. + + - **Rename** is used to edit the name displayed for the field throughout the app. + + - **Sort** provides a dialog to update the entry ordering. Populate the sort menu by pressing the icon, and selecting from the list of imported columns. Once columns have been added, change their relative priority by using the icon to drag and reorder them. Press the icon to toggle the sort between ascending and descending. Press the icon to remove a column. + +The following sections can be pressed to [Collect](collect.md) data for the field, [Export](export.md) the field's data, and (if the field was imported via BrAPI) [Brapi](brapi.md) the field's data by pulling in any new observations. -- **Sort** provides a dialog to update the plot ordering. Populate the sort menu by pressing the icon, and selecting from the list of imported columns. Once columns have been added, change their relative priority by using the icon to drag and reorder them. Press the icon to toggle the sort between ascending and descending. Press the icon to remove a column. +The final collapsible section summarizes that data that has been collected for the field so far. It shows an overall trait and observation count, and then for each trait a collapsible card with the observation count for the trait, the percentage of entries with observations of the trait, and, if applicable for the trait type, a chart showing the distribution of observations. -- **Sync** connects to the server specified in [Brapi settings](settings-brapi.md), updating the trial with new data that has been added from other sources since the last sync or import. This option will not work for trials imported from a file. -- **Delete** removes the trial and all associated data. A confirmation message will be shown first, to confirm that deletion is not triggered accidentally. diff --git a/docs/geonav.md b/docs/geonav.md index 197a0c0b6..758bd430d 100644 --- a/docs/geonav.md +++ b/docs/geonav.md @@ -10,7 +10,7 @@ requires field entries to have high-precision location data collected via the [GNSS Trait](trait-gnss.md) or included in the field import file. Imported coordinates must be in `Lat;Long` format in a single `geo_coordinates` column. Refer to the -`rtk_sample.csv` file in the `field_import` directory as an example. +`rtk_sample.csv` file in the `field_import` folder as an example. To use GeoNav, navigate to the [Geonav Settings](settings-geonav.md) and enable GeoNav. Turn diff --git a/docs/index.html b/docs/index.html index fdbcfb9b2..617b2c913 100644 --- a/docs/index.html +++ b/docs/index.html @@ -16,6 +16,7 @@ repo: 'https://github.com/PhenoApps/Field-Book', loadSidebar: true, subMaxLevel: 2, + sidebarDisplayLevel: 1, homepage: 'README.md', search: { namespace: 'default', @@ -26,5 +27,6 @@ + diff --git a/docs/index.md b/docs/index.md index da4d1a25e..60bd34ba9 100644 --- a/docs/index.md +++ b/docs/index.md @@ -21,9 +21,9 @@ trait-gopro : : {.toctree maxdepth="2" caption="Settings"} -settings settings-general settings-profile settings-appearance -settings-behavior settings-geonav settings-sounds settings-brapi -settings-database settings-beta +settings settings-profile settings-features settings-appearance settings-behavior +settings-location settings-sounds settings-brapi +settings-system settings-storage settings-experimental : : {.toctree maxdepth="2" caption="Extra"} diff --git a/docs/settings-brapi.md b/docs/settings-brapi.md index 9ccc16d4c..9bf906064 100644 --- a/docs/settings-brapi.md +++ b/docs/settings-brapi.md @@ -5,7 +5,7 @@ Configuration -------------
- +
BrAPI Configuration Settings
diff --git a/docs/settings-beta.md b/docs/settings-experimental.md similarity index 66% rename from docs/settings-beta.md rename to docs/settings-experimental.md index ad6f46e79..ae1e417ab 100644 --- a/docs/settings-beta.md +++ b/docs/settings-experimental.md @@ -1,18 +1,18 @@ -Beta Settings -============= +Experimental Settings +=====================
- -
Beta settings screen layout
+ +
Experimental settings screen layout
-#### Repeated Measures +#### Repeated Measures Turns on repeated measures. When turned on, a green plus symbol appears next to the trait value entry box on the collect screen.
- +
Collect screen value entry with repeated measurements enabled
diff --git a/docs/settings-features.md b/docs/settings-features.md new file mode 100644 index 000000000..d3e624702 --- /dev/null +++ b/docs/settings-features.md @@ -0,0 +1,43 @@ +Features Settings +================= + +
+ +
Features settings screen layout
+
+ +Optional Collect Tools +---------------------- + +#### Next entry with no data + +Adds a button to the Collect top toolbar thats skips to the next entry +without data. + +#### Move to entry via barcode + +Adds a + +icon to the Collect top toolbar. When pressed, it opens the device +camera to move to an entry by scanning a barcode. The barcode must match +a unique ID within the active trial. + +#### Datagrid + +Adds a +icon to the Collect top toolbar. When pressed, it displays a grid of all +the recorded values for each entry and trait. See more details in the + [Datagrid](datagrid.md) section. + +#### Move to unique identifier + +Adds a + icon to the Collect toolbar. When pressed, it opens a text entry dialog. +Move to a specific entry by typing or scanning its unique id into the +text field. + +
+ +
The move to unique identifier +dialog
+
diff --git a/docs/settings-general.md b/docs/settings-general.md deleted file mode 100644 index 892e6dbc8..000000000 --- a/docs/settings-general.md +++ /dev/null @@ -1,81 +0,0 @@ -General Settings -================ - -
- -
General settings screen -layout
-
- -System Defaults ---------------- - -#### Define storage location - -Opens the Storage dialog to define or update the **Storage location** on the device. - -#### Default import source - -Set the default field and trait import source to one of the provided -options so the app doesn't ask each time. - -
- -
Default import options
-
- -#### Default export source - -Sets the default export location to one of the provided options so the -app doesn't ask each time. - -
- -
Default export options
-
- -Optional Collect Tools ----------------------- - -#### Next entry with no data - -Adds a button to the Collect top toolbar thats skips to the next entry -without data. - -#### Location collected - -Set the method for collecting location while using Field Book. Can be at -the level of the field, the plot, or the individual observation. - -
- -
Location collect options
-
- -#### Move to entry via barcode - -Adds a - -icon to the Collect top toolbar. When pressed, it opens the device -camera to move to an entry by scanning a barcode. The barcode must match -a unique ID within the active trial. - -#### Datagrid - -Adds a -icon to the Collect top toolbar. When pressed, it displays a grid of all -the recorded values for each entry and trait. See more details in the - [Datagrid](datagrid.md) section. - -#### Move to unique identifier - -Adds a - icon to the Collect toolbar. When pressed, it opens a text entry dialog. -Move to a specific entry by typing or scanning its unique id into the -text field. - -
- -
The move to unique identifier -dialog
-
diff --git a/docs/settings-geonav.md b/docs/settings-geonav.md deleted file mode 100644 index 318221242..000000000 --- a/docs/settings-geonav.md +++ /dev/null @@ -1,41 +0,0 @@ -GeoNav Settings -=============== - -
- -
GeoNav settings screen -layout
-
- -#### Enable Geonav - -Enables the device to move between entires based on GPS data. Requires -entries to have GNSS data. - -#### Search Method - -The method used to match GPS location to entry. Defaults to the distance -method. - -
- -
GeoNav search method options
-
- -#### GeoNav Log - -Turns on GeoNav logging to a logfile stored in `/storage/geonav/log.txt` - -#### Update Interval - -Changes the time between GeoNav location updates. Can be set to 1s -(default), 5s, or 10s - -
- -
GeoNav interval options
-
- -#### Pair Device - -Opens Bluetooth interface to pair to an external GPS device diff --git a/docs/settings-location.md b/docs/settings-location.md new file mode 100644 index 000000000..19ddd6781 --- /dev/null +++ b/docs/settings-location.md @@ -0,0 +1,50 @@ +Location Settings +================= + +
+ +
Location settings screen layout
+
+ +#### Location collected + +Set the method for collecting location while using Field Book. Can be at +the level of the field, the plot, or the individual observation. + +
+ +
Location collect options
+
+ +#### Enable Geonav + +Enables the device to move between entires based on GPS data. Requires +entries to have GNSS data. + +#### Search Method + +The method used to match GPS location to entry. Defaults to the distance +method. + +
+ +
GeoNav search method options
+
+ +#### GeoNav Log + +Turns on GeoNav logging to a logfile stored in `/storage/geonav/log.txt` + +#### Update Interval + +Changes the time between GeoNav location updates. Can be set to 1s +(default), 5s, or 10s + +
+ +
GeoNav interval options
+
+ +#### Pair Device + +Opens Bluetooth interface to pair to an external GPS device diff --git a/docs/settings-database.md b/docs/settings-storage.md similarity index 55% rename from docs/settings-database.md rename to docs/settings-storage.md index db1a0de01..73655f956 100644 --- a/docs/settings-database.md +++ b/docs/settings-storage.md @@ -1,37 +1,37 @@ -Database Settings -================= +Storage Settings +================
- -
Database settings screen + +
Storage settings screen layout
-#### Import database +#### Import database Imports a database from an exported database file. This replaces the current data in the app.
- +
Database import dialog
-#### Export database +#### Export database Exports the internal database. Contact the development team if you need data recovered or are having issues and send the file that is exported.
- +
Database export dialog
-#### Delete database +#### Delete database Wipes all data from the app.
- +
Database delete confirmation
diff --git a/docs/settings-system.md b/docs/settings-system.md new file mode 100644 index 000000000..92f501c89 --- /dev/null +++ b/docs/settings-system.md @@ -0,0 +1,34 @@ +System Settings +=============== + +
+ +
System settings screen layout
+
+ +System Defaults +--------------- + +#### Define storage location + +Opens the Storage dialog to define or update the **Storage location** on the device. + +#### Default import source + +Set the default field and trait import source to one of the provided +options so the app doesn't ask each time. + +
+ +
Default import options
+
+ +#### Default export source + +Sets the default export location to one of the provided options so the +app doesn't ask each time. + +
+ +
Default export options
+
\ No newline at end of file diff --git a/docs/settings.md b/docs/settings.md index bd9ce6ef5..eebe69521 100644 --- a/docs/settings.md +++ b/docs/settings.md @@ -2,7 +2,7 @@ Settings ========
- +
Settings screen layout
@@ -18,7 +18,7 @@ Field Book settings are grouped into eight subcategories: - [Sound Settings](settings-sound.md) toggle sound notifications for collection activities. - [Brapi settings](settings-brapi.md) connect to an external data source using the Breeding API (BrAPI). -- [Database settings](settings-database.md) allow the database to be imported, exported, or reset. +- [Storage settings](settings-storage.md) allow the database to be imported, exported, or reset. The **Search Bar** at the top of the screen can be used to quickly find and navigate to a specific setting. diff --git a/docs/settings/_sidebar.md b/docs/settings/_sidebar.md new file mode 100644 index 000000000..b51539359 --- /dev/null +++ b/docs/settings/_sidebar.md @@ -0,0 +1,11 @@ +* [Settings](settings/) +* [Profile](settings/settings-profile.md) +* [Features](settings/settings-features.md) +* [Appearance](settings/settings-appearance.md) +* [Behavior](settings/settings-behavior.md) +* [Location](settings/settings-location.md) +* [Sounds](settings/settings-sounds.md) +* [BrAPI](settings/settings-brapi.md) +* [System](settings/settings-system.md) +* [Storage](settings/settings-storage.md) +* [Experimental](settings/settings-experimental.md) \ No newline at end of file diff --git a/docs/settings/settings-appearance.md b/docs/settings/settings-appearance.md new file mode 100644 index 000000000..c6eab5e69 --- /dev/null +++ b/docs/settings/settings-appearance.md @@ -0,0 +1,74 @@ +Appearance Settings +=================== + +
+ +
Appearance settings screen +layout
+
+ +Application +----------- + +#### Theme + +Allows users to modify specific colors or the entire theme of Field +Book. + +
+ +
Theme options within appearance +settings
+
+ +#### Language + +Allows the user to change the Field Book language to one of 14 different +options. + +
+ +
Language options
+
+ +#### Tutorial + +Adds a + +icon to the toolbar that enables the tutorial. The tutorial provides +contextual information throughout the app. + +Collect Screen +-------------- + +#### Customize toolbar icons + +Allows the user to change which default toolbar buttons are displayed on +the Collect screen. + +
+ +
Turn default toolbar options +on/off
+
+ +#### Number of Infobars + +Allows the user to change the number of Infobars that are displayed on +the Collect screen. + +
+ +
Choice of number of +Infobars
+
+ +#### Quick GoTo + +Changes the read-only primary/secondary order on the Collect screen to +edit texts that can search and move to specific entries. + +
+ +
Editable primary/secondary order
+
diff --git a/docs/settings/settings-behavior.md b/docs/settings/settings-behavior.md new file mode 100644 index 000000000..1fb97b021 --- /dev/null +++ b/docs/settings/settings-behavior.md @@ -0,0 +1,71 @@ +Behavior Settings +================= + +Behavior +-------- + +
+ +
Behavior settings screen +layout
+
+ +#### Cycling traits advances entry + +When enabled, once all active traits have been cycled, the app +automatically advances to the next entry. + +#### Map volume keys to entry navigation + +Allows volume keys to be used to move to next/previous entry. Note that +this disables the volume buttons being able to change the device volume +when Collect is open. + +#### Return key signal + +Allows the user to choose the behavior of the return key signal that can +be included when scanning barcodes: next plot, next trait, or do +nothing. + +
+ +
Choice of return key signal +behavior
+
+ +#### Disable left/right entry arrow + +Disables the left, right, or both entry arrows unless data has been +collected to ensure an entry isn't skipped during data collection. + +
+ +
Choice of direction +disabled
+
+ +#### Disable file sharing + +Turns off the share dialog that opens by default when data is exported. + +#### Use day of year + +Changes the date trait format to record date values as numbers counting +up from Jan 1, rather than traditional dates. For example `96` instead +of `2023-04-06`. + +#### Skip entries across active trait + +When advancing entries, skips either entries that already have data for +the active trait, or entries that already have data for all traits. + +
+ +
Choice of skip +behavior
+
+ +#### Flip Flop Arrows + +Switches the collect screen arrows so that the small green arrows +advance entries and the large black arrows advance traits. diff --git a/docs/settings/settings-brapi.md b/docs/settings/settings-brapi.md new file mode 100644 index 000000000..032eb867e --- /dev/null +++ b/docs/settings/settings-brapi.md @@ -0,0 +1,125 @@ +BrAPI Settings +============== + +
+ +
BrAPI settings screen layout
+
+ +#### Enable BrAPI + +Enable/Disable BrAPI throughout Field Book app. Disabling BrAPI hides all other BrAPI settings, and removes BrAPI as an option from imports and exports. + +Server +------ + +#### BrAPI Base URL + +Set the server URL when importing via BrAPI. + +
+ +
BrAPI Base URL setting
+
+ +#### BrAPI Base URL + +Set the display name Field Book should use when referring to the BrAPI server. + +
+ +
BrAPI Display Name setting
+
+ +Authorization +------------- + +#### OIDC Flow + +BrAPI server authentication version. Defaults to OAuth2 Implicit Grant. + +
+ +
BrAPI OIDC flow setting
+
+ +#### OIDC Discovery URL + +The location of the OIDC discovery JSON document. + +
+ +
BrAPI OIDC url setting
+
+ +#### OIDC Client ID and OIDC Scope + +Optional settings for when OIDC Client ID and Scope need to be specified. + +Advanced +-------- + +
+ +
BrAPI Advanced Settings
+
+ +#### BrAPI Version + +Set the version of the BrAPI specification that will be used to +communicate with the server. Defaults to V2. + +
+ +
BrAPI version setting
+
+ +#### Page Size + +Set the page size for BrAPI server responses. Defaults to 1000. + +
+ +
BrAPI page size setting
+
+ +#### Chunk Size + +Set the chunk size. Defaults to 500. + +
+ +
BrAPI chunk size setting
+
+ +#### Server Timeout + +Set the time limit in seconds to wait for a response from the server +before timing out. Defaults to 2 minutes. + +
+ +
BrAPI server timeout setting
+
+ +#### Cache Invalidation + +Set the interval for Field Book to invalidate/refresh cached BrAPI data. Cache refreshes are important for field and trait imports to be able to capture new data from the BrAPI server. + +
+ +
BrAPI cache invalidation
+
+ +Preferences +----------- + +#### Value vs Label Display + +Sets desired field for display when using a categorical trait the comes +from a BrAPI Variable. + +
+ +
BrAPI Value vs Label setting
+
diff --git a/docs/settings/settings-experimental.md b/docs/settings/settings-experimental.md new file mode 100644 index 000000000..32d7123b0 --- /dev/null +++ b/docs/settings/settings-experimental.md @@ -0,0 +1,25 @@ +Experimental Settings +===================== + +
+ +
Experimental settings screen layout
+
+ +#### Repeated Measures + +Turns on repeated measures. When turned on, a green plus symbol appears +next to the trait value entry box on the collect screen. + +
+ +
Collect screen value entry with repeated measurements enabled
+
+ +When pressed it creates a new entry field for collecting an additional +observation on the same plot for the same trait. + +!> To export data that includes repeated measures make sure to choose the +**Database** format or to use **BrAPI**. These formats allow repeated +measures to be differentiated by timestamp. If exporting in **Table** +format then only the latest measurement will be included. diff --git a/docs/settings/settings-features.md b/docs/settings/settings-features.md new file mode 100644 index 000000000..d3e624702 --- /dev/null +++ b/docs/settings/settings-features.md @@ -0,0 +1,43 @@ +Features Settings +================= + +
+ +
Features settings screen layout
+
+ +Optional Collect Tools +---------------------- + +#### Next entry with no data + +Adds a button to the Collect top toolbar thats skips to the next entry +without data. + +#### Move to entry via barcode + +Adds a + +icon to the Collect top toolbar. When pressed, it opens the device +camera to move to an entry by scanning a barcode. The barcode must match +a unique ID within the active trial. + +#### Datagrid + +Adds a +icon to the Collect top toolbar. When pressed, it displays a grid of all +the recorded values for each entry and trait. See more details in the + [Datagrid](datagrid.md) section. + +#### Move to unique identifier + +Adds a + icon to the Collect toolbar. When pressed, it opens a text entry dialog. +Move to a specific entry by typing or scanning its unique id into the +text field. + +
+ +
The move to unique identifier +dialog
+
diff --git a/docs/settings/settings-location.md b/docs/settings/settings-location.md new file mode 100644 index 000000000..38b62bf98 --- /dev/null +++ b/docs/settings/settings-location.md @@ -0,0 +1,50 @@ +Location Settings +================= + +
+ +
Location settings screen layout
+
+ +#### Location collected + +Set the method for collecting location while using Field Book. Can be at +the level of the field, the plot, or the individual observation. + +
+ +
Location collect options
+
+ +#### Enable Geonav + +Enables the device to move between entires based on GPS data. Requires +entries to have GNSS data. + +#### Search Method + +The method used to match GPS location to entry. Defaults to the distance +method. + +
+ +
GeoNav search method options
+
+ +#### GeoNav Log + +Turns on GeoNav logging to a logfile stored in `/storage/geonav/log.txt` + +#### Update Interval + +Changes the time between GeoNav location updates. Can be set to 1s +(default), 5s, or 10s + +
+ +
GeoNav interval options
+
+ +#### Pair Device + +Opens Bluetooth interface to pair to an external GPS device diff --git a/docs/settings/settings-profile.md b/docs/settings/settings-profile.md new file mode 100644 index 000000000..b391fa9d2 --- /dev/null +++ b/docs/settings/settings-profile.md @@ -0,0 +1,47 @@ +Profile Settings +================ + +
+ +
Profile settings screen +layout
+
+ +Profile +------- + +#### Person + +Sets the first and last name of the person operating Field Book. This +information is stored with each collected measurement as metadata and is +included in the database + [Export](export.md) format. + +
+ +
Set person dialog
+
+ +#### Reset Profile + +Unsets the first and last name of the person operating Field Book. + +#### Require Person + +If enabled, prevents using Field Book unless Person is set. And adds a +time between verification setting, which can be set to one of three +intervals. + +
+ +
Choice of profile verification +intervals
+
+ +Crashlytics +----------- + +#### Unique ID + +Creates a unique ID for use in generating more specific crash logs. This +helps the development team when troubleshooting and improving Field Book diff --git a/docs/settings/settings-sounds.md b/docs/settings/settings-sounds.md new file mode 100644 index 000000000..f9e0ecd22 --- /dev/null +++ b/docs/settings/settings-sounds.md @@ -0,0 +1,45 @@ +Sound Settings +============== + +
+ +
Sound settings screen +layout
+
+ +Sounds +------ + +#### Primary order sound + +Makes a sound when the primary order changes. Useful for knowing when to +move to the next field row. + +#### Entry navigation sound + +Makes a sound when the entry changes on the Collect screen. Can alert to +accidental entry advancement. + +#### Cycle traits sound + +Makes a sound when all the active traits have been cycled through. +Useful for knowing when to move to the next entry. + +#### Delete Observation Sound + +Makes a sound when a recorded value is deleted in the Collect screen. + +Speech +------ + +#### Text to Speech + +Enables text to speech. When enabled, choose one of the five availalbe +languages. The device will read data as it is entered in the Collect +screen. + +
+ +
Text to speech language +options
+
diff --git a/docs/settings/settings-storage.md b/docs/settings/settings-storage.md new file mode 100644 index 000000000..1de50c931 --- /dev/null +++ b/docs/settings/settings-storage.md @@ -0,0 +1,37 @@ +Storage Settings +================ + +
+ +
Storage settings screen +layout
+
+ +#### Import database + +Imports a database from an exported database file. This replaces the +current data in the app. + +
+ +
Database import dialog
+
+ +#### Export database + +Exports the internal database. Contact the development team if you need +data recovered or are having issues and send the file that is exported. + +
+ +
Database export dialog
+
+ +#### Delete database + +Wipes all data from the app. + +
+ +
Database delete confirmation
+
diff --git a/docs/settings/settings-system.md b/docs/settings/settings-system.md new file mode 100644 index 000000000..92f501c89 --- /dev/null +++ b/docs/settings/settings-system.md @@ -0,0 +1,34 @@ +System Settings +=============== + +
+ +
System settings screen layout
+
+ +System Defaults +--------------- + +#### Define storage location + +Opens the Storage dialog to define or update the **Storage location** on the device. + +#### Default import source + +Set the default field and trait import source to one of the provided +options so the app doesn't ask each time. + +
+ +
Default import options
+
+ +#### Default export source + +Sets the default export location to one of the provided options so the +app doesn't ask each time. + +
+ +
Default export options
+
\ No newline at end of file diff --git a/docs/statistics.md b/docs/statistics.md new file mode 100644 index 000000000..9792e7d6a --- /dev/null +++ b/docs/statistics.md @@ -0,0 +1,36 @@ +Statistics +========== + +Overview +-------- + +The Statistics screen provides helpful information about Field Book usage. + +
+ +
The Statistics screen
+
+ +Statistics Cards +---------------- + +The default statistics cards shows total counts across all data in the app. The counts include number of fields with data collected, number of entries with data collected, number of observations, hours spent collecting data, number of people who collected data, number of photos taken, as well as the date with the largest number of observations (busiest day) and the entry with the most observations (most observed). + +
+ +
The total, year, and month tabs
+
+ +Press the Year or Month tab to split the single card into multiple statistics cards covering different intervals. Press the arrow icon in the upper righthand corner of a card to share an image of it. Or press the calendar icon on the right side of the toolbar to switch to heatmap view. + +Heatmap +------- + +The heatmap view shows your collection activy overlayed on a calendar. Each circle on a date represents collection acvtity on that date, with the color intensity corresponding to the number of observations. + +Use the up and down arrows in the toolbar to scroll through the calendar. Use the calendar icon to set a custom range of dates. Or use the number icon to switch the calendar from showing dates to showing numbers of observations. + +
+ +
The heatmap view, left with dates, right with obs numbers
+
\ No newline at end of file diff --git a/docs/storage.md b/docs/storage.md index 3fa2928d3..74d861a03 100644 --- a/docs/storage.md +++ b/docs/storage.md @@ -1,26 +1,25 @@ Storage ======= -Storage Location Definer ------------------------- +Setup +----- -After installing and opening the app, you will be asked to create a new -folder and define it as the **Storage location** on the device where -files will be written. In Field Book this step is required. The selected -**Storage location** can be changed in the - [General Settings](settings-general.md). +One of the required steps when opening the app for the first time is to define the **Storage location** where Field Book app files will be written. This can be an existing folder, or a newly created one.
- -
Storage location definer layout
+ +
Using a new folder for storage
+The selected **Storage location** can be changed in the + [Storage Settings](settings-storage.md). -Subdirectories --------------- -Fieldbook will create the following subdirectories within the selected -**Storage location** directory: +Subfolders +---------- + +Fieldbook will create the following subfolders within the selected +**Storage location** folder: - `field_import`: contains files to be imported into Field Book - `field_export`: contains exported data files @@ -36,7 +35,7 @@ Fieldbook will create the following subdirectories within the selected File transfer ------------- -To add your own files to the appropriate subdirectories you may need to +To add your own files to the appropriate subfolders you may need to manually transfer files from a computer. You can do this by connecting your Android device via a USB cable and changing its USB mode to allow file transfer. Each device manufacturer has slight variations for the @@ -55,7 +54,7 @@ traits, as well as all data collected with the app. The database schema is modelled after the Breeding API (BrAPI) standard, and is documented in the [Field Book Wiki](https://github.com/PhenoApps/Field-Book/wiki) -The database is automatically backed up to the `database` directory at -regular intervals. It can also be manually exported and imported in [Database Settings](settings-database.md). This feature can be +The database is automatically backed up to the `database` folder at +regular intervals. It can also be manually exported and imported in [Storage Settings](settings-storage.md). This feature can be used to transfer data to a new device or for recreating issues when troubleshooting. diff --git a/docs/training-resources.md b/docs/training-resources.md index e4e58f136..ce8a41b18 100644 --- a/docs/training-resources.md +++ b/docs/training-resources.md @@ -11,7 +11,7 @@ accompanying excercises. The exercises in the the training slides are based on the `training_sample.csv` field file which is copied into the -`field_import` directory on install and is imported as part training. +`field_import` folder on install and is imported as part training.
diff --git a/docs/trait-audio.md b/docs/trait-audio.md index 9de626981..2389d0d0f 100644 --- a/docs/trait-audio.md +++ b/docs/trait-audio.md @@ -16,7 +16,7 @@ recording. Press the back the audio that has been recorded. Recorded audio files are stored in `.mp3` format, and named with the entry's unique_id and a -timestamp. The resulting files are stored in an audio directory within a field-specific subdirectory of `plot_data`. An example audio filepath would be `plot_data/FIELD_NAME/audio/AUDIO_FILE_NAME.mp3`. +timestamp. The resulting files are stored in an audio folder within a field-specific subfolder of `plot_data`. An example audio filepath would be `plot_data/FIELD_NAME/audio/AUDIO_FILE_NAME.mp3`. Creation -------- diff --git a/docs/trait-date.md b/docs/trait-date.md index 88f3c5400..1cc4e50e1 100644 --- a/docs/trait-date.md +++ b/docs/trait-date.md @@ -26,3 +26,10 @@ Collect layout
Date trait collection interface
+ +Press the bottom calendar icon to open the date picker + +
+ +
The calendar date picker
+
diff --git a/docs/trait-disease.md b/docs/trait-disease.md index 272cf90e2..1279f13c5 100644 --- a/docs/trait-disease.md +++ b/docs/trait-disease.md @@ -7,7 +7,7 @@ Overview The disease trait format is used for collecting ratings of both disease incidence and severity. It is created with a trait name and optional details. The incidence scale can be adjusted by editing the -`disease_severity.txt` file in the `traits` directory. +`disease_severity.txt` file in the `traits` folder. On the collect screen, buttons showing numbers between **0-100** in 5 digit increments are used to record incidence, and **R**, **M**, and **S** are @@ -28,6 +28,6 @@ Collect layout --------------
- +
Disease trait collection interface
diff --git a/docs/trait-gopro.md b/docs/trait-gopro.md index e8d26513d..6c31efd87 100644 --- a/docs/trait-gopro.md +++ b/docs/trait-gopro.md @@ -14,7 +14,7 @@ be opened using the icon to access it and capture images. Multiple photos can be captured for each entry. -Captured photos are stored in `.jpg` format, and named by using underscores to join the entry's unique_id, the trait name, the photo number, and a timestamp. The resulting files are stored in a gopro directory within a field-specific subdirectory of `plot_data`. An example photo filepath would be `plot_data/FIELD_NAME/gopro/PHOTO_FILE_NAME.jpg`. +Captured photos are stored in `.jpg` format, and named by using underscores to join the entry's unique_id, the trait name, the photo number, and a timestamp. The resulting files are stored in a gopro folder within a field-specific subfolder of `plot_data`. An example photo filepath would be `plot_data/FIELD_NAME/gopro/PHOTO_FILE_NAME.jpg`. Creation -------- diff --git a/docs/trait-photo.md b/docs/trait-photo.md index 1fa60bad8..1b7112cca 100644 --- a/docs/trait-photo.md +++ b/docs/trait-photo.md @@ -10,7 +10,7 @@ trait name and optional details. On the collect page, the camera icon opens the device camera to capture images. Multiple photos can be captured for each entry. -Captured photos are stored in `.jpg` format, and named by using underscores to join the entry's unique_id, the trait name, the photo number, and a timestamp. The resulting files are stored in a picture directory within a field-specific subdirectory of `plot_data`. An example photo filepath would be `plot_data/FIELD_NAME/picture/PHOTO_FILE_NAME.jpg`. +Captured photos are stored in `.jpg` format, and named by using underscores to join the entry's unique_id, the trait name, the photo number, and a timestamp. The resulting files are stored in a picture folder within a field-specific subfolder of `plot_data`. An example photo filepath would be `plot_data/FIELD_NAME/picture/PHOTO_FILE_NAME.jpg`. Creation -------- diff --git a/docs/trait-usb-camera.md b/docs/trait-usb-camera.md index 1e94de224..7900eb210 100644 --- a/docs/trait-usb-camera.md +++ b/docs/trait-usb-camera.md @@ -15,7 +15,7 @@ connected, press the access it and capture images. Multiple photos can be captured for each entry. -Captured photos are stored in `.jpg` format, and named by using underscores to join the entry's unique_id, the trait name, the photo number, and a timestamp. The resulting files are stored in a usb-camera directory within a field-specific subdirectory of `plot_data`. An example photo filepath would be `plot_data/FIELD_NAME/usb-camera/PHOTO_FILE_NAME.jpg`. +Captured photos are stored in `.jpg` format, and named by using underscores to join the entry's unique_id, the trait name, the photo number, and a timestamp. The resulting files are stored in a usb-camera folder within a field-specific subfolder of `plot_data`. An example photo filepath would be `plot_data/FIELD_NAME/usb-camera/PHOTO_FILE_NAME.jpg`. Creation -------- diff --git a/docs/traits.md b/docs/traits.md index 5a5ae9423..0c5674bc6 100644 --- a/docs/traits.md +++ b/docs/traits.md @@ -19,10 +19,7 @@ Creating a Trait ---------------- Traits can be created by pressing the large icon at the -bottom right of the screen, or the same icon in the toolbar. For each -format, the creation screen adjusts to indicate which fields are -required. Trait names must be unique. Each trait is created by -specifying a trait `format`, a trait `name`, optional `details`, and +bottom right of the screen. Select a format, then fill in the required fields in the format-specific dialog. Trait names must be unique. Each trait has a `format`, a trait `name`, optional `details`, and format-dependent fields such as `min`, `max`, and `default`.
@@ -52,9 +49,9 @@ Once created, traits can be manipulated using the following features: - Make all traits **Visible** or **Invisible** by pressing the icon in the toolbar. -- Open the trait **Menu** using the icon on right side of the toolbar to access additional operations affecting all traits. +- Reorder all traits by pressing the icon in the toolbar, and then selecting one of the sort criterion (options include trait `Name`, `Format`, `Import Order`, and `Visibility`) -- Within the menu, select **Sort** to reorder all traits according to one of the sort criterion (options include trait `Name`, `Format`, or `Visibility`) +- Open the trait **Menu** using the icon on right side of the toolbar to access additional operations affecting all traits. - Select **Delete all traits**, then confirm, to remove every trait in the list. @@ -66,8 +63,11 @@ Once created, traits can be manipulated using the following features:
Trait imports and exports are similar to field imports/exports in that -they rely on files stored in a dedicated folder, or on communication -with a designated server using a [Brapi](brapi.md) connection. +they rely on files stored in a dedicated folder (Local Storage), or on using the device file manager to select a trait file anywhere on the device, including from cloud utilities like Google Drive (Cloud Storage). + +BrAPI imports are accessed separately, in the create trait workflow. First make sure BrAPI is enabled and configured in the [Brapi settings](settings-brapi.md) + +Then the BrAPI Display Name of the server you connected to will show up as the last format choice in the list when you press the create trait icon in the bottom right of the screen. Check out the [BrAPI](brapi.md) section of the documentation for details of the trait import process, as well as field import, sync, and data export. ?> When using local storage, trait lists are stored as `.trt` files in the `trait` folder. Technically `.trt` files are just `.csv` files with the extension renamed; exported `.trt` files can be opened as `.csv` if desired. However it is not recommended to manually edit and reimport these files, trait edits are best done within the application. diff --git a/docs/traits/trait-audio.md b/docs/traits/trait-audio.md new file mode 100644 index 000000000..420dbe449 --- /dev/null +++ b/docs/traits/trait-audio.md @@ -0,0 +1,22 @@ + Audio Trait +========================================================================= + +The audio trait format is used to record audio. It is created with a +trait name and optional details. + +On the collect page, press the + button to +begin recording audio. Press the + button to stop +recording. Press the + button to play +back the audio that has been recorded. + +Recorded audio files are stored in `.mp3` format, and named with the entry's unique_id and a +timestamp. The resulting files are stored in an audio folder within a field-specific subfolder of `plot_data`. An example audio filepath would be `plot_data/FIELD_NAME/audio/AUDIO_FILE_NAME.mp3`. + +
+ +
Audio trait creation dialog and collect format
+
+ diff --git a/docs/traits/trait-boolean.md b/docs/traits/trait-boolean.md new file mode 100644 index 000000000..fa46d7a7a --- /dev/null +++ b/docs/traits/trait-boolean.md @@ -0,0 +1,12 @@ + Boolean Trait +=============================================================================== + +The Boolean trait format is used to record TRUE/FALSE values. It is +created with a trait name, default value, and optional details. On the +collect page you can toggle between TRUE and FALSE as needed. Details +text is displayed under the trait name on the collect page. + +
+ +
Boolean trait creation dialog and collect format
+
\ No newline at end of file diff --git a/docs/traits/trait-categorical.md b/docs/traits/trait-categorical.md new file mode 100644 index 000000000..a43aa60e5 --- /dev/null +++ b/docs/traits/trait-categorical.md @@ -0,0 +1,15 @@ + Categorical Trait +====================================================================================== + +The categorical trait format is used when trait values fall into a set +of discrete categories. Categories are individually added in the +`Categories` section of the create screen. Details text is displayed +under the trait name on the collect page. + +Defined categories are displayed as buttons on the collect screen; a +single category can be selected per entry. + +
+ +
Categorical trait creation dialog and collect format
+
\ No newline at end of file diff --git a/docs/traits/trait-counter.md b/docs/traits/trait-counter.md new file mode 100644 index 000000000..2d13ad124 --- /dev/null +++ b/docs/traits/trait-counter.md @@ -0,0 +1,13 @@ + Counter Trait +===================================================================================== + +The counter trait format is used to count numeric integer data, starting +from zero. It is created with a trait name and optional details. + +On the collect screen, the counter starts at zero and can be incremented +or decremented via the **+1** and **-1** buttons. + +
+ +
Counter trait creation dialog and collect format
+
\ No newline at end of file diff --git a/docs/traits/trait-date.md b/docs/traits/trait-date.md new file mode 100644 index 000000000..0972e0c45 --- /dev/null +++ b/docs/traits/trait-date.md @@ -0,0 +1,13 @@ + Date Trait +=========================================================================== + +The date trait format is used to record dates. Details text is displayed +under the trait name on the collect page. + +On the collect screen, the current date is displayed by default and can +be incremented forwards or backwards in single day intervals. Press the bottom calendar icon to open the date picker if you're desired date is far away from the current date. + +
+ +
Date trait creation dialog, collect format, and date picker
+
diff --git a/docs/traits/trait-disease.md b/docs/traits/trait-disease.md new file mode 100644 index 000000000..81cbf7c87 --- /dev/null +++ b/docs/traits/trait-disease.md @@ -0,0 +1,18 @@ + Disease RatingTrait +====================================================================== + +The disease rating trait format is used for collecting ratings of both disease incidence and severity. It is created with a trait name and optional +details. The incidence scale can be adjusted by editing the +`disease_severity.txt` file in the `traits` folder. + +On the collect screen, buttons showing numbers between **0-100** in 5 digit +increments are used to record incidence, and **R**, **M**, and **S** are +used to record severity. For each measurement, only a single incidence +can be recorded while severity types can be combined. The `/` button +allows varying incidence rates to be recorded (e.g., heterogenous +response within a plot). + +
+ +
Disease trait creation dialog and collect format
+
diff --git a/docs/traits/trait-gnss.md b/docs/traits/trait-gnss.md new file mode 100644 index 000000000..1ff6df4a9 --- /dev/null +++ b/docs/traits/trait-gnss.md @@ -0,0 +1,67 @@ + GNSS Trait +============================================================================== + +Overview +-------- + +The GNSS trait format is used to acquire high-accuracy GPS coordinates +from an external, Bluetooth-connected device. While other traits only +capture phenotypic or observational data, the GNSS trait is intended to +be used to capture metadata about the plot itself. This metadata can be +used in conjunction with the + [Geonav](geonav.md) feature to automatically navigate +through the field. + +
+ +
GNSS trait creation dialog and collect format
+
+ +Details +------- + +When first navigating to a GNSS trait, the collect screen will show a + +button that will show a list of devices that can be accessed to provide +a location for this trait. + +
+ +
GNSS device select dialog
+
+ +Once a device is selected the screen will populate with a series of +values from the GNSS receiver output including high-accuracy latitude +and longitude coordinates, current Coordinated Universal Time (UCT), the +Horizontal Dilution of Precision (HDOP, a measure of the suitability of +satellite positioning in the sky, ideally 1 or below), the number of +available satellites, the altitude, and accuracy. + +
+ +
GNSS receiver output
+
+ +Pressing + will record an instantaneous GPS reading. Toggling the average option will +record an average of incoming location data for 5s, 10s, or manually +(whereby all manually collected location points are averaged to create a +representative value). + +
+ +
GNSS average options
+
+ +When recording data for an entry with existing coordinates, a warning +message will be displayed to confirm that the existing coordinates will +be updated. + +
+ +
GNSS update warning
+
+ +If errors occur while collecting gnss data (e.g., socket cannot be +established), users may have to manually disconnect/reconnect to the +external device. diff --git a/docs/traits/trait-gopro.md b/docs/traits/trait-gopro.md new file mode 100644 index 000000000..d13b697e0 --- /dev/null +++ b/docs/traits/trait-gopro.md @@ -0,0 +1,33 @@ + GoPro Trait +=========================================================================== + +Overview +-------- + +The GoPro trait format is used to capture images with an external, +Bluetooth-connected GoPro camera. It is created with a trait name and +optional details. + +On the collect screen, once a GoPro is connected via Bluetooth, it can +be opened using the + button. Once connected, press the + icon to access it and capture images. Multiple photos can be captured for each +entry. + +Captured photos are stored in `.jpg` format, and named by using underscores to join the entry's unique_id, the trait name, the photo number, and a timestamp. The resulting files are stored in a gopro folder within a field-specific subfolder of `plot_data`. An example photo filepath would be `plot_data/FIELD_NAME/gopro/PHOTO_FILE_NAME.jpg`. + +Creation +-------- + +
+ +
Gopro trait creation dialog
+
+ +Collect layout +-------------- + +
+ +
Gopro trait collection interface
+
diff --git a/docs/traits/trait-location.md b/docs/traits/trait-location.md new file mode 100644 index 000000000..e1f01c418 --- /dev/null +++ b/docs/traits/trait-location.md @@ -0,0 +1,16 @@ + Location Trait +=================================================================================== + +The location trait is used to record the GPS coordinates of the device. +It is created with a trait name and optional details. + +On the collect page, pressing the + +button will record the current latitude and longitude. If the device is +connected to an external location source, the coordinates from this +source will be used instead of the device's internal GPS. + +
+ +
Location trait creation dialog and collect format
+
diff --git a/docs/traits/trait-multicat.md b/docs/traits/trait-multicat.md new file mode 100644 index 000000000..4a25971ae --- /dev/null +++ b/docs/traits/trait-multicat.md @@ -0,0 +1,16 @@ + Multicat Trait +=============================================================================== + +The multicat trait format is used when trait values fall into a set +of discrete categories. Categories are invidiually added in the +`Categories` section of the create screen. Categories within a multicat +trait must be unique. Details text is displayed under the trait name on +the collect screen. + +Defined categories will be displayed as buttons on the collect screen. +Multiple categories can be selected per entry. + +
+ +
Multicat trait creation dialog and collect format
+
diff --git a/docs/traits/trait-numeric.md b/docs/traits/trait-numeric.md new file mode 100644 index 000000000..1884382ca --- /dev/null +++ b/docs/traits/trait-numeric.md @@ -0,0 +1,11 @@ + Numeric Trait +========================================================================== + +The numeric trait format is used for quantitative traits like yield and +height. Value minimum and maximums help reduce erros during collection. +Details text is displayed under the trait name on the collect page. + +
+ +
Numeric trait creation dialog and collect format
+
diff --git a/docs/traits/trait-percent.md b/docs/traits/trait-percent.md new file mode 100644 index 000000000..216235529 --- /dev/null +++ b/docs/traits/trait-percent.md @@ -0,0 +1,15 @@ + Percent Trait +========================================================================== + +The percent trait format is used to collect percentage-based phenotypes. +In addition to the required trait name the default value, minimum, and +maximum values can be adjusted. Details text is displayed under the +trait name on the collect page. + +On the collect page, percent values are recorded by adjusting the +percent slider. + +
+ +
Percent trait creation dialog and collect format
+
diff --git a/docs/traits/trait-photo.md b/docs/traits/trait-photo.md new file mode 100644 index 000000000..4ee8f197c --- /dev/null +++ b/docs/traits/trait-photo.md @@ -0,0 +1,37 @@ + Photo Trait +===================================================================== + +Overview +-------- + +The photo trait formats are used to capture images. The creation process starts by picking a device-specific format. The simplest option is to use the system camera, but external devices ( GoPro, USB, or Canon) are also supported. + +Creation +-------- + +
+ +
Photo trait creation (system camera)
+
+ +On the collect page, pressing the icon captures an image from the camera. Pressing the icon opens a settings dialog, where the resolution, preview, and capture options can be adjusted. Multiple photos can be captured for each entry. + +Collect layout +-------------- + +
+ +
Photo trait collection interface and settings (system camera)
+
+ +Captured photos are stored in `.jpg` format, and named by using underscores to join the entry's unique_id, the trait name, the photo number, and a timestamp. The resulting files are stored in a picture folder within a field-specific subfolder of `plot_data`. An example photo filepath would be `plot_data/FIELD_NAME/picture/PHOTO_FILE_NAME.jpg`. + +External devices +---------------- + +The photo trait formats for capturing images from external devices work the same way as with the system camera, the only difference is the initial setup to connect to the device. Connect by pressing the icon when you first access the trait on the collect screen + +
+ +
Photo trait collection interface (GoPro)
+
\ No newline at end of file diff --git a/docs/traits/trait-text.md b/docs/traits/trait-text.md new file mode 100644 index 000000000..b5c24a1a7 --- /dev/null +++ b/docs/traits/trait-text.md @@ -0,0 +1,13 @@ + Text Trait +================================================================================== + +The text trait format is used to record open-ended text. It is created +with a trait name, optional default value, and trait details. + +On the collect screen, text can be typed or dictated using the system +keyboard. + +
+ +
Text trait creation dialog and collect format
+
diff --git a/docs/traits/trait-usb-camera.md b/docs/traits/trait-usb-camera.md new file mode 100644 index 000000000..dcc1ac273 --- /dev/null +++ b/docs/traits/trait-usb-camera.md @@ -0,0 +1,34 @@ + USB Camera Trait +=========================================================================== + +Overview +-------- + +The USB camera trait format is used to capture images with an external +camera. It is created with a trait name and optional details. + +On the collect screen, once a camera is connected via USB, it can be +opened using +. Once +connected, press the + icon to +access it and capture images. Multiple photos can be captured for each +entry. + +Captured photos are stored in `.jpg` format, and named by using underscores to join the entry's unique_id, the trait name, the photo number, and a timestamp. The resulting files are stored in a usb-camera folder within a field-specific subfolder of `plot_data`. An example photo filepath would be `plot_data/FIELD_NAME/usb-camera/PHOTO_FILE_NAME.jpg`. + +Creation +-------- + +
+ +
USB Camera trait creation dialog
+
+ +Collect layout +-------------- + +
+ +
USB Camera trait collection interface
+
diff --git a/docs/traits/trait-zebra.md b/docs/traits/trait-zebra.md new file mode 100644 index 000000000..953fd63df --- /dev/null +++ b/docs/traits/trait-zebra.md @@ -0,0 +1,45 @@ + Zebra Label Print Trait +================================================================================== + +Overview +-------- + +The Zebra Label print trait format is used to print labels from an +external printer. The trait is designed to work with Zebra's [ZQ500 +Series](https://www.zebra.com/us/en/products/printers/mobile/zq500.html) +of ruggedized, mobile printers. It is created with a trait name and +optional details. + +To use this trait, the Zebra printer must first be paired via Bluetooth. +Label size, barcode, specific data, and number of copies are selected +and are saved as defaults. Pressing the print button will print the +desired number of labels, each containing a barcode and ID for the +specific entry, along with any additional selected data. + +
+ +
Zebra Label Print trait creation dialog and collect format
+
+ +Troubleshooting +--------------- + +Issues with label printing are often caused by incompatible Zebra mobile +printer configurations. To troubleshoot, install the [Zebra Printer +Setup +Utility]() +and try the following steps: + +1. Download the latest firmware for the mobile printer model from the + [Zebra support + page](), + unzip it, and send the unzipped `.zpl` file to the + printer using the `Available Files` option in the Zebra Printer + Setup Utility. +2. With the firmware updated, ensure the media type settings in **Media + Settings** is correct for the type of label being used (usually + **MARK**). + +If the above steps don't fix the problem, printing a configuration +label using `Printer Actions` in the Zebra Printer Setup Utility can +help with further troubleshooting.