diff --git a/.github/workflows/build-frontend.yml b/.github/workflows/build-frontend.yml index 851c9bd70..fa54e9705 100644 --- a/.github/workflows/build-frontend.yml +++ b/.github/workflows/build-frontend.yml @@ -18,7 +18,7 @@ jobs: node-version: 18.x - run: npm ci working-directory: ./frontend - - run: npm run build + - run: npm run build -- --base=${{ vars.BOWTIE_BASE_URL || '/bowtie' }} working-directory: ./frontend - uses: actions/upload-artifact@v3 with: diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 635aa1674..1c4dde406 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -14,11 +14,13 @@ "react-bootstrap": "^2.8.0", "react-bootstrap-icons": "^1.10.3", "react-dom": "^18.2.0", - "react-router-dom": "^6.14.1" + "react-router-dom": "^6.14.1", + "urijs": "^1.19.11" }, "devDependencies": { "@types/react": "^18.2.14", "@types/react-dom": "^18.2.6", + "@types/urijs": "^1.19.19", "@vitejs/plugin-react": "^4.0.3", "eslint": "8.43.0", "eslint-plugin-react": "7.32.2", @@ -1110,6 +1112,12 @@ "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz", "integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==" }, + "node_modules/@types/urijs": { + "version": "1.19.19", + "resolved": "https://registry.npmjs.org/@types/urijs/-/urijs-1.19.19.tgz", + "integrity": "sha512-FDJNkyhmKLw7uEvTxx5tSXfPeQpO0iy73Ry+PmYZJvQy0QIWX8a7kJ4kLWRf+EbTPJEPDSgPXHaM7pzr5lmvCg==", + "dev": true + }, "node_modules/@types/warning": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@types/warning/-/warning-3.0.0.tgz", @@ -4345,6 +4353,11 @@ "punycode": "^2.1.0" } }, + "node_modules/urijs": { + "version": "1.19.11", + "resolved": "https://registry.npmjs.org/urijs/-/urijs-1.19.11.tgz", + "integrity": "sha512-HXgFDgDommxn5/bIv0cnQZsPhHDA90NPHD6+c/v21U5+Sx5hoP8+dP9IZXBU1gIfvdRfhG8cel9QNPeionfcCQ==" + }, "node_modules/vite": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/vite/-/vite-4.4.2.tgz", diff --git a/frontend/package.json b/frontend/package.json index 9a13bac52..d0137ced0 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -15,11 +15,13 @@ "react-bootstrap": "^2.8.0", "react-bootstrap-icons": "^1.10.3", "react-dom": "^18.2.0", - "react-router-dom": "^6.14.1" + "react-router-dom": "^6.14.1", + "urijs": "^1.19.11" }, "devDependencies": { "@types/react": "^18.2.14", "@types/react-dom": "^18.2.6", + "@types/urijs": "^1.19.19", "@vitejs/plugin-react": "^4.0.3", "eslint": "8.43.0", "eslint-plugin-react": "7.32.2", diff --git a/frontend/src/index.jsx b/frontend/src/index.jsx index dc6c69260..93e4d1fdd 100644 --- a/frontend/src/index.jsx +++ b/frontend/src/index.jsx @@ -9,8 +9,14 @@ import { MainContainer } from "./MainContainer"; import { BowtieVersionContextProvider } from "./context/BowtieVersionContext"; import { DragAndDrop } from "./components/DragAndDrop/DragAndDrop"; import { parseReportData } from "./data/parseReportData"; +import URI from "urijs"; + +const reportHost = + import.meta.env.MODE === "development" + ? "https://bowtie.report" + : window.location.href; +const reportUri = new URI(reportHost).directory(import.meta.env.BASE_URL); -const reportUrl = "https://bowtie.report"; const titleTag = document.getElementsByTagName("title")[0]; const dialectToName = { "draft2020-12": "Draft 2020-12", @@ -24,7 +30,8 @@ const dialectToName = { const fetchReportData = async (dialect) => { const dialectName = dialectToName[dialect] ?? dialect; titleTag.textContent = `Bowtie - ${dialectName}`; - const response = await fetch(`${reportUrl}/${dialect}.json`); + const url = reportUri.clone().filename(dialect).suffix("json").href(); + const response = await fetch(url); const jsonl = await response.text(); const lines = jsonl .trim()