From c6929cff1cf4e40880fa4b3fe1de546e983fc652 Mon Sep 17 00:00:00 2001
From: Jessie Keck <jessie.keck@gmail.com>
Date: Mon, 4 Feb 2019 15:24:36 -0800
Subject: [PATCH] Allow canvasIndex to be passed in with the window config on
 viewer initialization.

---
 __tests__/integration/mirador/index.html                   | 1 +
 __tests__/integration/mirador/thumbnail-navigation.test.js | 4 +++-
 __tests__/src/lib/MiradorViewer.test.js                    | 3 +++
 src/lib/MiradorViewer.js                                   | 1 +
 4 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/__tests__/integration/mirador/index.html b/__tests__/integration/mirador/index.html
index e947ffa01..46a2a53a1 100644
--- a/__tests__/integration/mirador/index.html
+++ b/__tests__/integration/mirador/index.html
@@ -14,6 +14,7 @@
        id: 'mirador',
        windows: [{
          loadedManifest: 'https://iiif.harvardartmuseums.org/manifests/object/299843',
+         canvasIndex: 2,
        },
        {
          loadedManifest: 'https://media.nga.gov/public/manifests/nga_highlights.json',
diff --git a/__tests__/integration/mirador/thumbnail-navigation.test.js b/__tests__/integration/mirador/thumbnail-navigation.test.js
index de83c2d2d..1baaa01d0 100644
--- a/__tests__/integration/mirador/thumbnail-navigation.test.js
+++ b/__tests__/integration/mirador/thumbnail-navigation.test.js
@@ -10,8 +10,10 @@ describe('Thumbnail navigation', () => {
     let windows = await page.evaluate(() => (
       miradorInstance.store.getState().windows
     ));
-    expect(Object.values(windows)[0].canvasIndex).toBe(0);
+    expect(Object.values(windows)[0].canvasIndex).toBe(2); // test harness in index.html starts at 2
+    await page.waitFor(1000);
     await expect(page).toClick('.mirador-thumbnail-nav-canvas-1');
+    await expect(page).toMatchElement('.mirador-thumbnail-nav-canvas-1.mirador-current-canvas', { timeout: 1500 });
     windows = await page.evaluate(() => (
       miradorInstance.store.getState().windows
     ));
diff --git a/__tests__/src/lib/MiradorViewer.test.js b/__tests__/src/lib/MiradorViewer.test.js
index d33c6af42..496701c8b 100644
--- a/__tests__/src/lib/MiradorViewer.test.js
+++ b/__tests__/src/lib/MiradorViewer.test.js
@@ -46,6 +46,7 @@ describe('MiradorViewer', () => {
         id: 'mirador',
         windows: [{
           loadedManifest: 'https://iiif.harvardartmuseums.org/manifests/object/299843',
+          canvasIndex: 2,
         },
         {
           loadedManifest: 'https://iiif.harvardartmuseums.org/manifests/object/299843',
@@ -57,6 +58,8 @@ describe('MiradorViewer', () => {
       const { windows } = instance.store.getState();
       const windowIds = Object.keys(windows);
       expect(Object.keys(windowIds).length).toBe(2);
+      expect(windows[windowIds[0]].canvasIndex).toBe(2);
+      expect(windows[windowIds[1]].canvasIndex).toBe(0);
       expect(windows[windowIds[0]].thumbnailNavigationPosition).toBe('bottom');
       expect(windows[windowIds[1]].thumbnailNavigationPosition).toBe('off');
     });
diff --git a/src/lib/MiradorViewer.js b/src/lib/MiradorViewer.js
index 325b7b5cb..b68f8b64e 100644
--- a/src/lib/MiradorViewer.js
+++ b/src/lib/MiradorViewer.js
@@ -51,6 +51,7 @@ class MiradorViewer {
       }
       store.dispatch(actions.fetchManifest(miradorWindow.loadedManifest));
       store.dispatch(actions.addWindow({
+        canvasIndex: (miradorWindow.canvasIndex || 0),
         manifestId: miradorWindow.loadedManifest,
         thumbnailNavigationPosition,
       }));
-- 
GitLab