diff --git a/.env.production b/.env.production deleted file mode 100644 index fa20fe4..0000000 --- a/.env.production +++ /dev/null @@ -1,3 +0,0 @@ -GEN3_COMMONS_NAME=gen3 -NEXT_PUBLIC_GEN3_API=https://localhost/ -NEXT_PUBLIC_GEN3_DOMAIN=https://localhost/ diff --git a/Dockerfile b/Dockerfile index 928e5c0..3b80b98 100644 --- a/Dockerfile +++ b/Dockerfile @@ -31,17 +31,10 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ && npm install -g npm@10.5.2 RUN addgroup --system --gid 1001 nextjs && adduser --system --uid 1001 nextjs -COPY ./package.json ./package-lock.json ./ -COPY ./package-lock.json ./ +COPY ./package.json ./package-lock.json ./next.config.js ./tsconfig.json ./.env.development ./tailwind.config.js ./postcss.config.js ./ COPY ./src ./src COPY ./public ./public COPY ./config ./config -COPY ./next.config.js ./ -COPY ./tsconfig.json ./ -COPY ./.env.development ./ -COPY ./.env.production ./ -COPY ./tailwind.config.js ./ -COPY ./postcss.config.js ./ RUN npm ci RUN npm install \ "@swc/core" \ diff --git a/config/icons/color.json b/config/icons/color.json new file mode 100644 index 0000000..852e13a --- /dev/null +++ b/config/icons/color.json @@ -0,0 +1,28 @@ +{ + "prefix": "color", + "lastModified": 1724107947, + "icons": { + "analysis": { + "body": "", + "width": 64, + "height": 64 + }, + "discovery": { + "body": "", + "top": -13 + }, + "explorer": { + "body": "", + "left": -30, + "width": 511 + }, + "profile": { + "body": "" + }, + "workspaces": { + "body": "" + } + }, + "width": 512, + "height": 512 +} diff --git a/config/icons/color/analysis.svg b/config/icons/color/analysis.svg new file mode 100644 index 0000000..877872c --- /dev/null +++ b/config/icons/color/analysis.svg @@ -0,0 +1 @@ + diff --git a/config/icons/color/discovery.svg b/config/icons/color/discovery.svg new file mode 100644 index 0000000..2fe223a --- /dev/null +++ b/config/icons/color/discovery.svg @@ -0,0 +1 @@ + diff --git a/config/icons/color/explorer.svg b/config/icons/color/explorer.svg new file mode 100644 index 0000000..7cfe2d0 --- /dev/null +++ b/config/icons/color/explorer.svg @@ -0,0 +1 @@ + diff --git a/config/icons/color/profile.svg b/config/icons/color/profile.svg new file mode 100644 index 0000000..0fb33c8 --- /dev/null +++ b/config/icons/color/profile.svg @@ -0,0 +1 @@ + diff --git a/config/icons/color/workspaces.svg b/config/icons/color/workspaces.svg new file mode 100644 index 0000000..d073469 --- /dev/null +++ b/config/icons/color/workspaces.svg @@ -0,0 +1 @@ + diff --git a/config/icons/dataDictionary.json b/config/icons/dataDictionary.json new file mode 100644 index 0000000..7bf0508 --- /dev/null +++ b/config/icons/dataDictionary.json @@ -0,0 +1,58 @@ +{ + "prefix": "dataDictionary", + "lastModified": 1724107947, + "icons": { + "dictionary-icon-administrative": { + "body": "" + }, + "dictionary-icon-analysis": { + "body": "", + "height": 21 + }, + "dictionary-icon-biospecimen": { + "body": "" + }, + "dictionary-icon-clinical": { + "body": "" + }, + "dictionary-icon-clinical-assessment": { + "body": "" + }, + "dictionary-icon-data-file": { + "body": "" + }, + "dictionary-icon-data-observations": { + "body": "" + }, + "dictionary-icon-default": { + "body": "", + "height": 21 + }, + "dictionary-icon-experimental-methods": { + "body": "" + }, + "dictionary-icon-imaging": { + "body": "" + }, + "dictionary-icon-index-file": { + "body": "" + }, + "dictionary-icon-medical-history": { + "body": "" + }, + "dictionary-icon-metadata": { + "body": "" + }, + "dictionary-icon-notation": { + "body": "" + }, + "dictionary-icon-study-administration": { + "body": "" + }, + "dictionary-icon-subject-characteristics": { + "body": "" + } + }, + "width": 20, + "height": 20 +} diff --git a/config/icons/download.svg b/config/icons/download.svg deleted file mode 100644 index 22a2656..0000000 --- a/config/icons/download.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/config/icons/gen3.json b/config/icons/gen3.json index 21bf7fd..26d4c6a 100644 --- a/config/icons/gen3.json +++ b/config/icons/gen3.json @@ -1,7 +1,12 @@ { "prefix": "gen3", - "lastModified": 1718898014, + "lastModified": 1730144270, "icons": { + "aisearch": { + "body": "", + "width": 682.67, + "height": 682.67 + }, "analysis": { "body": "", "width": 35, @@ -14,11 +19,26 @@ "width": 315.67, "height": 294.22 }, + "chevron-contract": { + "body": "", + "width": 16, + "height": 16 + }, "chevron-down": { "body": "", "width": 58.026, "height": 58.026 }, + "chevron-expand": { + "body": "", + "width": 512, + "height": 512 + }, + "comparison": { + "body": "", + "width": 512, + "height": 512 + }, "datafile": { "body": "", "width": 60, @@ -79,8 +99,13 @@ "dictionary-icon-subject-characteristics": { "body": "" }, + "dot": { + "body": "", + "width": 256, + "height": 256 + }, "download": { - "body": "", + "body": "", "width": 24, "height": 24 }, @@ -99,11 +124,31 @@ "width": 195, "height": 89 }, + "jupyter": { + "body": "", + "width": 44, + "height": 51 + }, + "loginarrowcircle": { + "body": "", + "width": 30, + "height": 30 + }, "logincircle": { "body": "", "width": 24, "height": 24 }, + "open-in-modal": { + "body": "", + "width": 24, + "height": 24 + }, + "notebook": { + "body": "", + "width": 682.667, + "height": 682.667 + }, "profile": { "body": "", "width": 512.001, @@ -115,9 +160,9 @@ "height": 511.999 }, "upload": { - "body": "", - "width": 512, - "height": 512 + "body": "", + "width": 24, + "height": 24 }, "user": { "body": "", diff --git a/config/icons/gen3/aiSearch.svg b/config/icons/gen3/aiSearch.svg new file mode 100644 index 0000000..593075d --- /dev/null +++ b/config/icons/gen3/aiSearch.svg @@ -0,0 +1,3 @@ + + + diff --git a/config/icons/analysis.svg b/config/icons/gen3/analysis.svg similarity index 100% rename from config/icons/analysis.svg rename to config/icons/gen3/analysis.svg diff --git a/config/icons/bar-chart.svg b/config/icons/gen3/bar-chart.svg similarity index 100% rename from config/icons/bar-chart.svg rename to config/icons/gen3/bar-chart.svg diff --git a/config/icons/gen3/chevron-contract.svg b/config/icons/gen3/chevron-contract.svg new file mode 100644 index 0000000..7b16d84 --- /dev/null +++ b/config/icons/gen3/chevron-contract.svg @@ -0,0 +1 @@ + diff --git a/config/icons/chevron-down.svg b/config/icons/gen3/chevron-down.svg similarity index 100% rename from config/icons/chevron-down.svg rename to config/icons/gen3/chevron-down.svg diff --git a/config/icons/gen3/chevron-expand.svg b/config/icons/gen3/chevron-expand.svg new file mode 100644 index 0000000..3a62aae --- /dev/null +++ b/config/icons/gen3/chevron-expand.svg @@ -0,0 +1 @@ + diff --git a/config/icons/gen3/comparison.svg b/config/icons/gen3/comparison.svg new file mode 100644 index 0000000..114deb8 --- /dev/null +++ b/config/icons/gen3/comparison.svg @@ -0,0 +1 @@ + diff --git a/config/icons/datafile.svg b/config/icons/gen3/datafile.svg similarity index 100% rename from config/icons/datafile.svg rename to config/icons/gen3/datafile.svg diff --git a/config/icons/dictionary.svg b/config/icons/gen3/dictionary.svg similarity index 100% rename from config/icons/dictionary.svg rename to config/icons/gen3/dictionary.svg diff --git a/config/icons/gen3/download.svg b/config/icons/gen3/download.svg new file mode 100644 index 0000000..cab0abb --- /dev/null +++ b/config/icons/gen3/download.svg @@ -0,0 +1 @@ + diff --git a/config/icons/exploration.svg b/config/icons/gen3/exploration.svg similarity index 100% rename from config/icons/exploration.svg rename to config/icons/gen3/exploration.svg diff --git a/config/icons/gen3-dark.svg b/config/icons/gen3/gen3-dark.svg similarity index 100% rename from config/icons/gen3-dark.svg rename to config/icons/gen3/gen3-dark.svg diff --git a/config/icons/gen3.svg b/config/icons/gen3/gen3.svg similarity index 100% rename from config/icons/gen3.svg rename to config/icons/gen3/gen3.svg diff --git a/config/icons/gen3/jupyter.svg b/config/icons/gen3/jupyter.svg new file mode 100644 index 0000000..d0fa7e4 --- /dev/null +++ b/config/icons/gen3/jupyter.svg @@ -0,0 +1,90 @@ + +Group.svg +Created using Figma 0.90 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/config/icons/gen3/loginArrowCircle.svg b/config/icons/gen3/loginArrowCircle.svg new file mode 100644 index 0000000..1fed0b6 --- /dev/null +++ b/config/icons/gen3/loginArrowCircle.svg @@ -0,0 +1 @@ + diff --git a/config/icons/loginCircle.svg b/config/icons/gen3/loginCircle.svg similarity index 100% rename from config/icons/loginCircle.svg rename to config/icons/gen3/loginCircle.svg diff --git a/config/icons/gen3/not-found.svg b/config/icons/gen3/not-found.svg new file mode 100644 index 0000000..68b0144 --- /dev/null +++ b/config/icons/gen3/not-found.svg @@ -0,0 +1,94 @@ + + + + 404 + Created with Sketch. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/config/icons/gen3/notebook.svg b/config/icons/gen3/notebook.svg new file mode 100644 index 0000000..db56476 --- /dev/null +++ b/config/icons/gen3/notebook.svg @@ -0,0 +1,92 @@ + + + + diff --git a/config/icons/gen3/open_in_modal.svg b/config/icons/gen3/open_in_modal.svg new file mode 100644 index 0000000..3462c34 --- /dev/null +++ b/config/icons/gen3/open_in_modal.svg @@ -0,0 +1,3 @@ + + + diff --git a/config/icons/profile.svg b/config/icons/gen3/profile.svg similarity index 100% rename from config/icons/profile.svg rename to config/icons/gen3/profile.svg diff --git a/config/icons/query.svg b/config/icons/gen3/query.svg similarity index 100% rename from config/icons/query.svg rename to config/icons/gen3/query.svg diff --git a/config/icons/gen3/upload.svg b/config/icons/gen3/upload.svg new file mode 100755 index 0000000..8859cfc --- /dev/null +++ b/config/icons/gen3/upload.svg @@ -0,0 +1 @@ + diff --git a/config/icons/user.svg b/config/icons/gen3/user.svg similarity index 100% rename from config/icons/user.svg rename to config/icons/gen3/user.svg diff --git a/config/icons/workspace.svg b/config/icons/gen3/workspace.svg similarity index 100% rename from config/icons/workspace.svg rename to config/icons/gen3/workspace.svg diff --git a/config/icons/upload.svg b/config/icons/upload.svg deleted file mode 100755 index c2e2c5f..0000000 --- a/config/icons/upload.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - diff --git a/config/icons/workspace.json b/config/icons/workspace.json new file mode 100644 index 0000000..8cd2718 --- /dev/null +++ b/config/icons/workspace.json @@ -0,0 +1,24 @@ +{ + "prefix": "workspace", + "lastModified": 1724107947, + "icons": { + "galaxy": { + "body": "", + "width": 66 + }, + "jupyter": { + "body": "", + "width": 44, + "height": 51 + }, + "rlogo": { + "body": "", + "width": 75 + }, + "rstudio": { + "body": "", + "width": 50 + } + }, + "height": 50 +} diff --git a/config/icons/workspace/galaxy.svg b/config/icons/workspace/galaxy.svg new file mode 100644 index 0000000..3f743b7 --- /dev/null +++ b/config/icons/workspace/galaxy.svg @@ -0,0 +1,19 @@ + + + + Group Copy + Created with Sketch. + + + + + + + + + + + + + + diff --git a/config/icons/workspace/jupyter.svg b/config/icons/workspace/jupyter.svg new file mode 100644 index 0000000..ce0006b --- /dev/null +++ b/config/icons/workspace/jupyter.svg @@ -0,0 +1,90 @@ + +Group.svg +Created using Figma 0.90 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/config/icons/workspace/rlogo.svg b/config/icons/workspace/rlogo.svg new file mode 100644 index 0000000..712b113 --- /dev/null +++ b/config/icons/workspace/rlogo.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/config/icons/workspace/rstudio.svg b/config/icons/workspace/rstudio.svg new file mode 100644 index 0000000..32930f9 --- /dev/null +++ b/config/icons/workspace/rstudio.svg @@ -0,0 +1,12 @@ + + + + RStudio-Logo-flat + Created with Sketch. + + + + + + + diff --git a/package-lock.json b/package-lock.json index 52b296f..c2a6121 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,8 +11,8 @@ "@fontsource/montserrat": "^5.0.19", "@fontsource/poppins": "^5.0.15", "@fontsource/source-sans-pro": "^5.0.8", - "@gen3/core": "^0.10.50", - "@gen3/frontend": "^0.10.50", + "@gen3/core": "^0.10.51", + "@gen3/frontend": "^0.10.51", "@grafana/faro-react": "^1.9.1", "@grafana/faro-web-sdk": "^1.9.1", "@grafana/faro-web-tracing": "^1.9.1", @@ -32,7 +32,7 @@ }, "devDependencies": { "@axe-core/react": "^4.10.0", - "@gen3/toolsff": "^0.10.50", + "@gen3/toolsff": "^0.10.51", "@tailwindcss/aspect-ratio": "^0.4.2", "@tailwindcss/forms": "^0.5.3", "@tailwindcss/line-clamp": "^0.4.2", @@ -1766,9 +1766,9 @@ "license": "OFL-1.1" }, "node_modules/@gen3/core": { - "version": "0.10.50", - "resolved": "https://registry.npmjs.org/@gen3/core/-/core-0.10.50.tgz", - "integrity": "sha512-EFeGMx5YU02zQAQ7UOsYjLbu6ZAWdGU8CAo9kJHInWxzDvi5vWiWu4gfI99/4/JTppjJ0iZQR4NpNhfrIFl/ew==", + "version": "0.10.51", + "resolved": "https://registry.npmjs.org/@gen3/core/-/core-0.10.51.tgz", + "integrity": "sha512-F8SGoJld8j61t4Pn/gXLDVnKy+iR3+4fUTpDVk8v8Y22JyziTkGaldDX8FjswPaLS0ZPPpu4Lx+qPSNQquxclw==", "license": "Apache-2.0", "dependencies": { "@reduxjs/toolkit": "^2.2.8", @@ -1783,7 +1783,7 @@ }, "engines": { "node": ">=20.11.0", - "npm": ">=10.2.3" + "npm": ">=10.8.2" }, "peerDependencies": { "react": "^18.2.0", @@ -1814,12 +1814,13 @@ } }, "node_modules/@gen3/frontend": { - "version": "0.10.50", - "resolved": "https://registry.npmjs.org/@gen3/frontend/-/frontend-0.10.50.tgz", - "integrity": "sha512-2aVLgWcBUBB4tjPGBNMHKVY4zIB4IqrlDOVVR8mTjIlgJ3OH63SMUDy8Lc2LdpFv0rfVWJ5U3KbsF8TgUmMEqA==", + "version": "0.10.51", + "resolved": "https://registry.npmjs.org/@gen3/frontend/-/frontend-0.10.51.tgz", + "integrity": "sha512-R9+LrlIM21JvaBsCHb9rGKQPHkWCumFk7Z9guPoWbTQSIpdvzPxDtijSSHUpMUxFuoeYmcC3lqNB8w6DPNJjmw==", "license": "Apache-2.0", "dependencies": { "@graphiql/react": "^0.23.1", + "@hello-pangea/dnd": "^17.0.0", "@iconify/react": "^4.0.1", "@kbox-labs/react-echarts": "^1.4.0", "@mantine/core": "^7.13.3", @@ -1956,9 +1957,9 @@ } }, "node_modules/@gen3/toolsff": { - "version": "0.10.50", - "resolved": "https://registry.npmjs.org/@gen3/toolsff/-/toolsff-0.10.50.tgz", - "integrity": "sha512-7U3KT/vR6tQ1FfPPDv+1EIcu13ydTACImlt1W+kqFOalrUbGTuJGIVWhsn05U3Rde8nb/KpwYXkDlwNfB+eI+g==", + "version": "0.10.51", + "resolved": "https://registry.npmjs.org/@gen3/toolsff/-/toolsff-0.10.51.tgz", + "integrity": "sha512-EIYWazQmjLoH30/Pmcr5LkV4ICf3Rvw7SxFi/RzsVLrmzc/T6xxee9lNBiY1O6JaCjQ1G5aaK2JmPVLeUTbQAA==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -1973,7 +1974,7 @@ }, "engines": { "node": ">=20.11.0", - "npm": ">=10.2.3" + "npm": ">=10.8.2" }, "peerDependencies": { "ts-node": "^10.9.2" @@ -2117,6 +2118,48 @@ "react-dom": "^16 || ^17 || ^18" } }, + "node_modules/@hello-pangea/dnd": { + "version": "17.0.0", + "resolved": "https://registry.npmjs.org/@hello-pangea/dnd/-/dnd-17.0.0.tgz", + "integrity": "sha512-LDDPOix/5N0j5QZxubiW9T0M0+1PR0rTDWeZF5pu1Tz91UQnuVK4qQ/EjY83Qm2QeX0eM8qDXANfDh3VVqtR4Q==", + "license": "Apache-2.0", + "dependencies": { + "@babel/runtime": "^7.25.6", + "css-box-model": "^1.2.1", + "memoize-one": "^6.0.0", + "raf-schd": "^4.0.3", + "react-redux": "^9.1.2", + "redux": "^5.0.1", + "use-memo-one": "^1.1.3" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" + } + }, + "node_modules/@hello-pangea/dnd/node_modules/react-redux": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-9.1.2.tgz", + "integrity": "sha512-0OA4dhM1W48l3uzmv6B7TXPCGmokUU4p1M44DGN2/D9a1FjVPukVjER1PcPX97jIg6aUeLq1XJo1IpfbgULn0w==", + "license": "MIT", + "dependencies": { + "@types/use-sync-external-store": "^0.0.3", + "use-sync-external-store": "^1.0.0" + }, + "peerDependencies": { + "@types/react": "^18.2.25", + "react": "^18.0", + "redux": "^5.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "redux": { + "optional": true + } + } + }, "node_modules/@humanwhocodes/config-array": { "version": "0.11.14", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", @@ -8375,6 +8418,15 @@ "postcss": "^8.4" } }, + "node_modules/css-box-model": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/css-box-model/-/css-box-model-1.2.1.tgz", + "integrity": "sha512-a7Vr4Q/kd/aw96bnJG332W9V9LkJO69JRcaCYDUqjp6/z0w6VcZjgAcTbgFxEPfBgdnAwlh3iwu+hLopa+flJw==", + "license": "MIT", + "dependencies": { + "tiny-invariant": "^1.0.6" + } + }, "node_modules/css-font": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/css-font/-/css-font-1.2.0.tgz", @@ -17622,6 +17674,12 @@ "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==", "license": "MIT" }, + "node_modules/memoize-one": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz", + "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==", + "license": "MIT" + }, "node_modules/merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", @@ -21435,6 +21493,12 @@ "performance-now": "^2.1.0" } }, + "node_modules/raf-schd": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/raf-schd/-/raf-schd-4.0.3.tgz", + "integrity": "sha512-tQkJl2GRWh83ui2DiPTJz9wEiMN20syf+5oKfB03yYP7ioZcJwsIK8FjrtLwH1m7C7e+Tt2yYBlrOpdT+dyeIQ==", + "license": "MIT" + }, "node_modules/randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", @@ -25625,6 +25689,15 @@ } } }, + "node_modules/use-memo-one": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/use-memo-one/-/use-memo-one-1.1.3.tgz", + "integrity": "sha512-g66/K7ZQGYrI6dy8GLpVcMsBp4s17xNkYJVSMvTEevGy3nDxHOfE6z8BVE22+5G5x7t3+bhzrlTDB7ObrEE0cQ==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, "node_modules/use-sidecar": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.2.tgz", diff --git a/package.json b/package.json index d7ebe6c..8198464 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@gen3/commons-portal-app-base", - "version": "0.10.50", + "version": "0.10.51", "private": "true", "engines": { "npm": ">=10.2.3", @@ -21,8 +21,8 @@ "@fontsource/montserrat": "^5.0.19", "@fontsource/poppins": "^5.0.15", "@fontsource/source-sans-pro": "^5.0.8", - "@gen3/core": "^0.10.50", - "@gen3/frontend": "^0.10.50", + "@gen3/core": "^0.10.51", + "@gen3/frontend": "^0.10.51", "@grafana/faro-react": "^1.9.1", "@grafana/faro-web-sdk": "^1.9.1", "@grafana/faro-web-tracing": "^1.9.1", @@ -42,7 +42,7 @@ }, "devDependencies": { "@axe-core/react": "^4.10.0", - "@gen3/toolsff": "^0.10.50", + "@gen3/toolsff": "^0.10.51", "@tailwindcss/aspect-ratio": "^0.4.2", "@tailwindcss/forms": "^0.5.3", "@tailwindcss/line-clamp": "^0.4.2", diff --git a/src/lib/content/loadContent.ts b/src/lib/content/loadContent.ts new file mode 100644 index 0000000..d4c2c8d --- /dev/null +++ b/src/lib/content/loadContent.ts @@ -0,0 +1,40 @@ +import { + ContentSource, + Fonts, + RegisteredIcons, + TenStringArray, +} from '@gen3/frontend'; +import { GEN3_COMMONS_NAME } from '@gen3/core'; + +export const loadContent = async () => { + const modals = await ContentSource.get( + `config/${GEN3_COMMONS_NAME}/modals.json`, + ); + const session = await ContentSource.get( + `config/${GEN3_COMMONS_NAME}/session.json`, + ); + + const fonts = await ContentSource.get( + `config/${GEN3_COMMONS_NAME}/themeFonts.json`, + ); + + const themeColors = await ContentSource.get( + `config/${GEN3_COMMONS_NAME}/themeColors.json`, + ); + + const colors = Object.fromEntries( + Object.entries(themeColors).map(([key, values]) => [ + key, + Object.values(values) as TenStringArray, + ]), + ); + + const icons = await ContentSource.getAll(`config/icons/`, '\\.json'); + return { + modalsConfig: modals, + sessionConfig: session, + themeFonts: fonts as Fonts, + colors: colors, + icons: icons as RegisteredIcons[], + }; +}; diff --git a/src/pages/Analysis.tsx b/src/pages/Analysis.tsx new file mode 100644 index 0000000..21e809d --- /dev/null +++ b/src/pages/Analysis.tsx @@ -0,0 +1,7 @@ +import { + AnalysisPage, + AnalysisPageGetServerSideProps as getServerSideProps, + } from '@gen3/frontend'; + export default AnalysisPage; + + export { getServerSideProps }; diff --git a/src/pages/NotebookLite.tsx b/src/pages/NotebookLite.tsx new file mode 100644 index 0000000..6c163d2 --- /dev/null +++ b/src/pages/NotebookLite.tsx @@ -0,0 +1,7 @@ +import { + NotebookLitePage, + NotebookLitePageGetStaticProps as getStaticProps, +} from '@gen3/frontend'; + +export default NotebookLitePage; +export { getStaticProps }; diff --git a/src/pages/Workspace.tsx b/src/pages/Workspace.tsx index e4578be..96f172e 100644 --- a/src/pages/Workspace.tsx +++ b/src/pages/Workspace.tsx @@ -1,7 +1,7 @@ import { - WorkspacesPage, - WorkspacesPageGetServerSideProps as getServerSideProps, + WorkspacePage, + WorkspacePageGetServerSideProps as getServerSideProps, } from '@gen3/frontend'; -export default WorkspacesPage; +export default WorkspacePage; export { getServerSideProps }; diff --git a/src/pages/_app.tsx b/src/pages/_app.tsx index 16dfe42..e4b1b57 100644 --- a/src/pages/_app.tsx +++ b/src/pages/_app.tsx @@ -1,34 +1,48 @@ import App, { AppProps, AppContext, AppInitialProps } from 'next/app'; import React, { useEffect, useRef } from 'react'; + import { Faro, FaroErrorBoundary, withFaroProfiler } from '@grafana/faro-react'; + +import { initGrafanaFaro } from '../lib/Grafana/grafana'; + import { Gen3Provider, TenStringArray, type ModalsConfig, - ContentSource, RegisteredIcons, Fonts, SessionConfiguration, + registerCohortDiscoveryApp, + registerCohortDiversityApp, + registerCohortBuilderDefaultPreviewRenderers, + registerExplorerDefaultCellRenderers, } from '@gen3/frontend'; + +import { registerCohortTableCustomCellRenderers } from '@/lib/CohortBuilder/CustomCellRenderers'; +import { registerCustomExplorerDetailsPanels } from '@/lib/CohortBuilder/FileDetailsPanel'; + import '../styles/globals.css'; import '@fontsource/montserrat'; import '@fontsource/source-sans-pro'; import '@fontsource/poppins'; -import { initGrafanaFaro } from '../lib/Grafana/grafana'; -import { GEN3_COMMONS_NAME, setDRSHostnames } from '@gen3/core'; + +import { setDRSHostnames } from '@gen3/core'; import drsHostnames from '../../config/drsHostnames.json'; +import { loadContent } from '../lib/content/loadContent'; if (typeof window !== 'undefined' && process.env.NODE_ENV !== 'production') { - // eslint-disable-next-line @typescript-eslint/no-var-requires + // eslint-disable-next-line @typescript-eslint/no-var-requires, @typescript-eslint/no-require-imports const ReactDOM = require('react-dom'); - // eslint-disable-next-line @typescript-eslint/no-var-requires + // eslint-disable-next-line @typescript-eslint/no-var-requires, @typescript-eslint/no-require-imports const axe = require('@axe-core/react'); axe(React, ReactDOM, 1000); } +// TODO fix app registration + interface Gen3AppProps { colors: Record; - icons: RegisteredIcons; + icons: Array; themeFonts: Fonts; modalsConfig: ModalsConfig; sessionConfig: SessionConfiguration; @@ -50,27 +64,33 @@ const Gen3App = ({ const faroRef = useRef(null); useEffect(() => { + // one time init // if ( // process.env.NEXT_PUBLIC_FARO_COLLECTOR_URL && // process.env.NEXT_PUBLIC_FARO_APP_ENVIRONMENT != "local" && // !faroRef.current // ) { if (!faroRef.current) faroRef.current = initGrafanaFaro(); + registerCohortDiscoveryApp(); + registerCohortDiversityApp(); + registerExplorerDefaultCellRenderers(); + registerCohortBuilderDefaultPreviewRenderers(); + registerCohortTableCustomCellRenderers(); + registerCustomExplorerDetailsPanels(); // } }, []); - return ( - - - + + + ); }; @@ -82,36 +102,10 @@ Gen3App.getInitialProps = async ( const ctx = await App.getInitialProps(context); try { - const modals = await ContentSource.get( - `config/${GEN3_COMMONS_NAME}/modals.json`, - ); - const session = await ContentSource.get( - `config/${GEN3_COMMONS_NAME}/session.json`, - ); - - const fonts = await ContentSource.get( - `config/${GEN3_COMMONS_NAME}/themeFonts.json`, - ); - - const themeColors = await ContentSource.get( - `config/${GEN3_COMMONS_NAME}/themeColors.json`, - ); - - const colors = Object.fromEntries( - Object.entries(themeColors).map(([key, values]) => [ - key, - Object.values(values) as TenStringArray, - ]), - ); - - const icons = await ContentSource.get('config/icons/gen3.json'); + const res = await loadContent(); return { ...ctx, - modalsConfig: modals, - sessionConfig: session, - themeFonts: fonts as Fonts, - colors: colors, - icons: icons as RegisteredIcons, + ...res, }; } catch (error: any) { console.error('Provider Wrapper error loading config', error.toString()); @@ -125,13 +119,15 @@ Gen3App.getInitialProps = async ( content: ['Poppins', 'sans-serif'], fontFamily: 'Poppins', }, - icons: { - prefix: 'gen3', - lastModified: 0, - icons: {}, - width: 0, - height: 0, - }, + icons: [ + { + prefix: 'gen3', + lastModified: 0, + icons: {}, + width: 0, + height: 0, + }, + ], modalsConfig: {}, sessionConfig: {}, }; diff --git a/src/pages/no-workspace-access.tsx b/src/pages/no-workspace-access.tsx new file mode 100644 index 0000000..b9c9aa9 --- /dev/null +++ b/src/pages/no-workspace-access.tsx @@ -0,0 +1,7 @@ +import { + WorkspaceNoAccessPage, + WorkspaceNoAccessPageServerSideProps as getServerSideProps, +} from '@gen3/frontend'; +export default WorkspaceNoAccessPage; + +export { getServerSideProps };