@openneuro/app 4.20.4 → 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,10 +1,10 @@
|
|
|
1
|
-
import React, { useState } from
|
|
2
|
-
import TextInput from
|
|
3
|
-
import SelectInput from
|
|
4
|
-
import { DOILink, DOIPattern } from
|
|
5
|
-
import {
|
|
6
|
-
import styled from
|
|
7
|
-
import { Button } from
|
|
1
|
+
import React, { useState } from "react"
|
|
2
|
+
import TextInput from "../fragments/text-input"
|
|
3
|
+
import SelectInput from "../fragments/select-input"
|
|
4
|
+
import { DOILink, DOIPattern } from "../fragments/doi-link"
|
|
5
|
+
import { gql, useApolloClient, useMutation, useQuery } from "@apollo/client"
|
|
6
|
+
import styled from "@emotion/styled"
|
|
7
|
+
import { Button } from "@openneuro/components/button"
|
|
8
8
|
|
|
9
9
|
const getDatasetRelations = gql`
|
|
10
10
|
query getDatasetRelations($datasetId: ID!) {
|
|
@@ -51,24 +51,24 @@ const deleteDatasetRelation = gql`
|
|
|
51
51
|
`
|
|
52
52
|
|
|
53
53
|
const TableContainer = styled.div({
|
|
54
|
-
display:
|
|
55
|
-
gridTemplateColumns:
|
|
54
|
+
display: "grid",
|
|
55
|
+
gridTemplateColumns: "2fr 3fr 1fr",
|
|
56
56
|
})
|
|
57
57
|
|
|
58
58
|
const GridItem = styled.div({
|
|
59
|
-
padding:
|
|
59
|
+
padding: "8px",
|
|
60
60
|
})
|
|
61
61
|
|
|
62
62
|
const InputGroup = styled.div({
|
|
63
|
-
paddingBottom:
|
|
63
|
+
paddingBottom: "8px",
|
|
64
64
|
})
|
|
65
65
|
|
|
66
66
|
export const DatasetRelations = ({ datasetId, hasEdit }) => {
|
|
67
67
|
const [newRelation, setNewRelation] = useState({
|
|
68
|
-
doi:
|
|
69
|
-
description:
|
|
70
|
-
relation:
|
|
71
|
-
kind:
|
|
68
|
+
doi: "",
|
|
69
|
+
description: "",
|
|
70
|
+
relation: "sameAs",
|
|
71
|
+
kind: "Dataset",
|
|
72
72
|
})
|
|
73
73
|
const { data, loading, refetch } = useQuery(getDatasetRelations, {
|
|
74
74
|
variables: { datasetId },
|
|
@@ -81,7 +81,7 @@ export const DatasetRelations = ({ datasetId, hasEdit }) => {
|
|
|
81
81
|
if (related) {
|
|
82
82
|
loadedData = (
|
|
83
83
|
<TableContainer>
|
|
84
|
-
{related.map(obj => {
|
|
84
|
+
{related.map((obj) => {
|
|
85
85
|
return (
|
|
86
86
|
<React.Fragment key={obj.id}>
|
|
87
87
|
<GridItem>
|
|
@@ -96,7 +96,8 @@ export const DatasetRelations = ({ datasetId, hasEdit }) => {
|
|
|
96
96
|
variables: { datasetId, doi: obj.id },
|
|
97
97
|
})
|
|
98
98
|
await refetch()
|
|
99
|
-
}}
|
|
99
|
+
}}
|
|
100
|
+
>
|
|
100
101
|
Delete
|
|
101
102
|
</button>
|
|
102
103
|
</GridItem>
|
|
@@ -112,7 +113,7 @@ export const DatasetRelations = ({ datasetId, hasEdit }) => {
|
|
|
112
113
|
<>
|
|
113
114
|
<p>
|
|
114
115
|
Add a related DOI such as other repositories where this dataset can be
|
|
115
|
-
found. DOI values should be formatted according to the{
|
|
116
|
+
found. DOI values should be formatted according to the{" "}
|
|
116
117
|
<a href="https://bids-specification.readthedocs.io/en/stable/02-common-principles.html#uniform-resource-indicator">
|
|
117
118
|
BIDS recommended URI format
|
|
118
119
|
</a>
|
|
@@ -146,9 +147,9 @@ export const DatasetRelations = ({ datasetId, hasEdit }) => {
|
|
|
146
147
|
setNewRelation({ ...newRelation, relation: value })
|
|
147
148
|
}}
|
|
148
149
|
options={[
|
|
149
|
-
{ value:
|
|
150
|
-
{ value:
|
|
151
|
-
{ value:
|
|
150
|
+
{ value: "sameAs" },
|
|
151
|
+
{ value: "source" },
|
|
152
|
+
{ value: "derivative" },
|
|
152
153
|
]}
|
|
153
154
|
/>
|
|
154
155
|
<SelectInput
|
|
@@ -158,7 +159,7 @@ export const DatasetRelations = ({ datasetId, hasEdit }) => {
|
|
|
158
159
|
onChange={(name, value) => {
|
|
159
160
|
setNewRelation({ ...newRelation, kind: value })
|
|
160
161
|
}}
|
|
161
|
-
options={[{ value:
|
|
162
|
+
options={[{ value: "Dataset" }, { value: "Article" }]}
|
|
162
163
|
/>
|
|
163
164
|
</InputGroup>
|
|
164
165
|
<Button
|
|
@@ -167,7 +168,7 @@ export const DatasetRelations = ({ datasetId, hasEdit }) => {
|
|
|
167
168
|
label="Add DOI Relation"
|
|
168
169
|
size="small"
|
|
169
170
|
type="submit"
|
|
170
|
-
onClick={async e => {
|
|
171
|
+
onClick={async (e) => {
|
|
171
172
|
e.preventDefault()
|
|
172
173
|
await createRelation({
|
|
173
174
|
variables: { datasetId, ...newRelation },
|
|
@@ -175,12 +176,10 @@ export const DatasetRelations = ({ datasetId, hasEdit }) => {
|
|
|
175
176
|
await refetch()
|
|
176
177
|
}}
|
|
177
178
|
// Disable if DOI pattern does not match
|
|
178
|
-
disabled={
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
)
|
|
183
|
-
}
|
|
179
|
+
disabled={!(
|
|
180
|
+
newRelation.doi.startsWith("doi:") &&
|
|
181
|
+
DOIPattern.exec(newRelation.doi.slice(4))
|
|
182
|
+
)}
|
|
184
183
|
/>
|
|
185
184
|
</div>
|
|
186
185
|
)}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import React, { FC } from
|
|
2
|
-
import { gql, useMutation } from
|
|
3
|
-
import { WarnButton } from
|
|
4
|
-
import { DATASET_REVIEWERS } from
|
|
1
|
+
import React, { FC } from "react"
|
|
2
|
+
import { gql, useMutation } from "@apollo/client"
|
|
3
|
+
import { WarnButton } from "@openneuro/components/warn-button"
|
|
4
|
+
import { DATASET_REVIEWERS } from "../fragments/dataset-reviewers"
|
|
5
5
|
|
|
6
6
|
const DELETE_REVIEWER = gql`
|
|
7
7
|
mutation deleteReviewer($datasetId: ID!, $id: ID!) {
|
|
@@ -31,13 +31,13 @@ export const DeleteReviewerLink: FC<DeleteReviewerLinkProps> = ({
|
|
|
31
31
|
fragment: DATASET_REVIEWERS,
|
|
32
32
|
})
|
|
33
33
|
const updatedReviewers = reviewers.filter(
|
|
34
|
-
reviewer => reviewer.id !== deleteReviewer.id,
|
|
34
|
+
(reviewer) => reviewer.id !== deleteReviewer.id,
|
|
35
35
|
)
|
|
36
36
|
cache.writeFragment({
|
|
37
37
|
id: `Dataset:${datasetId}`,
|
|
38
38
|
fragment: DATASET_REVIEWERS,
|
|
39
39
|
data: {
|
|
40
|
-
__typename:
|
|
40
|
+
__typename: "Dataset",
|
|
41
41
|
id: datasetId,
|
|
42
42
|
reviewers: updatedReviewers,
|
|
43
43
|
},
|
|
@@ -53,8 +53,7 @@ export const DeleteReviewerLink: FC<DeleteReviewerLinkProps> = ({
|
|
|
53
53
|
setDisplayOptions={setDisplayOptions}
|
|
54
54
|
withLabel={true}
|
|
55
55
|
onConfirmedClick={() =>
|
|
56
|
-
DeleteReviewerLink({ variables: { datasetId, id } })
|
|
57
|
-
}
|
|
56
|
+
DeleteReviewerLink({ variables: { datasetId, id } })}
|
|
58
57
|
/>
|
|
59
58
|
)
|
|
60
59
|
}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import React from
|
|
2
|
-
import PropTypes from
|
|
3
|
-
import { gql } from
|
|
4
|
-
import { Mutation } from
|
|
5
|
-
import { DATASET_COMMENTS } from
|
|
6
|
-
import { datasetCacheId } from
|
|
7
|
-
import { Icon } from
|
|
1
|
+
import React from "react"
|
|
2
|
+
import PropTypes from "prop-types"
|
|
3
|
+
import { gql } from "@apollo/client"
|
|
4
|
+
import { Mutation } from "@apollo/client/react/components"
|
|
5
|
+
import { DATASET_COMMENTS } from "../fragments/comments-fragments"
|
|
6
|
+
import { datasetCacheId } from "./cache-id.js"
|
|
7
|
+
import { Icon } from "@openneuro/components/icon"
|
|
8
8
|
|
|
9
9
|
const deleteComment = gql`
|
|
10
10
|
mutation deleteComment($commentId: ID!, $deleteChildren: Boolean) {
|
|
@@ -22,7 +22,7 @@ const deleteComment = gql`
|
|
|
22
22
|
export const deleteCommentsReducer = (comments, { deletedCommentIds }) => {
|
|
23
23
|
// Must copy with freezeResults enabled
|
|
24
24
|
const nextCommentsState = [...comments].filter(
|
|
25
|
-
c => !deletedCommentIds.includes(c.id),
|
|
25
|
+
(c) => !deletedCommentIds.includes(c.id),
|
|
26
26
|
)
|
|
27
27
|
return nextCommentsState
|
|
28
28
|
}
|
|
@@ -44,13 +44,14 @@ const DeleteComment = ({ datasetId, commentId }) => {
|
|
|
44
44
|
id: datasetCacheId(datasetId),
|
|
45
45
|
fragment: DATASET_COMMENTS,
|
|
46
46
|
data: {
|
|
47
|
-
__typename:
|
|
47
|
+
__typename: "Dataset",
|
|
48
48
|
id: datasetId,
|
|
49
49
|
comments: nextCommentsState,
|
|
50
50
|
},
|
|
51
51
|
})
|
|
52
|
-
}}
|
|
53
|
-
|
|
52
|
+
}}
|
|
53
|
+
>
|
|
54
|
+
{(deleteComment) => (
|
|
54
55
|
<div className="col col-fixed">
|
|
55
56
|
<a
|
|
56
57
|
className="edit"
|
|
@@ -61,7 +62,8 @@ const DeleteComment = ({ datasetId, commentId }) => {
|
|
|
61
62
|
deleteChildren: true,
|
|
62
63
|
},
|
|
63
64
|
})
|
|
64
|
-
}}
|
|
65
|
+
}}
|
|
66
|
+
>
|
|
65
67
|
<Icon icon="fa fa-trash" label="Delete" />
|
|
66
68
|
</a>
|
|
67
69
|
</div>
|
|
@@ -1,46 +1,44 @@
|
|
|
1
|
-
import React from
|
|
2
|
-
import PropTypes from
|
|
3
|
-
import TextInput from
|
|
4
|
-
import SelectInput from
|
|
5
|
-
import styled from
|
|
1
|
+
import React from "react"
|
|
2
|
+
import PropTypes from "prop-types"
|
|
3
|
+
import TextInput from "../fragments/text-input"
|
|
4
|
+
import SelectInput from "../fragments/select-input"
|
|
5
|
+
import styled from "@emotion/styled"
|
|
6
6
|
|
|
7
7
|
const Form = styled.form({
|
|
8
|
-
width:
|
|
9
|
-
maxWidth:
|
|
10
|
-
margin:
|
|
8
|
+
width: "100%",
|
|
9
|
+
maxWidth: "700px",
|
|
10
|
+
margin: "10px 0",
|
|
11
11
|
})
|
|
12
12
|
|
|
13
|
-
const fields = hasEdit => {
|
|
13
|
+
const fields = (hasEdit) => {
|
|
14
14
|
const fields = [
|
|
15
15
|
{
|
|
16
|
-
key:
|
|
17
|
-
label:
|
|
16
|
+
key: "reason",
|
|
17
|
+
label: "Reason",
|
|
18
18
|
component: SelectInput,
|
|
19
19
|
additionalProps: {
|
|
20
20
|
options: [
|
|
21
|
-
{ value:
|
|
22
|
-
{ value:
|
|
23
|
-
{ value:
|
|
21
|
+
{ value: "subject privacy" },
|
|
22
|
+
{ value: "duplicate dataset" },
|
|
23
|
+
{ value: "abuse of service", admin: true },
|
|
24
24
|
],
|
|
25
25
|
showOptionOther: true,
|
|
26
26
|
required: false,
|
|
27
27
|
},
|
|
28
28
|
},
|
|
29
29
|
{
|
|
30
|
-
key:
|
|
31
|
-
label:
|
|
30
|
+
key: "redirect",
|
|
31
|
+
label: "Superseded by (URL)",
|
|
32
32
|
component: TextInput,
|
|
33
33
|
additionalProps: {
|
|
34
34
|
required: false,
|
|
35
35
|
},
|
|
36
36
|
},
|
|
37
37
|
]
|
|
38
|
-
return hasEdit
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
return field
|
|
43
|
-
})
|
|
38
|
+
return hasEdit ? fields : fields.map((field) => {
|
|
39
|
+
field.additionalProps.disabled = true
|
|
40
|
+
return field
|
|
41
|
+
})
|
|
44
42
|
}
|
|
45
43
|
|
|
46
44
|
const DeleteDatasetForm = ({ values, onChange, hasEdit }) => (
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import React from
|
|
2
|
-
import PropTypes from
|
|
3
|
-
import { gql, useMutation } from
|
|
4
|
-
import { WarnButton } from
|
|
1
|
+
import React from "react"
|
|
2
|
+
import PropTypes from "prop-types"
|
|
3
|
+
import { gql, useMutation } from "@apollo/client"
|
|
4
|
+
import { WarnButton } from "@openneuro/components/warn-button"
|
|
5
5
|
|
|
6
6
|
const DELETE_FILE = gql`
|
|
7
7
|
mutation deleteFiles($datasetId: ID!, $files: [DeleteFile]) {
|
|
@@ -13,7 +13,7 @@ const DELETE_FILE = gql`
|
|
|
13
13
|
* Given a file object, path/filename for deletion, and a list of currently loaded files, filter any that will be deleted and orphan directories
|
|
14
14
|
*/
|
|
15
15
|
export function fileCacheDeleteFilter(file, path, filename, cachedFileObjects) {
|
|
16
|
-
const fullPath = [path, filename].filter(Boolean).join(
|
|
16
|
+
const fullPath = [path, filename].filter(Boolean).join(":")
|
|
17
17
|
if (file.filename === fullPath) {
|
|
18
18
|
return false
|
|
19
19
|
} else {
|
|
@@ -45,7 +45,7 @@ const DeleteFile = ({ datasetId, path, filename }) => {
|
|
|
45
45
|
fields: {
|
|
46
46
|
files(cachedFiles) {
|
|
47
47
|
// Filter any removed files from the Draft.files cache
|
|
48
|
-
const cachedFileObjects = cachedFiles.map(f =>
|
|
48
|
+
const cachedFileObjects = cachedFiles.map((f) =>
|
|
49
49
|
cache.readFragment({
|
|
50
50
|
id: cache.identify(f),
|
|
51
51
|
fragment: gql`
|
|
@@ -56,9 +56,9 @@ const DeleteFile = ({ datasetId, path, filename }) => {
|
|
|
56
56
|
directory
|
|
57
57
|
}
|
|
58
58
|
`,
|
|
59
|
-
})
|
|
59
|
+
})
|
|
60
60
|
)
|
|
61
|
-
const remainingFiles = cachedFiles.filter(f => {
|
|
61
|
+
const remainingFiles = cachedFiles.filter((f) => {
|
|
62
62
|
// Get the cache key for each file we have loaded
|
|
63
63
|
const file = cache.readFragment({
|
|
64
64
|
id: cache.identify(f),
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import React from
|
|
2
|
-
import PropTypes from
|
|
3
|
-
import { gql } from
|
|
4
|
-
import { Mutation } from
|
|
1
|
+
import React from "react"
|
|
2
|
+
import PropTypes from "prop-types"
|
|
3
|
+
import { gql } from "@apollo/client"
|
|
4
|
+
import { Mutation } from "@apollo/client/react/components"
|
|
5
5
|
|
|
6
6
|
export const DELETE_DATASET = gql`
|
|
7
7
|
mutation deleteDataset($id: ID!, $reason: String, $redirect: String) {
|
|
@@ -11,18 +11,18 @@ export const DELETE_DATASET = gql`
|
|
|
11
11
|
|
|
12
12
|
const DeleteDataset = ({ datasetId, metadata }) => {
|
|
13
13
|
const [warn, setWarn] = React.useState(false)
|
|
14
|
-
const handleClick = deleteDataset => () => {
|
|
14
|
+
const handleClick = (deleteDataset) => () => {
|
|
15
15
|
if (!warn) setWarn(true)
|
|
16
16
|
else deleteDataset()
|
|
17
17
|
}
|
|
18
18
|
|
|
19
19
|
return (
|
|
20
20
|
<Mutation mutation={DELETE_DATASET}>
|
|
21
|
-
{deleteDataset => (
|
|
21
|
+
{(deleteDataset) => (
|
|
22
22
|
<span>
|
|
23
23
|
<button
|
|
24
24
|
className="on-button on-button--primary on-button--small"
|
|
25
|
-
style={{ backgroundColor: warn ?
|
|
25
|
+
style={{ backgroundColor: warn ? "red" : null }}
|
|
26
26
|
onClick={handleClick(async () => {
|
|
27
27
|
await deleteDataset({
|
|
28
28
|
variables: {
|
|
@@ -34,9 +34,10 @@ const DeleteDataset = ({ datasetId, metadata }) => {
|
|
|
34
34
|
window.location.replace(
|
|
35
35
|
`${window.location.origin}/dashboard/datasets`,
|
|
36
36
|
)
|
|
37
|
-
})}
|
|
37
|
+
})}
|
|
38
|
+
>
|
|
38
39
|
<i className="fa fa-trash" />
|
|
39
|
-
{warn ?
|
|
40
|
+
{warn ? " Confirm Delete" : " Delete Dataset"}
|
|
40
41
|
</button>
|
|
41
42
|
</span>
|
|
42
43
|
)}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import React, { FC } from
|
|
2
|
-
import { gql, useMutation } from
|
|
3
|
-
import { Button } from
|
|
4
|
-
import { useNavigate } from
|
|
1
|
+
import React, { FC } from "react"
|
|
2
|
+
import { gql, useMutation } from "@apollo/client"
|
|
3
|
+
import { Button } from "@openneuro/components/button"
|
|
4
|
+
import { useNavigate } from "react-router-dom"
|
|
5
5
|
|
|
6
6
|
export const DEPRECATE_VERSION = gql`
|
|
7
7
|
mutation deprecateSnapshot($datasetId: ID!, $tag: String!, $reason: String!) {
|
|
@@ -39,8 +39,7 @@ export const DeprecateVersion: FC<DeprecateVersionProps> = ({
|
|
|
39
39
|
variables: { datasetId, tag, reason },
|
|
40
40
|
}).then(() => {
|
|
41
41
|
navigate(`/datasets/${datasetId}/versions/${tag}`)
|
|
42
|
-
})
|
|
43
|
-
}
|
|
42
|
+
})}
|
|
44
43
|
/>
|
|
45
44
|
)
|
|
46
45
|
}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import React from
|
|
2
|
-
import PropTypes from
|
|
3
|
-
import { gql } from
|
|
4
|
-
import { Mutation } from
|
|
5
|
-
import { SaveButton } from
|
|
6
|
-
import { DRAFT_FRAGMENT } from
|
|
7
|
-
import { datasetCacheId } from
|
|
1
|
+
import React from "react"
|
|
2
|
+
import PropTypes from "prop-types"
|
|
3
|
+
import { gql } from "@apollo/client"
|
|
4
|
+
import { Mutation } from "@apollo/client/react/components"
|
|
5
|
+
import { SaveButton } from "../fragments/save-button"
|
|
6
|
+
import { DRAFT_FRAGMENT } from "../../datalad/dataset/dataset-query-fragments"
|
|
7
|
+
import { datasetCacheId } from "./cache-id.js"
|
|
8
8
|
|
|
9
9
|
export const UPDATE_DESCRIPTION = gql`
|
|
10
10
|
mutation updateDescription(
|
|
@@ -56,7 +56,7 @@ export const mergeFieldValue = (
|
|
|
56
56
|
updateDescription,
|
|
57
57
|
updateDescriptionList,
|
|
58
58
|
) => ({
|
|
59
|
-
__typename:
|
|
59
|
+
__typename: "Dataset",
|
|
60
60
|
id: datasetId,
|
|
61
61
|
draft: {
|
|
62
62
|
...draft,
|
|
@@ -95,8 +95,9 @@ const UpdateDescription = ({ datasetId, field, value, done }) => {
|
|
|
95
95
|
updateDescriptionList,
|
|
96
96
|
),
|
|
97
97
|
})
|
|
98
|
-
}}
|
|
99
|
-
|
|
98
|
+
}}
|
|
99
|
+
>
|
|
100
|
+
{(updateDescription) => (
|
|
100
101
|
<SaveButton
|
|
101
102
|
action={async () => {
|
|
102
103
|
await updateDescription({ variables: { datasetId, field, value } })
|
|
@@ -111,16 +112,16 @@ const UpdateDescription = ({ datasetId, field, value, done }) => {
|
|
|
111
112
|
UpdateDescription.propTypes = {
|
|
112
113
|
datasetId: PropTypes.string,
|
|
113
114
|
field: PropTypes.oneOf([
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
115
|
+
"Name",
|
|
116
|
+
"BIDSVersion",
|
|
117
|
+
"License",
|
|
118
|
+
"Authors",
|
|
119
|
+
"Acknowledgements",
|
|
120
|
+
"HowToAcknowledge",
|
|
121
|
+
"Funding",
|
|
122
|
+
"ReferencesAndLinks",
|
|
123
|
+
"DatasetDOI",
|
|
124
|
+
"EthicsApprovals",
|
|
124
125
|
]),
|
|
125
126
|
value: PropTypes.oneOfType([PropTypes.string, PropTypes.array]),
|
|
126
127
|
done: PropTypes.func,
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import React from
|
|
2
|
-
import PropTypes from
|
|
3
|
-
import { gql } from
|
|
4
|
-
import { Mutation } from
|
|
5
|
-
import { WarnButton } from
|
|
6
|
-
import { Tooltip } from
|
|
1
|
+
import React from "react"
|
|
2
|
+
import PropTypes from "prop-types"
|
|
3
|
+
import { gql } from "@apollo/client"
|
|
4
|
+
import { Mutation } from "@apollo/client/react/components"
|
|
5
|
+
import { WarnButton } from "@openneuro/components/warn-button"
|
|
6
|
+
import { Tooltip } from "@openneuro/components/tooltip"
|
|
7
7
|
|
|
8
8
|
const FLAG_ANNEX_OBJECT = gql`
|
|
9
9
|
mutation flagAnnexObject(
|
|
@@ -23,11 +23,12 @@ const FLAG_ANNEX_OBJECT = gql`
|
|
|
23
23
|
|
|
24
24
|
const FlagAnnexObject = ({ datasetId, snapshot, filepath, annexKey }) => (
|
|
25
25
|
<Mutation mutation={FLAG_ANNEX_OBJECT} awaitRefetchQueries={true}>
|
|
26
|
-
{flagAnnexObject => (
|
|
26
|
+
{(flagAnnexObject) => (
|
|
27
27
|
// fa-exclamation-triangle might be better
|
|
28
28
|
<Tooltip
|
|
29
29
|
className="flag-annex-object"
|
|
30
|
-
tooltip="Flag: use this to alert site admins if this file has been found to contain subject sensitive data."
|
|
30
|
+
tooltip="Flag: use this to alert site admins if this file has been found to contain subject sensitive data."
|
|
31
|
+
>
|
|
31
32
|
<WarnButton
|
|
32
33
|
message=""
|
|
33
34
|
icon="fa-exclamation-triangle"
|
|
@@ -37,7 +38,7 @@ const FlagAnnexObject = ({ datasetId, snapshot, filepath, annexKey }) => (
|
|
|
37
38
|
flagAnnexObject({
|
|
38
39
|
variables: {
|
|
39
40
|
datasetId,
|
|
40
|
-
snapshot: snapshot ||
|
|
41
|
+
snapshot: snapshot || "HEAD",
|
|
41
42
|
filepath,
|
|
42
43
|
annexKey,
|
|
43
44
|
},
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import React, { FC, useContext } from
|
|
2
|
-
import { gql } from
|
|
3
|
-
import { Mutation } from
|
|
4
|
-
import { datasetCacheId } from
|
|
5
|
-
import { CountToggle } from
|
|
6
|
-
import { UserModalOpenCtx } from
|
|
1
|
+
import React, { FC, useContext } from "react"
|
|
2
|
+
import { gql } from "@apollo/client"
|
|
3
|
+
import { Mutation } from "@apollo/client/react/components"
|
|
4
|
+
import { datasetCacheId } from "../../datalad/mutations/cache-id.js"
|
|
5
|
+
import { CountToggle } from "@openneuro/components/count-toggle"
|
|
6
|
+
import { UserModalOpenCtx } from "../../utils/user-login-modal-ctx"
|
|
7
7
|
|
|
8
8
|
const FOLLOW_DATASET = gql`
|
|
9
9
|
mutation followDataset($datasetId: ID!) {
|
|
@@ -45,7 +45,7 @@ export const FollowDataset: FC<FollowDatasetProps> = ({
|
|
|
45
45
|
followers,
|
|
46
46
|
}) => {
|
|
47
47
|
const { setUserModalOpen } = useContext(UserModalOpenCtx)
|
|
48
|
-
const handleToggle = followDataset => () => {
|
|
48
|
+
const handleToggle = (followDataset) => () => {
|
|
49
49
|
if (!profile) {
|
|
50
50
|
// if user is not logged in, give them the option to do so
|
|
51
51
|
// then redirect back to this page
|
|
@@ -64,7 +64,7 @@ export const FollowDataset: FC<FollowDatasetProps> = ({
|
|
|
64
64
|
id: datasetCacheId(datasetId),
|
|
65
65
|
fragment: USER_FOLLOWING,
|
|
66
66
|
data: {
|
|
67
|
-
__typename:
|
|
67
|
+
__typename: "Dataset",
|
|
68
68
|
id: datasetId,
|
|
69
69
|
following: following,
|
|
70
70
|
},
|
|
@@ -78,19 +78,20 @@ export const FollowDataset: FC<FollowDatasetProps> = ({
|
|
|
78
78
|
id: datasetCacheId(datasetId),
|
|
79
79
|
fragment: DATASET_FOLLOWERS,
|
|
80
80
|
data: {
|
|
81
|
-
__typename:
|
|
81
|
+
__typename: "Dataset",
|
|
82
82
|
id: datasetId,
|
|
83
83
|
followers: following
|
|
84
84
|
? [...followers, newFollower]
|
|
85
85
|
: followers.filter(
|
|
86
|
-
|
|
87
|
-
|
|
86
|
+
(follower) => follower.userId !== newFollower.userId,
|
|
87
|
+
),
|
|
88
88
|
},
|
|
89
89
|
})
|
|
90
|
-
}}
|
|
91
|
-
|
|
90
|
+
}}
|
|
91
|
+
>
|
|
92
|
+
{(followDataset) => (
|
|
92
93
|
<CountToggle
|
|
93
|
-
label={following ?
|
|
94
|
+
label={following ? "Following" : "Follow"}
|
|
94
95
|
icon="fa-star"
|
|
95
96
|
disabled={!profile}
|
|
96
97
|
toggleClick={handleToggle(followDataset)}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import React, { FC, useState } from
|
|
2
|
-
import { gql,
|
|
3
|
-
import { Button } from
|
|
4
|
-
import { createDataset } from
|
|
5
|
-
import styled from
|
|
1
|
+
import React, { FC, useState } from "react"
|
|
2
|
+
import { gql, useApolloClient, useMutation } from "@apollo/client"
|
|
3
|
+
import { Button } from "@openneuro/components/button"
|
|
4
|
+
import { createDataset } from "../../uploader/upload-mutation"
|
|
5
|
+
import styled from "@emotion/styled"
|
|
6
6
|
|
|
7
7
|
export const IMPORT_DATASET = gql`
|
|
8
8
|
mutation importRemoteDataset($datasetId: ID!, $url: String!) {
|