From 01e6db6d9271aff524af33c9fb4af4b8a4cc577b Mon Sep 17 00:00:00 2001
From: vkovtun <viktor.kovtun@id.ethz.ch>
Date: Tue, 30 May 2023 19:03:21 +0200
Subject: [PATCH] SSDM-13579: Implemented proper grid view for files.

---
 .../components/database/DatabaseComponent.jsx |  2 +-
 .../database/data-browser/GridView.jsx        | 10 +++++++--
 .../database/data-browser/GridViewItem.jsx    | 21 ++++++++++++++-----
 3 files changed, 25 insertions(+), 8 deletions(-)

diff --git a/ui-admin/src/js/components/database/DatabaseComponent.jsx b/ui-admin/src/js/components/database/DatabaseComponent.jsx
index 64cf60e40b0..a91ed0a93b1 100644
--- a/ui-admin/src/js/components/database/DatabaseComponent.jsx
+++ b/ui-admin/src/js/components/database/DatabaseComponent.jsx
@@ -79,7 +79,7 @@ class DatabaseComponent extends React.PureComponent {
     return (
       this.state.showDataBrowser
         ?
-          <DataBrowser viewType='list'/>
+          <DataBrowser viewType='grid'/>
         :
           <Container>
             <pre>{JSON.stringify(this.state.json || {}, null, 2)}</pre>
diff --git a/ui-admin/src/js/components/database/data-browser/GridView.jsx b/ui-admin/src/js/components/database/data-browser/GridView.jsx
index 69163f7a8b5..61c6561eb8f 100644
--- a/ui-admin/src/js/components/database/data-browser/GridView.jsx
+++ b/ui-admin/src/js/components/database/data-browser/GridView.jsx
@@ -3,7 +3,13 @@ import { withStyles } from '@material-ui/core/styles'
 import GridViewItem from "@src/js/components/database/data-browser/GridViewItem.jsx";
 import Container from "@src/js/components/common/form/Container.jsx";
 
-const styles = theme => ({
+const styles = (theme) => ({
+    container: {
+        fontFamily: theme.typography.fontFamily,
+        display: 'grid',
+        gridTemplateColumns: 'repeat(auto-fill, minmax(8rem, 1fr))',
+        gridGap: '0.5rem'
+    }
 })
 
 class GridView extends React.Component {
@@ -11,7 +17,7 @@ class GridView extends React.Component {
     render() {
         const { classes, configuration, files } = this.props
         return (
-            <Container>
+            <Container className={classes.container}>
                 {files.map((file) => <GridViewItem file={file} configuration={configuration}/>)}
             </Container>
         )
diff --git a/ui-admin/src/js/components/database/data-browser/GridViewItem.jsx b/ui-admin/src/js/components/database/data-browser/GridViewItem.jsx
index 624509fae67..a3e2f74ff6a 100644
--- a/ui-admin/src/js/components/database/data-browser/GridViewItem.jsx
+++ b/ui-admin/src/js/components/database/data-browser/GridViewItem.jsx
@@ -3,11 +3,22 @@ import { withStyles } from '@material-ui/core/styles'
 import FolderIcon from "@material-ui/icons/FolderOpen";
 import FileIcon from "@material-ui/icons/InsertDriveFileOutlined";
 import autoBind from "auto-bind";
-
-const styles = theme => ({
+import Container from "@src/js/components/common/form/Container.jsx";
+
+const styles = (theme) => ({
+    cell: {
+        display: 'block',
+        position: 'relative',
+        width: '6rem',
+        height: '8rem',
+        overflow: 'hidden',
+        margin: '0.25rem',
+        // border: '1px solid black',
+        textAlign: 'center'
+    },
     icon: {
         verticalAlign: 'middle',
-        fontSize: '4rem'
+        fontSize: '6rem'
     },
 })
 
@@ -42,9 +53,9 @@ class GridViewItem extends React.Component {
         const { classes, file } = this.props
 
         return (
-            <div>
+            <Container className={classes.cell}>
                 <>{this.getIcon(file)} {file.name}</>
-            </div>
+            </Container>
         )
     }
 }
-- 
GitLab