From eda8c2ea7e38030af5a47fdf8f06394bd25c5806 Mon Sep 17 00:00:00 2001
From: vkovtun <viktor.kovtun@id.ethz.ch>
Date: Fri, 23 Jun 2023 15:27:43 +0200
Subject: [PATCH] SSDM-13579: Added show info toggle button.

---
 .../database/data-browser/DataBrowser.jsx     | 10 ++++++++--
 .../database/data-browser/InfoPanel.jsx       |  6 +++++-
 .../database/data-browser/Toolbar.jsx         | 20 +++++++++++++++++--
 3 files changed, 31 insertions(+), 5 deletions(-)

diff --git a/ui-admin/src/js/components/database/data-browser/DataBrowser.jsx b/ui-admin/src/js/components/database/data-browser/DataBrowser.jsx
index 4a7e73bc405..c000e053e40 100644
--- a/ui-admin/src/js/components/database/data-browser/DataBrowser.jsx
+++ b/ui-admin/src/js/components/database/data-browser/DataBrowser.jsx
@@ -147,15 +147,21 @@ class DataBrowser extends React.Component {
     await AppController.getInstance().errorChange(error)
   }
 
+  handleShowInfoChange() {
+    this.setState({showInfo: !this.state.showInfo})
+  }
+
   render() {
-    const { viewType, files, selectedFile, multiselectedFiles } = this.state
     const { classes } = this.props
+    const { viewType, files, selectedFile, multiselectedFiles, showInfo } = this.state
 
     return (
       <Paper className={classes.boundary}>
         <Toolbar
           viewType={viewType}
           onViewTypeChange={this.handleViewTypeChange}
+          onShowInfoChange={this.handleShowInfoChange}
+          showInfo={showInfo}
         />
         <div className={[classes.flexContainer, classes.boundary].join(' ')}>
           {viewType === 'list' && (
@@ -214,7 +220,7 @@ class DataBrowser extends React.Component {
               multiselectedFiles = {multiselectedFiles}
             />
           )}
-          {selectedFile && <InfoPanel file={selectedFile} configuration={configuration} />}
+          {showInfo && selectedFile && <InfoPanel file={selectedFile} configuration={configuration} />}
         </div>
       </Paper>
     )
diff --git a/ui-admin/src/js/components/database/data-browser/InfoPanel.jsx b/ui-admin/src/js/components/database/data-browser/InfoPanel.jsx
index 51bb16d7d52..e5f798debf8 100644
--- a/ui-admin/src/js/components/database/data-browser/InfoPanel.jsx
+++ b/ui-admin/src/js/components/database/data-browser/InfoPanel.jsx
@@ -41,7 +41,11 @@ class InfoPanel extends React.Component {
   }
 
   render() {
-    const { classes, file, configuration } = this.props
+    const {
+      classes,
+      file,
+      configuration
+    } = this.props
 
     return (file &&
       <Container>
diff --git a/ui-admin/src/js/components/database/data-browser/Toolbar.jsx b/ui-admin/src/js/components/database/data-browser/Toolbar.jsx
index 314eb292250..e2a9ee15a6d 100644
--- a/ui-admin/src/js/components/database/data-browser/Toolbar.jsx
+++ b/ui-admin/src/js/components/database/data-browser/Toolbar.jsx
@@ -26,16 +26,32 @@ import SettingsIcon from '@material-ui/icons/Settings'
 import SearchIcon from '@material-ui/icons/Search'
 import InfoIcon from '@material-ui/icons/InfoOutlined'
 import CreateNewFolderIcon from '@material-ui/icons/CreateNewFolderOutlined'
+import autoBind from "auto-bind";
+import { ToggleButton } from "@material-ui/lab";
 
 const styles = () => ({})
 
 class Toolbar extends React.Component {
+
+  constructor(props, context) {
+    super(props, context)
+    autoBind(this)
+  }
+
   render() {
-    const { viewType, onViewTypeChange, classes } = this.props
+    const {
+      viewType,
+      onViewTypeChange,
+      classes,
+      showInfo,
+      onShowInfoChange
+    } = this.props
     return (
       <>
+        <ToggleButton styles={{ root: classes.button }} selected={showInfo} onChange={onShowInfoChange} aria-label='Info'>
+          <InfoIcon />
+        </ToggleButton>
         <Button styles={{ root: classes.button }} label='New folder' startIcon={<CreateNewFolderIcon />} />
-        <Button styles={{ root: classes.button }} startIcon={<InfoIcon />} />
         <Button styles={{ root: classes.button }} label='Search' startIcon={<SearchIcon />} />
         {viewType === 'list' && <Button styles={{ root: classes.button }} label={<ViewComfyIcon />} onClick={() => onViewTypeChange('grid')} />}
         {viewType === 'grid' && <Button styles={{ root: classes.button }} label={<ViewListIcon />} onClick={() => onViewTypeChange('list')} />}
-- 
GitLab