Skip to content

Instantly share code, notes, and snippets.

@smitroshin
Created January 17, 2023 08:52
Show Gist options
  • Save smitroshin/9eeffb8c684a8e833a0f2be128c48052 to your computer and use it in GitHub Desktop.
Save smitroshin/9eeffb8c684a8e833a0f2be128c48052 to your computer and use it in GitHub Desktop.
Generate a list of persons
/**
* Source: https://github.com/TanStack/table/blob/v7/examples/filtering/src/makeData.js
*/
import namor from 'namor'
const range = len => {
const arr = []
for (let i = 0; i < len; i++) {
arr.push(i)
}
return arr
}
const newPerson = () => {
const statusChance = Math.random()
return {
firstName: namor.generate({ words: 1, numbers: 0 }),
lastName: namor.generate({ words: 1, numbers: 0 }),
age: Math.floor(Math.random() * 30),
visits: Math.floor(Math.random() * 100),
progress: Math.floor(Math.random() * 100),
status:
statusChance > 0.66
? 'relationship'
: statusChance > 0.33
? 'complicated'
: 'single',
}
}
export default function makeData(...lens) {
const makeDataLevel = (depth = 0) => {
const len = lens[depth]
return range(len).map(d => {
return {
...newPerson(),
subRows: lens[depth + 1] ? makeDataLevel(depth + 1) : undefined,
}
})
}
return makeDataLevel()
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment