@openneuro/app 4.4.10 → 4.6.0-alpha.0

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.
Files changed (288) hide show
  1. package/package.json +5 -5
  2. package/src/scripts/app.tsx +1 -1
  3. package/src/scripts/{refactor_2021/authentication → authentication}/__tests__/profile.spec.js +0 -0
  4. package/src/scripts/{refactor_2021/authentication → authentication}/admin-user.jsx +0 -0
  5. package/src/scripts/{refactor_2021/authentication → authentication}/logged-in.jsx +0 -0
  6. package/src/scripts/{refactor_2021/authentication → authentication}/logged-out.jsx +0 -0
  7. package/src/scripts/{refactor_2021/authentication → authentication}/loginCheck.js +0 -0
  8. package/src/scripts/{refactor_2021/authentication → authentication}/loginUrls.ts +1 -1
  9. package/src/scripts/{refactor_2021/authentication → authentication}/profile.js +0 -0
  10. package/src/scripts/{refactor_2021/authentication → authentication}/signOut.ts +0 -0
  11. package/src/scripts/{refactor_2021/authentication → authentication}/withProfile.jsx +0 -0
  12. package/src/scripts/{refactor_2021/common → common}/block-navigation.jsx +0 -0
  13. package/src/scripts/{refactor_2021 → common}/containers/footer.tsx +0 -0
  14. package/src/scripts/{refactor_2021 → common}/containers/header.tsx +17 -15
  15. package/src/scripts/{datalad/fragments → common/partials}/freshdesk-widget.jsx +1 -1
  16. package/src/scripts/datalad/dataset/dataset-query-fragments.js +2 -0
  17. package/src/scripts/{refactor_2021/dataset → dataset}/comments/__tests__/__snapshots__/comment.spec.jsx.snap +0 -0
  18. package/src/scripts/{refactor_2021/dataset → dataset}/comments/__tests__/__snapshots__/comments.spec.jsx.snap +0 -0
  19. package/src/scripts/{refactor_2021/dataset → dataset}/comments/__tests__/comment.spec.jsx +0 -0
  20. package/src/scripts/{refactor_2021/dataset → dataset}/comments/__tests__/comments.spec.jsx +0 -0
  21. package/src/scripts/{refactor_2021/dataset → dataset}/comments/block-style-controls.jsx +0 -0
  22. package/src/scripts/{refactor_2021/dataset → dataset}/comments/comment-editor.jsx +0 -0
  23. package/src/scripts/{refactor_2021/dataset → dataset}/comments/comment.jsx +0 -0
  24. package/src/scripts/{refactor_2021/dataset → dataset}/comments/comments.jsx +1 -1
  25. package/src/scripts/{refactor_2021/dataset → dataset}/comments/inline-style-controls.jsx +0 -0
  26. package/src/scripts/{refactor_2021/dataset → dataset}/comments/style-button.jsx +0 -0
  27. package/src/scripts/{refactor_2021/dataset → dataset}/dataset-query-context.js +0 -0
  28. package/src/scripts/{refactor_2021/dataset → dataset}/dataset-query.jsx +15 -15
  29. package/src/scripts/dataset/dataset-routes.jsx +39 -0
  30. package/src/scripts/{refactor_2021/dataset → dataset}/download/__tests__/__snapshots__/download-command-line.spec.jsx.snap +0 -0
  31. package/src/scripts/{refactor_2021/dataset → dataset}/download/__tests__/__snapshots__/download-link.spec.jsx.snap +0 -0
  32. package/src/scripts/{refactor_2021/dataset → dataset}/download/__tests__/__snapshots__/shell-example.spec.jsx.snap +0 -0
  33. package/src/scripts/{refactor_2021/dataset → dataset}/download/__tests__/download-command-line.spec.jsx +0 -0
  34. package/src/scripts/{refactor_2021/dataset → dataset}/download/__tests__/download-link.spec.jsx +0 -0
  35. package/src/scripts/{refactor_2021/dataset → dataset}/download/__tests__/download-native.spec.js +0 -0
  36. package/src/scripts/{refactor_2021/dataset → dataset}/download/__tests__/shell-example.spec.jsx +0 -0
  37. package/src/scripts/{refactor_2021/dataset → dataset}/download/download-command-line.jsx +0 -0
  38. package/src/scripts/{refactor_2021/dataset → dataset}/download/download-datalad.jsx +1 -1
  39. package/src/scripts/{refactor_2021/dataset → dataset}/download/download-link.jsx +0 -0
  40. package/src/scripts/{refactor_2021/dataset → dataset}/download/download-native.js +1 -1
  41. package/src/scripts/{refactor_2021/dataset → dataset}/download/download-query.js +0 -0
  42. package/src/scripts/{refactor_2021/dataset → dataset}/download/download-s3.jsx +1 -1
  43. package/src/scripts/{refactor_2021/dataset → dataset}/download/native-file-toast.jsx +0 -0
  44. package/src/scripts/{refactor_2021/dataset → dataset}/download/shell-example.jsx +0 -0
  45. package/src/scripts/{refactor_2021/dataset → dataset}/download/track-download.js +0 -0
  46. package/src/scripts/dataset/draft-container.tsx +382 -0
  47. package/src/scripts/{refactor_2021/dataset → dataset}/draft-snapshot-routes.tsx +0 -0
  48. package/src/scripts/{refactor_2021/dataset → dataset}/files/__tests__/__snapshots__/file-tree.spec.jsx.snap +0 -0
  49. package/src/scripts/{refactor_2021/dataset → dataset}/files/__tests__/__snapshots__/file.spec.jsx.snap +2 -2
  50. package/src/scripts/{refactor_2021/dataset → dataset}/files/__tests__/file-tree-loading.spec.jsx +0 -0
  51. package/src/scripts/{refactor_2021/dataset → dataset}/files/__tests__/file-tree-unloaded-directory.spec.jsx +1 -1
  52. package/src/scripts/{refactor_2021/dataset → dataset}/files/__tests__/file-tree.spec.jsx +0 -0
  53. package/src/scripts/{refactor_2021/dataset → dataset}/files/__tests__/file-viewer-type.spec.jsx +0 -0
  54. package/src/scripts/{refactor_2021/dataset → dataset}/files/__tests__/file.spec.jsx +11 -4
  55. package/src/scripts/{refactor_2021/dataset → dataset}/files/__tests__/flat-to-tree.spec.js +0 -0
  56. package/src/scripts/{refactor_2021/dataset → dataset}/files/file-display.jsx +2 -2
  57. package/src/scripts/{refactor_2021/dataset → dataset}/files/file-tree-loading.jsx +0 -0
  58. package/src/scripts/{refactor_2021/dataset → dataset}/files/file-tree-unloaded-directory.jsx +1 -1
  59. package/src/scripts/{refactor_2021/dataset → dataset}/files/file-tree.jsx +3 -2
  60. package/src/scripts/{refactor_2021/dataset → dataset}/files/file-view.jsx +1 -1
  61. package/src/scripts/{refactor_2021/dataset → dataset}/files/file-viewer-type.jsx +0 -0
  62. package/src/scripts/{refactor_2021/dataset/files/file.jsx → dataset/files/file.tsx} +30 -13
  63. package/src/scripts/{refactor_2021/dataset → dataset}/files/files.jsx +1 -1
  64. package/src/scripts/{refactor_2021/dataset → dataset}/files/flat-to-tree.js +0 -0
  65. package/src/scripts/{refactor_2021/dataset → dataset}/files/index.tsx +0 -0
  66. package/src/scripts/{refactor_2021/dataset → dataset}/files/viewers/__tests__/__snapshots__/file-viewer-json.spec.jsx.snap +0 -0
  67. package/src/scripts/{refactor_2021/dataset → dataset}/files/viewers/__tests__/file-viewer-json.spec.jsx +0 -0
  68. package/src/scripts/{refactor_2021/dataset → dataset}/files/viewers/__tests__/parse-tabular.spec.js +0 -0
  69. package/src/scripts/{refactor_2021/dataset → dataset}/files/viewers/file-viewer-csv.jsx +0 -0
  70. package/src/scripts/{refactor_2021/dataset → dataset}/files/viewers/file-viewer-html.jsx +0 -0
  71. package/src/scripts/{refactor_2021/dataset → dataset}/files/viewers/file-viewer-json.jsx +0 -0
  72. package/src/scripts/{refactor_2021/dataset → dataset}/files/viewers/file-viewer-nifti.jsx +1 -1
  73. package/src/scripts/{refactor_2021/dataset → dataset}/files/viewers/file-viewer-table.jsx +0 -0
  74. package/src/scripts/{refactor_2021/dataset → dataset}/files/viewers/file-viewer-text.jsx +0 -0
  75. package/src/scripts/{refactor_2021/dataset → dataset}/files/viewers/file-viewer-tsv.jsx +0 -0
  76. package/src/scripts/{refactor_2021/dataset → dataset}/files/viewers/parse-tabular.js +0 -0
  77. package/src/scripts/{refactor_2021/dataset → dataset}/fragments/__tests__/__snapshots__/cancel-button.spec.tsx.snap +0 -0
  78. package/src/scripts/{refactor_2021/dataset → dataset}/fragments/__tests__/__snapshots__/edit-button.spec.tsx.snap +0 -0
  79. package/src/scripts/{refactor_2021/dataset → dataset}/fragments/__tests__/__snapshots__/edit-list.spec.jsx.snap +0 -0
  80. package/src/scripts/{refactor_2021/dataset → dataset}/fragments/__tests__/__snapshots__/save-button.spec.tsx.snap +0 -0
  81. package/src/scripts/{refactor_2021/dataset → dataset}/fragments/__tests__/__snapshots__/select-input.spec.tsx.snap +0 -0
  82. package/src/scripts/{refactor_2021/dataset → dataset}/fragments/__tests__/cancel-button.spec.tsx +0 -0
  83. package/src/scripts/{refactor_2021/dataset → dataset}/fragments/__tests__/dataset-alert-draft.spec.tsx +0 -0
  84. package/src/scripts/{refactor_2021/dataset → dataset}/fragments/__tests__/dataset-citation.spec.jsx +0 -0
  85. package/src/scripts/{refactor_2021/dataset → dataset}/fragments/__tests__/doi-link.spec.tsx +38 -8
  86. package/src/scripts/{refactor_2021/dataset → dataset}/fragments/__tests__/edit-button.spec.tsx +0 -0
  87. package/src/scripts/{refactor_2021/dataset → dataset}/fragments/__tests__/edit-list.spec.jsx +0 -0
  88. package/src/scripts/{refactor_2021/dataset → dataset}/fragments/__tests__/save-button.spec.tsx +0 -0
  89. package/src/scripts/{refactor_2021/dataset → dataset}/fragments/__tests__/select-input.spec.tsx +0 -0
  90. package/src/scripts/{refactor_2021/dataset → dataset}/fragments/cancel-button.tsx +0 -0
  91. package/src/scripts/{refactor_2021/dataset → dataset}/fragments/comments-fragments.js +0 -0
  92. package/src/scripts/{refactor_2021/dataset → dataset}/fragments/copyable-tooltip.jsx +0 -0
  93. package/src/scripts/{refactor_2021/dataset → dataset}/fragments/dataset-alert-draft.tsx +0 -0
  94. package/src/scripts/{refactor_2021/dataset → dataset}/fragments/dataset-alert-version.tsx +0 -0
  95. package/src/scripts/{refactor_2021/dataset → dataset}/fragments/dataset-citation.jsx +2 -4
  96. package/src/scripts/dataset/fragments/dataset-history.jsx +99 -0
  97. package/src/scripts/{refactor_2021/dataset → dataset}/fragments/dataset-reviewers.ts +1 -1
  98. package/src/scripts/{refactor_2021/dataset → dataset}/fragments/doi-link.tsx +9 -6
  99. package/src/scripts/{refactor_2021/dataset → dataset}/fragments/edit-button.tsx +0 -0
  100. package/src/scripts/{refactor_2021/dataset → dataset}/fragments/edit-description-field.jsx +0 -0
  101. package/src/scripts/{refactor_2021/dataset → dataset}/fragments/edit-description-list.jsx +0 -0
  102. package/src/scripts/{refactor_2021/dataset → dataset}/fragments/edit-list.jsx +0 -0
  103. package/src/scripts/{refactor_2021/dataset → dataset}/fragments/number-input.tsx +0 -0
  104. package/src/scripts/{refactor_2021/dataset → dataset}/fragments/save-button.tsx +0 -0
  105. package/src/scripts/{refactor_2021/dataset → dataset}/fragments/select-input.tsx +0 -0
  106. package/src/scripts/{refactor_2021/dataset → dataset}/fragments/text-array-input.tsx +0 -0
  107. package/src/scripts/{refactor_2021/dataset → dataset}/fragments/text-input.tsx +0 -0
  108. package/src/scripts/{refactor_2021/dataset → dataset}/mutations/__tests__/__snapshots__/delete.spec.jsx.snap +0 -0
  109. package/src/scripts/{refactor_2021/dataset → dataset}/mutations/__tests__/__snapshots__/deprecate-snapshot.spec.tsx.snap +0 -0
  110. package/src/scripts/{refactor_2021/dataset → dataset}/mutations/__tests__/__snapshots__/deprecate-version.spec.tsx.snap +0 -0
  111. package/src/scripts/{refactor_2021/dataset → dataset}/mutations/__tests__/__snapshots__/description.spec.jsx.snap +0 -0
  112. package/src/scripts/{refactor_2021/dataset → dataset}/mutations/__tests__/__snapshots__/update-permissions.spec.jsx.snap +0 -0
  113. package/src/scripts/{refactor_2021/dataset → dataset}/mutations/__tests__/cache-id.spec.js +0 -0
  114. package/src/scripts/{refactor_2021/dataset → dataset}/mutations/__tests__/delete.spec.jsx +0 -0
  115. package/src/scripts/{refactor_2021/dataset → dataset}/mutations/__tests__/deprecate-snapshot.spec.tsx +0 -0
  116. package/src/scripts/{refactor_2021/dataset → dataset}/mutations/__tests__/deprecate-version.spec.tsx +0 -0
  117. package/src/scripts/{refactor_2021/dataset → dataset}/mutations/__tests__/description.spec.jsx +0 -0
  118. package/src/scripts/{refactor_2021/dataset → dataset}/mutations/__tests__/remove-permissions.spec.tsx +0 -0
  119. package/src/scripts/{refactor_2021/dataset → dataset}/mutations/__tests__/update-permissions.spec.jsx +0 -0
  120. package/src/scripts/dataset/mutations/admin-exports.jsx +70 -0
  121. package/src/scripts/{refactor_2021/dataset → dataset}/mutations/cache-clear.jsx +0 -0
  122. package/src/scripts/{refactor_2021/dataset → dataset}/mutations/cache-id.js +0 -0
  123. package/src/scripts/{refactor_2021/dataset → dataset}/mutations/comment.jsx +0 -0
  124. package/src/scripts/{refactor_2021/dataset → dataset}/mutations/create-anonymous-reviewer.tsx +0 -3
  125. package/src/scripts/{refactor_2021/dataset → dataset}/mutations/dataset-relations.tsx +6 -18
  126. package/src/scripts/{refactor_2021/dataset → dataset}/mutations/delete-anonymous-reviewer.tsx +0 -0
  127. package/src/scripts/{refactor_2021/dataset → dataset}/mutations/delete-comment.jsx +2 -4
  128. package/src/scripts/{refactor_2021/dataset → dataset}/mutations/delete-dataset-form.jsx +0 -0
  129. package/src/scripts/{refactor_2021/dataset → dataset}/mutations/delete-dir.jsx +0 -0
  130. package/src/scripts/{refactor_2021/dataset → dataset}/mutations/delete-file.jsx +0 -0
  131. package/src/scripts/{refactor_2021/dataset → dataset}/mutations/delete.jsx +0 -0
  132. package/src/scripts/{refactor_2021/dataset → dataset}/mutations/deprecate-version.tsx +0 -0
  133. package/src/scripts/{refactor_2021/dataset → dataset}/mutations/description.jsx +1 -1
  134. package/src/scripts/{refactor_2021/dataset → dataset}/mutations/flag-annex-object.jsx +1 -2
  135. package/src/scripts/{refactor_2021/dataset → dataset}/mutations/follow.tsx +2 -2
  136. package/src/scripts/{refactor_2021/dataset → dataset}/mutations/import-dataset.tsx +0 -0
  137. package/src/scripts/{refactor_2021/dataset → dataset}/mutations/metadata-form.jsx +1 -1
  138. package/src/scripts/{refactor_2021/dataset → dataset}/mutations/publish.jsx +0 -0
  139. package/src/scripts/{refactor_2021/dataset → dataset}/mutations/readme.jsx +1 -1
  140. package/src/scripts/{refactor_2021/dataset → dataset}/mutations/remove-annex-object.jsx +0 -1
  141. package/src/scripts/{refactor_2021/dataset → dataset}/mutations/remove-permissions.tsx +0 -0
  142. package/src/scripts/{refactor_2021/dataset → dataset}/mutations/revalidate.jsx +0 -0
  143. package/src/scripts/{refactor_2021/dataset → dataset}/mutations/snapshot.tsx +17 -3
  144. package/src/scripts/{refactor_2021/dataset → dataset}/mutations/star.tsx +2 -2
  145. package/src/scripts/{refactor_2021/dataset → dataset}/mutations/submit-metadata.jsx +1 -1
  146. package/src/scripts/{refactor_2021/dataset → dataset}/mutations/undo-deprecate-version.tsx +0 -0
  147. package/src/scripts/{refactor_2021/dataset → dataset}/mutations/update-file.jsx +0 -0
  148. package/src/scripts/{refactor_2021/dataset → dataset}/mutations/update-permissions.tsx +0 -0
  149. package/src/scripts/{refactor_2021/dataset → dataset}/mutations/update-ref.jsx +0 -0
  150. package/src/scripts/{refactor_2021/dataset → dataset}/routes/__tests__/__snapshots__/publish.spec.jsx.snap +0 -0
  151. package/src/scripts/{refactor_2021/dataset → dataset}/routes/__tests__/publish.spec.jsx +0 -0
  152. package/src/scripts/{refactor_2021/dataset → dataset}/routes/add-metadata.jsx +21 -25
  153. package/src/scripts/dataset/routes/admin-datalad.jsx +40 -0
  154. package/src/scripts/dataset/routes/dataset-default.tsx +54 -0
  155. package/src/scripts/{refactor_2021/dataset → dataset}/routes/delete-page.tsx +5 -9
  156. package/src/scripts/{refactor_2021/dataset → dataset}/routes/deprecate-snapshot-page.tsx +6 -7
  157. package/src/scripts/dataset/routes/download-dataset.tsx +53 -0
  158. package/src/scripts/{refactor_2021/dataset → dataset}/routes/manage-anonymous-reviewers.tsx +9 -3
  159. package/src/scripts/{refactor_2021/dataset → dataset}/routes/manage-permissions.jsx +7 -10
  160. package/src/scripts/{refactor_2021/dataset → dataset}/routes/publish.jsx +10 -12
  161. package/src/scripts/dataset/routes/snapshot-default.tsx +44 -0
  162. package/src/scripts/dataset/routes/snapshot.jsx +148 -0
  163. package/src/scripts/dataset/routes/styles/dataset-page-border.tsx +8 -0
  164. package/src/scripts/dataset/routes/styles/dataset-page-tab-container.tsx +8 -0
  165. package/src/scripts/dataset/routes/styles/draft-background.tsx +7 -0
  166. package/src/scripts/dataset/routes/styles/header-row.tsx +12 -0
  167. package/src/scripts/dataset/routes/tab-routes-draft.tsx +88 -0
  168. package/src/scripts/dataset/routes/tab-routes-snapshot.tsx +57 -0
  169. package/src/scripts/{refactor_2021/dataset → dataset}/snapshot-container.tsx +75 -122
  170. package/src/scripts/{refactor_2021 → errors}/freshdesk-widget.jsx +1 -1
  171. package/src/scripts/errors/freshdeskInterface.jsx +1 -1
  172. package/src/scripts/index.tsx +6 -6
  173. package/src/scripts/{refactor_2021 → pages}/admin/admin.jsx +1 -1
  174. package/src/scripts/{refactor_2021 → pages}/admin/flagged-files.jsx +0 -0
  175. package/src/scripts/{refactor_2021 → pages}/admin/user-fragment.ts +0 -0
  176. package/src/scripts/{refactor_2021 → pages}/admin/user-tools.tsx +1 -1
  177. package/src/scripts/{refactor_2021 → pages}/admin/users.jsx +0 -0
  178. package/src/scripts/{refactor_2021/user → pages}/api.jsx +2 -2
  179. package/src/scripts/pages/citation-page.tsx +1 -1
  180. package/src/scripts/{faq → pages/faq}/__tests__/__snapshots__/faq.spec.jsx.snap +1 -1
  181. package/src/scripts/{faq → pages/faq}/__tests__/faq.spec.jsx +0 -0
  182. package/src/scripts/{faq → pages/faq}/faq-content.js +3 -5
  183. package/src/scripts/{faq → pages/faq}/faq.jsx +1 -1
  184. package/src/scripts/{refactor_2021 → pages/front-page}/aggregate-queries/aggregate-counts-container.tsx +0 -0
  185. package/src/scripts/{refactor_2021 → pages/front-page}/aggregate-queries/use-participant-count.ts +0 -0
  186. package/src/scripts/{refactor_2021 → pages/front-page}/aggregate-queries/use-publicDatasets-count.ts +0 -0
  187. package/src/scripts/{front-page → pages/front-page}/front-page-content.ts +10 -10
  188. package/src/scripts/{refactor_2021/containers/front-page-container.tsx → pages/front-page/front-page.tsx} +53 -32
  189. package/src/scripts/pages/front-page-comp.tsx +57 -0
  190. package/src/scripts/pages/import-dataset.tsx +5 -5
  191. package/src/scripts/{pet/redirect.tsx → pages/pet-redirect.tsx} +0 -0
  192. package/src/scripts/{refactor_2021/routes.tsx → routes.tsx} +8 -8
  193. package/src/scripts/{refactor_2021/search → search}/__tests__/search-container.spec.tsx +0 -0
  194. package/src/scripts/{refactor_2021/search → search}/__tests__/search-params-ctx.spec.tsx +0 -0
  195. package/src/scripts/{refactor_2021/search → search}/es-query-builders.ts +0 -0
  196. package/src/scripts/{refactor_2021/search → search}/filters-block-container.tsx +0 -0
  197. package/src/scripts/{refactor_2021/search → search}/initial-search-params.tsx +0 -0
  198. package/src/scripts/{refactor_2021/search → search}/inputs/__tests__/sort-by-select.spec.tsx +0 -0
  199. package/src/scripts/{refactor_2021/search → search}/inputs/admin-allDatasets-toggle.tsx +0 -0
  200. package/src/scripts/{refactor_2021/search → search}/inputs/age-range-input.tsx +0 -0
  201. package/src/scripts/{refactor_2021/search → search}/inputs/author-input.tsx +0 -0
  202. package/src/scripts/{refactor_2021/search → search}/inputs/date-radios.tsx +0 -0
  203. package/src/scripts/{refactor_2021/search → search}/inputs/diagnosis-select.tsx +0 -0
  204. package/src/scripts/{refactor_2021/search → search}/inputs/index.ts +0 -0
  205. package/src/scripts/{refactor_2021/search → search}/inputs/keyword-input.tsx +0 -0
  206. package/src/scripts/{refactor_2021/search → search}/inputs/modality-select.tsx +0 -0
  207. package/src/scripts/{refactor_2021/search → search}/inputs/pet/bodyParts_input.tsx +0 -0
  208. package/src/scripts/{refactor_2021/search → search}/inputs/pet/scannerManufacturersModelNames_input.tsx +0 -0
  209. package/src/scripts/{refactor_2021/search → search}/inputs/pet/scannerManufacturers_input.tsx +0 -0
  210. package/src/scripts/{refactor_2021/search → search}/inputs/pet/tracerNames_input.tsx +0 -0
  211. package/src/scripts/{refactor_2021/search → search}/inputs/pet/tracerRadionuclides_input.tsx +0 -0
  212. package/src/scripts/{refactor_2021/search → search}/inputs/section-select.tsx +0 -0
  213. package/src/scripts/{refactor_2021/search → search}/inputs/sex-radios.tsx +0 -0
  214. package/src/scripts/{refactor_2021/search → search}/inputs/show-datasets-radios.tsx +2 -4
  215. package/src/scripts/{refactor_2021/search → search}/inputs/sort-by-select.tsx +0 -0
  216. package/src/scripts/{refactor_2021/search → search}/inputs/species-select.tsx +0 -0
  217. package/src/scripts/{refactor_2021/search → search}/inputs/study-domain-input.tsx +0 -0
  218. package/src/scripts/{refactor_2021/search → search}/inputs/subject-count-range-input.tsx +0 -0
  219. package/src/scripts/{refactor_2021/search → search}/inputs/task-input.tsx +0 -0
  220. package/src/scripts/{refactor_2021/search → search}/search-container.tsx +1 -1
  221. package/src/scripts/{refactor_2021/search → search}/search-params-ctx.tsx +0 -0
  222. package/src/scripts/{refactor_2021/search → search}/search-routes.tsx +0 -0
  223. package/src/scripts/{refactor_2021/search → search}/use-search-results.tsx +1 -0
  224. package/src/scripts/test-utils.js +1 -1
  225. package/src/scripts/{refactor_2021/uploader → uploader}/add-path-to-files.js +0 -0
  226. package/src/scripts/{refactor_2021/uploader → uploader}/file-select.tsx +0 -0
  227. package/src/scripts/{refactor_2021/uploader → uploader}/file-upload.js +1 -1
  228. package/src/scripts/{refactor_2021/uploader → uploader}/input.jsx +0 -0
  229. package/src/scripts/{refactor_2021/uploader → uploader}/upload-button.jsx +0 -0
  230. package/src/scripts/{refactor_2021/uploader → uploader}/upload-disclaimer-input.tsx +0 -0
  231. package/src/scripts/{refactor_2021/uploader → uploader}/upload-disclaimer.jsx +0 -0
  232. package/src/scripts/{refactor_2021/uploader → uploader}/upload-file-status.jsx +0 -0
  233. package/src/scripts/{refactor_2021/uploader → uploader}/upload-issues.jsx +1 -1
  234. package/src/scripts/{refactor_2021/uploader → uploader}/upload-metadata.jsx +0 -0
  235. package/src/scripts/{refactor_2021/uploader → uploader}/upload-mutation.js +0 -0
  236. package/src/scripts/{refactor_2021/uploader → uploader}/upload-progress-button.jsx +0 -0
  237. package/src/scripts/{refactor_2021/uploader → uploader}/upload-progress-class.js +0 -0
  238. package/src/scripts/{refactor_2021/uploader → uploader}/upload-progress.jsx +0 -0
  239. package/src/scripts/{refactor_2021/uploader → uploader}/upload-rename.jsx +0 -0
  240. package/src/scripts/{refactor_2021/uploader → uploader}/upload-resume.jsx +0 -0
  241. package/src/scripts/{refactor_2021/uploader → uploader}/upload-select.jsx +0 -0
  242. package/src/scripts/{refactor_2021/uploader → uploader}/upload-status.jsx +0 -0
  243. package/src/scripts/{refactor_2021/uploader → uploader}/upload-step.jsx +0 -0
  244. package/src/scripts/{refactor_2021/uploader → uploader}/uploader-context.js +0 -0
  245. package/src/scripts/{refactor_2021/uploader → uploader}/uploader-location.js +0 -0
  246. package/src/scripts/{refactor_2021/uploader → uploader}/uploader-modal.jsx +0 -0
  247. package/src/scripts/{refactor_2021/uploader → uploader}/uploader-setup-routes.jsx +0 -0
  248. package/src/scripts/{refactor_2021/uploader → uploader}/uploader-status-routes.jsx +0 -0
  249. package/src/scripts/{refactor_2021/uploader → uploader}/uploader-view.jsx +1 -1
  250. package/src/scripts/{refactor_2021/uploader → uploader}/uploader.jsx +1 -1
  251. package/src/scripts/{refactor_2021/utils → utils}/cookies.js +0 -0
  252. package/src/scripts/{refactor_2021 → utils}/user-login-modal-ctx.tsx +1 -2
  253. package/src/scripts/{refactor_2021/validation → validation}/validation-panel.jsx +0 -0
  254. package/src/scripts/{refactor_2021/validation → validation}/validation-results.issues.issue.jsx +0 -0
  255. package/src/scripts/{refactor_2021/validation → validation}/validation-results.issues.jsx +0 -0
  256. package/src/scripts/{refactor_2021/validation → validation}/validation-results.jsx +0 -0
  257. package/src/scripts/{refactor_2021/validation → validation}/validation-status.jsx +0 -0
  258. package/src/scripts/{refactor_2021/validation → validation}/validation.jsx +1 -1
  259. package/src/scripts/front-page/assets/get_data_browse.png +0 -0
  260. package/src/scripts/front-page/assets/get_data_download.png +0 -0
  261. package/src/scripts/front-page/assets/ljaf.png +0 -0
  262. package/src/scripts/front-page/assets/logo_app.png +0 -0
  263. package/src/scripts/front-page/assets/logo_cube.png +0 -0
  264. package/src/scripts/front-page/assets/logo_data.png +0 -0
  265. package/src/scripts/front-page/assets/logo_users.png +0 -0
  266. package/src/scripts/front-page/assets/nih.png +0 -0
  267. package/src/scripts/front-page/assets/nsf.png +0 -0
  268. package/src/scripts/front-page/assets/share_data_collaborate.png +0 -0
  269. package/src/scripts/front-page/assets/share_data_publish.png +0 -0
  270. package/src/scripts/front-page/assets/share_data_validate.png +0 -0
  271. package/src/scripts/front-page/assets/squishymedia.png +0 -0
  272. package/src/scripts/front-page/assets/stanford.png +0 -0
  273. package/src/scripts/front-page/assets/tab-get_data.png +0 -0
  274. package/src/scripts/front-page/assets/tab-share_data.png +0 -0
  275. package/src/scripts/front-page/assets/tab-use_data.png +0 -0
  276. package/src/scripts/front-page/assets/use_data_analyze.png +0 -0
  277. package/src/scripts/front-page/assets/use_data_snapshot.png +0 -0
  278. package/src/scripts/mobile/collapsible-wrapper.tsx +0 -93
  279. package/src/scripts/refactor_2021/common/partials/toast-content.jsx +0 -18
  280. package/src/scripts/refactor_2021/dataset/dataset-routes.jsx +0 -163
  281. package/src/scripts/refactor_2021/dataset/draft-container.tsx +0 -435
  282. package/src/scripts/refactor_2021/dataset/fragments/dataset-history.jsx +0 -103
  283. package/src/scripts/refactor_2021/dataset/routes/admin-datalad.jsx +0 -47
  284. package/src/scripts/refactor_2021/dataset/routes/admin-exports.jsx +0 -132
  285. package/src/scripts/refactor_2021/dataset/routes/download-dataset.tsx +0 -76
  286. package/src/scripts/refactor_2021/dataset/routes/snapshot.jsx +0 -139
  287. package/src/scripts/refactor_2021/utils/datalad.js +0 -13
  288. package/src/scripts/refactor_2021/utils/gtag.js +0 -22
