rez-table-listing-mui
Version:
A rez table listing component built on TanStack Table
54 lines (48 loc) • 1.26 kB
text/typescript
import { faker } from "@faker-js/faker";
export type Person = {
firstName: string;
lastName: string;
age: number;
visits: number;
progress: number;
status: "Active" | "Inactive";
department?: string;
email?: string;
subRows?: Person[];
};
const range = (len: number) => {
const arr: number[] = [];
for (let i = 0; i < len; i++) {
arr.push(i);
}
return arr;
};
const newPerson = (): Person => {
return {
firstName: faker.person.firstName(),
lastName: faker.person.lastName(),
age: faker.number.int(40),
visits: faker.number.int(1000),
progress: faker.number.int(100),
email: faker.internet.email(),
department: faker.helpers.shuffle<string>([
"HR",
"Engineering",
"Marketing",
"Sales",
])[0]!,
status: faker.helpers.shuffle<Person["status"]>(["Active", "Inactive"])[0]!,
};
};
export function makeData(...lens: number[]) {
const makeDataLevel = (depth = 0): Person[] => {
const len = lens[depth]!;
return range(len).map((): Person => {
return {
...newPerson(),
subRows: lens[depth + 1] ? makeDataLevel(depth + 1) : undefined,
};
});
};
return makeDataLevel();
}