@openneuro/app 4.20.5 → 4.20.6-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/__mocks__/fileMock.js +1 -1
- package/package.json +5 -5
- package/pluralize-esm.js +204 -211
- package/src/@types/custom.d.ts +3 -3
- package/src/@types/react.d.ts +3 -4
- package/src/client.jsx +17 -16
- package/src/scripts/__mocks__/config.ts +6 -6
- package/src/scripts/__utils__/mock-app-shell.tsx +9 -8
- package/src/scripts/apm.js +6 -6
- package/src/scripts/app.tsx +7 -7
- package/src/scripts/authentication/__tests__/profile.spec.js +10 -10
- package/src/scripts/authentication/admin-user.jsx +2 -2
- package/src/scripts/authentication/logged-in.jsx +2 -2
- package/src/scripts/authentication/logged-out.jsx +2 -2
- package/src/scripts/authentication/loginCheck.js +2 -2
- package/src/scripts/authentication/loginUrls.ts +1 -1
- package/src/scripts/authentication/profile.ts +7 -7
- package/src/scripts/authentication/regular-user.tsx +3 -3
- package/src/scripts/authentication/signOut.ts +2 -2
- package/src/scripts/authentication/withProfile.jsx +6 -6
- package/src/scripts/common/block-navigation.jsx +3 -4
- package/src/scripts/common/containers/__tests__/header.spec.tsx +16 -16
- package/src/scripts/common/containers/footer.tsx +3 -3
- package/src/scripts/common/containers/header.tsx +30 -30
- package/src/scripts/common/forms/__tests__/warn-button.spec.jsx +6 -6
- package/src/scripts/common/forms/warn-button.jsx +21 -17
- package/src/scripts/common/partials/block-navigation.jsx +3 -4
- package/src/scripts/common/partials/freshdesk-widget.jsx +17 -20
- package/src/scripts/common/partials/toast-content.jsx +2 -2
- package/src/scripts/components/__tests__/data-table.spec.tsx +7 -7
- package/src/scripts/components/data-table.tsx +23 -22
- package/src/scripts/config.ts +2 -2
- package/src/scripts/datalad/dataset/comments-fragments.js +1 -1
- package/src/scripts/datalad/dataset/dataset-context.js +1 -1
- package/src/scripts/datalad/dataset/dataset-query-context.js +1 -1
- package/src/scripts/datalad/dataset/dataset-query-fragments.js +1 -1
- package/src/scripts/datalad/mutations/cache-clear.jsx +7 -6
- package/src/scripts/datalad/mutations/cache-id.js +2 -2
- package/src/scripts/datalad/mutations/delete-comment.jsx +13 -11
- package/src/scripts/datalad/mutations/delete.jsx +10 -9
- package/src/scripts/datalad/mutations/follow.jsx +12 -11
- package/src/scripts/datalad/mutations/publish.jsx +13 -12
- package/src/scripts/datalad/mutations/remove-permissions.jsx +8 -8
- package/src/scripts/datalad/mutations/revalidate.jsx +7 -6
- package/src/scripts/datalad/mutations/snapshot.tsx +7 -7
- package/src/scripts/datalad/mutations/star.jsx +12 -11
- package/src/scripts/datalad/mutations/submit-metadata.jsx +14 -12
- package/src/scripts/datalad/mutations/update-permissions.jsx +14 -13
- package/src/scripts/datalad/mutations/update-ref.jsx +7 -6
- package/src/scripts/datalad/routes/dataset-redirect.tsx +49 -49
- package/src/scripts/datalad/subscriptions/__tests__/files-subscription.spec.jsx +32 -32
- package/src/scripts/datalad/subscriptions/files-subscription.jsx +16 -16
- package/src/scripts/datalad/subscriptions/useDatasetDeletedSubscription.jsx +4 -4
- package/src/scripts/datalad/subscriptions/useDraftSubscription.js +4 -4
- package/src/scripts/datalad/subscriptions/usePermissionsSubscription.js +4 -4
- package/src/scripts/datalad/subscriptions/useSnapshotsUpdatedSubscriptions.js +3 -3
- package/src/scripts/dataset/__tests__/__snapshots__/snapshot-container.spec.tsx.snap +2 -2
- package/src/scripts/dataset/__tests__/snapshot-container.spec.tsx +12 -12
- package/src/scripts/dataset/comments/__tests__/comment.spec.jsx +21 -21
- package/src/scripts/dataset/comments/__tests__/comments.spec.jsx +10 -10
- package/src/scripts/dataset/comments/block-style-controls.jsx +15 -15
- package/src/scripts/dataset/comments/comment-editor.jsx +31 -31
- package/src/scripts/dataset/comments/comment.jsx +50 -50
- package/src/scripts/dataset/comments/comments.jsx +24 -22
- package/src/scripts/dataset/comments/inline-style-controls.jsx +9 -9
- package/src/scripts/dataset/comments/style-button.jsx +8 -9
- package/src/scripts/dataset/common/follow-toggles.tsx +3 -3
- package/src/scripts/dataset/dataset-query-context.js +1 -1
- package/src/scripts/dataset/dataset-query.jsx +34 -31
- package/src/scripts/dataset/dataset-routes.jsx +5 -5
- package/src/scripts/dataset/download/__tests__/download-command-line.spec.jsx +13 -13
- package/src/scripts/dataset/download/__tests__/download-link.spec.jsx +10 -10
- package/src/scripts/dataset/download/__tests__/download-native.spec.js +7 -7
- package/src/scripts/dataset/download/__tests__/shell-example.spec.jsx +5 -5
- package/src/scripts/dataset/download/download-command-line.jsx +9 -7
- package/src/scripts/dataset/download/download-datalad.jsx +22 -20
- package/src/scripts/dataset/download/download-derivative-datalad.tsx +2 -2
- package/src/scripts/dataset/download/download-derivative-s3.tsx +2 -2
- package/src/scripts/dataset/download/download-link.jsx +6 -6
- package/src/scripts/dataset/download/download-native.js +20 -19
- package/src/scripts/dataset/download/download-query.js +2 -3
- package/src/scripts/dataset/download/download-s3.jsx +8 -8
- package/src/scripts/dataset/download/download-script.tsx +23 -20
- package/src/scripts/dataset/download/native-file-toast.jsx +13 -11
- package/src/scripts/dataset/download/shell-example.jsx +1 -1
- package/src/scripts/dataset/download/track-download.js +5 -5
- package/src/scripts/dataset/draft-container.tsx +104 -102
- package/src/scripts/dataset/draft-snapshot-routes.tsx +3 -3
- package/src/scripts/dataset/files/__tests__/file-tree-unloaded-directory.spec.jsx +23 -23
- package/src/scripts/dataset/files/__tests__/file-tree.spec.jsx +57 -58
- package/src/scripts/dataset/files/__tests__/file-viewer-type.spec.jsx +6 -6
- package/src/scripts/dataset/files/__tests__/file.spec.jsx +15 -15
- package/src/scripts/dataset/files/file-display.jsx +11 -11
- package/src/scripts/dataset/files/file-tree-unloaded-directory.jsx +10 -10
- package/src/scripts/dataset/files/file-tree.tsx +27 -27
- package/src/scripts/dataset/files/file-view.jsx +4 -4
- package/src/scripts/dataset/files/file-viewer-type.jsx +21 -21
- package/src/scripts/dataset/files/file.tsx +85 -80
- package/src/scripts/dataset/files/files.tsx +41 -40
- package/src/scripts/dataset/files/index.tsx +2 -2
- package/src/scripts/dataset/files/viewers/__tests__/__snapshots__/file-viewer-json.spec.jsx.snap +0 -24
- package/src/scripts/dataset/files/viewers/__tests__/file-viewer-json.spec.jsx +9 -9
- package/src/scripts/dataset/files/viewers/__tests__/parse-tabular.spec.js +8 -8
- package/src/scripts/dataset/files/viewers/file-viewer-csv.jsx +5 -5
- package/src/scripts/dataset/files/viewers/file-viewer-html.jsx +3 -3
- package/src/scripts/dataset/files/viewers/file-viewer-json.jsx +4 -4
- package/src/scripts/dataset/files/viewers/file-viewer-nifti.tsx +4 -4
- package/src/scripts/dataset/files/viewers/file-viewer-table.tsx +3 -3
- package/src/scripts/dataset/files/viewers/file-viewer-text.jsx +3 -3
- package/src/scripts/dataset/files/viewers/file-viewer-tsv.jsx +5 -5
- package/src/scripts/dataset/files/viewers/parse-tabular.js +4 -4
- package/src/scripts/dataset/fragments/__tests__/cancel-button.spec.tsx +5 -5
- package/src/scripts/dataset/fragments/__tests__/dataset-alert-draft.spec.tsx +9 -9
- package/src/scripts/dataset/fragments/__tests__/dataset-citation.spec.jsx +10 -10
- package/src/scripts/dataset/fragments/__tests__/doi-link.spec.tsx +29 -29
- package/src/scripts/dataset/fragments/__tests__/edit-button.spec.tsx +5 -5
- package/src/scripts/dataset/fragments/__tests__/edit-list.spec.jsx +13 -13
- package/src/scripts/dataset/fragments/__tests__/save-button.spec.tsx +5 -5
- package/src/scripts/dataset/fragments/__tests__/select-input.spec.tsx +26 -26
- package/src/scripts/dataset/fragments/cancel-button.tsx +2 -2
- package/src/scripts/dataset/fragments/comments-fragments.js +1 -1
- package/src/scripts/dataset/fragments/copyable-tooltip.jsx +14 -13
- package/src/scripts/dataset/fragments/dataset-alert-draft.tsx +17 -13
- package/src/scripts/dataset/fragments/dataset-alert-version.tsx +5 -4
- package/src/scripts/dataset/fragments/dataset-citation.jsx +23 -21
- package/src/scripts/dataset/fragments/dataset-history.jsx +12 -12
- package/src/scripts/dataset/fragments/dataset-reviewers.ts +1 -1
- package/src/scripts/dataset/fragments/doi-link.tsx +6 -6
- package/src/scripts/dataset/fragments/edit-button.tsx +2 -2
- package/src/scripts/dataset/fragments/edit-description-field.jsx +23 -21
- package/src/scripts/dataset/fragments/edit-description-list.jsx +8 -8
- package/src/scripts/dataset/fragments/edit-list.jsx +8 -8
- package/src/scripts/dataset/fragments/number-input.tsx +36 -35
- package/src/scripts/dataset/fragments/save-button.tsx +2 -2
- package/src/scripts/dataset/fragments/select-input.tsx +87 -86
- package/src/scripts/dataset/fragments/text-array-input.tsx +38 -37
- package/src/scripts/dataset/fragments/text-input.tsx +79 -78
- package/src/scripts/dataset/mutations/__tests__/cache-id.spec.js +5 -5
- package/src/scripts/dataset/mutations/__tests__/delete-file.spec.jsx +85 -83
- package/src/scripts/dataset/mutations/__tests__/delete.spec.jsx +8 -8
- package/src/scripts/dataset/mutations/__tests__/deprecate-snapshot.spec.tsx +17 -17
- package/src/scripts/dataset/mutations/__tests__/deprecate-version.spec.tsx +19 -19
- package/src/scripts/dataset/mutations/__tests__/description.spec.jsx +51 -51
- package/src/scripts/dataset/mutations/__tests__/remove-permissions.spec.tsx +9 -9
- package/src/scripts/dataset/mutations/__tests__/update-permissions.spec.jsx +7 -7
- package/src/scripts/dataset/mutations/admin-exports.jsx +13 -12
- package/src/scripts/dataset/mutations/cache-clear.jsx +6 -6
- package/src/scripts/dataset/mutations/cache-id.js +2 -2
- package/src/scripts/dataset/mutations/comment.jsx +25 -23
- package/src/scripts/dataset/mutations/create-anonymous-reviewer.tsx +36 -30
- package/src/scripts/dataset/mutations/dataset-relations.tsx +28 -29
- package/src/scripts/dataset/mutations/delete-anonymous-reviewer.tsx +7 -8
- package/src/scripts/dataset/mutations/delete-comment.jsx +14 -12
- package/src/scripts/dataset/mutations/delete-dataset-form.jsx +20 -22
- package/src/scripts/dataset/mutations/delete-file.jsx +8 -8
- package/src/scripts/dataset/mutations/delete.jsx +10 -9
- package/src/scripts/dataset/mutations/deprecate-version.tsx +5 -6
- package/src/scripts/dataset/mutations/description.jsx +21 -20
- package/src/scripts/dataset/mutations/flag-annex-object.jsx +10 -9
- package/src/scripts/dataset/mutations/follow.tsx +15 -14
- package/src/scripts/dataset/mutations/import-dataset.tsx +5 -5
- package/src/scripts/dataset/mutations/metadata-form.jsx +94 -97
- package/src/scripts/dataset/mutations/publish.jsx +13 -13
- package/src/scripts/dataset/mutations/readme.jsx +12 -11
- package/src/scripts/dataset/mutations/remove-annex-object.jsx +10 -9
- package/src/scripts/dataset/mutations/remove-permissions.tsx +5 -6
- package/src/scripts/dataset/mutations/revalidate.jsx +7 -7
- package/src/scripts/dataset/mutations/snapshot.tsx +8 -8
- package/src/scripts/dataset/mutations/star.tsx +14 -13
- package/src/scripts/dataset/mutations/submit-metadata.jsx +12 -11
- package/src/scripts/dataset/mutations/undo-deprecate-version.tsx +5 -6
- package/src/scripts/dataset/mutations/update-file.jsx +6 -6
- package/src/scripts/dataset/mutations/update-permissions.tsx +9 -9
- package/src/scripts/dataset/mutations/update-ref.jsx +7 -7
- package/src/scripts/dataset/routes/__tests__/deprecate-snapshot-page.spec.tsx +5 -5
- package/src/scripts/dataset/routes/add-metadata.jsx +19 -20
- package/src/scripts/dataset/routes/admin-datalad.jsx +7 -7
- package/src/scripts/dataset/routes/dataset-default.tsx +12 -10
- package/src/scripts/dataset/routes/delete-page.tsx +12 -12
- package/src/scripts/dataset/routes/deprecate-snapshot-page.tsx +8 -8
- package/src/scripts/dataset/routes/derivatives.tsx +10 -10
- package/src/scripts/dataset/routes/download-dataset.tsx +20 -20
- package/src/scripts/dataset/routes/manage-anonymous-reviewers.tsx +37 -35
- package/src/scripts/dataset/routes/manage-permissions.jsx +22 -22
- package/src/scripts/dataset/routes/publish.jsx +32 -30
- package/src/scripts/dataset/routes/snapshot-default.tsx +7 -7
- package/src/scripts/dataset/routes/snapshot.tsx +44 -43
- package/src/scripts/dataset/routes/styles/dataset-page-border.tsx +3 -3
- package/src/scripts/dataset/routes/styles/dataset-page-tab-container.tsx +3 -3
- package/src/scripts/dataset/routes/styles/header-row.tsx +3 -3
- package/src/scripts/dataset/routes/tab-routes-draft.tsx +12 -12
- package/src/scripts/dataset/routes/tab-routes-snapshot.tsx +8 -8
- package/src/scripts/dataset/snapshot-container.tsx +78 -86
- package/src/scripts/errors/403page.tsx +11 -11
- package/src/scripts/errors/404page.tsx +12 -12
- package/src/scripts/errors/errorBoundary.jsx +13 -12
- package/src/scripts/errors/errorRoute.jsx +6 -6
- package/src/scripts/errors/freshdesk-widget.jsx +17 -20
- package/src/scripts/errors/freshdeskInterface.jsx +9 -9
- package/src/scripts/errors/orcid/email.jsx +3 -3
- package/src/scripts/errors/orcid/family.jsx +4 -4
- package/src/scripts/errors/orcid/general.jsx +1 -1
- package/src/scripts/errors/orcid/given.jsx +4 -4
- package/src/scripts/fixtures/dataset-query.ts +119 -119
- package/src/scripts/fixtures/mock-app-wrapper.tsx +4 -4
- package/src/scripts/index.tsx +9 -9
- package/src/scripts/pages/admin/admin.jsx +5 -5
- package/src/scripts/pages/admin/flagged-files.jsx +33 -31
- package/src/scripts/pages/admin/user-fragment.ts +1 -1
- package/src/scripts/pages/admin/user-tools.tsx +13 -11
- package/src/scripts/pages/admin/users.jsx +38 -39
- package/src/scripts/pages/api.jsx +20 -19
- package/src/scripts/pages/citation-page.tsx +4 -4
- package/src/scripts/pages/faq/faq.tsx +2 -2
- package/src/scripts/pages/front-page/aggregate-queries/aggregate-counts-container.tsx +6 -5
- package/src/scripts/pages/front-page/aggregate-queries/use-participant-count.ts +2 -2
- package/src/scripts/pages/front-page/aggregate-queries/use-publicDatasets-count.ts +2 -2
- package/src/scripts/pages/front-page/front-page-content.ts +42 -42
- package/src/scripts/pages/front-page/front-page.tsx +18 -14
- package/src/scripts/pages/front-page-comp.tsx +3 -3
- package/src/scripts/pages/import-dataset.tsx +10 -10
- package/src/scripts/pages/metadata/dataset-metadata.tsx +15 -14
- package/src/scripts/pages/pet-redirect.tsx +2 -2
- package/src/scripts/queries/dataset.ts +3 -3
- package/src/scripts/resources/__tests__/kibana.spec.js +9 -9
- package/src/scripts/resources/kibana.js +3 -3
- package/src/scripts/resources/strings.js +2 -2
- package/src/scripts/routes.tsx +14 -14
- package/src/scripts/search/__helpers__/search-render.tsx +3 -3
- package/src/scripts/search/__tests__/search-container.spec.tsx +22 -22
- package/src/scripts/search/__tests__/search-params-ctx.spec.tsx +20 -20
- package/src/scripts/search/es-query-builders.ts +21 -5
- package/src/scripts/search/filters-block-container.tsx +14 -16
- package/src/scripts/search/initial-search-params.tsx +45 -45
- package/src/scripts/search/inputs/__tests__/sort-by-select.spec.tsx +23 -23
- package/src/scripts/search/inputs/admin-allDatasets-toggle.tsx +12 -12
- package/src/scripts/search/inputs/age-range-input.tsx +9 -8
- package/src/scripts/search/inputs/author-input.tsx +14 -11
- package/src/scripts/search/inputs/date-radios.tsx +8 -7
- package/src/scripts/search/inputs/diagnosis-select.tsx +6 -6
- package/src/scripts/search/inputs/index.ts +33 -33
- package/src/scripts/search/inputs/keyword-input.tsx +13 -13
- package/src/scripts/search/inputs/modality-select.tsx +33 -30
- package/src/scripts/search/inputs/pet/bodyParts_input.tsx +18 -16
- package/src/scripts/search/inputs/pet/scannerManufacturersModelNames_input.tsx +18 -16
- package/src/scripts/search/inputs/pet/scannerManufacturers_input.tsx +18 -16
- package/src/scripts/search/inputs/pet/tracerNames_input.tsx +16 -15
- package/src/scripts/search/inputs/pet/tracerRadionuclides_input.tsx +18 -16
- package/src/scripts/search/inputs/section-select.tsx +6 -6
- package/src/scripts/search/inputs/sex-radios.tsx +6 -6
- package/src/scripts/search/inputs/show-datasets-radios.tsx +31 -29
- package/src/scripts/search/inputs/sort-by-select.tsx +10 -11
- package/src/scripts/search/inputs/species-select.tsx +6 -6
- package/src/scripts/search/inputs/study-domain-input.tsx +18 -16
- package/src/scripts/search/inputs/subject-count-range-input.tsx +8 -7
- package/src/scripts/search/inputs/task-input.tsx +18 -16
- package/src/scripts/search/search-container.tsx +83 -85
- package/src/scripts/search/search-params-ctx.tsx +40 -38
- package/src/scripts/search/search-routes.tsx +4 -4
- package/src/scripts/search/use-search-results.tsx +125 -99
- package/src/scripts/styles/media.tsx +3 -3
- package/src/scripts/styles/support-modal.jsx +2 -2
- package/src/scripts/sw.ts +12 -11
- package/src/scripts/test-utils.js +4 -4
- package/src/scripts/uploader/add-path-to-files.js +7 -7
- package/src/scripts/uploader/file-select.tsx +3 -3
- package/src/scripts/uploader/file-upload.js +13 -12
- package/src/scripts/uploader/input.jsx +8 -7
- package/src/scripts/uploader/upload-button.jsx +3 -3
- package/src/scripts/uploader/upload-disclaimer-input.tsx +66 -66
- package/src/scripts/uploader/upload-disclaimer.jsx +6 -5
- package/src/scripts/uploader/upload-file-status.jsx +4 -4
- package/src/scripts/uploader/upload-issues.jsx +32 -29
- package/src/scripts/uploader/upload-metadata.jsx +18 -17
- package/src/scripts/uploader/upload-mutation.js +17 -20
- package/src/scripts/uploader/upload-progress-button.jsx +5 -4
- package/src/scripts/uploader/upload-progress.jsx +3 -3
- package/src/scripts/uploader/upload-rename.jsx +6 -5
- package/src/scripts/uploader/upload-resume.jsx +26 -24
- package/src/scripts/uploader/upload-select.jsx +10 -9
- package/src/scripts/uploader/upload-status.jsx +5 -5
- package/src/scripts/uploader/upload-step.jsx +9 -9
- package/src/scripts/uploader/uploader-context.js +1 -1
- package/src/scripts/uploader/uploader-location.js +1 -1
- package/src/scripts/uploader/uploader-modal.jsx +8 -7
- package/src/scripts/uploader/uploader-setup-routes.jsx +10 -10
- package/src/scripts/uploader/uploader-status-routes.jsx +6 -6
- package/src/scripts/uploader/uploader-view.jsx +4 -4
- package/src/scripts/uploader/uploader.jsx +50 -48
- package/src/scripts/users/username.tsx +3 -3
- package/src/scripts/utils/__tests__/csv.spec.ts +16 -16
- package/src/scripts/utils/__tests__/date.spec.js +4 -4
- package/src/scripts/utils/__tests__/json-ld.spec.js +12 -12
- package/src/scripts/utils/__tests__/newid.spec.js +9 -9
- package/src/scripts/utils/__tests__/userNotify.spec.js +10 -10
- package/src/scripts/utils/analytics.tsx +3 -3
- package/src/scripts/utils/cookies.js +1 -1
- package/src/scripts/utils/csv.ts +13 -15
- package/src/scripts/utils/datalad.js +1 -1
- package/src/scripts/utils/dataset-url.js +2 -2
- package/src/scripts/utils/date.js +2 -2
- package/src/scripts/utils/global-polyfill.ts +2 -2
- package/src/scripts/utils/gtag.js +6 -6
- package/src/scripts/utils/json-ld.js +13 -13
- package/src/scripts/utils/newid.js +1 -1
- package/src/scripts/utils/user-login-modal-ctx.tsx +4 -4
- package/src/scripts/utils/userNotify.js +2 -2
- package/src/scripts/validation/validation-panel.jsx +3 -3
- package/src/scripts/validation/validation-results.issues.issue.jsx +9 -9
- package/src/scripts/validation/validation-results.issues.jsx +19 -17
- package/src/scripts/validation/validation-results.jsx +10 -10
- package/src/scripts/validation/validation-status.jsx +19 -17
- package/src/scripts/validation/validation.jsx +5 -5
- package/src/scripts/workers/schema.ts +2 -2
- package/src/scripts/workers/schema.worker.ts +4 -4
- package/src/scripts/workers/validate.ts +2 -2
- package/src/scripts/workers/validate.worker.ts +7 -5
- package/vite.config.js +17 -17
- package/src/dist/assets/activity-icon.9ab0c828.png +0 -0
- package/src/dist/assets/bids.da8810b3.jpg +0 -0
- package/src/dist/assets/brand_mark.28e7645d.png +0 -0
- package/src/dist/assets/close-button.21e700a6.png +0 -0
- package/src/dist/assets/cube-get.39ed5636.png +0 -0
- package/src/dist/assets/cube-share.9b558c29.png +0 -0
- package/src/dist/assets/cube-use.ccf2ddc5.png +0 -0
- package/src/dist/assets/datalad.a35b15b8.jpg +0 -0
- package/src/dist/assets/eeg.1dc1dc54.jpg +0 -0
- package/src/dist/assets/email-header.1cb8bf76.png +0 -0
- package/src/dist/assets/ieeg.f91deb0a.jpg +0 -0
- package/src/dist/assets/index.3db805fb.js +0 -23127
- package/src/dist/assets/index.3db805fb.js.map +0 -1
- package/src/dist/assets/index.5eb79d2c.css +0 -1
- package/src/dist/assets/ljaf.567e9566.png +0 -0
- package/src/dist/assets/logo_app.8c986cf9.png +0 -0
- package/src/dist/assets/logo_cube.5224b745.png +0 -0
- package/src/dist/assets/logo_data.3e1d5743.png +0 -0
- package/src/dist/assets/logo_users.a84a265a.png +0 -0
- package/src/dist/assets/meg.1e1928f8.jpg +0 -0
- package/src/dist/assets/mri.b01e4f42.jpg +0 -0
- package/src/dist/assets/nih-bi-logo.80d76e1d.png +0 -0
- package/src/dist/assets/nih-stanford.2a7c496e.jpg +0 -0
- package/src/dist/assets/nih.78a64d38.png +0 -0
- package/src/dist/assets/nimh.0ec775d8.png +0 -0
- package/src/dist/assets/nru-logo.f3097dc5.png +0 -0
- package/src/dist/assets/nsf.eee1d3f7.png +0 -0
- package/src/dist/assets/nsf.f87e96e7.png +0 -0
- package/src/dist/assets/on-dark-horz.e1f213d0.svg +0 -1
- package/src/dist/assets/on-dark.12f4e2ce.svg +0 -1
- package/src/dist/assets/on-light-horz.23ff22c3.svg +0 -1
- package/src/dist/assets/on-light.50592f7f.svg +0 -1
- package/src/dist/assets/pet-scan.21d98a3d.jpg +0 -0
- package/src/dist/assets/revicons.4ca02b8a.ttf +0 -0
- package/src/dist/assets/revicons.9e4d4c68.eot +0 -0
- package/src/dist/assets/revicons.f7b9c306.woff +0 -0
- package/src/dist/assets/sqm-logo.9cd0cca5.png +0 -0
- package/src/dist/assets/squishymedia.fa3c5919.png +0 -0
- package/src/dist/assets/stanford.5f245936.png +0 -0
- package/src/dist/index.html +0 -25
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
import React from
|
|
2
|
-
import { render } from
|
|
3
|
-
import DownloadLink from
|
|
4
|
-
import { MockedProvider } from
|
|
5
|
-
import { vi } from
|
|
1
|
+
import React from "react"
|
|
2
|
+
import { render } from "@testing-library/react"
|
|
3
|
+
import DownloadLink from "../download-link.jsx"
|
|
4
|
+
import { MockedProvider } from "@apollo/client/testing"
|
|
5
|
+
import { vi } from "vitest"
|
|
6
6
|
|
|
7
|
-
vi.mock(
|
|
7
|
+
vi.mock("../../../config.ts")
|
|
8
8
|
|
|
9
9
|
const defProps = {
|
|
10
|
-
datasetId:
|
|
11
|
-
snapshotTag:
|
|
10
|
+
datasetId: "ds000001",
|
|
11
|
+
snapshotTag: "1.0.0",
|
|
12
12
|
}
|
|
13
13
|
|
|
14
|
-
describe(
|
|
15
|
-
it(
|
|
14
|
+
describe("dataset/download/DownloadLink", () => {
|
|
15
|
+
it("renders successfully", () => {
|
|
16
16
|
const { asFragment } = render(
|
|
17
17
|
<MockedProvider>
|
|
18
18
|
<DownloadLink {...defProps} />
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import { openFileTree } from
|
|
1
|
+
import { openFileTree } from "../download-native.js"
|
|
2
2
|
|
|
3
|
-
vi.mock(
|
|
3
|
+
vi.mock("../../../config.ts")
|
|
4
4
|
|
|
5
|
-
describe(
|
|
6
|
-
describe(
|
|
7
|
-
it(
|
|
5
|
+
describe("dataset/download - native file API method", () => {
|
|
6
|
+
describe("openFileTree", () => {
|
|
7
|
+
it("iterates over directory to correct depth", async () => {
|
|
8
8
|
const mockDirectoryHandle = {}
|
|
9
|
-
const mockFile = Symbol(
|
|
9
|
+
const mockFile = Symbol("mockFile")
|
|
10
10
|
mockDirectoryHandle.getDirectoryHandle = vi.fn(() => mockDirectoryHandle)
|
|
11
11
|
mockDirectoryHandle.getFileHandle = vi.fn(() => mockFile)
|
|
12
12
|
expect(
|
|
13
|
-
await openFileTree(mockDirectoryHandle,
|
|
13
|
+
await openFileTree(mockDirectoryHandle, "sub-01/anat/something.nii.gz"),
|
|
14
14
|
).toBe(mockFile)
|
|
15
15
|
expect(mockDirectoryHandle.getDirectoryHandle).toHaveBeenCalledTimes(2)
|
|
16
16
|
})
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import React from
|
|
2
|
-
import { render } from
|
|
3
|
-
import ShellExample from
|
|
1
|
+
import React from "react"
|
|
2
|
+
import { render } from "@testing-library/react"
|
|
3
|
+
import ShellExample from "../shell-example.jsx"
|
|
4
4
|
|
|
5
|
-
describe(
|
|
6
|
-
it(
|
|
5
|
+
describe("dataset/download/ShellExample", () => {
|
|
6
|
+
it("renders successfully", () => {
|
|
7
7
|
const { asFragment } = render(<ShellExample />)
|
|
8
8
|
expect(asFragment()).toMatchSnapshot()
|
|
9
9
|
})
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import React from
|
|
2
|
-
import PropTypes from
|
|
3
|
-
import ShellExample from
|
|
1
|
+
import React from "react"
|
|
2
|
+
import PropTypes from "prop-types"
|
|
3
|
+
import ShellExample from "./shell-example.jsx"
|
|
4
4
|
|
|
5
5
|
export const DownloadSampleCommand = ({ datasetId, snapshotTag }) => (
|
|
6
6
|
<ShellExample role="figure">
|
|
7
|
-
openneuro download {snapshotTag ? `--snapshot ${snapshotTag}` :
|
|
7
|
+
openneuro download {snapshotTag ? `--snapshot ${snapshotTag}` : "--draft"}
|
|
8
|
+
{" "}
|
|
8
9
|
{datasetId} {datasetId}
|
|
9
10
|
-download/
|
|
10
11
|
</ShellExample>
|
|
@@ -19,9 +20,10 @@ const DownloadCommandLine = ({ datasetId, snapshotTag }) => (
|
|
|
19
20
|
<div>
|
|
20
21
|
<h4>Download with Node.js</h4>
|
|
21
22
|
<p>
|
|
22
|
-
Using{
|
|
23
|
-
<a href="https://www.npmjs.com/package/@openneuro/cli">@openneuro/cli</a>
|
|
24
|
-
|
|
23
|
+
Using{" "}
|
|
24
|
+
<a href="https://www.npmjs.com/package/@openneuro/cli">@openneuro/cli</a>
|
|
25
|
+
{" "}
|
|
26
|
+
you can download this dataset from the command line using{" "}
|
|
25
27
|
<a href="https://nodejs.org/en/download/">Node.js</a>. This method is good
|
|
26
28
|
for larger datasets or unstable connections, but has known issues on
|
|
27
29
|
Windows.
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import React from
|
|
2
|
-
import PropTypes from
|
|
3
|
-
import {
|
|
4
|
-
import ShellExample from
|
|
1
|
+
import React from "react"
|
|
2
|
+
import PropTypes from "prop-types"
|
|
3
|
+
import { config, getConfig } from "../../config"
|
|
4
|
+
import ShellExample from "./shell-example.jsx"
|
|
5
5
|
import {
|
|
6
6
|
getUnexpiredProfile,
|
|
7
7
|
hasEditPermissions,
|
|
8
|
-
} from
|
|
9
|
-
import { useCookies } from
|
|
8
|
+
} from "../../authentication/profile"
|
|
9
|
+
import { useCookies } from "react-cookie"
|
|
10
10
|
|
|
11
11
|
const DownloadDataladExample = ({
|
|
12
12
|
datasetId,
|
|
@@ -17,8 +17,8 @@ const DownloadDataladExample = ({
|
|
|
17
17
|
const [cookies] = useCookies()
|
|
18
18
|
const profile = getUnexpiredProfile(cookies)
|
|
19
19
|
const isAdmin = profile?.admin
|
|
20
|
-
const hasEdit =
|
|
21
|
-
|
|
20
|
+
const hasEdit = hasEditPermissions(datasetPermissions, profile?.sub) ||
|
|
21
|
+
isAdmin
|
|
22
22
|
return (
|
|
23
23
|
<>
|
|
24
24
|
<ShellExample>
|
|
@@ -51,9 +51,9 @@ const DownloadDataladInstructions = ({
|
|
|
51
51
|
<div>
|
|
52
52
|
<h4>Download with DataLad</h4>
|
|
53
53
|
<p>
|
|
54
|
-
Public datasets can be downloaded with{
|
|
55
|
-
<a href="https://www.datalad.org">DataLad</a> or{
|
|
56
|
-
<a href="https://git-annex.branchable.com/">Git Annex</a> from{
|
|
54
|
+
Public datasets can be downloaded with{" "}
|
|
55
|
+
<a href="https://www.datalad.org">DataLad</a> or{" "}
|
|
56
|
+
<a href="https://git-annex.branchable.com/">Git Annex</a> from{" "}
|
|
57
57
|
<a href={`https://github.com/${githubOrganization}/${datasetId}`}>
|
|
58
58
|
GitHub.
|
|
59
59
|
</a>
|
|
@@ -65,10 +65,10 @@ const DownloadDataladInstructions = ({
|
|
|
65
65
|
datasetPermissions={datasetPermissions}
|
|
66
66
|
/>
|
|
67
67
|
<p>
|
|
68
|
-
Check out{
|
|
68
|
+
Check out{" "}
|
|
69
69
|
<a href="https://handbook.datalad.org/en/latest/usecases/openneuro.html">
|
|
70
70
|
getting started with DataLad
|
|
71
|
-
</a>{
|
|
71
|
+
</a>{" "}
|
|
72
72
|
for more on how to use this download method.
|
|
73
73
|
</p>
|
|
74
74
|
</div>
|
|
@@ -81,13 +81,15 @@ DownloadDataladInstructions.propTypes = {
|
|
|
81
81
|
datasetPermissions: PropTypes.object,
|
|
82
82
|
}
|
|
83
83
|
|
|
84
|
-
const DownloadDatalad = props =>
|
|
84
|
+
const DownloadDatalad = (props) =>
|
|
85
85
|
// TODO - don't depend on async config
|
|
86
|
-
getConfig().hasOwnProperty(
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
86
|
+
getConfig().hasOwnProperty("github")
|
|
87
|
+
? (
|
|
88
|
+
<DownloadDataladInstructions
|
|
89
|
+
{...props}
|
|
90
|
+
githubOrganization={getConfig().github}
|
|
91
|
+
/>
|
|
92
|
+
)
|
|
93
|
+
: null
|
|
92
94
|
|
|
93
95
|
export default DownloadDatalad
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import React from
|
|
2
|
-
import PropTypes from
|
|
3
|
-
import { downloadNative } from
|
|
4
|
-
import { useApolloClient } from
|
|
5
|
-
import { Button } from
|
|
6
|
-
import { Link } from
|
|
1
|
+
import React from "react"
|
|
2
|
+
import PropTypes from "prop-types"
|
|
3
|
+
import { downloadNative } from "./download-native.js"
|
|
4
|
+
import { useApolloClient } from "@apollo/client"
|
|
5
|
+
import { Button } from "@openneuro/components/button"
|
|
6
|
+
import { Link } from "react-router-dom"
|
|
7
7
|
|
|
8
8
|
const DownloadLink = ({ datasetId, snapshotTag }) => {
|
|
9
9
|
const client = useApolloClient()
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import { trackDownload } from
|
|
1
|
+
import { trackDownload } from "./track-download.js"
|
|
2
2
|
import {
|
|
3
|
+
downloadAbortToast,
|
|
4
|
+
downloadCompleteToast,
|
|
3
5
|
downloadToast,
|
|
4
|
-
downloadToastUpdate,
|
|
5
6
|
downloadToastDone,
|
|
6
|
-
|
|
7
|
+
downloadToastUpdate,
|
|
7
8
|
nativeErrorToast,
|
|
8
9
|
permissionsToast,
|
|
9
|
-
downloadCompleteToast,
|
|
10
10
|
requestFailureToast,
|
|
11
|
-
} from
|
|
12
|
-
import { apm } from
|
|
13
|
-
import { downloadDataset } from
|
|
11
|
+
} from "./native-file-toast.jsx"
|
|
12
|
+
import { apm } from "../../apm.js"
|
|
13
|
+
import { downloadDataset } from "./download-query"
|
|
14
14
|
|
|
15
15
|
/**
|
|
16
16
|
* Given a file, create any missing parent directories, obtain directory handle, and return the file handle within that
|
|
@@ -20,7 +20,7 @@ import { downloadDataset } from './download-query'
|
|
|
20
20
|
export const openFileTree = async (initialDirectoryHandle, path) => {
|
|
21
21
|
let directoryHandle = initialDirectoryHandle
|
|
22
22
|
// Get list of any parent directories
|
|
23
|
-
const pathTokens = path.split(
|
|
23
|
+
const pathTokens = path.split("/")
|
|
24
24
|
const dirTokens = pathTokens.slice(0, -1)
|
|
25
25
|
const filename = pathTokens.slice(-1)
|
|
26
26
|
if (dirTokens.length > 0) {
|
|
@@ -36,7 +36,7 @@ export const openFileTree = async (initialDirectoryHandle, path) => {
|
|
|
36
36
|
class DownloadAbortError extends Error {
|
|
37
37
|
constructor(message) {
|
|
38
38
|
super(message)
|
|
39
|
-
this.name =
|
|
39
|
+
this.name = "DownloadAbortError"
|
|
40
40
|
}
|
|
41
41
|
}
|
|
42
42
|
|
|
@@ -47,7 +47,7 @@ let downloadCanceled
|
|
|
47
47
|
*/
|
|
48
48
|
const downloadTree = async (
|
|
49
49
|
{ datasetId, snapshotTag, client, apmTransaction, dirHandle, toastId },
|
|
50
|
-
path =
|
|
50
|
+
path = "",
|
|
51
51
|
tree = null,
|
|
52
52
|
) => {
|
|
53
53
|
const filesToDownload = await downloadDataset(client)({
|
|
@@ -74,7 +74,7 @@ const downloadTree = async (
|
|
|
74
74
|
} else {
|
|
75
75
|
// Regular file
|
|
76
76
|
if (downloadCanceled) {
|
|
77
|
-
throw new DownloadAbortError(
|
|
77
|
+
throw new DownloadAbortError("Download canceled by user request")
|
|
78
78
|
}
|
|
79
79
|
const fileHandle = await openFileTree(
|
|
80
80
|
dirHandle,
|
|
@@ -119,15 +119,16 @@ export const downloadNative = (datasetId, snapshotTag, client) => async () => {
|
|
|
119
119
|
} catch (err) {
|
|
120
120
|
apm.captureError(err)
|
|
121
121
|
}
|
|
122
|
-
const apmTransaction =
|
|
123
|
-
apm
|
|
124
|
-
if (apmTransaction)
|
|
122
|
+
const apmTransaction = apm &&
|
|
123
|
+
apm.startTransaction(`download:${datasetId}`, "download")
|
|
124
|
+
if (apmTransaction) {
|
|
125
125
|
apmTransaction.addLabels({ datasetId, snapshot: snapshotTag })
|
|
126
|
+
}
|
|
126
127
|
downloadCanceled = false
|
|
127
128
|
let toastId
|
|
128
129
|
try {
|
|
129
|
-
const apmSelect =
|
|
130
|
-
apmTransaction
|
|
130
|
+
const apmSelect = apmTransaction &&
|
|
131
|
+
apmTransaction.startSpan("showDirectoryPicker")
|
|
131
132
|
// Open user selected directory
|
|
132
133
|
const dirHandle = await window.showDirectoryPicker()
|
|
133
134
|
toastId = downloadToast(
|
|
@@ -147,11 +148,11 @@ export const downloadNative = (datasetId, snapshotTag, client) => async () => {
|
|
|
147
148
|
})
|
|
148
149
|
downloadCompleteToast(dirHandle.name)
|
|
149
150
|
} catch (err) {
|
|
150
|
-
if (err.name ===
|
|
151
|
+
if (err.name === "AbortError") {
|
|
151
152
|
return
|
|
152
|
-
} else if (err.name ===
|
|
153
|
+
} else if (err.name === "DownloadAbortError") {
|
|
153
154
|
downloadAbortToast()
|
|
154
|
-
} else if (err.name ===
|
|
155
|
+
} else if (err.name === "NotAllowedError") {
|
|
155
156
|
permissionsToast()
|
|
156
157
|
} else {
|
|
157
158
|
// Some unknown issue occurred (out of disk space, disk caught fire, etc...)
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import { datasets } from
|
|
1
|
+
import { datasets } from "@openneuro/client"
|
|
2
2
|
|
|
3
3
|
export const downloadDataset =
|
|
4
|
-
client =>
|
|
5
|
-
async ({ datasetId, snapshotTag, tree = null }) => {
|
|
4
|
+
(client) => async ({ datasetId, snapshotTag, tree = null }) => {
|
|
6
5
|
if (snapshotTag) {
|
|
7
6
|
const { data } = await client.query({
|
|
8
7
|
query: datasets.downloadSnapshot,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import React from
|
|
2
|
-
import PropTypes from
|
|
3
|
-
import ShellExample from
|
|
4
|
-
import { getConfig } from
|
|
1
|
+
import React from "react"
|
|
2
|
+
import PropTypes from "prop-types"
|
|
3
|
+
import ShellExample from "./shell-example.jsx"
|
|
4
|
+
import { getConfig } from "../../config"
|
|
5
5
|
|
|
6
6
|
export const DownloadSampleS3 = ({ datasetId, s3Bucket }) => (
|
|
7
7
|
<ShellExample>
|
|
@@ -37,10 +37,10 @@ DownloadS3Instructions.propTypes = {
|
|
|
37
37
|
s3Bucket: PropTypes.string,
|
|
38
38
|
}
|
|
39
39
|
|
|
40
|
-
const DownloadS3 = props =>
|
|
40
|
+
const DownloadS3 = (props) =>
|
|
41
41
|
// TODO - don't depend on async config
|
|
42
|
-
getConfig().hasOwnProperty(
|
|
43
|
-
<DownloadS3Instructions {...props} s3Bucket={getConfig().publicBucket} />
|
|
44
|
-
|
|
42
|
+
getConfig().hasOwnProperty("publicBucket")
|
|
43
|
+
? <DownloadS3Instructions {...props} s3Bucket={getConfig().publicBucket} />
|
|
44
|
+
: null
|
|
45
45
|
|
|
46
46
|
export default DownloadS3
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Generate a download script for this dataset
|
|
3
3
|
*/
|
|
4
|
-
import React from
|
|
5
|
-
import {
|
|
4
|
+
import React from "react"
|
|
5
|
+
import { gql, useLazyQuery } from "@apollo/client"
|
|
6
6
|
|
|
7
7
|
function inlineDownload(filename, data): void {
|
|
8
|
-
const element = document.createElement(
|
|
8
|
+
const element = document.createElement("a")
|
|
9
9
|
element.setAttribute(
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
"href",
|
|
11
|
+
"data:text/x-shellscript;charset=utf-8," + encodeURIComponent(data),
|
|
12
12
|
)
|
|
13
|
-
element.setAttribute(
|
|
13
|
+
element.setAttribute("download", filename)
|
|
14
14
|
|
|
15
|
-
element.style.display =
|
|
15
|
+
element.style.display = "none"
|
|
16
16
|
document.body.appendChild(element)
|
|
17
17
|
|
|
18
18
|
element.click()
|
|
@@ -21,7 +21,7 @@ function inlineDownload(filename, data): void {
|
|
|
21
21
|
}
|
|
22
22
|
|
|
23
23
|
function generateDownloadScript(data): string {
|
|
24
|
-
let script =
|
|
24
|
+
let script = "#!/bin/sh\n"
|
|
25
25
|
for (const f of data.snapshot.downloadFiles) {
|
|
26
26
|
script += `curl --create-dirs ${f.urls[0]} -o ${f.filename}\n`
|
|
27
27
|
}
|
|
@@ -57,7 +57,7 @@ export const DownloadScript = ({
|
|
|
57
57
|
datasetId: datasetId,
|
|
58
58
|
tag: snapshotTag,
|
|
59
59
|
},
|
|
60
|
-
errorPolicy:
|
|
60
|
+
errorPolicy: "all",
|
|
61
61
|
})
|
|
62
62
|
if (data) {
|
|
63
63
|
const script = generateDownloadScript(data)
|
|
@@ -74,17 +74,20 @@ export const DownloadScript = ({
|
|
|
74
74
|
Node.js.
|
|
75
75
|
</p>
|
|
76
76
|
<p>
|
|
77
|
-
{loading
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
77
|
+
{loading
|
|
78
|
+
? (
|
|
79
|
+
"Loading..."
|
|
80
|
+
)
|
|
81
|
+
: (
|
|
82
|
+
<a
|
|
83
|
+
href="#"
|
|
84
|
+
onClick={(): void => {
|
|
85
|
+
void getDownload()
|
|
86
|
+
}}
|
|
87
|
+
>
|
|
88
|
+
Download shell script
|
|
89
|
+
</a>
|
|
90
|
+
)}
|
|
88
91
|
</p>
|
|
89
92
|
</div>
|
|
90
93
|
)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import React from
|
|
2
|
-
import { toast } from
|
|
3
|
-
import ToastContent from
|
|
1
|
+
import React from "react"
|
|
2
|
+
import { toast } from "react-toastify"
|
|
3
|
+
import ToastContent from "../../common/partials/toast-content.jsx"
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* Write failures due to permissions (most likely)
|
|
@@ -41,12 +41,12 @@ export const nativeErrorToast = () => {
|
|
|
41
41
|
)
|
|
42
42
|
}
|
|
43
43
|
|
|
44
|
-
export const requestFailureToast = filename => {
|
|
44
|
+
export const requestFailureToast = (filename) => {
|
|
45
45
|
toast.error(
|
|
46
46
|
<ToastContent title="Download Error" body="A file failed to download">
|
|
47
47
|
<p>
|
|
48
|
-
{filename}
|
|
49
|
-
file.
|
|
48
|
+
{filename}{" "}
|
|
49
|
+
failed. Retry your download to reattempt downloading this file.
|
|
50
50
|
</p>
|
|
51
51
|
</ToastContent>,
|
|
52
52
|
)
|
|
@@ -56,11 +56,13 @@ export const requestFailureToast = filename => {
|
|
|
56
56
|
* Let the user know their download is done
|
|
57
57
|
* @param {string} dirName
|
|
58
58
|
*/
|
|
59
|
-
export const downloadCompleteToast = dirName => {
|
|
59
|
+
export const downloadCompleteToast = (dirName) => {
|
|
60
60
|
toast.success(
|
|
61
61
|
<ToastContent
|
|
62
62
|
title="Download Complete"
|
|
63
|
-
body={`See "${dirName}" directory for downloaded files`}
|
|
63
|
+
body={`See "${dirName}" directory for downloaded files`}
|
|
64
|
+
>
|
|
65
|
+
</ToastContent>,
|
|
64
66
|
{ autoClose: false },
|
|
65
67
|
)
|
|
66
68
|
}
|
|
@@ -76,7 +78,7 @@ export const downloadToast = (dirName, datasetId, snapshotId, onClose) => {
|
|
|
76
78
|
? `${datasetId} snapshot ${snapshotId} to local folder ${dirName}`
|
|
77
79
|
: `${datasetId} to local folder ${dirName}`
|
|
78
80
|
return toast(
|
|
79
|
-
<ToastContent title={
|
|
81
|
+
<ToastContent title={"Downloading"} body={downloadMessage}></ToastContent>,
|
|
80
82
|
{
|
|
81
83
|
progress: 0,
|
|
82
84
|
hideProgressBar: false,
|
|
@@ -97,7 +99,7 @@ export const downloadToastUpdate = (
|
|
|
97
99
|
: `${datasetId} to local folder ${dirName}`
|
|
98
100
|
toast.update(toastId, {
|
|
99
101
|
render: (
|
|
100
|
-
<ToastContent title={
|
|
102
|
+
<ToastContent title={"Downloading"} body={downloadMessage}>
|
|
101
103
|
{downloadPath}
|
|
102
104
|
</ToastContent>
|
|
103
105
|
),
|
|
@@ -105,4 +107,4 @@ export const downloadToastUpdate = (
|
|
|
105
107
|
})
|
|
106
108
|
}
|
|
107
109
|
|
|
108
|
-
export const downloadToastDone = toastId => toast.done(toastId)
|
|
110
|
+
export const downloadToastDone = (toastId) => toast.done(toastId)
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import { event } from
|
|
2
|
-
import { trackAnalytics } from
|
|
1
|
+
import { event } from "../../utils/gtag"
|
|
2
|
+
import { trackAnalytics } from "../../utils/datalad"
|
|
3
3
|
|
|
4
4
|
export const trackDownload = (client, datasetId, snapshotTag) => {
|
|
5
5
|
event({
|
|
6
|
-
category:
|
|
7
|
-
action:
|
|
6
|
+
category: "Download",
|
|
7
|
+
action: "Started web download",
|
|
8
8
|
label: snapshotTag ? `${datasetId}:${snapshotTag}` : datasetId,
|
|
9
9
|
})
|
|
10
10
|
trackAnalytics(client, datasetId, {
|
|
11
11
|
snapshot: true,
|
|
12
12
|
tag: snapshotTag,
|
|
13
|
-
type:
|
|
13
|
+
type: "downloads",
|
|
14
14
|
})
|
|
15
15
|
}
|