From de6bbd436e23b0e9772d49aadf5cc67a2fc0cc60 Mon Sep 17 00:00:00 2001 From: Yaroslav Halchenko Date: Thu, 16 May 2024 04:07:24 -0400 Subject: [PATCH] Add codespell support (config, workflow to detect/not fix) and make it fix few typos (#7798) * Add github action to codespell master on push and PRs * Add rudimentary codespell config * Tunes up to codespell config from code review Co-authored-by: Florian M * Run codespell CI only on manual workflow_dispatch Co-authored-by: Florian M * [DATALAD RUNCMD] Do interactive fixing of leftover ambigous typos === Do not change lines below === { "chain": [], "cmd": "codespell -w -i 3 -C 2", "exit": 0, "extra_inputs": [], "inputs": [], "outputs": [], "pwd": "." } ^^^ Do not change lines above ^^^ * [DATALAD RUNCMD] run codespell throughout fixing typos automagically === Do not change lines below === { "chain": [], "cmd": "codespell -w", "exit": 0, "extra_inputs": [], "inputs": [], "outputs": [], "pwd": "." } ^^^ Do not change lines above ^^^ --------- Co-authored-by: Florian M --- .codespellrc | 7 ++++++ .github/workflows/codespell.yml | 22 +++++++++++++++++++ CHANGELOG.released.md | 14 ++++++------ CHANGELOG.unreleased.md | 2 +- MIGRATIONS.released.md | 6 ++--- .../WKRemoteTracingStoreController.scala | 2 +- app/mail/Mailer.scala | 2 +- app/models/annotation/AnnotationService.scala | 2 +- app/models/job/JobService.scala | 2 +- app/models/task/TaskCreationParameters.scala | 2 +- .../mail/jobFailedUploadConvert.scala.html | 2 +- .../mail/jobSuccessfulSegmentation.scala.html | 2 +- .../mail/notifyAdminTimeLimit.scala.html | 2 +- conf/webknossos.latest.routes | 2 +- conf/webknossos.versioned.routes | 2 +- docs/data_formats.md | 2 +- docs/faq.md | 2 +- docs/sharing.md | 2 +- docs/tasks.md | 2 +- docs/tracing_ui.md | 6 ++--- docs/volume_annotation.md | 4 ++-- docs/zarr.md | 4 ++-- .../javascripts/admin/job/job_list_view.tsx | 2 +- .../statistic/available_tasks_report_view.tsx | 2 +- .../admin/task/task_create_bulk_view.tsx | 4 ++-- .../admin/task/task_search_form.tsx | 2 +- .../javascripts/admin/user/user_list_view.tsx | 4 ++-- .../dataset/dataset_settings_sharing_tab.tsx | 2 +- .../dataset/dataset_settings_view.tsx | 2 +- .../libs/async/debounced_abortable_saga.ts | 2 +- frontend/javascripts/libs/input.ts | 2 +- frontend/javascripts/libs/mjs.ts | 4 ++-- frontend/javascripts/libs/toast.tsx | 2 +- frontend/javascripts/libs/utils.ts | 2 +- frontend/javascripts/main.tsx | 2 +- frontend/javascripts/messages.tsx | 2 +- frontend/javascripts/navbar.tsx | 2 +- frontend/javascripts/oxalis/api/api_latest.ts | 2 +- .../controller/segment_mesh_controller.ts | 2 +- .../oxalis/controller/td_controller.tsx | 2 +- .../javascripts/oxalis/geometries/skeleton.ts | 2 +- .../prefetch_strategy_plane.ts | 6 ++--- .../model/bucket_data_handling/pushqueue.ts | 2 +- .../texture_bucket_manager.ts | 2 +- .../oxalis/model/sagas/annotation_saga.tsx | 2 +- .../model/sagas/load_histogram_data_saga.ts | 2 +- .../oxalis/model/sagas/mesh_saga.ts | 2 +- .../oxalis/model/sagas/min_cut_saga.ts | 2 +- .../oxalis/shaders/texture_access.glsl.ts | 2 +- .../oxalis/view/action-bar/toolbar_view.tsx | 4 ++-- .../javascripts/oxalis/view/context_menu.tsx | 2 +- .../controls_and_rendering_settings_tab.tsx | 2 +- .../oxalis/view/merger_mode_modal_view.tsx | 2 +- .../oxalis/view/nml_upload_zone_container.tsx | 2 +- .../javascripts/oxalis/view/plane_view.ts | 2 +- .../abstract_tree_renderer.ts | 4 ++-- .../connectome_tab/connectome_view.tsx | 2 +- frontend/javascripts/oxalis/workers/readme.md | 4 ++-- .../reducers/skeletontracing_reducer.spec.ts | 4 ++-- frontend/stylesheets/antd_overwrites.less | 2 +- .../SkeletonUpdateActionsUnitTestSuite.scala | 2 +- test/backend/SqlEscapingTestSuite.scala | 2 +- .../migrate-editable-mappings.py | 2 +- tools/obj_models/obj_parser.py | 12 +++++----- .../util/cache/LRUConcurrentCache.scala | 2 +- .../com/scalableminds/util/io/PathUtils.scala | 2 +- .../util/mvc/ExtendedController.scala | 2 +- .../models/datasource/DataLayerMapping.scala | 2 +- .../datastoreZarrDatasourceDir.scala.html | 2 +- webknossos-datastore/deployment/README.md | 2 +- 70 files changed, 123 insertions(+), 94 deletions(-) create mode 100644 .codespellrc create mode 100644 .github/workflows/codespell.yml diff --git a/.codespellrc b/.codespellrc new file mode 100644 index 00000000000..01b4918f63e --- /dev/null +++ b/.codespellrc @@ -0,0 +1,7 @@ +[codespell] +# Ref: https://github.com/codespell-project/codespell#using-a-config-file +skip = *.svg,*.sublime-workspace,*.lock,.codespellrc,./util/target/,./binaryData,./node_modules,./pg,./project/target,./target,./webknossos-datastore/target,./webknossos-jni/target,./webknossos-tracingstore/target,./util/target,./coverage,./public-test,./tools/proxy/node_modules,./docs/publications.md +# some names and camelCased variables etc +ignore-regex = \b(Manuel|[a-z]+[A-Z][a-zA-Z]*|H Mattern|Nat Commun|couldn't)\b +# Full of unfortunate choices for short names +ignore-words-list = lod,bais,iis,nd,ue,inbetween diff --git a/.github/workflows/codespell.yml b/.github/workflows/codespell.yml new file mode 100644 index 00000000000..eda924f89fc --- /dev/null +++ b/.github/workflows/codespell.yml @@ -0,0 +1,22 @@ +# Codespell configuration is within .codespellrc +--- +name: Codespell + +on: + workflow_dispatch: {} + +permissions: + contents: read + +jobs: + codespell: + name: Check for spelling errors + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Annotate locations with typos + uses: codespell-project/codespell-problem-matcher@v1 + - name: Codespell + uses: codespell-project/actions-codespell@v2 diff --git a/CHANGELOG.released.md b/CHANGELOG.released.md index 82c2436091d..07504462608 100644 --- a/CHANGELOG.released.md +++ b/CHANGELOG.released.md @@ -16,7 +16,7 @@ For upgrade instructions, please check the [migration guide](MIGRATIONS.released - Creating and deleting edges is now possible with ctrl+(alt/shift)+leftclick in orthogonal, flight and oblique mode. Also, the flight and oblique modes allow selecting nodes with leftclick, creating new trees with 'c' and deleting the active node with 'del'. [#7678](https://github.com/scalableminds/webknossos/pull/7678) ### Added -- Added Typescript defintions for @scalableminds/prop-types package. [#7744](https://github.com/scalableminds/webknossos/pull/7744) +- Added Typescript definitions for @scalableminds/prop-types package. [#7744](https://github.com/scalableminds/webknossos/pull/7744) - Added Typescript definitions for react-remarkable package. [#7748](https://github.com/scalableminds/webknossos/pull/7748) ### Changed @@ -470,7 +470,7 @@ For upgrade instructions, please check the [migration guide](MIGRATIONS.released ### Changed - Moved the view mode selection in the toolbar next to the position field. [#6949](https://github.com/scalableminds/webknossos/pull/6949) -- Redesigned welcome toast for new, annonymous users with new branding. [#6961](https://github.com/scalableminds/webknossos/pull/6961) +- Redesigned welcome toast for new, anonymous users with new branding. [#6961](https://github.com/scalableminds/webknossos/pull/6961) - When saving annotations, the URL of the webknossos instance is stored in the resulting NML file. [#6964](https://github.com/scalableminds/webknossos/pull/6964) ### Fixed @@ -955,14 +955,14 @@ For upgrade instructions, please check the [migration guide](MIGRATIONS.released ### Highlights - The visible meshes are now included in the link copied from the "Share" modal or the "Share" button next to the dataset position. They are automatically loaded for users that open the shared link. [#5993](https://github.com/scalableminds/webknossos/pull/5993) -- Added a new "Connectome Tab" which can be used to explore connectomes by visualizing neurites and their synaptic connections. Connectome files need to be placed in a `connectomes` folder inside of the respective segmentation layer. It is possible to craft links that automatically load specific agglomerates and their synapses when openend. For more information refer to https://docs.webknossos.org/webknossos/sharing.html#sharing-link-format. [#5894](https://github.com/scalableminds/webknossos/pull/5894) +- Added a new "Connectome Tab" which can be used to explore connectomes by visualizing neurites and their synaptic connections. Connectome files need to be placed in a `connectomes` folder inside of the respective segmentation layer. It is possible to craft links that automatically load specific agglomerates and their synapses when opened. For more information refer to https://docs.webknossos.org/webknossos/sharing.html#sharing-link-format. [#5894](https://github.com/scalableminds/webknossos/pull/5894) ### Added - Added a context-menu option when right-clicking on skeleton trees to hide/show all other trees but the selected one. Great for inspecting a single tree in isolation. Identical to keyboard shortcut "2". [#6102](https://github.com/scalableminds/webknossos/pull/6102) - Added support for reading Zarr image data. [#6019](https://github.com/scalableminds/webknossos/pull/6019) ### Changed -- The maximum brush size now depends on the available magnifications. Consequentially, one can use a larger brush size when the magnifications of a volume layer are restricted. [#6066](https://github.com/scalableminds/webknossos/pull/6066) +- The maximum brush size now depends on the available magnifications. Consequently, one can use a larger brush size when the magnifications of a volume layer are restricted. [#6066](https://github.com/scalableminds/webknossos/pull/6066) - Improved stability and speed of volume annotations when annotating large areas. [#6055](https://github.com/scalableminds/webknossos/pull/6055) - In dataset upload, linking layers of existing datasets is no longer restricted to public datasets. [#6097](https://github.com/scalableminds/webknossos/pull/6097) - Deactivating users with currently active tasks is no longer allowed. [#6099](https://github.com/scalableminds/webknossos/pull/6099) @@ -978,7 +978,7 @@ For upgrade instructions, please check the [migration guide](MIGRATIONS.released ### Removed - The previously disabled Import Skeleton Button has been removed. The functionality is available via the context menu for datasets with active ID mappings. [#6073](https://github.com/scalableminds/webknossos/pull/6073) -- Removes experimental (and hidden) automatic brushing feature. Consequentially, the corresponding feature flag `autoBrushReadyDatasets` is not used, anymore. [#6107](https://github.com/scalableminds/webknossos/pull/6107) +- Removes experimental (and hidden) automatic brushing feature. Consequently, the corresponding feature flag `autoBrushReadyDatasets` is not used, anymore. [#6107](https://github.com/scalableminds/webknossos/pull/6107) ### Breaking Changes @@ -1457,7 +1457,7 @@ For upgrade instructions, please check the [migration guide](MIGRATIONS.released - In the tree tab, all groups but the root group are now collapsed instead of expanded when opening a tracing. [#4897](https://github.com/scalableminds/webknossos/pull/4897) - New volume/hybrid annotations are now automatically multi-resolution volume annotations. [#4755](https://github.com/scalableminds/webknossos/pull/4755) - Re-enabled continuous brush strokes. This feature ensures that even fast brush strokes are continuous and don't have "holes". [#4924](https://github.com/scalableminds/webknossos/pull/4924) -- The Historgram now has a correct linear scale. [#4926](https://github.com/scalableminds/webknossos/pull/4926) +- The Histogram now has a correct linear scale. [#4926](https://github.com/scalableminds/webknossos/pull/4926) ### Fixed - Fixed the disappearing of dataset settings after switching between view mode and annotation mode. [#4845](https://github.com/scalableminds/webknossos/pull/4845) @@ -2060,7 +2060,7 @@ Also the data viewing and tracing workflow is smoothed further: - Do not show publication view if no publications are specified. [#3778](https://github.com/scalableminds/webknossos/pull/3778) ### Fixed -- Fixed an error that occured when changing the URL hash. [#3746](https://github.com/scalableminds/webknossos/pull/3746) +- Fixed an error that occurred when changing the URL hash. [#3746](https://github.com/scalableminds/webknossos/pull/3746) - Fixed a bug in the timeline chart rendering. The start and end time of the timeline chart now match the selected time range. [#3772](https://github.com/scalableminds/webknossos/pull/3772) - The modals for a new task description and recommended task settings are no longer shown in read-only tracings. [#3724](https://github.com/scalableminds/webknossos/pull/3724) - Fixed a rendering bug when opening a task that only allowed flight/oblique mode tracing. [#3783](https://github.com/scalableminds/webknossos/pull/3783) diff --git a/CHANGELOG.unreleased.md b/CHANGELOG.unreleased.md index ded5eb3c51b..2b7c0be90bf 100644 --- a/CHANGELOG.unreleased.md +++ b/CHANGELOG.unreleased.md @@ -12,7 +12,7 @@ For upgrade instructions, please check the [migration guide](MIGRATIONS.released ### Added - Within the proofreading tool, the user can now interact with the super voxels of a mesh in the 3D viewport. For example, this allows to merge or cut super voxels from another. As before, the proofreading tool requires an agglomerate file. [#7742](https://github.com/scalableminds/webknossos/pull/7742) -- Minor improvements for the timetracking overview (faster data loding, styling). [#7789](https://github.com/scalableminds/webknossos/pull/7789) +- Minor improvements for the timetracking overview (faster data loading, styling). [#7789](https://github.com/scalableminds/webknossos/pull/7789) - Updated several backend dependencies for optimized stability and performance. [#7782](https://github.com/scalableminds/webknossos/pull/7782) - Voxelytics workflows can be searched by name and hash. [#7790](https://github.com/scalableminds/webknossos/pull/7790) diff --git a/MIGRATIONS.released.md b/MIGRATIONS.released.md index 458ecd4e8fd..775a56d9137 100644 --- a/MIGRATIONS.released.md +++ b/MIGRATIONS.released.md @@ -363,7 +363,7 @@ None. ## [21.11.0](https://github.com/scalableminds/webknossos/releases/tag/21.11.0) - 2021-11-30 - The docker files now place the webKnossos installation under `/webknossos` instead of `/srv/webknossos`. All mounts, most importantly `/srv/webknossos/binaryData`, need to be changed accordingly. -- The entrypoint of the docker files have changed. Therefore, any existing `docker-compose.yml` setups need to be adapted. In most cases, only the `entrypoint: bin/webknossos` lines need to be removed (if existant). +- The entrypoint of the docker files have changed. Therefore, any existing `docker-compose.yml` setups need to be adapted. In most cases, only the `entrypoint: bin/webknossos` lines need to be removed (if existent). - To receive Slack notifications about slow bucket requests, overwrite `slackNotifications.uri` in the webknossos-datastore config. - If your setup includes a webknossos-worker, it needs to be updated to the latest version (PR https://github.com/scalableminds/webknossos-worker/pull/70) @@ -618,7 +618,7 @@ No migrations necessary. ## [19.03.0](https://github.com/scalableminds/webknossos/releases/tag/19.03.0) - 2019-03-04 -- The config paramters `application.authentication.enableDevAutoVerify` and `application.authentication.enableDevAutoAdmin` have been removed. To enable automatic verification for user signup, set the organization’s new `enableAutoVerify` field to `true` in the database. +- The config parameters `application.authentication.enableDevAutoVerify` and `application.authentication.enableDevAutoAdmin` have been removed. To enable automatic verification for user signup, set the organization’s new `enableAutoVerify` field to `true` in the database. ### Postgres Evolutions: - [038-more-voxel-types.sql](conf/evolutions/038-more-voxel-types.sql) @@ -655,7 +655,7 @@ No migrations necessary. ## [18.11.0](https://github.com/scalableminds/webknossos/releases/tag/18.11.0) - 2018-10-29 - Some config keys have changed, if you overwrite them in your setup, please adapt: the `oxalis` prefix is renamed to `webKnossos` so the new keys are `webKnossos.user.time.tracingPauseInSeconds`, `webKnossos.tasks.maxOpenPerUser`, `webKnossos.newOrganizationMailingList` as well as `datastore.webKnossos.uri`, `datastore.webKnossos.secured`, `datastore.webKnossos.pingIntervalMinutes` for the data store. -- There is now a separate module for the tracingstore, the datastore is no longer responsible for saving tracings. This module can run as a standalone application, or as a module of webKnossos locally. It is recommended that you choose the option that was previously also in place for datastores. In case of a standalone datastore, the local one needs to be disabled in application.conf: `tracingstore.enabled = false` and `play.modules.disabled += "com.scalableminds.braingames.datastore.TracingStoreModule` – and in either case, the adress of the tracingstore (localhost or remote) needs to be inserted in the db in `webknossos.tracingStores`. +- There is now a separate module for the tracingstore, the datastore is no longer responsible for saving tracings. This module can run as a standalone application, or as a module of webKnossos locally. It is recommended that you choose the option that was previously also in place for datastores. In case of a standalone datastore, the local one needs to be disabled in application.conf: `tracingstore.enabled = false` and `play.modules.disabled += "com.scalableminds.braingames.datastore.TracingStoreModule` – and in either case, the address of the tracingstore (localhost or remote) needs to be inserted in the db in `webknossos.tracingStores`. - The FossilDB version has changed from `0.1.10` to `0.1.14`. - The FossilDB needs to be run with an additional column family `volumeUpdates`. - If your setup overwrites the config key `play.http.router` to disable the local datastore, change it to `"noDS.Routes"` (or `"noDS.noTS.Routes"` to also disable the local tracingstore). diff --git a/app/controllers/WKRemoteTracingStoreController.scala b/app/controllers/WKRemoteTracingStoreController.scala index b0e97c2f876..6d4ac54be1a 100644 --- a/app/controllers/WKRemoteTracingStoreController.scala +++ b/app/controllers/WKRemoteTracingStoreController.scala @@ -82,7 +82,7 @@ class WKRemoteTracingStoreController @Inject()(tracingStoreService: TracingStore } private def ensureAnnotationNotFinished(annotation: Annotation) = - if (annotation.state == Finished) Fox.failure("annotation already finshed") + if (annotation.state == Finished) Fox.failure("annotation already finished") else Fox.successful(()) def dataSourceForTracing(name: String, key: String, tracingId: String): Action[AnyContent] = diff --git a/app/mail/Mailer.scala b/app/mail/Mailer.scala index db986cbe360..1c64161a94d 100644 --- a/app/mail/Mailer.scala +++ b/app/mail/Mailer.scala @@ -65,7 +65,7 @@ class Mailer(conf: MailerConfig) extends Actor with LazyLogging { multiPartMail.send () } else { - logger.info("Mail was not sent as no smpt host is configured.") + logger.info("Mail was not sent as no smtp host is configured.") } } diff --git a/app/models/annotation/AnnotationService.scala b/app/models/annotation/AnnotationService.scala index b20357aa2d1..e10a2a855df 100755 --- a/app/models/annotation/AnnotationService.scala +++ b/app/models/annotation/AnnotationService.scala @@ -469,7 +469,7 @@ class AnnotationService @Inject()( executeFinish } else if (annotation.state == Finished) { logger.info( - s"Silently not finishing annotation ${annotation._id.toString} for it is aready finished. Access context: ${ctx.toStringAnonymous}") + s"Silently not finishing annotation ${annotation._id.toString} for it is already finished. Access context: ${ctx.toStringAnonymous}") Fox.successful("annotation.finished") } else { logger.info( diff --git a/app/models/job/JobService.scala b/app/models/job/JobService.scala index 876938b21c1..4bd2aa1bec2 100644 --- a/app/models/job/JobService.scala +++ b/app/models/job/JobService.scala @@ -126,7 +126,7 @@ class JobService @Inject()(wkConf: WkConf, Some( genericEmailTemplate( "Dataset Animation", - "Your animation of a WEBKNOSSOS dataset has been sucessfully created and is ready for download." + "Your animation of a WEBKNOSSOS dataset has been successfully created and is ready for download." )) case _ => None }) ?~> "job.emailNotifactionsDisabled" diff --git a/app/models/task/TaskCreationParameters.scala b/app/models/task/TaskCreationParameters.scala index df03381d245..e9594cecb2b 100644 --- a/app/models/task/TaskCreationParameters.scala +++ b/app/models/task/TaskCreationParameters.scala @@ -32,7 +32,7 @@ object NmlTaskParameters { implicit val nmlTaskParametersFormat: Format[NmlTaskParameters] = Json.format[NmlTaskParameters] } -// baseId is the id of the old Annotation which should be used as base for the new annotation, skeletonId/volumeId are the ids of the dupliated tracings from baseId +// baseId is the id of the old Annotation which should be used as base for the new annotation, skeletonId/volumeId are the ids of the duplicated tracings from baseId case class BaseAnnotation(baseId: String, skeletonId: Option[String] = None, volumeId: Option[String] = None) object BaseAnnotation { diff --git a/app/views/mail/jobFailedUploadConvert.scala.html b/app/views/mail/jobFailedUploadConvert.scala.html index 223845ca9dc..80c3d557e33 100644 --- a/app/views/mail/jobFailedUploadConvert.scala.html +++ b/app/views/mail/jobFailedUploadConvert.scala.html @@ -5,7 +5,7 @@

oops, unfortunately WEBKNOSSOS could not upload and convert your dataset @{datasetName} automatically. - This should not have happend and we are sorry about the inconvenience. Our engineers will investigate and fix the + This should not have happened and we are sorry about the inconvenience. Our engineers will investigate and fix the problem as soon as possible.

diff --git a/app/views/mail/jobSuccessfulSegmentation.scala.html b/app/views/mail/jobSuccessfulSegmentation.scala.html index 3643b1c3176..560d974fa64 100644 --- a/app/views/mail/jobSuccessfulSegmentation.scala.html +++ b/app/views/mail/jobSuccessfulSegmentation.scala.html @@ -5,7 +5,7 @@

Your @{jobTitle} is ready for exploration. - WEBKNOSSOS sucessfully applied our machine learning models on the specific subset of the @{datasetName} dataset. + WEBKNOSSOS successfully applied our machine learning models on the specific subset of the @{datasetName} dataset. Click the button below to open the dataset or find it amongst your other dataset in the WEBKNOSSOS dashboard.

diff --git a/app/views/mail/notifyAdminTimeLimit.scala.html b/app/views/mail/notifyAdminTimeLimit.scala.html index e66f2cb599a..0ac7234fd55 100644 --- a/app/views/mail/notifyAdminTimeLimit.scala.html +++ b/app/views/mail/notifyAdminTimeLimit.scala.html @@ -15,7 +15,7 @@

-

For mor information visit @{uri}/annotations/Task/@{annotationId}

+

For more information visit @{uri}/annotations/Task/@{annotationId}

With best regards,
your WEBKNOSSOS team

} diff --git a/conf/webknossos.latest.routes b/conf/webknossos.latest.routes index c49be446bd4..efc6fce1132 100644 --- a/conf/webknossos.latest.routes +++ b/conf/webknossos.latest.routes @@ -126,7 +126,7 @@ GET /tracingstores/:name/dataSource GET /tracingstores/:name/dataSourceId controllers.WKRemoteTracingStoreController.dataSourceIdForTracing(name: String, key: String, tracingId: String) GET /tracingstores/:name/dataStoreUri/:datasetName controllers.WKRemoteTracingStoreController.dataStoreUriForDataset(name: String, key: String, organizationName: Option[String], datasetName: String) -# User access tokens for datastore authentification +# User access tokens for datastore authentication POST /userToken/generate controllers.UserTokenController.generateTokenForDataStore() # Annotations diff --git a/conf/webknossos.versioned.routes b/conf/webknossos.versioned.routes index 94f0925da78..8dd87039521 100644 --- a/conf/webknossos.versioned.routes +++ b/conf/webknossos.versioned.routes @@ -8,7 +8,7 @@ # new in v5: annotation layers (changed annotation json result, changed createExplorational params) # new in v4: project queried by id, not name (changed route parameters) # new in v3: annotation info and finish request now take timestamp - # new in v2: annotation json constains visibility enum instead of booleans + # new in v2: annotation json contains visibility enum instead of booleans -> /v6/ webknossos.latest.Routes diff --git a/docs/data_formats.md b/docs/data_formats.md index 97325c5346e..259e721367a 100644 --- a/docs/data_formats.md +++ b/docs/data_formats.md @@ -35,7 +35,7 @@ A dataset consists of one or more layers. For microscopy/CT/MRI data, there is usually a `color` layer that holds the raw grayscale image data. Additionally, there may be one or more `segmentation` layers that hold manually or automatically generated volume annotations (one ID per voxel). -A WEBKNOSSOS dataset can contain several `color` and `segmentation` layers which can be rendered individually or overlayed on top of each other. The maximum number of visible layers depends on your GPU hardware - typically 16 layers. +A WEBKNOSSOS dataset can contain several `color` and `segmentation` layers which can be rendered individually or overlaid on top of each other. The maximum number of visible layers depends on your GPU hardware - typically 16 layers. ![Color and Segmentation Layers](images/datalayers.jpeg) diff --git a/docs/faq.md b/docs/faq.md index b297a3aa1e7..94dd6790fdf 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -27,7 +27,7 @@ We have years of experience with automated machine learning analysis and [offer We are also always interested in new collaborations. Get in touch if you want to work together on a project resulting in new classifiers. -WEBKNOSSOS does not allow you to run custom machine learning models on your data yet. As a work-around you can download your annotations from WEBKNOSSOS - either manually or scripted [through our Python libarary](https://docs.webknossos.org/webknossos-py) - and do your ML analysis offline and use WEBKNOSSOS to inspect the results. +WEBKNOSSOS does not allow you to run custom machine learning models on your data yet. As a work-around you can download your annotations from WEBKNOSSOS - either manually or scripted [through our Python library](https://docs.webknossos.org/webknossos-py) - and do your ML analysis offline and use WEBKNOSSOS to inspect the results. ## How can I use my dataset with WEBKNOSSOS? diff --git a/docs/sharing.md b/docs/sharing.md index 2a2173d7dcc..98a1eb3bec3 100644 --- a/docs/sharing.md +++ b/docs/sharing.md @@ -43,7 +43,7 @@ WEBKNOSSOS shares datasets publicly (everyone can view them without any login) o ### Private and Internal Sharing A privately shared dataset can only be accessed by outside users using the correct URL. -A unique authentification token is part of the URL, so anyone with this URL has access permission for viewing the dataset. +A unique authentication token is part of the URL, so anyone with this URL has access permission for viewing the dataset. The dataset is NOT featured publicly anywhere else on your WEBKNOSSOS instance. Private sharing is useful for giving outside users (reviewers, editors, journalists etc.) an opportunity to look at your data without having to publish it publicly. diff --git a/docs/tasks.md b/docs/tasks.md index aab77fa2514..5695983b790 100644 --- a/docs/tasks.md +++ b/docs/tasks.md @@ -2,7 +2,7 @@ WEBKNOSSOS includes a powerful task and project management system to efficiently annotate large datasets. Large annotations can be broken down into smaller workpieces and distributed to members of your organization. ("Divide and conquer approach") -The task systems is designed for automated task distribution to a (large) group of annotators based on several criteria, e.g., expierence, access rights, etc. For fine-grained control, manual task assignments are also possible. +The task systems is designed for automated task distribution to a (large) group of annotators based on several criteria, e.g., experience, access rights, etc. For fine-grained control, manual task assignments are also possible. ## Concepts diff --git a/docs/tracing_ui.md b/docs/tracing_ui.md index 9a4855eedbe..cdd20b717e4 100644 --- a/docs/tracing_ui.md +++ b/docs/tracing_ui.md @@ -32,7 +32,7 @@ The most common buttons are: - `Merge Annotations`: Combines the skeletons and segments from one or more individual annotations into a new annotation. - `Add Script`: Using the [WEBKNOSSOS frontend API](https://webknossos.org/assets/docs/frontend-api/index.html) users can script and automate WEBKNOSSOS interactions. Enter and execute your user scripts (Javascript) from here. Admins can curate a collection of frequently used scripts for your organization and make them available for quick selection to all users. - `Restore Older Version`: Opens a window that shows all previous versions of an annotation. WEBKNOSSOS keeps a complete version history of all your changes to an annotation (separate for skeleton/volume). From this window, any older version can be selected, previewed, and restored. - - `Layout`: The WK annotation user interface can be resized, reordered, and customized to suite your workflows. Use the mouse to drag, move and resize any viewport. You can safe these layout arrangments or restore the default viewport state. + - `Layout`: The WK annotation user interface can be resized, reordered, and customized to suite your workflows. Use the mouse to drag, move and resize any viewport. You can safe these layout arrangements or restore the default viewport state. - `Quick Share`: Create a shareable link to your dataset containing the current position, rotation, zoom level etc. Use this to collaboratively work with colleagues. Read more about [data sharing](./sharing.md). - `AI Analysis`: Starts an AI segmentation of the datasets. Choose between several automated analysis workflows. Read more about [AI analysis](./automated_analysis.md). @@ -54,7 +54,7 @@ The toolbar further features all available navigation and annotation tools for q - `Bounding Box`: Creates and resizes any bounding box. See also the [Bounding Box (BB) panel](./tracing_ui.md#right-hand-side-panel) below. - `Measurement Tool`: Measure distances between structures or the surface areas of segments by placing waypoints with the mouse. -Please see the detailed documentation on [skeleton](./skeleton_annotation.md#tools) and [volume annotation](./volume_annotation.md#tools) tools for a for explaination of all context-sensitve modifiers that are available to some tools. +Please see the detailed documentation on [skeleton](./skeleton_annotation.md#tools) and [volume annotation](./volume_annotation.md#tools) tools for a for explanation of all context-sensitve modifiers that are available to some tools. ![The WEBKNOSSOS navigation and annotation tools](images/tracing_ui_toolbar2.jpeg) @@ -151,7 +151,7 @@ The right-hand side panel includes a number of tabs with specific information, a - `Info`: Contains mostly metainformation about the dataset and annotation. Can be used to name an annotation and provide an additional description, e.g., when sharing with collaborators. - `Skeleton`: Lists all available skeleton annotations and offers further interactions with them. [Read more about skeleton annotations.](./skeleton_annotation.md) - `Comments`: Lists all comments assigned to individual nodes of a skeleton. [Read more about comments and skeleton annotations.](./skeleton_annotation.md#nodes_and_trees) -- `Segments`: List all segments created during a volume annotation. It also provides access to mesh generation for indivual segments or the whole dataset, mesh visualization, mesh downloads, and more. [Read more about 3D meshes.](./mesh_visualization.md) +- `Segments`: List all segments created during a volume annotation. It also provides access to mesh generation for individual segments or the whole dataset, mesh visualization, mesh downloads, and more. [Read more about 3D meshes.](./mesh_visualization.md) - `BBoxes`: List all bounding boxes present in the dataset. Create new bounding boxes or adjust existing ones. This provides an alternative interface for the `Bounding Box` tool. - `AbsTree`: Renders and abstract 2D tree representation of a skeleton annotation when enabled. Might be quite resource intense when working with large skeletons. diff --git a/docs/volume_annotation.md b/docs/volume_annotation.md index 81c3051a2a6..5bdef0303bc 100644 --- a/docs/volume_annotation.md +++ b/docs/volume_annotation.md @@ -93,7 +93,7 @@ Note that it is recommended to proofread the interpolated slices afterward since ### Volume Extrusion Similar to the above interpolation feature, you can also extrude the currently active segment. -This means, that you can label a segment on one slice (e.g., z=10), move a few slices forward (e.g., z=12) and copy the segment to the relevant slices (e.g., z=11, z=12). In contrast to interpolation mode, WEBKNOSSOS will not adapat the shape/boundary of the extruded segments to fit between the source and target segment. Instead, the extruded volume will retain the shape of the source segment and extend that along the z-axis. +This means, that you can label a segment on one slice (e.g., z=10), move a few slices forward (e.g., z=12) and copy the segment to the relevant slices (e.g., z=11, z=12). In contrast to interpolation mode, WEBKNOSSOS will not adapt the shape/boundary of the extruded segments to fit between the source and target segment. Instead, the extruded volume will retain the shape of the source segment and extend that along the z-axis. The extrusion can be triggered by using the extrude button in the toolbar (also available as a dropdown next to the interpolation/extrusion button). ![youtube-video](https://www.youtube.com/embed/GucpEA6Wev8) @@ -112,7 +112,7 @@ For larger areas we recommend working with the [proofreading tool](./proof_readi WEBKNOSSOS provides handy statistics about your labelled segments, such as the volume and bounding box of a segment. There is several ways to access this information: -1. Right-click any segment to bring up the context menu. The segment statics are listed at the end of the context menu. +1. Right-click any segment to bring up the context menu. The segment statistics are listed at the end of the context menu. 2. In the `Segments` tab in the right-hand panel, right-click on any group of segments (or the "Root" group) to bring up a context menu. Select `Show Segment Statistics` to access a summary table with statistics for a whole group of labelled segments. These can be exported as CSV files for further analysis outside of WEBKNOSSOS. In cases, where you only wish to measure a simple distance or surface area, use the [`Measurement Tool`](./tracing_ui.md#the-toolbar) instead. diff --git a/docs/zarr.md b/docs/zarr.md index b5b83e202c1..3b249dc7dd4 100644 --- a/docs/zarr.md +++ b/docs/zarr.md @@ -15,7 +15,7 @@ You can try the OME-Zarr support with the following datasets. Load them in WEBKN - `https://static.webknossos.org/data/l4_sample/` - Source: Dense connectomic reconstruction in layer 4 of the somatosensory cortex. Motta et al. Science 2019. [10.1126/science.aay3134](https://doi.org/10.1126/science.aay3134) -## Zarr Folder Struture +## Zarr Folder Structure WEBKNOSSOS expects the following file structure for OME-Zarr (v0.4) datasets: ``` @@ -117,7 +117,7 @@ if __name__ == "__main__": Read the full example in the WEBKNOSSOS [Python library documentation](https://docs.webknossos.org/webknossos-py/examples/create_dataset_from_images.html). -## Time-Series and N-Dimensional Datsets +## Time-Series and N-Dimensional Datasets WEBKNOSSOS also supports loading n-dimensional datasets, e.g. 4D = time series of 3D microscopy. This feature in currently only supported for Zarr dataset due to their flexbile structure and design for n-dimensional data. diff --git a/frontend/javascripts/admin/job/job_list_view.tsx b/frontend/javascripts/admin/job/job_list_view.tsx index 4e1de8b74b9..681bda02e69 100644 --- a/frontend/javascripts/admin/job/job_list_view.tsx +++ b/frontend/javascripts/admin/job/job_list_view.tsx @@ -29,7 +29,7 @@ import { useInterval } from "libs/react_helpers"; export const TOOLTIP_MESSAGES_AND_ICONS = { UNKNOWN: { tooltip: - "The status information for this job could not be retreived. Please try again in a few minutes, or contact us if you need assistance.", + "The status information for this job could not be retrieved. Please try again in a few minutes, or contact us if you need assistance.", icon: , }, SUCCESS: { diff --git a/frontend/javascripts/admin/statistic/available_tasks_report_view.tsx b/frontend/javascripts/admin/statistic/available_tasks_report_view.tsx index d72faa14396..ca3260bdea8 100644 --- a/frontend/javascripts/admin/statistic/available_tasks_report_view.tsx +++ b/frontend/javascripts/admin/statistic/available_tasks_report_view.tsx @@ -38,7 +38,7 @@ function AvailableTasksReportView() {

