"use client";

import * as React from "react";

import {
  getCoreRowModel,
  getPaginationRowModel,
  useReactTable,
  type PaginationState,
} from "@tanstack/react-table";

import { DataTablePagination, DataTableShell } from "@/app/dashboard/_components/data-table";

import { createMissingMarketPriceIsinColumns } from "./columns";
import type { MissingMarketPriceIsinRow } from "./schema";

type Props = {
  data: MissingMarketPriceIsinRow[];
};

export function MissingMarketPriceIsinTable({ data }: Props) {
  const [pagination, setPagination] = React.useState<PaginationState>({
    pageIndex: 0,
    pageSize: 50,
  });

  const pageOffset = pagination.pageIndex * pagination.pageSize;

  const columns = React.useMemo(
    () => createMissingMarketPriceIsinColumns(pageOffset),
    [pageOffset],
  );

  const table = useReactTable({
    data,
    columns,
    state: { pagination },
    onPaginationChange: setPagination,
    getCoreRowModel: getCoreRowModel(),
    getPaginationRowModel: getPaginationRowModel(),
    getRowId: (row) => row.id,
  });

  return (
    <div className="space-y-4">
      <DataTableShell
        table={table}
        columnCount={columns.length}
        emptyMessage="No records found."
        renderFilterCell={() => null}
      />

      <DataTablePagination
        table={table}
        totalRows={data.length}
        itemNoun="ISIN"
        idPrefix="missing-market-price-isin"
      />
    </div>
  );
}
