diff --git a/__tests__/integration/mirador/layers.html b/__tests__/integration/mirador/layers.html index 9dd9151604d9b43108b16c5ceb711aa15a4d2a40..9be3209d0228e610a21ca10da7ce2d6c9abe84f8 100644 --- a/__tests__/integration/mirador/layers.html +++ b/__tests__/integration/mirador/layers.html @@ -14,7 +14,7 @@ var miradorInstance = Mirador.viewer({ id: 'mirador', windows: [{ - manifestId: 'https://prtd.app/hamilton/manifest.json', + manifestId: 'https://dvp.prtd.app/hamilton/manifest.json', }], window: { defaultSideBarPanel: 'layers', diff --git a/__tests__/src/components/OpenSeadragonViewer.test.js b/__tests__/src/components/OpenSeadragonViewer.test.js index 5ea1e47d055691a762e93c593b8952ebd45c21fb..f0c3031133ec451fbb810dd9faa51e6c12f38287 100644 --- a/__tests__/src/components/OpenSeadragonViewer.test.js +++ b/__tests__/src/components/OpenSeadragonViewer.test.js @@ -185,6 +185,7 @@ describe('OpenSeadragonViewer', () => { const setOpacity = jest.fn(); const setItemIndex = jest.fn(); const canvasWorld = { + contentResource: i => i, layerIndexOfImageResource: i => 1 - i, layerOpacityOfImageResource: i => 0.5, }; @@ -192,7 +193,7 @@ describe('OpenSeadragonViewer', () => { wrapper.instance().loaded = true; wrapper.instance().viewer = { world: { - getItemAt: i => ({ setOpacity, source: i }), + getItemAt: i => ({ setOpacity, source: { id: i } }), getItemCount: () => 2, setItemIndex, }, @@ -205,9 +206,9 @@ describe('OpenSeadragonViewer', () => { expect(setOpacity.mock.calls[1]).toEqual([0.5]); expect(setItemIndex).toHaveBeenCalledTimes(2); - expect(setItemIndex.mock.calls[0][0].source).toEqual(0); + expect(setItemIndex.mock.calls[0][0].source.id).toEqual(0); expect(setItemIndex.mock.calls[0][1]).toEqual(1); - expect(setItemIndex.mock.calls[1][0].source).toEqual(1); + expect(setItemIndex.mock.calls[1][0].source.id).toEqual(1); expect(setItemIndex.mock.calls[1][1]).toEqual(0); }); }); diff --git a/src/components/OpenSeadragonViewer.js b/src/components/OpenSeadragonViewer.js index 6d9b652d3cc4e6700fda4897b1793947c055108b..157d048868abd74fe605b99e77fa45c2ed2f9168 100644 --- a/src/components/OpenSeadragonViewer.js +++ b/src/components/OpenSeadragonViewer.js @@ -245,7 +245,7 @@ export class OpenSeadragonViewer extends Component { } const tileSource = infoResponse.json; - const contentResource = canvasWorld.contentResource(infoResponse); + const contentResource = canvasWorld.contentResource(infoResponse.id); if (!contentResource) return; @@ -273,9 +273,10 @@ export class OpenSeadragonViewer extends Component { } items.forEach((item, i) => { - const newIndex = canvasWorld.layerIndexOfImageResource(item.source); + const contentResource = canvasWorld.contentResource(item.source['@id'] || item.source.id); + const newIndex = canvasWorld.layerIndexOfImageResource(contentResource); if (i !== newIndex) world.setItemIndex(item, newIndex); - item.setOpacity(canvasWorld.layerOpacityOfImageResource(item.source)); + item.setOpacity(canvasWorld.layerOpacityOfImageResource(contentResource)); }); } diff --git a/src/lib/CanvasWorld.js b/src/lib/CanvasWorld.js index e74ab23dccd9dff59aca0b47efa675cf0bd34e5e..ab44caade4562a6b108c0e54533c05d1aa205df4 100644 --- a/src/lib/CanvasWorld.js +++ b/src/lib/CanvasWorld.js @@ -57,17 +57,16 @@ export default class CanvasWorld { } /** Get the IIIF content resource for an image */ - contentResource(infoResponse) { - const imageId = infoResponse.id; + contentResource(infoResponseId) { const manifestoCanvas = this.canvases.find(c => c.imageServiceIds.some(id => ( normalizeUrl(id, { stripAuthentication: false }) - === normalizeUrl(imageId, { stripAuthentication: false })))); + === normalizeUrl(infoResponseId, { stripAuthentication: false })))); if (!manifestoCanvas) return undefined; return manifestoCanvas.imageResources .find(r => ( normalizeUrl(r.getServices()[0].id, { stripAuthentication: false }) - === normalizeUrl(imageId, { stripAuthentication: false }))); + === normalizeUrl(infoResponseId, { stripAuthentication: false }))); } /** @private */