Skip to content
Snippets Groups Projects
index.tsx 1.58 KiB
Newer Older
  • Learn to ignore specific revisions
  • Jacopo Gasparetto's avatar
    Jacopo Gasparetto committed
    import { Page } from '../../components/Page';
    
    Jacopo Gasparetto's avatar
    Jacopo Gasparetto committed
    import { Table, Column, Value } from '../../components/Table';
    
    import { useContext } from 'react';
    
    import { BucketInfo } from '../../models/bucket';
    import { getHumanSize, parseReadWriteAccess } from '../../commons/utils';
    
    import { BucketsListContext } from '../../services/BucketListContext';
    
    Jacopo Gasparetto's avatar
    Jacopo Gasparetto committed
    import { useNavigate } from 'react-router-dom';
    
    import './index.css';
    
    Jacopo Gasparetto's avatar
    Jacopo Gasparetto committed
    
    export const Home = () => {
    
    Jacopo Gasparetto's avatar
    Jacopo Gasparetto committed
      const navigate = useNavigate();
      const bucketList = useContext(BucketsListContext);
    
    Jacopo Gasparetto's avatar
    Jacopo Gasparetto committed
      const columns: Column[] = [
        { name: "Bucket", columnType: "string" },
        { name: "Objects", columnType: "string" },
        { name: "Size", columnType: "string" },
        { name: "Access", columnType: "string" }
      ];
    
    Jacopo Gasparetto's avatar
    Jacopo Gasparetto committed
      const tableData = bucketList.map((bucket: BucketInfo) => {
    
        return [
    
    Jacopo Gasparetto's avatar
    Jacopo Gasparetto committed
          { columnName: "Bucket", value: bucket.name },
          { columnName: "Objects", value: bucket.objects },
          { columnName: "Size", value: getHumanSize(bucket.size) },
          { columnName: "Access", value: parseReadWriteAccess(bucket.rw_access) }
    
    Jacopo Gasparetto's avatar
    Jacopo Gasparetto committed
      const onClick = (_: React.MouseEvent<HTMLTableRowElement>, index: number) => {
        const bucketName = bucketList[index].name;
        navigate("/" + bucketName)
        console.log(bucketName);
      }
    
    
    Jacopo Gasparetto's avatar
    Jacopo Gasparetto committed
      return (
    
        <Page title="Home">
    
          <div className="Home">
    
            <div className="flex place-content-center">
    
    Jacopo Gasparetto's avatar
    Jacopo Gasparetto committed
              <div className="flex w-2/3">
                <Table
                  columns={columns}
                  data={tableData}
                  onClick={onClick}
                />
              </div>
    
    Jacopo Gasparetto's avatar
    Jacopo Gasparetto committed
        </Page>
      );
    }