Skip to content
Snippets Groups Projects
index.tsx 1.55 KiB
Newer Older
  • Learn to ignore specific revisions
  • Jacopo Gasparetto's avatar
    Jacopo Gasparetto committed
    import { Page } from '../../components/Page';
    
    import { Table, Column } 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[] = [
    
        { id: "bucket", name: "Bucket" },
        { id: "objects", name: "Objects" },
        { id: "bucket_size", name: "Size" },
        { id: "access", name: "Access" }
    
    Jacopo Gasparetto's avatar
    Jacopo Gasparetto committed
      ];
    
    Jacopo Gasparetto's avatar
    Jacopo Gasparetto committed
      const tableData = bucketList.map((bucket: BucketInfo) => {
    
        return [
    
          { columnId: "bucket", value: bucket.name },
          { columnId: "objects", value: bucket.objects },
          { columnId: "bucket_size", value: getHumanSize(bucket.size) },
          { columnId: "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>
      );
    }