From be5b9dee8929184c6d69fe2c5909d7aab94771b7 Mon Sep 17 00:00:00 2001 From: Johannes Vedder Date: Mon, 13 May 2024 14:42:43 +0200 Subject: [PATCH] chore: remove docs action --- .github/docker/db-docs.yml | 17 - .github/scripts/generate-uml.bash | 69 - .github/workflows/db-docs.yml | 41 - .github/workflows/uml-docs.yml | 43 - docs/README.md | 28 - docs/database/README.md | 295 - docs/database/auth.audit_log_entries.md | 35 - docs/database/auth.audit_log_entries.svg | 35 - docs/database/auth.instances.md | 35 - docs/database/auth.instances.svg | 38 - docs/database/auth.refresh_tokens.md | 40 - docs/database/auth.refresh_tokens.svg | 44 - docs/database/auth.schema_migrations.md | 31 - docs/database/auth.schema_migrations.svg | 26 - docs/database/auth.users.md | 61 - docs/database/auth.users.svg | 157 - .../database/extensions.pg_stat_statements.md | 117 - .../extensions.pg_stat_statements.svg | 152 - .../extensions.pg_stat_statements_info.md | 35 - .../extensions.pg_stat_statements_info.svg | 29 - docs/database/net._http_response.md | 30 - docs/database/net._http_response.svg | 47 - docs/database/net.http_request_queue.md | 22 - docs/database/net.http_request_queue.svg | 41 - docs/database/pgsodium.decrypted_key.md | 66 - docs/database/pgsodium.decrypted_key.svg | 65 - docs/database/pgsodium.key.md | 58 - docs/database/pgsodium.key.svg | 112 - docs/database/pgsodium.mask_columns.md | 49 - docs/database/pgsodium.mask_columns.svg | 44 - docs/database/pgsodium.masking_rule.md | 85 - docs/database/pgsodium.masking_rule.svg | 65 - docs/database/pgsodium.valid_key.md | 54 - docs/database/pgsodium.valid_key.svg | 50 - docs/database/public.app_config.md | 39 - docs/database/public.app_config.svg | 50 - docs/database/public.repo.md | 36 - docs/database/public.repo.svg | 139 - docs/database/public.study.md | 58 - docs/database/public.study.svg | 201 - docs/database/public.study_invite.md | 34 - docs/database/public.study_invite.svg | 148 - docs/database/public.study_progress_export.md | 53 - .../database/public.study_progress_export.svg | 53 - docs/database/public.study_subject.md | 38 - docs/database/public.study_subject.svg | 207 - docs/database/public.study_tag.md | 32 - docs/database/public.study_tag.svg | 130 - docs/database/public.subject_progress.md | 35 - docs/database/public.subject_progress.svg | 78 - docs/database/public.tag.md | 32 - docs/database/public.tag.svg | 51 - docs/database/public.user.md | 33 - docs/database/public.user.svg | 176 - docs/database/schema.json | 1 - docs/database/schema.svg | 1142 -- docs/database/storage.buckets.md | 35 - docs/database/storage.buckets.svg | 157 - docs/database/storage.migrations.md | 34 - docs/database/storage.migrations.svg | 35 - docs/database/storage.objects.md | 40 - docs/database/storage.objects.svg | 157 - docs/database/supabase_functions.hooks.md | 37 - docs/database/supabase_functions.hooks.svg | 38 - .../database/supabase_functions.migrations.md | 30 - .../supabase_functions.migrations.svg | 29 - docs/database/vault.decrypted_secrets.md | 56 - docs/database/vault.decrypted_secrets.svg | 50 - docs/database/vault.secrets.md | 46 - docs/database/vault.secrets.svg | 105 - docs/uml/app/lib/models/uml.svg | 14 - .../app/lib/screens/app_onboarding/uml.svg | 339 - .../study/dashboard/contact_tab/uml.svg | 309 - .../study/dashboard/task_overview_tab/uml.svg | 224 - .../app/lib/screens/study/dashboard/uml.svg | 732 - .../app/lib/screens/study/multimodal/uml.svg | 39 - .../app/lib/screens/study/onboarding/uml.svg | 721 - .../screens/study/report/performance/uml.svg | 291 - .../lib/screens/study/report/sections/uml.svg | 184 - docs/uml/app/lib/screens/study/report/uml.svg | 865 - .../app/lib/screens/study/report/util/uml.svg | 128 - .../screens/study/tasks/intervention/uml.svg | 72 - .../screens/study/tasks/observation/uml.svg | 72 - docs/uml/app/lib/screens/study/tasks/uml.svg | 168 - docs/uml/app/lib/screens/study/uml.svg | 2368 --- docs/uml/app/lib/screens/uml.svg | 2660 --- .../widgets/questionnaire/questions/uml.svg | 363 - .../uml/app/lib/widgets/questionnaire/uml.svg | 773 - docs/uml/app/lib/widgets/uml.svg | 1172 -- docs/uml/core/lib/src/env/uml.svg | 14 - docs/uml/core/lib/src/models/consent/uml.svg | 54 - docs/uml/core/lib/src/models/data/uml.svg | 52 - .../core/lib/src/models/eligibility/uml.svg | 12 - .../lib/src/models/expressions/types/uml.svg | 12 - .../core/lib/src/models/expressions/uml.svg | 12 - .../src/models/interventions/tasks/uml.svg | 12 - .../core/lib/src/models/interventions/uml.svg | 12 - .../lib/src/models/observations/tasks/uml.svg | 12 - .../core/lib/src/models/observations/uml.svg | 12 - .../models/questionnaire/questions/uml.svg | 12 - .../core/lib/src/models/questionnaire/uml.svg | 12 - .../lib/src/models/report/sections/uml.svg | 200 - docs/uml/core/lib/src/models/report/uml.svg | 306 - docs/uml/core/lib/src/models/results/uml.svg | 12 - .../src/models/study_results/results/uml.svg | 123 - .../core/lib/src/models/study_results/uml.svg | 156 - .../lib/src/models/study_schedule/uml.svg | 12 - docs/uml/core/lib/src/models/tables/uml.svg | 12 - docs/uml/core/lib/src/models/tasks/uml.svg | 12 - docs/uml/core/lib/src/models/uml.svg | 12 - docs/uml/core/lib/src/uml.svg | 12 - docs/uml/core/lib/src/util/multimodal/uml.svg | 50 - docs/uml/core/lib/src/util/uml.svg | 12 - docs/uml/core/lib/uml.svg | 12 - .../lib/common_views/pages/uml.svg | 84 - .../lib/common_views/sidesheet/uml.svg | 203 - docs/uml/designer_v2/lib/common_views/uml.svg | 3242 --- docs/uml/designer_v2/lib/domain/uml.svg | 229 - .../designer_v2/lib/features/account/uml.svg | 52 - .../designer_v2/lib/features/analyze/uml.svg | 92 - .../uml/designer_v2/lib/features/auth/uml.svg | 650 - .../lib/features/dashboard/uml.svg | 648 - .../lib/features/design/enrollment/uml.svg | 820 - .../lib/features/design/info/uml.svg | 319 - .../lib/features/design/interventions/uml.svg | 1004 - .../design/measurements/survey/uml.svg | 398 - .../lib/features/design/measurements/uml.svg | 645 - .../design/reports/section/types/uml.svg | 446 - .../features/design/reports/section/uml.svg | 705 - .../lib/features/design/reports/uml.svg | 1170 -- .../questionnaire/question/types/uml.svg | 272 - .../features/design/shared/schedule/uml.svg | 236 - .../designer_v2/lib/features/forms/uml.svg | 937 - .../designer_v2/lib/features/monitor/uml.svg | 52 - .../designer_v2/lib/features/publish/uml.svg | 106 - .../designer_v2/lib/features/recruit/uml.svg | 498 - .../lib/features/study/settings/uml.svg | 185 - .../designer_v2/lib/features/study/uml.svg | 1411 -- docs/uml/designer_v2/lib/features/uml.svg | 8823 --------- .../lib/localization/platform_locale/uml.svg | 95 - docs/uml/designer_v2/lib/localization/uml.svg | 234 - docs/uml/designer_v2/lib/repositories/uml.svg | 1725 -- docs/uml/designer_v2/lib/routing/uml.svg | 680 - docs/uml/designer_v2/lib/services/uml.svg | 518 - docs/uml/designer_v2/lib/uml.svg | 16246 ---------------- docs/uml/designer_v2/lib/utils/uml.svg | 1035 - docs/uml/flutter_common/lib/src/uml.svg | 299 - docs/uml/flutter_common/lib/src/utils/uml.svg | 299 - docs/uml/flutter_common/lib/uml.svg | 299 - 149 files changed, 63041 deletions(-) delete mode 100644 .github/docker/db-docs.yml delete mode 100755 .github/scripts/generate-uml.bash delete mode 100644 .github/workflows/db-docs.yml delete mode 100644 .github/workflows/uml-docs.yml delete mode 100644 docs/README.md delete mode 100644 docs/database/README.md delete mode 100644 docs/database/auth.audit_log_entries.md delete mode 100644 docs/database/auth.audit_log_entries.svg delete mode 100644 docs/database/auth.instances.md delete mode 100644 docs/database/auth.instances.svg delete mode 100644 docs/database/auth.refresh_tokens.md delete mode 100644 docs/database/auth.refresh_tokens.svg delete mode 100644 docs/database/auth.schema_migrations.md delete mode 100644 docs/database/auth.schema_migrations.svg delete mode 100644 docs/database/auth.users.md delete mode 100644 docs/database/auth.users.svg delete mode 100644 docs/database/extensions.pg_stat_statements.md delete mode 100644 docs/database/extensions.pg_stat_statements.svg delete mode 100644 docs/database/extensions.pg_stat_statements_info.md delete mode 100644 docs/database/extensions.pg_stat_statements_info.svg delete mode 100644 docs/database/net._http_response.md delete mode 100644 docs/database/net._http_response.svg delete mode 100644 docs/database/net.http_request_queue.md delete mode 100644 docs/database/net.http_request_queue.svg delete mode 100644 docs/database/pgsodium.decrypted_key.md delete mode 100644 docs/database/pgsodium.decrypted_key.svg delete mode 100644 docs/database/pgsodium.key.md delete mode 100644 docs/database/pgsodium.key.svg delete mode 100644 docs/database/pgsodium.mask_columns.md delete mode 100644 docs/database/pgsodium.mask_columns.svg delete mode 100644 docs/database/pgsodium.masking_rule.md delete mode 100644 docs/database/pgsodium.masking_rule.svg delete mode 100644 docs/database/pgsodium.valid_key.md delete mode 100644 docs/database/pgsodium.valid_key.svg delete mode 100644 docs/database/public.app_config.md delete mode 100644 docs/database/public.app_config.svg delete mode 100644 docs/database/public.repo.md delete mode 100644 docs/database/public.repo.svg delete mode 100644 docs/database/public.study.md delete mode 100644 docs/database/public.study.svg delete mode 100644 docs/database/public.study_invite.md delete mode 100644 docs/database/public.study_invite.svg delete mode 100644 docs/database/public.study_progress_export.md delete mode 100644 docs/database/public.study_progress_export.svg delete mode 100644 docs/database/public.study_subject.md delete mode 100644 docs/database/public.study_subject.svg delete mode 100644 docs/database/public.study_tag.md delete mode 100644 docs/database/public.study_tag.svg delete mode 100644 docs/database/public.subject_progress.md delete mode 100644 docs/database/public.subject_progress.svg delete mode 100644 docs/database/public.tag.md delete mode 100644 docs/database/public.tag.svg delete mode 100644 docs/database/public.user.md delete mode 100644 docs/database/public.user.svg delete mode 100644 docs/database/schema.json delete mode 100644 docs/database/schema.svg delete mode 100644 docs/database/storage.buckets.md delete mode 100644 docs/database/storage.buckets.svg delete mode 100644 docs/database/storage.migrations.md delete mode 100644 docs/database/storage.migrations.svg delete mode 100644 docs/database/storage.objects.md delete mode 100644 docs/database/storage.objects.svg delete mode 100644 docs/database/supabase_functions.hooks.md delete mode 100644 docs/database/supabase_functions.hooks.svg delete mode 100644 docs/database/supabase_functions.migrations.md delete mode 100644 docs/database/supabase_functions.migrations.svg delete mode 100644 docs/database/vault.decrypted_secrets.md delete mode 100644 docs/database/vault.decrypted_secrets.svg delete mode 100644 docs/database/vault.secrets.md delete mode 100644 docs/database/vault.secrets.svg delete mode 100644 docs/uml/app/lib/models/uml.svg delete mode 100644 docs/uml/app/lib/screens/app_onboarding/uml.svg delete mode 100644 docs/uml/app/lib/screens/study/dashboard/contact_tab/uml.svg delete mode 100644 docs/uml/app/lib/screens/study/dashboard/task_overview_tab/uml.svg delete mode 100644 docs/uml/app/lib/screens/study/dashboard/uml.svg delete mode 100644 docs/uml/app/lib/screens/study/multimodal/uml.svg delete mode 100644 docs/uml/app/lib/screens/study/onboarding/uml.svg delete mode 100644 docs/uml/app/lib/screens/study/report/performance/uml.svg delete mode 100644 docs/uml/app/lib/screens/study/report/sections/uml.svg delete mode 100644 docs/uml/app/lib/screens/study/report/uml.svg delete mode 100644 docs/uml/app/lib/screens/study/report/util/uml.svg delete mode 100644 docs/uml/app/lib/screens/study/tasks/intervention/uml.svg delete mode 100644 docs/uml/app/lib/screens/study/tasks/observation/uml.svg delete mode 100644 docs/uml/app/lib/screens/study/tasks/uml.svg delete mode 100644 docs/uml/app/lib/screens/study/uml.svg delete mode 100644 docs/uml/app/lib/screens/uml.svg delete mode 100644 docs/uml/app/lib/widgets/questionnaire/questions/uml.svg delete mode 100644 docs/uml/app/lib/widgets/questionnaire/uml.svg delete mode 100644 docs/uml/app/lib/widgets/uml.svg delete mode 100644 docs/uml/core/lib/src/env/uml.svg delete mode 100644 docs/uml/core/lib/src/models/consent/uml.svg delete mode 100644 docs/uml/core/lib/src/models/data/uml.svg delete mode 100644 docs/uml/core/lib/src/models/eligibility/uml.svg delete mode 100644 docs/uml/core/lib/src/models/expressions/types/uml.svg delete mode 100644 docs/uml/core/lib/src/models/expressions/uml.svg delete mode 100644 docs/uml/core/lib/src/models/interventions/tasks/uml.svg delete mode 100644 docs/uml/core/lib/src/models/interventions/uml.svg delete mode 100644 docs/uml/core/lib/src/models/observations/tasks/uml.svg delete mode 100644 docs/uml/core/lib/src/models/observations/uml.svg delete mode 100644 docs/uml/core/lib/src/models/questionnaire/questions/uml.svg delete mode 100644 docs/uml/core/lib/src/models/questionnaire/uml.svg delete mode 100644 docs/uml/core/lib/src/models/report/sections/uml.svg delete mode 100644 docs/uml/core/lib/src/models/report/uml.svg delete mode 100644 docs/uml/core/lib/src/models/results/uml.svg delete mode 100644 docs/uml/core/lib/src/models/study_results/results/uml.svg delete mode 100644 docs/uml/core/lib/src/models/study_results/uml.svg delete mode 100644 docs/uml/core/lib/src/models/study_schedule/uml.svg delete mode 100644 docs/uml/core/lib/src/models/tables/uml.svg delete mode 100644 docs/uml/core/lib/src/models/tasks/uml.svg delete mode 100644 docs/uml/core/lib/src/models/uml.svg delete mode 100644 docs/uml/core/lib/src/uml.svg delete mode 100644 docs/uml/core/lib/src/util/multimodal/uml.svg delete mode 100644 docs/uml/core/lib/src/util/uml.svg delete mode 100644 docs/uml/core/lib/uml.svg delete mode 100644 docs/uml/designer_v2/lib/common_views/pages/uml.svg delete mode 100644 docs/uml/designer_v2/lib/common_views/sidesheet/uml.svg delete mode 100644 docs/uml/designer_v2/lib/common_views/uml.svg delete mode 100644 docs/uml/designer_v2/lib/domain/uml.svg delete mode 100644 docs/uml/designer_v2/lib/features/account/uml.svg delete mode 100644 docs/uml/designer_v2/lib/features/analyze/uml.svg delete mode 100644 docs/uml/designer_v2/lib/features/auth/uml.svg delete mode 100644 docs/uml/designer_v2/lib/features/dashboard/uml.svg delete mode 100644 docs/uml/designer_v2/lib/features/design/enrollment/uml.svg delete mode 100644 docs/uml/designer_v2/lib/features/design/info/uml.svg delete mode 100644 docs/uml/designer_v2/lib/features/design/interventions/uml.svg delete mode 100644 docs/uml/designer_v2/lib/features/design/measurements/survey/uml.svg delete mode 100644 docs/uml/designer_v2/lib/features/design/measurements/uml.svg delete mode 100644 docs/uml/designer_v2/lib/features/design/reports/section/types/uml.svg delete mode 100644 docs/uml/designer_v2/lib/features/design/reports/section/uml.svg delete mode 100644 docs/uml/designer_v2/lib/features/design/reports/uml.svg delete mode 100644 docs/uml/designer_v2/lib/features/design/shared/questionnaire/question/types/uml.svg delete mode 100644 docs/uml/designer_v2/lib/features/design/shared/schedule/uml.svg delete mode 100644 docs/uml/designer_v2/lib/features/forms/uml.svg delete mode 100644 docs/uml/designer_v2/lib/features/monitor/uml.svg delete mode 100644 docs/uml/designer_v2/lib/features/publish/uml.svg delete mode 100644 docs/uml/designer_v2/lib/features/recruit/uml.svg delete mode 100644 docs/uml/designer_v2/lib/features/study/settings/uml.svg delete mode 100644 docs/uml/designer_v2/lib/features/study/uml.svg delete mode 100644 docs/uml/designer_v2/lib/features/uml.svg delete mode 100644 docs/uml/designer_v2/lib/localization/platform_locale/uml.svg delete mode 100644 docs/uml/designer_v2/lib/localization/uml.svg delete mode 100644 docs/uml/designer_v2/lib/repositories/uml.svg delete mode 100644 docs/uml/designer_v2/lib/routing/uml.svg delete mode 100644 docs/uml/designer_v2/lib/services/uml.svg delete mode 100644 docs/uml/designer_v2/lib/uml.svg delete mode 100644 docs/uml/designer_v2/lib/utils/uml.svg delete mode 100644 docs/uml/flutter_common/lib/src/uml.svg delete mode 100644 docs/uml/flutter_common/lib/src/utils/uml.svg delete mode 100644 docs/uml/flutter_common/lib/uml.svg diff --git a/.github/docker/db-docs.yml b/.github/docker/db-docs.yml deleted file mode 100644 index 5603897a0..000000000 --- a/.github/docker/db-docs.yml +++ /dev/null @@ -1,17 +0,0 @@ -version: '3' -name: 'studyu' - -services: - autodocs: - image: ghcr.io/k1low/tbls - depends_on: - db: - condition: service_healthy - command: - - doc - - --force - - postgres://postgres:${POSTGRES_PASSWORD}@supabase-db:${POSTGRES_PORT}/${POSTGRES_DB}?sslmode=disable - - output - working_dir: /work - volumes: - - ${DB_DOCS_DEST}:/work/output diff --git a/.github/scripts/generate-uml.bash b/.github/scripts/generate-uml.bash deleted file mode 100755 index a760082c5..000000000 --- a/.github/scripts/generate-uml.bash +++ /dev/null @@ -1,69 +0,0 @@ -#!/bin/bash - -# repo root at ../.. from this file's directory -root="$(realpath "$(dirname "$(realpath "$0")")/../..")" - -docs_dir="$root/docs/uml" - -# find directories whose umls need updates ------------------------------------- -# regenerating all umls every time is too slow - -# find latest commit that updated uml diagrams (or use initial commit) -prev_update="$(git log -n 1 --pretty=format:%H -- "$docs_dir")" -[[ -z "$prev_update" ]] && prev_update="$(git rev-list --max-parents=0 HEAD)" - -# associative array, keys will be all directories whose uml has to be -# regenerated -declare -A dirty -# get all directories that have changed since prev_update -for changed in $(git diff --name-only "$prev_update" \ - | grep --extended-regexp '(flutter_common|core|designer_v2|app)/lib/.*\.dart' \ - | xargs dirname \ - | sort --unique \ -); do - # set changed dir as dirty for all parents until we reach lib - while grep --extended-regexp -q '[^/]*/lib' <<< "$changed"; do - dirty[$changed]=1 - changed="$(dirname "$changed")" - done -done - -# generate needed umls --------------------------------------------------------- - -# temporary file for uml data -tmpf=$(mktemp) - -# iterate keys of dirty -for d in "${!dirty[@]}"; do - out="$docs_dir/$d/uml.svg" - # remove old uml if it exists - rm -rf "$out" - # skip to next if directory doesn't exist (i.e. git diff showed it because - # it was deleted - test -d "$root/$d" || continue - - echo "Generating diagram for $d" - - # ensure destination dir extists - mkdir -p "$(dirname "$out")" - - # go to package dir, i.e. first path component - cd "$root/$(cut -d/ -f1 <<< "$d")" || exit - # uml generator gets confused with generated files so we have to remove - # them - find . -type f -name '*.g.dart' -exec rm {} \; - - # generate uml & svg - dart pub global run dcdg \ - --exclude=State --exclude=StatefulWidget --exclude=StatelessWidget \ - -b nomnoml \ - -s "$(cut -d/ -f2- <<< "$d")" \ - > "$tmpf" - npx --yes nomnoml "$tmpf" "$out" - - # get deleted generated files back from git - git checkout HEAD -- . -done - -# remove temporary file -rm "$tmpf" diff --git a/.github/workflows/db-docs.yml b/.github/workflows/db-docs.yml deleted file mode 100644 index f54e9f55b..000000000 --- a/.github/workflows/db-docs.yml +++ /dev/null @@ -1,41 +0,0 @@ -name: Generate database docs - -on: - push: - branches: - - '**' - - '!dev' - - '!main' - paths: - - 'database/**' - - 'docker/supabase/**' - -concurrency: - group: ${{ github.ref }}-db-docs - cancel-in-progress: true - -jobs: - generate-docs: - runs-on: ubuntu-latest - steps: - - name: Check out repo - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - name: Generate documentation - env: - POSTGRES_PORT: 5432 - POSTGRES_PASSWORD: your-super-secret-and-long-postgres-password - POSTGRES_DB: postgres - DB_DOCS_DEST: ${{ github.workspace }}/docs/database - run: | - docker network create studyu_network || true - docker compose -f docker/supabase/docker-compose-db.yml -f .github/docker/db-docs.yml up --abort-on-container-exit - - - name: Commit documentation - run: | - git config --global user.name "StudyU Documenter" - git config --global user.email "studyu-documenter" - git add --all - git commit -m 'docs: update database documentation' || true - git push diff --git a/.github/workflows/uml-docs.yml b/.github/workflows/uml-docs.yml deleted file mode 100644 index 5577b47ea..000000000 --- a/.github/workflows/uml-docs.yml +++ /dev/null @@ -1,43 +0,0 @@ -name: Generate UML docs - -on: - push: - branches: - - '**' - - '!dev' - - '!main' - paths: - - 'flutter_common/**/*.dart' - - 'core/**/*.dart' - - 'designer_v2/**/*.dart' - - '!designer_v2/integration_test/**' - - '!designer_v2/test_driver/**' - - 'app/**/*.dart' - workflow_dispatch: - -concurrency: - group: ${{ github.ref }}-uml-docs - cancel-in-progress: true - -jobs: - generate-docs: - runs-on: ubuntu-latest - steps: - - name: "Check out repo" - uses: actions/checkout@v4 - with: - fetch-depth: 0 - token: ${{ secrets.READY_TO_MERGE_TOKEN }} - - name: Init workspace - uses: ./.github/workflows/init-workspace - - name: "Install dcdg" - run: dart pub global activate dcdg - - name: "Generate documentation" - run: bash .github/scripts/generate-uml.bash - - name: "Commit documentation" - run: | - git config --global user.name "StudyU Documenter" - git config --global user.email "studyu-documenter" - git add docs/uml - git commit -m 'docs: update UML documentation' || true - git push diff --git a/docs/README.md b/docs/README.md deleted file mode 100644 index 030cc4870..000000000 --- a/docs/README.md +++ /dev/null @@ -1,28 +0,0 @@ -# StudyU documentation - -To get an overview of the project and learn how to get started, please refer to -our [contribution guide](../CONTRIBUTING.md). - -The contents of this directory serve as more detailed and specific -documentation. - -## Automatically generated documentation - -The StudyU repository has GitHub workflows that automatically generate and -update - -- Documentation of the database in [database/](database), generated by the - [`db-docs.yml`](../.github/workflows/db-docs.yml) workflow -- UML diagrams for all dart code in [uml/](uml), organized in directories - analogous to the file structure of the code, generated by the - [`uml-docs.yml`](../.github/workflows/uml-docs.yml) workflow - -These documentation updates are committed to your branch while you are working -on it, meaning you should pull and rebase where appropriate to keep a clean -commit history. - -**Important note** The documentation workflows are designed to do as little work -as necessary by detecting which parts of the documentation need to be updated. -Manually committing anything to the [database/](database) or [uml/](uml) -directories may break this detection. If you have to make any changes there, -please make sure you understand how the respective workflow functions first. diff --git a/docs/database/README.md b/docs/database/README.md deleted file mode 100644 index 6d3d3bbf4..000000000 --- a/docs/database/README.md +++ /dev/null @@ -1,295 +0,0 @@ -# postgres - -## Tables - -| Name | Columns | Comment | Type | -| ---- | ------- | ------- | ---- | -| [auth.users](auth.users.md) | 21 | Auth: Stores user login data within a secure schema. | BASE TABLE | -| [auth.refresh_tokens](auth.refresh_tokens.md) | 7 | Auth: Store of tokens used to refresh JWT tokens once they expire. | BASE TABLE | -| [auth.instances](auth.instances.md) | 5 | Auth: Manages users across multiple sites. | BASE TABLE | -| [auth.audit_log_entries](auth.audit_log_entries.md) | 4 | Auth: Audit trail for user actions. | BASE TABLE | -| [auth.schema_migrations](auth.schema_migrations.md) | 1 | Auth: Manages updates to the auth system. | BASE TABLE | -| [storage.buckets](storage.buckets.md) | 5 | | BASE TABLE | -| [storage.objects](storage.objects.md) | 8 | | BASE TABLE | -| [storage.migrations](storage.migrations.md) | 4 | | BASE TABLE | -| [net.http_request_queue](net.http_request_queue.md) | 6 | | BASE TABLE | -| [net._http_response](net._http_response.md) | 8 | | BASE TABLE | -| [supabase_functions.migrations](supabase_functions.migrations.md) | 2 | | BASE TABLE | -| [supabase_functions.hooks](supabase_functions.hooks.md) | 5 | Supabase Functions Hooks: Audit trail for triggered hooks. | BASE TABLE | -| [public.study](public.study.md) | 21 | | BASE TABLE | -| [public.study_subject](public.study_subject.md) | 7 | | BASE TABLE | -| [public.app_config](public.app_config.md) | 9 | Stores app config for different envs | BASE TABLE | -| [public.repo](public.repo.md) | 4 | Git repo where the generated project is stored | BASE TABLE | -| [public.study_invite](public.study_invite.md) | 3 | Study invite codes | BASE TABLE | -| [public.subject_progress](public.subject_progress.md) | 6 | | BASE TABLE | -| [public.study_progress_export](public.study_progress_export.md) | 10 | | VIEW | -| [public.user](public.user.md) | 3 | Users get automatically added, when a new user is created in auth.users | BASE TABLE | -| [extensions.pg_stat_statements_info](extensions.pg_stat_statements_info.md) | 2 | | VIEW | -| [extensions.pg_stat_statements](extensions.pg_stat_statements.md) | 43 | | VIEW | -| [pgsodium.key](pgsodium.key.md) | 14 | This table holds metadata for derived keys given a key_id and key_context. The raw key is never stored. | BASE TABLE | -| [pgsodium.valid_key](pgsodium.valid_key.md) | 9 | | VIEW | -| [pgsodium.masking_rule](pgsodium.masking_rule.md) | 14 | | VIEW | -| [pgsodium.mask_columns](pgsodium.mask_columns.md) | 7 | | VIEW | -| [pgsodium.decrypted_key](pgsodium.decrypted_key.md) | 14 | | VIEW | -| [vault.secrets](vault.secrets.md) | 8 | Table with encrypted `secret` column for storing sensitive information on disk. | BASE TABLE | -| [vault.decrypted_secrets](vault.decrypted_secrets.md) | 9 | | VIEW | - -## Stored procedures and functions - -| Name | ReturnType | Arguments | Type | -| ---- | ------- | ------- | ---- | -| extensions.uuid_generate_v4 | uuid | | FUNCTION | -| pgbouncer.get_auth | record | p_usename text | FUNCTION | -| storage.filename | text | name text | FUNCTION | -| extensions.digest | bytea | text, text | FUNCTION | -| storage.foldername | _text | name text | FUNCTION | -| extensions.decrypt_iv | bytea | bytea, bytea, bytea, text | FUNCTION | -| storage.extension | text | name text | FUNCTION | -| extensions.gen_random_bytes | bytea | integer | FUNCTION | -| extensions.encrypt | bytea | bytea, bytea, text | FUNCTION | -| extensions.decrypt | bytea | bytea, bytea, text | FUNCTION | -| extensions.encrypt_iv | bytea | bytea, bytea, bytea, text | FUNCTION | -| extensions.gen_random_uuid | uuid | | FUNCTION | -| extensions.uuid_nil | uuid | | FUNCTION | -| extensions.uuid_ns_dns | uuid | | FUNCTION | -| storage.search | record | prefix text, bucketname text, limits integer DEFAULT 100, levels integer DEFAULT 1, offsets integer DEFAULT 0 | FUNCTION | -| extensions.uuid_ns_url | uuid | | FUNCTION | -| extensions.uuid_ns_oid | uuid | | FUNCTION | -| auth.uid | uuid | | FUNCTION | -| auth.email | text | | FUNCTION | -| extensions.uuid_generate_v3 | uuid | namespace uuid, name text | FUNCTION | -| extensions.uuid_ns_x500 | uuid | | FUNCTION | -| extensions.uuid_generate_v1 | uuid | | FUNCTION | -| extensions.uuid_generate_v1mc | uuid | | FUNCTION | -| net.check_worker_is_up | void | | FUNCTION | -| net._await_response | bool | request_id bigint | FUNCTION | -| net._urlencode_string | text | string character varying | FUNCTION | -| net._encode_url_with_params_array | text | url text, params_array text[] | FUNCTION | -| graphql.increment_schema_version | event_trigger | | FUNCTION | -| graphql.get_schema_version | int4 | | FUNCTION | -| graphql.resolve | jsonb | query text, variables jsonb DEFAULT '{}'::jsonb, "operationName" text DEFAULT NULL::text, extensions jsonb DEFAULT NULL::jsonb | FUNCTION | -| extensions.pgp_pub_decrypt_bytea | bytea | bytea, bytea, text | FUNCTION | -| extensions.pgp_pub_decrypt | text | bytea, bytea, text, text | FUNCTION | -| extensions.pgp_pub_decrypt_bytea | bytea | bytea, bytea, text, text | FUNCTION | -| net.http_delete | int8 | url text, params jsonb DEFAULT '{}'::jsonb, headers jsonb DEFAULT '{}'::jsonb, timeout_milliseconds integer DEFAULT 2000 | FUNCTION | -| net._http_collect_response | http_response_result | request_id bigint, async boolean DEFAULT true | FUNCTION | -| net.http_collect_response | http_response_result | request_id bigint, async boolean DEFAULT true | FUNCTION | -| supabase_functions.http_request | trigger | | FUNCTION | -| public.active_subject_count | int4 | study study | FUNCTION | -| public.can_edit | bool | user_id uuid, study_param study | FUNCTION | -| public.get_study_from_invite | record | invite_code text | FUNCTION | -| public.get_study_record_from_invite | study | invite_code text | FUNCTION | -| public.handle_new_user | trigger | | FUNCTION | -| public.has_study_ended | bool | psubject_id uuid | FUNCTION | -| public.has_results_public | bool | psubject_id uuid | FUNCTION | -| public.has_study_ended | bool | subject study_subject | FUNCTION | -| public.is_active_subject | bool | psubject_id uuid, days_active integer | FUNCTION | -| public.is_study_subject_of | bool | _user_id uuid, _study_id uuid | FUNCTION | -| public.last_completed_task | date | psubject_id uuid | FUNCTION | -| public.study_active_days | _int4 | study_param study | FUNCTION | -| public.study_ended_count | int4 | study study | FUNCTION | -| public.study_length | int4 | study_param study | FUNCTION | -| public.study_missed_days | _int4 | study_param study | FUNCTION | -| net.http_get | int8 | url text, params jsonb DEFAULT '{}'::jsonb, headers jsonb DEFAULT '{}'::jsonb, timeout_milliseconds integer DEFAULT 2000 | FUNCTION | -| extensions.pgp_sym_decrypt_bytea | bytea | bytea, text, text | FUNCTION | -| public.study_participant_count | int4 | study study | FUNCTION | -| public.study_total_tasks | int4 | subject study_subject | FUNCTION | -| public.subject_current_day | int4 | subject study_subject | FUNCTION | -| public.subject_total_active_days | int4 | subject study_subject | FUNCTION | -| public.user_email | text | user_id uuid | FUNCTION | -| extensions.pgp_pub_encrypt | bytea | text, bytea | FUNCTION | -| extensions.pgp_pub_encrypt_bytea | bytea | bytea, bytea | FUNCTION | -| extensions.pgp_pub_encrypt | bytea | text, bytea, text | FUNCTION | -| extensions.pgp_pub_encrypt_bytea | bytea | bytea, bytea, text | FUNCTION | -| extensions.pgp_pub_decrypt | text | bytea, bytea | FUNCTION | -| extensions.pgp_pub_decrypt_bytea | bytea | bytea, bytea | FUNCTION | -| extensions.pgp_pub_decrypt | text | bytea, bytea, text | FUNCTION | -| extensions.gen_salt | text | text, integer | FUNCTION | -| auth.role | text | | FUNCTION | -| extensions.uuid_generate_v5 | uuid | namespace uuid, name text | FUNCTION | -| extensions.digest | bytea | bytea, text | FUNCTION | -| extensions.hmac | bytea | text, text, text | FUNCTION | -| extensions.hmac | bytea | bytea, bytea, text | FUNCTION | -| extensions.crypt | text | text, text | FUNCTION | -| extensions.gen_salt | text | text | FUNCTION | -| extensions.sign | text | payload json, secret text, algorithm text DEFAULT 'HS256'::text | FUNCTION | -| extensions.pgrst_ddl_watch | event_trigger | | FUNCTION | -| graphql._internal_resolve | jsonb | query text, variables jsonb DEFAULT '{}'::jsonb, "operationName" text DEFAULT NULL::text, extensions jsonb DEFAULT NULL::jsonb | FUNCTION | -| graphql.exception | text | message text | FUNCTION | -| graphql.comment_directive | jsonb | comment_ text | FUNCTION | -| extensions.pgrst_drop_watch | event_trigger | | FUNCTION | -| graphql_public.graphql | jsonb | "operationName" text DEFAULT NULL::text, query text DEFAULT NULL::text, variables jsonb DEFAULT NULL::jsonb, extensions jsonb DEFAULT NULL::jsonb | FUNCTION | -| extensions.grant_pg_graphql_access | event_trigger | | FUNCTION | -| net.http_post | int8 | url text, body jsonb DEFAULT '{}'::jsonb, params jsonb DEFAULT '{}'::jsonb, headers jsonb DEFAULT '{"Content-Type": "application/json"}'::jsonb, timeout_milliseconds integer DEFAULT 2000 | FUNCTION | -| pgsodium.crypto_pwhash_saltgen | bytea | | FUNCTION | -| pgsodium.crypto_kx_client_session_keys | crypto_kx_session | client_pk bytea, client_sk bytea, server_pk bytea | FUNCTION | -| pgsodium.crypto_kx_server_session_keys | crypto_kx_session | server_pk bytea, server_sk bytea, client_pk bytea | FUNCTION | -| pgsodium.crypto_auth_hmacsha512_keygen | bytea | | FUNCTION | -| pgsodium.crypto_box_new_seed | bytea | | FUNCTION | -| pgsodium.crypto_sign_new_seed | bytea | | FUNCTION | -| pgsodium.derive_key | bytea | key_id bigint, key_len integer DEFAULT 32, context bytea DEFAULT '\x7067736f6469756d'::bytea | FUNCTION | -| pgsodium.pgsodium_derive | bytea | key_id bigint, key_len integer DEFAULT 32, context bytea DEFAULT decode('pgsodium'::text, 'escape'::text) | FUNCTION | -| pgsodium.randombytes_new_seed | bytea | | FUNCTION | -| pgsodium.crypto_secretbox_keygen | bytea | | FUNCTION | -| pgsodium.crypto_auth_keygen | bytea | | FUNCTION | -| pgsodium.crypto_box_noncegen | bytea | | FUNCTION | -| pgsodium.crypto_aead_ietf_keygen | bytea | | FUNCTION | -| pgsodium.crypto_shorthash_keygen | bytea | | FUNCTION | -| pgsodium.crypto_generichash_keygen | bytea | | FUNCTION | -| pgsodium.crypto_kdf_keygen | bytea | | FUNCTION | -| pgsodium.crypto_kx_new_keypair | crypto_kx_keypair | | FUNCTION | -| pgsodium.crypto_kx_new_seed | bytea | | FUNCTION | -| pgsodium.crypto_kx_seed_new_keypair | crypto_kx_keypair | seed bytea | FUNCTION | -| pgsodium.crypto_auth_hmacsha256_keygen | bytea | | FUNCTION | -| pgsodium.crypto_box_new_keypair | crypto_box_keypair | | FUNCTION | -| pgsodium.crypto_sign_new_keypair | crypto_sign_keypair | | FUNCTION | -| pgsodium.crypto_sign_init | bytea | | FUNCTION | -| pgsodium.crypto_sign_update | bytea | state bytea, message bytea | FUNCTION | -| pgsodium.randombytes_random | int4 | | FUNCTION | -| pgsodium.crypto_secretbox_noncegen | bytea | | FUNCTION | -| pgsodium.crypto_aead_ietf_noncegen | bytea | | FUNCTION | -| pgsodium.crypto_secretstream_keygen | bytea | | FUNCTION | -| pgsodium.crypto_stream_xchacha20_keygen | bytea | | FUNCTION | -| pgsodium.crypto_stream_xchacha20_noncegen | bytea | | FUNCTION | -| pgsodium.crypto_cmp | bool | text, text | FUNCTION | -| pgsodium.crypto_signcrypt_new_keypair | crypto_signcrypt_keypair | | FUNCTION | -| pgsodium.crypto_aead_det_encrypt | bytea | message bytea, additional bytea, key bytea, nonce bytea DEFAULT NULL::bytea | FUNCTION | -| pgsodium.crypto_aead_det_decrypt | bytea | ciphertext bytea, additional bytea, key bytea, nonce bytea DEFAULT NULL::bytea | FUNCTION | -| pgsodium.crypto_aead_det_encrypt | bytea | message bytea, additional bytea, key_id bigint, context bytea DEFAULT '\x7067736f6469756d'::bytea, nonce bytea DEFAULT NULL::bytea | FUNCTION | -| pgsodium.crypto_aead_det_decrypt | bytea | message bytea, additional bytea, key_id bigint, context bytea DEFAULT '\x7067736f6469756d'::bytea, nonce bytea DEFAULT NULL::bytea | FUNCTION | -| pgsodium.version | text | | FUNCTION | -| pgsodium.crypto_aead_det_noncegen | bytea | | FUNCTION | -| pgsodium.has_mask | bool | role regrole, source_name text | FUNCTION | -| pgsodium.mask_columns | record | source_relid oid | FUNCTION | -| pgsodium.crypto_sign_final_verify | bool | state bytea, signature bytea, key bytea | FUNCTION | -| pgsodium.create_mask_view | void | relid oid, debug boolean DEFAULT false | FUNCTION | -| pgsodium.create_key | valid_key | key_type pgsodium.key_type DEFAULT 'aead-det'::pgsodium.key_type, name text DEFAULT NULL::text, raw_key bytea DEFAULT NULL::bytea, raw_key_nonce bytea DEFAULT NULL::bytea, parent_key uuid DEFAULT NULL::uuid, key_context bytea DEFAULT '\x7067736f6469756d'::bytea, expires timestamp with time zone DEFAULT NULL::timestamp with time zone, associated_data text DEFAULT ''::text | FUNCTION | -| pgsodium.get_key_by_name | valid_key | text | FUNCTION | -| pgsodium.quote_assoc | text | text, boolean DEFAULT false | FUNCTION | -| pgsodium.crypto_sign_open | bytea | signed_message bytea, key bytea | FUNCTION | -| pgsodium.crypto_kdf_derive_from_key | bytea | subkey_size integer, subkey_id bigint, context bytea, primary_key uuid | FUNCTION | -| pgsodium.get_named_keys | valid_key | filter text DEFAULT '%'::text | FUNCTION | -| pgsodium.crypto_aead_det_encrypt | bytea | message bytea, additional bytea, key_uuid uuid | FUNCTION | -| pgsodium.crypto_aead_det_decrypt | bytea | message bytea, additional bytea, key_uuid uuid | FUNCTION | -| pgsodium.crypto_aead_ietf_encrypt | bytea | message bytea, additional bytea, nonce bytea, key_id bigint, context bytea DEFAULT '\x7067736f6469756d'::bytea | FUNCTION | -| pgsodium.get_key_by_id | valid_key | uuid | FUNCTION | -| pgsodium.enable_security_label_trigger | void | | FUNCTION | -| pgsodium.disable_security_label_trigger | void | | FUNCTION | -| pgsodium.update_mask | void | target oid, debug boolean DEFAULT false | FUNCTION | -| pgsodium.crypto_sign_update_agg1 | bytea | state bytea, message bytea | FUNCTION | -| pgsodium.crypto_sign_update_agg2 | bytea | cur_state bytea, initial_state bytea, message bytea | FUNCTION | -| pgsodium.crypto_sign_update_agg | bytea | message bytea | a | -| pgsodium.crypto_sign_update_agg | bytea | state bytea, message bytea | a | -| pgsodium.encrypted_columns | text | relid oid | FUNCTION | -| pgsodium.decrypted_columns | text | relid oid | FUNCTION | -| pgsodium.crypto_aead_ietf_encrypt | bytea | message bytea, additional bytea, nonce bytea, key bytea | FUNCTION | -| pgsodium.crypto_aead_ietf_encrypt | bytea | message bytea, additional bytea, nonce bytea, key_uuid uuid | FUNCTION | -| pgsodium.crypto_aead_ietf_decrypt | bytea | message bytea, additional bytea, nonce bytea, key bytea | FUNCTION | -| pgsodium.crypto_aead_ietf_decrypt | bytea | message bytea, additional bytea, nonce bytea, key_id bigint, context bytea DEFAULT '\x7067736f6469756d'::bytea | FUNCTION | -| pgsodium.crypto_aead_ietf_decrypt | bytea | message bytea, additional bytea, nonce bytea, key_uuid uuid | FUNCTION | -| pgsodium.crypto_auth | bytea | message bytea, key bytea | FUNCTION | -| pgsodium.crypto_auth | bytea | message bytea, key_id bigint, context bytea DEFAULT '\x7067736f6469756d'::bytea | FUNCTION | -| pgsodium.crypto_auth | bytea | message bytea, key_uuid uuid | FUNCTION | -| pgsodium.crypto_auth_verify | bool | mac bytea, message bytea, key bytea | FUNCTION | -| pgsodium.crypto_auth_verify | bool | mac bytea, message bytea, key_id bigint, context bytea DEFAULT '\x7067736f6469756d'::bytea | FUNCTION | -| pgsodium.crypto_auth_verify | bool | mac bytea, message bytea, key_uuid uuid | FUNCTION | -| pgsodium.crypto_box_seed_new_keypair | crypto_box_keypair | seed bytea | FUNCTION | -| pgsodium.crypto_box | bytea | message bytea, nonce bytea, public bytea, secret bytea | FUNCTION | -| pgsodium.crypto_box_open | bytea | ciphertext bytea, nonce bytea, public bytea, secret bytea | FUNCTION | -| pgsodium.crypto_box_seal | bytea | message bytea, public_key bytea | FUNCTION | -| pgsodium.crypto_box_seal_open | bytea | ciphertext bytea, public_key bytea, secret_key bytea | FUNCTION | -| pgsodium.crypto_generichash | bytea | message bytea, key bigint, context bytea DEFAULT '\x7067736f6469756d'::bytea | FUNCTION | -| pgsodium.crypto_generichash | bytea | message bytea, key bytea DEFAULT NULL::bytea | FUNCTION | -| pgsodium.crypto_generichash | bytea | message bytea, key_uuid uuid | FUNCTION | -| pgsodium.crypto_shorthash | bytea | message bytea, key bigint, context bytea DEFAULT '\x7067736f6469756d'::bytea | FUNCTION | -| pgsodium.crypto_shorthash | bytea | message bytea, key bytea | FUNCTION | -| pgsodium.crypto_shorthash | bytea | message bytea, key_uuid uuid | FUNCTION | -| pgsodium.sodium_bin2base64 | text | bin bytea | FUNCTION | -| pgsodium.sodium_base642bin | bytea | base64 text | FUNCTION | -| pgsodium.crypto_auth_hmacsha512 | bytea | message bytea, secret bytea | FUNCTION | -| pgsodium.crypto_auth_hmacsha512 | bytea | message bytea, key_id bigint, context bytea DEFAULT '\x7067736f6469756d'::bytea | FUNCTION | -| pgsodium.crypto_auth_hmacsha512 | bytea | message bytea, key_uuid uuid | FUNCTION | -| pgsodium.crypto_auth_hmacsha512_verify | bool | hash bytea, message bytea, secret bytea | FUNCTION | -| pgsodium.crypto_auth_hmacsha512_verify | bool | hash bytea, message bytea, key_id bigint, context bytea DEFAULT '\x7067736f6469756d'::bytea | FUNCTION | -| pgsodium.crypto_auth_hmacsha512_verify | bool | signature bytea, message bytea, key_uuid uuid | FUNCTION | -| pgsodium.crypto_auth_hmacsha256 | bytea | message bytea, secret bytea | FUNCTION | -| pgsodium.crypto_auth_hmacsha256 | bytea | message bytea, key_id bigint, context bytea DEFAULT '\x7067736f6469756d'::bytea | FUNCTION | -| pgsodium.crypto_auth_hmacsha256 | bytea | message bytea, key_uuid uuid | FUNCTION | -| pgsodium.crypto_auth_hmacsha256_verify | bool | hash bytea, message bytea, secret bytea | FUNCTION | -| pgsodium.crypto_sign_final_create | bytea | state bytea, key bytea | FUNCTION | -| pgsodium.crypto_auth_hmacsha256_verify | bool | hash bytea, message bytea, key_id bigint, context bytea DEFAULT '\x7067736f6469756d'::bytea | FUNCTION | -| pgsodium.crypto_auth_hmacsha256_verify | bool | signature bytea, message bytea, key_uuid uuid | FUNCTION | -| pgsodium.crypto_kdf_derive_from_key | bytea | subkey_size bigint, subkey_id bigint, context bytea, primary_key bytea | FUNCTION | -| pgsodium.crypto_pwhash | bytea | password bytea, salt bytea | FUNCTION | -| pgsodium.crypto_pwhash_str | bytea | password bytea | FUNCTION | -| pgsodium.crypto_pwhash_str_verify | bool | hashed_password bytea, password bytea | FUNCTION | -| pgsodium.randombytes_uniform | int4 | upper_bound integer | FUNCTION | -| pgsodium.randombytes_buf | bytea | size integer | FUNCTION | -| pgsodium.randombytes_buf_deterministic | bytea | size integer, seed bytea | FUNCTION | -| pgsodium.crypto_secretbox | bytea | message bytea, nonce bytea, key bytea | FUNCTION | -| pgsodium.crypto_secretbox | bytea | message bytea, nonce bytea, key_id bigint, context bytea DEFAULT '\x7067736f6469756d'::bytea | FUNCTION | -| pgsodium.crypto_secretbox | bytea | message bytea, nonce bytea, key_uuid uuid | FUNCTION | -| pgsodium.crypto_secretbox_open | bytea | ciphertext bytea, nonce bytea, key bytea | FUNCTION | -| pgsodium.crypto_secretbox_open | bytea | message bytea, nonce bytea, key_id bigint, context bytea DEFAULT '\x7067736f6469756d'::bytea | FUNCTION | -| pgsodium.crypto_secretbox_open | bytea | message bytea, nonce bytea, key_uuid uuid | FUNCTION | -| pgsodium.crypto_hash_sha256 | bytea | message bytea | FUNCTION | -| pgsodium.crypto_hash_sha512 | bytea | message bytea | FUNCTION | -| pgsodium.crypto_sign | bytea | message bytea, key bytea | FUNCTION | -| pgsodium.crypto_sign_detached | bytea | message bytea, key bytea | FUNCTION | -| pgsodium.crypto_sign_seed_new_keypair | crypto_sign_keypair | seed bytea | FUNCTION | -| pgsodium.crypto_sign_verify_detached | bool | sig bytea, message bytea, key bytea | FUNCTION | -| pgsodium.crypto_signcrypt_sign_after | bytea | state bytea, sender_sk bytea, ciphertext bytea | FUNCTION | -| pgsodium.crypto_signcrypt_sign_before | crypto_signcrypt_state_key | sender bytea, recipient bytea, sender_sk bytea, recipient_pk bytea, additional bytea | FUNCTION | -| pgsodium.crypto_signcrypt_verify_after | bool | state bytea, signature bytea, sender_pk bytea, ciphertext bytea | FUNCTION | -| pgsodium.crypto_signcrypt_verify_before | crypto_signcrypt_state_key | signature bytea, sender bytea, recipient bytea, additional bytea, sender_pk bytea, recipient_sk bytea | FUNCTION | -| pgsodium.crypto_signcrypt_verify_public | bool | signature bytea, sender bytea, recipient bytea, additional bytea, sender_pk bytea, ciphertext bytea | FUNCTION | -| pgsodium.crypto_stream_xchacha20 | bytea | bigint, bytea, bytea | FUNCTION | -| pgsodium.crypto_stream_xchacha20 | bytea | bigint, bytea, bigint, context bytea DEFAULT '\x7067736f6469756d'::bytea | FUNCTION | -| pgsodium.crypto_stream_xchacha20_xor | bytea | bytea, bytea, bytea | FUNCTION | -| pgsodium.crypto_stream_xchacha20_xor | bytea | bytea, bytea, bigint, context bytea DEFAULT '\x70676f736469756d'::bytea | FUNCTION | -| pgsodium.crypto_stream_xchacha20_xor_ic | bytea | bytea, bytea, bigint, bytea | FUNCTION | -| pgsodium.crypto_stream_xchacha20_xor_ic | bytea | bytea, bytea, bigint, bigint, context bytea DEFAULT '\x7067736f6469756d'::bytea | FUNCTION | -| pgsodium.encrypted_column | text | relid oid, m record | FUNCTION | -| pgsodium.update_masks | void | debug boolean DEFAULT false | FUNCTION | -| pgsodium.key_encrypt_secret_raw_key | trigger | | FUNCTION | -| pgsodium.mask_role | void | masked_role regrole, source_name text, view_name text | FUNCTION | -| pgsodium.create_mask_view | void | relid oid, subid integer, debug boolean DEFAULT false | FUNCTION | -| pgsodium.trg_mask_update | event_trigger | | FUNCTION | -| pgsodium.crypto_aead_det_decrypt | bytea | message bytea, additional bytea, key_uuid uuid, nonce bytea | FUNCTION | -| pgsodium.crypto_aead_det_encrypt | bytea | message bytea, additional bytea, key_uuid uuid, nonce bytea | FUNCTION | -| pgsodium.crypto_aead_det_keygen | bytea | | FUNCTION | -| vault.secrets_encrypt_secret_secret | trigger | | FUNCTION | -| vault.create_secret | uuid | new_secret text, new_name text DEFAULT NULL::text, new_description text DEFAULT ''::text, new_key_id uuid DEFAULT NULL::uuid | FUNCTION | -| vault.update_secret | void | secret_id uuid, new_secret text DEFAULT NULL::text, new_name text DEFAULT NULL::text, new_description text DEFAULT NULL::text, new_key_id uuid DEFAULT NULL::uuid | FUNCTION | -| extensions.pgp_key_id | text | bytea | FUNCTION | -| extensions.armor | text | bytea | FUNCTION | -| extensions.armor | text | bytea, text[], text[] | FUNCTION | -| extensions.dearmor | bytea | text | FUNCTION | -| extensions.pgp_armor_headers | record | text, OUT key text, OUT value text | FUNCTION | -| extensions.url_encode | text | data bytea | FUNCTION | -| extensions.url_decode | bytea | data text | FUNCTION | -| extensions.try_cast_double | float8 | inp text | FUNCTION | -| extensions.moddatetime | trigger | | FUNCTION | -| extensions.pgp_sym_encrypt | bytea | text, text | FUNCTION | -| extensions.pgp_sym_encrypt_bytea | bytea | bytea, text | FUNCTION | -| extensions.pgp_sym_encrypt | bytea | text, text, text | FUNCTION | -| extensions.pgp_sym_encrypt_bytea | bytea | bytea, text, text | FUNCTION | -| extensions.pgp_sym_decrypt | text | bytea, text | FUNCTION | -| extensions.pgp_sym_decrypt_bytea | bytea | bytea, text | FUNCTION | -| extensions.pgp_sym_decrypt | text | bytea, text, text | FUNCTION | -| extensions.algorithm_sign | text | signables text, secret text, algorithm text | FUNCTION | -| extensions.verify | record | token text, secret text, algorithm text DEFAULT 'HS256'::text | FUNCTION | -| extensions.grant_pg_cron_access | event_trigger | | FUNCTION | -| extensions.grant_pg_net_access | event_trigger | | FUNCTION | -| extensions.pg_stat_statements_reset | void | userid oid DEFAULT 0, dbid oid DEFAULT 0, queryid bigint DEFAULT 0 | FUNCTION | -| extensions.pg_stat_statements_info | record | OUT dealloc bigint, OUT stats_reset timestamp with time zone | FUNCTION | -| extensions.pg_stat_statements | record | showtext boolean, OUT userid oid, OUT dbid oid, OUT toplevel boolean, OUT queryid bigint, OUT query text, OUT plans bigint, OUT total_plan_time double precision, OUT min_plan_time double precision, OUT max_plan_time double precision, OUT mean_plan_time double precision, OUT stddev_plan_time double precision, OUT calls bigint, OUT total_exec_time double precision, OUT min_exec_time double precision, OUT max_exec_time double precision, OUT mean_exec_time double precision, OUT stddev_exec_time double precision, OUT rows bigint, OUT shared_blks_hit bigint, OUT shared_blks_read bigint, OUT shared_blks_dirtied bigint, OUT shared_blks_written bigint, OUT local_blks_hit bigint, OUT local_blks_read bigint, OUT local_blks_dirtied bigint, OUT local_blks_written bigint, OUT temp_blks_read bigint, OUT temp_blks_written bigint, OUT blk_read_time double precision, OUT blk_write_time double precision, OUT temp_blk_read_time double precision, OUT temp_blk_write_time double precision, OUT wal_records bigint, OUT wal_fpi bigint, OUT wal_bytes numeric, OUT jit_functions bigint, OUT jit_generation_time double precision, OUT jit_inlining_count bigint, OUT jit_inlining_time double precision, OUT jit_optimization_count bigint, OUT jit_optimization_time double precision, OUT jit_emission_count bigint, OUT jit_emission_time double precision | FUNCTION | -| extensions.set_graphql_placeholder | event_trigger | | FUNCTION | - -## Relations - -![er](schema.svg) - ---- - -> Generated by [tbls](https://github.com/k1LoW/tbls) diff --git a/docs/database/auth.audit_log_entries.md b/docs/database/auth.audit_log_entries.md deleted file mode 100644 index 5753c1844..000000000 --- a/docs/database/auth.audit_log_entries.md +++ /dev/null @@ -1,35 +0,0 @@ -# auth.audit_log_entries - -## Description - -Auth: Audit trail for user actions. - -## Columns - -| Name | Type | Default | Nullable | Children | Parents | Comment | -| ---- | ---- | ------- | -------- | -------- | ------- | ------- | -| instance_id | uuid | | true | | | | -| id | uuid | | false | | | | -| payload | json | | true | | | | -| created_at | timestamp with time zone | | true | | | | - -## Constraints - -| Name | Type | Definition | -| ---- | ---- | ---------- | -| audit_log_entries_pkey | PRIMARY KEY | PRIMARY KEY (id) | - -## Indexes - -| Name | Definition | -| ---- | ---------- | -| audit_log_entries_pkey | CREATE UNIQUE INDEX audit_log_entries_pkey ON auth.audit_log_entries USING btree (id) | -| audit_logs_instance_id_idx | CREATE INDEX audit_logs_instance_id_idx ON auth.audit_log_entries USING btree (instance_id) | - -## Relations - -![er](auth.audit_log_entries.svg) - ---- - -> Generated by [tbls](https://github.com/k1LoW/tbls) diff --git a/docs/database/auth.audit_log_entries.svg b/docs/database/auth.audit_log_entries.svg deleted file mode 100644 index 64855f6ea..000000000 --- a/docs/database/auth.audit_log_entries.svg +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - -auth.audit_log_entries - - - -auth.audit_log_entries - - -auth.audit_log_entries -     -[BASE TABLE] - -instance_id -[uuid] - -id -[uuid] - -payload -[json] - -created_at -[timestamp with time zone] - - - - diff --git a/docs/database/auth.instances.md b/docs/database/auth.instances.md deleted file mode 100644 index fd7b006fc..000000000 --- a/docs/database/auth.instances.md +++ /dev/null @@ -1,35 +0,0 @@ -# auth.instances - -## Description - -Auth: Manages users across multiple sites. - -## Columns - -| Name | Type | Default | Nullable | Children | Parents | Comment | -| ---- | ---- | ------- | -------- | -------- | ------- | ------- | -| id | uuid | | false | | | | -| uuid | uuid | | true | | | | -| raw_base_config | text | | true | | | | -| created_at | timestamp with time zone | | true | | | | -| updated_at | timestamp with time zone | | true | | | | - -## Constraints - -| Name | Type | Definition | -| ---- | ---- | ---------- | -| instances_pkey | PRIMARY KEY | PRIMARY KEY (id) | - -## Indexes - -| Name | Definition | -| ---- | ---------- | -| instances_pkey | CREATE UNIQUE INDEX instances_pkey ON auth.instances USING btree (id) | - -## Relations - -![er](auth.instances.svg) - ---- - -> Generated by [tbls](https://github.com/k1LoW/tbls) diff --git a/docs/database/auth.instances.svg b/docs/database/auth.instances.svg deleted file mode 100644 index 1de2be15a..000000000 --- a/docs/database/auth.instances.svg +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - -auth.instances - - - -auth.instances - - -auth.instances -     -[BASE TABLE] - -id -[uuid] - -uuid -[uuid] - -raw_base_config -[text] - -created_at -[timestamp with time zone] - -updated_at -[timestamp with time zone] - - - - diff --git a/docs/database/auth.refresh_tokens.md b/docs/database/auth.refresh_tokens.md deleted file mode 100644 index db4b1aca0..000000000 --- a/docs/database/auth.refresh_tokens.md +++ /dev/null @@ -1,40 +0,0 @@ -# auth.refresh_tokens - -## Description - -Auth: Store of tokens used to refresh JWT tokens once they expire. - -## Columns - -| Name | Type | Default | Nullable | Children | Parents | Comment | -| ---- | ---- | ------- | -------- | -------- | ------- | ------- | -| instance_id | uuid | | true | | | | -| id | bigint | nextval('auth.refresh_tokens_id_seq'::regclass) | false | | | | -| token | varchar(255) | | true | | | | -| user_id | varchar(255) | | true | | | | -| revoked | boolean | | true | | | | -| created_at | timestamp with time zone | | true | | | | -| updated_at | timestamp with time zone | | true | | | | - -## Constraints - -| Name | Type | Definition | -| ---- | ---- | ---------- | -| refresh_tokens_pkey | PRIMARY KEY | PRIMARY KEY (id) | - -## Indexes - -| Name | Definition | -| ---- | ---------- | -| refresh_tokens_pkey | CREATE UNIQUE INDEX refresh_tokens_pkey ON auth.refresh_tokens USING btree (id) | -| refresh_tokens_instance_id_idx | CREATE INDEX refresh_tokens_instance_id_idx ON auth.refresh_tokens USING btree (instance_id) | -| refresh_tokens_instance_id_user_id_idx | CREATE INDEX refresh_tokens_instance_id_user_id_idx ON auth.refresh_tokens USING btree (instance_id, user_id) | -| refresh_tokens_token_idx | CREATE INDEX refresh_tokens_token_idx ON auth.refresh_tokens USING btree (token) | - -## Relations - -![er](auth.refresh_tokens.svg) - ---- - -> Generated by [tbls](https://github.com/k1LoW/tbls) diff --git a/docs/database/auth.refresh_tokens.svg b/docs/database/auth.refresh_tokens.svg deleted file mode 100644 index a9e4582f5..000000000 --- a/docs/database/auth.refresh_tokens.svg +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - -auth.refresh_tokens - - - -auth.refresh_tokens - - -auth.refresh_tokens -     -[BASE TABLE] - -instance_id -[uuid] - -id -[bigint] - -token -[varchar(255)] - -user_id -[varchar(255)] - -revoked -[boolean] - -created_at -[timestamp with time zone] - -updated_at -[timestamp with time zone] - - - - diff --git a/docs/database/auth.schema_migrations.md b/docs/database/auth.schema_migrations.md deleted file mode 100644 index d765593a2..000000000 --- a/docs/database/auth.schema_migrations.md +++ /dev/null @@ -1,31 +0,0 @@ -# auth.schema_migrations - -## Description - -Auth: Manages updates to the auth system. - -## Columns - -| Name | Type | Default | Nullable | Children | Parents | Comment | -| ---- | ---- | ------- | -------- | -------- | ------- | ------- | -| version | varchar(255) | | false | | | | - -## Constraints - -| Name | Type | Definition | -| ---- | ---- | ---------- | -| schema_migrations_pkey | PRIMARY KEY | PRIMARY KEY (version) | - -## Indexes - -| Name | Definition | -| ---- | ---------- | -| schema_migrations_pkey | CREATE UNIQUE INDEX schema_migrations_pkey ON auth.schema_migrations USING btree (version) | - -## Relations - -![er](auth.schema_migrations.svg) - ---- - -> Generated by [tbls](https://github.com/k1LoW/tbls) diff --git a/docs/database/auth.schema_migrations.svg b/docs/database/auth.schema_migrations.svg deleted file mode 100644 index 4a9d4324a..000000000 --- a/docs/database/auth.schema_migrations.svg +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - -auth.schema_migrations - - - -auth.schema_migrations - - -auth.schema_migrations -     -[BASE TABLE] - -version -[varchar(255)] - - - - diff --git a/docs/database/auth.users.md b/docs/database/auth.users.md deleted file mode 100644 index 4e1cf1bf9..000000000 --- a/docs/database/auth.users.md +++ /dev/null @@ -1,61 +0,0 @@ -# auth.users - -## Description - -Auth: Stores user login data within a secure schema. - -## Columns - -| Name | Type | Default | Nullable | Children | Parents | Comment | -| ---- | ---- | ------- | -------- | -------- | ------- | ------- | -| instance_id | uuid | | true | | | | -| id | uuid | | false | [storage.buckets](storage.buckets.md) [storage.objects](storage.objects.md) | | | -| aud | varchar(255) | | true | | | | -| role | varchar(255) | | true | | | | -| email | varchar(255) | | true | | | | -| encrypted_password | varchar(255) | | true | | | | -| confirmed_at | timestamp with time zone | | true | | | | -| invited_at | timestamp with time zone | | true | | | | -| confirmation_token | varchar(255) | | true | | | | -| confirmation_sent_at | timestamp with time zone | | true | | | | -| recovery_token | varchar(255) | | true | | | | -| recovery_sent_at | timestamp with time zone | | true | | | | -| email_change_token | varchar(255) | | true | | | | -| email_change | varchar(255) | | true | | | | -| email_change_sent_at | timestamp with time zone | | true | | | | -| last_sign_in_at | timestamp with time zone | | true | | | | -| raw_app_meta_data | jsonb | | true | | | | -| raw_user_meta_data | jsonb | | true | | | | -| is_super_admin | boolean | | true | | | | -| created_at | timestamp with time zone | | true | | | | -| updated_at | timestamp with time zone | | true | | | | - -## Constraints - -| Name | Type | Definition | -| ---- | ---- | ---------- | -| users_pkey | PRIMARY KEY | PRIMARY KEY (id) | -| users_email_key | UNIQUE | UNIQUE (email) | - -## Indexes - -| Name | Definition | -| ---- | ---------- | -| users_pkey | CREATE UNIQUE INDEX users_pkey ON auth.users USING btree (id) | -| users_email_key | CREATE UNIQUE INDEX users_email_key ON auth.users USING btree (email) | -| users_instance_id_email_idx | CREATE INDEX users_instance_id_email_idx ON auth.users USING btree (instance_id, email) | -| users_instance_id_idx | CREATE INDEX users_instance_id_idx ON auth.users USING btree (instance_id) | - -## Triggers - -| Name | Definition | -| ---- | ---------- | -| on_auth_user_created | CREATE TRIGGER on_auth_user_created AFTER INSERT ON auth.users FOR EACH ROW EXECUTE FUNCTION handle_new_user() | - -## Relations - -![er](auth.users.svg) - ---- - -> Generated by [tbls](https://github.com/k1LoW/tbls) diff --git a/docs/database/auth.users.svg b/docs/database/auth.users.svg deleted file mode 100644 index d921f4f1b..000000000 --- a/docs/database/auth.users.svg +++ /dev/null @@ -1,157 +0,0 @@ - - - - - - -auth.users - - - -auth.users - - -auth.users -     -[BASE TABLE] - -instance_id -[uuid] - -id -[uuid] - -aud -[varchar(255)] - -role -[varchar(255)] - -email -[varchar(255)] - -encrypted_password -[varchar(255)] - -confirmed_at -[timestamp with time zone] - -invited_at -[timestamp with time zone] - -confirmation_token -[varchar(255)] - -confirmation_sent_at -[timestamp with time zone] - -recovery_token -[varchar(255)] - -recovery_sent_at -[timestamp with time zone] - -email_change_token -[varchar(255)] - -email_change -[varchar(255)] - -email_change_sent_at -[timestamp with time zone] - -last_sign_in_at -[timestamp with time zone] - -raw_app_meta_data -[jsonb] - -raw_user_meta_data -[jsonb] - -is_super_admin -[boolean] - -created_at -[timestamp with time zone] - -updated_at -[timestamp with time zone] - - - - -storage.buckets - - -storage.buckets -     -[BASE TABLE] - -id     -[text] - -name     -[text] - -owner     -[uuid] - -created_at     -[timestamp with time zone] - -updated_at     -[timestamp with time zone] - - - -storage.buckets:owner->auth.users:id - - -FOREIGN KEY (owner) REFERENCES auth.users(id) - - - -storage.objects - - -storage.objects -     -[BASE TABLE] - -id     -[uuid] - -bucket_id     -[text] - -name     -[text] - -owner     -[uuid] - -created_at     -[timestamp with time zone] - -updated_at     -[timestamp with time zone] - -last_accessed_at     -[timestamp with time zone] - -metadata     -[jsonb] - - - -storage.objects:owner->auth.users:id - - -FOREIGN KEY (owner) REFERENCES auth.users(id) - - - diff --git a/docs/database/extensions.pg_stat_statements.md b/docs/database/extensions.pg_stat_statements.md deleted file mode 100644 index 1ac95502f..000000000 --- a/docs/database/extensions.pg_stat_statements.md +++ /dev/null @@ -1,117 +0,0 @@ -# extensions.pg_stat_statements - -## Description - -
-Table Definition - -```sql -CREATE VIEW pg_stat_statements AS ( - SELECT pg_stat_statements.userid, - pg_stat_statements.dbid, - pg_stat_statements.toplevel, - pg_stat_statements.queryid, - pg_stat_statements.query, - pg_stat_statements.plans, - pg_stat_statements.total_plan_time, - pg_stat_statements.min_plan_time, - pg_stat_statements.max_plan_time, - pg_stat_statements.mean_plan_time, - pg_stat_statements.stddev_plan_time, - pg_stat_statements.calls, - pg_stat_statements.total_exec_time, - pg_stat_statements.min_exec_time, - pg_stat_statements.max_exec_time, - pg_stat_statements.mean_exec_time, - pg_stat_statements.stddev_exec_time, - pg_stat_statements.rows, - pg_stat_statements.shared_blks_hit, - pg_stat_statements.shared_blks_read, - pg_stat_statements.shared_blks_dirtied, - pg_stat_statements.shared_blks_written, - pg_stat_statements.local_blks_hit, - pg_stat_statements.local_blks_read, - pg_stat_statements.local_blks_dirtied, - pg_stat_statements.local_blks_written, - pg_stat_statements.temp_blks_read, - pg_stat_statements.temp_blks_written, - pg_stat_statements.blk_read_time, - pg_stat_statements.blk_write_time, - pg_stat_statements.temp_blk_read_time, - pg_stat_statements.temp_blk_write_time, - pg_stat_statements.wal_records, - pg_stat_statements.wal_fpi, - pg_stat_statements.wal_bytes, - pg_stat_statements.jit_functions, - pg_stat_statements.jit_generation_time, - pg_stat_statements.jit_inlining_count, - pg_stat_statements.jit_inlining_time, - pg_stat_statements.jit_optimization_count, - pg_stat_statements.jit_optimization_time, - pg_stat_statements.jit_emission_count, - pg_stat_statements.jit_emission_time - FROM pg_stat_statements(true) pg_stat_statements(userid, dbid, toplevel, queryid, query, plans, total_plan_time, min_plan_time, max_plan_time, mean_plan_time, stddev_plan_time, calls, total_exec_time, min_exec_time, max_exec_time, mean_exec_time, stddev_exec_time, rows, shared_blks_hit, shared_blks_read, shared_blks_dirtied, shared_blks_written, local_blks_hit, local_blks_read, local_blks_dirtied, local_blks_written, temp_blks_read, temp_blks_written, blk_read_time, blk_write_time, temp_blk_read_time, temp_blk_write_time, wal_records, wal_fpi, wal_bytes, jit_functions, jit_generation_time, jit_inlining_count, jit_inlining_time, jit_optimization_count, jit_optimization_time, jit_emission_count, jit_emission_time) -) -``` - -
- -## Referenced Tables - -- pg_stat_statements - -## Columns - -| Name | Type | Default | Nullable | Children | Parents | Comment | -| ---- | ---- | ------- | -------- | -------- | ------- | ------- | -| userid | oid | | true | | | | -| dbid | oid | | true | | | | -| toplevel | boolean | | true | | | | -| queryid | bigint | | true | | | | -| query | text | | true | | | | -| plans | bigint | | true | | | | -| total_plan_time | double precision | | true | | | | -| min_plan_time | double precision | | true | | | | -| max_plan_time | double precision | | true | | | | -| mean_plan_time | double precision | | true | | | | -| stddev_plan_time | double precision | | true | | | | -| calls | bigint | | true | | | | -| total_exec_time | double precision | | true | | | | -| min_exec_time | double precision | | true | | | | -| max_exec_time | double precision | | true | | | | -| mean_exec_time | double precision | | true | | | | -| stddev_exec_time | double precision | | true | | | | -| rows | bigint | | true | | | | -| shared_blks_hit | bigint | | true | | | | -| shared_blks_read | bigint | | true | | | | -| shared_blks_dirtied | bigint | | true | | | | -| shared_blks_written | bigint | | true | | | | -| local_blks_hit | bigint | | true | | | | -| local_blks_read | bigint | | true | | | | -| local_blks_dirtied | bigint | | true | | | | -| local_blks_written | bigint | | true | | | | -| temp_blks_read | bigint | | true | | | | -| temp_blks_written | bigint | | true | | | | -| blk_read_time | double precision | | true | | | | -| blk_write_time | double precision | | true | | | | -| temp_blk_read_time | double precision | | true | | | | -| temp_blk_write_time | double precision | | true | | | | -| wal_records | bigint | | true | | | | -| wal_fpi | bigint | | true | | | | -| wal_bytes | numeric | | true | | | | -| jit_functions | bigint | | true | | | | -| jit_generation_time | double precision | | true | | | | -| jit_inlining_count | bigint | | true | | | | -| jit_inlining_time | double precision | | true | | | | -| jit_optimization_count | bigint | | true | | | | -| jit_optimization_time | double precision | | true | | | | -| jit_emission_count | bigint | | true | | | | -| jit_emission_time | double precision | | true | | | | - -## Relations - -![er](extensions.pg_stat_statements.svg) - ---- - -> Generated by [tbls](https://github.com/k1LoW/tbls) diff --git a/docs/database/extensions.pg_stat_statements.svg b/docs/database/extensions.pg_stat_statements.svg deleted file mode 100644 index 141127ffc..000000000 --- a/docs/database/extensions.pg_stat_statements.svg +++ /dev/null @@ -1,152 +0,0 @@ - - - - - - -extensions.pg_stat_statements - - - -extensions.pg_stat_statements - - -extensions.pg_stat_statements -     -[VIEW] - -userid -[oid] - -dbid -[oid] - -toplevel -[boolean] - -queryid -[bigint] - -query -[text] - -plans -[bigint] - -total_plan_time -[double precision] - -min_plan_time -[double precision] - -max_plan_time -[double precision] - -mean_plan_time -[double precision] - -stddev_plan_time -[double precision] - -calls -[bigint] - -total_exec_time -[double precision] - -min_exec_time -[double precision] - -max_exec_time -[double precision] - -mean_exec_time -[double precision] - -stddev_exec_time -[double precision] - -rows -[bigint] - -shared_blks_hit -[bigint] - -shared_blks_read -[bigint] - -shared_blks_dirtied -[bigint] - -shared_blks_written -[bigint] - -local_blks_hit -[bigint] - -local_blks_read -[bigint] - -local_blks_dirtied -[bigint] - -local_blks_written -[bigint] - -temp_blks_read -[bigint] - -temp_blks_written -[bigint] - -blk_read_time -[double precision] - -blk_write_time -[double precision] - -temp_blk_read_time -[double precision] - -temp_blk_write_time -[double precision] - -wal_records -[bigint] - -wal_fpi -[bigint] - -wal_bytes -[numeric] - -jit_functions -[bigint] - -jit_generation_time -[double precision] - -jit_inlining_count -[bigint] - -jit_inlining_time -[double precision] - -jit_optimization_count -[bigint] - -jit_optimization_time -[double precision] - -jit_emission_count -[bigint] - -jit_emission_time -[double precision] - - - - diff --git a/docs/database/extensions.pg_stat_statements_info.md b/docs/database/extensions.pg_stat_statements_info.md deleted file mode 100644 index 8d09611a4..000000000 --- a/docs/database/extensions.pg_stat_statements_info.md +++ /dev/null @@ -1,35 +0,0 @@ -# extensions.pg_stat_statements_info - -## Description - -
-Table Definition - -```sql -CREATE VIEW pg_stat_statements_info AS ( - SELECT pg_stat_statements_info.dealloc, - pg_stat_statements_info.stats_reset - FROM pg_stat_statements_info() pg_stat_statements_info(dealloc, stats_reset) -) -``` - -
- -## Referenced Tables - -- pg_stat_statements_info - -## Columns - -| Name | Type | Default | Nullable | Children | Parents | Comment | -| ---- | ---- | ------- | -------- | -------- | ------- | ------- | -| dealloc | bigint | | true | | | | -| stats_reset | timestamp with time zone | | true | | | | - -## Relations - -![er](extensions.pg_stat_statements_info.svg) - ---- - -> Generated by [tbls](https://github.com/k1LoW/tbls) diff --git a/docs/database/extensions.pg_stat_statements_info.svg b/docs/database/extensions.pg_stat_statements_info.svg deleted file mode 100644 index 3802f8f3f..000000000 --- a/docs/database/extensions.pg_stat_statements_info.svg +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - -extensions.pg_stat_statements_info - - - -extensions.pg_stat_statements_info - - -extensions.pg_stat_statements_info -     -[VIEW] - -dealloc -[bigint] - -stats_reset -[timestamp with time zone] - - - - diff --git a/docs/database/net._http_response.md b/docs/database/net._http_response.md deleted file mode 100644 index fe5d4f918..000000000 --- a/docs/database/net._http_response.md +++ /dev/null @@ -1,30 +0,0 @@ -# net._http_response - -## Description - -## Columns - -| Name | Type | Default | Nullable | Children | Parents | Comment | -| ---- | ---- | ------- | -------- | -------- | ------- | ------- | -| id | bigint | | true | | | | -| status_code | integer | | true | | | | -| content_type | text | | true | | | | -| headers | jsonb | | true | | | | -| content | text | | true | | | | -| timed_out | boolean | | true | | | | -| error_msg | text | | true | | | | -| created | timestamp with time zone | now() | false | | | | - -## Indexes - -| Name | Definition | -| ---- | ---------- | -| _http_response_created_idx | CREATE INDEX _http_response_created_idx ON net._http_response USING btree (created) | - -## Relations - -![er](net._http_response.svg) - ---- - -> Generated by [tbls](https://github.com/k1LoW/tbls) diff --git a/docs/database/net._http_response.svg b/docs/database/net._http_response.svg deleted file mode 100644 index ce4d35d7a..000000000 --- a/docs/database/net._http_response.svg +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - -net._http_response - - - -net._http_response - - -net._http_response -     -[BASE TABLE] - -id -[bigint] - -status_code -[integer] - -content_type -[text] - -headers -[jsonb] - -content -[text] - -timed_out -[boolean] - -error_msg -[text] - -created -[timestamp with time zone] - - - - diff --git a/docs/database/net.http_request_queue.md b/docs/database/net.http_request_queue.md deleted file mode 100644 index af4cbff0b..000000000 --- a/docs/database/net.http_request_queue.md +++ /dev/null @@ -1,22 +0,0 @@ -# net.http_request_queue - -## Description - -## Columns - -| Name | Type | Default | Nullable | Children | Parents | Comment | -| ---- | ---- | ------- | -------- | -------- | ------- | ------- | -| id | bigint | nextval('net.http_request_queue_id_seq'::regclass) | false | | | | -| method | net.http_method | | false | | | | -| url | text | | false | | | | -| headers | jsonb | | false | | | | -| body | bytea | | true | | | | -| timeout_milliseconds | integer | | false | | | | - -## Relations - -![er](net.http_request_queue.svg) - ---- - -> Generated by [tbls](https://github.com/k1LoW/tbls) diff --git a/docs/database/net.http_request_queue.svg b/docs/database/net.http_request_queue.svg deleted file mode 100644 index 9472b9f9c..000000000 --- a/docs/database/net.http_request_queue.svg +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - -net.http_request_queue - - - -net.http_request_queue - - -net.http_request_queue -     -[BASE TABLE] - -id -[bigint] - -method -[net.http_method] - -url -[text] - -headers -[jsonb] - -body -[bytea] - -timeout_milliseconds -[integer] - - - - diff --git a/docs/database/pgsodium.decrypted_key.md b/docs/database/pgsodium.decrypted_key.md deleted file mode 100644 index 8c383e7a3..000000000 --- a/docs/database/pgsodium.decrypted_key.md +++ /dev/null @@ -1,66 +0,0 @@ -# pgsodium.decrypted_key - -## Description - -
-Table Definition - -```sql -CREATE VIEW decrypted_key AS ( - SELECT key.id, - key.status, - key.created, - key.expires, - key.key_type, - key.key_id, - key.key_context, - key.name, - key.associated_data, - key.raw_key, - CASE - WHEN (key.raw_key IS NULL) THEN NULL::bytea - ELSE - CASE - WHEN (key.parent_key IS NULL) THEN NULL::bytea - ELSE pgsodium.crypto_aead_det_decrypt(key.raw_key, convert_to(((key.id)::text || key.associated_data), 'utf8'::name), key.parent_key, key.raw_key_nonce) - END - END AS decrypted_raw_key, - key.raw_key_nonce, - key.parent_key, - key.comment - FROM pgsodium.key -) -``` - -
- -## Referenced Tables - -- [pgsodium.key](pgsodium.key.md) - -## Columns - -| Name | Type | Default | Nullable | Children | Parents | Comment | -| ---- | ---- | ------- | -------- | -------- | ------- | ------- | -| id | uuid | | true | | | | -| status | pgsodium.key_status | | true | | | | -| created | timestamp with time zone | | true | | | | -| expires | timestamp with time zone | | true | | | | -| key_type | pgsodium.key_type | | true | | | | -| key_id | bigint | | true | | | | -| key_context | bytea | | true | | | | -| name | text | | true | | | | -| associated_data | text | | true | | | | -| raw_key | bytea | | true | | | | -| decrypted_raw_key | bytea | | true | | | | -| raw_key_nonce | bytea | | true | | | | -| parent_key | uuid | | true | | | | -| comment | text | | true | | | | - -## Relations - -![er](pgsodium.decrypted_key.svg) - ---- - -> Generated by [tbls](https://github.com/k1LoW/tbls) diff --git a/docs/database/pgsodium.decrypted_key.svg b/docs/database/pgsodium.decrypted_key.svg deleted file mode 100644 index 934d30424..000000000 --- a/docs/database/pgsodium.decrypted_key.svg +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - -pgsodium.decrypted_key - - - -pgsodium.decrypted_key - - -pgsodium.decrypted_key -     -[VIEW] - -id -[uuid] - -status -[pgsodium.key_status] - -created -[timestamp with time zone] - -expires -[timestamp with time zone] - -key_type -[pgsodium.key_type] - -key_id -[bigint] - -key_context -[bytea] - -name -[text] - -associated_data -[text] - -raw_key -[bytea] - -decrypted_raw_key -[bytea] - -raw_key_nonce -[bytea] - -parent_key -[uuid] - -comment -[text] - - - - diff --git a/docs/database/pgsodium.key.md b/docs/database/pgsodium.key.md deleted file mode 100644 index 974783813..000000000 --- a/docs/database/pgsodium.key.md +++ /dev/null @@ -1,58 +0,0 @@ -# pgsodium.key - -## Description - -This table holds metadata for derived keys given a key_id and key_context. The raw key is never stored. - -## Columns - -| Name | Type | Default | Nullable | Children | Parents | Comment | -| ---- | ---- | ------- | -------- | -------- | ------- | ------- | -| id | uuid | gen_random_uuid() | false | [pgsodium.key](pgsodium.key.md) [vault.secrets](vault.secrets.md) | | | -| status | pgsodium.key_status | 'valid'::pgsodium.key_status | true | | | | -| created | timestamp with time zone | CURRENT_TIMESTAMP | false | | | | -| expires | timestamp with time zone | | true | | | | -| key_type | pgsodium.key_type | | true | | | | -| key_id | bigint | nextval('pgsodium.key_key_id_seq'::regclass) | true | | | | -| key_context | bytea | '\x7067736f6469756d'::bytea | true | | | | -| name | text | | true | | | | -| associated_data | text | 'associated'::text | true | | | | -| raw_key | bytea | | true | | | | -| raw_key_nonce | bytea | | true | | | | -| parent_key | uuid | | true | | [pgsodium.key](pgsodium.key.md) | | -| comment | text | | true | | | | -| user_data | text | | true | | | | - -## Constraints - -| Name | Type | Definition | -| ---- | ---- | ---------- | -| key_key_context_check | CHECK | CHECK ((length(key_context) = 8)) | -| pgsodium_raw | CHECK | CHECK (
CASE
WHEN (raw_key IS NOT NULL) THEN ((key_id IS NULL) AND (key_context IS NULL) AND (parent_key IS NOT NULL))
ELSE ((key_id IS NOT NULL) AND (key_context IS NOT NULL) AND (parent_key IS NULL))
END) | -| key_parent_key_fkey | FOREIGN KEY | FOREIGN KEY (parent_key) REFERENCES pgsodium.key(id) | -| key_pkey | PRIMARY KEY | PRIMARY KEY (id) | -| pgsodium_key_unique_name | UNIQUE | UNIQUE (name) | - -## Indexes - -| Name | Definition | -| ---- | ---------- | -| key_pkey | CREATE UNIQUE INDEX key_pkey ON pgsodium.key USING btree (id) | -| key_status_idx | CREATE INDEX key_status_idx ON pgsodium.key USING btree (status) WHERE (status = ANY (ARRAY['valid'::pgsodium.key_status, 'default'::pgsodium.key_status])) | -| key_status_idx1 | CREATE UNIQUE INDEX key_status_idx1 ON pgsodium.key USING btree (status) WHERE (status = 'default'::pgsodium.key_status) | -| key_key_id_key_context_key_type_idx | CREATE UNIQUE INDEX key_key_id_key_context_key_type_idx ON pgsodium.key USING btree (key_id, key_context, key_type) | -| pgsodium_key_unique_name | CREATE UNIQUE INDEX pgsodium_key_unique_name ON pgsodium.key USING btree (name) | - -## Triggers - -| Name | Definition | -| ---- | ---------- | -| key_encrypt_secret_trigger_raw_key | CREATE TRIGGER key_encrypt_secret_trigger_raw_key BEFORE INSERT OR UPDATE OF raw_key ON pgsodium.key FOR EACH ROW EXECUTE FUNCTION pgsodium.key_encrypt_secret_raw_key() | - -## Relations - -![er](pgsodium.key.svg) - ---- - -> Generated by [tbls](https://github.com/k1LoW/tbls) diff --git a/docs/database/pgsodium.key.svg b/docs/database/pgsodium.key.svg deleted file mode 100644 index 9ba436b27..000000000 --- a/docs/database/pgsodium.key.svg +++ /dev/null @@ -1,112 +0,0 @@ - - - - - - -pgsodium.key - - - -pgsodium.key - - -pgsodium.key -     -[BASE TABLE] - -id -[uuid] - -status -[pgsodium.key_status] - -created -[timestamp with time zone] - -expires -[timestamp with time zone] - -key_type -[pgsodium.key_type] - -key_id -[bigint] - -key_context -[bytea] - -name -[text] - -associated_data -[text] - -raw_key -[bytea] - -raw_key_nonce -[bytea] - -parent_key -[uuid] - -comment -[text] - -user_data -[text] - - - - -pgsodium.key:parent_key->pgsodium.key:id - - -FOREIGN KEY (parent_key) REFERENCES pgsodium.key(id) - - - -vault.secrets - - -vault.secrets -     -[BASE TABLE] - -id     -[uuid] - -name     -[text] - -description     -[text] - -secret     -[text] - -key_id     -[uuid] - -nonce     -[bytea] - -created_at     -[timestamp with time zone] - -updated_at     -[timestamp with time zone] - - - -vault.secrets:key_id->pgsodium.key:id - - -FOREIGN KEY (key_id) REFERENCES pgsodium.key(id) - - - diff --git a/docs/database/pgsodium.mask_columns.md b/docs/database/pgsodium.mask_columns.md deleted file mode 100644 index 74198bb0a..000000000 --- a/docs/database/pgsodium.mask_columns.md +++ /dev/null @@ -1,49 +0,0 @@ -# pgsodium.mask_columns - -## Description - -
-Table Definition - -```sql -CREATE VIEW mask_columns AS ( - SELECT a.attname, - a.attrelid, - m.key_id, - m.key_id_column, - m.associated_columns, - m.nonce_column, - m.format_type - FROM (pg_attribute a - LEFT JOIN pgsodium.masking_rule m ON (((m.attrelid = a.attrelid) AND (m.attname = a.attname)))) - WHERE ((a.attnum > 0) AND (NOT a.attisdropped)) - ORDER BY a.attnum -) -``` - -
- -## Referenced Tables - -- pg_attribute -- [pgsodium.masking_rule](pgsodium.masking_rule.md) - -## Columns - -| Name | Type | Default | Nullable | Children | Parents | Comment | -| ---- | ---- | ------- | -------- | -------- | ------- | ------- | -| attname | name | | true | | | | -| attrelid | oid | | true | | | | -| key_id | text | | true | | | | -| key_id_column | text | | true | | | | -| associated_columns | text | | true | | | | -| nonce_column | text | | true | | | | -| format_type | text | | true | | | | - -## Relations - -![er](pgsodium.mask_columns.svg) - ---- - -> Generated by [tbls](https://github.com/k1LoW/tbls) diff --git a/docs/database/pgsodium.mask_columns.svg b/docs/database/pgsodium.mask_columns.svg deleted file mode 100644 index 931fa30af..000000000 --- a/docs/database/pgsodium.mask_columns.svg +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - -pgsodium.mask_columns - - - -pgsodium.mask_columns - - -pgsodium.mask_columns -     -[VIEW] - -attname -[name] - -attrelid -[oid] - -key_id -[text] - -key_id_column -[text] - -associated_columns -[text] - -nonce_column -[text] - -format_type -[text] - - - - diff --git a/docs/database/pgsodium.masking_rule.md b/docs/database/pgsodium.masking_rule.md deleted file mode 100644 index 339482785..000000000 --- a/docs/database/pgsodium.masking_rule.md +++ /dev/null @@ -1,85 +0,0 @@ -# pgsodium.masking_rule - -## Description - -
-Table Definition - -```sql -CREATE VIEW masking_rule AS ( - WITH const AS ( - SELECT 'encrypt +with +key +id +([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})'::text AS pattern_key_id, - 'encrypt +with +key +column +([\w\"\-$]+)'::text AS pattern_key_id_column, - '(?<=associated) +\(([\w\"\-$, ]+)\)'::text AS pattern_associated_columns, - '(?<=nonce) +([\w\"\-$]+)'::text AS pattern_nonce_column, - '(?<=decrypt with view) +([\w\"\-$]+\.[\w\"\-$]+)'::text AS pattern_view_name, - '(?<=security invoker)'::text AS pattern_security_invoker - ), rules_from_seclabels AS ( - SELECT sl.objoid AS attrelid, - sl.objsubid AS attnum, - (c.relnamespace)::regnamespace AS relnamespace, - c.relname, - a.attname, - format_type(a.atttypid, a.atttypmod) AS format_type, - sl.label AS col_description, - (regexp_match(sl.label, k.pattern_key_id_column, 'i'::text))[1] AS key_id_column, - (regexp_match(sl.label, k.pattern_key_id, 'i'::text))[1] AS key_id, - (regexp_match(sl.label, k.pattern_associated_columns, 'i'::text))[1] AS associated_columns, - (regexp_match(sl.label, k.pattern_nonce_column, 'i'::text))[1] AS nonce_column, - COALESCE((regexp_match(sl2.label, k.pattern_view_name, 'i'::text))[1], (((c.relnamespace)::regnamespace || '.'::text) || quote_ident(('decrypted_'::text || (c.relname)::text)))) AS view_name, - 100 AS priority, - ((regexp_match(sl.label, k.pattern_security_invoker, 'i'::text))[1] IS NOT NULL) AS security_invoker - FROM const k, - (((pg_seclabel sl - JOIN pg_class c ON (((sl.classoid = c.tableoid) AND (sl.objoid = c.oid)))) - JOIN pg_attribute a ON (((a.attrelid = c.oid) AND (sl.objsubid = a.attnum)))) - LEFT JOIN pg_seclabel sl2 ON (((sl2.objoid = c.oid) AND (sl2.objsubid = 0)))) - WHERE ((a.attnum > 0) AND (((c.relnamespace)::regnamespace)::oid <> ('pg_catalog'::regnamespace)::oid) AND (NOT a.attisdropped) AND (sl.label ~~* 'ENCRYPT%'::text) AND (sl.provider = 'pgsodium'::text)) - ) - SELECT DISTINCT ON (rules_from_seclabels.attrelid, rules_from_seclabels.attnum) rules_from_seclabels.attrelid, - rules_from_seclabels.attnum, - rules_from_seclabels.relnamespace, - rules_from_seclabels.relname, - rules_from_seclabels.attname, - rules_from_seclabels.format_type, - rules_from_seclabels.col_description, - rules_from_seclabels.key_id_column, - rules_from_seclabels.key_id, - rules_from_seclabels.associated_columns, - rules_from_seclabels.nonce_column, - rules_from_seclabels.view_name, - rules_from_seclabels.priority, - rules_from_seclabels.security_invoker - FROM rules_from_seclabels - ORDER BY rules_from_seclabels.attrelid, rules_from_seclabels.attnum, rules_from_seclabels.priority DESC -) -``` - -
- -## Columns - -| Name | Type | Default | Nullable | Children | Parents | Comment | -| ---- | ---- | ------- | -------- | -------- | ------- | ------- | -| attrelid | oid | | true | | | | -| attnum | integer | | true | | | | -| relnamespace | regnamespace | | true | | | | -| relname | name | | true | | | | -| attname | name | | true | | | | -| format_type | text | | true | | | | -| col_description | text | | true | | | | -| key_id_column | text | | true | | | | -| key_id | text | | true | | | | -| associated_columns | text | | true | | | | -| nonce_column | text | | true | | | | -| view_name | text | | true | | | | -| priority | integer | | true | | | | -| security_invoker | boolean | | true | | | | - -## Relations - -![er](pgsodium.masking_rule.svg) - ---- - -> Generated by [tbls](https://github.com/k1LoW/tbls) diff --git a/docs/database/pgsodium.masking_rule.svg b/docs/database/pgsodium.masking_rule.svg deleted file mode 100644 index ade669e03..000000000 --- a/docs/database/pgsodium.masking_rule.svg +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - -pgsodium.masking_rule - - - -pgsodium.masking_rule - - -pgsodium.masking_rule -     -[VIEW] - -attrelid -[oid] - -attnum -[integer] - -relnamespace -[regnamespace] - -relname -[name] - -attname -[name] - -format_type -[text] - -col_description -[text] - -key_id_column -[text] - -key_id -[text] - -associated_columns -[text] - -nonce_column -[text] - -view_name -[text] - -priority -[integer] - -security_invoker -[boolean] - - - - diff --git a/docs/database/pgsodium.valid_key.md b/docs/database/pgsodium.valid_key.md deleted file mode 100644 index 666f5b9a0..000000000 --- a/docs/database/pgsodium.valid_key.md +++ /dev/null @@ -1,54 +0,0 @@ -# pgsodium.valid_key - -## Description - -
-Table Definition - -```sql -CREATE VIEW valid_key AS ( - SELECT key.id, - key.name, - key.status, - key.key_type, - key.key_id, - key.key_context, - key.created, - key.expires, - key.associated_data - FROM pgsodium.key - WHERE ((key.status = ANY (ARRAY['valid'::pgsodium.key_status, 'default'::pgsodium.key_status])) AND - CASE - WHEN (key.expires IS NULL) THEN true - ELSE (key.expires > now()) - END) -) -``` - -
- -## Referenced Tables - -- [pgsodium.key](pgsodium.key.md) - -## Columns - -| Name | Type | Default | Nullable | Children | Parents | Comment | -| ---- | ---- | ------- | -------- | -------- | ------- | ------- | -| id | uuid | | true | | | | -| name | text | | true | | | | -| status | pgsodium.key_status | | true | | | | -| key_type | pgsodium.key_type | | true | | | | -| key_id | bigint | | true | | | | -| key_context | bytea | | true | | | | -| created | timestamp with time zone | | true | | | | -| expires | timestamp with time zone | | true | | | | -| associated_data | text | | true | | | | - -## Relations - -![er](pgsodium.valid_key.svg) - ---- - -> Generated by [tbls](https://github.com/k1LoW/tbls) diff --git a/docs/database/pgsodium.valid_key.svg b/docs/database/pgsodium.valid_key.svg deleted file mode 100644 index 807fa951e..000000000 --- a/docs/database/pgsodium.valid_key.svg +++ /dev/null @@ -1,50 +0,0 @@ - - - - - - -pgsodium.valid_key - - - -pgsodium.valid_key - - -pgsodium.valid_key -     -[VIEW] - -id -[uuid] - -name -[text] - -status -[pgsodium.key_status] - -key_type -[pgsodium.key_type] - -key_id -[bigint] - -key_context -[bytea] - -created -[timestamp with time zone] - -expires -[timestamp with time zone] - -associated_data -[text] - - - - diff --git a/docs/database/public.app_config.md b/docs/database/public.app_config.md deleted file mode 100644 index 05b404751..000000000 --- a/docs/database/public.app_config.md +++ /dev/null @@ -1,39 +0,0 @@ -# public.app_config - -## Description - -Stores app config for different envs - -## Columns - -| Name | Type | Default | Nullable | Children | Parents | Comment | -| ---- | ---- | ------- | -------- | -------- | ------- | ------- | -| id | text | | false | | | | -| app_min_version | text | | false | | | | -| app_privacy | jsonb | | false | | | | -| app_terms | jsonb | | false | | | | -| designer_privacy | jsonb | | false | | | | -| designer_terms | jsonb | | false | | | | -| imprint | jsonb | | false | | | | -| contact | jsonb | '{"email": "hpi-info@hpi.de", "phone": "+49-(0)331 5509-0", "website": "https://hpi.de/", "organization": "Hasso Plattner Institute"}'::jsonb | false | | | | -| analytics | jsonb | | true | | | | - -## Constraints - -| Name | Type | Definition | -| ---- | ---- | ---------- | -| AppConfig_pkey | PRIMARY KEY | PRIMARY KEY (id) | - -## Indexes - -| Name | Definition | -| ---- | ---------- | -| AppConfig_pkey | CREATE UNIQUE INDEX "AppConfig_pkey" ON public.app_config USING btree (id) | - -## Relations - -![er](public.app_config.svg) - ---- - -> Generated by [tbls](https://github.com/k1LoW/tbls) diff --git a/docs/database/public.app_config.svg b/docs/database/public.app_config.svg deleted file mode 100644 index 7c1a3cfa0..000000000 --- a/docs/database/public.app_config.svg +++ /dev/null @@ -1,50 +0,0 @@ - - - - - - -public.app_config - - - -public.app_config - - -public.app_config -     -[BASE TABLE] - -id -[text] - -app_min_version -[text] - -app_privacy -[jsonb] - -app_terms -[jsonb] - -designer_privacy -[jsonb] - -designer_terms -[jsonb] - -imprint -[jsonb] - -contact -[jsonb] - -analytics -[jsonb] - - - - diff --git a/docs/database/public.repo.md b/docs/database/public.repo.md deleted file mode 100644 index 9e45555ca..000000000 --- a/docs/database/public.repo.md +++ /dev/null @@ -1,36 +0,0 @@ -# public.repo - -## Description - -Git repo where the generated project is stored - -## Columns - -| Name | Type | Default | Nullable | Children | Parents | Comment | -| ---- | ---- | ------- | -------- | -------- | ------- | ------- | -| project_id | text | | false | | | | -| user_id | uuid | | false | | [public.user](public.user.md) | | -| study_id | uuid | | false | | [public.study](public.study.md) | | -| provider | git_provider | | false | | | | - -## Constraints - -| Name | Type | Definition | -| ---- | ---- | ---------- | -| repo_studyId_fkey | FOREIGN KEY | FOREIGN KEY (study_id) REFERENCES study(id) | -| repo_pkey | PRIMARY KEY | PRIMARY KEY (project_id) | -| repo_userId_fkey | FOREIGN KEY | FOREIGN KEY (user_id) REFERENCES "user"(id) ON DELETE CASCADE | - -## Indexes - -| Name | Definition | -| ---- | ---------- | -| repo_pkey | CREATE UNIQUE INDEX repo_pkey ON public.repo USING btree (project_id) | - -## Relations - -![er](public.repo.svg) - ---- - -> Generated by [tbls](https://github.com/k1LoW/tbls) diff --git a/docs/database/public.repo.svg b/docs/database/public.repo.svg deleted file mode 100644 index ac7efbd9a..000000000 --- a/docs/database/public.repo.svg +++ /dev/null @@ -1,139 +0,0 @@ - - - - - - -public.repo - - - -public.repo - - -public.repo -     -[BASE TABLE] - -project_id -[text] - -user_id -[uuid] - -study_id -[uuid] - -provider -[git_provider] - - - - -public.user - - -public.user -     -[BASE TABLE] - -id     -[uuid] - -email     -[text] - -preferences     -[jsonb] - - - -public.repo:user_id->public.user:id - - -FOREIGN KEY (user_id) REFERENCES "user"(id) ON DELETE CASCADE - - - -public.study - - -public.study -     -[BASE TABLE] - -id     -[uuid] - -contact     -[jsonb] - -title     -[text] - -description     -[text] - -icon_name     -[text] - -published     -[boolean] - -registry_published     -[boolean] - -questionnaire     -[jsonb] - -eligibility_criteria     -[jsonb] - -observations     -[jsonb] - -interventions     -[jsonb] - -consent     -[jsonb] - -schedule     -[jsonb] - -report_specification     -[jsonb] - -results     -[jsonb] - -created_at     -[timestamp with time zone] - -updated_at     -[timestamp with time zone] - -user_id     -[uuid] - -participation     -[participation] - -result_sharing     -[result_sharing] - -collaborator_emails     -[text[]] - - - -public.repo:study_id->public.study:id - - -FOREIGN KEY (study_id) REFERENCES study(id) - - - diff --git a/docs/database/public.study.md b/docs/database/public.study.md deleted file mode 100644 index 96eddd9f7..000000000 --- a/docs/database/public.study.md +++ /dev/null @@ -1,58 +0,0 @@ -# public.study - -## Description - -## Columns - -| Name | Type | Default | Nullable | Children | Parents | Comment | -| ---- | ---- | ------- | -------- | -------- | ------- | ------- | -| id | uuid | gen_random_uuid() | false | [public.study_subject](public.study_subject.md) [public.repo](public.repo.md) [public.study_invite](public.study_invite.md) | | | -| contact | jsonb | | false | | | | -| title | text | | false | | | | -| description | text | | false | | | | -| icon_name | text | | false | | | | -| published | boolean | false | false | | | | -| registry_published | boolean | false | false | | | | -| questionnaire | jsonb | | false | | | | -| eligibility_criteria | jsonb | | false | | | | -| observations | jsonb | | false | | | | -| interventions | jsonb | | false | | | | -| consent | jsonb | | false | | | | -| schedule | jsonb | | false | | | | -| report_specification | jsonb | | false | | | | -| results | jsonb | | false | | | | -| created_at | timestamp with time zone | now() | false | | | | -| updated_at | timestamp with time zone | now() | false | | | | -| user_id | uuid | | false | | [public.user](public.user.md) | UserId of study creator | -| participation | participation | 'invite'::participation | false | | | | -| result_sharing | result_sharing | 'private'::result_sharing | false | | | | -| collaborator_emails | text[] | '{}'::text[] | false | | | | - -## Constraints - -| Name | Type | Definition | -| ---- | ---- | ---------- | -| study_id_key | UNIQUE | UNIQUE (id) | -| study_pkey | PRIMARY KEY | PRIMARY KEY (id) | -| study_userId_fkey | FOREIGN KEY | FOREIGN KEY (user_id) REFERENCES "user"(id) | - -## Indexes - -| Name | Definition | -| ---- | ---------- | -| study_id_key | CREATE UNIQUE INDEX study_id_key ON public.study USING btree (id) | -| study_pkey | CREATE UNIQUE INDEX study_pkey ON public.study USING btree (id) | - -## Triggers - -| Name | Definition | -| ---- | ---------- | -| handle_updated_at | CREATE TRIGGER handle_updated_at BEFORE UPDATE ON public.study FOR EACH ROW EXECUTE FUNCTION moddatetime('updated_at') | - -## Relations - -![er](public.study.svg) - ---- - -> Generated by [tbls](https://github.com/k1LoW/tbls) diff --git a/docs/database/public.study.svg b/docs/database/public.study.svg deleted file mode 100644 index dec6fcf50..000000000 --- a/docs/database/public.study.svg +++ /dev/null @@ -1,201 +0,0 @@ - - - - - - -public.study - - - -public.study - - -public.study -     -[BASE TABLE] - -id -[uuid] - -contact -[jsonb] - -title -[text] - -description -[text] - -icon_name -[text] - -published -[boolean] - -registry_published -[boolean] - -questionnaire -[jsonb] - -eligibility_criteria -[jsonb] - -observations -[jsonb] - -interventions -[jsonb] - -consent -[jsonb] - -schedule -[jsonb] - -report_specification -[jsonb] - -results -[jsonb] - -created_at -[timestamp with time zone] - -updated_at -[timestamp with time zone] - -user_id -[uuid] - -participation -[participation] - -result_sharing -[result_sharing] - -collaborator_emails -[text[]] - - - - -public.user - - -public.user -     -[BASE TABLE] - -id     -[uuid] - -email     -[text] - -preferences     -[jsonb] - - - -public.study:user_id->public.user:id - - -FOREIGN KEY (user_id) REFERENCES "user"(id) - - - -public.study_subject - - -public.study_subject -     -[BASE TABLE] - -id     -[uuid] - -study_id     -[uuid] - -user_id     -[uuid] - -started_at     -[timestamp with time zone] - -selected_intervention_ids     -[text[]] - -invite_code     -[text] - -is_deleted     -[boolean] - - - -public.study_subject:study_id->public.study:id - - -FOREIGN KEY (study_id) REFERENCES study(id) ON DELETE CASCADE - - - -public.repo - - -public.repo -     -[BASE TABLE] - -project_id     -[text] - -user_id     -[uuid] - -study_id     -[uuid] - -provider     -[git_provider] - - - -public.repo:study_id->public.study:id - - -FOREIGN KEY (study_id) REFERENCES study(id) - - - -public.study_invite - - -public.study_invite -     -[BASE TABLE] - -code     -[text] - -study_id     -[uuid] - -preselected_intervention_ids     -[text[]] - - - -public.study_invite:study_id->public.study:id - - -FOREIGN KEY (study_id) REFERENCES study(id) ON DELETE CASCADE - - - diff --git a/docs/database/public.study_invite.md b/docs/database/public.study_invite.md deleted file mode 100644 index 79c271b4f..000000000 --- a/docs/database/public.study_invite.md +++ /dev/null @@ -1,34 +0,0 @@ -# public.study_invite - -## Description - -Study invite codes - -## Columns - -| Name | Type | Default | Nullable | Children | Parents | Comment | -| ---- | ---- | ------- | -------- | -------- | ------- | ------- | -| code | text | | false | [public.study_subject](public.study_subject.md) | | | -| study_id | uuid | | false | | [public.study](public.study.md) | | -| preselected_intervention_ids | text[] | | true | | | Intervention Ids (and order) preselected by study creator | - -## Constraints - -| Name | Type | Definition | -| ---- | ---- | ---------- | -| study_invite_studyId_fkey | FOREIGN KEY | FOREIGN KEY (study_id) REFERENCES study(id) ON DELETE CASCADE | -| study_invite_pkey | PRIMARY KEY | PRIMARY KEY (code) | - -## Indexes - -| Name | Definition | -| ---- | ---------- | -| study_invite_pkey | CREATE UNIQUE INDEX study_invite_pkey ON public.study_invite USING btree (code) | - -## Relations - -![er](public.study_invite.svg) - ---- - -> Generated by [tbls](https://github.com/k1LoW/tbls) diff --git a/docs/database/public.study_invite.svg b/docs/database/public.study_invite.svg deleted file mode 100644 index 2c39a3f06..000000000 --- a/docs/database/public.study_invite.svg +++ /dev/null @@ -1,148 +0,0 @@ - - - - - - -public.study_invite - - - -public.study_invite - - -public.study_invite -     -[BASE TABLE] - -code -[text] - -study_id -[uuid] - -preselected_intervention_ids -[text[]] - - - - -public.study - - -public.study -     -[BASE TABLE] - -id     -[uuid] - -contact     -[jsonb] - -title     -[text] - -description     -[text] - -icon_name     -[text] - -published     -[boolean] - -registry_published     -[boolean] - -questionnaire     -[jsonb] - -eligibility_criteria     -[jsonb] - -observations     -[jsonb] - -interventions     -[jsonb] - -consent     -[jsonb] - -schedule     -[jsonb] - -report_specification     -[jsonb] - -results     -[jsonb] - -created_at     -[timestamp with time zone] - -updated_at     -[timestamp with time zone] - -user_id     -[uuid] - -participation     -[participation] - -result_sharing     -[result_sharing] - -collaborator_emails     -[text[]] - - - -public.study_invite:study_id->public.study:id - - -FOREIGN KEY (study_id) REFERENCES study(id) ON DELETE CASCADE - - - -public.study_subject - - -public.study_subject -     -[BASE TABLE] - -id     -[uuid] - -study_id     -[uuid] - -user_id     -[uuid] - -started_at     -[timestamp with time zone] - -selected_intervention_ids     -[text[]] - -invite_code     -[text] - -is_deleted     -[boolean] - - - -public.study_subject:invite_code->public.study_invite:code - - -FOREIGN KEY (invite_code) REFERENCES study_invite(code) ON DELETE CASCADE - - - diff --git a/docs/database/public.study_progress_export.md b/docs/database/public.study_progress_export.md deleted file mode 100644 index 44e005d14..000000000 --- a/docs/database/public.study_progress_export.md +++ /dev/null @@ -1,53 +0,0 @@ -# public.study_progress_export - -## Description - -
-Table Definition - -```sql -CREATE VIEW study_progress_export AS ( - SELECT subject_progress.completed_at, - subject_progress.intervention_id, - subject_progress.task_id, - subject_progress.result_type, - subject_progress.result, - subject_progress.subject_id, - study_subject.user_id, - study_subject.study_id, - study_subject.started_at, - study_subject.selected_intervention_ids - FROM study_subject, - subject_progress - WHERE (study_subject.id = subject_progress.subject_id) -) -``` - -
- -## Referenced Tables - -- [public.study_subject](public.study_subject.md) - -## Columns - -| Name | Type | Default | Nullable | Children | Parents | Comment | -| ---- | ---- | ------- | -------- | -------- | ------- | ------- | -| completed_at | timestamp with time zone | | true | | | | -| intervention_id | text | | true | | | | -| task_id | text | | true | | | | -| result_type | text | | true | | | | -| result | jsonb | | true | | | | -| subject_id | uuid | | true | | | | -| user_id | uuid | | true | | | | -| study_id | uuid | | true | | | | -| started_at | timestamp with time zone | | true | | | | -| selected_intervention_ids | text[] | | true | | | | - -## Relations - -![er](public.study_progress_export.svg) - ---- - -> Generated by [tbls](https://github.com/k1LoW/tbls) diff --git a/docs/database/public.study_progress_export.svg b/docs/database/public.study_progress_export.svg deleted file mode 100644 index 628fd0f66..000000000 --- a/docs/database/public.study_progress_export.svg +++ /dev/null @@ -1,53 +0,0 @@ - - - - - - -public.study_progress_export - - - -public.study_progress_export - - -public.study_progress_export -     -[VIEW] - -completed_at -[timestamp with time zone] - -intervention_id -[text] - -task_id -[text] - -result_type -[text] - -result -[jsonb] - -subject_id -[uuid] - -user_id -[uuid] - -study_id -[uuid] - -started_at -[timestamp with time zone] - -selected_intervention_ids -[text[]] - - - - diff --git a/docs/database/public.study_subject.md b/docs/database/public.study_subject.md deleted file mode 100644 index 76d3dd93c..000000000 --- a/docs/database/public.study_subject.md +++ /dev/null @@ -1,38 +0,0 @@ -# public.study_subject - -## Description - -## Columns - -| Name | Type | Default | Nullable | Children | Parents | Comment | -| ---- | ---- | ------- | -------- | -------- | ------- | ------- | -| id | uuid | gen_random_uuid() | false | [public.subject_progress](public.subject_progress.md) | | | -| study_id | uuid | | false | | [public.study](public.study.md) | | -| user_id | uuid | | false | | [public.user](public.user.md) | | -| started_at | timestamp with time zone | now() | true | | | | -| selected_intervention_ids | text[] | | false | | | | -| invite_code | text | | true | | [public.study_invite](public.study_invite.md) | | -| is_deleted | boolean | false | false | | | | - -## Constraints - -| Name | Type | Definition | -| ---- | ---- | ---------- | -| study_subject_studyId_fkey | FOREIGN KEY | FOREIGN KEY (study_id) REFERENCES study(id) ON DELETE CASCADE | -| study_subject_loginCode_fkey | FOREIGN KEY | FOREIGN KEY (invite_code) REFERENCES study_invite(code) ON DELETE CASCADE | -| study_subject_pkey | PRIMARY KEY | PRIMARY KEY (id) | -| study_subject_userId_fkey | FOREIGN KEY | FOREIGN KEY (user_id) REFERENCES "user"(id) | - -## Indexes - -| Name | Definition | -| ---- | ---------- | -| study_subject_pkey | CREATE UNIQUE INDEX study_subject_pkey ON public.study_subject USING btree (id) | - -## Relations - -![er](public.study_subject.svg) - ---- - -> Generated by [tbls](https://github.com/k1LoW/tbls) diff --git a/docs/database/public.study_subject.svg b/docs/database/public.study_subject.svg deleted file mode 100644 index 00b4f83b2..000000000 --- a/docs/database/public.study_subject.svg +++ /dev/null @@ -1,207 +0,0 @@ - - - - - - -public.study_subject - - - -public.study_subject - - -public.study_subject -     -[BASE TABLE] - -id -[uuid] - -study_id -[uuid] - -user_id -[uuid] - -started_at -[timestamp with time zone] - -selected_intervention_ids -[text[]] - -invite_code -[text] - -is_deleted -[boolean] - - - - -public.study - - -public.study -     -[BASE TABLE] - -id     -[uuid] - -contact     -[jsonb] - -title     -[text] - -description     -[text] - -icon_name     -[text] - -published     -[boolean] - -registry_published     -[boolean] - -questionnaire     -[jsonb] - -eligibility_criteria     -[jsonb] - -observations     -[jsonb] - -interventions     -[jsonb] - -consent     -[jsonb] - -schedule     -[jsonb] - -report_specification     -[jsonb] - -results     -[jsonb] - -created_at     -[timestamp with time zone] - -updated_at     -[timestamp with time zone] - -user_id     -[uuid] - -participation     -[participation] - -result_sharing     -[result_sharing] - -collaborator_emails     -[text[]] - - - -public.study_subject:study_id->public.study:id - - -FOREIGN KEY (study_id) REFERENCES study(id) ON DELETE CASCADE - - - -public.user - - -public.user -     -[BASE TABLE] - -id     -[uuid] - -email     -[text] - -preferences     -[jsonb] - - - -public.study_subject:user_id->public.user:id - - -FOREIGN KEY (user_id) REFERENCES "user"(id) - - - -public.study_invite - - -public.study_invite -     -[BASE TABLE] - -code     -[text] - -study_id     -[uuid] - -preselected_intervention_ids     -[text[]] - - - -public.study_subject:invite_code->public.study_invite:code - - -FOREIGN KEY (invite_code) REFERENCES study_invite(code) ON DELETE CASCADE - - - -public.subject_progress - - -public.subject_progress -     -[BASE TABLE] - -completed_at     -[timestamp with time zone] - -subject_id     -[uuid] - -intervention_id     -[text] - -task_id     -[text] - -result_type     -[text] - -result     -[jsonb] - - - -public.subject_progress:subject_id->public.study_subject:id - - -FOREIGN KEY (subject_id) REFERENCES study_subject(id) ON DELETE CASCADE - - - diff --git a/docs/database/public.study_tag.md b/docs/database/public.study_tag.md deleted file mode 100644 index c04ba255c..000000000 --- a/docs/database/public.study_tag.md +++ /dev/null @@ -1,32 +0,0 @@ -# public.study_tag - -## Description - -## Columns - -| Name | Type | Default | Nullable | Children | Parents | Comment | -| ---- | ---- | ------- | -------- | -------- | ------- | ------- | -| study_id | uuid | | false | | [public.study](public.study.md) | | -| tag_id | uuid | | false | | [public.tag](public.tag.md) | | - -## Constraints - -| Name | Type | Definition | -| ---- | ---- | ---------- | -| study_tag_studyId_fkey | FOREIGN KEY | FOREIGN KEY (study_id) REFERENCES study(id) ON DELETE CASCADE | -| study_tag_tagId_fkey | FOREIGN KEY | FOREIGN KEY (tag_id) REFERENCES tag(id) ON DELETE CASCADE | -| study_tag_pkey | PRIMARY KEY | PRIMARY KEY (study_id, tag_id) | - -## Indexes - -| Name | Definition | -| ---- | ---------- | -| study_tag_pkey | CREATE UNIQUE INDEX study_tag_pkey ON public.study_tag USING btree (study_id, tag_id) | - -## Relations - -![er](public.study_tag.svg) - ---- - -> Generated by [tbls](https://github.com/k1LoW/tbls) diff --git a/docs/database/public.study_tag.svg b/docs/database/public.study_tag.svg deleted file mode 100644 index 8df118323..000000000 --- a/docs/database/public.study_tag.svg +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - -public.study_tag - - - -public.study_tag - - -public.study_tag -     -[BASE TABLE] - -study_id -[uuid] - -tag_id -[uuid] - - - - -public.study - - -public.study -     -[BASE TABLE] - -id     -[uuid] - -contact     -[jsonb] - -title     -[text] - -description     -[text] - -icon_name     -[text] - -published     -[boolean] - -registry_published     -[boolean] - -questionnaire     -[jsonb] - -eligibility_criteria     -[jsonb] - -observations     -[jsonb] - -interventions     -[jsonb] - -consent     -[jsonb] - -schedule     -[jsonb] - -report_specification     -[jsonb] - -results     -[jsonb] - -created_at     -[timestamp with time zone] - -updated_at     -[timestamp with time zone] - -user_id     -[uuid] - -participation     -[participation] - -result_sharing     -[result_sharing] - -collaborator_emails     -[text[]] - - - -public.study_tag:study_id->public.study:id - - -FOREIGN KEY (study_id) REFERENCES study(id) ON DELETE CASCADE - - - -public.tag - - -public.tag -     -[BASE TABLE] - -id     -[uuid] - -name     -[text] - - - -public.study_tag:tag_id->public.tag:id - - -FOREIGN KEY (tag_id) REFERENCES tag(id) ON DELETE CASCADE - - - diff --git a/docs/database/public.subject_progress.md b/docs/database/public.subject_progress.md deleted file mode 100644 index 4290bc003..000000000 --- a/docs/database/public.subject_progress.md +++ /dev/null @@ -1,35 +0,0 @@ -# public.subject_progress - -## Description - -## Columns - -| Name | Type | Default | Nullable | Children | Parents | Comment | -| ---- | ---- | ------- | -------- | -------- | ------- | ------- | -| completed_at | timestamp with time zone | timezone('utc'::text, now()) | false | | | | -| subject_id | uuid | | false | | [public.study_subject](public.study_subject.md) | | -| intervention_id | text | | false | | | | -| task_id | text | | false | | | | -| result_type | text | | false | | | | -| result | jsonb | | false | | | | - -## Constraints - -| Name | Type | Definition | -| ---- | ---- | ---------- | -| participant_progress_pkey | PRIMARY KEY | PRIMARY KEY (completed_at, subject_id) | -| participant_progress_subjectId_fkey | FOREIGN KEY | FOREIGN KEY (subject_id) REFERENCES study_subject(id) ON DELETE CASCADE | - -## Indexes - -| Name | Definition | -| ---- | ---------- | -| participant_progress_pkey | CREATE UNIQUE INDEX participant_progress_pkey ON public.subject_progress USING btree (completed_at, subject_id) | - -## Relations - -![er](public.subject_progress.svg) - ---- - -> Generated by [tbls](https://github.com/k1LoW/tbls) diff --git a/docs/database/public.subject_progress.svg b/docs/database/public.subject_progress.svg deleted file mode 100644 index 4d3b52aaa..000000000 --- a/docs/database/public.subject_progress.svg +++ /dev/null @@ -1,78 +0,0 @@ - - - - - - -public.subject_progress - - - -public.subject_progress - - -public.subject_progress -     -[BASE TABLE] - -completed_at -[timestamp with time zone] - -subject_id -[uuid] - -intervention_id -[text] - -task_id -[text] - -result_type -[text] - -result -[jsonb] - - - - -public.study_subject - - -public.study_subject -     -[BASE TABLE] - -id     -[uuid] - -study_id     -[uuid] - -user_id     -[uuid] - -started_at     -[timestamp with time zone] - -selected_intervention_ids     -[text[]] - -invite_code     -[text] - -is_deleted     -[boolean] - - - -public.subject_progress:subject_id->public.study_subject:id - - -FOREIGN KEY (subject_id) REFERENCES study_subject(id) ON DELETE CASCADE - - - diff --git a/docs/database/public.tag.md b/docs/database/public.tag.md deleted file mode 100644 index 7b5185da3..000000000 --- a/docs/database/public.tag.md +++ /dev/null @@ -1,32 +0,0 @@ -# public.tag - -## Description - -## Columns - -| Name | Type | Default | Nullable | Children | Parents | Comment | -| ---- | ---- | ------- | -------- | -------- | ------- | ------- | -| id | uuid | gen_random_uuid() | false | [public.study_tag](public.study_tag.md) | | | -| name | text | | false | | | | - -## Constraints - -| Name | Type | Definition | -| ---- | ---- | ---------- | -| tag_name_key | UNIQUE | UNIQUE (name) | -| tag_pkey | PRIMARY KEY | PRIMARY KEY (id) | - -## Indexes - -| Name | Definition | -| ---- | ---------- | -| tag_name_key | CREATE UNIQUE INDEX tag_name_key ON public.tag USING btree (name) | -| tag_pkey | CREATE UNIQUE INDEX tag_pkey ON public.tag USING btree (id) | - -## Relations - -![er](public.tag.svg) - ---- - -> Generated by [tbls](https://github.com/k1LoW/tbls) diff --git a/docs/database/public.tag.svg b/docs/database/public.tag.svg deleted file mode 100644 index 6f2c73503..000000000 --- a/docs/database/public.tag.svg +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - -public.tag - - - -public.tag - - -public.tag -     -[BASE TABLE] - -id -[uuid] - -name -[text] - - - - -public.study_tag - - -public.study_tag -     -[BASE TABLE] - -study_id     -[uuid] - -tag_id     -[uuid] - - - -public.study_tag:tag_id->public.tag:id - - -FOREIGN KEY (tag_id) REFERENCES tag(id) ON DELETE CASCADE - - - diff --git a/docs/database/public.user.md b/docs/database/public.user.md deleted file mode 100644 index 5164cc9ca..000000000 --- a/docs/database/public.user.md +++ /dev/null @@ -1,33 +0,0 @@ -# public.user - -## Description - -Users get automatically added, when a new user is created in auth.users - -## Columns - -| Name | Type | Default | Nullable | Children | Parents | Comment | -| ---- | ---- | ------- | -------- | -------- | ------- | ------- | -| id | uuid | | false | [public.study](public.study.md) [public.study_subject](public.study_subject.md) [public.repo](public.repo.md) | | | -| email | text | | true | | | | -| preferences | jsonb | | true | | | | - -## Constraints - -| Name | Type | Definition | -| ---- | ---- | ---------- | -| user_pkey | PRIMARY KEY | PRIMARY KEY (id) | - -## Indexes - -| Name | Definition | -| ---- | ---------- | -| user_pkey | CREATE UNIQUE INDEX user_pkey ON public."user" USING btree (id) | - -## Relations - -![er](public.user.svg) - ---- - -> Generated by [tbls](https://github.com/k1LoW/tbls) diff --git a/docs/database/public.user.svg b/docs/database/public.user.svg deleted file mode 100644 index 696e041a9..000000000 --- a/docs/database/public.user.svg +++ /dev/null @@ -1,176 +0,0 @@ - - - - - - -public.user - - - -public.user - - -public.user -     -[BASE TABLE] - -id -[uuid] - -email -[text] - -preferences -[jsonb] - - - - -public.study - - -public.study -     -[BASE TABLE] - -id     -[uuid] - -contact     -[jsonb] - -title     -[text] - -description     -[text] - -icon_name     -[text] - -published     -[boolean] - -registry_published     -[boolean] - -questionnaire     -[jsonb] - -eligibility_criteria     -[jsonb] - -observations     -[jsonb] - -interventions     -[jsonb] - -consent     -[jsonb] - -schedule     -[jsonb] - -report_specification     -[jsonb] - -results     -[jsonb] - -created_at     -[timestamp with time zone] - -updated_at     -[timestamp with time zone] - -user_id     -[uuid] - -participation     -[participation] - -result_sharing     -[result_sharing] - -collaborator_emails     -[text[]] - - - -public.study:user_id->public.user:id - - -FOREIGN KEY (user_id) REFERENCES "user"(id) - - - -public.study_subject - - -public.study_subject -     -[BASE TABLE] - -id     -[uuid] - -study_id     -[uuid] - -user_id     -[uuid] - -started_at     -[timestamp with time zone] - -selected_intervention_ids     -[text[]] - -invite_code     -[text] - -is_deleted     -[boolean] - - - -public.study_subject:user_id->public.user:id - - -FOREIGN KEY (user_id) REFERENCES "user"(id) - - - -public.repo - - -public.repo -     -[BASE TABLE] - -project_id     -[text] - -user_id     -[uuid] - -study_id     -[uuid] - -provider     -[git_provider] - - - -public.repo:user_id->public.user:id - - -FOREIGN KEY (user_id) REFERENCES "user"(id) ON DELETE CASCADE - - - diff --git a/docs/database/schema.json b/docs/database/schema.json deleted file mode 100644 index 3d40ab780..000000000 --- a/docs/database/schema.json +++ /dev/null @@ -1 +0,0 @@ -{"name":"postgres","desc":"","tables":[{"name":"auth.users","type":"BASE TABLE","comment":"Auth: Stores user login data within a secure schema.","columns":[{"name":"instance_id","type":"uuid","nullable":true,"default":null,"comment":""},{"name":"id","type":"uuid","nullable":false,"default":null,"comment":""},{"name":"aud","type":"varchar(255)","nullable":true,"default":null,"comment":""},{"name":"role","type":"varchar(255)","nullable":true,"default":null,"comment":""},{"name":"email","type":"varchar(255)","nullable":true,"default":null,"comment":""},{"name":"encrypted_password","type":"varchar(255)","nullable":true,"default":null,"comment":""},{"name":"confirmed_at","type":"timestamp with time zone","nullable":true,"default":null,"comment":""},{"name":"invited_at","type":"timestamp with time zone","nullable":true,"default":null,"comment":""},{"name":"confirmation_token","type":"varchar(255)","nullable":true,"default":null,"comment":""},{"name":"confirmation_sent_at","type":"timestamp with time zone","nullable":true,"default":null,"comment":""},{"name":"recovery_token","type":"varchar(255)","nullable":true,"default":null,"comment":""},{"name":"recovery_sent_at","type":"timestamp with time zone","nullable":true,"default":null,"comment":""},{"name":"email_change_token","type":"varchar(255)","nullable":true,"default":null,"comment":""},{"name":"email_change","type":"varchar(255)","nullable":true,"default":null,"comment":""},{"name":"email_change_sent_at","type":"timestamp with time zone","nullable":true,"default":null,"comment":""},{"name":"last_sign_in_at","type":"timestamp with time zone","nullable":true,"default":null,"comment":""},{"name":"raw_app_meta_data","type":"jsonb","nullable":true,"default":null,"comment":""},{"name":"raw_user_meta_data","type":"jsonb","nullable":true,"default":null,"comment":""},{"name":"is_super_admin","type":"boolean","nullable":true,"default":null,"comment":""},{"name":"created_at","type":"timestamp with time zone","nullable":true,"default":null,"comment":""},{"name":"updated_at","type":"timestamp with time zone","nullable":true,"default":null,"comment":""}],"indexes":[{"name":"users_pkey","def":"CREATE UNIQUE INDEX users_pkey ON auth.users USING btree (id)","table":"auth.users","columns":["id"],"comment":""},{"name":"users_email_key","def":"CREATE UNIQUE INDEX users_email_key ON auth.users USING btree (email)","table":"auth.users","columns":["email"],"comment":""},{"name":"users_instance_id_email_idx","def":"CREATE INDEX users_instance_id_email_idx ON auth.users USING btree (instance_id, email)","table":"auth.users","columns":["email","instance_id"],"comment":""},{"name":"users_instance_id_idx","def":"CREATE INDEX users_instance_id_idx ON auth.users USING btree (instance_id)","table":"auth.users","columns":["instance_id"],"comment":""}],"constraints":[{"name":"users_pkey","type":"PRIMARY KEY","def":"PRIMARY KEY (id)","table":"auth.users","referenced_table":"","columns":["id"],"referenced_columns":[],"comment":""},{"name":"users_email_key","type":"UNIQUE","def":"UNIQUE (email)","table":"auth.users","referenced_table":"","columns":["email"],"referenced_columns":[],"comment":""}],"triggers":[{"name":"on_auth_user_created","def":"CREATE TRIGGER on_auth_user_created AFTER INSERT ON auth.users FOR EACH ROW EXECUTE FUNCTION handle_new_user()","comment":""}],"def":""},{"name":"auth.refresh_tokens","type":"BASE TABLE","comment":"Auth: Store of tokens used to refresh JWT tokens once they expire.","columns":[{"name":"instance_id","type":"uuid","nullable":true,"default":null,"comment":""},{"name":"id","type":"bigint","nullable":false,"default":"nextval('auth.refresh_tokens_id_seq'::regclass)","comment":""},{"name":"token","type":"varchar(255)","nullable":true,"default":null,"comment":""},{"name":"user_id","type":"varchar(255)","nullable":true,"default":null,"comment":""},{"name":"revoked","type":"boolean","nullable":true,"default":null,"comment":""},{"name":"created_at","type":"timestamp with time zone","nullable":true,"default":null,"comment":""},{"name":"updated_at","type":"timestamp with time zone","nullable":true,"default":null,"comment":""}],"indexes":[{"name":"refresh_tokens_pkey","def":"CREATE UNIQUE INDEX refresh_tokens_pkey ON auth.refresh_tokens USING btree (id)","table":"auth.refresh_tokens","columns":["id"],"comment":""},{"name":"refresh_tokens_instance_id_idx","def":"CREATE INDEX refresh_tokens_instance_id_idx ON auth.refresh_tokens USING btree (instance_id)","table":"auth.refresh_tokens","columns":["instance_id"],"comment":""},{"name":"refresh_tokens_instance_id_user_id_idx","def":"CREATE INDEX refresh_tokens_instance_id_user_id_idx ON auth.refresh_tokens USING btree (instance_id, user_id)","table":"auth.refresh_tokens","columns":["instance_id","user_id"],"comment":""},{"name":"refresh_tokens_token_idx","def":"CREATE INDEX refresh_tokens_token_idx ON auth.refresh_tokens USING btree (token)","table":"auth.refresh_tokens","columns":["token"],"comment":""}],"constraints":[{"name":"refresh_tokens_pkey","type":"PRIMARY KEY","def":"PRIMARY KEY (id)","table":"auth.refresh_tokens","referenced_table":"","columns":["id"],"referenced_columns":[],"comment":""}],"triggers":[],"def":""},{"name":"auth.instances","type":"BASE TABLE","comment":"Auth: Manages users across multiple sites.","columns":[{"name":"id","type":"uuid","nullable":false,"default":null,"comment":""},{"name":"uuid","type":"uuid","nullable":true,"default":null,"comment":""},{"name":"raw_base_config","type":"text","nullable":true,"default":null,"comment":""},{"name":"created_at","type":"timestamp with time zone","nullable":true,"default":null,"comment":""},{"name":"updated_at","type":"timestamp with time zone","nullable":true,"default":null,"comment":""}],"indexes":[{"name":"instances_pkey","def":"CREATE UNIQUE INDEX instances_pkey ON auth.instances USING btree (id)","table":"auth.instances","columns":["id"],"comment":""}],"constraints":[{"name":"instances_pkey","type":"PRIMARY KEY","def":"PRIMARY KEY (id)","table":"auth.instances","referenced_table":"","columns":["id"],"referenced_columns":[],"comment":""}],"triggers":[],"def":""},{"name":"auth.audit_log_entries","type":"BASE TABLE","comment":"Auth: Audit trail for user actions.","columns":[{"name":"instance_id","type":"uuid","nullable":true,"default":null,"comment":""},{"name":"id","type":"uuid","nullable":false,"default":null,"comment":""},{"name":"payload","type":"json","nullable":true,"default":null,"comment":""},{"name":"created_at","type":"timestamp with time zone","nullable":true,"default":null,"comment":""}],"indexes":[{"name":"audit_log_entries_pkey","def":"CREATE UNIQUE INDEX audit_log_entries_pkey ON auth.audit_log_entries USING btree (id)","table":"auth.audit_log_entries","columns":["id"],"comment":""},{"name":"audit_logs_instance_id_idx","def":"CREATE INDEX audit_logs_instance_id_idx ON auth.audit_log_entries USING btree (instance_id)","table":"auth.audit_log_entries","columns":["instance_id"],"comment":""}],"constraints":[{"name":"audit_log_entries_pkey","type":"PRIMARY KEY","def":"PRIMARY KEY (id)","table":"auth.audit_log_entries","referenced_table":"","columns":["id"],"referenced_columns":[],"comment":""}],"triggers":[],"def":""},{"name":"auth.schema_migrations","type":"BASE TABLE","comment":"Auth: Manages updates to the auth system.","columns":[{"name":"version","type":"varchar(255)","nullable":false,"default":null,"comment":""}],"indexes":[{"name":"schema_migrations_pkey","def":"CREATE UNIQUE INDEX schema_migrations_pkey ON auth.schema_migrations USING btree (version)","table":"auth.schema_migrations","columns":["version"],"comment":""}],"constraints":[{"name":"schema_migrations_pkey","type":"PRIMARY KEY","def":"PRIMARY KEY (version)","table":"auth.schema_migrations","referenced_table":"","columns":["version"],"referenced_columns":[],"comment":""}],"triggers":[],"def":""},{"name":"storage.buckets","type":"BASE TABLE","comment":"","columns":[{"name":"id","type":"text","nullable":false,"default":null,"comment":""},{"name":"name","type":"text","nullable":false,"default":null,"comment":""},{"name":"owner","type":"uuid","nullable":true,"default":null,"comment":""},{"name":"created_at","type":"timestamp with time zone","nullable":true,"default":"now()","comment":""},{"name":"updated_at","type":"timestamp with time zone","nullable":true,"default":"now()","comment":""}],"indexes":[{"name":"buckets_pkey","def":"CREATE UNIQUE INDEX buckets_pkey ON storage.buckets USING btree (id)","table":"storage.buckets","columns":["id"],"comment":""},{"name":"bname","def":"CREATE UNIQUE INDEX bname ON storage.buckets USING btree (name)","table":"storage.buckets","columns":["name"],"comment":""}],"constraints":[{"name":"buckets_owner_fkey","type":"FOREIGN KEY","def":"FOREIGN KEY (owner) REFERENCES auth.users(id)","table":"storage.buckets","referenced_table":"users","columns":["owner"],"referenced_columns":["id"],"comment":""},{"name":"buckets_pkey","type":"PRIMARY KEY","def":"PRIMARY KEY (id)","table":"storage.buckets","referenced_table":"","columns":["id"],"referenced_columns":[],"comment":""}],"triggers":[],"def":""},{"name":"storage.objects","type":"BASE TABLE","comment":"","columns":[{"name":"id","type":"uuid","nullable":false,"default":"uuid_generate_v4()","comment":""},{"name":"bucket_id","type":"text","nullable":true,"default":null,"comment":""},{"name":"name","type":"text","nullable":true,"default":null,"comment":""},{"name":"owner","type":"uuid","nullable":true,"default":null,"comment":""},{"name":"created_at","type":"timestamp with time zone","nullable":true,"default":"now()","comment":""},{"name":"updated_at","type":"timestamp with time zone","nullable":true,"default":"now()","comment":""},{"name":"last_accessed_at","type":"timestamp with time zone","nullable":true,"default":"now()","comment":""},{"name":"metadata","type":"jsonb","nullable":true,"default":null,"comment":""}],"indexes":[{"name":"objects_pkey","def":"CREATE UNIQUE INDEX objects_pkey ON storage.objects USING btree (id)","table":"storage.objects","columns":["id"],"comment":""},{"name":"bucketid_objname","def":"CREATE UNIQUE INDEX bucketid_objname ON storage.objects USING btree (bucket_id, name)","table":"storage.objects","columns":["bucket_id","name"],"comment":""},{"name":"name_prefix_search","def":"CREATE INDEX name_prefix_search ON storage.objects USING btree (name text_pattern_ops)","table":"storage.objects","columns":["name"],"comment":""}],"constraints":[{"name":"objects_owner_fkey","type":"FOREIGN KEY","def":"FOREIGN KEY (owner) REFERENCES auth.users(id)","table":"storage.objects","referenced_table":"users","columns":["owner"],"referenced_columns":["id"],"comment":""},{"name":"objects_bucketId_fkey","type":"FOREIGN KEY","def":"FOREIGN KEY (bucket_id) REFERENCES storage.buckets(id)","table":"storage.objects","referenced_table":"buckets","columns":["bucket_id"],"referenced_columns":["id"],"comment":""},{"name":"objects_pkey","type":"PRIMARY KEY","def":"PRIMARY KEY (id)","table":"storage.objects","referenced_table":"","columns":["id"],"referenced_columns":[],"comment":""}],"triggers":[],"def":""},{"name":"storage.migrations","type":"BASE TABLE","comment":"","columns":[{"name":"id","type":"integer","nullable":false,"default":null,"comment":""},{"name":"name","type":"varchar(100)","nullable":false,"default":null,"comment":""},{"name":"hash","type":"varchar(40)","nullable":false,"default":null,"comment":""},{"name":"executed_at","type":"timestamp without time zone","nullable":true,"default":"CURRENT_TIMESTAMP","comment":""}],"indexes":[{"name":"migrations_pkey","def":"CREATE UNIQUE INDEX migrations_pkey ON storage.migrations USING btree (id)","table":"storage.migrations","columns":["id"],"comment":""},{"name":"migrations_name_key","def":"CREATE UNIQUE INDEX migrations_name_key ON storage.migrations USING btree (name)","table":"storage.migrations","columns":["name"],"comment":""}],"constraints":[{"name":"migrations_pkey","type":"PRIMARY KEY","def":"PRIMARY KEY (id)","table":"storage.migrations","referenced_table":"","columns":["id"],"referenced_columns":[],"comment":""},{"name":"migrations_name_key","type":"UNIQUE","def":"UNIQUE (name)","table":"storage.migrations","referenced_table":"","columns":["name"],"referenced_columns":[],"comment":""}],"triggers":[],"def":""},{"name":"net.http_request_queue","type":"BASE TABLE","comment":"","columns":[{"name":"id","type":"bigint","nullable":false,"default":"nextval('net.http_request_queue_id_seq'::regclass)","comment":""},{"name":"method","type":"net.http_method","nullable":false,"default":null,"comment":""},{"name":"url","type":"text","nullable":false,"default":null,"comment":""},{"name":"headers","type":"jsonb","nullable":false,"default":null,"comment":""},{"name":"body","type":"bytea","nullable":true,"default":null,"comment":""},{"name":"timeout_milliseconds","type":"integer","nullable":false,"default":null,"comment":""}],"indexes":[],"constraints":[],"triggers":[],"def":""},{"name":"net._http_response","type":"BASE TABLE","comment":"","columns":[{"name":"id","type":"bigint","nullable":true,"default":null,"comment":""},{"name":"status_code","type":"integer","nullable":true,"default":null,"comment":""},{"name":"content_type","type":"text","nullable":true,"default":null,"comment":""},{"name":"headers","type":"jsonb","nullable":true,"default":null,"comment":""},{"name":"content","type":"text","nullable":true,"default":null,"comment":""},{"name":"timed_out","type":"boolean","nullable":true,"default":null,"comment":""},{"name":"error_msg","type":"text","nullable":true,"default":null,"comment":""},{"name":"created","type":"timestamp with time zone","nullable":false,"default":"now()","comment":""}],"indexes":[{"name":"_http_response_created_idx","def":"CREATE INDEX _http_response_created_idx ON net._http_response USING btree (created)","table":"net._http_response","columns":["created"],"comment":""}],"constraints":[],"triggers":[],"def":""},{"name":"supabase_functions.migrations","type":"BASE TABLE","comment":"","columns":[{"name":"version","type":"text","nullable":false,"default":null,"comment":""},{"name":"inserted_at","type":"timestamp with time zone","nullable":false,"default":"now()","comment":""}],"indexes":[{"name":"migrations_pkey","def":"CREATE UNIQUE INDEX migrations_pkey ON supabase_functions.migrations USING btree (version)","table":"supabase_functions.migrations","columns":["version"],"comment":""}],"constraints":[{"name":"migrations_pkey","type":"PRIMARY KEY","def":"PRIMARY KEY (version)","table":"supabase_functions.migrations","referenced_table":"","columns":["version"],"referenced_columns":[],"comment":""}],"triggers":[],"def":""},{"name":"supabase_functions.hooks","type":"BASE TABLE","comment":"Supabase Functions Hooks: Audit trail for triggered hooks.","columns":[{"name":"id","type":"bigint","nullable":false,"default":"nextval('supabase_functions.hooks_id_seq'::regclass)","comment":""},{"name":"hook_table_id","type":"integer","nullable":false,"default":null,"comment":""},{"name":"hook_name","type":"text","nullable":false,"default":null,"comment":""},{"name":"created_at","type":"timestamp with time zone","nullable":false,"default":"now()","comment":""},{"name":"request_id","type":"bigint","nullable":true,"default":null,"comment":""}],"indexes":[{"name":"hooks_pkey","def":"CREATE UNIQUE INDEX hooks_pkey ON supabase_functions.hooks USING btree (id)","table":"supabase_functions.hooks","columns":["id"],"comment":""},{"name":"supabase_functions_hooks_request_id_idx","def":"CREATE INDEX supabase_functions_hooks_request_id_idx ON supabase_functions.hooks USING btree (request_id)","table":"supabase_functions.hooks","columns":["request_id"],"comment":""},{"name":"supabase_functions_hooks_h_table_id_h_name_idx","def":"CREATE INDEX supabase_functions_hooks_h_table_id_h_name_idx ON supabase_functions.hooks USING btree (hook_table_id, hook_name)","table":"supabase_functions.hooks","columns":["hook_name","hook_table_id"],"comment":""}],"constraints":[{"name":"hooks_pkey","type":"PRIMARY KEY","def":"PRIMARY KEY (id)","table":"supabase_functions.hooks","referenced_table":"","columns":["id"],"referenced_columns":[],"comment":""}],"triggers":[],"def":""},{"name":"public.study","type":"BASE TABLE","comment":"","columns":[{"name":"id","type":"uuid","nullable":false,"default":"gen_random_uuid()","comment":""},{"name":"contact","type":"jsonb","nullable":false,"default":null,"comment":""},{"name":"title","type":"text","nullable":false,"default":null,"comment":""},{"name":"description","type":"text","nullable":false,"default":null,"comment":""},{"name":"icon_name","type":"text","nullable":false,"default":null,"comment":""},{"name":"published","type":"boolean","nullable":false,"default":"false","comment":""},{"name":"registry_published","type":"boolean","nullable":false,"default":"false","comment":""},{"name":"questionnaire","type":"jsonb","nullable":false,"default":null,"comment":""},{"name":"eligibility_criteria","type":"jsonb","nullable":false,"default":null,"comment":""},{"name":"observations","type":"jsonb","nullable":false,"default":null,"comment":""},{"name":"interventions","type":"jsonb","nullable":false,"default":null,"comment":""},{"name":"consent","type":"jsonb","nullable":false,"default":null,"comment":""},{"name":"schedule","type":"jsonb","nullable":false,"default":null,"comment":""},{"name":"report_specification","type":"jsonb","nullable":false,"default":null,"comment":""},{"name":"results","type":"jsonb","nullable":false,"default":null,"comment":""},{"name":"created_at","type":"timestamp with time zone","nullable":false,"default":"now()","comment":""},{"name":"updated_at","type":"timestamp with time zone","nullable":false,"default":"now()","comment":""},{"name":"user_id","type":"uuid","nullable":false,"default":null,"comment":"UserId of study creator"},{"name":"participation","type":"participation","nullable":false,"default":"'invite'::participation","comment":""},{"name":"result_sharing","type":"result_sharing","nullable":false,"default":"'private'::result_sharing","comment":""},{"name":"collaborator_emails","type":"text[]","nullable":false,"default":"'{}'::text[]","comment":""}],"indexes":[{"name":"study_id_key","def":"CREATE UNIQUE INDEX study_id_key ON public.study USING btree (id)","table":"public.study","columns":["id"],"comment":""},{"name":"study_pkey","def":"CREATE UNIQUE INDEX study_pkey ON public.study USING btree (id)","table":"public.study","columns":["id"],"comment":""}],"constraints":[{"name":"study_id_key","type":"UNIQUE","def":"UNIQUE (id)","table":"public.study","referenced_table":"","columns":["id"],"referenced_columns":[],"comment":""},{"name":"study_pkey","type":"PRIMARY KEY","def":"PRIMARY KEY (id)","table":"public.study","referenced_table":"","columns":["id"],"referenced_columns":[],"comment":""},{"name":"study_userId_fkey","type":"FOREIGN KEY","def":"FOREIGN KEY (user_id) REFERENCES \"user\"(id)","table":"public.study","referenced_table":"user","columns":["user_id"],"referenced_columns":["id"],"comment":""}],"triggers":[{"name":"handle_updated_at","def":"CREATE TRIGGER handle_updated_at BEFORE UPDATE ON public.study FOR EACH ROW EXECUTE FUNCTION moddatetime('updated_at')","comment":""}],"def":""},{"name":"public.study_subject","type":"BASE TABLE","comment":"","columns":[{"name":"id","type":"uuid","nullable":false,"default":"gen_random_uuid()","comment":""},{"name":"study_id","type":"uuid","nullable":false,"default":null,"comment":""},{"name":"user_id","type":"uuid","nullable":false,"default":null,"comment":""},{"name":"started_at","type":"timestamp with time zone","nullable":true,"default":"now()","comment":""},{"name":"selected_intervention_ids","type":"text[]","nullable":false,"default":null,"comment":""},{"name":"invite_code","type":"text","nullable":true,"default":null,"comment":""},{"name":"is_deleted","type":"boolean","nullable":false,"default":"false","comment":""}],"indexes":[{"name":"study_subject_pkey","def":"CREATE UNIQUE INDEX study_subject_pkey ON public.study_subject USING btree (id)","table":"public.study_subject","columns":["id"],"comment":""}],"constraints":[{"name":"study_subject_studyId_fkey","type":"FOREIGN KEY","def":"FOREIGN KEY (study_id) REFERENCES study(id) ON DELETE CASCADE","table":"public.study_subject","referenced_table":"study","columns":["study_id"],"referenced_columns":["id"],"comment":""},{"name":"study_subject_loginCode_fkey","type":"FOREIGN KEY","def":"FOREIGN KEY (invite_code) REFERENCES study_invite(code) ON DELETE CASCADE","table":"public.study_subject","referenced_table":"study_invite","columns":["invite_code"],"referenced_columns":["code"],"comment":""},{"name":"study_subject_pkey","type":"PRIMARY KEY","def":"PRIMARY KEY (id)","table":"public.study_subject","referenced_table":"","columns":["id"],"referenced_columns":[],"comment":""},{"name":"study_subject_userId_fkey","type":"FOREIGN KEY","def":"FOREIGN KEY (user_id) REFERENCES \"user\"(id)","table":"public.study_subject","referenced_table":"user","columns":["user_id"],"referenced_columns":["id"],"comment":""}],"triggers":[],"def":""},{"name":"public.app_config","type":"BASE TABLE","comment":"Stores app config for different envs","columns":[{"name":"id","type":"text","nullable":false,"default":null,"comment":""},{"name":"app_min_version","type":"text","nullable":false,"default":null,"comment":""},{"name":"app_privacy","type":"jsonb","nullable":false,"default":null,"comment":""},{"name":"app_terms","type":"jsonb","nullable":false,"default":null,"comment":""},{"name":"designer_privacy","type":"jsonb","nullable":false,"default":null,"comment":""},{"name":"designer_terms","type":"jsonb","nullable":false,"default":null,"comment":""},{"name":"imprint","type":"jsonb","nullable":false,"default":null,"comment":""},{"name":"contact","type":"jsonb","nullable":false,"default":"'{\"email\": \"hpi-info@hpi.de\", \"phone\": \"+49-(0)331 5509-0\", \"website\": \"https://hpi.de/\", \"organization\": \"Hasso Plattner Institute\"}'::jsonb","comment":""},{"name":"analytics","type":"jsonb","nullable":true,"default":null,"comment":""}],"indexes":[{"name":"AppConfig_pkey","def":"CREATE UNIQUE INDEX \"AppConfig_pkey\" ON public.app_config USING btree (id)","table":"public.app_config","columns":["id"],"comment":""}],"constraints":[{"name":"AppConfig_pkey","type":"PRIMARY KEY","def":"PRIMARY KEY (id)","table":"public.app_config","referenced_table":"","columns":["id"],"referenced_columns":[],"comment":""}],"triggers":[],"def":""},{"name":"public.repo","type":"BASE TABLE","comment":"Git repo where the generated project is stored","columns":[{"name":"project_id","type":"text","nullable":false,"default":null,"comment":""},{"name":"user_id","type":"uuid","nullable":false,"default":null,"comment":""},{"name":"study_id","type":"uuid","nullable":false,"default":null,"comment":""},{"name":"provider","type":"git_provider","nullable":false,"default":null,"comment":""}],"indexes":[{"name":"repo_pkey","def":"CREATE UNIQUE INDEX repo_pkey ON public.repo USING btree (project_id)","table":"public.repo","columns":["project_id"],"comment":""}],"constraints":[{"name":"repo_studyId_fkey","type":"FOREIGN KEY","def":"FOREIGN KEY (study_id) REFERENCES study(id)","table":"public.repo","referenced_table":"study","columns":["study_id"],"referenced_columns":["id"],"comment":""},{"name":"repo_pkey","type":"PRIMARY KEY","def":"PRIMARY KEY (project_id)","table":"public.repo","referenced_table":"","columns":["project_id"],"referenced_columns":[],"comment":""},{"name":"repo_userId_fkey","type":"FOREIGN KEY","def":"FOREIGN KEY (user_id) REFERENCES \"user\"(id) ON DELETE CASCADE","table":"public.repo","referenced_table":"user","columns":["user_id"],"referenced_columns":["id"],"comment":""}],"triggers":[],"def":""},{"name":"public.study_invite","type":"BASE TABLE","comment":"Study invite codes","columns":[{"name":"code","type":"text","nullable":false,"default":null,"comment":""},{"name":"study_id","type":"uuid","nullable":false,"default":null,"comment":""},{"name":"preselected_intervention_ids","type":"text[]","nullable":true,"default":null,"comment":"Intervention Ids (and order) preselected by study creator"}],"indexes":[{"name":"study_invite_pkey","def":"CREATE UNIQUE INDEX study_invite_pkey ON public.study_invite USING btree (code)","table":"public.study_invite","columns":["code"],"comment":""}],"constraints":[{"name":"study_invite_studyId_fkey","type":"FOREIGN KEY","def":"FOREIGN KEY (study_id) REFERENCES study(id) ON DELETE CASCADE","table":"public.study_invite","referenced_table":"study","columns":["study_id"],"referenced_columns":["id"],"comment":""},{"name":"study_invite_pkey","type":"PRIMARY KEY","def":"PRIMARY KEY (code)","table":"public.study_invite","referenced_table":"","columns":["code"],"referenced_columns":[],"comment":""}],"triggers":[],"def":""},{"name":"public.subject_progress","type":"BASE TABLE","comment":"","columns":[{"name":"completed_at","type":"timestamp with time zone","nullable":false,"default":"timezone('utc'::text, now())","comment":""},{"name":"subject_id","type":"uuid","nullable":false,"default":null,"comment":""},{"name":"intervention_id","type":"text","nullable":false,"default":null,"comment":""},{"name":"task_id","type":"text","nullable":false,"default":null,"comment":""},{"name":"result_type","type":"text","nullable":false,"default":null,"comment":""},{"name":"result","type":"jsonb","nullable":false,"default":null,"comment":""}],"indexes":[{"name":"participant_progress_pkey","def":"CREATE UNIQUE INDEX participant_progress_pkey ON public.subject_progress USING btree (completed_at, subject_id)","table":"public.subject_progress","columns":["completed_at","subject_id"],"comment":""}],"constraints":[{"name":"participant_progress_pkey","type":"PRIMARY KEY","def":"PRIMARY KEY (completed_at, subject_id)","table":"public.subject_progress","referenced_table":"","columns":["completed_at","subject_id"],"referenced_columns":[],"comment":""},{"name":"participant_progress_subjectId_fkey","type":"FOREIGN KEY","def":"FOREIGN KEY (subject_id) REFERENCES study_subject(id) ON DELETE CASCADE","table":"public.subject_progress","referenced_table":"study_subject","columns":["subject_id"],"referenced_columns":["id"],"comment":""}],"triggers":[],"def":""},{"name":"public.study_progress_export","type":"VIEW","comment":"","columns":[{"name":"completed_at","type":"timestamp with time zone","nullable":true,"default":null,"comment":""},{"name":"intervention_id","type":"text","nullable":true,"default":null,"comment":""},{"name":"task_id","type":"text","nullable":true,"default":null,"comment":""},{"name":"result_type","type":"text","nullable":true,"default":null,"comment":""},{"name":"result","type":"jsonb","nullable":true,"default":null,"comment":""},{"name":"subject_id","type":"uuid","nullable":true,"default":null,"comment":""},{"name":"user_id","type":"uuid","nullable":true,"default":null,"comment":""},{"name":"study_id","type":"uuid","nullable":true,"default":null,"comment":""},{"name":"started_at","type":"timestamp with time zone","nullable":true,"default":null,"comment":""},{"name":"selected_intervention_ids","type":"text[]","nullable":true,"default":null,"comment":""}],"indexes":[],"constraints":[],"triggers":[],"def":"CREATE VIEW study_progress_export AS (\n SELECT subject_progress.completed_at,\n subject_progress.intervention_id,\n subject_progress.task_id,\n subject_progress.result_type,\n subject_progress.result,\n subject_progress.subject_id,\n study_subject.user_id,\n study_subject.study_id,\n study_subject.started_at,\n study_subject.selected_intervention_ids\n FROM study_subject,\n subject_progress\n WHERE (study_subject.id = subject_progress.subject_id)\n)","referenced_tables":["public.study_subject"]},{"name":"public.user","type":"BASE TABLE","comment":"Users get automatically added, when a new user is created in auth.users","columns":[{"name":"id","type":"uuid","nullable":false,"default":null,"comment":""},{"name":"email","type":"text","nullable":true,"default":null,"comment":""},{"name":"preferences","type":"jsonb","nullable":true,"default":null,"comment":""}],"indexes":[{"name":"user_pkey","def":"CREATE UNIQUE INDEX user_pkey ON public.\"user\" USING btree (id)","table":"public.user","columns":["id"],"comment":""}],"constraints":[{"name":"user_pkey","type":"PRIMARY KEY","def":"PRIMARY KEY (id)","table":"public.user","referenced_table":"","columns":["id"],"referenced_columns":[],"comment":""}],"triggers":[],"def":""},{"name":"extensions.pg_stat_statements_info","type":"VIEW","comment":"","columns":[{"name":"dealloc","type":"bigint","nullable":true,"default":null,"comment":""},{"name":"stats_reset","type":"timestamp with time zone","nullable":true,"default":null,"comment":""}],"indexes":[],"constraints":[],"triggers":[],"def":"CREATE VIEW pg_stat_statements_info AS (\n SELECT pg_stat_statements_info.dealloc,\n pg_stat_statements_info.stats_reset\n FROM pg_stat_statements_info() pg_stat_statements_info(dealloc, stats_reset)\n)","referenced_tables":["pg_stat_statements_info"]},{"name":"extensions.pg_stat_statements","type":"VIEW","comment":"","columns":[{"name":"userid","type":"oid","nullable":true,"default":null,"comment":""},{"name":"dbid","type":"oid","nullable":true,"default":null,"comment":""},{"name":"toplevel","type":"boolean","nullable":true,"default":null,"comment":""},{"name":"queryid","type":"bigint","nullable":true,"default":null,"comment":""},{"name":"query","type":"text","nullable":true,"default":null,"comment":""},{"name":"plans","type":"bigint","nullable":true,"default":null,"comment":""},{"name":"total_plan_time","type":"double precision","nullable":true,"default":null,"comment":""},{"name":"min_plan_time","type":"double precision","nullable":true,"default":null,"comment":""},{"name":"max_plan_time","type":"double precision","nullable":true,"default":null,"comment":""},{"name":"mean_plan_time","type":"double precision","nullable":true,"default":null,"comment":""},{"name":"stddev_plan_time","type":"double precision","nullable":true,"default":null,"comment":""},{"name":"calls","type":"bigint","nullable":true,"default":null,"comment":""},{"name":"total_exec_time","type":"double precision","nullable":true,"default":null,"comment":""},{"name":"min_exec_time","type":"double precision","nullable":true,"default":null,"comment":""},{"name":"max_exec_time","type":"double precision","nullable":true,"default":null,"comment":""},{"name":"mean_exec_time","type":"double precision","nullable":true,"default":null,"comment":""},{"name":"stddev_exec_time","type":"double precision","nullable":true,"default":null,"comment":""},{"name":"rows","type":"bigint","nullable":true,"default":null,"comment":""},{"name":"shared_blks_hit","type":"bigint","nullable":true,"default":null,"comment":""},{"name":"shared_blks_read","type":"bigint","nullable":true,"default":null,"comment":""},{"name":"shared_blks_dirtied","type":"bigint","nullable":true,"default":null,"comment":""},{"name":"shared_blks_written","type":"bigint","nullable":true,"default":null,"comment":""},{"name":"local_blks_hit","type":"bigint","nullable":true,"default":null,"comment":""},{"name":"local_blks_read","type":"bigint","nullable":true,"default":null,"comment":""},{"name":"local_blks_dirtied","type":"bigint","nullable":true,"default":null,"comment":""},{"name":"local_blks_written","type":"bigint","nullable":true,"default":null,"comment":""},{"name":"temp_blks_read","type":"bigint","nullable":true,"default":null,"comment":""},{"name":"temp_blks_written","type":"bigint","nullable":true,"default":null,"comment":""},{"name":"blk_read_time","type":"double precision","nullable":true,"default":null,"comment":""},{"name":"blk_write_time","type":"double precision","nullable":true,"default":null,"comment":""},{"name":"temp_blk_read_time","type":"double precision","nullable":true,"default":null,"comment":""},{"name":"temp_blk_write_time","type":"double precision","nullable":true,"default":null,"comment":""},{"name":"wal_records","type":"bigint","nullable":true,"default":null,"comment":""},{"name":"wal_fpi","type":"bigint","nullable":true,"default":null,"comment":""},{"name":"wal_bytes","type":"numeric","nullable":true,"default":null,"comment":""},{"name":"jit_functions","type":"bigint","nullable":true,"default":null,"comment":""},{"name":"jit_generation_time","type":"double precision","nullable":true,"default":null,"comment":""},{"name":"jit_inlining_count","type":"bigint","nullable":true,"default":null,"comment":""},{"name":"jit_inlining_time","type":"double precision","nullable":true,"default":null,"comment":""},{"name":"jit_optimization_count","type":"bigint","nullable":true,"default":null,"comment":""},{"name":"jit_optimization_time","type":"double precision","nullable":true,"default":null,"comment":""},{"name":"jit_emission_count","type":"bigint","nullable":true,"default":null,"comment":""},{"name":"jit_emission_time","type":"double precision","nullable":true,"default":null,"comment":""}],"indexes":[],"constraints":[],"triggers":[],"def":"CREATE VIEW pg_stat_statements AS (\n SELECT pg_stat_statements.userid,\n pg_stat_statements.dbid,\n pg_stat_statements.toplevel,\n pg_stat_statements.queryid,\n pg_stat_statements.query,\n pg_stat_statements.plans,\n pg_stat_statements.total_plan_time,\n pg_stat_statements.min_plan_time,\n pg_stat_statements.max_plan_time,\n pg_stat_statements.mean_plan_time,\n pg_stat_statements.stddev_plan_time,\n pg_stat_statements.calls,\n pg_stat_statements.total_exec_time,\n pg_stat_statements.min_exec_time,\n pg_stat_statements.max_exec_time,\n pg_stat_statements.mean_exec_time,\n pg_stat_statements.stddev_exec_time,\n pg_stat_statements.rows,\n pg_stat_statements.shared_blks_hit,\n pg_stat_statements.shared_blks_read,\n pg_stat_statements.shared_blks_dirtied,\n pg_stat_statements.shared_blks_written,\n pg_stat_statements.local_blks_hit,\n pg_stat_statements.local_blks_read,\n pg_stat_statements.local_blks_dirtied,\n pg_stat_statements.local_blks_written,\n pg_stat_statements.temp_blks_read,\n pg_stat_statements.temp_blks_written,\n pg_stat_statements.blk_read_time,\n pg_stat_statements.blk_write_time,\n pg_stat_statements.temp_blk_read_time,\n pg_stat_statements.temp_blk_write_time,\n pg_stat_statements.wal_records,\n pg_stat_statements.wal_fpi,\n pg_stat_statements.wal_bytes,\n pg_stat_statements.jit_functions,\n pg_stat_statements.jit_generation_time,\n pg_stat_statements.jit_inlining_count,\n pg_stat_statements.jit_inlining_time,\n pg_stat_statements.jit_optimization_count,\n pg_stat_statements.jit_optimization_time,\n pg_stat_statements.jit_emission_count,\n pg_stat_statements.jit_emission_time\n FROM pg_stat_statements(true) pg_stat_statements(userid, dbid, toplevel, queryid, query, plans, total_plan_time, min_plan_time, max_plan_time, mean_plan_time, stddev_plan_time, calls, total_exec_time, min_exec_time, max_exec_time, mean_exec_time, stddev_exec_time, rows, shared_blks_hit, shared_blks_read, shared_blks_dirtied, shared_blks_written, local_blks_hit, local_blks_read, local_blks_dirtied, local_blks_written, temp_blks_read, temp_blks_written, blk_read_time, blk_write_time, temp_blk_read_time, temp_blk_write_time, wal_records, wal_fpi, wal_bytes, jit_functions, jit_generation_time, jit_inlining_count, jit_inlining_time, jit_optimization_count, jit_optimization_time, jit_emission_count, jit_emission_time)\n)","referenced_tables":["pg_stat_statements"]},{"name":"pgsodium.key","type":"BASE TABLE","comment":"This table holds metadata for derived keys given a key_id and key_context. The raw key is never stored.","columns":[{"name":"id","type":"uuid","nullable":false,"default":"gen_random_uuid()","comment":""},{"name":"status","type":"pgsodium.key_status","nullable":true,"default":"'valid'::pgsodium.key_status","comment":""},{"name":"created","type":"timestamp with time zone","nullable":false,"default":"CURRENT_TIMESTAMP","comment":""},{"name":"expires","type":"timestamp with time zone","nullable":true,"default":null,"comment":""},{"name":"key_type","type":"pgsodium.key_type","nullable":true,"default":null,"comment":""},{"name":"key_id","type":"bigint","nullable":true,"default":"nextval('pgsodium.key_key_id_seq'::regclass)","comment":""},{"name":"key_context","type":"bytea","nullable":true,"default":"'\\x7067736f6469756d'::bytea","comment":""},{"name":"name","type":"text","nullable":true,"default":null,"comment":""},{"name":"associated_data","type":"text","nullable":true,"default":"'associated'::text","comment":""},{"name":"raw_key","type":"bytea","nullable":true,"default":null,"comment":""},{"name":"raw_key_nonce","type":"bytea","nullable":true,"default":null,"comment":""},{"name":"parent_key","type":"uuid","nullable":true,"default":null,"comment":""},{"name":"comment","type":"text","nullable":true,"default":null,"comment":""},{"name":"user_data","type":"text","nullable":true,"default":null,"comment":""}],"indexes":[{"name":"key_pkey","def":"CREATE UNIQUE INDEX key_pkey ON pgsodium.key USING btree (id)","table":"pgsodium.key","columns":["id"],"comment":""},{"name":"key_status_idx","def":"CREATE INDEX key_status_idx ON pgsodium.key USING btree (status) WHERE (status = ANY (ARRAY['valid'::pgsodium.key_status, 'default'::pgsodium.key_status]))","table":"pgsodium.key","columns":["status"],"comment":""},{"name":"key_status_idx1","def":"CREATE UNIQUE INDEX key_status_idx1 ON pgsodium.key USING btree (status) WHERE (status = 'default'::pgsodium.key_status)","table":"pgsodium.key","columns":["status"],"comment":""},{"name":"key_key_id_key_context_key_type_idx","def":"CREATE UNIQUE INDEX key_key_id_key_context_key_type_idx ON pgsodium.key USING btree (key_id, key_context, key_type)","table":"pgsodium.key","columns":["key_context","key_id","key_type"],"comment":""},{"name":"pgsodium_key_unique_name","def":"CREATE UNIQUE INDEX pgsodium_key_unique_name ON pgsodium.key USING btree (name)","table":"pgsodium.key","columns":["name"],"comment":""}],"constraints":[{"name":"key_key_context_check","type":"CHECK","def":"CHECK ((length(key_context) = 8))","table":"pgsodium.key","referenced_table":"","columns":["key_context"],"referenced_columns":[],"comment":""},{"name":"pgsodium_raw","type":"CHECK","def":"CHECK (\nCASE\n WHEN (raw_key IS NOT NULL) THEN ((key_id IS NULL) AND (key_context IS NULL) AND (parent_key IS NOT NULL))\n ELSE ((key_id IS NOT NULL) AND (key_context IS NOT NULL) AND (parent_key IS NULL))\nEND)","table":"pgsodium.key","referenced_table":"","columns":["key_id","key_context","raw_key","parent_key"],"referenced_columns":[],"comment":""},{"name":"key_parent_key_fkey","type":"FOREIGN KEY","def":"FOREIGN KEY (parent_key) REFERENCES pgsodium.key(id)","table":"pgsodium.key","referenced_table":"key","columns":["parent_key"],"referenced_columns":["id"],"comment":""},{"name":"key_pkey","type":"PRIMARY KEY","def":"PRIMARY KEY (id)","table":"pgsodium.key","referenced_table":"","columns":["id"],"referenced_columns":[],"comment":""},{"name":"pgsodium_key_unique_name","type":"UNIQUE","def":"UNIQUE (name)","table":"pgsodium.key","referenced_table":"","columns":["name"],"referenced_columns":[],"comment":""}],"triggers":[{"name":"key_encrypt_secret_trigger_raw_key","def":"CREATE TRIGGER key_encrypt_secret_trigger_raw_key BEFORE INSERT OR UPDATE OF raw_key ON pgsodium.key FOR EACH ROW EXECUTE FUNCTION pgsodium.key_encrypt_secret_raw_key()","comment":""}],"def":""},{"name":"pgsodium.valid_key","type":"VIEW","comment":"","columns":[{"name":"id","type":"uuid","nullable":true,"default":null,"comment":""},{"name":"name","type":"text","nullable":true,"default":null,"comment":""},{"name":"status","type":"pgsodium.key_status","nullable":true,"default":null,"comment":""},{"name":"key_type","type":"pgsodium.key_type","nullable":true,"default":null,"comment":""},{"name":"key_id","type":"bigint","nullable":true,"default":null,"comment":""},{"name":"key_context","type":"bytea","nullable":true,"default":null,"comment":""},{"name":"created","type":"timestamp with time zone","nullable":true,"default":null,"comment":""},{"name":"expires","type":"timestamp with time zone","nullable":true,"default":null,"comment":""},{"name":"associated_data","type":"text","nullable":true,"default":null,"comment":""}],"indexes":[],"constraints":[],"triggers":[],"def":"CREATE VIEW valid_key AS (\n SELECT key.id,\n key.name,\n key.status,\n key.key_type,\n key.key_id,\n key.key_context,\n key.created,\n key.expires,\n key.associated_data\n FROM pgsodium.key\n WHERE ((key.status = ANY (ARRAY['valid'::pgsodium.key_status, 'default'::pgsodium.key_status])) AND\n CASE\n WHEN (key.expires IS NULL) THEN true\n ELSE (key.expires \u003e now())\n END)\n)","referenced_tables":["pgsodium.key"]},{"name":"pgsodium.masking_rule","type":"VIEW","comment":"","columns":[{"name":"attrelid","type":"oid","nullable":true,"default":null,"comment":""},{"name":"attnum","type":"integer","nullable":true,"default":null,"comment":""},{"name":"relnamespace","type":"regnamespace","nullable":true,"default":null,"comment":""},{"name":"relname","type":"name","nullable":true,"default":null,"comment":""},{"name":"attname","type":"name","nullable":true,"default":null,"comment":""},{"name":"format_type","type":"text","nullable":true,"default":null,"comment":""},{"name":"col_description","type":"text","nullable":true,"default":null,"comment":""},{"name":"key_id_column","type":"text","nullable":true,"default":null,"comment":""},{"name":"key_id","type":"text","nullable":true,"default":null,"comment":""},{"name":"associated_columns","type":"text","nullable":true,"default":null,"comment":""},{"name":"nonce_column","type":"text","nullable":true,"default":null,"comment":""},{"name":"view_name","type":"text","nullable":true,"default":null,"comment":""},{"name":"priority","type":"integer","nullable":true,"default":null,"comment":""},{"name":"security_invoker","type":"boolean","nullable":true,"default":null,"comment":""}],"indexes":[],"constraints":[],"triggers":[],"def":"CREATE VIEW masking_rule AS (\n WITH const AS (\n SELECT 'encrypt +with +key +id +([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})'::text AS pattern_key_id,\n 'encrypt +with +key +column +([\\w\\\"\\-$]+)'::text AS pattern_key_id_column,\n '(?\u003c=associated) +\\(([\\w\\\"\\-$, ]+)\\)'::text AS pattern_associated_columns,\n '(?\u003c=nonce) +([\\w\\\"\\-$]+)'::text AS pattern_nonce_column,\n '(?\u003c=decrypt with view) +([\\w\\\"\\-$]+\\.[\\w\\\"\\-$]+)'::text AS pattern_view_name,\n '(?\u003c=security invoker)'::text AS pattern_security_invoker\n ), rules_from_seclabels AS (\n SELECT sl.objoid AS attrelid,\n sl.objsubid AS attnum,\n (c.relnamespace)::regnamespace AS relnamespace,\n c.relname,\n a.attname,\n format_type(a.atttypid, a.atttypmod) AS format_type,\n sl.label AS col_description,\n (regexp_match(sl.label, k.pattern_key_id_column, 'i'::text))[1] AS key_id_column,\n (regexp_match(sl.label, k.pattern_key_id, 'i'::text))[1] AS key_id,\n (regexp_match(sl.label, k.pattern_associated_columns, 'i'::text))[1] AS associated_columns,\n (regexp_match(sl.label, k.pattern_nonce_column, 'i'::text))[1] AS nonce_column,\n COALESCE((regexp_match(sl2.label, k.pattern_view_name, 'i'::text))[1], (((c.relnamespace)::regnamespace || '.'::text) || quote_ident(('decrypted_'::text || (c.relname)::text)))) AS view_name,\n 100 AS priority,\n ((regexp_match(sl.label, k.pattern_security_invoker, 'i'::text))[1] IS NOT NULL) AS security_invoker\n FROM const k,\n (((pg_seclabel sl\n JOIN pg_class c ON (((sl.classoid = c.tableoid) AND (sl.objoid = c.oid))))\n JOIN pg_attribute a ON (((a.attrelid = c.oid) AND (sl.objsubid = a.attnum))))\n LEFT JOIN pg_seclabel sl2 ON (((sl2.objoid = c.oid) AND (sl2.objsubid = 0))))\n WHERE ((a.attnum \u003e 0) AND (((c.relnamespace)::regnamespace)::oid \u003c\u003e ('pg_catalog'::regnamespace)::oid) AND (NOT a.attisdropped) AND (sl.label ~~* 'ENCRYPT%'::text) AND (sl.provider = 'pgsodium'::text))\n )\n SELECT DISTINCT ON (rules_from_seclabels.attrelid, rules_from_seclabels.attnum) rules_from_seclabels.attrelid,\n rules_from_seclabels.attnum,\n rules_from_seclabels.relnamespace,\n rules_from_seclabels.relname,\n rules_from_seclabels.attname,\n rules_from_seclabels.format_type,\n rules_from_seclabels.col_description,\n rules_from_seclabels.key_id_column,\n rules_from_seclabels.key_id,\n rules_from_seclabels.associated_columns,\n rules_from_seclabels.nonce_column,\n rules_from_seclabels.view_name,\n rules_from_seclabels.priority,\n rules_from_seclabels.security_invoker\n FROM rules_from_seclabels\n ORDER BY rules_from_seclabels.attrelid, rules_from_seclabels.attnum, rules_from_seclabels.priority DESC\n)"},{"name":"pgsodium.mask_columns","type":"VIEW","comment":"","columns":[{"name":"attname","type":"name","nullable":true,"default":null,"comment":""},{"name":"attrelid","type":"oid","nullable":true,"default":null,"comment":""},{"name":"key_id","type":"text","nullable":true,"default":null,"comment":""},{"name":"key_id_column","type":"text","nullable":true,"default":null,"comment":""},{"name":"associated_columns","type":"text","nullable":true,"default":null,"comment":""},{"name":"nonce_column","type":"text","nullable":true,"default":null,"comment":""},{"name":"format_type","type":"text","nullable":true,"default":null,"comment":""}],"indexes":[],"constraints":[],"triggers":[],"def":"CREATE VIEW mask_columns AS (\n SELECT a.attname,\n a.attrelid,\n m.key_id,\n m.key_id_column,\n m.associated_columns,\n m.nonce_column,\n m.format_type\n FROM (pg_attribute a\n LEFT JOIN pgsodium.masking_rule m ON (((m.attrelid = a.attrelid) AND (m.attname = a.attname))))\n WHERE ((a.attnum \u003e 0) AND (NOT a.attisdropped))\n ORDER BY a.attnum\n)","referenced_tables":["pg_attribute","pgsodium.masking_rule"]},{"name":"pgsodium.decrypted_key","type":"VIEW","comment":"","columns":[{"name":"id","type":"uuid","nullable":true,"default":null,"comment":""},{"name":"status","type":"pgsodium.key_status","nullable":true,"default":null,"comment":""},{"name":"created","type":"timestamp with time zone","nullable":true,"default":null,"comment":""},{"name":"expires","type":"timestamp with time zone","nullable":true,"default":null,"comment":""},{"name":"key_type","type":"pgsodium.key_type","nullable":true,"default":null,"comment":""},{"name":"key_id","type":"bigint","nullable":true,"default":null,"comment":""},{"name":"key_context","type":"bytea","nullable":true,"default":null,"comment":""},{"name":"name","type":"text","nullable":true,"default":null,"comment":""},{"name":"associated_data","type":"text","nullable":true,"default":null,"comment":""},{"name":"raw_key","type":"bytea","nullable":true,"default":null,"comment":""},{"name":"decrypted_raw_key","type":"bytea","nullable":true,"default":null,"comment":""},{"name":"raw_key_nonce","type":"bytea","nullable":true,"default":null,"comment":""},{"name":"parent_key","type":"uuid","nullable":true,"default":null,"comment":""},{"name":"comment","type":"text","nullable":true,"default":null,"comment":""}],"indexes":[],"constraints":[],"triggers":[],"def":"CREATE VIEW decrypted_key AS (\n SELECT key.id,\n key.status,\n key.created,\n key.expires,\n key.key_type,\n key.key_id,\n key.key_context,\n key.name,\n key.associated_data,\n key.raw_key,\n CASE\n WHEN (key.raw_key IS NULL) THEN NULL::bytea\n ELSE\n CASE\n WHEN (key.parent_key IS NULL) THEN NULL::bytea\n ELSE pgsodium.crypto_aead_det_decrypt(key.raw_key, convert_to(((key.id)::text || key.associated_data), 'utf8'::name), key.parent_key, key.raw_key_nonce)\n END\n END AS decrypted_raw_key,\n key.raw_key_nonce,\n key.parent_key,\n key.comment\n FROM pgsodium.key\n)","referenced_tables":["pgsodium.key"]},{"name":"vault.secrets","type":"BASE TABLE","comment":"Table with encrypted `secret` column for storing sensitive information on disk.","columns":[{"name":"id","type":"uuid","nullable":false,"default":"gen_random_uuid()","comment":""},{"name":"name","type":"text","nullable":true,"default":null,"comment":""},{"name":"description","type":"text","nullable":false,"default":"''::text","comment":""},{"name":"secret","type":"text","nullable":false,"default":null,"comment":""},{"name":"key_id","type":"uuid","nullable":true,"default":"(pgsodium.create_key()).id","comment":""},{"name":"nonce","type":"bytea","nullable":true,"default":"pgsodium.crypto_aead_det_noncegen()","comment":""},{"name":"created_at","type":"timestamp with time zone","nullable":false,"default":"CURRENT_TIMESTAMP","comment":""},{"name":"updated_at","type":"timestamp with time zone","nullable":false,"default":"CURRENT_TIMESTAMP","comment":""}],"indexes":[{"name":"secrets_pkey","def":"CREATE UNIQUE INDEX secrets_pkey ON vault.secrets USING btree (id)","table":"vault.secrets","columns":["id"],"comment":""},{"name":"secrets_name_idx","def":"CREATE UNIQUE INDEX secrets_name_idx ON vault.secrets USING btree (name) WHERE (name IS NOT NULL)","table":"vault.secrets","columns":["name"],"comment":""}],"constraints":[{"name":"secrets_key_id_fkey","type":"FOREIGN KEY","def":"FOREIGN KEY (key_id) REFERENCES pgsodium.key(id)","table":"vault.secrets","referenced_table":"key","columns":["key_id"],"referenced_columns":["id"],"comment":""},{"name":"secrets_pkey","type":"PRIMARY KEY","def":"PRIMARY KEY (id)","table":"vault.secrets","referenced_table":"","columns":["id"],"referenced_columns":[],"comment":""}],"triggers":[{"name":"secrets_encrypt_secret_trigger_secret","def":"CREATE TRIGGER secrets_encrypt_secret_trigger_secret BEFORE INSERT OR UPDATE OF secret ON vault.secrets FOR EACH ROW EXECUTE FUNCTION vault.secrets_encrypt_secret_secret()","comment":""}],"def":""},{"name":"vault.decrypted_secrets","type":"VIEW","comment":"","columns":[{"name":"id","type":"uuid","nullable":true,"default":null,"comment":""},{"name":"name","type":"text","nullable":true,"default":null,"comment":""},{"name":"description","type":"text","nullable":true,"default":null,"comment":""},{"name":"secret","type":"text","nullable":true,"default":null,"comment":""},{"name":"decrypted_secret","type":"text","nullable":true,"default":null,"comment":""},{"name":"key_id","type":"uuid","nullable":true,"default":null,"comment":""},{"name":"nonce","type":"bytea","nullable":true,"default":null,"comment":""},{"name":"created_at","type":"timestamp with time zone","nullable":true,"default":null,"comment":""},{"name":"updated_at","type":"timestamp with time zone","nullable":true,"default":null,"comment":""}],"indexes":[],"constraints":[],"triggers":[],"def":"CREATE VIEW decrypted_secrets AS (\n SELECT secrets.id,\n secrets.name,\n secrets.description,\n secrets.secret,\n CASE\n WHEN (secrets.secret IS NULL) THEN NULL::text\n ELSE\n CASE\n WHEN (secrets.key_id IS NULL) THEN NULL::text\n ELSE convert_from(pgsodium.crypto_aead_det_decrypt(decode(secrets.secret, 'base64'::text), convert_to(((((secrets.id)::text || secrets.description) || (secrets.created_at)::text) || (secrets.updated_at)::text), 'utf8'::name), secrets.key_id, secrets.nonce), 'utf8'::name)\n END\n END AS decrypted_secret,\n secrets.key_id,\n secrets.nonce,\n secrets.created_at,\n secrets.updated_at\n FROM vault.secrets\n)","referenced_tables":["vault.secrets"]}],"relations":[{"table":"storage.buckets","columns":["owner"],"cardinality":"Zero or more","parent_table":"auth.users","parent_columns":["id"],"parent_cardinality":"Zero or one","def":"FOREIGN KEY (owner) REFERENCES auth.users(id)","virtual":false},{"table":"storage.objects","columns":["owner"],"cardinality":"Zero or more","parent_table":"auth.users","parent_columns":["id"],"parent_cardinality":"Zero or one","def":"FOREIGN KEY (owner) REFERENCES auth.users(id)","virtual":false},{"table":"storage.objects","columns":["bucket_id"],"cardinality":"Zero or more","parent_table":"storage.buckets","parent_columns":["id"],"parent_cardinality":"Zero or one","def":"FOREIGN KEY (bucket_id) REFERENCES storage.buckets(id)","virtual":false},{"table":"public.study","columns":["user_id"],"cardinality":"Zero or more","parent_table":"public.user","parent_columns":["id"],"parent_cardinality":"Exactly one","def":"FOREIGN KEY (user_id) REFERENCES \"user\"(id)","virtual":false},{"table":"public.study_subject","columns":["study_id"],"cardinality":"Zero or more","parent_table":"public.study","parent_columns":["id"],"parent_cardinality":"Exactly one","def":"FOREIGN KEY (study_id) REFERENCES study(id) ON DELETE CASCADE","virtual":false},{"table":"public.study_subject","columns":["invite_code"],"cardinality":"Zero or more","parent_table":"public.study_invite","parent_columns":["code"],"parent_cardinality":"Zero or one","def":"FOREIGN KEY (invite_code) REFERENCES study_invite(code) ON DELETE CASCADE","virtual":false},{"table":"public.study_subject","columns":["user_id"],"cardinality":"Zero or more","parent_table":"public.user","parent_columns":["id"],"parent_cardinality":"Exactly one","def":"FOREIGN KEY (user_id) REFERENCES \"user\"(id)","virtual":false},{"table":"public.repo","columns":["study_id"],"cardinality":"Zero or more","parent_table":"public.study","parent_columns":["id"],"parent_cardinality":"Exactly one","def":"FOREIGN KEY (study_id) REFERENCES study(id)","virtual":false},{"table":"public.repo","columns":["user_id"],"cardinality":"Zero or more","parent_table":"public.user","parent_columns":["id"],"parent_cardinality":"Exactly one","def":"FOREIGN KEY (user_id) REFERENCES \"user\"(id) ON DELETE CASCADE","virtual":false},{"table":"public.study_invite","columns":["study_id"],"cardinality":"Zero or more","parent_table":"public.study","parent_columns":["id"],"parent_cardinality":"Exactly one","def":"FOREIGN KEY (study_id) REFERENCES study(id) ON DELETE CASCADE","virtual":false},{"table":"public.subject_progress","columns":["subject_id"],"cardinality":"Zero or more","parent_table":"public.study_subject","parent_columns":["id"],"parent_cardinality":"Exactly one","def":"FOREIGN KEY (subject_id) REFERENCES study_subject(id) ON DELETE CASCADE","virtual":false},{"table":"pgsodium.key","columns":["parent_key"],"cardinality":"Zero or more","parent_table":"pgsodium.key","parent_columns":["id"],"parent_cardinality":"Zero or one","def":"FOREIGN KEY (parent_key) REFERENCES pgsodium.key(id)","virtual":false},{"table":"vault.secrets","columns":["key_id"],"cardinality":"Zero or more","parent_table":"pgsodium.key","parent_columns":["id"],"parent_cardinality":"Zero or one","def":"FOREIGN KEY (key_id) REFERENCES pgsodium.key(id)","virtual":false}],"functions":[{"name":"extensions.uuid_generate_v4","return_type":"uuid","arguments":"","type":"FUNCTION"},{"name":"pgbouncer.get_auth","return_type":"record","arguments":"p_usename text","type":"FUNCTION"},{"name":"storage.filename","return_type":"text","arguments":"name text","type":"FUNCTION"},{"name":"extensions.digest","return_type":"bytea","arguments":"text, text","type":"FUNCTION"},{"name":"storage.foldername","return_type":"_text","arguments":"name text","type":"FUNCTION"},{"name":"extensions.decrypt_iv","return_type":"bytea","arguments":"bytea, bytea, bytea, text","type":"FUNCTION"},{"name":"storage.extension","return_type":"text","arguments":"name text","type":"FUNCTION"},{"name":"extensions.gen_random_bytes","return_type":"bytea","arguments":"integer","type":"FUNCTION"},{"name":"extensions.encrypt","return_type":"bytea","arguments":"bytea, bytea, text","type":"FUNCTION"},{"name":"extensions.decrypt","return_type":"bytea","arguments":"bytea, bytea, text","type":"FUNCTION"},{"name":"extensions.encrypt_iv","return_type":"bytea","arguments":"bytea, bytea, bytea, text","type":"FUNCTION"},{"name":"extensions.gen_random_uuid","return_type":"uuid","arguments":"","type":"FUNCTION"},{"name":"extensions.uuid_nil","return_type":"uuid","arguments":"","type":"FUNCTION"},{"name":"extensions.uuid_ns_dns","return_type":"uuid","arguments":"","type":"FUNCTION"},{"name":"storage.search","return_type":"record","arguments":"prefix text, bucketname text, limits integer DEFAULT 100, levels integer DEFAULT 1, offsets integer DEFAULT 0","type":"FUNCTION"},{"name":"extensions.uuid_ns_url","return_type":"uuid","arguments":"","type":"FUNCTION"},{"name":"extensions.uuid_ns_oid","return_type":"uuid","arguments":"","type":"FUNCTION"},{"name":"auth.uid","return_type":"uuid","arguments":"","type":"FUNCTION"},{"name":"auth.email","return_type":"text","arguments":"","type":"FUNCTION"},{"name":"extensions.uuid_generate_v3","return_type":"uuid","arguments":"namespace uuid, name text","type":"FUNCTION"},{"name":"extensions.uuid_ns_x500","return_type":"uuid","arguments":"","type":"FUNCTION"},{"name":"extensions.uuid_generate_v1","return_type":"uuid","arguments":"","type":"FUNCTION"},{"name":"extensions.uuid_generate_v1mc","return_type":"uuid","arguments":"","type":"FUNCTION"},{"name":"net.check_worker_is_up","return_type":"void","arguments":"","type":"FUNCTION"},{"name":"net._await_response","return_type":"bool","arguments":"request_id bigint","type":"FUNCTION"},{"name":"net._urlencode_string","return_type":"text","arguments":"string character varying","type":"FUNCTION"},{"name":"net._encode_url_with_params_array","return_type":"text","arguments":"url text, params_array text[]","type":"FUNCTION"},{"name":"graphql.increment_schema_version","return_type":"event_trigger","arguments":"","type":"FUNCTION"},{"name":"graphql.get_schema_version","return_type":"int4","arguments":"","type":"FUNCTION"},{"name":"graphql.resolve","return_type":"jsonb","arguments":"query text, variables jsonb DEFAULT '{}'::jsonb, \"operationName\" text DEFAULT NULL::text, extensions jsonb DEFAULT NULL::jsonb","type":"FUNCTION"},{"name":"extensions.pgp_pub_decrypt_bytea","return_type":"bytea","arguments":"bytea, bytea, text","type":"FUNCTION"},{"name":"extensions.pgp_pub_decrypt","return_type":"text","arguments":"bytea, bytea, text, text","type":"FUNCTION"},{"name":"extensions.pgp_pub_decrypt_bytea","return_type":"bytea","arguments":"bytea, bytea, text, text","type":"FUNCTION"},{"name":"net.http_delete","return_type":"int8","arguments":"url text, params jsonb DEFAULT '{}'::jsonb, headers jsonb DEFAULT '{}'::jsonb, timeout_milliseconds integer DEFAULT 2000","type":"FUNCTION"},{"name":"net._http_collect_response","return_type":"http_response_result","arguments":"request_id bigint, async boolean DEFAULT true","type":"FUNCTION"},{"name":"net.http_collect_response","return_type":"http_response_result","arguments":"request_id bigint, async boolean DEFAULT true","type":"FUNCTION"},{"name":"supabase_functions.http_request","return_type":"trigger","arguments":"","type":"FUNCTION"},{"name":"public.active_subject_count","return_type":"int4","arguments":"study study","type":"FUNCTION"},{"name":"public.can_edit","return_type":"bool","arguments":"user_id uuid, study_param study","type":"FUNCTION"},{"name":"public.get_study_from_invite","return_type":"record","arguments":"invite_code text","type":"FUNCTION"},{"name":"public.get_study_record_from_invite","return_type":"study","arguments":"invite_code text","type":"FUNCTION"},{"name":"public.handle_new_user","return_type":"trigger","arguments":"","type":"FUNCTION"},{"name":"public.has_study_ended","return_type":"bool","arguments":"psubject_id uuid","type":"FUNCTION"},{"name":"public.has_results_public","return_type":"bool","arguments":"psubject_id uuid","type":"FUNCTION"},{"name":"public.has_study_ended","return_type":"bool","arguments":"subject study_subject","type":"FUNCTION"},{"name":"public.is_active_subject","return_type":"bool","arguments":"psubject_id uuid, days_active integer","type":"FUNCTION"},{"name":"public.is_study_subject_of","return_type":"bool","arguments":"_user_id uuid, _study_id uuid","type":"FUNCTION"},{"name":"public.last_completed_task","return_type":"date","arguments":"psubject_id uuid","type":"FUNCTION"},{"name":"public.study_active_days","return_type":"_int4","arguments":"study_param study","type":"FUNCTION"},{"name":"public.study_ended_count","return_type":"int4","arguments":"study study","type":"FUNCTION"},{"name":"public.study_length","return_type":"int4","arguments":"study_param study","type":"FUNCTION"},{"name":"public.study_missed_days","return_type":"_int4","arguments":"study_param study","type":"FUNCTION"},{"name":"net.http_get","return_type":"int8","arguments":"url text, params jsonb DEFAULT '{}'::jsonb, headers jsonb DEFAULT '{}'::jsonb, timeout_milliseconds integer DEFAULT 2000","type":"FUNCTION"},{"name":"extensions.pgp_sym_decrypt_bytea","return_type":"bytea","arguments":"bytea, text, text","type":"FUNCTION"},{"name":"public.study_participant_count","return_type":"int4","arguments":"study study","type":"FUNCTION"},{"name":"public.study_total_tasks","return_type":"int4","arguments":"subject study_subject","type":"FUNCTION"},{"name":"public.subject_current_day","return_type":"int4","arguments":"subject study_subject","type":"FUNCTION"},{"name":"public.subject_total_active_days","return_type":"int4","arguments":"subject study_subject","type":"FUNCTION"},{"name":"public.user_email","return_type":"text","arguments":"user_id uuid","type":"FUNCTION"},{"name":"extensions.pgp_pub_encrypt","return_type":"bytea","arguments":"text, bytea","type":"FUNCTION"},{"name":"extensions.pgp_pub_encrypt_bytea","return_type":"bytea","arguments":"bytea, bytea","type":"FUNCTION"},{"name":"extensions.pgp_pub_encrypt","return_type":"bytea","arguments":"text, bytea, text","type":"FUNCTION"},{"name":"extensions.pgp_pub_encrypt_bytea","return_type":"bytea","arguments":"bytea, bytea, text","type":"FUNCTION"},{"name":"extensions.pgp_pub_decrypt","return_type":"text","arguments":"bytea, bytea","type":"FUNCTION"},{"name":"extensions.pgp_pub_decrypt_bytea","return_type":"bytea","arguments":"bytea, bytea","type":"FUNCTION"},{"name":"extensions.pgp_pub_decrypt","return_type":"text","arguments":"bytea, bytea, text","type":"FUNCTION"},{"name":"extensions.gen_salt","return_type":"text","arguments":"text, integer","type":"FUNCTION"},{"name":"auth.role","return_type":"text","arguments":"","type":"FUNCTION"},{"name":"extensions.uuid_generate_v5","return_type":"uuid","arguments":"namespace uuid, name text","type":"FUNCTION"},{"name":"extensions.digest","return_type":"bytea","arguments":"bytea, text","type":"FUNCTION"},{"name":"extensions.hmac","return_type":"bytea","arguments":"text, text, text","type":"FUNCTION"},{"name":"extensions.hmac","return_type":"bytea","arguments":"bytea, bytea, text","type":"FUNCTION"},{"name":"extensions.crypt","return_type":"text","arguments":"text, text","type":"FUNCTION"},{"name":"extensions.gen_salt","return_type":"text","arguments":"text","type":"FUNCTION"},{"name":"extensions.sign","return_type":"text","arguments":"payload json, secret text, algorithm text DEFAULT 'HS256'::text","type":"FUNCTION"},{"name":"extensions.pgrst_ddl_watch","return_type":"event_trigger","arguments":"","type":"FUNCTION"},{"name":"graphql._internal_resolve","return_type":"jsonb","arguments":"query text, variables jsonb DEFAULT '{}'::jsonb, \"operationName\" text DEFAULT NULL::text, extensions jsonb DEFAULT NULL::jsonb","type":"FUNCTION"},{"name":"graphql.exception","return_type":"text","arguments":"message text","type":"FUNCTION"},{"name":"graphql.comment_directive","return_type":"jsonb","arguments":"comment_ text","type":"FUNCTION"},{"name":"extensions.pgrst_drop_watch","return_type":"event_trigger","arguments":"","type":"FUNCTION"},{"name":"graphql_public.graphql","return_type":"jsonb","arguments":"\"operationName\" text DEFAULT NULL::text, query text DEFAULT NULL::text, variables jsonb DEFAULT NULL::jsonb, extensions jsonb DEFAULT NULL::jsonb","type":"FUNCTION"},{"name":"extensions.grant_pg_graphql_access","return_type":"event_trigger","arguments":"","type":"FUNCTION"},{"name":"net.http_post","return_type":"int8","arguments":"url text, body jsonb DEFAULT '{}'::jsonb, params jsonb DEFAULT '{}'::jsonb, headers jsonb DEFAULT '{\"Content-Type\": \"application/json\"}'::jsonb, timeout_milliseconds integer DEFAULT 2000","type":"FUNCTION"},{"name":"pgsodium.crypto_pwhash_saltgen","return_type":"bytea","arguments":"","type":"FUNCTION"},{"name":"pgsodium.crypto_kx_client_session_keys","return_type":"crypto_kx_session","arguments":"client_pk bytea, client_sk bytea, server_pk bytea","type":"FUNCTION"},{"name":"pgsodium.crypto_kx_server_session_keys","return_type":"crypto_kx_session","arguments":"server_pk bytea, server_sk bytea, client_pk bytea","type":"FUNCTION"},{"name":"pgsodium.crypto_auth_hmacsha512_keygen","return_type":"bytea","arguments":"","type":"FUNCTION"},{"name":"pgsodium.crypto_box_new_seed","return_type":"bytea","arguments":"","type":"FUNCTION"},{"name":"pgsodium.crypto_sign_new_seed","return_type":"bytea","arguments":"","type":"FUNCTION"},{"name":"pgsodium.derive_key","return_type":"bytea","arguments":"key_id bigint, key_len integer DEFAULT 32, context bytea DEFAULT '\\x7067736f6469756d'::bytea","type":"FUNCTION"},{"name":"pgsodium.pgsodium_derive","return_type":"bytea","arguments":"key_id bigint, key_len integer DEFAULT 32, context bytea DEFAULT decode('pgsodium'::text, 'escape'::text)","type":"FUNCTION"},{"name":"pgsodium.randombytes_new_seed","return_type":"bytea","arguments":"","type":"FUNCTION"},{"name":"pgsodium.crypto_secretbox_keygen","return_type":"bytea","arguments":"","type":"FUNCTION"},{"name":"pgsodium.crypto_auth_keygen","return_type":"bytea","arguments":"","type":"FUNCTION"},{"name":"pgsodium.crypto_box_noncegen","return_type":"bytea","arguments":"","type":"FUNCTION"},{"name":"pgsodium.crypto_aead_ietf_keygen","return_type":"bytea","arguments":"","type":"FUNCTION"},{"name":"pgsodium.crypto_shorthash_keygen","return_type":"bytea","arguments":"","type":"FUNCTION"},{"name":"pgsodium.crypto_generichash_keygen","return_type":"bytea","arguments":"","type":"FUNCTION"},{"name":"pgsodium.crypto_kdf_keygen","return_type":"bytea","arguments":"","type":"FUNCTION"},{"name":"pgsodium.crypto_kx_new_keypair","return_type":"crypto_kx_keypair","arguments":"","type":"FUNCTION"},{"name":"pgsodium.crypto_kx_new_seed","return_type":"bytea","arguments":"","type":"FUNCTION"},{"name":"pgsodium.crypto_kx_seed_new_keypair","return_type":"crypto_kx_keypair","arguments":"seed bytea","type":"FUNCTION"},{"name":"pgsodium.crypto_auth_hmacsha256_keygen","return_type":"bytea","arguments":"","type":"FUNCTION"},{"name":"pgsodium.crypto_box_new_keypair","return_type":"crypto_box_keypair","arguments":"","type":"FUNCTION"},{"name":"pgsodium.crypto_sign_new_keypair","return_type":"crypto_sign_keypair","arguments":"","type":"FUNCTION"},{"name":"pgsodium.crypto_sign_init","return_type":"bytea","arguments":"","type":"FUNCTION"},{"name":"pgsodium.crypto_sign_update","return_type":"bytea","arguments":"state bytea, message bytea","type":"FUNCTION"},{"name":"pgsodium.randombytes_random","return_type":"int4","arguments":"","type":"FUNCTION"},{"name":"pgsodium.crypto_secretbox_noncegen","return_type":"bytea","arguments":"","type":"FUNCTION"},{"name":"pgsodium.crypto_aead_ietf_noncegen","return_type":"bytea","arguments":"","type":"FUNCTION"},{"name":"pgsodium.crypto_secretstream_keygen","return_type":"bytea","arguments":"","type":"FUNCTION"},{"name":"pgsodium.crypto_stream_xchacha20_keygen","return_type":"bytea","arguments":"","type":"FUNCTION"},{"name":"pgsodium.crypto_stream_xchacha20_noncegen","return_type":"bytea","arguments":"","type":"FUNCTION"},{"name":"pgsodium.crypto_cmp","return_type":"bool","arguments":"text, text","type":"FUNCTION"},{"name":"pgsodium.crypto_signcrypt_new_keypair","return_type":"crypto_signcrypt_keypair","arguments":"","type":"FUNCTION"},{"name":"pgsodium.crypto_aead_det_encrypt","return_type":"bytea","arguments":"message bytea, additional bytea, key bytea, nonce bytea DEFAULT NULL::bytea","type":"FUNCTION"},{"name":"pgsodium.crypto_aead_det_decrypt","return_type":"bytea","arguments":"ciphertext bytea, additional bytea, key bytea, nonce bytea DEFAULT NULL::bytea","type":"FUNCTION"},{"name":"pgsodium.crypto_aead_det_encrypt","return_type":"bytea","arguments":"message bytea, additional bytea, key_id bigint, context bytea DEFAULT '\\x7067736f6469756d'::bytea, nonce bytea DEFAULT NULL::bytea","type":"FUNCTION"},{"name":"pgsodium.crypto_aead_det_decrypt","return_type":"bytea","arguments":"message bytea, additional bytea, key_id bigint, context bytea DEFAULT '\\x7067736f6469756d'::bytea, nonce bytea DEFAULT NULL::bytea","type":"FUNCTION"},{"name":"pgsodium.version","return_type":"text","arguments":"","type":"FUNCTION"},{"name":"pgsodium.crypto_aead_det_noncegen","return_type":"bytea","arguments":"","type":"FUNCTION"},{"name":"pgsodium.has_mask","return_type":"bool","arguments":"role regrole, source_name text","type":"FUNCTION"},{"name":"pgsodium.mask_columns","return_type":"record","arguments":"source_relid oid","type":"FUNCTION"},{"name":"pgsodium.crypto_sign_final_verify","return_type":"bool","arguments":"state bytea, signature bytea, key bytea","type":"FUNCTION"},{"name":"pgsodium.create_mask_view","return_type":"void","arguments":"relid oid, debug boolean DEFAULT false","type":"FUNCTION"},{"name":"pgsodium.create_key","return_type":"valid_key","arguments":"key_type pgsodium.key_type DEFAULT 'aead-det'::pgsodium.key_type, name text DEFAULT NULL::text, raw_key bytea DEFAULT NULL::bytea, raw_key_nonce bytea DEFAULT NULL::bytea, parent_key uuid DEFAULT NULL::uuid, key_context bytea DEFAULT '\\x7067736f6469756d'::bytea, expires timestamp with time zone DEFAULT NULL::timestamp with time zone, associated_data text DEFAULT ''::text","type":"FUNCTION"},{"name":"pgsodium.get_key_by_name","return_type":"valid_key","arguments":"text","type":"FUNCTION"},{"name":"pgsodium.quote_assoc","return_type":"text","arguments":"text, boolean DEFAULT false","type":"FUNCTION"},{"name":"pgsodium.crypto_sign_open","return_type":"bytea","arguments":"signed_message bytea, key bytea","type":"FUNCTION"},{"name":"pgsodium.crypto_kdf_derive_from_key","return_type":"bytea","arguments":"subkey_size integer, subkey_id bigint, context bytea, primary_key uuid","type":"FUNCTION"},{"name":"pgsodium.get_named_keys","return_type":"valid_key","arguments":"filter text DEFAULT '%'::text","type":"FUNCTION"},{"name":"pgsodium.crypto_aead_det_encrypt","return_type":"bytea","arguments":"message bytea, additional bytea, key_uuid uuid","type":"FUNCTION"},{"name":"pgsodium.crypto_aead_det_decrypt","return_type":"bytea","arguments":"message bytea, additional bytea, key_uuid uuid","type":"FUNCTION"},{"name":"pgsodium.crypto_aead_ietf_encrypt","return_type":"bytea","arguments":"message bytea, additional bytea, nonce bytea, key_id bigint, context bytea DEFAULT '\\x7067736f6469756d'::bytea","type":"FUNCTION"},{"name":"pgsodium.get_key_by_id","return_type":"valid_key","arguments":"uuid","type":"FUNCTION"},{"name":"pgsodium.enable_security_label_trigger","return_type":"void","arguments":"","type":"FUNCTION"},{"name":"pgsodium.disable_security_label_trigger","return_type":"void","arguments":"","type":"FUNCTION"},{"name":"pgsodium.update_mask","return_type":"void","arguments":"target oid, debug boolean DEFAULT false","type":"FUNCTION"},{"name":"pgsodium.crypto_sign_update_agg1","return_type":"bytea","arguments":"state bytea, message bytea","type":"FUNCTION"},{"name":"pgsodium.crypto_sign_update_agg2","return_type":"bytea","arguments":"cur_state bytea, initial_state bytea, message bytea","type":"FUNCTION"},{"name":"pgsodium.crypto_sign_update_agg","return_type":"bytea","arguments":"message bytea","type":"a"},{"name":"pgsodium.crypto_sign_update_agg","return_type":"bytea","arguments":"state bytea, message bytea","type":"a"},{"name":"pgsodium.encrypted_columns","return_type":"text","arguments":"relid oid","type":"FUNCTION"},{"name":"pgsodium.decrypted_columns","return_type":"text","arguments":"relid oid","type":"FUNCTION"},{"name":"pgsodium.crypto_aead_ietf_encrypt","return_type":"bytea","arguments":"message bytea, additional bytea, nonce bytea, key bytea","type":"FUNCTION"},{"name":"pgsodium.crypto_aead_ietf_encrypt","return_type":"bytea","arguments":"message bytea, additional bytea, nonce bytea, key_uuid uuid","type":"FUNCTION"},{"name":"pgsodium.crypto_aead_ietf_decrypt","return_type":"bytea","arguments":"message bytea, additional bytea, nonce bytea, key bytea","type":"FUNCTION"},{"name":"pgsodium.crypto_aead_ietf_decrypt","return_type":"bytea","arguments":"message bytea, additional bytea, nonce bytea, key_id bigint, context bytea DEFAULT '\\x7067736f6469756d'::bytea","type":"FUNCTION"},{"name":"pgsodium.crypto_aead_ietf_decrypt","return_type":"bytea","arguments":"message bytea, additional bytea, nonce bytea, key_uuid uuid","type":"FUNCTION"},{"name":"pgsodium.crypto_auth","return_type":"bytea","arguments":"message bytea, key bytea","type":"FUNCTION"},{"name":"pgsodium.crypto_auth","return_type":"bytea","arguments":"message bytea, key_id bigint, context bytea DEFAULT '\\x7067736f6469756d'::bytea","type":"FUNCTION"},{"name":"pgsodium.crypto_auth","return_type":"bytea","arguments":"message bytea, key_uuid uuid","type":"FUNCTION"},{"name":"pgsodium.crypto_auth_verify","return_type":"bool","arguments":"mac bytea, message bytea, key bytea","type":"FUNCTION"},{"name":"pgsodium.crypto_auth_verify","return_type":"bool","arguments":"mac bytea, message bytea, key_id bigint, context bytea DEFAULT '\\x7067736f6469756d'::bytea","type":"FUNCTION"},{"name":"pgsodium.crypto_auth_verify","return_type":"bool","arguments":"mac bytea, message bytea, key_uuid uuid","type":"FUNCTION"},{"name":"pgsodium.crypto_box_seed_new_keypair","return_type":"crypto_box_keypair","arguments":"seed bytea","type":"FUNCTION"},{"name":"pgsodium.crypto_box","return_type":"bytea","arguments":"message bytea, nonce bytea, public bytea, secret bytea","type":"FUNCTION"},{"name":"pgsodium.crypto_box_open","return_type":"bytea","arguments":"ciphertext bytea, nonce bytea, public bytea, secret bytea","type":"FUNCTION"},{"name":"pgsodium.crypto_box_seal","return_type":"bytea","arguments":"message bytea, public_key bytea","type":"FUNCTION"},{"name":"pgsodium.crypto_box_seal_open","return_type":"bytea","arguments":"ciphertext bytea, public_key bytea, secret_key bytea","type":"FUNCTION"},{"name":"pgsodium.crypto_generichash","return_type":"bytea","arguments":"message bytea, key bigint, context bytea DEFAULT '\\x7067736f6469756d'::bytea","type":"FUNCTION"},{"name":"pgsodium.crypto_generichash","return_type":"bytea","arguments":"message bytea, key bytea DEFAULT NULL::bytea","type":"FUNCTION"},{"name":"pgsodium.crypto_generichash","return_type":"bytea","arguments":"message bytea, key_uuid uuid","type":"FUNCTION"},{"name":"pgsodium.crypto_shorthash","return_type":"bytea","arguments":"message bytea, key bigint, context bytea DEFAULT '\\x7067736f6469756d'::bytea","type":"FUNCTION"},{"name":"pgsodium.crypto_shorthash","return_type":"bytea","arguments":"message bytea, key bytea","type":"FUNCTION"},{"name":"pgsodium.crypto_shorthash","return_type":"bytea","arguments":"message bytea, key_uuid uuid","type":"FUNCTION"},{"name":"pgsodium.sodium_bin2base64","return_type":"text","arguments":"bin bytea","type":"FUNCTION"},{"name":"pgsodium.sodium_base642bin","return_type":"bytea","arguments":"base64 text","type":"FUNCTION"},{"name":"pgsodium.crypto_auth_hmacsha512","return_type":"bytea","arguments":"message bytea, secret bytea","type":"FUNCTION"},{"name":"pgsodium.crypto_auth_hmacsha512","return_type":"bytea","arguments":"message bytea, key_id bigint, context bytea DEFAULT '\\x7067736f6469756d'::bytea","type":"FUNCTION"},{"name":"pgsodium.crypto_auth_hmacsha512","return_type":"bytea","arguments":"message bytea, key_uuid uuid","type":"FUNCTION"},{"name":"pgsodium.crypto_auth_hmacsha512_verify","return_type":"bool","arguments":"hash bytea, message bytea, secret bytea","type":"FUNCTION"},{"name":"pgsodium.crypto_auth_hmacsha512_verify","return_type":"bool","arguments":"hash bytea, message bytea, key_id bigint, context bytea DEFAULT '\\x7067736f6469756d'::bytea","type":"FUNCTION"},{"name":"pgsodium.crypto_auth_hmacsha512_verify","return_type":"bool","arguments":"signature bytea, message bytea, key_uuid uuid","type":"FUNCTION"},{"name":"pgsodium.crypto_auth_hmacsha256","return_type":"bytea","arguments":"message bytea, secret bytea","type":"FUNCTION"},{"name":"pgsodium.crypto_auth_hmacsha256","return_type":"bytea","arguments":"message bytea, key_id bigint, context bytea DEFAULT '\\x7067736f6469756d'::bytea","type":"FUNCTION"},{"name":"pgsodium.crypto_auth_hmacsha256","return_type":"bytea","arguments":"message bytea, key_uuid uuid","type":"FUNCTION"},{"name":"pgsodium.crypto_auth_hmacsha256_verify","return_type":"bool","arguments":"hash bytea, message bytea, secret bytea","type":"FUNCTION"},{"name":"pgsodium.crypto_sign_final_create","return_type":"bytea","arguments":"state bytea, key bytea","type":"FUNCTION"},{"name":"pgsodium.crypto_auth_hmacsha256_verify","return_type":"bool","arguments":"hash bytea, message bytea, key_id bigint, context bytea DEFAULT '\\x7067736f6469756d'::bytea","type":"FUNCTION"},{"name":"pgsodium.crypto_auth_hmacsha256_verify","return_type":"bool","arguments":"signature bytea, message bytea, key_uuid uuid","type":"FUNCTION"},{"name":"pgsodium.crypto_kdf_derive_from_key","return_type":"bytea","arguments":"subkey_size bigint, subkey_id bigint, context bytea, primary_key bytea","type":"FUNCTION"},{"name":"pgsodium.crypto_pwhash","return_type":"bytea","arguments":"password bytea, salt bytea","type":"FUNCTION"},{"name":"pgsodium.crypto_pwhash_str","return_type":"bytea","arguments":"password bytea","type":"FUNCTION"},{"name":"pgsodium.crypto_pwhash_str_verify","return_type":"bool","arguments":"hashed_password bytea, password bytea","type":"FUNCTION"},{"name":"pgsodium.randombytes_uniform","return_type":"int4","arguments":"upper_bound integer","type":"FUNCTION"},{"name":"pgsodium.randombytes_buf","return_type":"bytea","arguments":"size integer","type":"FUNCTION"},{"name":"pgsodium.randombytes_buf_deterministic","return_type":"bytea","arguments":"size integer, seed bytea","type":"FUNCTION"},{"name":"pgsodium.crypto_secretbox","return_type":"bytea","arguments":"message bytea, nonce bytea, key bytea","type":"FUNCTION"},{"name":"pgsodium.crypto_secretbox","return_type":"bytea","arguments":"message bytea, nonce bytea, key_id bigint, context bytea DEFAULT '\\x7067736f6469756d'::bytea","type":"FUNCTION"},{"name":"pgsodium.crypto_secretbox","return_type":"bytea","arguments":"message bytea, nonce bytea, key_uuid uuid","type":"FUNCTION"},{"name":"pgsodium.crypto_secretbox_open","return_type":"bytea","arguments":"ciphertext bytea, nonce bytea, key bytea","type":"FUNCTION"},{"name":"pgsodium.crypto_secretbox_open","return_type":"bytea","arguments":"message bytea, nonce bytea, key_id bigint, context bytea DEFAULT '\\x7067736f6469756d'::bytea","type":"FUNCTION"},{"name":"pgsodium.crypto_secretbox_open","return_type":"bytea","arguments":"message bytea, nonce bytea, key_uuid uuid","type":"FUNCTION"},{"name":"pgsodium.crypto_hash_sha256","return_type":"bytea","arguments":"message bytea","type":"FUNCTION"},{"name":"pgsodium.crypto_hash_sha512","return_type":"bytea","arguments":"message bytea","type":"FUNCTION"},{"name":"pgsodium.crypto_sign","return_type":"bytea","arguments":"message bytea, key bytea","type":"FUNCTION"},{"name":"pgsodium.crypto_sign_detached","return_type":"bytea","arguments":"message bytea, key bytea","type":"FUNCTION"},{"name":"pgsodium.crypto_sign_seed_new_keypair","return_type":"crypto_sign_keypair","arguments":"seed bytea","type":"FUNCTION"},{"name":"pgsodium.crypto_sign_verify_detached","return_type":"bool","arguments":"sig bytea, message bytea, key bytea","type":"FUNCTION"},{"name":"pgsodium.crypto_signcrypt_sign_after","return_type":"bytea","arguments":"state bytea, sender_sk bytea, ciphertext bytea","type":"FUNCTION"},{"name":"pgsodium.crypto_signcrypt_sign_before","return_type":"crypto_signcrypt_state_key","arguments":"sender bytea, recipient bytea, sender_sk bytea, recipient_pk bytea, additional bytea","type":"FUNCTION"},{"name":"pgsodium.crypto_signcrypt_verify_after","return_type":"bool","arguments":"state bytea, signature bytea, sender_pk bytea, ciphertext bytea","type":"FUNCTION"},{"name":"pgsodium.crypto_signcrypt_verify_before","return_type":"crypto_signcrypt_state_key","arguments":"signature bytea, sender bytea, recipient bytea, additional bytea, sender_pk bytea, recipient_sk bytea","type":"FUNCTION"},{"name":"pgsodium.crypto_signcrypt_verify_public","return_type":"bool","arguments":"signature bytea, sender bytea, recipient bytea, additional bytea, sender_pk bytea, ciphertext bytea","type":"FUNCTION"},{"name":"pgsodium.crypto_stream_xchacha20","return_type":"bytea","arguments":"bigint, bytea, bytea","type":"FUNCTION"},{"name":"pgsodium.crypto_stream_xchacha20","return_type":"bytea","arguments":"bigint, bytea, bigint, context bytea DEFAULT '\\x7067736f6469756d'::bytea","type":"FUNCTION"},{"name":"pgsodium.crypto_stream_xchacha20_xor","return_type":"bytea","arguments":"bytea, bytea, bytea","type":"FUNCTION"},{"name":"pgsodium.crypto_stream_xchacha20_xor","return_type":"bytea","arguments":"bytea, bytea, bigint, context bytea DEFAULT '\\x70676f736469756d'::bytea","type":"FUNCTION"},{"name":"pgsodium.crypto_stream_xchacha20_xor_ic","return_type":"bytea","arguments":"bytea, bytea, bigint, bytea","type":"FUNCTION"},{"name":"pgsodium.crypto_stream_xchacha20_xor_ic","return_type":"bytea","arguments":"bytea, bytea, bigint, bigint, context bytea DEFAULT '\\x7067736f6469756d'::bytea","type":"FUNCTION"},{"name":"pgsodium.encrypted_column","return_type":"text","arguments":"relid oid, m record","type":"FUNCTION"},{"name":"pgsodium.update_masks","return_type":"void","arguments":"debug boolean DEFAULT false","type":"FUNCTION"},{"name":"pgsodium.key_encrypt_secret_raw_key","return_type":"trigger","arguments":"","type":"FUNCTION"},{"name":"pgsodium.mask_role","return_type":"void","arguments":"masked_role regrole, source_name text, view_name text","type":"FUNCTION"},{"name":"pgsodium.create_mask_view","return_type":"void","arguments":"relid oid, subid integer, debug boolean DEFAULT false","type":"FUNCTION"},{"name":"pgsodium.trg_mask_update","return_type":"event_trigger","arguments":"","type":"FUNCTION"},{"name":"pgsodium.crypto_aead_det_decrypt","return_type":"bytea","arguments":"message bytea, additional bytea, key_uuid uuid, nonce bytea","type":"FUNCTION"},{"name":"pgsodium.crypto_aead_det_encrypt","return_type":"bytea","arguments":"message bytea, additional bytea, key_uuid uuid, nonce bytea","type":"FUNCTION"},{"name":"pgsodium.crypto_aead_det_keygen","return_type":"bytea","arguments":"","type":"FUNCTION"},{"name":"vault.secrets_encrypt_secret_secret","return_type":"trigger","arguments":"","type":"FUNCTION"},{"name":"vault.create_secret","return_type":"uuid","arguments":"new_secret text, new_name text DEFAULT NULL::text, new_description text DEFAULT ''::text, new_key_id uuid DEFAULT NULL::uuid","type":"FUNCTION"},{"name":"vault.update_secret","return_type":"void","arguments":"secret_id uuid, new_secret text DEFAULT NULL::text, new_name text DEFAULT NULL::text, new_description text DEFAULT NULL::text, new_key_id uuid DEFAULT NULL::uuid","type":"FUNCTION"},{"name":"extensions.pgp_key_id","return_type":"text","arguments":"bytea","type":"FUNCTION"},{"name":"extensions.armor","return_type":"text","arguments":"bytea","type":"FUNCTION"},{"name":"extensions.armor","return_type":"text","arguments":"bytea, text[], text[]","type":"FUNCTION"},{"name":"extensions.dearmor","return_type":"bytea","arguments":"text","type":"FUNCTION"},{"name":"extensions.pgp_armor_headers","return_type":"record","arguments":"text, OUT key text, OUT value text","type":"FUNCTION"},{"name":"extensions.url_encode","return_type":"text","arguments":"data bytea","type":"FUNCTION"},{"name":"extensions.url_decode","return_type":"bytea","arguments":"data text","type":"FUNCTION"},{"name":"extensions.try_cast_double","return_type":"float8","arguments":"inp text","type":"FUNCTION"},{"name":"extensions.moddatetime","return_type":"trigger","arguments":"","type":"FUNCTION"},{"name":"extensions.pgp_sym_encrypt","return_type":"bytea","arguments":"text, text","type":"FUNCTION"},{"name":"extensions.pgp_sym_encrypt_bytea","return_type":"bytea","arguments":"bytea, text","type":"FUNCTION"},{"name":"extensions.pgp_sym_encrypt","return_type":"bytea","arguments":"text, text, text","type":"FUNCTION"},{"name":"extensions.pgp_sym_encrypt_bytea","return_type":"bytea","arguments":"bytea, text, text","type":"FUNCTION"},{"name":"extensions.pgp_sym_decrypt","return_type":"text","arguments":"bytea, text","type":"FUNCTION"},{"name":"extensions.pgp_sym_decrypt_bytea","return_type":"bytea","arguments":"bytea, text","type":"FUNCTION"},{"name":"extensions.pgp_sym_decrypt","return_type":"text","arguments":"bytea, text, text","type":"FUNCTION"},{"name":"extensions.algorithm_sign","return_type":"text","arguments":"signables text, secret text, algorithm text","type":"FUNCTION"},{"name":"extensions.verify","return_type":"record","arguments":"token text, secret text, algorithm text DEFAULT 'HS256'::text","type":"FUNCTION"},{"name":"extensions.grant_pg_cron_access","return_type":"event_trigger","arguments":"","type":"FUNCTION"},{"name":"extensions.grant_pg_net_access","return_type":"event_trigger","arguments":"","type":"FUNCTION"},{"name":"extensions.pg_stat_statements_reset","return_type":"void","arguments":"userid oid DEFAULT 0, dbid oid DEFAULT 0, queryid bigint DEFAULT 0","type":"FUNCTION"},{"name":"extensions.pg_stat_statements_info","return_type":"record","arguments":"OUT dealloc bigint, OUT stats_reset timestamp with time zone","type":"FUNCTION"},{"name":"extensions.pg_stat_statements","return_type":"record","arguments":"showtext boolean, OUT userid oid, OUT dbid oid, OUT toplevel boolean, OUT queryid bigint, OUT query text, OUT plans bigint, OUT total_plan_time double precision, OUT min_plan_time double precision, OUT max_plan_time double precision, OUT mean_plan_time double precision, OUT stddev_plan_time double precision, OUT calls bigint, OUT total_exec_time double precision, OUT min_exec_time double precision, OUT max_exec_time double precision, OUT mean_exec_time double precision, OUT stddev_exec_time double precision, OUT rows bigint, OUT shared_blks_hit bigint, OUT shared_blks_read bigint, OUT shared_blks_dirtied bigint, OUT shared_blks_written bigint, OUT local_blks_hit bigint, OUT local_blks_read bigint, OUT local_blks_dirtied bigint, OUT local_blks_written bigint, OUT temp_blks_read bigint, OUT temp_blks_written bigint, OUT blk_read_time double precision, OUT blk_write_time double precision, OUT temp_blk_read_time double precision, OUT temp_blk_write_time double precision, OUT wal_records bigint, OUT wal_fpi bigint, OUT wal_bytes numeric, OUT jit_functions bigint, OUT jit_generation_time double precision, OUT jit_inlining_count bigint, OUT jit_inlining_time double precision, OUT jit_optimization_count bigint, OUT jit_optimization_time double precision, OUT jit_emission_count bigint, OUT jit_emission_time double precision","type":"FUNCTION"},{"name":"extensions.set_graphql_placeholder","return_type":"event_trigger","arguments":"","type":"FUNCTION"}],"driver":{"name":"postgres","database_version":"PostgreSQL 15.1 (Ubuntu 15.1-1.pgdg20.04+1) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0, 64-bit","meta":{"current_schema":"public","search_paths":["\"\\$user\"","public","extensions"],"dict":{"Functions":"Stored procedures and functions"}}}} diff --git a/docs/database/schema.svg b/docs/database/schema.svg deleted file mode 100644 index 7d67f2b18..000000000 --- a/docs/database/schema.svg +++ /dev/null @@ -1,1142 +0,0 @@ - - - - - - -postgres - - - -auth.users - - -auth.users -     -[BASE TABLE] - -instance_id     -[uuid] - -id     -[uuid] - -aud     -[varchar(255)] - -role     -[varchar(255)] - -email     -[varchar(255)] - -encrypted_password     -[varchar(255)] - -confirmed_at     -[timestamp with time zone] - -invited_at     -[timestamp with time zone] - -confirmation_token     -[varchar(255)] - -confirmation_sent_at     -[timestamp with time zone] - -recovery_token     -[varchar(255)] - -recovery_sent_at     -[timestamp with time zone] - -email_change_token     -[varchar(255)] - -email_change     -[varchar(255)] - -email_change_sent_at     -[timestamp with time zone] - -last_sign_in_at     -[timestamp with time zone] - -raw_app_meta_data     -[jsonb] - -raw_user_meta_data     -[jsonb] - -is_super_admin     -[boolean] - -created_at     -[timestamp with time zone] - -updated_at     -[timestamp with time zone] - - - -auth.refresh_tokens - - -auth.refresh_tokens -     -[BASE TABLE] - -instance_id     -[uuid] - -id     -[bigint] - -token     -[varchar(255)] - -user_id     -[varchar(255)] - -revoked     -[boolean] - -created_at     -[timestamp with time zone] - -updated_at     -[timestamp with time zone] - - - -auth.instances - - -auth.instances -     -[BASE TABLE] - -id     -[uuid] - -uuid     -[uuid] - -raw_base_config     -[text] - -created_at     -[timestamp with time zone] - -updated_at     -[timestamp with time zone] - - - -auth.audit_log_entries - - -auth.audit_log_entries -     -[BASE TABLE] - -instance_id     -[uuid] - -id     -[uuid] - -payload     -[json] - -created_at     -[timestamp with time zone] - - - -auth.schema_migrations - - -auth.schema_migrations -     -[BASE TABLE] - -version     -[varchar(255)] - - - -storage.buckets - - -storage.buckets -     -[BASE TABLE] - -id     -[text] - -name     -[text] - -owner     -[uuid] - -created_at     -[timestamp with time zone] - -updated_at     -[timestamp with time zone] - - - -storage.buckets:owner->auth.users:id - - -FOREIGN KEY (owner) REFERENCES auth.users(id) - - - -storage.objects - - -storage.objects -     -[BASE TABLE] - -id     -[uuid] - -bucket_id     -[text] - -name     -[text] - -owner     -[uuid] - -created_at     -[timestamp with time zone] - -updated_at     -[timestamp with time zone] - -last_accessed_at     -[timestamp with time zone] - -metadata     -[jsonb] - - - -storage.objects:owner->auth.users:id - - -FOREIGN KEY (owner) REFERENCES auth.users(id) - - - -storage.objects:bucket_id->storage.buckets:id - - -FOREIGN KEY (bucket_id) REFERENCES storage.buckets(id) - - - -storage.migrations - - -storage.migrations -     -[BASE TABLE] - -id     -[integer] - -name     -[varchar(100)] - -hash     -[varchar(40)] - -executed_at     -[timestamp without time zone] - - - -net.http_request_queue - - -net.http_request_queue -     -[BASE TABLE] - -id     -[bigint] - -method     -[net.http_method] - -url     -[text] - -headers     -[jsonb] - -body     -[bytea] - -timeout_milliseconds     -[integer] - - - -net._http_response - - -net._http_response -     -[BASE TABLE] - -id     -[bigint] - -status_code     -[integer] - -content_type     -[text] - -headers     -[jsonb] - -content     -[text] - -timed_out     -[boolean] - -error_msg     -[text] - -created     -[timestamp with time zone] - - - -supabase_functions.migrations - - -supabase_functions.migrations -     -[BASE TABLE] - -version     -[text] - -inserted_at     -[timestamp with time zone] - - - -supabase_functions.hooks - - -supabase_functions.hooks -     -[BASE TABLE] - -id     -[bigint] - -hook_table_id     -[integer] - -hook_name     -[text] - -created_at     -[timestamp with time zone] - -request_id     -[bigint] - - - -public.study - - -public.study -     -[BASE TABLE] - -id     -[uuid] - -contact     -[jsonb] - -title     -[text] - -description     -[text] - -icon_name     -[text] - -published     -[boolean] - -registry_published     -[boolean] - -questionnaire     -[jsonb] - -eligibility_criteria     -[jsonb] - -observations     -[jsonb] - -interventions     -[jsonb] - -consent     -[jsonb] - -schedule     -[jsonb] - -report_specification     -[jsonb] - -results     -[jsonb] - -created_at     -[timestamp with time zone] - -updated_at     -[timestamp with time zone] - -user_id     -[uuid] - -participation     -[participation] - -result_sharing     -[result_sharing] - -collaborator_emails     -[text[]] - - - -public.user - - -public.user -     -[BASE TABLE] - -id     -[uuid] - -email     -[text] - -preferences     -[jsonb] - - - -public.study:user_id->public.user:id - - -FOREIGN KEY (user_id) REFERENCES "user"(id) - - - -public.study_subject - - -public.study_subject -     -[BASE TABLE] - -id     -[uuid] - -study_id     -[uuid] - -user_id     -[uuid] - -started_at     -[timestamp with time zone] - -selected_intervention_ids     -[text[]] - -invite_code     -[text] - -is_deleted     -[boolean] - - - -public.study_subject:study_id->public.study:id - - -FOREIGN KEY (study_id) REFERENCES study(id) ON DELETE CASCADE - - - -public.study_invite - - -public.study_invite -     -[BASE TABLE] - -code     -[text] - -study_id     -[uuid] - -preselected_intervention_ids     -[text[]] - - - -public.study_subject:invite_code->public.study_invite:code - - -FOREIGN KEY (invite_code) REFERENCES study_invite(code) ON DELETE CASCADE - - - -public.study_subject:user_id->public.user:id - - -FOREIGN KEY (user_id) REFERENCES "user"(id) - - - -public.app_config - - -public.app_config -     -[BASE TABLE] - -id     -[text] - -app_min_version     -[text] - -app_privacy     -[jsonb] - -app_terms     -[jsonb] - -designer_privacy     -[jsonb] - -designer_terms     -[jsonb] - -imprint     -[jsonb] - -contact     -[jsonb] - -analytics     -[jsonb] - - - -public.repo - - -public.repo -     -[BASE TABLE] - -project_id     -[text] - -user_id     -[uuid] - -study_id     -[uuid] - -provider     -[git_provider] - - - -public.repo:study_id->public.study:id - - -FOREIGN KEY (study_id) REFERENCES study(id) - - - -public.repo:user_id->public.user:id - - -FOREIGN KEY (user_id) REFERENCES "user"(id) ON DELETE CASCADE - - - -public.study_invite:study_id->public.study:id - - -FOREIGN KEY (study_id) REFERENCES study(id) ON DELETE CASCADE - - - -public.subject_progress - - -public.subject_progress -     -[BASE TABLE] - -completed_at     -[timestamp with time zone] - -subject_id     -[uuid] - -intervention_id     -[text] - -task_id     -[text] - -result_type     -[text] - -result     -[jsonb] - - - -public.subject_progress:subject_id->public.study_subject:id - - -FOREIGN KEY (subject_id) REFERENCES study_subject(id) ON DELETE CASCADE - - - -public.study_progress_export - - -public.study_progress_export -     -[VIEW] - -completed_at     -[timestamp with time zone] - -intervention_id     -[text] - -task_id     -[text] - -result_type     -[text] - -result     -[jsonb] - -subject_id     -[uuid] - -user_id     -[uuid] - -study_id     -[uuid] - -started_at     -[timestamp with time zone] - -selected_intervention_ids     -[text[]] - - - -extensions.pg_stat_statements_info - - -extensions.pg_stat_statements_info -     -[VIEW] - -dealloc     -[bigint] - -stats_reset     -[timestamp with time zone] - - - -extensions.pg_stat_statements - - -extensions.pg_stat_statements -     -[VIEW] - -userid     -[oid] - -dbid     -[oid] - -toplevel     -[boolean] - -queryid     -[bigint] - -query     -[text] - -plans     -[bigint] - -total_plan_time     -[double precision] - -min_plan_time     -[double precision] - -max_plan_time     -[double precision] - -mean_plan_time     -[double precision] - -stddev_plan_time     -[double precision] - -calls     -[bigint] - -total_exec_time     -[double precision] - -min_exec_time     -[double precision] - -max_exec_time     -[double precision] - -mean_exec_time     -[double precision] - -stddev_exec_time     -[double precision] - -rows     -[bigint] - -shared_blks_hit     -[bigint] - -shared_blks_read     -[bigint] - -shared_blks_dirtied     -[bigint] - -shared_blks_written     -[bigint] - -local_blks_hit     -[bigint] - -local_blks_read     -[bigint] - -local_blks_dirtied     -[bigint] - -local_blks_written     -[bigint] - -temp_blks_read     -[bigint] - -temp_blks_written     -[bigint] - -blk_read_time     -[double precision] - -blk_write_time     -[double precision] - -temp_blk_read_time     -[double precision] - -temp_blk_write_time     -[double precision] - -wal_records     -[bigint] - -wal_fpi     -[bigint] - -wal_bytes     -[numeric] - -jit_functions     -[bigint] - -jit_generation_time     -[double precision] - -jit_inlining_count     -[bigint] - -jit_inlining_time     -[double precision] - -jit_optimization_count     -[bigint] - -jit_optimization_time     -[double precision] - -jit_emission_count     -[bigint] - -jit_emission_time     -[double precision] - - - -pgsodium.key - - -pgsodium.key -     -[BASE TABLE] - -id     -[uuid] - -status     -[pgsodium.key_status] - -created     -[timestamp with time zone] - -expires     -[timestamp with time zone] - -key_type     -[pgsodium.key_type] - -key_id     -[bigint] - -key_context     -[bytea] - -name     -[text] - -associated_data     -[text] - -raw_key     -[bytea] - -raw_key_nonce     -[bytea] - -parent_key     -[uuid] - -comment     -[text] - -user_data     -[text] - - - -pgsodium.key:parent_key->pgsodium.key:id - - -FOREIGN KEY (parent_key) REFERENCES pgsodium.key(id) - - - -pgsodium.valid_key - - -pgsodium.valid_key -     -[VIEW] - -id     -[uuid] - -name     -[text] - -status     -[pgsodium.key_status] - -key_type     -[pgsodium.key_type] - -key_id     -[bigint] - -key_context     -[bytea] - -created     -[timestamp with time zone] - -expires     -[timestamp with time zone] - -associated_data     -[text] - - - -pgsodium.masking_rule - - -pgsodium.masking_rule -     -[VIEW] - -attrelid     -[oid] - -attnum     -[integer] - -relnamespace     -[regnamespace] - -relname     -[name] - -attname     -[name] - -format_type     -[text] - -col_description     -[text] - -key_id_column     -[text] - -key_id     -[text] - -associated_columns     -[text] - -nonce_column     -[text] - -view_name     -[text] - -priority     -[integer] - -security_invoker     -[boolean] - - - -pgsodium.mask_columns - - -pgsodium.mask_columns -     -[VIEW] - -attname     -[name] - -attrelid     -[oid] - -key_id     -[text] - -key_id_column     -[text] - -associated_columns     -[text] - -nonce_column     -[text] - -format_type     -[text] - - - -pgsodium.decrypted_key - - -pgsodium.decrypted_key -     -[VIEW] - -id     -[uuid] - -status     -[pgsodium.key_status] - -created     -[timestamp with time zone] - -expires     -[timestamp with time zone] - -key_type     -[pgsodium.key_type] - -key_id     -[bigint] - -key_context     -[bytea] - -name     -[text] - -associated_data     -[text] - -raw_key     -[bytea] - -decrypted_raw_key     -[bytea] - -raw_key_nonce     -[bytea] - -parent_key     -[uuid] - -comment     -[text] - - - -vault.secrets - - -vault.secrets -     -[BASE TABLE] - -id     -[uuid] - -name     -[text] - -description     -[text] - -secret     -[text] - -key_id     -[uuid] - -nonce     -[bytea] - -created_at     -[timestamp with time zone] - -updated_at     -[timestamp with time zone] - - - -vault.secrets:key_id->pgsodium.key:id - - -FOREIGN KEY (key_id) REFERENCES pgsodium.key(id) - - - -vault.decrypted_secrets - - -vault.decrypted_secrets -     -[VIEW] - -id     -[uuid] - -name     -[text] - -description     -[text] - -secret     -[text] - -decrypted_secret     -[text] - -key_id     -[uuid] - -nonce     -[bytea] - -created_at     -[timestamp with time zone] - -updated_at     -[timestamp with time zone] - - - diff --git a/docs/database/storage.buckets.md b/docs/database/storage.buckets.md deleted file mode 100644 index 721b3da57..000000000 --- a/docs/database/storage.buckets.md +++ /dev/null @@ -1,35 +0,0 @@ -# storage.buckets - -## Description - -## Columns - -| Name | Type | Default | Nullable | Children | Parents | Comment | -| ---- | ---- | ------- | -------- | -------- | ------- | ------- | -| id | text | | false | [storage.objects](storage.objects.md) | | | -| name | text | | false | | | | -| owner | uuid | | true | | [auth.users](auth.users.md) | | -| created_at | timestamp with time zone | now() | true | | | | -| updated_at | timestamp with time zone | now() | true | | | | - -## Constraints - -| Name | Type | Definition | -| ---- | ---- | ---------- | -| buckets_owner_fkey | FOREIGN KEY | FOREIGN KEY (owner) REFERENCES auth.users(id) | -| buckets_pkey | PRIMARY KEY | PRIMARY KEY (id) | - -## Indexes - -| Name | Definition | -| ---- | ---------- | -| buckets_pkey | CREATE UNIQUE INDEX buckets_pkey ON storage.buckets USING btree (id) | -| bname | CREATE UNIQUE INDEX bname ON storage.buckets USING btree (name) | - -## Relations - -![er](storage.buckets.svg) - ---- - -> Generated by [tbls](https://github.com/k1LoW/tbls) diff --git a/docs/database/storage.buckets.svg b/docs/database/storage.buckets.svg deleted file mode 100644 index eb745c9e2..000000000 --- a/docs/database/storage.buckets.svg +++ /dev/null @@ -1,157 +0,0 @@ - - - - - - -storage.buckets - - - -storage.buckets - - -storage.buckets -     -[BASE TABLE] - -id -[text] - -name -[text] - -owner -[uuid] - -created_at -[timestamp with time zone] - -updated_at -[timestamp with time zone] - - - - -auth.users - - -auth.users -     -[BASE TABLE] - -instance_id     -[uuid] - -id     -[uuid] - -aud     -[varchar(255)] - -role     -[varchar(255)] - -email     -[varchar(255)] - -encrypted_password     -[varchar(255)] - -confirmed_at     -[timestamp with time zone] - -invited_at     -[timestamp with time zone] - -confirmation_token     -[varchar(255)] - -confirmation_sent_at     -[timestamp with time zone] - -recovery_token     -[varchar(255)] - -recovery_sent_at     -[timestamp with time zone] - -email_change_token     -[varchar(255)] - -email_change     -[varchar(255)] - -email_change_sent_at     -[timestamp with time zone] - -last_sign_in_at     -[timestamp with time zone] - -raw_app_meta_data     -[jsonb] - -raw_user_meta_data     -[jsonb] - -is_super_admin     -[boolean] - -created_at     -[timestamp with time zone] - -updated_at     -[timestamp with time zone] - - - -storage.buckets:owner->auth.users:id - - -FOREIGN KEY (owner) REFERENCES auth.users(id) - - - -storage.objects - - -storage.objects -     -[BASE TABLE] - -id     -[uuid] - -bucket_id     -[text] - -name     -[text] - -owner     -[uuid] - -created_at     -[timestamp with time zone] - -updated_at     -[timestamp with time zone] - -last_accessed_at     -[timestamp with time zone] - -metadata     -[jsonb] - - - -storage.objects:bucket_id->storage.buckets:id - - -FOREIGN KEY (bucket_id) REFERENCES storage.buckets(id) - - - diff --git a/docs/database/storage.migrations.md b/docs/database/storage.migrations.md deleted file mode 100644 index 2d9064cfd..000000000 --- a/docs/database/storage.migrations.md +++ /dev/null @@ -1,34 +0,0 @@ -# storage.migrations - -## Description - -## Columns - -| Name | Type | Default | Nullable | Children | Parents | Comment | -| ---- | ---- | ------- | -------- | -------- | ------- | ------- | -| id | integer | | false | | | | -| name | varchar(100) | | false | | | | -| hash | varchar(40) | | false | | | | -| executed_at | timestamp without time zone | CURRENT_TIMESTAMP | true | | | | - -## Constraints - -| Name | Type | Definition | -| ---- | ---- | ---------- | -| migrations_pkey | PRIMARY KEY | PRIMARY KEY (id) | -| migrations_name_key | UNIQUE | UNIQUE (name) | - -## Indexes - -| Name | Definition | -| ---- | ---------- | -| migrations_pkey | CREATE UNIQUE INDEX migrations_pkey ON storage.migrations USING btree (id) | -| migrations_name_key | CREATE UNIQUE INDEX migrations_name_key ON storage.migrations USING btree (name) | - -## Relations - -![er](storage.migrations.svg) - ---- - -> Generated by [tbls](https://github.com/k1LoW/tbls) diff --git a/docs/database/storage.migrations.svg b/docs/database/storage.migrations.svg deleted file mode 100644 index 4b38ba13d..000000000 --- a/docs/database/storage.migrations.svg +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - -storage.migrations - - - -storage.migrations - - -storage.migrations -     -[BASE TABLE] - -id -[integer] - -name -[varchar(100)] - -hash -[varchar(40)] - -executed_at -[timestamp without time zone] - - - - diff --git a/docs/database/storage.objects.md b/docs/database/storage.objects.md deleted file mode 100644 index 521b2a999..000000000 --- a/docs/database/storage.objects.md +++ /dev/null @@ -1,40 +0,0 @@ -# storage.objects - -## Description - -## Columns - -| Name | Type | Default | Nullable | Children | Parents | Comment | -| ---- | ---- | ------- | -------- | -------- | ------- | ------- | -| id | uuid | uuid_generate_v4() | false | | | | -| bucket_id | text | | true | | [storage.buckets](storage.buckets.md) | | -| name | text | | true | | | | -| owner | uuid | | true | | [auth.users](auth.users.md) | | -| created_at | timestamp with time zone | now() | true | | | | -| updated_at | timestamp with time zone | now() | true | | | | -| last_accessed_at | timestamp with time zone | now() | true | | | | -| metadata | jsonb | | true | | | | - -## Constraints - -| Name | Type | Definition | -| ---- | ---- | ---------- | -| objects_owner_fkey | FOREIGN KEY | FOREIGN KEY (owner) REFERENCES auth.users(id) | -| objects_bucketId_fkey | FOREIGN KEY | FOREIGN KEY (bucket_id) REFERENCES storage.buckets(id) | -| objects_pkey | PRIMARY KEY | PRIMARY KEY (id) | - -## Indexes - -| Name | Definition | -| ---- | ---------- | -| objects_pkey | CREATE UNIQUE INDEX objects_pkey ON storage.objects USING btree (id) | -| bucketid_objname | CREATE UNIQUE INDEX bucketid_objname ON storage.objects USING btree (bucket_id, name) | -| name_prefix_search | CREATE INDEX name_prefix_search ON storage.objects USING btree (name text_pattern_ops) | - -## Relations - -![er](storage.objects.svg) - ---- - -> Generated by [tbls](https://github.com/k1LoW/tbls) diff --git a/docs/database/storage.objects.svg b/docs/database/storage.objects.svg deleted file mode 100644 index 0a9fcd470..000000000 --- a/docs/database/storage.objects.svg +++ /dev/null @@ -1,157 +0,0 @@ - - - - - - -storage.objects - - - -storage.objects - - -storage.objects -     -[BASE TABLE] - -id -[uuid] - -bucket_id -[text] - -name -[text] - -owner -[uuid] - -created_at -[timestamp with time zone] - -updated_at -[timestamp with time zone] - -last_accessed_at -[timestamp with time zone] - -metadata -[jsonb] - - - - -storage.buckets - - -storage.buckets -     -[BASE TABLE] - -id     -[text] - -name     -[text] - -owner     -[uuid] - -created_at     -[timestamp with time zone] - -updated_at     -[timestamp with time zone] - - - -storage.objects:bucket_id->storage.buckets:id - - -FOREIGN KEY (bucket_id) REFERENCES storage.buckets(id) - - - -auth.users - - -auth.users -     -[BASE TABLE] - -instance_id     -[uuid] - -id     -[uuid] - -aud     -[varchar(255)] - -role     -[varchar(255)] - -email     -[varchar(255)] - -encrypted_password     -[varchar(255)] - -confirmed_at     -[timestamp with time zone] - -invited_at     -[timestamp with time zone] - -confirmation_token     -[varchar(255)] - -confirmation_sent_at     -[timestamp with time zone] - -recovery_token     -[varchar(255)] - -recovery_sent_at     -[timestamp with time zone] - -email_change_token     -[varchar(255)] - -email_change     -[varchar(255)] - -email_change_sent_at     -[timestamp with time zone] - -last_sign_in_at     -[timestamp with time zone] - -raw_app_meta_data     -[jsonb] - -raw_user_meta_data     -[jsonb] - -is_super_admin     -[boolean] - -created_at     -[timestamp with time zone] - -updated_at     -[timestamp with time zone] - - - -storage.objects:owner->auth.users:id - - -FOREIGN KEY (owner) REFERENCES auth.users(id) - - - diff --git a/docs/database/supabase_functions.hooks.md b/docs/database/supabase_functions.hooks.md deleted file mode 100644 index b7940b96e..000000000 --- a/docs/database/supabase_functions.hooks.md +++ /dev/null @@ -1,37 +0,0 @@ -# supabase_functions.hooks - -## Description - -Supabase Functions Hooks: Audit trail for triggered hooks. - -## Columns - -| Name | Type | Default | Nullable | Children | Parents | Comment | -| ---- | ---- | ------- | -------- | -------- | ------- | ------- | -| id | bigint | nextval('supabase_functions.hooks_id_seq'::regclass) | false | | | | -| hook_table_id | integer | | false | | | | -| hook_name | text | | false | | | | -| created_at | timestamp with time zone | now() | false | | | | -| request_id | bigint | | true | | | | - -## Constraints - -| Name | Type | Definition | -| ---- | ---- | ---------- | -| hooks_pkey | PRIMARY KEY | PRIMARY KEY (id) | - -## Indexes - -| Name | Definition | -| ---- | ---------- | -| hooks_pkey | CREATE UNIQUE INDEX hooks_pkey ON supabase_functions.hooks USING btree (id) | -| supabase_functions_hooks_request_id_idx | CREATE INDEX supabase_functions_hooks_request_id_idx ON supabase_functions.hooks USING btree (request_id) | -| supabase_functions_hooks_h_table_id_h_name_idx | CREATE INDEX supabase_functions_hooks_h_table_id_h_name_idx ON supabase_functions.hooks USING btree (hook_table_id, hook_name) | - -## Relations - -![er](supabase_functions.hooks.svg) - ---- - -> Generated by [tbls](https://github.com/k1LoW/tbls) diff --git a/docs/database/supabase_functions.hooks.svg b/docs/database/supabase_functions.hooks.svg deleted file mode 100644 index 770472c71..000000000 --- a/docs/database/supabase_functions.hooks.svg +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - -supabase_functions.hooks - - - -supabase_functions.hooks - - -supabase_functions.hooks -     -[BASE TABLE] - -id -[bigint] - -hook_table_id -[integer] - -hook_name -[text] - -created_at -[timestamp with time zone] - -request_id -[bigint] - - - - diff --git a/docs/database/supabase_functions.migrations.md b/docs/database/supabase_functions.migrations.md deleted file mode 100644 index 8c6ad439e..000000000 --- a/docs/database/supabase_functions.migrations.md +++ /dev/null @@ -1,30 +0,0 @@ -# supabase_functions.migrations - -## Description - -## Columns - -| Name | Type | Default | Nullable | Children | Parents | Comment | -| ---- | ---- | ------- | -------- | -------- | ------- | ------- | -| version | text | | false | | | | -| inserted_at | timestamp with time zone | now() | false | | | | - -## Constraints - -| Name | Type | Definition | -| ---- | ---- | ---------- | -| migrations_pkey | PRIMARY KEY | PRIMARY KEY (version) | - -## Indexes - -| Name | Definition | -| ---- | ---------- | -| migrations_pkey | CREATE UNIQUE INDEX migrations_pkey ON supabase_functions.migrations USING btree (version) | - -## Relations - -![er](supabase_functions.migrations.svg) - ---- - -> Generated by [tbls](https://github.com/k1LoW/tbls) diff --git a/docs/database/supabase_functions.migrations.svg b/docs/database/supabase_functions.migrations.svg deleted file mode 100644 index bc1eca4aa..000000000 --- a/docs/database/supabase_functions.migrations.svg +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - -supabase_functions.migrations - - - -supabase_functions.migrations - - -supabase_functions.migrations -     -[BASE TABLE] - -version -[text] - -inserted_at -[timestamp with time zone] - - - - diff --git a/docs/database/vault.decrypted_secrets.md b/docs/database/vault.decrypted_secrets.md deleted file mode 100644 index a0e489c91..000000000 --- a/docs/database/vault.decrypted_secrets.md +++ /dev/null @@ -1,56 +0,0 @@ -# vault.decrypted_secrets - -## Description - -
-Table Definition - -```sql -CREATE VIEW decrypted_secrets AS ( - SELECT secrets.id, - secrets.name, - secrets.description, - secrets.secret, - CASE - WHEN (secrets.secret IS NULL) THEN NULL::text - ELSE - CASE - WHEN (secrets.key_id IS NULL) THEN NULL::text - ELSE convert_from(pgsodium.crypto_aead_det_decrypt(decode(secrets.secret, 'base64'::text), convert_to(((((secrets.id)::text || secrets.description) || (secrets.created_at)::text) || (secrets.updated_at)::text), 'utf8'::name), secrets.key_id, secrets.nonce), 'utf8'::name) - END - END AS decrypted_secret, - secrets.key_id, - secrets.nonce, - secrets.created_at, - secrets.updated_at - FROM vault.secrets -) -``` - -
- -## Referenced Tables - -- [vault.secrets](vault.secrets.md) - -## Columns - -| Name | Type | Default | Nullable | Children | Parents | Comment | -| ---- | ---- | ------- | -------- | -------- | ------- | ------- | -| id | uuid | | true | | | | -| name | text | | true | | | | -| description | text | | true | | | | -| secret | text | | true | | | | -| decrypted_secret | text | | true | | | | -| key_id | uuid | | true | | | | -| nonce | bytea | | true | | | | -| created_at | timestamp with time zone | | true | | | | -| updated_at | timestamp with time zone | | true | | | | - -## Relations - -![er](vault.decrypted_secrets.svg) - ---- - -> Generated by [tbls](https://github.com/k1LoW/tbls) diff --git a/docs/database/vault.decrypted_secrets.svg b/docs/database/vault.decrypted_secrets.svg deleted file mode 100644 index e83fd10c6..000000000 --- a/docs/database/vault.decrypted_secrets.svg +++ /dev/null @@ -1,50 +0,0 @@ - - - - - - -vault.decrypted_secrets - - - -vault.decrypted_secrets - - -vault.decrypted_secrets -     -[VIEW] - -id -[uuid] - -name -[text] - -description -[text] - -secret -[text] - -decrypted_secret -[text] - -key_id -[uuid] - -nonce -[bytea] - -created_at -[timestamp with time zone] - -updated_at -[timestamp with time zone] - - - - diff --git a/docs/database/vault.secrets.md b/docs/database/vault.secrets.md deleted file mode 100644 index 35390903d..000000000 --- a/docs/database/vault.secrets.md +++ /dev/null @@ -1,46 +0,0 @@ -# vault.secrets - -## Description - -Table with encrypted `secret` column for storing sensitive information on disk. - -## Columns - -| Name | Type | Default | Nullable | Children | Parents | Comment | -| ---- | ---- | ------- | -------- | -------- | ------- | ------- | -| id | uuid | gen_random_uuid() | false | | | | -| name | text | | true | | | | -| description | text | ''::text | false | | | | -| secret | text | | false | | | | -| key_id | uuid | (pgsodium.create_key()).id | true | | [pgsodium.key](pgsodium.key.md) | | -| nonce | bytea | pgsodium.crypto_aead_det_noncegen() | true | | | | -| created_at | timestamp with time zone | CURRENT_TIMESTAMP | false | | | | -| updated_at | timestamp with time zone | CURRENT_TIMESTAMP | false | | | | - -## Constraints - -| Name | Type | Definition | -| ---- | ---- | ---------- | -| secrets_key_id_fkey | FOREIGN KEY | FOREIGN KEY (key_id) REFERENCES pgsodium.key(id) | -| secrets_pkey | PRIMARY KEY | PRIMARY KEY (id) | - -## Indexes - -| Name | Definition | -| ---- | ---------- | -| secrets_pkey | CREATE UNIQUE INDEX secrets_pkey ON vault.secrets USING btree (id) | -| secrets_name_idx | CREATE UNIQUE INDEX secrets_name_idx ON vault.secrets USING btree (name) WHERE (name IS NOT NULL) | - -## Triggers - -| Name | Definition | -| ---- | ---------- | -| secrets_encrypt_secret_trigger_secret | CREATE TRIGGER secrets_encrypt_secret_trigger_secret BEFORE INSERT OR UPDATE OF secret ON vault.secrets FOR EACH ROW EXECUTE FUNCTION vault.secrets_encrypt_secret_secret() | - -## Relations - -![er](vault.secrets.svg) - ---- - -> Generated by [tbls](https://github.com/k1LoW/tbls) diff --git a/docs/database/vault.secrets.svg b/docs/database/vault.secrets.svg deleted file mode 100644 index 3f750eb5e..000000000 --- a/docs/database/vault.secrets.svg +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - -vault.secrets - - - -vault.secrets - - -vault.secrets -     -[BASE TABLE] - -id -[uuid] - -name -[text] - -description -[text] - -secret -[text] - -key_id -[uuid] - -nonce -[bytea] - -created_at -[timestamp with time zone] - -updated_at -[timestamp with time zone] - - - - -pgsodium.key - - -pgsodium.key -     -[BASE TABLE] - -id     -[uuid] - -status     -[pgsodium.key_status] - -created     -[timestamp with time zone] - -expires     -[timestamp with time zone] - -key_type     -[pgsodium.key_type] - -key_id     -[bigint] - -key_context     -[bytea] - -name     -[text] - -associated_data     -[text] - -raw_key     -[bytea] - -raw_key_nonce     -[bytea] - -parent_key     -[uuid] - -comment     -[text] - -user_data     -[text] - - - -vault.secrets:key_id->pgsodium.key:id - - -FOREIGN KEY (key_id) REFERENCES pgsodium.key(id) - - - diff --git a/docs/uml/app/lib/models/uml.svg b/docs/uml/app/lib/models/uml.svg deleted file mode 100644 index e1d655211..000000000 --- a/docs/uml/app/lib/models/uml.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/uml/app/lib/screens/app_onboarding/uml.svg b/docs/uml/app/lib/screens/app_onboarding/uml.svg deleted file mode 100644 index d3d4c5668..000000000 --- a/docs/uml/app/lib/screens/app_onboarding/uml.svg +++ /dev/null @@ -1,339 +0,0 @@ - - [LoadingScreen - | - +sessionString: String?; - +queryParameters: Map<String, String>? - ] - - [AppOutdatedScreen - | - +Widget build() - ] - - [WelcomeScreen - | - +Widget build() - ] - - [TermsScreen - ] - - [LegalSection - | - +title: String?; - +description: String?; - +icon: Icon?; - +pdfUrl: String?; - +pdfUrlLabel: String?; - +acknowledgment: String?; - +isChecked: bool?; - +onChange: void Function(bool?)? - | - +Widget build() - ] - - [LegalSection]o-[Icon] - [LegalSection]o-[void Function(bool?)?] - - [IFrameHelper - | - +void postRouteFinished(); - +void listen() - ] - - [Preview - | - +queryParameters: Map<String, String>?; - +appLanguage: AppLanguage; - +selectedRoute: String?; - +extra: String?; - +study: Study?; - +selectedStudyObjectId: String?; - +subject: StudySubject? - | - +bool hasRoute(); - +void handleQueries(); - +dynamic init(); - +dynamic handleAuthorization(); - +dynamic runCommands(); - +String? getSelectedRoute(); - +bool containsQuery(); - +bool containsQueryPair(); - +dynamic getStudySubject(); - -dynamic _createFakeSubject(); - +List<String> getInterventionIds() - ] - - [Preview]o-[AppLanguage] - [Preview]o-[Study] - [Preview]o-[StudySubject] - - [AboutScreen - | - +Widget build() - ] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - LoadingScreen - - - - - - +sessionString: String? - +queryParameters: Map<String, String>? - - - - - - - - - - - - AppOutdatedScreen - - - - - - +Widget build() - - - - - - - - - - - - WelcomeScreen - - - - - - +Widget build() - - - - - - - - - - - TermsScreen - - - - - - - - - - - - - LegalSection - - - - - - +title: String? - +description: String? - +icon: Icon? - +pdfUrl: String? - +pdfUrlLabel: String? - +acknowledgment: String? - +isChecked: bool? - +onChange: void Function(bool?)? - - - - - - +Widget build() - - - - - - - - - - - Icon - - - - - - - - - - - void Function(bool?)? - - - - - - - - - - - - IFrameHelper - - - - - - +void postRouteFinished() - +void listen() - - - - - - - - - - - - - Preview - - - - - - +queryParameters: Map<String, String>? - +appLanguage: AppLanguage - +selectedRoute: String? - +extra: String? - +study: Study? - +selectedStudyObjectId: String? - +subject: StudySubject? - - - - - - +bool hasRoute() - +void handleQueries() - +dynamic init() - +dynamic handleAuthorization() - +dynamic runCommands() - +String? getSelectedRoute() - +bool containsQuery() - +bool containsQueryPair() - +dynamic getStudySubject() - -dynamic _createFakeSubject() - +List<String> getInterventionIds() - - - - - - - - - - - AppLanguage - - - - - - - - - - - Study - - - - - - - - - - - StudySubject - - - - - - - - - - - - AboutScreen - - - - - - +Widget build() - - - - - - - - - \ No newline at end of file diff --git a/docs/uml/app/lib/screens/study/dashboard/contact_tab/uml.svg b/docs/uml/app/lib/screens/study/dashboard/contact_tab/uml.svg deleted file mode 100644 index c00cf0806..000000000 --- a/docs/uml/app/lib/screens/study/dashboard/contact_tab/uml.svg +++ /dev/null @@ -1,309 +0,0 @@ - - [ContactScreen - ] - - [ContactWidget - | - +contact: Contact?; - +title: String; - +subtitle: String?; - +color: Color - | - +Widget build() - ] - - [ContactWidget]o-[Contact] - [ContactWidget]o-[Color] - - [ContactItem - | - +iconData: IconData; - +itemName: String; - +itemValue: String?; - +type: ContactItemType?; - +iconColor: Color? - | - +dynamic launchContact(); - +Widget build() - ] - - [ContactItem]o-[IconData] - [ContactItem]o-[ContactItemType] - [ContactItem]o-[Color] - - [ContactItemType - | - +index: int; - <static>+values: List<ContactItemType>; - <static>+website: ContactItemType; - <static>+email: ContactItemType; - <static>+phone: ContactItemType - ] - - [ContactItemType]o-[ContactItemType] - [Enum]<:--[ContactItemType] - - [FAQ - | - +Widget build() - ] - - [Entry - | - +title: String; - +children: List<Entry> - ] - - [EntryItem - | - +entry: Entry - | - -Widget _buildTiles(); - +Widget build() - ] - - [EntryItem]o-[Entry] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ContactScreen - - - - - - - - - - - - - ContactWidget - - - - - - +contact: Contact? - +title: String - +subtitle: String? - +color: Color - - - - - - +Widget build() - - - - - - - - - - - Contact - - - - - - - - - - - Color - - - - - - - - - - - - - ContactItem - - - - - - +iconData: IconData - +itemName: String - +itemValue: String? - +type: ContactItemType? - +iconColor: Color? - - - - - - +dynamic launchContact() - +Widget build() - - - - - - - - - - - IconData - - - - - - - - - - - - ContactItemType - - - - - - +index: int - <static>+values: List<ContactItemType> - <static>+website: ContactItemType - <static>+email: ContactItemType - <static>+phone: ContactItemType - - - - - - - - - - - Enum - - - - - - - - - - - - FAQ - - - - - - +Widget build() - - - - - - - - - - - - Entry - - - - - - +title: String - +children: List<Entry> - - - - - - - - - - - - - EntryItem - - - - - - +entry: Entry - - - - - - -Widget _buildTiles() - +Widget build() - - - - - - - - - \ No newline at end of file diff --git a/docs/uml/app/lib/screens/study/dashboard/task_overview_tab/uml.svg b/docs/uml/app/lib/screens/study/dashboard/task_overview_tab/uml.svg deleted file mode 100644 index b5d839b5e..000000000 --- a/docs/uml/app/lib/screens/study/dashboard/task_overview_tab/uml.svg +++ /dev/null @@ -1,224 +0,0 @@ - - [TaskOverview - | - +subject: StudySubject?; - +scheduleToday: List<TaskInstance>?; - +interventionIcon: String? - ] - - [TaskOverview]o-[StudySubject] - - [TaskBox - | - +taskInstance: TaskInstance; - +icon: Icon; - +onCompleted: dynamic Function() - ] - - [TaskBox]o-[TaskInstance] - [TaskBox]o-[Icon] - [TaskBox]o-[dynamic Function()] - - [ProgressRow - | - +subject: StudySubject? - ] - - [ProgressRow]o-[StudySubject] - - [InterventionSegment - | - +intervention: Intervention; - +percentCompleted: double; - +percentMissed: double; - +isCurrent: bool; - +isFuture: bool; - +phaseDuration: int - | - +List<Widget> buildSeparators(); - +Widget build() - ] - - [InterventionSegment]o-[Intervention] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - TaskOverview - - - - - - +subject: StudySubject? - +scheduleToday: List<TaskInstance>? - +interventionIcon: String? - - - - - - - - - - - StudySubject - - - - - - - - - - - - TaskBox - - - - - - +taskInstance: TaskInstance - +icon: Icon - +onCompleted: dynamic Function() - - - - - - - - - - - TaskInstance - - - - - - - - - - - Icon - - - - - - - - - - - dynamic Function() - - - - - - - - - - - - ProgressRow - - - - - - +subject: StudySubject? - - - - - - - - - - - - - InterventionSegment - - - - - - +intervention: Intervention - +percentCompleted: double - +percentMissed: double - +isCurrent: bool - +isFuture: bool - +phaseDuration: int - - - - - - +List<Widget> buildSeparators() - +Widget build() - - - - - - - - - - - Intervention - - - - - - - - - \ No newline at end of file diff --git a/docs/uml/app/lib/screens/study/dashboard/uml.svg b/docs/uml/app/lib/screens/study/dashboard/uml.svg deleted file mode 100644 index f9ee5b73d..000000000 --- a/docs/uml/app/lib/screens/study/dashboard/uml.svg +++ /dev/null @@ -1,732 +0,0 @@ - - [Settings - ] - - [OptOutAlertDialog - | - +subject: StudySubject? - | - +Widget build() - ] - - [OptOutAlertDialog]o-[StudySubject] - - [DeleteAlertDialog - | - +subject: StudySubject? - | - +Widget build() - ] - - [DeleteAlertDialog]o-[StudySubject] - - [DashboardScreen - | - +error: String? - ] - - [OverflowMenuItem - | - +name: String; - +icon: IconData; - +routeName: String?; - +onTap: dynamic Function()? - ] - - [OverflowMenuItem]o-[IconData] - [OverflowMenuItem]o-[dynamic Function()?] - - [StudyFinishedPlaceholder - | - <static>+space: SizedBox - | - +Widget build() - ] - - [StudyFinishedPlaceholder]o-[SizedBox] - - [ProgressRow - | - +subject: StudySubject? - ] - - [ProgressRow]o-[StudySubject] - - [InterventionSegment - | - +intervention: Intervention; - +percentCompleted: double; - +percentMissed: double; - +isCurrent: bool; - +isFuture: bool; - +phaseDuration: int - | - +List<Widget> buildSeparators(); - +Widget build() - ] - - [InterventionSegment]o-[Intervention] - - [TaskBox - | - +taskInstance: TaskInstance; - +icon: Icon; - +onCompleted: dynamic Function() - ] - - [TaskBox]o-[TaskInstance] - [TaskBox]o-[Icon] - [TaskBox]o-[dynamic Function()] - - [TaskOverview - | - +subject: StudySubject?; - +scheduleToday: List<TaskInstance>?; - +interventionIcon: String? - ] - - [TaskOverview]o-[StudySubject] - - [FAQ - | - +Widget build() - ] - - [Entry - | - +title: String; - +children: List<Entry> - ] - - [EntryItem - | - +entry: Entry - | - -Widget _buildTiles(); - +Widget build() - ] - - [EntryItem]o-[Entry] - - [ContactScreen - ] - - [ContactWidget - | - +contact: Contact?; - +title: String; - +subtitle: String?; - +color: Color - | - +Widget build() - ] - - [ContactWidget]o-[Contact] - [ContactWidget]o-[Color] - - [ContactItem - | - +iconData: IconData; - +itemName: String; - +itemValue: String?; - +type: ContactItemType?; - +iconColor: Color? - | - +dynamic launchContact(); - +Widget build() - ] - - [ContactItem]o-[IconData] - [ContactItem]o-[ContactItemType] - [ContactItem]o-[Color] - - [ContactItemType - | - +index: int; - <static>+values: List<ContactItemType>; - <static>+website: ContactItemType; - <static>+email: ContactItemType; - <static>+phone: ContactItemType - ] - - [ContactItemType]o-[ContactItemType] - [Enum]<:--[ContactItemType] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Settings - - - - - - - - - - - - - OptOutAlertDialog - - - - - - +subject: StudySubject? - - - - - - +Widget build() - - - - - - - - - - - StudySubject - - - - - - - - - - - - - DeleteAlertDialog - - - - - - +subject: StudySubject? - - - - - - +Widget build() - - - - - - - - - - - - DashboardScreen - - - - - - +error: String? - - - - - - - - - - - - OverflowMenuItem - - - - - - +name: String - +icon: IconData - +routeName: String? - +onTap: dynamic Function()? - - - - - - - - - - - IconData - - - - - - - - - - - dynamic Function()? - - - - - - - - - - - - - StudyFinishedPlaceholder - - - - - - <static>+space: SizedBox - - - - - - +Widget build() - - - - - - - - - - - SizedBox - - - - - - - - - - - - ProgressRow - - - - - - +subject: StudySubject? - - - - - - - - - - - - - InterventionSegment - - - - - - +intervention: Intervention - +percentCompleted: double - +percentMissed: double - +isCurrent: bool - +isFuture: bool - +phaseDuration: int - - - - - - +List<Widget> buildSeparators() - +Widget build() - - - - - - - - - - - Intervention - - - - - - - - - - - - TaskBox - - - - - - +taskInstance: TaskInstance - +icon: Icon - +onCompleted: dynamic Function() - - - - - - - - - - - TaskInstance - - - - - - - - - - - Icon - - - - - - - - - - - dynamic Function() - - - - - - - - - - - - TaskOverview - - - - - - +subject: StudySubject? - +scheduleToday: List<TaskInstance>? - +interventionIcon: String? - - - - - - - - - - - - FAQ - - - - - - +Widget build() - - - - - - - - - - - - Entry - - - - - - +title: String - +children: List<Entry> - - - - - - - - - - - - - EntryItem - - - - - - +entry: Entry - - - - - - -Widget _buildTiles() - +Widget build() - - - - - - - - - - - ContactScreen - - - - - - - - - - - - - ContactWidget - - - - - - +contact: Contact? - +title: String - +subtitle: String? - +color: Color - - - - - - +Widget build() - - - - - - - - - - - Contact - - - - - - - - - - - Color - - - - - - - - - - - - - ContactItem - - - - - - +iconData: IconData - +itemName: String - +itemValue: String? - +type: ContactItemType? - +iconColor: Color? - - - - - - +dynamic launchContact() - +Widget build() - - - - - - - - - - - - ContactItemType - - - - - - +index: int - <static>+values: List<ContactItemType> - <static>+website: ContactItemType - <static>+email: ContactItemType - <static>+phone: ContactItemType - - - - - - - - - - - Enum - - - - - - - - - \ No newline at end of file diff --git a/docs/uml/app/lib/screens/study/multimodal/uml.svg b/docs/uml/app/lib/screens/study/multimodal/uml.svg deleted file mode 100644 index 6f6fa36dc..000000000 --- a/docs/uml/app/lib/screens/study/multimodal/uml.svg +++ /dev/null @@ -1,39 +0,0 @@ - - [CapturePictureScreen - | - +userId: String; - +studyId: String - ] - - - - - - - - - - - - - - - - - CapturePictureScreen - - - - - - +userId: String - +studyId: String - - - - - - - - - \ No newline at end of file diff --git a/docs/uml/app/lib/screens/study/onboarding/uml.svg b/docs/uml/app/lib/screens/study/onboarding/uml.svg deleted file mode 100644 index 942820264..000000000 --- a/docs/uml/app/lib/screens/study/onboarding/uml.svg +++ /dev/null @@ -1,721 +0,0 @@ - - [StudySelectionScreen - ] - - [InviteCodeDialog - ] - - [EligibilityResult - | - +eligible: bool; - +firstFailed: EligibilityCriterion? - ] - - [EligibilityResult]o-[EligibilityCriterion] - - [EligibilityScreen - | - +study: Study? - | - <static>+MaterialPageRoute<EligibilityResult> routeFor() - ] - - [EligibilityScreen]o-[Study] - - [ConsentScreen - ] - - [ConsentCard - | - +consent: ConsentItem?; - +index: int?; - +onTapped: dynamic Function(int); - +isChecked: bool? - | - +Widget build() - ] - - [ConsentCard]o-[ConsentItem] - [ConsentCard]o-[dynamic Function(int)] - - [ConsentElement - | - +title: String; - +descriptionText: String; - +acknowledgmentText: String; - +icon: IconData - ] - - [ConsentElement]o-[IconData] - - [KickoffScreen - ] - - [_KickoffScreen - | - +subject: StudySubject?; - +ready: bool - | - -dynamic _storeUserStudy(); - -Widget _constructStatusIcon(); - -String _getStatusText(); - +Widget build() - ] - - [_KickoffScreen]o-[StudySubject] - - [InterventionSelectionScreen - ] - - [OnboardingProgress - | - +stage: int; - +progress: double - | - -double _getProgressForStage(); - +Widget build() - ] - - [StudyOverviewScreen - ] - - [_StudyOverviewScreen - | - +study: Study? - | - +dynamic navigateToJourney(); - +dynamic navigateToEligibilityCheck(); - +Widget build() - ] - - [_StudyOverviewScreen]o-[Study] - - [StudyDetailsView - | - +study: Study?; - +iconSize: double - | - +Widget build() - ] - - [StudyDetailsView]o-[Study] - - [JourneyOverviewScreen - ] - - [_JourneyOverviewScreen - | - +subject: StudySubject? - | - +dynamic getConsentAndNavigateToDashboard(); - +Widget build() - ] - - [_JourneyOverviewScreen]o-[StudySubject] - - [Timeline - | - +subject: StudySubject? - | - +Widget build() - ] - - [Timeline]o-[StudySubject] - - [InterventionTile - | - +title: String?; - +iconName: String; - +date: DateTime; - +color: Color?; - +isFirst: bool; - +isLast: bool - | - +Widget build() - ] - - [InterventionTile]o-[Color] - - [IconIndicator - | - +iconName: String; - +color: Color? - | - +Widget build() - ] - - [IconIndicator]o-[Color] - - [TimelineChild - | - +child: Widget? - | - +Widget build() - ] - - [TimelineChild]o-[<abstract>Widget] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - StudySelectionScreen - - - - - - - - - - - InviteCodeDialog - - - - - - - - - - - - EligibilityResult - - - - - - +eligible: bool - +firstFailed: EligibilityCriterion? - - - - - - - - - - - EligibilityCriterion - - - - - - - - - - - - - EligibilityScreen - - - - - - +study: Study? - - - - - - <static>+MaterialPageRoute<EligibilityResult> routeFor() - - - - - - - - - - - Study - - - - - - - - - - - ConsentScreen - - - - - - - - - - - - - ConsentCard - - - - - - +consent: ConsentItem? - +index: int? - +onTapped: dynamic Function(int) - +isChecked: bool? - - - - - - +Widget build() - - - - - - - - - - - ConsentItem - - - - - - - - - - - dynamic Function(int) - - - - - - - - - - - - ConsentElement - - - - - - +title: String - +descriptionText: String - +acknowledgmentText: String - +icon: IconData - - - - - - - - - - - IconData - - - - - - - - - - - KickoffScreen - - - - - - - - - - - - - _KickoffScreen - - - - - - +subject: StudySubject? - +ready: bool - - - - - - -dynamic _storeUserStudy() - -Widget _constructStatusIcon() - -String _getStatusText() - +Widget build() - - - - - - - - - - - StudySubject - - - - - - - - - - - InterventionSelectionScreen - - - - - - - - - - - - - OnboardingProgress - - - - - - +stage: int - +progress: double - - - - - - -double _getProgressForStage() - +Widget build() - - - - - - - - - - - StudyOverviewScreen - - - - - - - - - - - - - _StudyOverviewScreen - - - - - - +study: Study? - - - - - - +dynamic navigateToJourney() - +dynamic navigateToEligibilityCheck() - +Widget build() - - - - - - - - - - - - - StudyDetailsView - - - - - - +study: Study? - +iconSize: double - - - - - - +Widget build() - - - - - - - - - - - JourneyOverviewScreen - - - - - - - - - - - - - _JourneyOverviewScreen - - - - - - +subject: StudySubject? - - - - - - +dynamic getConsentAndNavigateToDashboard() - +Widget build() - - - - - - - - - - - - - Timeline - - - - - - +subject: StudySubject? - - - - - - +Widget build() - - - - - - - - - - - - - InterventionTile - - - - - - +title: String? - +iconName: String - +date: DateTime - +color: Color? - +isFirst: bool - +isLast: bool - - - - - - +Widget build() - - - - - - - - - - - Color - - - - - - - - - - - - - IconIndicator - - - - - - +iconName: String - +color: Color? - - - - - - +Widget build() - - - - - - - - - - - - - TimelineChild - - - - - - +child: Widget? - - - - - - +Widget build() - - - - - - - - - - - Widget - - - - - - - - - \ No newline at end of file diff --git a/docs/uml/app/lib/screens/study/report/performance/uml.svg b/docs/uml/app/lib/screens/study/report/performance/uml.svg deleted file mode 100644 index 882316c2f..000000000 --- a/docs/uml/app/lib/screens/study/report/performance/uml.svg +++ /dev/null @@ -1,291 +0,0 @@ - - [PerformanceDetailsScreen - | - +reportSubject: StudySubject? - | - <static>+MaterialPageRoute<dynamic> routeFor(); - +Widget build() - ] - - [PerformanceDetailsScreen]o-[StudySubject] - - [InterventionPerformanceBar - | - +intervention: Intervention; - +subject: StudySubject? - | - +Widget build() - ] - - [InterventionPerformanceBar]o-[Intervention] - [InterventionPerformanceBar]o-[StudySubject] - - [ObservationPerformanceBar - | - +observation: Observation; - +subject: StudySubject? - | - +Widget build() - ] - - [ObservationPerformanceBar]o-[<abstract>Observation] - [ObservationPerformanceBar]o-[StudySubject] - - [PerformanceBar - | - +task: Task; - +completed: int; - +total: int - | - +Widget build() - ] - - [PerformanceBar]o-[<abstract>Task] - - [PerformanceSection - | - +minimumRatio: double; - +maximum: double - | - +Widget buildContent(); - +String getPowerLevelDescription(); - +int getCountableObservationAmount() - ] - - [<abstract>GenericSection]<:-[PerformanceSection] - - [PerformanceBar - | - +progress: double; - +minimum: double? - | - +Widget build() - ] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - PerformanceDetailsScreen - - - - - - +reportSubject: StudySubject? - - - - - - <static>+MaterialPageRoute<dynamic> routeFor() - +Widget build() - - - - - - - - - - - StudySubject - - - - - - - - - - - - - InterventionPerformanceBar - - - - - - +intervention: Intervention - +subject: StudySubject? - - - - - - +Widget build() - - - - - - - - - - - Intervention - - - - - - - - - - - - - ObservationPerformanceBar - - - - - - +observation: Observation - +subject: StudySubject? - - - - - - +Widget build() - - - - - - - - - - - Observation - - - - - - - - - - - - - PerformanceBar - - - - - - +task: Task - +completed: int - +total: int - - - - - - +Widget build() - - - - - - - - - - - Task - - - - - - - - - - - - - PerformanceSection - - - - - - +minimumRatio: double - +maximum: double - - - - - - +Widget buildContent() - +String getPowerLevelDescription() - +int getCountableObservationAmount() - - - - - - - - - - - GenericSection - - - - - - - - - \ No newline at end of file diff --git a/docs/uml/app/lib/screens/study/report/sections/uml.svg b/docs/uml/app/lib/screens/study/report/sections/uml.svg deleted file mode 100644 index 61a7f1b00..000000000 --- a/docs/uml/app/lib/screens/study/report/sections/uml.svg +++ /dev/null @@ -1,184 +0,0 @@ - - [LinearRegressionSectionWidget - | - +section: LinearRegressionSection - | - +Widget build() - ] - - [LinearRegressionSectionWidget]o-[LinearRegressionSection] - [<abstract>ReportSectionWidget]<:-[LinearRegressionSectionWidget] - - [AverageSectionWidget - | - +section: AverageSection; - +titlePos: List<int>; - +phasePos: List<int> - | - +Widget build(); - +Widget getLegend(); - +Widget getDiagram(); - +BarChartData getChartData(); - +Widget getTitles(); - +Widget getValues(); - +List<BarChartGroupData> getBarGroups(); - +FlGridData getGridData(); - +MaterialColor getColor(); - +int getDayIndex(); - +Iterable<DiagramDatum> getAggregatedData(); - +Map<String, String?> getInterventionNames() - ] - - [AverageSectionWidget]o-[AverageSection] - [<abstract>ReportSectionWidget]<:-[AverageSectionWidget] - - [DiagramDatum - | - +x: num; - +value: num; - +timestamp: DateTime?; - +intervention: String - ] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - LinearRegressionSectionWidget - - - - - - +section: LinearRegressionSection - - - - - - +Widget build() - - - - - - - - - - - LinearRegressionSection - - - - - - - - - - - ReportSectionWidget - - - - - - - - - - - - - AverageSectionWidget - - - - - - +section: AverageSection - +titlePos: List<int> - +phasePos: List<int> - - - - - - +Widget build() - +Widget getLegend() - +Widget getDiagram() - +BarChartData getChartData() - +Widget getTitles() - +Widget getValues() - +List<BarChartGroupData> getBarGroups() - +FlGridData getGridData() - +MaterialColor getColor() - +int getDayIndex() - +Iterable<DiagramDatum> getAggregatedData() - +Map<String, String?> getInterventionNames() - - - - - - - - - - - AverageSection - - - - - - - - - - - - DiagramDatum - - - - - - +x: num - +value: num - +timestamp: DateTime? - +intervention: String - - - - - - - - - \ No newline at end of file diff --git a/docs/uml/app/lib/screens/study/report/uml.svg b/docs/uml/app/lib/screens/study/report/uml.svg deleted file mode 100644 index 6e51568c4..000000000 --- a/docs/uml/app/lib/screens/study/report/uml.svg +++ /dev/null @@ -1,865 +0,0 @@ - - [PerformanceSection - | - +minimumRatio: double; - +maximum: double - | - +Widget buildContent(); - +String getPowerLevelDescription(); - +int getCountableObservationAmount() - ] - - [<abstract>GenericSection]<:-[PerformanceSection] - - [PerformanceBar - | - +progress: double; - +minimum: double? - | - +Widget build() - ] - - [PerformanceDetailsScreen - | - +reportSubject: StudySubject? - | - <static>+MaterialPageRoute<dynamic> routeFor(); - +Widget build() - ] - - [PerformanceDetailsScreen]o-[StudySubject] - - [InterventionPerformanceBar - | - +intervention: Intervention; - +subject: StudySubject? - | - +Widget build() - ] - - [InterventionPerformanceBar]o-[Intervention] - [InterventionPerformanceBar]o-[StudySubject] - - [ObservationPerformanceBar - | - +observation: Observation; - +subject: StudySubject? - | - +Widget build() - ] - - [ObservationPerformanceBar]o-[<abstract>Observation] - [ObservationPerformanceBar]o-[StudySubject] - - [PerformanceBar - | - +task: Task; - +completed: int; - +total: int - | - +Widget build() - ] - - [PerformanceBar]o-[<abstract>Task] - - [ReportDetailsScreen - | - +subject: StudySubject - | - <static>+MaterialPageRoute<dynamic> routeFor(); - +Widget build() - ] - - [ReportDetailsScreen]o-[StudySubject] - - [ReportSectionContainer - | - +section: ReportSection; - +subject: StudySubject; - +primary: bool; - +onTap: void Function()? - | - +ReportSectionWidget buildContents(); - +dynamic (); - +List<Widget> buildPrimaryHeader(); - +Widget build() - ] - - [ReportSectionContainer]o-[<abstract>ReportSection] - [ReportSectionContainer]o-[StudySubject] - [ReportSectionContainer]o-[void Function()?] - - [ReportHistoryScreen - | - +Widget build() - ] - - [ReportHistoryItem - | - +subject: StudySubject - | - +Widget build() - ] - - [ReportHistoryItem]o-[StudySubject] - - [GeneralDetailsSection - | - +Widget buildContent() - ] - - [<abstract>GenericSection]<:-[GeneralDetailsSection] - - [<abstract>GenericSection - | - +subject: StudySubject?; - +onTap: void Function()? - | - +Widget buildContent(); - +Widget build() - ] - - [<abstract>GenericSection]o-[StudySubject] - [<abstract>GenericSection]o-[void Function()?] - - [LegendWidget - | - +name: String; - +color: Color - | - +Widget build() - ] - - [LegendWidget]o-[Color] - - [LegendsListWidget - | - +legends: List<Legend> - | - +Widget build() - ] - - [Legend - | - +name: String; - +color: Color - ] - - [Legend]o-[Color] - - [DisclaimerSection - | - +Widget buildContent() - ] - - [<abstract>GenericSection]<:-[DisclaimerSection] - - [<abstract>ReportSectionWidget - | - +subject: StudySubject - ] - - [<abstract>ReportSectionWidget]o-[StudySubject] - - [AverageSectionWidget - | - +section: AverageSection; - +titlePos: List<int>; - +phasePos: List<int> - | - +Widget build(); - +Widget getLegend(); - +Widget getDiagram(); - +BarChartData getChartData(); - +Widget getTitles(); - +Widget getValues(); - +List<BarChartGroupData> getBarGroups(); - +FlGridData getGridData(); - +MaterialColor getColor(); - +int getDayIndex(); - +Iterable<DiagramDatum> getAggregatedData(); - +Map<String, String?> getInterventionNames() - ] - - [AverageSectionWidget]o-[AverageSection] - [<abstract>ReportSectionWidget]<:-[AverageSectionWidget] - - [DiagramDatum - | - +x: num; - +value: num; - +timestamp: DateTime?; - +intervention: String - ] - - [LinearRegressionSectionWidget - | - +section: LinearRegressionSection - | - +Widget build() - ] - - [LinearRegressionSectionWidget]o-[LinearRegressionSection] - [<abstract>ReportSectionWidget]<:-[LinearRegressionSectionWidget] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - PerformanceSection - - - - - - +minimumRatio: double - +maximum: double - - - - - - +Widget buildContent() - +String getPowerLevelDescription() - +int getCountableObservationAmount() - - - - - - - - - - - - - GenericSection - - - - - - +subject: StudySubject? - +onTap: void Function()? - - - - - - +Widget buildContent() - +Widget build() - - - - - - - - - - - - - PerformanceBar - - - - - - +progress: double - +minimum: double? - - - - - - +Widget build() - - - - - - - - - - - - - PerformanceDetailsScreen - - - - - - +reportSubject: StudySubject? - - - - - - <static>+MaterialPageRoute<dynamic> routeFor() - +Widget build() - - - - - - - - - - - StudySubject - - - - - - - - - - - - - InterventionPerformanceBar - - - - - - +intervention: Intervention - +subject: StudySubject? - - - - - - +Widget build() - - - - - - - - - - - Intervention - - - - - - - - - - - - - ObservationPerformanceBar - - - - - - +observation: Observation - +subject: StudySubject? - - - - - - +Widget build() - - - - - - - - - - - Observation - - - - - - - - - - - Task - - - - - - - - - - - - - ReportDetailsScreen - - - - - - +subject: StudySubject - - - - - - <static>+MaterialPageRoute<dynamic> routeFor() - +Widget build() - - - - - - - - - - - - - ReportSectionContainer - - - - - - +section: ReportSection - +subject: StudySubject - +primary: bool - +onTap: void Function()? - - - - - - +ReportSectionWidget buildContents() - +dynamic () - +List<Widget> buildPrimaryHeader() - +Widget build() - - - - - - - - - - - ReportSection - - - - - - - - - - - void Function()? - - - - - - - - - - - - ReportHistoryScreen - - - - - - +Widget build() - - - - - - - - - - - - - ReportHistoryItem - - - - - - +subject: StudySubject - - - - - - +Widget build() - - - - - - - - - - - - GeneralDetailsSection - - - - - - +Widget buildContent() - - - - - - - - - - - - - LegendWidget - - - - - - +name: String - +color: Color - - - - - - +Widget build() - - - - - - - - - - - Color - - - - - - - - - - - - - LegendsListWidget - - - - - - +legends: List<Legend> - - - - - - +Widget build() - - - - - - - - - - - - Legend - - - - - - +name: String - +color: Color - - - - - - - - - - - - DisclaimerSection - - - - - - +Widget buildContent() - - - - - - - - - - - - ReportSectionWidget - - - - - - +subject: StudySubject - - - - - - - - - - - - - AverageSectionWidget - - - - - - +section: AverageSection - +titlePos: List<int> - +phasePos: List<int> - - - - - - +Widget build() - +Widget getLegend() - +Widget getDiagram() - +BarChartData getChartData() - +Widget getTitles() - +Widget getValues() - +List<BarChartGroupData> getBarGroups() - +FlGridData getGridData() - +MaterialColor getColor() - +int getDayIndex() - +Iterable<DiagramDatum> getAggregatedData() - +Map<String, String?> getInterventionNames() - - - - - - - - - - - AverageSection - - - - - - - - - - - - DiagramDatum - - - - - - +x: num - +value: num - +timestamp: DateTime? - +intervention: String - - - - - - - - - - - - - LinearRegressionSectionWidget - - - - - - +section: LinearRegressionSection - - - - - - +Widget build() - - - - - - - - - - - LinearRegressionSection - - - - - - - - - \ No newline at end of file diff --git a/docs/uml/app/lib/screens/study/report/util/uml.svg b/docs/uml/app/lib/screens/study/report/util/uml.svg deleted file mode 100644 index d13841612..000000000 --- a/docs/uml/app/lib/screens/study/report/util/uml.svg +++ /dev/null @@ -1,128 +0,0 @@ - - [LegendWidget - | - +name: String; - +color: Color - | - +Widget build() - ] - - [LegendWidget]o-[Color] - - [LegendsListWidget - | - +legends: List<Legend> - | - +Widget build() - ] - - [Legend - | - +name: String; - +color: Color - ] - - [Legend]o-[Color] - - - - - - - - - - - - - - - - - - - - - - - - - - LegendWidget - - - - - - +name: String - +color: Color - - - - - - +Widget build() - - - - - - - - - - - Color - - - - - - - - - - - - - LegendsListWidget - - - - - - +legends: List<Legend> - - - - - - +Widget build() - - - - - - - - - - - - Legend - - - - - - +name: String - +color: Color - - - - - - - - - \ No newline at end of file diff --git a/docs/uml/app/lib/screens/study/tasks/intervention/uml.svg b/docs/uml/app/lib/screens/study/tasks/intervention/uml.svg deleted file mode 100644 index e9e196b72..000000000 --- a/docs/uml/app/lib/screens/study/tasks/intervention/uml.svg +++ /dev/null @@ -1,72 +0,0 @@ - - [CheckmarkTaskWidget - | - +task: CheckmarkTask?; - +completionPeriod: CompletionPeriod? - ] - - [CheckmarkTaskWidget]o-[CheckmarkTask] - [CheckmarkTaskWidget]o-[CompletionPeriod] - - - - - - - - - - - - - - - - - - - - - - - - - CheckmarkTaskWidget - - - - - - +task: CheckmarkTask? - +completionPeriod: CompletionPeriod? - - - - - - - - - - - CheckmarkTask - - - - - - - - - - - CompletionPeriod - - - - - - - - - \ No newline at end of file diff --git a/docs/uml/app/lib/screens/study/tasks/observation/uml.svg b/docs/uml/app/lib/screens/study/tasks/observation/uml.svg deleted file mode 100644 index 6e6f81627..000000000 --- a/docs/uml/app/lib/screens/study/tasks/observation/uml.svg +++ /dev/null @@ -1,72 +0,0 @@ - - [QuestionnaireTaskWidget - | - +task: QuestionnaireTask; - +completionPeriod: CompletionPeriod - ] - - [QuestionnaireTaskWidget]o-[QuestionnaireTask] - [QuestionnaireTaskWidget]o-[CompletionPeriod] - - - - - - - - - - - - - - - - - - - - - - - - - QuestionnaireTaskWidget - - - - - - +task: QuestionnaireTask - +completionPeriod: CompletionPeriod - - - - - - - - - - - QuestionnaireTask - - - - - - - - - - - CompletionPeriod - - - - - - - - - \ No newline at end of file diff --git a/docs/uml/app/lib/screens/study/tasks/uml.svg b/docs/uml/app/lib/screens/study/tasks/uml.svg deleted file mode 100644 index 49428166b..000000000 --- a/docs/uml/app/lib/screens/study/tasks/uml.svg +++ /dev/null @@ -1,168 +0,0 @@ - - [QuestionnaireTaskWidget - | - +task: QuestionnaireTask; - +completionPeriod: CompletionPeriod - ] - - [QuestionnaireTaskWidget]o-[QuestionnaireTask] - [QuestionnaireTaskWidget]o-[CompletionPeriod] - - [TaskScreen - | - +taskInstance: TaskInstance - | - <static>+MaterialPageRoute<bool> routeFor() - ] - - [TaskScreen]o-[TaskInstance] - - [CheckmarkTaskWidget - | - +task: CheckmarkTask?; - +completionPeriod: CompletionPeriod? - ] - - [CheckmarkTaskWidget]o-[CheckmarkTask] - [CheckmarkTaskWidget]o-[CompletionPeriod] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - QuestionnaireTaskWidget - - - - - - +task: QuestionnaireTask - +completionPeriod: CompletionPeriod - - - - - - - - - - - QuestionnaireTask - - - - - - - - - - - CompletionPeriod - - - - - - - - - - - - - TaskScreen - - - - - - +taskInstance: TaskInstance - - - - - - <static>+MaterialPageRoute<bool> routeFor() - - - - - - - - - - - TaskInstance - - - - - - - - - - - - CheckmarkTaskWidget - - - - - - +task: CheckmarkTask? - +completionPeriod: CompletionPeriod? - - - - - - - - - - - CheckmarkTask - - - - - - - - - \ No newline at end of file diff --git a/docs/uml/app/lib/screens/study/uml.svg b/docs/uml/app/lib/screens/study/uml.svg deleted file mode 100644 index 5476a482f..000000000 --- a/docs/uml/app/lib/screens/study/uml.svg +++ /dev/null @@ -1,2368 +0,0 @@ - - [ConsentScreen - ] - - [ConsentCard - | - +consent: ConsentItem?; - +index: int?; - +onTapped: dynamic Function(int); - +isChecked: bool? - | - +Widget build() - ] - - [ConsentCard]o-[ConsentItem] - [ConsentCard]o-[dynamic Function(int)] - - [ConsentElement - | - +title: String; - +descriptionText: String; - +acknowledgmentText: String; - +icon: IconData - ] - - [ConsentElement]o-[IconData] - - [StudyOverviewScreen - ] - - [_StudyOverviewScreen - | - +study: Study? - | - +dynamic navigateToJourney(); - +dynamic navigateToEligibilityCheck(); - +Widget build() - ] - - [_StudyOverviewScreen]o-[Study] - - [StudyDetailsView - | - +study: Study?; - +iconSize: double - | - +Widget build() - ] - - [StudyDetailsView]o-[Study] - - [KickoffScreen - ] - - [_KickoffScreen - | - +subject: StudySubject?; - +ready: bool - | - -dynamic _storeUserStudy(); - -Widget _constructStatusIcon(); - -String _getStatusText(); - +Widget build() - ] - - [_KickoffScreen]o-[StudySubject] - - [EligibilityResult - | - +eligible: bool; - +firstFailed: EligibilityCriterion? - ] - - [EligibilityResult]o-[EligibilityCriterion] - - [EligibilityScreen - | - +study: Study? - | - <static>+MaterialPageRoute<EligibilityResult> routeFor() - ] - - [EligibilityScreen]o-[Study] - - [OnboardingProgress - | - +stage: int; - +progress: double - | - -double _getProgressForStage(); - +Widget build() - ] - - [StudySelectionScreen - ] - - [InviteCodeDialog - ] - - [InterventionSelectionScreen - ] - - [JourneyOverviewScreen - ] - - [_JourneyOverviewScreen - | - +subject: StudySubject? - | - +dynamic getConsentAndNavigateToDashboard(); - +Widget build() - ] - - [_JourneyOverviewScreen]o-[StudySubject] - - [Timeline - | - +subject: StudySubject? - | - +Widget build() - ] - - [Timeline]o-[StudySubject] - - [InterventionTile - | - +title: String?; - +iconName: String; - +date: DateTime; - +color: Color?; - +isFirst: bool; - +isLast: bool - | - +Widget build() - ] - - [InterventionTile]o-[Color] - - [IconIndicator - | - +iconName: String; - +color: Color? - | - +Widget build() - ] - - [IconIndicator]o-[Color] - - [TimelineChild - | - +child: Widget? - | - +Widget build() - ] - - [TimelineChild]o-[<abstract>Widget] - - [AverageSectionWidget - | - +section: AverageSection; - +titlePos: List<int>; - +phasePos: List<int> - | - +Widget build(); - +Widget getLegend(); - +Widget getDiagram(); - +BarChartData getChartData(); - +Widget getTitles(); - +Widget getValues(); - +List<BarChartGroupData> getBarGroups(); - +FlGridData getGridData(); - +MaterialColor getColor(); - +int getDayIndex(); - +Iterable<DiagramDatum> getAggregatedData(); - +Map<String, String?> getInterventionNames() - ] - - [AverageSectionWidget]o-[AverageSection] - [<abstract>ReportSectionWidget]<:-[AverageSectionWidget] - - [DiagramDatum - | - +x: num; - +value: num; - +timestamp: DateTime?; - +intervention: String - ] - - [LinearRegressionSectionWidget - | - +section: LinearRegressionSection - | - +Widget build() - ] - - [LinearRegressionSectionWidget]o-[LinearRegressionSection] - [<abstract>ReportSectionWidget]<:-[LinearRegressionSectionWidget] - - [ReportHistoryScreen - | - +Widget build() - ] - - [ReportHistoryItem - | - +subject: StudySubject - | - +Widget build() - ] - - [ReportHistoryItem]o-[StudySubject] - - [ReportDetailsScreen - | - +subject: StudySubject - | - <static>+MaterialPageRoute<dynamic> routeFor(); - +Widget build() - ] - - [ReportDetailsScreen]o-[StudySubject] - - [GeneralDetailsSection - | - +Widget buildContent() - ] - - [<abstract>GenericSection]<:-[GeneralDetailsSection] - - [<abstract>GenericSection - | - +subject: StudySubject?; - +onTap: void Function()? - | - +Widget buildContent(); - +Widget build() - ] - - [<abstract>GenericSection]o-[StudySubject] - [<abstract>GenericSection]o-[void Function()?] - - [DisclaimerSection - | - +Widget buildContent() - ] - - [<abstract>GenericSection]<:-[DisclaimerSection] - - [<abstract>ReportSectionWidget - | - +subject: StudySubject - ] - - [<abstract>ReportSectionWidget]o-[StudySubject] - - [LegendWidget - | - +name: String; - +color: Color - | - +Widget build() - ] - - [LegendWidget]o-[Color] - - [LegendsListWidget - | - +legends: List<Legend> - | - +Widget build() - ] - - [Legend - | - +name: String; - +color: Color - ] - - [Legend]o-[Color] - - [PerformanceDetailsScreen - | - +reportSubject: StudySubject? - | - <static>+MaterialPageRoute<dynamic> routeFor(); - +Widget build() - ] - - [PerformanceDetailsScreen]o-[StudySubject] - - [InterventionPerformanceBar - | - +intervention: Intervention; - +subject: StudySubject? - | - +Widget build() - ] - - [InterventionPerformanceBar]o-[Intervention] - [InterventionPerformanceBar]o-[StudySubject] - - [ObservationPerformanceBar - | - +observation: Observation; - +subject: StudySubject? - | - +Widget build() - ] - - [ObservationPerformanceBar]o-[<abstract>Observation] - [ObservationPerformanceBar]o-[StudySubject] - - [PerformanceBar - | - +task: Task; - +completed: int; - +total: int - | - +Widget build() - ] - - [PerformanceBar]o-[<abstract>Task] - - [PerformanceSection - | - +minimumRatio: double; - +maximum: double - | - +Widget buildContent(); - +String getPowerLevelDescription(); - +int getCountableObservationAmount() - ] - - [<abstract>GenericSection]<:-[PerformanceSection] - - [PerformanceBar - | - +progress: double; - +minimum: double? - | - +Widget build() - ] - - [ReportSectionContainer - | - +section: ReportSection; - +subject: StudySubject; - +primary: bool; - +onTap: void Function()? - | - +ReportSectionWidget buildContents(); - +dynamic (); - +List<Widget> buildPrimaryHeader(); - +Widget build() - ] - - [ReportSectionContainer]o-[<abstract>ReportSection] - [ReportSectionContainer]o-[StudySubject] - [ReportSectionContainer]o-[void Function()?] - - [Settings - ] - - [OptOutAlertDialog - | - +subject: StudySubject? - | - +Widget build() - ] - - [OptOutAlertDialog]o-[StudySubject] - - [DeleteAlertDialog - | - +subject: StudySubject? - | - +Widget build() - ] - - [DeleteAlertDialog]o-[StudySubject] - - [TaskBox - | - +taskInstance: TaskInstance; - +icon: Icon; - +onCompleted: dynamic Function() - ] - - [TaskBox]o-[TaskInstance] - [TaskBox]o-[Icon] - [TaskBox]o-[dynamic Function()] - - [ProgressRow - | - +subject: StudySubject? - ] - - [ProgressRow]o-[StudySubject] - - [InterventionSegment - | - +intervention: Intervention; - +percentCompleted: double; - +percentMissed: double; - +isCurrent: bool; - +isFuture: bool; - +phaseDuration: int - | - +List<Widget> buildSeparators(); - +Widget build() - ] - - [InterventionSegment]o-[Intervention] - - [TaskOverview - | - +subject: StudySubject?; - +scheduleToday: List<TaskInstance>?; - +interventionIcon: String? - ] - - [TaskOverview]o-[StudySubject] - - [ContactScreen - ] - - [ContactWidget - | - +contact: Contact?; - +title: String; - +subtitle: String?; - +color: Color - | - +Widget build() - ] - - [ContactWidget]o-[Contact] - [ContactWidget]o-[Color] - - [ContactItem - | - +iconData: IconData; - +itemName: String; - +itemValue: String?; - +type: ContactItemType?; - +iconColor: Color? - | - +dynamic launchContact(); - +Widget build() - ] - - [ContactItem]o-[IconData] - [ContactItem]o-[ContactItemType] - [ContactItem]o-[Color] - - [ContactItemType - | - +index: int; - <static>+values: List<ContactItemType>; - <static>+website: ContactItemType; - <static>+email: ContactItemType; - <static>+phone: ContactItemType - ] - - [ContactItemType]o-[ContactItemType] - [Enum]<:--[ContactItemType] - - [FAQ - | - +Widget build() - ] - - [Entry - | - +title: String; - +children: List<Entry> - ] - - [EntryItem - | - +entry: Entry - | - -Widget _buildTiles(); - +Widget build() - ] - - [EntryItem]o-[Entry] - - [DashboardScreen - | - +error: String? - ] - - [OverflowMenuItem - | - +name: String; - +icon: IconData; - +routeName: String?; - +onTap: dynamic Function()? - ] - - [OverflowMenuItem]o-[IconData] - [OverflowMenuItem]o-[dynamic Function()?] - - [StudyFinishedPlaceholder - | - <static>+space: SizedBox - | - +Widget build() - ] - - [StudyFinishedPlaceholder]o-[SizedBox] - - [QuestionnaireTaskWidget - | - +task: QuestionnaireTask; - +completionPeriod: CompletionPeriod - ] - - [QuestionnaireTaskWidget]o-[QuestionnaireTask] - [QuestionnaireTaskWidget]o-[CompletionPeriod] - - [TaskScreen - | - +taskInstance: TaskInstance - | - <static>+MaterialPageRoute<bool> routeFor() - ] - - [TaskScreen]o-[TaskInstance] - - [CheckmarkTaskWidget - | - +task: CheckmarkTask?; - +completionPeriod: CompletionPeriod? - ] - - [CheckmarkTaskWidget]o-[CheckmarkTask] - [CheckmarkTaskWidget]o-[CompletionPeriod] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ConsentScreen - - - - - - - - - - - - - ConsentCard - - - - - - +consent: ConsentItem? - +index: int? - +onTapped: dynamic Function(int) - +isChecked: bool? - - - - - - +Widget build() - - - - - - - - - - - ConsentItem - - - - - - - - - - - dynamic Function(int) - - - - - - - - - - - - ConsentElement - - - - - - +title: String - +descriptionText: String - +acknowledgmentText: String - +icon: IconData - - - - - - - - - - - IconData - - - - - - - - - - - StudyOverviewScreen - - - - - - - - - - - - - _StudyOverviewScreen - - - - - - +study: Study? - - - - - - +dynamic navigateToJourney() - +dynamic navigateToEligibilityCheck() - +Widget build() - - - - - - - - - - - Study - - - - - - - - - - - - - StudyDetailsView - - - - - - +study: Study? - +iconSize: double - - - - - - +Widget build() - - - - - - - - - - - KickoffScreen - - - - - - - - - - - - - _KickoffScreen - - - - - - +subject: StudySubject? - +ready: bool - - - - - - -dynamic _storeUserStudy() - -Widget _constructStatusIcon() - -String _getStatusText() - +Widget build() - - - - - - - - - - - StudySubject - - - - - - - - - - - - EligibilityResult - - - - - - +eligible: bool - +firstFailed: EligibilityCriterion? - - - - - - - - - - - EligibilityCriterion - - - - - - - - - - - - - EligibilityScreen - - - - - - +study: Study? - - - - - - <static>+MaterialPageRoute<EligibilityResult> routeFor() - - - - - - - - - - - - - OnboardingProgress - - - - - - +stage: int - +progress: double - - - - - - -double _getProgressForStage() - +Widget build() - - - - - - - - - - - StudySelectionScreen - - - - - - - - - - - InviteCodeDialog - - - - - - - - - - - InterventionSelectionScreen - - - - - - - - - - - JourneyOverviewScreen - - - - - - - - - - - - - _JourneyOverviewScreen - - - - - - +subject: StudySubject? - - - - - - +dynamic getConsentAndNavigateToDashboard() - +Widget build() - - - - - - - - - - - - - Timeline - - - - - - +subject: StudySubject? - - - - - - +Widget build() - - - - - - - - - - - - - InterventionTile - - - - - - +title: String? - +iconName: String - +date: DateTime - +color: Color? - +isFirst: bool - +isLast: bool - - - - - - +Widget build() - - - - - - - - - - - Color - - - - - - - - - - - - - IconIndicator - - - - - - +iconName: String - +color: Color? - - - - - - +Widget build() - - - - - - - - - - - - - TimelineChild - - - - - - +child: Widget? - - - - - - +Widget build() - - - - - - - - - - - Widget - - - - - - - - - - - - - AverageSectionWidget - - - - - - +section: AverageSection - +titlePos: List<int> - +phasePos: List<int> - - - - - - +Widget build() - +Widget getLegend() - +Widget getDiagram() - +BarChartData getChartData() - +Widget getTitles() - +Widget getValues() - +List<BarChartGroupData> getBarGroups() - +FlGridData getGridData() - +MaterialColor getColor() - +int getDayIndex() - +Iterable<DiagramDatum> getAggregatedData() - +Map<String, String?> getInterventionNames() - - - - - - - - - - - AverageSection - - - - - - - - - - - - ReportSectionWidget - - - - - - +subject: StudySubject - - - - - - - - - - - - DiagramDatum - - - - - - +x: num - +value: num - +timestamp: DateTime? - +intervention: String - - - - - - - - - - - - - LinearRegressionSectionWidget - - - - - - +section: LinearRegressionSection - - - - - - +Widget build() - - - - - - - - - - - LinearRegressionSection - - - - - - - - - - - - ReportHistoryScreen - - - - - - +Widget build() - - - - - - - - - - - - - ReportHistoryItem - - - - - - +subject: StudySubject - - - - - - +Widget build() - - - - - - - - - - - - - ReportDetailsScreen - - - - - - +subject: StudySubject - - - - - - <static>+MaterialPageRoute<dynamic> routeFor() - +Widget build() - - - - - - - - - - - - GeneralDetailsSection - - - - - - +Widget buildContent() - - - - - - - - - - - - - GenericSection - - - - - - +subject: StudySubject? - +onTap: void Function()? - - - - - - +Widget buildContent() - +Widget build() - - - - - - - - - - - void Function()? - - - - - - - - - - - - DisclaimerSection - - - - - - +Widget buildContent() - - - - - - - - - - - - - LegendWidget - - - - - - +name: String - +color: Color - - - - - - +Widget build() - - - - - - - - - - - - - LegendsListWidget - - - - - - +legends: List<Legend> - - - - - - +Widget build() - - - - - - - - - - - - Legend - - - - - - +name: String - +color: Color - - - - - - - - - - - - - PerformanceDetailsScreen - - - - - - +reportSubject: StudySubject? - - - - - - <static>+MaterialPageRoute<dynamic> routeFor() - +Widget build() - - - - - - - - - - - - - InterventionPerformanceBar - - - - - - +intervention: Intervention - +subject: StudySubject? - - - - - - +Widget build() - - - - - - - - - - - Intervention - - - - - - - - - - - - - ObservationPerformanceBar - - - - - - +observation: Observation - +subject: StudySubject? - - - - - - +Widget build() - - - - - - - - - - - Observation - - - - - - - - - - - - - PerformanceBar - - - - - - +task: Task - +completed: int - +total: int - - - - - - +Widget build() - - - - - - - - - - - Task - - - - - - - - - - - - - PerformanceSection - - - - - - +minimumRatio: double - +maximum: double - - - - - - +Widget buildContent() - +String getPowerLevelDescription() - +int getCountableObservationAmount() - - - - - - - - - - - - - ReportSectionContainer - - - - - - +section: ReportSection - +subject: StudySubject - +primary: bool - +onTap: void Function()? - - - - - - +ReportSectionWidget buildContents() - +dynamic () - +List<Widget> buildPrimaryHeader() - +Widget build() - - - - - - - - - - - ReportSection - - - - - - - - - - - Settings - - - - - - - - - - - - - OptOutAlertDialog - - - - - - +subject: StudySubject? - - - - - - +Widget build() - - - - - - - - - - - - - DeleteAlertDialog - - - - - - +subject: StudySubject? - - - - - - +Widget build() - - - - - - - - - - - - TaskBox - - - - - - +taskInstance: TaskInstance - +icon: Icon - +onCompleted: dynamic Function() - - - - - - - - - - - TaskInstance - - - - - - - - - - - Icon - - - - - - - - - - - dynamic Function() - - - - - - - - - - - - ProgressRow - - - - - - +subject: StudySubject? - - - - - - - - - - - - - InterventionSegment - - - - - - +intervention: Intervention - +percentCompleted: double - +percentMissed: double - +isCurrent: bool - +isFuture: bool - +phaseDuration: int - - - - - - +List<Widget> buildSeparators() - +Widget build() - - - - - - - - - - - - TaskOverview - - - - - - +subject: StudySubject? - +scheduleToday: List<TaskInstance>? - +interventionIcon: String? - - - - - - - - - - - ContactScreen - - - - - - - - - - - - - ContactWidget - - - - - - +contact: Contact? - +title: String - +subtitle: String? - +color: Color - - - - - - +Widget build() - - - - - - - - - - - Contact - - - - - - - - - - - - - ContactItem - - - - - - +iconData: IconData - +itemName: String - +itemValue: String? - +type: ContactItemType? - +iconColor: Color? - - - - - - +dynamic launchContact() - +Widget build() - - - - - - - - - - - - ContactItemType - - - - - - +index: int - <static>+values: List<ContactItemType> - <static>+website: ContactItemType - <static>+email: ContactItemType - <static>+phone: ContactItemType - - - - - - - - - - - Enum - - - - - - - - - - - - FAQ - - - - - - +Widget build() - - - - - - - - - - - - Entry - - - - - - +title: String - +children: List<Entry> - - - - - - - - - - - - - EntryItem - - - - - - +entry: Entry - - - - - - -Widget _buildTiles() - +Widget build() - - - - - - - - - - - - DashboardScreen - - - - - - +error: String? - - - - - - - - - - - - OverflowMenuItem - - - - - - +name: String - +icon: IconData - +routeName: String? - +onTap: dynamic Function()? - - - - - - - - - - - dynamic Function()? - - - - - - - - - - - - - StudyFinishedPlaceholder - - - - - - <static>+space: SizedBox - - - - - - +Widget build() - - - - - - - - - - - SizedBox - - - - - - - - - - - - QuestionnaireTaskWidget - - - - - - +task: QuestionnaireTask - +completionPeriod: CompletionPeriod - - - - - - - - - - - QuestionnaireTask - - - - - - - - - - - CompletionPeriod - - - - - - - - - - - - - TaskScreen - - - - - - +taskInstance: TaskInstance - - - - - - <static>+MaterialPageRoute<bool> routeFor() - - - - - - - - - - - - CheckmarkTaskWidget - - - - - - +task: CheckmarkTask? - +completionPeriod: CompletionPeriod? - - - - - - - - - - - CheckmarkTask - - - - - - - - - \ No newline at end of file diff --git a/docs/uml/app/lib/screens/uml.svg b/docs/uml/app/lib/screens/uml.svg deleted file mode 100644 index 7e5967908..000000000 --- a/docs/uml/app/lib/screens/uml.svg +++ /dev/null @@ -1,2660 +0,0 @@ - - [ConsentScreen - ] - - [ConsentCard - | - +consent: ConsentItem?; - +index: int?; - +onTapped: dynamic Function(int); - +isChecked: bool? - | - +Widget build() - ] - - [ConsentCard]o-[ConsentItem] - [ConsentCard]o-[dynamic Function(int)] - - [ConsentElement - | - +title: String; - +descriptionText: String; - +acknowledgmentText: String; - +icon: IconData - ] - - [ConsentElement]o-[IconData] - - [StudyOverviewScreen - ] - - [_StudyOverviewScreen - | - +study: Study? - | - +dynamic navigateToJourney(); - +dynamic navigateToEligibilityCheck(); - +Widget build() - ] - - [_StudyOverviewScreen]o-[Study] - - [StudyDetailsView - | - +study: Study?; - +iconSize: double - | - +Widget build() - ] - - [StudyDetailsView]o-[Study] - - [KickoffScreen - ] - - [_KickoffScreen - | - +subject: StudySubject?; - +ready: bool - | - -dynamic _storeUserStudy(); - -Widget _constructStatusIcon(); - -String _getStatusText(); - +Widget build() - ] - - [_KickoffScreen]o-[StudySubject] - - [EligibilityResult - | - +eligible: bool; - +firstFailed: EligibilityCriterion? - ] - - [EligibilityResult]o-[EligibilityCriterion] - - [EligibilityScreen - | - +study: Study? - | - <static>+MaterialPageRoute<EligibilityResult> routeFor() - ] - - [EligibilityScreen]o-[Study] - - [OnboardingProgress - | - +stage: int; - +progress: double - | - -double _getProgressForStage(); - +Widget build() - ] - - [StudySelectionScreen - ] - - [InviteCodeDialog - ] - - [InterventionSelectionScreen - ] - - [JourneyOverviewScreen - ] - - [_JourneyOverviewScreen - | - +subject: StudySubject? - | - +dynamic getConsentAndNavigateToDashboard(); - +Widget build() - ] - - [_JourneyOverviewScreen]o-[StudySubject] - - [Timeline - | - +subject: StudySubject? - | - +Widget build() - ] - - [Timeline]o-[StudySubject] - - [InterventionTile - | - +title: String?; - +iconName: String; - +date: DateTime; - +color: Color?; - +isFirst: bool; - +isLast: bool - | - +Widget build() - ] - - [InterventionTile]o-[Color] - - [IconIndicator - | - +iconName: String; - +color: Color? - | - +Widget build() - ] - - [IconIndicator]o-[Color] - - [TimelineChild - | - +child: Widget? - | - +Widget build() - ] - - [TimelineChild]o-[<abstract>Widget] - - [AverageSectionWidget - | - +section: AverageSection; - +titlePos: List<int>; - +phasePos: List<int> - | - +Widget build(); - +Widget getLegend(); - +Widget getDiagram(); - +BarChartData getChartData(); - +Widget getTitles(); - +Widget getValues(); - +List<BarChartGroupData> getBarGroups(); - +FlGridData getGridData(); - +MaterialColor getColor(); - +int getDayIndex(); - +Iterable<DiagramDatum> getAggregatedData(); - +Map<String, String?> getInterventionNames() - ] - - [AverageSectionWidget]o-[AverageSection] - [<abstract>ReportSectionWidget]<:-[AverageSectionWidget] - - [DiagramDatum - | - +x: num; - +value: num; - +timestamp: DateTime?; - +intervention: String - ] - - [LinearRegressionSectionWidget - | - +section: LinearRegressionSection - | - +Widget build() - ] - - [LinearRegressionSectionWidget]o-[LinearRegressionSection] - [<abstract>ReportSectionWidget]<:-[LinearRegressionSectionWidget] - - [ReportHistoryScreen - | - +Widget build() - ] - - [ReportHistoryItem - | - +subject: StudySubject - | - +Widget build() - ] - - [ReportHistoryItem]o-[StudySubject] - - [ReportDetailsScreen - | - +subject: StudySubject - | - <static>+MaterialPageRoute<dynamic> routeFor(); - +Widget build() - ] - - [ReportDetailsScreen]o-[StudySubject] - - [GeneralDetailsSection - | - +Widget buildContent() - ] - - [<abstract>GenericSection]<:-[GeneralDetailsSection] - - [<abstract>GenericSection - | - +subject: StudySubject?; - +onTap: void Function()? - | - +Widget buildContent(); - +Widget build() - ] - - [<abstract>GenericSection]o-[StudySubject] - [<abstract>GenericSection]o-[void Function()?] - - [DisclaimerSection - | - +Widget buildContent() - ] - - [<abstract>GenericSection]<:-[DisclaimerSection] - - [<abstract>ReportSectionWidget - | - +subject: StudySubject - ] - - [<abstract>ReportSectionWidget]o-[StudySubject] - - [LegendWidget - | - +name: String; - +color: Color - | - +Widget build() - ] - - [LegendWidget]o-[Color] - - [LegendsListWidget - | - +legends: List<Legend> - | - +Widget build() - ] - - [Legend - | - +name: String; - +color: Color - ] - - [Legend]o-[Color] - - [PerformanceDetailsScreen - | - +reportSubject: StudySubject? - | - <static>+MaterialPageRoute<dynamic> routeFor(); - +Widget build() - ] - - [PerformanceDetailsScreen]o-[StudySubject] - - [InterventionPerformanceBar - | - +intervention: Intervention; - +subject: StudySubject? - | - +Widget build() - ] - - [InterventionPerformanceBar]o-[Intervention] - [InterventionPerformanceBar]o-[StudySubject] - - [ObservationPerformanceBar - | - +observation: Observation; - +subject: StudySubject? - | - +Widget build() - ] - - [ObservationPerformanceBar]o-[<abstract>Observation] - [ObservationPerformanceBar]o-[StudySubject] - - [PerformanceBar - | - +task: Task; - +completed: int; - +total: int - | - +Widget build() - ] - - [PerformanceBar]o-[<abstract>Task] - - [PerformanceSection - | - +minimumRatio: double; - +maximum: double - | - +Widget buildContent(); - +String getPowerLevelDescription(); - +int getCountableObservationAmount() - ] - - [<abstract>GenericSection]<:-[PerformanceSection] - - [PerformanceBar - | - +progress: double; - +minimum: double? - | - +Widget build() - ] - - [ReportSectionContainer - | - +section: ReportSection; - +subject: StudySubject; - +primary: bool; - +onTap: void Function()? - | - +ReportSectionWidget buildContents(); - +dynamic (); - +List<Widget> buildPrimaryHeader(); - +Widget build() - ] - - [ReportSectionContainer]o-[<abstract>ReportSection] - [ReportSectionContainer]o-[StudySubject] - [ReportSectionContainer]o-[void Function()?] - - [Settings - ] - - [OptOutAlertDialog - | - +subject: StudySubject? - | - +Widget build() - ] - - [OptOutAlertDialog]o-[StudySubject] - - [DeleteAlertDialog - | - +subject: StudySubject? - | - +Widget build() - ] - - [DeleteAlertDialog]o-[StudySubject] - - [TaskBox - | - +taskInstance: TaskInstance; - +icon: Icon; - +onCompleted: dynamic Function() - ] - - [TaskBox]o-[TaskInstance] - [TaskBox]o-[Icon] - [TaskBox]o-[dynamic Function()] - - [ProgressRow - | - +subject: StudySubject? - ] - - [ProgressRow]o-[StudySubject] - - [InterventionSegment - | - +intervention: Intervention; - +percentCompleted: double; - +percentMissed: double; - +isCurrent: bool; - +isFuture: bool; - +phaseDuration: int - | - +List<Widget> buildSeparators(); - +Widget build() - ] - - [InterventionSegment]o-[Intervention] - - [TaskOverview - | - +subject: StudySubject?; - +scheduleToday: List<TaskInstance>?; - +interventionIcon: String? - ] - - [TaskOverview]o-[StudySubject] - - [ContactScreen - ] - - [ContactWidget - | - +contact: Contact?; - +title: String; - +subtitle: String?; - +color: Color - | - +Widget build() - ] - - [ContactWidget]o-[Contact] - [ContactWidget]o-[Color] - - [ContactItem - | - +iconData: IconData; - +itemName: String; - +itemValue: String?; - +type: ContactItemType?; - +iconColor: Color? - | - +dynamic launchContact(); - +Widget build() - ] - - [ContactItem]o-[IconData] - [ContactItem]o-[ContactItemType] - [ContactItem]o-[Color] - - [ContactItemType - | - +index: int; - <static>+values: List<ContactItemType>; - <static>+website: ContactItemType; - <static>+email: ContactItemType; - <static>+phone: ContactItemType - ] - - [ContactItemType]o-[ContactItemType] - [Enum]<:--[ContactItemType] - - [FAQ - | - +Widget build() - ] - - [Entry - | - +title: String; - +children: List<Entry> - ] - - [EntryItem - | - +entry: Entry - | - -Widget _buildTiles(); - +Widget build() - ] - - [EntryItem]o-[Entry] - - [DashboardScreen - | - +error: String? - ] - - [OverflowMenuItem - | - +name: String; - +icon: IconData; - +routeName: String?; - +onTap: dynamic Function()? - ] - - [OverflowMenuItem]o-[IconData] - [OverflowMenuItem]o-[dynamic Function()?] - - [StudyFinishedPlaceholder - | - <static>+space: SizedBox - | - +Widget build() - ] - - [StudyFinishedPlaceholder]o-[SizedBox] - - [QuestionnaireTaskWidget - | - +task: QuestionnaireTask; - +completionPeriod: CompletionPeriod - ] - - [QuestionnaireTaskWidget]o-[QuestionnaireTask] - [QuestionnaireTaskWidget]o-[CompletionPeriod] - - [TaskScreen - | - +taskInstance: TaskInstance - | - <static>+MaterialPageRoute<bool> routeFor() - ] - - [TaskScreen]o-[TaskInstance] - - [CheckmarkTaskWidget - | - +task: CheckmarkTask?; - +completionPeriod: CompletionPeriod? - ] - - [CheckmarkTaskWidget]o-[CheckmarkTask] - [CheckmarkTaskWidget]o-[CompletionPeriod] - - [AppOutdatedScreen - | - +Widget build() - ] - - [TermsScreen - ] - - [LegalSection - | - +title: String?; - +description: String?; - +icon: Icon?; - +pdfUrl: String?; - +pdfUrlLabel: String?; - +acknowledgment: String?; - +isChecked: bool?; - +onChange: void Function(bool?)? - | - +Widget build() - ] - - [LegalSection]o-[Icon] - [LegalSection]o-[void Function(bool?)?] - - [IFrameHelper - | - +void postRouteFinished(); - +void listen() - ] - - [LoadingScreen - | - +sessionString: String?; - +queryParameters: Map<String, String>? - ] - - [AboutScreen - | - +Widget build() - ] - - [Preview - | - +queryParameters: Map<String, String>?; - +appLanguage: AppLanguage; - +selectedRoute: String?; - +extra: String?; - +study: Study?; - +selectedStudyObjectId: String?; - +subject: StudySubject? - | - +bool hasRoute(); - +void handleQueries(); - +dynamic init(); - +dynamic handleAuthorization(); - +dynamic runCommands(); - +String? getSelectedRoute(); - +bool containsQuery(); - +bool containsQueryPair(); - +dynamic getStudySubject(); - -dynamic _createFakeSubject(); - +List<String> getInterventionIds() - ] - - [Preview]o-[AppLanguage] - [Preview]o-[Study] - [Preview]o-[StudySubject] - - [WelcomeScreen - | - +Widget build() - ] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ConsentScreen - - - - - - - - - - - - - ConsentCard - - - - - - +consent: ConsentItem? - +index: int? - +onTapped: dynamic Function(int) - +isChecked: bool? - - - - - - +Widget build() - - - - - - - - - - - ConsentItem - - - - - - - - - - - dynamic Function(int) - - - - - - - - - - - - ConsentElement - - - - - - +title: String - +descriptionText: String - +acknowledgmentText: String - +icon: IconData - - - - - - - - - - - IconData - - - - - - - - - - - StudyOverviewScreen - - - - - - - - - - - - - _StudyOverviewScreen - - - - - - +study: Study? - - - - - - +dynamic navigateToJourney() - +dynamic navigateToEligibilityCheck() - +Widget build() - - - - - - - - - - - Study - - - - - - - - - - - - - StudyDetailsView - - - - - - +study: Study? - +iconSize: double - - - - - - +Widget build() - - - - - - - - - - - KickoffScreen - - - - - - - - - - - - - _KickoffScreen - - - - - - +subject: StudySubject? - +ready: bool - - - - - - -dynamic _storeUserStudy() - -Widget _constructStatusIcon() - -String _getStatusText() - +Widget build() - - - - - - - - - - - StudySubject - - - - - - - - - - - - EligibilityResult - - - - - - +eligible: bool - +firstFailed: EligibilityCriterion? - - - - - - - - - - - EligibilityCriterion - - - - - - - - - - - - - EligibilityScreen - - - - - - +study: Study? - - - - - - <static>+MaterialPageRoute<EligibilityResult> routeFor() - - - - - - - - - - - - - OnboardingProgress - - - - - - +stage: int - +progress: double - - - - - - -double _getProgressForStage() - +Widget build() - - - - - - - - - - - StudySelectionScreen - - - - - - - - - - - InviteCodeDialog - - - - - - - - - - - InterventionSelectionScreen - - - - - - - - - - - JourneyOverviewScreen - - - - - - - - - - - - - _JourneyOverviewScreen - - - - - - +subject: StudySubject? - - - - - - +dynamic getConsentAndNavigateToDashboard() - +Widget build() - - - - - - - - - - - - - Timeline - - - - - - +subject: StudySubject? - - - - - - +Widget build() - - - - - - - - - - - - - InterventionTile - - - - - - +title: String? - +iconName: String - +date: DateTime - +color: Color? - +isFirst: bool - +isLast: bool - - - - - - +Widget build() - - - - - - - - - - - Color - - - - - - - - - - - - - IconIndicator - - - - - - +iconName: String - +color: Color? - - - - - - +Widget build() - - - - - - - - - - - - - TimelineChild - - - - - - +child: Widget? - - - - - - +Widget build() - - - - - - - - - - - Widget - - - - - - - - - - - - - AverageSectionWidget - - - - - - +section: AverageSection - +titlePos: List<int> - +phasePos: List<int> - - - - - - +Widget build() - +Widget getLegend() - +Widget getDiagram() - +BarChartData getChartData() - +Widget getTitles() - +Widget getValues() - +List<BarChartGroupData> getBarGroups() - +FlGridData getGridData() - +MaterialColor getColor() - +int getDayIndex() - +Iterable<DiagramDatum> getAggregatedData() - +Map<String, String?> getInterventionNames() - - - - - - - - - - - AverageSection - - - - - - - - - - - - ReportSectionWidget - - - - - - +subject: StudySubject - - - - - - - - - - - - DiagramDatum - - - - - - +x: num - +value: num - +timestamp: DateTime? - +intervention: String - - - - - - - - - - - - - LinearRegressionSectionWidget - - - - - - +section: LinearRegressionSection - - - - - - +Widget build() - - - - - - - - - - - LinearRegressionSection - - - - - - - - - - - - ReportHistoryScreen - - - - - - +Widget build() - - - - - - - - - - - - - ReportHistoryItem - - - - - - +subject: StudySubject - - - - - - +Widget build() - - - - - - - - - - - - - ReportDetailsScreen - - - - - - +subject: StudySubject - - - - - - <static>+MaterialPageRoute<dynamic> routeFor() - +Widget build() - - - - - - - - - - - - GeneralDetailsSection - - - - - - +Widget buildContent() - - - - - - - - - - - - - GenericSection - - - - - - +subject: StudySubject? - +onTap: void Function()? - - - - - - +Widget buildContent() - +Widget build() - - - - - - - - - - - void Function()? - - - - - - - - - - - - DisclaimerSection - - - - - - +Widget buildContent() - - - - - - - - - - - - - LegendWidget - - - - - - +name: String - +color: Color - - - - - - +Widget build() - - - - - - - - - - - - - LegendsListWidget - - - - - - +legends: List<Legend> - - - - - - +Widget build() - - - - - - - - - - - - Legend - - - - - - +name: String - +color: Color - - - - - - - - - - - - - PerformanceDetailsScreen - - - - - - +reportSubject: StudySubject? - - - - - - <static>+MaterialPageRoute<dynamic> routeFor() - +Widget build() - - - - - - - - - - - - - InterventionPerformanceBar - - - - - - +intervention: Intervention - +subject: StudySubject? - - - - - - +Widget build() - - - - - - - - - - - Intervention - - - - - - - - - - - - - ObservationPerformanceBar - - - - - - +observation: Observation - +subject: StudySubject? - - - - - - +Widget build() - - - - - - - - - - - Observation - - - - - - - - - - - - - PerformanceBar - - - - - - +task: Task - +completed: int - +total: int - - - - - - +Widget build() - - - - - - - - - - - Task - - - - - - - - - - - - - PerformanceSection - - - - - - +minimumRatio: double - +maximum: double - - - - - - +Widget buildContent() - +String getPowerLevelDescription() - +int getCountableObservationAmount() - - - - - - - - - - - - - ReportSectionContainer - - - - - - +section: ReportSection - +subject: StudySubject - +primary: bool - +onTap: void Function()? - - - - - - +ReportSectionWidget buildContents() - +dynamic () - +List<Widget> buildPrimaryHeader() - +Widget build() - - - - - - - - - - - ReportSection - - - - - - - - - - - Settings - - - - - - - - - - - - - OptOutAlertDialog - - - - - - +subject: StudySubject? - - - - - - +Widget build() - - - - - - - - - - - - - DeleteAlertDialog - - - - - - +subject: StudySubject? - - - - - - +Widget build() - - - - - - - - - - - - TaskBox - - - - - - +taskInstance: TaskInstance - +icon: Icon - +onCompleted: dynamic Function() - - - - - - - - - - - TaskInstance - - - - - - - - - - - Icon - - - - - - - - - - - dynamic Function() - - - - - - - - - - - - ProgressRow - - - - - - +subject: StudySubject? - - - - - - - - - - - - - InterventionSegment - - - - - - +intervention: Intervention - +percentCompleted: double - +percentMissed: double - +isCurrent: bool - +isFuture: bool - +phaseDuration: int - - - - - - +List<Widget> buildSeparators() - +Widget build() - - - - - - - - - - - - TaskOverview - - - - - - +subject: StudySubject? - +scheduleToday: List<TaskInstance>? - +interventionIcon: String? - - - - - - - - - - - ContactScreen - - - - - - - - - - - - - ContactWidget - - - - - - +contact: Contact? - +title: String - +subtitle: String? - +color: Color - - - - - - +Widget build() - - - - - - - - - - - Contact - - - - - - - - - - - - - ContactItem - - - - - - +iconData: IconData - +itemName: String - +itemValue: String? - +type: ContactItemType? - +iconColor: Color? - - - - - - +dynamic launchContact() - +Widget build() - - - - - - - - - - - - ContactItemType - - - - - - +index: int - <static>+values: List<ContactItemType> - <static>+website: ContactItemType - <static>+email: ContactItemType - <static>+phone: ContactItemType - - - - - - - - - - - Enum - - - - - - - - - - - - FAQ - - - - - - +Widget build() - - - - - - - - - - - - Entry - - - - - - +title: String - +children: List<Entry> - - - - - - - - - - - - - EntryItem - - - - - - +entry: Entry - - - - - - -Widget _buildTiles() - +Widget build() - - - - - - - - - - - - DashboardScreen - - - - - - +error: String? - - - - - - - - - - - - OverflowMenuItem - - - - - - +name: String - +icon: IconData - +routeName: String? - +onTap: dynamic Function()? - - - - - - - - - - - dynamic Function()? - - - - - - - - - - - - - StudyFinishedPlaceholder - - - - - - <static>+space: SizedBox - - - - - - +Widget build() - - - - - - - - - - - SizedBox - - - - - - - - - - - - QuestionnaireTaskWidget - - - - - - +task: QuestionnaireTask - +completionPeriod: CompletionPeriod - - - - - - - - - - - QuestionnaireTask - - - - - - - - - - - CompletionPeriod - - - - - - - - - - - - - TaskScreen - - - - - - +taskInstance: TaskInstance - - - - - - <static>+MaterialPageRoute<bool> routeFor() - - - - - - - - - - - - CheckmarkTaskWidget - - - - - - +task: CheckmarkTask? - +completionPeriod: CompletionPeriod? - - - - - - - - - - - CheckmarkTask - - - - - - - - - - - - AppOutdatedScreen - - - - - - +Widget build() - - - - - - - - - - - TermsScreen - - - - - - - - - - - - - LegalSection - - - - - - +title: String? - +description: String? - +icon: Icon? - +pdfUrl: String? - +pdfUrlLabel: String? - +acknowledgment: String? - +isChecked: bool? - +onChange: void Function(bool?)? - - - - - - +Widget build() - - - - - - - - - - - void Function(bool?)? - - - - - - - - - - - - IFrameHelper - - - - - - +void postRouteFinished() - +void listen() - - - - - - - - - - - - LoadingScreen - - - - - - +sessionString: String? - +queryParameters: Map<String, String>? - - - - - - - - - - - - AboutScreen - - - - - - +Widget build() - - - - - - - - - - - - - Preview - - - - - - +queryParameters: Map<String, String>? - +appLanguage: AppLanguage - +selectedRoute: String? - +extra: String? - +study: Study? - +selectedStudyObjectId: String? - +subject: StudySubject? - - - - - - +bool hasRoute() - +void handleQueries() - +dynamic init() - +dynamic handleAuthorization() - +dynamic runCommands() - +String? getSelectedRoute() - +bool containsQuery() - +bool containsQueryPair() - +dynamic getStudySubject() - -dynamic _createFakeSubject() - +List<String> getInterventionIds() - - - - - - - - - - - AppLanguage - - - - - - - - - - - - WelcomeScreen - - - - - - +Widget build() - - - - - - - - - \ No newline at end of file diff --git a/docs/uml/app/lib/widgets/questionnaire/questions/uml.svg b/docs/uml/app/lib/widgets/questionnaire/questions/uml.svg deleted file mode 100644 index abe98c1f5..000000000 --- a/docs/uml/app/lib/widgets/questionnaire/questions/uml.svg +++ /dev/null @@ -1,363 +0,0 @@ - - [ChoiceQuestionWidget - | - +question: ChoiceQuestion; - +onDone: dynamic Function(Answer<dynamic>); - +multiSelectionText: String; - +subtitle: String? - ] - - [ChoiceQuestionWidget]o-[ChoiceQuestion] - [ChoiceQuestionWidget]o-[dynamic Function(Answer<dynamic>)] - [<abstract>QuestionWidget]<:-[ChoiceQuestionWidget] - - [<abstract>QuestionWidget - | - +subtitle: String? - ] - - [AnnotatedScaleQuestionWidget - | - +question: AnnotatedScaleQuestion; - +onDone: dynamic Function(Answer<dynamic>)? - ] - - [AnnotatedScaleQuestionWidget]o-[AnnotatedScaleQuestion] - [AnnotatedScaleQuestionWidget]o-[dynamic Function(Answer<dynamic>)?] - [<abstract>QuestionWidget]<:-[AnnotatedScaleQuestionWidget] - - [BooleanQuestionWidget - | - +question: BooleanQuestion; - +onDone: dynamic Function(Answer<dynamic>)? - ] - - [BooleanQuestionWidget]o-[BooleanQuestion] - [BooleanQuestionWidget]o-[dynamic Function(Answer<dynamic>)?] - [<abstract>QuestionWidget]<:-[BooleanQuestionWidget] - - [FreeTextQuestionWidget - | - +question: FreeTextQuestion; - +onDone: dynamic Function(Answer<dynamic>)? - ] - - [FreeTextQuestionWidget]o-[FreeTextQuestion] - [FreeTextQuestionWidget]o-[dynamic Function(Answer<dynamic>)?] - [<abstract>QuestionWidget]<:-[FreeTextQuestionWidget] - - [ScaleQuestionWidget - | - +question: ScaleQuestion; - +onDone: dynamic Function(Answer<dynamic>)? - ] - - [ScaleQuestionWidget]o-[ScaleQuestion] - [ScaleQuestionWidget]o-[dynamic Function(Answer<dynamic>)?] - [<abstract>QuestionWidget]<:-[ScaleQuestionWidget] - - [VisualAnalogueQuestionWidget - | - +question: VisualAnalogueQuestion; - +onDone: dynamic Function(Answer<dynamic>)? - ] - - [VisualAnalogueQuestionWidget]o-[VisualAnalogueQuestion] - [VisualAnalogueQuestionWidget]o-[dynamic Function(Answer<dynamic>)?] - [<abstract>QuestionWidget]<:-[VisualAnalogueQuestionWidget] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ChoiceQuestionWidget - - - - - - +question: ChoiceQuestion - +onDone: dynamic Function(Answer<dynamic>) - +multiSelectionText: String - +subtitle: String? - - - - - - - - - - - ChoiceQuestion - - - - - - - - - - - dynamic Function(Answer<dynamic>) - - - - - - - - - - - - QuestionWidget - - - - - - +subtitle: String? - - - - - - - - - - - - AnnotatedScaleQuestionWidget - - - - - - +question: AnnotatedScaleQuestion - +onDone: dynamic Function(Answer<dynamic>)? - - - - - - - - - - - AnnotatedScaleQuestion - - - - - - - - - - - dynamic Function(Answer<dynamic>)? - - - - - - - - - - - - BooleanQuestionWidget - - - - - - +question: BooleanQuestion - +onDone: dynamic Function(Answer<dynamic>)? - - - - - - - - - - - BooleanQuestion - - - - - - - - - - - - FreeTextQuestionWidget - - - - - - +question: FreeTextQuestion - +onDone: dynamic Function(Answer<dynamic>)? - - - - - - - - - - - FreeTextQuestion - - - - - - - - - - - - ScaleQuestionWidget - - - - - - +question: ScaleQuestion - +onDone: dynamic Function(Answer<dynamic>)? - - - - - - - - - - - ScaleQuestion - - - - - - - - - - - - VisualAnalogueQuestionWidget - - - - - - +question: VisualAnalogueQuestion - +onDone: dynamic Function(Answer<dynamic>)? - - - - - - - - - - - VisualAnalogueQuestion - - - - - - - - - \ No newline at end of file diff --git a/docs/uml/app/lib/widgets/questionnaire/uml.svg b/docs/uml/app/lib/widgets/questionnaire/uml.svg deleted file mode 100644 index 8feef1090..000000000 --- a/docs/uml/app/lib/widgets/questionnaire/uml.svg +++ /dev/null @@ -1,773 +0,0 @@ - - [AudioRecordingQuestionWidget - | - +question: AudioRecordingQuestion; - +onDone: dynamic Function(Answer<FutureBlobFile>)? - ] - - [AudioRecordingQuestionWidget]o-[AudioRecordingQuestion] - [AudioRecordingQuestionWidget]o-[dynamic Function(Answer<FutureBlobFile>)?] - [<abstract>QuestionWidget]<:-[AudioRecordingQuestionWidget] - - [CustomSlider - | - +value: double?; - +minValue: double?; - +maxValue: double?; - +minorTick: int?; - +onChanged: dynamic Function(double)?; - +onChangeEnd: dynamic Function(double)?; - +activeColor: Color?; - +inactiveColor: Color?; - +minColor: Color?; - +maxColor: Color?; - +thumbColor: Color?; - +isColored: bool; - +labelValuePrecision: int; - +tickValuePrecision: int; - +linearStep: bool; - +steps: AnnotatedScaleQuestion? - | - +Widget build() - ] - - [CustomSlider]o-[dynamic Function(double)?] - [CustomSlider]o-[Color] - [CustomSlider]o-[AnnotatedScaleQuestion] - - [CustomTrackShape - | - +Rect getPreferredRect() - ] - - [RoundedRectSliderTrackShape]<:-[CustomTrackShape] - - [QuestionContainer - | - +onDone: dynamic Function(Answer<dynamic>, int); - +question: Question<dynamic>; - +index: int - ] - - [QuestionContainer]o-[dynamic Function(Answer<dynamic>, int)] - [QuestionContainer]o-[<abstract>Question] - - [QuestionHeader - | - +prompt: String?; - +subtitle: String?; - +rationale: String? - | - -List<Widget> _buildSubtitle(); - -List<Widget> _buildRationaleButton(); - +Widget build() - ] - - [ImageCapturingQuestionWidget - | - +question: ImageCapturingQuestion; - +onDone: dynamic Function(Answer<FutureBlobFile>)? - ] - - [ImageCapturingQuestionWidget]o-[ImageCapturingQuestion] - [ImageCapturingQuestionWidget]o-[dynamic Function(Answer<FutureBlobFile>)?] - [<abstract>QuestionWidget]<:-[ImageCapturingQuestionWidget] - - [QuestionnaireWidget - | - +title: String?; - +header: String?; - +footer: String?; - +questions: List<Question<dynamic>> - ] - - [HtmlTextBox - | - +text: String? - | - +Widget build() - ] - - [BooleanQuestionWidget - | - +question: BooleanQuestion; - +onDone: dynamic Function(Answer<dynamic>)? - ] - - [BooleanQuestionWidget]o-[BooleanQuestion] - [BooleanQuestionWidget]o-[dynamic Function(Answer<dynamic>)?] - [<abstract>QuestionWidget]<:-[BooleanQuestionWidget] - - [ChoiceQuestionWidget - | - +question: ChoiceQuestion; - +onDone: dynamic Function(Answer<dynamic>); - +multiSelectionText: String; - +subtitle: String? - ] - - [ChoiceQuestionWidget]o-[ChoiceQuestion] - [ChoiceQuestionWidget]o-[dynamic Function(Answer<dynamic>)] - [<abstract>QuestionWidget]<:-[ChoiceQuestionWidget] - - [VisualAnalogueQuestionWidget - | - +question: VisualAnalogueQuestion; - +onDone: dynamic Function(Answer<dynamic>)? - ] - - [VisualAnalogueQuestionWidget]o-[VisualAnalogueQuestion] - [VisualAnalogueQuestionWidget]o-[dynamic Function(Answer<dynamic>)?] - [<abstract>QuestionWidget]<:-[VisualAnalogueQuestionWidget] - - [FreeTextQuestionWidget - | - +question: FreeTextQuestion; - +onDone: dynamic Function(Answer<dynamic>)? - ] - - [FreeTextQuestionWidget]o-[FreeTextQuestion] - [FreeTextQuestionWidget]o-[dynamic Function(Answer<dynamic>)?] - [<abstract>QuestionWidget]<:-[FreeTextQuestionWidget] - - [AnnotatedScaleQuestionWidget - | - +question: AnnotatedScaleQuestion; - +onDone: dynamic Function(Answer<dynamic>)? - ] - - [AnnotatedScaleQuestionWidget]o-[AnnotatedScaleQuestion] - [AnnotatedScaleQuestionWidget]o-[dynamic Function(Answer<dynamic>)?] - [<abstract>QuestionWidget]<:-[AnnotatedScaleQuestionWidget] - - [<abstract>QuestionWidget - | - +subtitle: String? - ] - - [ScaleQuestionWidget - | - +question: ScaleQuestion; - +onDone: dynamic Function(Answer<dynamic>)? - ] - - [ScaleQuestionWidget]o-[ScaleQuestion] - [ScaleQuestionWidget]o-[dynamic Function(Answer<dynamic>)?] - [<abstract>QuestionWidget]<:-[ScaleQuestionWidget] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AudioRecordingQuestionWidget - - - - - - +question: AudioRecordingQuestion - +onDone: dynamic Function(Answer<FutureBlobFile>)? - - - - - - - - - - - AudioRecordingQuestion - - - - - - - - - - - dynamic Function(Answer<FutureBlobFile>)? - - - - - - - - - - - - QuestionWidget - - - - - - +subtitle: String? - - - - - - - - - - - - - CustomSlider - - - - - - +value: double? - +minValue: double? - +maxValue: double? - +minorTick: int? - +onChanged: dynamic Function(double)? - +onChangeEnd: dynamic Function(double)? - +activeColor: Color? - +inactiveColor: Color? - +minColor: Color? - +maxColor: Color? - +thumbColor: Color? - +isColored: bool - +labelValuePrecision: int - +tickValuePrecision: int - +linearStep: bool - +steps: AnnotatedScaleQuestion? - - - - - - +Widget build() - - - - - - - - - - - dynamic Function(double)? - - - - - - - - - - - Color - - - - - - - - - - - AnnotatedScaleQuestion - - - - - - - - - - - - CustomTrackShape - - - - - - +Rect getPreferredRect() - - - - - - - - - - - RoundedRectSliderTrackShape - - - - - - - - - - - - QuestionContainer - - - - - - +onDone: dynamic Function(Answer<dynamic>, int) - +question: Question<dynamic> - +index: int - - - - - - - - - - - dynamic Function(Answer<dynamic>, int) - - - - - - - - - - - Question - - - - - - - - - - - - - QuestionHeader - - - - - - +prompt: String? - +subtitle: String? - +rationale: String? - - - - - - -List<Widget> _buildSubtitle() - -List<Widget> _buildRationaleButton() - +Widget build() - - - - - - - - - - - - ImageCapturingQuestionWidget - - - - - - +question: ImageCapturingQuestion - +onDone: dynamic Function(Answer<FutureBlobFile>)? - - - - - - - - - - - ImageCapturingQuestion - - - - - - - - - - - - QuestionnaireWidget - - - - - - +title: String? - +header: String? - +footer: String? - +questions: List<Question<dynamic>> - - - - - - - - - - - - - HtmlTextBox - - - - - - +text: String? - - - - - - +Widget build() - - - - - - - - - - - - BooleanQuestionWidget - - - - - - +question: BooleanQuestion - +onDone: dynamic Function(Answer<dynamic>)? - - - - - - - - - - - BooleanQuestion - - - - - - - - - - - dynamic Function(Answer<dynamic>)? - - - - - - - - - - - - ChoiceQuestionWidget - - - - - - +question: ChoiceQuestion - +onDone: dynamic Function(Answer<dynamic>) - +multiSelectionText: String - +subtitle: String? - - - - - - - - - - - ChoiceQuestion - - - - - - - - - - - dynamic Function(Answer<dynamic>) - - - - - - - - - - - - VisualAnalogueQuestionWidget - - - - - - +question: VisualAnalogueQuestion - +onDone: dynamic Function(Answer<dynamic>)? - - - - - - - - - - - VisualAnalogueQuestion - - - - - - - - - - - - FreeTextQuestionWidget - - - - - - +question: FreeTextQuestion - +onDone: dynamic Function(Answer<dynamic>)? - - - - - - - - - - - FreeTextQuestion - - - - - - - - - - - - AnnotatedScaleQuestionWidget - - - - - - +question: AnnotatedScaleQuestion - +onDone: dynamic Function(Answer<dynamic>)? - - - - - - - - - - - - ScaleQuestionWidget - - - - - - +question: ScaleQuestion - +onDone: dynamic Function(Answer<dynamic>)? - - - - - - - - - - - ScaleQuestion - - - - - - - - - \ No newline at end of file diff --git a/docs/uml/app/lib/widgets/uml.svg b/docs/uml/app/lib/widgets/uml.svg deleted file mode 100644 index 81d54b744..000000000 --- a/docs/uml/app/lib/widgets/uml.svg +++ /dev/null @@ -1,1172 +0,0 @@ - - [SelectableButton - | - +child: Widget; - +selected: bool; - +onTap: dynamic Function()? - | - -Color _getFillColor(); - -Color _getTextColor(); - +Widget build() - ] - - [SelectableButton]o-[<abstract>Widget] - [SelectableButton]o-[dynamic Function()?] - - [CustomSlider - | - +value: double?; - +minValue: double?; - +maxValue: double?; - +minorTick: int?; - +onChanged: dynamic Function(double)?; - +onChangeEnd: dynamic Function(double)?; - +activeColor: Color?; - +inactiveColor: Color?; - +minColor: Color?; - +maxColor: Color?; - +thumbColor: Color?; - +isColored: bool; - +labelValuePrecision: int; - +tickValuePrecision: int; - +linearStep: bool; - +steps: AnnotatedScaleQuestion? - | - +Widget build() - ] - - [CustomSlider]o-[dynamic Function(double)?] - [CustomSlider]o-[Color] - [CustomSlider]o-[AnnotatedScaleQuestion] - - [CustomTrackShape - | - +Rect getPreferredRect() - ] - - [RoundedRectSliderTrackShape]<:-[CustomTrackShape] - - [QuestionnaireWidget - | - +title: String?; - +header: String?; - +footer: String?; - +questions: List<Question<dynamic>> - ] - - [HtmlTextBox - | - +text: String? - | - +Widget build() - ] - - [QuestionContainer - | - +onDone: dynamic Function(Answer<dynamic>, int); - +question: Question<dynamic>; - +index: int - ] - - [QuestionContainer]o-[dynamic Function(Answer<dynamic>, int)] - [QuestionContainer]o-[<abstract>Question] - - [QuestionHeader - | - +prompt: String?; - +subtitle: String?; - +rationale: String? - | - -List<Widget> _buildSubtitle(); - -List<Widget> _buildRationaleButton(); - +Widget build() - ] - - [ChoiceQuestionWidget - | - +question: ChoiceQuestion; - +onDone: dynamic Function(Answer<dynamic>); - +multiSelectionText: String; - +subtitle: String? - ] - - [ChoiceQuestionWidget]o-[ChoiceQuestion] - [ChoiceQuestionWidget]o-[dynamic Function(Answer<dynamic>)] - [<abstract>QuestionWidget]<:-[ChoiceQuestionWidget] - - [FreeTextQuestionWidget - | - +question: FreeTextQuestion; - +onDone: dynamic Function(Answer<dynamic>)? - ] - - [FreeTextQuestionWidget]o-[FreeTextQuestion] - [FreeTextQuestionWidget]o-[dynamic Function(Answer<dynamic>)?] - [<abstract>QuestionWidget]<:-[FreeTextQuestionWidget] - - [AnnotatedScaleQuestionWidget - | - +question: AnnotatedScaleQuestion; - +onDone: dynamic Function(Answer<dynamic>)? - ] - - [AnnotatedScaleQuestionWidget]o-[AnnotatedScaleQuestion] - [AnnotatedScaleQuestionWidget]o-[dynamic Function(Answer<dynamic>)?] - [<abstract>QuestionWidget]<:-[AnnotatedScaleQuestionWidget] - - [VisualAnalogueQuestionWidget - | - +question: VisualAnalogueQuestion; - +onDone: dynamic Function(Answer<dynamic>)? - ] - - [VisualAnalogueQuestionWidget]o-[VisualAnalogueQuestion] - [VisualAnalogueQuestionWidget]o-[dynamic Function(Answer<dynamic>)?] - [<abstract>QuestionWidget]<:-[VisualAnalogueQuestionWidget] - - [<abstract>QuestionWidget - | - +subtitle: String? - ] - - [BooleanQuestionWidget - | - +question: BooleanQuestion; - +onDone: dynamic Function(Answer<dynamic>)? - ] - - [BooleanQuestionWidget]o-[BooleanQuestion] - [BooleanQuestionWidget]o-[dynamic Function(Answer<dynamic>)?] - [<abstract>QuestionWidget]<:-[BooleanQuestionWidget] - - [ScaleQuestionWidget - | - +question: ScaleQuestion; - +onDone: dynamic Function(Answer<dynamic>)? - ] - - [ScaleQuestionWidget]o-[ScaleQuestion] - [ScaleQuestionWidget]o-[dynamic Function(Answer<dynamic>)?] - [<abstract>QuestionWidget]<:-[ScaleQuestionWidget] - - [StudyTile - | - +title: String?; - +description: String?; - +iconName: String; - +onTap: dynamic Function()?; - +contentPadding: EdgeInsetsGeometry - | - +Widget build() - ] - - [StudyTile]o-[dynamic Function()?] - [StudyTile]o-[<abstract>EdgeInsetsGeometry] - - [RoundCheckbox - | - +onChanged: dynamic Function(bool)?; - +value: bool? - | - +Widget build() - ] - - [RoundCheckbox]o-[dynamic Function(bool)?] - - [InterventionCard - | - +intervention: Intervention; - +selected: bool; - +showCheckbox: bool; - +showTasks: bool; - +showDescription: bool; - +onTap: dynamic Function()? - | - +Widget build() - ] - - [InterventionCard]o-[Intervention] - [InterventionCard]o-[dynamic Function()?] - - [InterventionCardTitle - | - +intervention: Intervention?; - +selected: bool; - +showCheckbox: bool; - +showDescriptionButton: bool; - +onTap: dynamic Function()? - | - +Widget build() - ] - - [InterventionCardTitle]o-[Intervention] - [InterventionCardTitle]o-[dynamic Function()?] - - [InterventionCardDescription - | - +intervention: Intervention - | - +Widget build() - ] - - [InterventionCardDescription]o-[Intervention] - - [_TaskList - | - +tasks: List<InterventionTask> - | - +String scheduleString(); - +Widget build() - ] - - [HtmlText - | - +text: String?; - +style: TextStyle?; - +centered: bool - | - +Widget build() - ] - - [HtmlText]o-[TextStyle] - - [BottomOnboardingNavigation - | - +onBack: void Function()?; - +onNext: void Function()?; - +backLabel: String?; - +nextLabel: String?; - +hideNext: bool; - +nextIcon: Icon?; - +backIcon: Icon?; - +progress: Widget? - | - +Widget build() - ] - - [BottomOnboardingNavigation]o-[void Function()?] - [BottomOnboardingNavigation]o-[Icon] - [BottomOnboardingNavigation]o-[<abstract>Widget] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - SelectableButton - - - - - - +child: Widget - +selected: bool - +onTap: dynamic Function()? - - - - - - -Color _getFillColor() - -Color _getTextColor() - +Widget build() - - - - - - - - - - - Widget - - - - - - - - - - - dynamic Function()? - - - - - - - - - - - - - CustomSlider - - - - - - +value: double? - +minValue: double? - +maxValue: double? - +minorTick: int? - +onChanged: dynamic Function(double)? - +onChangeEnd: dynamic Function(double)? - +activeColor: Color? - +inactiveColor: Color? - +minColor: Color? - +maxColor: Color? - +thumbColor: Color? - +isColored: bool - +labelValuePrecision: int - +tickValuePrecision: int - +linearStep: bool - +steps: AnnotatedScaleQuestion? - - - - - - +Widget build() - - - - - - - - - - - dynamic Function(double)? - - - - - - - - - - - Color - - - - - - - - - - - AnnotatedScaleQuestion - - - - - - - - - - - - CustomTrackShape - - - - - - +Rect getPreferredRect() - - - - - - - - - - - RoundedRectSliderTrackShape - - - - - - - - - - - - QuestionnaireWidget - - - - - - +title: String? - +header: String? - +footer: String? - +questions: List<Question<dynamic>> - - - - - - - - - - - - - HtmlTextBox - - - - - - +text: String? - - - - - - +Widget build() - - - - - - - - - - - - QuestionContainer - - - - - - +onDone: dynamic Function(Answer<dynamic>, int) - +question: Question<dynamic> - +index: int - - - - - - - - - - - dynamic Function(Answer<dynamic>, int) - - - - - - - - - - - Question - - - - - - - - - - - - - QuestionHeader - - - - - - +prompt: String? - +subtitle: String? - +rationale: String? - - - - - - -List<Widget> _buildSubtitle() - -List<Widget> _buildRationaleButton() - +Widget build() - - - - - - - - - - - - ChoiceQuestionWidget - - - - - - +question: ChoiceQuestion - +onDone: dynamic Function(Answer<dynamic>) - +multiSelectionText: String - +subtitle: String? - - - - - - - - - - - ChoiceQuestion - - - - - - - - - - - dynamic Function(Answer<dynamic>) - - - - - - - - - - - - QuestionWidget - - - - - - +subtitle: String? - - - - - - - - - - - - FreeTextQuestionWidget - - - - - - +question: FreeTextQuestion - +onDone: dynamic Function(Answer<dynamic>)? - - - - - - - - - - - FreeTextQuestion - - - - - - - - - - - dynamic Function(Answer<dynamic>)? - - - - - - - - - - - - AnnotatedScaleQuestionWidget - - - - - - +question: AnnotatedScaleQuestion - +onDone: dynamic Function(Answer<dynamic>)? - - - - - - - - - - - - VisualAnalogueQuestionWidget - - - - - - +question: VisualAnalogueQuestion - +onDone: dynamic Function(Answer<dynamic>)? - - - - - - - - - - - VisualAnalogueQuestion - - - - - - - - - - - - BooleanQuestionWidget - - - - - - +question: BooleanQuestion - +onDone: dynamic Function(Answer<dynamic>)? - - - - - - - - - - - BooleanQuestion - - - - - - - - - - - - ScaleQuestionWidget - - - - - - +question: ScaleQuestion - +onDone: dynamic Function(Answer<dynamic>)? - - - - - - - - - - - ScaleQuestion - - - - - - - - - - - - - StudyTile - - - - - - +title: String? - +description: String? - +iconName: String - +onTap: dynamic Function()? - +contentPadding: EdgeInsetsGeometry - - - - - - +Widget build() - - - - - - - - - - - EdgeInsetsGeometry - - - - - - - - - - - - - RoundCheckbox - - - - - - +onChanged: dynamic Function(bool)? - +value: bool? - - - - - - +Widget build() - - - - - - - - - - - dynamic Function(bool)? - - - - - - - - - - - - - InterventionCard - - - - - - +intervention: Intervention - +selected: bool - +showCheckbox: bool - +showTasks: bool - +showDescription: bool - +onTap: dynamic Function()? - - - - - - +Widget build() - - - - - - - - - - - Intervention - - - - - - - - - - - - - InterventionCardTitle - - - - - - +intervention: Intervention? - +selected: bool - +showCheckbox: bool - +showDescriptionButton: bool - +onTap: dynamic Function()? - - - - - - +Widget build() - - - - - - - - - - - - - InterventionCardDescription - - - - - - +intervention: Intervention - - - - - - +Widget build() - - - - - - - - - - - - - _TaskList - - - - - - +tasks: List<InterventionTask> - - - - - - +String scheduleString() - +Widget build() - - - - - - - - - - - - - HtmlText - - - - - - +text: String? - +style: TextStyle? - +centered: bool - - - - - - +Widget build() - - - - - - - - - - - TextStyle - - - - - - - - - - - - - BottomOnboardingNavigation - - - - - - +onBack: void Function()? - +onNext: void Function()? - +backLabel: String? - +nextLabel: String? - +hideNext: bool - +nextIcon: Icon? - +backIcon: Icon? - +progress: Widget? - - - - - - +Widget build() - - - - - - - - - - - void Function()? - - - - - - - - - - - Icon - - - - - - - - - \ No newline at end of file diff --git a/docs/uml/core/lib/src/env/uml.svg b/docs/uml/core/lib/src/env/uml.svg deleted file mode 100644 index e1d655211..000000000 --- a/docs/uml/core/lib/src/env/uml.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/uml/core/lib/src/models/consent/uml.svg b/docs/uml/core/lib/src/models/consent/uml.svg deleted file mode 100644 index d14fbdd3c..000000000 --- a/docs/uml/core/lib/src/models/consent/uml.svg +++ /dev/null @@ -1,54 +0,0 @@ - - [ConsentItem - | - +id: String; - +title: String?; - +description: String?; - +iconName: String - | - +Map<String, dynamic> toJson(); - +String toString() - ] - - - - - - - - - - - - - - - - - - ConsentItem - - - - - - +id: String - +title: String? - +description: String? - +iconName: String - - - - - - +Map<String, dynamic> toJson() - +String toString() - - - - - - - - - \ No newline at end of file diff --git a/docs/uml/core/lib/src/models/data/uml.svg b/docs/uml/core/lib/src/models/data/uml.svg deleted file mode 100644 index 615c4e2a3..000000000 --- a/docs/uml/core/lib/src/models/data/uml.svg +++ /dev/null @@ -1,52 +0,0 @@ - - [DataReference - | - +task: String; - +property: String - | - +Map<String, dynamic> toJson(); - +String toString(); - +Map<DateTime, T> retrieveFromResults() - ] - - - - - - - - - - - - - - - - - - DataReference - - - - - - +task: String - +property: String - - - - - - +Map<String, dynamic> toJson() - +String toString() - +Map<DateTime, T> retrieveFromResults() - - - - - - - - - \ No newline at end of file diff --git a/docs/uml/core/lib/src/models/eligibility/uml.svg b/docs/uml/core/lib/src/models/eligibility/uml.svg deleted file mode 100644 index 32b5afd1e..000000000 --- a/docs/uml/core/lib/src/models/eligibility/uml.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/uml/core/lib/src/models/expressions/types/uml.svg b/docs/uml/core/lib/src/models/expressions/types/uml.svg deleted file mode 100644 index 32b5afd1e..000000000 --- a/docs/uml/core/lib/src/models/expressions/types/uml.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/uml/core/lib/src/models/expressions/uml.svg b/docs/uml/core/lib/src/models/expressions/uml.svg deleted file mode 100644 index 32b5afd1e..000000000 --- a/docs/uml/core/lib/src/models/expressions/uml.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/uml/core/lib/src/models/interventions/tasks/uml.svg b/docs/uml/core/lib/src/models/interventions/tasks/uml.svg deleted file mode 100644 index 32b5afd1e..000000000 --- a/docs/uml/core/lib/src/models/interventions/tasks/uml.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/uml/core/lib/src/models/interventions/uml.svg b/docs/uml/core/lib/src/models/interventions/uml.svg deleted file mode 100644 index 32b5afd1e..000000000 --- a/docs/uml/core/lib/src/models/interventions/uml.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/uml/core/lib/src/models/observations/tasks/uml.svg b/docs/uml/core/lib/src/models/observations/tasks/uml.svg deleted file mode 100644 index 32b5afd1e..000000000 --- a/docs/uml/core/lib/src/models/observations/tasks/uml.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/uml/core/lib/src/models/observations/uml.svg b/docs/uml/core/lib/src/models/observations/uml.svg deleted file mode 100644 index 32b5afd1e..000000000 --- a/docs/uml/core/lib/src/models/observations/uml.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/uml/core/lib/src/models/questionnaire/questions/uml.svg b/docs/uml/core/lib/src/models/questionnaire/questions/uml.svg deleted file mode 100644 index 32b5afd1e..000000000 --- a/docs/uml/core/lib/src/models/questionnaire/questions/uml.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/uml/core/lib/src/models/questionnaire/uml.svg b/docs/uml/core/lib/src/models/questionnaire/uml.svg deleted file mode 100644 index 32b5afd1e..000000000 --- a/docs/uml/core/lib/src/models/questionnaire/uml.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/uml/core/lib/src/models/report/sections/uml.svg b/docs/uml/core/lib/src/models/report/sections/uml.svg deleted file mode 100644 index 62be008e4..000000000 --- a/docs/uml/core/lib/src/models/report/sections/uml.svg +++ /dev/null @@ -1,200 +0,0 @@ - - [AverageSection - | - <static>+sectionType: String; - +aggregate: TemporalAggregation?; - +resultProperty: DataReference<num>? - | - +Map<String, dynamic> toJson() - ] - - [AverageSection]o-[TemporalAggregation] - [AverageSection]o-[DataReference] - [<abstract>ReportSection]<:-[AverageSection] - - [LinearRegressionSection - | - <static>+sectionType: String; - +resultProperty: DataReference<num>?; - +alpha: double; - +improvement: ImprovementDirection? - | - +Map<String, dynamic> toJson() - ] - - [LinearRegressionSection]o-[DataReference] - [LinearRegressionSection]o-[ImprovementDirection] - [<abstract>ReportSection]<:-[LinearRegressionSection] - - [ImprovementDirection - | - +index: int; - <static>+values: List<ImprovementDirection>; - <static>+positive: ImprovementDirection; - <static>+negative: ImprovementDirection - ] - - [ImprovementDirection]o-[ImprovementDirection] - [Enum]<:--[ImprovementDirection] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AverageSection - - - - - - <static>+sectionType: String - +aggregate: TemporalAggregation? - +resultProperty: DataReference<num>? - - - - - - +Map<String, dynamic> toJson() - - - - - - - - - - - TemporalAggregation - - - - - - - - - - - DataReference - - - - - - - - - - - ReportSection - - - - - - - - - - - - - LinearRegressionSection - - - - - - <static>+sectionType: String - +resultProperty: DataReference<num>? - +alpha: double - +improvement: ImprovementDirection? - - - - - - +Map<String, dynamic> toJson() - - - - - - - - - - - - ImprovementDirection - - - - - - +index: int - <static>+values: List<ImprovementDirection> - <static>+positive: ImprovementDirection - <static>+negative: ImprovementDirection - - - - - - - - - - - Enum - - - - - - - - - \ No newline at end of file diff --git a/docs/uml/core/lib/src/models/report/uml.svg b/docs/uml/core/lib/src/models/report/uml.svg deleted file mode 100644 index e323c06c7..000000000 --- a/docs/uml/core/lib/src/models/report/uml.svg +++ /dev/null @@ -1,306 +0,0 @@ - - [AverageSection - | - <static>+sectionType: String; - +aggregate: TemporalAggregation?; - +resultProperty: DataReference<num>? - | - +Map<String, dynamic> toJson() - ] - - [AverageSection]o-[TemporalAggregation] - [AverageSection]o-[DataReference] - [<abstract>ReportSection]<:-[AverageSection] - - [LinearRegressionSection - | - <static>+sectionType: String; - +resultProperty: DataReference<num>?; - +alpha: double; - +improvement: ImprovementDirection? - | - +Map<String, dynamic> toJson() - ] - - [LinearRegressionSection]o-[DataReference] - [LinearRegressionSection]o-[ImprovementDirection] - [<abstract>ReportSection]<:-[LinearRegressionSection] - - [ImprovementDirection - | - +index: int; - <static>+values: List<ImprovementDirection>; - <static>+positive: ImprovementDirection; - <static>+negative: ImprovementDirection - ] - - [ImprovementDirection]o-[ImprovementDirection] - [Enum]<:--[ImprovementDirection] - - [TemporalAggregation - | - +index: int; - <static>+values: List<TemporalAggregation>; - <static>+day: TemporalAggregation; - <static>+phase: TemporalAggregation; - <static>+intervention: TemporalAggregation - ] - - [TemporalAggregation]o-[TemporalAggregation] - [Enum]<:--[TemporalAggregation] - - [ReportSpecification - | - +primary: ReportSection?; - +secondary: List<ReportSection> - | - +Map<String, dynamic> toJson(); - +String toString() - ] - - [ReportSpecification]o-[<abstract>ReportSection] - - [<abstract>ReportSection - | - <static>+sectionTypes: Map<String, ReportSection Function(Map<String, dynamic>)>; - <static>+keyType: String; - +type: String; - +id: String; - +title: String?; - +description: String? - | - +Map<String, dynamic> toJson(); - +String toString() - ] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AverageSection - - - - - - <static>+sectionType: String - +aggregate: TemporalAggregation? - +resultProperty: DataReference<num>? - - - - - - +Map<String, dynamic> toJson() - - - - - - - - - - - - TemporalAggregation - - - - - - +index: int - <static>+values: List<TemporalAggregation> - <static>+day: TemporalAggregation - <static>+phase: TemporalAggregation - <static>+intervention: TemporalAggregation - - - - - - - - - - - DataReference - - - - - - - - - - - - - ReportSection - - - - - - <static>+sectionTypes: Map<String, ReportSection Function(Map<String, dynamic>)> - <static>+keyType: String - +type: String - +id: String - +title: String? - +description: String? - - - - - - +Map<String, dynamic> toJson() - +String toString() - - - - - - - - - - - - - LinearRegressionSection - - - - - - <static>+sectionType: String - +resultProperty: DataReference<num>? - +alpha: double - +improvement: ImprovementDirection? - - - - - - +Map<String, dynamic> toJson() - - - - - - - - - - - - ImprovementDirection - - - - - - +index: int - <static>+values: List<ImprovementDirection> - <static>+positive: ImprovementDirection - <static>+negative: ImprovementDirection - - - - - - - - - - - Enum - - - - - - - - - - - - - ReportSpecification - - - - - - +primary: ReportSection? - +secondary: List<ReportSection> - - - - - - +Map<String, dynamic> toJson() - +String toString() - - - - - - - - - \ No newline at end of file diff --git a/docs/uml/core/lib/src/models/results/uml.svg b/docs/uml/core/lib/src/models/results/uml.svg deleted file mode 100644 index 32b5afd1e..000000000 --- a/docs/uml/core/lib/src/models/results/uml.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/uml/core/lib/src/models/study_results/results/uml.svg b/docs/uml/core/lib/src/models/study_results/results/uml.svg deleted file mode 100644 index d1a28082e..000000000 --- a/docs/uml/core/lib/src/models/study_results/results/uml.svg +++ /dev/null @@ -1,123 +0,0 @@ - - [InterventionResult - | - <static>+studyResultType: String - | - +Map<String, dynamic> toJson(); - +List<String> getHeaders(); - +List<dynamic> getValues() - ] - - [<abstract>StudyResult]<:-[InterventionResult] - - [NumericResult - | - <static>+studyResultType: String; - +resultProperty: DataReference<num> - | - +Map<String, dynamic> toJson(); - +List<String> getHeaders(); - +List<dynamic> getValues() - ] - - [NumericResult]o-[DataReference] - [<abstract>StudyResult]<:-[NumericResult] - - - - - - - - - - - - - - - - - - - - - - - - - - InterventionResult - - - - - - <static>+studyResultType: String - - - - - - +Map<String, dynamic> toJson() - +List<String> getHeaders() - +List<dynamic> getValues() - - - - - - - - - - - StudyResult - - - - - - - - - - - - - NumericResult - - - - - - <static>+studyResultType: String - +resultProperty: DataReference<num> - - - - - - +Map<String, dynamic> toJson() - +List<String> getHeaders() - +List<dynamic> getValues() - - - - - - - - - - - DataReference - - - - - - - - - \ No newline at end of file diff --git a/docs/uml/core/lib/src/models/study_results/uml.svg b/docs/uml/core/lib/src/models/study_results/uml.svg deleted file mode 100644 index 7cdd82c0c..000000000 --- a/docs/uml/core/lib/src/models/study_results/uml.svg +++ /dev/null @@ -1,156 +0,0 @@ - - [<abstract>StudyResult - | - <static>+studyResultTypes: Map<String, StudyResult Function(Map<String, dynamic>)>; - <static>+keyType: String; - +type: String; - +id: String; - +filename: String - | - +Map<String, dynamic> toJson(); - +List<String> getHeaders(); - +List<dynamic> getValues() - ] - - [InterventionResult - | - <static>+studyResultType: String - | - +Map<String, dynamic> toJson(); - +List<String> getHeaders(); - +List<dynamic> getValues() - ] - - [<abstract>StudyResult]<:-[InterventionResult] - - [NumericResult - | - <static>+studyResultType: String; - +resultProperty: DataReference<num> - | - +Map<String, dynamic> toJson(); - +List<String> getHeaders(); - +List<dynamic> getValues() - ] - - [NumericResult]o-[DataReference] - [<abstract>StudyResult]<:-[NumericResult] - - - - - - - - - - - - - - - - - - - - - - - - - - StudyResult - - - - - - <static>+studyResultTypes: Map<String, StudyResult Function(Map<String, dynamic>)> - <static>+keyType: String - +type: String - +id: String - +filename: String - - - - - - +Map<String, dynamic> toJson() - +List<String> getHeaders() - +List<dynamic> getValues() - - - - - - - - - - - - - InterventionResult - - - - - - <static>+studyResultType: String - - - - - - +Map<String, dynamic> toJson() - +List<String> getHeaders() - +List<dynamic> getValues() - - - - - - - - - - - - - NumericResult - - - - - - <static>+studyResultType: String - +resultProperty: DataReference<num> - - - - - - +Map<String, dynamic> toJson() - +List<String> getHeaders() - +List<dynamic> getValues() - - - - - - - - - - - DataReference - - - - - - - - - \ No newline at end of file diff --git a/docs/uml/core/lib/src/models/study_schedule/uml.svg b/docs/uml/core/lib/src/models/study_schedule/uml.svg deleted file mode 100644 index 32b5afd1e..000000000 --- a/docs/uml/core/lib/src/models/study_schedule/uml.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/uml/core/lib/src/models/tables/uml.svg b/docs/uml/core/lib/src/models/tables/uml.svg deleted file mode 100644 index 32b5afd1e..000000000 --- a/docs/uml/core/lib/src/models/tables/uml.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/uml/core/lib/src/models/tasks/uml.svg b/docs/uml/core/lib/src/models/tasks/uml.svg deleted file mode 100644 index 32b5afd1e..000000000 --- a/docs/uml/core/lib/src/models/tasks/uml.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/uml/core/lib/src/models/uml.svg b/docs/uml/core/lib/src/models/uml.svg deleted file mode 100644 index 32b5afd1e..000000000 --- a/docs/uml/core/lib/src/models/uml.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/uml/core/lib/src/uml.svg b/docs/uml/core/lib/src/uml.svg deleted file mode 100644 index 32b5afd1e..000000000 --- a/docs/uml/core/lib/src/uml.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/uml/core/lib/src/util/multimodal/uml.svg b/docs/uml/core/lib/src/util/multimodal/uml.svg deleted file mode 100644 index 987386914..000000000 --- a/docs/uml/core/lib/src/util/multimodal/uml.svg +++ /dev/null @@ -1,50 +0,0 @@ - - [BlobStorageHandler - | - <static>-_observationsBucketName: String - | - +dynamic uploadObservation(); - +dynamic downloadObservation(); - +dynamic removeObservation() - ] - - - - - - - - - - - - - - - - - - BlobStorageHandler - - - - - - <static>-_observationsBucketName: String - - - - - - +dynamic uploadObservation() - +dynamic downloadObservation() - +dynamic removeObservation() - - - - - - - - - \ No newline at end of file diff --git a/docs/uml/core/lib/src/util/uml.svg b/docs/uml/core/lib/src/util/uml.svg deleted file mode 100644 index 32b5afd1e..000000000 --- a/docs/uml/core/lib/src/util/uml.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/uml/core/lib/uml.svg b/docs/uml/core/lib/uml.svg deleted file mode 100644 index 32b5afd1e..000000000 --- a/docs/uml/core/lib/uml.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/uml/designer_v2/lib/common_views/pages/uml.svg b/docs/uml/designer_v2/lib/common_views/pages/uml.svg deleted file mode 100644 index afcb7191f..000000000 --- a/docs/uml/designer_v2/lib/common_views/pages/uml.svg +++ /dev/null @@ -1,84 +0,0 @@ - - [SplashPage - | - +Widget build() - ] - - [ErrorPage - | - +error: Exception? - | - +Widget build() - ] - - [<abstract>ConsumerWidget]<:-[ErrorPage] - - - - - - - - - - - - - - - - - - - SplashPage - - - - - - +Widget build() - - - - - - - - - - - - - ErrorPage - - - - - - +error: Exception? - - - - - - +Widget build() - - - - - - - - - - - ConsumerWidget - - - - - - - - - \ No newline at end of file diff --git a/docs/uml/designer_v2/lib/common_views/sidesheet/uml.svg b/docs/uml/designer_v2/lib/common_views/sidesheet/uml.svg deleted file mode 100644 index 828b9f312..000000000 --- a/docs/uml/designer_v2/lib/common_views/sidesheet/uml.svg +++ /dev/null @@ -1,203 +0,0 @@ - - [FormSideSheetTab - | - +formViewBuilder: Widget Function(T) - ] - - [FormSideSheetTab]o-[Widget Function(T)] - [NavbarTab]<:-[FormSideSheetTab] - - [SidesheetTab - | - +builder: Widget Function(BuildContext) - ] - - [SidesheetTab]o-[Widget Function(BuildContext)] - [NavbarTab]<:-[SidesheetTab] - - [Sidesheet - | - <static>+kDefaultWidth: double; - +titleText: String; - +body: Widget?; - +tabs: List<SidesheetTab>?; - +actionButtons: List<Widget>?; - +width: double?; - +withCloseButton: bool; - +ignoreAppBar: bool; - +collapseSingleTab: bool; - +bodyPadding: EdgeInsets?; - +wrapContent: Widget Function(Widget)? - ] - - [Sidesheet]o-[<abstract>Widget] - [Sidesheet]o-[EdgeInsets] - [Sidesheet]o-[Widget Function(Widget)?] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - FormSideSheetTab - - - - - - +formViewBuilder: Widget Function(T) - - - - - - - - - - - Widget Function(T) - - - - - - - - - - - NavbarTab - - - - - - - - - - - - SidesheetTab - - - - - - +builder: Widget Function(BuildContext) - - - - - - - - - - - Widget Function(BuildContext) - - - - - - - - - - - - Sidesheet - - - - - - <static>+kDefaultWidth: double - +titleText: String - +body: Widget? - +tabs: List<SidesheetTab>? - +actionButtons: List<Widget>? - +width: double? - +withCloseButton: bool - +ignoreAppBar: bool - +collapseSingleTab: bool - +bodyPadding: EdgeInsets? - +wrapContent: Widget Function(Widget)? - - - - - - - - - - - Widget - - - - - - - - - - - EdgeInsets - - - - - - - - - - - Widget Function(Widget)? - - - - - - - - - \ No newline at end of file diff --git a/docs/uml/designer_v2/lib/common_views/uml.svg b/docs/uml/designer_v2/lib/common_views/uml.svg deleted file mode 100644 index 425f28f48..000000000 --- a/docs/uml/designer_v2/lib/common_views/uml.svg +++ /dev/null @@ -1,3242 +0,0 @@ - - [<abstract>ISyncIndicatorViewModel - | - +isDirty: bool; - +lastSynced: DateTime? - ] - - [SyncIndicator - | - +state: AsyncValue<T>; - +lastSynced: DateTime?; - +isDirty: bool; - +animationDuration: int; - +iconSize: double - ] - - [SyncIndicator]o-[<abstract>AsyncValue] - - [EmptyBody - | - +icon: IconData?; - +leading: Widget?; - +leadingSpacing: double?; - +title: String?; - +description: String?; - +button: Widget? - | - +Widget build() - ] - - [EmptyBody]o-[IconData] - [EmptyBody]o-[<abstract>Widget] - - [NullHelperDecoration - ] - - [InputDecoration]<:-[NullHelperDecoration] - - [Search - | - +onQueryChanged: dynamic Function(String); - +searchController: SearchController?; - +hintText: String?; - +initialText: String? - ] - - [Search]o-[dynamic Function(String)] - [Search]o-[SearchController] - - [SearchController - | - +setText: void Function(String) - ] - - [SearchController]o-[void Function(String)] - - [ConstrainedWidthFlexible - | - +minWidth: double; - +maxWidth: double; - +flex: int; - +flexSum: int; - +child: Widget; - +outerConstraints: BoxConstraints - | - +Widget build(); - -double _getWidth() - ] - - [ConstrainedWidthFlexible]o-[<abstract>Widget] - [ConstrainedWidthFlexible]o-[BoxConstraints] - - [AsyncValueWidget - | - +value: AsyncValue<T>; - +data: Widget Function(T); - +error: Widget Function(Object, StackTrace?)?; - +loading: Widget Function()?; - +empty: Widget Function()? - | - +Widget build(); - -Widget _buildDataOrEmptyWidget(); - -Widget _defaultError(); - -Widget _defaultLoad() - ] - - [AsyncValueWidget]o-[<abstract>AsyncValue] - [AsyncValueWidget]o-[Widget Function(T)] - [AsyncValueWidget]o-[Widget Function(Object, StackTrace?)?] - [AsyncValueWidget]o-[Widget Function()?] - - [ActionPopUpMenuButton - | - +actions: List<ModelAction<dynamic>>; - +triggerIconColor: Color?; - +triggerIconColorHover: Color?; - +triggerIconSize: double; - +disableSplashEffect: bool; - +hideOnEmpty: bool; - +orientation: Axis; - +elevation: double?; - +splashRadius: double?; - +enabled: bool; - +position: PopupMenuPosition - | - +Widget build(); - -Widget _buildPopupMenu() - ] - - [ActionPopUpMenuButton]o-[Color] - [ActionPopUpMenuButton]o-[Axis] - [ActionPopUpMenuButton]o-[PopupMenuPosition] - - [PrimaryButton - | - +text: String; - +icon: IconData?; - +isLoading: bool; - +showLoadingEarliestAfterMs: int; - +onPressed: void Function()?; - +tooltip: String; - +tooltipDisabled: String; - +enabled: bool; - +onPressedFuture: dynamic Function()?; - +innerPadding: EdgeInsets; - +minimumSize: Size?; - +isDisabled: bool - ] - - [PrimaryButton]o-[IconData] - [PrimaryButton]o-[void Function()?] - [PrimaryButton]o-[dynamic Function()?] - [PrimaryButton]o-[EdgeInsets] - [PrimaryButton]o-[Size] - - [Hyperlink - | - +text: String; - +url: String?; - +onClick: void Function()?; - +linkColor: Color; - +hoverColor: Color?; - +visitedColor: Color?; - +style: TextStyle?; - +hoverStyle: TextStyle?; - +visitedStyle: TextStyle?; - +icon: IconData?; - +iconSize: double? - ] - - [Hyperlink]o-[void Function()?] - [Hyperlink]o-[Color] - [Hyperlink]o-[TextStyle] - [Hyperlink]o-[IconData] - - [DismissButton - | - +onPressed: void Function()?; - +text: String? - | - +Widget build() - ] - - [DismissButton]o-[void Function()?] - - [FormTableRow - | - +label: String?; - +labelBuilder: Widget Function(BuildContext)?; - +labelStyle: TextStyle?; - +labelHelpText: String?; - +input: Widget; - +control: AbstractControl<dynamic>?; - +layout: FormTableRowLayout? - ] - - [FormTableRow]o-[Widget Function(BuildContext)?] - [FormTableRow]o-[TextStyle] - [FormTableRow]o-[<abstract>Widget] - [FormTableRow]o-[<abstract>AbstractControl] - [FormTableRow]o-[FormTableRowLayout] - - [FormTableLayout - | - +rows: List<FormTableRow>; - +columnWidths: Map<int, TableColumnWidth>; - +rowDivider: Widget?; - +rowLayout: FormTableRowLayout?; - +rowLabelStyle: TextStyle? - | - +Widget build() - ] - - [FormTableLayout]o-[<abstract>Widget] - [FormTableLayout]o-[FormTableRowLayout] - [FormTableLayout]o-[TextStyle] - - [FormSectionHeader - | - +title: String; - +titleTextStyle: TextStyle?; - +helpText: String?; - +divider: bool; - +helpTextDisabled: bool - | - +Widget build() - ] - - [FormSectionHeader]o-[TextStyle] - - [FormLabel - | - +labelText: String?; - +helpText: String?; - +labelTextStyle: TextStyle?; - +layout: FormTableRowLayout? - | - +Widget build() - ] - - [FormLabel]o-[TextStyle] - [FormLabel]o-[FormTableRowLayout] - - [FormTableRowLayout - | - +index: int; - <static>+values: List<FormTableRowLayout>; - <static>+vertical: FormTableRowLayout; - <static>+horizontal: FormTableRowLayout - ] - - [FormTableRowLayout]o-[FormTableRowLayout] - [Enum]<:--[FormTableRowLayout] - - [ActionMenuType - | - +index: int; - <static>+values: List<ActionMenuType>; - <static>+inline: ActionMenuType; - <static>+popup: ActionMenuType - ] - - [ActionMenuType]o-[ActionMenuType] - [Enum]<:--[ActionMenuType] - - [ReactiveCustomColorPicker - ] - - [ReactiveFormField]<:-[ReactiveCustomColorPicker] - - [NavbarTab - | - +title: String; - +intent: RoutingIntent?; - +index: int; - +enabled: bool - ] - - [NavbarTab]o-[RoutingIntent] - - [TabbedNavbar - | - +tabs: List<T>; - +selectedTab: T?; - +indicator: BoxDecoration?; - +height: double?; - +disabledBackgroundColor: Color?; - +disabledTooltipText: String?; - +onSelect: void Function(int, T)?; - +labelPadding: EdgeInsets?; - +labelSpacing: double?; - +indicatorSize: TabBarIndicatorSize?; - +isScrollable: bool; - +backgroundColor: Color?; - +labelColorHover: Color?; - +unselectedLabelColorHover: Color? - ] - - [TabbedNavbar]o-[BoxDecoration] - [TabbedNavbar]o-[Color] - [TabbedNavbar]o-[void Function(int, T)?] - [TabbedNavbar]o-[EdgeInsets] - [TabbedNavbar]o-[TabBarIndicatorSize] - - [Collapsible - | - +contentBuilder: Widget Function(BuildContext, bool); - +headerBuilder: Widget Function(BuildContext, bool)?; - +title: String?; - +isCollapsed: bool - ] - - [Collapsible]o-[Widget Function(BuildContext, bool)] - [Collapsible]o-[Widget Function(BuildContext, bool)?] - - [StudyULogo - | - +onTap: void Function()? - | - +Widget build() - ] - - [StudyULogo]o-[void Function()?] - - [FormSideSheetTab - | - +formViewBuilder: Widget Function(T) - ] - - [FormSideSheetTab]o-[Widget Function(T)] - [NavbarTab]<:-[FormSideSheetTab] - - [SidesheetTab - | - +builder: Widget Function(BuildContext) - ] - - [SidesheetTab]o-[Widget Function(BuildContext)] - [NavbarTab]<:-[SidesheetTab] - - [Sidesheet - | - <static>+kDefaultWidth: double; - +titleText: String; - +body: Widget?; - +tabs: List<SidesheetTab>?; - +actionButtons: List<Widget>?; - +width: double?; - +withCloseButton: bool; - +ignoreAppBar: bool; - +collapseSingleTab: bool; - +bodyPadding: EdgeInsets?; - +wrapContent: Widget Function(Widget)? - ] - - [Sidesheet]o-[<abstract>Widget] - [Sidesheet]o-[EdgeInsets] - [Sidesheet]o-[Widget Function(Widget)?] - - [MouseEventsRegion - | - +onTap: void Function()?; - +onHover: void Function(PointerHoverEvent)?; - +onEnter: void Function(PointerEnterEvent)?; - +onExit: void Function(PointerExitEvent)?; - +autoselectCursor: bool; - +cursor: SystemMouseCursor; - <static>+defaultCursor: SystemMouseCursor; - +autoCursor: SystemMouseCursor - ] - - [MouseEventsRegion]o-[void Function()?] - [MouseEventsRegion]o-[void Function(PointerHoverEvent)?] - [MouseEventsRegion]o-[void Function(PointerEnterEvent)?] - [MouseEventsRegion]o-[void Function(PointerExitEvent)?] - [MouseEventsRegion]o-[SystemMouseCursor] - - [FormControlLabel - | - +formControl: AbstractControl<dynamic>; - +text: String; - +isClickable: bool; - +textStyle: TextStyle?; - +onClick: void Function(AbstractControl<dynamic>)? - | - +Widget build() - ] - - [FormControlLabel]o-[<abstract>AbstractControl] - [FormControlLabel]o-[TextStyle] - [FormControlLabel]o-[void Function(AbstractControl<dynamic>)?] - - [<abstract>IWithBanner - | - +Widget? banner() - ] - - [BannerBox - | - +prefixIcon: Widget?; - +body: Widget; - +style: BannerStyle; - +padding: EdgeInsets?; - +noPrefix: bool; - +dismissable: bool; - +isDismissed: bool?; - +onDismissed: dynamic Function()?; - +dismissIconSize: double - ] - - [BannerBox]o-[<abstract>Widget] - [BannerBox]o-[BannerStyle] - [BannerBox]o-[EdgeInsets] - [BannerBox]o-[dynamic Function()?] - - [BannerStyle - | - +index: int; - <static>+values: List<BannerStyle>; - <static>+warning: BannerStyle; - <static>+info: BannerStyle; - <static>+error: BannerStyle - ] - - [BannerStyle]o-[BannerStyle] - [Enum]<:--[BannerStyle] - - [SecondaryButton - | - +text: String; - +icon: IconData?; - +isLoading: bool; - +onPressed: void Function()? - | - +Widget build() - ] - - [SecondaryButton]o-[IconData] - [SecondaryButton]o-[void Function()?] - - [IconPack - | - <static>+defaultPack: List<IconOption>; - <static>+material: List<IconOption> - | - <static>+IconOption? resolveIconByName() - ] - - [IconOption - | - +name: String; - +icon: IconData?; - +isEmpty: bool; - +props: List<Object?> - | - +String toJson(); - <static>+IconOption fromJson() - ] - - [IconOption]o-[IconData] - [<abstract>Equatable]<:-[IconOption] - - [ReactiveIconPicker - ] - - [ReactiveFocusableFormField]<:-[ReactiveIconPicker] - - [IconPicker - | - +iconOptions: List<IconOption>; - +selectedOption: IconOption?; - +onSelect: void Function(IconOption)?; - +galleryIconSize: double?; - +selectedIconSize: double?; - +focusNode: FocusNode?; - +isDisabled: bool - | - +Widget build() - ] - - [IconPicker]o-[IconOption] - [IconPicker]o-[void Function(IconOption)?] - [IconPicker]o-[FocusNode] - - [IconPickerField - | - +iconOptions: List<IconOption>; - +selectedOption: IconOption?; - +selectedIconSize: double?; - +galleryIconSize: double?; - +onSelect: void Function(IconOption)?; - +focusNode: FocusNode?; - +isDisabled: bool - | - +Widget build() - ] - - [IconPickerField]o-[IconOption] - [IconPickerField]o-[void Function(IconOption)?] - [IconPickerField]o-[FocusNode] - - [IconPickerGallery - | - +iconOptions: List<IconOption>; - +onSelect: void Function(IconOption)?; - +iconSize: double - | - +Widget build() - ] - - [IconPickerGallery]o-[void Function(IconOption)?] - - [SingleColumnLayout - | - <static>+defaultConstraints: BoxConstraints; - <static>+defaultConstraintsNarrow: BoxConstraints; - +body: Widget; - +header: Widget?; - +stickyHeader: bool; - +constraints: BoxConstraints?; - +scroll: bool; - +padding: EdgeInsets? - | - <static>+dynamic fromType() - ] - - [SingleColumnLayout]o-[BoxConstraints] - [SingleColumnLayout]o-[<abstract>Widget] - [SingleColumnLayout]o-[EdgeInsets] - - [SingleColumnLayoutType - | - +index: int; - <static>+values: List<SingleColumnLayoutType>; - <static>+boundedWide: SingleColumnLayoutType; - <static>+boundedNarrow: SingleColumnLayoutType; - <static>+stretched: SingleColumnLayoutType; - <static>+split: SingleColumnLayoutType - ] - - [SingleColumnLayoutType]o-[SingleColumnLayoutType] - [Enum]<:--[SingleColumnLayoutType] - - [<abstract>FormConsumerWidget - | - +Widget build() - ] - - [<abstract>FormConsumerRefWidget - | - +Widget build() - ] - - [FormScaffold - | - +formViewModel: T; - +actions: List<Widget>?; - +body: Widget; - +drawer: Widget?; - +actionsSpacing: double; - +actionsPadding: double - ] - - [FormScaffold]o-[<abstract>Widget] - - [StandardDialog - | - +title: Widget?; - +titleText: String?; - +body: Widget; - +actionButtons: List<Widget>; - +backgroundColor: Color?; - +borderRadius: double?; - +width: double?; - +height: double?; - +minWidth: double; - +minHeight: double; - +maxWidth: double?; - +maxHeight: double?; - +padding: EdgeInsets - | - +Widget build() - ] - - [StandardDialog]o-[<abstract>Widget] - [StandardDialog]o-[Color] - [StandardDialog]o-[EdgeInsets] - - [HtmlStylingBanner - | - +isDismissed: bool; - +onDismissed: dynamic Function()? - | - +Widget build() - ] - - [HtmlStylingBanner]o-[dynamic Function()?] - - [StandardTableColumn - | - +label: String; - +tooltip: String?; - +columnWidth: TableColumnWidth; - +sortable: bool; - +sortAscending: bool?; - +sortableIcon: Widget? - ] - - [StandardTableColumn]o-[<abstract>TableColumnWidth] - [StandardTableColumn]o-[<abstract>Widget] - - [StandardTable - | - +items: List<T>; - +inputColumns: List<StandardTableColumn>; - +onSelectItem: void Function(T); - +trailingActionsAt: List<ModelAction<dynamic>> Function(T, int)?; - +trailingActionsMenuType: ActionMenuType?; - +sortColumnPredicates: List<int Function(T, T)?>?; - +pinnedPredicates: int Function(T, T)?; - +headerRowBuilder: TableRow Function(BuildContext, List<StandardTableColumn>)?; - +dataRowBuilder: TableRow Function(BuildContext, List<StandardTableColumn>)?; - +inputTrailingActionsColumn: StandardTableColumn; - +tableWrapper: Widget Function(Widget)?; - +cellSpacing: double; - +rowSpacing: double; - +minRowHeight: double?; - +showTableHeader: bool; - +hideLeadingTrailingWhenEmpty: bool; - +leadingWidget: Widget?; - +trailingWidget: Widget?; - +leadingWidgetSpacing: double?; - +trailingWidgetSpacing: double?; - +emptyWidget: Widget?; - +rowStyle: StandardTableStyle; - +disableRowInteractions: bool - ] - - [StandardTable]o-[void Function(T)] - [StandardTable]o-[List<ModelAction<dynamic>> Function(T, int)?] - [StandardTable]o-[ActionMenuType] - [StandardTable]o-[int Function(T, T)?] - [StandardTable]o-[TableRow Function(BuildContext, List<StandardTableColumn>)?] - [StandardTable]o-[StandardTableColumn] - [StandardTable]o-[Widget Function(Widget)?] - [StandardTable]o-[<abstract>Widget] - [StandardTable]o-[StandardTableStyle] - - [StandardTableStyle - | - +index: int; - <static>+values: List<StandardTableStyle>; - <static>+plain: StandardTableStyle; - <static>+material: StandardTableStyle - ] - - [StandardTableStyle]o-[StandardTableStyle] - [Enum]<:--[StandardTableStyle] - - [TwoColumnLayout - | - <static>+defaultDivider: VerticalDivider; - <static>+defaultContentPadding: EdgeInsets; - <static>+slimContentPadding: EdgeInsets; - +leftWidget: Widget; - +rightWidget: Widget; - +dividerWidget: Widget?; - +headerWidget: Widget?; - +flexLeft: int?; - +flexRight: int?; - +constraintsLeft: BoxConstraints?; - +constraintsRight: BoxConstraints?; - +scrollLeft: bool; - +scrollRight: bool; - +paddingLeft: EdgeInsets?; - +paddingRight: EdgeInsets?; - +backgroundColorLeft: Color?; - +backgroundColorRight: Color?; - +stretchHeight: bool - ] - - [TwoColumnLayout]o-[VerticalDivider] - [TwoColumnLayout]o-[EdgeInsets] - [TwoColumnLayout]o-[<abstract>Widget] - [TwoColumnLayout]o-[BoxConstraints] - [TwoColumnLayout]o-[Color] - - [ActionMenuInline - | - +actions: List<ModelAction<dynamic>>; - +iconSize: double?; - +visible: bool; - +splashRadius: double?; - +paddingVertical: double?; - +paddingHorizontal: double? - | - +Widget build() - ] - - [TextParagraph - | - +text: String?; - +style: TextStyle?; - +selectable: bool; - +span: List<TextSpan>? - | - +Widget build() - ] - - [TextParagraph]o-[TextStyle] - - [SplashPage - | - +Widget build() - ] - - [ErrorPage - | - +error: Exception? - | - +Widget build() - ] - - [<abstract>ConsumerWidget]<:-[ErrorPage] - - [Badge - | - +icon: IconData?; - +color: Color?; - +borderRadius: double; - +label: String; - +type: BadgeType; - +padding: EdgeInsets; - +iconSize: double?; - +labelStyle: TextStyle?; - +center: bool - | - +Widget build(); - -Color? _getBackgroundColor(); - -Color _getBorderColor(); - -Color? _getLabelColor() - ] - - [Badge]o-[IconData] - [Badge]o-[Color] - [Badge]o-[BadgeType] - [Badge]o-[EdgeInsets] - [Badge]o-[TextStyle] - - [BadgeType - | - +index: int; - <static>+values: List<BadgeType>; - <static>+filled: BadgeType; - <static>+outlined: BadgeType; - <static>+outlineFill: BadgeType; - <static>+plain: BadgeType - ] - - [BadgeType]o-[BadgeType] - [Enum]<:--[BadgeType] - - [IndicatorRangeSliderThumbShape - | - +buildContext: BuildContext; - +start: T; - +end: T - | - +Size getPreferredSize(); - +void paint() - ] - - [IndicatorRangeSliderThumbShape]o-[<abstract>BuildContext] - [<abstract>RangeSliderThumbShape]<:-[IndicatorRangeSliderThumbShape] - - [HelpIcon - | - +tooltipText: String? - | - +Widget build() - ] - - [UnderConstruction - | - +Widget build() - ] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ISyncIndicatorViewModel - - - - - - +isDirty: bool - +lastSynced: DateTime? - - - - - - - - - - - - SyncIndicator - - - - - - +state: AsyncValue<T> - +lastSynced: DateTime? - +isDirty: bool - +animationDuration: int - +iconSize: double - - - - - - - - - - - AsyncValue - - - - - - - - - - - - - EmptyBody - - - - - - +icon: IconData? - +leading: Widget? - +leadingSpacing: double? - +title: String? - +description: String? - +button: Widget? - - - - - - +Widget build() - - - - - - - - - - - IconData - - - - - - - - - - - Widget - - - - - - - - - - - NullHelperDecoration - - - - - - - - - - - InputDecoration - - - - - - - - - - - - Search - - - - - - +onQueryChanged: dynamic Function(String) - +searchController: SearchController? - +hintText: String? - +initialText: String? - - - - - - - - - - - dynamic Function(String) - - - - - - - - - - - - SearchController - - - - - - +setText: void Function(String) - - - - - - - - - - - void Function(String) - - - - - - - - - - - - - ConstrainedWidthFlexible - - - - - - +minWidth: double - +maxWidth: double - +flex: int - +flexSum: int - +child: Widget - +outerConstraints: BoxConstraints - - - - - - +Widget build() - -double _getWidth() - - - - - - - - - - - BoxConstraints - - - - - - - - - - - - - AsyncValueWidget - - - - - - +value: AsyncValue<T> - +data: Widget Function(T) - +error: Widget Function(Object, StackTrace?)? - +loading: Widget Function()? - +empty: Widget Function()? - - - - - - +Widget build() - -Widget _buildDataOrEmptyWidget() - -Widget _defaultError() - -Widget _defaultLoad() - - - - - - - - - - - Widget Function(T) - - - - - - - - - - - Widget Function(Object, StackTrace?)? - - - - - - - - - - - Widget Function()? - - - - - - - - - - - - - ActionPopUpMenuButton - - - - - - +actions: List<ModelAction<dynamic>> - +triggerIconColor: Color? - +triggerIconColorHover: Color? - +triggerIconSize: double - +disableSplashEffect: bool - +hideOnEmpty: bool - +orientation: Axis - +elevation: double? - +splashRadius: double? - +enabled: bool - +position: PopupMenuPosition - - - - - - +Widget build() - -Widget _buildPopupMenu() - - - - - - - - - - - Color - - - - - - - - - - - Axis - - - - - - - - - - - PopupMenuPosition - - - - - - - - - - - - PrimaryButton - - - - - - +text: String - +icon: IconData? - +isLoading: bool - +showLoadingEarliestAfterMs: int - +onPressed: void Function()? - +tooltip: String - +tooltipDisabled: String - +enabled: bool - +onPressedFuture: dynamic Function()? - +innerPadding: EdgeInsets - +minimumSize: Size? - +isDisabled: bool - - - - - - - - - - - void Function()? - - - - - - - - - - - dynamic Function()? - - - - - - - - - - - EdgeInsets - - - - - - - - - - - Size - - - - - - - - - - - - Hyperlink - - - - - - +text: String - +url: String? - +onClick: void Function()? - +linkColor: Color - +hoverColor: Color? - +visitedColor: Color? - +style: TextStyle? - +hoverStyle: TextStyle? - +visitedStyle: TextStyle? - +icon: IconData? - +iconSize: double? - - - - - - - - - - - TextStyle - - - - - - - - - - - - - DismissButton - - - - - - +onPressed: void Function()? - +text: String? - - - - - - +Widget build() - - - - - - - - - - - - FormTableRow - - - - - - +label: String? - +labelBuilder: Widget Function(BuildContext)? - +labelStyle: TextStyle? - +labelHelpText: String? - +input: Widget - +control: AbstractControl<dynamic>? - +layout: FormTableRowLayout? - - - - - - - - - - - Widget Function(BuildContext)? - - - - - - - - - - - AbstractControl - - - - - - - - - - - - FormTableRowLayout - - - - - - +index: int - <static>+values: List<FormTableRowLayout> - <static>+vertical: FormTableRowLayout - <static>+horizontal: FormTableRowLayout - - - - - - - - - - - - - FormTableLayout - - - - - - +rows: List<FormTableRow> - +columnWidths: Map<int, TableColumnWidth> - +rowDivider: Widget? - +rowLayout: FormTableRowLayout? - +rowLabelStyle: TextStyle? - - - - - - +Widget build() - - - - - - - - - - - - - FormSectionHeader - - - - - - +title: String - +titleTextStyle: TextStyle? - +helpText: String? - +divider: bool - +helpTextDisabled: bool - - - - - - +Widget build() - - - - - - - - - - - - - FormLabel - - - - - - +labelText: String? - +helpText: String? - +labelTextStyle: TextStyle? - +layout: FormTableRowLayout? - - - - - - +Widget build() - - - - - - - - - - - Enum - - - - - - - - - - - - ActionMenuType - - - - - - +index: int - <static>+values: List<ActionMenuType> - <static>+inline: ActionMenuType - <static>+popup: ActionMenuType - - - - - - - - - - - ReactiveCustomColorPicker - - - - - - - - - - - ReactiveFormField - - - - - - - - - - - - NavbarTab - - - - - - +title: String - +intent: RoutingIntent? - +index: int - +enabled: bool - - - - - - - - - - - RoutingIntent - - - - - - - - - - - - TabbedNavbar - - - - - - +tabs: List<T> - +selectedTab: T? - +indicator: BoxDecoration? - +height: double? - +disabledBackgroundColor: Color? - +disabledTooltipText: String? - +onSelect: void Function(int, T)? - +labelPadding: EdgeInsets? - +labelSpacing: double? - +indicatorSize: TabBarIndicatorSize? - +isScrollable: bool - +backgroundColor: Color? - +labelColorHover: Color? - +unselectedLabelColorHover: Color? - - - - - - - - - - - BoxDecoration - - - - - - - - - - - void Function(int, T)? - - - - - - - - - - - TabBarIndicatorSize - - - - - - - - - - - - Collapsible - - - - - - +contentBuilder: Widget Function(BuildContext, bool) - +headerBuilder: Widget Function(BuildContext, bool)? - +title: String? - +isCollapsed: bool - - - - - - - - - - - Widget Function(BuildContext, bool) - - - - - - - - - - - Widget Function(BuildContext, bool)? - - - - - - - - - - - - - StudyULogo - - - - - - +onTap: void Function()? - - - - - - +Widget build() - - - - - - - - - - - - FormSideSheetTab - - - - - - +formViewBuilder: Widget Function(T) - - - - - - - - - - - - SidesheetTab - - - - - - +builder: Widget Function(BuildContext) - - - - - - - - - - - Widget Function(BuildContext) - - - - - - - - - - - - Sidesheet - - - - - - <static>+kDefaultWidth: double - +titleText: String - +body: Widget? - +tabs: List<SidesheetTab>? - +actionButtons: List<Widget>? - +width: double? - +withCloseButton: bool - +ignoreAppBar: bool - +collapseSingleTab: bool - +bodyPadding: EdgeInsets? - +wrapContent: Widget Function(Widget)? - - - - - - - - - - - Widget Function(Widget)? - - - - - - - - - - - - MouseEventsRegion - - - - - - +onTap: void Function()? - +onHover: void Function(PointerHoverEvent)? - +onEnter: void Function(PointerEnterEvent)? - +onExit: void Function(PointerExitEvent)? - +autoselectCursor: bool - +cursor: SystemMouseCursor - <static>+defaultCursor: SystemMouseCursor - +autoCursor: SystemMouseCursor - - - - - - - - - - - void Function(PointerHoverEvent)? - - - - - - - - - - - void Function(PointerEnterEvent)? - - - - - - - - - - - void Function(PointerExitEvent)? - - - - - - - - - - - SystemMouseCursor - - - - - - - - - - - - - FormControlLabel - - - - - - +formControl: AbstractControl<dynamic> - +text: String - +isClickable: bool - +textStyle: TextStyle? - +onClick: void Function(AbstractControl<dynamic>)? - - - - - - +Widget build() - - - - - - - - - - - void Function(AbstractControl<dynamic>)? - - - - - - - - - - - - IWithBanner - - - - - - +Widget? banner() - - - - - - - - - - - - BannerBox - - - - - - +prefixIcon: Widget? - +body: Widget - +style: BannerStyle - +padding: EdgeInsets? - +noPrefix: bool - +dismissable: bool - +isDismissed: bool? - +onDismissed: dynamic Function()? - +dismissIconSize: double - - - - - - - - - - - - BannerStyle - - - - - - +index: int - <static>+values: List<BannerStyle> - <static>+warning: BannerStyle - <static>+info: BannerStyle - <static>+error: BannerStyle - - - - - - - - - - - - - SecondaryButton - - - - - - +text: String - +icon: IconData? - +isLoading: bool - +onPressed: void Function()? - - - - - - +Widget build() - - - - - - - - - - - - - IconPack - - - - - - <static>+defaultPack: List<IconOption> - <static>+material: List<IconOption> - - - - - - <static>+IconOption? resolveIconByName() - - - - - - - - - - - - - IconOption - - - - - - +name: String - +icon: IconData? - +isEmpty: bool - +props: List<Object?> - - - - - - +String toJson() - <static>+IconOption fromJson() - - - - - - - - - - - Equatable - - - - - - - - - - - ReactiveIconPicker - - - - - - - - - - - ReactiveFocusableFormField - - - - - - - - - - - - - IconPicker - - - - - - +iconOptions: List<IconOption> - +selectedOption: IconOption? - +onSelect: void Function(IconOption)? - +galleryIconSize: double? - +selectedIconSize: double? - +focusNode: FocusNode? - +isDisabled: bool - - - - - - +Widget build() - - - - - - - - - - - void Function(IconOption)? - - - - - - - - - - - FocusNode - - - - - - - - - - - - - IconPickerField - - - - - - +iconOptions: List<IconOption> - +selectedOption: IconOption? - +selectedIconSize: double? - +galleryIconSize: double? - +onSelect: void Function(IconOption)? - +focusNode: FocusNode? - +isDisabled: bool - - - - - - +Widget build() - - - - - - - - - - - - - IconPickerGallery - - - - - - +iconOptions: List<IconOption> - +onSelect: void Function(IconOption)? - +iconSize: double - - - - - - +Widget build() - - - - - - - - - - - - - SingleColumnLayout - - - - - - <static>+defaultConstraints: BoxConstraints - <static>+defaultConstraintsNarrow: BoxConstraints - +body: Widget - +header: Widget? - +stickyHeader: bool - +constraints: BoxConstraints? - +scroll: bool - +padding: EdgeInsets? - - - - - - <static>+dynamic fromType() - - - - - - - - - - - - SingleColumnLayoutType - - - - - - +index: int - <static>+values: List<SingleColumnLayoutType> - <static>+boundedWide: SingleColumnLayoutType - <static>+boundedNarrow: SingleColumnLayoutType - <static>+stretched: SingleColumnLayoutType - <static>+split: SingleColumnLayoutType - - - - - - - - - - - - FormConsumerWidget - - - - - - +Widget build() - - - - - - - - - - - - FormConsumerRefWidget - - - - - - +Widget build() - - - - - - - - - - - - FormScaffold - - - - - - +formViewModel: T - +actions: List<Widget>? - +body: Widget - +drawer: Widget? - +actionsSpacing: double - +actionsPadding: double - - - - - - - - - - - - - StandardDialog - - - - - - +title: Widget? - +titleText: String? - +body: Widget - +actionButtons: List<Widget> - +backgroundColor: Color? - +borderRadius: double? - +width: double? - +height: double? - +minWidth: double - +minHeight: double - +maxWidth: double? - +maxHeight: double? - +padding: EdgeInsets - - - - - - +Widget build() - - - - - - - - - - - - - HtmlStylingBanner - - - - - - +isDismissed: bool - +onDismissed: dynamic Function()? - - - - - - +Widget build() - - - - - - - - - - - - StandardTableColumn - - - - - - +label: String - +tooltip: String? - +columnWidth: TableColumnWidth - +sortable: bool - +sortAscending: bool? - +sortableIcon: Widget? - - - - - - - - - - - TableColumnWidth - - - - - - - - - - - - StandardTable - - - - - - +items: List<T> - +inputColumns: List<StandardTableColumn> - +onSelectItem: void Function(T) - +trailingActionsAt: List<ModelAction<dynamic>> Function(T, int)? - +trailingActionsMenuType: ActionMenuType? - +sortColumnPredicates: List<int Function(T, T)?>? - +pinnedPredicates: int Function(T, T)? - +headerRowBuilder: TableRow Function(BuildContext, List<StandardTableColumn>)? - +dataRowBuilder: TableRow Function(BuildContext, List<StandardTableColumn>)? - +inputTrailingActionsColumn: StandardTableColumn - +tableWrapper: Widget Function(Widget)? - +cellSpacing: double - +rowSpacing: double - +minRowHeight: double? - +showTableHeader: bool - +hideLeadingTrailingWhenEmpty: bool - +leadingWidget: Widget? - +trailingWidget: Widget? - +leadingWidgetSpacing: double? - +trailingWidgetSpacing: double? - +emptyWidget: Widget? - +rowStyle: StandardTableStyle - +disableRowInteractions: bool - - - - - - - - - - - void Function(T) - - - - - - - - - - - List<ModelAction<dynamic>> Function(T, int)? - - - - - - - - - - - int Function(T, T)? - - - - - - - - - - - TableRow Function(BuildContext, List<StandardTableColumn>)? - - - - - - - - - - - - StandardTableStyle - - - - - - +index: int - <static>+values: List<StandardTableStyle> - <static>+plain: StandardTableStyle - <static>+material: StandardTableStyle - - - - - - - - - - - - TwoColumnLayout - - - - - - <static>+defaultDivider: VerticalDivider - <static>+defaultContentPadding: EdgeInsets - <static>+slimContentPadding: EdgeInsets - +leftWidget: Widget - +rightWidget: Widget - +dividerWidget: Widget? - +headerWidget: Widget? - +flexLeft: int? - +flexRight: int? - +constraintsLeft: BoxConstraints? - +constraintsRight: BoxConstraints? - +scrollLeft: bool - +scrollRight: bool - +paddingLeft: EdgeInsets? - +paddingRight: EdgeInsets? - +backgroundColorLeft: Color? - +backgroundColorRight: Color? - +stretchHeight: bool - - - - - - - - - - - VerticalDivider - - - - - - - - - - - - - ActionMenuInline - - - - - - +actions: List<ModelAction<dynamic>> - +iconSize: double? - +visible: bool - +splashRadius: double? - +paddingVertical: double? - +paddingHorizontal: double? - - - - - - +Widget build() - - - - - - - - - - - - - TextParagraph - - - - - - +text: String? - +style: TextStyle? - +selectable: bool - +span: List<TextSpan>? - - - - - - +Widget build() - - - - - - - - - - - - SplashPage - - - - - - +Widget build() - - - - - - - - - - - - - ErrorPage - - - - - - +error: Exception? - - - - - - +Widget build() - - - - - - - - - - - ConsumerWidget - - - - - - - - - - - - - Badge - - - - - - +icon: IconData? - +color: Color? - +borderRadius: double - +label: String - +type: BadgeType - +padding: EdgeInsets - +iconSize: double? - +labelStyle: TextStyle? - +center: bool - - - - - - +Widget build() - -Color? _getBackgroundColor() - -Color _getBorderColor() - -Color? _getLabelColor() - - - - - - - - - - - - BadgeType - - - - - - +index: int - <static>+values: List<BadgeType> - <static>+filled: BadgeType - <static>+outlined: BadgeType - <static>+outlineFill: BadgeType - <static>+plain: BadgeType - - - - - - - - - - - - - IndicatorRangeSliderThumbShape - - - - - - +buildContext: BuildContext - +start: T - +end: T - - - - - - +Size getPreferredSize() - +void paint() - - - - - - - - - - - BuildContext - - - - - - - - - - - RangeSliderThumbShape - - - - - - - - - - - - - HelpIcon - - - - - - +tooltipText: String? - - - - - - +Widget build() - - - - - - - - - - - - UnderConstruction - - - - - - +Widget build() - - - - - - - - - \ No newline at end of file diff --git a/docs/uml/designer_v2/lib/domain/uml.svg b/docs/uml/designer_v2/lib/domain/uml.svg deleted file mode 100644 index 6959fd20f..000000000 --- a/docs/uml/designer_v2/lib/domain/uml.svg +++ /dev/null @@ -1,229 +0,0 @@ - - [<abstract>ResultTypes - ] - - [MeasurementResultTypes - | - <static>+questionnaire: String; - <static>+values: List<String> - ] - - [<abstract>ResultTypes]<:-[MeasurementResultTypes] - - [InterventionResultTypes - | - <static>+checkmarkTask: String; - <static>+values: List<String> - ] - - [<abstract>ResultTypes]<:-[InterventionResultTypes] - - [StudyExportData - | - +study: Study; - +measurementsData: List<Map<String, dynamic>>; - +interventionsData: List<Map<String, dynamic>>; - +mediaData: List<String>; - +isEmpty: bool - ] - - [StudyExportData]o-[Study] - - [StudyTemplates - | - <static>+kUnnamedStudyTitle: String - | - <static>+Study emptyDraft() - ] - - [StudyActionType - | - +index: int; - <static>+values: List<StudyActionType>; - <static>+pin: StudyActionType; - <static>+pinoff: StudyActionType; - <static>+edit: StudyActionType; - <static>+duplicate: StudyActionType; - <static>+duplicateDraft: StudyActionType; - <static>+addCollaborator: StudyActionType; - <static>+export: StudyActionType; - <static>+delete: StudyActionType - ] - - [StudyActionType]o-[StudyActionType] - [Enum]<:--[StudyActionType] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ResultTypes - - - - - - - - - - - - MeasurementResultTypes - - - - - - <static>+questionnaire: String - <static>+values: List<String> - - - - - - - - - - - - InterventionResultTypes - - - - - - <static>+checkmarkTask: String - <static>+values: List<String> - - - - - - - - - - - - StudyExportData - - - - - - +study: Study - +measurementsData: List<Map<String, dynamic>> - +interventionsData: List<Map<String, dynamic>> - +mediaData: List<String> - +isEmpty: bool - - - - - - - - - - - Study - - - - - - - - - - - - - StudyTemplates - - - - - - <static>+kUnnamedStudyTitle: String - - - - - - <static>+Study emptyDraft() - - - - - - - - - - - - StudyActionType - - - - - - +index: int - <static>+values: List<StudyActionType> - <static>+pin: StudyActionType - <static>+pinoff: StudyActionType - <static>+edit: StudyActionType - <static>+duplicate: StudyActionType - <static>+duplicateDraft: StudyActionType - <static>+addCollaborator: StudyActionType - <static>+export: StudyActionType - <static>+delete: StudyActionType - - - - - - - - - - - Enum - - - - - - - - - \ No newline at end of file diff --git a/docs/uml/designer_v2/lib/features/account/uml.svg b/docs/uml/designer_v2/lib/features/account/uml.svg deleted file mode 100644 index 732599e0e..000000000 --- a/docs/uml/designer_v2/lib/features/account/uml.svg +++ /dev/null @@ -1,52 +0,0 @@ - - [AccountSettingsDialog - | - +Widget build() - ] - - [<abstract>ConsumerWidget]<:-[AccountSettingsDialog] - - - - - - - - - - - - - - - - - - - AccountSettingsDialog - - - - - - +Widget build() - - - - - - - - - - - ConsumerWidget - - - - - - - - - \ No newline at end of file diff --git a/docs/uml/designer_v2/lib/features/analyze/uml.svg b/docs/uml/designer_v2/lib/features/analyze/uml.svg deleted file mode 100644 index eae674115..000000000 --- a/docs/uml/designer_v2/lib/features/analyze/uml.svg +++ /dev/null @@ -1,92 +0,0 @@ - - [StudyAnalyzeScreen - | - +Widget? banner(); - +Widget build() - ] - - [<abstract>StudyPageWidget]<:-[StudyAnalyzeScreen] - - [StudyAnalyzeController - | - +dynamic onExport() - ] - - [StudyBaseController]<:-[StudyAnalyzeController] - - - - - - - - - - - - - - - - - - - - - StudyAnalyzeScreen - - - - - - +Widget? banner() - +Widget build() - - - - - - - - - - - StudyPageWidget - - - - - - - - - - - - StudyAnalyzeController - - - - - - +dynamic onExport() - - - - - - - - - - - StudyBaseController - - - - - - - - - \ No newline at end of file diff --git a/docs/uml/designer_v2/lib/features/auth/uml.svg b/docs/uml/designer_v2/lib/features/auth/uml.svg deleted file mode 100644 index dc5d87f42..000000000 --- a/docs/uml/designer_v2/lib/features/auth/uml.svg +++ /dev/null @@ -1,650 +0,0 @@ - - [StudyUJobsToBeDone - | - +Widget build() - ] - - [LoginForm - | - +formKey: AuthFormKey - | - +Widget build() - ] - - [LoginForm]o-[AuthFormKey] - [<abstract>FormConsumerRefWidget]<:-[LoginForm] - - [PasswordForgotForm - | - +formKey: AuthFormKey - | - +Widget build() - ] - - [PasswordForgotForm]o-[AuthFormKey] - [<abstract>FormConsumerRefWidget]<:-[PasswordForgotForm] - - [AuthFormController - | - +authRepository: IAuthRepository; - +sharedPreferences: SharedPreferences; - +notificationService: INotificationService; - +router: GoRouter; - +emailControl: FormControl<String>; - +passwordControl: FormControl<String>; - +passwordConfirmationControl: FormControl<String>; - +rememberMeControl: FormControl<bool>; - +termsOfServiceControl: FormControl<bool>; - <static>+authValidationMessages: Map<String, String Function(dynamic)>; - +loginForm: FormGroup; - +signupForm: FormGroup; - +passwordForgotForm: FormGroup; - +passwordRecoveryForm: FormGroup; - +controlValidatorsByForm: Map<AuthFormKey, Map<FormControl<dynamic>, List<Validator<dynamic>>>>; - -_formKey: AuthFormKey; - +shouldRemember: bool; - +formKey: AuthFormKey; - +form: FormGroup - | - -dynamic _getFormFor(); - -dynamic _onChangeFormKey(); - +dynamic resetControlsFor(); - -dynamic _forceValidationMessages(); - +dynamic signUp(); - -dynamic _signUp(); - +dynamic signIn(); - -dynamic _signInWith(); - +dynamic signOut(); - +dynamic resetPasswordForEmail(); - +dynamic sendPasswordResetLink(); - +dynamic recoverPassword(); - +dynamic updateUser(); - -dynamic _readDebugUser(); - -void _setRememberMe(); - -void _delRememberMe(); - -void _initRememberMe() - ] - - [AuthFormController]o-[<abstract>IAuthRepository] - [AuthFormController]o-[SharedPreferences] - [AuthFormController]o-[<abstract>INotificationService] - [AuthFormController]o-[GoRouter] - [AuthFormController]o-[FormControl] - [AuthFormController]o-[FormGroup] - [AuthFormController]o-[AuthFormKey] - [<abstract>IFormGroupController]<:--[AuthFormController] - - [AuthFormKey - | - +index: int; - <static>+values: List<AuthFormKey>; - <static>+login: AuthFormKey; - <static>+signup: AuthFormKey; - <static>+passwordForgot: AuthFormKey; - <static>+passwordRecovery: AuthFormKey; - <static>-_loginSubmit: AuthFormKey; - <static>-_signupSubmit: AuthFormKey - ] - - [AuthFormKey]o-[AuthFormKey] - [Enum]<:--[AuthFormKey] - - [EmailTextField - | - +labelText: String; - +hintText: String?; - +formControlName: String?; - +formControl: FormControl<dynamic>? - ] - - [EmailTextField]o-[FormControl] - - [PasswordTextField - | - +labelText: String; - +hintText: String?; - +onSubmitted: dynamic Function(FormControl<dynamic>)?; - +formControlName: String?; - +formControl: FormControl<dynamic>? - ] - - [PasswordTextField]o-[dynamic Function(FormControl<dynamic>)?] - [PasswordTextField]o-[FormControl] - - [AuthScaffold - | - +body: Widget; - +formKey: AuthFormKey; - +leftContentMinWidth: double; - +leftPanelMinWidth: double; - +leftPanelPadding: EdgeInsets - ] - - [AuthScaffold]o-[<abstract>Widget] - [AuthScaffold]o-[AuthFormKey] - [AuthScaffold]o-[EdgeInsets] - - [SignupForm - | - +formKey: AuthFormKey - | - +Widget build(); - -dynamic _onClickTermsOfUse(); - -dynamic _onClickPrivacyPolicy() - ] - - [SignupForm]o-[AuthFormKey] - [<abstract>FormConsumerRefWidget]<:-[SignupForm] - - [PasswordRecoveryForm - | - +formKey: AuthFormKey - | - +Widget build() - ] - - [PasswordRecoveryForm]o-[AuthFormKey] - [<abstract>FormConsumerRefWidget]<:-[PasswordRecoveryForm] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - StudyUJobsToBeDone - - - - - - +Widget build() - - - - - - - - - - - - - LoginForm - - - - - - +formKey: AuthFormKey - - - - - - +Widget build() - - - - - - - - - - - - AuthFormKey - - - - - - +index: int - <static>+values: List<AuthFormKey> - <static>+login: AuthFormKey - <static>+signup: AuthFormKey - <static>+passwordForgot: AuthFormKey - <static>+passwordRecovery: AuthFormKey - <static>-_loginSubmit: AuthFormKey - <static>-_signupSubmit: AuthFormKey - - - - - - - - - - - FormConsumerRefWidget - - - - - - - - - - - - - PasswordForgotForm - - - - - - +formKey: AuthFormKey - - - - - - +Widget build() - - - - - - - - - - - - - AuthFormController - - - - - - +authRepository: IAuthRepository - +sharedPreferences: SharedPreferences - +notificationService: INotificationService - +router: GoRouter - +emailControl: FormControl<String> - +passwordControl: FormControl<String> - +passwordConfirmationControl: FormControl<String> - +rememberMeControl: FormControl<bool> - +termsOfServiceControl: FormControl<bool> - <static>+authValidationMessages: Map<String, String Function(dynamic)> - +loginForm: FormGroup - +signupForm: FormGroup - +passwordForgotForm: FormGroup - +passwordRecoveryForm: FormGroup - +controlValidatorsByForm: Map<AuthFormKey, Map<FormControl<dynamic>, List<Validator<dynamic>>>> - -_formKey: AuthFormKey - +shouldRemember: bool - +formKey: AuthFormKey - +form: FormGroup - - - - - - -dynamic _getFormFor() - -dynamic _onChangeFormKey() - +dynamic resetControlsFor() - -dynamic _forceValidationMessages() - +dynamic signUp() - -dynamic _signUp() - +dynamic signIn() - -dynamic _signInWith() - +dynamic signOut() - +dynamic resetPasswordForEmail() - +dynamic sendPasswordResetLink() - +dynamic recoverPassword() - +dynamic updateUser() - -dynamic _readDebugUser() - -void _setRememberMe() - -void _delRememberMe() - -void _initRememberMe() - - - - - - - - - - - IAuthRepository - - - - - - - - - - - SharedPreferences - - - - - - - - - - - INotificationService - - - - - - - - - - - GoRouter - - - - - - - - - - - FormControl - - - - - - - - - - - FormGroup - - - - - - - - - - - IFormGroupController - - - - - - - - - - - Enum - - - - - - - - - - - - EmailTextField - - - - - - +labelText: String - +hintText: String? - +formControlName: String? - +formControl: FormControl<dynamic>? - - - - - - - - - - - - PasswordTextField - - - - - - +labelText: String - +hintText: String? - +onSubmitted: dynamic Function(FormControl<dynamic>)? - +formControlName: String? - +formControl: FormControl<dynamic>? - - - - - - - - - - - dynamic Function(FormControl<dynamic>)? - - - - - - - - - - - - AuthScaffold - - - - - - +body: Widget - +formKey: AuthFormKey - +leftContentMinWidth: double - +leftPanelMinWidth: double - +leftPanelPadding: EdgeInsets - - - - - - - - - - - Widget - - - - - - - - - - - EdgeInsets - - - - - - - - - - - - - SignupForm - - - - - - +formKey: AuthFormKey - - - - - - +Widget build() - -dynamic _onClickTermsOfUse() - -dynamic _onClickPrivacyPolicy() - - - - - - - - - - - - - PasswordRecoveryForm - - - - - - +formKey: AuthFormKey - - - - - - +Widget build() - - - - - - - - - \ No newline at end of file diff --git a/docs/uml/designer_v2/lib/features/dashboard/uml.svg b/docs/uml/designer_v2/lib/features/dashboard/uml.svg deleted file mode 100644 index 74b4061b4..000000000 --- a/docs/uml/designer_v2/lib/features/dashboard/uml.svg +++ /dev/null @@ -1,648 +0,0 @@ - - [StudiesTableColumnHeader - | - +title: String; - +sortable: bool; - +sortAscending: bool; - +sortingActive: bool; - +onSort: void Function()? - ] - - [StudiesTableColumnHeader]o-[void Function()?] - - [DashboardScaffold - | - <static>+compactWidthThreshold: double; - +body: Widget - | - +Widget build() - ] - - [DashboardScaffold]o-[<abstract>Widget] - - [StudiesTableColumnSize - | - +collapsed: bool; - +flex: int?; - +width: double? - | - +Widget createContainer() - ] - - [StudiesTable - | - +itemHeight: double; - +itemPadding: double; - +rowSpacing: double; - +columnSpacing: double; - +compactWidthThreshold: double; - +superCompactWidthThreshold: double; - +compactStatTitleThreshold: double; - +studies: List<Study>; - +onSelect: void Function(Study); - +getActions: List<ModelAction<dynamic>> Function(Study); - +emptyWidget: Widget; - +pinnedStudies: Iterable<String>; - +dashboardController: DashboardController - | - +Widget build(); - -Widget _buildColumnHeader() - ] - - [StudiesTable]o-[void Function(Study)] - [StudiesTable]o-[List<ModelAction<dynamic>> Function(Study)] - [StudiesTable]o-[<abstract>Widget] - [StudiesTable]o-[DashboardController] - - [StudiesTableColumn - | - +index: int; - <static>+values: List<StudiesTableColumn>; - <static>+pin: StudiesTableColumn; - <static>+title: StudiesTableColumn; - <static>+status: StudiesTableColumn; - <static>+participation: StudiesTableColumn; - <static>+createdAt: StudiesTableColumn; - <static>+enrolled: StudiesTableColumn; - <static>+active: StudiesTableColumn; - <static>+completed: StudiesTableColumn; - <static>+action: StudiesTableColumn - ] - - [StudiesTableColumn]o-[StudiesTableColumn] - [Enum]<:--[StudiesTableColumn] - - [DashboardScreen - | - +filter: StudiesFilter? - ] - - [DashboardScreen]o-[StudiesFilter] - - [DashboardController - | - +studyRepository: IStudyRepository; - +authRepository: IAuthRepository; - +userRepository: IUserRepository; - +router: GoRouter; - -_studiesSubscription: StreamSubscription<List<WrappedModel<Study>>>?; - +searchController: SearchController; - +isSortAscending: bool - | - -dynamic _subscribeStudies(); - +dynamic setSearchText(); - +dynamic setStudiesFilter(); - +dynamic onSelectStudy(); - +dynamic onClickNewStudy(); - +dynamic pinStudy(); - +dynamic pinOffStudy(); - +void setSorting(); - +void filterStudies(); - +void sortStudies(); - +bool isSortingActiveForColumn(); - +bool isPinned(); - +List<ModelAction<dynamic>> availableActions(); - +void dispose() - ] - - [DashboardController]o-[<abstract>IStudyRepository] - [DashboardController]o-[<abstract>IAuthRepository] - [DashboardController]o-[<abstract>IUserRepository] - [DashboardController]o-[GoRouter] - [DashboardController]o-[StreamSubscription] - [DashboardController]o-[SearchController] - [<abstract>IModelActionProvider]<:--[DashboardController] - - [StudiesTableItem - | - +study: Study; - +itemHeight: double; - +itemPadding: double; - +rowSpacing: double; - +columnSpacing: double; - +actions: List<ModelAction<dynamic>>; - +columnSizes: List<StudiesTableColumnSize>; - +isPinned: bool; - +onPinnedChanged: void Function(Study, bool)?; - +onTap: void Function(Study)? - ] - - [StudiesTableItem]o-[Study] - [StudiesTableItem]o-[void Function(Study, bool)?] - [StudiesTableItem]o-[void Function(Study)?] - - [StudiesFilter - | - +index: int; - <static>+values: List<StudiesFilter> - ] - - [Enum]<:--[StudiesFilter] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - StudiesTableColumnHeader - - - - - - +title: String - +sortable: bool - +sortAscending: bool - +sortingActive: bool - +onSort: void Function()? - - - - - - - - - - - void Function()? - - - - - - - - - - - - - DashboardScaffold - - - - - - <static>+compactWidthThreshold: double - +body: Widget - - - - - - +Widget build() - - - - - - - - - - - Widget - - - - - - - - - - - - - StudiesTableColumnSize - - - - - - +collapsed: bool - +flex: int? - +width: double? - - - - - - +Widget createContainer() - - - - - - - - - - - - - StudiesTable - - - - - - +itemHeight: double - +itemPadding: double - +rowSpacing: double - +columnSpacing: double - +compactWidthThreshold: double - +superCompactWidthThreshold: double - +compactStatTitleThreshold: double - +studies: List<Study> - +onSelect: void Function(Study) - +getActions: List<ModelAction<dynamic>> Function(Study) - +emptyWidget: Widget - +pinnedStudies: Iterable<String> - +dashboardController: DashboardController - - - - - - +Widget build() - -Widget _buildColumnHeader() - - - - - - - - - - - void Function(Study) - - - - - - - - - - - List<ModelAction<dynamic>> Function(Study) - - - - - - - - - - - - - DashboardController - - - - - - +studyRepository: IStudyRepository - +authRepository: IAuthRepository - +userRepository: IUserRepository - +router: GoRouter - -_studiesSubscription: StreamSubscription<List<WrappedModel<Study>>>? - +searchController: SearchController - +isSortAscending: bool - - - - - - -dynamic _subscribeStudies() - +dynamic setSearchText() - +dynamic setStudiesFilter() - +dynamic onSelectStudy() - +dynamic onClickNewStudy() - +dynamic pinStudy() - +dynamic pinOffStudy() - +void setSorting() - +void filterStudies() - +void sortStudies() - +bool isSortingActiveForColumn() - +bool isPinned() - +List<ModelAction<dynamic>> availableActions() - +void dispose() - - - - - - - - - - - - StudiesTableColumn - - - - - - +index: int - <static>+values: List<StudiesTableColumn> - <static>+pin: StudiesTableColumn - <static>+title: StudiesTableColumn - <static>+status: StudiesTableColumn - <static>+participation: StudiesTableColumn - <static>+createdAt: StudiesTableColumn - <static>+enrolled: StudiesTableColumn - <static>+active: StudiesTableColumn - <static>+completed: StudiesTableColumn - <static>+action: StudiesTableColumn - - - - - - - - - - - Enum - - - - - - - - - - - - DashboardScreen - - - - - - +filter: StudiesFilter? - - - - - - - - - - - - StudiesFilter - - - - - - +index: int - <static>+values: List<StudiesFilter> - - - - - - - - - - - IStudyRepository - - - - - - - - - - - IAuthRepository - - - - - - - - - - - IUserRepository - - - - - - - - - - - GoRouter - - - - - - - - - - - StreamSubscription - - - - - - - - - - - SearchController - - - - - - - - - - - IModelActionProvider - - - - - - - - - - - - StudiesTableItem - - - - - - +study: Study - +itemHeight: double - +itemPadding: double - +rowSpacing: double - +columnSpacing: double - +actions: List<ModelAction<dynamic>> - +columnSizes: List<StudiesTableColumnSize> - +isPinned: bool - +onPinnedChanged: void Function(Study, bool)? - +onTap: void Function(Study)? - - - - - - - - - - - Study - - - - - - - - - - - void Function(Study, bool)? - - - - - - - - - - - void Function(Study)? - - - - - - - - - \ No newline at end of file diff --git a/docs/uml/designer_v2/lib/features/design/enrollment/uml.svg b/docs/uml/designer_v2/lib/features/design/enrollment/uml.svg deleted file mode 100644 index a0c07f4f0..000000000 --- a/docs/uml/designer_v2/lib/features/design/enrollment/uml.svg +++ /dev/null @@ -1,820 +0,0 @@ - - [<abstract>IScreenerQuestionLogicFormViewModel - | - +isDirtyOptionsBannerVisible: bool - ] - - [ScreenerQuestionLogicFormView - | - +formViewModel: ScreenerQuestionFormViewModel - | - +Widget build(); - -dynamic _buildInfoBanner(); - -dynamic _buildAnswerOptionsLogicControls(); - -List<Widget> _buildOptionLogicRow() - ] - - [ScreenerQuestionLogicFormView]o-[ScreenerQuestionFormViewModel] - [<abstract>FormConsumerWidget]<:-[ScreenerQuestionLogicFormView] - - [EnrollmentFormData - | - <static>+kDefaultEnrollmentType: Participation; - +enrollmentType: Participation; - +questionnaireFormData: QuestionnaireFormData; - +consentItemsFormData: List<ConsentItemFormData>?; - +id: String - | - +Study apply(); - +EnrollmentFormData copy() - ] - - [EnrollmentFormData]o-[Participation] - [EnrollmentFormData]o-[QuestionnaireFormData] - [<abstract>IStudyFormData]<:--[EnrollmentFormData] - - [ConsentItemFormView - | - +formViewModel: ConsentItemFormViewModel - ] - - [ConsentItemFormView]o-[ConsentItemFormViewModel] - - [ConsentItemFormData - | - +consentId: String; - +title: String; - +description: String; - +iconName: String?; - +id: String - | - +ConsentItem toConsentItem(); - +ConsentItemFormData copy() - ] - - [<abstract>IFormData]<:-[ConsentItemFormData] - - [StudyDesignEnrollmentFormView - | - +Widget build(); - -dynamic _showScreenerQuestionSidesheetWithArgs(); - -dynamic _showConsentItemSidesheetWithArgs() - ] - - [<abstract>StudyDesignPageWidget]<:-[StudyDesignEnrollmentFormView] - - [ScreenerQuestionFormViewModel - | - <static>+defaultResponseOptionValidity: bool; - +responseOptionsDisabledArray: FormArray<dynamic>; - +responseOptionsLogicControls: FormArray<bool>; - +responseOptionsLogicDescriptionControls: FormArray<String>; - -_questionBaseControls: Map<String, AbstractControl<dynamic>>; - +prevResponseOptionControls: List<AbstractControl<dynamic>>; - +prevResponseOptionValues: List<dynamic>; - +responseOptionsDisabledControls: List<AbstractControl<dynamic>>; - +logicControlOptions: List<FormControlOption<bool>>; - +questionBaseControls: Map<String, AbstractControl<dynamic>>; - +isDirtyOptionsBannerVisible: bool - | - +dynamic onResponseOptionsChanged(); - +void setControlsFrom(); - +QuestionFormData buildFormData(); - -List<FormControl<dynamic>> _copyFormControls(); - -AbstractControl<dynamic>? _findAssociatedLogicControlFor(); - -AbstractControl<dynamic>? _findAssociatedControlFor(); - +ScreenerQuestionFormViewModel createDuplicate() - ] - - [ScreenerQuestionFormViewModel]o-[FormArray] - [QuestionFormViewModel]<:-[ScreenerQuestionFormViewModel] - [<abstract>IScreenerQuestionLogicFormViewModel]<:--[ScreenerQuestionFormViewModel] - - [EnrollmentFormViewModel - | - +study: Study; - +router: GoRouter; - +consentItemDelegate: EnrollmentFormConsentItemDelegate; - +enrollmentTypeControl: FormControl<Participation>; - +consentItemArray: FormArray<dynamic>; - +consentItemFormViewModels: FormViewModelCollection<ConsentItemFormViewModel, ConsentItemFormData>; - +form: FormGroup; - +enrollmentTypeControlOptions: List<FormControlOption<Participation>>; - +consentItemModels: List<ConsentItemFormViewModel>; - +sharedValidationConfig: Map<FormValidationSetEnum, List<FormControlValidation>>; - +titles: Map<FormMode, String>; - +canTestScreener: bool; - +canTestConsent: bool; - +questionTitles: Map<FormMode, String Function()> - | - +void setControlsFrom(); - +EnrollmentFormData buildFormData(); - +void read(); - +List<ModelAction<dynamic>> availableActions(); - +List<ModelAction<dynamic>> availablePopupActions(); - +List<ModelAction<dynamic>> availableInlineActions(); - +void onSelectItem(); - +void onNewItem(); - +ScreenerQuestionFormRouteArgs buildNewScreenerQuestionFormRouteArgs(); - +ScreenerQuestionFormRouteArgs buildScreenerQuestionFormRouteArgs(); - +ConsentItemFormRouteArgs buildNewConsentItemFormRouteArgs(); - +ConsentItemFormRouteArgs buildConsentItemFormRouteArgs(); - +dynamic testScreener(); - +dynamic testConsent(); - +ScreenerQuestionFormViewModel provideQuestionFormViewModel() - ] - - [EnrollmentFormViewModel]o-[Study] - [EnrollmentFormViewModel]o-[GoRouter] - [EnrollmentFormViewModel]o-[EnrollmentFormConsentItemDelegate] - [EnrollmentFormViewModel]o-[FormControl] - [EnrollmentFormViewModel]o-[FormArray] - [EnrollmentFormViewModel]o-[FormViewModelCollection] - [EnrollmentFormViewModel]o-[FormGroup] - [<abstract>FormViewModel]<:-[EnrollmentFormViewModel] - [<abstract>WithQuestionnaireControls]<:-[EnrollmentFormViewModel] - [<abstract>IFormViewModelDelegate]<:--[EnrollmentFormViewModel] - [<abstract>IListActionProvider]<:--[EnrollmentFormViewModel] - [<abstract>IProviderArgsResolver]<:--[EnrollmentFormViewModel] - - [EnrollmentFormConsentItemDelegate - | - +formViewModels: FormViewModelCollection<ConsentItemFormViewModel, ConsentItemFormData>; - +owner: EnrollmentFormViewModel; - +propagateOnSave: bool; - +validationSet: dynamic - | - +void onCancel(); - +dynamic onSave(); - +ConsentItemFormViewModel provide(); - +List<ModelAction<dynamic>> availableActions(); - +void onNewItem(); - +void onSelectItem() - ] - - [EnrollmentFormConsentItemDelegate]o-[FormViewModelCollection] - [EnrollmentFormConsentItemDelegate]o-[EnrollmentFormViewModel] - [<abstract>IFormViewModelDelegate]<:--[EnrollmentFormConsentItemDelegate] - [<abstract>IListActionProvider]<:--[EnrollmentFormConsentItemDelegate] - [<abstract>IProviderArgsResolver]<:--[EnrollmentFormConsentItemDelegate] - - [ConsentItemFormViewModel - | - +consentIdControl: FormControl<String>; - +titleControl: FormControl<String>; - +descriptionControl: FormControl<String>; - +iconControl: FormControl<IconOption>; - +form: FormGroup; - +consentId: String; - +sharedValidationConfig: Map<FormValidationSetEnum, List<FormControlValidation>>; - +titleRequired: dynamic; - +descriptionRequired: dynamic; - +titles: Map<FormMode, String> - | - +void setControlsFrom(); - +ConsentItemFormData buildFormData(); - +ConsentItemFormViewModel createDuplicate() - ] - - [ConsentItemFormViewModel]o-[FormControl] - [ConsentItemFormViewModel]o-[FormGroup] - [<abstract>ManagedFormViewModel]<:-[ConsentItemFormViewModel] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IScreenerQuestionLogicFormViewModel - - - - - - +isDirtyOptionsBannerVisible: bool - - - - - - - - - - - - - ScreenerQuestionLogicFormView - - - - - - +formViewModel: ScreenerQuestionFormViewModel - - - - - - +Widget build() - -dynamic _buildInfoBanner() - -dynamic _buildAnswerOptionsLogicControls() - -List<Widget> _buildOptionLogicRow() - - - - - - - - - - - - - ScreenerQuestionFormViewModel - - - - - - <static>+defaultResponseOptionValidity: bool - +responseOptionsDisabledArray: FormArray<dynamic> - +responseOptionsLogicControls: FormArray<bool> - +responseOptionsLogicDescriptionControls: FormArray<String> - -_questionBaseControls: Map<String, AbstractControl<dynamic>> - +prevResponseOptionControls: List<AbstractControl<dynamic>> - +prevResponseOptionValues: List<dynamic> - +responseOptionsDisabledControls: List<AbstractControl<dynamic>> - +logicControlOptions: List<FormControlOption<bool>> - +questionBaseControls: Map<String, AbstractControl<dynamic>> - +isDirtyOptionsBannerVisible: bool - - - - - - +dynamic onResponseOptionsChanged() - +void setControlsFrom() - +QuestionFormData buildFormData() - -List<FormControl<dynamic>> _copyFormControls() - -AbstractControl<dynamic>? _findAssociatedLogicControlFor() - -AbstractControl<dynamic>? _findAssociatedControlFor() - +ScreenerQuestionFormViewModel createDuplicate() - - - - - - - - - - - FormConsumerWidget - - - - - - - - - - - - - EnrollmentFormData - - - - - - <static>+kDefaultEnrollmentType: Participation - +enrollmentType: Participation - +questionnaireFormData: QuestionnaireFormData - +consentItemsFormData: List<ConsentItemFormData>? - +id: String - - - - - - +Study apply() - +EnrollmentFormData copy() - - - - - - - - - - - Participation - - - - - - - - - - - QuestionnaireFormData - - - - - - - - - - - IStudyFormData - - - - - - - - - - - - ConsentItemFormView - - - - - - +formViewModel: ConsentItemFormViewModel - - - - - - - - - - - - - ConsentItemFormViewModel - - - - - - +consentIdControl: FormControl<String> - +titleControl: FormControl<String> - +descriptionControl: FormControl<String> - +iconControl: FormControl<IconOption> - +form: FormGroup - +consentId: String - +sharedValidationConfig: Map<FormValidationSetEnum, List<FormControlValidation>> - +titleRequired: dynamic - +descriptionRequired: dynamic - +titles: Map<FormMode, String> - - - - - - +void setControlsFrom() - +ConsentItemFormData buildFormData() - +ConsentItemFormViewModel createDuplicate() - - - - - - - - - - - - - ConsentItemFormData - - - - - - +consentId: String - +title: String - +description: String - +iconName: String? - +id: String - - - - - - +ConsentItem toConsentItem() - +ConsentItemFormData copy() - - - - - - - - - - - IFormData - - - - - - - - - - - - StudyDesignEnrollmentFormView - - - - - - +Widget build() - -dynamic _showScreenerQuestionSidesheetWithArgs() - -dynamic _showConsentItemSidesheetWithArgs() - - - - - - - - - - - StudyDesignPageWidget - - - - - - - - - - - FormArray - - - - - - - - - - - QuestionFormViewModel - - - - - - - - - - - - - EnrollmentFormViewModel - - - - - - +study: Study - +router: GoRouter - +consentItemDelegate: EnrollmentFormConsentItemDelegate - +enrollmentTypeControl: FormControl<Participation> - +consentItemArray: FormArray<dynamic> - +consentItemFormViewModels: FormViewModelCollection<ConsentItemFormViewModel, ConsentItemFormData> - +form: FormGroup - +enrollmentTypeControlOptions: List<FormControlOption<Participation>> - +consentItemModels: List<ConsentItemFormViewModel> - +sharedValidationConfig: Map<FormValidationSetEnum, List<FormControlValidation>> - +titles: Map<FormMode, String> - +canTestScreener: bool - +canTestConsent: bool - +questionTitles: Map<FormMode, String Function()> - - - - - - +void setControlsFrom() - +EnrollmentFormData buildFormData() - +void read() - +List<ModelAction<dynamic>> availableActions() - +List<ModelAction<dynamic>> availablePopupActions() - +List<ModelAction<dynamic>> availableInlineActions() - +void onSelectItem() - +void onNewItem() - +ScreenerQuestionFormRouteArgs buildNewScreenerQuestionFormRouteArgs() - +ScreenerQuestionFormRouteArgs buildScreenerQuestionFormRouteArgs() - +ConsentItemFormRouteArgs buildNewConsentItemFormRouteArgs() - +ConsentItemFormRouteArgs buildConsentItemFormRouteArgs() - +dynamic testScreener() - +dynamic testConsent() - +ScreenerQuestionFormViewModel provideQuestionFormViewModel() - - - - - - - - - - - Study - - - - - - - - - - - GoRouter - - - - - - - - - - - - - EnrollmentFormConsentItemDelegate - - - - - - +formViewModels: FormViewModelCollection<ConsentItemFormViewModel, ConsentItemFormData> - +owner: EnrollmentFormViewModel - +propagateOnSave: bool - +validationSet: dynamic - - - - - - +void onCancel() - +dynamic onSave() - +ConsentItemFormViewModel provide() - +List<ModelAction<dynamic>> availableActions() - +void onNewItem() - +void onSelectItem() - - - - - - - - - - - FormControl - - - - - - - - - - - FormViewModelCollection - - - - - - - - - - - FormGroup - - - - - - - - - - - FormViewModel - - - - - - - - - - - WithQuestionnaireControls - - - - - - - - - - - IFormViewModelDelegate - - - - - - - - - - - IListActionProvider - - - - - - - - - - - IProviderArgsResolver - - - - - - - - - - - ManagedFormViewModel - - - - - - - - - \ No newline at end of file diff --git a/docs/uml/designer_v2/lib/features/design/info/uml.svg b/docs/uml/designer_v2/lib/features/design/info/uml.svg deleted file mode 100644 index 580464fbd..000000000 --- a/docs/uml/designer_v2/lib/features/design/info/uml.svg +++ /dev/null @@ -1,319 +0,0 @@ - - [StudyDesignInfoFormView - | - +Widget build() - ] - - [<abstract>StudyDesignPageWidget]<:-[StudyDesignInfoFormView] - - [StudyInfoFormViewModel - | - +study: Study; - +titleControl: FormControl<String>; - +iconControl: FormControl<IconOption>; - +descriptionControl: FormControl<String>; - +organizationControl: FormControl<String>; - +reviewBoardControl: FormControl<String>; - +reviewBoardNumberControl: FormControl<String>; - +researchersControl: FormControl<String>; - +emailControl: FormControl<String>; - +websiteControl: FormControl<String>; - +phoneControl: FormControl<String>; - +additionalInfoControl: FormControl<String>; - +form: FormGroup; - +titles: Map<FormMode, String>; - +sharedValidationConfig: Map<FormValidationSetEnum, List<FormControlValidation>>; - +titleRequired: dynamic; - +descriptionRequired: dynamic; - +iconRequired: dynamic; - +organizationRequired: dynamic; - +reviewBoardRequired: dynamic; - +reviewBoardNumberRequired: dynamic; - +researchersRequired: dynamic; - +emailRequired: dynamic; - +phoneRequired: dynamic; - +emailFormat: dynamic; - +websiteFormat: dynamic - | - +void setControlsFrom(); - +StudyInfoFormData buildFormData() - ] - - [StudyInfoFormViewModel]o-[Study] - [StudyInfoFormViewModel]o-[FormControl] - [StudyInfoFormViewModel]o-[FormGroup] - [<abstract>FormViewModel]<:-[StudyInfoFormViewModel] - - [StudyInfoFormData - | - +title: String; - +description: String?; - +iconName: String; - +contactInfoFormData: StudyContactInfoFormData; - +id: String - | - +Study apply(); - +StudyInfoFormData copy() - ] - - [StudyInfoFormData]o-[StudyContactInfoFormData] - [<abstract>IStudyFormData]<:--[StudyInfoFormData] - - [StudyContactInfoFormData - | - +organization: String?; - +institutionalReviewBoard: String?; - +institutionalReviewBoardNumber: String?; - +researchers: String?; - +email: String?; - +website: String?; - +phone: String?; - +additionalInfo: String?; - +id: String - | - +Study apply(); - +StudyInfoFormData copy() - ] - - [<abstract>IStudyFormData]<:--[StudyContactInfoFormData] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - StudyDesignInfoFormView - - - - - - +Widget build() - - - - - - - - - - - StudyDesignPageWidget - - - - - - - - - - - - - StudyInfoFormViewModel - - - - - - +study: Study - +titleControl: FormControl<String> - +iconControl: FormControl<IconOption> - +descriptionControl: FormControl<String> - +organizationControl: FormControl<String> - +reviewBoardControl: FormControl<String> - +reviewBoardNumberControl: FormControl<String> - +researchersControl: FormControl<String> - +emailControl: FormControl<String> - +websiteControl: FormControl<String> - +phoneControl: FormControl<String> - +additionalInfoControl: FormControl<String> - +form: FormGroup - +titles: Map<FormMode, String> - +sharedValidationConfig: Map<FormValidationSetEnum, List<FormControlValidation>> - +titleRequired: dynamic - +descriptionRequired: dynamic - +iconRequired: dynamic - +organizationRequired: dynamic - +reviewBoardRequired: dynamic - +reviewBoardNumberRequired: dynamic - +researchersRequired: dynamic - +emailRequired: dynamic - +phoneRequired: dynamic - +emailFormat: dynamic - +websiteFormat: dynamic - - - - - - +void setControlsFrom() - +StudyInfoFormData buildFormData() - - - - - - - - - - - Study - - - - - - - - - - - FormControl - - - - - - - - - - - FormGroup - - - - - - - - - - - FormViewModel - - - - - - - - - - - - - StudyInfoFormData - - - - - - +title: String - +description: String? - +iconName: String - +contactInfoFormData: StudyContactInfoFormData - +id: String - - - - - - +Study apply() - +StudyInfoFormData copy() - - - - - - - - - - - - - StudyContactInfoFormData - - - - - - +organization: String? - +institutionalReviewBoard: String? - +institutionalReviewBoardNumber: String? - +researchers: String? - +email: String? - +website: String? - +phone: String? - +additionalInfo: String? - +id: String - - - - - - +Study apply() - +StudyInfoFormData copy() - - - - - - - - - - - IStudyFormData - - - - - - - - - \ No newline at end of file diff --git a/docs/uml/designer_v2/lib/features/design/interventions/uml.svg b/docs/uml/designer_v2/lib/features/design/interventions/uml.svg deleted file mode 100644 index 21200174f..000000000 --- a/docs/uml/designer_v2/lib/features/design/interventions/uml.svg +++ /dev/null @@ -1,1004 +0,0 @@ - - [InterventionsFormViewModel - | - +study: Study; - +router: GoRouter; - +interventionsArray: FormArray<dynamic>; - +interventionsCollection: FormViewModelCollection<InterventionFormViewModel, InterventionFormData>; - +form: FormGroup; - +sharedValidationConfig: Map<FormValidationSetEnum, List<FormControlValidation>>; - +interventionsRequired: dynamic; - +titles: Map<FormMode, String>; - +canTestStudySchedule: bool - | - +void setControlsFrom(); - +InterventionsFormData buildFormData(); - +void read(); - +List<ModelAction<dynamic>> availableActions(); - +List<ModelAction<dynamic>> availablePopupActions(); - +List<ModelAction<dynamic>> availableInlineActions(); - +void onSelectItem(); - +void onNewItem(); - +InterventionFormViewModel provide(); - +void onCancel(); - +dynamic onSave(); - +dynamic testStudySchedule() - ] - - [InterventionsFormViewModel]o-[Study] - [InterventionsFormViewModel]o-[GoRouter] - [InterventionsFormViewModel]o-[FormArray] - [InterventionsFormViewModel]o-[FormViewModelCollection] - [InterventionsFormViewModel]o-[FormGroup] - [<abstract>FormViewModel]<:-[InterventionsFormViewModel] - [<abstract>StudyScheduleControls]<:-[InterventionsFormViewModel] - [<abstract>IFormViewModelDelegate]<:--[InterventionsFormViewModel] - [<abstract>IListActionProvider]<:--[InterventionsFormViewModel] - [<abstract>IProviderArgsResolver]<:--[InterventionsFormViewModel] - - [InterventionTaskFormViewModel - | - +taskIdControl: FormControl<String>; - +instanceIdControl: FormControl<String>; - +taskTitleControl: FormControl<String>; - +taskDescriptionControl: FormControl<String>; - +markAsCompletedControl: FormControl<bool>; - +form: FormGroup; - +taskId: String; - +instanceId: String; - +sharedValidationConfig: Map<FormValidationSetEnum, List<FormControlValidation>>; - +titleRequired: dynamic; - +titles: Map<FormMode, String> - | - +void setControlsFrom(); - +InterventionTaskFormData buildFormData(); - +InterventionTaskFormViewModel createDuplicate() - ] - - [InterventionTaskFormViewModel]o-[FormControl] - [InterventionTaskFormViewModel]o-[FormGroup] - [<abstract>ManagedFormViewModel]<:-[InterventionTaskFormViewModel] - [<abstract>WithScheduleControls]<:-[InterventionTaskFormViewModel] - - [InterventionPreview - | - +routeArgs: InterventionFormRouteArgs - | - +Widget build() - ] - - [InterventionPreview]o-[InterventionFormRouteArgs] - [<abstract>ConsumerWidget]<:-[InterventionPreview] - - [<abstract>StudyScheduleControls - | - <static>+defaultScheduleType: PhaseSequence; - <static>+defaultScheduleTypeSequence: String; - <static>+defaultNumCycles: int; - <static>+defaultPeriodLength: int; - +sequenceTypeControl: FormControl<PhaseSequence>; - +sequenceTypeCustomControl: FormControl<String>; - +phaseDurationControl: FormControl<int>; - +numCyclesControl: FormControl<int>; - +includeBaselineControl: FormControl<bool>; - +studyScheduleControls: Map<String, FormControl<Object>>; - <static>+kNumCyclesMin: int; - <static>+kNumCyclesMax: int; - <static>+kPhaseDurationMin: int; - <static>+kPhaseDurationMax: int; - +sequenceTypeControlOptions: List<FormControlOption<PhaseSequence>>; - +studyScheduleValidationConfig: Map<FormValidationSetEnum, List<FormControlValidation>>; - +numCyclesRange: dynamic; - +phaseDurationRange: dynamic; - +customSequenceRequired: dynamic - | - +void setStudyScheduleControlsFrom(); - +StudyScheduleFormData buildStudyScheduleFormData(); - +bool isSequencingCustom() - ] - - [<abstract>StudyScheduleControls]o-[PhaseSequence] - [<abstract>StudyScheduleControls]o-[FormControl] - - [InterventionTaskFormView - | - +formViewModel: InterventionTaskFormViewModel - ] - - [InterventionTaskFormView]o-[InterventionTaskFormViewModel] - - [InterventionsFormData - | - +interventionsData: List<InterventionFormData>; - +studyScheduleData: StudyScheduleFormData; - +id: String - | - +Study apply(); - +InterventionsFormData copy() - ] - - [InterventionsFormData]o-[StudyScheduleFormData] - [<abstract>IStudyFormData]<:--[InterventionsFormData] - - [InterventionTaskFormData - | - +taskId: String; - +taskTitle: String; - +taskDescription: String?; - <static>+kDefaultTitle: String; - +id: String - | - +CheckmarkTask toTask(); - +InterventionTaskFormData copy() - ] - - [<abstract>IFormDataWithSchedule]<:-[InterventionTaskFormData] - - [InterventionFormView - | - +formViewModel: InterventionFormViewModel - ] - - [InterventionFormView]o-[InterventionFormViewModel] - - [StudyDesignInterventionsFormView - | - +Widget build() - ] - - [<abstract>StudyDesignPageWidget]<:-[StudyDesignInterventionsFormView] - - [InterventionFormData - | - +interventionId: String; - +title: String; - +description: String?; - +tasksData: List<InterventionTaskFormData>?; - +iconName: String?; - <static>+kDefaultTitle: String; - +id: String - | - +Intervention toIntervention(); - +InterventionFormData copy() - ] - - [<abstract>IFormData]<:-[InterventionFormData] - - [StudyScheduleFormData - | - +sequenceType: PhaseSequence; - +sequenceTypeCustom: String; - +numCycles: int; - +phaseDuration: int; - +includeBaseline: bool; - +id: String - | - +StudySchedule toStudySchedule(); - +Study apply(); - +StudyScheduleFormData copy() - ] - - [StudyScheduleFormData]o-[PhaseSequence] - [<abstract>IStudyFormData]<:--[StudyScheduleFormData] - - [StudyScheduleFormView - | - +formViewModel: StudyScheduleControls - | - -FormTableRow _renderCustomSequence(); - +Widget build() - ] - - [StudyScheduleFormView]o-[<abstract>StudyScheduleControls] - [<abstract>FormConsumerWidget]<:-[StudyScheduleFormView] - - [InterventionFormViewModel - | - +study: Study; - +interventionIdControl: FormControl<String>; - +interventionTitleControl: FormControl<String>; - +interventionIconControl: FormControl<IconOption>; - +interventionDescriptionControl: FormControl<String>; - +interventionTasksArray: FormArray<dynamic>; - +tasksCollection: FormViewModelCollection<InterventionTaskFormViewModel, InterventionTaskFormData>; - +form: FormGroup; - +interventionId: String; - +sharedValidationConfig: Map<FormValidationSetEnum, List<FormControlValidation>>; - +titleRequired: dynamic; - +atLeastOneTask: dynamic; - +breadcrumbsTitle: String; - +titles: Map<FormMode, String> - | - +void setControlsFrom(); - +InterventionFormData buildFormData(); - +List<ModelAction<dynamic>> availableActions(); - +List<ModelAction<dynamic>> availablePopupActions(); - +List<ModelAction<dynamic>> availableInlineActions(); - +void onSelectItem(); - +void onNewItem(); - +void onCancel(); - +dynamic onSave(); - +InterventionTaskFormViewModel provide(); - +InterventionTaskFormRouteArgs buildNewFormRouteArgs(); - +InterventionTaskFormRouteArgs buildFormRouteArgs(); - +InterventionFormViewModel createDuplicate() - ] - - [InterventionFormViewModel]o-[Study] - [InterventionFormViewModel]o-[FormControl] - [InterventionFormViewModel]o-[FormArray] - [InterventionFormViewModel]o-[FormViewModelCollection] - [InterventionFormViewModel]o-[FormGroup] - [<abstract>ManagedFormViewModel]<:-[InterventionFormViewModel] - [<abstract>IFormViewModelDelegate]<:--[InterventionFormViewModel] - [<abstract>IListActionProvider]<:--[InterventionFormViewModel] - [<abstract>IProviderArgsResolver]<:--[InterventionFormViewModel] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - InterventionsFormViewModel - - - - - - +study: Study - +router: GoRouter - +interventionsArray: FormArray<dynamic> - +interventionsCollection: FormViewModelCollection<InterventionFormViewModel, InterventionFormData> - +form: FormGroup - +sharedValidationConfig: Map<FormValidationSetEnum, List<FormControlValidation>> - +interventionsRequired: dynamic - +titles: Map<FormMode, String> - +canTestStudySchedule: bool - - - - - - +void setControlsFrom() - +InterventionsFormData buildFormData() - +void read() - +List<ModelAction<dynamic>> availableActions() - +List<ModelAction<dynamic>> availablePopupActions() - +List<ModelAction<dynamic>> availableInlineActions() - +void onSelectItem() - +void onNewItem() - +InterventionFormViewModel provide() - +void onCancel() - +dynamic onSave() - +dynamic testStudySchedule() - - - - - - - - - - - Study - - - - - - - - - - - GoRouter - - - - - - - - - - - FormArray - - - - - - - - - - - FormViewModelCollection - - - - - - - - - - - FormGroup - - - - - - - - - - - FormViewModel - - - - - - - - - - - - - StudyScheduleControls - - - - - - <static>+defaultScheduleType: PhaseSequence - <static>+defaultScheduleTypeSequence: String - <static>+defaultNumCycles: int - <static>+defaultPeriodLength: int - +sequenceTypeControl: FormControl<PhaseSequence> - +sequenceTypeCustomControl: FormControl<String> - +phaseDurationControl: FormControl<int> - +numCyclesControl: FormControl<int> - +includeBaselineControl: FormControl<bool> - +studyScheduleControls: Map<String, FormControl<Object>> - <static>+kNumCyclesMin: int - <static>+kNumCyclesMax: int - <static>+kPhaseDurationMin: int - <static>+kPhaseDurationMax: int - +sequenceTypeControlOptions: List<FormControlOption<PhaseSequence>> - +studyScheduleValidationConfig: Map<FormValidationSetEnum, List<FormControlValidation>> - +numCyclesRange: dynamic - +phaseDurationRange: dynamic - +customSequenceRequired: dynamic - - - - - - +void setStudyScheduleControlsFrom() - +StudyScheduleFormData buildStudyScheduleFormData() - +bool isSequencingCustom() - - - - - - - - - - - IFormViewModelDelegate - - - - - - - - - - - IListActionProvider - - - - - - - - - - - IProviderArgsResolver - - - - - - - - - - - - - InterventionTaskFormViewModel - - - - - - +taskIdControl: FormControl<String> - +instanceIdControl: FormControl<String> - +taskTitleControl: FormControl<String> - +taskDescriptionControl: FormControl<String> - +markAsCompletedControl: FormControl<bool> - +form: FormGroup - +taskId: String - +instanceId: String - +sharedValidationConfig: Map<FormValidationSetEnum, List<FormControlValidation>> - +titleRequired: dynamic - +titles: Map<FormMode, String> - - - - - - +void setControlsFrom() - +InterventionTaskFormData buildFormData() - +InterventionTaskFormViewModel createDuplicate() - - - - - - - - - - - FormControl - - - - - - - - - - - ManagedFormViewModel - - - - - - - - - - - WithScheduleControls - - - - - - - - - - - - - InterventionPreview - - - - - - +routeArgs: InterventionFormRouteArgs - - - - - - +Widget build() - - - - - - - - - - - InterventionFormRouteArgs - - - - - - - - - - - ConsumerWidget - - - - - - - - - - - PhaseSequence - - - - - - - - - - - - InterventionTaskFormView - - - - - - +formViewModel: InterventionTaskFormViewModel - - - - - - - - - - - - - InterventionsFormData - - - - - - +interventionsData: List<InterventionFormData> - +studyScheduleData: StudyScheduleFormData - +id: String - - - - - - +Study apply() - +InterventionsFormData copy() - - - - - - - - - - - - - StudyScheduleFormData - - - - - - +sequenceType: PhaseSequence - +sequenceTypeCustom: String - +numCycles: int - +phaseDuration: int - +includeBaseline: bool - +id: String - - - - - - +StudySchedule toStudySchedule() - +Study apply() - +StudyScheduleFormData copy() - - - - - - - - - - - IStudyFormData - - - - - - - - - - - - - InterventionTaskFormData - - - - - - +taskId: String - +taskTitle: String - +taskDescription: String? - <static>+kDefaultTitle: String - +id: String - - - - - - +CheckmarkTask toTask() - +InterventionTaskFormData copy() - - - - - - - - - - - IFormDataWithSchedule - - - - - - - - - - - - InterventionFormView - - - - - - +formViewModel: InterventionFormViewModel - - - - - - - - - - - - - InterventionFormViewModel - - - - - - +study: Study - +interventionIdControl: FormControl<String> - +interventionTitleControl: FormControl<String> - +interventionIconControl: FormControl<IconOption> - +interventionDescriptionControl: FormControl<String> - +interventionTasksArray: FormArray<dynamic> - +tasksCollection: FormViewModelCollection<InterventionTaskFormViewModel, InterventionTaskFormData> - +form: FormGroup - +interventionId: String - +sharedValidationConfig: Map<FormValidationSetEnum, List<FormControlValidation>> - +titleRequired: dynamic - +atLeastOneTask: dynamic - +breadcrumbsTitle: String - +titles: Map<FormMode, String> - - - - - - +void setControlsFrom() - +InterventionFormData buildFormData() - +List<ModelAction<dynamic>> availableActions() - +List<ModelAction<dynamic>> availablePopupActions() - +List<ModelAction<dynamic>> availableInlineActions() - +void onSelectItem() - +void onNewItem() - +void onCancel() - +dynamic onSave() - +InterventionTaskFormViewModel provide() - +InterventionTaskFormRouteArgs buildNewFormRouteArgs() - +InterventionTaskFormRouteArgs buildFormRouteArgs() - +InterventionFormViewModel createDuplicate() - - - - - - - - - - - - StudyDesignInterventionsFormView - - - - - - +Widget build() - - - - - - - - - - - StudyDesignPageWidget - - - - - - - - - - - - - InterventionFormData - - - - - - +interventionId: String - +title: String - +description: String? - +tasksData: List<InterventionTaskFormData>? - +iconName: String? - <static>+kDefaultTitle: String - +id: String - - - - - - +Intervention toIntervention() - +InterventionFormData copy() - - - - - - - - - - - IFormData - - - - - - - - - - - - - StudyScheduleFormView - - - - - - +formViewModel: StudyScheduleControls - - - - - - -FormTableRow _renderCustomSequence() - +Widget build() - - - - - - - - - - - FormConsumerWidget - - - - - - - - - \ No newline at end of file diff --git a/docs/uml/designer_v2/lib/features/design/measurements/survey/uml.svg b/docs/uml/designer_v2/lib/features/design/measurements/survey/uml.svg deleted file mode 100644 index 4f64dc548..000000000 --- a/docs/uml/designer_v2/lib/features/design/measurements/survey/uml.svg +++ /dev/null @@ -1,398 +0,0 @@ - - [MeasurementSurveyFormView - | - +formViewModel: MeasurementSurveyFormViewModel - ] - - [MeasurementSurveyFormView]o-[MeasurementSurveyFormViewModel] - - [MeasurementSurveyFormData - | - +measurementId: String; - +title: String; - +introText: String?; - +outroText: String?; - +questionnaireFormData: QuestionnaireFormData; - <static>+kDefaultTitle: String; - +id: String - | - +QuestionnaireTask toQuestionnaireTask(); - +MeasurementSurveyFormData copy() - ] - - [MeasurementSurveyFormData]o-[QuestionnaireFormData] - [<abstract>IFormDataWithSchedule]<:-[MeasurementSurveyFormData] - - [MeasurementSurveyFormViewModel - | - +study: Study; - +measurementIdControl: FormControl<String>; - +instanceIdControl: FormControl<String>; - +surveyTitleControl: FormControl<String>; - +surveyIntroTextControl: FormControl<String>; - +surveyOutroTextControl: FormControl<String>; - +form: FormGroup; - +measurementId: String; - +instanceId: String; - +sharedValidationConfig: Map<FormValidationSetEnum, List<FormControlValidation>>; - +titleRequired: dynamic; - +atLeastOneQuestion: dynamic; - +breadcrumbsTitle: String; - +titles: Map<FormMode, String> - | - +void setControlsFrom(); - +MeasurementSurveyFormData buildFormData(); - +List<ModelAction<dynamic>> availableActions(); - +List<ModelAction<dynamic>> availablePopupActions(); - +List<ModelAction<dynamic>> availableInlineActions(); - +void onSelectItem(); - +void onNewItem(); - +SurveyQuestionFormRouteArgs buildNewFormRouteArgs(); - +SurveyQuestionFormRouteArgs buildFormRouteArgs(); - +MeasurementSurveyFormViewModel createDuplicate() - ] - - [MeasurementSurveyFormViewModel]o-[Study] - [MeasurementSurveyFormViewModel]o-[FormControl] - [MeasurementSurveyFormViewModel]o-[FormGroup] - [<abstract>ManagedFormViewModel]<:-[MeasurementSurveyFormViewModel] - [<abstract>WithQuestionnaireControls]<:-[MeasurementSurveyFormViewModel] - [<abstract>WithScheduleControls]<:-[MeasurementSurveyFormViewModel] - [<abstract>IFormViewModelDelegate]<:--[MeasurementSurveyFormViewModel] - [<abstract>IListActionProvider]<:--[MeasurementSurveyFormViewModel] - [<abstract>IProviderArgsResolver]<:--[MeasurementSurveyFormViewModel] - - [SurveyPreview - | - +routeArgs: MeasurementFormRouteArgs - | - +Widget build() - ] - - [SurveyPreview]o-[MeasurementFormRouteArgs] - [<abstract>ConsumerWidget]<:-[SurveyPreview] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - MeasurementSurveyFormView - - - - - - +formViewModel: MeasurementSurveyFormViewModel - - - - - - - - - - - - - MeasurementSurveyFormViewModel - - - - - - +study: Study - +measurementIdControl: FormControl<String> - +instanceIdControl: FormControl<String> - +surveyTitleControl: FormControl<String> - +surveyIntroTextControl: FormControl<String> - +surveyOutroTextControl: FormControl<String> - +form: FormGroup - +measurementId: String - +instanceId: String - +sharedValidationConfig: Map<FormValidationSetEnum, List<FormControlValidation>> - +titleRequired: dynamic - +atLeastOneQuestion: dynamic - +breadcrumbsTitle: String - +titles: Map<FormMode, String> - - - - - - +void setControlsFrom() - +MeasurementSurveyFormData buildFormData() - +List<ModelAction<dynamic>> availableActions() - +List<ModelAction<dynamic>> availablePopupActions() - +List<ModelAction<dynamic>> availableInlineActions() - +void onSelectItem() - +void onNewItem() - +SurveyQuestionFormRouteArgs buildNewFormRouteArgs() - +SurveyQuestionFormRouteArgs buildFormRouteArgs() - +MeasurementSurveyFormViewModel createDuplicate() - - - - - - - - - - - - - MeasurementSurveyFormData - - - - - - +measurementId: String - +title: String - +introText: String? - +outroText: String? - +questionnaireFormData: QuestionnaireFormData - <static>+kDefaultTitle: String - +id: String - - - - - - +QuestionnaireTask toQuestionnaireTask() - +MeasurementSurveyFormData copy() - - - - - - - - - - - QuestionnaireFormData - - - - - - - - - - - IFormDataWithSchedule - - - - - - - - - - - Study - - - - - - - - - - - FormControl - - - - - - - - - - - FormGroup - - - - - - - - - - - ManagedFormViewModel - - - - - - - - - - - WithQuestionnaireControls - - - - - - - - - - - WithScheduleControls - - - - - - - - - - - IFormViewModelDelegate - - - - - - - - - - - IListActionProvider - - - - - - - - - - - IProviderArgsResolver - - - - - - - - - - - - - SurveyPreview - - - - - - +routeArgs: MeasurementFormRouteArgs - - - - - - +Widget build() - - - - - - - - - - - MeasurementFormRouteArgs - - - - - - - - - - - ConsumerWidget - - - - - - - - - \ No newline at end of file diff --git a/docs/uml/designer_v2/lib/features/design/measurements/uml.svg b/docs/uml/designer_v2/lib/features/design/measurements/uml.svg deleted file mode 100644 index 11d537c95..000000000 --- a/docs/uml/designer_v2/lib/features/design/measurements/uml.svg +++ /dev/null @@ -1,645 +0,0 @@ - - [MeasurementsFormViewModel - | - +study: Study; - +router: GoRouter; - +measurementsArray: FormArray<dynamic>; - +surveyMeasurementFormViewModels: FormViewModelCollection<MeasurementSurveyFormViewModel, MeasurementSurveyFormData>; - +form: FormGroup; - +measurementViewModels: List<MeasurementSurveyFormViewModel>; - +sharedValidationConfig: Map<FormValidationSetEnum, List<FormControlValidation>>; - +measurementRequired: dynamic; - +titles: Map<FormMode, String> - | - +void read(); - +void setControlsFrom(); - +MeasurementsFormData buildFormData(); - +List<ModelAction<dynamic>> availableActions(); - +List<ModelAction<dynamic>> availablePopupActions(); - +List<ModelAction<dynamic>> availableInlineActions(); - +void onSelectItem(); - +void onNewItem(); - +MeasurementSurveyFormViewModel provide(); - +void onCancel(); - +dynamic onSave() - ] - - [MeasurementsFormViewModel]o-[Study] - [MeasurementsFormViewModel]o-[GoRouter] - [MeasurementsFormViewModel]o-[FormArray] - [MeasurementsFormViewModel]o-[FormViewModelCollection] - [MeasurementsFormViewModel]o-[FormGroup] - [<abstract>FormViewModel]<:-[MeasurementsFormViewModel] - [<abstract>IFormViewModelDelegate]<:--[MeasurementsFormViewModel] - [<abstract>IListActionProvider]<:--[MeasurementsFormViewModel] - [<abstract>IProviderArgsResolver]<:--[MeasurementsFormViewModel] - - [StudyDesignMeasurementsFormView - | - +Widget build() - ] - - [<abstract>StudyDesignPageWidget]<:-[StudyDesignMeasurementsFormView] - - [MeasurementsFormData - | - +surveyMeasurements: List<MeasurementSurveyFormData>; - +id: String - | - +Study apply(); - +MeasurementsFormData copy() - ] - - [<abstract>IStudyFormData]<:--[MeasurementsFormData] - - [MeasurementSurveyFormView - | - +formViewModel: MeasurementSurveyFormViewModel - ] - - [MeasurementSurveyFormView]o-[MeasurementSurveyFormViewModel] - - [MeasurementSurveyFormData - | - +measurementId: String; - +title: String; - +introText: String?; - +outroText: String?; - +questionnaireFormData: QuestionnaireFormData; - <static>+kDefaultTitle: String; - +id: String - | - +QuestionnaireTask toQuestionnaireTask(); - +MeasurementSurveyFormData copy() - ] - - [MeasurementSurveyFormData]o-[QuestionnaireFormData] - [<abstract>IFormDataWithSchedule]<:-[MeasurementSurveyFormData] - - [MeasurementSurveyFormViewModel - | - +study: Study; - +measurementIdControl: FormControl<String>; - +instanceIdControl: FormControl<String>; - +surveyTitleControl: FormControl<String>; - +surveyIntroTextControl: FormControl<String>; - +surveyOutroTextControl: FormControl<String>; - +form: FormGroup; - +measurementId: String; - +instanceId: String; - +sharedValidationConfig: Map<FormValidationSetEnum, List<FormControlValidation>>; - +titleRequired: dynamic; - +atLeastOneQuestion: dynamic; - +breadcrumbsTitle: String; - +titles: Map<FormMode, String> - | - +void setControlsFrom(); - +MeasurementSurveyFormData buildFormData(); - +List<ModelAction<dynamic>> availableActions(); - +List<ModelAction<dynamic>> availablePopupActions(); - +List<ModelAction<dynamic>> availableInlineActions(); - +void onSelectItem(); - +void onNewItem(); - +SurveyQuestionFormRouteArgs buildNewFormRouteArgs(); - +SurveyQuestionFormRouteArgs buildFormRouteArgs(); - +MeasurementSurveyFormViewModel createDuplicate() - ] - - [MeasurementSurveyFormViewModel]o-[Study] - [MeasurementSurveyFormViewModel]o-[FormControl] - [MeasurementSurveyFormViewModel]o-[FormGroup] - [<abstract>ManagedFormViewModel]<:-[MeasurementSurveyFormViewModel] - [<abstract>WithQuestionnaireControls]<:-[MeasurementSurveyFormViewModel] - [<abstract>WithScheduleControls]<:-[MeasurementSurveyFormViewModel] - [<abstract>IFormViewModelDelegate]<:--[MeasurementSurveyFormViewModel] - [<abstract>IListActionProvider]<:--[MeasurementSurveyFormViewModel] - [<abstract>IProviderArgsResolver]<:--[MeasurementSurveyFormViewModel] - - [SurveyPreview - | - +routeArgs: MeasurementFormRouteArgs - | - +Widget build() - ] - - [SurveyPreview]o-[MeasurementFormRouteArgs] - [<abstract>ConsumerWidget]<:-[SurveyPreview] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - MeasurementsFormViewModel - - - - - - +study: Study - +router: GoRouter - +measurementsArray: FormArray<dynamic> - +surveyMeasurementFormViewModels: FormViewModelCollection<MeasurementSurveyFormViewModel, MeasurementSurveyFormData> - +form: FormGroup - +measurementViewModels: List<MeasurementSurveyFormViewModel> - +sharedValidationConfig: Map<FormValidationSetEnum, List<FormControlValidation>> - +measurementRequired: dynamic - +titles: Map<FormMode, String> - - - - - - +void read() - +void setControlsFrom() - +MeasurementsFormData buildFormData() - +List<ModelAction<dynamic>> availableActions() - +List<ModelAction<dynamic>> availablePopupActions() - +List<ModelAction<dynamic>> availableInlineActions() - +void onSelectItem() - +void onNewItem() - +MeasurementSurveyFormViewModel provide() - +void onCancel() - +dynamic onSave() - - - - - - - - - - - Study - - - - - - - - - - - GoRouter - - - - - - - - - - - FormArray - - - - - - - - - - - FormViewModelCollection - - - - - - - - - - - FormGroup - - - - - - - - - - - FormViewModel - - - - - - - - - - - IFormViewModelDelegate - - - - - - - - - - - IListActionProvider - - - - - - - - - - - IProviderArgsResolver - - - - - - - - - - - - StudyDesignMeasurementsFormView - - - - - - +Widget build() - - - - - - - - - - - StudyDesignPageWidget - - - - - - - - - - - - - MeasurementsFormData - - - - - - +surveyMeasurements: List<MeasurementSurveyFormData> - +id: String - - - - - - +Study apply() - +MeasurementsFormData copy() - - - - - - - - - - - IStudyFormData - - - - - - - - - - - - MeasurementSurveyFormView - - - - - - +formViewModel: MeasurementSurveyFormViewModel - - - - - - - - - - - - - MeasurementSurveyFormViewModel - - - - - - +study: Study - +measurementIdControl: FormControl<String> - +instanceIdControl: FormControl<String> - +surveyTitleControl: FormControl<String> - +surveyIntroTextControl: FormControl<String> - +surveyOutroTextControl: FormControl<String> - +form: FormGroup - +measurementId: String - +instanceId: String - +sharedValidationConfig: Map<FormValidationSetEnum, List<FormControlValidation>> - +titleRequired: dynamic - +atLeastOneQuestion: dynamic - +breadcrumbsTitle: String - +titles: Map<FormMode, String> - - - - - - +void setControlsFrom() - +MeasurementSurveyFormData buildFormData() - +List<ModelAction<dynamic>> availableActions() - +List<ModelAction<dynamic>> availablePopupActions() - +List<ModelAction<dynamic>> availableInlineActions() - +void onSelectItem() - +void onNewItem() - +SurveyQuestionFormRouteArgs buildNewFormRouteArgs() - +SurveyQuestionFormRouteArgs buildFormRouteArgs() - +MeasurementSurveyFormViewModel createDuplicate() - - - - - - - - - - - - - MeasurementSurveyFormData - - - - - - +measurementId: String - +title: String - +introText: String? - +outroText: String? - +questionnaireFormData: QuestionnaireFormData - <static>+kDefaultTitle: String - +id: String - - - - - - +QuestionnaireTask toQuestionnaireTask() - +MeasurementSurveyFormData copy() - - - - - - - - - - - QuestionnaireFormData - - - - - - - - - - - IFormDataWithSchedule - - - - - - - - - - - FormControl - - - - - - - - - - - ManagedFormViewModel - - - - - - - - - - - WithQuestionnaireControls - - - - - - - - - - - WithScheduleControls - - - - - - - - - - - - - SurveyPreview - - - - - - +routeArgs: MeasurementFormRouteArgs - - - - - - +Widget build() - - - - - - - - - - - MeasurementFormRouteArgs - - - - - - - - - - - ConsumerWidget - - - - - - - - - \ No newline at end of file diff --git a/docs/uml/designer_v2/lib/features/design/reports/section/types/uml.svg b/docs/uml/designer_v2/lib/features/design/reports/section/types/uml.svg deleted file mode 100644 index 023bcc555..000000000 --- a/docs/uml/designer_v2/lib/features/design/reports/section/types/uml.svg +++ /dev/null @@ -1,446 +0,0 @@ - - [TemporalAggregationFormatted - | - -_value: TemporalAggregation; - <static>+values: List<TemporalAggregationFormatted>; - +value: TemporalAggregation; - +string: String; - +icon: IconData?; - +hashCode: int - | - +bool ==(); - +String toString(); - +String toJson(); - <static>+TemporalAggregationFormatted fromJson() - ] - - [TemporalAggregationFormatted]o-[TemporalAggregation] - [TemporalAggregationFormatted]o-[IconData] - - [ImprovementDirectionFormatted - | - -_value: ImprovementDirection; - <static>+values: List<ImprovementDirectionFormatted>; - +value: ImprovementDirection; - +string: String; - +icon: IconData?; - +hashCode: int - | - +bool ==(); - +String toString(); - +String toJson(); - <static>+ImprovementDirectionFormatted fromJson() - ] - - [ImprovementDirectionFormatted]o-[ImprovementDirection] - [ImprovementDirectionFormatted]o-[IconData] - - [ReportSectionType - | - +index: int; - <static>+values: List<ReportSectionType>; - <static>+average: ReportSectionType; - <static>+linearRegression: ReportSectionType - ] - - [ReportSectionType]o-[ReportSectionType] - [Enum]<:--[ReportSectionType] - - [DataReferenceIdentifier - | - +hashCode: int - | - +bool ==() - ] - - [DataReference]<:-[DataReferenceIdentifier] - - [DataReferenceEditor - | - +formControl: FormControl<DataReferenceIdentifier<T>>; - +availableTasks: List<Task>; - +buildReactiveDropdownField: ReactiveDropdownField<dynamic> - | - +FormTableRow buildFormTableRow(); - -List<DropdownMenuItem<DataReferenceIdentifier<dynamic>>> _dataReferenceItems() - ] - - [DataReferenceEditor]o-[FormControl] - [DataReferenceEditor]o-[ReactiveDropdownField] - - [AverageSectionFormView - | - +formViewModel: ReportItemFormViewModel; - +studyId: String; - +reportSectionColumnWidth: Map<int, TableColumnWidth> - | - +Widget build() - ] - - [AverageSectionFormView]o-[ReportItemFormViewModel] - [<abstract>ConsumerWidget]<:-[AverageSectionFormView] - - [LinearRegressionSectionFormView - | - +formViewModel: ReportItemFormViewModel; - +studyId: String; - +reportSectionColumnWidth: Map<int, TableColumnWidth> - | - +Widget build() - ] - - [LinearRegressionSectionFormView]o-[ReportItemFormViewModel] - [<abstract>ConsumerWidget]<:-[LinearRegressionSectionFormView] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - TemporalAggregationFormatted - - - - - - -_value: TemporalAggregation - <static>+values: List<TemporalAggregationFormatted> - +value: TemporalAggregation - +string: String - +icon: IconData? - +hashCode: int - - - - - - +bool ==() - +String toString() - +String toJson() - <static>+TemporalAggregationFormatted fromJson() - - - - - - - - - - - TemporalAggregation - - - - - - - - - - - IconData - - - - - - - - - - - - - ImprovementDirectionFormatted - - - - - - -_value: ImprovementDirection - <static>+values: List<ImprovementDirectionFormatted> - +value: ImprovementDirection - +string: String - +icon: IconData? - +hashCode: int - - - - - - +bool ==() - +String toString() - +String toJson() - <static>+ImprovementDirectionFormatted fromJson() - - - - - - - - - - - ImprovementDirection - - - - - - - - - - - - ReportSectionType - - - - - - +index: int - <static>+values: List<ReportSectionType> - <static>+average: ReportSectionType - <static>+linearRegression: ReportSectionType - - - - - - - - - - - Enum - - - - - - - - - - - - - DataReferenceIdentifier - - - - - - +hashCode: int - - - - - - +bool ==() - - - - - - - - - - - DataReference - - - - - - - - - - - - - DataReferenceEditor - - - - - - +formControl: FormControl<DataReferenceIdentifier<T>> - +availableTasks: List<Task> - +buildReactiveDropdownField: ReactiveDropdownField<dynamic> - - - - - - +FormTableRow buildFormTableRow() - -List<DropdownMenuItem<DataReferenceIdentifier<dynamic>>> _dataReferenceItems() - - - - - - - - - - - FormControl - - - - - - - - - - - ReactiveDropdownField - - - - - - - - - - - - - AverageSectionFormView - - - - - - +formViewModel: ReportItemFormViewModel - +studyId: String - +reportSectionColumnWidth: Map<int, TableColumnWidth> - - - - - - +Widget build() - - - - - - - - - - - ReportItemFormViewModel - - - - - - - - - - - ConsumerWidget - - - - - - - - - - - - - LinearRegressionSectionFormView - - - - - - +formViewModel: ReportItemFormViewModel - +studyId: String - +reportSectionColumnWidth: Map<int, TableColumnWidth> - - - - - - +Widget build() - - - - - - - - - \ No newline at end of file diff --git a/docs/uml/designer_v2/lib/features/design/reports/section/uml.svg b/docs/uml/designer_v2/lib/features/design/reports/section/uml.svg deleted file mode 100644 index 61458f4da..000000000 --- a/docs/uml/designer_v2/lib/features/design/reports/section/uml.svg +++ /dev/null @@ -1,705 +0,0 @@ - - [ReportItemFormView - | - +formViewModel: ReportItemFormViewModel; - +studyId: String; - +reportSectionColumnWidth: dynamic; - +sectionTypeBodyBuilder: Widget Function(BuildContext) - | - +Widget build(); - -dynamic _buildSectionText(); - -dynamic _buildSectionTypeHeader() - ] - - [ReportItemFormView]o-[ReportItemFormViewModel] - [ReportItemFormView]o-[Widget Function(BuildContext)] - - [TemporalAggregationFormatted - | - -_value: TemporalAggregation; - <static>+values: List<TemporalAggregationFormatted>; - +value: TemporalAggregation; - +string: String; - +icon: IconData?; - +hashCode: int - | - +bool ==(); - +String toString(); - +String toJson(); - <static>+TemporalAggregationFormatted fromJson() - ] - - [TemporalAggregationFormatted]o-[TemporalAggregation] - [TemporalAggregationFormatted]o-[IconData] - - [ImprovementDirectionFormatted - | - -_value: ImprovementDirection; - <static>+values: List<ImprovementDirectionFormatted>; - +value: ImprovementDirection; - +string: String; - +icon: IconData?; - +hashCode: int - | - +bool ==(); - +String toString(); - +String toJson(); - <static>+ImprovementDirectionFormatted fromJson() - ] - - [ImprovementDirectionFormatted]o-[ImprovementDirection] - [ImprovementDirectionFormatted]o-[IconData] - - [ReportSectionType - | - +index: int; - <static>+values: List<ReportSectionType>; - <static>+average: ReportSectionType; - <static>+linearRegression: ReportSectionType - ] - - [ReportSectionType]o-[ReportSectionType] - [Enum]<:--[ReportSectionType] - - [DataReferenceIdentifier - | - +hashCode: int - | - +bool ==() - ] - - [DataReference]<:-[DataReferenceIdentifier] - - [DataReferenceEditor - | - +formControl: FormControl<DataReferenceIdentifier<T>>; - +availableTasks: List<Task>; - +buildReactiveDropdownField: ReactiveDropdownField<dynamic> - | - +FormTableRow buildFormTableRow(); - -List<DropdownMenuItem<DataReferenceIdentifier<dynamic>>> _dataReferenceItems() - ] - - [DataReferenceEditor]o-[FormControl] - [DataReferenceEditor]o-[ReactiveDropdownField] - - [AverageSectionFormView - | - +formViewModel: ReportItemFormViewModel; - +studyId: String; - +reportSectionColumnWidth: Map<int, TableColumnWidth> - | - +Widget build() - ] - - [AverageSectionFormView]o-[ReportItemFormViewModel] - [<abstract>ConsumerWidget]<:-[AverageSectionFormView] - - [LinearRegressionSectionFormView - | - +formViewModel: ReportItemFormViewModel; - +studyId: String; - +reportSectionColumnWidth: Map<int, TableColumnWidth> - | - +Widget build() - ] - - [LinearRegressionSectionFormView]o-[ReportItemFormViewModel] - [<abstract>ConsumerWidget]<:-[LinearRegressionSectionFormView] - - [ReportItemFormData - | - +isPrimary: bool; - +section: ReportSection; - +id: String - | - <static>+dynamic fromDomainModel(); - +ReportItemFormData copy() - ] - - [ReportItemFormData]o-[<abstract>ReportSection] - [<abstract>IFormData]<:-[ReportItemFormData] - - [ReportItemFormViewModel - | - <static>+defaultSectionType: ReportSectionType; - +sectionIdControl: FormControl<String>; - +sectionTypeControl: FormControl<ReportSectionType>; - +titleControl: FormControl<String>; - +descriptionControl: FormControl<String>; - +sectionControl: FormControl<ReportSection>; - +dataReferenceControl: FormControl<DataReferenceIdentifier<num>>; - +temporalAggregationControl: FormControl<TemporalAggregationFormatted>; - +improvementDirectionControl: FormControl<ImprovementDirectionFormatted>; - +alphaControl: FormControl<double>; - -_controlsBySectionType: Map<ReportSectionType, FormGroup>; - -_sharedValidationConfig: Map<FormValidationSetEnum, List<FormControlValidation>>; - -_validationConfigsBySectionType: Map<ReportSectionType, Map<FormValidationSetEnum, List<FormControlValidation>>>; - +sectionBaseControls: Map<String, AbstractControl<dynamic>>; - +form: FormGroup; - +sectionId: String; - +sectionType: ReportSectionType; - <static>+sectionTypeControlOptions: List<FormControlOption<ReportSectionType>>; - <static>+temporalAggregationControlOptions: List<FormControlOption<TemporalAggregationFormatted>>; - <static>+improvementDirectionControlOptions: List<FormControlOption<ImprovementDirectionFormatted>>; - +titles: Map<FormMode, String>; - +sharedValidationConfig: Map<FormValidationSetEnum, List<FormControlValidation>>; - +titleRequired: dynamic; - +descriptionRequired: dynamic; - +dataReferenceRequired: dynamic; - +aggregationRequired: dynamic; - +improvementDirectionRequired: dynamic; - +alphaConfidenceRequired: dynamic - | - -List<FormControlValidation> _getValidationConfig(); - +ReportItemFormData buildFormData(); - +ReportItemFormViewModel createDuplicate(); - +dynamic onSectionTypeChanged(); - -void _updateFormControls(); - +void setControlsFrom() - ] - - [ReportItemFormViewModel]o-[ReportSectionType] - [ReportItemFormViewModel]o-[FormControl] - [ReportItemFormViewModel]o-[FormGroup] - [<abstract>ManagedFormViewModel]<:-[ReportItemFormViewModel] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ReportItemFormView - - - - - - +formViewModel: ReportItemFormViewModel - +studyId: String - +reportSectionColumnWidth: dynamic - +sectionTypeBodyBuilder: Widget Function(BuildContext) - - - - - - +Widget build() - -dynamic _buildSectionText() - -dynamic _buildSectionTypeHeader() - - - - - - - - - - - - - ReportItemFormViewModel - - - - - - <static>+defaultSectionType: ReportSectionType - +sectionIdControl: FormControl<String> - +sectionTypeControl: FormControl<ReportSectionType> - +titleControl: FormControl<String> - +descriptionControl: FormControl<String> - +sectionControl: FormControl<ReportSection> - +dataReferenceControl: FormControl<DataReferenceIdentifier<num>> - +temporalAggregationControl: FormControl<TemporalAggregationFormatted> - +improvementDirectionControl: FormControl<ImprovementDirectionFormatted> - +alphaControl: FormControl<double> - -_controlsBySectionType: Map<ReportSectionType, FormGroup> - -_sharedValidationConfig: Map<FormValidationSetEnum, List<FormControlValidation>> - -_validationConfigsBySectionType: Map<ReportSectionType, Map<FormValidationSetEnum, List<FormControlValidation>>> - +sectionBaseControls: Map<String, AbstractControl<dynamic>> - +form: FormGroup - +sectionId: String - +sectionType: ReportSectionType - <static>+sectionTypeControlOptions: List<FormControlOption<ReportSectionType>> - <static>+temporalAggregationControlOptions: List<FormControlOption<TemporalAggregationFormatted>> - <static>+improvementDirectionControlOptions: List<FormControlOption<ImprovementDirectionFormatted>> - +titles: Map<FormMode, String> - +sharedValidationConfig: Map<FormValidationSetEnum, List<FormControlValidation>> - +titleRequired: dynamic - +descriptionRequired: dynamic - +dataReferenceRequired: dynamic - +aggregationRequired: dynamic - +improvementDirectionRequired: dynamic - +alphaConfidenceRequired: dynamic - - - - - - -List<FormControlValidation> _getValidationConfig() - +ReportItemFormData buildFormData() - +ReportItemFormViewModel createDuplicate() - +dynamic onSectionTypeChanged() - -void _updateFormControls() - +void setControlsFrom() - - - - - - - - - - - Widget Function(BuildContext) - - - - - - - - - - - - - TemporalAggregationFormatted - - - - - - -_value: TemporalAggregation - <static>+values: List<TemporalAggregationFormatted> - +value: TemporalAggregation - +string: String - +icon: IconData? - +hashCode: int - - - - - - +bool ==() - +String toString() - +String toJson() - <static>+TemporalAggregationFormatted fromJson() - - - - - - - - - - - TemporalAggregation - - - - - - - - - - - IconData - - - - - - - - - - - - - ImprovementDirectionFormatted - - - - - - -_value: ImprovementDirection - <static>+values: List<ImprovementDirectionFormatted> - +value: ImprovementDirection - +string: String - +icon: IconData? - +hashCode: int - - - - - - +bool ==() - +String toString() - +String toJson() - <static>+ImprovementDirectionFormatted fromJson() - - - - - - - - - - - ImprovementDirection - - - - - - - - - - - - ReportSectionType - - - - - - +index: int - <static>+values: List<ReportSectionType> - <static>+average: ReportSectionType - <static>+linearRegression: ReportSectionType - - - - - - - - - - - Enum - - - - - - - - - - - - - DataReferenceIdentifier - - - - - - +hashCode: int - - - - - - +bool ==() - - - - - - - - - - - DataReference - - - - - - - - - - - - - DataReferenceEditor - - - - - - +formControl: FormControl<DataReferenceIdentifier<T>> - +availableTasks: List<Task> - +buildReactiveDropdownField: ReactiveDropdownField<dynamic> - - - - - - +FormTableRow buildFormTableRow() - -List<DropdownMenuItem<DataReferenceIdentifier<dynamic>>> _dataReferenceItems() - - - - - - - - - - - FormControl - - - - - - - - - - - ReactiveDropdownField - - - - - - - - - - - - - AverageSectionFormView - - - - - - +formViewModel: ReportItemFormViewModel - +studyId: String - +reportSectionColumnWidth: Map<int, TableColumnWidth> - - - - - - +Widget build() - - - - - - - - - - - ConsumerWidget - - - - - - - - - - - - - LinearRegressionSectionFormView - - - - - - +formViewModel: ReportItemFormViewModel - +studyId: String - +reportSectionColumnWidth: Map<int, TableColumnWidth> - - - - - - +Widget build() - - - - - - - - - - - - - ReportItemFormData - - - - - - +isPrimary: bool - +section: ReportSection - +id: String - - - - - - <static>+dynamic fromDomainModel() - +ReportItemFormData copy() - - - - - - - - - - - ReportSection - - - - - - - - - - - IFormData - - - - - - - - - - - FormGroup - - - - - - - - - - - ManagedFormViewModel - - - - - - - - - \ No newline at end of file diff --git a/docs/uml/designer_v2/lib/features/design/reports/uml.svg b/docs/uml/designer_v2/lib/features/design/reports/uml.svg deleted file mode 100644 index c1d5b37ce..000000000 --- a/docs/uml/designer_v2/lib/features/design/reports/uml.svg +++ /dev/null @@ -1,1170 +0,0 @@ - - [ReportBadge - | - +status: ReportStatus?; - +type: BadgeType; - +showPrefixIcon: bool; - +showTooltip: bool - | - +Widget build() - ] - - [ReportBadge]o-[ReportStatus] - [ReportBadge]o-[BadgeType] - - [ReportsFormViewModel - | - +study: Study; - +router: GoRouter; - +reportItemDelegate: ReportFormItemDelegate; - +reportItemArray: FormArray<dynamic>; - +reportItemFormViewModels: FormViewModelCollection<ReportItemFormViewModel, ReportItemFormData>; - +form: FormGroup; - +reportItemModels: List<ReportItemFormViewModel>; - +sharedValidationConfig: Map<FormValidationSetEnum, List<FormControlValidation>>; - +titles: Map<FormMode, String>; - +canTestConsent: bool - | - +void setControlsFrom(); - +ReportsFormData buildFormData(); - +void read(); - +ReportItemFormRouteArgs buildNewReportItemFormRouteArgs(); - +ReportItemFormRouteArgs buildReportItemFormRouteArgs(); - +dynamic testReport(); - +void onCancel(); - +dynamic onSave(); - +ReportItemFormViewModel provide() - ] - - [ReportsFormViewModel]o-[Study] - [ReportsFormViewModel]o-[GoRouter] - [ReportsFormViewModel]o-[ReportFormItemDelegate] - [ReportsFormViewModel]o-[FormArray] - [ReportsFormViewModel]o-[FormViewModelCollection] - [ReportsFormViewModel]o-[FormGroup] - [<abstract>FormViewModel]<:-[ReportsFormViewModel] - [<abstract>IFormViewModelDelegate]<:--[ReportsFormViewModel] - [<abstract>IProviderArgsResolver]<:--[ReportsFormViewModel] - - [ReportFormItemDelegate - | - +formViewModelCollection: FormViewModelCollection<ReportItemFormViewModel, ReportItemFormData>; - +owner: ReportsFormViewModel; - +propagateOnSave: bool; - +validationSet: dynamic - | - +void onCancel(); - +dynamic onSave(); - +ReportItemFormViewModel provide(); - +List<ModelAction<dynamic>> availableActions(); - +void onNewItem(); - +void onSelectItem() - ] - - [ReportFormItemDelegate]o-[FormViewModelCollection] - [ReportFormItemDelegate]o-[ReportsFormViewModel] - [<abstract>IFormViewModelDelegate]<:--[ReportFormItemDelegate] - [<abstract>IListActionProvider]<:--[ReportFormItemDelegate] - [<abstract>IProviderArgsResolver]<:--[ReportFormItemDelegate] - - [StudyDesignReportsFormView - | - +Widget build(); - -dynamic _showReportItemSidesheetWithArgs() - ] - - [<abstract>StudyDesignPageWidget]<:-[StudyDesignReportsFormView] - - [ReportsFormData - | - +reportItems: List<ReportItemFormData>; - +id: String - | - +Study apply(); - +ReportsFormData copy() - ] - - [<abstract>IStudyFormData]<:--[ReportsFormData] - - [ReportStatus - | - +index: int; - <static>+values: List<ReportStatus>; - <static>+primary: ReportStatus; - <static>+secondary: ReportStatus - ] - - [ReportStatus]o-[ReportStatus] - [Enum]<:--[ReportStatus] - - [ReportItemFormViewModel - | - <static>+defaultSectionType: ReportSectionType; - +sectionIdControl: FormControl<String>; - +sectionTypeControl: FormControl<ReportSectionType>; - +titleControl: FormControl<String>; - +descriptionControl: FormControl<String>; - +sectionControl: FormControl<ReportSection>; - +dataReferenceControl: FormControl<DataReferenceIdentifier<num>>; - +temporalAggregationControl: FormControl<TemporalAggregationFormatted>; - +improvementDirectionControl: FormControl<ImprovementDirectionFormatted>; - +alphaControl: FormControl<double>; - -_controlsBySectionType: Map<ReportSectionType, FormGroup>; - -_sharedValidationConfig: Map<FormValidationSetEnum, List<FormControlValidation>>; - -_validationConfigsBySectionType: Map<ReportSectionType, Map<FormValidationSetEnum, List<FormControlValidation>>>; - +sectionBaseControls: Map<String, AbstractControl<dynamic>>; - +form: FormGroup; - +sectionId: String; - +sectionType: ReportSectionType; - <static>+sectionTypeControlOptions: List<FormControlOption<ReportSectionType>>; - <static>+temporalAggregationControlOptions: List<FormControlOption<TemporalAggregationFormatted>>; - <static>+improvementDirectionControlOptions: List<FormControlOption<ImprovementDirectionFormatted>>; - +titles: Map<FormMode, String>; - +sharedValidationConfig: Map<FormValidationSetEnum, List<FormControlValidation>>; - +titleRequired: dynamic; - +descriptionRequired: dynamic; - +dataReferenceRequired: dynamic; - +aggregationRequired: dynamic; - +improvementDirectionRequired: dynamic; - +alphaConfidenceRequired: dynamic - | - -List<FormControlValidation> _getValidationConfig(); - +ReportItemFormData buildFormData(); - +ReportItemFormViewModel createDuplicate(); - +dynamic onSectionTypeChanged(); - -void _updateFormControls(); - +void setControlsFrom() - ] - - [ReportItemFormViewModel]o-[ReportSectionType] - [ReportItemFormViewModel]o-[FormControl] - [ReportItemFormViewModel]o-[FormGroup] - [<abstract>ManagedFormViewModel]<:-[ReportItemFormViewModel] - - [ReportItemFormData - | - +isPrimary: bool; - +section: ReportSection; - +id: String - | - <static>+dynamic fromDomainModel(); - +ReportItemFormData copy() - ] - - [ReportItemFormData]o-[<abstract>ReportSection] - [<abstract>IFormData]<:-[ReportItemFormData] - - [ReportItemFormView - | - +formViewModel: ReportItemFormViewModel; - +studyId: String; - +reportSectionColumnWidth: dynamic; - +sectionTypeBodyBuilder: Widget Function(BuildContext) - | - +Widget build(); - -dynamic _buildSectionText(); - -dynamic _buildSectionTypeHeader() - ] - - [ReportItemFormView]o-[ReportItemFormViewModel] - [ReportItemFormView]o-[Widget Function(BuildContext)] - - [TemporalAggregationFormatted - | - -_value: TemporalAggregation; - <static>+values: List<TemporalAggregationFormatted>; - +value: TemporalAggregation; - +string: String; - +icon: IconData?; - +hashCode: int - | - +bool ==(); - +String toString(); - +String toJson(); - <static>+TemporalAggregationFormatted fromJson() - ] - - [TemporalAggregationFormatted]o-[TemporalAggregation] - [TemporalAggregationFormatted]o-[IconData] - - [ImprovementDirectionFormatted - | - -_value: ImprovementDirection; - <static>+values: List<ImprovementDirectionFormatted>; - +value: ImprovementDirection; - +string: String; - +icon: IconData?; - +hashCode: int - | - +bool ==(); - +String toString(); - +String toJson(); - <static>+ImprovementDirectionFormatted fromJson() - ] - - [ImprovementDirectionFormatted]o-[ImprovementDirection] - [ImprovementDirectionFormatted]o-[IconData] - - [ReportSectionType - | - +index: int; - <static>+values: List<ReportSectionType>; - <static>+average: ReportSectionType; - <static>+linearRegression: ReportSectionType - ] - - [ReportSectionType]o-[ReportSectionType] - [Enum]<:--[ReportSectionType] - - [DataReferenceIdentifier - | - +hashCode: int - | - +bool ==() - ] - - [DataReference]<:-[DataReferenceIdentifier] - - [LinearRegressionSectionFormView - | - +formViewModel: ReportItemFormViewModel; - +studyId: String; - +reportSectionColumnWidth: Map<int, TableColumnWidth> - | - +Widget build() - ] - - [LinearRegressionSectionFormView]o-[ReportItemFormViewModel] - [<abstract>ConsumerWidget]<:-[LinearRegressionSectionFormView] - - [DataReferenceEditor - | - +formControl: FormControl<DataReferenceIdentifier<T>>; - +availableTasks: List<Task>; - +buildReactiveDropdownField: ReactiveDropdownField<dynamic> - | - +FormTableRow buildFormTableRow(); - -List<DropdownMenuItem<DataReferenceIdentifier<dynamic>>> _dataReferenceItems() - ] - - [DataReferenceEditor]o-[FormControl] - [DataReferenceEditor]o-[ReactiveDropdownField] - - [AverageSectionFormView - | - +formViewModel: ReportItemFormViewModel; - +studyId: String; - +reportSectionColumnWidth: Map<int, TableColumnWidth> - | - +Widget build() - ] - - [AverageSectionFormView]o-[ReportItemFormViewModel] - [<abstract>ConsumerWidget]<:-[AverageSectionFormView] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ReportBadge - - - - - - +status: ReportStatus? - +type: BadgeType - +showPrefixIcon: bool - +showTooltip: bool - - - - - - +Widget build() - - - - - - - - - - - - ReportStatus - - - - - - +index: int - <static>+values: List<ReportStatus> - <static>+primary: ReportStatus - <static>+secondary: ReportStatus - - - - - - - - - - - BadgeType - - - - - - - - - - - - - ReportsFormViewModel - - - - - - +study: Study - +router: GoRouter - +reportItemDelegate: ReportFormItemDelegate - +reportItemArray: FormArray<dynamic> - +reportItemFormViewModels: FormViewModelCollection<ReportItemFormViewModel, ReportItemFormData> - +form: FormGroup - +reportItemModels: List<ReportItemFormViewModel> - +sharedValidationConfig: Map<FormValidationSetEnum, List<FormControlValidation>> - +titles: Map<FormMode, String> - +canTestConsent: bool - - - - - - +void setControlsFrom() - +ReportsFormData buildFormData() - +void read() - +ReportItemFormRouteArgs buildNewReportItemFormRouteArgs() - +ReportItemFormRouteArgs buildReportItemFormRouteArgs() - +dynamic testReport() - +void onCancel() - +dynamic onSave() - +ReportItemFormViewModel provide() - - - - - - - - - - - Study - - - - - - - - - - - GoRouter - - - - - - - - - - - - - ReportFormItemDelegate - - - - - - +formViewModelCollection: FormViewModelCollection<ReportItemFormViewModel, ReportItemFormData> - +owner: ReportsFormViewModel - +propagateOnSave: bool - +validationSet: dynamic - - - - - - +void onCancel() - +dynamic onSave() - +ReportItemFormViewModel provide() - +List<ModelAction<dynamic>> availableActions() - +void onNewItem() - +void onSelectItem() - - - - - - - - - - - FormArray - - - - - - - - - - - FormViewModelCollection - - - - - - - - - - - FormGroup - - - - - - - - - - - FormViewModel - - - - - - - - - - - IFormViewModelDelegate - - - - - - - - - - - IProviderArgsResolver - - - - - - - - - - - IListActionProvider - - - - - - - - - - - - StudyDesignReportsFormView - - - - - - +Widget build() - -dynamic _showReportItemSidesheetWithArgs() - - - - - - - - - - - StudyDesignPageWidget - - - - - - - - - - - - - ReportsFormData - - - - - - +reportItems: List<ReportItemFormData> - +id: String - - - - - - +Study apply() - +ReportsFormData copy() - - - - - - - - - - - IStudyFormData - - - - - - - - - - - Enum - - - - - - - - - - - - - ReportItemFormViewModel - - - - - - <static>+defaultSectionType: ReportSectionType - +sectionIdControl: FormControl<String> - +sectionTypeControl: FormControl<ReportSectionType> - +titleControl: FormControl<String> - +descriptionControl: FormControl<String> - +sectionControl: FormControl<ReportSection> - +dataReferenceControl: FormControl<DataReferenceIdentifier<num>> - +temporalAggregationControl: FormControl<TemporalAggregationFormatted> - +improvementDirectionControl: FormControl<ImprovementDirectionFormatted> - +alphaControl: FormControl<double> - -_controlsBySectionType: Map<ReportSectionType, FormGroup> - -_sharedValidationConfig: Map<FormValidationSetEnum, List<FormControlValidation>> - -_validationConfigsBySectionType: Map<ReportSectionType, Map<FormValidationSetEnum, List<FormControlValidation>>> - +sectionBaseControls: Map<String, AbstractControl<dynamic>> - +form: FormGroup - +sectionId: String - +sectionType: ReportSectionType - <static>+sectionTypeControlOptions: List<FormControlOption<ReportSectionType>> - <static>+temporalAggregationControlOptions: List<FormControlOption<TemporalAggregationFormatted>> - <static>+improvementDirectionControlOptions: List<FormControlOption<ImprovementDirectionFormatted>> - +titles: Map<FormMode, String> - +sharedValidationConfig: Map<FormValidationSetEnum, List<FormControlValidation>> - +titleRequired: dynamic - +descriptionRequired: dynamic - +dataReferenceRequired: dynamic - +aggregationRequired: dynamic - +improvementDirectionRequired: dynamic - +alphaConfidenceRequired: dynamic - - - - - - -List<FormControlValidation> _getValidationConfig() - +ReportItemFormData buildFormData() - +ReportItemFormViewModel createDuplicate() - +dynamic onSectionTypeChanged() - -void _updateFormControls() - +void setControlsFrom() - - - - - - - - - - - - ReportSectionType - - - - - - +index: int - <static>+values: List<ReportSectionType> - <static>+average: ReportSectionType - <static>+linearRegression: ReportSectionType - - - - - - - - - - - FormControl - - - - - - - - - - - ManagedFormViewModel - - - - - - - - - - - - - ReportItemFormData - - - - - - +isPrimary: bool - +section: ReportSection - +id: String - - - - - - <static>+dynamic fromDomainModel() - +ReportItemFormData copy() - - - - - - - - - - - ReportSection - - - - - - - - - - - IFormData - - - - - - - - - - - - - ReportItemFormView - - - - - - +formViewModel: ReportItemFormViewModel - +studyId: String - +reportSectionColumnWidth: dynamic - +sectionTypeBodyBuilder: Widget Function(BuildContext) - - - - - - +Widget build() - -dynamic _buildSectionText() - -dynamic _buildSectionTypeHeader() - - - - - - - - - - - Widget Function(BuildContext) - - - - - - - - - - - - - TemporalAggregationFormatted - - - - - - -_value: TemporalAggregation - <static>+values: List<TemporalAggregationFormatted> - +value: TemporalAggregation - +string: String - +icon: IconData? - +hashCode: int - - - - - - +bool ==() - +String toString() - +String toJson() - <static>+TemporalAggregationFormatted fromJson() - - - - - - - - - - - TemporalAggregation - - - - - - - - - - - IconData - - - - - - - - - - - - - ImprovementDirectionFormatted - - - - - - -_value: ImprovementDirection - <static>+values: List<ImprovementDirectionFormatted> - +value: ImprovementDirection - +string: String - +icon: IconData? - +hashCode: int - - - - - - +bool ==() - +String toString() - +String toJson() - <static>+ImprovementDirectionFormatted fromJson() - - - - - - - - - - - ImprovementDirection - - - - - - - - - - - - - DataReferenceIdentifier - - - - - - +hashCode: int - - - - - - +bool ==() - - - - - - - - - - - DataReference - - - - - - - - - - - - - LinearRegressionSectionFormView - - - - - - +formViewModel: ReportItemFormViewModel - +studyId: String - +reportSectionColumnWidth: Map<int, TableColumnWidth> - - - - - - +Widget build() - - - - - - - - - - - ConsumerWidget - - - - - - - - - - - - - DataReferenceEditor - - - - - - +formControl: FormControl<DataReferenceIdentifier<T>> - +availableTasks: List<Task> - +buildReactiveDropdownField: ReactiveDropdownField<dynamic> - - - - - - +FormTableRow buildFormTableRow() - -List<DropdownMenuItem<DataReferenceIdentifier<dynamic>>> _dataReferenceItems() - - - - - - - - - - - ReactiveDropdownField - - - - - - - - - - - - - AverageSectionFormView - - - - - - +formViewModel: ReportItemFormViewModel - +studyId: String - +reportSectionColumnWidth: Map<int, TableColumnWidth> - - - - - - +Widget build() - - - - - - - - - \ No newline at end of file diff --git a/docs/uml/designer_v2/lib/features/design/shared/questionnaire/question/types/uml.svg b/docs/uml/designer_v2/lib/features/design/shared/questionnaire/question/types/uml.svg deleted file mode 100644 index 52be35c24..000000000 --- a/docs/uml/designer_v2/lib/features/design/shared/questionnaire/question/types/uml.svg +++ /dev/null @@ -1,272 +0,0 @@ - - [SurveyQuestionType - | - +index: int; - <static>+values: List<SurveyQuestionType>; - <static>+choice: SurveyQuestionType; - <static>+bool: SurveyQuestionType; - <static>+scale: SurveyQuestionType; - <static>+freeText: SurveyQuestionType - ] - - [SurveyQuestionType]o-[SurveyQuestionType] - [Enum]<:--[SurveyQuestionType] - - [<abstract>IScaleQuestionFormViewModel - | - +isMidValuesClearedInfoVisible: bool - ] - - [ScaleQuestionFormView - | - +formViewModel: QuestionFormViewModel - ] - - [ScaleQuestionFormView]o-[QuestionFormViewModel] - - [ChoiceQuestionFormView - | - +formViewModel: QuestionFormViewModel - | - +Widget build() - ] - - [ChoiceQuestionFormView]o-[QuestionFormViewModel] - [<abstract>ConsumerWidget]<:-[ChoiceQuestionFormView] - - [BoolQuestionFormView - | - +formViewModel: QuestionFormViewModel - | - +Widget build() - ] - - [BoolQuestionFormView]o-[QuestionFormViewModel] - [<abstract>ConsumerWidget]<:-[BoolQuestionFormView] - - [FreeTextQuestionFormView - | - +formViewModel: QuestionFormViewModel; - +generateLabelHelpTextMap: dynamic - | - +Widget build(); - +Widget disableOnReadonly(); - +Widget generateRow() - ] - - [FreeTextQuestionFormView]o-[QuestionFormViewModel] - [<abstract>ConsumerWidget]<:-[FreeTextQuestionFormView] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - SurveyQuestionType - - - - - - +index: int - <static>+values: List<SurveyQuestionType> - <static>+choice: SurveyQuestionType - <static>+bool: SurveyQuestionType - <static>+scale: SurveyQuestionType - <static>+freeText: SurveyQuestionType - - - - - - - - - - - Enum - - - - - - - - - - - - IScaleQuestionFormViewModel - - - - - - +isMidValuesClearedInfoVisible: bool - - - - - - - - - - - - ScaleQuestionFormView - - - - - - +formViewModel: QuestionFormViewModel - - - - - - - - - - - QuestionFormViewModel - - - - - - - - - - - - - ChoiceQuestionFormView - - - - - - +formViewModel: QuestionFormViewModel - - - - - - +Widget build() - - - - - - - - - - - ConsumerWidget - - - - - - - - - - - - - BoolQuestionFormView - - - - - - +formViewModel: QuestionFormViewModel - - - - - - +Widget build() - - - - - - - - - - - - - FreeTextQuestionFormView - - - - - - +formViewModel: QuestionFormViewModel - +generateLabelHelpTextMap: dynamic - - - - - - +Widget build() - +Widget disableOnReadonly() - +Widget generateRow() - - - - - - - - - \ No newline at end of file diff --git a/docs/uml/designer_v2/lib/features/design/shared/schedule/uml.svg b/docs/uml/designer_v2/lib/features/design/shared/schedule/uml.svg deleted file mode 100644 index 1808e476c..000000000 --- a/docs/uml/designer_v2/lib/features/design/shared/schedule/uml.svg +++ /dev/null @@ -1,236 +0,0 @@ - - [ScheduleControls - | - +formViewModel: WithScheduleControls - | - +Widget build(); - -List<FormTableRow> _conditionalTimeRestrictions() - ] - - [ScheduleControls]o-[<abstract>WithScheduleControls] - [<abstract>FormConsumerWidget]<:-[ScheduleControls] - - [<abstract>WithScheduleControls - | - +isTimeRestrictedControl: FormControl<bool>; - +instanceID: FormControl<String>; - +restrictedTimeStartControl: FormControl<Time>; - +restrictedTimeStartPickerControl: FormControl<TimeOfDay>; - +restrictedTimeEndControl: FormControl<Time>; - +restrictedTimeEndPickerControl: FormControl<TimeOfDay>; - +hasReminderControl: FormControl<bool>; - +reminderTimeControl: FormControl<Time>; - +reminderTimePickerControl: FormControl<TimeOfDay>; - -_reminderControlStream: StreamSubscription<dynamic>?; - +scheduleFormControls: Map<String, FormControl<Object>>; - +hasReminder: bool; - +isTimeRestricted: bool; - +timeRestriction: List<Time>? - | - +void setScheduleControlsFrom(); - -dynamic _initReminderControl() - ] - - [<abstract>WithScheduleControls]o-[FormControl] - [<abstract>WithScheduleControls]o-[StreamSubscription] - - [<abstract>IFormDataWithSchedule - | - +instanceId: String; - +isTimeLocked: bool; - +timeLockStart: StudyUTimeOfDay?; - +timeLockEnd: StudyUTimeOfDay?; - +hasReminder: bool; - +reminderTime: StudyUTimeOfDay? - | - +Schedule toSchedule() - ] - - [<abstract>IFormDataWithSchedule]o-[StudyUTimeOfDay] - [<abstract>IFormData]<:--[<abstract>IFormDataWithSchedule] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ScheduleControls - - - - - - +formViewModel: WithScheduleControls - - - - - - +Widget build() - -List<FormTableRow> _conditionalTimeRestrictions() - - - - - - - - - - - - - WithScheduleControls - - - - - - +isTimeRestrictedControl: FormControl<bool> - +instanceID: FormControl<String> - +restrictedTimeStartControl: FormControl<Time> - +restrictedTimeStartPickerControl: FormControl<TimeOfDay> - +restrictedTimeEndControl: FormControl<Time> - +restrictedTimeEndPickerControl: FormControl<TimeOfDay> - +hasReminderControl: FormControl<bool> - +reminderTimeControl: FormControl<Time> - +reminderTimePickerControl: FormControl<TimeOfDay> - -_reminderControlStream: StreamSubscription<dynamic>? - +scheduleFormControls: Map<String, FormControl<Object>> - +hasReminder: bool - +isTimeRestricted: bool - +timeRestriction: List<Time>? - - - - - - +void setScheduleControlsFrom() - -dynamic _initReminderControl() - - - - - - - - - - - FormConsumerWidget - - - - - - - - - - - FormControl - - - - - - - - - - - StreamSubscription - - - - - - - - - - - - - IFormDataWithSchedule - - - - - - +instanceId: String - +isTimeLocked: bool - +timeLockStart: StudyUTimeOfDay? - +timeLockEnd: StudyUTimeOfDay? - +hasReminder: bool - +reminderTime: StudyUTimeOfDay? - - - - - - +Schedule toSchedule() - - - - - - - - - - - StudyUTimeOfDay - - - - - - - - - - - IFormData - - - - - - - - - \ No newline at end of file diff --git a/docs/uml/designer_v2/lib/features/forms/uml.svg b/docs/uml/designer_v2/lib/features/forms/uml.svg deleted file mode 100644 index 7f58f6adb..000000000 --- a/docs/uml/designer_v2/lib/features/forms/uml.svg +++ /dev/null @@ -1,937 +0,0 @@ - - [<abstract>ManagedFormViewModel - | - +ManagedFormViewModel<T> createDuplicate() - ] - - [<abstract>FormViewModel]<:-[<abstract>ManagedFormViewModel] - - [FormViewModelNotFoundException - ] - - [Exception]<:--[FormViewModelNotFoundException] - - [FormViewModelCollection - | - +formViewModels: List<T>; - +formArray: FormArray<dynamic>; - +stagedViewModels: List<T>; - +retrievableViewModels: List<T>; - +formData: List<D> - | - +void add(); - +T remove(); - +T? findWhere(); - +T? removeWhere(); - +bool contains(); - +void stage(); - +T commit(); - +void reset(); - +void read() - ] - - [FormViewModelCollection]o-[FormArray] - - [CustomFormControl - | - -_onValueChangedDebouncer: Debouncer?; - -_onStatusChangedDebouncer: Debouncer?; - +onValueChanged: void Function(T?)?; - +onStatusChanged: void Function(ControlStatus)?; - +onStatusChangedDebounceTime: int?; - +onValueChangedDebounceTime: int? - | - +void dispose() - ] - - [CustomFormControl]o-[Debouncer] - [CustomFormControl]o-[void Function(T?)?] - [CustomFormControl]o-[void Function(ControlStatus)?] - [FormControl]<:-[CustomFormControl] - - [FormArrayTable - | - +control: AbstractControl<dynamic>; - +items: List<T>; - +onSelectItem: void Function(T); - +getActionsAt: List<ModelAction<dynamic>> Function(T, int); - +onNewItem: void Function()?; - +rowTitle: String Function(T); - +onNewItemLabel: String; - +sectionTitle: String?; - +sectionDescription: String?; - +emptyIcon: IconData?; - +emptyTitle: String?; - +emptyDescription: String?; - +sectionTitleDivider: bool?; - +rowPrefix: Widget Function(BuildContext, T, int)?; - +rowSuffix: Widget Function(BuildContext, T, int)?; - +leadingWidget: Widget?; - +itemsSectionPadding: EdgeInsets?; - +hideLeadingTrailingWhenEmpty: bool; - <static>+columns: List<StandardTableColumn> - | - +Widget build(); - -List<Widget> _buildRow(); - -Widget _newItemButton() - ] - - [FormArrayTable]o-[<abstract>AbstractControl] - [FormArrayTable]o-[void Function(T)] - [FormArrayTable]o-[List<ModelAction<dynamic>> Function(T, int)] - [FormArrayTable]o-[void Function()?] - [FormArrayTable]o-[String Function(T)] - [FormArrayTable]o-[IconData] - [FormArrayTable]o-[Widget Function(BuildContext, T, int)?] - [FormArrayTable]o-[<abstract>Widget] - [FormArrayTable]o-[EdgeInsets] - - [FormInvalidException - ] - - [Exception]<:--[FormInvalidException] - - [FormConfigException - | - +message: String? - ] - - [Exception]<:--[FormConfigException] - - [<abstract>IFormViewModelDelegate - | - +dynamic onSave(); - +void onCancel() - ] - - [<abstract>IFormGroupController - | - +form: FormGroup - ] - - [<abstract>IFormGroupController]o-[FormGroup] - - [FormControlOption - | - +value: T; - +label: String; - +description: String?; - +props: List<Object?> - ] - - [<abstract>Equatable]<:-[FormControlOption] - - [<abstract>FormViewModel - | - -_formData: T?; - -_formMode: FormMode; - -_validationSet: FormValidationSetEnum?; - +delegate: IFormViewModelDelegate<FormViewModel<dynamic>>?; - +autosave: bool; - -_immediateFormChildrenSubscriptions: List<StreamSubscription<dynamic>>; - -_immediateFormChildrenListenerDebouncer: Debouncer?; - -_autosaveOperation: CancelableOperation<dynamic>?; - -_defaultControlValidators: Map<String, Tuple<List<Validator<dynamic>>, List<AsyncValidator<dynamic>>>>; - +prevFormValue: Map<String, dynamic>?; - <static>-_formKey: String; - +formData: T?; - +formMode: FormMode; - +isReadonly: bool; - +validationSet: FormValidationSetEnum?; - +isDirty: bool; - +title: String; - +isValid: bool; - +titles: Map<FormMode, String>; - +sharedValidationConfig: Map<FormValidationSetEnum, List<FormControlValidation>> - | - -dynamic _setFormData(); - -dynamic _rememberDefaultControlValidators(); - -Tuple<List<Validator<dynamic>>, List<AsyncValidator<dynamic>>>? _getDefaultValidators(); - -dynamic _disableAllControls(); - -dynamic _formModeUpdated(); - -dynamic _restoreControlsFromFormData(); - +void revalidate(); - -void _applyValidationSet(); - +void read(); - +dynamic save(); - +dynamic cancel(); - +void enableAutosave(); - +void listenToImmediateFormChildren(); - +dynamic markFormGroupChanged(); - +void dispose(); - +void setControlsFrom(); - +T buildFormData(); - +void initControls() - ] - - [<abstract>FormViewModel]o-[FormMode] - [<abstract>FormViewModel]o-[<abstract>FormValidationSetEnum] - [<abstract>FormViewModel]o-[<abstract>IFormViewModelDelegate] - [<abstract>FormViewModel]o-[Debouncer] - [<abstract>FormViewModel]o-[CancelableOperation] - [<abstract>IFormGroupController]<:--[<abstract>FormViewModel] - - [FormMode - | - +index: int; - <static>+values: List<FormMode>; - <static>+create: FormMode; - <static>+readonly: FormMode; - <static>+edit: FormMode - ] - - [FormMode]o-[FormMode] - [Enum]<:--[FormMode] - - [UnsavedChangesDialog - | - +Widget build() - ] - - [<abstract>FormValidationSetEnum - ] - - [FormControlValidation - | - +control: AbstractControl<dynamic>; - +validators: List<Validator<dynamic>>; - +asyncValidators: List<AsyncValidator<dynamic>>?; - +validationMessages: Map<String, String Function(Object)> - | - +FormControlValidation merge() - ] - - [FormControlValidation]o-[<abstract>AbstractControl] - - [<abstract>IFormData - | - +id: String - | - +IFormData copy() - ] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ManagedFormViewModel - - - - - - +ManagedFormViewModel<T> createDuplicate() - - - - - - - - - - - - - FormViewModel - - - - - - -_formData: T? - -_formMode: FormMode - -_validationSet: FormValidationSetEnum? - +delegate: IFormViewModelDelegate<FormViewModel<dynamic>>? - +autosave: bool - -_immediateFormChildrenSubscriptions: List<StreamSubscription<dynamic>> - -_immediateFormChildrenListenerDebouncer: Debouncer? - -_autosaveOperation: CancelableOperation<dynamic>? - -_defaultControlValidators: Map<String, Tuple<List<Validator<dynamic>>, List<AsyncValidator<dynamic>>>> - +prevFormValue: Map<String, dynamic>? - <static>-_formKey: String - +formData: T? - +formMode: FormMode - +isReadonly: bool - +validationSet: FormValidationSetEnum? - +isDirty: bool - +title: String - +isValid: bool - +titles: Map<FormMode, String> - +sharedValidationConfig: Map<FormValidationSetEnum, List<FormControlValidation>> - - - - - - -dynamic _setFormData() - -dynamic _rememberDefaultControlValidators() - -Tuple<List<Validator<dynamic>>, List<AsyncValidator<dynamic>>>? _getDefaultValidators() - -dynamic _disableAllControls() - -dynamic _formModeUpdated() - -dynamic _restoreControlsFromFormData() - +void revalidate() - -void _applyValidationSet() - +void read() - +dynamic save() - +dynamic cancel() - +void enableAutosave() - +void listenToImmediateFormChildren() - +dynamic markFormGroupChanged() - +void dispose() - +void setControlsFrom() - +T buildFormData() - +void initControls() - - - - - - - - - - - FormViewModelNotFoundException - - - - - - - - - - - Exception - - - - - - - - - - - - - FormViewModelCollection - - - - - - +formViewModels: List<T> - +formArray: FormArray<dynamic> - +stagedViewModels: List<T> - +retrievableViewModels: List<T> - +formData: List<D> - - - - - - +void add() - +T remove() - +T? findWhere() - +T? removeWhere() - +bool contains() - +void stage() - +T commit() - +void reset() - +void read() - - - - - - - - - - - FormArray - - - - - - - - - - - - - CustomFormControl - - - - - - -_onValueChangedDebouncer: Debouncer? - -_onStatusChangedDebouncer: Debouncer? - +onValueChanged: void Function(T?)? - +onStatusChanged: void Function(ControlStatus)? - +onStatusChangedDebounceTime: int? - +onValueChangedDebounceTime: int? - - - - - - +void dispose() - - - - - - - - - - - Debouncer - - - - - - - - - - - void Function(T?)? - - - - - - - - - - - void Function(ControlStatus)? - - - - - - - - - - - FormControl - - - - - - - - - - - - - FormArrayTable - - - - - - +control: AbstractControl<dynamic> - +items: List<T> - +onSelectItem: void Function(T) - +getActionsAt: List<ModelAction<dynamic>> Function(T, int) - +onNewItem: void Function()? - +rowTitle: String Function(T) - +onNewItemLabel: String - +sectionTitle: String? - +sectionDescription: String? - +emptyIcon: IconData? - +emptyTitle: String? - +emptyDescription: String? - +sectionTitleDivider: bool? - +rowPrefix: Widget Function(BuildContext, T, int)? - +rowSuffix: Widget Function(BuildContext, T, int)? - +leadingWidget: Widget? - +itemsSectionPadding: EdgeInsets? - +hideLeadingTrailingWhenEmpty: bool - <static>+columns: List<StandardTableColumn> - - - - - - +Widget build() - -List<Widget> _buildRow() - -Widget _newItemButton() - - - - - - - - - - - AbstractControl - - - - - - - - - - - void Function(T) - - - - - - - - - - - List<ModelAction<dynamic>> Function(T, int) - - - - - - - - - - - void Function()? - - - - - - - - - - - String Function(T) - - - - - - - - - - - IconData - - - - - - - - - - - Widget Function(BuildContext, T, int)? - - - - - - - - - - - Widget - - - - - - - - - - - EdgeInsets - - - - - - - - - - - FormInvalidException - - - - - - - - - - - - FormConfigException - - - - - - +message: String? - - - - - - - - - - - - IFormViewModelDelegate - - - - - - +dynamic onSave() - +void onCancel() - - - - - - - - - - - - IFormGroupController - - - - - - +form: FormGroup - - - - - - - - - - - FormGroup - - - - - - - - - - - - FormControlOption - - - - - - +value: T - +label: String - +description: String? - +props: List<Object?> - - - - - - - - - - - Equatable - - - - - - - - - - - - FormMode - - - - - - +index: int - <static>+values: List<FormMode> - <static>+create: FormMode - <static>+readonly: FormMode - <static>+edit: FormMode - - - - - - - - - - - FormValidationSetEnum - - - - - - - - - - - CancelableOperation - - - - - - - - - - - Enum - - - - - - - - - - - - UnsavedChangesDialog - - - - - - +Widget build() - - - - - - - - - - - - - FormControlValidation - - - - - - +control: AbstractControl<dynamic> - +validators: List<Validator<dynamic>> - +asyncValidators: List<AsyncValidator<dynamic>>? - +validationMessages: Map<String, String Function(Object)> - - - - - - +FormControlValidation merge() - - - - - - - - - - - - - IFormData - - - - - - +id: String - - - - - - +IFormData copy() - - - - - - - - - \ No newline at end of file diff --git a/docs/uml/designer_v2/lib/features/monitor/uml.svg b/docs/uml/designer_v2/lib/features/monitor/uml.svg deleted file mode 100644 index a3d10873a..000000000 --- a/docs/uml/designer_v2/lib/features/monitor/uml.svg +++ /dev/null @@ -1,52 +0,0 @@ - - [StudyMonitorScreen - | - +Widget build() - ] - - [<abstract>StudyPageWidget]<:-[StudyMonitorScreen] - - - - - - - - - - - - - - - - - - - StudyMonitorScreen - - - - - - +Widget build() - - - - - - - - - - - StudyPageWidget - - - - - - - - - \ No newline at end of file diff --git a/docs/uml/designer_v2/lib/features/publish/uml.svg b/docs/uml/designer_v2/lib/features/publish/uml.svg deleted file mode 100644 index d971c6a59..000000000 --- a/docs/uml/designer_v2/lib/features/publish/uml.svg +++ /dev/null @@ -1,106 +0,0 @@ - - [PublishConfirmationDialog - | - +Widget build() - ] - - [<abstract>StudyPageWidget]<:-[PublishConfirmationDialog] - - [PublishSuccessDialog - | - +Widget build() - ] - - [<abstract>StudyPageWidget]<:-[PublishSuccessDialog] - - [PublishDialog - | - +Widget build() - ] - - [<abstract>StudyPageWidget]<:-[PublishDialog] - - - - - - - - - - - - - - - - - - - - - - - PublishConfirmationDialog - - - - - - +Widget build() - - - - - - - - - - - StudyPageWidget - - - - - - - - - - - - PublishSuccessDialog - - - - - - +Widget build() - - - - - - - - - - - - PublishDialog - - - - - - +Widget build() - - - - - - - - - \ No newline at end of file diff --git a/docs/uml/designer_v2/lib/features/recruit/uml.svg b/docs/uml/designer_v2/lib/features/recruit/uml.svg deleted file mode 100644 index cb4d698e7..000000000 --- a/docs/uml/designer_v2/lib/features/recruit/uml.svg +++ /dev/null @@ -1,498 +0,0 @@ - - [EnrolledBadge - | - +enrolledCount: int - | - +Widget build() - ] - - [StudyRecruitController - | - +inviteCodeRepository: IInviteCodeRepository; - -_invitesSubscription: StreamSubscription<List<WrappedModel<StudyInvite>>>? - | - -dynamic _subscribeInvites(); - +Intervention? getIntervention(); - +int getParticipantCountForInvite(); - +List<ModelAction<dynamic>> availableActions(); - +List<ModelAction<dynamic>> availableInlineActions(); - +void dispose() - ] - - [StudyRecruitController]o-[<abstract>IInviteCodeRepository] - [StudyRecruitController]o-[StreamSubscription] - [StudyBaseController]<:-[StudyRecruitController] - [<abstract>IModelActionProvider]<:--[StudyRecruitController] - - [StudyRecruitScreen - | - +Widget build(); - -Widget _inviteCodesSectionHeader(); - -Widget _newInviteCodeButton(); - -dynamic _onSelectInvite() - ] - - [<abstract>StudyPageWidget]<:-[StudyRecruitScreen] - - [InviteCodeFormView - | - +formViewModel: InviteCodeFormViewModel - | - +Widget build(); - -List<FormTableRow> _conditionalInterventionRows() - ] - - [InviteCodeFormView]o-[InviteCodeFormViewModel] - [<abstract>FormConsumerWidget]<:-[InviteCodeFormView] - - [StudyInvitesTable - | - +invites: List<StudyInvite>; - +onSelect: void Function(StudyInvite); - +getActions: List<ModelAction<dynamic>> Function(StudyInvite); - +getInlineActions: List<ModelAction<dynamic>> Function(StudyInvite); - +getIntervention: Intervention? Function(String); - +getParticipantCountForInvite: int Function(StudyInvite) - | - +Widget build(); - -List<Widget> _buildRow() - ] - - [StudyInvitesTable]o-[void Function(StudyInvite)] - [StudyInvitesTable]o-[List<ModelAction<dynamic>> Function(StudyInvite)] - [StudyInvitesTable]o-[Intervention? Function(String)] - [StudyInvitesTable]o-[int Function(StudyInvite)] - - [InviteCodeFormViewModel - | - +study: Study; - +inviteCodeRepository: IInviteCodeRepository; - +codeControl: FormControl<String>; - +codeControlValidationMessages: Map<String, String Function(dynamic)>; - +isPreconfiguredScheduleControl: FormControl<bool>; - +preconfiguredScheduleTypeControl: FormControl<PhaseSequence>; - +interventionAControl: FormControl<String>; - +interventionBControl: FormControl<String>; - +form: FormGroup; - +titles: Map<FormMode, String>; - +interventionControlOptions: List<FormControlOption<String>>; - +preconfiguredScheduleTypeOptions: List<FormControlOption<PhaseSequence>>; - +isPreconfiguredSchedule: bool; - +preconfiguredSchedule: List<String>? - | - +void initControls(); - -dynamic _uniqueInviteCode(); - +void regenerateCode(); - -String _generateCode(); - +StudyInvite buildFormData(); - +void setControlsFrom(); - +dynamic save() - ] - - [InviteCodeFormViewModel]o-[Study] - [InviteCodeFormViewModel]o-[<abstract>IInviteCodeRepository] - [InviteCodeFormViewModel]o-[FormControl] - [InviteCodeFormViewModel]o-[FormGroup] - [<abstract>FormViewModel]<:-[InviteCodeFormViewModel] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - EnrolledBadge - - - - - - +enrolledCount: int - - - - - - +Widget build() - - - - - - - - - - - - - StudyRecruitController - - - - - - +inviteCodeRepository: IInviteCodeRepository - -_invitesSubscription: StreamSubscription<List<WrappedModel<StudyInvite>>>? - - - - - - -dynamic _subscribeInvites() - +Intervention? getIntervention() - +int getParticipantCountForInvite() - +List<ModelAction<dynamic>> availableActions() - +List<ModelAction<dynamic>> availableInlineActions() - +void dispose() - - - - - - - - - - - IInviteCodeRepository - - - - - - - - - - - StreamSubscription - - - - - - - - - - - StudyBaseController - - - - - - - - - - - IModelActionProvider - - - - - - - - - - - - StudyRecruitScreen - - - - - - +Widget build() - -Widget _inviteCodesSectionHeader() - -Widget _newInviteCodeButton() - -dynamic _onSelectInvite() - - - - - - - - - - - StudyPageWidget - - - - - - - - - - - - - InviteCodeFormView - - - - - - +formViewModel: InviteCodeFormViewModel - - - - - - +Widget build() - -List<FormTableRow> _conditionalInterventionRows() - - - - - - - - - - - - - InviteCodeFormViewModel - - - - - - +study: Study - +inviteCodeRepository: IInviteCodeRepository - +codeControl: FormControl<String> - +codeControlValidationMessages: Map<String, String Function(dynamic)> - +isPreconfiguredScheduleControl: FormControl<bool> - +preconfiguredScheduleTypeControl: FormControl<PhaseSequence> - +interventionAControl: FormControl<String> - +interventionBControl: FormControl<String> - +form: FormGroup - +titles: Map<FormMode, String> - +interventionControlOptions: List<FormControlOption<String>> - +preconfiguredScheduleTypeOptions: List<FormControlOption<PhaseSequence>> - +isPreconfiguredSchedule: bool - +preconfiguredSchedule: List<String>? - - - - - - +void initControls() - -dynamic _uniqueInviteCode() - +void regenerateCode() - -String _generateCode() - +StudyInvite buildFormData() - +void setControlsFrom() - +dynamic save() - - - - - - - - - - - FormConsumerWidget - - - - - - - - - - - - - StudyInvitesTable - - - - - - +invites: List<StudyInvite> - +onSelect: void Function(StudyInvite) - +getActions: List<ModelAction<dynamic>> Function(StudyInvite) - +getInlineActions: List<ModelAction<dynamic>> Function(StudyInvite) - +getIntervention: Intervention? Function(String) - +getParticipantCountForInvite: int Function(StudyInvite) - - - - - - +Widget build() - -List<Widget> _buildRow() - - - - - - - - - - - void Function(StudyInvite) - - - - - - - - - - - List<ModelAction<dynamic>> Function(StudyInvite) - - - - - - - - - - - Intervention? Function(String) - - - - - - - - - - - int Function(StudyInvite) - - - - - - - - - - - Study - - - - - - - - - - - FormControl - - - - - - - - - - - FormGroup - - - - - - - - - - - FormViewModel - - - - - - - - - \ No newline at end of file diff --git a/docs/uml/designer_v2/lib/features/study/settings/uml.svg b/docs/uml/designer_v2/lib/features/study/settings/uml.svg deleted file mode 100644 index b6f45b2a3..000000000 --- a/docs/uml/designer_v2/lib/features/study/settings/uml.svg +++ /dev/null @@ -1,185 +0,0 @@ - - [StudySettingsDialog - | - +Widget build() - ] - - [<abstract>StudyPageWidget]<:-[StudySettingsDialog] - - [StudySettingsFormViewModel - | - +study: AsyncValue<Study>; - +studyRepository: IStudyRepository; - <static>+defaultPublishedToRegistry: bool; - <static>+defaultPublishedToRegistryResults: bool; - +isPublishedToRegistryControl: FormControl<bool>; - +isPublishedToRegistryResultsControl: FormControl<bool>; - +form: FormGroup; - +titles: Map<FormMode, String> - | - +void setControlsFrom(); - +Study buildFormData(); - +dynamic keepControlsSynced(); - +dynamic save(); - +dynamic setLaunchDefaults() - ] - - [StudySettingsFormViewModel]o-[<abstract>AsyncValue] - [StudySettingsFormViewModel]o-[<abstract>IStudyRepository] - [StudySettingsFormViewModel]o-[FormControl] - [StudySettingsFormViewModel]o-[FormGroup] - [<abstract>FormViewModel]<:-[StudySettingsFormViewModel] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - StudySettingsDialog - - - - - - +Widget build() - - - - - - - - - - - StudyPageWidget - - - - - - - - - - - - - StudySettingsFormViewModel - - - - - - +study: AsyncValue<Study> - +studyRepository: IStudyRepository - <static>+defaultPublishedToRegistry: bool - <static>+defaultPublishedToRegistryResults: bool - +isPublishedToRegistryControl: FormControl<bool> - +isPublishedToRegistryResultsControl: FormControl<bool> - +form: FormGroup - +titles: Map<FormMode, String> - - - - - - +void setControlsFrom() - +Study buildFormData() - +dynamic keepControlsSynced() - +dynamic save() - +dynamic setLaunchDefaults() - - - - - - - - - - - AsyncValue - - - - - - - - - - - IStudyRepository - - - - - - - - - - - FormControl - - - - - - - - - - - FormGroup - - - - - - - - - - - FormViewModel - - - - - - - - - \ No newline at end of file diff --git a/docs/uml/designer_v2/lib/features/study/uml.svg b/docs/uml/designer_v2/lib/features/study/uml.svg deleted file mode 100644 index d5afd8d04..000000000 --- a/docs/uml/designer_v2/lib/features/study/uml.svg +++ /dev/null @@ -1,1411 +0,0 @@ - - [<abstract>IStudyNavViewModel - | - +isEditTabEnabled: bool; - +isTestTabEnabled: bool; - +isRecruitTabEnabled: bool; - +isMonitorTabEnabled: bool; - +isAnalyzeTabEnabled: bool; - +isSettingsEnabled: bool - ] - - [StudyNav - | - <static>+dynamic tabs(); - <static>+dynamic edit(); - <static>+dynamic test(); - <static>+dynamic recruit(); - <static>+dynamic monitor(); - <static>+dynamic analyze() - ] - - [StudyDesignNav - | - <static>+dynamic tabs(); - <static>+dynamic info(); - <static>+dynamic enrollment(); - <static>+dynamic interventions(); - <static>+dynamic measurements(); - <static>+dynamic reports() - ] - - [RouteInformation - | - +route: String?; - +extra: String?; - +cmd: String?; - +data: String? - | - +String toString() - ] - - [<abstract>PlatformController - | - +studyId: String; - +baseSrc: String; - +previewSrc: String; - +routeInformation: RouteInformation; - +frameWidget: Widget - | - +void activate(); - +void registerViews(); - +void generateUrl(); - +void navigate(); - +void refresh(); - +void listen(); - +void send(); - +void openNewPage() - ] - - [<abstract>PlatformController]o-[RouteInformation] - [<abstract>PlatformController]o-[<abstract>Widget] - - [WebController - | - +iFrameElement: IFrameElement - | - +void activate(); - +void registerViews(); - +void generateUrl(); - +void navigate(); - +void refresh(); - +void openNewPage(); - +void listen(); - +void send() - ] - - [WebController]o-[IFrameElement] - [<abstract>PlatformController]<:-[WebController] - - [MobileController - | - +void openNewPage(); - +void refresh(); - +void registerViews(); - +void listen(); - +void send(); - +void navigate(); - +void activate(); - +void generateUrl() - ] - - [<abstract>PlatformController]<:-[MobileController] - - [TestAppRoutes - | - <static>+studyOverview: String; - <static>+eligibility: String; - <static>+intervention: String; - <static>+consent: String; - <static>+journey: String; - <static>+dashboard: String - ] - - [StudySettingsFormViewModel - | - +study: AsyncValue<Study>; - +studyRepository: IStudyRepository; - <static>+defaultPublishedToRegistry: bool; - <static>+defaultPublishedToRegistryResults: bool; - +isPublishedToRegistryControl: FormControl<bool>; - +isPublishedToRegistryResultsControl: FormControl<bool>; - +form: FormGroup; - +titles: Map<FormMode, String> - | - +void setControlsFrom(); - +Study buildFormData(); - +dynamic keepControlsSynced(); - +dynamic save(); - +dynamic setLaunchDefaults() - ] - - [StudySettingsFormViewModel]o-[<abstract>AsyncValue] - [StudySettingsFormViewModel]o-[<abstract>IStudyRepository] - [StudySettingsFormViewModel]o-[FormControl] - [StudySettingsFormViewModel]o-[FormGroup] - [<abstract>FormViewModel]<:-[StudySettingsFormViewModel] - - [StudySettingsDialog - | - +Widget build() - ] - - [<abstract>StudyPageWidget]<:-[StudySettingsDialog] - - [FrameControlsWidget - | - +onRefresh: void Function()?; - +onOpenNewTab: void Function()?; - +enabled: bool - | - +Widget build() - ] - - [FrameControlsWidget]o-[void Function()?] - [<abstract>ConsumerWidget]<:-[FrameControlsWidget] - - [<abstract>StudyPageWidget - | - +studyId: String - | - +Widget? banner() - ] - - [<abstract>ConsumerWidget]<:-[<abstract>StudyPageWidget] - [<abstract>IWithBanner]<:--[<abstract>StudyPageWidget] - - [StudyTestScreen - | - +previewRoute: String? - | - +Widget build(); - +Widget? banner(); - +dynamic load(); - +dynamic save(); - +dynamic showHelp() - ] - - [<abstract>StudyPageWidget]<:-[StudyTestScreen] - - [StudyParticipationBadge - | - +participation: Participation; - +type: BadgeType; - +showPrefixIcon: bool; - +center: bool - | - +Widget build() - ] - - [StudyParticipationBadge]o-[Participation] - [StudyParticipationBadge]o-[BadgeType] - - [<abstract>IStudyStatusBadgeViewModel - | - +studyParticipation: Participation?; - +studyStatus: StudyStatus? - ] - - [<abstract>IStudyStatusBadgeViewModel]o-[Participation] - [<abstract>IStudyStatusBadgeViewModel]o-[StudyStatus] - - [StudyStatusBadge - | - +participation: Participation?; - +status: StudyStatus?; - +type: BadgeType; - +showPrefixIcon: bool; - +showTooltip: bool - | - +Widget build() - ] - - [StudyStatusBadge]o-[Participation] - [StudyStatusBadge]o-[StudyStatus] - [StudyStatusBadge]o-[BadgeType] - - [StudyController - | - +notificationService: INotificationService; - +studyEventsSubscription: StreamSubscription<ModelEvent<Study>>?; - +studyActions: List<ModelAction<dynamic>> - | - +dynamic syncStudyStatus(); - +dynamic onStudySubscriptionUpdate(); - -dynamic _redirectNewToActualStudyID(); - +dynamic publishStudy(); - +void onChangeStudyParticipation(); - +void onAddParticipants(); - +void onSettingsPressed(); - +void dispose() - ] - - [StudyController]o-[<abstract>INotificationService] - [StudyController]o-[StreamSubscription] - [StudyBaseController]<:-[StudyController] - - [PreviewFrame - | - +studyId: String; - +routeArgs: StudyFormRouteArgs?; - +route: String? - ] - - [PreviewFrame]o-[<abstract>StudyFormRouteArgs] - - [StudyTestController - | - +authRepository: IAuthRepository; - +languageCode: String - ] - - [StudyTestController]o-[<abstract>IAuthRepository] - [StudyBaseController]<:-[StudyTestController] - - [<abstract>IStudyAppBarViewModel - | - +isSyncIndicatorVisible: bool; - +isStatusBadgeVisible: bool; - +isPublishVisible: bool - ] - - [<abstract>IStudyStatusBadgeViewModel]<:--[<abstract>IStudyAppBarViewModel] - [<abstract>IStudyNavViewModel]<:--[<abstract>IStudyAppBarViewModel] - - [StudyScaffold - | - +studyId: String; - +tabs: List<NavbarTab>?; - +tabsSubnav: List<NavbarTab>?; - +selectedTab: NavbarTab?; - +selectedTabSubnav: NavbarTab?; - +body: StudyPageWidget; - +drawer: Widget?; - +disableActions: bool; - +actionsSpacing: double; - +actionsPadding: double; - +layoutType: SingleColumnLayoutType?; - +appbarHeight: double; - +appbarSubnavHeight: double - ] - - [StudyScaffold]o-[NavbarTab] - [StudyScaffold]o-[<abstract>StudyPageWidget] - [StudyScaffold]o-[<abstract>Widget] - [StudyScaffold]o-[SingleColumnLayoutType] - - [WebFrame - | - +previewSrc: String; - +studyId: String - | - +Widget build() - ] - - [DisabledFrame - | - +Widget build() - ] - - [PhoneContainer - | - <static>+defaultWidth: double; - <static>+defaultHeight: double; - +width: double; - +height: double; - +borderColor: Color; - +borderWidth: double; - +borderRadius: double; - +innerContent: Widget; - +innerContentBackgroundColor: Color? - | - +Widget build() - ] - - [PhoneContainer]o-[Color] - [PhoneContainer]o-[<abstract>Widget] - - [MobileFrame - | - +Widget build() - ] - - [DesktopFrame - | - +Widget build() - ] - - [StudyBaseController - | - +studyId: String; - +studyRepository: IStudyRepository; - +router: GoRouter; - +studySubscription: StreamSubscription<WrappedModel<Study>>? - | - +dynamic subscribeStudy(); - +dynamic onStudySubscriptionUpdate(); - +dynamic onStudySubscriptionError(); - +void dispose() - ] - - [StudyBaseController]o-[<abstract>IStudyRepository] - [StudyBaseController]o-[GoRouter] - [StudyBaseController]o-[StreamSubscription] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IStudyNavViewModel - - - - - - +isEditTabEnabled: bool - +isTestTabEnabled: bool - +isRecruitTabEnabled: bool - +isMonitorTabEnabled: bool - +isAnalyzeTabEnabled: bool - +isSettingsEnabled: bool - - - - - - - - - - - - StudyNav - - - - - - <static>+dynamic tabs() - <static>+dynamic edit() - <static>+dynamic test() - <static>+dynamic recruit() - <static>+dynamic monitor() - <static>+dynamic analyze() - - - - - - - - - - - - StudyDesignNav - - - - - - <static>+dynamic tabs() - <static>+dynamic info() - <static>+dynamic enrollment() - <static>+dynamic interventions() - <static>+dynamic measurements() - <static>+dynamic reports() - - - - - - - - - - - - - RouteInformation - - - - - - +route: String? - +extra: String? - +cmd: String? - +data: String? - - - - - - +String toString() - - - - - - - - - - - - - PlatformController - - - - - - +studyId: String - +baseSrc: String - +previewSrc: String - +routeInformation: RouteInformation - +frameWidget: Widget - - - - - - +void activate() - +void registerViews() - +void generateUrl() - +void navigate() - +void refresh() - +void listen() - +void send() - +void openNewPage() - - - - - - - - - - - Widget - - - - - - - - - - - - - WebController - - - - - - +iFrameElement: IFrameElement - - - - - - +void activate() - +void registerViews() - +void generateUrl() - +void navigate() - +void refresh() - +void openNewPage() - +void listen() - +void send() - - - - - - - - - - - IFrameElement - - - - - - - - - - - - MobileController - - - - - - +void openNewPage() - +void refresh() - +void registerViews() - +void listen() - +void send() - +void navigate() - +void activate() - +void generateUrl() - - - - - - - - - - - - TestAppRoutes - - - - - - <static>+studyOverview: String - <static>+eligibility: String - <static>+intervention: String - <static>+consent: String - <static>+journey: String - <static>+dashboard: String - - - - - - - - - - - - - StudySettingsFormViewModel - - - - - - +study: AsyncValue<Study> - +studyRepository: IStudyRepository - <static>+defaultPublishedToRegistry: bool - <static>+defaultPublishedToRegistryResults: bool - +isPublishedToRegistryControl: FormControl<bool> - +isPublishedToRegistryResultsControl: FormControl<bool> - +form: FormGroup - +titles: Map<FormMode, String> - - - - - - +void setControlsFrom() - +Study buildFormData() - +dynamic keepControlsSynced() - +dynamic save() - +dynamic setLaunchDefaults() - - - - - - - - - - - AsyncValue - - - - - - - - - - - IStudyRepository - - - - - - - - - - - FormControl - - - - - - - - - - - FormGroup - - - - - - - - - - - FormViewModel - - - - - - - - - - - - StudySettingsDialog - - - - - - +Widget build() - - - - - - - - - - - - - StudyPageWidget - - - - - - +studyId: String - - - - - - +Widget? banner() - - - - - - - - - - - - - FrameControlsWidget - - - - - - +onRefresh: void Function()? - +onOpenNewTab: void Function()? - +enabled: bool - - - - - - +Widget build() - - - - - - - - - - - void Function()? - - - - - - - - - - - ConsumerWidget - - - - - - - - - - - IWithBanner - - - - - - - - - - - - - StudyTestScreen - - - - - - +previewRoute: String? - - - - - - +Widget build() - +Widget? banner() - +dynamic load() - +dynamic save() - +dynamic showHelp() - - - - - - - - - - - - - StudyParticipationBadge - - - - - - +participation: Participation - +type: BadgeType - +showPrefixIcon: bool - +center: bool - - - - - - +Widget build() - - - - - - - - - - - Participation - - - - - - - - - - - BadgeType - - - - - - - - - - - - IStudyStatusBadgeViewModel - - - - - - +studyParticipation: Participation? - +studyStatus: StudyStatus? - - - - - - - - - - - StudyStatus - - - - - - - - - - - - - StudyStatusBadge - - - - - - +participation: Participation? - +status: StudyStatus? - +type: BadgeType - +showPrefixIcon: bool - +showTooltip: bool - - - - - - +Widget build() - - - - - - - - - - - - - StudyController - - - - - - +notificationService: INotificationService - +studyEventsSubscription: StreamSubscription<ModelEvent<Study>>? - +studyActions: List<ModelAction<dynamic>> - - - - - - +dynamic syncStudyStatus() - +dynamic onStudySubscriptionUpdate() - -dynamic _redirectNewToActualStudyID() - +dynamic publishStudy() - +void onChangeStudyParticipation() - +void onAddParticipants() - +void onSettingsPressed() - +void dispose() - - - - - - - - - - - INotificationService - - - - - - - - - - - StreamSubscription - - - - - - - - - - - - - StudyBaseController - - - - - - +studyId: String - +studyRepository: IStudyRepository - +router: GoRouter - +studySubscription: StreamSubscription<WrappedModel<Study>>? - - - - - - +dynamic subscribeStudy() - +dynamic onStudySubscriptionUpdate() - +dynamic onStudySubscriptionError() - +void dispose() - - - - - - - - - - - - PreviewFrame - - - - - - +studyId: String - +routeArgs: StudyFormRouteArgs? - +route: String? - - - - - - - - - - - StudyFormRouteArgs - - - - - - - - - - - - StudyTestController - - - - - - +authRepository: IAuthRepository - +languageCode: String - - - - - - - - - - - IAuthRepository - - - - - - - - - - - - IStudyAppBarViewModel - - - - - - +isSyncIndicatorVisible: bool - +isStatusBadgeVisible: bool - +isPublishVisible: bool - - - - - - - - - - - - StudyScaffold - - - - - - +studyId: String - +tabs: List<NavbarTab>? - +tabsSubnav: List<NavbarTab>? - +selectedTab: NavbarTab? - +selectedTabSubnav: NavbarTab? - +body: StudyPageWidget - +drawer: Widget? - +disableActions: bool - +actionsSpacing: double - +actionsPadding: double - +layoutType: SingleColumnLayoutType? - +appbarHeight: double - +appbarSubnavHeight: double - - - - - - - - - - - NavbarTab - - - - - - - - - - - SingleColumnLayoutType - - - - - - - - - - - - - WebFrame - - - - - - +previewSrc: String - +studyId: String - - - - - - +Widget build() - - - - - - - - - - - - DisabledFrame - - - - - - +Widget build() - - - - - - - - - - - - - PhoneContainer - - - - - - <static>+defaultWidth: double - <static>+defaultHeight: double - +width: double - +height: double - +borderColor: Color - +borderWidth: double - +borderRadius: double - +innerContent: Widget - +innerContentBackgroundColor: Color? - - - - - - +Widget build() - - - - - - - - - - - Color - - - - - - - - - - - - MobileFrame - - - - - - +Widget build() - - - - - - - - - - - - DesktopFrame - - - - - - +Widget build() - - - - - - - - - - - GoRouter - - - - - - - - - \ No newline at end of file diff --git a/docs/uml/designer_v2/lib/features/uml.svg b/docs/uml/designer_v2/lib/features/uml.svg deleted file mode 100644 index d85f16001..000000000 --- a/docs/uml/designer_v2/lib/features/uml.svg +++ /dev/null @@ -1,8823 +0,0 @@ - - [<abstract>IAppDelegate - | - +dynamic onAppStart() - ] - - [AppController - | - +appDelegates: List<IAppDelegate>; - -_delayedFuture: dynamic; - +isInitialized: dynamic - | - +dynamic onAppStart(); - -dynamic _callDelegates() - ] - - [StudyMonitorScreen - | - +Widget build() - ] - - [<abstract>StudyPageWidget]<:-[StudyMonitorScreen] - - [LoginForm - | - +formKey: AuthFormKey - | - +Widget build() - ] - - [LoginForm]o-[AuthFormKey] - [<abstract>FormConsumerRefWidget]<:-[LoginForm] - - [PasswordRecoveryForm - | - +formKey: AuthFormKey - | - +Widget build() - ] - - [PasswordRecoveryForm]o-[AuthFormKey] - [<abstract>FormConsumerRefWidget]<:-[PasswordRecoveryForm] - - [PasswordForgotForm - | - +formKey: AuthFormKey - | - +Widget build() - ] - - [PasswordForgotForm]o-[AuthFormKey] - [<abstract>FormConsumerRefWidget]<:-[PasswordForgotForm] - - [SignupForm - | - +formKey: AuthFormKey - | - +Widget build(); - -dynamic _onClickTermsOfUse(); - -dynamic _onClickPrivacyPolicy() - ] - - [SignupForm]o-[AuthFormKey] - [<abstract>FormConsumerRefWidget]<:-[SignupForm] - - [AuthScaffold - | - +body: Widget; - +formKey: AuthFormKey; - +leftContentMinWidth: double; - +leftPanelMinWidth: double; - +leftPanelPadding: EdgeInsets - ] - - [AuthScaffold]o-[<abstract>Widget] - [AuthScaffold]o-[AuthFormKey] - [AuthScaffold]o-[EdgeInsets] - - [EmailTextField - | - +labelText: String; - +hintText: String?; - +formControlName: String?; - +formControl: FormControl<dynamic>? - ] - - [EmailTextField]o-[FormControl] - - [PasswordTextField - | - +labelText: String; - +hintText: String?; - +onSubmitted: dynamic Function(FormControl<dynamic>)?; - +formControlName: String?; - +formControl: FormControl<dynamic>? - ] - - [PasswordTextField]o-[dynamic Function(FormControl<dynamic>)?] - [PasswordTextField]o-[FormControl] - - [StudyUJobsToBeDone - | - +Widget build() - ] - - [AuthFormController - | - +authRepository: IAuthRepository; - +notificationService: INotificationService; - +router: GoRouter; - +emailControl: FormControl<String>; - +passwordControl: FormControl<String>; - +passwordConfirmationControl: FormControl<String>; - +termsOfServiceControl: FormControl<bool>; - <static>+authValidationMessages: Map<String, String Function(dynamic)>; - +loginForm: FormGroup; - +signupForm: FormGroup; - +passwordForgotForm: FormGroup; - +passwordRecoveryForm: FormGroup; - +controlValidatorsByForm: Map<AuthFormKey, Map<FormControl<dynamic>, List<Validator<dynamic>>>>; - -_formKey: AuthFormKey; - +formKey: AuthFormKey; - +form: FormGroup - | - -dynamic _getFormFor(); - -dynamic _onChangeFormKey(); - +dynamic resetControlsFor(); - -dynamic _forceValidationMessages(); - +dynamic signUp(); - -dynamic _signUp(); - +dynamic signIn(); - -dynamic _signInWith(); - +dynamic signOut(); - +dynamic resetPasswordForEmail(); - +dynamic sendPasswordResetLink(); - +dynamic recoverPassword(); - +dynamic updateUser(); - -dynamic _readDebugUser() - ] - - [AuthFormController]o-[<abstract>IAuthRepository] - [AuthFormController]o-[<abstract>INotificationService] - [AuthFormController]o-[GoRouter] - [AuthFormController]o-[FormControl] - [AuthFormController]o-[FormGroup] - [AuthFormController]o-[AuthFormKey] - [<abstract>IFormGroupController]<:--[AuthFormController] - - [AuthFormKey - | - +index: int; - <static>+values: List<AuthFormKey>; - <static>+login: AuthFormKey; - <static>+signup: AuthFormKey; - <static>+passwordForgot: AuthFormKey; - <static>+passwordRecovery: AuthFormKey; - <static>-_loginSubmit: AuthFormKey; - <static>-_signupSubmit: AuthFormKey - ] - - [AuthFormKey]o-[AuthFormKey] - [Enum]<:--[AuthFormKey] - - [AppStatus - | - +index: int; - <static>+values: List<AppStatus>; - <static>+initializing: AppStatus; - <static>+initialized: AppStatus - ] - - [AppStatus]o-[AppStatus] - [Enum]<:--[AppStatus] - - [FormArrayTable - | - +control: AbstractControl<dynamic>; - +items: List<T>; - +onSelectItem: void Function(T); - +getActionsAt: List<ModelAction<dynamic>> Function(T, int); - +onNewItem: void Function()?; - +rowTitle: String Function(T); - +onNewItemLabel: String; - +sectionTitle: String?; - +sectionDescription: String?; - +emptyIcon: IconData?; - +emptyTitle: String?; - +emptyDescription: String?; - +sectionTitleDivider: bool?; - +rowPrefix: Widget Function(BuildContext, T, int)?; - +rowSuffix: Widget Function(BuildContext, T, int)?; - +leadingWidget: Widget?; - +itemsSectionPadding: EdgeInsets?; - +hideLeadingTrailingWhenEmpty: bool; - <static>+columns: List<StandardTableColumn> - | - +Widget build(); - -List<Widget> _buildRow(); - -Widget _newItemButton() - ] - - [FormArrayTable]o-[<abstract>AbstractControl] - [FormArrayTable]o-[void Function(T)] - [FormArrayTable]o-[List<ModelAction<dynamic>> Function(T, int)] - [FormArrayTable]o-[void Function()?] - [FormArrayTable]o-[String Function(T)] - [FormArrayTable]o-[IconData] - [FormArrayTable]o-[Widget Function(BuildContext, T, int)?] - [FormArrayTable]o-[<abstract>Widget] - [FormArrayTable]o-[EdgeInsets] - - [<abstract>ManagedFormViewModel - | - +ManagedFormViewModel<T> createDuplicate() - ] - - [<abstract>FormViewModel]<:-[<abstract>ManagedFormViewModel] - - [FormViewModelNotFoundException - ] - - [Exception]<:--[FormViewModelNotFoundException] - - [FormViewModelCollection - | - +formViewModels: List<T>; - +formArray: FormArray<dynamic>; - +stagedViewModels: List<T>; - +retrievableViewModels: List<T>; - +formData: List<D> - | - +void add(); - +T remove(); - +T? findWhere(); - +T? removeWhere(); - +bool contains(); - +void stage(); - +T commit(); - +void reset(); - +void read() - ] - - [FormViewModelCollection]o-[FormArray] - - [CustomFormControl - | - -_onValueChangedDebouncer: Debouncer?; - -_onStatusChangedDebouncer: Debouncer?; - +onValueChanged: void Function(T?)?; - +onStatusChanged: void Function(ControlStatus)?; - +onStatusChangedDebounceTime: int?; - +onValueChangedDebounceTime: int? - | - +void dispose() - ] - - [CustomFormControl]o-[Debouncer] - [CustomFormControl]o-[void Function(T?)?] - [CustomFormControl]o-[void Function(ControlStatus)?] - [FormControl]<:-[CustomFormControl] - - [UnsavedChangesDialog - | - +Widget build() - ] - - [<abstract>FormValidationSetEnum - ] - - [FormControlValidation - | - +control: AbstractControl<dynamic>; - +validators: List<Validator<dynamic>>; - +asyncValidators: List<AsyncValidator<dynamic>>?; - +validationMessages: Map<String, String Function(Object)> - | - +FormControlValidation merge() - ] - - [FormControlValidation]o-[<abstract>AbstractControl] - - [<abstract>IFormData - | - +id: String - | - +IFormData copy() - ] - - [FormInvalidException - ] - - [Exception]<:--[FormInvalidException] - - [FormConfigException - | - +message: String? - ] - - [Exception]<:--[FormConfigException] - - [<abstract>IFormViewModelDelegate - | - +dynamic onSave(); - +void onCancel() - ] - - [<abstract>IFormGroupController - | - +form: FormGroup - ] - - [<abstract>IFormGroupController]o-[FormGroup] - - [FormControlOption - | - +value: T; - +label: String; - +description: String?; - +props: List<Object?> - ] - - [<abstract>Equatable]<:-[FormControlOption] - - [<abstract>FormViewModel - | - -_formData: T?; - -_formMode: FormMode; - -_validationSet: FormValidationSetEnum?; - +delegate: IFormViewModelDelegate<FormViewModel<dynamic>>?; - +autosave: bool; - -_immediateFormChildrenSubscriptions: List<StreamSubscription<dynamic>>; - -_immediateFormChildrenListenerDebouncer: Debouncer?; - -_autosaveOperation: CancelableOperation<dynamic>?; - -_defaultControlValidators: Map<String, Tuple<List<Validator<dynamic>>, List<AsyncValidator<dynamic>>>>; - +prevFormValue: Map<String, dynamic>?; - <static>-_formKey: String; - +formData: T?; - +formMode: FormMode; - +isReadonly: bool; - +validationSet: FormValidationSetEnum?; - +isDirty: bool; - +title: String; - +isValid: bool; - +titles: Map<FormMode, String>; - +sharedValidationConfig: Map<FormValidationSetEnum, List<FormControlValidation>> - | - -dynamic _setFormData(); - -dynamic _rememberDefaultControlValidators(); - -Tuple<List<Validator<dynamic>>, List<AsyncValidator<dynamic>>>? _getDefaultValidators(); - -dynamic _disableAllControls(); - -dynamic _formModeUpdated(); - -dynamic _restoreControlsFromFormData(); - +void revalidate(); - -void _applyValidationSet(); - +void read(); - +dynamic save(); - +dynamic cancel(); - +void enableAutosave(); - +void listenToImmediateFormChildren(); - +dynamic markFormGroupChanged(); - +void dispose(); - +void setControlsFrom(); - +T buildFormData(); - +void initControls() - ] - - [<abstract>FormViewModel]o-[FormMode] - [<abstract>FormViewModel]o-[<abstract>FormValidationSetEnum] - [<abstract>FormViewModel]o-[<abstract>IFormViewModelDelegate] - [<abstract>FormViewModel]o-[Debouncer] - [<abstract>FormViewModel]o-[CancelableOperation] - [<abstract>IFormGroupController]<:--[<abstract>FormViewModel] - - [FormMode - | - +index: int; - <static>+values: List<FormMode>; - <static>+create: FormMode; - <static>+readonly: FormMode; - <static>+edit: FormMode - ] - - [FormMode]o-[FormMode] - [Enum]<:--[FormMode] - - [EnrolledBadge - | - +enrolledCount: int - | - +Widget build() - ] - - [StudyRecruitController - | - +inviteCodeRepository: IInviteCodeRepository; - -_invitesSubscription: StreamSubscription<List<WrappedModel<StudyInvite>>>? - | - -dynamic _subscribeInvites(); - +Intervention? getIntervention(); - +int getParticipantCountForInvite(); - +List<ModelAction<dynamic>> availableActions(); - +List<ModelAction<dynamic>> availableInlineActions(); - +void dispose() - ] - - [StudyRecruitController]o-[<abstract>IInviteCodeRepository] - [StudyRecruitController]o-[StreamSubscription] - [StudyBaseController]<:-[StudyRecruitController] - [<abstract>IModelActionProvider]<:--[StudyRecruitController] - - [StudyRecruitScreen - | - +Widget build(); - -Widget _inviteCodesSectionHeader(); - -Widget _newInviteCodeButton(); - -dynamic _onSelectInvite() - ] - - [<abstract>StudyPageWidget]<:-[StudyRecruitScreen] - - [InviteCodeFormView - | - +formViewModel: InviteCodeFormViewModel - | - +Widget build(); - -List<FormTableRow> _conditionalInterventionRows() - ] - - [InviteCodeFormView]o-[InviteCodeFormViewModel] - [<abstract>FormConsumerWidget]<:-[InviteCodeFormView] - - [StudyInvitesTable - | - +invites: List<StudyInvite>; - +onSelect: void Function(StudyInvite); - +getActions: List<ModelAction<dynamic>> Function(StudyInvite); - +getInlineActions: List<ModelAction<dynamic>> Function(StudyInvite); - +getIntervention: Intervention? Function(String); - +getParticipantCountForInvite: int Function(StudyInvite) - | - +Widget build(); - -List<Widget> _buildRow() - ] - - [StudyInvitesTable]o-[void Function(StudyInvite)] - [StudyInvitesTable]o-[List<ModelAction<dynamic>> Function(StudyInvite)] - [StudyInvitesTable]o-[Intervention? Function(String)] - [StudyInvitesTable]o-[int Function(StudyInvite)] - - [InviteCodeFormViewModel - | - +study: Study; - +inviteCodeRepository: IInviteCodeRepository; - +codeControl: FormControl<String>; - +codeControlValidationMessages: Map<String, String Function(dynamic)>; - +isPreconfiguredScheduleControl: FormControl<bool>; - +preconfiguredScheduleTypeControl: FormControl<PhaseSequence>; - +interventionAControl: FormControl<String>; - +interventionBControl: FormControl<String>; - +form: FormGroup; - +titles: Map<FormMode, String>; - +interventionControlOptions: List<FormControlOption<String>>; - +preconfiguredScheduleTypeOptions: List<FormControlOption<PhaseSequence>>; - +isPreconfiguredSchedule: bool; - +preconfiguredSchedule: List<String>? - | - +void initControls(); - -dynamic _uniqueInviteCode(); - +void regenerateCode(); - -String _generateCode(); - +StudyInvite buildFormData(); - +void setControlsFrom(); - +dynamic save() - ] - - [InviteCodeFormViewModel]o-[Study] - [InviteCodeFormViewModel]o-[<abstract>IInviteCodeRepository] - [InviteCodeFormViewModel]o-[FormControl] - [InviteCodeFormViewModel]o-[FormGroup] - [<abstract>FormViewModel]<:-[InviteCodeFormViewModel] - - [PublishSuccessDialog - | - +Widget build() - ] - - [<abstract>StudyPageWidget]<:-[PublishSuccessDialog] - - [PublishDialog - | - +Widget build() - ] - - [<abstract>StudyPageWidget]<:-[PublishDialog] - - [PublishConfirmationDialog - | - +Widget build() - ] - - [<abstract>StudyPageWidget]<:-[PublishConfirmationDialog] - - [FrameControlsWidget - | - +onRefresh: void Function()?; - +onOpenNewTab: void Function()?; - +enabled: bool - | - +Widget build() - ] - - [FrameControlsWidget]o-[void Function()?] - [<abstract>ConsumerWidget]<:-[FrameControlsWidget] - - [<abstract>IStudyStatusBadgeViewModel - | - +studyParticipation: Participation?; - +studyStatus: StudyStatus? - ] - - [<abstract>IStudyStatusBadgeViewModel]o-[Participation] - [<abstract>IStudyStatusBadgeViewModel]o-[StudyStatus] - - [StudyStatusBadge - | - +participation: Participation?; - +status: StudyStatus?; - +type: BadgeType; - +showPrefixIcon: bool; - +showTooltip: bool - | - +Widget build() - ] - - [StudyStatusBadge]o-[Participation] - [StudyStatusBadge]o-[StudyStatus] - [StudyStatusBadge]o-[BadgeType] - - [RouteInformation - | - +route: String?; - +extra: String?; - +cmd: String?; - +data: String? - | - +String toString() - ] - - [<abstract>PlatformController - | - +studyId: String; - +baseSrc: String; - +previewSrc: String; - +routeInformation: RouteInformation; - +frameWidget: Widget - | - +void activate(); - +void registerViews(); - +void generateUrl(); - +void navigate(); - +void refresh(); - +void listen(); - +void send(); - +void openNewPage() - ] - - [<abstract>PlatformController]o-[RouteInformation] - [<abstract>PlatformController]o-[<abstract>Widget] - - [WebController - | - +iFrameElement: IFrameElement - | - +void activate(); - +void registerViews(); - +void generateUrl(); - +void navigate(); - +void refresh(); - +void openNewPage(); - +void listen(); - +void send() - ] - - [WebController]o-[IFrameElement] - [<abstract>PlatformController]<:-[WebController] - - [MobileController - | - +void openNewPage(); - +void refresh(); - +void registerViews(); - +void listen(); - +void send(); - +void navigate(); - +void activate(); - +void generateUrl() - ] - - [<abstract>PlatformController]<:-[MobileController] - - [StudyController - | - +notificationService: INotificationService; - +studyEventsSubscription: StreamSubscription<ModelEvent<Study>>?; - +studyActions: List<ModelAction<dynamic>> - | - +dynamic syncStudyStatus(); - +dynamic onStudySubscriptionUpdate(); - -dynamic _redirectNewToActualStudyID(); - +dynamic publishStudy(); - +void onChangeStudyParticipation(); - +void onAddParticipants(); - +void onSettingsPressed(); - +void dispose() - ] - - [StudyController]o-[<abstract>INotificationService] - [StudyController]o-[StreamSubscription] - [StudyBaseController]<:-[StudyController] - - [<abstract>IStudyNavViewModel - | - +isEditTabEnabled: bool; - +isTestTabEnabled: bool; - +isRecruitTabEnabled: bool; - +isMonitorTabEnabled: bool; - +isAnalyzeTabEnabled: bool; - +isSettingsEnabled: bool - ] - - [StudyNav - | - <static>+dynamic tabs(); - <static>+dynamic edit(); - <static>+dynamic test(); - <static>+dynamic recruit(); - <static>+dynamic monitor(); - <static>+dynamic analyze() - ] - - [StudyDesignNav - | - <static>+dynamic tabs(); - <static>+dynamic info(); - <static>+dynamic enrollment(); - <static>+dynamic interventions(); - <static>+dynamic measurements(); - <static>+dynamic reports() - ] - - [<abstract>StudyPageWidget - | - +studyId: String - | - +Widget? banner() - ] - - [<abstract>ConsumerWidget]<:-[<abstract>StudyPageWidget] - [<abstract>IWithBanner]<:--[<abstract>StudyPageWidget] - - [StudyParticipationBadge - | - +participation: Participation; - +type: BadgeType; - +showPrefixIcon: bool; - +center: bool - | - +Widget build() - ] - - [StudyParticipationBadge]o-[Participation] - [StudyParticipationBadge]o-[BadgeType] - - [StudyBaseController - | - +studyId: String; - +studyRepository: IStudyRepository; - +router: GoRouter; - +studySubscription: StreamSubscription<WrappedModel<Study>>? - | - +dynamic subscribeStudy(); - +dynamic onStudySubscriptionUpdate(); - +dynamic onStudySubscriptionError(); - +void dispose() - ] - - [StudyBaseController]o-[<abstract>IStudyRepository] - [StudyBaseController]o-[GoRouter] - [StudyBaseController]o-[StreamSubscription] - - [PreviewFrame - | - +studyId: String; - +routeArgs: StudyFormRouteArgs?; - +route: String? - ] - - [PreviewFrame]o-[<abstract>StudyFormRouteArgs] - - [<abstract>IStudyAppBarViewModel - | - +isSyncIndicatorVisible: bool; - +isStatusBadgeVisible: bool; - +isPublishVisible: bool - ] - - [<abstract>IStudyStatusBadgeViewModel]<:--[<abstract>IStudyAppBarViewModel] - [<abstract>IStudyNavViewModel]<:--[<abstract>IStudyAppBarViewModel] - - [StudyScaffold - | - +studyId: String; - +tabs: List<NavbarTab>?; - +tabsSubnav: List<NavbarTab>?; - +selectedTab: NavbarTab?; - +selectedTabSubnav: NavbarTab?; - +body: StudyPageWidget; - +drawer: Widget?; - +disableActions: bool; - +actionsSpacing: double; - +actionsPadding: double; - +layoutType: SingleColumnLayoutType?; - +appbarHeight: double; - +appbarSubnavHeight: double - ] - - [StudyScaffold]o-[NavbarTab] - [StudyScaffold]o-[<abstract>StudyPageWidget] - [StudyScaffold]o-[<abstract>Widget] - [StudyScaffold]o-[SingleColumnLayoutType] - - [WebFrame - | - +previewSrc: String; - +studyId: String - | - +Widget build() - ] - - [DisabledFrame - | - +Widget build() - ] - - [PhoneContainer - | - <static>+defaultWidth: double; - <static>+defaultHeight: double; - +width: double; - +height: double; - +borderColor: Color; - +borderWidth: double; - +borderRadius: double; - +innerContent: Widget; - +innerContentBackgroundColor: Color? - | - +Widget build() - ] - - [PhoneContainer]o-[Color] - [PhoneContainer]o-[<abstract>Widget] - - [MobileFrame - | - +Widget build() - ] - - [DesktopFrame - | - +Widget build() - ] - - [StudyTestScreen - | - +previewRoute: String? - | - +Widget build(); - +Widget? banner(); - +dynamic load(); - +dynamic save(); - +dynamic showHelp() - ] - - [<abstract>StudyPageWidget]<:-[StudyTestScreen] - - [StudySettingsFormViewModel - | - +study: AsyncValue<Study>; - +studyRepository: IStudyRepository; - <static>+defaultPublishedToRegistry: bool; - <static>+defaultPublishedToRegistryResults: bool; - +isPublishedToRegistryControl: FormControl<bool>; - +isPublishedToRegistryResultsControl: FormControl<bool>; - +form: FormGroup; - +titles: Map<FormMode, String> - | - +void setControlsFrom(); - +Study buildFormData(); - +dynamic keepControlsSynced(); - +dynamic save(); - +dynamic setLaunchDefaults() - ] - - [StudySettingsFormViewModel]o-[<abstract>AsyncValue] - [StudySettingsFormViewModel]o-[<abstract>IStudyRepository] - [StudySettingsFormViewModel]o-[FormControl] - [StudySettingsFormViewModel]o-[FormGroup] - [<abstract>FormViewModel]<:-[StudySettingsFormViewModel] - - [StudySettingsDialog - | - +Widget build() - ] - - [<abstract>StudyPageWidget]<:-[StudySettingsDialog] - - [StudyTestController - | - +authRepository: IAuthRepository; - +languageCode: String - ] - - [StudyTestController]o-[<abstract>IAuthRepository] - [StudyBaseController]<:-[StudyTestController] - - [TestAppRoutes - | - <static>+studyOverview: String; - <static>+eligibility: String; - <static>+intervention: String; - <static>+consent: String; - <static>+journey: String; - <static>+dashboard: String - ] - - [DrawerEntry - | - +localizedTitle: String Function(); - +icon: IconData?; - +localizedHelpText: String Function()?; - +enabled: bool; - +onSelected: void Function(BuildContext, WidgetRef)?; - +autoCloseDrawer: bool; - +title: String; - +helpText: String? - | - +void onClick() - ] - - [DrawerEntry]o-[String Function()] - [DrawerEntry]o-[IconData] - [DrawerEntry]o-[String Function()?] - [DrawerEntry]o-[void Function(BuildContext, WidgetRef)?] - - [GoRouterDrawerEntry - | - +intent: RoutingIntent; - +onNavigated: void Function()? - | - +void onClick() - ] - - [GoRouterDrawerEntry]o-[RoutingIntent] - [GoRouterDrawerEntry]o-[void Function()?] - [DrawerEntry]<:-[GoRouterDrawerEntry] - - [AppDrawer - | - +width: int; - +autoCloseDrawer: bool; - +leftPaddingEntries: double; - +logoPaddingVertical: double; - +logoPaddingHorizontal: double; - +logoMaxHeight: double; - +logoSectionMinHeight: double; - +logoSectionMaxHeight: double - ] - - [StudyAnalyzeScreen - | - +Widget? banner(); - +Widget build() - ] - - [<abstract>StudyPageWidget]<:-[StudyAnalyzeScreen] - - [StudyAnalyzeController - | - +dynamic onExport() - ] - - [StudyBaseController]<:-[StudyAnalyzeController] - - [StudyDesignInterventionsFormView - | - +Widget build() - ] - - [<abstract>StudyDesignPageWidget]<:-[StudyDesignInterventionsFormView] - - [InterventionFormView - | - +formViewModel: InterventionFormViewModel - ] - - [InterventionFormView]o-[InterventionFormViewModel] - - [InterventionPreview - | - +routeArgs: InterventionFormRouteArgs - | - +Widget build() - ] - - [InterventionPreview]o-[InterventionFormRouteArgs] - [<abstract>ConsumerWidget]<:-[InterventionPreview] - - [StudyScheduleFormView - | - +formViewModel: StudyScheduleControls - | - -FormTableRow _renderCustomSequence(); - +Widget build() - ] - - [StudyScheduleFormView]o-[<abstract>StudyScheduleControls] - [<abstract>FormConsumerWidget]<:-[StudyScheduleFormView] - - [InterventionTaskFormData - | - +taskId: String; - +taskTitle: String; - +taskDescription: String?; - <static>+kDefaultTitle: String; - +id: String - | - +CheckmarkTask toTask(); - +InterventionTaskFormData copy() - ] - - [<abstract>IFormDataWithSchedule]<:-[InterventionTaskFormData] - - [InterventionsFormViewModel - | - +study: Study; - +router: GoRouter; - +interventionsArray: FormArray<dynamic>; - +interventionsCollection: FormViewModelCollection<InterventionFormViewModel, InterventionFormData>; - +form: FormGroup; - +sharedValidationConfig: Map<FormValidationSetEnum, List<FormControlValidation>>; - +interventionsRequired: dynamic; - +titles: Map<FormMode, String>; - +canTestStudySchedule: bool - | - +void setControlsFrom(); - +InterventionsFormData buildFormData(); - +void read(); - +List<ModelAction<dynamic>> availableActions(); - +List<ModelAction<dynamic>> availablePopupActions(); - +List<ModelAction<dynamic>> availableInlineActions(); - +void onSelectItem(); - +void onNewItem(); - +InterventionFormViewModel provide(); - +void onCancel(); - +dynamic onSave(); - +dynamic testStudySchedule() - ] - - [InterventionsFormViewModel]o-[Study] - [InterventionsFormViewModel]o-[GoRouter] - [InterventionsFormViewModel]o-[FormArray] - [InterventionsFormViewModel]o-[FormViewModelCollection] - [InterventionsFormViewModel]o-[FormGroup] - [<abstract>FormViewModel]<:-[InterventionsFormViewModel] - [<abstract>StudyScheduleControls]<:-[InterventionsFormViewModel] - [<abstract>IFormViewModelDelegate]<:--[InterventionsFormViewModel] - [<abstract>IListActionProvider]<:--[InterventionsFormViewModel] - [<abstract>IProviderArgsResolver]<:--[InterventionsFormViewModel] - - [InterventionTaskFormViewModel - | - +taskIdControl: FormControl<String>; - +instanceIdControl: FormControl<String>; - +taskTitleControl: FormControl<String>; - +taskDescriptionControl: FormControl<String>; - +markAsCompletedControl: FormControl<bool>; - +form: FormGroup; - +taskId: String; - +instanceId: String; - +sharedValidationConfig: Map<FormValidationSetEnum, List<FormControlValidation>>; - +titleRequired: dynamic; - +titles: Map<FormMode, String> - | - +void setControlsFrom(); - +InterventionTaskFormData buildFormData(); - +InterventionTaskFormViewModel createDuplicate() - ] - - [InterventionTaskFormViewModel]o-[FormControl] - [InterventionTaskFormViewModel]o-[FormGroup] - [<abstract>ManagedFormViewModel]<:-[InterventionTaskFormViewModel] - [<abstract>WithScheduleControls]<:-[InterventionTaskFormViewModel] - - [<abstract>StudyScheduleControls - | - <static>+defaultScheduleType: PhaseSequence; - <static>+defaultScheduleTypeSequence: String; - <static>+defaultNumCycles: int; - <static>+defaultPeriodLength: int; - +sequenceTypeControl: FormControl<PhaseSequence>; - +sequenceTypeCustomControl: FormControl<String>; - +phaseDurationControl: FormControl<int>; - +numCyclesControl: FormControl<int>; - +includeBaselineControl: FormControl<bool>; - +studyScheduleControls: Map<String, FormControl<Object>>; - <static>+kNumCyclesMin: int; - <static>+kNumCyclesMax: int; - <static>+kPhaseDurationMin: int; - <static>+kPhaseDurationMax: int; - +sequenceTypeControlOptions: List<FormControlOption<PhaseSequence>>; - +studyScheduleValidationConfig: Map<FormValidationSetEnum, List<FormControlValidation>>; - +numCyclesRange: dynamic; - +phaseDurationRange: dynamic; - +customSequenceRequired: dynamic - | - +void setStudyScheduleControlsFrom(); - +StudyScheduleFormData buildStudyScheduleFormData(); - +bool isSequencingCustom() - ] - - [<abstract>StudyScheduleControls]o-[PhaseSequence] - [<abstract>StudyScheduleControls]o-[FormControl] - - [InterventionFormData - | - +interventionId: String; - +title: String; - +description: String?; - +tasksData: List<InterventionTaskFormData>?; - +iconName: String?; - <static>+kDefaultTitle: String; - +id: String - | - +Intervention toIntervention(); - +InterventionFormData copy() - ] - - [<abstract>IFormData]<:-[InterventionFormData] - - [StudyScheduleFormData - | - +sequenceType: PhaseSequence; - +sequenceTypeCustom: String; - +numCycles: int; - +phaseDuration: int; - +includeBaseline: bool; - +id: String - | - +StudySchedule toStudySchedule(); - +Study apply(); - +StudyScheduleFormData copy() - ] - - [StudyScheduleFormData]o-[PhaseSequence] - [<abstract>IStudyFormData]<:--[StudyScheduleFormData] - - [InterventionTaskFormView - | - +formViewModel: InterventionTaskFormViewModel - ] - - [InterventionTaskFormView]o-[InterventionTaskFormViewModel] - - [InterventionsFormData - | - +interventionsData: List<InterventionFormData>; - +studyScheduleData: StudyScheduleFormData; - +id: String - | - +Study apply(); - +InterventionsFormData copy() - ] - - [InterventionsFormData]o-[StudyScheduleFormData] - [<abstract>IStudyFormData]<:--[InterventionsFormData] - - [InterventionFormViewModel - | - +study: Study; - +interventionIdControl: FormControl<String>; - +interventionTitleControl: FormControl<String>; - +interventionIconControl: FormControl<IconOption>; - +interventionDescriptionControl: FormControl<String>; - +interventionTasksArray: FormArray<dynamic>; - +tasksCollection: FormViewModelCollection<InterventionTaskFormViewModel, InterventionTaskFormData>; - +form: FormGroup; - +interventionId: String; - +sharedValidationConfig: Map<FormValidationSetEnum, List<FormControlValidation>>; - +titleRequired: dynamic; - +atLeastOneTask: dynamic; - +breadcrumbsTitle: String; - +titles: Map<FormMode, String> - | - +void setControlsFrom(); - +InterventionFormData buildFormData(); - +List<ModelAction<dynamic>> availableActions(); - +List<ModelAction<dynamic>> availablePopupActions(); - +List<ModelAction<dynamic>> availableInlineActions(); - +void onSelectItem(); - +void onNewItem(); - +void onCancel(); - +dynamic onSave(); - +InterventionTaskFormViewModel provide(); - +InterventionTaskFormRouteArgs buildNewFormRouteArgs(); - +InterventionTaskFormRouteArgs buildFormRouteArgs(); - +InterventionFormViewModel createDuplicate() - ] - - [InterventionFormViewModel]o-[Study] - [InterventionFormViewModel]o-[FormControl] - [InterventionFormViewModel]o-[FormArray] - [InterventionFormViewModel]o-[FormViewModelCollection] - [InterventionFormViewModel]o-[FormGroup] - [<abstract>ManagedFormViewModel]<:-[InterventionFormViewModel] - [<abstract>IFormViewModelDelegate]<:--[InterventionFormViewModel] - [<abstract>IListActionProvider]<:--[InterventionFormViewModel] - [<abstract>IProviderArgsResolver]<:--[InterventionFormViewModel] - - [StudyDesignReportsFormView - | - +Widget build(); - -dynamic _showReportItemSidesheetWithArgs() - ] - - [<abstract>StudyDesignPageWidget]<:-[StudyDesignReportsFormView] - - [ReportItemFormData - | - +isPrimary: bool; - +section: ReportSection; - +id: String - | - <static>+dynamic fromDomainModel(); - +ReportItemFormData copy() - ] - - [ReportItemFormData]o-[<abstract>ReportSection] - [<abstract>IFormData]<:-[ReportItemFormData] - - [DataReferenceEditor - | - +formControl: FormControl<DataReferenceIdentifier<T>>; - +availableTasks: List<Task>; - +buildReactiveDropdownField: ReactiveDropdownField<dynamic> - | - +FormTableRow buildFormTableRow(); - -List<DropdownMenuItem<DataReferenceIdentifier<dynamic>>> _dataReferenceItems() - ] - - [DataReferenceEditor]o-[FormControl] - [DataReferenceEditor]o-[ReactiveDropdownField] - - [TemporalAggregationFormatted - | - -_value: TemporalAggregation; - <static>+values: List<TemporalAggregationFormatted>; - +value: TemporalAggregation; - +string: String; - +icon: IconData?; - +hashCode: int - | - +bool ==(); - +String toString(); - +String toJson(); - <static>+TemporalAggregationFormatted fromJson() - ] - - [TemporalAggregationFormatted]o-[TemporalAggregation] - [TemporalAggregationFormatted]o-[IconData] - - [ImprovementDirectionFormatted - | - -_value: ImprovementDirection; - <static>+values: List<ImprovementDirectionFormatted>; - +value: ImprovementDirection; - +string: String; - +icon: IconData?; - +hashCode: int - | - +bool ==(); - +String toString(); - +String toJson(); - <static>+ImprovementDirectionFormatted fromJson() - ] - - [ImprovementDirectionFormatted]o-[ImprovementDirection] - [ImprovementDirectionFormatted]o-[IconData] - - [ReportSectionType - | - +index: int; - <static>+values: List<ReportSectionType>; - <static>+average: ReportSectionType; - <static>+linearRegression: ReportSectionType - ] - - [ReportSectionType]o-[ReportSectionType] - [Enum]<:--[ReportSectionType] - - [AverageSectionFormView - | - +formViewModel: ReportItemFormViewModel; - +studyId: String; - +reportSectionColumnWidth: Map<int, TableColumnWidth> - | - +Widget build() - ] - - [AverageSectionFormView]o-[ReportItemFormViewModel] - [<abstract>ConsumerWidget]<:-[AverageSectionFormView] - - [DataReferenceIdentifier - | - +hashCode: int - | - +bool ==() - ] - - [DataReference]<:-[DataReferenceIdentifier] - - [LinearRegressionSectionFormView - | - +formViewModel: ReportItemFormViewModel; - +studyId: String; - +reportSectionColumnWidth: Map<int, TableColumnWidth> - | - +Widget build() - ] - - [LinearRegressionSectionFormView]o-[ReportItemFormViewModel] - [<abstract>ConsumerWidget]<:-[LinearRegressionSectionFormView] - - [ReportItemFormViewModel - | - <static>+defaultSectionType: ReportSectionType; - +sectionIdControl: FormControl<String>; - +sectionTypeControl: FormControl<ReportSectionType>; - +titleControl: FormControl<String>; - +descriptionControl: FormControl<String>; - +sectionControl: FormControl<ReportSection>; - +dataReferenceControl: FormControl<DataReferenceIdentifier<num>>; - +temporalAggregationControl: FormControl<TemporalAggregationFormatted>; - +improvementDirectionControl: FormControl<ImprovementDirectionFormatted>; - +alphaControl: FormControl<double>; - -_controlsBySectionType: Map<ReportSectionType, FormGroup>; - -_sharedValidationConfig: Map<FormValidationSetEnum, List<FormControlValidation>>; - -_validationConfigsBySectionType: Map<ReportSectionType, Map<FormValidationSetEnum, List<FormControlValidation>>>; - +sectionBaseControls: Map<String, AbstractControl<dynamic>>; - +form: FormGroup; - +sectionId: String; - +sectionType: ReportSectionType; - <static>+sectionTypeControlOptions: List<FormControlOption<ReportSectionType>>; - <static>+temporalAggregationControlOptions: List<FormControlOption<TemporalAggregationFormatted>>; - <static>+improvementDirectionControlOptions: List<FormControlOption<ImprovementDirectionFormatted>>; - +titles: Map<FormMode, String>; - +sharedValidationConfig: Map<FormValidationSetEnum, List<FormControlValidation>>; - +titleRequired: dynamic; - +descriptionRequired: dynamic; - +dataReferenceRequired: dynamic; - +aggregationRequired: dynamic; - +improvementDirectionRequired: dynamic; - +alphaConfidenceRequired: dynamic - | - -List<FormControlValidation> _getValidationConfig(); - +ReportItemFormData buildFormData(); - +ReportItemFormViewModel createDuplicate(); - +dynamic onSectionTypeChanged(); - -void _updateFormControls(); - +void setControlsFrom() - ] - - [ReportItemFormViewModel]o-[ReportSectionType] - [ReportItemFormViewModel]o-[FormControl] - [ReportItemFormViewModel]o-[FormGroup] - [<abstract>ManagedFormViewModel]<:-[ReportItemFormViewModel] - - [ReportItemFormView - | - +formViewModel: ReportItemFormViewModel; - +studyId: String; - +reportSectionColumnWidth: dynamic; - +sectionTypeBodyBuilder: Widget Function(BuildContext) - | - +Widget build(); - -dynamic _buildSectionText(); - -dynamic _buildSectionTypeHeader() - ] - - [ReportItemFormView]o-[ReportItemFormViewModel] - [ReportItemFormView]o-[Widget Function(BuildContext)] - - [ReportsFormViewModel - | - +study: Study; - +router: GoRouter; - +reportItemDelegate: ReportFormItemDelegate; - +reportItemArray: FormArray<dynamic>; - +reportItemFormViewModels: FormViewModelCollection<ReportItemFormViewModel, ReportItemFormData>; - +form: FormGroup; - +reportItemModels: List<ReportItemFormViewModel>; - +sharedValidationConfig: Map<FormValidationSetEnum, List<FormControlValidation>>; - +titles: Map<FormMode, String>; - +canTestConsent: bool - | - +void setControlsFrom(); - +ReportsFormData buildFormData(); - +void read(); - +ReportItemFormRouteArgs buildNewReportItemFormRouteArgs(); - +ReportItemFormRouteArgs buildReportItemFormRouteArgs(); - +dynamic testReport(); - +void onCancel(); - +dynamic onSave(); - +ReportItemFormViewModel provide() - ] - - [ReportsFormViewModel]o-[Study] - [ReportsFormViewModel]o-[GoRouter] - [ReportsFormViewModel]o-[ReportFormItemDelegate] - [ReportsFormViewModel]o-[FormArray] - [ReportsFormViewModel]o-[FormViewModelCollection] - [ReportsFormViewModel]o-[FormGroup] - [<abstract>FormViewModel]<:-[ReportsFormViewModel] - [<abstract>IFormViewModelDelegate]<:--[ReportsFormViewModel] - [<abstract>IProviderArgsResolver]<:--[ReportsFormViewModel] - - [ReportFormItemDelegate - | - +formViewModelCollection: FormViewModelCollection<ReportItemFormViewModel, ReportItemFormData>; - +owner: ReportsFormViewModel; - +propagateOnSave: bool; - +validationSet: dynamic - | - +void onCancel(); - +dynamic onSave(); - +ReportItemFormViewModel provide(); - +List<ModelAction<dynamic>> availableActions(); - +void onNewItem(); - +void onSelectItem() - ] - - [ReportFormItemDelegate]o-[FormViewModelCollection] - [ReportFormItemDelegate]o-[ReportsFormViewModel] - [<abstract>IFormViewModelDelegate]<:--[ReportFormItemDelegate] - [<abstract>IListActionProvider]<:--[ReportFormItemDelegate] - [<abstract>IProviderArgsResolver]<:--[ReportFormItemDelegate] - - [ReportBadge - | - +status: ReportStatus?; - +type: BadgeType; - +showPrefixIcon: bool; - +showTooltip: bool - | - +Widget build() - ] - - [ReportBadge]o-[ReportStatus] - [ReportBadge]o-[BadgeType] - - [ReportsFormData - | - +reportItems: List<ReportItemFormData>; - +id: String - | - +Study apply(); - +ReportsFormData copy() - ] - - [<abstract>IStudyFormData]<:--[ReportsFormData] - - [ReportStatus - | - +index: int; - <static>+values: List<ReportStatus>; - <static>+primary: ReportStatus; - <static>+secondary: ReportStatus - ] - - [ReportStatus]o-[ReportStatus] - [Enum]<:--[ReportStatus] - - [<abstract>IStudyFormData - | - +Study apply() - ] - - [<abstract>IFormData]<:--[<abstract>IStudyFormData] - - [StudyInfoFormViewModel - | - +study: Study; - +titleControl: FormControl<String>; - +iconControl: FormControl<IconOption>; - +descriptionControl: FormControl<String>; - +organizationControl: FormControl<String>; - +reviewBoardControl: FormControl<String>; - +reviewBoardNumberControl: FormControl<String>; - +researchersControl: FormControl<String>; - +emailControl: FormControl<String>; - +websiteControl: FormControl<String>; - +phoneControl: FormControl<String>; - +additionalInfoControl: FormControl<String>; - +form: FormGroup; - +titles: Map<FormMode, String>; - +sharedValidationConfig: Map<FormValidationSetEnum, List<FormControlValidation>>; - +titleRequired: dynamic; - +descriptionRequired: dynamic; - +iconRequired: dynamic; - +organizationRequired: dynamic; - +reviewBoardRequired: dynamic; - +reviewBoardNumberRequired: dynamic; - +researchersRequired: dynamic; - +emailRequired: dynamic; - +phoneRequired: dynamic; - +emailFormat: dynamic; - +websiteFormat: dynamic - | - +void setControlsFrom(); - +StudyInfoFormData buildFormData() - ] - - [StudyInfoFormViewModel]o-[Study] - [StudyInfoFormViewModel]o-[FormControl] - [StudyInfoFormViewModel]o-[FormGroup] - [<abstract>FormViewModel]<:-[StudyInfoFormViewModel] - - [StudyDesignInfoFormView - | - +Widget build() - ] - - [<abstract>StudyDesignPageWidget]<:-[StudyDesignInfoFormView] - - [StudyInfoFormData - | - +title: String; - +description: String?; - +iconName: String; - +contactInfoFormData: StudyContactInfoFormData; - +id: String - | - +Study apply(); - +StudyInfoFormData copy() - ] - - [StudyInfoFormData]o-[StudyContactInfoFormData] - [<abstract>IStudyFormData]<:--[StudyInfoFormData] - - [StudyContactInfoFormData - | - +organization: String?; - +institutionalReviewBoard: String?; - +institutionalReviewBoardNumber: String?; - +researchers: String?; - +email: String?; - +website: String?; - +phone: String?; - +additionalInfo: String?; - +id: String - | - +Study apply(); - +StudyInfoFormData copy() - ] - - [<abstract>IStudyFormData]<:--[StudyContactInfoFormData] - - [StudyFormValidationSet - | - +index: int; - <static>+values: List<StudyFormValidationSet> - ] - - [Enum]<:--[StudyFormValidationSet] - - [MeasurementsFormData - | - +surveyMeasurements: List<MeasurementSurveyFormData>; - +id: String - | - +Study apply(); - +MeasurementsFormData copy() - ] - - [<abstract>IStudyFormData]<:--[MeasurementsFormData] - - [MeasurementSurveyFormView - | - +formViewModel: MeasurementSurveyFormViewModel - ] - - [MeasurementSurveyFormView]o-[MeasurementSurveyFormViewModel] - - [SurveyPreview - | - +routeArgs: MeasurementFormRouteArgs - | - +Widget build() - ] - - [SurveyPreview]o-[MeasurementFormRouteArgs] - [<abstract>ConsumerWidget]<:-[SurveyPreview] - - [MeasurementSurveyFormData - | - +measurementId: String; - +title: String; - +introText: String?; - +outroText: String?; - +questionnaireFormData: QuestionnaireFormData; - <static>+kDefaultTitle: String; - +id: String - | - +QuestionnaireTask toQuestionnaireTask(); - +MeasurementSurveyFormData copy() - ] - - [MeasurementSurveyFormData]o-[QuestionnaireFormData] - [<abstract>IFormDataWithSchedule]<:-[MeasurementSurveyFormData] - - [MeasurementSurveyFormViewModel - | - +study: Study; - +measurementIdControl: FormControl<String>; - +instanceIdControl: FormControl<String>; - +surveyTitleControl: FormControl<String>; - +surveyIntroTextControl: FormControl<String>; - +surveyOutroTextControl: FormControl<String>; - +form: FormGroup; - +measurementId: String; - +instanceId: String; - +sharedValidationConfig: Map<FormValidationSetEnum, List<FormControlValidation>>; - +titleRequired: dynamic; - +atLeastOneQuestion: dynamic; - +breadcrumbsTitle: String; - +titles: Map<FormMode, String> - | - +void setControlsFrom(); - +MeasurementSurveyFormData buildFormData(); - +List<ModelAction<dynamic>> availableActions(); - +List<ModelAction<dynamic>> availablePopupActions(); - +List<ModelAction<dynamic>> availableInlineActions(); - +void onSelectItem(); - +void onNewItem(); - +SurveyQuestionFormRouteArgs buildNewFormRouteArgs(); - +SurveyQuestionFormRouteArgs buildFormRouteArgs(); - +MeasurementSurveyFormViewModel createDuplicate() - ] - - [MeasurementSurveyFormViewModel]o-[Study] - [MeasurementSurveyFormViewModel]o-[FormControl] - [MeasurementSurveyFormViewModel]o-[FormGroup] - [<abstract>ManagedFormViewModel]<:-[MeasurementSurveyFormViewModel] - [<abstract>WithQuestionnaireControls]<:-[MeasurementSurveyFormViewModel] - [<abstract>WithScheduleControls]<:-[MeasurementSurveyFormViewModel] - [<abstract>IFormViewModelDelegate]<:--[MeasurementSurveyFormViewModel] - [<abstract>IListActionProvider]<:--[MeasurementSurveyFormViewModel] - [<abstract>IProviderArgsResolver]<:--[MeasurementSurveyFormViewModel] - - [StudyDesignMeasurementsFormView - | - +Widget build() - ] - - [<abstract>StudyDesignPageWidget]<:-[StudyDesignMeasurementsFormView] - - [MeasurementsFormViewModel - | - +study: Study; - +router: GoRouter; - +measurementsArray: FormArray<dynamic>; - +surveyMeasurementFormViewModels: FormViewModelCollection<MeasurementSurveyFormViewModel, MeasurementSurveyFormData>; - +form: FormGroup; - +measurementViewModels: List<MeasurementSurveyFormViewModel>; - +sharedValidationConfig: Map<FormValidationSetEnum, List<FormControlValidation>>; - +measurementRequired: dynamic; - +titles: Map<FormMode, String> - | - +void read(); - +void setControlsFrom(); - +MeasurementsFormData buildFormData(); - +List<ModelAction<dynamic>> availableActions(); - +List<ModelAction<dynamic>> availablePopupActions(); - +List<ModelAction<dynamic>> availableInlineActions(); - +void onSelectItem(); - +void onNewItem(); - +MeasurementSurveyFormViewModel provide(); - +void onCancel(); - +dynamic onSave() - ] - - [MeasurementsFormViewModel]o-[Study] - [MeasurementsFormViewModel]o-[GoRouter] - [MeasurementsFormViewModel]o-[FormArray] - [MeasurementsFormViewModel]o-[FormViewModelCollection] - [MeasurementsFormViewModel]o-[FormGroup] - [<abstract>FormViewModel]<:-[MeasurementsFormViewModel] - [<abstract>IFormViewModelDelegate]<:--[MeasurementsFormViewModel] - [<abstract>IListActionProvider]<:--[MeasurementsFormViewModel] - [<abstract>IProviderArgsResolver]<:--[MeasurementsFormViewModel] - - [StudyFormScaffold - | - +studyId: String; - +formViewModelBuilder: T Function(WidgetRef); - +formViewBuilder: Widget Function(T) - | - +Widget build() - ] - - [StudyFormScaffold]o-[T Function(WidgetRef)] - [StudyFormScaffold]o-[Widget Function(T)] - [<abstract>ConsumerWidget]<:-[StudyFormScaffold] - - [ConsentItemFormViewModel - | - +consentIdControl: FormControl<String>; - +titleControl: FormControl<String>; - +descriptionControl: FormControl<String>; - +iconControl: FormControl<IconOption>; - +form: FormGroup; - +consentId: String; - +sharedValidationConfig: Map<FormValidationSetEnum, List<FormControlValidation>>; - +titleRequired: dynamic; - +descriptionRequired: dynamic; - +titles: Map<FormMode, String> - | - +void setControlsFrom(); - +ConsentItemFormData buildFormData(); - +ConsentItemFormViewModel createDuplicate() - ] - - [ConsentItemFormViewModel]o-[FormControl] - [ConsentItemFormViewModel]o-[FormGroup] - [<abstract>ManagedFormViewModel]<:-[ConsentItemFormViewModel] - - [StudyDesignEnrollmentFormView - | - +Widget build(); - -dynamic _showScreenerQuestionSidesheetWithArgs(); - -dynamic _showConsentItemSidesheetWithArgs() - ] - - [<abstract>StudyDesignPageWidget]<:-[StudyDesignEnrollmentFormView] - - [<abstract>IScreenerQuestionLogicFormViewModel - | - +isDirtyOptionsBannerVisible: bool - ] - - [ScreenerQuestionLogicFormView - | - +formViewModel: ScreenerQuestionFormViewModel - | - +Widget build(); - -dynamic _buildInfoBanner(); - -dynamic _buildAnswerOptionsLogicControls(); - -List<Widget> _buildOptionLogicRow() - ] - - [ScreenerQuestionLogicFormView]o-[ScreenerQuestionFormViewModel] - [<abstract>FormConsumerWidget]<:-[ScreenerQuestionLogicFormView] - - [ConsentItemFormData - | - +consentId: String; - +title: String; - +description: String; - +iconName: String?; - +id: String - | - +ConsentItem toConsentItem(); - +ConsentItemFormData copy() - ] - - [<abstract>IFormData]<:-[ConsentItemFormData] - - [ConsentItemFormView - | - +formViewModel: ConsentItemFormViewModel - ] - - [ConsentItemFormView]o-[ConsentItemFormViewModel] - - [EnrollmentFormData - | - <static>+kDefaultEnrollmentType: Participation; - +enrollmentType: Participation; - +questionnaireFormData: QuestionnaireFormData; - +consentItemsFormData: List<ConsentItemFormData>?; - +id: String - | - +Study apply(); - +EnrollmentFormData copy() - ] - - [EnrollmentFormData]o-[Participation] - [EnrollmentFormData]o-[QuestionnaireFormData] - [<abstract>IStudyFormData]<:--[EnrollmentFormData] - - [ScreenerQuestionFormViewModel - | - <static>+defaultResponseOptionValidity: bool; - +responseOptionsDisabledArray: FormArray<dynamic>; - +responseOptionsLogicControls: FormArray<bool>; - +responseOptionsLogicDescriptionControls: FormArray<String>; - -_questionBaseControls: Map<String, AbstractControl<dynamic>>; - +prevResponseOptionControls: List<AbstractControl<dynamic>>; - +prevResponseOptionValues: List<dynamic>; - +responseOptionsDisabledControls: List<AbstractControl<dynamic>>; - +logicControlOptions: List<FormControlOption<bool>>; - +questionBaseControls: Map<String, AbstractControl<dynamic>>; - +isDirtyOptionsBannerVisible: bool - | - +dynamic onResponseOptionsChanged(); - +void setControlsFrom(); - +QuestionFormData buildFormData(); - -List<FormControl<dynamic>> _copyFormControls(); - -AbstractControl<dynamic>? _findAssociatedLogicControlFor(); - -AbstractControl<dynamic>? _findAssociatedControlFor(); - +ScreenerQuestionFormViewModel createDuplicate() - ] - - [ScreenerQuestionFormViewModel]o-[FormArray] - [QuestionFormViewModel]<:-[ScreenerQuestionFormViewModel] - [<abstract>IScreenerQuestionLogicFormViewModel]<:--[ScreenerQuestionFormViewModel] - - [EnrollmentFormViewModel - | - +study: Study; - +router: GoRouter; - +consentItemDelegate: EnrollmentFormConsentItemDelegate; - +enrollmentTypeControl: FormControl<Participation>; - +consentItemArray: FormArray<dynamic>; - +consentItemFormViewModels: FormViewModelCollection<ConsentItemFormViewModel, ConsentItemFormData>; - +form: FormGroup; - +enrollmentTypeControlOptions: List<FormControlOption<Participation>>; - +consentItemModels: List<ConsentItemFormViewModel>; - +sharedValidationConfig: Map<FormValidationSetEnum, List<FormControlValidation>>; - +titles: Map<FormMode, String>; - +canTestScreener: bool; - +canTestConsent: bool; - +questionTitles: Map<FormMode, String Function()> - | - +void setControlsFrom(); - +EnrollmentFormData buildFormData(); - +void read(); - +List<ModelAction<dynamic>> availableActions(); - +List<ModelAction<dynamic>> availablePopupActions(); - +List<ModelAction<dynamic>> availableInlineActions(); - +void onSelectItem(); - +void onNewItem(); - +ScreenerQuestionFormRouteArgs buildNewScreenerQuestionFormRouteArgs(); - +ScreenerQuestionFormRouteArgs buildScreenerQuestionFormRouteArgs(); - +ConsentItemFormRouteArgs buildNewConsentItemFormRouteArgs(); - +ConsentItemFormRouteArgs buildConsentItemFormRouteArgs(); - +dynamic testScreener(); - +dynamic testConsent(); - +ScreenerQuestionFormViewModel provideQuestionFormViewModel() - ] - - [EnrollmentFormViewModel]o-[Study] - [EnrollmentFormViewModel]o-[GoRouter] - [EnrollmentFormViewModel]o-[EnrollmentFormConsentItemDelegate] - [EnrollmentFormViewModel]o-[FormControl] - [EnrollmentFormViewModel]o-[FormArray] - [EnrollmentFormViewModel]o-[FormViewModelCollection] - [EnrollmentFormViewModel]o-[FormGroup] - [<abstract>FormViewModel]<:-[EnrollmentFormViewModel] - [<abstract>WithQuestionnaireControls]<:-[EnrollmentFormViewModel] - [<abstract>IFormViewModelDelegate]<:--[EnrollmentFormViewModel] - [<abstract>IListActionProvider]<:--[EnrollmentFormViewModel] - [<abstract>IProviderArgsResolver]<:--[EnrollmentFormViewModel] - - [EnrollmentFormConsentItemDelegate - | - +formViewModels: FormViewModelCollection<ConsentItemFormViewModel, ConsentItemFormData>; - +owner: EnrollmentFormViewModel; - +propagateOnSave: bool; - +validationSet: dynamic - | - +void onCancel(); - +dynamic onSave(); - +ConsentItemFormViewModel provide(); - +List<ModelAction<dynamic>> availableActions(); - +void onNewItem(); - +void onSelectItem() - ] - - [EnrollmentFormConsentItemDelegate]o-[FormViewModelCollection] - [EnrollmentFormConsentItemDelegate]o-[EnrollmentFormViewModel] - [<abstract>IFormViewModelDelegate]<:--[EnrollmentFormConsentItemDelegate] - [<abstract>IListActionProvider]<:--[EnrollmentFormConsentItemDelegate] - [<abstract>IProviderArgsResolver]<:--[EnrollmentFormConsentItemDelegate] - - [StudyFormViewModel - | - +studyDirtyCopy: Study?; - +studyRepository: IStudyRepository; - +authRepository: IAuthRepository; - +router: GoRouter; - +studyInfoFormViewModel: StudyInfoFormViewModel; - +enrollmentFormViewModel: EnrollmentFormViewModel; - +measurementsFormViewModel: MeasurementsFormViewModel; - +reportsFormViewModel: ReportsFormViewModel; - +interventionsFormViewModel: InterventionsFormViewModel; - +form: FormGroup; - +isStudyReadonly: bool; - +sharedValidationConfig: Map<FormValidationSetEnum, List<FormControlValidation>>; - +titles: Map<FormMode, String> - | - +void read(); - +void setControlsFrom(); - +Study buildFormData(); - +void dispose(); - +void onCancel(); - +dynamic onSave(); - -dynamic _applyAndSaveSubform() - ] - - [StudyFormViewModel]o-[Study] - [StudyFormViewModel]o-[<abstract>IStudyRepository] - [StudyFormViewModel]o-[<abstract>IAuthRepository] - [StudyFormViewModel]o-[GoRouter] - [StudyFormViewModel]o-[StudyInfoFormViewModel] - [StudyFormViewModel]o-[EnrollmentFormViewModel] - [StudyFormViewModel]o-[MeasurementsFormViewModel] - [StudyFormViewModel]o-[ReportsFormViewModel] - [StudyFormViewModel]o-[InterventionsFormViewModel] - [StudyFormViewModel]o-[FormGroup] - [<abstract>FormViewModel]<:-[StudyFormViewModel] - [<abstract>IFormViewModelDelegate]<:--[StudyFormViewModel] - - [<abstract>WithQuestionnaireControls - | - +questionsArray: FormArray<dynamic>; - +questionFormViewModels: FormViewModelCollection<Q, QuestionFormData>; - +questionnaireControls: Map<String, FormArray<dynamic>>; - +propagateOnSave: bool; - +questionModels: List<Q>; - +questionTitles: Map<FormMode, String Function()> - | - +void setQuestionnaireControlsFrom(); - +QuestionnaireFormData buildQuestionnaireFormData(); - +void read(); - +void onCancel(); - +dynamic onSave(); - +Q provide(); - +Q provideQuestionFormViewModel() - ] - - [<abstract>WithQuestionnaireControls]o-[FormArray] - [<abstract>WithQuestionnaireControls]o-[FormViewModelCollection] - [<abstract>IFormViewModelDelegate]<:--[<abstract>WithQuestionnaireControls] - [<abstract>IProviderArgsResolver]<:--[<abstract>WithQuestionnaireControls] - - [QuestionnaireFormData - | - +questionsData: List<QuestionFormData>?; - +id: String - | - +StudyUQuestionnaire toQuestionnaire(); - +List<EligibilityCriterion> toEligibilityCriteria(); - +QuestionnaireFormData copy() - ] - - [<abstract>IFormData]<:--[QuestionnaireFormData] - - [<abstract>QuestionFormData - | - <static>+questionTypeFormDataFactories: Map<SurveyQuestionType, QuestionFormData Function(Question<dynamic>, List<EligibilityCriterion>)>; - +questionId: String; - +questionText: String; - +questionInfoText: String?; - +questionType: SurveyQuestionType; - +responseOptionsValidity: Map<dynamic, bool>; - +responseOptions: List<dynamic>; - +id: String - | - +Question<dynamic> toQuestion(); - +EligibilityCriterion toEligibilityCriterion(); - +Answer<dynamic> constructAnswerFor(); - +dynamic setResponseOptionsValidityFrom(); - +QuestionFormData copy() - ] - - [<abstract>QuestionFormData]o-[SurveyQuestionType] - [<abstract>IFormData]<:--[<abstract>QuestionFormData] - - [ChoiceQuestionFormData - | - +isMultipleChoice: bool; - +answerOptions: List<String>; - +responseOptions: List<String> - | - +Question<dynamic> toQuestion(); - +QuestionFormData copy(); - -Choice _buildChoiceForValue(); - +Answer<dynamic> constructAnswerFor() - ] - - [<abstract>QuestionFormData]<:-[ChoiceQuestionFormData] - - [BoolQuestionFormData - | - <static>+kResponseOptions: Map<String, bool>; - +responseOptions: List<String> - | - +Question<dynamic> toQuestion(); - +BoolQuestionFormData copy(); - +Answer<dynamic> constructAnswerFor() - ] - - [<abstract>QuestionFormData]<:-[BoolQuestionFormData] - - [ImageQuestionFormData - | - <static>+kResponseOptions: Map<String, FutureBlobFile>; - +responseOptions: List<String> - | - +Question<dynamic> toQuestion(); - +ImageQuestionFormData copy(); - +Answer<dynamic> constructAnswerFor() - ] - - [<abstract>QuestionFormData]<:-[ImageQuestionFormData] - - [AudioQuestionFormData - | - +maxRecordingDurationSeconds: int; - <static>+kResponseOptions: Map<String, FutureBlobFile>; - +responseOptions: List<String> - | - +Question<dynamic> toQuestion(); - +AudioQuestionFormData copy(); - +Answer<dynamic> constructAnswerFor() - ] - - [<abstract>QuestionFormData]<:-[AudioQuestionFormData] - - [ScaleQuestionFormData - | - +minValue: double; - +maxValue: double; - +minLabel: String?; - +maxLabel: String?; - +midValues: List<double?>; - +midLabels: List<String?>; - +stepSize: double; - +initialValue: double?; - +minColor: Color?; - +maxColor: Color?; - +responseOptions: List<double>; - +midAnnotations: List<Annotation> - | - +ScaleQuestion toQuestion(); - +QuestionFormData copy(); - +Answer<dynamic> constructAnswerFor() - ] - - [ScaleQuestionFormData]o-[Color] - [<abstract>QuestionFormData]<:-[ScaleQuestionFormData] - - [FreeTextQuestionFormData - | - +textLengthRange: List<int>; - +textType: FreeTextQuestionType; - +textTypeExpression: String?; - +responseOptions: List<String> - | - +Question<dynamic> toQuestion(); - +FreeTextQuestionFormData copy(); - +Answer<dynamic> constructAnswerFor() - ] - - [FreeTextQuestionFormData]o-[FreeTextQuestionType] - [<abstract>QuestionFormData]<:-[FreeTextQuestionFormData] - - [AudioRecordingQuestionFormView - | - +formViewModel: QuestionFormViewModel - | - +Widget build() - ] - - [AudioRecordingQuestionFormView]o-[QuestionFormViewModel] - [<abstract>ConsumerWidget]<:-[AudioRecordingQuestionFormView] - - [FreeTextQuestionFormView - | - +formViewModel: QuestionFormViewModel; - +generateLabelHelpTextMap: dynamic - | - +Widget build(); - +Widget disableOnReadonly(); - +Widget generateRow() - ] - - [FreeTextQuestionFormView]o-[QuestionFormViewModel] - [<abstract>ConsumerWidget]<:-[FreeTextQuestionFormView] - - [SurveyQuestionType - | - +index: int; - <static>+values: List<SurveyQuestionType>; - <static>+choice: SurveyQuestionType; - <static>+bool: SurveyQuestionType; - <static>+scale: SurveyQuestionType; - <static>+image: SurveyQuestionType; - <static>+audio: SurveyQuestionType; - <static>+freeText: SurveyQuestionType - ] - - [SurveyQuestionType]o-[SurveyQuestionType] - [Enum]<:--[SurveyQuestionType] - - [ImageCapturingQuestionFormView - | - +formViewModel: QuestionFormViewModel - | - +Widget build() - ] - - [ImageCapturingQuestionFormView]o-[QuestionFormViewModel] - [<abstract>ConsumerWidget]<:-[ImageCapturingQuestionFormView] - - [<abstract>IScaleQuestionFormViewModel - | - +isMidValuesClearedInfoVisible: bool - ] - - [ScaleQuestionFormView - | - +formViewModel: QuestionFormViewModel - ] - - [ScaleQuestionFormView]o-[QuestionFormViewModel] - - [ChoiceQuestionFormView - | - +formViewModel: QuestionFormViewModel - | - +Widget build() - ] - - [ChoiceQuestionFormView]o-[QuestionFormViewModel] - [<abstract>ConsumerWidget]<:-[ChoiceQuestionFormView] - - [BoolQuestionFormView - | - +formViewModel: QuestionFormViewModel - | - +Widget build() - ] - - [BoolQuestionFormView]o-[QuestionFormViewModel] - [<abstract>ConsumerWidget]<:-[BoolQuestionFormView] - - [QuestionFormViewModel - | - <static>+defaultQuestionType: SurveyQuestionType; - -_titles: Map<FormMode, String Function()>?; - +questionIdControl: FormControl<String>; - +questionTypeControl: FormControl<SurveyQuestionType>; - +questionTextControl: FormControl<String>; - +questionInfoTextControl: FormControl<String>; - +questionBaseControls: Map<String, AbstractControl<dynamic>>; - +isMultipleChoiceControl: FormControl<bool>; - +choiceResponseOptionsArray: FormArray<dynamic>; - +customOptionsMin: int; - +customOptionsMax: int; - +customOptionsInitial: int; - +boolResponseOptionsArray: FormArray<String>; - +imageResponseOptionsArray: FormArray<String>; - <static>+kDefaultMaxRecordingDurationSeconds: int; - <static>+kMaxRecordingDurationSeconds: int; - +audioResponseOptionsArray: FormArray<String>; - +maxRecordingDurationSecondsControl: FormControl<int>; - <static>+kDefaultScaleMinValue: int; - <static>+kDefaultScaleMaxValue: int; - <static>+kNumMidValueControls: int; - <static>+kMidValueDebounceMilliseconds: int; - +scaleMinValueControl: FormControl<int>; - +scaleMaxValueControl: FormControl<int>; - -_scaleRangeControl: FormControl<int>; - +scaleMinLabelControl: FormControl<String>; - +scaleMaxLabelControl: FormControl<String>; - +scaleMidValueControls: FormArray<int>; - +scaleMidLabelControls: FormArray<String?>; - -_scaleResponseOptionsArray: FormArray<int>; - +scaleMinColorControl: FormControl<SerializableColor>; - +scaleMaxColorControl: FormControl<SerializableColor>; - +prevMidValues: List<int?>?; - +freeTextTypeControl: FormControl<FreeTextQuestionType>; - +customRegexControl: FormControl<String>; - +freeTextResponseOptionsArray: FormArray<dynamic>; - +freeTextLengthMin: AbstractControl<int>; - +freeTextLengthMax: AbstractControl<int>; - +freeTextExampleTextControl: FormControl<String>; - <static>+kDefaultFreeTextMinLength: int; - <static>+kDefaultFreeTextMaxLength: int; - +freeTextLengthControl: FormControl<RangeValues>; - -_controlsByQuestionType: Map<SurveyQuestionType, FormGroup>; - -_sharedValidationConfig: Map<FormValidationSetEnum, List<FormControlValidation>>; - -_validationConfigsByQuestionType: Map<SurveyQuestionType, Map<FormValidationSetEnum, List<FormControlValidation>>>; - +form: FormGroup; - +questionId: String; - +questionType: SurveyQuestionType; - +questionTypeControlOptions: List<FormControlOption<SurveyQuestionType>>; - +answerOptionsArray: FormArray<dynamic>; - +answerOptionsControls: List<AbstractControl<dynamic>>; - +validAnswerOptions: List<String>; - +boolOptions: List<AbstractControl<String>>; - +imageOptions: List<AbstractControl<String>>; - +audioOptions: List<AbstractControl<String>>; - +scaleMinValue: int; - +scaleMaxValue: int; - +scaleRange: int; - +scaleAllValueControls: List<AbstractControl<int>>; - +sharedValidationConfig: Map<FormValidationSetEnum, List<FormControlValidation>>; - +questionTextRequired: dynamic; - +numValidChoiceOptions: dynamic; - +scaleRangeValid: dynamic; - +maxRecordingDurationValid: dynamic; - +titles: Map<FormMode, String>; - +isAddOptionButtonVisible: bool; - +isMidValuesClearedInfoVisible: bool - | - +String? scaleMidLabelAt(); - -dynamic _onScaleRangeChanged(); - -dynamic _applyInputFormatters(); - -dynamic _updateScaleMidValueControls(); - -Map<String, dynamic>? _validateFreeText(); - -dynamic _onFreeTextLengthChanged(); - -List<FormControlValidation> _getValidationConfig(); - +dynamic onQuestionTypeChanged(); - +dynamic onResponseOptionsChanged(); - -void _updateFormControls(); - +void initControls(); - +void setControlsFrom(); - +QuestionFormData buildFormData(); - +List<ModelAction<dynamic>> availableActions(); - +void onNewItem(); - +void onSelectItem(); - +dynamic save(); - +QuestionFormViewModel createDuplicate() - ] - - [QuestionFormViewModel]o-[SurveyQuestionType] - [QuestionFormViewModel]o-[FormControl] - [QuestionFormViewModel]o-[FormArray] - [QuestionFormViewModel]o-[<abstract>AbstractControl] - [QuestionFormViewModel]o-[FormGroup] - [<abstract>ManagedFormViewModel]<:-[QuestionFormViewModel] - [<abstract>IListActionProvider]<:--[QuestionFormViewModel] - - [SurveyQuestionFormView - | - +formViewModel: QuestionFormViewModel; - +isHtmlStyleable: bool - ] - - [SurveyQuestionFormView]o-[QuestionFormViewModel] - - [<abstract>IFormDataWithSchedule - | - +instanceId: String; - +isTimeLocked: bool; - +timeLockStart: StudyUTimeOfDay?; - +timeLockEnd: StudyUTimeOfDay?; - +hasReminder: bool; - +reminderTime: StudyUTimeOfDay? - | - +Schedule toSchedule() - ] - - [<abstract>IFormDataWithSchedule]o-[StudyUTimeOfDay] - [<abstract>IFormData]<:--[<abstract>IFormDataWithSchedule] - - [ScheduleControls - | - +formViewModel: WithScheduleControls - | - +Widget build(); - -List<FormTableRow> _conditionalTimeRestrictions() - ] - - [ScheduleControls]o-[<abstract>WithScheduleControls] - [<abstract>FormConsumerWidget]<:-[ScheduleControls] - - [<abstract>WithScheduleControls - | - +isTimeRestrictedControl: FormControl<bool>; - +instanceID: FormControl<String>; - +restrictedTimeStartControl: FormControl<Time>; - +restrictedTimeStartPickerControl: FormControl<TimeOfDay>; - +restrictedTimeEndControl: FormControl<Time>; - +restrictedTimeEndPickerControl: FormControl<TimeOfDay>; - +hasReminderControl: FormControl<bool>; - +reminderTimeControl: FormControl<Time>; - +reminderTimePickerControl: FormControl<TimeOfDay>; - -_reminderControlStream: StreamSubscription<dynamic>?; - +scheduleFormControls: Map<String, FormControl<Object>>; - +hasReminder: bool; - +isTimeRestricted: bool; - +timeRestriction: List<Time>? - | - +void setScheduleControlsFrom(); - -dynamic _initReminderControl() - ] - - [<abstract>WithScheduleControls]o-[FormControl] - [<abstract>WithScheduleControls]o-[StreamSubscription] - - [<abstract>StudyDesignPageWidget - | - +Widget? banner() - ] - - [<abstract>StudyPageWidget]<:-[<abstract>StudyDesignPageWidget] - - [StudiesTableColumnHeader - | - +title: String; - +sortable: bool; - +sortAscending: bool; - +sortingActive: bool; - +onSort: void Function()? - ] - - [StudiesTableColumnHeader]o-[void Function()?] - - [DashboardScreen - | - +filter: StudiesFilter? - ] - - [DashboardScreen]o-[StudiesFilter] - - [DashboardScaffold - | - <static>+compactWidthThreshold: double; - +body: Widget - | - +Widget build() - ] - - [DashboardScaffold]o-[<abstract>Widget] - - [DashboardController - | - +studyRepository: IStudyRepository; - +authRepository: IAuthRepository; - +userRepository: IUserRepository; - +router: GoRouter; - -_studiesSubscription: StreamSubscription<List<WrappedModel<Study>>>?; - +searchController: SearchController; - +isSortAscending: bool - | - -dynamic _subscribeStudies(); - +dynamic setSearchText(); - +dynamic setStudiesFilter(); - +dynamic onSelectStudy(); - +dynamic onClickNewStudy(); - +dynamic pinStudy(); - +dynamic pinOffStudy(); - +void setSorting(); - +void filterStudies(); - +void sortStudies(); - +bool isSortingActiveForColumn(); - +bool isPinned(); - +List<ModelAction<dynamic>> availableActions(); - +void dispose() - ] - - [DashboardController]o-[<abstract>IStudyRepository] - [DashboardController]o-[<abstract>IAuthRepository] - [DashboardController]o-[<abstract>IUserRepository] - [DashboardController]o-[GoRouter] - [DashboardController]o-[StreamSubscription] - [DashboardController]o-[SearchController] - [<abstract>IModelActionProvider]<:--[DashboardController] - - [StudiesFilter - | - +index: int; - <static>+values: List<StudiesFilter> - ] - - [Enum]<:--[StudiesFilter] - - [StudiesTableColumnSize - | - +collapsed: bool; - +flex: int?; - +width: double? - | - +Widget createContainer() - ] - - [StudiesTable - | - +itemHeight: double; - +itemPadding: double; - +rowSpacing: double; - +columnSpacing: double; - +compactWidthThreshold: double; - +superCompactWidthThreshold: double; - +compactStatTitleThreshold: double; - +studies: List<Study>; - +onSelect: void Function(Study); - +getActions: List<ModelAction<dynamic>> Function(Study); - +emptyWidget: Widget; - +pinnedStudies: Iterable<String>; - +dashboardController: DashboardController - | - +Widget build(); - -Widget _buildColumnHeader() - ] - - [StudiesTable]o-[void Function(Study)] - [StudiesTable]o-[List<ModelAction<dynamic>> Function(Study)] - [StudiesTable]o-[<abstract>Widget] - [StudiesTable]o-[DashboardController] - - [StudiesTableColumn - | - +index: int; - <static>+values: List<StudiesTableColumn>; - <static>+pin: StudiesTableColumn; - <static>+title: StudiesTableColumn; - <static>+status: StudiesTableColumn; - <static>+participation: StudiesTableColumn; - <static>+createdAt: StudiesTableColumn; - <static>+enrolled: StudiesTableColumn; - <static>+active: StudiesTableColumn; - <static>+completed: StudiesTableColumn; - <static>+action: StudiesTableColumn - ] - - [StudiesTableColumn]o-[StudiesTableColumn] - [Enum]<:--[StudiesTableColumn] - - [StudiesTableItem - | - +study: Study; - +itemHeight: double; - +itemPadding: double; - +rowSpacing: double; - +columnSpacing: double; - +actions: List<ModelAction<dynamic>>; - +columnSizes: List<StudiesTableColumnSize>; - +isPinned: bool; - +onPinnedChanged: void Function(Study, bool)?; - +onTap: void Function(Study)? - ] - - [StudiesTableItem]o-[Study] - [StudiesTableItem]o-[void Function(Study, bool)?] - [StudiesTableItem]o-[void Function(Study)?] - - [App - ] - - [AppContent - ] - - [AccountSettingsDialog - | - +Widget build() - ] - - [<abstract>ConsumerWidget]<:-[AccountSettingsDialog] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IAppDelegate - - - - - - +dynamic onAppStart() - - - - - - - - - - - - - AppController - - - - - - +appDelegates: List<IAppDelegate> - -_delayedFuture: dynamic - +isInitialized: dynamic - - - - - - +dynamic onAppStart() - -dynamic _callDelegates() - - - - - - - - - - - - StudyMonitorScreen - - - - - - +Widget build() - - - - - - - - - - - - - StudyPageWidget - - - - - - +studyId: String - - - - - - +Widget? banner() - - - - - - - - - - - - - LoginForm - - - - - - +formKey: AuthFormKey - - - - - - +Widget build() - - - - - - - - - - - - AuthFormKey - - - - - - +index: int - <static>+values: List<AuthFormKey> - <static>+login: AuthFormKey - <static>+signup: AuthFormKey - <static>+passwordForgot: AuthFormKey - <static>+passwordRecovery: AuthFormKey - <static>-_loginSubmit: AuthFormKey - <static>-_signupSubmit: AuthFormKey - - - - - - - - - - - FormConsumerRefWidget - - - - - - - - - - - - - PasswordRecoveryForm - - - - - - +formKey: AuthFormKey - - - - - - +Widget build() - - - - - - - - - - - - - PasswordForgotForm - - - - - - +formKey: AuthFormKey - - - - - - +Widget build() - - - - - - - - - - - - - SignupForm - - - - - - +formKey: AuthFormKey - - - - - - +Widget build() - -dynamic _onClickTermsOfUse() - -dynamic _onClickPrivacyPolicy() - - - - - - - - - - - - AuthScaffold - - - - - - +body: Widget - +formKey: AuthFormKey - +leftContentMinWidth: double - +leftPanelMinWidth: double - +leftPanelPadding: EdgeInsets - - - - - - - - - - - Widget - - - - - - - - - - - EdgeInsets - - - - - - - - - - - - EmailTextField - - - - - - +labelText: String - +hintText: String? - +formControlName: String? - +formControl: FormControl<dynamic>? - - - - - - - - - - - FormControl - - - - - - - - - - - - PasswordTextField - - - - - - +labelText: String - +hintText: String? - +onSubmitted: dynamic Function(FormControl<dynamic>)? - +formControlName: String? - +formControl: FormControl<dynamic>? - - - - - - - - - - - dynamic Function(FormControl<dynamic>)? - - - - - - - - - - - - StudyUJobsToBeDone - - - - - - +Widget build() - - - - - - - - - - - - - AuthFormController - - - - - - +authRepository: IAuthRepository - +notificationService: INotificationService - +router: GoRouter - +emailControl: FormControl<String> - +passwordControl: FormControl<String> - +passwordConfirmationControl: FormControl<String> - +termsOfServiceControl: FormControl<bool> - <static>+authValidationMessages: Map<String, String Function(dynamic)> - +loginForm: FormGroup - +signupForm: FormGroup - +passwordForgotForm: FormGroup - +passwordRecoveryForm: FormGroup - +controlValidatorsByForm: Map<AuthFormKey, Map<FormControl<dynamic>, List<Validator<dynamic>>>> - -_formKey: AuthFormKey - +formKey: AuthFormKey - +form: FormGroup - - - - - - -dynamic _getFormFor() - -dynamic _onChangeFormKey() - +dynamic resetControlsFor() - -dynamic _forceValidationMessages() - +dynamic signUp() - -dynamic _signUp() - +dynamic signIn() - -dynamic _signInWith() - +dynamic signOut() - +dynamic resetPasswordForEmail() - +dynamic sendPasswordResetLink() - +dynamic recoverPassword() - +dynamic updateUser() - -dynamic _readDebugUser() - - - - - - - - - - - IAuthRepository - - - - - - - - - - - INotificationService - - - - - - - - - - - GoRouter - - - - - - - - - - - FormGroup - - - - - - - - - - - - IFormGroupController - - - - - - +form: FormGroup - - - - - - - - - - - Enum - - - - - - - - - - - - AppStatus - - - - - - +index: int - <static>+values: List<AppStatus> - <static>+initializing: AppStatus - <static>+initialized: AppStatus - - - - - - - - - - - - - FormArrayTable - - - - - - +control: AbstractControl<dynamic> - +items: List<T> - +onSelectItem: void Function(T) - +getActionsAt: List<ModelAction<dynamic>> Function(T, int) - +onNewItem: void Function()? - +rowTitle: String Function(T) - +onNewItemLabel: String - +sectionTitle: String? - +sectionDescription: String? - +emptyIcon: IconData? - +emptyTitle: String? - +emptyDescription: String? - +sectionTitleDivider: bool? - +rowPrefix: Widget Function(BuildContext, T, int)? - +rowSuffix: Widget Function(BuildContext, T, int)? - +leadingWidget: Widget? - +itemsSectionPadding: EdgeInsets? - +hideLeadingTrailingWhenEmpty: bool - <static>+columns: List<StandardTableColumn> - - - - - - +Widget build() - -List<Widget> _buildRow() - -Widget _newItemButton() - - - - - - - - - - - AbstractControl - - - - - - - - - - - void Function(T) - - - - - - - - - - - List<ModelAction<dynamic>> Function(T, int) - - - - - - - - - - - void Function()? - - - - - - - - - - - String Function(T) - - - - - - - - - - - IconData - - - - - - - - - - - Widget Function(BuildContext, T, int)? - - - - - - - - - - - - ManagedFormViewModel - - - - - - +ManagedFormViewModel<T> createDuplicate() - - - - - - - - - - - - - FormViewModel - - - - - - -_formData: T? - -_formMode: FormMode - -_validationSet: FormValidationSetEnum? - +delegate: IFormViewModelDelegate<FormViewModel<dynamic>>? - +autosave: bool - -_immediateFormChildrenSubscriptions: List<StreamSubscription<dynamic>> - -_immediateFormChildrenListenerDebouncer: Debouncer? - -_autosaveOperation: CancelableOperation<dynamic>? - -_defaultControlValidators: Map<String, Tuple<List<Validator<dynamic>>, List<AsyncValidator<dynamic>>>> - +prevFormValue: Map<String, dynamic>? - <static>-_formKey: String - +formData: T? - +formMode: FormMode - +isReadonly: bool - +validationSet: FormValidationSetEnum? - +isDirty: bool - +title: String - +isValid: bool - +titles: Map<FormMode, String> - +sharedValidationConfig: Map<FormValidationSetEnum, List<FormControlValidation>> - - - - - - -dynamic _setFormData() - -dynamic _rememberDefaultControlValidators() - -Tuple<List<Validator<dynamic>>, List<AsyncValidator<dynamic>>>? _getDefaultValidators() - -dynamic _disableAllControls() - -dynamic _formModeUpdated() - -dynamic _restoreControlsFromFormData() - +void revalidate() - -void _applyValidationSet() - +void read() - +dynamic save() - +dynamic cancel() - +void enableAutosave() - +void listenToImmediateFormChildren() - +dynamic markFormGroupChanged() - +void dispose() - +void setControlsFrom() - +T buildFormData() - +void initControls() - - - - - - - - - - - FormViewModelNotFoundException - - - - - - - - - - - Exception - - - - - - - - - - - - - FormViewModelCollection - - - - - - +formViewModels: List<T> - +formArray: FormArray<dynamic> - +stagedViewModels: List<T> - +retrievableViewModels: List<T> - +formData: List<D> - - - - - - +void add() - +T remove() - +T? findWhere() - +T? removeWhere() - +bool contains() - +void stage() - +T commit() - +void reset() - +void read() - - - - - - - - - - - FormArray - - - - - - - - - - - - - CustomFormControl - - - - - - -_onValueChangedDebouncer: Debouncer? - -_onStatusChangedDebouncer: Debouncer? - +onValueChanged: void Function(T?)? - +onStatusChanged: void Function(ControlStatus)? - +onStatusChangedDebounceTime: int? - +onValueChangedDebounceTime: int? - - - - - - +void dispose() - - - - - - - - - - - Debouncer - - - - - - - - - - - void Function(T?)? - - - - - - - - - - - void Function(ControlStatus)? - - - - - - - - - - - - UnsavedChangesDialog - - - - - - +Widget build() - - - - - - - - - - - FormValidationSetEnum - - - - - - - - - - - - - FormControlValidation - - - - - - +control: AbstractControl<dynamic> - +validators: List<Validator<dynamic>> - +asyncValidators: List<AsyncValidator<dynamic>>? - +validationMessages: Map<String, String Function(Object)> - - - - - - +FormControlValidation merge() - - - - - - - - - - - - - IFormData - - - - - - +id: String - - - - - - +IFormData copy() - - - - - - - - - - - FormInvalidException - - - - - - - - - - - - FormConfigException - - - - - - +message: String? - - - - - - - - - - - - IFormViewModelDelegate - - - - - - +dynamic onSave() - +void onCancel() - - - - - - - - - - - - FormControlOption - - - - - - +value: T - +label: String - +description: String? - +props: List<Object?> - - - - - - - - - - - Equatable - - - - - - - - - - - - FormMode - - - - - - +index: int - <static>+values: List<FormMode> - <static>+create: FormMode - <static>+readonly: FormMode - <static>+edit: FormMode - - - - - - - - - - - CancelableOperation - - - - - - - - - - - - - EnrolledBadge - - - - - - +enrolledCount: int - - - - - - +Widget build() - - - - - - - - - - - - - StudyRecruitController - - - - - - +inviteCodeRepository: IInviteCodeRepository - -_invitesSubscription: StreamSubscription<List<WrappedModel<StudyInvite>>>? - - - - - - -dynamic _subscribeInvites() - +Intervention? getIntervention() - +int getParticipantCountForInvite() - +List<ModelAction<dynamic>> availableActions() - +List<ModelAction<dynamic>> availableInlineActions() - +void dispose() - - - - - - - - - - - IInviteCodeRepository - - - - - - - - - - - StreamSubscription - - - - - - - - - - - - - StudyBaseController - - - - - - +studyId: String - +studyRepository: IStudyRepository - +router: GoRouter - +studySubscription: StreamSubscription<WrappedModel<Study>>? - - - - - - +dynamic subscribeStudy() - +dynamic onStudySubscriptionUpdate() - +dynamic onStudySubscriptionError() - +void dispose() - - - - - - - - - - - IModelActionProvider - - - - - - - - - - - - StudyRecruitScreen - - - - - - +Widget build() - -Widget _inviteCodesSectionHeader() - -Widget _newInviteCodeButton() - -dynamic _onSelectInvite() - - - - - - - - - - - - - InviteCodeFormView - - - - - - +formViewModel: InviteCodeFormViewModel - - - - - - +Widget build() - -List<FormTableRow> _conditionalInterventionRows() - - - - - - - - - - - - - InviteCodeFormViewModel - - - - - - +study: Study - +inviteCodeRepository: IInviteCodeRepository - +codeControl: FormControl<String> - +codeControlValidationMessages: Map<String, String Function(dynamic)> - +isPreconfiguredScheduleControl: FormControl<bool> - +preconfiguredScheduleTypeControl: FormControl<PhaseSequence> - +interventionAControl: FormControl<String> - +interventionBControl: FormControl<String> - +form: FormGroup - +titles: Map<FormMode, String> - +interventionControlOptions: List<FormControlOption<String>> - +preconfiguredScheduleTypeOptions: List<FormControlOption<PhaseSequence>> - +isPreconfiguredSchedule: bool - +preconfiguredSchedule: List<String>? - - - - - - +void initControls() - -dynamic _uniqueInviteCode() - +void regenerateCode() - -String _generateCode() - +StudyInvite buildFormData() - +void setControlsFrom() - +dynamic save() - - - - - - - - - - - FormConsumerWidget - - - - - - - - - - - - - StudyInvitesTable - - - - - - +invites: List<StudyInvite> - +onSelect: void Function(StudyInvite) - +getActions: List<ModelAction<dynamic>> Function(StudyInvite) - +getInlineActions: List<ModelAction<dynamic>> Function(StudyInvite) - +getIntervention: Intervention? Function(String) - +getParticipantCountForInvite: int Function(StudyInvite) - - - - - - +Widget build() - -List<Widget> _buildRow() - - - - - - - - - - - void Function(StudyInvite) - - - - - - - - - - - List<ModelAction<dynamic>> Function(StudyInvite) - - - - - - - - - - - Intervention? Function(String) - - - - - - - - - - - int Function(StudyInvite) - - - - - - - - - - - Study - - - - - - - - - - - - PublishSuccessDialog - - - - - - +Widget build() - - - - - - - - - - - - PublishDialog - - - - - - +Widget build() - - - - - - - - - - - - PublishConfirmationDialog - - - - - - +Widget build() - - - - - - - - - - - - - FrameControlsWidget - - - - - - +onRefresh: void Function()? - +onOpenNewTab: void Function()? - +enabled: bool - - - - - - +Widget build() - - - - - - - - - - - ConsumerWidget - - - - - - - - - - - - IStudyStatusBadgeViewModel - - - - - - +studyParticipation: Participation? - +studyStatus: StudyStatus? - - - - - - - - - - - Participation - - - - - - - - - - - StudyStatus - - - - - - - - - - - - - StudyStatusBadge - - - - - - +participation: Participation? - +status: StudyStatus? - +type: BadgeType - +showPrefixIcon: bool - +showTooltip: bool - - - - - - +Widget build() - - - - - - - - - - - BadgeType - - - - - - - - - - - - - RouteInformation - - - - - - +route: String? - +extra: String? - +cmd: String? - +data: String? - - - - - - +String toString() - - - - - - - - - - - - - PlatformController - - - - - - +studyId: String - +baseSrc: String - +previewSrc: String - +routeInformation: RouteInformation - +frameWidget: Widget - - - - - - +void activate() - +void registerViews() - +void generateUrl() - +void navigate() - +void refresh() - +void listen() - +void send() - +void openNewPage() - - - - - - - - - - - - - WebController - - - - - - +iFrameElement: IFrameElement - - - - - - +void activate() - +void registerViews() - +void generateUrl() - +void navigate() - +void refresh() - +void openNewPage() - +void listen() - +void send() - - - - - - - - - - - IFrameElement - - - - - - - - - - - - MobileController - - - - - - +void openNewPage() - +void refresh() - +void registerViews() - +void listen() - +void send() - +void navigate() - +void activate() - +void generateUrl() - - - - - - - - - - - - - StudyController - - - - - - +notificationService: INotificationService - +studyEventsSubscription: StreamSubscription<ModelEvent<Study>>? - +studyActions: List<ModelAction<dynamic>> - - - - - - +dynamic syncStudyStatus() - +dynamic onStudySubscriptionUpdate() - -dynamic _redirectNewToActualStudyID() - +dynamic publishStudy() - +void onChangeStudyParticipation() - +void onAddParticipants() - +void onSettingsPressed() - +void dispose() - - - - - - - - - - - - IStudyNavViewModel - - - - - - +isEditTabEnabled: bool - +isTestTabEnabled: bool - +isRecruitTabEnabled: bool - +isMonitorTabEnabled: bool - +isAnalyzeTabEnabled: bool - +isSettingsEnabled: bool - - - - - - - - - - - - StudyNav - - - - - - <static>+dynamic tabs() - <static>+dynamic edit() - <static>+dynamic test() - <static>+dynamic recruit() - <static>+dynamic monitor() - <static>+dynamic analyze() - - - - - - - - - - - - StudyDesignNav - - - - - - <static>+dynamic tabs() - <static>+dynamic info() - <static>+dynamic enrollment() - <static>+dynamic interventions() - <static>+dynamic measurements() - <static>+dynamic reports() - - - - - - - - - - - IWithBanner - - - - - - - - - - - - - StudyParticipationBadge - - - - - - +participation: Participation - +type: BadgeType - +showPrefixIcon: bool - +center: bool - - - - - - +Widget build() - - - - - - - - - - - IStudyRepository - - - - - - - - - - - - PreviewFrame - - - - - - +studyId: String - +routeArgs: StudyFormRouteArgs? - +route: String? - - - - - - - - - - - StudyFormRouteArgs - - - - - - - - - - - - IStudyAppBarViewModel - - - - - - +isSyncIndicatorVisible: bool - +isStatusBadgeVisible: bool - +isPublishVisible: bool - - - - - - - - - - - - StudyScaffold - - - - - - +studyId: String - +tabs: List<NavbarTab>? - +tabsSubnav: List<NavbarTab>? - +selectedTab: NavbarTab? - +selectedTabSubnav: NavbarTab? - +body: StudyPageWidget - +drawer: Widget? - +disableActions: bool - +actionsSpacing: double - +actionsPadding: double - +layoutType: SingleColumnLayoutType? - +appbarHeight: double - +appbarSubnavHeight: double - - - - - - - - - - - NavbarTab - - - - - - - - - - - SingleColumnLayoutType - - - - - - - - - - - - - WebFrame - - - - - - +previewSrc: String - +studyId: String - - - - - - +Widget build() - - - - - - - - - - - - DisabledFrame - - - - - - +Widget build() - - - - - - - - - - - - - PhoneContainer - - - - - - <static>+defaultWidth: double - <static>+defaultHeight: double - +width: double - +height: double - +borderColor: Color - +borderWidth: double - +borderRadius: double - +innerContent: Widget - +innerContentBackgroundColor: Color? - - - - - - +Widget build() - - - - - - - - - - - Color - - - - - - - - - - - - MobileFrame - - - - - - +Widget build() - - - - - - - - - - - - DesktopFrame - - - - - - +Widget build() - - - - - - - - - - - - - StudyTestScreen - - - - - - +previewRoute: String? - - - - - - +Widget build() - +Widget? banner() - +dynamic load() - +dynamic save() - +dynamic showHelp() - - - - - - - - - - - - - StudySettingsFormViewModel - - - - - - +study: AsyncValue<Study> - +studyRepository: IStudyRepository - <static>+defaultPublishedToRegistry: bool - <static>+defaultPublishedToRegistryResults: bool - +isPublishedToRegistryControl: FormControl<bool> - +isPublishedToRegistryResultsControl: FormControl<bool> - +form: FormGroup - +titles: Map<FormMode, String> - - - - - - +void setControlsFrom() - +Study buildFormData() - +dynamic keepControlsSynced() - +dynamic save() - +dynamic setLaunchDefaults() - - - - - - - - - - - AsyncValue - - - - - - - - - - - - StudySettingsDialog - - - - - - +Widget build() - - - - - - - - - - - - StudyTestController - - - - - - +authRepository: IAuthRepository - +languageCode: String - - - - - - - - - - - - TestAppRoutes - - - - - - <static>+studyOverview: String - <static>+eligibility: String - <static>+intervention: String - <static>+consent: String - <static>+journey: String - <static>+dashboard: String - - - - - - - - - - - - - DrawerEntry - - - - - - +localizedTitle: String Function() - +icon: IconData? - +localizedHelpText: String Function()? - +enabled: bool - +onSelected: void Function(BuildContext, WidgetRef)? - +autoCloseDrawer: bool - +title: String - +helpText: String? - - - - - - +void onClick() - - - - - - - - - - - String Function() - - - - - - - - - - - String Function()? - - - - - - - - - - - void Function(BuildContext, WidgetRef)? - - - - - - - - - - - - - GoRouterDrawerEntry - - - - - - +intent: RoutingIntent - +onNavigated: void Function()? - - - - - - +void onClick() - - - - - - - - - - - RoutingIntent - - - - - - - - - - - - AppDrawer - - - - - - +width: int - +autoCloseDrawer: bool - +leftPaddingEntries: double - +logoPaddingVertical: double - +logoPaddingHorizontal: double - +logoMaxHeight: double - +logoSectionMinHeight: double - +logoSectionMaxHeight: double - - - - - - - - - - - - StudyAnalyzeScreen - - - - - - +Widget? banner() - +Widget build() - - - - - - - - - - - - StudyAnalyzeController - - - - - - +dynamic onExport() - - - - - - - - - - - - StudyDesignInterventionsFormView - - - - - - +Widget build() - - - - - - - - - - - - StudyDesignPageWidget - - - - - - +Widget? banner() - - - - - - - - - - - - InterventionFormView - - - - - - +formViewModel: InterventionFormViewModel - - - - - - - - - - - - - InterventionFormViewModel - - - - - - +study: Study - +interventionIdControl: FormControl<String> - +interventionTitleControl: FormControl<String> - +interventionIconControl: FormControl<IconOption> - +interventionDescriptionControl: FormControl<String> - +interventionTasksArray: FormArray<dynamic> - +tasksCollection: FormViewModelCollection<InterventionTaskFormViewModel, InterventionTaskFormData> - +form: FormGroup - +interventionId: String - +sharedValidationConfig: Map<FormValidationSetEnum, List<FormControlValidation>> - +titleRequired: dynamic - +atLeastOneTask: dynamic - +breadcrumbsTitle: String - +titles: Map<FormMode, String> - - - - - - +void setControlsFrom() - +InterventionFormData buildFormData() - +List<ModelAction<dynamic>> availableActions() - +List<ModelAction<dynamic>> availablePopupActions() - +List<ModelAction<dynamic>> availableInlineActions() - +void onSelectItem() - +void onNewItem() - +void onCancel() - +dynamic onSave() - +InterventionTaskFormViewModel provide() - +InterventionTaskFormRouteArgs buildNewFormRouteArgs() - +InterventionTaskFormRouteArgs buildFormRouteArgs() - +InterventionFormViewModel createDuplicate() - - - - - - - - - - - - - InterventionPreview - - - - - - +routeArgs: InterventionFormRouteArgs - - - - - - +Widget build() - - - - - - - - - - - InterventionFormRouteArgs - - - - - - - - - - - - - StudyScheduleFormView - - - - - - +formViewModel: StudyScheduleControls - - - - - - -FormTableRow _renderCustomSequence() - +Widget build() - - - - - - - - - - - - - StudyScheduleControls - - - - - - <static>+defaultScheduleType: PhaseSequence - <static>+defaultScheduleTypeSequence: String - <static>+defaultNumCycles: int - <static>+defaultPeriodLength: int - +sequenceTypeControl: FormControl<PhaseSequence> - +sequenceTypeCustomControl: FormControl<String> - +phaseDurationControl: FormControl<int> - +numCyclesControl: FormControl<int> - +includeBaselineControl: FormControl<bool> - +studyScheduleControls: Map<String, FormControl<Object>> - <static>+kNumCyclesMin: int - <static>+kNumCyclesMax: int - <static>+kPhaseDurationMin: int - <static>+kPhaseDurationMax: int - +sequenceTypeControlOptions: List<FormControlOption<PhaseSequence>> - +studyScheduleValidationConfig: Map<FormValidationSetEnum, List<FormControlValidation>> - +numCyclesRange: dynamic - +phaseDurationRange: dynamic - +customSequenceRequired: dynamic - - - - - - +void setStudyScheduleControlsFrom() - +StudyScheduleFormData buildStudyScheduleFormData() - +bool isSequencingCustom() - - - - - - - - - - - - - InterventionTaskFormData - - - - - - +taskId: String - +taskTitle: String - +taskDescription: String? - <static>+kDefaultTitle: String - +id: String - - - - - - +CheckmarkTask toTask() - +InterventionTaskFormData copy() - - - - - - - - - - - - - IFormDataWithSchedule - - - - - - +instanceId: String - +isTimeLocked: bool - +timeLockStart: StudyUTimeOfDay? - +timeLockEnd: StudyUTimeOfDay? - +hasReminder: bool - +reminderTime: StudyUTimeOfDay? - - - - - - +Schedule toSchedule() - - - - - - - - - - - - - InterventionsFormViewModel - - - - - - +study: Study - +router: GoRouter - +interventionsArray: FormArray<dynamic> - +interventionsCollection: FormViewModelCollection<InterventionFormViewModel, InterventionFormData> - +form: FormGroup - +sharedValidationConfig: Map<FormValidationSetEnum, List<FormControlValidation>> - +interventionsRequired: dynamic - +titles: Map<FormMode, String> - +canTestStudySchedule: bool - - - - - - +void setControlsFrom() - +InterventionsFormData buildFormData() - +void read() - +List<ModelAction<dynamic>> availableActions() - +List<ModelAction<dynamic>> availablePopupActions() - +List<ModelAction<dynamic>> availableInlineActions() - +void onSelectItem() - +void onNewItem() - +InterventionFormViewModel provide() - +void onCancel() - +dynamic onSave() - +dynamic testStudySchedule() - - - - - - - - - - - IListActionProvider - - - - - - - - - - - IProviderArgsResolver - - - - - - - - - - - - - InterventionTaskFormViewModel - - - - - - +taskIdControl: FormControl<String> - +instanceIdControl: FormControl<String> - +taskTitleControl: FormControl<String> - +taskDescriptionControl: FormControl<String> - +markAsCompletedControl: FormControl<bool> - +form: FormGroup - +taskId: String - +instanceId: String - +sharedValidationConfig: Map<FormValidationSetEnum, List<FormControlValidation>> - +titleRequired: dynamic - +titles: Map<FormMode, String> - - - - - - +void setControlsFrom() - +InterventionTaskFormData buildFormData() - +InterventionTaskFormViewModel createDuplicate() - - - - - - - - - - - - - WithScheduleControls - - - - - - +isTimeRestrictedControl: FormControl<bool> - +instanceID: FormControl<String> - +restrictedTimeStartControl: FormControl<Time> - +restrictedTimeStartPickerControl: FormControl<TimeOfDay> - +restrictedTimeEndControl: FormControl<Time> - +restrictedTimeEndPickerControl: FormControl<TimeOfDay> - +hasReminderControl: FormControl<bool> - +reminderTimeControl: FormControl<Time> - +reminderTimePickerControl: FormControl<TimeOfDay> - -_reminderControlStream: StreamSubscription<dynamic>? - +scheduleFormControls: Map<String, FormControl<Object>> - +hasReminder: bool - +isTimeRestricted: bool - +timeRestriction: List<Time>? - - - - - - +void setScheduleControlsFrom() - -dynamic _initReminderControl() - - - - - - - - - - - PhaseSequence - - - - - - - - - - - - - InterventionFormData - - - - - - +interventionId: String - +title: String - +description: String? - +tasksData: List<InterventionTaskFormData>? - +iconName: String? - <static>+kDefaultTitle: String - +id: String - - - - - - +Intervention toIntervention() - +InterventionFormData copy() - - - - - - - - - - - - - StudyScheduleFormData - - - - - - +sequenceType: PhaseSequence - +sequenceTypeCustom: String - +numCycles: int - +phaseDuration: int - +includeBaseline: bool - +id: String - - - - - - +StudySchedule toStudySchedule() - +Study apply() - +StudyScheduleFormData copy() - - - - - - - - - - - - IStudyFormData - - - - - - +Study apply() - - - - - - - - - - - - InterventionTaskFormView - - - - - - +formViewModel: InterventionTaskFormViewModel - - - - - - - - - - - - - InterventionsFormData - - - - - - +interventionsData: List<InterventionFormData> - +studyScheduleData: StudyScheduleFormData - +id: String - - - - - - +Study apply() - +InterventionsFormData copy() - - - - - - - - - - - - StudyDesignReportsFormView - - - - - - +Widget build() - -dynamic _showReportItemSidesheetWithArgs() - - - - - - - - - - - - - ReportItemFormData - - - - - - +isPrimary: bool - +section: ReportSection - +id: String - - - - - - <static>+dynamic fromDomainModel() - +ReportItemFormData copy() - - - - - - - - - - - ReportSection - - - - - - - - - - - - - DataReferenceEditor - - - - - - +formControl: FormControl<DataReferenceIdentifier<T>> - +availableTasks: List<Task> - +buildReactiveDropdownField: ReactiveDropdownField<dynamic> - - - - - - +FormTableRow buildFormTableRow() - -List<DropdownMenuItem<DataReferenceIdentifier<dynamic>>> _dataReferenceItems() - - - - - - - - - - - ReactiveDropdownField - - - - - - - - - - - - - TemporalAggregationFormatted - - - - - - -_value: TemporalAggregation - <static>+values: List<TemporalAggregationFormatted> - +value: TemporalAggregation - +string: String - +icon: IconData? - +hashCode: int - - - - - - +bool ==() - +String toString() - +String toJson() - <static>+TemporalAggregationFormatted fromJson() - - - - - - - - - - - TemporalAggregation - - - - - - - - - - - - - ImprovementDirectionFormatted - - - - - - -_value: ImprovementDirection - <static>+values: List<ImprovementDirectionFormatted> - +value: ImprovementDirection - +string: String - +icon: IconData? - +hashCode: int - - - - - - +bool ==() - +String toString() - +String toJson() - <static>+ImprovementDirectionFormatted fromJson() - - - - - - - - - - - ImprovementDirection - - - - - - - - - - - - ReportSectionType - - - - - - +index: int - <static>+values: List<ReportSectionType> - <static>+average: ReportSectionType - <static>+linearRegression: ReportSectionType - - - - - - - - - - - - - AverageSectionFormView - - - - - - +formViewModel: ReportItemFormViewModel - +studyId: String - +reportSectionColumnWidth: Map<int, TableColumnWidth> - - - - - - +Widget build() - - - - - - - - - - - - - ReportItemFormViewModel - - - - - - <static>+defaultSectionType: ReportSectionType - +sectionIdControl: FormControl<String> - +sectionTypeControl: FormControl<ReportSectionType> - +titleControl: FormControl<String> - +descriptionControl: FormControl<String> - +sectionControl: FormControl<ReportSection> - +dataReferenceControl: FormControl<DataReferenceIdentifier<num>> - +temporalAggregationControl: FormControl<TemporalAggregationFormatted> - +improvementDirectionControl: FormControl<ImprovementDirectionFormatted> - +alphaControl: FormControl<double> - -_controlsBySectionType: Map<ReportSectionType, FormGroup> - -_sharedValidationConfig: Map<FormValidationSetEnum, List<FormControlValidation>> - -_validationConfigsBySectionType: Map<ReportSectionType, Map<FormValidationSetEnum, List<FormControlValidation>>> - +sectionBaseControls: Map<String, AbstractControl<dynamic>> - +form: FormGroup - +sectionId: String - +sectionType: ReportSectionType - <static>+sectionTypeControlOptions: List<FormControlOption<ReportSectionType>> - <static>+temporalAggregationControlOptions: List<FormControlOption<TemporalAggregationFormatted>> - <static>+improvementDirectionControlOptions: List<FormControlOption<ImprovementDirectionFormatted>> - +titles: Map<FormMode, String> - +sharedValidationConfig: Map<FormValidationSetEnum, List<FormControlValidation>> - +titleRequired: dynamic - +descriptionRequired: dynamic - +dataReferenceRequired: dynamic - +aggregationRequired: dynamic - +improvementDirectionRequired: dynamic - +alphaConfidenceRequired: dynamic - - - - - - -List<FormControlValidation> _getValidationConfig() - +ReportItemFormData buildFormData() - +ReportItemFormViewModel createDuplicate() - +dynamic onSectionTypeChanged() - -void _updateFormControls() - +void setControlsFrom() - - - - - - - - - - - - - DataReferenceIdentifier - - - - - - +hashCode: int - - - - - - +bool ==() - - - - - - - - - - - DataReference - - - - - - - - - - - - - LinearRegressionSectionFormView - - - - - - +formViewModel: ReportItemFormViewModel - +studyId: String - +reportSectionColumnWidth: Map<int, TableColumnWidth> - - - - - - +Widget build() - - - - - - - - - - - - - ReportItemFormView - - - - - - +formViewModel: ReportItemFormViewModel - +studyId: String - +reportSectionColumnWidth: dynamic - +sectionTypeBodyBuilder: Widget Function(BuildContext) - - - - - - +Widget build() - -dynamic _buildSectionText() - -dynamic _buildSectionTypeHeader() - - - - - - - - - - - Widget Function(BuildContext) - - - - - - - - - - - - - ReportsFormViewModel - - - - - - +study: Study - +router: GoRouter - +reportItemDelegate: ReportFormItemDelegate - +reportItemArray: FormArray<dynamic> - +reportItemFormViewModels: FormViewModelCollection<ReportItemFormViewModel, ReportItemFormData> - +form: FormGroup - +reportItemModels: List<ReportItemFormViewModel> - +sharedValidationConfig: Map<FormValidationSetEnum, List<FormControlValidation>> - +titles: Map<FormMode, String> - +canTestConsent: bool - - - - - - +void setControlsFrom() - +ReportsFormData buildFormData() - +void read() - +ReportItemFormRouteArgs buildNewReportItemFormRouteArgs() - +ReportItemFormRouteArgs buildReportItemFormRouteArgs() - +dynamic testReport() - +void onCancel() - +dynamic onSave() - +ReportItemFormViewModel provide() - - - - - - - - - - - - - ReportFormItemDelegate - - - - - - +formViewModelCollection: FormViewModelCollection<ReportItemFormViewModel, ReportItemFormData> - +owner: ReportsFormViewModel - +propagateOnSave: bool - +validationSet: dynamic - - - - - - +void onCancel() - +dynamic onSave() - +ReportItemFormViewModel provide() - +List<ModelAction<dynamic>> availableActions() - +void onNewItem() - +void onSelectItem() - - - - - - - - - - - - - ReportBadge - - - - - - +status: ReportStatus? - +type: BadgeType - +showPrefixIcon: bool - +showTooltip: bool - - - - - - +Widget build() - - - - - - - - - - - - ReportStatus - - - - - - +index: int - <static>+values: List<ReportStatus> - <static>+primary: ReportStatus - <static>+secondary: ReportStatus - - - - - - - - - - - - - ReportsFormData - - - - - - +reportItems: List<ReportItemFormData> - +id: String - - - - - - +Study apply() - +ReportsFormData copy() - - - - - - - - - - - - - StudyInfoFormViewModel - - - - - - +study: Study - +titleControl: FormControl<String> - +iconControl: FormControl<IconOption> - +descriptionControl: FormControl<String> - +organizationControl: FormControl<String> - +reviewBoardControl: FormControl<String> - +reviewBoardNumberControl: FormControl<String> - +researchersControl: FormControl<String> - +emailControl: FormControl<String> - +websiteControl: FormControl<String> - +phoneControl: FormControl<String> - +additionalInfoControl: FormControl<String> - +form: FormGroup - +titles: Map<FormMode, String> - +sharedValidationConfig: Map<FormValidationSetEnum, List<FormControlValidation>> - +titleRequired: dynamic - +descriptionRequired: dynamic - +iconRequired: dynamic - +organizationRequired: dynamic - +reviewBoardRequired: dynamic - +reviewBoardNumberRequired: dynamic - +researchersRequired: dynamic - +emailRequired: dynamic - +phoneRequired: dynamic - +emailFormat: dynamic - +websiteFormat: dynamic - - - - - - +void setControlsFrom() - +StudyInfoFormData buildFormData() - - - - - - - - - - - - StudyDesignInfoFormView - - - - - - +Widget build() - - - - - - - - - - - - - StudyInfoFormData - - - - - - +title: String - +description: String? - +iconName: String - +contactInfoFormData: StudyContactInfoFormData - +id: String - - - - - - +Study apply() - +StudyInfoFormData copy() - - - - - - - - - - - - - StudyContactInfoFormData - - - - - - +organization: String? - +institutionalReviewBoard: String? - +institutionalReviewBoardNumber: String? - +researchers: String? - +email: String? - +website: String? - +phone: String? - +additionalInfo: String? - +id: String - - - - - - +Study apply() - +StudyInfoFormData copy() - - - - - - - - - - - - StudyFormValidationSet - - - - - - +index: int - <static>+values: List<StudyFormValidationSet> - - - - - - - - - - - - - MeasurementsFormData - - - - - - +surveyMeasurements: List<MeasurementSurveyFormData> - +id: String - - - - - - +Study apply() - +MeasurementsFormData copy() - - - - - - - - - - - - MeasurementSurveyFormView - - - - - - +formViewModel: MeasurementSurveyFormViewModel - - - - - - - - - - - - - MeasurementSurveyFormViewModel - - - - - - +study: Study - +measurementIdControl: FormControl<String> - +instanceIdControl: FormControl<String> - +surveyTitleControl: FormControl<String> - +surveyIntroTextControl: FormControl<String> - +surveyOutroTextControl: FormControl<String> - +form: FormGroup - +measurementId: String - +instanceId: String - +sharedValidationConfig: Map<FormValidationSetEnum, List<FormControlValidation>> - +titleRequired: dynamic - +atLeastOneQuestion: dynamic - +breadcrumbsTitle: String - +titles: Map<FormMode, String> - - - - - - +void setControlsFrom() - +MeasurementSurveyFormData buildFormData() - +List<ModelAction<dynamic>> availableActions() - +List<ModelAction<dynamic>> availablePopupActions() - +List<ModelAction<dynamic>> availableInlineActions() - +void onSelectItem() - +void onNewItem() - +SurveyQuestionFormRouteArgs buildNewFormRouteArgs() - +SurveyQuestionFormRouteArgs buildFormRouteArgs() - +MeasurementSurveyFormViewModel createDuplicate() - - - - - - - - - - - - - SurveyPreview - - - - - - +routeArgs: MeasurementFormRouteArgs - - - - - - +Widget build() - - - - - - - - - - - MeasurementFormRouteArgs - - - - - - - - - - - - - MeasurementSurveyFormData - - - - - - +measurementId: String - +title: String - +introText: String? - +outroText: String? - +questionnaireFormData: QuestionnaireFormData - <static>+kDefaultTitle: String - +id: String - - - - - - +QuestionnaireTask toQuestionnaireTask() - +MeasurementSurveyFormData copy() - - - - - - - - - - - - - QuestionnaireFormData - - - - - - +questionsData: List<QuestionFormData>? - +id: String - - - - - - +StudyUQuestionnaire toQuestionnaire() - +List<EligibilityCriterion> toEligibilityCriteria() - +QuestionnaireFormData copy() - - - - - - - - - - - - - WithQuestionnaireControls - - - - - - +questionsArray: FormArray<dynamic> - +questionFormViewModels: FormViewModelCollection<Q, QuestionFormData> - +questionnaireControls: Map<String, FormArray<dynamic>> - +propagateOnSave: bool - +questionModels: List<Q> - +questionTitles: Map<FormMode, String Function()> - - - - - - +void setQuestionnaireControlsFrom() - +QuestionnaireFormData buildQuestionnaireFormData() - +void read() - +void onCancel() - +dynamic onSave() - +Q provide() - +Q provideQuestionFormViewModel() - - - - - - - - - - - - StudyDesignMeasurementsFormView - - - - - - +Widget build() - - - - - - - - - - - - - MeasurementsFormViewModel - - - - - - +study: Study - +router: GoRouter - +measurementsArray: FormArray<dynamic> - +surveyMeasurementFormViewModels: FormViewModelCollection<MeasurementSurveyFormViewModel, MeasurementSurveyFormData> - +form: FormGroup - +measurementViewModels: List<MeasurementSurveyFormViewModel> - +sharedValidationConfig: Map<FormValidationSetEnum, List<FormControlValidation>> - +measurementRequired: dynamic - +titles: Map<FormMode, String> - - - - - - +void read() - +void setControlsFrom() - +MeasurementsFormData buildFormData() - +List<ModelAction<dynamic>> availableActions() - +List<ModelAction<dynamic>> availablePopupActions() - +List<ModelAction<dynamic>> availableInlineActions() - +void onSelectItem() - +void onNewItem() - +MeasurementSurveyFormViewModel provide() - +void onCancel() - +dynamic onSave() - - - - - - - - - - - - - StudyFormScaffold - - - - - - +studyId: String - +formViewModelBuilder: T Function(WidgetRef) - +formViewBuilder: Widget Function(T) - - - - - - +Widget build() - - - - - - - - - - - T Function(WidgetRef) - - - - - - - - - - - Widget Function(T) - - - - - - - - - - - - - ConsentItemFormViewModel - - - - - - +consentIdControl: FormControl<String> - +titleControl: FormControl<String> - +descriptionControl: FormControl<String> - +iconControl: FormControl<IconOption> - +form: FormGroup - +consentId: String - +sharedValidationConfig: Map<FormValidationSetEnum, List<FormControlValidation>> - +titleRequired: dynamic - +descriptionRequired: dynamic - +titles: Map<FormMode, String> - - - - - - +void setControlsFrom() - +ConsentItemFormData buildFormData() - +ConsentItemFormViewModel createDuplicate() - - - - - - - - - - - - StudyDesignEnrollmentFormView - - - - - - +Widget build() - -dynamic _showScreenerQuestionSidesheetWithArgs() - -dynamic _showConsentItemSidesheetWithArgs() - - - - - - - - - - - - IScreenerQuestionLogicFormViewModel - - - - - - +isDirtyOptionsBannerVisible: bool - - - - - - - - - - - - - ScreenerQuestionLogicFormView - - - - - - +formViewModel: ScreenerQuestionFormViewModel - - - - - - +Widget build() - -dynamic _buildInfoBanner() - -dynamic _buildAnswerOptionsLogicControls() - -List<Widget> _buildOptionLogicRow() - - - - - - - - - - - - - ScreenerQuestionFormViewModel - - - - - - <static>+defaultResponseOptionValidity: bool - +responseOptionsDisabledArray: FormArray<dynamic> - +responseOptionsLogicControls: FormArray<bool> - +responseOptionsLogicDescriptionControls: FormArray<String> - -_questionBaseControls: Map<String, AbstractControl<dynamic>> - +prevResponseOptionControls: List<AbstractControl<dynamic>> - +prevResponseOptionValues: List<dynamic> - +responseOptionsDisabledControls: List<AbstractControl<dynamic>> - +logicControlOptions: List<FormControlOption<bool>> - +questionBaseControls: Map<String, AbstractControl<dynamic>> - +isDirtyOptionsBannerVisible: bool - - - - - - +dynamic onResponseOptionsChanged() - +void setControlsFrom() - +QuestionFormData buildFormData() - -List<FormControl<dynamic>> _copyFormControls() - -AbstractControl<dynamic>? _findAssociatedLogicControlFor() - -AbstractControl<dynamic>? _findAssociatedControlFor() - +ScreenerQuestionFormViewModel createDuplicate() - - - - - - - - - - - - - ConsentItemFormData - - - - - - +consentId: String - +title: String - +description: String - +iconName: String? - +id: String - - - - - - +ConsentItem toConsentItem() - +ConsentItemFormData copy() - - - - - - - - - - - - ConsentItemFormView - - - - - - +formViewModel: ConsentItemFormViewModel - - - - - - - - - - - - - EnrollmentFormData - - - - - - <static>+kDefaultEnrollmentType: Participation - +enrollmentType: Participation - +questionnaireFormData: QuestionnaireFormData - +consentItemsFormData: List<ConsentItemFormData>? - +id: String - - - - - - +Study apply() - +EnrollmentFormData copy() - - - - - - - - - - - - - QuestionFormViewModel - - - - - - <static>+defaultQuestionType: SurveyQuestionType - -_titles: Map<FormMode, String Function()>? - +questionIdControl: FormControl<String> - +questionTypeControl: FormControl<SurveyQuestionType> - +questionTextControl: FormControl<String> - +questionInfoTextControl: FormControl<String> - +questionBaseControls: Map<String, AbstractControl<dynamic>> - +isMultipleChoiceControl: FormControl<bool> - +choiceResponseOptionsArray: FormArray<dynamic> - +customOptionsMin: int - +customOptionsMax: int - +customOptionsInitial: int - +boolResponseOptionsArray: FormArray<String> - +imageResponseOptionsArray: FormArray<String> - <static>+kDefaultMaxRecordingDurationSeconds: int - <static>+kMaxRecordingDurationSeconds: int - +audioResponseOptionsArray: FormArray<String> - +maxRecordingDurationSecondsControl: FormControl<int> - <static>+kDefaultScaleMinValue: int - <static>+kDefaultScaleMaxValue: int - <static>+kNumMidValueControls: int - <static>+kMidValueDebounceMilliseconds: int - +scaleMinValueControl: FormControl<int> - +scaleMaxValueControl: FormControl<int> - -_scaleRangeControl: FormControl<int> - +scaleMinLabelControl: FormControl<String> - +scaleMaxLabelControl: FormControl<String> - +scaleMidValueControls: FormArray<int> - +scaleMidLabelControls: FormArray<String?> - -_scaleResponseOptionsArray: FormArray<int> - +scaleMinColorControl: FormControl<SerializableColor> - +scaleMaxColorControl: FormControl<SerializableColor> - +prevMidValues: List<int?>? - +freeTextTypeControl: FormControl<FreeTextQuestionType> - +customRegexControl: FormControl<String> - +freeTextResponseOptionsArray: FormArray<dynamic> - +freeTextLengthMin: AbstractControl<int> - +freeTextLengthMax: AbstractControl<int> - +freeTextExampleTextControl: FormControl<String> - <static>+kDefaultFreeTextMinLength: int - <static>+kDefaultFreeTextMaxLength: int - +freeTextLengthControl: FormControl<RangeValues> - -_controlsByQuestionType: Map<SurveyQuestionType, FormGroup> - -_sharedValidationConfig: Map<FormValidationSetEnum, List<FormControlValidation>> - -_validationConfigsByQuestionType: Map<SurveyQuestionType, Map<FormValidationSetEnum, List<FormControlValidation>>> - +form: FormGroup - +questionId: String - +questionType: SurveyQuestionType - +questionTypeControlOptions: List<FormControlOption<SurveyQuestionType>> - +answerOptionsArray: FormArray<dynamic> - +answerOptionsControls: List<AbstractControl<dynamic>> - +validAnswerOptions: List<String> - +boolOptions: List<AbstractControl<String>> - +imageOptions: List<AbstractControl<String>> - +audioOptions: List<AbstractControl<String>> - +scaleMinValue: int - +scaleMaxValue: int - +scaleRange: int - +scaleAllValueControls: List<AbstractControl<int>> - +sharedValidationConfig: Map<FormValidationSetEnum, List<FormControlValidation>> - +questionTextRequired: dynamic - +numValidChoiceOptions: dynamic - +scaleRangeValid: dynamic - +maxRecordingDurationValid: dynamic - +titles: Map<FormMode, String> - +isAddOptionButtonVisible: bool - +isMidValuesClearedInfoVisible: bool - - - - - - +String? scaleMidLabelAt() - -dynamic _onScaleRangeChanged() - -dynamic _applyInputFormatters() - -dynamic _updateScaleMidValueControls() - -Map<String, dynamic>? _validateFreeText() - -dynamic _onFreeTextLengthChanged() - -List<FormControlValidation> _getValidationConfig() - +dynamic onQuestionTypeChanged() - +dynamic onResponseOptionsChanged() - -void _updateFormControls() - +void initControls() - +void setControlsFrom() - +QuestionFormData buildFormData() - +List<ModelAction<dynamic>> availableActions() - +void onNewItem() - +void onSelectItem() - +dynamic save() - +QuestionFormViewModel createDuplicate() - - - - - - - - - - - - - EnrollmentFormViewModel - - - - - - +study: Study - +router: GoRouter - +consentItemDelegate: EnrollmentFormConsentItemDelegate - +enrollmentTypeControl: FormControl<Participation> - +consentItemArray: FormArray<dynamic> - +consentItemFormViewModels: FormViewModelCollection<ConsentItemFormViewModel, ConsentItemFormData> - +form: FormGroup - +enrollmentTypeControlOptions: List<FormControlOption<Participation>> - +consentItemModels: List<ConsentItemFormViewModel> - +sharedValidationConfig: Map<FormValidationSetEnum, List<FormControlValidation>> - +titles: Map<FormMode, String> - +canTestScreener: bool - +canTestConsent: bool - +questionTitles: Map<FormMode, String Function()> - - - - - - +void setControlsFrom() - +EnrollmentFormData buildFormData() - +void read() - +List<ModelAction<dynamic>> availableActions() - +List<ModelAction<dynamic>> availablePopupActions() - +List<ModelAction<dynamic>> availableInlineActions() - +void onSelectItem() - +void onNewItem() - +ScreenerQuestionFormRouteArgs buildNewScreenerQuestionFormRouteArgs() - +ScreenerQuestionFormRouteArgs buildScreenerQuestionFormRouteArgs() - +ConsentItemFormRouteArgs buildNewConsentItemFormRouteArgs() - +ConsentItemFormRouteArgs buildConsentItemFormRouteArgs() - +dynamic testScreener() - +dynamic testConsent() - +ScreenerQuestionFormViewModel provideQuestionFormViewModel() - - - - - - - - - - - - - EnrollmentFormConsentItemDelegate - - - - - - +formViewModels: FormViewModelCollection<ConsentItemFormViewModel, ConsentItemFormData> - +owner: EnrollmentFormViewModel - +propagateOnSave: bool - +validationSet: dynamic - - - - - - +void onCancel() - +dynamic onSave() - +ConsentItemFormViewModel provide() - +List<ModelAction<dynamic>> availableActions() - +void onNewItem() - +void onSelectItem() - - - - - - - - - - - - - StudyFormViewModel - - - - - - +studyDirtyCopy: Study? - +studyRepository: IStudyRepository - +authRepository: IAuthRepository - +router: GoRouter - +studyInfoFormViewModel: StudyInfoFormViewModel - +enrollmentFormViewModel: EnrollmentFormViewModel - +measurementsFormViewModel: MeasurementsFormViewModel - +reportsFormViewModel: ReportsFormViewModel - +interventionsFormViewModel: InterventionsFormViewModel - +form: FormGroup - +isStudyReadonly: bool - +sharedValidationConfig: Map<FormValidationSetEnum, List<FormControlValidation>> - +titles: Map<FormMode, String> - - - - - - +void read() - +void setControlsFrom() - +Study buildFormData() - +void dispose() - +void onCancel() - +dynamic onSave() - -dynamic _applyAndSaveSubform() - - - - - - - - - - - - - QuestionFormData - - - - - - <static>+questionTypeFormDataFactories: Map<SurveyQuestionType, QuestionFormData Function(Question<dynamic>, List<EligibilityCriterion>)> - +questionId: String - +questionText: String - +questionInfoText: String? - +questionType: SurveyQuestionType - +responseOptionsValidity: Map<dynamic, bool> - +responseOptions: List<dynamic> - +id: String - - - - - - +Question<dynamic> toQuestion() - +EligibilityCriterion toEligibilityCriterion() - +Answer<dynamic> constructAnswerFor() - +dynamic setResponseOptionsValidityFrom() - +QuestionFormData copy() - - - - - - - - - - - - SurveyQuestionType - - - - - - +index: int - <static>+values: List<SurveyQuestionType> - <static>+choice: SurveyQuestionType - <static>+bool: SurveyQuestionType - <static>+scale: SurveyQuestionType - <static>+image: SurveyQuestionType - <static>+audio: SurveyQuestionType - <static>+freeText: SurveyQuestionType - - - - - - - - - - - - - ChoiceQuestionFormData - - - - - - +isMultipleChoice: bool - +answerOptions: List<String> - +responseOptions: List<String> - - - - - - +Question<dynamic> toQuestion() - +QuestionFormData copy() - -Choice _buildChoiceForValue() - +Answer<dynamic> constructAnswerFor() - - - - - - - - - - - - - BoolQuestionFormData - - - - - - <static>+kResponseOptions: Map<String, bool> - +responseOptions: List<String> - - - - - - +Question<dynamic> toQuestion() - +BoolQuestionFormData copy() - +Answer<dynamic> constructAnswerFor() - - - - - - - - - - - - - ImageQuestionFormData - - - - - - <static>+kResponseOptions: Map<String, FutureBlobFile> - +responseOptions: List<String> - - - - - - +Question<dynamic> toQuestion() - +ImageQuestionFormData copy() - +Answer<dynamic> constructAnswerFor() - - - - - - - - - - - - - AudioQuestionFormData - - - - - - +maxRecordingDurationSeconds: int - <static>+kResponseOptions: Map<String, FutureBlobFile> - +responseOptions: List<String> - - - - - - +Question<dynamic> toQuestion() - +AudioQuestionFormData copy() - +Answer<dynamic> constructAnswerFor() - - - - - - - - - - - - - ScaleQuestionFormData - - - - - - +minValue: double - +maxValue: double - +minLabel: String? - +maxLabel: String? - +midValues: List<double?> - +midLabels: List<String?> - +stepSize: double - +initialValue: double? - +minColor: Color? - +maxColor: Color? - +responseOptions: List<double> - +midAnnotations: List<Annotation> - - - - - - +ScaleQuestion toQuestion() - +QuestionFormData copy() - +Answer<dynamic> constructAnswerFor() - - - - - - - - - - - - - FreeTextQuestionFormData - - - - - - +textLengthRange: List<int> - +textType: FreeTextQuestionType - +textTypeExpression: String? - +responseOptions: List<String> - - - - - - +Question<dynamic> toQuestion() - +FreeTextQuestionFormData copy() - +Answer<dynamic> constructAnswerFor() - - - - - - - - - - - FreeTextQuestionType - - - - - - - - - - - - - AudioRecordingQuestionFormView - - - - - - +formViewModel: QuestionFormViewModel - - - - - - +Widget build() - - - - - - - - - - - - - FreeTextQuestionFormView - - - - - - +formViewModel: QuestionFormViewModel - +generateLabelHelpTextMap: dynamic - - - - - - +Widget build() - +Widget disableOnReadonly() - +Widget generateRow() - - - - - - - - - - - - - ImageCapturingQuestionFormView - - - - - - +formViewModel: QuestionFormViewModel - - - - - - +Widget build() - - - - - - - - - - - - IScaleQuestionFormViewModel - - - - - - +isMidValuesClearedInfoVisible: bool - - - - - - - - - - - - ScaleQuestionFormView - - - - - - +formViewModel: QuestionFormViewModel - - - - - - - - - - - - - ChoiceQuestionFormView - - - - - - +formViewModel: QuestionFormViewModel - - - - - - +Widget build() - - - - - - - - - - - - - BoolQuestionFormView - - - - - - +formViewModel: QuestionFormViewModel - - - - - - +Widget build() - - - - - - - - - - - - SurveyQuestionFormView - - - - - - +formViewModel: QuestionFormViewModel - +isHtmlStyleable: bool - - - - - - - - - - - StudyUTimeOfDay - - - - - - - - - - - - - ScheduleControls - - - - - - +formViewModel: WithScheduleControls - - - - - - +Widget build() - -List<FormTableRow> _conditionalTimeRestrictions() - - - - - - - - - - - - StudiesTableColumnHeader - - - - - - +title: String - +sortable: bool - +sortAscending: bool - +sortingActive: bool - +onSort: void Function()? - - - - - - - - - - - - DashboardScreen - - - - - - +filter: StudiesFilter? - - - - - - - - - - - - StudiesFilter - - - - - - +index: int - <static>+values: List<StudiesFilter> - - - - - - - - - - - - - DashboardScaffold - - - - - - <static>+compactWidthThreshold: double - +body: Widget - - - - - - +Widget build() - - - - - - - - - - - - - DashboardController - - - - - - +studyRepository: IStudyRepository - +authRepository: IAuthRepository - +userRepository: IUserRepository - +router: GoRouter - -_studiesSubscription: StreamSubscription<List<WrappedModel<Study>>>? - +searchController: SearchController - +isSortAscending: bool - - - - - - -dynamic _subscribeStudies() - +dynamic setSearchText() - +dynamic setStudiesFilter() - +dynamic onSelectStudy() - +dynamic onClickNewStudy() - +dynamic pinStudy() - +dynamic pinOffStudy() - +void setSorting() - +void filterStudies() - +void sortStudies() - +bool isSortingActiveForColumn() - +bool isPinned() - +List<ModelAction<dynamic>> availableActions() - +void dispose() - - - - - - - - - - - IUserRepository - - - - - - - - - - - SearchController - - - - - - - - - - - - - StudiesTableColumnSize - - - - - - +collapsed: bool - +flex: int? - +width: double? - - - - - - +Widget createContainer() - - - - - - - - - - - - - StudiesTable - - - - - - +itemHeight: double - +itemPadding: double - +rowSpacing: double - +columnSpacing: double - +compactWidthThreshold: double - +superCompactWidthThreshold: double - +compactStatTitleThreshold: double - +studies: List<Study> - +onSelect: void Function(Study) - +getActions: List<ModelAction<dynamic>> Function(Study) - +emptyWidget: Widget - +pinnedStudies: Iterable<String> - +dashboardController: DashboardController - - - - - - +Widget build() - -Widget _buildColumnHeader() - - - - - - - - - - - void Function(Study) - - - - - - - - - - - List<ModelAction<dynamic>> Function(Study) - - - - - - - - - - - - StudiesTableColumn - - - - - - +index: int - <static>+values: List<StudiesTableColumn> - <static>+pin: StudiesTableColumn - <static>+title: StudiesTableColumn - <static>+status: StudiesTableColumn - <static>+participation: StudiesTableColumn - <static>+createdAt: StudiesTableColumn - <static>+enrolled: StudiesTableColumn - <static>+active: StudiesTableColumn - <static>+completed: StudiesTableColumn - <static>+action: StudiesTableColumn - - - - - - - - - - - - StudiesTableItem - - - - - - +study: Study - +itemHeight: double - +itemPadding: double - +rowSpacing: double - +columnSpacing: double - +actions: List<ModelAction<dynamic>> - +columnSizes: List<StudiesTableColumnSize> - +isPinned: bool - +onPinnedChanged: void Function(Study, bool)? - +onTap: void Function(Study)? - - - - - - - - - - - void Function(Study, bool)? - - - - - - - - - - - void Function(Study)? - - - - - - - - - - - App - - - - - - - - - - - AppContent - - - - - - - - - - - - AccountSettingsDialog - - - - - - +Widget build() - - - - - - - - - \ No newline at end of file diff --git a/docs/uml/designer_v2/lib/localization/platform_locale/uml.svg b/docs/uml/designer_v2/lib/localization/platform_locale/uml.svg deleted file mode 100644 index d262765fc..000000000 --- a/docs/uml/designer_v2/lib/localization/platform_locale/uml.svg +++ /dev/null @@ -1,95 +0,0 @@ - - [PlatformLocaleWeb - | - +Locale getPlatformLocale() - ] - - [<abstract>PlatformLocale]<:--[PlatformLocaleWeb] - - [<abstract>PlatformLocale - | - +Locale getPlatformLocale() - ] - - [PlatformLocaleMobile - | - +Locale getPlatformLocale() - ] - - [<abstract>PlatformLocale]<:--[PlatformLocaleMobile] - - - - - - - - - - - - - - - - - - - - - - - - - PlatformLocaleWeb - - - - - - +Locale getPlatformLocale() - - - - - - - - - - - - PlatformLocale - - - - - - +Locale getPlatformLocale() - - - - - - - - - - - - PlatformLocaleMobile - - - - - - +Locale getPlatformLocale() - - - - - - - - - \ No newline at end of file diff --git a/docs/uml/designer_v2/lib/localization/uml.svg b/docs/uml/designer_v2/lib/localization/uml.svg deleted file mode 100644 index 8f5009747..000000000 --- a/docs/uml/designer_v2/lib/localization/uml.svg +++ /dev/null @@ -1,234 +0,0 @@ - - [LanguagePicker - | - +languagePickerType: LanguagePickerType; - +iconColor: Color?; - +offset: Offset? - ] - - [LanguagePicker]o-[LanguagePickerType] - [LanguagePicker]o-[Color] - [LanguagePicker]o-[Offset] - - [LanguagePickerType - | - +index: int; - <static>+values: List<LanguagePickerType>; - <static>+field: LanguagePickerType; - <static>+icon: LanguagePickerType - ] - - [LanguagePickerType]o-[LanguagePickerType] - [Enum]<:--[LanguagePickerType] - - [PlatformLocaleMobile - | - +Locale getPlatformLocale() - ] - - [<abstract>PlatformLocale]<:--[PlatformLocaleMobile] - - [<abstract>PlatformLocale - | - +Locale getPlatformLocale() - ] - - [PlatformLocaleWeb - | - +Locale getPlatformLocale() - ] - - [<abstract>PlatformLocale]<:--[PlatformLocaleWeb] - - [AppTranslation - | - <static>+dynamic init() - ] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - LanguagePicker - - - - - - +languagePickerType: LanguagePickerType - +iconColor: Color? - +offset: Offset? - - - - - - - - - - - - LanguagePickerType - - - - - - +index: int - <static>+values: List<LanguagePickerType> - <static>+field: LanguagePickerType - <static>+icon: LanguagePickerType - - - - - - - - - - - Color - - - - - - - - - - - Offset - - - - - - - - - - - Enum - - - - - - - - - - - - PlatformLocaleMobile - - - - - - +Locale getPlatformLocale() - - - - - - - - - - - - PlatformLocale - - - - - - +Locale getPlatformLocale() - - - - - - - - - - - - PlatformLocaleWeb - - - - - - +Locale getPlatformLocale() - - - - - - - - - - - - AppTranslation - - - - - - <static>+dynamic init() - - - - - - - - - \ No newline at end of file diff --git a/docs/uml/designer_v2/lib/repositories/uml.svg b/docs/uml/designer_v2/lib/repositories/uml.svg deleted file mode 100644 index 0274e227c..000000000 --- a/docs/uml/designer_v2/lib/repositories/uml.svg +++ /dev/null @@ -1,1725 +0,0 @@ - - [<abstract>StudyUApi - | - +dynamic saveStudy(); - +dynamic fetchStudy(); - +dynamic getUserStudies(); - +dynamic deleteStudy(); - +dynamic saveStudyInvite(); - +dynamic fetchStudyInvite(); - +dynamic deleteStudyInvite(); - +dynamic deleteParticipants(); - +dynamic fetchAppConfig(); - +dynamic fetchUser(); - +dynamic saveUser() - ] - - [APIException - ] - - [Exception]<:--[APIException] - - [StudyNotFoundException - ] - - [APIException]<:-[StudyNotFoundException] - - [MeasurementNotFoundException - ] - - [APIException]<:-[MeasurementNotFoundException] - - [QuestionNotFoundException - ] - - [APIException]<:-[QuestionNotFoundException] - - [ConsentItemNotFoundException - ] - - [APIException]<:-[ConsentItemNotFoundException] - - [InterventionNotFoundException - ] - - [APIException]<:-[InterventionNotFoundException] - - [InterventionTaskNotFoundException - ] - - [APIException]<:-[InterventionTaskNotFoundException] - - [ReportNotFoundException - ] - - [APIException]<:-[ReportNotFoundException] - - [ReportSectionNotFoundException - ] - - [APIException]<:-[ReportSectionNotFoundException] - - [StudyInviteNotFoundException - ] - - [APIException]<:-[StudyInviteNotFoundException] - - [UserNotFoundException - ] - - [APIException]<:-[UserNotFoundException] - - [StudyUApiClient - | - +supabaseClient: SupabaseClient; - <static>+studyColumns: List<String>; - <static>+studyWithParticipantActivityColumns: List<String>; - +testDelayMilliseconds: int - | - +dynamic deleteParticipants(); - +dynamic getUserStudies(); - +dynamic fetchStudy(); - +dynamic deleteStudy(); - +dynamic saveStudy(); - +dynamic fetchStudyInvite(); - +dynamic saveStudyInvite(); - +dynamic deleteStudyInvite(); - +dynamic fetchAppConfig(); - +dynamic fetchUser(); - +dynamic saveUser(); - -dynamic _awaitGuarded(); - -dynamic _apiException(); - -dynamic _testDelay() - ] - - [StudyUApiClient]o-[SupabaseClient] - [<abstract>SupabaseClientDependant]<:-[StudyUApiClient] - [<abstract>SupabaseQueryMixin]<:-[StudyUApiClient] - [<abstract>StudyUApi]<:--[StudyUApiClient] - - [<abstract>IStudyRepository - | - +dynamic launch(); - +dynamic deleteParticipants() - ] - - [<abstract>ModelRepository]<:--[<abstract>IStudyRepository] - - [StudyRepository - | - +apiClient: StudyUApi; - +authRepository: IAuthRepository; - +ref: ProviderRef<dynamic>; - +sortCallback: void Function()? - | - +String getKey(); - +dynamic deleteParticipants(); - +dynamic launch(); - +List<ModelAction<dynamic>> availableActions() - ] - - [StudyRepository]o-[<abstract>StudyUApi] - [StudyRepository]o-[<abstract>IAuthRepository] - [StudyRepository]o-[<abstract>ProviderRef] - [StudyRepository]o-[void Function()?] - [<abstract>ModelRepository]<:-[StudyRepository] - [<abstract>IStudyRepository]<:--[StudyRepository] - - [StudyRepositoryDelegate - | - +apiClient: StudyUApi; - +authRepository: IAuthRepository - | - +dynamic fetchAll(); - +dynamic fetch(); - +dynamic save(); - +dynamic delete(); - +dynamic onError(); - +Study createNewInstance(); - +Study createDuplicate() - ] - - [StudyRepositoryDelegate]o-[<abstract>StudyUApi] - [StudyRepositoryDelegate]o-[<abstract>IAuthRepository] - [<abstract>IModelRepositoryDelegate]<:-[StudyRepositoryDelegate] - - [<abstract>IAppRepository - | - +dynamic fetchAppConfig(); - +void dispose() - ] - - [AppRepository - | - +apiClient: StudyUApi - | - +dynamic fetchAppConfig(); - +void dispose() - ] - - [AppRepository]o-[<abstract>StudyUApi] - [<abstract>IAppRepository]<:--[AppRepository] - - [WrappedModel - | - -_model: T; - +asyncValue: AsyncValue<T>; - +isLocalOnly: bool; - +isDirty: bool; - +isDeleted: bool; - +lastSaved: DateTime?; - +lastFetched: DateTime?; - +lastUpdated: DateTime?; - +model: T - | - +dynamic markWithError(); - +dynamic markAsLoading(); - +dynamic markAsFetched(); - +dynamic markAsSaved() - ] - - [WrappedModel]o-[<abstract>AsyncValue] - - [ModelRepositoryException - ] - - [Exception]<:--[ModelRepositoryException] - - [ModelNotFoundException - ] - - [ModelRepositoryException]<:--[ModelNotFoundException] - - [<abstract>IModelRepository - | - +String getKey(); - +WrappedModel<T>? get(); - +dynamic fetchAll(); - +dynamic fetch(); - +dynamic save(); - +dynamic delete(); - +dynamic duplicateAndSave(); - +dynamic duplicateAndSaveFromRemote(); - +Stream<WrappedModel<T>> watch(); - +Stream<List<WrappedModel<T>>> watchAll(); - +Stream<ModelEvent<T>> watchChanges(); - +Stream<ModelEvent<T>> watchAllChanges(); - +dynamic ensurePersisted(); - +void dispose() - ] - - [<abstract>IModelActionProvider]<:--[<abstract>IModelRepository] - - [<abstract>IModelRepositoryDelegate - | - +dynamic fetchAll(); - +dynamic fetch(); - +dynamic save(); - +dynamic delete(); - +T createNewInstance(); - +T createDuplicate(); - +dynamic onError() - ] - - [<abstract>ModelRepository - | - +delegate: IModelRepositoryDelegate<T>; - -_allModelsStreamController: BehaviorSubject<List<WrappedModel<T>>>; - -_allModelEventsStreamController: BehaviorSubject<ModelEvent<T>>; - +modelStreamControllers: Map<String, BehaviorSubject<WrappedModel<T>>>; - +modelEventsStreamControllers: Map<String, BehaviorSubject<ModelEvent<T>>>; - -_allModels: Map<String, WrappedModel<T>> - | - +WrappedModel<T>? get(); - +dynamic fetchAll(); - +dynamic fetch(); - +dynamic save(); - +dynamic delete(); - +dynamic duplicateAndSave(); - +dynamic duplicateAndSaveFromRemote(); - +Stream<List<WrappedModel<T>>> watchAll(); - +Stream<WrappedModel<T>> watch(); - +Stream<ModelEvent<T>> watchAllChanges(); - +Stream<ModelEvent<T>> watchChanges(); - -dynamic _buildModelSpecificController(); - +dynamic ensurePersisted(); - +WrappedModel<T> upsertLocally(); - +List<WrappedModel<T>> upsertAllLocally(); - +dynamic emitUpdate(); - +dynamic emitModelEvent(); - +dynamic emitError(); - +void dispose(); - +List<ModelAction<dynamic>> availableActions() - ] - - [<abstract>ModelRepository]o-[<abstract>IModelRepositoryDelegate] - [<abstract>ModelRepository]o-[BehaviorSubject] - [<abstract>IModelRepository]<:-[<abstract>ModelRepository] - - [StudyLaunched - ] - - [<abstract>ModelEvent]<:-[StudyLaunched] - - [<abstract>IInviteCodeRepository - | - +dynamic isCodeAlreadyUsed() - ] - - [<abstract>ModelRepository]<:--[<abstract>IInviteCodeRepository] - - [InviteCodeRepository - | - +studyId: String; - +ref: ProviderRef<dynamic>; - +apiClient: StudyUApi; - +authRepository: IAuthRepository; - +studyRepository: IStudyRepository; - +study: Study - | - +String getKey(); - +dynamic isCodeAlreadyUsed(); - +List<ModelAction<dynamic>> availableActions(); - +dynamic emitUpdate() - ] - - [InviteCodeRepository]o-[<abstract>ProviderRef] - [InviteCodeRepository]o-[<abstract>StudyUApi] - [InviteCodeRepository]o-[<abstract>IAuthRepository] - [InviteCodeRepository]o-[<abstract>IStudyRepository] - [InviteCodeRepository]o-[Study] - [<abstract>ModelRepository]<:-[InviteCodeRepository] - [<abstract>IInviteCodeRepository]<:--[InviteCodeRepository] - - [InviteCodeRepositoryDelegate - | - +study: Study; - +apiClient: StudyUApi; - +studyRepository: IStudyRepository - | - +dynamic fetch(); - +dynamic fetchAll(); - +dynamic save(); - +dynamic delete(); - +dynamic onError(); - +StudyInvite createDuplicate(); - +StudyInvite createNewInstance() - ] - - [InviteCodeRepositoryDelegate]o-[Study] - [InviteCodeRepositoryDelegate]o-[<abstract>StudyUApi] - [InviteCodeRepositoryDelegate]o-[<abstract>IStudyRepository] - [<abstract>IModelRepositoryDelegate]<:-[InviteCodeRepositoryDelegate] - - [<abstract>IAuthRepository - | - +allowPasswordReset: bool; - +currentUser: User?; - +isLoggedIn: bool; - +session: Session?; - +serializedSession: String? - | - +dynamic signUp(); - +dynamic signInWith(); - +dynamic signOut(); - +dynamic resetPasswordForEmail(); - +dynamic updateUser(); - +void dispose() - ] - - [<abstract>IAuthRepository]o-[User] - [<abstract>IAuthRepository]o-[Session] - [<abstract>IAppDelegate]<:-[<abstract>IAuthRepository] - - [AuthRepository - | - +supabaseClient: SupabaseClient; - +sharedPreferences: SharedPreferences; - +allowPasswordReset: bool; - +authClient: GoTrueClient; - +session: Session?; - +serializedSession: String?; - +currentUser: User?; - +isLoggedIn: bool - | - -void _registerAuthListener(); - +dynamic signUp(); - +dynamic signInWith(); - +dynamic signOut(); - +dynamic resetPasswordForEmail(); - +dynamic updateUser(); - +void dispose(); - +dynamic onAppStart() - ] - - [AuthRepository]o-[SupabaseClient] - [AuthRepository]o-[SharedPreferences] - [AuthRepository]o-[GoTrueClient] - [AuthRepository]o-[Session] - [AuthRepository]o-[User] - [<abstract>IAuthRepository]<:--[AuthRepository] - - [<abstract>IUserRepository - | - +user: StudyUUser - | - +dynamic fetchUser(); - +dynamic saveUser(); - +dynamic updatePreferences() - ] - - [<abstract>IUserRepository]o-[StudyUUser] - - [UserRepository - | - +apiClient: StudyUApi; - +authRepository: IAuthRepository; - +ref: Ref<Object?>; - +user: StudyUUser - | - +dynamic fetchUser(); - +dynamic saveUser(); - +dynamic updatePreferences() - ] - - [UserRepository]o-[<abstract>StudyUApi] - [UserRepository]o-[<abstract>IAuthRepository] - [UserRepository]o-[<abstract>Ref] - [UserRepository]o-[StudyUUser] - [<abstract>IUserRepository]<:--[UserRepository] - - [PreferenceAction - | - +index: int; - <static>+values: List<PreferenceAction>; - <static>+pin: PreferenceAction; - <static>+pinOff: PreferenceAction - ] - - [PreferenceAction]o-[PreferenceAction] - [Enum]<:--[PreferenceAction] - - [<abstract>ModelEvent - | - +modelId: String; - +model: T - ] - - [IsFetched - ] - - [<abstract>ModelEvent]<:-[IsFetched] - - [IsSaving - ] - - [<abstract>ModelEvent]<:-[IsSaving] - - [IsSaved - ] - - [<abstract>ModelEvent]<:-[IsSaved] - - [IsDeleted - ] - - [<abstract>ModelEvent]<:-[IsDeleted] - - [<abstract>SupabaseClientDependant - | - +supabaseClient: SupabaseClient - ] - - [<abstract>SupabaseClientDependant]o-[SupabaseClient] - - [SupabaseQueryError - | - +statusCode: String?; - +message: String; - +details: dynamic - ] - - [Exception]<:--[SupabaseQueryError] - - [<abstract>SupabaseQueryMixin - | - +dynamic deleteAll(); - +dynamic getAll(); - +dynamic getById(); - +dynamic getByColumn(); - +List<T> deserializeList(); - +T deserializeObject() - ] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - StudyUApi - - - - - - +dynamic saveStudy() - +dynamic fetchStudy() - +dynamic getUserStudies() - +dynamic deleteStudy() - +dynamic saveStudyInvite() - +dynamic fetchStudyInvite() - +dynamic deleteStudyInvite() - +dynamic deleteParticipants() - +dynamic fetchAppConfig() - +dynamic fetchUser() - +dynamic saveUser() - - - - - - - - - - - APIException - - - - - - - - - - - Exception - - - - - - - - - - - StudyNotFoundException - - - - - - - - - - - MeasurementNotFoundException - - - - - - - - - - - QuestionNotFoundException - - - - - - - - - - - ConsentItemNotFoundException - - - - - - - - - - - InterventionNotFoundException - - - - - - - - - - - InterventionTaskNotFoundException - - - - - - - - - - - ReportNotFoundException - - - - - - - - - - - ReportSectionNotFoundException - - - - - - - - - - - StudyInviteNotFoundException - - - - - - - - - - - UserNotFoundException - - - - - - - - - - - - - StudyUApiClient - - - - - - +supabaseClient: SupabaseClient - <static>+studyColumns: List<String> - <static>+studyWithParticipantActivityColumns: List<String> - +testDelayMilliseconds: int - - - - - - +dynamic deleteParticipants() - +dynamic getUserStudies() - +dynamic fetchStudy() - +dynamic deleteStudy() - +dynamic saveStudy() - +dynamic fetchStudyInvite() - +dynamic saveStudyInvite() - +dynamic deleteStudyInvite() - +dynamic fetchAppConfig() - +dynamic fetchUser() - +dynamic saveUser() - -dynamic _awaitGuarded() - -dynamic _apiException() - -dynamic _testDelay() - - - - - - - - - - - SupabaseClient - - - - - - - - - - - - SupabaseClientDependant - - - - - - +supabaseClient: SupabaseClient - - - - - - - - - - - - SupabaseQueryMixin - - - - - - +dynamic deleteAll() - +dynamic getAll() - +dynamic getById() - +dynamic getByColumn() - +List<T> deserializeList() - +T deserializeObject() - - - - - - - - - - - - IStudyRepository - - - - - - +dynamic launch() - +dynamic deleteParticipants() - - - - - - - - - - - - - ModelRepository - - - - - - +delegate: IModelRepositoryDelegate<T> - -_allModelsStreamController: BehaviorSubject<List<WrappedModel<T>>> - -_allModelEventsStreamController: BehaviorSubject<ModelEvent<T>> - +modelStreamControllers: Map<String, BehaviorSubject<WrappedModel<T>>> - +modelEventsStreamControllers: Map<String, BehaviorSubject<ModelEvent<T>>> - -_allModels: Map<String, WrappedModel<T>> - - - - - - +WrappedModel<T>? get() - +dynamic fetchAll() - +dynamic fetch() - +dynamic save() - +dynamic delete() - +dynamic duplicateAndSave() - +dynamic duplicateAndSaveFromRemote() - +Stream<List<WrappedModel<T>>> watchAll() - +Stream<WrappedModel<T>> watch() - +Stream<ModelEvent<T>> watchAllChanges() - +Stream<ModelEvent<T>> watchChanges() - -dynamic _buildModelSpecificController() - +dynamic ensurePersisted() - +WrappedModel<T> upsertLocally() - +List<WrappedModel<T>> upsertAllLocally() - +dynamic emitUpdate() - +dynamic emitModelEvent() - +dynamic emitError() - +void dispose() - +List<ModelAction<dynamic>> availableActions() - - - - - - - - - - - - - StudyRepository - - - - - - +apiClient: StudyUApi - +authRepository: IAuthRepository - +ref: ProviderRef<dynamic> - +sortCallback: void Function()? - - - - - - +String getKey() - +dynamic deleteParticipants() - +dynamic launch() - +List<ModelAction<dynamic>> availableActions() - - - - - - - - - - - - - IAuthRepository - - - - - - +allowPasswordReset: bool - +currentUser: User? - +isLoggedIn: bool - +session: Session? - +serializedSession: String? - - - - - - +dynamic signUp() - +dynamic signInWith() - +dynamic signOut() - +dynamic resetPasswordForEmail() - +dynamic updateUser() - +void dispose() - - - - - - - - - - - ProviderRef - - - - - - - - - - - void Function()? - - - - - - - - - - - - - StudyRepositoryDelegate - - - - - - +apiClient: StudyUApi - +authRepository: IAuthRepository - - - - - - +dynamic fetchAll() - +dynamic fetch() - +dynamic save() - +dynamic delete() - +dynamic onError() - +Study createNewInstance() - +Study createDuplicate() - - - - - - - - - - - - IModelRepositoryDelegate - - - - - - +dynamic fetchAll() - +dynamic fetch() - +dynamic save() - +dynamic delete() - +T createNewInstance() - +T createDuplicate() - +dynamic onError() - - - - - - - - - - - - IAppRepository - - - - - - +dynamic fetchAppConfig() - +void dispose() - - - - - - - - - - - - - AppRepository - - - - - - +apiClient: StudyUApi - - - - - - +dynamic fetchAppConfig() - +void dispose() - - - - - - - - - - - - - WrappedModel - - - - - - -_model: T - +asyncValue: AsyncValue<T> - +isLocalOnly: bool - +isDirty: bool - +isDeleted: bool - +lastSaved: DateTime? - +lastFetched: DateTime? - +lastUpdated: DateTime? - +model: T - - - - - - +dynamic markWithError() - +dynamic markAsLoading() - +dynamic markAsFetched() - +dynamic markAsSaved() - - - - - - - - - - - AsyncValue - - - - - - - - - - - ModelRepositoryException - - - - - - - - - - - ModelNotFoundException - - - - - - - - - - - - IModelRepository - - - - - - +String getKey() - +WrappedModel<T>? get() - +dynamic fetchAll() - +dynamic fetch() - +dynamic save() - +dynamic delete() - +dynamic duplicateAndSave() - +dynamic duplicateAndSaveFromRemote() - +Stream<WrappedModel<T>> watch() - +Stream<List<WrappedModel<T>>> watchAll() - +Stream<ModelEvent<T>> watchChanges() - +Stream<ModelEvent<T>> watchAllChanges() - +dynamic ensurePersisted() - +void dispose() - - - - - - - - - - - IModelActionProvider - - - - - - - - - - - BehaviorSubject - - - - - - - - - - - StudyLaunched - - - - - - - - - - - - ModelEvent - - - - - - +modelId: String - +model: T - - - - - - - - - - - - IInviteCodeRepository - - - - - - +dynamic isCodeAlreadyUsed() - - - - - - - - - - - - - InviteCodeRepository - - - - - - +studyId: String - +ref: ProviderRef<dynamic> - +apiClient: StudyUApi - +authRepository: IAuthRepository - +studyRepository: IStudyRepository - +study: Study - - - - - - +String getKey() - +dynamic isCodeAlreadyUsed() - +List<ModelAction<dynamic>> availableActions() - +dynamic emitUpdate() - - - - - - - - - - - Study - - - - - - - - - - - - - InviteCodeRepositoryDelegate - - - - - - +study: Study - +apiClient: StudyUApi - +studyRepository: IStudyRepository - - - - - - +dynamic fetch() - +dynamic fetchAll() - +dynamic save() - +dynamic delete() - +dynamic onError() - +StudyInvite createDuplicate() - +StudyInvite createNewInstance() - - - - - - - - - - - User - - - - - - - - - - - Session - - - - - - - - - - - IAppDelegate - - - - - - - - - - - - - AuthRepository - - - - - - +supabaseClient: SupabaseClient - +sharedPreferences: SharedPreferences - +allowPasswordReset: bool - +authClient: GoTrueClient - +session: Session? - +serializedSession: String? - +currentUser: User? - +isLoggedIn: bool - - - - - - -void _registerAuthListener() - +dynamic signUp() - +dynamic signInWith() - +dynamic signOut() - +dynamic resetPasswordForEmail() - +dynamic updateUser() - +void dispose() - +dynamic onAppStart() - - - - - - - - - - - SharedPreferences - - - - - - - - - - - GoTrueClient - - - - - - - - - - - - - IUserRepository - - - - - - +user: StudyUUser - - - - - - +dynamic fetchUser() - +dynamic saveUser() - +dynamic updatePreferences() - - - - - - - - - - - StudyUUser - - - - - - - - - - - - - UserRepository - - - - - - +apiClient: StudyUApi - +authRepository: IAuthRepository - +ref: Ref<Object?> - +user: StudyUUser - - - - - - +dynamic fetchUser() - +dynamic saveUser() - +dynamic updatePreferences() - - - - - - - - - - - Ref - - - - - - - - - - - - PreferenceAction - - - - - - +index: int - <static>+values: List<PreferenceAction> - <static>+pin: PreferenceAction - <static>+pinOff: PreferenceAction - - - - - - - - - - - Enum - - - - - - - - - - - IsFetched - - - - - - - - - - - IsSaving - - - - - - - - - - - IsSaved - - - - - - - - - - - IsDeleted - - - - - - - - - - - - SupabaseQueryError - - - - - - +statusCode: String? - +message: String - +details: dynamic - - - - - - - - - \ No newline at end of file diff --git a/docs/uml/designer_v2/lib/routing/uml.svg b/docs/uml/designer_v2/lib/routing/uml.svg deleted file mode 100644 index 956bf0220..000000000 --- a/docs/uml/designer_v2/lib/routing/uml.svg +++ /dev/null @@ -1,680 +0,0 @@ - - [RouterKeys - | - <static>+studyKey: ValueKey<String>; - <static>+authKey: ValueKey<String> - ] - - [RouterKeys]o-[ValueKey] - - [RouteParams - | - <static>+studiesFilter: String; - <static>+studyId: String; - <static>+measurementId: String; - <static>+interventionId: String; - <static>+testAppRoute: String - ] - - [RouterConf - | - <static>+router: GoRouter; - <static>+routes: List<GoRoute>; - <static>+publicRoutes: List<GoRoute>; - <static>+privateRoutes: List<GoRoute> - | - <static>+GoRoute route() - ] - - [RouterConf]o-[GoRouter] - - [<abstract>StudyFormRouteArgs - | - +studyId: String - ] - - [<abstract>QuestionFormRouteArgs - | - +questionId: String - ] - - [<abstract>StudyFormRouteArgs]<:-[<abstract>QuestionFormRouteArgs] - - [ScreenerQuestionFormRouteArgs - ] - - [<abstract>QuestionFormRouteArgs]<:-[ScreenerQuestionFormRouteArgs] - - [ConsentItemFormRouteArgs - | - +consentId: String - ] - - [<abstract>StudyFormRouteArgs]<:-[ConsentItemFormRouteArgs] - - [MeasurementFormRouteArgs - | - +measurementId: String - ] - - [<abstract>StudyFormRouteArgs]<:-[MeasurementFormRouteArgs] - - [SurveyQuestionFormRouteArgs - | - +questionId: String - ] - - [MeasurementFormRouteArgs]<:-[SurveyQuestionFormRouteArgs] - [<abstract>QuestionFormRouteArgs]<:--[SurveyQuestionFormRouteArgs] - - [InterventionFormRouteArgs - | - +interventionId: String - ] - - [<abstract>StudyFormRouteArgs]<:-[InterventionFormRouteArgs] - - [InterventionTaskFormRouteArgs - | - +taskId: String - ] - - [InterventionFormRouteArgs]<:-[InterventionTaskFormRouteArgs] - - [ReportItemFormRouteArgs - | - +sectionId: String - ] - - [<abstract>StudyFormRouteArgs]<:-[ReportItemFormRouteArgs] - - [<abstract>GoRouteParamEnum - | - +String toRouteParam(); - +String toShortString() - ] - - [RoutingIntents - | - <static>+root: RoutingIntent; - <static>+studies: RoutingIntent; - <static>+studiesShared: RoutingIntent; - <static>+publicRegistry: RoutingIntent; - <static>+study: RoutingIntent Function(String); - <static>+studyEdit: RoutingIntent Function(String); - <static>+studyEditInfo: RoutingIntent Function(String); - <static>+studyEditEnrollment: RoutingIntent Function(String); - <static>+studyEditInterventions: RoutingIntent Function(String); - <static>+studyEditIntervention: RoutingIntent Function(String, String); - <static>+studyEditMeasurements: RoutingIntent Function(String); - <static>+studyEditReports: RoutingIntent Function(String); - <static>+studyEditMeasurement: RoutingIntent Function(String, String); - <static>+studyTest: RoutingIntent Function(String, {String? appRoute}); - <static>+studyRecruit: RoutingIntent Function(String); - <static>+studyMonitor: RoutingIntent Function(String); - <static>+studyAnalyze: RoutingIntent Function(String); - <static>+studySettings: RoutingIntent Function(String); - <static>+accountSettings: RoutingIntent; - <static>+studyNew: RoutingIntent; - <static>+login: RoutingIntent; - <static>+signup: RoutingIntent; - <static>+passwordForgot: RoutingIntent; - <static>+passwordForgot2: RoutingIntent Function(String); - <static>+passwordRecovery: RoutingIntent; - <static>+error: RoutingIntent Function(Exception) - ] - - [RoutingIntents]o-[RoutingIntent] - [RoutingIntents]o-[RoutingIntent Function(String)] - [RoutingIntents]o-[RoutingIntent Function(String, String)] - [RoutingIntents]o-[RoutingIntent Function(String, {String? appRoute})] - [RoutingIntents]o-[RoutingIntent Function(Exception)] - - [RoutingIntent - | - +route: GoRoute; - +params: Map<String, String>; - +queryParams: Map<String, String>; - +dispatch: RoutingIntentDispatch?; - +extra: Object?; - +routeName: String; - +arguments: Map<String, String>; - +props: List<Object?> - | - -dynamic _validateRoute(); - +bool matches() - ] - - [RoutingIntent]o-[GoRoute] - [RoutingIntent]o-[RoutingIntentDispatch] - [<abstract>Equatable]<:-[RoutingIntent] - - [RoutingIntentDispatch - | - +index: int; - <static>+values: List<RoutingIntentDispatch>; - <static>+go: RoutingIntentDispatch; - <static>+push: RoutingIntentDispatch - ] - - [RoutingIntentDispatch]o-[RoutingIntentDispatch] - [Enum]<:--[RoutingIntentDispatch] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - RouterKeys - - - - - - <static>+studyKey: ValueKey<String> - <static>+authKey: ValueKey<String> - - - - - - - - - - - ValueKey - - - - - - - - - - - - RouteParams - - - - - - <static>+studiesFilter: String - <static>+studyId: String - <static>+measurementId: String - <static>+interventionId: String - <static>+testAppRoute: String - - - - - - - - - - - - - RouterConf - - - - - - <static>+router: GoRouter - <static>+routes: List<GoRoute> - <static>+publicRoutes: List<GoRoute> - <static>+privateRoutes: List<GoRoute> - - - - - - <static>+GoRoute route() - - - - - - - - - - - GoRouter - - - - - - - - - - - - StudyFormRouteArgs - - - - - - +studyId: String - - - - - - - - - - - - QuestionFormRouteArgs - - - - - - +questionId: String - - - - - - - - - - - ScreenerQuestionFormRouteArgs - - - - - - - - - - - - ConsentItemFormRouteArgs - - - - - - +consentId: String - - - - - - - - - - - - MeasurementFormRouteArgs - - - - - - +measurementId: String - - - - - - - - - - - - SurveyQuestionFormRouteArgs - - - - - - +questionId: String - - - - - - - - - - - - InterventionFormRouteArgs - - - - - - +interventionId: String - - - - - - - - - - - - InterventionTaskFormRouteArgs - - - - - - +taskId: String - - - - - - - - - - - - ReportItemFormRouteArgs - - - - - - +sectionId: String - - - - - - - - - - - - GoRouteParamEnum - - - - - - +String toRouteParam() - +String toShortString() - - - - - - - - - - - - RoutingIntents - - - - - - <static>+root: RoutingIntent - <static>+studies: RoutingIntent - <static>+studiesShared: RoutingIntent - <static>+publicRegistry: RoutingIntent - <static>+study: RoutingIntent Function(String) - <static>+studyEdit: RoutingIntent Function(String) - <static>+studyEditInfo: RoutingIntent Function(String) - <static>+studyEditEnrollment: RoutingIntent Function(String) - <static>+studyEditInterventions: RoutingIntent Function(String) - <static>+studyEditIntervention: RoutingIntent Function(String, String) - <static>+studyEditMeasurements: RoutingIntent Function(String) - <static>+studyEditReports: RoutingIntent Function(String) - <static>+studyEditMeasurement: RoutingIntent Function(String, String) - <static>+studyTest: RoutingIntent Function(String, {String? appRoute}) - <static>+studyRecruit: RoutingIntent Function(String) - <static>+studyMonitor: RoutingIntent Function(String) - <static>+studyAnalyze: RoutingIntent Function(String) - <static>+studySettings: RoutingIntent Function(String) - <static>+accountSettings: RoutingIntent - <static>+studyNew: RoutingIntent - <static>+login: RoutingIntent - <static>+signup: RoutingIntent - <static>+passwordForgot: RoutingIntent - <static>+passwordForgot2: RoutingIntent Function(String) - <static>+passwordRecovery: RoutingIntent - <static>+error: RoutingIntent Function(Exception) - - - - - - - - - - - - - RoutingIntent - - - - - - +route: GoRoute - +params: Map<String, String> - +queryParams: Map<String, String> - +dispatch: RoutingIntentDispatch? - +extra: Object? - +routeName: String - +arguments: Map<String, String> - +props: List<Object?> - - - - - - -dynamic _validateRoute() - +bool matches() - - - - - - - - - - - RoutingIntent Function(String) - - - - - - - - - - - RoutingIntent Function(String, String) - - - - - - - - - - - RoutingIntent Function(String, {String? appRoute}) - - - - - - - - - - - RoutingIntent Function(Exception) - - - - - - - - - - - GoRoute - - - - - - - - - - - - RoutingIntentDispatch - - - - - - +index: int - <static>+values: List<RoutingIntentDispatch> - <static>+go: RoutingIntentDispatch - <static>+push: RoutingIntentDispatch - - - - - - - - - - - Equatable - - - - - - - - - - - Enum - - - - - - - - - \ No newline at end of file diff --git a/docs/uml/designer_v2/lib/services/uml.svg b/docs/uml/designer_v2/lib/services/uml.svg deleted file mode 100644 index 49812d478..000000000 --- a/docs/uml/designer_v2/lib/services/uml.svg +++ /dev/null @@ -1,518 +0,0 @@ - - [<abstract>IClipboardService - | - +dynamic copy() - ] - - [ClipboardService - | - +dynamic copy() - ] - - [<abstract>IClipboardService]<:--[ClipboardService] - - [<abstract>NotificationIntent - | - +message: String?; - +customContent: Widget?; - +icon: IconData?; - +actions: List<NotificationAction>?; - +type: NotificationType - | - +void register() - ] - - [<abstract>NotificationIntent]o-[<abstract>Widget] - [<abstract>NotificationIntent]o-[IconData] - [<abstract>NotificationIntent]o-[NotificationType] - - [NotificationAction - | - +label: String; - +onSelect: dynamic Function(); - +isDestructive: bool - ] - - [NotificationAction]o-[dynamic Function()] - - [SnackbarIntent - | - +duration: int? - ] - - [<abstract>NotificationIntent]<:-[SnackbarIntent] - - [AlertIntent - | - +title: String; - +dismissOnAction: bool; - +isDestructive: dynamic - ] - - [<abstract>NotificationIntent]<:-[AlertIntent] - - [NotificationType - | - +index: int; - <static>+values: List<NotificationType>; - <static>+snackbar: NotificationType; - <static>+alert: NotificationType; - <static>+custom: NotificationType - ] - - [NotificationType]o-[NotificationType] - [Enum]<:--[NotificationType] - - [NotificationDispatcher - | - +child: Widget?; - +snackbarInnerPadding: double; - +snackbarWidth: double?; - +snackbarBehavior: SnackBarBehavior; - +snackbarDefaultDuration: int - ] - - [NotificationDispatcher]o-[<abstract>Widget] - [NotificationDispatcher]o-[SnackBarBehavior] - - [Notifications - | - <static>+credentialsInvalid: SnackbarIntent; - <static>+userAlreadyRegistered: SnackbarIntent; - <static>+passwordReset: SnackbarIntent; - <static>+passwordResetSuccess: SnackbarIntent; - <static>+studyDeleted: SnackbarIntent; - <static>+inviteCodeDeleted: SnackbarIntent; - <static>+inviteCodeClipped: SnackbarIntent; - <static>+studyDeleteConfirmation: AlertIntent - ] - - [Notifications]o-[SnackbarIntent] - [Notifications]o-[AlertIntent] - - [NotificationDefaultActions - | - <static>+cancel: NotificationAction - ] - - [NotificationDefaultActions]o-[NotificationAction] - - [<abstract>INotificationService - | - +void showMessage(); - +void show(); - +Stream<NotificationIntent> watchNotifications(); - +void dispose() - ] - - [NotificationService - | - -_streamController: BehaviorSubject<NotificationIntent> - | - +Stream<NotificationIntent> watchNotifications(); - +void showMessage(); - +void show(); - +void dispose() - ] - - [NotificationService]o-[BehaviorSubject] - [<abstract>INotificationService]<:--[NotificationService] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IClipboardService - - - - - - +dynamic copy() - - - - - - - - - - - - ClipboardService - - - - - - +dynamic copy() - - - - - - - - - - - - - NotificationIntent - - - - - - +message: String? - +customContent: Widget? - +icon: IconData? - +actions: List<NotificationAction>? - +type: NotificationType - - - - - - +void register() - - - - - - - - - - - Widget - - - - - - - - - - - IconData - - - - - - - - - - - - NotificationType - - - - - - +index: int - <static>+values: List<NotificationType> - <static>+snackbar: NotificationType - <static>+alert: NotificationType - <static>+custom: NotificationType - - - - - - - - - - - - NotificationAction - - - - - - +label: String - +onSelect: dynamic Function() - +isDestructive: bool - - - - - - - - - - - dynamic Function() - - - - - - - - - - - - SnackbarIntent - - - - - - +duration: int? - - - - - - - - - - - - AlertIntent - - - - - - +title: String - +dismissOnAction: bool - +isDestructive: dynamic - - - - - - - - - - - Enum - - - - - - - - - - - - NotificationDispatcher - - - - - - +child: Widget? - +snackbarInnerPadding: double - +snackbarWidth: double? - +snackbarBehavior: SnackBarBehavior - +snackbarDefaultDuration: int - - - - - - - - - - - SnackBarBehavior - - - - - - - - - - - - Notifications - - - - - - <static>+credentialsInvalid: SnackbarIntent - <static>+userAlreadyRegistered: SnackbarIntent - <static>+passwordReset: SnackbarIntent - <static>+passwordResetSuccess: SnackbarIntent - <static>+studyDeleted: SnackbarIntent - <static>+inviteCodeDeleted: SnackbarIntent - <static>+inviteCodeClipped: SnackbarIntent - <static>+studyDeleteConfirmation: AlertIntent - - - - - - - - - - - - NotificationDefaultActions - - - - - - <static>+cancel: NotificationAction - - - - - - - - - - - - INotificationService - - - - - - +void showMessage() - +void show() - +Stream<NotificationIntent> watchNotifications() - +void dispose() - - - - - - - - - - - - - NotificationService - - - - - - -_streamController: BehaviorSubject<NotificationIntent> - - - - - - +Stream<NotificationIntent> watchNotifications() - +void showMessage() - +void show() - +void dispose() - - - - - - - - - - - BehaviorSubject - - - - - - - - - \ No newline at end of file diff --git a/docs/uml/designer_v2/lib/uml.svg b/docs/uml/designer_v2/lib/uml.svg deleted file mode 100644 index 880ed2de2..000000000 --- a/docs/uml/designer_v2/lib/uml.svg +++ /dev/null @@ -1,16246 +0,0 @@ - - [Config - | - <static>+isDebugMode: bool; - <static>+defaultLocale: Set<String>; - <static>+supportedLocales: Map<String, String>; - <static>+newStudyId: String; - <static>+newModelId: String; - <static>+minSplashTime: int; - <static>+formAutosaveDebounce: int - ] - - [<abstract>ResultTypes - ] - - [MeasurementResultTypes - | - <static>+questionnaire: String; - <static>+values: List<String> - ] - - [<abstract>ResultTypes]<:-[MeasurementResultTypes] - - [InterventionResultTypes - | - <static>+checkmarkTask: String; - <static>+values: List<String> - ] - - [<abstract>ResultTypes]<:-[InterventionResultTypes] - - [StudyExportData - | - +study: Study; - +measurementsData: List<Map<String, dynamic>>; - +interventionsData: List<Map<String, dynamic>>; - +mediaData: List<String>; - +isEmpty: bool - ] - - [StudyExportData]o-[Study] - - [StudyTemplates - | - <static>+kUnnamedStudyTitle: String - | - <static>+Study emptyDraft() - ] - - [StudyActionType - | - +index: int; - <static>+values: List<StudyActionType>; - <static>+pin: StudyActionType; - <static>+pinoff: StudyActionType; - <static>+edit: StudyActionType; - <static>+duplicate: StudyActionType; - <static>+duplicateDraft: StudyActionType; - <static>+addCollaborator: StudyActionType; - <static>+export: StudyActionType; - <static>+delete: StudyActionType - ] - - [StudyActionType]o-[StudyActionType] - [Enum]<:--[StudyActionType] - - [Notifications - | - <static>+credentialsInvalid: SnackbarIntent; - <static>+userAlreadyRegistered: SnackbarIntent; - <static>+passwordReset: SnackbarIntent; - <static>+passwordResetSuccess: SnackbarIntent; - <static>+studyDeleted: SnackbarIntent; - <static>+inviteCodeDeleted: SnackbarIntent; - <static>+inviteCodeClipped: SnackbarIntent; - <static>+studyDeleteConfirmation: AlertIntent - ] - - [Notifications]o-[SnackbarIntent] - [Notifications]o-[AlertIntent] - - [NotificationDefaultActions - | - <static>+cancel: NotificationAction - ] - - [NotificationDefaultActions]o-[NotificationAction] - - [<abstract>INotificationService - | - +void showMessage(); - +void show(); - +Stream<NotificationIntent> watchNotifications(); - +void dispose() - ] - - [NotificationService - | - -_streamController: BehaviorSubject<NotificationIntent> - | - +Stream<NotificationIntent> watchNotifications(); - +void showMessage(); - +void show(); - +void dispose() - ] - - [NotificationService]o-[BehaviorSubject] - [<abstract>INotificationService]<:--[NotificationService] - - [<abstract>NotificationIntent - | - +message: String?; - +customContent: Widget?; - +icon: IconData?; - +actions: List<NotificationAction>?; - +type: NotificationType - | - +void register() - ] - - [<abstract>NotificationIntent]o-[<abstract>Widget] - [<abstract>NotificationIntent]o-[IconData] - [<abstract>NotificationIntent]o-[NotificationType] - - [NotificationAction - | - +label: String; - +onSelect: dynamic Function(); - +isDestructive: bool - ] - - [NotificationAction]o-[dynamic Function()] - - [SnackbarIntent - | - +duration: int? - ] - - [<abstract>NotificationIntent]<:-[SnackbarIntent] - - [AlertIntent - | - +title: String; - +dismissOnAction: bool; - +isDestructive: dynamic - ] - - [<abstract>NotificationIntent]<:-[AlertIntent] - - [NotificationType - | - +index: int; - <static>+values: List<NotificationType>; - <static>+snackbar: NotificationType; - <static>+alert: NotificationType; - <static>+custom: NotificationType - ] - - [NotificationType]o-[NotificationType] - [Enum]<:--[NotificationType] - - [<abstract>IClipboardService - | - +dynamic copy() - ] - - [ClipboardService - | - +dynamic copy() - ] - - [<abstract>IClipboardService]<:--[ClipboardService] - - [NotificationDispatcher - | - +child: Widget?; - +snackbarInnerPadding: double; - +snackbarWidth: double?; - +snackbarBehavior: SnackBarBehavior; - +snackbarDefaultDuration: int - ] - - [NotificationDispatcher]o-[<abstract>Widget] - [NotificationDispatcher]o-[SnackBarBehavior] - - [Assets - | - <static>+logoWide: String - ] - - [AsyncValueWidget - | - +value: AsyncValue<T>; - +data: Widget Function(T); - +error: Widget Function(Object, StackTrace?)?; - +loading: Widget Function()?; - +empty: Widget Function()? - | - +Widget build(); - -Widget _buildDataOrEmptyWidget(); - -Widget _defaultError(); - -Widget _defaultLoad() - ] - - [AsyncValueWidget]o-[<abstract>AsyncValue] - [AsyncValueWidget]o-[Widget Function(T)] - [AsyncValueWidget]o-[Widget Function(Object, StackTrace?)?] - [AsyncValueWidget]o-[Widget Function()?] - - [FormControlLabel - | - +formControl: AbstractControl<dynamic>; - +text: String; - +isClickable: bool; - +textStyle: TextStyle?; - +onClick: void Function(AbstractControl<dynamic>)? - | - +Widget build() - ] - - [FormControlLabel]o-[<abstract>AbstractControl] - [FormControlLabel]o-[TextStyle] - [FormControlLabel]o-[void Function(AbstractControl<dynamic>)?] - - [ActionPopUpMenuButton - | - +actions: List<ModelAction<dynamic>>; - +triggerIconColor: Color?; - +triggerIconColorHover: Color?; - +triggerIconSize: double; - +disableSplashEffect: bool; - +hideOnEmpty: bool; - +orientation: Axis; - +elevation: double?; - +splashRadius: double?; - +enabled: bool; - +position: PopupMenuPosition - | - +Widget build(); - -Widget _buildPopupMenu() - ] - - [ActionPopUpMenuButton]o-[Color] - [ActionPopUpMenuButton]o-[Axis] - [ActionPopUpMenuButton]o-[PopupMenuPosition] - - [Search - | - +onQueryChanged: dynamic Function(String); - +searchController: SearchController?; - +hintText: String?; - +initialText: String? - ] - - [Search]o-[dynamic Function(String)] - [Search]o-[SearchController] - - [SearchController - | - +setText: void Function(String) - ] - - [SearchController]o-[void Function(String)] - - [FormScaffold - | - +formViewModel: T; - +actions: List<Widget>?; - +body: Widget; - +drawer: Widget?; - +actionsSpacing: double; - +actionsPadding: double - ] - - [FormScaffold]o-[<abstract>Widget] - - [ConstrainedWidthFlexible - | - +minWidth: double; - +maxWidth: double; - +flex: int; - +flexSum: int; - +child: Widget; - +outerConstraints: BoxConstraints - | - +Widget build(); - -double _getWidth() - ] - - [ConstrainedWidthFlexible]o-[<abstract>Widget] - [ConstrainedWidthFlexible]o-[BoxConstraints] - - [PrimaryButton - | - +text: String; - +icon: IconData?; - +isLoading: bool; - +showLoadingEarliestAfterMs: int; - +onPressed: void Function()?; - +tooltip: String; - +tooltipDisabled: String; - +enabled: bool; - +onPressedFuture: dynamic Function()?; - +innerPadding: EdgeInsets; - +minimumSize: Size?; - +isDisabled: bool - ] - - [PrimaryButton]o-[IconData] - [PrimaryButton]o-[void Function()?] - [PrimaryButton]o-[dynamic Function()?] - [PrimaryButton]o-[EdgeInsets] - [PrimaryButton]o-[Size] - - [FormTableRow - | - +label: String?; - +labelBuilder: Widget Function(BuildContext)?; - +labelStyle: TextStyle?; - +labelHelpText: String?; - +input: Widget; - +control: AbstractControl<dynamic>?; - +layout: FormTableRowLayout? - ] - - [FormTableRow]o-[Widget Function(BuildContext)?] - [FormTableRow]o-[TextStyle] - [FormTableRow]o-[<abstract>Widget] - [FormTableRow]o-[<abstract>AbstractControl] - [FormTableRow]o-[FormTableRowLayout] - - [FormTableLayout - | - +rows: List<FormTableRow>; - +columnWidths: Map<int, TableColumnWidth>; - +rowDivider: Widget?; - +rowLayout: FormTableRowLayout?; - +rowLabelStyle: TextStyle? - | - +Widget build() - ] - - [FormTableLayout]o-[<abstract>Widget] - [FormTableLayout]o-[FormTableRowLayout] - [FormTableLayout]o-[TextStyle] - - [FormSectionHeader - | - +title: String; - +titleTextStyle: TextStyle?; - +helpText: String?; - +divider: bool; - +helpTextDisabled: bool - | - +Widget build() - ] - - [FormSectionHeader]o-[TextStyle] - - [FormLabel - | - +labelText: String?; - +helpText: String?; - +labelTextStyle: TextStyle?; - +layout: FormTableRowLayout? - | - +Widget build() - ] - - [FormLabel]o-[TextStyle] - [FormLabel]o-[FormTableRowLayout] - - [FormTableRowLayout - | - +index: int; - <static>+values: List<FormTableRowLayout>; - <static>+vertical: FormTableRowLayout; - <static>+horizontal: FormTableRowLayout - ] - - [FormTableRowLayout]o-[FormTableRowLayout] - [Enum]<:--[FormTableRowLayout] - - [DismissButton - | - +onPressed: void Function()?; - +text: String? - | - +Widget build() - ] - - [DismissButton]o-[void Function()?] - - [Badge - | - +icon: IconData?; - +color: Color?; - +borderRadius: double; - +label: String; - +type: BadgeType; - +padding: EdgeInsets; - +iconSize: double?; - +labelStyle: TextStyle?; - +center: bool - | - +Widget build(); - -Color? _getBackgroundColor(); - -Color _getBorderColor(); - -Color? _getLabelColor() - ] - - [Badge]o-[IconData] - [Badge]o-[Color] - [Badge]o-[BadgeType] - [Badge]o-[EdgeInsets] - [Badge]o-[TextStyle] - - [BadgeType - | - +index: int; - <static>+values: List<BadgeType>; - <static>+filled: BadgeType; - <static>+outlined: BadgeType; - <static>+outlineFill: BadgeType; - <static>+plain: BadgeType - ] - - [BadgeType]o-[BadgeType] - [Enum]<:--[BadgeType] - - [StandardDialog - | - +title: Widget?; - +titleText: String?; - +body: Widget; - +actionButtons: List<Widget>; - +backgroundColor: Color?; - +borderRadius: double?; - +width: double?; - +height: double?; - +minWidth: double; - +minHeight: double; - +maxWidth: double?; - +maxHeight: double?; - +padding: EdgeInsets - | - +Widget build() - ] - - [StandardDialog]o-[<abstract>Widget] - [StandardDialog]o-[Color] - [StandardDialog]o-[EdgeInsets] - - [<abstract>ISyncIndicatorViewModel - | - +isDirty: bool; - +lastSynced: DateTime? - ] - - [SyncIndicator - | - +state: AsyncValue<T>; - +lastSynced: DateTime?; - +isDirty: bool; - +animationDuration: int; - +iconSize: double - ] - - [SyncIndicator]o-[<abstract>AsyncValue] - - [<abstract>IWithBanner - | - +Widget? banner() - ] - - [BannerBox - | - +prefixIcon: Widget?; - +body: Widget; - +style: BannerStyle; - +padding: EdgeInsets?; - +noPrefix: bool; - +dismissable: bool; - +isDismissed: bool?; - +onDismissed: dynamic Function()?; - +dismissIconSize: double - ] - - [BannerBox]o-[<abstract>Widget] - [BannerBox]o-[BannerStyle] - [BannerBox]o-[EdgeInsets] - [BannerBox]o-[dynamic Function()?] - - [BannerStyle - | - +index: int; - <static>+values: List<BannerStyle>; - <static>+warning: BannerStyle; - <static>+info: BannerStyle; - <static>+error: BannerStyle - ] - - [BannerStyle]o-[BannerStyle] - [Enum]<:--[BannerStyle] - - [ActionMenuInline - | - +actions: List<ModelAction<dynamic>>; - +iconSize: double?; - +visible: bool; - +splashRadius: double?; - +paddingVertical: double?; - +paddingHorizontal: double? - | - +Widget build() - ] - - [Collapsible - | - +contentBuilder: Widget Function(BuildContext, bool); - +headerBuilder: Widget Function(BuildContext, bool)?; - +title: String?; - +isCollapsed: bool - ] - - [Collapsible]o-[Widget Function(BuildContext, bool)] - [Collapsible]o-[Widget Function(BuildContext, bool)?] - - [NavbarTab - | - +title: String; - +intent: RoutingIntent?; - +index: int; - +enabled: bool - ] - - [NavbarTab]o-[RoutingIntent] - - [TabbedNavbar - | - +tabs: List<T>; - +selectedTab: T?; - +indicator: BoxDecoration?; - +height: double?; - +disabledBackgroundColor: Color?; - +disabledTooltipText: String?; - +onSelect: void Function(int, T)?; - +labelPadding: EdgeInsets?; - +labelSpacing: double?; - +indicatorSize: TabBarIndicatorSize?; - +isScrollable: bool; - +backgroundColor: Color?; - +labelColorHover: Color?; - +unselectedLabelColorHover: Color? - ] - - [TabbedNavbar]o-[BoxDecoration] - [TabbedNavbar]o-[Color] - [TabbedNavbar]o-[void Function(int, T)?] - [TabbedNavbar]o-[EdgeInsets] - [TabbedNavbar]o-[TabBarIndicatorSize] - - [SidesheetTab - | - +builder: Widget Function(BuildContext) - ] - - [SidesheetTab]o-[Widget Function(BuildContext)] - [NavbarTab]<:-[SidesheetTab] - - [Sidesheet - | - <static>+kDefaultWidth: double; - +titleText: String; - +body: Widget?; - +tabs: List<SidesheetTab>?; - +actionButtons: List<Widget>?; - +width: double?; - +withCloseButton: bool; - +ignoreAppBar: bool; - +collapseSingleTab: bool; - +bodyPadding: EdgeInsets?; - +wrapContent: Widget Function(Widget)? - ] - - [Sidesheet]o-[<abstract>Widget] - [Sidesheet]o-[EdgeInsets] - [Sidesheet]o-[Widget Function(Widget)?] - - [FormSideSheetTab - | - +formViewBuilder: Widget Function(T) - ] - - [FormSideSheetTab]o-[Widget Function(T)] - [NavbarTab]<:-[FormSideSheetTab] - - [HelpIcon - | - +tooltipText: String? - | - +Widget build() - ] - - [EmptyBody - | - +icon: IconData?; - +leading: Widget?; - +leadingSpacing: double?; - +title: String?; - +description: String?; - +button: Widget? - | - +Widget build() - ] - - [EmptyBody]o-[IconData] - [EmptyBody]o-[<abstract>Widget] - - [IndicatorRangeSliderThumbShape - | - +buildContext: BuildContext; - +start: T; - +end: T - | - +Size getPreferredSize(); - +void paint() - ] - - [IndicatorRangeSliderThumbShape]o-[<abstract>BuildContext] - [<abstract>RangeSliderThumbShape]<:-[IndicatorRangeSliderThumbShape] - - [MouseEventsRegion - | - +onTap: void Function()?; - +onHover: void Function(PointerHoverEvent)?; - +onEnter: void Function(PointerEnterEvent)?; - +onExit: void Function(PointerExitEvent)?; - +autoselectCursor: bool; - +cursor: SystemMouseCursor; - <static>+defaultCursor: SystemMouseCursor; - +autoCursor: SystemMouseCursor - ] - - [MouseEventsRegion]o-[void Function()?] - [MouseEventsRegion]o-[void Function(PointerHoverEvent)?] - [MouseEventsRegion]o-[void Function(PointerEnterEvent)?] - [MouseEventsRegion]o-[void Function(PointerExitEvent)?] - [MouseEventsRegion]o-[SystemMouseCursor] - - [ReactiveCustomColorPicker - ] - - [ReactiveFormField]<:-[ReactiveCustomColorPicker] - - [TextParagraph - | - +text: String?; - +style: TextStyle?; - +selectable: bool; - +span: List<TextSpan>? - | - +Widget build() - ] - - [TextParagraph]o-[TextStyle] - - [UnderConstruction - | - +Widget build() - ] - - [NullHelperDecoration - ] - - [InputDecoration]<:-[NullHelperDecoration] - - [ActionMenuType - | - +index: int; - <static>+values: List<ActionMenuType>; - <static>+inline: ActionMenuType; - <static>+popup: ActionMenuType - ] - - [ActionMenuType]o-[ActionMenuType] - [Enum]<:--[ActionMenuType] - - [HtmlStylingBanner - | - +isDismissed: bool; - +onDismissed: dynamic Function()? - | - +Widget build() - ] - - [HtmlStylingBanner]o-[dynamic Function()?] - - [<abstract>FormConsumerWidget - | - +Widget build() - ] - - [<abstract>FormConsumerRefWidget - | - +Widget build() - ] - - [SplashPage - | - +Widget build() - ] - - [ErrorPage - | - +error: Exception? - | - +Widget build() - ] - - [<abstract>ConsumerWidget]<:-[ErrorPage] - - [StudyULogo - | - +onTap: void Function()? - | - +Widget build() - ] - - [StudyULogo]o-[void Function()?] - - [SingleColumnLayout - | - <static>+defaultConstraints: BoxConstraints; - <static>+defaultConstraintsNarrow: BoxConstraints; - +body: Widget; - +header: Widget?; - +stickyHeader: bool; - +constraints: BoxConstraints?; - +scroll: bool; - +padding: EdgeInsets? - | - <static>+dynamic fromType() - ] - - [SingleColumnLayout]o-[BoxConstraints] - [SingleColumnLayout]o-[<abstract>Widget] - [SingleColumnLayout]o-[EdgeInsets] - - [SingleColumnLayoutType - | - +index: int; - <static>+values: List<SingleColumnLayoutType>; - <static>+boundedWide: SingleColumnLayoutType; - <static>+boundedNarrow: SingleColumnLayoutType; - <static>+stretched: SingleColumnLayoutType; - <static>+split: SingleColumnLayoutType - ] - - [SingleColumnLayoutType]o-[SingleColumnLayoutType] - [Enum]<:--[SingleColumnLayoutType] - - [Hyperlink - | - +text: String; - +url: String?; - +onClick: void Function()?; - +linkColor: Color; - +hoverColor: Color?; - +visitedColor: Color?; - +style: TextStyle?; - +hoverStyle: TextStyle?; - +visitedStyle: TextStyle?; - +icon: IconData?; - +iconSize: double? - ] - - [Hyperlink]o-[void Function()?] - [Hyperlink]o-[Color] - [Hyperlink]o-[TextStyle] - [Hyperlink]o-[IconData] - - [StandardTableColumn - | - +label: String; - +tooltip: String?; - +columnWidth: TableColumnWidth; - +sortable: bool; - +sortAscending: bool?; - +sortableIcon: Widget? - ] - - [StandardTableColumn]o-[<abstract>TableColumnWidth] - [StandardTableColumn]o-[<abstract>Widget] - - [StandardTable - | - +items: List<T>; - +inputColumns: List<StandardTableColumn>; - +onSelectItem: void Function(T); - +trailingActionsAt: List<ModelAction<dynamic>> Function(T, int)?; - +trailingActionsMenuType: ActionMenuType?; - +sortColumnPredicates: List<int Function(T, T)?>?; - +pinnedPredicates: int Function(T, T)?; - +headerRowBuilder: TableRow Function(BuildContext, List<StandardTableColumn>)?; - +dataRowBuilder: TableRow Function(BuildContext, List<StandardTableColumn>)?; - +inputTrailingActionsColumn: StandardTableColumn; - +tableWrapper: Widget Function(Widget)?; - +cellSpacing: double; - +rowSpacing: double; - +minRowHeight: double?; - +showTableHeader: bool; - +hideLeadingTrailingWhenEmpty: bool; - +leadingWidget: Widget?; - +trailingWidget: Widget?; - +leadingWidgetSpacing: double?; - +trailingWidgetSpacing: double?; - +emptyWidget: Widget?; - +rowStyle: StandardTableStyle; - +disableRowInteractions: bool - ] - - [StandardTable]o-[void Function(T)] - [StandardTable]o-[List<ModelAction<dynamic>> Function(T, int)?] - [StandardTable]o-[ActionMenuType] - [StandardTable]o-[int Function(T, T)?] - [StandardTable]o-[TableRow Function(BuildContext, List<StandardTableColumn>)?] - [StandardTable]o-[StandardTableColumn] - [StandardTable]o-[Widget Function(Widget)?] - [StandardTable]o-[<abstract>Widget] - [StandardTable]o-[StandardTableStyle] - - [StandardTableStyle - | - +index: int; - <static>+values: List<StandardTableStyle>; - <static>+plain: StandardTableStyle; - <static>+material: StandardTableStyle - ] - - [StandardTableStyle]o-[StandardTableStyle] - [Enum]<:--[StandardTableStyle] - - [IconPack - | - <static>+defaultPack: List<IconOption>; - <static>+material: List<IconOption> - | - <static>+IconOption? resolveIconByName() - ] - - [IconOption - | - +name: String; - +icon: IconData?; - +isEmpty: bool; - +props: List<Object?> - | - +String toJson(); - <static>+IconOption fromJson() - ] - - [IconOption]o-[IconData] - [<abstract>Equatable]<:-[IconOption] - - [ReactiveIconPicker - ] - - [ReactiveFocusableFormField]<:-[ReactiveIconPicker] - - [IconPicker - | - +iconOptions: List<IconOption>; - +selectedOption: IconOption?; - +onSelect: void Function(IconOption)?; - +galleryIconSize: double?; - +selectedIconSize: double?; - +focusNode: FocusNode?; - +isDisabled: bool - | - +Widget build() - ] - - [IconPicker]o-[IconOption] - [IconPicker]o-[void Function(IconOption)?] - [IconPicker]o-[FocusNode] - - [IconPickerField - | - +iconOptions: List<IconOption>; - +selectedOption: IconOption?; - +selectedIconSize: double?; - +galleryIconSize: double?; - +onSelect: void Function(IconOption)?; - +focusNode: FocusNode?; - +isDisabled: bool - | - +Widget build() - ] - - [IconPickerField]o-[IconOption] - [IconPickerField]o-[void Function(IconOption)?] - [IconPickerField]o-[FocusNode] - - [IconPickerGallery - | - +iconOptions: List<IconOption>; - +onSelect: void Function(IconOption)?; - +iconSize: double - | - +Widget build() - ] - - [IconPickerGallery]o-[void Function(IconOption)?] - - [SecondaryButton - | - +text: String; - +icon: IconData?; - +isLoading: bool; - +onPressed: void Function()? - | - +Widget build() - ] - - [SecondaryButton]o-[IconData] - [SecondaryButton]o-[void Function()?] - - [TwoColumnLayout - | - <static>+defaultDivider: VerticalDivider; - <static>+defaultContentPadding: EdgeInsets; - <static>+slimContentPadding: EdgeInsets; - +leftWidget: Widget; - +rightWidget: Widget; - +dividerWidget: Widget?; - +headerWidget: Widget?; - +flexLeft: int?; - +flexRight: int?; - +constraintsLeft: BoxConstraints?; - +constraintsRight: BoxConstraints?; - +scrollLeft: bool; - +scrollRight: bool; - +paddingLeft: EdgeInsets?; - +paddingRight: EdgeInsets?; - +backgroundColorLeft: Color?; - +backgroundColorRight: Color?; - +stretchHeight: bool - ] - - [TwoColumnLayout]o-[VerticalDivider] - [TwoColumnLayout]o-[EdgeInsets] - [TwoColumnLayout]o-[<abstract>Widget] - [TwoColumnLayout]o-[BoxConstraints] - [TwoColumnLayout]o-[Color] - - [AppTranslation - | - <static>+dynamic init() - ] - - [<abstract>PlatformLocale - | - +Locale getPlatformLocale() - ] - - [PlatformLocaleWeb - | - +Locale getPlatformLocale() - ] - - [<abstract>PlatformLocale]<:--[PlatformLocaleWeb] - - [PlatformLocaleMobile - | - +Locale getPlatformLocale() - ] - - [<abstract>PlatformLocale]<:--[PlatformLocaleMobile] - - [LanguagePicker - | - +languagePickerType: LanguagePickerType; - +iconColor: Color?; - +offset: Offset? - ] - - [LanguagePicker]o-[LanguagePickerType] - [LanguagePicker]o-[Color] - [LanguagePicker]o-[Offset] - - [LanguagePickerType - | - +index: int; - <static>+values: List<LanguagePickerType>; - <static>+field: LanguagePickerType; - <static>+icon: LanguagePickerType - ] - - [LanguagePickerType]o-[LanguagePickerType] - [Enum]<:--[LanguagePickerType] - - [<abstract>GoRouteParamEnum - | - +String toRouteParam(); - +String toShortString() - ] - - [RoutingIntents - | - <static>+root: RoutingIntent; - <static>+studies: RoutingIntent; - <static>+studiesShared: RoutingIntent; - <static>+publicRegistry: RoutingIntent; - <static>+study: RoutingIntent Function(String); - <static>+studyEdit: RoutingIntent Function(String); - <static>+studyEditInfo: RoutingIntent Function(String); - <static>+studyEditEnrollment: RoutingIntent Function(String); - <static>+studyEditInterventions: RoutingIntent Function(String); - <static>+studyEditIntervention: RoutingIntent Function(String, String); - <static>+studyEditMeasurements: RoutingIntent Function(String); - <static>+studyEditReports: RoutingIntent Function(String); - <static>+studyEditMeasurement: RoutingIntent Function(String, String); - <static>+studyTest: RoutingIntent Function(String, {String? appRoute}); - <static>+studyRecruit: RoutingIntent Function(String); - <static>+studyMonitor: RoutingIntent Function(String); - <static>+studyAnalyze: RoutingIntent Function(String); - <static>+studySettings: RoutingIntent Function(String); - <static>+accountSettings: RoutingIntent; - <static>+studyNew: RoutingIntent; - <static>+login: RoutingIntent; - <static>+signup: RoutingIntent; - <static>+passwordForgot: RoutingIntent; - <static>+passwordForgot2: RoutingIntent Function(String); - <static>+passwordRecovery: RoutingIntent; - <static>+error: RoutingIntent Function(Exception) - ] - - [RoutingIntents]o-[RoutingIntent] - [RoutingIntents]o-[RoutingIntent Function(String)] - [RoutingIntents]o-[RoutingIntent Function(String, String)] - [RoutingIntents]o-[RoutingIntent Function(String, {String? appRoute})] - [RoutingIntents]o-[RoutingIntent Function(Exception)] - - [RoutingIntent - | - +route: GoRoute; - +params: Map<String, String>; - +queryParams: Map<String, String>; - +dispatch: RoutingIntentDispatch?; - +extra: Object?; - +routeName: String; - +arguments: Map<String, String>; - +props: List<Object?> - | - -dynamic _validateRoute(); - +bool matches() - ] - - [RoutingIntent]o-[GoRoute] - [RoutingIntent]o-[RoutingIntentDispatch] - [<abstract>Equatable]<:-[RoutingIntent] - - [RoutingIntentDispatch - | - +index: int; - <static>+values: List<RoutingIntentDispatch>; - <static>+go: RoutingIntentDispatch; - <static>+push: RoutingIntentDispatch - ] - - [RoutingIntentDispatch]o-[RoutingIntentDispatch] - [Enum]<:--[RoutingIntentDispatch] - - [RouterKeys - | - <static>+studyKey: ValueKey<String>; - <static>+authKey: ValueKey<String> - ] - - [RouterKeys]o-[ValueKey] - - [RouteParams - | - <static>+studiesFilter: String; - <static>+studyId: String; - <static>+measurementId: String; - <static>+interventionId: String; - <static>+testAppRoute: String - ] - - [RouterConf - | - <static>+router: GoRouter; - <static>+routes: List<GoRoute>; - <static>+publicRoutes: List<GoRoute>; - <static>+privateRoutes: List<GoRoute> - | - <static>+GoRoute route() - ] - - [RouterConf]o-[GoRouter] - - [<abstract>StudyFormRouteArgs - | - +studyId: String - ] - - [<abstract>QuestionFormRouteArgs - | - +questionId: String - ] - - [<abstract>StudyFormRouteArgs]<:-[<abstract>QuestionFormRouteArgs] - - [ScreenerQuestionFormRouteArgs - ] - - [<abstract>QuestionFormRouteArgs]<:-[ScreenerQuestionFormRouteArgs] - - [ConsentItemFormRouteArgs - | - +consentId: String - ] - - [<abstract>StudyFormRouteArgs]<:-[ConsentItemFormRouteArgs] - - [MeasurementFormRouteArgs - | - +measurementId: String - ] - - [<abstract>StudyFormRouteArgs]<:-[MeasurementFormRouteArgs] - - [SurveyQuestionFormRouteArgs - | - +questionId: String - ] - - [MeasurementFormRouteArgs]<:-[SurveyQuestionFormRouteArgs] - [<abstract>QuestionFormRouteArgs]<:--[SurveyQuestionFormRouteArgs] - - [InterventionFormRouteArgs - | - +interventionId: String - ] - - [<abstract>StudyFormRouteArgs]<:-[InterventionFormRouteArgs] - - [InterventionTaskFormRouteArgs - | - +taskId: String - ] - - [InterventionFormRouteArgs]<:-[InterventionTaskFormRouteArgs] - - [ReportItemFormRouteArgs - | - +sectionId: String - ] - - [<abstract>StudyFormRouteArgs]<:-[ReportItemFormRouteArgs] - - [DropdownMenuItemTheme - | - +iconTheme: IconThemeData? - ] - - [DropdownMenuItemTheme]o-[IconThemeData] - [<abstract>Diagnosticable]<:-[DropdownMenuItemTheme] - - [ThemeConfig - | - <static>+kMinContentWidth: double; - <static>+kMaxContentWidth: double; - <static>+kHoverFadeFactor: double; - <static>+kMuteFadeFactor: double - | - <static>+dynamic bodyBackgroundColor(); - <static>+Color modalBarrierColor(); - <static>+Color containerColor(); - <static>+Color colorPickerInitialColor(); - <static>+TextStyle bodyTextMuted(); - <static>+TextStyle bodyTextBackground(); - <static>+double iconSplashRadius(); - <static>+Color sidesheetBackgroundColor(); - <static>+InputDecorationTheme dropdownInputDecorationTheme(); - <static>+DropdownMenuItemTheme dropdownMenuItemTheme() - ] - - [NoAnimationPageTransitionsBuilder - | - +Widget buildTransitions() - ] - - [<abstract>PageTransitionsBuilder]<:-[NoAnimationPageTransitionsBuilder] - - [WebTransitionBuilder - | - +Widget buildTransitions() - ] - - [<abstract>PageTransitionsBuilder]<:-[WebTransitionBuilder] - - [ThemeSettingChange - | - +settings: ThemeSettings - ] - - [ThemeSettingChange]o-[ThemeSettings] - [<abstract>Notification]<:-[ThemeSettingChange] - - [ThemeProvider - | - +settings: ValueNotifier<ThemeSettings>; - +lightDynamic: ColorScheme?; - +darkDynamic: ColorScheme?; - +pageTransitionsTheme: PageTransitionsTheme; - +shapeMedium: ShapeBorder - | - +Color custom(); - +Color blend(); - +Color source(); - +ColorScheme colors(); - +CardTheme cardTheme(); - +ListTileThemeData listTileTheme(); - +AppBarTheme appBarTheme(); - +SnackBarThemeData snackBarThemeData(); - +TabBarTheme tabBarTheme(); - +BottomAppBarTheme bottomAppBarTheme(); - +BottomNavigationBarThemeData bottomNavigationBarTheme(); - +SwitchThemeData switchTheme(); - +InputDecorationTheme inputDecorationTheme(); - +TextTheme textTheme(); - +DividerThemeData dividerTheme(); - +NavigationRailThemeData navigationRailTheme(); - +DrawerThemeData drawerTheme(); - +IconThemeData iconTheme(); - +CheckboxThemeData checkboxTheme(); - +RadioThemeData radioTheme(); - +TooltipThemeData tooltipTheme(); - +ThemeData light(); - +ThemeData dark(); - +ThemeMode themeMode(); - +ThemeData theme(); - <static>+ThemeProvider of(); - +bool updateShouldNotify() - ] - - [ThemeProvider]o-[ValueNotifier] - [ThemeProvider]o-[ColorScheme] - [ThemeProvider]o-[PageTransitionsTheme] - [ThemeProvider]o-[<abstract>ShapeBorder] - [<abstract>InheritedWidget]<:-[ThemeProvider] - - [ThemeSettings - | - +sourceColor: Color; - +themeMode: ThemeMode - ] - - [ThemeSettings]o-[Color] - [ThemeSettings]o-[ThemeMode] - - [CustomColor - | - +name: String; - +color: Color; - +blend: bool - | - +Color value() - ] - - [CustomColor]o-[Color] - - [SuppressedBehaviorSubject - | - +subject: BehaviorSubject<T>; - +didSuppressInitialEvent: bool; - -_controller: StreamController<T> - | - -StreamController<T> _buildDerivedController(); - +dynamic close() - ] - - [SuppressedBehaviorSubject]o-[BehaviorSubject] - [SuppressedBehaviorSubject]o-[StreamController] - - [Time - | - <static>+dynamic fromTimeOfDay(); - +Map<String, dynamic> toJson(); - <static>+Time fromJson() - ] - - [TimeOfDay]<:-[Time] - - [TimeValueAccessor - | - +String modelToViewValue(); - +Time? viewToModelValue(); - -String _addLeadingZeroIfNeeded() - ] - - [<abstract>ControlValueAccessor]<:-[TimeValueAccessor] - - [ModelAction - | - +type: T; - +label: String; - +icon: IconData?; - +onExecute: Function; - +isAvailable: bool; - +isDestructive: bool - ] - - [ModelAction]o-[IconData] - - [<abstract>IModelActionProvider - | - +List<ModelAction<dynamic>> availableActions() - ] - - [<abstract>IListActionProvider - | - +void onSelectItem(); - +void onNewItem() - ] - - [<abstract>IModelActionProvider]<:-[<abstract>IListActionProvider] - - [ModelActionType - | - +index: int; - <static>+values: List<ModelActionType>; - <static>+edit: ModelActionType; - <static>+delete: ModelActionType; - <static>+remove: ModelActionType; - <static>+duplicate: ModelActionType; - <static>+clipboard: ModelActionType; - <static>+primary: ModelActionType - ] - - [ModelActionType]o-[ModelActionType] - [Enum]<:--[ModelActionType] - - [OptimisticUpdate - | - +applyOptimistic: void Function(); - +apply: dynamic Function(); - +rollback: void Function(); - +onUpdate: void Function()?; - +onError: void Function(Object, StackTrace?)?; - +rethrowErrors: bool; - +runOptimistically: bool; - +completeFutureOptimistically: bool - | - +dynamic execute(); - -void _runUpdateHandlerIfAny() - ] - - [OptimisticUpdate]o-[void Function()] - [OptimisticUpdate]o-[dynamic Function()] - [OptimisticUpdate]o-[void Function()?] - [OptimisticUpdate]o-[void Function(Object, StackTrace?)?] - - [<abstract>FileFormatEncoder - | - +dynamic encodeAsync(); - +String encode(); - +dynamic call() - ] - - [CSVStringEncoder - | - +String encode() - ] - - [<abstract>FileFormatEncoder]<:-[CSVStringEncoder] - - [JsonStringEncoder - | - +String encode() - ] - - [<abstract>FileFormatEncoder]<:-[JsonStringEncoder] - - [<abstract>ExecutionLimiter - | - +milliseconds: int; - <static>-_timer: Timer? - | - +void dispose() - ] - - [<abstract>ExecutionLimiter]o-[Timer] - - [Debouncer - | - +leading: bool; - +cancelUncompleted: bool; - -_uncompletedFutureOperation: CancelableOperation<dynamic>? - | - +dynamic call() - ] - - [Debouncer]o-[CancelableOperation] - [<abstract>ExecutionLimiter]<:-[Debouncer] - - [Throttler - | - +dynamic call() - ] - - [<abstract>ExecutionLimiter]<:-[Throttler] - - [SerializableColor - | - +Map<String, dynamic> toJson(); - <static>+SerializableColor fromJson() - ] - - [Color]<:-[SerializableColor] - - [<abstract>IProviderArgsResolver - | - +R provide() - ] - - [CombinedStreamNotifier - | - -_subscriptions: List<StreamSubscription<dynamic>> - | - +void dispose() - ] - - [ChangeNotifier]<:-[CombinedStreamNotifier] - - [CountWhereValidator - | - +predicate: bool Function(T?); - +minCount: int?; - +maxCount: int?; - <static>+kValidationMessageMinCount: String; - <static>+kValidationMessageMaxCount: String - | - +Map<String, dynamic>? validate() - ] - - [CountWhereValidator]o-[bool Function(T?)] - [<abstract>Validator]<:-[CountWhereValidator] - - [Patterns - | - <static>+timeFormatString: String; - <static>+emailFormatString: String; - <static>+url: String - ] - - [NumericalRangeFormatter - | - +min: int?; - +max: int? - | - +TextEditingValue formatEditUpdate() - ] - - [<abstract>TextInputFormatter]<:-[NumericalRangeFormatter] - - [StudySequenceFormatter - | - +TextEditingValue formatEditUpdate() - ] - - [<abstract>TextInputFormatter]<:-[StudySequenceFormatter] - - [Tuple - | - +first: T1; - +second: T2; - +props: List<Object?> - | - +Map<String, dynamic> toJson(); - <static>+Tuple<dynamic, dynamic> fromJson(); - +Tuple<T1, T2> copy(); - +Tuple<T1, T2> copyWith() - ] - - [<abstract>Equatable]<:-[Tuple] - - [<abstract>JsonFileLoader - | - +jsonAssetsPath: String - | - +dynamic loadJson(); - +dynamic parseJsonMapFromAssets(); - +dynamic parseJsonListFromAssets() - ] - - [<abstract>IAppDelegate - | - +dynamic onAppStart() - ] - - [AppController - | - +appDelegates: List<IAppDelegate>; - -_delayedFuture: dynamic; - +isInitialized: dynamic - | - +dynamic onAppStart(); - -dynamic _callDelegates() - ] - - [StudyMonitorScreen - | - +Widget build() - ] - - [<abstract>StudyPageWidget]<:-[StudyMonitorScreen] - - [LoginForm - | - +formKey: AuthFormKey - | - +Widget build() - ] - - [LoginForm]o-[AuthFormKey] - [<abstract>FormConsumerRefWidget]<:-[LoginForm] - - [PasswordRecoveryForm - | - +formKey: AuthFormKey - | - +Widget build() - ] - - [PasswordRecoveryForm]o-[AuthFormKey] - [<abstract>FormConsumerRefWidget]<:-[PasswordRecoveryForm] - - [PasswordForgotForm - | - +formKey: AuthFormKey - | - +Widget build() - ] - - [PasswordForgotForm]o-[AuthFormKey] - [<abstract>FormConsumerRefWidget]<:-[PasswordForgotForm] - - [SignupForm - | - +formKey: AuthFormKey - | - +Widget build(); - -dynamic _onClickTermsOfUse(); - -dynamic _onClickPrivacyPolicy() - ] - - [SignupForm]o-[AuthFormKey] - [<abstract>FormConsumerRefWidget]<:-[SignupForm] - - [AuthScaffold - | - +body: Widget; - +formKey: AuthFormKey; - +leftContentMinWidth: double; - +leftPanelMinWidth: double; - +leftPanelPadding: EdgeInsets - ] - - [AuthScaffold]o-[<abstract>Widget] - [AuthScaffold]o-[AuthFormKey] - [AuthScaffold]o-[EdgeInsets] - - [EmailTextField - | - +labelText: String; - +hintText: String?; - +formControlName: String?; - +formControl: FormControl<dynamic>? - ] - - [EmailTextField]o-[FormControl] - - [PasswordTextField - | - +labelText: String; - +hintText: String?; - +onSubmitted: dynamic Function(FormControl<dynamic>)?; - +formControlName: String?; - +formControl: FormControl<dynamic>? - ] - - [PasswordTextField]o-[dynamic Function(FormControl<dynamic>)?] - [PasswordTextField]o-[FormControl] - - [StudyUJobsToBeDone - | - +Widget build() - ] - - [AuthFormController - | - +authRepository: IAuthRepository; - +notificationService: INotificationService; - +router: GoRouter; - +emailControl: FormControl<String>; - +passwordControl: FormControl<String>; - +passwordConfirmationControl: FormControl<String>; - +termsOfServiceControl: FormControl<bool>; - <static>+authValidationMessages: Map<String, String Function(dynamic)>; - +loginForm: FormGroup; - +signupForm: FormGroup; - +passwordForgotForm: FormGroup; - +passwordRecoveryForm: FormGroup; - +controlValidatorsByForm: Map<AuthFormKey, Map<FormControl<dynamic>, List<Validator<dynamic>>>>; - -_formKey: AuthFormKey; - +formKey: AuthFormKey; - +form: FormGroup - | - -dynamic _getFormFor(); - -dynamic _onChangeFormKey(); - +dynamic resetControlsFor(); - -dynamic _forceValidationMessages(); - +dynamic signUp(); - -dynamic _signUp(); - +dynamic signIn(); - -dynamic _signInWith(); - +dynamic signOut(); - +dynamic resetPasswordForEmail(); - +dynamic sendPasswordResetLink(); - +dynamic recoverPassword(); - +dynamic updateUser(); - -dynamic _readDebugUser() - ] - - [AuthFormController]o-[<abstract>IAuthRepository] - [AuthFormController]o-[<abstract>INotificationService] - [AuthFormController]o-[GoRouter] - [AuthFormController]o-[FormControl] - [AuthFormController]o-[FormGroup] - [AuthFormController]o-[AuthFormKey] - [<abstract>IFormGroupController]<:--[AuthFormController] - - [AuthFormKey - | - +index: int; - <static>+values: List<AuthFormKey>; - <static>+login: AuthFormKey; - <static>+signup: AuthFormKey; - <static>+passwordForgot: AuthFormKey; - <static>+passwordRecovery: AuthFormKey; - <static>-_loginSubmit: AuthFormKey; - <static>-_signupSubmit: AuthFormKey - ] - - [AuthFormKey]o-[AuthFormKey] - [Enum]<:--[AuthFormKey] - - [AppStatus - | - +index: int; - <static>+values: List<AppStatus>; - <static>+initializing: AppStatus; - <static>+initialized: AppStatus - ] - - [AppStatus]o-[AppStatus] - [Enum]<:--[AppStatus] - - [FormArrayTable - | - +control: AbstractControl<dynamic>; - +items: List<T>; - +onSelectItem: void Function(T); - +getActionsAt: List<ModelAction<dynamic>> Function(T, int); - +onNewItem: void Function()?; - +rowTitle: String Function(T); - +onNewItemLabel: String; - +sectionTitle: String?; - +sectionDescription: String?; - +emptyIcon: IconData?; - +emptyTitle: String?; - +emptyDescription: String?; - +sectionTitleDivider: bool?; - +rowPrefix: Widget Function(BuildContext, T, int)?; - +rowSuffix: Widget Function(BuildContext, T, int)?; - +leadingWidget: Widget?; - +itemsSectionPadding: EdgeInsets?; - +hideLeadingTrailingWhenEmpty: bool; - <static>+columns: List<StandardTableColumn> - | - +Widget build(); - -List<Widget> _buildRow(); - -Widget _newItemButton() - ] - - [FormArrayTable]o-[<abstract>AbstractControl] - [FormArrayTable]o-[void Function(T)] - [FormArrayTable]o-[List<ModelAction<dynamic>> Function(T, int)] - [FormArrayTable]o-[void Function()?] - [FormArrayTable]o-[String Function(T)] - [FormArrayTable]o-[IconData] - [FormArrayTable]o-[Widget Function(BuildContext, T, int)?] - [FormArrayTable]o-[<abstract>Widget] - [FormArrayTable]o-[EdgeInsets] - - [<abstract>ManagedFormViewModel - | - +ManagedFormViewModel<T> createDuplicate() - ] - - [<abstract>FormViewModel]<:-[<abstract>ManagedFormViewModel] - - [FormViewModelNotFoundException - ] - - [Exception]<:--[FormViewModelNotFoundException] - - [FormViewModelCollection - | - +formViewModels: List<T>; - +formArray: FormArray<dynamic>; - +stagedViewModels: List<T>; - +retrievableViewModels: List<T>; - +formData: List<D> - | - +void add(); - +T remove(); - +T? findWhere(); - +T? removeWhere(); - +bool contains(); - +void stage(); - +T commit(); - +void reset(); - +void read() - ] - - [FormViewModelCollection]o-[FormArray] - - [CustomFormControl - | - -_onValueChangedDebouncer: Debouncer?; - -_onStatusChangedDebouncer: Debouncer?; - +onValueChanged: void Function(T?)?; - +onStatusChanged: void Function(ControlStatus)?; - +onStatusChangedDebounceTime: int?; - +onValueChangedDebounceTime: int? - | - +void dispose() - ] - - [CustomFormControl]o-[Debouncer] - [CustomFormControl]o-[void Function(T?)?] - [CustomFormControl]o-[void Function(ControlStatus)?] - [FormControl]<:-[CustomFormControl] - - [UnsavedChangesDialog - | - +Widget build() - ] - - [<abstract>FormValidationSetEnum - ] - - [FormControlValidation - | - +control: AbstractControl<dynamic>; - +validators: List<Validator<dynamic>>; - +asyncValidators: List<AsyncValidator<dynamic>>?; - +validationMessages: Map<String, String Function(Object)> - | - +FormControlValidation merge() - ] - - [FormControlValidation]o-[<abstract>AbstractControl] - - [<abstract>IFormData - | - +id: String - | - +IFormData copy() - ] - - [FormInvalidException - ] - - [Exception]<:--[FormInvalidException] - - [FormConfigException - | - +message: String? - ] - - [Exception]<:--[FormConfigException] - - [<abstract>IFormViewModelDelegate - | - +dynamic onSave(); - +void onCancel() - ] - - [<abstract>IFormGroupController - | - +form: FormGroup - ] - - [<abstract>IFormGroupController]o-[FormGroup] - - [FormControlOption - | - +value: T; - +label: String; - +description: String?; - +props: List<Object?> - ] - - [<abstract>Equatable]<:-[FormControlOption] - - [<abstract>FormViewModel - | - -_formData: T?; - -_formMode: FormMode; - -_validationSet: FormValidationSetEnum?; - +delegate: IFormViewModelDelegate<FormViewModel<dynamic>>?; - +autosave: bool; - -_immediateFormChildrenSubscriptions: List<StreamSubscription<dynamic>>; - -_immediateFormChildrenListenerDebouncer: Debouncer?; - -_autosaveOperation: CancelableOperation<dynamic>?; - -_defaultControlValidators: Map<String, Tuple<List<Validator<dynamic>>, List<AsyncValidator<dynamic>>>>; - +prevFormValue: Map<String, dynamic>?; - <static>-_formKey: String; - +formData: T?; - +formMode: FormMode; - +isReadonly: bool; - +validationSet: FormValidationSetEnum?; - +isDirty: bool; - +title: String; - +isValid: bool; - +titles: Map<FormMode, String>; - +sharedValidationConfig: Map<FormValidationSetEnum, List<FormControlValidation>> - | - -dynamic _setFormData(); - -dynamic _rememberDefaultControlValidators(); - -Tuple<List<Validator<dynamic>>, List<AsyncValidator<dynamic>>>? _getDefaultValidators(); - -dynamic _disableAllControls(); - -dynamic _formModeUpdated(); - -dynamic _restoreControlsFromFormData(); - +void revalidate(); - -void _applyValidationSet(); - +void read(); - +dynamic save(); - +dynamic cancel(); - +void enableAutosave(); - +void listenToImmediateFormChildren(); - +dynamic markFormGroupChanged(); - +void dispose(); - +void setControlsFrom(); - +T buildFormData(); - +void initControls() - ] - - [<abstract>FormViewModel]o-[FormMode] - [<abstract>FormViewModel]o-[<abstract>FormValidationSetEnum] - [<abstract>FormViewModel]o-[<abstract>IFormViewModelDelegate] - [<abstract>FormViewModel]o-[Debouncer] - [<abstract>FormViewModel]o-[CancelableOperation] - [<abstract>IFormGroupController]<:--[<abstract>FormViewModel] - - [FormMode - | - +index: int; - <static>+values: List<FormMode>; - <static>+create: FormMode; - <static>+readonly: FormMode; - <static>+edit: FormMode - ] - - [FormMode]o-[FormMode] - [Enum]<:--[FormMode] - - [EnrolledBadge - | - +enrolledCount: int - | - +Widget build() - ] - - [StudyRecruitController - | - +inviteCodeRepository: IInviteCodeRepository; - -_invitesSubscription: StreamSubscription<List<WrappedModel<StudyInvite>>>? - | - -dynamic _subscribeInvites(); - +Intervention? getIntervention(); - +int getParticipantCountForInvite(); - +List<ModelAction<dynamic>> availableActions(); - +List<ModelAction<dynamic>> availableInlineActions(); - +void dispose() - ] - - [StudyRecruitController]o-[<abstract>IInviteCodeRepository] - [StudyRecruitController]o-[StreamSubscription] - [StudyBaseController]<:-[StudyRecruitController] - [<abstract>IModelActionProvider]<:--[StudyRecruitController] - - [StudyRecruitScreen - | - +Widget build(); - -Widget _inviteCodesSectionHeader(); - -Widget _newInviteCodeButton(); - -dynamic _onSelectInvite() - ] - - [<abstract>StudyPageWidget]<:-[StudyRecruitScreen] - - [InviteCodeFormView - | - +formViewModel: InviteCodeFormViewModel - | - +Widget build(); - -List<FormTableRow> _conditionalInterventionRows() - ] - - [InviteCodeFormView]o-[InviteCodeFormViewModel] - [<abstract>FormConsumerWidget]<:-[InviteCodeFormView] - - [StudyInvitesTable - | - +invites: List<StudyInvite>; - +onSelect: void Function(StudyInvite); - +getActions: List<ModelAction<dynamic>> Function(StudyInvite); - +getInlineActions: List<ModelAction<dynamic>> Function(StudyInvite); - +getIntervention: Intervention? Function(String); - +getParticipantCountForInvite: int Function(StudyInvite) - | - +Widget build(); - -List<Widget> _buildRow() - ] - - [StudyInvitesTable]o-[void Function(StudyInvite)] - [StudyInvitesTable]o-[List<ModelAction<dynamic>> Function(StudyInvite)] - [StudyInvitesTable]o-[Intervention? Function(String)] - [StudyInvitesTable]o-[int Function(StudyInvite)] - - [InviteCodeFormViewModel - | - +study: Study; - +inviteCodeRepository: IInviteCodeRepository; - +codeControl: FormControl<String>; - +codeControlValidationMessages: Map<String, String Function(dynamic)>; - +isPreconfiguredScheduleControl: FormControl<bool>; - +preconfiguredScheduleTypeControl: FormControl<PhaseSequence>; - +interventionAControl: FormControl<String>; - +interventionBControl: FormControl<String>; - +form: FormGroup; - +titles: Map<FormMode, String>; - +interventionControlOptions: List<FormControlOption<String>>; - +preconfiguredScheduleTypeOptions: List<FormControlOption<PhaseSequence>>; - +isPreconfiguredSchedule: bool; - +preconfiguredSchedule: List<String>? - | - +void initControls(); - -dynamic _uniqueInviteCode(); - +void regenerateCode(); - -String _generateCode(); - +StudyInvite buildFormData(); - +void setControlsFrom(); - +dynamic save() - ] - - [InviteCodeFormViewModel]o-[Study] - [InviteCodeFormViewModel]o-[<abstract>IInviteCodeRepository] - [InviteCodeFormViewModel]o-[FormControl] - [InviteCodeFormViewModel]o-[FormGroup] - [<abstract>FormViewModel]<:-[InviteCodeFormViewModel] - - [PublishSuccessDialog - | - +Widget build() - ] - - [<abstract>StudyPageWidget]<:-[PublishSuccessDialog] - - [PublishDialog - | - +Widget build() - ] - - [<abstract>StudyPageWidget]<:-[PublishDialog] - - [PublishConfirmationDialog - | - +Widget build() - ] - - [<abstract>StudyPageWidget]<:-[PublishConfirmationDialog] - - [FrameControlsWidget - | - +onRefresh: void Function()?; - +onOpenNewTab: void Function()?; - +enabled: bool - | - +Widget build() - ] - - [FrameControlsWidget]o-[void Function()?] - [<abstract>ConsumerWidget]<:-[FrameControlsWidget] - - [<abstract>IStudyStatusBadgeViewModel - | - +studyParticipation: Participation?; - +studyStatus: StudyStatus? - ] - - [<abstract>IStudyStatusBadgeViewModel]o-[Participation] - [<abstract>IStudyStatusBadgeViewModel]o-[StudyStatus] - - [StudyStatusBadge - | - +participation: Participation?; - +status: StudyStatus?; - +type: BadgeType; - +showPrefixIcon: bool; - +showTooltip: bool - | - +Widget build() - ] - - [StudyStatusBadge]o-[Participation] - [StudyStatusBadge]o-[StudyStatus] - [StudyStatusBadge]o-[BadgeType] - - [RouteInformation - | - +route: String?; - +extra: String?; - +cmd: String?; - +data: String? - | - +String toString() - ] - - [<abstract>PlatformController - | - +studyId: String; - +baseSrc: String; - +previewSrc: String; - +routeInformation: RouteInformation; - +frameWidget: Widget - | - +void activate(); - +void registerViews(); - +void generateUrl(); - +void navigate(); - +void refresh(); - +void listen(); - +void send(); - +void openNewPage() - ] - - [<abstract>PlatformController]o-[RouteInformation] - [<abstract>PlatformController]o-[<abstract>Widget] - - [WebController - | - +iFrameElement: IFrameElement - | - +void activate(); - +void registerViews(); - +void generateUrl(); - +void navigate(); - +void refresh(); - +void openNewPage(); - +void listen(); - +void send() - ] - - [WebController]o-[IFrameElement] - [<abstract>PlatformController]<:-[WebController] - - [MobileController - | - +void openNewPage(); - +void refresh(); - +void registerViews(); - +void listen(); - +void send(); - +void navigate(); - +void activate(); - +void generateUrl() - ] - - [<abstract>PlatformController]<:-[MobileController] - - [StudyController - | - +notificationService: INotificationService; - +studyEventsSubscription: StreamSubscription<ModelEvent<Study>>?; - +studyActions: List<ModelAction<dynamic>> - | - +dynamic syncStudyStatus(); - +dynamic onStudySubscriptionUpdate(); - -dynamic _redirectNewToActualStudyID(); - +dynamic publishStudy(); - +void onChangeStudyParticipation(); - +void onAddParticipants(); - +void onSettingsPressed(); - +void dispose() - ] - - [StudyController]o-[<abstract>INotificationService] - [StudyController]o-[StreamSubscription] - [StudyBaseController]<:-[StudyController] - - [<abstract>IStudyNavViewModel - | - +isEditTabEnabled: bool; - +isTestTabEnabled: bool; - +isRecruitTabEnabled: bool; - +isMonitorTabEnabled: bool; - +isAnalyzeTabEnabled: bool; - +isSettingsEnabled: bool - ] - - [StudyNav - | - <static>+dynamic tabs(); - <static>+dynamic edit(); - <static>+dynamic test(); - <static>+dynamic recruit(); - <static>+dynamic monitor(); - <static>+dynamic analyze() - ] - - [StudyDesignNav - | - <static>+dynamic tabs(); - <static>+dynamic info(); - <static>+dynamic enrollment(); - <static>+dynamic interventions(); - <static>+dynamic measurements(); - <static>+dynamic reports() - ] - - [<abstract>StudyPageWidget - | - +studyId: String - | - +Widget? banner() - ] - - [<abstract>ConsumerWidget]<:-[<abstract>StudyPageWidget] - [<abstract>IWithBanner]<:--[<abstract>StudyPageWidget] - - [StudyParticipationBadge - | - +participation: Participation; - +type: BadgeType; - +showPrefixIcon: bool; - +center: bool - | - +Widget build() - ] - - [StudyParticipationBadge]o-[Participation] - [StudyParticipationBadge]o-[BadgeType] - - [StudyBaseController - | - +studyId: String; - +studyRepository: IStudyRepository; - +router: GoRouter; - +studySubscription: StreamSubscription<WrappedModel<Study>>? - | - +dynamic subscribeStudy(); - +dynamic onStudySubscriptionUpdate(); - +dynamic onStudySubscriptionError(); - +void dispose() - ] - - [StudyBaseController]o-[<abstract>IStudyRepository] - [StudyBaseController]o-[GoRouter] - [StudyBaseController]o-[StreamSubscription] - - [PreviewFrame - | - +studyId: String; - +routeArgs: StudyFormRouteArgs?; - +route: String? - ] - - [PreviewFrame]o-[<abstract>StudyFormRouteArgs] - - [<abstract>IStudyAppBarViewModel - | - +isSyncIndicatorVisible: bool; - +isStatusBadgeVisible: bool; - +isPublishVisible: bool - ] - - [<abstract>IStudyStatusBadgeViewModel]<:--[<abstract>IStudyAppBarViewModel] - [<abstract>IStudyNavViewModel]<:--[<abstract>IStudyAppBarViewModel] - - [StudyScaffold - | - +studyId: String; - +tabs: List<NavbarTab>?; - +tabsSubnav: List<NavbarTab>?; - +selectedTab: NavbarTab?; - +selectedTabSubnav: NavbarTab?; - +body: StudyPageWidget; - +drawer: Widget?; - +disableActions: bool; - +actionsSpacing: double; - +actionsPadding: double; - +layoutType: SingleColumnLayoutType?; - +appbarHeight: double; - +appbarSubnavHeight: double - ] - - [StudyScaffold]o-[NavbarTab] - [StudyScaffold]o-[<abstract>StudyPageWidget] - [StudyScaffold]o-[<abstract>Widget] - [StudyScaffold]o-[SingleColumnLayoutType] - - [WebFrame - | - +previewSrc: String; - +studyId: String - | - +Widget build() - ] - - [DisabledFrame - | - +Widget build() - ] - - [PhoneContainer - | - <static>+defaultWidth: double; - <static>+defaultHeight: double; - +width: double; - +height: double; - +borderColor: Color; - +borderWidth: double; - +borderRadius: double; - +innerContent: Widget; - +innerContentBackgroundColor: Color? - | - +Widget build() - ] - - [PhoneContainer]o-[Color] - [PhoneContainer]o-[<abstract>Widget] - - [MobileFrame - | - +Widget build() - ] - - [DesktopFrame - | - +Widget build() - ] - - [StudyTestScreen - | - +previewRoute: String? - | - +Widget build(); - +Widget? banner(); - +dynamic load(); - +dynamic save(); - +dynamic showHelp() - ] - - [<abstract>StudyPageWidget]<:-[StudyTestScreen] - - [StudySettingsFormViewModel - | - +study: AsyncValue<Study>; - +studyRepository: IStudyRepository; - <static>+defaultPublishedToRegistry: bool; - <static>+defaultPublishedToRegistryResults: bool; - +isPublishedToRegistryControl: FormControl<bool>; - +isPublishedToRegistryResultsControl: FormControl<bool>; - +form: FormGroup; - +titles: Map<FormMode, String> - | - +void setControlsFrom(); - +Study buildFormData(); - +dynamic keepControlsSynced(); - +dynamic save(); - +dynamic setLaunchDefaults() - ] - - [StudySettingsFormViewModel]o-[<abstract>AsyncValue] - [StudySettingsFormViewModel]o-[<abstract>IStudyRepository] - [StudySettingsFormViewModel]o-[FormControl] - [StudySettingsFormViewModel]o-[FormGroup] - [<abstract>FormViewModel]<:-[StudySettingsFormViewModel] - - [StudySettingsDialog - | - +Widget build() - ] - - [<abstract>StudyPageWidget]<:-[StudySettingsDialog] - - [StudyTestController - | - +authRepository: IAuthRepository; - +languageCode: String - ] - - [StudyTestController]o-[<abstract>IAuthRepository] - [StudyBaseController]<:-[StudyTestController] - - [TestAppRoutes - | - <static>+studyOverview: String; - <static>+eligibility: String; - <static>+intervention: String; - <static>+consent: String; - <static>+journey: String; - <static>+dashboard: String - ] - - [DrawerEntry - | - +localizedTitle: String Function(); - +icon: IconData?; - +localizedHelpText: String Function()?; - +enabled: bool; - +onSelected: void Function(BuildContext, WidgetRef)?; - +autoCloseDrawer: bool; - +title: String; - +helpText: String? - | - +void onClick() - ] - - [DrawerEntry]o-[String Function()] - [DrawerEntry]o-[IconData] - [DrawerEntry]o-[String Function()?] - [DrawerEntry]o-[void Function(BuildContext, WidgetRef)?] - - [GoRouterDrawerEntry - | - +intent: RoutingIntent; - +onNavigated: void Function()? - | - +void onClick() - ] - - [GoRouterDrawerEntry]o-[RoutingIntent] - [GoRouterDrawerEntry]o-[void Function()?] - [DrawerEntry]<:-[GoRouterDrawerEntry] - - [AppDrawer - | - +width: int; - +autoCloseDrawer: bool; - +leftPaddingEntries: double; - +logoPaddingVertical: double; - +logoPaddingHorizontal: double; - +logoMaxHeight: double; - +logoSectionMinHeight: double; - +logoSectionMaxHeight: double - ] - - [StudyAnalyzeScreen - | - +Widget? banner(); - +Widget build() - ] - - [<abstract>StudyPageWidget]<:-[StudyAnalyzeScreen] - - [StudyAnalyzeController - | - +dynamic onExport() - ] - - [StudyBaseController]<:-[StudyAnalyzeController] - - [StudyDesignInterventionsFormView - | - +Widget build() - ] - - [<abstract>StudyDesignPageWidget]<:-[StudyDesignInterventionsFormView] - - [InterventionFormView - | - +formViewModel: InterventionFormViewModel - ] - - [InterventionFormView]o-[InterventionFormViewModel] - - [InterventionPreview - | - +routeArgs: InterventionFormRouteArgs - | - +Widget build() - ] - - [InterventionPreview]o-[InterventionFormRouteArgs] - [<abstract>ConsumerWidget]<:-[InterventionPreview] - - [StudyScheduleFormView - | - +formViewModel: StudyScheduleControls - | - -FormTableRow _renderCustomSequence(); - +Widget build() - ] - - [StudyScheduleFormView]o-[<abstract>StudyScheduleControls] - [<abstract>FormConsumerWidget]<:-[StudyScheduleFormView] - - [InterventionTaskFormData - | - +taskId: String; - +taskTitle: String; - +taskDescription: String?; - <static>+kDefaultTitle: String; - +id: String - | - +CheckmarkTask toTask(); - +InterventionTaskFormData copy() - ] - - [<abstract>IFormDataWithSchedule]<:-[InterventionTaskFormData] - - [InterventionsFormViewModel - | - +study: Study; - +router: GoRouter; - +interventionsArray: FormArray<dynamic>; - +interventionsCollection: FormViewModelCollection<InterventionFormViewModel, InterventionFormData>; - +form: FormGroup; - +sharedValidationConfig: Map<FormValidationSetEnum, List<FormControlValidation>>; - +interventionsRequired: dynamic; - +titles: Map<FormMode, String>; - +canTestStudySchedule: bool - | - +void setControlsFrom(); - +InterventionsFormData buildFormData(); - +void read(); - +List<ModelAction<dynamic>> availableActions(); - +List<ModelAction<dynamic>> availablePopupActions(); - +List<ModelAction<dynamic>> availableInlineActions(); - +void onSelectItem(); - +void onNewItem(); - +InterventionFormViewModel provide(); - +void onCancel(); - +dynamic onSave(); - +dynamic testStudySchedule() - ] - - [InterventionsFormViewModel]o-[Study] - [InterventionsFormViewModel]o-[GoRouter] - [InterventionsFormViewModel]o-[FormArray] - [InterventionsFormViewModel]o-[FormViewModelCollection] - [InterventionsFormViewModel]o-[FormGroup] - [<abstract>FormViewModel]<:-[InterventionsFormViewModel] - [<abstract>StudyScheduleControls]<:-[InterventionsFormViewModel] - [<abstract>IFormViewModelDelegate]<:--[InterventionsFormViewModel] - [<abstract>IListActionProvider]<:--[InterventionsFormViewModel] - [<abstract>IProviderArgsResolver]<:--[InterventionsFormViewModel] - - [InterventionTaskFormViewModel - | - +taskIdControl: FormControl<String>; - +instanceIdControl: FormControl<String>; - +taskTitleControl: FormControl<String>; - +taskDescriptionControl: FormControl<String>; - +markAsCompletedControl: FormControl<bool>; - +form: FormGroup; - +taskId: String; - +instanceId: String; - +sharedValidationConfig: Map<FormValidationSetEnum, List<FormControlValidation>>; - +titleRequired: dynamic; - +titles: Map<FormMode, String> - | - +void setControlsFrom(); - +InterventionTaskFormData buildFormData(); - +InterventionTaskFormViewModel createDuplicate() - ] - - [InterventionTaskFormViewModel]o-[FormControl] - [InterventionTaskFormViewModel]o-[FormGroup] - [<abstract>ManagedFormViewModel]<:-[InterventionTaskFormViewModel] - [<abstract>WithScheduleControls]<:-[InterventionTaskFormViewModel] - - [<abstract>StudyScheduleControls - | - <static>+defaultScheduleType: PhaseSequence; - <static>+defaultScheduleTypeSequence: String; - <static>+defaultNumCycles: int; - <static>+defaultPeriodLength: int; - +sequenceTypeControl: FormControl<PhaseSequence>; - +sequenceTypeCustomControl: FormControl<String>; - +phaseDurationControl: FormControl<int>; - +numCyclesControl: FormControl<int>; - +includeBaselineControl: FormControl<bool>; - +studyScheduleControls: Map<String, FormControl<Object>>; - <static>+kNumCyclesMin: int; - <static>+kNumCyclesMax: int; - <static>+kPhaseDurationMin: int; - <static>+kPhaseDurationMax: int; - +sequenceTypeControlOptions: List<FormControlOption<PhaseSequence>>; - +studyScheduleValidationConfig: Map<FormValidationSetEnum, List<FormControlValidation>>; - +numCyclesRange: dynamic; - +phaseDurationRange: dynamic; - +customSequenceRequired: dynamic - | - +void setStudyScheduleControlsFrom(); - +StudyScheduleFormData buildStudyScheduleFormData(); - +bool isSequencingCustom() - ] - - [<abstract>StudyScheduleControls]o-[PhaseSequence] - [<abstract>StudyScheduleControls]o-[FormControl] - - [InterventionFormData - | - +interventionId: String; - +title: String; - +description: String?; - +tasksData: List<InterventionTaskFormData>?; - +iconName: String?; - <static>+kDefaultTitle: String; - +id: String - | - +Intervention toIntervention(); - +InterventionFormData copy() - ] - - [<abstract>IFormData]<:-[InterventionFormData] - - [StudyScheduleFormData - | - +sequenceType: PhaseSequence; - +sequenceTypeCustom: String; - +numCycles: int; - +phaseDuration: int; - +includeBaseline: bool; - +id: String - | - +StudySchedule toStudySchedule(); - +Study apply(); - +StudyScheduleFormData copy() - ] - - [StudyScheduleFormData]o-[PhaseSequence] - [<abstract>IStudyFormData]<:--[StudyScheduleFormData] - - [InterventionTaskFormView - | - +formViewModel: InterventionTaskFormViewModel - ] - - [InterventionTaskFormView]o-[InterventionTaskFormViewModel] - - [InterventionsFormData - | - +interventionsData: List<InterventionFormData>; - +studyScheduleData: StudyScheduleFormData; - +id: String - | - +Study apply(); - +InterventionsFormData copy() - ] - - [InterventionsFormData]o-[StudyScheduleFormData] - [<abstract>IStudyFormData]<:--[InterventionsFormData] - - [InterventionFormViewModel - | - +study: Study; - +interventionIdControl: FormControl<String>; - +interventionTitleControl: FormControl<String>; - +interventionIconControl: FormControl<IconOption>; - +interventionDescriptionControl: FormControl<String>; - +interventionTasksArray: FormArray<dynamic>; - +tasksCollection: FormViewModelCollection<InterventionTaskFormViewModel, InterventionTaskFormData>; - +form: FormGroup; - +interventionId: String; - +sharedValidationConfig: Map<FormValidationSetEnum, List<FormControlValidation>>; - +titleRequired: dynamic; - +atLeastOneTask: dynamic; - +breadcrumbsTitle: String; - +titles: Map<FormMode, String> - | - +void setControlsFrom(); - +InterventionFormData buildFormData(); - +List<ModelAction<dynamic>> availableActions(); - +List<ModelAction<dynamic>> availablePopupActions(); - +List<ModelAction<dynamic>> availableInlineActions(); - +void onSelectItem(); - +void onNewItem(); - +void onCancel(); - +dynamic onSave(); - +InterventionTaskFormViewModel provide(); - +InterventionTaskFormRouteArgs buildNewFormRouteArgs(); - +InterventionTaskFormRouteArgs buildFormRouteArgs(); - +InterventionFormViewModel createDuplicate() - ] - - [InterventionFormViewModel]o-[Study] - [InterventionFormViewModel]o-[FormControl] - [InterventionFormViewModel]o-[FormArray] - [InterventionFormViewModel]o-[FormViewModelCollection] - [InterventionFormViewModel]o-[FormGroup] - [<abstract>ManagedFormViewModel]<:-[InterventionFormViewModel] - [<abstract>IFormViewModelDelegate]<:--[InterventionFormViewModel] - [<abstract>IListActionProvider]<:--[InterventionFormViewModel] - [<abstract>IProviderArgsResolver]<:--[InterventionFormViewModel] - - [StudyDesignReportsFormView - | - +Widget build(); - -dynamic _showReportItemSidesheetWithArgs() - ] - - [<abstract>StudyDesignPageWidget]<:-[StudyDesignReportsFormView] - - [ReportItemFormData - | - +isPrimary: bool; - +section: ReportSection; - +id: String - | - <static>+dynamic fromDomainModel(); - +ReportItemFormData copy() - ] - - [ReportItemFormData]o-[<abstract>ReportSection] - [<abstract>IFormData]<:-[ReportItemFormData] - - [DataReferenceEditor - | - +formControl: FormControl<DataReferenceIdentifier<T>>; - +availableTasks: List<Task>; - +buildReactiveDropdownField: ReactiveDropdownField<dynamic> - | - +FormTableRow buildFormTableRow(); - -List<DropdownMenuItem<DataReferenceIdentifier<dynamic>>> _dataReferenceItems() - ] - - [DataReferenceEditor]o-[FormControl] - [DataReferenceEditor]o-[ReactiveDropdownField] - - [TemporalAggregationFormatted - | - -_value: TemporalAggregation; - <static>+values: List<TemporalAggregationFormatted>; - +value: TemporalAggregation; - +string: String; - +icon: IconData?; - +hashCode: int - | - +bool ==(); - +String toString(); - +String toJson(); - <static>+TemporalAggregationFormatted fromJson() - ] - - [TemporalAggregationFormatted]o-[TemporalAggregation] - [TemporalAggregationFormatted]o-[IconData] - - [ImprovementDirectionFormatted - | - -_value: ImprovementDirection; - <static>+values: List<ImprovementDirectionFormatted>; - +value: ImprovementDirection; - +string: String; - +icon: IconData?; - +hashCode: int - | - +bool ==(); - +String toString(); - +String toJson(); - <static>+ImprovementDirectionFormatted fromJson() - ] - - [ImprovementDirectionFormatted]o-[ImprovementDirection] - [ImprovementDirectionFormatted]o-[IconData] - - [ReportSectionType - | - +index: int; - <static>+values: List<ReportSectionType>; - <static>+average: ReportSectionType; - <static>+linearRegression: ReportSectionType - ] - - [ReportSectionType]o-[ReportSectionType] - [Enum]<:--[ReportSectionType] - - [AverageSectionFormView - | - +formViewModel: ReportItemFormViewModel; - +studyId: String; - +reportSectionColumnWidth: Map<int, TableColumnWidth> - | - +Widget build() - ] - - [AverageSectionFormView]o-[ReportItemFormViewModel] - [<abstract>ConsumerWidget]<:-[AverageSectionFormView] - - [DataReferenceIdentifier - | - +hashCode: int - | - +bool ==() - ] - - [DataReference]<:-[DataReferenceIdentifier] - - [LinearRegressionSectionFormView - | - +formViewModel: ReportItemFormViewModel; - +studyId: String; - +reportSectionColumnWidth: Map<int, TableColumnWidth> - | - +Widget build() - ] - - [LinearRegressionSectionFormView]o-[ReportItemFormViewModel] - [<abstract>ConsumerWidget]<:-[LinearRegressionSectionFormView] - - [ReportItemFormViewModel - | - <static>+defaultSectionType: ReportSectionType; - +sectionIdControl: FormControl<String>; - +sectionTypeControl: FormControl<ReportSectionType>; - +titleControl: FormControl<String>; - +descriptionControl: FormControl<String>; - +sectionControl: FormControl<ReportSection>; - +dataReferenceControl: FormControl<DataReferenceIdentifier<num>>; - +temporalAggregationControl: FormControl<TemporalAggregationFormatted>; - +improvementDirectionControl: FormControl<ImprovementDirectionFormatted>; - +alphaControl: FormControl<double>; - -_controlsBySectionType: Map<ReportSectionType, FormGroup>; - -_sharedValidationConfig: Map<FormValidationSetEnum, List<FormControlValidation>>; - -_validationConfigsBySectionType: Map<ReportSectionType, Map<FormValidationSetEnum, List<FormControlValidation>>>; - +sectionBaseControls: Map<String, AbstractControl<dynamic>>; - +form: FormGroup; - +sectionId: String; - +sectionType: ReportSectionType; - <static>+sectionTypeControlOptions: List<FormControlOption<ReportSectionType>>; - <static>+temporalAggregationControlOptions: List<FormControlOption<TemporalAggregationFormatted>>; - <static>+improvementDirectionControlOptions: List<FormControlOption<ImprovementDirectionFormatted>>; - +titles: Map<FormMode, String>; - +sharedValidationConfig: Map<FormValidationSetEnum, List<FormControlValidation>>; - +titleRequired: dynamic; - +descriptionRequired: dynamic; - +dataReferenceRequired: dynamic; - +aggregationRequired: dynamic; - +improvementDirectionRequired: dynamic; - +alphaConfidenceRequired: dynamic - | - -List<FormControlValidation> _getValidationConfig(); - +ReportItemFormData buildFormData(); - +ReportItemFormViewModel createDuplicate(); - +dynamic onSectionTypeChanged(); - -void _updateFormControls(); - +void setControlsFrom() - ] - - [ReportItemFormViewModel]o-[ReportSectionType] - [ReportItemFormViewModel]o-[FormControl] - [ReportItemFormViewModel]o-[FormGroup] - [<abstract>ManagedFormViewModel]<:-[ReportItemFormViewModel] - - [ReportItemFormView - | - +formViewModel: ReportItemFormViewModel; - +studyId: String; - +reportSectionColumnWidth: dynamic; - +sectionTypeBodyBuilder: Widget Function(BuildContext) - | - +Widget build(); - -dynamic _buildSectionText(); - -dynamic _buildSectionTypeHeader() - ] - - [ReportItemFormView]o-[ReportItemFormViewModel] - [ReportItemFormView]o-[Widget Function(BuildContext)] - - [ReportsFormViewModel - | - +study: Study; - +router: GoRouter; - +reportItemDelegate: ReportFormItemDelegate; - +reportItemArray: FormArray<dynamic>; - +reportItemFormViewModels: FormViewModelCollection<ReportItemFormViewModel, ReportItemFormData>; - +form: FormGroup; - +reportItemModels: List<ReportItemFormViewModel>; - +sharedValidationConfig: Map<FormValidationSetEnum, List<FormControlValidation>>; - +titles: Map<FormMode, String>; - +canTestConsent: bool - | - +void setControlsFrom(); - +ReportsFormData buildFormData(); - +void read(); - +ReportItemFormRouteArgs buildNewReportItemFormRouteArgs(); - +ReportItemFormRouteArgs buildReportItemFormRouteArgs(); - +dynamic testReport(); - +void onCancel(); - +dynamic onSave(); - +ReportItemFormViewModel provide() - ] - - [ReportsFormViewModel]o-[Study] - [ReportsFormViewModel]o-[GoRouter] - [ReportsFormViewModel]o-[ReportFormItemDelegate] - [ReportsFormViewModel]o-[FormArray] - [ReportsFormViewModel]o-[FormViewModelCollection] - [ReportsFormViewModel]o-[FormGroup] - [<abstract>FormViewModel]<:-[ReportsFormViewModel] - [<abstract>IFormViewModelDelegate]<:--[ReportsFormViewModel] - [<abstract>IProviderArgsResolver]<:--[ReportsFormViewModel] - - [ReportFormItemDelegate - | - +formViewModelCollection: FormViewModelCollection<ReportItemFormViewModel, ReportItemFormData>; - +owner: ReportsFormViewModel; - +propagateOnSave: bool; - +validationSet: dynamic - | - +void onCancel(); - +dynamic onSave(); - +ReportItemFormViewModel provide(); - +List<ModelAction<dynamic>> availableActions(); - +void onNewItem(); - +void onSelectItem() - ] - - [ReportFormItemDelegate]o-[FormViewModelCollection] - [ReportFormItemDelegate]o-[ReportsFormViewModel] - [<abstract>IFormViewModelDelegate]<:--[ReportFormItemDelegate] - [<abstract>IListActionProvider]<:--[ReportFormItemDelegate] - [<abstract>IProviderArgsResolver]<:--[ReportFormItemDelegate] - - [ReportBadge - | - +status: ReportStatus?; - +type: BadgeType; - +showPrefixIcon: bool; - +showTooltip: bool - | - +Widget build() - ] - - [ReportBadge]o-[ReportStatus] - [ReportBadge]o-[BadgeType] - - [ReportsFormData - | - +reportItems: List<ReportItemFormData>; - +id: String - | - +Study apply(); - +ReportsFormData copy() - ] - - [<abstract>IStudyFormData]<:--[ReportsFormData] - - [ReportStatus - | - +index: int; - <static>+values: List<ReportStatus>; - <static>+primary: ReportStatus; - <static>+secondary: ReportStatus - ] - - [ReportStatus]o-[ReportStatus] - [Enum]<:--[ReportStatus] - - [<abstract>IStudyFormData - | - +Study apply() - ] - - [<abstract>IFormData]<:--[<abstract>IStudyFormData] - - [StudyInfoFormViewModel - | - +study: Study; - +titleControl: FormControl<String>; - +iconControl: FormControl<IconOption>; - +descriptionControl: FormControl<String>; - +organizationControl: FormControl<String>; - +reviewBoardControl: FormControl<String>; - +reviewBoardNumberControl: FormControl<String>; - +researchersControl: FormControl<String>; - +emailControl: FormControl<String>; - +websiteControl: FormControl<String>; - +phoneControl: FormControl<String>; - +additionalInfoControl: FormControl<String>; - +form: FormGroup; - +titles: Map<FormMode, String>; - +sharedValidationConfig: Map<FormValidationSetEnum, List<FormControlValidation>>; - +titleRequired: dynamic; - +descriptionRequired: dynamic; - +iconRequired: dynamic; - +organizationRequired: dynamic; - +reviewBoardRequired: dynamic; - +reviewBoardNumberRequired: dynamic; - +researchersRequired: dynamic; - +emailRequired: dynamic; - +phoneRequired: dynamic; - +emailFormat: dynamic; - +websiteFormat: dynamic - | - +void setControlsFrom(); - +StudyInfoFormData buildFormData() - ] - - [StudyInfoFormViewModel]o-[Study] - [StudyInfoFormViewModel]o-[FormControl] - [StudyInfoFormViewModel]o-[FormGroup] - [<abstract>FormViewModel]<:-[StudyInfoFormViewModel] - - [StudyDesignInfoFormView - | - +Widget build() - ] - - [<abstract>StudyDesignPageWidget]<:-[StudyDesignInfoFormView] - - [StudyInfoFormData - | - +title: String; - +description: String?; - +iconName: String; - +contactInfoFormData: StudyContactInfoFormData; - +id: String - | - +Study apply(); - +StudyInfoFormData copy() - ] - - [StudyInfoFormData]o-[StudyContactInfoFormData] - [<abstract>IStudyFormData]<:--[StudyInfoFormData] - - [StudyContactInfoFormData - | - +organization: String?; - +institutionalReviewBoard: String?; - +institutionalReviewBoardNumber: String?; - +researchers: String?; - +email: String?; - +website: String?; - +phone: String?; - +additionalInfo: String?; - +id: String - | - +Study apply(); - +StudyInfoFormData copy() - ] - - [<abstract>IStudyFormData]<:--[StudyContactInfoFormData] - - [StudyFormValidationSet - | - +index: int; - <static>+values: List<StudyFormValidationSet> - ] - - [Enum]<:--[StudyFormValidationSet] - - [MeasurementsFormData - | - +surveyMeasurements: List<MeasurementSurveyFormData>; - +id: String - | - +Study apply(); - +MeasurementsFormData copy() - ] - - [<abstract>IStudyFormData]<:--[MeasurementsFormData] - - [MeasurementSurveyFormView - | - +formViewModel: MeasurementSurveyFormViewModel - ] - - [MeasurementSurveyFormView]o-[MeasurementSurveyFormViewModel] - - [SurveyPreview - | - +routeArgs: MeasurementFormRouteArgs - | - +Widget build() - ] - - [SurveyPreview]o-[MeasurementFormRouteArgs] - [<abstract>ConsumerWidget]<:-[SurveyPreview] - - [MeasurementSurveyFormData - | - +measurementId: String; - +title: String; - +introText: String?; - +outroText: String?; - +questionnaireFormData: QuestionnaireFormData; - <static>+kDefaultTitle: String; - +id: String - | - +QuestionnaireTask toQuestionnaireTask(); - +MeasurementSurveyFormData copy() - ] - - [MeasurementSurveyFormData]o-[QuestionnaireFormData] - [<abstract>IFormDataWithSchedule]<:-[MeasurementSurveyFormData] - - [MeasurementSurveyFormViewModel - | - +study: Study; - +measurementIdControl: FormControl<String>; - +instanceIdControl: FormControl<String>; - +surveyTitleControl: FormControl<String>; - +surveyIntroTextControl: FormControl<String>; - +surveyOutroTextControl: FormControl<String>; - +form: FormGroup; - +measurementId: String; - +instanceId: String; - +sharedValidationConfig: Map<FormValidationSetEnum, List<FormControlValidation>>; - +titleRequired: dynamic; - +atLeastOneQuestion: dynamic; - +breadcrumbsTitle: String; - +titles: Map<FormMode, String> - | - +void setControlsFrom(); - +MeasurementSurveyFormData buildFormData(); - +List<ModelAction<dynamic>> availableActions(); - +List<ModelAction<dynamic>> availablePopupActions(); - +List<ModelAction<dynamic>> availableInlineActions(); - +void onSelectItem(); - +void onNewItem(); - +SurveyQuestionFormRouteArgs buildNewFormRouteArgs(); - +SurveyQuestionFormRouteArgs buildFormRouteArgs(); - +MeasurementSurveyFormViewModel createDuplicate() - ] - - [MeasurementSurveyFormViewModel]o-[Study] - [MeasurementSurveyFormViewModel]o-[FormControl] - [MeasurementSurveyFormViewModel]o-[FormGroup] - [<abstract>ManagedFormViewModel]<:-[MeasurementSurveyFormViewModel] - [<abstract>WithQuestionnaireControls]<:-[MeasurementSurveyFormViewModel] - [<abstract>WithScheduleControls]<:-[MeasurementSurveyFormViewModel] - [<abstract>IFormViewModelDelegate]<:--[MeasurementSurveyFormViewModel] - [<abstract>IListActionProvider]<:--[MeasurementSurveyFormViewModel] - [<abstract>IProviderArgsResolver]<:--[MeasurementSurveyFormViewModel] - - [StudyDesignMeasurementsFormView - | - +Widget build() - ] - - [<abstract>StudyDesignPageWidget]<:-[StudyDesignMeasurementsFormView] - - [MeasurementsFormViewModel - | - +study: Study; - +router: GoRouter; - +measurementsArray: FormArray<dynamic>; - +surveyMeasurementFormViewModels: FormViewModelCollection<MeasurementSurveyFormViewModel, MeasurementSurveyFormData>; - +form: FormGroup; - +measurementViewModels: List<MeasurementSurveyFormViewModel>; - +sharedValidationConfig: Map<FormValidationSetEnum, List<FormControlValidation>>; - +measurementRequired: dynamic; - +titles: Map<FormMode, String> - | - +void read(); - +void setControlsFrom(); - +MeasurementsFormData buildFormData(); - +List<ModelAction<dynamic>> availableActions(); - +List<ModelAction<dynamic>> availablePopupActions(); - +List<ModelAction<dynamic>> availableInlineActions(); - +void onSelectItem(); - +void onNewItem(); - +MeasurementSurveyFormViewModel provide(); - +void onCancel(); - +dynamic onSave() - ] - - [MeasurementsFormViewModel]o-[Study] - [MeasurementsFormViewModel]o-[GoRouter] - [MeasurementsFormViewModel]o-[FormArray] - [MeasurementsFormViewModel]o-[FormViewModelCollection] - [MeasurementsFormViewModel]o-[FormGroup] - [<abstract>FormViewModel]<:-[MeasurementsFormViewModel] - [<abstract>IFormViewModelDelegate]<:--[MeasurementsFormViewModel] - [<abstract>IListActionProvider]<:--[MeasurementsFormViewModel] - [<abstract>IProviderArgsResolver]<:--[MeasurementsFormViewModel] - - [StudyFormScaffold - | - +studyId: String; - +formViewModelBuilder: T Function(WidgetRef); - +formViewBuilder: Widget Function(T) - | - +Widget build() - ] - - [StudyFormScaffold]o-[T Function(WidgetRef)] - [StudyFormScaffold]o-[Widget Function(T)] - [<abstract>ConsumerWidget]<:-[StudyFormScaffold] - - [ConsentItemFormViewModel - | - +consentIdControl: FormControl<String>; - +titleControl: FormControl<String>; - +descriptionControl: FormControl<String>; - +iconControl: FormControl<IconOption>; - +form: FormGroup; - +consentId: String; - +sharedValidationConfig: Map<FormValidationSetEnum, List<FormControlValidation>>; - +titleRequired: dynamic; - +descriptionRequired: dynamic; - +titles: Map<FormMode, String> - | - +void setControlsFrom(); - +ConsentItemFormData buildFormData(); - +ConsentItemFormViewModel createDuplicate() - ] - - [ConsentItemFormViewModel]o-[FormControl] - [ConsentItemFormViewModel]o-[FormGroup] - [<abstract>ManagedFormViewModel]<:-[ConsentItemFormViewModel] - - [StudyDesignEnrollmentFormView - | - +Widget build(); - -dynamic _showScreenerQuestionSidesheetWithArgs(); - -dynamic _showConsentItemSidesheetWithArgs() - ] - - [<abstract>StudyDesignPageWidget]<:-[StudyDesignEnrollmentFormView] - - [<abstract>IScreenerQuestionLogicFormViewModel - | - +isDirtyOptionsBannerVisible: bool - ] - - [ScreenerQuestionLogicFormView - | - +formViewModel: ScreenerQuestionFormViewModel - | - +Widget build(); - -dynamic _buildInfoBanner(); - -dynamic _buildAnswerOptionsLogicControls(); - -List<Widget> _buildOptionLogicRow() - ] - - [ScreenerQuestionLogicFormView]o-[ScreenerQuestionFormViewModel] - [<abstract>FormConsumerWidget]<:-[ScreenerQuestionLogicFormView] - - [ConsentItemFormData - | - +consentId: String; - +title: String; - +description: String; - +iconName: String?; - +id: String - | - +ConsentItem toConsentItem(); - +ConsentItemFormData copy() - ] - - [<abstract>IFormData]<:-[ConsentItemFormData] - - [ConsentItemFormView - | - +formViewModel: ConsentItemFormViewModel - ] - - [ConsentItemFormView]o-[ConsentItemFormViewModel] - - [EnrollmentFormData - | - <static>+kDefaultEnrollmentType: Participation; - +enrollmentType: Participation; - +questionnaireFormData: QuestionnaireFormData; - +consentItemsFormData: List<ConsentItemFormData>?; - +id: String - | - +Study apply(); - +EnrollmentFormData copy() - ] - - [EnrollmentFormData]o-[Participation] - [EnrollmentFormData]o-[QuestionnaireFormData] - [<abstract>IStudyFormData]<:--[EnrollmentFormData] - - [ScreenerQuestionFormViewModel - | - <static>+defaultResponseOptionValidity: bool; - +responseOptionsDisabledArray: FormArray<dynamic>; - +responseOptionsLogicControls: FormArray<bool>; - +responseOptionsLogicDescriptionControls: FormArray<String>; - -_questionBaseControls: Map<String, AbstractControl<dynamic>>; - +prevResponseOptionControls: List<AbstractControl<dynamic>>; - +prevResponseOptionValues: List<dynamic>; - +responseOptionsDisabledControls: List<AbstractControl<dynamic>>; - +logicControlOptions: List<FormControlOption<bool>>; - +questionBaseControls: Map<String, AbstractControl<dynamic>>; - +isDirtyOptionsBannerVisible: bool - | - +dynamic onResponseOptionsChanged(); - +void setControlsFrom(); - +QuestionFormData buildFormData(); - -List<FormControl<dynamic>> _copyFormControls(); - -AbstractControl<dynamic>? _findAssociatedLogicControlFor(); - -AbstractControl<dynamic>? _findAssociatedControlFor(); - +ScreenerQuestionFormViewModel createDuplicate() - ] - - [ScreenerQuestionFormViewModel]o-[FormArray] - [QuestionFormViewModel]<:-[ScreenerQuestionFormViewModel] - [<abstract>IScreenerQuestionLogicFormViewModel]<:--[ScreenerQuestionFormViewModel] - - [EnrollmentFormViewModel - | - +study: Study; - +router: GoRouter; - +consentItemDelegate: EnrollmentFormConsentItemDelegate; - +enrollmentTypeControl: FormControl<Participation>; - +consentItemArray: FormArray<dynamic>; - +consentItemFormViewModels: FormViewModelCollection<ConsentItemFormViewModel, ConsentItemFormData>; - +form: FormGroup; - +enrollmentTypeControlOptions: List<FormControlOption<Participation>>; - +consentItemModels: List<ConsentItemFormViewModel>; - +sharedValidationConfig: Map<FormValidationSetEnum, List<FormControlValidation>>; - +titles: Map<FormMode, String>; - +canTestScreener: bool; - +canTestConsent: bool; - +questionTitles: Map<FormMode, String Function()> - | - +void setControlsFrom(); - +EnrollmentFormData buildFormData(); - +void read(); - +List<ModelAction<dynamic>> availableActions(); - +List<ModelAction<dynamic>> availablePopupActions(); - +List<ModelAction<dynamic>> availableInlineActions(); - +void onSelectItem(); - +void onNewItem(); - +ScreenerQuestionFormRouteArgs buildNewScreenerQuestionFormRouteArgs(); - +ScreenerQuestionFormRouteArgs buildScreenerQuestionFormRouteArgs(); - +ConsentItemFormRouteArgs buildNewConsentItemFormRouteArgs(); - +ConsentItemFormRouteArgs buildConsentItemFormRouteArgs(); - +dynamic testScreener(); - +dynamic testConsent(); - +ScreenerQuestionFormViewModel provideQuestionFormViewModel() - ] - - [EnrollmentFormViewModel]o-[Study] - [EnrollmentFormViewModel]o-[GoRouter] - [EnrollmentFormViewModel]o-[EnrollmentFormConsentItemDelegate] - [EnrollmentFormViewModel]o-[FormControl] - [EnrollmentFormViewModel]o-[FormArray] - [EnrollmentFormViewModel]o-[FormViewModelCollection] - [EnrollmentFormViewModel]o-[FormGroup] - [<abstract>FormViewModel]<:-[EnrollmentFormViewModel] - [<abstract>WithQuestionnaireControls]<:-[EnrollmentFormViewModel] - [<abstract>IFormViewModelDelegate]<:--[EnrollmentFormViewModel] - [<abstract>IListActionProvider]<:--[EnrollmentFormViewModel] - [<abstract>IProviderArgsResolver]<:--[EnrollmentFormViewModel] - - [EnrollmentFormConsentItemDelegate - | - +formViewModels: FormViewModelCollection<ConsentItemFormViewModel, ConsentItemFormData>; - +owner: EnrollmentFormViewModel; - +propagateOnSave: bool; - +validationSet: dynamic - | - +void onCancel(); - +dynamic onSave(); - +ConsentItemFormViewModel provide(); - +List<ModelAction<dynamic>> availableActions(); - +void onNewItem(); - +void onSelectItem() - ] - - [EnrollmentFormConsentItemDelegate]o-[FormViewModelCollection] - [EnrollmentFormConsentItemDelegate]o-[EnrollmentFormViewModel] - [<abstract>IFormViewModelDelegate]<:--[EnrollmentFormConsentItemDelegate] - [<abstract>IListActionProvider]<:--[EnrollmentFormConsentItemDelegate] - [<abstract>IProviderArgsResolver]<:--[EnrollmentFormConsentItemDelegate] - - [StudyFormViewModel - | - +studyDirtyCopy: Study?; - +studyRepository: IStudyRepository; - +authRepository: IAuthRepository; - +router: GoRouter; - +studyInfoFormViewModel: StudyInfoFormViewModel; - +enrollmentFormViewModel: EnrollmentFormViewModel; - +measurementsFormViewModel: MeasurementsFormViewModel; - +reportsFormViewModel: ReportsFormViewModel; - +interventionsFormViewModel: InterventionsFormViewModel; - +form: FormGroup; - +isStudyReadonly: bool; - +sharedValidationConfig: Map<FormValidationSetEnum, List<FormControlValidation>>; - +titles: Map<FormMode, String> - | - +void read(); - +void setControlsFrom(); - +Study buildFormData(); - +void dispose(); - +void onCancel(); - +dynamic onSave(); - -dynamic _applyAndSaveSubform() - ] - - [StudyFormViewModel]o-[Study] - [StudyFormViewModel]o-[<abstract>IStudyRepository] - [StudyFormViewModel]o-[<abstract>IAuthRepository] - [StudyFormViewModel]o-[GoRouter] - [StudyFormViewModel]o-[StudyInfoFormViewModel] - [StudyFormViewModel]o-[EnrollmentFormViewModel] - [StudyFormViewModel]o-[MeasurementsFormViewModel] - [StudyFormViewModel]o-[ReportsFormViewModel] - [StudyFormViewModel]o-[InterventionsFormViewModel] - [StudyFormViewModel]o-[FormGroup] - [<abstract>FormViewModel]<:-[StudyFormViewModel] - [<abstract>IFormViewModelDelegate]<:--[StudyFormViewModel] - - [<abstract>WithQuestionnaireControls - | - +questionsArray: FormArray<dynamic>; - +questionFormViewModels: FormViewModelCollection<Q, QuestionFormData>; - +questionnaireControls: Map<String, FormArray<dynamic>>; - +propagateOnSave: bool; - +questionModels: List<Q>; - +questionTitles: Map<FormMode, String Function()> - | - +void setQuestionnaireControlsFrom(); - +QuestionnaireFormData buildQuestionnaireFormData(); - +void read(); - +void onCancel(); - +dynamic onSave(); - +Q provide(); - +Q provideQuestionFormViewModel() - ] - - [<abstract>WithQuestionnaireControls]o-[FormArray] - [<abstract>WithQuestionnaireControls]o-[FormViewModelCollection] - [<abstract>IFormViewModelDelegate]<:--[<abstract>WithQuestionnaireControls] - [<abstract>IProviderArgsResolver]<:--[<abstract>WithQuestionnaireControls] - - [QuestionnaireFormData - | - +questionsData: List<QuestionFormData>?; - +id: String - | - +StudyUQuestionnaire toQuestionnaire(); - +List<EligibilityCriterion> toEligibilityCriteria(); - +QuestionnaireFormData copy() - ] - - [<abstract>IFormData]<:--[QuestionnaireFormData] - - [<abstract>QuestionFormData - | - <static>+questionTypeFormDataFactories: Map<SurveyQuestionType, QuestionFormData Function(Question<dynamic>, List<EligibilityCriterion>)>; - +questionId: String; - +questionText: String; - +questionInfoText: String?; - +questionType: SurveyQuestionType; - +responseOptionsValidity: Map<dynamic, bool>; - +responseOptions: List<dynamic>; - +id: String - | - +Question<dynamic> toQuestion(); - +EligibilityCriterion toEligibilityCriterion(); - +Answer<dynamic> constructAnswerFor(); - +dynamic setResponseOptionsValidityFrom(); - +QuestionFormData copy() - ] - - [<abstract>QuestionFormData]o-[SurveyQuestionType] - [<abstract>IFormData]<:--[<abstract>QuestionFormData] - - [ChoiceQuestionFormData - | - +isMultipleChoice: bool; - +answerOptions: List<String>; - +responseOptions: List<String> - | - +Question<dynamic> toQuestion(); - +QuestionFormData copy(); - -Choice _buildChoiceForValue(); - +Answer<dynamic> constructAnswerFor() - ] - - [<abstract>QuestionFormData]<:-[ChoiceQuestionFormData] - - [BoolQuestionFormData - | - <static>+kResponseOptions: Map<String, bool>; - +responseOptions: List<String> - | - +Question<dynamic> toQuestion(); - +BoolQuestionFormData copy(); - +Answer<dynamic> constructAnswerFor() - ] - - [<abstract>QuestionFormData]<:-[BoolQuestionFormData] - - [ImageQuestionFormData - | - <static>+kResponseOptions: Map<String, FutureBlobFile>; - +responseOptions: List<String> - | - +Question<dynamic> toQuestion(); - +ImageQuestionFormData copy(); - +Answer<dynamic> constructAnswerFor() - ] - - [<abstract>QuestionFormData]<:-[ImageQuestionFormData] - - [AudioQuestionFormData - | - +maxRecordingDurationSeconds: int; - <static>+kResponseOptions: Map<String, FutureBlobFile>; - +responseOptions: List<String> - | - +Question<dynamic> toQuestion(); - +AudioQuestionFormData copy(); - +Answer<dynamic> constructAnswerFor() - ] - - [<abstract>QuestionFormData]<:-[AudioQuestionFormData] - - [ScaleQuestionFormData - | - +minValue: double; - +maxValue: double; - +minLabel: String?; - +maxLabel: String?; - +midValues: List<double?>; - +midLabels: List<String?>; - +stepSize: double; - +initialValue: double?; - +minColor: Color?; - +maxColor: Color?; - +responseOptions: List<double>; - +midAnnotations: List<Annotation> - | - +ScaleQuestion toQuestion(); - +QuestionFormData copy(); - +Answer<dynamic> constructAnswerFor() - ] - - [ScaleQuestionFormData]o-[Color] - [<abstract>QuestionFormData]<:-[ScaleQuestionFormData] - - [FreeTextQuestionFormData - | - +textLengthRange: List<int>; - +textType: FreeTextQuestionType; - +textTypeExpression: String?; - +responseOptions: List<String> - | - +Question<dynamic> toQuestion(); - +FreeTextQuestionFormData copy(); - +Answer<dynamic> constructAnswerFor() - ] - - [FreeTextQuestionFormData]o-[FreeTextQuestionType] - [<abstract>QuestionFormData]<:-[FreeTextQuestionFormData] - - [AudioRecordingQuestionFormView - | - +formViewModel: QuestionFormViewModel - | - +Widget build() - ] - - [AudioRecordingQuestionFormView]o-[QuestionFormViewModel] - [<abstract>ConsumerWidget]<:-[AudioRecordingQuestionFormView] - - [FreeTextQuestionFormView - | - +formViewModel: QuestionFormViewModel; - +generateLabelHelpTextMap: dynamic - | - +Widget build(); - +Widget disableOnReadonly(); - +Widget generateRow() - ] - - [FreeTextQuestionFormView]o-[QuestionFormViewModel] - [<abstract>ConsumerWidget]<:-[FreeTextQuestionFormView] - - [SurveyQuestionType - | - +index: int; - <static>+values: List<SurveyQuestionType>; - <static>+choice: SurveyQuestionType; - <static>+bool: SurveyQuestionType; - <static>+scale: SurveyQuestionType; - <static>+image: SurveyQuestionType; - <static>+audio: SurveyQuestionType; - <static>+freeText: SurveyQuestionType - ] - - [SurveyQuestionType]o-[SurveyQuestionType] - [Enum]<:--[SurveyQuestionType] - - [ImageCapturingQuestionFormView - | - +formViewModel: QuestionFormViewModel - | - +Widget build() - ] - - [ImageCapturingQuestionFormView]o-[QuestionFormViewModel] - [<abstract>ConsumerWidget]<:-[ImageCapturingQuestionFormView] - - [<abstract>IScaleQuestionFormViewModel - | - +isMidValuesClearedInfoVisible: bool - ] - - [ScaleQuestionFormView - | - +formViewModel: QuestionFormViewModel - ] - - [ScaleQuestionFormView]o-[QuestionFormViewModel] - - [ChoiceQuestionFormView - | - +formViewModel: QuestionFormViewModel - | - +Widget build() - ] - - [ChoiceQuestionFormView]o-[QuestionFormViewModel] - [<abstract>ConsumerWidget]<:-[ChoiceQuestionFormView] - - [BoolQuestionFormView - | - +formViewModel: QuestionFormViewModel - | - +Widget build() - ] - - [BoolQuestionFormView]o-[QuestionFormViewModel] - [<abstract>ConsumerWidget]<:-[BoolQuestionFormView] - - [QuestionFormViewModel - | - <static>+defaultQuestionType: SurveyQuestionType; - -_titles: Map<FormMode, String Function()>?; - +questionIdControl: FormControl<String>; - +questionTypeControl: FormControl<SurveyQuestionType>; - +questionTextControl: FormControl<String>; - +questionInfoTextControl: FormControl<String>; - +questionBaseControls: Map<String, AbstractControl<dynamic>>; - +isMultipleChoiceControl: FormControl<bool>; - +choiceResponseOptionsArray: FormArray<dynamic>; - +customOptionsMin: int; - +customOptionsMax: int; - +customOptionsInitial: int; - +boolResponseOptionsArray: FormArray<String>; - +imageResponseOptionsArray: FormArray<String>; - <static>+kDefaultMaxRecordingDurationSeconds: int; - <static>+kMaxRecordingDurationSeconds: int; - +audioResponseOptionsArray: FormArray<String>; - +maxRecordingDurationSecondsControl: FormControl<int>; - <static>+kDefaultScaleMinValue: int; - <static>+kDefaultScaleMaxValue: int; - <static>+kNumMidValueControls: int; - <static>+kMidValueDebounceMilliseconds: int; - +scaleMinValueControl: FormControl<int>; - +scaleMaxValueControl: FormControl<int>; - -_scaleRangeControl: FormControl<int>; - +scaleMinLabelControl: FormControl<String>; - +scaleMaxLabelControl: FormControl<String>; - +scaleMidValueControls: FormArray<int>; - +scaleMidLabelControls: FormArray<String?>; - -_scaleResponseOptionsArray: FormArray<int>; - +scaleMinColorControl: FormControl<SerializableColor>; - +scaleMaxColorControl: FormControl<SerializableColor>; - +prevMidValues: List<int?>?; - +freeTextTypeControl: FormControl<FreeTextQuestionType>; - +customRegexControl: FormControl<String>; - +freeTextResponseOptionsArray: FormArray<dynamic>; - +freeTextLengthMin: AbstractControl<int>; - +freeTextLengthMax: AbstractControl<int>; - +freeTextExampleTextControl: FormControl<String>; - <static>+kDefaultFreeTextMinLength: int; - <static>+kDefaultFreeTextMaxLength: int; - +freeTextLengthControl: FormControl<RangeValues>; - -_controlsByQuestionType: Map<SurveyQuestionType, FormGroup>; - -_sharedValidationConfig: Map<FormValidationSetEnum, List<FormControlValidation>>; - -_validationConfigsByQuestionType: Map<SurveyQuestionType, Map<FormValidationSetEnum, List<FormControlValidation>>>; - +form: FormGroup; - +questionId: String; - +questionType: SurveyQuestionType; - +questionTypeControlOptions: List<FormControlOption<SurveyQuestionType>>; - +answerOptionsArray: FormArray<dynamic>; - +answerOptionsControls: List<AbstractControl<dynamic>>; - +validAnswerOptions: List<String>; - +boolOptions: List<AbstractControl<String>>; - +imageOptions: List<AbstractControl<String>>; - +audioOptions: List<AbstractControl<String>>; - +scaleMinValue: int; - +scaleMaxValue: int; - +scaleRange: int; - +scaleAllValueControls: List<AbstractControl<int>>; - +sharedValidationConfig: Map<FormValidationSetEnum, List<FormControlValidation>>; - +questionTextRequired: dynamic; - +numValidChoiceOptions: dynamic; - +scaleRangeValid: dynamic; - +maxRecordingDurationValid: dynamic; - +titles: Map<FormMode, String>; - +isAddOptionButtonVisible: bool; - +isMidValuesClearedInfoVisible: bool - | - +String? scaleMidLabelAt(); - -dynamic _onScaleRangeChanged(); - -dynamic _applyInputFormatters(); - -dynamic _updateScaleMidValueControls(); - -Map<String, dynamic>? _validateFreeText(); - -dynamic _onFreeTextLengthChanged(); - -List<FormControlValidation> _getValidationConfig(); - +dynamic onQuestionTypeChanged(); - +dynamic onResponseOptionsChanged(); - -void _updateFormControls(); - +void initControls(); - +void setControlsFrom(); - +QuestionFormData buildFormData(); - +List<ModelAction<dynamic>> availableActions(); - +void onNewItem(); - +void onSelectItem(); - +dynamic save(); - +QuestionFormViewModel createDuplicate() - ] - - [QuestionFormViewModel]o-[SurveyQuestionType] - [QuestionFormViewModel]o-[FormControl] - [QuestionFormViewModel]o-[FormArray] - [QuestionFormViewModel]o-[<abstract>AbstractControl] - [QuestionFormViewModel]o-[FormGroup] - [<abstract>ManagedFormViewModel]<:-[QuestionFormViewModel] - [<abstract>IListActionProvider]<:--[QuestionFormViewModel] - - [SurveyQuestionFormView - | - +formViewModel: QuestionFormViewModel; - +isHtmlStyleable: bool - ] - - [SurveyQuestionFormView]o-[QuestionFormViewModel] - - [<abstract>IFormDataWithSchedule - | - +instanceId: String; - +isTimeLocked: bool; - +timeLockStart: StudyUTimeOfDay?; - +timeLockEnd: StudyUTimeOfDay?; - +hasReminder: bool; - +reminderTime: StudyUTimeOfDay? - | - +Schedule toSchedule() - ] - - [<abstract>IFormDataWithSchedule]o-[StudyUTimeOfDay] - [<abstract>IFormData]<:--[<abstract>IFormDataWithSchedule] - - [ScheduleControls - | - +formViewModel: WithScheduleControls - | - +Widget build(); - -List<FormTableRow> _conditionalTimeRestrictions() - ] - - [ScheduleControls]o-[<abstract>WithScheduleControls] - [<abstract>FormConsumerWidget]<:-[ScheduleControls] - - [<abstract>WithScheduleControls - | - +isTimeRestrictedControl: FormControl<bool>; - +instanceID: FormControl<String>; - +restrictedTimeStartControl: FormControl<Time>; - +restrictedTimeStartPickerControl: FormControl<TimeOfDay>; - +restrictedTimeEndControl: FormControl<Time>; - +restrictedTimeEndPickerControl: FormControl<TimeOfDay>; - +hasReminderControl: FormControl<bool>; - +reminderTimeControl: FormControl<Time>; - +reminderTimePickerControl: FormControl<TimeOfDay>; - -_reminderControlStream: StreamSubscription<dynamic>?; - +scheduleFormControls: Map<String, FormControl<Object>>; - +hasReminder: bool; - +isTimeRestricted: bool; - +timeRestriction: List<Time>? - | - +void setScheduleControlsFrom(); - -dynamic _initReminderControl() - ] - - [<abstract>WithScheduleControls]o-[FormControl] - [<abstract>WithScheduleControls]o-[StreamSubscription] - - [<abstract>StudyDesignPageWidget - | - +Widget? banner() - ] - - [<abstract>StudyPageWidget]<:-[<abstract>StudyDesignPageWidget] - - [StudiesTableColumnHeader - | - +title: String; - +sortable: bool; - +sortAscending: bool; - +sortingActive: bool; - +onSort: void Function()? - ] - - [StudiesTableColumnHeader]o-[void Function()?] - - [DashboardScreen - | - +filter: StudiesFilter? - ] - - [DashboardScreen]o-[StudiesFilter] - - [DashboardScaffold - | - <static>+compactWidthThreshold: double; - +body: Widget - | - +Widget build() - ] - - [DashboardScaffold]o-[<abstract>Widget] - - [DashboardController - | - +studyRepository: IStudyRepository; - +authRepository: IAuthRepository; - +userRepository: IUserRepository; - +router: GoRouter; - -_studiesSubscription: StreamSubscription<List<WrappedModel<Study>>>?; - +searchController: SearchController; - +isSortAscending: bool - | - -dynamic _subscribeStudies(); - +dynamic setSearchText(); - +dynamic setStudiesFilter(); - +dynamic onSelectStudy(); - +dynamic onClickNewStudy(); - +dynamic pinStudy(); - +dynamic pinOffStudy(); - +void setSorting(); - +void filterStudies(); - +void sortStudies(); - +bool isSortingActiveForColumn(); - +bool isPinned(); - +List<ModelAction<dynamic>> availableActions(); - +void dispose() - ] - - [DashboardController]o-[<abstract>IStudyRepository] - [DashboardController]o-[<abstract>IAuthRepository] - [DashboardController]o-[<abstract>IUserRepository] - [DashboardController]o-[GoRouter] - [DashboardController]o-[StreamSubscription] - [DashboardController]o-[SearchController] - [<abstract>IModelActionProvider]<:--[DashboardController] - - [StudiesFilter - | - +index: int; - <static>+values: List<StudiesFilter> - ] - - [Enum]<:--[StudiesFilter] - - [StudiesTableColumnSize - | - +collapsed: bool; - +flex: int?; - +width: double? - | - +Widget createContainer() - ] - - [StudiesTable - | - +itemHeight: double; - +itemPadding: double; - +rowSpacing: double; - +columnSpacing: double; - +compactWidthThreshold: double; - +superCompactWidthThreshold: double; - +compactStatTitleThreshold: double; - +studies: List<Study>; - +onSelect: void Function(Study); - +getActions: List<ModelAction<dynamic>> Function(Study); - +emptyWidget: Widget; - +pinnedStudies: Iterable<String>; - +dashboardController: DashboardController - | - +Widget build(); - -Widget _buildColumnHeader() - ] - - [StudiesTable]o-[void Function(Study)] - [StudiesTable]o-[List<ModelAction<dynamic>> Function(Study)] - [StudiesTable]o-[<abstract>Widget] - [StudiesTable]o-[DashboardController] - - [StudiesTableColumn - | - +index: int; - <static>+values: List<StudiesTableColumn>; - <static>+pin: StudiesTableColumn; - <static>+title: StudiesTableColumn; - <static>+status: StudiesTableColumn; - <static>+participation: StudiesTableColumn; - <static>+createdAt: StudiesTableColumn; - <static>+enrolled: StudiesTableColumn; - <static>+active: StudiesTableColumn; - <static>+completed: StudiesTableColumn; - <static>+action: StudiesTableColumn - ] - - [StudiesTableColumn]o-[StudiesTableColumn] - [Enum]<:--[StudiesTableColumn] - - [StudiesTableItem - | - +study: Study; - +itemHeight: double; - +itemPadding: double; - +rowSpacing: double; - +columnSpacing: double; - +actions: List<ModelAction<dynamic>>; - +columnSizes: List<StudiesTableColumnSize>; - +isPinned: bool; - +onPinnedChanged: void Function(Study, bool)?; - +onTap: void Function(Study)? - ] - - [StudiesTableItem]o-[Study] - [StudiesTableItem]o-[void Function(Study, bool)?] - [StudiesTableItem]o-[void Function(Study)?] - - [App - ] - - [AppContent - ] - - [AccountSettingsDialog - | - +Widget build() - ] - - [<abstract>ConsumerWidget]<:-[AccountSettingsDialog] - - [<abstract>IInviteCodeRepository - | - +dynamic isCodeAlreadyUsed() - ] - - [<abstract>ModelRepository]<:--[<abstract>IInviteCodeRepository] - - [InviteCodeRepository - | - +studyId: String; - +ref: ProviderRef<dynamic>; - +apiClient: StudyUApi; - +authRepository: IAuthRepository; - +studyRepository: IStudyRepository; - +study: Study - | - +String getKey(); - +dynamic isCodeAlreadyUsed(); - +List<ModelAction<dynamic>> availableActions(); - +dynamic emitUpdate() - ] - - [InviteCodeRepository]o-[<abstract>ProviderRef] - [InviteCodeRepository]o-[<abstract>StudyUApi] - [InviteCodeRepository]o-[<abstract>IAuthRepository] - [InviteCodeRepository]o-[<abstract>IStudyRepository] - [InviteCodeRepository]o-[Study] - [<abstract>ModelRepository]<:-[InviteCodeRepository] - [<abstract>IInviteCodeRepository]<:--[InviteCodeRepository] - - [InviteCodeRepositoryDelegate - | - +study: Study; - +apiClient: StudyUApi; - +studyRepository: IStudyRepository - | - +dynamic fetch(); - +dynamic fetchAll(); - +dynamic save(); - +dynamic delete(); - +dynamic onError(); - +StudyInvite createDuplicate(); - +StudyInvite createNewInstance() - ] - - [InviteCodeRepositoryDelegate]o-[Study] - [InviteCodeRepositoryDelegate]o-[<abstract>StudyUApi] - [InviteCodeRepositoryDelegate]o-[<abstract>IStudyRepository] - [<abstract>IModelRepositoryDelegate]<:-[InviteCodeRepositoryDelegate] - - [<abstract>IStudyRepository - | - +dynamic launch(); - +dynamic deleteParticipants() - ] - - [<abstract>ModelRepository]<:--[<abstract>IStudyRepository] - - [StudyRepository - | - +apiClient: StudyUApi; - +authRepository: IAuthRepository; - +ref: ProviderRef<dynamic>; - +sortCallback: void Function()? - | - +String getKey(); - +dynamic deleteParticipants(); - +dynamic launch(); - +List<ModelAction<dynamic>> availableActions() - ] - - [StudyRepository]o-[<abstract>StudyUApi] - [StudyRepository]o-[<abstract>IAuthRepository] - [StudyRepository]o-[<abstract>ProviderRef] - [StudyRepository]o-[void Function()?] - [<abstract>ModelRepository]<:-[StudyRepository] - [<abstract>IStudyRepository]<:--[StudyRepository] - - [StudyRepositoryDelegate - | - +apiClient: StudyUApi; - +authRepository: IAuthRepository - | - +dynamic fetchAll(); - +dynamic fetch(); - +dynamic save(); - +dynamic delete(); - +dynamic onError(); - +Study createNewInstance(); - +Study createDuplicate() - ] - - [StudyRepositoryDelegate]o-[<abstract>StudyUApi] - [StudyRepositoryDelegate]o-[<abstract>IAuthRepository] - [<abstract>IModelRepositoryDelegate]<:-[StudyRepositoryDelegate] - - [<abstract>StudyUApi - | - +dynamic saveStudy(); - +dynamic fetchStudy(); - +dynamic getUserStudies(); - +dynamic deleteStudy(); - +dynamic saveStudyInvite(); - +dynamic fetchStudyInvite(); - +dynamic deleteStudyInvite(); - +dynamic deleteParticipants(); - +dynamic fetchAppConfig(); - +dynamic fetchUser(); - +dynamic saveUser() - ] - - [APIException - ] - - [Exception]<:--[APIException] - - [StudyNotFoundException - ] - - [APIException]<:-[StudyNotFoundException] - - [MeasurementNotFoundException - ] - - [APIException]<:-[MeasurementNotFoundException] - - [QuestionNotFoundException - ] - - [APIException]<:-[QuestionNotFoundException] - - [ConsentItemNotFoundException - ] - - [APIException]<:-[ConsentItemNotFoundException] - - [InterventionNotFoundException - ] - - [APIException]<:-[InterventionNotFoundException] - - [InterventionTaskNotFoundException - ] - - [APIException]<:-[InterventionTaskNotFoundException] - - [ReportNotFoundException - ] - - [APIException]<:-[ReportNotFoundException] - - [ReportSectionNotFoundException - ] - - [APIException]<:-[ReportSectionNotFoundException] - - [StudyInviteNotFoundException - ] - - [APIException]<:-[StudyInviteNotFoundException] - - [UserNotFoundException - ] - - [APIException]<:-[UserNotFoundException] - - [StudyUApiClient - | - +supabaseClient: SupabaseClient; - <static>+studyColumns: List<String>; - <static>+studyWithParticipantActivityColumns: List<String>; - +testDelayMilliseconds: int - | - +dynamic deleteParticipants(); - +dynamic getUserStudies(); - +dynamic fetchStudy(); - +dynamic deleteStudy(); - +dynamic saveStudy(); - +dynamic fetchStudyInvite(); - +dynamic saveStudyInvite(); - +dynamic deleteStudyInvite(); - +dynamic fetchAppConfig(); - +dynamic fetchUser(); - +dynamic saveUser(); - -dynamic _awaitGuarded(); - -dynamic _apiException(); - -dynamic _testDelay() - ] - - [StudyUApiClient]o-[SupabaseClient] - [<abstract>SupabaseClientDependant]<:-[StudyUApiClient] - [<abstract>SupabaseQueryMixin]<:-[StudyUApiClient] - [<abstract>StudyUApi]<:--[StudyUApiClient] - - [<abstract>IAppRepository - | - +dynamic fetchAppConfig(); - +void dispose() - ] - - [AppRepository - | - +apiClient: StudyUApi - | - +dynamic fetchAppConfig(); - +void dispose() - ] - - [AppRepository]o-[<abstract>StudyUApi] - [<abstract>IAppRepository]<:--[AppRepository] - - [<abstract>IUserRepository - | - +user: StudyUUser - | - +dynamic fetchUser(); - +dynamic saveUser(); - +dynamic updatePreferences() - ] - - [<abstract>IUserRepository]o-[StudyUUser] - - [UserRepository - | - +apiClient: StudyUApi; - +authRepository: IAuthRepository; - +ref: Ref<Object?>; - +user: StudyUUser - | - +dynamic fetchUser(); - +dynamic saveUser(); - +dynamic updatePreferences() - ] - - [UserRepository]o-[<abstract>StudyUApi] - [UserRepository]o-[<abstract>IAuthRepository] - [UserRepository]o-[<abstract>Ref] - [UserRepository]o-[StudyUUser] - [<abstract>IUserRepository]<:--[UserRepository] - - [PreferenceAction - | - +index: int; - <static>+values: List<PreferenceAction>; - <static>+pin: PreferenceAction; - <static>+pinOff: PreferenceAction - ] - - [PreferenceAction]o-[PreferenceAction] - [Enum]<:--[PreferenceAction] - - [<abstract>IAuthRepository - | - +allowPasswordReset: bool; - +currentUser: User?; - +isLoggedIn: bool; - +session: Session?; - +serializedSession: String? - | - +dynamic signUp(); - +dynamic signInWith(); - +dynamic signOut(); - +dynamic resetPasswordForEmail(); - +dynamic updateUser(); - +void dispose() - ] - - [<abstract>IAuthRepository]o-[User] - [<abstract>IAuthRepository]o-[Session] - [<abstract>IAppDelegate]<:-[<abstract>IAuthRepository] - - [AuthRepository - | - +supabaseClient: SupabaseClient; - +allowPasswordReset: bool; - +authClient: GoTrueClient; - +session: Session?; - +serializedSession: String?; - +currentUser: User?; - +isLoggedIn: bool - | - -void _registerAuthListener(); - +dynamic signUp(); - +dynamic signInWith(); - +dynamic signOut(); - +dynamic resetPasswordForEmail(); - +dynamic updateUser(); - +void dispose(); - +dynamic onAppStart() - ] - - [AuthRepository]o-[SupabaseClient] - [AuthRepository]o-[GoTrueClient] - [AuthRepository]o-[Session] - [AuthRepository]o-[User] - [<abstract>IAuthRepository]<:--[AuthRepository] - - [StudyLaunched - ] - - [<abstract>ModelEvent]<:-[StudyLaunched] - - [<abstract>SupabaseClientDependant - | - +supabaseClient: SupabaseClient - ] - - [<abstract>SupabaseClientDependant]o-[SupabaseClient] - - [SupabaseQueryError - | - +statusCode: String?; - +message: String; - +details: dynamic - ] - - [Exception]<:--[SupabaseQueryError] - - [<abstract>SupabaseQueryMixin - | - +dynamic deleteAll(); - +dynamic getAll(); - +dynamic getById(); - +dynamic getByColumn(); - +List<T> deserializeList(); - +T deserializeObject() - ] - - [WrappedModel - | - -_model: T; - +asyncValue: AsyncValue<T>; - +isLocalOnly: bool; - +isDirty: bool; - +isDeleted: bool; - +lastSaved: DateTime?; - +lastFetched: DateTime?; - +lastUpdated: DateTime?; - +model: T - | - +dynamic markWithError(); - +dynamic markAsLoading(); - +dynamic markAsFetched(); - +dynamic markAsSaved() - ] - - [WrappedModel]o-[<abstract>AsyncValue] - - [ModelRepositoryException - ] - - [Exception]<:--[ModelRepositoryException] - - [ModelNotFoundException - ] - - [ModelRepositoryException]<:--[ModelNotFoundException] - - [<abstract>IModelRepository - | - +String getKey(); - +WrappedModel<T>? get(); - +dynamic fetchAll(); - +dynamic fetch(); - +dynamic save(); - +dynamic delete(); - +dynamic duplicateAndSave(); - +dynamic duplicateAndSaveFromRemote(); - +Stream<WrappedModel<T>> watch(); - +Stream<List<WrappedModel<T>>> watchAll(); - +Stream<ModelEvent<T>> watchChanges(); - +Stream<ModelEvent<T>> watchAllChanges(); - +dynamic ensurePersisted(); - +void dispose() - ] - - [<abstract>IModelActionProvider]<:--[<abstract>IModelRepository] - - [<abstract>IModelRepositoryDelegate - | - +dynamic fetchAll(); - +dynamic fetch(); - +dynamic save(); - +dynamic delete(); - +T createNewInstance(); - +T createDuplicate(); - +dynamic onError() - ] - - [<abstract>ModelRepository - | - +delegate: IModelRepositoryDelegate<T>; - -_allModelsStreamController: BehaviorSubject<List<WrappedModel<T>>>; - -_allModelEventsStreamController: BehaviorSubject<ModelEvent<T>>; - +modelStreamControllers: Map<String, BehaviorSubject<WrappedModel<T>>>; - +modelEventsStreamControllers: Map<String, BehaviorSubject<ModelEvent<T>>>; - -_allModels: Map<String, WrappedModel<T>> - | - +WrappedModel<T>? get(); - +dynamic fetchAll(); - +dynamic fetch(); - +dynamic save(); - +dynamic delete(); - +dynamic duplicateAndSave(); - +dynamic duplicateAndSaveFromRemote(); - +Stream<List<WrappedModel<T>>> watchAll(); - +Stream<WrappedModel<T>> watch(); - +Stream<ModelEvent<T>> watchAllChanges(); - +Stream<ModelEvent<T>> watchChanges(); - -dynamic _buildModelSpecificController(); - +dynamic ensurePersisted(); - +WrappedModel<T> upsertLocally(); - +List<WrappedModel<T>> upsertAllLocally(); - +dynamic emitUpdate(); - +dynamic emitModelEvent(); - +dynamic emitError(); - +void dispose(); - +List<ModelAction<dynamic>> availableActions() - ] - - [<abstract>ModelRepository]o-[<abstract>IModelRepositoryDelegate] - [<abstract>ModelRepository]o-[BehaviorSubject] - [<abstract>IModelRepository]<:-[<abstract>ModelRepository] - - [<abstract>ModelEvent - | - +modelId: String; - +model: T - ] - - [IsFetched - ] - - [<abstract>ModelEvent]<:-[IsFetched] - - [IsSaving - ] - - [<abstract>ModelEvent]<:-[IsSaving] - - [IsSaved - ] - - [<abstract>ModelEvent]<:-[IsSaved] - - [IsDeleted - ] - - [<abstract>ModelEvent]<:-[IsDeleted] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Config - - - - - - <static>+isDebugMode: bool - <static>+defaultLocale: Set<String> - <static>+supportedLocales: Map<String, String> - <static>+newStudyId: String - <static>+newModelId: String - <static>+minSplashTime: int - <static>+formAutosaveDebounce: int - - - - - - - - - - - ResultTypes - - - - - - - - - - - - MeasurementResultTypes - - - - - - <static>+questionnaire: String - <static>+values: List<String> - - - - - - - - - - - - InterventionResultTypes - - - - - - <static>+checkmarkTask: String - <static>+values: List<String> - - - - - - - - - - - - StudyExportData - - - - - - +study: Study - +measurementsData: List<Map<String, dynamic>> - +interventionsData: List<Map<String, dynamic>> - +mediaData: List<String> - +isEmpty: bool - - - - - - - - - - - Study - - - - - - - - - - - - - StudyTemplates - - - - - - <static>+kUnnamedStudyTitle: String - - - - - - <static>+Study emptyDraft() - - - - - - - - - - - - StudyActionType - - - - - - +index: int - <static>+values: List<StudyActionType> - <static>+pin: StudyActionType - <static>+pinoff: StudyActionType - <static>+edit: StudyActionType - <static>+duplicate: StudyActionType - <static>+duplicateDraft: StudyActionType - <static>+addCollaborator: StudyActionType - <static>+export: StudyActionType - <static>+delete: StudyActionType - - - - - - - - - - - Enum - - - - - - - - - - - - Notifications - - - - - - <static>+credentialsInvalid: SnackbarIntent - <static>+userAlreadyRegistered: SnackbarIntent - <static>+passwordReset: SnackbarIntent - <static>+passwordResetSuccess: SnackbarIntent - <static>+studyDeleted: SnackbarIntent - <static>+inviteCodeDeleted: SnackbarIntent - <static>+inviteCodeClipped: SnackbarIntent - <static>+studyDeleteConfirmation: AlertIntent - - - - - - - - - - - - SnackbarIntent - - - - - - +duration: int? - - - - - - - - - - - - AlertIntent - - - - - - +title: String - +dismissOnAction: bool - +isDestructive: dynamic - - - - - - - - - - - - NotificationDefaultActions - - - - - - <static>+cancel: NotificationAction - - - - - - - - - - - - NotificationAction - - - - - - +label: String - +onSelect: dynamic Function() - +isDestructive: bool - - - - - - - - - - - - INotificationService - - - - - - +void showMessage() - +void show() - +Stream<NotificationIntent> watchNotifications() - +void dispose() - - - - - - - - - - - - - NotificationService - - - - - - -_streamController: BehaviorSubject<NotificationIntent> - - - - - - +Stream<NotificationIntent> watchNotifications() - +void showMessage() - +void show() - +void dispose() - - - - - - - - - - - BehaviorSubject - - - - - - - - - - - - - NotificationIntent - - - - - - +message: String? - +customContent: Widget? - +icon: IconData? - +actions: List<NotificationAction>? - +type: NotificationType - - - - - - +void register() - - - - - - - - - - - Widget - - - - - - - - - - - IconData - - - - - - - - - - - - NotificationType - - - - - - +index: int - <static>+values: List<NotificationType> - <static>+snackbar: NotificationType - <static>+alert: NotificationType - <static>+custom: NotificationType - - - - - - - - - - - dynamic Function() - - - - - - - - - - - - IClipboardService - - - - - - +dynamic copy() - - - - - - - - - - - - ClipboardService - - - - - - +dynamic copy() - - - - - - - - - - - - NotificationDispatcher - - - - - - +child: Widget? - +snackbarInnerPadding: double - +snackbarWidth: double? - +snackbarBehavior: SnackBarBehavior - +snackbarDefaultDuration: int - - - - - - - - - - - SnackBarBehavior - - - - - - - - - - - - Assets - - - - - - <static>+logoWide: String - - - - - - - - - - - - - AsyncValueWidget - - - - - - +value: AsyncValue<T> - +data: Widget Function(T) - +error: Widget Function(Object, StackTrace?)? - +loading: Widget Function()? - +empty: Widget Function()? - - - - - - +Widget build() - -Widget _buildDataOrEmptyWidget() - -Widget _defaultError() - -Widget _defaultLoad() - - - - - - - - - - - AsyncValue - - - - - - - - - - - Widget Function(T) - - - - - - - - - - - Widget Function(Object, StackTrace?)? - - - - - - - - - - - Widget Function()? - - - - - - - - - - - - - FormControlLabel - - - - - - +formControl: AbstractControl<dynamic> - +text: String - +isClickable: bool - +textStyle: TextStyle? - +onClick: void Function(AbstractControl<dynamic>)? - - - - - - +Widget build() - - - - - - - - - - - AbstractControl - - - - - - - - - - - TextStyle - - - - - - - - - - - void Function(AbstractControl<dynamic>)? - - - - - - - - - - - - - ActionPopUpMenuButton - - - - - - +actions: List<ModelAction<dynamic>> - +triggerIconColor: Color? - +triggerIconColorHover: Color? - +triggerIconSize: double - +disableSplashEffect: bool - +hideOnEmpty: bool - +orientation: Axis - +elevation: double? - +splashRadius: double? - +enabled: bool - +position: PopupMenuPosition - - - - - - +Widget build() - -Widget _buildPopupMenu() - - - - - - - - - - - Color - - - - - - - - - - - Axis - - - - - - - - - - - PopupMenuPosition - - - - - - - - - - - - Search - - - - - - +onQueryChanged: dynamic Function(String) - +searchController: SearchController? - +hintText: String? - +initialText: String? - - - - - - - - - - - dynamic Function(String) - - - - - - - - - - - - SearchController - - - - - - +setText: void Function(String) - - - - - - - - - - - void Function(String) - - - - - - - - - - - - FormScaffold - - - - - - +formViewModel: T - +actions: List<Widget>? - +body: Widget - +drawer: Widget? - +actionsSpacing: double - +actionsPadding: double - - - - - - - - - - - - - ConstrainedWidthFlexible - - - - - - +minWidth: double - +maxWidth: double - +flex: int - +flexSum: int - +child: Widget - +outerConstraints: BoxConstraints - - - - - - +Widget build() - -double _getWidth() - - - - - - - - - - - BoxConstraints - - - - - - - - - - - - PrimaryButton - - - - - - +text: String - +icon: IconData? - +isLoading: bool - +showLoadingEarliestAfterMs: int - +onPressed: void Function()? - +tooltip: String - +tooltipDisabled: String - +enabled: bool - +onPressedFuture: dynamic Function()? - +innerPadding: EdgeInsets - +minimumSize: Size? - +isDisabled: bool - - - - - - - - - - - void Function()? - - - - - - - - - - - dynamic Function()? - - - - - - - - - - - EdgeInsets - - - - - - - - - - - Size - - - - - - - - - - - - FormTableRow - - - - - - +label: String? - +labelBuilder: Widget Function(BuildContext)? - +labelStyle: TextStyle? - +labelHelpText: String? - +input: Widget - +control: AbstractControl<dynamic>? - +layout: FormTableRowLayout? - - - - - - - - - - - Widget Function(BuildContext)? - - - - - - - - - - - - FormTableRowLayout - - - - - - +index: int - <static>+values: List<FormTableRowLayout> - <static>+vertical: FormTableRowLayout - <static>+horizontal: FormTableRowLayout - - - - - - - - - - - - - FormTableLayout - - - - - - +rows: List<FormTableRow> - +columnWidths: Map<int, TableColumnWidth> - +rowDivider: Widget? - +rowLayout: FormTableRowLayout? - +rowLabelStyle: TextStyle? - - - - - - +Widget build() - - - - - - - - - - - - - FormSectionHeader - - - - - - +title: String - +titleTextStyle: TextStyle? - +helpText: String? - +divider: bool - +helpTextDisabled: bool - - - - - - +Widget build() - - - - - - - - - - - - - FormLabel - - - - - - +labelText: String? - +helpText: String? - +labelTextStyle: TextStyle? - +layout: FormTableRowLayout? - - - - - - +Widget build() - - - - - - - - - - - - - DismissButton - - - - - - +onPressed: void Function()? - +text: String? - - - - - - +Widget build() - - - - - - - - - - - - - Badge - - - - - - +icon: IconData? - +color: Color? - +borderRadius: double - +label: String - +type: BadgeType - +padding: EdgeInsets - +iconSize: double? - +labelStyle: TextStyle? - +center: bool - - - - - - +Widget build() - -Color? _getBackgroundColor() - -Color _getBorderColor() - -Color? _getLabelColor() - - - - - - - - - - - - BadgeType - - - - - - +index: int - <static>+values: List<BadgeType> - <static>+filled: BadgeType - <static>+outlined: BadgeType - <static>+outlineFill: BadgeType - <static>+plain: BadgeType - - - - - - - - - - - - - StandardDialog - - - - - - +title: Widget? - +titleText: String? - +body: Widget - +actionButtons: List<Widget> - +backgroundColor: Color? - +borderRadius: double? - +width: double? - +height: double? - +minWidth: double - +minHeight: double - +maxWidth: double? - +maxHeight: double? - +padding: EdgeInsets - - - - - - +Widget build() - - - - - - - - - - - - ISyncIndicatorViewModel - - - - - - +isDirty: bool - +lastSynced: DateTime? - - - - - - - - - - - - SyncIndicator - - - - - - +state: AsyncValue<T> - +lastSynced: DateTime? - +isDirty: bool - +animationDuration: int - +iconSize: double - - - - - - - - - - - - IWithBanner - - - - - - +Widget? banner() - - - - - - - - - - - - BannerBox - - - - - - +prefixIcon: Widget? - +body: Widget - +style: BannerStyle - +padding: EdgeInsets? - +noPrefix: bool - +dismissable: bool - +isDismissed: bool? - +onDismissed: dynamic Function()? - +dismissIconSize: double - - - - - - - - - - - - BannerStyle - - - - - - +index: int - <static>+values: List<BannerStyle> - <static>+warning: BannerStyle - <static>+info: BannerStyle - <static>+error: BannerStyle - - - - - - - - - - - - - ActionMenuInline - - - - - - +actions: List<ModelAction<dynamic>> - +iconSize: double? - +visible: bool - +splashRadius: double? - +paddingVertical: double? - +paddingHorizontal: double? - - - - - - +Widget build() - - - - - - - - - - - - Collapsible - - - - - - +contentBuilder: Widget Function(BuildContext, bool) - +headerBuilder: Widget Function(BuildContext, bool)? - +title: String? - +isCollapsed: bool - - - - - - - - - - - Widget Function(BuildContext, bool) - - - - - - - - - - - Widget Function(BuildContext, bool)? - - - - - - - - - - - - NavbarTab - - - - - - +title: String - +intent: RoutingIntent? - +index: int - +enabled: bool - - - - - - - - - - - - - RoutingIntent - - - - - - +route: GoRoute - +params: Map<String, String> - +queryParams: Map<String, String> - +dispatch: RoutingIntentDispatch? - +extra: Object? - +routeName: String - +arguments: Map<String, String> - +props: List<Object?> - - - - - - -dynamic _validateRoute() - +bool matches() - - - - - - - - - - - - TabbedNavbar - - - - - - +tabs: List<T> - +selectedTab: T? - +indicator: BoxDecoration? - +height: double? - +disabledBackgroundColor: Color? - +disabledTooltipText: String? - +onSelect: void Function(int, T)? - +labelPadding: EdgeInsets? - +labelSpacing: double? - +indicatorSize: TabBarIndicatorSize? - +isScrollable: bool - +backgroundColor: Color? - +labelColorHover: Color? - +unselectedLabelColorHover: Color? - - - - - - - - - - - BoxDecoration - - - - - - - - - - - void Function(int, T)? - - - - - - - - - - - TabBarIndicatorSize - - - - - - - - - - - - SidesheetTab - - - - - - +builder: Widget Function(BuildContext) - - - - - - - - - - - Widget Function(BuildContext) - - - - - - - - - - - - Sidesheet - - - - - - <static>+kDefaultWidth: double - +titleText: String - +body: Widget? - +tabs: List<SidesheetTab>? - +actionButtons: List<Widget>? - +width: double? - +withCloseButton: bool - +ignoreAppBar: bool - +collapseSingleTab: bool - +bodyPadding: EdgeInsets? - +wrapContent: Widget Function(Widget)? - - - - - - - - - - - Widget Function(Widget)? - - - - - - - - - - - - FormSideSheetTab - - - - - - +formViewBuilder: Widget Function(T) - - - - - - - - - - - - - HelpIcon - - - - - - +tooltipText: String? - - - - - - +Widget build() - - - - - - - - - - - - - EmptyBody - - - - - - +icon: IconData? - +leading: Widget? - +leadingSpacing: double? - +title: String? - +description: String? - +button: Widget? - - - - - - +Widget build() - - - - - - - - - - - - - IndicatorRangeSliderThumbShape - - - - - - +buildContext: BuildContext - +start: T - +end: T - - - - - - +Size getPreferredSize() - +void paint() - - - - - - - - - - - BuildContext - - - - - - - - - - - RangeSliderThumbShape - - - - - - - - - - - - MouseEventsRegion - - - - - - +onTap: void Function()? - +onHover: void Function(PointerHoverEvent)? - +onEnter: void Function(PointerEnterEvent)? - +onExit: void Function(PointerExitEvent)? - +autoselectCursor: bool - +cursor: SystemMouseCursor - <static>+defaultCursor: SystemMouseCursor - +autoCursor: SystemMouseCursor - - - - - - - - - - - void Function(PointerHoverEvent)? - - - - - - - - - - - void Function(PointerEnterEvent)? - - - - - - - - - - - void Function(PointerExitEvent)? - - - - - - - - - - - SystemMouseCursor - - - - - - - - - - - ReactiveCustomColorPicker - - - - - - - - - - - ReactiveFormField - - - - - - - - - - - - - TextParagraph - - - - - - +text: String? - +style: TextStyle? - +selectable: bool - +span: List<TextSpan>? - - - - - - +Widget build() - - - - - - - - - - - - UnderConstruction - - - - - - +Widget build() - - - - - - - - - - - NullHelperDecoration - - - - - - - - - - - InputDecoration - - - - - - - - - - - - ActionMenuType - - - - - - +index: int - <static>+values: List<ActionMenuType> - <static>+inline: ActionMenuType - <static>+popup: ActionMenuType - - - - - - - - - - - - - HtmlStylingBanner - - - - - - +isDismissed: bool - +onDismissed: dynamic Function()? - - - - - - +Widget build() - - - - - - - - - - - - FormConsumerWidget - - - - - - +Widget build() - - - - - - - - - - - - FormConsumerRefWidget - - - - - - +Widget build() - - - - - - - - - - - - SplashPage - - - - - - +Widget build() - - - - - - - - - - - - - ErrorPage - - - - - - +error: Exception? - - - - - - +Widget build() - - - - - - - - - - - ConsumerWidget - - - - - - - - - - - - - StudyULogo - - - - - - +onTap: void Function()? - - - - - - +Widget build() - - - - - - - - - - - - - SingleColumnLayout - - - - - - <static>+defaultConstraints: BoxConstraints - <static>+defaultConstraintsNarrow: BoxConstraints - +body: Widget - +header: Widget? - +stickyHeader: bool - +constraints: BoxConstraints? - +scroll: bool - +padding: EdgeInsets? - - - - - - <static>+dynamic fromType() - - - - - - - - - - - - SingleColumnLayoutType - - - - - - +index: int - <static>+values: List<SingleColumnLayoutType> - <static>+boundedWide: SingleColumnLayoutType - <static>+boundedNarrow: SingleColumnLayoutType - <static>+stretched: SingleColumnLayoutType - <static>+split: SingleColumnLayoutType - - - - - - - - - - - - Hyperlink - - - - - - +text: String - +url: String? - +onClick: void Function()? - +linkColor: Color - +hoverColor: Color? - +visitedColor: Color? - +style: TextStyle? - +hoverStyle: TextStyle? - +visitedStyle: TextStyle? - +icon: IconData? - +iconSize: double? - - - - - - - - - - - - StandardTableColumn - - - - - - +label: String - +tooltip: String? - +columnWidth: TableColumnWidth - +sortable: bool - +sortAscending: bool? - +sortableIcon: Widget? - - - - - - - - - - - TableColumnWidth - - - - - - - - - - - - StandardTable - - - - - - +items: List<T> - +inputColumns: List<StandardTableColumn> - +onSelectItem: void Function(T) - +trailingActionsAt: List<ModelAction<dynamic>> Function(T, int)? - +trailingActionsMenuType: ActionMenuType? - +sortColumnPredicates: List<int Function(T, T)?>? - +pinnedPredicates: int Function(T, T)? - +headerRowBuilder: TableRow Function(BuildContext, List<StandardTableColumn>)? - +dataRowBuilder: TableRow Function(BuildContext, List<StandardTableColumn>)? - +inputTrailingActionsColumn: StandardTableColumn - +tableWrapper: Widget Function(Widget)? - +cellSpacing: double - +rowSpacing: double - +minRowHeight: double? - +showTableHeader: bool - +hideLeadingTrailingWhenEmpty: bool - +leadingWidget: Widget? - +trailingWidget: Widget? - +leadingWidgetSpacing: double? - +trailingWidgetSpacing: double? - +emptyWidget: Widget? - +rowStyle: StandardTableStyle - +disableRowInteractions: bool - - - - - - - - - - - void Function(T) - - - - - - - - - - - List<ModelAction<dynamic>> Function(T, int)? - - - - - - - - - - - int Function(T, T)? - - - - - - - - - - - TableRow Function(BuildContext, List<StandardTableColumn>)? - - - - - - - - - - - - StandardTableStyle - - - - - - +index: int - <static>+values: List<StandardTableStyle> - <static>+plain: StandardTableStyle - <static>+material: StandardTableStyle - - - - - - - - - - - - - IconPack - - - - - - <static>+defaultPack: List<IconOption> - <static>+material: List<IconOption> - - - - - - <static>+IconOption? resolveIconByName() - - - - - - - - - - - - - IconOption - - - - - - +name: String - +icon: IconData? - +isEmpty: bool - +props: List<Object?> - - - - - - +String toJson() - <static>+IconOption fromJson() - - - - - - - - - - - Equatable - - - - - - - - - - - ReactiveIconPicker - - - - - - - - - - - ReactiveFocusableFormField - - - - - - - - - - - - - IconPicker - - - - - - +iconOptions: List<IconOption> - +selectedOption: IconOption? - +onSelect: void Function(IconOption)? - +galleryIconSize: double? - +selectedIconSize: double? - +focusNode: FocusNode? - +isDisabled: bool - - - - - - +Widget build() - - - - - - - - - - - void Function(IconOption)? - - - - - - - - - - - FocusNode - - - - - - - - - - - - - IconPickerField - - - - - - +iconOptions: List<IconOption> - +selectedOption: IconOption? - +selectedIconSize: double? - +galleryIconSize: double? - +onSelect: void Function(IconOption)? - +focusNode: FocusNode? - +isDisabled: bool - - - - - - +Widget build() - - - - - - - - - - - - - IconPickerGallery - - - - - - +iconOptions: List<IconOption> - +onSelect: void Function(IconOption)? - +iconSize: double - - - - - - +Widget build() - - - - - - - - - - - - - SecondaryButton - - - - - - +text: String - +icon: IconData? - +isLoading: bool - +onPressed: void Function()? - - - - - - +Widget build() - - - - - - - - - - - - TwoColumnLayout - - - - - - <static>+defaultDivider: VerticalDivider - <static>+defaultContentPadding: EdgeInsets - <static>+slimContentPadding: EdgeInsets - +leftWidget: Widget - +rightWidget: Widget - +dividerWidget: Widget? - +headerWidget: Widget? - +flexLeft: int? - +flexRight: int? - +constraintsLeft: BoxConstraints? - +constraintsRight: BoxConstraints? - +scrollLeft: bool - +scrollRight: bool - +paddingLeft: EdgeInsets? - +paddingRight: EdgeInsets? - +backgroundColorLeft: Color? - +backgroundColorRight: Color? - +stretchHeight: bool - - - - - - - - - - - VerticalDivider - - - - - - - - - - - - AppTranslation - - - - - - <static>+dynamic init() - - - - - - - - - - - - PlatformLocale - - - - - - +Locale getPlatformLocale() - - - - - - - - - - - - PlatformLocaleWeb - - - - - - +Locale getPlatformLocale() - - - - - - - - - - - - PlatformLocaleMobile - - - - - - +Locale getPlatformLocale() - - - - - - - - - - - - LanguagePicker - - - - - - +languagePickerType: LanguagePickerType - +iconColor: Color? - +offset: Offset? - - - - - - - - - - - - LanguagePickerType - - - - - - +index: int - <static>+values: List<LanguagePickerType> - <static>+field: LanguagePickerType - <static>+icon: LanguagePickerType - - - - - - - - - - - Offset - - - - - - - - - - - - GoRouteParamEnum - - - - - - +String toRouteParam() - +String toShortString() - - - - - - - - - - - - RoutingIntents - - - - - - <static>+root: RoutingIntent - <static>+studies: RoutingIntent - <static>+studiesShared: RoutingIntent - <static>+publicRegistry: RoutingIntent - <static>+study: RoutingIntent Function(String) - <static>+studyEdit: RoutingIntent Function(String) - <static>+studyEditInfo: RoutingIntent Function(String) - <static>+studyEditEnrollment: RoutingIntent Function(String) - <static>+studyEditInterventions: RoutingIntent Function(String) - <static>+studyEditIntervention: RoutingIntent Function(String, String) - <static>+studyEditMeasurements: RoutingIntent Function(String) - <static>+studyEditReports: RoutingIntent Function(String) - <static>+studyEditMeasurement: RoutingIntent Function(String, String) - <static>+studyTest: RoutingIntent Function(String, {String? appRoute}) - <static>+studyRecruit: RoutingIntent Function(String) - <static>+studyMonitor: RoutingIntent Function(String) - <static>+studyAnalyze: RoutingIntent Function(String) - <static>+studySettings: RoutingIntent Function(String) - <static>+accountSettings: RoutingIntent - <static>+studyNew: RoutingIntent - <static>+login: RoutingIntent - <static>+signup: RoutingIntent - <static>+passwordForgot: RoutingIntent - <static>+passwordForgot2: RoutingIntent Function(String) - <static>+passwordRecovery: RoutingIntent - <static>+error: RoutingIntent Function(Exception) - - - - - - - - - - - RoutingIntent Function(String) - - - - - - - - - - - RoutingIntent Function(String, String) - - - - - - - - - - - RoutingIntent Function(String, {String? appRoute}) - - - - - - - - - - - RoutingIntent Function(Exception) - - - - - - - - - - - GoRoute - - - - - - - - - - - - RoutingIntentDispatch - - - - - - +index: int - <static>+values: List<RoutingIntentDispatch> - <static>+go: RoutingIntentDispatch - <static>+push: RoutingIntentDispatch - - - - - - - - - - - - RouterKeys - - - - - - <static>+studyKey: ValueKey<String> - <static>+authKey: ValueKey<String> - - - - - - - - - - - ValueKey - - - - - - - - - - - - RouteParams - - - - - - <static>+studiesFilter: String - <static>+studyId: String - <static>+measurementId: String - <static>+interventionId: String - <static>+testAppRoute: String - - - - - - - - - - - - - RouterConf - - - - - - <static>+router: GoRouter - <static>+routes: List<GoRoute> - <static>+publicRoutes: List<GoRoute> - <static>+privateRoutes: List<GoRoute> - - - - - - <static>+GoRoute route() - - - - - - - - - - - GoRouter - - - - - - - - - - - - StudyFormRouteArgs - - - - - - +studyId: String - - - - - - - - - - - - QuestionFormRouteArgs - - - - - - +questionId: String - - - - - - - - - - - ScreenerQuestionFormRouteArgs - - - - - - - - - - - - ConsentItemFormRouteArgs - - - - - - +consentId: String - - - - - - - - - - - - MeasurementFormRouteArgs - - - - - - +measurementId: String - - - - - - - - - - - - SurveyQuestionFormRouteArgs - - - - - - +questionId: String - - - - - - - - - - - - InterventionFormRouteArgs - - - - - - +interventionId: String - - - - - - - - - - - - InterventionTaskFormRouteArgs - - - - - - +taskId: String - - - - - - - - - - - - ReportItemFormRouteArgs - - - - - - +sectionId: String - - - - - - - - - - - - DropdownMenuItemTheme - - - - - - +iconTheme: IconThemeData? - - - - - - - - - - - IconThemeData - - - - - - - - - - - Diagnosticable - - - - - - - - - - - - - ThemeConfig - - - - - - <static>+kMinContentWidth: double - <static>+kMaxContentWidth: double - <static>+kHoverFadeFactor: double - <static>+kMuteFadeFactor: double - - - - - - <static>+dynamic bodyBackgroundColor() - <static>+Color modalBarrierColor() - <static>+Color containerColor() - <static>+Color colorPickerInitialColor() - <static>+TextStyle bodyTextMuted() - <static>+TextStyle bodyTextBackground() - <static>+double iconSplashRadius() - <static>+Color sidesheetBackgroundColor() - <static>+InputDecorationTheme dropdownInputDecorationTheme() - <static>+DropdownMenuItemTheme dropdownMenuItemTheme() - - - - - - - - - - - - NoAnimationPageTransitionsBuilder - - - - - - +Widget buildTransitions() - - - - - - - - - - - PageTransitionsBuilder - - - - - - - - - - - - WebTransitionBuilder - - - - - - +Widget buildTransitions() - - - - - - - - - - - - ThemeSettingChange - - - - - - +settings: ThemeSettings - - - - - - - - - - - - ThemeSettings - - - - - - +sourceColor: Color - +themeMode: ThemeMode - - - - - - - - - - - Notification - - - - - - - - - - - - - ThemeProvider - - - - - - +settings: ValueNotifier<ThemeSettings> - +lightDynamic: ColorScheme? - +darkDynamic: ColorScheme? - +pageTransitionsTheme: PageTransitionsTheme - +shapeMedium: ShapeBorder - - - - - - +Color custom() - +Color blend() - +Color source() - +ColorScheme colors() - +CardTheme cardTheme() - +ListTileThemeData listTileTheme() - +AppBarTheme appBarTheme() - +SnackBarThemeData snackBarThemeData() - +TabBarTheme tabBarTheme() - +BottomAppBarTheme bottomAppBarTheme() - +BottomNavigationBarThemeData bottomNavigationBarTheme() - +SwitchThemeData switchTheme() - +InputDecorationTheme inputDecorationTheme() - +TextTheme textTheme() - +DividerThemeData dividerTheme() - +NavigationRailThemeData navigationRailTheme() - +DrawerThemeData drawerTheme() - +IconThemeData iconTheme() - +CheckboxThemeData checkboxTheme() - +RadioThemeData radioTheme() - +TooltipThemeData tooltipTheme() - +ThemeData light() - +ThemeData dark() - +ThemeMode themeMode() - +ThemeData theme() - <static>+ThemeProvider of() - +bool updateShouldNotify() - - - - - - - - - - - ValueNotifier - - - - - - - - - - - ColorScheme - - - - - - - - - - - PageTransitionsTheme - - - - - - - - - - - ShapeBorder - - - - - - - - - - - InheritedWidget - - - - - - - - - - - ThemeMode - - - - - - - - - - - - - CustomColor - - - - - - +name: String - +color: Color - +blend: bool - - - - - - +Color value() - - - - - - - - - - - - - SuppressedBehaviorSubject - - - - - - +subject: BehaviorSubject<T> - +didSuppressInitialEvent: bool - -_controller: StreamController<T> - - - - - - -StreamController<T> _buildDerivedController() - +dynamic close() - - - - - - - - - - - StreamController - - - - - - - - - - - - Time - - - - - - <static>+dynamic fromTimeOfDay() - +Map<String, dynamic> toJson() - <static>+Time fromJson() - - - - - - - - - - - TimeOfDay - - - - - - - - - - - - TimeValueAccessor - - - - - - +String modelToViewValue() - +Time? viewToModelValue() - -String _addLeadingZeroIfNeeded() - - - - - - - - - - - ControlValueAccessor - - - - - - - - - - - - ModelAction - - - - - - +type: T - +label: String - +icon: IconData? - +onExecute: Function - +isAvailable: bool - +isDestructive: bool - - - - - - - - - - - - IModelActionProvider - - - - - - +List<ModelAction<dynamic>> availableActions() - - - - - - - - - - - - IListActionProvider - - - - - - +void onSelectItem() - +void onNewItem() - - - - - - - - - - - - ModelActionType - - - - - - +index: int - <static>+values: List<ModelActionType> - <static>+edit: ModelActionType - <static>+delete: ModelActionType - <static>+remove: ModelActionType - <static>+duplicate: ModelActionType - <static>+clipboard: ModelActionType - <static>+primary: ModelActionType - - - - - - - - - - - - - OptimisticUpdate - - - - - - +applyOptimistic: void Function() - +apply: dynamic Function() - +rollback: void Function() - +onUpdate: void Function()? - +onError: void Function(Object, StackTrace?)? - +rethrowErrors: bool - +runOptimistically: bool - +completeFutureOptimistically: bool - - - - - - +dynamic execute() - -void _runUpdateHandlerIfAny() - - - - - - - - - - - void Function() - - - - - - - - - - - void Function(Object, StackTrace?)? - - - - - - - - - - - - FileFormatEncoder - - - - - - +dynamic encodeAsync() - +String encode() - +dynamic call() - - - - - - - - - - - - CSVStringEncoder - - - - - - +String encode() - - - - - - - - - - - - JsonStringEncoder - - - - - - +String encode() - - - - - - - - - - - - - ExecutionLimiter - - - - - - +milliseconds: int - <static>-_timer: Timer? - - - - - - +void dispose() - - - - - - - - - - - Timer - - - - - - - - - - - - - Debouncer - - - - - - +leading: bool - +cancelUncompleted: bool - -_uncompletedFutureOperation: CancelableOperation<dynamic>? - - - - - - +dynamic call() - - - - - - - - - - - CancelableOperation - - - - - - - - - - - - Throttler - - - - - - +dynamic call() - - - - - - - - - - - - SerializableColor - - - - - - +Map<String, dynamic> toJson() - <static>+SerializableColor fromJson() - - - - - - - - - - - - IProviderArgsResolver - - - - - - +R provide() - - - - - - - - - - - - - CombinedStreamNotifier - - - - - - -_subscriptions: List<StreamSubscription<dynamic>> - - - - - - +void dispose() - - - - - - - - - - - ChangeNotifier - - - - - - - - - - - - - CountWhereValidator - - - - - - +predicate: bool Function(T?) - +minCount: int? - +maxCount: int? - <static>+kValidationMessageMinCount: String - <static>+kValidationMessageMaxCount: String - - - - - - +Map<String, dynamic>? validate() - - - - - - - - - - - bool Function(T?) - - - - - - - - - - - Validator - - - - - - - - - - - - Patterns - - - - - - <static>+timeFormatString: String - <static>+emailFormatString: String - <static>+url: String - - - - - - - - - - - - - NumericalRangeFormatter - - - - - - +min: int? - +max: int? - - - - - - +TextEditingValue formatEditUpdate() - - - - - - - - - - - TextInputFormatter - - - - - - - - - - - - StudySequenceFormatter - - - - - - +TextEditingValue formatEditUpdate() - - - - - - - - - - - - - Tuple - - - - - - +first: T1 - +second: T2 - +props: List<Object?> - - - - - - +Map<String, dynamic> toJson() - <static>+Tuple<dynamic, dynamic> fromJson() - +Tuple<T1, T2> copy() - +Tuple<T1, T2> copyWith() - - - - - - - - - - - - - JsonFileLoader - - - - - - +jsonAssetsPath: String - - - - - - +dynamic loadJson() - +dynamic parseJsonMapFromAssets() - +dynamic parseJsonListFromAssets() - - - - - - - - - - - - IAppDelegate - - - - - - +dynamic onAppStart() - - - - - - - - - - - - - AppController - - - - - - +appDelegates: List<IAppDelegate> - -_delayedFuture: dynamic - +isInitialized: dynamic - - - - - - +dynamic onAppStart() - -dynamic _callDelegates() - - - - - - - - - - - - StudyMonitorScreen - - - - - - +Widget build() - - - - - - - - - - - - - StudyPageWidget - - - - - - +studyId: String - - - - - - +Widget? banner() - - - - - - - - - - - - - LoginForm - - - - - - +formKey: AuthFormKey - - - - - - +Widget build() - - - - - - - - - - - - AuthFormKey - - - - - - +index: int - <static>+values: List<AuthFormKey> - <static>+login: AuthFormKey - <static>+signup: AuthFormKey - <static>+passwordForgot: AuthFormKey - <static>+passwordRecovery: AuthFormKey - <static>-_loginSubmit: AuthFormKey - <static>-_signupSubmit: AuthFormKey - - - - - - - - - - - - - PasswordRecoveryForm - - - - - - +formKey: AuthFormKey - - - - - - +Widget build() - - - - - - - - - - - - - PasswordForgotForm - - - - - - +formKey: AuthFormKey - - - - - - +Widget build() - - - - - - - - - - - - - SignupForm - - - - - - +formKey: AuthFormKey - - - - - - +Widget build() - -dynamic _onClickTermsOfUse() - -dynamic _onClickPrivacyPolicy() - - - - - - - - - - - - AuthScaffold - - - - - - +body: Widget - +formKey: AuthFormKey - +leftContentMinWidth: double - +leftPanelMinWidth: double - +leftPanelPadding: EdgeInsets - - - - - - - - - - - - EmailTextField - - - - - - +labelText: String - +hintText: String? - +formControlName: String? - +formControl: FormControl<dynamic>? - - - - - - - - - - - FormControl - - - - - - - - - - - - PasswordTextField - - - - - - +labelText: String - +hintText: String? - +onSubmitted: dynamic Function(FormControl<dynamic>)? - +formControlName: String? - +formControl: FormControl<dynamic>? - - - - - - - - - - - dynamic Function(FormControl<dynamic>)? - - - - - - - - - - - - StudyUJobsToBeDone - - - - - - +Widget build() - - - - - - - - - - - - - AuthFormController - - - - - - +authRepository: IAuthRepository - +notificationService: INotificationService - +router: GoRouter - +emailControl: FormControl<String> - +passwordControl: FormControl<String> - +passwordConfirmationControl: FormControl<String> - +termsOfServiceControl: FormControl<bool> - <static>+authValidationMessages: Map<String, String Function(dynamic)> - +loginForm: FormGroup - +signupForm: FormGroup - +passwordForgotForm: FormGroup - +passwordRecoveryForm: FormGroup - +controlValidatorsByForm: Map<AuthFormKey, Map<FormControl<dynamic>, List<Validator<dynamic>>>> - -_formKey: AuthFormKey - +formKey: AuthFormKey - +form: FormGroup - - - - - - -dynamic _getFormFor() - -dynamic _onChangeFormKey() - +dynamic resetControlsFor() - -dynamic _forceValidationMessages() - +dynamic signUp() - -dynamic _signUp() - +dynamic signIn() - -dynamic _signInWith() - +dynamic signOut() - +dynamic resetPasswordForEmail() - +dynamic sendPasswordResetLink() - +dynamic recoverPassword() - +dynamic updateUser() - -dynamic _readDebugUser() - - - - - - - - - - - - - IAuthRepository - - - - - - +allowPasswordReset: bool - +currentUser: User? - +isLoggedIn: bool - +session: Session? - +serializedSession: String? - - - - - - +dynamic signUp() - +dynamic signInWith() - +dynamic signOut() - +dynamic resetPasswordForEmail() - +dynamic updateUser() - +void dispose() - - - - - - - - - - - FormGroup - - - - - - - - - - - - IFormGroupController - - - - - - +form: FormGroup - - - - - - - - - - - - AppStatus - - - - - - +index: int - <static>+values: List<AppStatus> - <static>+initializing: AppStatus - <static>+initialized: AppStatus - - - - - - - - - - - - - FormArrayTable - - - - - - +control: AbstractControl<dynamic> - +items: List<T> - +onSelectItem: void Function(T) - +getActionsAt: List<ModelAction<dynamic>> Function(T, int) - +onNewItem: void Function()? - +rowTitle: String Function(T) - +onNewItemLabel: String - +sectionTitle: String? - +sectionDescription: String? - +emptyIcon: IconData? - +emptyTitle: String? - +emptyDescription: String? - +sectionTitleDivider: bool? - +rowPrefix: Widget Function(BuildContext, T, int)? - +rowSuffix: Widget Function(BuildContext, T, int)? - +leadingWidget: Widget? - +itemsSectionPadding: EdgeInsets? - +hideLeadingTrailingWhenEmpty: bool - <static>+columns: List<StandardTableColumn> - - - - - - +Widget build() - -List<Widget> _buildRow() - -Widget _newItemButton() - - - - - - - - - - - List<ModelAction<dynamic>> Function(T, int) - - - - - - - - - - - String Function(T) - - - - - - - - - - - Widget Function(BuildContext, T, int)? - - - - - - - - - - - - ManagedFormViewModel - - - - - - +ManagedFormViewModel<T> createDuplicate() - - - - - - - - - - - - - FormViewModel - - - - - - -_formData: T? - -_formMode: FormMode - -_validationSet: FormValidationSetEnum? - +delegate: IFormViewModelDelegate<FormViewModel<dynamic>>? - +autosave: bool - -_immediateFormChildrenSubscriptions: List<StreamSubscription<dynamic>> - -_immediateFormChildrenListenerDebouncer: Debouncer? - -_autosaveOperation: CancelableOperation<dynamic>? - -_defaultControlValidators: Map<String, Tuple<List<Validator<dynamic>>, List<AsyncValidator<dynamic>>>> - +prevFormValue: Map<String, dynamic>? - <static>-_formKey: String - +formData: T? - +formMode: FormMode - +isReadonly: bool - +validationSet: FormValidationSetEnum? - +isDirty: bool - +title: String - +isValid: bool - +titles: Map<FormMode, String> - +sharedValidationConfig: Map<FormValidationSetEnum, List<FormControlValidation>> - - - - - - -dynamic _setFormData() - -dynamic _rememberDefaultControlValidators() - -Tuple<List<Validator<dynamic>>, List<AsyncValidator<dynamic>>>? _getDefaultValidators() - -dynamic _disableAllControls() - -dynamic _formModeUpdated() - -dynamic _restoreControlsFromFormData() - +void revalidate() - -void _applyValidationSet() - +void read() - +dynamic save() - +dynamic cancel() - +void enableAutosave() - +void listenToImmediateFormChildren() - +dynamic markFormGroupChanged() - +void dispose() - +void setControlsFrom() - +T buildFormData() - +void initControls() - - - - - - - - - - - FormViewModelNotFoundException - - - - - - - - - - - Exception - - - - - - - - - - - - - FormViewModelCollection - - - - - - +formViewModels: List<T> - +formArray: FormArray<dynamic> - +stagedViewModels: List<T> - +retrievableViewModels: List<T> - +formData: List<D> - - - - - - +void add() - +T remove() - +T? findWhere() - +T? removeWhere() - +bool contains() - +void stage() - +T commit() - +void reset() - +void read() - - - - - - - - - - - FormArray - - - - - - - - - - - - - CustomFormControl - - - - - - -_onValueChangedDebouncer: Debouncer? - -_onStatusChangedDebouncer: Debouncer? - +onValueChanged: void Function(T?)? - +onStatusChanged: void Function(ControlStatus)? - +onStatusChangedDebounceTime: int? - +onValueChangedDebounceTime: int? - - - - - - +void dispose() - - - - - - - - - - - void Function(T?)? - - - - - - - - - - - void Function(ControlStatus)? - - - - - - - - - - - - UnsavedChangesDialog - - - - - - +Widget build() - - - - - - - - - - - FormValidationSetEnum - - - - - - - - - - - - - FormControlValidation - - - - - - +control: AbstractControl<dynamic> - +validators: List<Validator<dynamic>> - +asyncValidators: List<AsyncValidator<dynamic>>? - +validationMessages: Map<String, String Function(Object)> - - - - - - +FormControlValidation merge() - - - - - - - - - - - - - IFormData - - - - - - +id: String - - - - - - +IFormData copy() - - - - - - - - - - - FormInvalidException - - - - - - - - - - - - FormConfigException - - - - - - +message: String? - - - - - - - - - - - - IFormViewModelDelegate - - - - - - +dynamic onSave() - +void onCancel() - - - - - - - - - - - - FormControlOption - - - - - - +value: T - +label: String - +description: String? - +props: List<Object?> - - - - - - - - - - - - FormMode - - - - - - +index: int - <static>+values: List<FormMode> - <static>+create: FormMode - <static>+readonly: FormMode - <static>+edit: FormMode - - - - - - - - - - - - - EnrolledBadge - - - - - - +enrolledCount: int - - - - - - +Widget build() - - - - - - - - - - - - - StudyRecruitController - - - - - - +inviteCodeRepository: IInviteCodeRepository - -_invitesSubscription: StreamSubscription<List<WrappedModel<StudyInvite>>>? - - - - - - -dynamic _subscribeInvites() - +Intervention? getIntervention() - +int getParticipantCountForInvite() - +List<ModelAction<dynamic>> availableActions() - +List<ModelAction<dynamic>> availableInlineActions() - +void dispose() - - - - - - - - - - - - IInviteCodeRepository - - - - - - +dynamic isCodeAlreadyUsed() - - - - - - - - - - - StreamSubscription - - - - - - - - - - - - - StudyBaseController - - - - - - +studyId: String - +studyRepository: IStudyRepository - +router: GoRouter - +studySubscription: StreamSubscription<WrappedModel<Study>>? - - - - - - +dynamic subscribeStudy() - +dynamic onStudySubscriptionUpdate() - +dynamic onStudySubscriptionError() - +void dispose() - - - - - - - - - - - - StudyRecruitScreen - - - - - - +Widget build() - -Widget _inviteCodesSectionHeader() - -Widget _newInviteCodeButton() - -dynamic _onSelectInvite() - - - - - - - - - - - - - InviteCodeFormView - - - - - - +formViewModel: InviteCodeFormViewModel - - - - - - +Widget build() - -List<FormTableRow> _conditionalInterventionRows() - - - - - - - - - - - - - InviteCodeFormViewModel - - - - - - +study: Study - +inviteCodeRepository: IInviteCodeRepository - +codeControl: FormControl<String> - +codeControlValidationMessages: Map<String, String Function(dynamic)> - +isPreconfiguredScheduleControl: FormControl<bool> - +preconfiguredScheduleTypeControl: FormControl<PhaseSequence> - +interventionAControl: FormControl<String> - +interventionBControl: FormControl<String> - +form: FormGroup - +titles: Map<FormMode, String> - +interventionControlOptions: List<FormControlOption<String>> - +preconfiguredScheduleTypeOptions: List<FormControlOption<PhaseSequence>> - +isPreconfiguredSchedule: bool - +preconfiguredSchedule: List<String>? - - - - - - +void initControls() - -dynamic _uniqueInviteCode() - +void regenerateCode() - -String _generateCode() - +StudyInvite buildFormData() - +void setControlsFrom() - +dynamic save() - - - - - - - - - - - - - StudyInvitesTable - - - - - - +invites: List<StudyInvite> - +onSelect: void Function(StudyInvite) - +getActions: List<ModelAction<dynamic>> Function(StudyInvite) - +getInlineActions: List<ModelAction<dynamic>> Function(StudyInvite) - +getIntervention: Intervention? Function(String) - +getParticipantCountForInvite: int Function(StudyInvite) - - - - - - +Widget build() - -List<Widget> _buildRow() - - - - - - - - - - - void Function(StudyInvite) - - - - - - - - - - - List<ModelAction<dynamic>> Function(StudyInvite) - - - - - - - - - - - Intervention? Function(String) - - - - - - - - - - - int Function(StudyInvite) - - - - - - - - - - - - PublishSuccessDialog - - - - - - +Widget build() - - - - - - - - - - - - PublishDialog - - - - - - +Widget build() - - - - - - - - - - - - PublishConfirmationDialog - - - - - - +Widget build() - - - - - - - - - - - - - FrameControlsWidget - - - - - - +onRefresh: void Function()? - +onOpenNewTab: void Function()? - +enabled: bool - - - - - - +Widget build() - - - - - - - - - - - - IStudyStatusBadgeViewModel - - - - - - +studyParticipation: Participation? - +studyStatus: StudyStatus? - - - - - - - - - - - Participation - - - - - - - - - - - StudyStatus - - - - - - - - - - - - - StudyStatusBadge - - - - - - +participation: Participation? - +status: StudyStatus? - +type: BadgeType - +showPrefixIcon: bool - +showTooltip: bool - - - - - - +Widget build() - - - - - - - - - - - - - RouteInformation - - - - - - +route: String? - +extra: String? - +cmd: String? - +data: String? - - - - - - +String toString() - - - - - - - - - - - - - PlatformController - - - - - - +studyId: String - +baseSrc: String - +previewSrc: String - +routeInformation: RouteInformation - +frameWidget: Widget - - - - - - +void activate() - +void registerViews() - +void generateUrl() - +void navigate() - +void refresh() - +void listen() - +void send() - +void openNewPage() - - - - - - - - - - - - - WebController - - - - - - +iFrameElement: IFrameElement - - - - - - +void activate() - +void registerViews() - +void generateUrl() - +void navigate() - +void refresh() - +void openNewPage() - +void listen() - +void send() - - - - - - - - - - - IFrameElement - - - - - - - - - - - - MobileController - - - - - - +void openNewPage() - +void refresh() - +void registerViews() - +void listen() - +void send() - +void navigate() - +void activate() - +void generateUrl() - - - - - - - - - - - - - StudyController - - - - - - +notificationService: INotificationService - +studyEventsSubscription: StreamSubscription<ModelEvent<Study>>? - +studyActions: List<ModelAction<dynamic>> - - - - - - +dynamic syncStudyStatus() - +dynamic onStudySubscriptionUpdate() - -dynamic _redirectNewToActualStudyID() - +dynamic publishStudy() - +void onChangeStudyParticipation() - +void onAddParticipants() - +void onSettingsPressed() - +void dispose() - - - - - - - - - - - - IStudyNavViewModel - - - - - - +isEditTabEnabled: bool - +isTestTabEnabled: bool - +isRecruitTabEnabled: bool - +isMonitorTabEnabled: bool - +isAnalyzeTabEnabled: bool - +isSettingsEnabled: bool - - - - - - - - - - - - StudyNav - - - - - - <static>+dynamic tabs() - <static>+dynamic edit() - <static>+dynamic test() - <static>+dynamic recruit() - <static>+dynamic monitor() - <static>+dynamic analyze() - - - - - - - - - - - - StudyDesignNav - - - - - - <static>+dynamic tabs() - <static>+dynamic info() - <static>+dynamic enrollment() - <static>+dynamic interventions() - <static>+dynamic measurements() - <static>+dynamic reports() - - - - - - - - - - - - - StudyParticipationBadge - - - - - - +participation: Participation - +type: BadgeType - +showPrefixIcon: bool - +center: bool - - - - - - +Widget build() - - - - - - - - - - - - IStudyRepository - - - - - - +dynamic launch() - +dynamic deleteParticipants() - - - - - - - - - - - - PreviewFrame - - - - - - +studyId: String - +routeArgs: StudyFormRouteArgs? - +route: String? - - - - - - - - - - - - IStudyAppBarViewModel - - - - - - +isSyncIndicatorVisible: bool - +isStatusBadgeVisible: bool - +isPublishVisible: bool - - - - - - - - - - - - StudyScaffold - - - - - - +studyId: String - +tabs: List<NavbarTab>? - +tabsSubnav: List<NavbarTab>? - +selectedTab: NavbarTab? - +selectedTabSubnav: NavbarTab? - +body: StudyPageWidget - +drawer: Widget? - +disableActions: bool - +actionsSpacing: double - +actionsPadding: double - +layoutType: SingleColumnLayoutType? - +appbarHeight: double - +appbarSubnavHeight: double - - - - - - - - - - - - - WebFrame - - - - - - +previewSrc: String - +studyId: String - - - - - - +Widget build() - - - - - - - - - - - - DisabledFrame - - - - - - +Widget build() - - - - - - - - - - - - - PhoneContainer - - - - - - <static>+defaultWidth: double - <static>+defaultHeight: double - +width: double - +height: double - +borderColor: Color - +borderWidth: double - +borderRadius: double - +innerContent: Widget - +innerContentBackgroundColor: Color? - - - - - - +Widget build() - - - - - - - - - - - - MobileFrame - - - - - - +Widget build() - - - - - - - - - - - - DesktopFrame - - - - - - +Widget build() - - - - - - - - - - - - - StudyTestScreen - - - - - - +previewRoute: String? - - - - - - +Widget build() - +Widget? banner() - +dynamic load() - +dynamic save() - +dynamic showHelp() - - - - - - - - - - - - - StudySettingsFormViewModel - - - - - - +study: AsyncValue<Study> - +studyRepository: IStudyRepository - <static>+defaultPublishedToRegistry: bool - <static>+defaultPublishedToRegistryResults: bool - +isPublishedToRegistryControl: FormControl<bool> - +isPublishedToRegistryResultsControl: FormControl<bool> - +form: FormGroup - +titles: Map<FormMode, String> - - - - - - +void setControlsFrom() - +Study buildFormData() - +dynamic keepControlsSynced() - +dynamic save() - +dynamic setLaunchDefaults() - - - - - - - - - - - - StudySettingsDialog - - - - - - +Widget build() - - - - - - - - - - - - StudyTestController - - - - - - +authRepository: IAuthRepository - +languageCode: String - - - - - - - - - - - - TestAppRoutes - - - - - - <static>+studyOverview: String - <static>+eligibility: String - <static>+intervention: String - <static>+consent: String - <static>+journey: String - <static>+dashboard: String - - - - - - - - - - - - - DrawerEntry - - - - - - +localizedTitle: String Function() - +icon: IconData? - +localizedHelpText: String Function()? - +enabled: bool - +onSelected: void Function(BuildContext, WidgetRef)? - +autoCloseDrawer: bool - +title: String - +helpText: String? - - - - - - +void onClick() - - - - - - - - - - - String Function() - - - - - - - - - - - String Function()? - - - - - - - - - - - void Function(BuildContext, WidgetRef)? - - - - - - - - - - - - - GoRouterDrawerEntry - - - - - - +intent: RoutingIntent - +onNavigated: void Function()? - - - - - - +void onClick() - - - - - - - - - - - - AppDrawer - - - - - - +width: int - +autoCloseDrawer: bool - +leftPaddingEntries: double - +logoPaddingVertical: double - +logoPaddingHorizontal: double - +logoMaxHeight: double - +logoSectionMinHeight: double - +logoSectionMaxHeight: double - - - - - - - - - - - - StudyAnalyzeScreen - - - - - - +Widget? banner() - +Widget build() - - - - - - - - - - - - StudyAnalyzeController - - - - - - +dynamic onExport() - - - - - - - - - - - - StudyDesignInterventionsFormView - - - - - - +Widget build() - - - - - - - - - - - - StudyDesignPageWidget - - - - - - +Widget? banner() - - - - - - - - - - - - InterventionFormView - - - - - - +formViewModel: InterventionFormViewModel - - - - - - - - - - - - - InterventionFormViewModel - - - - - - +study: Study - +interventionIdControl: FormControl<String> - +interventionTitleControl: FormControl<String> - +interventionIconControl: FormControl<IconOption> - +interventionDescriptionControl: FormControl<String> - +interventionTasksArray: FormArray<dynamic> - +tasksCollection: FormViewModelCollection<InterventionTaskFormViewModel, InterventionTaskFormData> - +form: FormGroup - +interventionId: String - +sharedValidationConfig: Map<FormValidationSetEnum, List<FormControlValidation>> - +titleRequired: dynamic - +atLeastOneTask: dynamic - +breadcrumbsTitle: String - +titles: Map<FormMode, String> - - - - - - +void setControlsFrom() - +InterventionFormData buildFormData() - +List<ModelAction<dynamic>> availableActions() - +List<ModelAction<dynamic>> availablePopupActions() - +List<ModelAction<dynamic>> availableInlineActions() - +void onSelectItem() - +void onNewItem() - +void onCancel() - +dynamic onSave() - +InterventionTaskFormViewModel provide() - +InterventionTaskFormRouteArgs buildNewFormRouteArgs() - +InterventionTaskFormRouteArgs buildFormRouteArgs() - +InterventionFormViewModel createDuplicate() - - - - - - - - - - - - - InterventionPreview - - - - - - +routeArgs: InterventionFormRouteArgs - - - - - - +Widget build() - - - - - - - - - - - - - StudyScheduleFormView - - - - - - +formViewModel: StudyScheduleControls - - - - - - -FormTableRow _renderCustomSequence() - +Widget build() - - - - - - - - - - - - - StudyScheduleControls - - - - - - <static>+defaultScheduleType: PhaseSequence - <static>+defaultScheduleTypeSequence: String - <static>+defaultNumCycles: int - <static>+defaultPeriodLength: int - +sequenceTypeControl: FormControl<PhaseSequence> - +sequenceTypeCustomControl: FormControl<String> - +phaseDurationControl: FormControl<int> - +numCyclesControl: FormControl<int> - +includeBaselineControl: FormControl<bool> - +studyScheduleControls: Map<String, FormControl<Object>> - <static>+kNumCyclesMin: int - <static>+kNumCyclesMax: int - <static>+kPhaseDurationMin: int - <static>+kPhaseDurationMax: int - +sequenceTypeControlOptions: List<FormControlOption<PhaseSequence>> - +studyScheduleValidationConfig: Map<FormValidationSetEnum, List<FormControlValidation>> - +numCyclesRange: dynamic - +phaseDurationRange: dynamic - +customSequenceRequired: dynamic - - - - - - +void setStudyScheduleControlsFrom() - +StudyScheduleFormData buildStudyScheduleFormData() - +bool isSequencingCustom() - - - - - - - - - - - - - InterventionTaskFormData - - - - - - +taskId: String - +taskTitle: String - +taskDescription: String? - <static>+kDefaultTitle: String - +id: String - - - - - - +CheckmarkTask toTask() - +InterventionTaskFormData copy() - - - - - - - - - - - - - IFormDataWithSchedule - - - - - - +instanceId: String - +isTimeLocked: bool - +timeLockStart: StudyUTimeOfDay? - +timeLockEnd: StudyUTimeOfDay? - +hasReminder: bool - +reminderTime: StudyUTimeOfDay? - - - - - - +Schedule toSchedule() - - - - - - - - - - - - - InterventionsFormViewModel - - - - - - +study: Study - +router: GoRouter - +interventionsArray: FormArray<dynamic> - +interventionsCollection: FormViewModelCollection<InterventionFormViewModel, InterventionFormData> - +form: FormGroup - +sharedValidationConfig: Map<FormValidationSetEnum, List<FormControlValidation>> - +interventionsRequired: dynamic - +titles: Map<FormMode, String> - +canTestStudySchedule: bool - - - - - - +void setControlsFrom() - +InterventionsFormData buildFormData() - +void read() - +List<ModelAction<dynamic>> availableActions() - +List<ModelAction<dynamic>> availablePopupActions() - +List<ModelAction<dynamic>> availableInlineActions() - +void onSelectItem() - +void onNewItem() - +InterventionFormViewModel provide() - +void onCancel() - +dynamic onSave() - +dynamic testStudySchedule() - - - - - - - - - - - - - InterventionTaskFormViewModel - - - - - - +taskIdControl: FormControl<String> - +instanceIdControl: FormControl<String> - +taskTitleControl: FormControl<String> - +taskDescriptionControl: FormControl<String> - +markAsCompletedControl: FormControl<bool> - +form: FormGroup - +taskId: String - +instanceId: String - +sharedValidationConfig: Map<FormValidationSetEnum, List<FormControlValidation>> - +titleRequired: dynamic - +titles: Map<FormMode, String> - - - - - - +void setControlsFrom() - +InterventionTaskFormData buildFormData() - +InterventionTaskFormViewModel createDuplicate() - - - - - - - - - - - - - WithScheduleControls - - - - - - +isTimeRestrictedControl: FormControl<bool> - +instanceID: FormControl<String> - +restrictedTimeStartControl: FormControl<Time> - +restrictedTimeStartPickerControl: FormControl<TimeOfDay> - +restrictedTimeEndControl: FormControl<Time> - +restrictedTimeEndPickerControl: FormControl<TimeOfDay> - +hasReminderControl: FormControl<bool> - +reminderTimeControl: FormControl<Time> - +reminderTimePickerControl: FormControl<TimeOfDay> - -_reminderControlStream: StreamSubscription<dynamic>? - +scheduleFormControls: Map<String, FormControl<Object>> - +hasReminder: bool - +isTimeRestricted: bool - +timeRestriction: List<Time>? - - - - - - +void setScheduleControlsFrom() - -dynamic _initReminderControl() - - - - - - - - - - - PhaseSequence - - - - - - - - - - - - - InterventionFormData - - - - - - +interventionId: String - +title: String - +description: String? - +tasksData: List<InterventionTaskFormData>? - +iconName: String? - <static>+kDefaultTitle: String - +id: String - - - - - - +Intervention toIntervention() - +InterventionFormData copy() - - - - - - - - - - - - - StudyScheduleFormData - - - - - - +sequenceType: PhaseSequence - +sequenceTypeCustom: String - +numCycles: int - +phaseDuration: int - +includeBaseline: bool - +id: String - - - - - - +StudySchedule toStudySchedule() - +Study apply() - +StudyScheduleFormData copy() - - - - - - - - - - - - IStudyFormData - - - - - - +Study apply() - - - - - - - - - - - - InterventionTaskFormView - - - - - - +formViewModel: InterventionTaskFormViewModel - - - - - - - - - - - - - InterventionsFormData - - - - - - +interventionsData: List<InterventionFormData> - +studyScheduleData: StudyScheduleFormData - +id: String - - - - - - +Study apply() - +InterventionsFormData copy() - - - - - - - - - - - - StudyDesignReportsFormView - - - - - - +Widget build() - -dynamic _showReportItemSidesheetWithArgs() - - - - - - - - - - - - - ReportItemFormData - - - - - - +isPrimary: bool - +section: ReportSection - +id: String - - - - - - <static>+dynamic fromDomainModel() - +ReportItemFormData copy() - - - - - - - - - - - ReportSection - - - - - - - - - - - - - DataReferenceEditor - - - - - - +formControl: FormControl<DataReferenceIdentifier<T>> - +availableTasks: List<Task> - +buildReactiveDropdownField: ReactiveDropdownField<dynamic> - - - - - - +FormTableRow buildFormTableRow() - -List<DropdownMenuItem<DataReferenceIdentifier<dynamic>>> _dataReferenceItems() - - - - - - - - - - - ReactiveDropdownField - - - - - - - - - - - - - TemporalAggregationFormatted - - - - - - -_value: TemporalAggregation - <static>+values: List<TemporalAggregationFormatted> - +value: TemporalAggregation - +string: String - +icon: IconData? - +hashCode: int - - - - - - +bool ==() - +String toString() - +String toJson() - <static>+TemporalAggregationFormatted fromJson() - - - - - - - - - - - TemporalAggregation - - - - - - - - - - - - - ImprovementDirectionFormatted - - - - - - -_value: ImprovementDirection - <static>+values: List<ImprovementDirectionFormatted> - +value: ImprovementDirection - +string: String - +icon: IconData? - +hashCode: int - - - - - - +bool ==() - +String toString() - +String toJson() - <static>+ImprovementDirectionFormatted fromJson() - - - - - - - - - - - ImprovementDirection - - - - - - - - - - - - ReportSectionType - - - - - - +index: int - <static>+values: List<ReportSectionType> - <static>+average: ReportSectionType - <static>+linearRegression: ReportSectionType - - - - - - - - - - - - - AverageSectionFormView - - - - - - +formViewModel: ReportItemFormViewModel - +studyId: String - +reportSectionColumnWidth: Map<int, TableColumnWidth> - - - - - - +Widget build() - - - - - - - - - - - - - ReportItemFormViewModel - - - - - - <static>+defaultSectionType: ReportSectionType - +sectionIdControl: FormControl<String> - +sectionTypeControl: FormControl<ReportSectionType> - +titleControl: FormControl<String> - +descriptionControl: FormControl<String> - +sectionControl: FormControl<ReportSection> - +dataReferenceControl: FormControl<DataReferenceIdentifier<num>> - +temporalAggregationControl: FormControl<TemporalAggregationFormatted> - +improvementDirectionControl: FormControl<ImprovementDirectionFormatted> - +alphaControl: FormControl<double> - -_controlsBySectionType: Map<ReportSectionType, FormGroup> - -_sharedValidationConfig: Map<FormValidationSetEnum, List<FormControlValidation>> - -_validationConfigsBySectionType: Map<ReportSectionType, Map<FormValidationSetEnum, List<FormControlValidation>>> - +sectionBaseControls: Map<String, AbstractControl<dynamic>> - +form: FormGroup - +sectionId: String - +sectionType: ReportSectionType - <static>+sectionTypeControlOptions: List<FormControlOption<ReportSectionType>> - <static>+temporalAggregationControlOptions: List<FormControlOption<TemporalAggregationFormatted>> - <static>+improvementDirectionControlOptions: List<FormControlOption<ImprovementDirectionFormatted>> - +titles: Map<FormMode, String> - +sharedValidationConfig: Map<FormValidationSetEnum, List<FormControlValidation>> - +titleRequired: dynamic - +descriptionRequired: dynamic - +dataReferenceRequired: dynamic - +aggregationRequired: dynamic - +improvementDirectionRequired: dynamic - +alphaConfidenceRequired: dynamic - - - - - - -List<FormControlValidation> _getValidationConfig() - +ReportItemFormData buildFormData() - +ReportItemFormViewModel createDuplicate() - +dynamic onSectionTypeChanged() - -void _updateFormControls() - +void setControlsFrom() - - - - - - - - - - - - - DataReferenceIdentifier - - - - - - +hashCode: int - - - - - - +bool ==() - - - - - - - - - - - DataReference - - - - - - - - - - - - - LinearRegressionSectionFormView - - - - - - +formViewModel: ReportItemFormViewModel - +studyId: String - +reportSectionColumnWidth: Map<int, TableColumnWidth> - - - - - - +Widget build() - - - - - - - - - - - - - ReportItemFormView - - - - - - +formViewModel: ReportItemFormViewModel - +studyId: String - +reportSectionColumnWidth: dynamic - +sectionTypeBodyBuilder: Widget Function(BuildContext) - - - - - - +Widget build() - -dynamic _buildSectionText() - -dynamic _buildSectionTypeHeader() - - - - - - - - - - - - - ReportsFormViewModel - - - - - - +study: Study - +router: GoRouter - +reportItemDelegate: ReportFormItemDelegate - +reportItemArray: FormArray<dynamic> - +reportItemFormViewModels: FormViewModelCollection<ReportItemFormViewModel, ReportItemFormData> - +form: FormGroup - +reportItemModels: List<ReportItemFormViewModel> - +sharedValidationConfig: Map<FormValidationSetEnum, List<FormControlValidation>> - +titles: Map<FormMode, String> - +canTestConsent: bool - - - - - - +void setControlsFrom() - +ReportsFormData buildFormData() - +void read() - +ReportItemFormRouteArgs buildNewReportItemFormRouteArgs() - +ReportItemFormRouteArgs buildReportItemFormRouteArgs() - +dynamic testReport() - +void onCancel() - +dynamic onSave() - +ReportItemFormViewModel provide() - - - - - - - - - - - - - ReportFormItemDelegate - - - - - - +formViewModelCollection: FormViewModelCollection<ReportItemFormViewModel, ReportItemFormData> - +owner: ReportsFormViewModel - +propagateOnSave: bool - +validationSet: dynamic - - - - - - +void onCancel() - +dynamic onSave() - +ReportItemFormViewModel provide() - +List<ModelAction<dynamic>> availableActions() - +void onNewItem() - +void onSelectItem() - - - - - - - - - - - - - ReportBadge - - - - - - +status: ReportStatus? - +type: BadgeType - +showPrefixIcon: bool - +showTooltip: bool - - - - - - +Widget build() - - - - - - - - - - - - ReportStatus - - - - - - +index: int - <static>+values: List<ReportStatus> - <static>+primary: ReportStatus - <static>+secondary: ReportStatus - - - - - - - - - - - - - ReportsFormData - - - - - - +reportItems: List<ReportItemFormData> - +id: String - - - - - - +Study apply() - +ReportsFormData copy() - - - - - - - - - - - - - StudyInfoFormViewModel - - - - - - +study: Study - +titleControl: FormControl<String> - +iconControl: FormControl<IconOption> - +descriptionControl: FormControl<String> - +organizationControl: FormControl<String> - +reviewBoardControl: FormControl<String> - +reviewBoardNumberControl: FormControl<String> - +researchersControl: FormControl<String> - +emailControl: FormControl<String> - +websiteControl: FormControl<String> - +phoneControl: FormControl<String> - +additionalInfoControl: FormControl<String> - +form: FormGroup - +titles: Map<FormMode, String> - +sharedValidationConfig: Map<FormValidationSetEnum, List<FormControlValidation>> - +titleRequired: dynamic - +descriptionRequired: dynamic - +iconRequired: dynamic - +organizationRequired: dynamic - +reviewBoardRequired: dynamic - +reviewBoardNumberRequired: dynamic - +researchersRequired: dynamic - +emailRequired: dynamic - +phoneRequired: dynamic - +emailFormat: dynamic - +websiteFormat: dynamic - - - - - - +void setControlsFrom() - +StudyInfoFormData buildFormData() - - - - - - - - - - - - StudyDesignInfoFormView - - - - - - +Widget build() - - - - - - - - - - - - - StudyInfoFormData - - - - - - +title: String - +description: String? - +iconName: String - +contactInfoFormData: StudyContactInfoFormData - +id: String - - - - - - +Study apply() - +StudyInfoFormData copy() - - - - - - - - - - - - - StudyContactInfoFormData - - - - - - +organization: String? - +institutionalReviewBoard: String? - +institutionalReviewBoardNumber: String? - +researchers: String? - +email: String? - +website: String? - +phone: String? - +additionalInfo: String? - +id: String - - - - - - +Study apply() - +StudyInfoFormData copy() - - - - - - - - - - - - StudyFormValidationSet - - - - - - +index: int - <static>+values: List<StudyFormValidationSet> - - - - - - - - - - - - - MeasurementsFormData - - - - - - +surveyMeasurements: List<MeasurementSurveyFormData> - +id: String - - - - - - +Study apply() - +MeasurementsFormData copy() - - - - - - - - - - - - MeasurementSurveyFormView - - - - - - +formViewModel: MeasurementSurveyFormViewModel - - - - - - - - - - - - - MeasurementSurveyFormViewModel - - - - - - +study: Study - +measurementIdControl: FormControl<String> - +instanceIdControl: FormControl<String> - +surveyTitleControl: FormControl<String> - +surveyIntroTextControl: FormControl<String> - +surveyOutroTextControl: FormControl<String> - +form: FormGroup - +measurementId: String - +instanceId: String - +sharedValidationConfig: Map<FormValidationSetEnum, List<FormControlValidation>> - +titleRequired: dynamic - +atLeastOneQuestion: dynamic - +breadcrumbsTitle: String - +titles: Map<FormMode, String> - - - - - - +void setControlsFrom() - +MeasurementSurveyFormData buildFormData() - +List<ModelAction<dynamic>> availableActions() - +List<ModelAction<dynamic>> availablePopupActions() - +List<ModelAction<dynamic>> availableInlineActions() - +void onSelectItem() - +void onNewItem() - +SurveyQuestionFormRouteArgs buildNewFormRouteArgs() - +SurveyQuestionFormRouteArgs buildFormRouteArgs() - +MeasurementSurveyFormViewModel createDuplicate() - - - - - - - - - - - - - SurveyPreview - - - - - - +routeArgs: MeasurementFormRouteArgs - - - - - - +Widget build() - - - - - - - - - - - - - MeasurementSurveyFormData - - - - - - +measurementId: String - +title: String - +introText: String? - +outroText: String? - +questionnaireFormData: QuestionnaireFormData - <static>+kDefaultTitle: String - +id: String - - - - - - +QuestionnaireTask toQuestionnaireTask() - +MeasurementSurveyFormData copy() - - - - - - - - - - - - - QuestionnaireFormData - - - - - - +questionsData: List<QuestionFormData>? - +id: String - - - - - - +StudyUQuestionnaire toQuestionnaire() - +List<EligibilityCriterion> toEligibilityCriteria() - +QuestionnaireFormData copy() - - - - - - - - - - - - - WithQuestionnaireControls - - - - - - +questionsArray: FormArray<dynamic> - +questionFormViewModels: FormViewModelCollection<Q, QuestionFormData> - +questionnaireControls: Map<String, FormArray<dynamic>> - +propagateOnSave: bool - +questionModels: List<Q> - +questionTitles: Map<FormMode, String Function()> - - - - - - +void setQuestionnaireControlsFrom() - +QuestionnaireFormData buildQuestionnaireFormData() - +void read() - +void onCancel() - +dynamic onSave() - +Q provide() - +Q provideQuestionFormViewModel() - - - - - - - - - - - - StudyDesignMeasurementsFormView - - - - - - +Widget build() - - - - - - - - - - - - - MeasurementsFormViewModel - - - - - - +study: Study - +router: GoRouter - +measurementsArray: FormArray<dynamic> - +surveyMeasurementFormViewModels: FormViewModelCollection<MeasurementSurveyFormViewModel, MeasurementSurveyFormData> - +form: FormGroup - +measurementViewModels: List<MeasurementSurveyFormViewModel> - +sharedValidationConfig: Map<FormValidationSetEnum, List<FormControlValidation>> - +measurementRequired: dynamic - +titles: Map<FormMode, String> - - - - - - +void read() - +void setControlsFrom() - +MeasurementsFormData buildFormData() - +List<ModelAction<dynamic>> availableActions() - +List<ModelAction<dynamic>> availablePopupActions() - +List<ModelAction<dynamic>> availableInlineActions() - +void onSelectItem() - +void onNewItem() - +MeasurementSurveyFormViewModel provide() - +void onCancel() - +dynamic onSave() - - - - - - - - - - - - - StudyFormScaffold - - - - - - +studyId: String - +formViewModelBuilder: T Function(WidgetRef) - +formViewBuilder: Widget Function(T) - - - - - - +Widget build() - - - - - - - - - - - T Function(WidgetRef) - - - - - - - - - - - - - ConsentItemFormViewModel - - - - - - +consentIdControl: FormControl<String> - +titleControl: FormControl<String> - +descriptionControl: FormControl<String> - +iconControl: FormControl<IconOption> - +form: FormGroup - +consentId: String - +sharedValidationConfig: Map<FormValidationSetEnum, List<FormControlValidation>> - +titleRequired: dynamic - +descriptionRequired: dynamic - +titles: Map<FormMode, String> - - - - - - +void setControlsFrom() - +ConsentItemFormData buildFormData() - +ConsentItemFormViewModel createDuplicate() - - - - - - - - - - - - StudyDesignEnrollmentFormView - - - - - - +Widget build() - -dynamic _showScreenerQuestionSidesheetWithArgs() - -dynamic _showConsentItemSidesheetWithArgs() - - - - - - - - - - - - IScreenerQuestionLogicFormViewModel - - - - - - +isDirtyOptionsBannerVisible: bool - - - - - - - - - - - - - ScreenerQuestionLogicFormView - - - - - - +formViewModel: ScreenerQuestionFormViewModel - - - - - - +Widget build() - -dynamic _buildInfoBanner() - -dynamic _buildAnswerOptionsLogicControls() - -List<Widget> _buildOptionLogicRow() - - - - - - - - - - - - - ScreenerQuestionFormViewModel - - - - - - <static>+defaultResponseOptionValidity: bool - +responseOptionsDisabledArray: FormArray<dynamic> - +responseOptionsLogicControls: FormArray<bool> - +responseOptionsLogicDescriptionControls: FormArray<String> - -_questionBaseControls: Map<String, AbstractControl<dynamic>> - +prevResponseOptionControls: List<AbstractControl<dynamic>> - +prevResponseOptionValues: List<dynamic> - +responseOptionsDisabledControls: List<AbstractControl<dynamic>> - +logicControlOptions: List<FormControlOption<bool>> - +questionBaseControls: Map<String, AbstractControl<dynamic>> - +isDirtyOptionsBannerVisible: bool - - - - - - +dynamic onResponseOptionsChanged() - +void setControlsFrom() - +QuestionFormData buildFormData() - -List<FormControl<dynamic>> _copyFormControls() - -AbstractControl<dynamic>? _findAssociatedLogicControlFor() - -AbstractControl<dynamic>? _findAssociatedControlFor() - +ScreenerQuestionFormViewModel createDuplicate() - - - - - - - - - - - - - ConsentItemFormData - - - - - - +consentId: String - +title: String - +description: String - +iconName: String? - +id: String - - - - - - +ConsentItem toConsentItem() - +ConsentItemFormData copy() - - - - - - - - - - - - ConsentItemFormView - - - - - - +formViewModel: ConsentItemFormViewModel - - - - - - - - - - - - - EnrollmentFormData - - - - - - <static>+kDefaultEnrollmentType: Participation - +enrollmentType: Participation - +questionnaireFormData: QuestionnaireFormData - +consentItemsFormData: List<ConsentItemFormData>? - +id: String - - - - - - +Study apply() - +EnrollmentFormData copy() - - - - - - - - - - - - - QuestionFormViewModel - - - - - - <static>+defaultQuestionType: SurveyQuestionType - -_titles: Map<FormMode, String Function()>? - +questionIdControl: FormControl<String> - +questionTypeControl: FormControl<SurveyQuestionType> - +questionTextControl: FormControl<String> - +questionInfoTextControl: FormControl<String> - +questionBaseControls: Map<String, AbstractControl<dynamic>> - +isMultipleChoiceControl: FormControl<bool> - +choiceResponseOptionsArray: FormArray<dynamic> - +customOptionsMin: int - +customOptionsMax: int - +customOptionsInitial: int - +boolResponseOptionsArray: FormArray<String> - +imageResponseOptionsArray: FormArray<String> - <static>+kDefaultMaxRecordingDurationSeconds: int - <static>+kMaxRecordingDurationSeconds: int - +audioResponseOptionsArray: FormArray<String> - +maxRecordingDurationSecondsControl: FormControl<int> - <static>+kDefaultScaleMinValue: int - <static>+kDefaultScaleMaxValue: int - <static>+kNumMidValueControls: int - <static>+kMidValueDebounceMilliseconds: int - +scaleMinValueControl: FormControl<int> - +scaleMaxValueControl: FormControl<int> - -_scaleRangeControl: FormControl<int> - +scaleMinLabelControl: FormControl<String> - +scaleMaxLabelControl: FormControl<String> - +scaleMidValueControls: FormArray<int> - +scaleMidLabelControls: FormArray<String?> - -_scaleResponseOptionsArray: FormArray<int> - +scaleMinColorControl: FormControl<SerializableColor> - +scaleMaxColorControl: FormControl<SerializableColor> - +prevMidValues: List<int?>? - +freeTextTypeControl: FormControl<FreeTextQuestionType> - +customRegexControl: FormControl<String> - +freeTextResponseOptionsArray: FormArray<dynamic> - +freeTextLengthMin: AbstractControl<int> - +freeTextLengthMax: AbstractControl<int> - +freeTextExampleTextControl: FormControl<String> - <static>+kDefaultFreeTextMinLength: int - <static>+kDefaultFreeTextMaxLength: int - +freeTextLengthControl: FormControl<RangeValues> - -_controlsByQuestionType: Map<SurveyQuestionType, FormGroup> - -_sharedValidationConfig: Map<FormValidationSetEnum, List<FormControlValidation>> - -_validationConfigsByQuestionType: Map<SurveyQuestionType, Map<FormValidationSetEnum, List<FormControlValidation>>> - +form: FormGroup - +questionId: String - +questionType: SurveyQuestionType - +questionTypeControlOptions: List<FormControlOption<SurveyQuestionType>> - +answerOptionsArray: FormArray<dynamic> - +answerOptionsControls: List<AbstractControl<dynamic>> - +validAnswerOptions: List<String> - +boolOptions: List<AbstractControl<String>> - +imageOptions: List<AbstractControl<String>> - +audioOptions: List<AbstractControl<String>> - +scaleMinValue: int - +scaleMaxValue: int - +scaleRange: int - +scaleAllValueControls: List<AbstractControl<int>> - +sharedValidationConfig: Map<FormValidationSetEnum, List<FormControlValidation>> - +questionTextRequired: dynamic - +numValidChoiceOptions: dynamic - +scaleRangeValid: dynamic - +maxRecordingDurationValid: dynamic - +titles: Map<FormMode, String> - +isAddOptionButtonVisible: bool - +isMidValuesClearedInfoVisible: bool - - - - - - +String? scaleMidLabelAt() - -dynamic _onScaleRangeChanged() - -dynamic _applyInputFormatters() - -dynamic _updateScaleMidValueControls() - -Map<String, dynamic>? _validateFreeText() - -dynamic _onFreeTextLengthChanged() - -List<FormControlValidation> _getValidationConfig() - +dynamic onQuestionTypeChanged() - +dynamic onResponseOptionsChanged() - -void _updateFormControls() - +void initControls() - +void setControlsFrom() - +QuestionFormData buildFormData() - +List<ModelAction<dynamic>> availableActions() - +void onNewItem() - +void onSelectItem() - +dynamic save() - +QuestionFormViewModel createDuplicate() - - - - - - - - - - - - - EnrollmentFormViewModel - - - - - - +study: Study - +router: GoRouter - +consentItemDelegate: EnrollmentFormConsentItemDelegate - +enrollmentTypeControl: FormControl<Participation> - +consentItemArray: FormArray<dynamic> - +consentItemFormViewModels: FormViewModelCollection<ConsentItemFormViewModel, ConsentItemFormData> - +form: FormGroup - +enrollmentTypeControlOptions: List<FormControlOption<Participation>> - +consentItemModels: List<ConsentItemFormViewModel> - +sharedValidationConfig: Map<FormValidationSetEnum, List<FormControlValidation>> - +titles: Map<FormMode, String> - +canTestScreener: bool - +canTestConsent: bool - +questionTitles: Map<FormMode, String Function()> - - - - - - +void setControlsFrom() - +EnrollmentFormData buildFormData() - +void read() - +List<ModelAction<dynamic>> availableActions() - +List<ModelAction<dynamic>> availablePopupActions() - +List<ModelAction<dynamic>> availableInlineActions() - +void onSelectItem() - +void onNewItem() - +ScreenerQuestionFormRouteArgs buildNewScreenerQuestionFormRouteArgs() - +ScreenerQuestionFormRouteArgs buildScreenerQuestionFormRouteArgs() - +ConsentItemFormRouteArgs buildNewConsentItemFormRouteArgs() - +ConsentItemFormRouteArgs buildConsentItemFormRouteArgs() - +dynamic testScreener() - +dynamic testConsent() - +ScreenerQuestionFormViewModel provideQuestionFormViewModel() - - - - - - - - - - - - - EnrollmentFormConsentItemDelegate - - - - - - +formViewModels: FormViewModelCollection<ConsentItemFormViewModel, ConsentItemFormData> - +owner: EnrollmentFormViewModel - +propagateOnSave: bool - +validationSet: dynamic - - - - - - +void onCancel() - +dynamic onSave() - +ConsentItemFormViewModel provide() - +List<ModelAction<dynamic>> availableActions() - +void onNewItem() - +void onSelectItem() - - - - - - - - - - - - - StudyFormViewModel - - - - - - +studyDirtyCopy: Study? - +studyRepository: IStudyRepository - +authRepository: IAuthRepository - +router: GoRouter - +studyInfoFormViewModel: StudyInfoFormViewModel - +enrollmentFormViewModel: EnrollmentFormViewModel - +measurementsFormViewModel: MeasurementsFormViewModel - +reportsFormViewModel: ReportsFormViewModel - +interventionsFormViewModel: InterventionsFormViewModel - +form: FormGroup - +isStudyReadonly: bool - +sharedValidationConfig: Map<FormValidationSetEnum, List<FormControlValidation>> - +titles: Map<FormMode, String> - - - - - - +void read() - +void setControlsFrom() - +Study buildFormData() - +void dispose() - +void onCancel() - +dynamic onSave() - -dynamic _applyAndSaveSubform() - - - - - - - - - - - - - QuestionFormData - - - - - - <static>+questionTypeFormDataFactories: Map<SurveyQuestionType, QuestionFormData Function(Question<dynamic>, List<EligibilityCriterion>)> - +questionId: String - +questionText: String - +questionInfoText: String? - +questionType: SurveyQuestionType - +responseOptionsValidity: Map<dynamic, bool> - +responseOptions: List<dynamic> - +id: String - - - - - - +Question<dynamic> toQuestion() - +EligibilityCriterion toEligibilityCriterion() - +Answer<dynamic> constructAnswerFor() - +dynamic setResponseOptionsValidityFrom() - +QuestionFormData copy() - - - - - - - - - - - - SurveyQuestionType - - - - - - +index: int - <static>+values: List<SurveyQuestionType> - <static>+choice: SurveyQuestionType - <static>+bool: SurveyQuestionType - <static>+scale: SurveyQuestionType - <static>+image: SurveyQuestionType - <static>+audio: SurveyQuestionType - <static>+freeText: SurveyQuestionType - - - - - - - - - - - - - ChoiceQuestionFormData - - - - - - +isMultipleChoice: bool - +answerOptions: List<String> - +responseOptions: List<String> - - - - - - +Question<dynamic> toQuestion() - +QuestionFormData copy() - -Choice _buildChoiceForValue() - +Answer<dynamic> constructAnswerFor() - - - - - - - - - - - - - BoolQuestionFormData - - - - - - <static>+kResponseOptions: Map<String, bool> - +responseOptions: List<String> - - - - - - +Question<dynamic> toQuestion() - +BoolQuestionFormData copy() - +Answer<dynamic> constructAnswerFor() - - - - - - - - - - - - - ImageQuestionFormData - - - - - - <static>+kResponseOptions: Map<String, FutureBlobFile> - +responseOptions: List<String> - - - - - - +Question<dynamic> toQuestion() - +ImageQuestionFormData copy() - +Answer<dynamic> constructAnswerFor() - - - - - - - - - - - - - AudioQuestionFormData - - - - - - +maxRecordingDurationSeconds: int - <static>+kResponseOptions: Map<String, FutureBlobFile> - +responseOptions: List<String> - - - - - - +Question<dynamic> toQuestion() - +AudioQuestionFormData copy() - +Answer<dynamic> constructAnswerFor() - - - - - - - - - - - - - ScaleQuestionFormData - - - - - - +minValue: double - +maxValue: double - +minLabel: String? - +maxLabel: String? - +midValues: List<double?> - +midLabels: List<String?> - +stepSize: double - +initialValue: double? - +minColor: Color? - +maxColor: Color? - +responseOptions: List<double> - +midAnnotations: List<Annotation> - - - - - - +ScaleQuestion toQuestion() - +QuestionFormData copy() - +Answer<dynamic> constructAnswerFor() - - - - - - - - - - - - - FreeTextQuestionFormData - - - - - - +textLengthRange: List<int> - +textType: FreeTextQuestionType - +textTypeExpression: String? - +responseOptions: List<String> - - - - - - +Question<dynamic> toQuestion() - +FreeTextQuestionFormData copy() - +Answer<dynamic> constructAnswerFor() - - - - - - - - - - - FreeTextQuestionType - - - - - - - - - - - - - AudioRecordingQuestionFormView - - - - - - +formViewModel: QuestionFormViewModel - - - - - - +Widget build() - - - - - - - - - - - - - FreeTextQuestionFormView - - - - - - +formViewModel: QuestionFormViewModel - +generateLabelHelpTextMap: dynamic - - - - - - +Widget build() - +Widget disableOnReadonly() - +Widget generateRow() - - - - - - - - - - - - - ImageCapturingQuestionFormView - - - - - - +formViewModel: QuestionFormViewModel - - - - - - +Widget build() - - - - - - - - - - - - IScaleQuestionFormViewModel - - - - - - +isMidValuesClearedInfoVisible: bool - - - - - - - - - - - - ScaleQuestionFormView - - - - - - +formViewModel: QuestionFormViewModel - - - - - - - - - - - - - ChoiceQuestionFormView - - - - - - +formViewModel: QuestionFormViewModel - - - - - - +Widget build() - - - - - - - - - - - - - BoolQuestionFormView - - - - - - +formViewModel: QuestionFormViewModel - - - - - - +Widget build() - - - - - - - - - - - - SurveyQuestionFormView - - - - - - +formViewModel: QuestionFormViewModel - +isHtmlStyleable: bool - - - - - - - - - - - StudyUTimeOfDay - - - - - - - - - - - - - ScheduleControls - - - - - - +formViewModel: WithScheduleControls - - - - - - +Widget build() - -List<FormTableRow> _conditionalTimeRestrictions() - - - - - - - - - - - - StudiesTableColumnHeader - - - - - - +title: String - +sortable: bool - +sortAscending: bool - +sortingActive: bool - +onSort: void Function()? - - - - - - - - - - - - DashboardScreen - - - - - - +filter: StudiesFilter? - - - - - - - - - - - - StudiesFilter - - - - - - +index: int - <static>+values: List<StudiesFilter> - - - - - - - - - - - - - DashboardScaffold - - - - - - <static>+compactWidthThreshold: double - +body: Widget - - - - - - +Widget build() - - - - - - - - - - - - - DashboardController - - - - - - +studyRepository: IStudyRepository - +authRepository: IAuthRepository - +userRepository: IUserRepository - +router: GoRouter - -_studiesSubscription: StreamSubscription<List<WrappedModel<Study>>>? - +searchController: SearchController - +isSortAscending: bool - - - - - - -dynamic _subscribeStudies() - +dynamic setSearchText() - +dynamic setStudiesFilter() - +dynamic onSelectStudy() - +dynamic onClickNewStudy() - +dynamic pinStudy() - +dynamic pinOffStudy() - +void setSorting() - +void filterStudies() - +void sortStudies() - +bool isSortingActiveForColumn() - +bool isPinned() - +List<ModelAction<dynamic>> availableActions() - +void dispose() - - - - - - - - - - - - - IUserRepository - - - - - - +user: StudyUUser - - - - - - +dynamic fetchUser() - +dynamic saveUser() - +dynamic updatePreferences() - - - - - - - - - - - - - StudiesTableColumnSize - - - - - - +collapsed: bool - +flex: int? - +width: double? - - - - - - +Widget createContainer() - - - - - - - - - - - - - StudiesTable - - - - - - +itemHeight: double - +itemPadding: double - +rowSpacing: double - +columnSpacing: double - +compactWidthThreshold: double - +superCompactWidthThreshold: double - +compactStatTitleThreshold: double - +studies: List<Study> - +onSelect: void Function(Study) - +getActions: List<ModelAction<dynamic>> Function(Study) - +emptyWidget: Widget - +pinnedStudies: Iterable<String> - +dashboardController: DashboardController - - - - - - +Widget build() - -Widget _buildColumnHeader() - - - - - - - - - - - void Function(Study) - - - - - - - - - - - List<ModelAction<dynamic>> Function(Study) - - - - - - - - - - - - StudiesTableColumn - - - - - - +index: int - <static>+values: List<StudiesTableColumn> - <static>+pin: StudiesTableColumn - <static>+title: StudiesTableColumn - <static>+status: StudiesTableColumn - <static>+participation: StudiesTableColumn - <static>+createdAt: StudiesTableColumn - <static>+enrolled: StudiesTableColumn - <static>+active: StudiesTableColumn - <static>+completed: StudiesTableColumn - <static>+action: StudiesTableColumn - - - - - - - - - - - - StudiesTableItem - - - - - - +study: Study - +itemHeight: double - +itemPadding: double - +rowSpacing: double - +columnSpacing: double - +actions: List<ModelAction<dynamic>> - +columnSizes: List<StudiesTableColumnSize> - +isPinned: bool - +onPinnedChanged: void Function(Study, bool)? - +onTap: void Function(Study)? - - - - - - - - - - - void Function(Study, bool)? - - - - - - - - - - - void Function(Study)? - - - - - - - - - - - App - - - - - - - - - - - AppContent - - - - - - - - - - - - AccountSettingsDialog - - - - - - +Widget build() - - - - - - - - - - - - - ModelRepository - - - - - - +delegate: IModelRepositoryDelegate<T> - -_allModelsStreamController: BehaviorSubject<List<WrappedModel<T>>> - -_allModelEventsStreamController: BehaviorSubject<ModelEvent<T>> - +modelStreamControllers: Map<String, BehaviorSubject<WrappedModel<T>>> - +modelEventsStreamControllers: Map<String, BehaviorSubject<ModelEvent<T>>> - -_allModels: Map<String, WrappedModel<T>> - - - - - - +WrappedModel<T>? get() - +dynamic fetchAll() - +dynamic fetch() - +dynamic save() - +dynamic delete() - +dynamic duplicateAndSave() - +dynamic duplicateAndSaveFromRemote() - +Stream<List<WrappedModel<T>>> watchAll() - +Stream<WrappedModel<T>> watch() - +Stream<ModelEvent<T>> watchAllChanges() - +Stream<ModelEvent<T>> watchChanges() - -dynamic _buildModelSpecificController() - +dynamic ensurePersisted() - +WrappedModel<T> upsertLocally() - +List<WrappedModel<T>> upsertAllLocally() - +dynamic emitUpdate() - +dynamic emitModelEvent() - +dynamic emitError() - +void dispose() - +List<ModelAction<dynamic>> availableActions() - - - - - - - - - - - - - InviteCodeRepository - - - - - - +studyId: String - +ref: ProviderRef<dynamic> - +apiClient: StudyUApi - +authRepository: IAuthRepository - +studyRepository: IStudyRepository - +study: Study - - - - - - +String getKey() - +dynamic isCodeAlreadyUsed() - +List<ModelAction<dynamic>> availableActions() - +dynamic emitUpdate() - - - - - - - - - - - ProviderRef - - - - - - - - - - - - StudyUApi - - - - - - +dynamic saveStudy() - +dynamic fetchStudy() - +dynamic getUserStudies() - +dynamic deleteStudy() - +dynamic saveStudyInvite() - +dynamic fetchStudyInvite() - +dynamic deleteStudyInvite() - +dynamic deleteParticipants() - +dynamic fetchAppConfig() - +dynamic fetchUser() - +dynamic saveUser() - - - - - - - - - - - - - InviteCodeRepositoryDelegate - - - - - - +study: Study - +apiClient: StudyUApi - +studyRepository: IStudyRepository - - - - - - +dynamic fetch() - +dynamic fetchAll() - +dynamic save() - +dynamic delete() - +dynamic onError() - +StudyInvite createDuplicate() - +StudyInvite createNewInstance() - - - - - - - - - - - - IModelRepositoryDelegate - - - - - - +dynamic fetchAll() - +dynamic fetch() - +dynamic save() - +dynamic delete() - +T createNewInstance() - +T createDuplicate() - +dynamic onError() - - - - - - - - - - - - - StudyRepository - - - - - - +apiClient: StudyUApi - +authRepository: IAuthRepository - +ref: ProviderRef<dynamic> - +sortCallback: void Function()? - - - - - - +String getKey() - +dynamic deleteParticipants() - +dynamic launch() - +List<ModelAction<dynamic>> availableActions() - - - - - - - - - - - - - StudyRepositoryDelegate - - - - - - +apiClient: StudyUApi - +authRepository: IAuthRepository - - - - - - +dynamic fetchAll() - +dynamic fetch() - +dynamic save() - +dynamic delete() - +dynamic onError() - +Study createNewInstance() - +Study createDuplicate() - - - - - - - - - - - APIException - - - - - - - - - - - StudyNotFoundException - - - - - - - - - - - MeasurementNotFoundException - - - - - - - - - - - QuestionNotFoundException - - - - - - - - - - - ConsentItemNotFoundException - - - - - - - - - - - InterventionNotFoundException - - - - - - - - - - - InterventionTaskNotFoundException - - - - - - - - - - - ReportNotFoundException - - - - - - - - - - - ReportSectionNotFoundException - - - - - - - - - - - StudyInviteNotFoundException - - - - - - - - - - - UserNotFoundException - - - - - - - - - - - - - StudyUApiClient - - - - - - +supabaseClient: SupabaseClient - <static>+studyColumns: List<String> - <static>+studyWithParticipantActivityColumns: List<String> - +testDelayMilliseconds: int - - - - - - +dynamic deleteParticipants() - +dynamic getUserStudies() - +dynamic fetchStudy() - +dynamic deleteStudy() - +dynamic saveStudy() - +dynamic fetchStudyInvite() - +dynamic saveStudyInvite() - +dynamic deleteStudyInvite() - +dynamic fetchAppConfig() - +dynamic fetchUser() - +dynamic saveUser() - -dynamic _awaitGuarded() - -dynamic _apiException() - -dynamic _testDelay() - - - - - - - - - - - SupabaseClient - - - - - - - - - - - - SupabaseClientDependant - - - - - - +supabaseClient: SupabaseClient - - - - - - - - - - - - SupabaseQueryMixin - - - - - - +dynamic deleteAll() - +dynamic getAll() - +dynamic getById() - +dynamic getByColumn() - +List<T> deserializeList() - +T deserializeObject() - - - - - - - - - - - - IAppRepository - - - - - - +dynamic fetchAppConfig() - +void dispose() - - - - - - - - - - - - - AppRepository - - - - - - +apiClient: StudyUApi - - - - - - +dynamic fetchAppConfig() - +void dispose() - - - - - - - - - - - StudyUUser - - - - - - - - - - - - - UserRepository - - - - - - +apiClient: StudyUApi - +authRepository: IAuthRepository - +ref: Ref<Object?> - +user: StudyUUser - - - - - - +dynamic fetchUser() - +dynamic saveUser() - +dynamic updatePreferences() - - - - - - - - - - - Ref - - - - - - - - - - - - PreferenceAction - - - - - - +index: int - <static>+values: List<PreferenceAction> - <static>+pin: PreferenceAction - <static>+pinOff: PreferenceAction - - - - - - - - - - - User - - - - - - - - - - - Session - - - - - - - - - - - - - AuthRepository - - - - - - +supabaseClient: SupabaseClient - +allowPasswordReset: bool - +authClient: GoTrueClient - +session: Session? - +serializedSession: String? - +currentUser: User? - +isLoggedIn: bool - - - - - - -void _registerAuthListener() - +dynamic signUp() - +dynamic signInWith() - +dynamic signOut() - +dynamic resetPasswordForEmail() - +dynamic updateUser() - +void dispose() - +dynamic onAppStart() - - - - - - - - - - - GoTrueClient - - - - - - - - - - - StudyLaunched - - - - - - - - - - - - ModelEvent - - - - - - +modelId: String - +model: T - - - - - - - - - - - - SupabaseQueryError - - - - - - +statusCode: String? - +message: String - +details: dynamic - - - - - - - - - - - - - WrappedModel - - - - - - -_model: T - +asyncValue: AsyncValue<T> - +isLocalOnly: bool - +isDirty: bool - +isDeleted: bool - +lastSaved: DateTime? - +lastFetched: DateTime? - +lastUpdated: DateTime? - +model: T - - - - - - +dynamic markWithError() - +dynamic markAsLoading() - +dynamic markAsFetched() - +dynamic markAsSaved() - - - - - - - - - - - ModelRepositoryException - - - - - - - - - - - ModelNotFoundException - - - - - - - - - - - - IModelRepository - - - - - - +String getKey() - +WrappedModel<T>? get() - +dynamic fetchAll() - +dynamic fetch() - +dynamic save() - +dynamic delete() - +dynamic duplicateAndSave() - +dynamic duplicateAndSaveFromRemote() - +Stream<WrappedModel<T>> watch() - +Stream<List<WrappedModel<T>>> watchAll() - +Stream<ModelEvent<T>> watchChanges() - +Stream<ModelEvent<T>> watchAllChanges() - +dynamic ensurePersisted() - +void dispose() - - - - - - - - - - - IsFetched - - - - - - - - - - - IsSaving - - - - - - - - - - - IsSaved - - - - - - - - - - - IsDeleted - - - - - - - - - \ No newline at end of file diff --git a/docs/uml/designer_v2/lib/utils/uml.svg b/docs/uml/designer_v2/lib/utils/uml.svg deleted file mode 100644 index 69a23ca7f..000000000 --- a/docs/uml/designer_v2/lib/utils/uml.svg +++ /dev/null @@ -1,1035 +0,0 @@ - - [SerializableColor - | - +Map<String, dynamic> toJson(); - <static>+SerializableColor fromJson() - ] - - [Color]<:-[SerializableColor] - - [<abstract>FileFormatEncoder - | - +dynamic encodeAsync(); - +String encode(); - +dynamic call() - ] - - [CSVStringEncoder - | - +String encode() - ] - - [<abstract>FileFormatEncoder]<:-[CSVStringEncoder] - - [JsonStringEncoder - | - +String encode() - ] - - [<abstract>FileFormatEncoder]<:-[JsonStringEncoder] - - [<abstract>ExecutionLimiter - | - +milliseconds: int; - <static>-_timer: Timer? - | - +void dispose() - ] - - [<abstract>ExecutionLimiter]o-[Timer] - - [Debouncer - | - +leading: bool; - +cancelUncompleted: bool; - -_uncompletedFutureOperation: CancelableOperation<dynamic>? - | - +dynamic call() - ] - - [Debouncer]o-[CancelableOperation] - [<abstract>ExecutionLimiter]<:-[Debouncer] - - [Throttler - | - +dynamic call() - ] - - [<abstract>ExecutionLimiter]<:-[Throttler] - - [OptimisticUpdate - | - +applyOptimistic: void Function(); - +apply: dynamic Function(); - +rollback: void Function(); - +onUpdate: void Function()?; - +onError: void Function(Object, StackTrace?)?; - +rethrowErrors: bool; - +runOptimistically: bool; - +completeFutureOptimistically: bool - | - +dynamic execute(); - -void _runUpdateHandlerIfAny() - ] - - [OptimisticUpdate]o-[void Function()] - [OptimisticUpdate]o-[dynamic Function()] - [OptimisticUpdate]o-[void Function()?] - [OptimisticUpdate]o-[void Function(Object, StackTrace?)?] - - [CountWhereValidator - | - +predicate: bool Function(T?); - +minCount: int?; - +maxCount: int?; - <static>+kValidationMessageMinCount: String; - <static>+kValidationMessageMaxCount: String - | - +Map<String, dynamic>? validate() - ] - - [CountWhereValidator]o-[bool Function(T?)] - [<abstract>Validator]<:-[CountWhereValidator] - - [Patterns - | - <static>+timeFormatString: String; - <static>+emailFormatString: String; - <static>+url: String - ] - - [ModelAction - | - +type: T; - +label: String; - +icon: IconData?; - +onExecute: Function; - +isAvailable: bool; - +isDestructive: bool - ] - - [ModelAction]o-[IconData] - - [<abstract>IModelActionProvider - | - +List<ModelAction<dynamic>> availableActions() - ] - - [<abstract>IListActionProvider - | - +void onSelectItem(); - +void onNewItem() - ] - - [<abstract>IModelActionProvider]<:-[<abstract>IListActionProvider] - - [ModelActionType - | - +index: int; - <static>+values: List<ModelActionType>; - <static>+edit: ModelActionType; - <static>+delete: ModelActionType; - <static>+remove: ModelActionType; - <static>+duplicate: ModelActionType; - <static>+clipboard: ModelActionType; - <static>+primary: ModelActionType - ] - - [ModelActionType]o-[ModelActionType] - [Enum]<:--[ModelActionType] - - [<abstract>IProviderArgsResolver - | - +R provide() - ] - - [Tuple - | - +first: T1; - +second: T2; - +props: List<Object?> - | - +Map<String, dynamic> toJson(); - <static>+Tuple<dynamic, dynamic> fromJson(); - +Tuple<T1, T2> copy(); - +Tuple<T1, T2> copyWith() - ] - - [<abstract>Equatable]<:-[Tuple] - - [SuppressedBehaviorSubject - | - +subject: BehaviorSubject<T>; - +didSuppressInitialEvent: bool; - -_controller: StreamController<T> - | - -StreamController<T> _buildDerivedController(); - +dynamic close() - ] - - [SuppressedBehaviorSubject]o-[BehaviorSubject] - [SuppressedBehaviorSubject]o-[StreamController] - - [<abstract>JsonFileLoader - | - +jsonAssetsPath: String - | - +dynamic loadJson(); - +dynamic parseJsonMapFromAssets(); - +dynamic parseJsonListFromAssets() - ] - - [CombinedStreamNotifier - | - -_subscriptions: List<StreamSubscription<dynamic>> - | - +void dispose() - ] - - [ChangeNotifier]<:-[CombinedStreamNotifier] - - [Time - | - <static>+dynamic fromTimeOfDay(); - +Map<String, dynamic> toJson(); - <static>+Time fromJson() - ] - - [TimeOfDay]<:-[Time] - - [TimeValueAccessor - | - +String modelToViewValue(); - +Time? viewToModelValue(); - -String _addLeadingZeroIfNeeded() - ] - - [<abstract>ControlValueAccessor]<:-[TimeValueAccessor] - - [NumericalRangeFormatter - | - +min: int?; - +max: int? - | - +TextEditingValue formatEditUpdate() - ] - - [<abstract>TextInputFormatter]<:-[NumericalRangeFormatter] - - [StudySequenceFormatter - | - +TextEditingValue formatEditUpdate() - ] - - [<abstract>TextInputFormatter]<:-[StudySequenceFormatter] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - SerializableColor - - - - - - +Map<String, dynamic> toJson() - <static>+SerializableColor fromJson() - - - - - - - - - - - Color - - - - - - - - - - - - FileFormatEncoder - - - - - - +dynamic encodeAsync() - +String encode() - +dynamic call() - - - - - - - - - - - - CSVStringEncoder - - - - - - +String encode() - - - - - - - - - - - - JsonStringEncoder - - - - - - +String encode() - - - - - - - - - - - - - ExecutionLimiter - - - - - - +milliseconds: int - <static>-_timer: Timer? - - - - - - +void dispose() - - - - - - - - - - - Timer - - - - - - - - - - - - - Debouncer - - - - - - +leading: bool - +cancelUncompleted: bool - -_uncompletedFutureOperation: CancelableOperation<dynamic>? - - - - - - +dynamic call() - - - - - - - - - - - CancelableOperation - - - - - - - - - - - - Throttler - - - - - - +dynamic call() - - - - - - - - - - - - - OptimisticUpdate - - - - - - +applyOptimistic: void Function() - +apply: dynamic Function() - +rollback: void Function() - +onUpdate: void Function()? - +onError: void Function(Object, StackTrace?)? - +rethrowErrors: bool - +runOptimistically: bool - +completeFutureOptimistically: bool - - - - - - +dynamic execute() - -void _runUpdateHandlerIfAny() - - - - - - - - - - - void Function() - - - - - - - - - - - dynamic Function() - - - - - - - - - - - void Function()? - - - - - - - - - - - void Function(Object, StackTrace?)? - - - - - - - - - - - - - CountWhereValidator - - - - - - +predicate: bool Function(T?) - +minCount: int? - +maxCount: int? - <static>+kValidationMessageMinCount: String - <static>+kValidationMessageMaxCount: String - - - - - - +Map<String, dynamic>? validate() - - - - - - - - - - - bool Function(T?) - - - - - - - - - - - Validator - - - - - - - - - - - - Patterns - - - - - - <static>+timeFormatString: String - <static>+emailFormatString: String - <static>+url: String - - - - - - - - - - - - ModelAction - - - - - - +type: T - +label: String - +icon: IconData? - +onExecute: Function - +isAvailable: bool - +isDestructive: bool - - - - - - - - - - - IconData - - - - - - - - - - - - IModelActionProvider - - - - - - +List<ModelAction<dynamic>> availableActions() - - - - - - - - - - - - IListActionProvider - - - - - - +void onSelectItem() - +void onNewItem() - - - - - - - - - - - - ModelActionType - - - - - - +index: int - <static>+values: List<ModelActionType> - <static>+edit: ModelActionType - <static>+delete: ModelActionType - <static>+remove: ModelActionType - <static>+duplicate: ModelActionType - <static>+clipboard: ModelActionType - <static>+primary: ModelActionType - - - - - - - - - - - Enum - - - - - - - - - - - - IProviderArgsResolver - - - - - - +R provide() - - - - - - - - - - - - - Tuple - - - - - - +first: T1 - +second: T2 - +props: List<Object?> - - - - - - +Map<String, dynamic> toJson() - <static>+Tuple<dynamic, dynamic> fromJson() - +Tuple<T1, T2> copy() - +Tuple<T1, T2> copyWith() - - - - - - - - - - - Equatable - - - - - - - - - - - - - SuppressedBehaviorSubject - - - - - - +subject: BehaviorSubject<T> - +didSuppressInitialEvent: bool - -_controller: StreamController<T> - - - - - - -StreamController<T> _buildDerivedController() - +dynamic close() - - - - - - - - - - - BehaviorSubject - - - - - - - - - - - StreamController - - - - - - - - - - - - - JsonFileLoader - - - - - - +jsonAssetsPath: String - - - - - - +dynamic loadJson() - +dynamic parseJsonMapFromAssets() - +dynamic parseJsonListFromAssets() - - - - - - - - - - - - - CombinedStreamNotifier - - - - - - -_subscriptions: List<StreamSubscription<dynamic>> - - - - - - +void dispose() - - - - - - - - - - - ChangeNotifier - - - - - - - - - - - - Time - - - - - - <static>+dynamic fromTimeOfDay() - +Map<String, dynamic> toJson() - <static>+Time fromJson() - - - - - - - - - - - TimeOfDay - - - - - - - - - - - - TimeValueAccessor - - - - - - +String modelToViewValue() - +Time? viewToModelValue() - -String _addLeadingZeroIfNeeded() - - - - - - - - - - - ControlValueAccessor - - - - - - - - - - - - - NumericalRangeFormatter - - - - - - +min: int? - +max: int? - - - - - - +TextEditingValue formatEditUpdate() - - - - - - - - - - - TextInputFormatter - - - - - - - - - - - - StudySequenceFormatter - - - - - - +TextEditingValue formatEditUpdate() - - - - - - - - - \ No newline at end of file diff --git a/docs/uml/flutter_common/lib/src/uml.svg b/docs/uml/flutter_common/lib/src/uml.svg deleted file mode 100644 index df7946745..000000000 --- a/docs/uml/flutter_common/lib/src/uml.svg +++ /dev/null @@ -1,299 +0,0 @@ - - [AppLanguage - | - <static>+keyLanguageCode: String; - +supportedLocales: List<Locale>; - -_appLocale: Locale?; - +appLocal: Locale? - | - +dynamic fetchLocale(); - +dynamic changeLanguage() - ] - - [AppLanguage]o-[Locale] - [ChangeNotifier]<:-[AppLanguage] - - [RetryFutureBuilder - | - +tryFunction: dynamic Function(); - +successBuilder: Widget Function(BuildContext, T?); - +initialData: T?; - +loadingBuilder: Widget Function(BuildContext)?; - +errorWidgetBuilder: Widget Function(BuildContext, dynamic, void Function())?; - +extraWidgets: List<Widget> - | - <static>+RetryFutureBuilderState<dynamic>? of() - ] - - [RetryFutureBuilder]o-[dynamic Function()] - [RetryFutureBuilder]o-[Widget Function(BuildContext, T?)] - [RetryFutureBuilder]o-[Widget Function(BuildContext)?] - [RetryFutureBuilder]o-[Widget Function(BuildContext, dynamic, void Function())?] - - [SupabaseStorage - | - +dynamic initialize(); - +dynamic hasAccessToken(); - +dynamic accessToken(); - +dynamic persistSession(); - +dynamic removePersistedSession() - ] - - [<abstract>LocalStorage]<:-[SupabaseStorage] - - [SecureStorage - | - <static>+storage: FlutterSecureStorage - | - <static>+dynamic containsKey(); - <static>+dynamic write(); - <static>+dynamic read(); - <static>+dynamic readBool(); - <static>+dynamic delete(); - <static>+dynamic deleteAll(); - <static>+dynamic migrateSharedPreferencesToSecureStorage() - ] - - [SecureStorage]o-[FlutterSecureStorage] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AppLanguage - - - - - - <static>+keyLanguageCode: String - +supportedLocales: List<Locale> - -_appLocale: Locale? - +appLocal: Locale? - - - - - - +dynamic fetchLocale() - +dynamic changeLanguage() - - - - - - - - - - - Locale - - - - - - - - - - - ChangeNotifier - - - - - - - - - - - - - RetryFutureBuilder - - - - - - +tryFunction: dynamic Function() - +successBuilder: Widget Function(BuildContext, T?) - +initialData: T? - +loadingBuilder: Widget Function(BuildContext)? - +errorWidgetBuilder: Widget Function(BuildContext, dynamic, void Function())? - +extraWidgets: List<Widget> - - - - - - <static>+RetryFutureBuilderState<dynamic>? of() - - - - - - - - - - - dynamic Function() - - - - - - - - - - - Widget Function(BuildContext, T?) - - - - - - - - - - - Widget Function(BuildContext)? - - - - - - - - - - - Widget Function(BuildContext, dynamic, void Function())? - - - - - - - - - - - - SupabaseStorage - - - - - - +dynamic initialize() - +dynamic hasAccessToken() - +dynamic accessToken() - +dynamic persistSession() - +dynamic removePersistedSession() - - - - - - - - - - - LocalStorage - - - - - - - - - - - - - SecureStorage - - - - - - <static>+storage: FlutterSecureStorage - - - - - - <static>+dynamic containsKey() - <static>+dynamic write() - <static>+dynamic read() - <static>+dynamic readBool() - <static>+dynamic delete() - <static>+dynamic deleteAll() - <static>+dynamic migrateSharedPreferencesToSecureStorage() - - - - - - - - - - - FlutterSecureStorage - - - - - - - - - \ No newline at end of file diff --git a/docs/uml/flutter_common/lib/src/utils/uml.svg b/docs/uml/flutter_common/lib/src/utils/uml.svg deleted file mode 100644 index df7946745..000000000 --- a/docs/uml/flutter_common/lib/src/utils/uml.svg +++ /dev/null @@ -1,299 +0,0 @@ - - [AppLanguage - | - <static>+keyLanguageCode: String; - +supportedLocales: List<Locale>; - -_appLocale: Locale?; - +appLocal: Locale? - | - +dynamic fetchLocale(); - +dynamic changeLanguage() - ] - - [AppLanguage]o-[Locale] - [ChangeNotifier]<:-[AppLanguage] - - [RetryFutureBuilder - | - +tryFunction: dynamic Function(); - +successBuilder: Widget Function(BuildContext, T?); - +initialData: T?; - +loadingBuilder: Widget Function(BuildContext)?; - +errorWidgetBuilder: Widget Function(BuildContext, dynamic, void Function())?; - +extraWidgets: List<Widget> - | - <static>+RetryFutureBuilderState<dynamic>? of() - ] - - [RetryFutureBuilder]o-[dynamic Function()] - [RetryFutureBuilder]o-[Widget Function(BuildContext, T?)] - [RetryFutureBuilder]o-[Widget Function(BuildContext)?] - [RetryFutureBuilder]o-[Widget Function(BuildContext, dynamic, void Function())?] - - [SupabaseStorage - | - +dynamic initialize(); - +dynamic hasAccessToken(); - +dynamic accessToken(); - +dynamic persistSession(); - +dynamic removePersistedSession() - ] - - [<abstract>LocalStorage]<:-[SupabaseStorage] - - [SecureStorage - | - <static>+storage: FlutterSecureStorage - | - <static>+dynamic containsKey(); - <static>+dynamic write(); - <static>+dynamic read(); - <static>+dynamic readBool(); - <static>+dynamic delete(); - <static>+dynamic deleteAll(); - <static>+dynamic migrateSharedPreferencesToSecureStorage() - ] - - [SecureStorage]o-[FlutterSecureStorage] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AppLanguage - - - - - - <static>+keyLanguageCode: String - +supportedLocales: List<Locale> - -_appLocale: Locale? - +appLocal: Locale? - - - - - - +dynamic fetchLocale() - +dynamic changeLanguage() - - - - - - - - - - - Locale - - - - - - - - - - - ChangeNotifier - - - - - - - - - - - - - RetryFutureBuilder - - - - - - +tryFunction: dynamic Function() - +successBuilder: Widget Function(BuildContext, T?) - +initialData: T? - +loadingBuilder: Widget Function(BuildContext)? - +errorWidgetBuilder: Widget Function(BuildContext, dynamic, void Function())? - +extraWidgets: List<Widget> - - - - - - <static>+RetryFutureBuilderState<dynamic>? of() - - - - - - - - - - - dynamic Function() - - - - - - - - - - - Widget Function(BuildContext, T?) - - - - - - - - - - - Widget Function(BuildContext)? - - - - - - - - - - - Widget Function(BuildContext, dynamic, void Function())? - - - - - - - - - - - - SupabaseStorage - - - - - - +dynamic initialize() - +dynamic hasAccessToken() - +dynamic accessToken() - +dynamic persistSession() - +dynamic removePersistedSession() - - - - - - - - - - - LocalStorage - - - - - - - - - - - - - SecureStorage - - - - - - <static>+storage: FlutterSecureStorage - - - - - - <static>+dynamic containsKey() - <static>+dynamic write() - <static>+dynamic read() - <static>+dynamic readBool() - <static>+dynamic delete() - <static>+dynamic deleteAll() - <static>+dynamic migrateSharedPreferencesToSecureStorage() - - - - - - - - - - - FlutterSecureStorage - - - - - - - - - \ No newline at end of file diff --git a/docs/uml/flutter_common/lib/uml.svg b/docs/uml/flutter_common/lib/uml.svg deleted file mode 100644 index df7946745..000000000 --- a/docs/uml/flutter_common/lib/uml.svg +++ /dev/null @@ -1,299 +0,0 @@ - - [AppLanguage - | - <static>+keyLanguageCode: String; - +supportedLocales: List<Locale>; - -_appLocale: Locale?; - +appLocal: Locale? - | - +dynamic fetchLocale(); - +dynamic changeLanguage() - ] - - [AppLanguage]o-[Locale] - [ChangeNotifier]<:-[AppLanguage] - - [RetryFutureBuilder - | - +tryFunction: dynamic Function(); - +successBuilder: Widget Function(BuildContext, T?); - +initialData: T?; - +loadingBuilder: Widget Function(BuildContext)?; - +errorWidgetBuilder: Widget Function(BuildContext, dynamic, void Function())?; - +extraWidgets: List<Widget> - | - <static>+RetryFutureBuilderState<dynamic>? of() - ] - - [RetryFutureBuilder]o-[dynamic Function()] - [RetryFutureBuilder]o-[Widget Function(BuildContext, T?)] - [RetryFutureBuilder]o-[Widget Function(BuildContext)?] - [RetryFutureBuilder]o-[Widget Function(BuildContext, dynamic, void Function())?] - - [SupabaseStorage - | - +dynamic initialize(); - +dynamic hasAccessToken(); - +dynamic accessToken(); - +dynamic persistSession(); - +dynamic removePersistedSession() - ] - - [<abstract>LocalStorage]<:-[SupabaseStorage] - - [SecureStorage - | - <static>+storage: FlutterSecureStorage - | - <static>+dynamic containsKey(); - <static>+dynamic write(); - <static>+dynamic read(); - <static>+dynamic readBool(); - <static>+dynamic delete(); - <static>+dynamic deleteAll(); - <static>+dynamic migrateSharedPreferencesToSecureStorage() - ] - - [SecureStorage]o-[FlutterSecureStorage] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AppLanguage - - - - - - <static>+keyLanguageCode: String - +supportedLocales: List<Locale> - -_appLocale: Locale? - +appLocal: Locale? - - - - - - +dynamic fetchLocale() - +dynamic changeLanguage() - - - - - - - - - - - Locale - - - - - - - - - - - ChangeNotifier - - - - - - - - - - - - - RetryFutureBuilder - - - - - - +tryFunction: dynamic Function() - +successBuilder: Widget Function(BuildContext, T?) - +initialData: T? - +loadingBuilder: Widget Function(BuildContext)? - +errorWidgetBuilder: Widget Function(BuildContext, dynamic, void Function())? - +extraWidgets: List<Widget> - - - - - - <static>+RetryFutureBuilderState<dynamic>? of() - - - - - - - - - - - dynamic Function() - - - - - - - - - - - Widget Function(BuildContext, T?) - - - - - - - - - - - Widget Function(BuildContext)? - - - - - - - - - - - Widget Function(BuildContext, dynamic, void Function())? - - - - - - - - - - - - SupabaseStorage - - - - - - +dynamic initialize() - +dynamic hasAccessToken() - +dynamic accessToken() - +dynamic persistSession() - +dynamic removePersistedSession() - - - - - - - - - - - LocalStorage - - - - - - - - - - - - - SecureStorage - - - - - - <static>+storage: FlutterSecureStorage - - - - - - <static>+dynamic containsKey() - <static>+dynamic write() - <static>+dynamic read() - <static>+dynamic readBool() - <static>+dynamic delete() - <static>+dynamic deleteAll() - <static>+dynamic migrateSharedPreferencesToSecureStorage() - - - - - - - - - - - FlutterSecureStorage - - - - - - - - - \ No newline at end of file