import { whisper } from "@oliveai/ldk"
import {
Direction,
JustifyContent,
NewWhisper,
PaginationComponentType,
UpdateWhisper,
Whisper,
WhisperComponentType,
} from "@oliveai/ldk/dist/whisper"
const getRow = ((pageNumber: number, rowsPerPage: number) => {
let rows = []
for (let index = 0; index < rowsPerPage; index++) {
rows.push(pageNumber * rowsPerPage + index + 1)
}
return rows.toString().split(',').join(', ')
})
const paginationExampleConfig = ( (pageNumber: number, rowsPerPage: number): NewWhisper | UpdateWhisper => {
return {
label: 'Pagination Example',
components: [
{
type: WhisperComponentType.Box,
alignment: JustifyContent.Center,
direction: Direction.Vertical,
children: [
{
type: WhisperComponentType.Markdown,
body: `### This is page number ${pageNumber + 1}`
},
{
type: WhisperComponentType.Markdown,
body: `rows: ${getRow(pageNumber, rowsPerPage)}`
},
]
},
{
type: WhisperComponentType.Pagination,
count: 20,
component: PaginationComponentType.TablePagination,
disabled: false,
page: pageNumber,
rowsPerPage: rowsPerPage,
rowsPerPageOptions: [1,2,4,5],
labelRowsPerPage: "Row Per Page",
onChange: (error: Error, params: string, whisper: Whisper) => {
if (error) {
console.debug(error)
}
whisper.update(paginationExampleConfig(parseInt(params), rowsPerPage))
},
onRowsPerPageChange: (error: Error, params: string, whisper: Whisper) => {
if (error) {
console.debug(error)
}
whisper.update(paginationExampleConfig( Math.floor((pageNumber) * rowsPerPage / parseInt(params)) , parseInt(params)))
},
}
]
}
})
const newPaginationExample = (async () => {
await whisper.create(paginationExampleConfig(0, 1) as NewWhisper);
})
newPaginationExample();