Added table renderer on API Keys page

This commit is contained in:
Lucas Oliveira 2024-06-04 17:53:24 -03:00
commit d4a0c161c5
3 changed files with 164 additions and 130 deletions

View file

@ -24,6 +24,7 @@ export default function TableAutoCellRender({
} }
break; break;
case "string": case "string":
console.log(isTimeStampString(value), value);
if (isTimeStampString(value)) { if (isTimeStampString(value)) {
return <DateReader date={value} />; return <DateReader date={value} />;
} }

View file

@ -30,6 +30,8 @@ import {
} from "../../constants/constants"; } from "../../constants/constants";
import useAlertStore from "../../stores/alertStore"; import useAlertStore from "../../stores/alertStore";
import { ApiKey } from "../../types/components"; import { ApiKey } from "../../types/components";
import TableComponent from "../../components/tableComponent";
import TableAutoCellRender from "../../components/tableAutoCellRender";
export default function ApiKeysPage() { export default function ApiKeysPage() {
const [loadingKeys, setLoadingKeys] = useState(true); const [loadingKeys, setLoadingKeys] = useState(true);
@ -48,7 +50,10 @@ export default function ApiKeysPage() {
if (userData) { if (userData) {
getApiKey() getApiKey()
.then((keys: [ApiKey]) => { .then((keys: [ApiKey]) => {
keysList.current = keys["api_keys"]; keysList.current = keys["api_keys"].map((apikey: ApiKey) => ({
...apikey,
last_used_at: apikey.last_used_at ?? "Never",
}));
setUserId(keys["user_id"]); setUserId(keys["user_id"]);
setLoadingKeys(false); setLoadingKeys(false);
}) })
@ -89,6 +94,26 @@ export default function ApiKeysPage() {
); );
} }
const columnDefs = [
{ headerName: "Name", field: "name", cellRenderer: TableAutoCellRender },
{ headerName: "Key", field: "api_key", cellRenderer: TableAutoCellRender },
{
headerName: "Created",
field: "created_at",
cellRenderer: TableAutoCellRender,
},
{
headerName: "Last Used",
field: "last_used_at",
cellRenderer: TableAutoCellRender,
},
{
headerName: "Total Uses",
field: "total_uses",
cellRenderer: TableAutoCellRender,
},
];
return ( return (
<> <>
<Header></Header> <Header></Header>
@ -128,14 +153,23 @@ export default function ApiKeysPage() {
)} )}
<div <div
className={ className={
"max-h-[15rem] overflow-scroll overflow-x-hidden rounded-md border-2 bg-muted custom-scroll" + "h-[30rem] max-h-[35rem] rounded-md border-2 bg-muted custom-scroll" +
(loadingKeys ? " border-0" : "") (loadingKeys ? " border-0" : "")
} }
> >
{keysList.current && {keysList.current &&
keysList.current.length > 0 && keysList.current.length > 0 &&
!loadingKeys && ( !loadingKeys && (
<Table className={"table-fixed bg-muted outline-1"}> <>
<TableComponent
pagination
columnDefs={columnDefs}
rowData={keysList.current}
/>
</>
)}
</div>
{/* <Table className={"table-fixed bg-muted outline-1"}>
<TableHeader <TableHeader
className={ className={
loadingKeys loadingKeys
@ -259,10 +293,7 @@ export default function ApiKeysPage() {
)} )}
</TableBody> </TableBody>
)} )}
</Table> </Table> */}
)}
</div>
<div className="flex items-center justify-between"> <div className="flex items-center justify-between">
<div> <div>
<SecretKeyModal <SecretKeyModal

View file

@ -345,8 +345,10 @@ export function freezeObject(obj: any) {
return JSON.parse(JSON.stringify(obj)); return JSON.parse(JSON.stringify(obj));
} }
export function isTimeStampString(str: string): boolean { export function isTimeStampString(str: string): boolean {
const timestampRegex = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d{3}Z)?$/; const timestampRegexA = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d{3}Z)?$/;
return timestampRegex.test(str); const timestampRegexB = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d{6})?$/;
return timestampRegexA.test(str) || timestampRegexB.test(str);
} }
export function extractColumnsFromRows( export function extractColumnsFromRows(