import { Page } from '../../components/Page';
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';
import { useNavigate } from 'react-router-dom';
import './index.css';

export const Home = () => {
  const navigate = useNavigate();
  const bucketList = useContext(BucketsListContext);

  const columns: Column[] = [
    { name: "Bucket", columnType: "string" },
    { name: "Objects", columnType: "string" },
    { name: "Size", columnType: "string" },
    { name: "Access", columnType: "string" }
  ];

  const tableData = bucketList.map((bucket: BucketInfo) => {
    return [
      { columnName: "Bucket", value: bucket.name },
      { columnName: "Objects", value: bucket.objects },
      { columnName: "Size", value: getHumanSize(bucket.size) },
      { columnName: "Access", value: parseReadWriteAccess(bucket.rw_access) }
    ]
  });

  const onClick = (_: React.MouseEvent<HTMLTableRowElement>, index: number) => {
    const bucketName = bucketList[index].name;
    navigate("/" + bucketName)
    console.log(bucketName);
  }

  return (
    <Page title="Home">
      <div className="Home">
        <div className="flex place-content-center">
          <div className="flex w-2/3">
            <Table
              columns={columns}
              data={tableData}
              onClick={onClick}
            />
          </div>
        </div>
      </div>
    </Page>
  );
}