From 111a0740155ee36404a10c1bb1d1382c2fdf3a37 Mon Sep 17 00:00:00 2001 From: Rebecca Black Date: Mon, 13 May 2024 15:17:21 -0400 Subject: [PATCH 01/23] added .github folder to gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 4fb48d9..73d9803 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,4 @@ __tests__/integration/editioncrafter/css/ .cache/ storybook-static .DS_Store +.github \ No newline at end of file From 95981bc9eda777b447540065942f66738d5cd873 Mon Sep 17 00:00:00 2001 From: Rebecca Black Date: Mon, 13 May 2024 15:18:54 -0400 Subject: [PATCH 02/23] deleted storybook workflow --- .github/workflows/storybook.yml | 24 ------------------------ 1 file changed, 24 deletions(-) delete mode 100644 .github/workflows/storybook.yml diff --git a/.github/workflows/storybook.yml b/.github/workflows/storybook.yml deleted file mode 100644 index c493d92..0000000 --- a/.github/workflows/storybook.yml +++ /dev/null @@ -1,24 +0,0 @@ -name: Build and deploy to GitHub pages for testing - -on: - push: - branches: - - dev # Trigger the action only on PR merges into dev -jobs: - build-and-deploy: - runs-on: ubuntu-latest - steps: - - name: Checkout 🛎️ - uses: actions/checkout@v2.3.1 - with: - persist-credentials: false - - name: Install and Build 🔧 - run: | # Install npm packages and build the Storybook files - npm run build - npm run build-storybook - - name: Deploy 🚀 - uses: JamesIves/github-pages-deploy-action@v4.4.2 - with: - branch: gh-pages # The branch the action should deploy to. - folder: editioncrafter/storybook-static # The folder that the build-storybook script generates files. - clean: true # Automatically remove deleted files from the deploy branch \ No newline at end of file From 89952fef6002551da07014aae6228b6920cdecfd Mon Sep 17 00:00:00 2001 From: Rebecca Black Date: Mon, 13 May 2024 15:20:30 -0400 Subject: [PATCH 03/23] added deploy.yml back to workflows --- .github/workflows/deploy.yml | 39 ++++++++++++++++++++++++++++++++++++ .gitignore | 1 - 2 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/deploy.yml diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100644 index 0000000..cdd2f42 --- /dev/null +++ b/.github/workflows/deploy.yml @@ -0,0 +1,39 @@ +name: Deploy to GitHub Pages + +on: + # Trigger the workflow every time you push to the `main` branch + # Using a different branch name? Replace `main` with your branch’s name + push: + branches: [ main ] + # Allows you to run this workflow manually from the Actions tab on GitHub. + workflow_dispatch: + +# Allow this job to clone the repo and create a page deployment +permissions: + contents: read + pages: write + id-token: write + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout your repository using git + uses: actions/checkout@v4 + - name: Install, build, and upload your site + uses: withastro/action@v2 + with: + path: ./astro-web # The root location of your Astro project inside the repository. (optional) + # node-version: 20 # The specific version of Node that should be used to build your site. Defaults to 20. (optional) + # package-manager: pnpm@latest # The Node package manager that should be used to install dependencies and build your site. Automatically detected based on your lockfile. (optional) + + deploy: + needs: build + runs-on: ubuntu-latest + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + steps: + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v4 diff --git a/.gitignore b/.gitignore index 73d9803..4fb48d9 100644 --- a/.gitignore +++ b/.gitignore @@ -9,4 +9,3 @@ __tests__/integration/editioncrafter/css/ .cache/ storybook-static .DS_Store -.github \ No newline at end of file From c649050f78c84ac83a88bb4fa4ae20e83e3c99e2 Mon Sep 17 00:00:00 2001 From: Rebecca Black Date: Mon, 13 May 2024 15:21:28 -0400 Subject: [PATCH 04/23] adds github folder to gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 4fb48d9..73d9803 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,4 @@ __tests__/integration/editioncrafter/css/ .cache/ storybook-static .DS_Store +.github \ No newline at end of file From 98a429da5a0c3b6c31d92bf116e32529f5c623c2 Mon Sep 17 00:00:00 2001 From: Rebecca Black Date: Thu, 16 May 2024 21:47:43 -0400 Subject: [PATCH 05/23] updated DocumentView component to handle the global state updating --- editioncrafter/src/component/DocumentView.js | 51 ++++++++++++++++---- 1 file changed, 42 insertions(+), 9 deletions(-) diff --git a/editioncrafter/src/component/DocumentView.js b/editioncrafter/src/component/DocumentView.js index bb3ffa4..2268cc2 100644 --- a/editioncrafter/src/component/DocumentView.js +++ b/editioncrafter/src/component/DocumentView.js @@ -39,6 +39,37 @@ const DocumentView = (props) => { navigate(pathname + location.search); }; + useEffect(() => { + const reloadDocument = async (document) => { + if (!document.loaded) { + // handle the case where we've passed in an array of manifest URLs, in which case the `variorum` parameter should be set to `true` + if (document.variorum) { + const variorumData = {}; + for (const key of Object.keys(document.manifestURL)) { + const response = await fetch(document.manifestURL[key]).then((res) => (res.json())); + variorumData[key] = response.data; + } + const variorumManifest = { + type: 'variorum', + documentData: variorumData, + }; + return variorumManifest; + } + const singleResponse = await fetch(document.manifestURL).then((res) => (res.json())); + return singleResponse; + } + + return null; + }; + // if the top-level component props have been updated such that the document initial state has been reinitialized, dispatch the loadDocument action with the new data + if (!props.document.loaded) { + reloadDocument(props.document).then((res) => { + console.log('reload', res); + dispatchAction(props, 'DocumentActions.loadDocument', res); + }); + } + }, [props.config]); + const getViewports = () => { const { folioID, transcriptionType, folioID2, transcriptionType2, folioID3, transcriptionType3 @@ -62,19 +93,21 @@ const DocumentView = (props) => { } }; } - - const leftFolioID = folioID; + const leftFolioValid = Object.keys(document.folioIndex).includes(folioID); + const leftFolioID = leftFolioValid ? folioID : '-1'; let leftTranscriptionType; let rightFolioID; let rightTranscriptionType; let thirdFolioID; let thirdTranscriptionType; if (folioID2) { // route /ec/:folioID/:transcriptionType/:folioID2/:transcriptionType2 - leftTranscriptionType = transcriptionType; - rightFolioID = folioID2; - rightTranscriptionType = transcriptionType2 || firstTranscriptionType; + const rightFolioValid = Object.keys(document.folioIndex).includes(folioID2); + leftTranscriptionType = leftFolioValid ? transcriptionType : 'g'; + rightFolioID = rightFolioValid ? folioID2 : '-1'; + rightTranscriptionType = rightFolioValid ? transcriptionType2 ? transcriptionType2 : firstTranscriptionType : 'g'; if (folioID3) { // route /ec/:folioID/:transcriptionType/:folioID2/:transcriptionType2/:folioID3/:transcriptionType3 - thirdFolioID = folioID3; - thirdTranscriptionType = transcriptionType3 || firstTranscriptionType; + const thirdFolioValid = Object.keys(document.folioIndex).includes(folioID3); + thirdFolioID = thirdFolioValid ? folioID3 : '-1'; + thirdTranscriptionType = thirdFolioValid ? transcriptionType3 ? transcriptionType3 : firstTranscriptionType : 'g'; } else { thirdFolioID = '-1'; thirdTranscriptionType = 'g'; @@ -83,8 +116,8 @@ const DocumentView = (props) => { // route /ec/:folioID // route /ec/:folioID/:transcriptionType leftTranscriptionType = 'f'; - rightFolioID = folioID; - rightTranscriptionType = transcriptionType || firstTranscriptionType; + rightFolioID = leftFolioValid ? folioID : '-1'; + rightTranscriptionType = leftFolioValid ? transcriptionType ? transcriptionType : firstTranscriptionType : 'g'; thirdFolioID = '-1'; thirdTranscriptionType = 'g'; } From c487f0d4d4c064f271f21092095c2da6f48f0bc3 Mon Sep 17 00:00:00 2001 From: Rebecca Black Date: Thu, 16 May 2024 21:59:17 -0400 Subject: [PATCH 06/23] add glossary reload as well --- editioncrafter/src/component/DocumentView.js | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/editioncrafter/src/component/DocumentView.js b/editioncrafter/src/component/DocumentView.js index 2268cc2..e83294a 100644 --- a/editioncrafter/src/component/DocumentView.js +++ b/editioncrafter/src/component/DocumentView.js @@ -61,13 +61,25 @@ const DocumentView = (props) => { return null; }; + + const reloadGlossary = async (glossary) => { + if (!glossary.loaded && glossary.URL) { + const glossaryData = fetch(glossary.URL).then((res) => (res.json())); + return glossaryData; + } + } // if the top-level component props have been updated such that the document initial state has been reinitialized, dispatch the loadDocument action with the new data if (!props.document.loaded) { reloadDocument(props.document).then((res) => { - console.log('reload', res); dispatchAction(props, 'DocumentActions.loadDocument', res); }); } + // update the glossary as well if necessary + if (!props.glossary.loaded && props.glossary.URL) { + reloadGlossary(props.glossary).then((res) => { + dispatchAction(props, 'GlossaryActions.loadGlossary', res); + }) + } }, [props.config]); const getViewports = () => { @@ -535,6 +547,7 @@ const DocumentView = (props) => { function mapStateToProps(state) { return { document: state.document, + glossary: state.glossary }; } From c8da099b4f7f05c21ae436afb3a63694b746840e Mon Sep 17 00:00:00 2001 From: Rebecca Black Date: Thu, 16 May 2024 22:00:21 -0400 Subject: [PATCH 07/23] update gitignore to ignore github workflows --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 4fb48d9..0ce313e 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,4 @@ __tests__/integration/editioncrafter/css/ .cache/ storybook-static .DS_Store +.github From 88a560d695df9c5c423710651bfbd0b2ed90a3d0 Mon Sep 17 00:00:00 2001 From: Rebecca Black Date: Thu, 16 May 2024 22:04:20 -0400 Subject: [PATCH 08/23] added state change proof of concept story --- .../stories/EditionCrafter.stories.js | 73 +++++++++++++++---- 1 file changed, 60 insertions(+), 13 deletions(-) diff --git a/editioncrafter/stories/EditionCrafter.stories.js b/editioncrafter/stories/EditionCrafter.stories.js index d3208bb..c02c833 100644 --- a/editioncrafter/stories/EditionCrafter.stories.js +++ b/editioncrafter/stories/EditionCrafter.stories.js @@ -1,4 +1,4 @@ -import React from 'react'; +import React, { useEffect, useState } from 'react'; import EditionCrafter from '../src/index'; export const BowInTheCloud = () => ( @@ -57,25 +57,49 @@ export const IntervistePescatori = () => ( /> ); -export const MultiDocument = () => ( +export const OrnamentDesignTranslation = () => ( @@ -107,6 +131,29 @@ export const fullScreen = () => ( ) +export const stateChange = () => { + const [manifest, setManifest] = useState('https://cu-mkp.github.io/editioncrafter/taos-baptisms-example/iiif/manifest.json'); + const [glossary, setGlossary] = useState(undefined); + + useEffect(() => { + setTimeout(() => { + setManifest('https://cu-mkp.github.io/dyngleyfamily-editioncrafter-data/O_8_35/iiif/manifest.json'); + setGlossary('https://cu-mkp.github.io/editioncrafter-data/fr640_3r-3v-example/glossary.json'); + }, 10000); + }, []) + + return () + +} + export default { title: 'EditionCrafter', }; From 66c446752c3b3f8f36cc79e5b709a798a1fd111c Mon Sep 17 00:00:00 2001 From: Rebecca Black Date: Fri, 17 May 2024 11:38:50 -0400 Subject: [PATCH 09/23] fixed issues with image viewer and transcription panes not refreshing --- editioncrafter/src/component/DocumentView.js | 48 ++----------------- .../stories/EditionCrafter.stories.js | 6 ++- 2 files changed, 9 insertions(+), 45 deletions(-) diff --git a/editioncrafter/src/component/DocumentView.js b/editioncrafter/src/component/DocumentView.js index e83294a..ffd32a1 100644 --- a/editioncrafter/src/component/DocumentView.js +++ b/editioncrafter/src/component/DocumentView.js @@ -30,6 +30,11 @@ const DocumentView = (props) => { const navigate = useNavigate(); const location = useLocation(); + //"reload" the page if the config props change + useEffect(() => { + dispatchAction(props, 'RouteListenerSaga.userNavigatation', location); + }, [props.config]); + useEffect(() => { setSinglePaneMode(props.containerWidth < 960); }, [props.containerWidth]); @@ -39,49 +44,6 @@ const DocumentView = (props) => { navigate(pathname + location.search); }; - useEffect(() => { - const reloadDocument = async (document) => { - if (!document.loaded) { - // handle the case where we've passed in an array of manifest URLs, in which case the `variorum` parameter should be set to `true` - if (document.variorum) { - const variorumData = {}; - for (const key of Object.keys(document.manifestURL)) { - const response = await fetch(document.manifestURL[key]).then((res) => (res.json())); - variorumData[key] = response.data; - } - const variorumManifest = { - type: 'variorum', - documentData: variorumData, - }; - return variorumManifest; - } - const singleResponse = await fetch(document.manifestURL).then((res) => (res.json())); - return singleResponse; - } - - return null; - }; - - const reloadGlossary = async (glossary) => { - if (!glossary.loaded && glossary.URL) { - const glossaryData = fetch(glossary.URL).then((res) => (res.json())); - return glossaryData; - } - } - // if the top-level component props have been updated such that the document initial state has been reinitialized, dispatch the loadDocument action with the new data - if (!props.document.loaded) { - reloadDocument(props.document).then((res) => { - dispatchAction(props, 'DocumentActions.loadDocument', res); - }); - } - // update the glossary as well if necessary - if (!props.glossary.loaded && props.glossary.URL) { - reloadGlossary(props.glossary).then((res) => { - dispatchAction(props, 'GlossaryActions.loadGlossary', res); - }) - } - }, [props.config]); - const getViewports = () => { const { folioID, transcriptionType, folioID2, transcriptionType2, folioID3, transcriptionType3 diff --git a/editioncrafter/stories/EditionCrafter.stories.js b/editioncrafter/stories/EditionCrafter.stories.js index c02c833..dfaf753 100644 --- a/editioncrafter/stories/EditionCrafter.stories.js +++ b/editioncrafter/stories/EditionCrafter.stories.js @@ -134,16 +134,18 @@ export const fullScreen = () => ( export const stateChange = () => { const [manifest, setManifest] = useState('https://cu-mkp.github.io/editioncrafter/taos-baptisms-example/iiif/manifest.json'); const [glossary, setGlossary] = useState(undefined); + const [title, setTitle] = useState('FHL_007548733_TAOS_BAPTISMS_BATCH_2') useEffect(() => { setTimeout(() => { - setManifest('https://cu-mkp.github.io/dyngleyfamily-editioncrafter-data/O_8_35/iiif/manifest.json'); + //setManifest('https://cu-mkp.github.io/dyngleyfamily-editioncrafter-data/O_8_35/iiif/manifest.json'); setGlossary('https://cu-mkp.github.io/editioncrafter-data/fr640_3r-3v-example/glossary.json'); + setTitle('Taos Baptisms Batch 2'); }, 10000); }, []) return ( Date: Fri, 17 May 2024 11:49:19 -0400 Subject: [PATCH 10/23] delete deploy.yml --- .github/workflows/deploy.yml | 39 ------------------------------------ 1 file changed, 39 deletions(-) delete mode 100644 .github/workflows/deploy.yml diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml deleted file mode 100644 index cdd2f42..0000000 --- a/.github/workflows/deploy.yml +++ /dev/null @@ -1,39 +0,0 @@ -name: Deploy to GitHub Pages - -on: - # Trigger the workflow every time you push to the `main` branch - # Using a different branch name? Replace `main` with your branch’s name - push: - branches: [ main ] - # Allows you to run this workflow manually from the Actions tab on GitHub. - workflow_dispatch: - -# Allow this job to clone the repo and create a page deployment -permissions: - contents: read - pages: write - id-token: write - -jobs: - build: - runs-on: ubuntu-latest - steps: - - name: Checkout your repository using git - uses: actions/checkout@v4 - - name: Install, build, and upload your site - uses: withastro/action@v2 - with: - path: ./astro-web # The root location of your Astro project inside the repository. (optional) - # node-version: 20 # The specific version of Node that should be used to build your site. Defaults to 20. (optional) - # package-manager: pnpm@latest # The Node package manager that should be used to install dependencies and build your site. Automatically detected based on your lockfile. (optional) - - deploy: - needs: build - runs-on: ubuntu-latest - environment: - name: github-pages - url: ${{ steps.deployment.outputs.page_url }} - steps: - - name: Deploy to GitHub Pages - id: deployment - uses: actions/deploy-pages@v4 From 18a9a95e8355833d051b4e7ec5333f68be6fcb3c Mon Sep 17 00:00:00 2001 From: Rebecca Black Date: Fri, 17 May 2024 11:51:42 -0400 Subject: [PATCH 11/23] Create storybook.yml --- .github/workflows/storybook.yml | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 .github/workflows/storybook.yml diff --git a/.github/workflows/storybook.yml b/.github/workflows/storybook.yml new file mode 100644 index 0000000..c5ec348 --- /dev/null +++ b/.github/workflows/storybook.yml @@ -0,0 +1,24 @@ +name: Build and deploy to GitHub pages for testing + +on: + push: + branches: + - dev # Trigger the action only on PR merges into dev +jobs: + build-and-deploy: + runs-on: ubuntu-latest + steps: + - name: Checkout 🛎️ + uses: actions/checkout@v2.3.1 + with: + persist-credentials: false + - name: Install and Build 🔧 + run: | # Install npm packages and build the Storybook files + npm run build + npm run build-storybook + - name: Deploy 🚀 + uses: JamesIves/github-pages-deploy-action@v4.4.2 + with: + branch: gh-pages # The branch the action should deploy to. + folder: editioncrafter/storybook-static # The folder that the build-storybook script generates files. + clean: true # Automatically remove deleted files from the deploy branch From 2549fca92fda3defcd818fa227d037d982dd67e3 Mon Sep 17 00:00:00 2001 From: Rebecca Black Date: Fri, 17 May 2024 11:55:17 -0400 Subject: [PATCH 12/23] delete redundant document reload --- editioncrafter/src/component/DocumentView.js | 43 -------------------- 1 file changed, 43 deletions(-) diff --git a/editioncrafter/src/component/DocumentView.js b/editioncrafter/src/component/DocumentView.js index cdf6934..e5d6f3a 100644 --- a/editioncrafter/src/component/DocumentView.js +++ b/editioncrafter/src/component/DocumentView.js @@ -44,49 +44,6 @@ const DocumentView = (props) => { navigate(pathname + location.search); }; - useEffect(() => { - const reloadDocument = async (document) => { - if (!document.loaded) { - // handle the case where we've passed in an array of manifest URLs, in which case the `variorum` parameter should be set to `true` - if (document.variorum) { - const variorumData = {}; - for (const key of Object.keys(document.manifestURL)) { - const response = await fetch(document.manifestURL[key]).then((res) => (res.json())); - variorumData[key] = response.data; - } - const variorumManifest = { - type: 'variorum', - documentData: variorumData, - }; - return variorumManifest; - } - const singleResponse = await fetch(document.manifestURL).then((res) => (res.json())); - return singleResponse; - } - - return null; - }; - - const reloadGlossary = async (glossary) => { - if (!glossary.loaded && glossary.URL) { - const glossaryData = fetch(glossary.URL).then((res) => (res.json())); - return glossaryData; - } - } - // if the top-level component props have been updated such that the document initial state has been reinitialized, dispatch the loadDocument action with the new data - if (!props.document.loaded) { - reloadDocument(props.document).then((res) => { - dispatchAction(props, 'DocumentActions.loadDocument', res); - }); - } - // update the glossary as well if necessary - if (!props.glossary.loaded && props.glossary.URL) { - reloadGlossary(props.glossary).then((res) => { - dispatchAction(props, 'GlossaryActions.loadGlossary', res); - }) - } - }, [props.config]); - const getViewports = () => { const { folioID, transcriptionType, folioID2, transcriptionType2, folioID3, transcriptionType3 From 5e146e076b7fd7186e702c30f0891d08cd00222c Mon Sep 17 00:00:00 2001 From: Rebecca Black Date: Fri, 17 May 2024 11:58:03 -0400 Subject: [PATCH 13/23] Create deploy.yml --- .github/workflows/deploy.yml | 39 ++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 .github/workflows/deploy.yml diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100644 index 0000000..cdd2f42 --- /dev/null +++ b/.github/workflows/deploy.yml @@ -0,0 +1,39 @@ +name: Deploy to GitHub Pages + +on: + # Trigger the workflow every time you push to the `main` branch + # Using a different branch name? Replace `main` with your branch’s name + push: + branches: [ main ] + # Allows you to run this workflow manually from the Actions tab on GitHub. + workflow_dispatch: + +# Allow this job to clone the repo and create a page deployment +permissions: + contents: read + pages: write + id-token: write + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout your repository using git + uses: actions/checkout@v4 + - name: Install, build, and upload your site + uses: withastro/action@v2 + with: + path: ./astro-web # The root location of your Astro project inside the repository. (optional) + # node-version: 20 # The specific version of Node that should be used to build your site. Defaults to 20. (optional) + # package-manager: pnpm@latest # The Node package manager that should be used to install dependencies and build your site. Automatically detected based on your lockfile. (optional) + + deploy: + needs: build + runs-on: ubuntu-latest + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + steps: + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v4 From 538f492da396302a02b7abc3c628e7daea727501 Mon Sep 17 00:00:00 2001 From: Rebecca Black Date: Mon, 20 May 2024 10:38:18 -0400 Subject: [PATCH 14/23] updated version number for new release --- editioncrafter-umd/package.json | 2 +- editioncrafter/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/editioncrafter-umd/package.json b/editioncrafter-umd/package.json index 41a61d4..565440a 100644 --- a/editioncrafter-umd/package.json +++ b/editioncrafter-umd/package.json @@ -1,6 +1,6 @@ { "name": "@cu-mkp/editioncrafter-umd", - "version": "1.0.1", + "version": "1.0.2", "homepage": "https://cu-mkp.github.io/editioncrafter/", "description": "A simple digital critical edition publication tool", "private": false, diff --git a/editioncrafter/package.json b/editioncrafter/package.json index 632641a..bbc4d3e 100644 --- a/editioncrafter/package.json +++ b/editioncrafter/package.json @@ -1,6 +1,6 @@ { "name": "@cu-mkp/editioncrafter", - "version": "1.0.1", + "version": "1.0.2", "description": "A simple digital critical edition publication tool", "homepage": "https://cu-mkp.github.io/editioncrafter/", "private": false, From 589d24b4ede8396bc803549f96985443e92b6714 Mon Sep 17 00:00:00 2001 From: Rebecca Black Date: Mon, 20 May 2024 10:58:45 -0400 Subject: [PATCH 15/23] updated astro site with new EC version number --- astro-web/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/astro-web/package.json b/astro-web/package.json index e82bc63..1a799d7 100644 --- a/astro-web/package.json +++ b/astro-web/package.json @@ -14,7 +14,7 @@ "@astrojs/mdx": "^2.1.1", "@astrojs/react": "^3.0.10", "@astrojs/tailwind": "^5.1.0", - "@cu-mkp/editioncrafter": "^1.0.1", + "@cu-mkp/editioncrafter": "^1.0.2", "@fontsource/dm-sans": "^5.0.19", "@fontsource/martel": "^5.0.12", "@fontsource/source-code-pro": "^5.0.17", From 11b1d99f9f3ec90239e42aa4eb3c61597af29920 Mon Sep 17 00:00:00 2001 From: Nick Laiacona Date: Sun, 30 Jun 2024 11:30:30 -0400 Subject: [PATCH 16/23] refactor to use fetch wip --- editioncrafter/package-lock.json | 4 +- editioncrafter/package.json | 1 - editioncrafter/src/model/Folio.js | 108 ++++++++----------- editioncrafter/src/saga/RouteListenerSaga.js | 17 +-- 4 files changed, 58 insertions(+), 72 deletions(-) diff --git a/editioncrafter/package-lock.json b/editioncrafter/package-lock.json index 348a143..9e6d26e 100644 --- a/editioncrafter/package-lock.json +++ b/editioncrafter/package-lock.json @@ -1,12 +1,12 @@ { "name": "@cu-mkp/editioncrafter", - "version": "1.0.1", + "version": "1.0.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@cu-mkp/editioncrafter", - "version": "1.0.1", + "version": "1.0.2", "license": "MIT", "dependencies": { "@material-ui/core": "^4.12.4", diff --git a/editioncrafter/package.json b/editioncrafter/package.json index bbc4d3e..8a97ce6 100644 --- a/editioncrafter/package.json +++ b/editioncrafter/package.json @@ -27,7 +27,6 @@ "@material-ui/core": "^4.12.4", "@material-ui/icons": "^4.11.3", "@recogito/annotorious-openseadragon": "^2.7.11", - "axios": "^1.3.4", "history": "^5.3.0", "html-react-parser": "^4.2.2", "openseadragon": "^4.1.0", diff --git a/editioncrafter/src/model/Folio.js b/editioncrafter/src/model/Folio.js index a74847e..a026a2c 100644 --- a/editioncrafter/src/model/Folio.js +++ b/editioncrafter/src/model/Folio.js @@ -1,76 +1,62 @@ import OpenSeadragon from 'openseadragon'; -import axios from 'axios'; import { layoutMargin3 } from './folioLayout'; -export function loadFolio(folioData) { +export async function loadFolio(folioData) { if (folioData.loading) { - // promise to resolve this immediately - return new Promise((resolve) => { - resolve(folioData); - }); + return folioData } + folioData.loading = true; const folio = { ...folioData }; + const transcriptionTypes = Object.keys(folio.annotationURLs); + const transcriptionTypeTracker = Object.fromEntries(transcriptionTypes.map((t) => [t, false])); - // promise to load all the data for this folio - return new Promise((resolve, reject) => { - const transcriptionTypes = Object.keys(folio.annotationURLs); - const transcriptionTypeTracker = Object.fromEntries(transcriptionTypes.map((t) => [t, false])); - if (transcriptionTypes.length > 0) { - axios.get(folio.image_zoom_url).then((imageServerResponse) => { - // Handle the image server response - folio.tileSource = new OpenSeadragon.IIIFTileSource(imageServerResponse.data); + if (transcriptionTypes.length > 0) { + const response = await fetch(folio.image_zoom_url) + const imageServerResponse = await response.json() + // Handle the image server response + folio.tileSource = new OpenSeadragon.IIIFTileSource(imageServerResponse); - for (const transcriptionType of transcriptionTypes) { - const { htmlURL, xmlURL } = folio.annotationURLs[transcriptionType]; - if (!folio.transcription) folio.transcription = {}; - folio.transcription[transcriptionType] = {}; - axios.all([ - axios.get(htmlURL), - axios.get(xmlURL), - ]).then(axios.spread(( - htmlResponse, - xmlResponse, - ) => { - const transcription = parseTranscription(htmlResponse.data, xmlResponse.data); - if (!transcription) { - reject(new Error(`Unable to load transcription: ${htmlURL}`)); - } else { - folio.transcription[transcriptionType] = transcription; - folio.loading = false; - transcriptionTypeTracker[transcriptionType] = true; - } - })) - .catch((error) => { - folioData.loading = false; - reject(error); - }) - .finally(() => { - // Only resolve once all transcription types have been fetched - if (Object.values(transcriptionTypeTracker).filter(v => !v).length === 0) { - resolve(folio); - } - }); - } - }) - .catch((error) => { - folioData.loading = false; - reject(error); - }); - } else { - // if there is no annotatation list, just load the image and provide a blank transcription - axios.get(folio.image_zoom_url) - .then((imageServerResponse) => { - folio.tileSource = new OpenSeadragon.IIIFTileSource(imageServerResponse.data); + for (const transcriptionType of transcriptionTypes) { + const { htmlURL, xmlURL } = folio.annotationURLs[transcriptionType]; + if (!folio.transcription) folio.transcription = {}; + folio.transcription[transcriptionType] = {}; + + try { + const htmlURLResponse = await fetch(htmlURL) + const xmlURLResponse = await fetch(xmlURL) + const transcription = parseTranscription(htmlURLResponse.body, xmlURLResponse.body); + if (!transcription) { + throw new Error(`Unable to load transcription: ${htmlURL}`) + } else { + folio.transcription[transcriptionType] = transcription; folio.loading = false; - resolve(folio); - }) - .catch((error) => { + transcriptionTypeTracker[transcriptionType] = true; + } + } catch(error) { folioData.loading = false; - reject(error); - }); + throw error; + } } - }); + + // Once all transcription types have been fetched + if (Object.values(transcriptionTypeTracker).filter(v => !v).length === 0) { + return folio; + } + } else { + // if there is no annotatation list, just load the image and provide a blank transcription + try { + const response = await fetch(folio.image_zoom_url) + const imageServerResponse = await response.json() + folio.tileSource = new OpenSeadragon.IIIFTileSource(imageServerResponse); + folio.loading = false; + return folio + } + catch(error) { + folioData.loading = false; + throw error; + } + } } // returns transcription or error message if unable to parse diff --git a/editioncrafter/src/saga/RouteListenerSaga.js b/editioncrafter/src/saga/RouteListenerSaga.js index 6dbaa0a..717e00d 100644 --- a/editioncrafter/src/saga/RouteListenerSaga.js +++ b/editioncrafter/src/saga/RouteListenerSaga.js @@ -1,5 +1,4 @@ /* eslint-disable prefer-destructuring */ -import axios from 'axios'; import { takeEvery, select } from 'redux-saga/effects'; // eslint-disable-next-line import/no-cycle @@ -34,8 +33,8 @@ function* resolveDocumentManifest() { if (document.variorum) { const variorumData = {}; for (const key of Object.keys(document.manifestURL)) { - const response = yield axios.get(document.manifestURL[key]); - variorumData[key] = response.data; + const response = yield fetch(document.manifestURL[key]); + variorumData[key] = yield response.json(); } const variorumManifest = { type: 'variorum', @@ -44,9 +43,10 @@ function* resolveDocumentManifest() { yield putResolveAction('DocumentActions.loadDocument', variorumManifest); return variorumManifest; } - const singleResponse = yield axios.get(document.manifestURL); - yield putResolveAction('DocumentActions.loadDocument', singleResponse.data); - return singleResponse.data; + const singleResponse = yield fetch(document.manifestURL); + const json = yield singleResponse.json() + yield putResolveAction('DocumentActions.loadDocument', json); + return json; } return null; @@ -86,8 +86,9 @@ function* resolveGlossary() { const glossary = yield select(justGlossary); // NOTE: need to figure out how to deal with glossary for multidocument manifests if (!glossary.loaded && glossary.URL) { - const response = yield axios.get(glossary.URL); - yield putResolveAction('GlossaryActions.loadGlossary', response.data); + const response = yield fetch(glossary.URL); + const json = yield response.json() + yield putResolveAction('GlossaryActions.loadGlossary', json); } } From 2f222373c3735b4690921a4bc13223393bbb387a Mon Sep 17 00:00:00 2001 From: Nick Laiacona Date: Sun, 30 Jun 2024 11:31:34 -0400 Subject: [PATCH 17/23] update lock --- editioncrafter/package-lock.json | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/editioncrafter/package-lock.json b/editioncrafter/package-lock.json index 9e6d26e..69e4bbd 100644 --- a/editioncrafter/package-lock.json +++ b/editioncrafter/package-lock.json @@ -12,7 +12,6 @@ "@material-ui/core": "^4.12.4", "@material-ui/icons": "^4.11.3", "@recogito/annotorious-openseadragon": "^2.7.11", - "axios": "^1.3.4", "history": "^5.3.0", "html-react-parser": "^4.2.2", "openseadragon": "^4.1.0", @@ -9749,7 +9748,8 @@ "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true }, "node_modules/autosize": { "version": "4.0.4", @@ -9776,16 +9776,6 @@ "node": ">=4" } }, - "node_modules/axios": { - "version": "1.6.8", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.8.tgz", - "integrity": "sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ==", - "dependencies": { - "follow-redirects": "^1.15.6", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" - } - }, "node_modules/axobject-query": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz", @@ -10942,6 +10932,7 @@ "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, "dependencies": { "delayed-stream": "~1.0.0" }, @@ -11607,6 +11598,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true, "engines": { "node": ">=0.4.0" } @@ -13431,6 +13423,7 @@ "version": "1.15.6", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", + "dev": true, "funding": [ { "type": "individual", @@ -13549,6 +13542,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", @@ -16796,6 +16790,7 @@ "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, "engines": { "node": ">= 0.6" } @@ -16804,6 +16799,7 @@ "version": "2.1.35", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, "dependencies": { "mime-db": "1.52.0" }, @@ -18210,7 +18206,8 @@ "node_modules/proxy-from-env": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "dev": true }, "node_modules/psl": { "version": "1.9.0", From fc3c5630efbf5f42cfe5c296f703680eeca8b877 Mon Sep 17 00:00:00 2001 From: Nick Laiacona Date: Sun, 30 Jun 2024 13:11:41 -0400 Subject: [PATCH 18/23] bug fix --- editioncrafter/src/model/Folio.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/editioncrafter/src/model/Folio.js b/editioncrafter/src/model/Folio.js index a026a2c..7e34bc2 100644 --- a/editioncrafter/src/model/Folio.js +++ b/editioncrafter/src/model/Folio.js @@ -25,7 +25,9 @@ export async function loadFolio(folioData) { try { const htmlURLResponse = await fetch(htmlURL) const xmlURLResponse = await fetch(xmlURL) - const transcription = parseTranscription(htmlURLResponse.body, xmlURLResponse.body); + const html = await htmlURLResponse.text() + const xml = await xmlURLResponse.text() + const transcription = parseTranscription(html, xml); if (!transcription) { throw new Error(`Unable to load transcription: ${htmlURL}`) } else { From 4ed7ba4914b216b0cbb9f08c86a606ad2e043bf9 Mon Sep 17 00:00:00 2001 From: Rebecca Black Date: Mon, 1 Jul 2024 12:27:23 -0400 Subject: [PATCH 19/23] updating version number for new release --- editioncrafter-umd/package.json | 2 +- editioncrafter/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/editioncrafter-umd/package.json b/editioncrafter-umd/package.json index 565440a..fd6af0f 100644 --- a/editioncrafter-umd/package.json +++ b/editioncrafter-umd/package.json @@ -1,6 +1,6 @@ { "name": "@cu-mkp/editioncrafter-umd", - "version": "1.0.2", + "version": "1.0.3", "homepage": "https://cu-mkp.github.io/editioncrafter/", "description": "A simple digital critical edition publication tool", "private": false, diff --git a/editioncrafter/package.json b/editioncrafter/package.json index 8a97ce6..586b685 100644 --- a/editioncrafter/package.json +++ b/editioncrafter/package.json @@ -1,6 +1,6 @@ { "name": "@cu-mkp/editioncrafter", - "version": "1.0.2", + "version": "1.0.3", "description": "A simple digital critical edition publication tool", "homepage": "https://cu-mkp.github.io/editioncrafter/", "private": false, From 75fe4957a115b99fa89107ea7383d6e79f0d1b0d Mon Sep 17 00:00:00 2001 From: Rebecca Black Date: Tue, 13 Aug 2024 12:26:15 -0400 Subject: [PATCH 20/23] updated m&k logo in footer --- astro-web/src/assets/footer/footer_logo.png | Bin 0 -> 8372 bytes astro-web/src/components/Footer.astro | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 astro-web/src/assets/footer/footer_logo.png diff --git a/astro-web/src/assets/footer/footer_logo.png b/astro-web/src/assets/footer/footer_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..6689f7361048b2a03232c48809f6f052b2c473f8 GIT binary patch literal 8372 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 CBVRNC literal 0 HcmV?d00001 diff --git a/astro-web/src/components/Footer.astro b/astro-web/src/components/Footer.astro index 0cf4165..954d826 100644 --- a/astro-web/src/components/Footer.astro +++ b/astro-web/src/components/Footer.astro @@ -3,7 +3,7 @@ import Container from "./Container.astro"; import logo from "../assets/footer/editioncrafterlogo.svg"; import gh from "../assets/footer/github.svg"; import twitter from "../assets/footer/twitter.svg"; -import lizard from "../assets/footer/MKLizard.png"; +import lizard from "../assets/footer/footer_logo.png"; import nsf from "../assets/footer/NSF.png"; import pss from "../assets/footer/Performant_Logo.svg"; import { Image } from "astro:assets"; From d3a1476de143b6777713dce0c58ce188aa88cf08 Mon Sep 17 00:00:00 2001 From: Rebecca Black Date: Tue, 13 Aug 2024 12:29:08 -0400 Subject: [PATCH 21/23] adding github workflows to gitignore --- astro-web/.gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/astro-web/.gitignore b/astro-web/.gitignore index 7b1a23d..274d11d 100644 --- a/astro-web/.gitignore +++ b/astro-web/.gitignore @@ -22,3 +22,4 @@ pnpm-debug.log* # github workflows .github +.github/workflows From 74494483a81e81968140c4d34cf906dacadef3c5 Mon Sep 17 00:00:00 2001 From: Rebecca Black Date: Tue, 13 Aug 2024 12:32:33 -0400 Subject: [PATCH 22/23] update footer text --- astro-web/src/components/Footer.astro | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/astro-web/src/components/Footer.astro b/astro-web/src/components/Footer.astro index 954d826..626299d 100644 --- a/astro-web/src/components/Footer.astro +++ b/astro-web/src/components/Footer.astro @@ -17,7 +17,7 @@ import { Image } from "astro:assets";

EditionCrafter

- Developed by the Making and Knowing Project at the Center for Science and Society at Columbia University and Performant Software Solutions LLC. Funded by a grant from the National Science Foundation. + Developed by the Making and Knowing Project at the Center for Science and Society at Columbia University and Performant Software Solutions LLC. Funded by Grant SES-2218218 from the National Science Foundation.

diff --git a/astro-web/src/pages/index.astro b/astro-web/src/pages/index.astro index d3f3a05..7198742 100644 --- a/astro-web/src/pages/index.astro +++ b/astro-web/src/pages/index.astro @@ -18,10 +18,10 @@ import elygreen from '../assets/projects/thumbnails/elygreen.png';

- A simple digital critical edition publication tool + A simple digital edition publication tool

- EditionCrafter is an easy-to-use tool for scholars, educators, and research institutions to publish digital critical editions in a low-cost and sustainable manner. + EditionCrafter is an easy-to-use tool for scholars, educators, and research institutions to publish digital editions in a low-cost and sustainable manner.