| 12 | const data: MockData[] = []; |
| 13 | |
| 14 | export default async function getMockData({ current, pageSize, search, sorter, filters }: any) { |
| 15 | if (!data.length) { |
| 16 | data.push( |
| 17 | ...Array.from({ length: 200 }).map(() => { |
| 18 | return { |
| 19 | uuid: faker.datatype.uuid(), |
| 20 | name: faker.internet.userName(), |
| 21 | address: faker.address.cityName(), |
| 22 | company: faker.company.bs(), |
| 23 | gender: faker.name.sex(), |
| 24 | weight: faker.datatype.number({ |
| 25 | max: 200, |
| 26 | min: 80, |
| 27 | }), |
| 28 | }; |
| 29 | }) |
| 30 | ); |
| 31 | } |
| 32 | |
| 33 | const start = (current - 1) * pageSize; |
| 34 | |
| 35 | let next = data.filter((i) => (search ? i.name.includes(search) : true)); |
| 36 | |
| 37 | if (filters) { |
| 38 | next = next.filter((i) => (filters as string[]).includes(i.gender)); |
| 39 | } |
| 40 | |
| 41 | if (sorter) { |
| 42 | next.sort((a: any, b: any) => { |
| 43 | if (sorter[0].asc) { |
| 44 | return a[sorter[0].field] - b[sorter[0].field]; |
| 45 | } |
| 46 | |
| 47 | return b[sorter[0].field] - a[sorter[0].field]; |
| 48 | }); |
| 49 | } |
| 50 | |
| 51 | return { |
| 52 | data: next.slice(start, start + pageSize), |
| 53 | total: next.length, |
| 54 | }; |
| 55 | } |