import React from 'react'; import BootstrapTable from 'react-bootstrap-table-next'; import ToolkitProvider from 'react-bootstrap-table2-toolkit'; import moment from 'moment'; import _ from 'lodash'; import { faker } from '@faker-js/faker/locale/fr'; import { Avatar, Badge, Button, ButtonGroup, Row, Col } from './../../../../components'; import { CustomExportCSV } from './CustomExportButton'; import { CustomSearch } from './CustomSearch'; import { randomArray, randomAvatar } from './../../../../utilities'; const generateRow = (id) => ({ id, photo: randomAvatar(), firstName: faker.name.firstName(), lastName: faker.name.lastName(), role: faker.name.jobType(), status: randomArray([ 'Active', 'Suspended', 'Waiting', 'Unknown' ]), region: randomArray(['North', 'South', 'East', 'West']), earnings: 500 + Math.random() * 1000, earningsCurrencyIcon: randomArray([ , ]), lastLoginDate: faker.date.recent(), ipAddress: faker.internet.ip(), browser: 'Safari 9.1.1(11601.6.17)', os: 'OS X El Capitan', planSelected: randomArray(['Basic', 'Premium', 'Enterprise']), planEnd: faker.date.future() }); const sortCaret = (order) => { if (!order) return ; if (order) return }; export class AdvancedTableB extends React.Component { constructor(props) { super(props); this.state = { users: _.times(10, generateRow) } } handleAddRow() { const usersLength = this.state.users.length; this.setState({ users: [ generateRow(usersLength + 1), ...this.state.users ] }) } createColumnDefinitions() { return [ { dataField: 'photo', text: 'Photo', formatter: (cell) => ( ) }, { dataField: 'firstName', text: 'First Name', sort: true, sortCaret }, { dataField: 'lastName', text: 'Last Name', sort: true, sortCaret }, { dataField: 'role', text: 'Role', sort: true, sortCaret }, { dataField: 'status', text: 'Status', sort: true, sortCaret, formatter: (cell) => { const color = (status) => { const map = { 'Active': 'success', 'Suspended': 'danger', 'Waiting': 'info', 'Unknown': 'secondary' }; return map[status]; } return ( { cell } ); } }, { dataField: 'region', text: 'Region', sort: true, sortCaret }, { dataField: 'earnings', text: 'Earnings', sort: true, sortCaret, formatter: (cell, row) => ( { row.earningsCurrencyIcon } { _.isNumber(cell) && cell.toFixed(2) } ) } ]; } render() { const columnDefs = this.createColumnDefinitions(); const expandRow = { renderer: row => (
Last Login
{ moment(row.lastLoginDate).format('DD-MMM-YYYY') }
IP Address
{ row.ipAddress }
Browser
{ row.browser }
Operating System
{ row.os }
Selected Plan
{ row.planSelected }
Plan Expiriation
{ moment(row.planEnd).format('DD-MMM-YYYY') }
), showExpandColumn: true, expandHeaderColumnRenderer: ({ isAnyExpands }) => isAnyExpands ? ( ) : ( ), expandColumnRenderer: ({ expanded }) => expanded ? ( ) : ( ) } return ( { props => (
AdvancedTable B
Export
) }
); } }