Store splitter position in local storage
authorPawel Kromplewski <pawel.kromplewski@contractors.roche.com>
Wed, 31 Oct 2018 14:05:01 +0000 (15:05 +0100)
committerPawel Kromplewski <pawel.kromplewski@contractors.roche.com>
Wed, 31 Oct 2018 14:05:01 +0000 (15:05 +0100)
Feature #14424

Arvados-DCO-1.1-Signed-off-by: Pawel Kromplewski <pawel.kromplewski@contractors.roche.com>

src/views/workbench/workbench.tsx

index 41f9682f639c8e76faed175f8bc2511ce680c196..bdea22f34f6a7c5ef60be714aaaee8812782a0f1 100644 (file)
@@ -77,12 +77,23 @@ const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
 
 type WorkbenchPanelProps = WithStyles<CssRules>;
 
+const defaultSplitterSize = 90;
+
+const getSecondaryInitialSize = () => {
+    const splitterSize = localStorage.getItem('splitterSize');
+    return splitterSize ? Number(splitterSize) : defaultSplitterSize;
+};
+
+const onPaneSizeChange = (size: number) => localStorage.setItem('splitterSize', size.toString());
+
 export const WorkbenchPanel =
     withStyles(styles)(({ classes }: WorkbenchPanelProps) =>
         <Grid container item xs className={classes.root}>
             <Grid container item xs className={classes.container}>
                 <SplitterLayout customClassName={classes.splitter} percentage={true}
-                    primaryIndex={0} primaryMinSize={10} secondaryInitialSize={90} secondaryMinSize={40}>
+                                primaryIndex={0} primaryMinSize={10}
+                                secondaryInitialSize={getSecondaryInitialSize()} secondaryMinSize={40}
+                                onSecondaryPaneSizeChange={onPaneSizeChange}>
                     <Grid container item xs component='aside' direction='column' className={classes.asidePanel}>
                         <SidePanel />
                     </Grid>
@@ -133,4 +144,4 @@ export const WorkbenchPanel =
             <UpdateProcessDialog />
             <UpdateProjectDialog />
         </Grid>
-    );
+    );
\ No newline at end of file