@@ -0,0 +1,382 @@
1
+ import React from 'react'
2
+ import Markdown from 'markdown-to-jsx'
3
+ import { useLocation, Redirect } from 'react-router-dom'
4
+ import pluralize from 'pluralize'
5
+ import formatDistanceToNow from 'date-fns/formatDistanceToNow'
6
+ import parseISO from 'date-fns/parseISO'
7
+
8
+ import { DatasetPageTabContainer } from './routes/styles/dataset-page-tab-container'
9
+ import Validation from '../validation/validation.jsx'
10
+ import { config } from '../config'
11
+ import {
12
+ getUnexpiredProfile,
13
+ hasEditPermissions,
14
+ hasDatasetAdminPermissions,
15
+ } from '../authentication/profile'
16
+ import { useCookies } from 'react-cookie'
17
+ import { DatasetAlertDraft } from './fragments/dataset-alert-draft'
18
+ import {
19
+ MetaDataBlock,
20
+ ModalitiesMetaDataBlock,
21
+ BrainLifeButton,
22
+ ValidationBlock,
23
+ CloneDropdown,
24
+ DatasetHeader,
25
+ DatasetHeaderMeta,
26
+ DatasetGitAccess,
27
+ VersionList,
28
+ DatasetTools,
29
+ } from '@openneuro/components/dataset'
30
+
31
+ import { FollowDataset } from './mutations/follow'
32
+ import { StarDataset } from './mutations/star'
33
+
34
+ import EditDescriptionField from './fragments/edit-description-field.jsx'
35
+ import EditDescriptionList from './fragments/edit-description-list.jsx'
36
+ import { DOILink } from './fragments/doi-link'
37
+
38
+ import { TabRoutesDraft } from './routes/tab-routes-draft'
39
+
40
+ export interface DraftContainerProps {
41
+ dataset
42
+ tag?: string
43
+ }
44
+
45
+ const formatDate = dateObject =>
46
+ new Date(dateObject).toISOString().split('T')[0]
47
+
48
+ // Helper function for getting version from URL
49
+ const snapshotVersion = location => {
50
+ const matches = location.pathname.match(/versions\/(.*?)(\/|$)/)
51
+ return matches && matches[1]
52
+ }
53
+ const DraftContainer: React.FC<DraftContainerProps> = ({ dataset }) => {
54
+ const location = useLocation()
55
+ const activeDataset = snapshotVersion(location) || 'draft'
56
+
57
+ const [selectedVersion, setSelectedVersion] = React.useState(activeDataset)
58
+
59
+ const summary = dataset.draft.summary
60
+ const description = dataset.draft.description
61
+ const datasetId = dataset.id
62
+
63
+ const numSessions =
64
+ summary && summary.sessions.length > 0 ? summary.sessions.length : 1
65
+
66
+ const dateAdded = formatDate(dataset.created)
67
+ const dateAddedDifference = formatDistanceToNow(parseISO(dataset.created))
68
+ const dateModified = formatDate(dataset.draft.modified)
69
+ const dateUpdatedDifference = formatDistanceToNow(
70
+ parseISO(dataset.draft.modified),
71
+ )
72
+
73
+ const [cookies] = useCookies()
74
+ const profile = getUnexpiredProfile(cookies)
75
+ const isAdmin = profile?.admin
76
+ const hasEdit =
77
+ hasEditPermissions(dataset.permissions, profile?.sub) || isAdmin
78
+ const hasDraftChanges =
79
+ dataset.snapshots.length === 0 ||
80
+ dataset.draft.head !==
81
+ dataset.snapshots[dataset.snapshots.length - 1].hexsha
82
+ const isDatasetAdmin =
83
+ hasDatasetAdminPermissions(dataset.permissions, profile?.sub) || isAdmin
84
+ const modality: string = summary?.modalities[0] || ''
85
+
86
+ return (
87
+ <>
88
+ {dataset.snapshots && !hasEdit && (
89
+ <Redirect
90
+ to={`/datasets/${dataset.id}/versions/${
91
+ dataset.snapshots.length &&
92
+ dataset.snapshots[dataset.snapshots.length - 1].tag
93
+ }`}
94
+ />
95
+ )}
96
+ <div
97
+ className={`dataset dataset-draft dataset-page dataset-page-${modality?.toLowerCase()}`}>
98
+ <DatasetHeader
99
+ pageHeading={description.Name}
100
+ modality={modality}
101
+ renderEditor={() => (
102
+ <EditDescriptionField
103
+ datasetId={datasetId}
104
+ field="Name"
105
+ rows={2}
106
+ description={description.Name}
107
+ editMode={hasEdit}>
108
+ {description.Name}
109
+ </EditDescriptionField>
110
+ )}
111
+ />
112
+ <DatasetAlertDraft
113
+ isPrivate={!dataset.public}
114
+ datasetId={dataset.id}
115
+ hasDraftChanges={hasDraftChanges}
116
+ hasSnapshot={dataset.snapshots.length !== 0}
117
+ />
118
+ <div className="container">
119
+ <div className="grid grid-between dataset-header-meta">
120
+ <div className="col col-8 col-lg">
121
+ {summary && (
122
+ <DatasetHeaderMeta
123
+ size={dataset.draft.size}
124
+ totalFiles={summary.totalFiles}
125
+ datasetId={datasetId}
126
+ />
127
+ )}
128
+ </div>
129
+ <div className="col follow-bookmark">
130
+ <FollowDataset
131
+ profile={profile}
132
+ datasetId={dataset.id}
133
+ following={dataset.following}
134
+ followers={dataset.followers.length}
135
+ />
136
+ <StarDataset
137
+ profile={profile}
138
+ datasetId={dataset.id}
139
+ starred={dataset.starred}
140
+ stars={dataset.stars.length}
141
+ />
142
+ </div>
143
+ </div>
144
+ </div>
145
+ <div className="container">
146
+ <div className="grid grid-between">
147
+ <div className="col col-lg col-8">
148
+ <div className="dataset-validation">
149
+ <ValidationBlock>
150
+ <Validation
151
+ datasetId={dataset.id}
152
+ issues={dataset.draft.issues}
153
+ />
154
+ </ValidationBlock>
155
+ <BrainLifeButton
156
+ datasetId={datasetId}
157
+ onBrainlife={dataset.onBrainlife}
158
+ />
159
+ <CloneDropdown
160
+ gitAccess={
161
+ <DatasetGitAccess
162
+ hasEdit={hasEdit}
163
+ configGithub={config.github}
164
+ configUrl={config.url}
165
+ worker={dataset.worker}
166
+ datasetId={datasetId}
167
+ gitHash={dataset.draft.head}
168
+ />
169
+ }
170
+ />
171
+ </div>
172
+ <DatasetTools
173
+ hasEdit={hasEdit}
174
+ isPublic={dataset.public}
175
+ datasetId={datasetId}
176
+ isAdmin={isAdmin}
177
+ hasSnapshot={dataset.snapshots.length !== 0}
178
+ isDatasetAdmin={isDatasetAdmin}
179
+ />
180
+ <DatasetPageTabContainer>
181
+ <TabRoutesDraft dataset={dataset} hasEdit={hasEdit} />
182
+ </DatasetPageTabContainer>
183
+ </div>
184
+ <div className="col sidebar">
185
+ {' '}
186
+ <EditDescriptionList
187
+ className="dmb-inline-list"
188
+ datasetId={datasetId}
189
+ field="Authors"
190
+ heading="Authors"
191
+ description={description.Authors}
192
+ editMode={hasEdit}>
193
+ {description?.Authors?.length ? description.Authors : ['N/A']}
194
+ </EditDescriptionList>
195
+ {summary && (
196
+ <ModalitiesMetaDataBlock
197
+ items={summary.modalities}
198
+ className="dmb-modalities"
199
+ />
200
+ )}
201
+ <MetaDataBlock
202
+ heading={dataset.snapshots.length ? 'Versions' : 'Version'}
203
+ item={
204
+ <div className="version-block">
205
+ <VersionList
206
+ datasetId={datasetId}
207
+ hasEdit={hasEdit}
208
+ items={dataset.snapshots}
209
+ className="version-dropdown"
210
+ activeDataset={activeDataset}
211
+ dateModified={dateModified}
212
+ selected={selectedVersion}
213
+ setSelected={setSelectedVersion}
214
+ />
215
+ </div>
216
+ }
217
+ />
218
+ {summary && (
219
+ <MetaDataBlock
220
+ heading="Tasks"
221
+ item={summary.tasks.length ? summary.tasks.join(', ') : 'N/A'}
222
+ className="dmb-inline-list"
223
+ />
224
+ )}
225
+ {summary?.modalities.includes('pet') ||
226
+ summary?.modalities.includes('Pet') ||
227
+ (summary?.modalities.includes('PET') && (
228
+ <>
229
+ <MetaDataBlock
230
+ heading={pluralize('Target', summary.pet?.BodyPart)}
231
+ item={summary.pet?.BodyPart}
232
+ />
233
+ <MetaDataBlock
234
+ heading={pluralize(
235
+ 'Scanner Manufacturer',
236
+ summary.pet?.ScannerManufacturer,
237
+ )}
238
+ item={
239
+ summary.pet?.ScannerManufacturer
240
+ ? summary.pet?.ScannerManufacturer
241
+ : 'N/A'
242
+ }
243
+ />
244
+
245
+ <MetaDataBlock
246
+ heading={pluralize(
247
+ 'Scanner Model',
248
+ summary.pet?.ScannerManufacturersModelName,
249
+ )}
250
+ item={
251
+ summary.pet?.ScannerManufacturersModelName
252
+ ? summary.pet?.ScannerManufacturersModelName
253
+ : 'N/A'
254
+ }
255
+ />
256
+ <MetaDataBlock
257
+ heading={pluralize(
258
+ 'Radionuclide',
259
+ summary.pet?.TracerRadionuclide,
260
+ )}
261
+ item={
262
+ summary.pet?.TracerRadionuclide
263
+ ? summary.pet?.TracerRadionuclide
264
+ : 'N/A'
265
+ }
266
+ />
267
+ <MetaDataBlock
268
+ heading={pluralize(
269
+ 'Radiotracer',
270
+ summary.pet?.TracerName,
271
+ )}
272
+ item={
273
+ summary.pet?.TracerName
274
+ ? summary.pet?.TracerName
275
+ : 'N/A'
276
+ }
277
+ />
278
+ </>
279
+ ))}
280
+ <MetaDataBlock
281
+ heading="Uploaded by"
282
+ item={
283
+ <>
284
+ {dataset.uploader.name} on {dateAdded} -{' '}
285
+ {dateAddedDifference} ago
286
+ </>
287
+ }
288
+ />
289
+ {dataset.snapshots?.length ? (
290
+ <MetaDataBlock
291
+ heading="Last Updated"
292
+ item={
293
+ <>
294
+ {dateModified} - {dateUpdatedDifference} ago
295
+ </>
296
+ }
297
+ />
298
+ ) : null}
299
+ <MetaDataBlock heading="Sessions" item={numSessions} />
300
+ <>
301
+ {summary && (
302
+ <MetaDataBlock
303
+ heading="Participants"
304
+ item={summary.subjects.length}
305
+ />
306
+ )}
307
+ </>
308
+ <MetaDataBlock
309
+ heading="Dataset DOI"
310
+ item={
311
+ <DOILink DOI={description.DatasetDOI} datasetId={datasetId} />
312
+ }
313
+ />
314
+ <MetaDataBlock heading="License" item={description.License} />
315
+ <MetaDataBlock
316
+ heading="Acknowledgements"
317
+ item={description.Acknowledgements}
318
+ renderEditor={() => (
319
+ <EditDescriptionField
320
+ datasetId={datasetId}
321
+ field="Acknowledgements"
322
+ rows={2}
323
+ description={description.Acknowledgements}
324
+ editMode={hasEdit}>
325
+ <Markdown>{description.Acknowledgements || 'N/A'}</Markdown>
326
+ </EditDescriptionField>
327
+ )}
328
+ />
329
+ <MetaDataBlock
330
+ heading="How to Acknowledge"
331
+ item={description.HowToAcknowledge}
332
+ renderEditor={() => (
333
+ <EditDescriptionField
334
+ datasetId={datasetId}
335
+ field="HowToAcknowledge"
336
+ rows={2}
337
+ description={description.HowToAcknowledge}
338
+ editMode={hasEdit}>
339
+ <Markdown>{description.HowToAcknowledge || 'N/A'}</Markdown>
340
+ </EditDescriptionField>
341
+ )}
342
+ />
343
+ <EditDescriptionList
344
+ className="dmb-list"
345
+ datasetId={datasetId}
346
+ field="Funding"
347
+ heading="Funding"
348
+ description={description.Funding}
349
+ editMode={hasEdit}>
350
+ {description.Funding?.length ? description.Funding : ['N/A']}
351
+ </EditDescriptionList>
352
+ <EditDescriptionList
353
+ className="dmb-list"
354
+ datasetId={datasetId}
355
+ field="ReferencesAndLinks"
356
+ heading="References and Links"
357
+ description={description.ReferencesAndLinks}
358
+ editMode={hasEdit}>
359
+ {description.ReferencesAndLinks?.length
360
+ ? description.ReferencesAndLinks
361
+ : ['N/A']}
362
+ </EditDescriptionList>
363
+ <EditDescriptionList
364
+ className="dmb-list"
365
+ datasetId={datasetId}
366
+ field="EthicsApprovals"
367
+ heading="Ethics Approvals"
368
+ description={description.EthicsApprovals}
369
+ editMode={hasEdit}>
370
+ {description.EthicsApprovals?.length
371
+ ? description.EthicsApprovals
372
+ : ['N/A']}
373
+ </EditDescriptionList>
374
+ </div>
375
+ </div>
376
+ </div>
377
+ </div>
378
+ </>
379
+ )
380
+ }
381
+
382
+ export default DraftContainer
@@ -22,7 +22,7 @@ exports[`File component renders for dataset snapshots 1`] = `
22
22
  <span
23
23
  class=" "
24
24
  data-flow="up"
25
- data-tooltip="Download"
25
+ data-tooltip="Download: 500B"
26
26
  >
27
27
  <span
28
28
  class="edit-file download-file"
@@ -83,7 +83,7 @@ exports[`File component renders with common props 1`] = `
83
83
  <span
84
84
  class=" "
85
85
  data-flow="up"
86
- data-tooltip="Download"
86
+ data-tooltip="Download: 500B"
87
87
  >
88
88
  <span
89
89
  class="edit-file download-file"
@@ -1,6 +1,6 @@
1
1
  import React from 'react'
2
2
  import { render, screen, fireEvent } from '@testing-library/react'
3
- import DatasetQueryContext from '../../../../datalad/dataset/dataset-query-context.js'
3
+ import DatasetQueryContext from '../../../datalad/dataset/dataset-query-context.js'
4
4
  import FileTreeUnloadedDirectory, {
5
5
  mergeNewFiles,
6
6
  } from '../file-tree-unloaded-directory.jsx'
@@ -1,25 +1,31 @@
1
1
  import React from 'react'
2
2
  import { render, screen } from '@testing-library/react'
3
3
  import { MemoryRouter } from 'react-router-dom'
4
- import File from '../file.jsx'
4
+ import File from '../file'
5
5
 
6
6
  describe('File component', () => {
7
7
  it('renders with common props', () => {
8
8
  const { asFragment } = render(
9
- <File datasetId="ds001" path="" filename="README" />,
9
+ <File datasetId="ds001" path="" filename="README" size={500} />,
10
10
  { wrapper: MemoryRouter },
11
11
  )
12
12
  expect(asFragment()).toMatchSnapshot()
13
13
  })
14
14
  it('renders for dataset snapshots', () => {
15
15
  const { asFragment } = render(
16
- <File datasetId="ds001" snapshotTag="1.0.0" path="" filename="README" />,
16
+ <File
17
+ datasetId="ds001"
18
+ snapshotTag="1.0.0"
19
+ path=""
20
+ filename="README"
21
+ size={500}
22
+ />,
17
23
  { wrapper: MemoryRouter },
18
24
  )
19
25
  expect(asFragment()).toMatchSnapshot()
20
26
  })
21
27
  it('generates correct download links for top level files', () => {
22
- render(<File datasetId="ds001" path="" filename="README" />, {
28
+ render(<File datasetId="ds001" path="" filename="README" size={500} />, {
23
29
  wrapper: MemoryRouter,
24
30
  })
25
31
  expect(screen.getByRole('link', { name: 'download file' })).toHaveAttribute(
@@ -33,6 +39,7 @@ describe('File component', () => {
33
39
  datasetId="ds001"
34
40
  path="sub-01:anat"
35
41
  filename="sub-01_T1w.nii.gz"
42
+ size={2000000}
36
43
  />,
37
44
  { wrapper: MemoryRouter },
38
45
  )
@@ -2,9 +2,9 @@ import React from 'react'
2
2
  import PropTypes from 'prop-types'
3
3
  import { Link } from 'react-router-dom'
4
4
  import FileView from './file-view.jsx'
5
- import { apiPath } from './file.jsx'
5
+ import { apiPath } from './file'
6
6
  import styled from '@emotion/styled'
7
- import { Media } from '../../../styles/media'
7
+ import { Media } from '../../styles/media'
8
8
 
9
9
  const PathBreadcrumb = styled.div`
10
10
  font-size: 14px;
@@ -1,6 +1,6 @@
1
1
  import React, { useState, useContext, useEffect } from 'react'
2
2
  import PropTypes from 'prop-types'
3
- import DatasetQueryContext from '../../../datalad/dataset/dataset-query-context.js'
3
+ import DatasetQueryContext from '../../datalad/dataset/dataset-query-context.js'
4
4
  import FileTreeLoading from './file-tree-loading.jsx'
5
5
  import { gql } from '@apollo/client'
6
6
  import { AccordionTab } from '@openneuro/components/accordion'
@@ -1,10 +1,10 @@
1
1
  import React from 'react'
2
2
  import PropTypes from 'prop-types'
3
- import File from './file.jsx'
3
+ import File from './file'
4
4
  import UpdateFile from '../mutations/update-file.jsx'
5
5
  import DeleteDir from '../mutations/delete-dir.jsx'
6
6
  import FileTreeUnloadedDirectory from './file-tree-unloaded-directory.jsx'
7
- import { Media } from '../../../styles/media'
7
+ import { Media } from '../../styles/media'
8
8
  import { AccordionTab } from '@openneuro/components/accordion'
9
9
 
10
10
  export const sortByFilename = (a, b) => a.filename.localeCompare(b.filename)
@@ -66,6 +66,7 @@ const FileTree = ({
66
66
  datasetId={datasetId}
67
67
  snapshotTag={snapshotTag}
68
68
  path={path}
69
+ size={file.size}
69
70
  editMode={editMode}
70
71
  toggleFileToDelete={toggleFileToDelete}
71
72
  isFileToBeDeleted={isFileToBeDeleted}
@@ -1,6 +1,6 @@
1
1
  import React, { useState, useEffect } from 'react'
2
2
  import { Loading } from '@openneuro/components/loading'
3
- import { apiPath } from './file.jsx'
3
+ import { apiPath } from './file'
4
4
  import FileViewerType from './file-viewer-type.jsx'
5
5
 
6
6
  const FileView = ({ datasetId, snapshotTag, path }) => {
@@ -1,9 +1,9 @@
1
1
  import React from 'react'
2
- import PropTypes from 'prop-types'
2
+ import bytes from 'bytes'
3
3
  import { Link } from 'react-router-dom'
4
4
  import UpdateFile from '../mutations/update-file.jsx'
5
5
  import DeleteFile from '../mutations/delete-file.jsx'
6
- import { Media } from '../../../styles/media'
6
+ import { Media } from '../../styles/media'
7
7
  import RemoveAnnexObject from '../mutations/remove-annex-object.jsx'
8
8
  import FlagAnnexObject from '../mutations/flag-annex-object.jsx'
9
9
  import { isAdmin } from '../../authentication/admin-user.jsx'
@@ -79,8 +79,33 @@ export const apiPath = (datasetId, snapshotTag, filePath) => {
79
79
  return `/crn/datasets/${datasetId}${snapshotPath}/files/${filePath}`
80
80
  }
81
81
 
82
+ interface FileProps {
83
+ id: string
84
+ size: number
85
+ datasetId: string
86
+ path: string
87
+ filename: string
88
+ snapshotTag: string
89
+ editMode: boolean
90
+ isMobile: boolean
91
+ annexed: boolean
92
+ annexKey: string
93
+ datasetPermissions: string[]
94
+ toggleFileToDelete: ({
95
+ id,
96
+ path,
97
+ filename,
98
+ }: {
99
+ id: string
100
+ path: string
101
+ filename: string
102
+ }) => boolean
103
+ isFileToBeDeleted: (id: string) => boolean
104
+ }
105
+
82
106
  const File = ({
83
107
  id,
108
+ size,
84
109
  datasetId,
85
110
  path,
86
111
  filename,
@@ -92,7 +117,7 @@ const File = ({
92
117
  datasetPermissions,
93
118
  toggleFileToDelete,
94
119
  isFileToBeDeleted,
95
- }) => {
120
+ }: FileProps) => {
96
121
  const { icon, color } = getFileIcon(filename)
97
122
  const snapshotVersionPath = snapshotTag ? `/versions/${snapshotTag}` : ''
98
123
  // React route to display the file
@@ -109,7 +134,7 @@ const File = ({
109
134
  {filename}
110
135
  <span className="filetree-editfile">
111
136
  <Media greaterThanOrEqual="medium">
112
- <Tooltip tooltip="Download">
137
+ <Tooltip tooltip={`Download: ${bytes.format(size) as string}`}>
113
138
  <span className="edit-file download-file">
114
139
  <a
115
140
  href={apiPath(datasetId, snapshotTag, filePath(path, filename))}
@@ -131,7 +156,7 @@ const File = ({
131
156
  <Media greaterThanOrEqual="medium">
132
157
  <Tooltip tooltip="Update">
133
158
  <UpdateFile datasetId={datasetId} path={path}>
134
- <i className="fa fa-file-o" />
159
+ <i className="fa fa-cloud-upload" />
135
160
  </UpdateFile>
136
161
  </Tooltip>
137
162
  </Media>
@@ -205,12 +230,4 @@ const File = ({
205
230
  )
206
231
  }
207
232
 
208
- File.propTypes = {
209
- datasetId: PropTypes.string,
210
- path: PropTypes.string,
211
- filename: PropTypes.string,
212
- snapshotTag: PropTypes.string,
213
- editMode: PropTypes.bool,
214
- }
215
-
216
233
  export default File
@@ -2,7 +2,7 @@ import React, { useState } from 'react'
2
2
  import PropTypes from 'prop-types'
3
3
  import { flatToTree } from './flat-to-tree.js'
4
4
  import FileTree from './file-tree.jsx'
5
- import { Media } from '../../../styles/media'
5
+ import { Media } from '../../styles/media'
6
6
  import { useMutation, gql } from '@apollo/client'
7
7
  import { WarnButton } from '@openneuro/components/warn-button'
8
8
  import { AccordionWrap } from '@openneuro/components/accordion'
@@ -1,6 +1,6 @@
1
1
  import React from 'react'
2
2
  import PropTypes from 'prop-types'
3
- import Papaya from '../../../../common/partials/papaya.jsx'
3
+ import Papaya from '../../../common/partials/papaya.jsx'
4
4
  import styled from '@emotion/styled'
5
5
 
6
6
  const StyleWrapper = styled.div`