Skip to content
Snippets Groups Projects
Commit 23a7de50 authored by Jack Reed's avatar Jack Reed Committed by Chris Beer
Browse files

Use infoResponse id instead of the object

So that we have better guarantees about the shape of the object passed in.
Fixes issues where the layers were not rendering correctly
parent 83a2703d
No related branches found
No related tags found
No related merge requests found
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
var miradorInstance = Mirador.viewer({ var miradorInstance = Mirador.viewer({
id: 'mirador', id: 'mirador',
windows: [{ windows: [{
manifestId: 'https://prtd.app/hamilton/manifest.json', manifestId: 'https://dvp.prtd.app/hamilton/manifest.json',
}], }],
window: { window: {
defaultSideBarPanel: 'layers', defaultSideBarPanel: 'layers',
......
...@@ -185,6 +185,7 @@ describe('OpenSeadragonViewer', () => { ...@@ -185,6 +185,7 @@ describe('OpenSeadragonViewer', () => {
const setOpacity = jest.fn(); const setOpacity = jest.fn();
const setItemIndex = jest.fn(); const setItemIndex = jest.fn();
const canvasWorld = { const canvasWorld = {
contentResource: i => i,
layerIndexOfImageResource: i => 1 - i, layerIndexOfImageResource: i => 1 - i,
layerOpacityOfImageResource: i => 0.5, layerOpacityOfImageResource: i => 0.5,
}; };
...@@ -192,7 +193,7 @@ describe('OpenSeadragonViewer', () => { ...@@ -192,7 +193,7 @@ describe('OpenSeadragonViewer', () => {
wrapper.instance().loaded = true; wrapper.instance().loaded = true;
wrapper.instance().viewer = { wrapper.instance().viewer = {
world: { world: {
getItemAt: i => ({ setOpacity, source: i }), getItemAt: i => ({ setOpacity, source: { id: i } }),
getItemCount: () => 2, getItemCount: () => 2,
setItemIndex, setItemIndex,
}, },
...@@ -205,9 +206,9 @@ describe('OpenSeadragonViewer', () => { ...@@ -205,9 +206,9 @@ describe('OpenSeadragonViewer', () => {
expect(setOpacity.mock.calls[1]).toEqual([0.5]); expect(setOpacity.mock.calls[1]).toEqual([0.5]);
expect(setItemIndex).toHaveBeenCalledTimes(2); 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[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); expect(setItemIndex.mock.calls[1][1]).toEqual(0);
}); });
}); });
......
...@@ -245,7 +245,7 @@ export class OpenSeadragonViewer extends Component { ...@@ -245,7 +245,7 @@ export class OpenSeadragonViewer extends Component {
} }
const tileSource = infoResponse.json; const tileSource = infoResponse.json;
const contentResource = canvasWorld.contentResource(infoResponse); const contentResource = canvasWorld.contentResource(infoResponse.id);
if (!contentResource) return; if (!contentResource) return;
...@@ -273,9 +273,10 @@ export class OpenSeadragonViewer extends Component { ...@@ -273,9 +273,10 @@ export class OpenSeadragonViewer extends Component {
} }
items.forEach((item, i) => { 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); if (i !== newIndex) world.setItemIndex(item, newIndex);
item.setOpacity(canvasWorld.layerOpacityOfImageResource(item.source)); item.setOpacity(canvasWorld.layerOpacityOfImageResource(contentResource));
}); });
} }
......
...@@ -57,17 +57,16 @@ export default class CanvasWorld { ...@@ -57,17 +57,16 @@ export default class CanvasWorld {
} }
/** Get the IIIF content resource for an image */ /** Get the IIIF content resource for an image */
contentResource(infoResponse) { contentResource(infoResponseId) {
const imageId = infoResponse.id;
const manifestoCanvas = this.canvases.find(c => c.imageServiceIds.some(id => ( const manifestoCanvas = this.canvases.find(c => c.imageServiceIds.some(id => (
normalizeUrl(id, { stripAuthentication: false }) normalizeUrl(id, { stripAuthentication: false })
=== normalizeUrl(imageId, { stripAuthentication: false })))); === normalizeUrl(infoResponseId, { stripAuthentication: false }))));
if (!manifestoCanvas) return undefined; if (!manifestoCanvas) return undefined;
return manifestoCanvas.imageResources return manifestoCanvas.imageResources
.find(r => ( .find(r => (
normalizeUrl(r.getServices()[0].id, { stripAuthentication: false }) normalizeUrl(r.getServices()[0].id, { stripAuthentication: false })
=== normalizeUrl(imageId, { stripAuthentication: false }))); === normalizeUrl(infoResponseId, { stripAuthentication: false })));
} }
/** @private */ /** @private */
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment