Skip to content
Snippets Groups Projects
index.tsx 1.58 KiB
Newer Older
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>
  );
}