Available Task Assignments

- Select a team to show an overview of its users and the number of available task assigments + Select a team to show an overview of its users and the number of available task assignments they qualify for. Task availability for each user is determined by assigned experiences, team memberships, the number of pending task instances, etc. For tasks with multiple instances, each user will get at most one. Note that individual tasks may be listed as diff --git a/frontend/javascripts/admin/task/task_create_bulk_view.tsx b/frontend/javascripts/admin/task/task_create_bulk_view.tsx index b2981b3229a..87624c6ed0a 100644 --- a/frontend/javascripts/admin/task/task_create_bulk_view.tsx +++ b/frontend/javascripts/admin/task/task_create_bulk_view.tsx @@ -211,7 +211,7 @@ function TaskCreateBulkView() { function getInvalidTaskIndices(tasks: NewTask[]): number[] { // returns the index / line number of an invalidly parsed task - // returned indicies start at 1 for easier matching by non-CS people + // returned indices start at 1 for easier matching by non-CS people const isValidTasks = tasks.map(isValidTask); const invalidTasks: number[] = []; return isValidTasks.reduce((result, isValid: boolean, i: number) => { @@ -261,7 +261,7 @@ function TaskCreateBulkView() { Bulk Create Tasks}>

- Specify each new task on a separate line as comma seperated values (CSV) in the + Specify each new task on a separate line as comma separated values (CSV) in the following format:
dataset, taskTypeId, experienceDomain, diff --git a/frontend/javascripts/admin/task/task_search_form.tsx b/frontend/javascripts/admin/task/task_search_form.tsx index 6e7a2e962f5..e5595177f53 100644 --- a/frontend/javascripts/admin/task/task_search_form.tsx +++ b/frontend/javascripts/admin/task/task_search_form.tsx @@ -92,7 +92,7 @@ function TaskSearchForm({ onChange, initialFieldValues, isLoading, onDownloadAll const queryObject: QueryObject = { ids: formValues.taskId ?.trim() - .replace(/,?\s+,?/g, ",") // replace remaining whitespaces with commata + .replace(/,?\s+,?/g, ",") // replace remaining whitespaces with commas .split(",") .filter((taskId: string) => taskId.length > 0), taskType: formValues.taskTypeId, diff --git a/frontend/javascripts/admin/user/user_list_view.tsx b/frontend/javascripts/admin/user/user_list_view.tsx index 491f590e442..839a3341fcd 100644 --- a/frontend/javascripts/admin/user/user_list_view.tsx +++ b/frontend/javascripts/admin/user/user_list_view.tsx @@ -249,7 +249,7 @@ function UserListView({ activeUser, activeOrganization }: Props) { return ( - // @ts-expect-error ts-migrate(2322) FIXME: Type 'FilterValue' is not assignable to type '("tr... Remove this comment to see the full erro(messag) + // @ts-expect-error ts-migrate(2322) FIXME: Type 'FilterValue' is not assignable to type '("tr... Remove this comment to see the full error(message) setActivationFilter(filters.isActive != null ? filters.isActive : []) } onRow={(user) => ({ diff --git a/frontend/javascripts/dashboard/dataset/dataset_settings_sharing_tab.tsx b/frontend/javascripts/dashboard/dataset/dataset_settings_sharing_tab.tsx index a363418e300..16789977474 100644 --- a/frontend/javascripts/dashboard/dataset/dataset_settings_sharing_tab.tsx +++ b/frontend/javascripts/dashboard/dataset/dataset_settings_sharing_tab.tsx @@ -87,7 +87,7 @@ function DatasetSettingsSharingTab({ form, datasetId, dataset, activeUser }: Pro const panelLabel = ( All users with access permission to work with this dataset{" "} - + diff --git a/frontend/javascripts/dashboard/dataset/dataset_settings_view.tsx b/frontend/javascripts/dashboard/dataset/dataset_settings_view.tsx index 4b1c8bc31d2..05fb176b619 100644 --- a/frontend/javascripts/dashboard/dataset/dataset_settings_view.tsx +++ b/frontend/javascripts/dashboard/dataset/dataset_settings_view.tsx @@ -377,7 +377,7 @@ class DatasetSettingsView extends React.PureComponent( debouncedAbortableSagaRunner, debounceThreshold, triggerChannel, - // @ts-expect-error TS thinks fn doesnt match, but it does. + // @ts-expect-error TS thinks fn doesn't match, but it does. fn, context, ); diff --git a/frontend/javascripts/libs/input.ts b/frontend/javascripts/libs/input.ts index b375d1f17c2..f260bbc2687 100644 --- a/frontend/javascripts/libs/input.ts +++ b/frontend/javascripts/libs/input.ts @@ -296,7 +296,7 @@ export class InputKeyboard { this.bindings.push(binding); } - // In order to continously fire callbacks we have to loop + // In order to continuously fire callbacks we have to loop // through all the buttons that a marked as "pressed". buttonLoop() { if (!this.isStarted) { diff --git a/frontend/javascripts/libs/mjs.ts b/frontend/javascripts/libs/mjs.ts index 1402b1f3b4c..fba11891471 100644 --- a/frontend/javascripts/libs/mjs.ts +++ b/frontend/javascripts/libs/mjs.ts @@ -243,7 +243,7 @@ const V2 = { const _tmpVec: Vector3 = [0, 0, 0]; -// @ts-ignore TS claims that the implementation doesnt match the overloading +// @ts-ignore TS claims that the implementation doesn't match the overloading function round(v: Vector3, r?: Vector3 | null | undefined): Vector3; function round(v: Vector3Like, r?: Float32Array | null | undefined) { if (r == null) { @@ -256,7 +256,7 @@ function round(v: Vector3Like, r?: Float32Array | null | undefined) { return r; } -// @ts-ignore TS claims that the implementation doesnt match the overloading +// @ts-ignore TS claims that the implementation doesn't match the overloading function divide3(a: Vector3, k: Vector3, r?: Vector3): Vector3; function divide3(a: Float32Array, k: Float32Array, r?: Float32Array) { if (r == null) r = new Float32Array(3); diff --git a/frontend/javascripts/libs/toast.tsx b/frontend/javascripts/libs/toast.tsx index 993c34bc96b..4afbc5664c1 100644 --- a/frontend/javascripts/libs/toast.tsx +++ b/frontend/javascripts/libs/toast.tsx @@ -154,7 +154,7 @@ const Toast = { await animationFrame(); // ensure tab is active await sleep(splitTimeout); await animationFrame(); - // If the user has switched the tab, show the toast again so that the user doesn't just see the toast dissapear. + // If the user has switched the tab, show the toast again so that the user doesn't just see the toast disappear. await sleep(splitTimeout); if (cancelledTimeout) { // If the toast has been closed early, don't close it again. diff --git a/frontend/javascripts/libs/utils.ts b/frontend/javascripts/libs/utils.ts index 5edc80b86f2..d3625aadd62 100644 --- a/frontend/javascripts/libs/utils.ts +++ b/frontend/javascripts/libs/utils.ts @@ -400,7 +400,7 @@ export function localeCompareBy( export function stringToNumberArray(s: string): Array { // remove leading/trailing whitespaces s = s.trim(); - // replace remaining whitespaces with commata + // replace remaining whitespaces with commas s = s.replace(/,?\s+,?/g, ","); const stringArray = s.split(","); const result = []; diff --git a/frontend/javascripts/main.tsx b/frontend/javascripts/main.tsx index abfbb7a784a..f512be4236b 100644 --- a/frontend/javascripts/main.tsx +++ b/frontend/javascripts/main.tsx @@ -55,7 +55,7 @@ const localStoragePersister = createSyncStoragePersister({ }); async function loadActiveUser() { - // Try to retreive the currently active user if logged in + // Try to retrieve the currently active user if logged in try { const user = await getActiveUser({ showErrorToast: false, diff --git a/frontend/javascripts/messages.tsx b/frontend/javascripts/messages.tsx index e269cf78307..d9b7700b280 100644 --- a/frontend/javascripts/messages.tsx +++ b/frontend/javascripts/messages.tsx @@ -412,7 +412,7 @@ instead. Only enable this option if you understand its effect. All layers will n "Your account has been created. An administrator is going to unlock you soon.", "auth.automatic_user_activation": "User was activated automatically", "auth.error_no_user": "No active user is logged in.", - "auth.error_no_organization": "No active organziation can be loaded.", + "auth.error_no_organization": "No active organization can be loaded.", "auth.invalid_organization_name": "The link is not valid, since the specified organization does not exist. You are being redirected to the general registration form.", "request.max_item_count_alert": diff --git a/frontend/javascripts/navbar.tsx b/frontend/javascripts/navbar.tsx index 1136ab5d8d5..f1219678fe0 100644 --- a/frontend/javascripts/navbar.tsx +++ b/frontend/javascripts/navbar.tsx @@ -517,7 +517,7 @@ function OrganizationFilterInput({ }: { onChange: (val: string) => void; isVisible: boolean; onPressEnter: () => void }) { const ref = useRef(null); - // biome-ignore lint/correctness/useExhaustiveDependencies: Biome doesnt understand that ref.current is accessed? + // biome-ignore lint/correctness/useExhaustiveDependencies: Biome doesn't understand that ref.current is accessed? useEffect(() => { if (ref?.current && isVisible) { setTimeout(() => { diff --git a/frontend/javascripts/oxalis/api/api_latest.ts b/frontend/javascripts/oxalis/api/api_latest.ts index 544a9917a8d..97b2020d372 100644 --- a/frontend/javascripts/oxalis/api/api_latest.ts +++ b/frontend/javascripts/oxalis/api/api_latest.ts @@ -788,7 +788,7 @@ class TracingApi { { groupId: parentGroupId === MISSING_GROUP_ID ? null : parentGroupId }, volumeTracing.tracingId, // The parameter createsNewUndoState is not passed, since the action - // is added to a batch and batch updates always crate a new undo state. + // is added to a batch and batch updates always create a new undo state. ), ); } diff --git a/frontend/javascripts/oxalis/controller/segment_mesh_controller.ts b/frontend/javascripts/oxalis/controller/segment_mesh_controller.ts index 36026b69b1f..5c841b352c2 100644 --- a/frontend/javascripts/oxalis/controller/segment_mesh_controller.ts +++ b/frontend/javascripts/oxalis/controller/segment_mesh_controller.ts @@ -191,7 +191,7 @@ export default class SegmentMeshController { const segmentationTracing = getActiveSegmentationTracing(Store.getState()); if (segmentationTracing != null) { // addMeshFromGeometries is often called multiple times for different sets of geometries. - // Therefore, used a throttled varaint of the highlightUnmappedSegmentId method. + // Therefore, used a throttled variant of the highlightUnmappedSegmentId method. this.throttledHighlightUnmappedSegmentId(segmentationTracing.activeUnmappedSegmentId); } } diff --git a/frontend/javascripts/oxalis/controller/td_controller.tsx b/frontend/javascripts/oxalis/controller/td_controller.tsx index f22b7928e21..920537e22a8 100644 --- a/frontend/javascripts/oxalis/controller/td_controller.tsx +++ b/frontend/javascripts/oxalis/controller/td_controller.tsx @@ -116,7 +116,7 @@ class TDController extends React.PureComponent { this.props.tracing && this.props.tracing.skeleton ) { - // The rotation center of this viewport is not updated to the new position after selecing a node in the viewport. + // The rotation center of this viewport is not updated to the new position after selecting a node in the viewport. // This happens because the selection of the node does not trigger a call to setTargetAndFixPosition directly. // Thus we do it manually whenever the active node changes. getActiveNode(this.props.tracing.skeleton).map((activeNode) => diff --git a/frontend/javascripts/oxalis/geometries/skeleton.ts b/frontend/javascripts/oxalis/geometries/skeleton.ts index faa17d9a79d..30e63bcc87d 100644 --- a/frontend/javascripts/oxalis/geometries/skeleton.ts +++ b/frontend/javascripts/oxalis/geometries/skeleton.ts @@ -222,7 +222,7 @@ class Skeleton { const mesh = helper.buildMesh(geometry, material); // Frustum culling is disabled because nodes that are transformed // wouldn't be culled correctly. - // In basic testing, culling didn't provide a noticable performance + // In basic testing, culling didn't provide a noticeable performance // improvement (tested with 500k skeleton nodes). mesh.frustumCulled = false; this.rootGroup.add(mesh); diff --git a/frontend/javascripts/oxalis/model/bucket_data_handling/prefetch_strategy_plane.ts b/frontend/javascripts/oxalis/model/bucket_data_handling/prefetch_strategy_plane.ts index 8d156496213..587db241a61 100644 --- a/frontend/javascripts/oxalis/model/bucket_data_handling/prefetch_strategy_plane.ts +++ b/frontend/javascripts/oxalis/model/bucket_data_handling/prefetch_strategy_plane.ts @@ -26,9 +26,9 @@ export class AbstractPrefetchStrategy { roundTripTimeRangeEnd: number = 0; contentTypes: Array = []; name: string = "ABSTRACT"; - // @ts-expect-error ts-migrate(2564) FIXME: Property 'u' has no initializer and is not definit... Remove this comment to see the full error message + // @ts-expect-error ts-migrate(2564) FIXME: Property 'u' has no initializer and is not definite... Remove this comment to see the full error message u: DimensionIndices; - // @ts-expect-error ts-migrate(2564) FIXME: Property 'v' has no initializer and is not definit... Remove this comment to see the full error message + // @ts-expect-error ts-migrate(2564) FIXME: Property 'v' has no initializer and is not definite... Remove this comment to see the full error message v: DimensionIndices; forContentType(givenContentTypes: Record): boolean { @@ -77,7 +77,7 @@ export class PrefetchStrategy extends AbstractPrefetchStrategy { roundTripTimeRangeEnd = Infinity; preloadingSlides = 0; preloadingPriorityOffset = 0; - // @ts-expect-error ts-migrate(2564) FIXME: Property 'w' has no initializer and is not definit... Remove this comment to see the full error message + // @ts-expect-error ts-migrate(2564) FIXME: Property 'w' has no initializer and is not definite... Remove this comment to see the full error message w: DimensionIndices; prefetch( diff --git a/frontend/javascripts/oxalis/model/bucket_data_handling/pushqueue.ts b/frontend/javascripts/oxalis/model/bucket_data_handling/pushqueue.ts index 549d4293858..8df76a61760 100644 --- a/frontend/javascripts/oxalis/model/bucket_data_handling/pushqueue.ts +++ b/frontend/javascripts/oxalis/model/bucket_data_handling/pushqueue.ts @@ -28,7 +28,7 @@ class PushQueue { // user edited the buckets in a certain time window). private pendingBuckets: Set; - // Everytime the pendingBuckets is flushed, its content is put into a transaction. + // Every time the pendingBuckets is flushed, its content is put into a transaction. // That transaction is compressed asynchronously before it is sent to the store. // Buckets that are currently being compressed, are counted in this property. private compressingBucketCount: number = 0; diff --git a/frontend/javascripts/oxalis/model/bucket_data_handling/texture_bucket_manager.ts b/frontend/javascripts/oxalis/model/bucket_data_handling/texture_bucket_manager.ts index a1c4c5b9bdf..4aecca39080 100644 --- a/frontend/javascripts/oxalis/model/bucket_data_handling/texture_bucket_manager.ts +++ b/frontend/javascripts/oxalis/model/bucket_data_handling/texture_bucket_manager.ts @@ -182,7 +182,7 @@ export default class TextureBucketManager { // Commit "active" buckets by writing these to the dataTexture. processWriterQueue() { // uniqBy removes multiple write-buckets-requests for the same index. - // It preserves the first occurence of each duplicate, which is why + // It preserves the first occurrence of each duplicate, which is why // this queue has to be filled from the front (via unshift) und read from the // back (via pop). This ensures that the newest bucket "wins" if there are // multiple buckets for the same index. diff --git a/frontend/javascripts/oxalis/model/sagas/annotation_saga.tsx b/frontend/javascripts/oxalis/model/sagas/annotation_saga.tsx index 2f2b83658df..322e5e3239e 100644 --- a/frontend/javascripts/oxalis/model/sagas/annotation_saga.tsx +++ b/frontend/javascripts/oxalis/model/sagas/annotation_saga.tsx @@ -191,7 +191,7 @@ export function* watchAnnotationAsync(): Saga { // Consuming the latest action here handles an offline scenario better. // If the user is offline and performs multiple changes to the annotation // name, only the latest action is relevant. If `_takeEvery` was used, - // all updates to the annotation name would be retried regularily, which + // all updates to the annotation name would be retried regularly, which // would also cause race conditions. yield* takeLatest("SET_ANNOTATION_NAME", pushAnnotationUpdateAsync); yield* takeLatest("SET_ANNOTATION_VISIBILITY", pushAnnotationUpdateAsync); diff --git a/frontend/javascripts/oxalis/model/sagas/load_histogram_data_saga.ts b/frontend/javascripts/oxalis/model/sagas/load_histogram_data_saga.ts index d571afd00d0..399197f7c77 100644 --- a/frontend/javascripts/oxalis/model/sagas/load_histogram_data_saga.ts +++ b/frontend/javascripts/oxalis/model/sagas/load_histogram_data_saga.ts @@ -80,7 +80,7 @@ function* loadHistogramForLayer(layerName: string): Saga { yield* put(updateLayerSettingAction(layerName, "intensityRange", newIntensityRange)); - // Here we also set the minium and maximum values for the intensity range that the user can enter. + // Here we also set the minimum and maximum values for the intensity range that the user can enter. // If values already exist, we skip this step. if (currentLayerConfig == null || currentLayerConfig.min == null) { yield* put(updateLayerSettingAction(layerName, "min", minimumInHistogramData)); diff --git a/frontend/javascripts/oxalis/model/sagas/mesh_saga.ts b/frontend/javascripts/oxalis/model/sagas/mesh_saga.ts index 138c43dfd61..09c6fd7a4b2 100644 --- a/frontend/javascripts/oxalis/model/sagas/mesh_saga.ts +++ b/frontend/javascripts/oxalis/model/sagas/mesh_saga.ts @@ -308,7 +308,7 @@ function removeMeshWithoutVoxels( additionalCoordinates: AdditionalCoordinate[] | undefined | null, ) { // If no voxels were added to the scene (e.g. because the segment doesn't have any voxels in this n-dimension), - // remove it from the store's state aswell. + // remove it from the store's state as well. const { segmentMeshController } = getSceneController(); if (!segmentMeshController.hasMesh(segmentId, layerName, additionalCoordinates)) { Store.dispatch(removeMeshAction(layerName, segmentId)); diff --git a/frontend/javascripts/oxalis/model/sagas/min_cut_saga.ts b/frontend/javascripts/oxalis/model/sagas/min_cut_saga.ts index 2cdb08bcf31..e6f3639f9cc 100644 --- a/frontend/javascripts/oxalis/model/sagas/min_cut_saga.ts +++ b/frontend/javascripts/oxalis/model/sagas/min_cut_saga.ts @@ -39,7 +39,7 @@ const DEFAULT_PADDING: Vector3 = [50, 50, 50]; const MIN_DIST_TO_SEED = 30; const TimeoutError = new Error("Timeout"); const PartitionFailedError = new Error( - "Segmentation could not be partioned. Zero edges removed in last iteration. Probably due to nodes being too close to each other? Aborting...", + "Segmentation could not be partitioned. Zero edges removed in last iteration. Probably due to nodes being too close to each other? Aborting...", ); // If the min-cut does not succeed after 10 seconds // in the selected mag, the next mag is tried. diff --git a/frontend/javascripts/oxalis/shaders/texture_access.glsl.ts b/frontend/javascripts/oxalis/shaders/texture_access.glsl.ts index edb7a0660af..e3a3bb82a4c 100644 --- a/frontend/javascripts/oxalis/shaders/texture_access.glsl.ts +++ b/frontend/javascripts/oxalis/shaders/texture_access.glsl.ts @@ -52,7 +52,7 @@ export const getRgbaAtXYIndex: ShaderModule = { <% _.each(layerNamesWithSegmentation, (name) => { %> vec4 getRgbaAtXYIndex_<%= name %>(float textureIdx, float x, float y) { - // Since WebGL 1 doesnt allow dynamic texture indexing, we use an exhaustive if-else-construct + // Since WebGL 1 doesn't allow dynamic texture indexing, we use an exhaustive if-else-construct // here which checks for each case individually. The else-if-branches are constructed via // lodash templates. diff --git a/frontend/javascripts/oxalis/view/action-bar/toolbar_view.tsx b/frontend/javascripts/oxalis/view/action-bar/toolbar_view.tsx index d603ea218fe..70b48a40281 100644 --- a/frontend/javascripts/oxalis/view/action-bar/toolbar_view.tsx +++ b/frontend/javascripts/oxalis/view/action-bar/toolbar_view.tsx @@ -267,7 +267,7 @@ function OverwriteModeSwitch({ // - switching from state (1) to (2) (or vice versa) // - switching from state (2) to (4) (or vice versa) // Consequently, the mode is only toggled effectively, when CTRL is pressed. - // Alternatively, we could store the selected value and the overriden value + // Alternatively, we could store the selected value and the overridden value // separately in the store. However, this solution works, too. const needsModeToggle = (!isShiftPressed && @@ -908,7 +908,7 @@ export default function ToolbarView() { !disabledInfosForTools[lastForcefulDisabledTool].isDisabled && activeTool === AnnotationToolEnum.MOVE ) { - // Reenable the tool that was disabled before. + // Re-enable the tool that was disabled before. setLastForcefulDisabledTool(null); Store.dispatch(setToolAction(lastForcefulDisabledTool)); } else if (activeTool !== AnnotationToolEnum.MOVE) { diff --git a/frontend/javascripts/oxalis/view/context_menu.tsx b/frontend/javascripts/oxalis/view/context_menu.tsx index c7d6d898d9a..1328aade4b4 100644 --- a/frontend/javascripts/oxalis/view/context_menu.tsx +++ b/frontend/javascripts/oxalis/view/context_menu.tsx @@ -1503,7 +1503,7 @@ function ContextMenuInner(propsWithInputRef: Props) { nodeContextMenuTree = tree; }); } - // TS doesnt understand the above initialization and assumes the values + // TS doesn't understand the above initialization and assumes the values // are always null. The following NOOP helps TS with the correct typing. nodeContextMenuTree = nodeContextMenuTree as Tree | null; nodeContextMenuNode = nodeContextMenuNode as MutableNode | null; diff --git a/frontend/javascripts/oxalis/view/left-border-tabs/controls_and_rendering_settings_tab.tsx b/frontend/javascripts/oxalis/view/left-border-tabs/controls_and_rendering_settings_tab.tsx index 76817fd4f75..1fa41694e5f 100644 --- a/frontend/javascripts/oxalis/view/left-border-tabs/controls_and_rendering_settings_tab.tsx +++ b/frontend/javascripts/oxalis/view/left-border-tabs/controls_and_rendering_settings_tab.tsx @@ -62,7 +62,7 @@ class ControlsAndRenderingSettingsTab extends PureComponent' is missing the followin... Remove this comment to see the full error message + // @ts-expect-error ts-migrate(2740) FIXME: Type 'Dictionary' is missing the following... Remove this comment to see the full error message this.onChangeUser = _.mapValues( this.props.userConfiguration, (__, propertyName: keyof UserConfiguration) => diff --git a/frontend/javascripts/oxalis/view/merger_mode_modal_view.tsx b/frontend/javascripts/oxalis/view/merger_mode_modal_view.tsx index 827aece60af..284b0cc8108 100644 --- a/frontend/javascripts/oxalis/view/merger_mode_modal_view.tsx +++ b/frontend/javascripts/oxalis/view/merger_mode_modal_view.tsx @@ -46,7 +46,7 @@ export default function MergerModeModalView({ isCloseable, onClose, progress }: )} You just enabled the merger mode. This mode allows to merge segmentation cells by creating trees and nodes. Each tree maps the marked segments (the ones where nodes were created in) to - one new segment. Create separate trees for different segements. + one new segment. Create separate trees for different segments.

Additionally available keyboard shortcuts: diff --git a/frontend/javascripts/oxalis/view/nml_upload_zone_container.tsx b/frontend/javascripts/oxalis/view/nml_upload_zone_container.tsx index ea9473dda3c..b9cd240c0cf 100644 --- a/frontend/javascripts/oxalis/view/nml_upload_zone_container.tsx +++ b/frontend/javascripts/oxalis/view/nml_upload_zone_container.tsx @@ -291,7 +291,7 @@ class NmlUploadZoneContainer extends React.PureComponent { ) : null} { // If the user explicitly selected the menu option to import NMLs, - // we show a proper modal which renderes almost the same hint ("You may drag... or click"). + // we show a proper modal which renders almost the same hint ("You may drag... or click"). } {this.props.showDropzoneModal ? this.renderDropzoneModal() : null} diff --git a/frontend/javascripts/oxalis/view/plane_view.ts b/frontend/javascripts/oxalis/view/plane_view.ts index dd07beaf9b9..c80e6b0a864 100644 --- a/frontend/javascripts/oxalis/view/plane_view.ts +++ b/frontend/javascripts/oxalis/view/plane_view.ts @@ -103,7 +103,7 @@ class PlaneView { // skip rendering if nothing has changed // This prevents the GPU/CPU from constantly // working and keeps your lap cool - // ATTENTION: this limits the FPS to 60 FPS (depending on the keypress update frequence) + // ATTENTION: this limits the FPS to 60 FPS (depending on the keypress update frequency) if (forceRender || this.needsRerender) { const { renderer, scene } = SceneController; SceneController.update(); diff --git a/frontend/javascripts/oxalis/view/right-border-tabs/abstract_tree_renderer.ts b/frontend/javascripts/oxalis/view/right-border-tabs/abstract_tree_renderer.ts index 1764fe3d0a6..929ea6c270a 100644 --- a/frontend/javascripts/oxalis/view/right-border-tabs/abstract_tree_renderer.ts +++ b/frontend/javascripts/oxalis/view/right-border-tabs/abstract_tree_renderer.ts @@ -32,7 +32,7 @@ const CYCLIC_TREE_ERROR = "CyclicTree"; class AbstractTreeRenderer { canvas: HTMLCanvasElement; - // @ts-expect-error ts-migrate(2564) FIXME: Property 'ctx' has no initializer and is not defin... Remove this comment to see the full error message + // @ts-expect-error ts-migrate(2564) FIXME: Property 'ctx' has no initializer and is not define... Remove this comment to see the full error message ctx: CanvasRenderingContext2D; nodeList: Array; // @ts-expect-error ts-migrate(2564) FIXME: Property 'activeNodeId' has no initializer and is ... Remove this comment to see the full error message @@ -91,7 +91,7 @@ class AbstractTreeRenderer { } buildTree(): AbstractNode | null | undefined { - // Asumption: Node with smallest id is root + // Assumption: Node with smallest id is root const rootId = _.min(Array.from(this.tree.nodes.keys())); const rootNode = { diff --git a/frontend/javascripts/oxalis/view/right-border-tabs/connectome_tab/connectome_view.tsx b/frontend/javascripts/oxalis/view/right-border-tabs/connectome_tab/connectome_view.tsx index 5427ef29843..9ebd0dd9bce 100644 --- a/frontend/javascripts/oxalis/view/right-border-tabs/connectome_tab/connectome_view.tsx +++ b/frontend/javascripts/oxalis/view/right-border-tabs/connectome_tab/connectome_view.tsx @@ -420,7 +420,7 @@ class ConnectomeView extends React.Component { (node) => node.data.type !== "synapse", ), ); - // Auto-load the skeletons of the active agglomerates and check all occurences of the same agglomerate + // Auto-load the skeletons of the active agglomerates and check all occurrences of the same agglomerate const topLevelCheckedKeys = treeData.map((topLevelTreeNode) => topLevelTreeNode.key); const checkedKeys = Array.from( mapAndFilterTreeData( diff --git a/frontend/javascripts/oxalis/workers/readme.md b/frontend/javascripts/oxalis/workers/readme.md index e5268f7f6ff..9b22867824c 100644 --- a/frontend/javascripts/oxalis/workers/readme.md +++ b/frontend/javascripts/oxalis/workers/readme.md @@ -26,8 +26,8 @@ See `compress.worker.js` for an example. ## Caveats - Accessing global state (e.g., the Store) is not directly possible from web workers, since they have their own execution context. Pass necessary information into web workers via parameters. -- By default, parameters and return values are either structurally cloned or transfered (if they support it) to/from the web worker. Copying is potentially performance-intensive and also won't propagate any mutations across the main-thread/webworker border. If objects are transferable (e.g., for ArrayBuffers, but not TypedArrays), they are moved to the new context, which means that they cannot be accessed in the old thread, anymore. In both cases, care has to be taken. In general, web workers should only be responsible for a very small (but cpu intensive) task with a bare minimum of dependencies. +- By default, parameters and return values are either structurally cloned or transferred (if they support it) to/from the web worker. Copying is potentially performance-intensive and also won't propagate any mutations across the main-thread/webworker border. If objects are transferable (e.g., for ArrayBuffers, but not TypedArrays), they are moved to the new context, which means that they cannot be accessed in the old thread, anymore. In both cases, care has to be taken. In general, web workers should only be responsible for a very small (but cpu intensive) task with a bare minimum of dependencies. - Not all objects can be passed between main thread and web workers (e.g., Header objects). For these cases, you have to implement and register a specific transfer handler for the object type. See `headers_transfer_handler.js` as an example. -- Web worker files can import NPM modules and also modules from within this code base, but beware that the execution context between the main thread and web workers is strictly isolated. Webpack will create a separete JS file for each web worker into which all imported code is compiled. +- Web worker files can import NPM modules and also modules from within this code base, but beware that the execution context between the main thread and web workers is strictly isolated. Webpack will create a separate JS file for each web worker into which all imported code is compiled. Learn more about the Comlink module we use [here](https://github.com/GoogleChromeLabs/comlink). diff --git a/frontend/javascripts/test/reducers/skeletontracing_reducer.spec.ts b/frontend/javascripts/test/reducers/skeletontracing_reducer.spec.ts index 934dcf161eb..6d6ed5b51f0 100644 --- a/frontend/javascripts/test/reducers/skeletontracing_reducer.spec.ts +++ b/frontend/javascripts/test/reducers/skeletontracing_reducer.spec.ts @@ -177,7 +177,7 @@ test("SkeletonTracing should add nodes to a different tree", (t) => { resolution, ); const createTreeAction = SkeletonTracingActions.createTreeAction(); - // add a node to inital tree, then create a second tree and add two nodes + // add a node to initial tree, then create a second tree and add two nodes let newState = SkeletonTracingReducer(initialState, createNodeAction); newState = SkeletonTracingReducer(newState, createTreeAction); newState = SkeletonTracingReducer(newState, createNodeAction); @@ -608,7 +608,7 @@ test("SkeletonTracing should set a new node radius", (t) => { resolution, ); const setNodeRadiusAction = SkeletonTracingActions.setNodeRadiusAction(newRadius); - // Create a node and change its readius + // Create a node and change its radius let newState = SkeletonTracingReducer(initialState, createNodeAction); newState = SkeletonTracingReducer(newState, setNodeRadiusAction); t.not(newState, initialState); diff --git a/frontend/stylesheets/antd_overwrites.less b/frontend/stylesheets/antd_overwrites.less index 607badc4b35..224ebca1bde 100644 --- a/frontend/stylesheets/antd_overwrites.less +++ b/frontend/stylesheets/antd_overwrites.less @@ -1,4 +1,4 @@ -// Whenever possible try to customize antd v5 components through their "Design Tokens" and builtin themeing +// Whenever possible try to customize antd v5 components through their "Design Tokens" and builtin theming // See theme.tsx for details // https://ant.design/docs/react/customize-theme diff --git a/test/backend/SkeletonUpdateActionsUnitTestSuite.scala b/test/backend/SkeletonUpdateActionsUnitTestSuite.scala index acbd2254da0..e0a9a749727 100644 --- a/test/backend/SkeletonUpdateActionsUnitTestSuite.scala +++ b/test/backend/SkeletonUpdateActionsUnitTestSuite.scala @@ -100,7 +100,7 @@ class SkeletonUpdateActionsUnitTestSuite extends PlaySpec { } "MoveTreeComponentSkeletonAction" should { - "move the specified (seperate) nodes" in { + "move the specified (separate) nodes" in { val moveTreeComponentSkeletonAction = new MoveTreeComponentSkeletonAction(Dummies.comp1Nodes.map(_.id).toList, sourceId = 3, targetId = 4) val result = moveTreeComponentSkeletonAction.applyOn(Dummies.componentSkeletonTracing) diff --git a/test/backend/SqlEscapingTestSuite.scala b/test/backend/SqlEscapingTestSuite.scala index c8c6554acce..b51cef65393 100644 --- a/test/backend/SqlEscapingTestSuite.scala +++ b/test/backend/SqlEscapingTestSuite.scala @@ -44,7 +44,7 @@ class SqlEscapingTestSuite extends PlaySpec with SqlTypeImplicits with SqlEscapi "parse two elements if one has a comma and escaped double quotes" in { assert(parseArrayLiteral("""{"h\"e,llo",there}""") == List("""h"e,llo""", "there")) } - "parse single element if the comma is between escaped duoble quotes" in { + "parse single element if the comma is between escaped double quotes" in { assert(parseArrayLiteral("""{"this one has \"spe,cial\" chars"}""") == List("""this one has "spe,cial" chars""")) } "parse single elements if it has a comma and single escaped double quote" in { diff --git a/tools/migrate-editable-mappings/migrate-editable-mappings.py b/tools/migrate-editable-mappings/migrate-editable-mappings.py index 15570de6729..4a5c521febd 100755 --- a/tools/migrate-editable-mappings/migrate-editable-mappings.py +++ b/tools/migrate-editable-mappings/migrate-editable-mappings.py @@ -8,7 +8,7 @@ # ## Development # Note: the generated proto python classes are checked into the repostitory next to this file. -# To regnerate them, both old and new format editable mapping proto definitions are needed. +# To regenerate them, both old and new format editable mapping proto definitions are needed. # # python3 -m grpc_tools.protoc -I../../webknossos/webknossos-datastore/proto --python_out=. --grpc_python_out=. ../../webknossos/webknossos-datastore/proto/fossildbapi.proto # diff --git a/tools/obj_models/obj_parser.py b/tools/obj_models/obj_parser.py index 84220a07f5e..a33edc39b9e 100755 --- a/tools/obj_models/obj_parser.py +++ b/tools/obj_models/obj_parser.py @@ -17,7 +17,7 @@ ''' Load a wavefront obj 3D file and parses it. It outputs the parsed values as a stream of binary interpretation. Output as Javascript arrays -opitonal. +optional. The method is far from complete. Features: @@ -56,14 +56,14 @@ def parseObjFile(objFile, options): lines = myfile.read().split('\n') lines = filter(lambda x: len(x) > 0,[x.strip() for x in lines]) - # SHOULD BE RESET AT THE FIRST OCCURANCE OF A "g" TAG + # SHOULD BE RESET AT THE FIRST OCCURRENCE OF A "g" TAG currentColor = 0 for line in lines: # HANDLE SUBGROUPS if line[0] == 'g': ''' TODO: proper support for grouping - FOR RIGTH NOW LETS HAVE SOME FUN WITH COLORS + FOR RIGHT NOW LETS HAVE SOME FUN WITH COLORS either use a user provided color or choose from a number predefined ones ''' if len(options.color) == 0: if currentColor < 11: @@ -105,7 +105,7 @@ def parseObjFile(objFile, options): normalsIndex.append(verts[2] - 1) # HANDLE QUADS / POLYGONS - # triangulate face woth more than three vertices + # triangulate face worth more than three vertices else: polygonFaces = [] polygonTextures = [] @@ -142,7 +142,7 @@ def parseObjFile(objFile, options): ''' Flatten all the list and loose the "vector" structure. This is necassary in order to properly export everything. Btw, yes I know all of these 3 arrays have the same length and could therefore be - interated over in one loop. :-) + iterated over in one loop. :-) ''' vertices = [number for vertex in vertices for number in vertex] vertexNormals = [number for normal in vertexNormals for number in normal] @@ -172,7 +172,7 @@ def parseObjFile(objFile, options): print "%s.js written" % objFile[:-4] -'''Divide a polygone into triangles''' +'''Divide a polygon into triangles''' def triangulate(l): triangles = [] for i in range(1,len(l)-1): diff --git a/util/src/main/scala/com/scalableminds/util/cache/LRUConcurrentCache.scala b/util/src/main/scala/com/scalableminds/util/cache/LRUConcurrentCache.scala index 391c2aa7d83..49ad92533cc 100644 --- a/util/src/main/scala/com/scalableminds/util/cache/LRUConcurrentCache.scala +++ b/util/src/main/scala/com/scalableminds/util/cache/LRUConcurrentCache.scala @@ -37,7 +37,7 @@ trait LRUConcurrentCache[K, V] { } /** - * Use if load function returns Option and only Somes should be cached + * Use if load function returns Option and only Some should be cached */ def getOrLoadAndPutOptional(key: K)(loadFunction: K => Option[V]): Option[V] = get(key).orElse { diff --git a/util/src/main/scala/com/scalableminds/util/io/PathUtils.scala b/util/src/main/scala/com/scalableminds/util/io/PathUtils.scala index ecf0c0b1673..8b3428cb1a7 100644 --- a/util/src/main/scala/com/scalableminds/util/io/PathUtils.scala +++ b/util/src/main/scala/com/scalableminds/util/io/PathUtils.scala @@ -140,7 +140,7 @@ trait PathUtils extends LazyLogging { } /* - * removes the end of a path, after the last occurence of any of excludeFromPrefix + * removes the end of a path, after the last occurrence of any of excludeFromPrefix * example: /path/to/color/layer/that/is/named/color/and/has/files * becomes /path/to/color/layer/that/is/named/color * if "color" is in excludeFromPrefix diff --git a/util/src/main/scala/com/scalableminds/util/mvc/ExtendedController.scala b/util/src/main/scala/com/scalableminds/util/mvc/ExtendedController.scala index 8ed208f9cfd..05723d23f52 100644 --- a/util/src/main/scala/com/scalableminds/util/mvc/ExtendedController.scala +++ b/util/src/main/scala/com/scalableminds/util/mvc/ExtendedController.scala @@ -60,7 +60,7 @@ trait BoxToResultHelpers extends I18nSupport with Formatter with RemoteOriginHel private def jsonMessages(msgs: JsArray): JsObject = Json.obj("messages" -> msgs) - // Override this in your controller to add the CORS headers to thes results of its actions + // Override this in your controller to add the CORS headers to these results of its actions def allowRemoteOrigin: Boolean = false private def allowRemoteOriginIfSelected(result: Result): Result = diff --git a/webknossos-datastore/app/com/scalableminds/webknossos/datastore/models/datasource/DataLayerMapping.scala b/webknossos-datastore/app/com/scalableminds/webknossos/datastore/models/datasource/DataLayerMapping.scala index 4813455c530..b6776c1abb0 100644 --- a/webknossos-datastore/app/com/scalableminds/webknossos/datastore/models/datasource/DataLayerMapping.scala +++ b/webknossos-datastore/app/com/scalableminds/webknossos/datastore/models/datasource/DataLayerMapping.scala @@ -1,7 +1,7 @@ package com.scalableminds.webknossos.datastore.models.datasource /* -Note: This case class is not (de)serialized to/from JSON using the build-in JSON library +Note: This case class is not (de)serialized to/from JSON using the built-in JSON library but instead uses the dedicated MappingParser class for performance reasons. Whenever this data class is changed, the parser needs to be modified accordingly. */ diff --git a/webknossos-datastore/app/views/datastoreZarrDatasourceDir.scala.html b/webknossos-datastore/app/views/datastoreZarrDatasourceDir.scala.html index 1214f57d7c4..83579e49230 100644 --- a/webknossos-datastore/app/views/datastoreZarrDatasourceDir.scala.html +++ b/webknossos-datastore/app/views/datastoreZarrDatasourceDir.scala.html @@ -6,7 +6,7 @@ WEBKNOSSOS @(kind)