From c50169de81763ce178bd52443340b8b175e2a5d0 Mon Sep 17 00:00:00 2001
From: Chris Beer <cabeer@stanford.edu>
Date: Wed, 13 May 2020 07:57:15 -0700
Subject: [PATCH] Add continuous view to the selector

---
 __tests__/src/components/WindowViewSettings.test.js | 12 +++++++++---
 src/components/WindowViewSettings.js                |  9 +++++++++
 src/lib/CanvasGroupings.js                          |  2 +-
 src/locales/en/translation.json                     |  1 +
 src/state/selectors/windows.js                      |  2 +-
 5 files changed, 21 insertions(+), 5 deletions(-)

diff --git a/__tests__/src/components/WindowViewSettings.test.js b/__tests__/src/components/WindowViewSettings.test.js
index 4a7c06a07..b33a2e81d 100644
--- a/__tests__/src/components/WindowViewSettings.test.js
+++ b/__tests__/src/components/WindowViewSettings.test.js
@@ -23,10 +23,11 @@ describe('WindowViewSettings', () => {
     const wrapper = createWrapper();
     expect(wrapper.find(ListSubheader).length).toBe(1);
     const labels = wrapper.find(FormControlLabel);
-    expect(labels.length).toBe(3);
+    expect(labels.length).toBe(4);
     expect(labels.at(0).props().value).toBe('single');
     expect(labels.at(1).props().value).toBe('book');
-    expect(labels.at(2).props().value).toBe('gallery');
+    expect(labels.at(2).props().value).toBe('scroll');
+    expect(labels.at(3).props().value).toBe('gallery');
   });
 
   it('should set the correct label active (by setting the secondary color)', () => {
@@ -37,8 +38,11 @@ describe('WindowViewSettings', () => {
     wrapper = createWrapper({ windowViewType: 'book' });
     expect(wrapper.find(FormControlLabel).at(1).props().control.props.color).toEqual('secondary');
 
-    wrapper = createWrapper({ windowViewType: 'gallery' });
+    wrapper = createWrapper({ windowViewType: 'scroll' });
     expect(wrapper.find(FormControlLabel).at(2).props().control.props.color).toEqual('secondary');
+
+    wrapper = createWrapper({ windowViewType: 'gallery' });
+    expect(wrapper.find(FormControlLabel).at(3).props().control.props.color).toEqual('secondary');
   });
 
   it('updates state when the view config selection changes', () => {
@@ -49,6 +53,8 @@ describe('WindowViewSettings', () => {
     wrapper.find(MenuItem).at(1).simulate('click');
     expect(setWindowViewType).toHaveBeenCalledWith('xyz', 'book');
     wrapper.find(MenuItem).at(2).simulate('click');
+    expect(setWindowViewType).toHaveBeenCalledWith('xyz', 'scroll');
+    wrapper.find(MenuItem).at(3).simulate('click');
     expect(setWindowViewType).toHaveBeenCalledWith('xyz', 'gallery');
   });
 
diff --git a/src/components/WindowViewSettings.js b/src/components/WindowViewSettings.js
index 1666c7a8a..92d7116a9 100644
--- a/src/components/WindowViewSettings.js
+++ b/src/components/WindowViewSettings.js
@@ -84,6 +84,15 @@ export class WindowViewSettings extends Component {
             labelPlacement="bottom"
           />
         </MenuItem>
+        <MenuItem className={classes.MenuItem} onClick={() => { this.handleChange('scroll'); handleClose(); }}>
+          <FormControlLabel
+            value="scroll"
+            classes={{ label: windowViewType === 'scroll' ? classes.selectedLabel : classes.label }}
+            control={<BookViewIcon color={windowViewType === 'scroll' ? 'secondary' : undefined} />}
+            label={t('scroll')}
+            labelPlacement="bottom"
+          />
+        </MenuItem>
         <MenuItem className={classes.MenuItem} onClick={() => { this.handleChange('gallery'); handleClose(); }}>
           <FormControlLabel
             value="gallery"
diff --git a/src/lib/CanvasGroupings.js b/src/lib/CanvasGroupings.js
index 690d72a1e..9939e8622 100644
--- a/src/lib/CanvasGroupings.js
+++ b/src/lib/CanvasGroupings.js
@@ -29,7 +29,7 @@ export default class CanvasGroupings {
     if (this._groupings) { // eslint-disable-line no-underscore-dangle
       return this._groupings; // eslint-disable-line no-underscore-dangle
     }
-    if (this.viewType === 'continuous') {
+    if (this.viewType === 'scroll') {
       return [this.canvases];
     }
     if (this.viewType !== 'book') {
diff --git a/src/locales/en/translation.json b/src/locales/en/translation.json
index 08d855641..b655cb2d5 100644
--- a/src/locales/en/translation.json
+++ b/src/locales/en/translation.json
@@ -104,6 +104,7 @@
     "retry": "Retry",
     "right": "Right",
     "rights": "License",
+    "scroll": "Scroll",
     "searchInputLabel": "search terms",
     "searchNextResult": "Next result",
     "searchNoResults": "No results found",
diff --git a/src/state/selectors/windows.js b/src/state/selectors/windows.js
index 245fb617c..67c490f87 100644
--- a/src/state/selectors/windows.js
+++ b/src/state/selectors/windows.js
@@ -88,7 +88,7 @@ export const getWindowViewType = createSelector(
   ],
   (window, manifestViewingHint, manifestBehaviors, defaultView) => {
     const lookup = {
-      continuous: 'continuous',
+      continuous: 'scroll',
       individuals: 'single',
       paged: 'book',
     };
-- 
GitLab