Skip to content
Snippets Groups Projects
Commit bf4e4e4a authored by Andrew Winget (Standard)'s avatar Andrew Winget (Standard)
Browse files

Closes #1576. Adds mechanism to open windows when passed in as a config object.

parent 4577aad2
No related branches found
No related tags found
No related merge requests found
......@@ -11,7 +11,13 @@
<script>document.write("<script type='text/javascript' src='../../../dist/mirador.min.js?v=" + Date.now() + "'><\/script>");</script>
<script type="text/javascript">
var miradorInstance = Mirador.viewer({
id: 'mirador'
id: 'mirador',
windows: [{
loadedManifest: 'https://iiif.harvardartmuseums.org/manifests/object/299843',
},
{
loadedManifest: 'https://iiif.harvardartmuseums.org/manifests/object/299843'
}]
});
</script>
</body>
......
......@@ -10,6 +10,9 @@ describe('Window actions', () => {
await expect(page).toClick('li button');
await expect(page).toMatchElement('.mirador-window');
await expect(page).toClick('.mirador-window-close');
await expect(page).not.toMatchElement('.mirador-window');
const numWindows = await page.evaluate(page => (
document.querySelectorAll('.mirador-window').length
)); // only default configed windows found
await expect(numWindows).toBe(2);
});
});
......@@ -40,4 +40,20 @@ describe('MiradorViewer', () => {
expect(instance.store.pluginReducers).toBeDefined();
});
});
describe('processConfig', () => {
it('transforms config values to actions to dispatch to store', () => {
instance = new MiradorViewer({
id: 'mirador',
windows: [{
loadedManifest: 'https://iiif.harvardartmuseums.org/manifests/object/299843',
},
{
loadedManifest: 'https://iiif.harvardartmuseums.org/manifests/object/299843',
},
],
});
expect(Object.keys(instance.store.getState().windows).length).toBe(2);
});
});
});
export default {
foo: 'bar',
windows: [],
thumbnailNavigationHeight: 150,
};
......@@ -16,15 +16,13 @@ class MiradorViewer {
constructor(config) {
this.config = config;
this.processPlugins();
this.processConfig();
const viewer = {
actions,
store,
};
const action = actions.setConfig(deepmerge(settings, config));
store.dispatch(action);
ReactDOM.render(
<Provider store={store}>
<ConnectedApp config={config} />
......@@ -35,6 +33,22 @@ class MiradorViewer {
return viewer;
}
/**
* Process config into actions
*/
processConfig() {
const mergedConfig = deepmerge(settings, this.config);
const action = actions.setConfig(mergedConfig);
store.dispatch(action);
mergedConfig.windows.forEach((miradorWindow) => {
store.dispatch(actions.fetchManifest(miradorWindow.loadedManifest));
store.dispatch(actions.addWindow({
manifestId: miradorWindow.loadedManifest,
}));
});
}
/**
* Process Plugins
*/
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment